Papierloses Heimbüro mit docker, OCRmyPDF und GNU parallel in PDF/A möglich?

Zielscheibe

Benutzer
Mitglied seit
22. Jan 2017
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo liebes Forum,

seit kurzem bin ich stolzer Besitzer einer DS216+II und begeistert wie viel besser dieses NAS im Vergleich zum Netgear Vorgänger ist.
Jetzt habe ich Blut geleckt und möchte gerne meine ganze Zettelwirtschaft abschaffen und Archivierbare PDF (PDF/A) mit OCR Layer nutzen.

Ziel ist ein Workflow ohne Zusatzgerät und ohne Dokumenten Management System.
Ich scanne ein Dokument und lasse den Scan als PDF auf dem NAS ablegen.
Auf dem NAS läuft ein Batch-Job, der alle neuen Dokumente mit OCR-Layer ergänzt und als PDF/A abspeichert.

Ich besitze schon einen Scanner der mir die Bilder als PDF auf dem NAS ablegt.
Über docker kann ich mir das Image von OCRmyPDF (=Skript) ziehen, mit dem eine richtig gute Konversion von Bild-PDF auf PDF/A mithilfe von Googles tesseract erzeugt wird.
Github Link
Docker Container

Allerdings funktioniert das Skript nur indem man ihm direkt die Datei mitgibt.

