synOCR synOCR - GUI für OCRmyPDF

  • Aktuell gibt es ein Problem mit dem Mail-Versand. Der Mailversand ist deswegen gestoppt. Wir arbeiten dran.

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.660
Punkte für Reaktionen
1.497
Punkte
234

Darf ich vorstellen: synOCR – mach deine Synology DiskStation zum papierlosen Büro


Für alle, die es brauchen, habe ich mal eine kleine GUI für den Dockercontainer OCRmyPDF erstellt. Nicht jeder fummelt ja gerne an Skripten herum. Außerdem hatten ja einige in Verbindung mit dem PHP-Skript Rechteprobleme. synOCR ruft den Dockercontainer etwas anders auf, sodass es mit jedem Ein- und Ausgabeordner funktionieren sollte.

Was ist synOCR?

synOCR ist eine native App für Synology DSM. Damit kannst du einfach OCR (Texterkennung) auf PDF-Dokumente direkt auf den NAS anwenden, da Scans ja in der Regel zunächst nur aus einer Bilddatei bestehen. synOCR kann anschließend nach Tags und Datum in den Dokumenten suchen, diese nach einem individuellen Muster umbenennen und nach Kategorien, Tags oder Jahren in Ordner einsortieren. Durch Verwendung von Hardlinks entsteht auch kein erhöhter Speicherplatzbedarf, wenn ein Dokument in mehrere Kategorieordner einsortiert werden muss.

Vorteile im Vergleich zu alternativer Software:

  • Alle Dokumente verbleiben im Benutzerdateisystem. Sie bleiben immer für dich zugänglich und du kannst wie gewohnt mit ihnen arbeiten.
  • Die Nutzung von synOCR erfordert keine proprietäre Datenbank. Daher brauchst du dir bei Updates keine Gedanken machen, ob du nachher noch an deine Dokumente kommst.
  • Für OCR und Archivierung sollte nie jemand auf eine Cloud angewiesen sein – synOCR macht den Himmel für dich ‚wolkenlos‘. ;-)
  • synOCR ist Open Source – das bedeutet für dich nicht nur ‚kostenfrei‘, sondern auch, dass jeder den Quellcode prüfen kann
  • Einfache Grundinstallation in 3 Schritten (1️⃣ SPK installieren 2️⃣ Ordnerpfade eintragen 3️⃣ DSM Aufgabenplaner konfigurieren) und bei einem Update muss man sich keine Sorgen um eine Datenbank machen.

Download:


Hauptfunktionen:

  • konvertiert Bilder nach PDF
  • macht PDF-Scans mit der Texterkennung von OCRmyPDF durchsuchbar
  • teilt Dokumente mit Hilfe von Trennblättern auf
  • entfernt auf Wunsch Leerseiten (ab Version 1.4.99.5)
  • sucht nach Datum im Text und passt den Dateinamen nach eigenen Muster an
  • es sind einfache Regeln in der GUI sowie komplexe YAML-Regeln (auf Wunsch auch als RegEx) definierbar
  • Sortierung der Dokumente in Regel basierte Ordner oder nach Datum
  • und so manches mehr …

Voraussetzungen und Hinweise:

  • Idealerweise nutzt man seinen Workflow in Verbindung mit einem netzwerkfähigen Dokuementenscanner.
    Es gehen aber natürlich auch Scan-Apps, welche die Dateien auf dem NAS ablegen.
  • Zweite Voraussetzung ist ein dockerfähgies NAS, d.h. es muss eine x86_64 CPU (Intel oder AMD) oder einen 64bit ARM-CPU haben (aarch64).
    Der Grund: Docker muss installiert sein (entweder als Synologypaket oder manuell - auch auf aarch64 möglich).
  • Eine DS mit aarch64 CPU benötigt zusätzlich das Paket Python 3.9 (läuft ab synOCR v1.4.2).
  • Docker und OCRmyPDF erfordern in Regel seitens synOCR keinerlei zusätzliche Konfiguration. Um alles Nötige kümmert sich synOCR.
  • Anleitung und Hilfe findest du außer in diesem Thread auch im Wiki (befindet sich noch im Aufbau - derzeit nur in deutscher Sprache).
  • Sofern ihr OCRmyPDF bisher noch nicht genutzt habt, dauert der erste Programmlauf etwas länger, da das entsprechende OCRmyPDF Dockerimage zunächst geladen werden muss.
  • Ab v1.3.0 wird zusätzlich (auch nach jedem Update) noch eine virtuelle Pythonumgebung erstellt. Das dauert ~1 Minute.
  • Download von synOCR über cphub.net ist nicht zu empfehlen, da dort lediglich alte Versionen vorgehalten sind. Bitte verwende die oben verlinkte Möglichkeit.
  • Derzeit führt kein Paketserver die aktuelle Version von synOCR. Deshalb sind Updates aktuell vom User manuell durchzuführen. Eine Benachrichtigung über eine neue Version gibt es auf der Startseite der GUI, im Log und im Benachrichtigungszentrum des DSM.

