Files
pdf-ocr-hotfolder/CHANGELOG.md
T
techadmin a23a3968ef feat: konfigurierbarer Dateiname + Archiv-Modus für Original (v0.3.0)
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>
2026-04-09 22:32:41 +02:00

3.8 KiB
Raw Blame History

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() und process_pdf() mit allen Kombinationen aus Modus + Original-Behandlung

Changed

  • process_pdf() nimmt jetzt output_cfg: OutputConfig als Pflicht-Argument

[0.2.2] - 2026-04-09

Fixed

  • Issue #3: Ghostscript 10.0.010.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 --version wenn pdfa_level gesetzt 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() in pdf_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 tesseract und gs (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-Code 1, sobald mindestens ein PDF fehlgeschlagen ist. Exit-Code 0 nur bei vollständigem Erfolg (inkl. "keine Dateien vorhanden"). Exit-Code 2 bei Preflight-Fehler.

Added

  • Public API: HotfolderService.run_once(), .success_count, .error_count, .ensure_dirs()
  • check_preflight() / PreflightError in pdf_ocr_hotfolder.service
  • pytest-Test-Suite (tests/) mit 11 Tests — deckt alle Szenarien aus Issue #1 und #2 ab
  • ocrmypdf-Import in processor.py ist 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.sh stoppt/startet automatisch alle laufenden Instanzen

Changed

  • Single-Unit pdf-ocr-hotfolder.service durch Template-Unit pdf-ocr-hotfolder@.service ersetzt
  • 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 (tomllib aus stdlib, Python ≥3.11)
  • systemd-Unit mit Hardening-Optionen
  • install.sh mit interaktivem Service-User-Prompt (lokal anlegen oder bestehenden lokalen/AD-User übernehmen)
  • update.sh mit Backup, Code-Sync und Service-Reload
  • README.md, AI_AGENT_BRIEFING.md