Hier kommt GNU parallel ins Spiel, mit dem laut Dokumentation die Erstellung eines Batch-Jobs möglich ist.
Dokumentation Batch Jobs
Also:
1. Bisher im Ordner aufgelaufene Dateien erkennen.
2. Alle Dateien mit OCR-Layer versehen und Ergebnis als neue Datei in anderem Verzeichnis abspeichern.
[3. Umgang mit Originalen fehlt :(]


Hier brauche ich eure Hilfe, denn ich habe leider keine große Erfahrung mit Linux-Systemen und Synology NAS im Besonderen.
Außerdem will ich keine Garantie verletzen.

In meiner naiven Welt kann das Synology NAS mit einer zeitgesteuerten Aufgabe im DSM per GNU parallel den docker Container mit OCRmyPDF starten.
Alle bis zu diesem Zeitpunkt gescannten Bild-PDFs im Verzeichnis A werden mit OCR-Layer versehen und als PDF/A in Verzeichnis B abgelegt.
Die Originale werden im Erfolgsfall nach Verzeichnis C verschoben.
Im Misserfolgsfall bleiben die Originale für einen neuen Versuch im Verzeichnis A.

Damit brauche ich zumindest Hilfe beim Einrichten der Aufgabe und Installation von GNU parallel.
Oder ihr habt eine andere Idee, wie ich den Batchjob deichseln kann.

Über eure Hilfe würde ich mich wirklich sehr freuen.
 

Atredis

Benutzer
Mitglied seit
10. Nov 2017
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo.

Ich möchte auch automatisch ein Verzeichnis überwachen lassen und dort die PDF Dateien erkennen lassen.
Diese dann in ein anderes Verzeichnis Kopieren.

Den Docker Container habe ich auch Installiert allerdings startet er nicht.
Er wird immer wieder automatisch angehalten.

Wie hast Du es denn ans laufen gebracht?

Das Script von dem Batch Job habe ich auch versucht auszuführen allerdings bricht dieses immer mit einem Syntax Fehler ab.

Hoffe das mir hier weitergeholfen werden kann.
 

Atredis

Benutzer
Mitglied seit
10. Nov 2017
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Ok. Habe meine Fehler gefunden die ich gemacht habe.
Das Script "läuft" jetzt zwar ohne Fehlermeldungen aber es macht nichts.
Also es werden keine PDF Dateien umgewandelt oder in den Archiv Ordner Kopiert.

Eine Zeile in dem Script war wohl falsch. Ein Komma und ein Leerzeichen.
Habe das Script auch in die Aufgabenplanung integriert wo es auch ohne Probleme laufen sollte.

Jetzt frage ich mich nur warum nichts Passiert.

Falls mein Problem zu Unklar beschrieben ist gerne nachfragen.
 

Atredis

Benutzer
Mitglied seit
10. Nov 2017
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo.
Wenn jemand Interesse hat.
Es funktioniert jetzt bei mir.

Mein Ziel war es einen Ordner auf dem DS überwachen zu lassen und aus diesem dann von den gescannten PDF Dateien eine durchsuchbare PDF zu erstellen.
Ich muss dazu sagen das ich von Python oder ähnlichen kaum Ahnung habe und es beu mir duch Try an Error und einem Anderen Benutzer nach 2 Tagen endlich funktionierte
Für viele ist diese Anleitung vieleicht auch zu einfach gestrickt aber wie Gesagt vielleicht hilft es ja jemanden.

Hierfür habe ich wie im #1 Post ja schon angegeben den Docker Container jbarlow83-ocrmypdf1 Installiert.

Damit nicht alle das gleiche Problem wie ich haben. Dieser startet nicht bzw. stoppt nach dem Start sofort wieder.
Dies ist auch Richtig so.

Nun habe ich 3 Verzeichnisse Angelegt.
Dies ist jetzt Optional und kann auch geändert werden.

document_inbox_ocrscript <--Hier werden die PDF Dateien von meinem Scanner hin gesendet
archiv <--Hier werden am Ende die PDF Dateien gespeichert
script <--Hier lege ich meine Scripte ab und es werden die Logfiles gespeichert (automatisch von ocrmypdf wenn das Script aus diesem Ordner ausgeführt wird)

Jetzt einen User und eine Gruppe Namens docker anlegen (Natürlich den User Docker in die Gruppe Docker setzen).
Dieser Gruppe muss dann schreib und leserechte für die 3 Ordner haben.

Nun habe ich das Script von der Dokumentation für Synology genommen und in eine Datei als ocrmypdf.py kopiert.

Quelle: https://ocrmypdf.readthedocs.io/en/latest/batch.html#batch-jobs

Dieses ist aber leider noch fehlerhaft.
Ich habe soweit alle Fehler behoben und an den Autor weitergemeldet das diese auch behoben wird und dann auch Richtig zu finden ist.
Hier die Richtige Zeile:

cmd = ['docker', 'run', '--rm', '-v', docker_mount, '-u=1029:65540', 'jbarlow83/ocrmypdf', '-ldeu', '--deskew', filename, filename_OCR]

Diese einfach dementsprechend anpassen.
Das -ldeu habe ich gesetzt damit es auch deutsch kennt ansonsten machen umlaute usw Probleme.

Diese Zeile muss aber noch weiter angepasst werden.

Dafür muss man sich im Shell der DS einloggen und den Befehl "id docker" eingeben (Oder eben den Benutzer der eine Freigabe auf die 3 Ordner hat)

Nun '-u=1029:65540' hier die 1029 mit der uid ersetzen und die 65540 mit der gid.

Das Script ist nun angepasst und ich habe es unter dem Namen ocrmypdf.py gespeichert.

Um das ganze jetzt nicht jedesmal Manuell ausführen zu müssen habe ich im Aufgabenplaner eine Aufgabe erstellt die das Script regelmäßig startet.

Hier dann unter Benutzerdefiniertes Skrips

python /volume1/script/ocrmypdf.py /volume1/document_inbox_ocrscript /volume1/archive

eintragen.

Nun wird gemäß euren Zeit Einstellungen jede PDF Datei aus dem Ordner document_inbox_ocrscript in eine durchsuchbare PDF umgewandelt und unter /volume1/archive gespeichert.

Dir Original Datei aus dem inbox Ordner wird gelöscht.
In dem Verzeichniss Script wird ein Protokoll der Ausführung erstellt. Dies geschieht bei jeder Ausführung.

Hoffe das diese Beschreibung soweit Korrekt ist und bei Euch auch funktioniert.

Jetzt will ich nur noch Änderungen im Script durchführen, da mich wenn alles einmal richtig läuft die Protokolle für mich unwichtig sind und dann entweder regelmäßig automatisch gelöscht werden oder erst gar nicht erstellt werden.
Auch komme ich bis jetzt noch nicht mit den erweiterten Einstellungen von ocrmypdf klar um meine Ergemnisse anpassen zu können.
Hier habe ich bis jetzt erst 2 Einstellungen Testen können aber ich werde es bei Zeiten weiter versuchen.
 

BerndNekerman

Benutzer
Mitglied seit
16. Dez 2017
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Wow! Vielen lieben Dank für diese Anleitung und das Feedback Atredis :)

Ich bin grade auch auf der Suche nach einer Lösung, intern auf meiner NAS die vielen gescannten PDF-Dokumente zu "OCRen" und damit durchsuchbar zu machen.
Sobald meine neue Synology da ist und ich sie eingerichtet habe, werde ich mich mal an das mir noch komplett unbekannte Thema "Docker" machen und mithilfe deiner Anleitung versuchen es zu Verstehen und zum Laufen zu bringen.