Ein besonderer Dank geht an:

  • @Tommes für seine großartige Hilfe mit dem SPK
  • @Gthorsten für die Unterstützung mit dem Pythoncode (insbesondere die Datumsuche)
  • @Struppix für die Pflege der Dokumentation im WIKI und dem YAML-Creator

Bitte schreibt, wenn euch eine Funktion fehlt oder ihr euch eine Verbesserung wünscht.


13.01.25
  • Features aktualisiert
14.10.23 & 15.11.23
  • Beschreibung aktualisiert
25.07.23
  • Abhängigkeit zu Python 3.9 auf einer DS mit aarch64 CPU hinzugefügt
18.07.23
  • Beschreibung aktualisiert und strukturiert
  • Features ergänzt
  • Verweis auf Downloadmöglichkeit angepasst
 
Zuletzt bearbeitet:
Ich habe es soeben installiert.

* OCR-Qualität wirklich sehr gut (auch Tabellen und Bildunterschriften problemlos erkannt und richtig dargestellt).
* Eine Wohltat, dieses Tool zu benützen ohne Fummeleien & Skripts (was mich auch nicht so gestört hätte). Für Laien ganz klare Empfehlung, da die Installation, Konfiguration und Testdurchlauf max. 10 Min. gedauert hat.
* Hab synoOCR via Paketzentrum installiert. Einrichtung denkbar einfach und alles klar und gut erläutert, was man da zu tun hat.
* Zeitplaner in zwei Möglichkeiten auszuwählen ist schon Luxus hier ;)

Was mir nicht so klar ist:
* Backup - was genau wird da gesichert? Die Einstellungen/Konfigs und interner Zeitplaner? Denn ein Restore-Button hab ich nicht gefunden? Wie wird das Ganze wiederherstellt?
* Evtl eine Option einbauen, dass nach dem OCR-Scan die Quelldatei nicht gelöscht werden soll?
* Suchpräfix hilft sehr, aber bisschen zu statisch - möglich, einfach alle PDFs in einem vorgegebenen Ordner suchen zu lassen?
* Möglich, "Scan_" nach OCR-Scan zu entfernen? Wäre sonst eig. verwirrend - ist mehr ein "Schönheitsfehler" ;)

Sonst Hut ab vor deiner Leistung hier!
 
Vorab, danke für deine Mühen das Script umzusetzen. :)

In der Standardeinstellung
Rich (BBCode):
-srd -l deu
funktioniert es.

Da mein Scanner PDFs mit einer grausamen OCR-Erkennung (nicht abschaltbar) produziert, habe ich testweise die Konfi auf
Rich (BBCode):
-rd -l deu
gesetzt. Ich hatte die Hoffnung, dass der Text verworfen und neu erstellt wird.

Leider haben dann die PDFs alle 0kb.
 
Zuletzt bearbeitet:
Hallo Peter,

hast du es mal mit dem Parameter aus dem Log versucht:
Rich (BBCode):
--force-ocr -rd -l deu
Ich habe bisher auch noch nicht alle Parameterkombinationen testen können.

