a23a3968ef
Neue [output]-Section: - name_mode: prefix | suffix | none (suffix wird vor Extension eingefügt) - name_tag: verbatim einfügbarer String - original_on_success: delete | archive - archive_dir mit Kollisions-Schutz (Timestamp-Suffix) 20 neue Tests (50 insgesamt, alle grün). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Changelog
[0.3.0] - 2026-04-09
Added
- Neue Config-Sektion
[output]mit:name_mode— Platzierung des Tags im Dateinamen:"prefix","suffix"(vor Extension),"none"name_tag— verbatim einzufügender String, z.B."OCR_"oder"_OCR"original_on_success—"delete"(alter Default) oder"archive"archive_dir— Zielverzeichnis für"archive", mit Kollisions-Schutz (Timestamp-Suffix)
- Runtime-Validierung der Output-Config in
check_output_config() - 20 neue Tests für
build_output_name(),check_output_config()undprocess_pdf()mit allen Kombinationen aus Modus + Original-Behandlung
Changed
process_pdf()nimmt jetztoutput_cfg: OutputConfigals Pflicht-Argument
[0.2.2] - 2026-04-09
Fixed
- Issue #3: Ghostscript 10.0.0–10.02.0 (Debian 12 default) zerschießen OCR mit PDF/A +
skip_text=true.config.example.toml:pdfa_level = ""als sicherer Default- Runtime-Preflight: Prüft
gs --versionwennpdfa_levelgesetzt ist, bricht mit klarer Fehlermeldung ab install.sh: warnt bei betroffenen GS-Versionen mit Upgrade-Hinweis auf bookworm-backports
Added
is_ghostscript_broken()/detect_ghostscript_version()inpdf_ocr_hotfolder.service- 19 weitere pytest-Tests für GS-Versions-Detection (parametrisiert) und Preflight-Kombinationen
[0.2.1] - 2026-04-09
Fixed
- Issue #1: Preflight-Check beim Start prüft jetzt
tesseractundgs(Ghostscript). Fehlt eine Abhängigkeit, beendet sich der Service sofort mit Exit-Code 2 und klarer Fehlermeldung statt erst bei der ersten Datei. - Issue #2:
--once-Modus liefert jetzt Exit-Code1, sobald mindestens ein PDF fehlgeschlagen ist. Exit-Code0nur bei vollständigem Erfolg (inkl. "keine Dateien vorhanden"). Exit-Code2bei Preflight-Fehler.
Added
- Public API:
HotfolderService.run_once(),.success_count,.error_count,.ensure_dirs() check_preflight()/PreflightErrorinpdf_ocr_hotfolder.service- pytest-Test-Suite (
tests/) mit 11 Tests — deckt alle Szenarien aus Issue #1 und #2 ab ocrmypdf-Import inprocessor.pyist jetzt lazy (Tests ohne ocrmypdf-Installation möglich)
[0.2.0] - 2026-04-08
Added
- Multi-Instanz-Support via systemd Template-Unit
pdf-ocr-hotfolder@<name>.service - Pro Instanz: eigene Config (
/etc/pdf-ocr-hotfolder/<name>.toml), eigene Datenverzeichnisse (/var/lib/pdf-ocr-hotfolder/<name>/…), optional eigener Service-User via Drop-in - Instanz-Manager in
install.sh: erkennt bestehende Instanzen bei Re-Run, fragt nach weiteren, listet Namen + Status update.shstoppt/startet automatisch alle laufenden Instanzen
Changed
- Single-Unit
pdf-ocr-hotfolder.servicedurch Template-Unitpdf-ocr-hotfolder@.serviceersetzt - Installer fragt nicht mehr einmalig nach Service-User, sondern pro Instanz
Removed
- Alte Single-Config unter
/etc/pdf-ocr-hotfolder/config.toml— wird nicht mehr erzeugt
[0.1.0] - 2026-04-08
Added
- Initiale Version (Komplettes Rewrite des alten Bash-Tools
pdf-tool) - Python-Implementation auf Basis von
ocrmypdf(Library, kein Subprozess) - Hotfolder-Watcher mit
watchdog(created/moved/closed Events) - File-Stability-Check (wartet bis Scanner fertig geschrieben hat)
- ThreadPool für parallele PDF-Verarbeitung (
max_workers) - Upload-Targets: lokaler Ordner, Nextcloud (WebDAV via
requests), SFTP (paramiko) - E-Mail-Notify (
smtplib, immer / nur Fehler / nie) - Optional veraPDF-Validierung
- TOML-Konfiguration (
tomllibaus stdlib, Python ≥3.11) - systemd-Unit mit Hardening-Optionen
install.shmit interaktivem Service-User-Prompt (lokal anlegen oder bestehenden lokalen/AD-User übernehmen)update.shmit Backup, Code-Sync und Service-Reload- README.md, AI_AGENT_BRIEFING.md