Last updated: 10 Jan 26 10:04:48 (UTC)
ecoDMS auf QNAP mit Dokumenten in exotischen Sprachen verwenden
ecoDMS-Server auf NAS und exotische Sprachen
Es wäre schön, wenn man in ecoDMS mehr Sprachoptionen hätte. ecoDMS bietet im Einstellungsdialog Deutsch, Englisch, Franzöissch, Spanisch, Niederländisch, Türkisch und Italienisch an. Die zugrundeliegende Software tesseract könnte auch viele weitere Sprachen erkennen,
Wer daher mit osteuropäischen Sprachen oder asiatischen Sprachen arbeitet, wird feststellen, dass die OCR-Ergebnisse mit ecoDMS ungenügend sind. Der Support zeigte sich leider wenig gewillt, eine entsprechende Möglichkeit zur Installation und Aktivierung weiterer OCR-Sprachen in Zukunft nachzurüsten. Vielleicht ja, weil ich keinen teuren Servicevertrag habe.
Zur Lösung des Problems habe ich nun bei meinem auf einem QNAP NAS laufenden ecoDMS einen separaten Prozess zum Erkennen von Text in PDF-Dateien in wahlfreien Sprachen eingerichtet, der an in einem wahlfreien Verzeichnis abgelegten PDF-Dateien eine OCR-Erkennung in wahlfreien Sprachen durchführt und die mit OCR-Text angereicherten Dateien dann in den Scaninput von ecoDMS legt. ecoDMS nutzt dann das vorhandene OCR und die Dateien werden in ihren Originalsprachen indexiert und für Mustererkennung zugänglich usw.
Zur Umsetzung der vorgestellten Lösung sollte man sich einigermaßen wohl mit Secure Shell und der Linux-Kommanodzeile fühlen. Expertenwissen ist nicht erforderlich. Den Entwicklungsaufwand habe ich geleistet, die nachstehend beschriebene Konfiguration sollte, wenn man weiß, wie man die Kommandozeile des QNAP erreicht, nicht länger als 15 Minuten dauern.
Wer ecoDMS auf einer Synology oder einem linux-artigen System oder auf MacOS X betreibt (und mit der Kommandozeile klarkommt), wird wissen, wie er die nachstehenden Schritte anpassen kann.
Vorbereitung
- Das Paket
entwaremuss über die Paketverwaltung installiert sein. Alle weiteren Befehle müssen in einer Admin-Shell eingegeben werden, (mitsshalsadminam QNAP anmelden und auf Kommandozeile wechseln). - Die folgenden Pakete sollten mittels
opkg install <Paketname>installiert sein:coreutils-chown coreutils-chmod inotifywatch - Daneben sollte mit der Containerstation folgendes Paket installiert werden, das OCR-Unterstützung für alle denkbaren Sprachen bietet:
ocrmypdf-polyglot_lstm_legacy-1 docker tag geimist/ocrmypdf-polyglot_lstm_legacy:latest ocrmypdf- Danach kann auf der Kommandozeile ocrmypdf aufgerufen werden mit
docker run ocrmypdf - Im
ScanInput-Verzeichnis wird ein Unterverzeichnis angelegt, in welchem künftig PDF-Dokumente platziert werden können, die nicht von ecoDMS, sondern von unserer Lösung mit OCR verarbeitet werden sollen. In meinem Fall heißt das VerzeichnisHR(für “Kroatisch”). ecoDMS lässt PDF-Dateien in diesem Unterverzeichnis liegen, es holt sich nur Dateien aus dem Hauptverzeichnis desScanInput.
Skriptdateien:
Folgende Skriptdateien werden im Dateisystem des QNAP an Stellen platziert, wo sie nicht verloren gehen:
-
scanslavic.sh in
/share/CACHEDEV1_DATA/ecoDMS, ausführbar machen (chmod 755) -
S99ocrwatch in
/opt/etc/init.d, ausführbar (chmod 755).
In der Datei scanslavic.sh (ich habe den Namen gewählt, weil ich mit slawischen Sprachen arbeite, es ist aber nicht darauf beschränkt) können ganz am Anfang die Shellvariablen INDIR, OUTDIR und LANGUAGES nach Belieben eingerichtet werden. Sollte die Lösung nicht funktionieren, kann auch eine LOG_FILE angelegt werden.
Beschreibung
Das scanslavic.sh geht zunächst das im vorbereitenden Schritt eingerichtete Unterverzeichnis des Scaninput-Verzeichnisses (konfigurierbar über die Variable INDIR) durch und sucht dort nach schon vorhandenen PDF-Dateien und warteten anschließend mit inotifywait auf neu erscheinende PDF-Dateien.
Das Skript prüft zunächst, ob gefundene Dateien schon OCR-Text haben. Falls ja, werden sie einfach in das normale Scaninput-Verzeichhnis (konfigurierbar über OUTDIR) verschoben. Falls sie keinen OCR-Text enthalten, wird der o.a. Docker-Container mit ocrmypdf benutzt, um eine neue PDF-Datei mit OCR-Text zu erzeugen, im ScanInput abzulegen und die Quelldatei ohne OCR-Text im Unterverzeichnis (nur) im Erfolgsfalle zu löschen.
Um das Skript erstmalig aufzurufen, kann man /opt/etc/init.d/S99ocrwatch start aufrufen. Nach einem Neustart des QNAP startet das Watchdog-Skript automatisch. Sollte scanslavic.sh aus irgendeinem Grunde abstürzen, wird es vom Watchdog-Skript automatisch neu gestartet.
Ob der Dämon noch läuft, kann man mit /opt/etc/init.d/S99ocrwatch status prüfen und anschließend noch ein ps ax | grep $PID mit der von S99ocrwatch status ausgegebenen Dämon-PID als $PID.
Achtung: Nicht alle von S99ocrwatch status ausgegebenen inotifywait stammen von der OCR-Lösung. QNAP OS verwendet auch selbst inotifywait für andere Zwecke.
Wenn der Scaninput des ecoDMS Software über Netzwerk erreichbar ist (bspw. von Windows aus als \\SERVER\ECODMS_SCANINPUT), kann man nun im Scaninput normale PDFs mit den eingangs genannten westeuropäischen Sprachen ablegen, und in dem konfigurierten Unterverzeichnis (z.B. HR) davon kann man PDFs in denjenigen Sprachen ablagen, die man zuvor in LANGUAGES in scanslavic.sh konfiguriert hat, und bei denen das OCR nicht von ecoDMS sondern von der hier vorgestellten Lösung übernommen werden soll.
Wichtig ist abschließend noch, dass in ecoDMS unter Einstellungen/Einstellungen/Datei Indizierung der Haken bei Vorhandene OCR von Dokumenten verwerfen und neu erstellen (für gescannte Dokumente) nicht gesetzt sein darf, andernfalls würde der von der hier vorgestellten Lösung erstellte OCR-Text von ecoDMS wieder verworfen.
Impressum: https://tf-translate.net/impressum.html
Datenschutzerklärung: https://tf-translate.net/datenschutz.html