Und die (defekte) Zieldatei hat wirklich 0kb? Solche Dateien sollten eigentlich gelöscht werden und die Quelldatei im Quellordner belassen werden. Könntest du mal gucken, wie viel Byte sie hat? Danke
 
  • Like
Reaktionen: uxr37cr
Hallo TeXniXo,

vielen Dank für dein Feedback!
* OCR-Qualität wirklich sehr gut (auch Tabellen und Bildunterschriften problemlos erkannt und richtig dargestellt) …
Das ist wirklich dem Container ORCmyPDF zu verdanken, der eine sehr gute Arbeit leistet :o

* Backup - was genau wird da gesichert? Die Einstellungen/Konfigs und interner Zeitplaner? Denn ein Restore-Button hab ich nicht gefunden? Wie wird das Ganze wiederherstellt?…
Von welcher Stelle sprechen wir genau? Im Einstellungsdialog kannst du dir die Konfigurationsdatei entweder in den Quellordner exportieren, oder von dort auch importieren. 'BackUp' sollte sich doch nur noch im Paket selbst finden. Dort sind die Skripte hinterlegt, um Einstellungen und den Dateizähler mit HyperBackup sichern und wiederherstellen zu können. Oder meinst du etwas anderes? Der Zeitplan wird derzeit nicht gesichert.
* Evtl eine Option einbauen, dass nach dem OCR-Scan die Quelldatei nicht gelöscht werden soll?…
Dafür wäre die Angabe des Suchpräfixes zwingend, der entfernt würde (wobei man dann wieder die Originaldatei anfassen würde). Mit entsprechender Prüfung wäre das sicher umsetzbar … Ich persönlich nutze den "Löschordner" als Backupordner, der parallel zu den anderen liegt.
* Suchpräfix hilft sehr, aber bisschen zu statisch - möglich, einfach alle PDFs in einem vorgegebenen Ordner suchen zu lassen?…
Einfach weglassen. Dann werden alle PDFs verwendet. (In diesem Fall sollte dann der Quellordner natürlich auch nicht der Zielordner sein.)
* Möglich, "Scan_" nach OCR-Scan zu entfernen? Wäre sonst eig. verwirrend - ist mehr ein "Schönheitsfehler" ;)
Das, und die anderen Sachen kommen mit auf die Liste
 
Zuletzt bearbeitet:
Problem gelöst. Funktioniert. Danke!
Definitiv 0 Byte. Sie wird mit Startem vom Script schon erstellt und bleibt dann auch stehen.…

Freut mich :)

Ist aber dennoch komisch. Ich hatte es gerade mal mit einer geocrten PDF nachgestellt und auch hier hat die Zeildatei 0Byte, was aber korrekt abgefangen wird.
Rich (BBCode):
    VERARBEITE:       --> SCAN__002571.pdf (Tue Jan 15 14:02:25 CET 2019)

OCRmyPDF-LOG:
   INFO - reading file from standard input
  ERROR -    1: page already has text! – aborting (use --force-ocr to force OCR)

                          L=> fehlgeschlagen! (Zieldatei ist leer oder nicht vorhanden)

Könntest du mal testen, was ein ls -s auf die Zieldatei ausgibt?
Rich (BBCode):
ls -s "/volume … /zieldatei.pdf"
 
Könntest du mal testen, was ein ls -s auf die Zieldatei ausgibt?
Rich (BBCode):
ls -s "/volume … /zieldatei.pdf"
Ergebnis: 8 zieldatei.pdf


Ich habe ein wenig weiter rumgetestet. Dazu habe ich 100 verschiedene PDFs (Größe von 10 bis 50kb je Datei) in den Eingangsordner gelegt.

Ergebnis war, dass zwei Dateien ignoriert wurden (blieben im Eingangsordner), 7 Dateien 0 Byte hatten und die Gesamtgröße der 100 PDFs von 2,6 MB auf 13,8 MB bei verbliebenen 91 Dateien angestiegen ist.

  • Die ignorierten Dateien hatten als Dateiendung ein .PDF statt einem .pdf.
  • Die 7 Dateien habe ich noch mal durchlaufen lassen. Das Log liegt anbei.
  • Mit der Größe bin ich aus Zeitgründen noch nicht weitergekommen. Das schaue ich mir später an.
 

