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:
@@ -25,7 +25,14 @@ sudo ./install.sh
|
||||
|
||||
Der Installer:
|
||||
1. Installiert einmalig Code + venv + systemd-Template-Unit
|
||||
2. Fragt nach Instanz-Name, Basis-Pfad, Service-User
|
||||
2. Fragt **pro Instanz** ab:
|
||||
- Instanz-Name
|
||||
- Basis-Pfad für die Daten
|
||||
- Service-User
|
||||
- **OCR-Sprachen** (Tesseract, Default `deu+eng`) — fehlende Sprachpakete
|
||||
(`tesseract-ocr-<code>`) werden erkannt und auf Wunsch nachinstalliert
|
||||
- **Original nach erfolgreichem OCR archivieren?** (Default nein = löschen;
|
||||
bei ja zusätzlich der Archiv-Pfad, vorgeschlagen `<basis>/archive`)
|
||||
3. Legt so viele Hotfolder-Instanzen an, wie du willst (`Weitere Instanz anlegen? [j/N]`)
|
||||
|
||||
Bei jedem erneuten Aufruf erkennt der Installer bestehende Instanzen und fragt nur nach neuen.
|
||||
@@ -47,6 +54,27 @@ Das Tool arbeitet komplett **instanzbasiert** über eine systemd Template-Unit `
|
||||
- eigene Datenverzeichnisse: `/var/lib/pdf-ocr-hotfolder/<name>/{incoming,working,outgoing,error}/`
|
||||
- eigene systemd-Unit: `pdf-ocr-hotfolder@<name>.service`
|
||||
- optional eigenen Service-User (via Drop-in `/etc/systemd/system/pdf-ocr-hotfolder@<name>.service.d/user.conf`)
|
||||
- **eigene OCR-Sprachen und eigene Original-Behandlung** (löschen oder archivieren)
|
||||
|
||||
### Sprachen pro Instanz
|
||||
|
||||
Die Tesseract-Sprachen werden bewusst **je Instanz** abgefragt, nicht global:
|
||||
Hotfolder haben unterschiedliche Post. Ein Buchhaltungs-Hotfolder sieht nur
|
||||
deutsche Belege, ein Export-Hotfolder internationale Korrespondenz:
|
||||
|
||||
```toml
|
||||
# /etc/pdf-ocr-hotfolder/buchhaltung.toml
|
||||
languages = "deu"
|
||||
|
||||
# /etc/pdf-ocr-hotfolder/export.toml
|
||||
languages = "deu+eng+fra"
|
||||
```
|
||||
|
||||
**Die Liste so eng wie möglich halten.** Jede zusätzliche Sprache kostet
|
||||
Laufzeit *und* Erkennungsqualität: Tesseract muss mehr Modelle gegeneinander
|
||||
abwägen und verwechselt dabei Wörter, die in der einen Sprache eindeutig wären.
|
||||
`deu+eng+fra` auf reinen Deutsch-Scans ist also kein Sicherheitsnetz, sondern
|
||||
ein Rückschritt.
|
||||
|
||||
Beispiel für 3 Hotfolder:
|
||||
|
||||
@@ -77,9 +105,13 @@ Manuell eine weitere Instanz anlegen geht auch — einfach `install.sh` erneut s
|
||||
|
||||
Vollständiges Beispiel: [`config.example.toml`](config.example.toml). Wichtigste Sektionen:
|
||||
|
||||
Der Installer fragt `[ocr].languages`, `[output].original_on_success` und
|
||||
`[output].archive_dir` pro Instanz ab und schreibt sie direkt in die
|
||||
Instanz-Config — die Werte unten sind nur die Beispiel-Defaults.
|
||||
|
||||
### `[ocr]`
|
||||
```toml
|
||||
languages = "deu+eng" # Tesseract-Sprachen
|
||||
languages = "deu+eng" # Tesseract-Sprachen (Installer fragt pro Instanz)
|
||||
jobs = 4 # Threads pro PDF
|
||||
skip_text = true # bereits OCR-haltige Seiten überspringen
|
||||
pdfa_level = "" # "1", "2", "3" oder "" für reines PDF (Default "" wegen Ghostscript-Bug, s.u.)
|
||||
@@ -100,6 +132,7 @@ name_tag = "OCR_"
|
||||
# Nach erfolgreichem OCR mit dem Original:
|
||||
# "delete" → löschen
|
||||
# "archive" → in archive_dir verschieben
|
||||
# Beides fragt der Installer beim Anlegen der Instanz ab:
|
||||
original_on_success = "delete"
|
||||
archive_dir = "" # absoluter Pfad, Pflicht bei "archive"
|
||||
```
|
||||
@@ -248,5 +281,5 @@ MIT — © Sonith UG
|
||||
|
||||
---
|
||||
|
||||
**Version:** 0.4.1
|
||||
**Version:** 0.5.0
|
||||
**Repo:** https://gitea.sonith.de/sonith_ug/pdf-ocr-hotfolder
|
||||
|
||||
Reference in New Issue
Block a user