Каталогизатор документов: разбор папки, тезисы, поиск, GUI
Программа принимает папку с документами, извлекает из них текст и метаданные и строит каталог: краткое описание, тезисы и ключевые слова для каждого файла плюс поиск по всему собранному. Ядро: - extract: PDF, DJVU, DOC(X), RTF, ODT, CHM, EPUB, FB2, PPT(X), XLS(X), TXT; PDF передаётся MuPDF потоком в память (работают длинные пути) и ограничен по времени — повреждённый файл иначе чинится минутами; - summarize: экстрактивное реферирование по TF-IDF, посчитанному на самой библиотеке, с лёгким стеммером для русского и английского; - db: SQLite с полнотекстовым индексом FTS5, морфологический поиск с BM25; - scanner: инкрементальный многопоточный обход, счётчик попыток защищает от файла, обрывающего разбор; - report: автономный HTML с поиском, Markdown, JSON, CSV. Интерфейс: - окно PySide6 в тёмной теме: вкладки разбора и поиска, фоновый поток, карточка документа, правка своих ключевых слов; - командная строка: build, scan, analyze, report, search, show, tag, stats; - у каждой папки свой каталог, последняя обработанная запоминается. Сборка: scripts/build_exe.py даёт Catalogizer.exe в Windows и Catalogizer.app в macOS, иконки .ico и .icns рисуются кодом. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
30
CATALOG.command
Executable file
30
CATALOG.command
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# GUI launcher for macOS: double-click this file in Finder.
|
||||
set -u
|
||||
|
||||
MODULE_ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
PACKED_APP="$MODULE_ROOT/dist/Catalogizer.app"
|
||||
VENV_PYTHON="$MODULE_ROOT/.venv/bin/python3"
|
||||
|
||||
# A packed build needs neither Python nor PySide6, so it wins when present.
|
||||
if [ -d "$PACKED_APP" ]; then
|
||||
if [ "${1:-}" = "--check" ]; then
|
||||
"$PACKED_APP/Contents/MacOS/Catalogizer" --check
|
||||
exit $?
|
||||
fi
|
||||
open -a "$PACKED_APP" --args "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
PYTHON="$VENV_PYTHON"
|
||||
[ -x "$PYTHON" ] || PYTHON="$(command -v python3 || true)"
|
||||
if [ -z "$PYTHON" ] || ! "$PYTHON" -c "import PySide6, pymupdf" >/dev/null 2>&1; then
|
||||
echo "Python with PySide6 and pymupdf is not available."
|
||||
echo
|
||||
echo "Either build a standalone Catalogizer.app with BUILD_APP.command,"
|
||||
echo "or install the dependencies:"
|
||||
echo " python3 -m pip install -r \"$MODULE_ROOT/requirements.txt\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec "$PYTHON" "$MODULE_ROOT/catalog_gui.py" "$@"
|
||||
Reference in New Issue
Block a user