Anhänge

Dateigröße:
Ich glaube, meine Methode war nicht optimal. Was sagt:
Rich (BBCode):
stat -c %s "/volume … /zieldatei.pdf"

Zu dem anderen Fehler:
Das ist ein Error von OCRmyPDF, worauf ich keinen Einfluss habe. Ist bei den entsprechenden PDFs etwas besonderes?

  • Die ignorierten Dateien hatten als Dateiendung ein .PDF statt einem .pdf.

Ja, dass kann sein. Ich werde die Suche entsprechend anpassen.
 
Hallo zusammen,

ich interessiere mich sehr für synOCR, da ich mir demnächst einen Dokumentenscanner anschaffen werde und dieser auf eine Freigabe scannen soll. Ich hätte das gerne alles getestet. Das Programmpaket habe ich schon heruntergeladen und eingerichtet. Alles bisher tipptopp! Daumen hoch!

Ich bekomme allerdings den Dockercontainer nicht zum Laufen. Habe die latest Version von jbarlow83-ocrmypdf1 als Abbild heruntergeladen. Beim Starten wird diese immer "unerwartet wieder heruntergefahren". Was muss denn noch für den Container genau eingerichtet werden, damit dieser korrekt läuft? Gibt es hier ein how to?

Herzlichen Dank und viele Grüße
Mike
 
Hallo Mike,

eigentlich solltest du lediglich das Paket "Docker" installiert haben, synOCR startet dann den Container jbarlow83/ocrmypdf. Ggf. wird das entsprechende Abbild vorher geladen. Der Container wird nicht dauerhaft laufen (dafür ist er nicht gebaut).
 
Danke Stephan! Gerade habe ich es gelesen in einem anderen Thread!

Und siehe da: Funktioniert alles auf Anhieb!
 
Rich (BBCode):
stat -c %s "/volume … /zieldatei.pdf"
Bei allen sieben PDFs eine 0.
Rich (BBCode):
root@DS216+ /volume1/temp/scanner/2_ausgang $ stat -c %s OCR_testdatei1.pdf
0

Ist bei den entsprechenden PDFs etwas besonderes?
Ich bin nicht der PDF-Profi und kann das nicht beurteilen. Auch die Fehlermeldungen sind ja teilweise verschieden (siehe Log im Vorposting).
Die testdatei1.pdf beinhaltet eine Zeichnung und unverfänglichen Text. Die Datei habe ich dir gezippt und anbei gelegt. Vielleicht weißt du woran es liegt.
Zusätzlich liegt die OCR_testdatei1.pdf auch mit drin.
 

Anhänge

Bei allen sieben PDFs eine 0.
Sehr schön. Die andere Methode gibt wohl die Größe in Blöcken aus und nicht in Bytes. Sollte im nächsten Release behoben sein.

Ich bin nicht der PDF-Profi und kann das nicht beurteilen. Auch die Fehlermeldungen sind ja teilweise verschieden (siehe Log im Vorposting).
Die testdatei1.pdf beinhaltet eine Zeichnung und unverfänglichen Text. Die Datei habe ich dir gezippt und anbei gelegt. Vielleicht weißt du woran es liegt.
Zusätzlich liegt die OCR_testdatei1.pdf auch mit drin.
Deine PDF ist verschlüsselt und lässt sich nicht modifizieren. Da kann ich nichts machen. Unerklärlicher für mich sind die anderen Fehler in dem Log die so oder ähnlich lauten:
ValueError: time data '201405211108390100' does not match format '%Y%m%d%H%M%S%z'
 