Mein angestrebter Workflow:

- gescannte PDF auf einen "Inbox" Ordner auf die Synology verschieben
- Synology erstellt dann eine OCR-PDF und fügt in den Dateinamen "OCR" ein.
- sobald diese Datei erstellt wurde, verschiebe ich sie in mein Wunschverzeichnis

Alternativ wäre es natürlich sehr schon, wenn ich die Datei direkt in mein Wunschverzeichnis verschieben könnte und sie dort als zusätzliche OCR-PDF erstellt wird. Das ist ja deiner Beschreibung und Anleitung nach nicht ohne weiteres möglich, da spezielle Verzeichnisse in dem Code eingetragen werden müssen. Somit müsste ich ja vermutlich jedes einzelne Verzeichnis meiner NAS in den Code eintragen. Und was passiert, wenn ich mal meine Verzeichnisstruktur ein wenig ändere...

Aktuell ist mein Scanner (Canon Flachbettscanner) per USB an der Windows-Maschine angeschlossen. In Zukunft wäre eine direkte Verbindung ans NAS natürlich noch viel schöner. Habe diesbezüglich schoneinmal gesucht und viele Forenbeiträge gelesen. Ist jedoch anscheinend mit den Treibern (sane etc.) nicht so ganz einfach.
Der Workaround wäre vielleicht eine Virtuelle Maschine auf der NAS auf der dann Windows 10 läuft und die den Anschluss des Scanners am USB Port der Synology ermöglicht. Eventuell sogar direkt die gescannte PDF in den "Inbox" Ordner verschiebt, sodass die OCRmyPDF diese dann direkt durchsuchbar machen kann.

Läuft deine Lösung noch auf deiner NAS einwandfrei?

Für mich stellt dieses Docker und OCR ein großes Projekt dar, da ich zur Zeit nur mit den direkt implementierten Paketen von Synology arbeite und daher eine Benutzeroberfläche sowie eine "einfache" Bedienung gewöhnt bin. Doch die Möglichkeiten der NAS sind anschienend unergründlich :D

Vielen Dank schoneinmal für die Anleitung, auch wenn ich sie aktuell noch nicht aufprobieren kann.
 

Atredis

Benutzer
Mitglied seit
10. Nov 2017
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hi.
Also bis jetzt läuft es so ohne Probleme.
Ein Paar Feinheiten will ich noch Anpassen allerdings fehlt mir dazu die Zeit.

Wie gesagt. das Script lässt sich bestimmt beliebig anpassen.
Mir fehlen dazu momentan allerdings die Ahnung von Phyton.

Wenn Du Fragen hast wie man was einrichten muss kann ich natürlich gerne weiterhelfen.
Es ist ja noch nicht so lange her das ich es eingerichtet habe.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Interessantes Thema, wohl auch für viele andere hier.

Was passiert eigentlich, wenn man ein PDF im Inbox-Ordner ablegt, was schon durchsuchbar ist? Wird das verworfen und neu erstellt oder erkennt das Script das und verschiebt das PDF nur?

Hintergrund: Ich habe einen älteren Scanner, der durchsuchbare PDFs erstellt, aber die Texterkennung unterirdisch ist. Bisher habe ich noch keine Möglichkeit gefunden ihm das (miese) OCR abzugewöhnen.
 

Atredis

Benutzer
Mitglied seit
10. Nov 2017
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hi.
Sorry für die späte Antwort.

Mann kann es einstellen das alles verworfen wird und die Erkennung neu gemacht wird.
Dafür muss Mann Schalter im Script zufügen.
Habe ich selber aber noch nicht getestet.

So wie das Script jetzt ist werden die die schon durchsuchbar sind nicht umgewandelt.
 

Gogo_83

Benutzer
Mitglied seit
03. Feb 2018
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,
Ich stehe gerade vor der gleichen Herausforderung wie ihr und möchte erst mal vielen Dank für den Wissenstransfer sagen!
Großartig das du dir die Zeit genommen hast, alles auszuprobieren und die dass dann auch noch mit uns teilst!

Kennt hier eigentlich schon jemand die Docker Lösung von planbee/syno-ocr?

Ist zwar nicht großartig anpassbar, aber scheint die Funktion simpel abzudecken.

