# Quick Sorter v1.4 – focused content-reading upgrade Changes from v1.3: - Document extraction failures are no longer silent. The GUI shows a **Content** status such as `docx:1834`, `missing:python-docx`, or `pdf:no-text-or-scan`. - DOCX extraction reads document metadata, normal paragraphs, **tables**, headers, and footers. This matters for Ablaufpläne and forms whose useful text often lives in tables. - PDF: metadata + first 3 text pages. - XLSX: sheet names + first rows of first 2 sheets. - PPTX support via `python-pptx`. - ODT support via `odfpy`. - The LLM now extracts structured semantic fields: topic, subtopic, document type, detail, version. Python builds the final filename deterministically from those fields. - Generic filenames with no readable content are capped below auto-confirm confidence instead of guessed confidently. ## Recommended packages inside your pyenv virtualenv ```bash python -m pip install python-docx pypdf openpyxl python-pptx odfpy pillow ``` No `--break-system-packages` is needed inside a proper virtualenv. Check what this exact Python environment can read: ```bash python quick_sorter.py --check-deps ``` (`dummy` is ignored when `--check-deps` is used, but the positional argument is still required by argparse in v1.4.) ## Best first test Start the app against the test copy and select only `2026-08-21_Ablaufplan.docx`. After **Analyse selected**, inspect the new `Content` and `Semantic` columns. If the content reader works and the document actually contains the event name, you should see something like: - Content: `docx:...` - Semantic: `cafe-bach / bach-voices / ablaufplan` - Destination: `Cafe_Bach/Veranstaltungen` - Name: `2026-08-21_cafe-bach_bach-voices_ablaufplan.docx` If Content says `missing:python-docx`, install `python-docx` in the active virtualenv. If Content says `docx:no-text`, the file may use unsupported drawing/textbox content; that is a separate extraction case to add only if needed.