feat: Installer fragt OCR-Sprachen und Archiv pro Instanz ab (v0.5.0)
- Sprach-Abfrage pro Instanz (Default-Vorschlag deu+eng), bewusst instanz-lokal: ein Hotfolder kann mit "deu" laufen, ein anderer mit "deu+eng+fra". Hinweis im Prompt, dass jede zusaetzliche Sprache Laufzeit und Erkennungsqualitaet kostet. - Jeder Sprachcode wird gegen "tesseract --list-langs" geprueft, fehlende Pakete (tesseract-ocr-<code>) werden zur Installation angeboten; lehnt der User ab oder scheitert apt, wird gewarnt und erneut gefragt. - Abfrage "Original archivieren?" mit $BASE/archive als Default; Archiv ausserhalb von $BASE wird eigens angelegt und gechownt. Ein Pfad auf incoming/outgoing/working/error wird abgewiesen. - sed-Kette der Config-Erzeugung jetzt verankert (^key =) und escaped, setzt zusaetzlich languages, original_on_success und archive_dir; die erzeugte Config wird gegen die Eingabe nachgeprueft. - README und Briefing um "Sprachen pro Instanz" ergaenzt Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,48 @@
|
||||
# Changelog
|
||||
|
||||
## [0.5.0] - 2026-09-22
|
||||
|
||||
### Added
|
||||
- Der Installer weist einen Archiv-Pfad ab, der auf `incoming/`, `outgoing/`,
|
||||
`working/` oder `error/` der Instanz zeigt — im Eingang wuerde das Original
|
||||
sonst endlos neu aufgegriffen.
|
||||
- **`install.sh` fragt beim Anlegen einer Instanz die OCR-Sprachen ab**
|
||||
(`Tesseract-Sprachen [deu+eng]:`). Die Wahl gilt bewusst **pro Instanz** —
|
||||
ein Hotfolder `buchhaltung` kann mit `deu` laufen, ein Hotfolder `export` mit
|
||||
`deu+eng+fra`. Der Installer weist vorher darauf hin, dass jede zusaetzliche
|
||||
Sprache Laufzeit **und** Erkennungsqualitaet kostet, die Liste also eng
|
||||
gehalten werden sollte. Das Eingabeformat wird geprueft (Sprachcodes mit `+`
|
||||
verbunden, `chi_sim` & Co. erlaubt); bei Unsinn wird erneut gefragt statt
|
||||
abzubrechen.
|
||||
- **Sprachpakete werden nachinstalliert.** Jeder eingegebene Code wird gegen
|
||||
`tesseract --list-langs` geprueft. Fehlt eine Sprachdatei, bietet der
|
||||
Installer das passende apt-Paket an (`tesseract-ocr-<code>`, Unterstrich wird
|
||||
zum Bindestrich: `chi_sim` → `tesseract-ocr-chi-sim`). Lehnt der User ab oder
|
||||
laesst sich das Paket nicht installieren, warnt der Installer, dass OCR mit
|
||||
dieser Sprache **bei jeder Datei** scheitern wuerde, und fragt die Sprachen
|
||||
erneut ab — so kann die Sprache einfach wieder rausgeworfen werden. Ist
|
||||
`tesseract` nicht aufrufbar, wird die Pruefung uebersprungen und die Eingabe
|
||||
unveraendert uebernommen.
|
||||
- **Abfrage `Original nach erfolgreichem OCR archivieren? [j/N]:`** — Default
|
||||
nein, also weiterhin `original_on_success = "delete"`. Bei ja wird der
|
||||
Archiv-Pfad abgefragt (Vorschlag `<basis>/archive`), angelegt und auf den
|
||||
Service-User gechownt; ein Archiv ausserhalb des Instanz-Basis-Pfads bekommt
|
||||
ein eigenes `chown -R`.
|
||||
|
||||
### Changed
|
||||
- Die Instanz-Config wird weiterhin per `sed` aus `config.example.toml`
|
||||
erzeugt, substituiert jetzt aber zusaetzlich `[ocr].languages`,
|
||||
`[output].original_on_success` und `[output].archive_dir` — bisher waren das
|
||||
die Beispiel-Defaults, `archive_dir` musste von Hand nachgetragen werden.
|
||||
Die Ausdruecke sind am Zeilenanfang verankert (`^key[[:space:]]*=`), damit die
|
||||
deutschen Kommentarzeilen ueber den Keys unangetastet bleiben, und
|
||||
Pfad-Variablen laufen durch `sed_escape_repl()` (maskiert `\`, `&`, `|`) —
|
||||
Pfade mit Sonderzeichen landen damit korrekt in der Config.
|
||||
- Nach dem sed-Lauf liest der Installer die drei Keys aus der erzeugten Config
|
||||
zurueck und vergleicht sie mit der Eingabe. Erst wenn das passt, nennt die
|
||||
Abschluss-Zusammenfassung zusaetzlich die gewaehlten **Sprachen** und (bei
|
||||
Archivierung) das **Archiv-Verzeichnis**; sonst gibt es eine Warnung.
|
||||
|
||||
## [0.4.1] - 2026-09-22
|
||||
|
||||
### Fixed
|
||||
|
||||
Reference in New Issue
Block a user