Die Hotfolder-Funktionalität des OCR-Services wird über Umgebungsvariablen (Environment Variables) konfiguriert.
Dies ermöglicht eine flexible Anpassung, insbesondere im Kontext von Docker-Containern oder Cloud-Deployments.
Jeder Hotfolder wird durch eine eindeutige Nummer identifiziert (z.B. HOTFOLDER_1_..., HOTFOLDER_2_...).
Für jeden Hotfolder können folgende Parameter über Umgebungsvariablen gesetzt werden. Ersetzen Sie
durch eine fortlaufende Nummer (beginnend bei 1):
HOTFOLDER__INPUT : (Erforderlich) Pfad zum Eingangsverzeichnis im Container, das überwacht wird.HOTFOLDER__OUTPUT : (Erforderlich) Pfad zum Ausgabeordner im Container für erfolgreich mit OCR versehene Dateien.HOTFOLDER__EXCEPTIONS : (Optional) Pfad zum Ordner im Container, in den Originaldateien verschoben werden, bei denen die Verarbeitung fehlschlug.HOTFOLDER__ARCHIVE : (Optional) Pfad zum Archivordner im Container. Originaldateien werden hierher kopiert, bevor sie verarbeitet werden. Die Originaldatei im Input-Ordner wird nach erfolgreicher Verarbeitung gelöscht.HOTFOLDER__ARCHIVE_RETENTION_DAYS : (Optional) Anzahl der Tage, die Dateien im spezifischen Archiv dieses Hotfolders aufbewahrt werden sollen, bevor sie automatisch gelöscht werden. Dieser Wert überschreibt den globalen Standardwert HOTFOLDER_ARCHIVE_RETENTION_DAYS nur für diesen Hotfolder.HOTFOLDER__LOGS : (Optional) Pfad zum Ordner im Container für detaillierte Log-Dateien, die spezifisch für diesen Hotfolder sind (z.B. dateiname.pdf.log).HOTFOLDER__LANGUAGE : (Optional) OCR-Sprache(n) für diesen Hotfolder (z.B. deu, eng, deu+eng). Dieser Wert überschreibt die globale OCR_LANGUAGE Einstellung für die in diesem Hotfolder verarbeiteten Dateien.Stellen Sie sicher, dass die Anwendung über die notwendigen Lese-/Schreibrechte für alle konfigurierten Pfade verfügt. Bei Verwendung von Docker sollten diese Pfade typischerweise auf gemountete Volumes zeigen, um Datenpersistenz zu gewährleisten und den Zugriff vom Host-System zu ermöglichen. Die Pfade in den Umgebungsvariablen beziehen sich immer auf die Sichtweise innerhalb des Containers.
OCR_LANGUAGE="deu": Standard-Sprache, falls nicht pro Hotfolder überschrieben.LOG_DIR="/app/logs": Pfad zum Verzeichnis für allgemeine Anwendungslogs im Container.SERVER_PORT="8080": Interner Port, auf dem der Service im Container lauscht.HOTFOLDER_ARCHIVE_RETENTION_DAYS="365": Standard-Aufbewahrungsdauer für Archive in Tagen, falls nicht pro Hotfolder überschrieben. Ein Wert von 0 deaktiviert die automatische Löschung für Archive, die keinen spezifischen Wert haben.OVERWRITE_EXISTING_FILES="false": Legt fest, ob bestehende Dateien in den Ausgabe- oder Exception-Verzeichnissen überschrieben werden sollen. Standardmäßig (false) wird bei Namenskonflikten ein Suffix (z.B. -1, -2) an den Dateinamen angehängt.
Das folgende Beispiel zeigt, wie zwei Hotfolder ("Invoices" und "Receipts") konfiguriert werden könnten.
Diese Umgebungsvariablen werden dem Docker-Container beim Start übergeben. Die Pfade (z.B. /app/hotfolders/invoices/input) sind die Pfade innerhalb des Containers.
# Globale Einstellungen
SERVER_PORT="8080"
LOG_DIR="/app/logs"
OCR_LANGUAGE="deu"
# Hotfolder 1: Invoices (Rechnungen)
# Container-Pfad: /app/hotfolders/invoices/input (gemappt von Host: ./data/invoices/input)
HOTFOLDER_1_INPUT="/app/hotfolders/invoices/input"
HOTFOLDER_1_OUTPUT="/app/hotfolders/invoices/output"
HOTFOLDER_1_ARCHIVE="/app/hotfolders/invoices/archive"
HOTFOLDER_1_EXCEPTIONS="/app/hotfolders/invoices/errors"
HOTFOLDER_1_LOGS="/app/hotfolders/invoices/logs"
HOTFOLDER_1_LANGUAGE="deu"
# Optional: HOTFOLDER_1_ARCHIVE_RETENTION_DAYS="180" # spezifische Aufbewahrung
# Hotfolder 2: Receipts (Belege)
# Container-Pfad: /app/hotfolders/receipts/input (gemappt von Host: ./data/receipts/input)
HOTFOLDER_2_INPUT="/app/hotfolders/receipts/input"
HOTFOLDER_2_OUTPUT="/app/hotfolders/receipts/output"
HOTFOLDER_2_EXCEPTIONS="/app/hotfolders/receipts/errors"
HOTFOLDER_2_LOGS="/app/hotfolders/receipts/logs"
HOTFOLDER_2_LANGUAGE="deu"
# HOTFOLDER_2_ARCHIVE ist im Beispiel-Skript nicht definiert, daher keine Archivierung für Receipts.
Wenn Sie den Service in einem Docker-Container betreiben, müssen Sie die Host-Verzeichnisse,
die als Hotfolder dienen sollen, in den Container mounten.
Die Umgebungsvariablen (HOTFOLDER_..._INPUT etc.) beziehen sich auf die Pfade innerhalb des Containers, während die Volume-Mounts (-v Option) die Verbindung zu den Pfaden auf dem Host-System herstellen.
Ein vereinfachter Auszug aus dem docker run Befehl, der die Umgebungsvariablen und Volume-Mounts zeigt:
# Annahme: Das Skript wird in einem Verzeichnis ausgeführt,
# in dem Unterverzeichnisse ./data und ./logs existieren oder angelegt werden.
# HOST_PORT wird dynamisch ermittelt (z.B. 8080).
# IMAGE_NAME ist der Name des Docker-Images (z.B. "ocr_service" oder ein Registry-Pfad).
docker run -d \
--name "ocr_service" \
--restart unless-stopped \
-p HOST_PORT:8080 \
\
# Globale Umgebungsvariablen
-e SERVER_PORT="8080" \
-e LOG_DIR="/app/logs" \
-e OCR_LANGUAGE="deu" \
\
# Hotfolder 1 (Invoices) - Umgebungsvariablen (Pfade im Container)
-e HOTFOLDER_1_INPUT="/app/hotfolders/invoices/input" \
-e HOTFOLDER_1_OUTPUT="/app/hotfolders/invoices/output" \
-e HOTFOLDER_1_ARCHIVE="/app/hotfolders/invoices/archive" \
-e HOTFOLDER_1_EXCEPTIONS="/app/hotfolders/invoices/errors" \
-e HOTFOLDER_1_LOGS="/app/hotfolders/invoices/logs" \
-e HOTFOLDER_1_LANGUAGE="deu" \
\
# Hotfolder 2 (Receipts) - Umgebungsvariablen (Pfade im Container)
-e HOTFOLDER_2_INPUT="/app/hotfolders/receipts/input" \
-e HOTFOLDER_2_OUTPUT="/app/hotfolders/receipts/output" \
-e HOTFOLDER_2_EXCEPTIONS="/app/hotfolders/receipts/errors" \
-e HOTFOLDER_2_LOGS="/app/hotfolders/receipts/logs" \
-e HOTFOLDER_2_LANGUAGE="deu" \
\
# Volume-Mounts für Hotfolder 1 (Invoices)
# Format: -v /pfad/auf/host:/pfad/im/container
-v "$(pwd)/data/invoices/input:/app/hotfolders/invoices/input" \
-v "$(pwd)/data/invoices/output:/app/hotfolders/invoices/output" \
-v "$(pwd)/data/invoices/archive:/app/hotfolders/invoices/archive" \
-v "$(pwd)/data/invoices/errors:/app/hotfolders/invoices/errors" \
-v "$(pwd)/data/invoices/logs:/app/hotfolders/invoices/logs" \
\
# Volume-Mounts für Hotfolder 2 (Receipts)
-v "$(pwd)/data/receipts/input:/app/hotfolders/receipts/input" \
-v "$(pwd)/data/receipts/output:/app/hotfolders/receipts/output" \
-v "$(pwd)/data/receipts/errors:/app/hotfolders/receipts/errors" \
-v "$(pwd)/data/receipts/logs:/app/hotfolders/receipts/logs" \
\
# Volume-Mount für allgemeine App-Logs
-v "$(pwd)/logs:/app/logs" \
\
IMAGE_NAME
In diesem Beispiel werden auf Ihrem Host-System Verzeichnisse wie ./data/invoices/input und ./data/receipts/input
(relativ zum Ausführungsort des Skripts) erwartet. Das Skript legt diese an, falls sie nicht existieren.
Dateien, die beispielsweise in ./data/invoices/input auf dem Host abgelegt werden, erscheinen dann unter /app/hotfolders/invoices/input
im Container und werden vom Hotfolder-Service für "Invoices" verarbeitet.