Files
catalog_doc/CATALOG.command
Andrey Kruchinkin 49f91247c7 Каталогизатор документов: разбор папки, тезисы, поиск, 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>
2026-08-30 19:20:29 +03:00

31 lines
987 B
Bash
Executable File

#!/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" "$@"