Nabend,
Irgendwas mache ich wohl falsch:(
Docker läuft, ocrmypf liegt als Abbild im Docker, synocr ist installiert und Einstellungen sind vorgenommen worden. Unter Status zeugt er mir das 9 PDF Dateien vorhanden sind die verarbeitet werden können. Starte ich den Vorgang wird mir angezeigt das die Daten verarbeitet werden. Mach wenigen Sekunden scheint alles fertig zu sein, aber es wurden keine Dateien verarbeitet. Synocr zeigt mir noch immer 9 zu verarbeitende Dateien an. Es wird lediglich eine leere Log Datei angelegt.
Wo könnte es wohl dran liegen?
 
Ein leeres Log macht es mir ja auch nicht unbedingt leichter …:rolleyes:

Du könnest mal bitte synOCR über die Konsole starten:
Rich (BBCode):
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh
Sofern du dich damit nicht auskennst, kannst du auch über den Aufgabenplaner einen benutzerdefinierten Task mit obigen Befehl erstellen, einmalig ausführen und anschließend das Ergebnis ausgeben lassen.

Danke
 
Moin,

werde mal versuchen den Code auszuführen, allerdings werde ich da vermutlich nicht die nächsten Tage zu kommen.
Melde mich dann.

#Mördock#

PS: Auf sowas wie SynOCR warte ich schon lange. Vielen Dank Geimist das Du Dir die Arbeit damit machst.
 
Moin,

meine DS darf nachts ausgehen, habe dann eben nochmal einen Anlauf unternommen PDF Dateien zu bearbeiten und siehe da....... Es klappt.:D Genial, und so einfach!!

Jetzt muss ich mir noch überlegen wie ich meine vorhandenen Dateien am besten bearbeite. Schön wäre es wenn ich einfach einen Ordner nehmen könnte und er lediglich zu jeder vorhandenen Datei eine weitere, bearbeitete legt, ohne die Alte zu löschen oder zu verschieben. Mal schauen was sich mit den Einstellungen und Präfixen für eine Arbeitsablauf organisieren lässt.

Hinweis: Ein Hinweistext bei der Konfiguration wird falsch angezeigt. Geht man mit der Maus auf das "i" hinter der Zeile "Systembenachrichtigung (Piep) wir einem angezeigt: Ein kurzer Piep, sobald ein Film fertig bearbeitet wurde.

#Mördock#
 
Dank naps2 (Scannersoftware) habe ich jetzt einen guten Workflow gefunden. Per Knopfdruck am Scanner wird das Dokument (ohne OCR) auf dem NAS abgelegt, alle 5min (von 9 bis 21 Uhr) prüft ein Script, ob ein Dokument vorhanden ist, wenn ja, wird synOCR in Gang gesetzt, OCR läuft drüber und legt das Dokument im endgültigen Ordner ab.

@geimist
  1. Ist es in Zukunft geplant, dass kein Log angelegt wird, wenn kein Dokument bearbeitet wird? Das war nämlich jetzt mein Problem, wenn ich das Script alle 5min starte. So habe ich mir hilfsweise eine Abfrage gebaut, die prüft, ob überhaupt ein Dokument vorhanden ist.
  2. Ist es in Zukunft geplant die Anzahl der Backupdateien zu begrenzen (ähnlich wie bei Logs)? Wenn nein, muss ich da noch ein Script drüberlaufen lassen, was ab einer gewissen Anzahl die Dateien löscht.


Nachtrag:
Mir ist ein Fehler bei der Bennung aufgefallen. Beim Testen hatte ich zufällig zwei Dokumente (20190117_2.pdf und 20190117_.pdf) im Eingangsordner.
Daraus wurden dann "20190117_2.pdf" und "20190117_ (2).pdf".

Log:
Rich (BBCode):
    VERARBEITE:       --> 20190117_2.pdf (Thu Jan 17 11:28:17 CET 2019)

OCRmyPDF-LOG:
   INFO - reading file from standard input
   INFO -    1: page is facing ?, confidence 4.94 - no change
   INFO - Optimize ratio: 1.00 savings: 0.0%
   INFO - Output sent to stdout

                      --> übertrage die Dateirechte und -besitzer
                      --> verschiebe Quelldatei nach: /volume1/.../scanner/3_backup/20190117_2.pdf
                      --> 315 PDFs bisher verarbeitet
        (PushBullet-TOKEN nicht gesetzt)
                      --> (Laufzeit: 25 Sekunden)

    VERARBEITE:       --> 20190117_.pdf (Thu Jan 17 11:28:42 CET 2019)

OCRmyPDF-LOG:
   INFO - reading file from standard input
   INFO -    1: page is facing ?, confidence 2.50 - no change
WARNING -    1: [tesseract] unsure about page orientation
   INFO - Optimize ratio: 1.00 savings: 0.0%
   INFO - Output sent to stdout

                      --> übertrage die Dateirechte und -besitzer
                      --> verschiebe Quelldatei nach: /volume1/.../scanner/3_backup/20190117_ (2).pdf
                      --> 316 PDFs bisher verarbeitet
        (PushBullet-TOKEN nicht gesetzt)
                      --> (Laufzeit: 21 Sekunden)
 
Zuletzt bearbeitet:
synOCR v0.9.3 ist online

IMPLEMENTIERUNGEN:
- Dateisuche ist jetzt case insensetive (Suchpräfix / .pdf .PDF)
- Suchpräfix kann nun automatisch entfernt werden lassen
BUGFIXES:
- leere LOGs wurden z.T. nicht korrekt gelöscht
- bei einem OCRmyPDF Error wurde das Skript z.T. nicht korrekt abgebrochen
- kleinere Korrekturen


… Jetzt muss ich mir noch überlegen wie ich meine vorhandenen Dateien am besten bearbeite. Schön wäre es wenn ich einfach einen Ordner nehmen könnte und er lediglich zu jeder vorhandenen Datei eine weitere, bearbeitete legt, ohne die Alte zu löschen oder zu verschieben. Mal schauen was sich mit den Einstellungen und Präfixen für eine Arbeitsablauf organisieren lässt.
Du musst in jeden Fall die zu bearbeitenden Dateien mit einem Präfix versehen (z.B. gleich beim Scannen). In Version 0.9.3 lässt sich nun auch dieses Präfix automatisch entfernen > bearbeitete Dokumente werden also nicht mehr berücksichtigt (kann sein, dass ich den Zähler der offenen Aufgaben auf der Statusseite dafür noch sensibilisieren muss).
Hinweis: Ein Hinweistext bei der Konfiguration wird falsch angezeigt. …
Film wurde im aktuellen Release schon zum File - Danke :)


  1. Ist es in Zukunft geplant, dass kein Log angelegt wird, wenn kein Dokument bearbeitet wird? Das war nämlich jetzt mein Problem, wenn ich das Script alle 5min starte. So habe ich mir hilfsweise eine Abfrage gebaut, die prüft, ob überhaupt ein Dokument vorhanden ist.