LG gogo
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Kennt hier eigentlich schon jemand die Docker Lösung von planbee/syno-ocr?
Ist zwar nicht großartig anpassbar, aber scheint die Funktion simpel abzudecken.
Dank deines Hinweises habe ich das gleich mal ausprobiert.

Hat auf Anhieb geklappt. Man muss nur das Quellverzeichnis auf der DS als "/src" und das Zielverzeichnis als "/dst" angeben.

Ich habe daraufhin ein Blatt mit sehr viel Text gescannt. Das Ergebnis kann sich sehen lassen. Ich habe bei der Texterkennung auf den ersten Blick keine Fehler gefunden.

Da das Teilchen speziell für die Syno ist und der User (planbee) dort in deutsch schreibt, hoffe ich ja, dass er hier im Forum zugegen ist. Bitte melde dich... ;)
 
Zuletzt bearbeitet:

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Nachtrag zu planbee/syno-ocr:
Leider gibt es zwei Nachteile.

  1. Es wird der Ruhezustand der Festplatten verhindert, was wohl von der andauernden Prüfung vom Verzeichnis kommt.
  2. Das PDF bläht sich unheimlich auf. Ein 8 Seiten PDF (1,6MB) stiegt um das 4-fache an und hatte am Ende 6,6MB. Für ein wenig hinzugefügten Text eine Menge Holz.

Testweise habe ich noch mal mit 200dpi und in schwarzweiss 4 Seiten eingescannt. Das PDF hatte dann 219kb und sah auch gut aus. Nach der Bearbeitung durch das Dockerimage blähte sich das Dokument auf satte 5651kb auf. Nee, so geht das nicht. Ich lasse die Finger davon.
 
Zuletzt bearbeitet:

Gogo_83

Benutzer
Mitglied seit
03. Feb 2018
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Peter,

ist den deiner Erfahrung nach ocrmypdf schlanker ?
Das Problem mit dem Ruhemodus könnte man wohl mit einem Script eingrezen, welches den Container startet und beendet.

Wechselt bei dir auch immer der Name des aktiven Container bei der Ausführung des Scriptes ?

LG Sven
 
Zuletzt bearbeitet:

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
Hallo Sven,
ich habe im Moment ocrmypdf nicht am Start und kann daher nicht testen. Mir fehlt auch heute die Zeit dafür.

Probiere es selber mal aus und berichte.
 

Gogo_83

Benutzer
Mitglied seit
03. Feb 2018
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Peter,

ich habe beide Lösung getestet.

Tatsächlich ist die syno-ocr schnell einsatzbereit, aber die Dateigröße ist wirklich viel zu groß.

ocrmypdf läuft prinziepiell gut, obwohl ich auch PDFs gefunden habe, welche den Dienst abstürzen lassen. Aber mit gut eingescannten PDFs lief es rund.

Grüße Sven
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.525
Punkte für Reaktionen
1.360
Punkte
234
ocrmypdf läuft prinziepiell gut
Wie verhielt es sich mit den Dateigrößen? Um welche Größen haben sie sich verändert?
Eigentlich würde ich annehmen, dass durch den hinzugefügten Text sich das PDF maximal um 10kb vergrößert.
 

Elvez2000

Benutzer
Mitglied seit
20. Jan 2018
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen!

Ich habe einmal versucht nach Eurer Anleitung den Docker-Container und das Script bei mir auf einer Synology zum Laufen zu bekommen. Der Container ist registriert, soweit ist alles ok. Woran es jetzt bei mir hapert ist die weitere Vorgehensweise (welche Order erzeuge ich und wie genau passe ich das Script an, bzw. wie kriege ich das dann ausgeführt)... Na klar, ich gebe zu: ich bin blutiger Neuling ;-)

Gibt es vielleicht eine etwas detailliertere ANleitung (habe leider nix im Netz gefunden) oder ein fertiges und funktionierendes Script, welches ich mir zu eigen machen könnte (ohne darin noch Änderungen vornehmen zu müssen)?

Danke vorab und Grüße!!
 

Kurgebeat

Benutzer
Mitglied seit
06. Aug 2016
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hierfür habe ich wie im #1 Post ja schon angegeben den Docker Container jbarlow83-ocrmypdf1 Installiert.
.
Kannst du mir sagen wie das ging? Ich kenne mich mit Linux 0 aus. Werde auch aus den Anleitungen nicht schlau. Ich habe die Diskstation DS116. VG
 


 

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