Das Löschen von Logs ohne Dateibearbeitung sollte in der aktuellen Version besser funktionieren. Vielleicht werde ich in Zukunft im Startskript eine Prüfung auf zu bearbeitende Dokumente einbauen, sodass das Hauptskript erst gar nicht anläuft. Dabei gibt es dann keinerlei Logs, was ich am Anfang vermeiden wollte.
  1. Ist es in Zukunft geplant die Anzahl der Backupdateien zu begrenzen (ähnlich wie bei Logs)? Wenn nein, muss ich da noch ein Script drüberlaufen lassen, was ab einer gewissen Anzahl die Dateien löscht.
Das habe ich derzeit nicht geplant. Man kann ja auch in den Systempapierkorb 'backupen' lassen. Sollte das dringend benötigt werden, lasse ich mich auch gerne erweichen :o
Mir ist ein Fehler bei der Bennung aufgefallen. Beim Testen hatte ich zufällig zwei Dokumente (20190117_2.pdf und 20190117_.pdf) im Eingangsordner.
Daraus wurden dann "20190117_2.pdf" und "20190117_ (2).pdf".
Es wird geprüft, ob es den vollen Dateinamen (20190117_) bereits gibt (ja > 20190117_2.pdf). Deshalb der Zähler hinten dran. Mir war schon klar, dass es da Sonderkonstallationen geben könnte, aber dass die so schnell auftauchen … :rolleyes: Dazu müsste ich das härter prüfen.
 
Zuletzt bearbeitet:
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat