pdf-Scan to Folder (auf die Synology) und dann Texterkennung mit OCR durch Synology

Status
Für weitere Antworten geschlossen.

TobiasNeher

Benutzer
Mitglied seit
18. Jun 2017
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo Stephan,

mir war nicht klar, dass pdftotext Bestandteil von dem Dockercontainer ocrmypdf ist. Ein erster Testlauf mit fünf Dokumenten hat wunderbar funktioniert.
Danke für Deine Unterstützung.

Grüße Tobias
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Tobias,

schön dass es funktioniert :)
Aber um falschen Informationen vorzubeugen, pdftotext ist direkt auf dem System der Diskstation.
Aus dem Docker image wird nur ocrmypdf verwendet.

Grüße,
Stefan
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.385
Punkte für Reaktionen
1.199
Punkte
234
… Aber um falschen Informationen vorzubeugen, pdftotext ist direkt auf dem System der Diskstation …
Auch noch nicht gewusst, dass es das auf der DS gibt. Ich hatte mir für ein anderes Projekt extra die Bins besorgt. Vielleicht ist pdftotext erst mit UniversalSearch hinzugekommen …

Entschuldigung wegen der Falschinformation :rolleyes:
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Fragen an die Experten.....

Leider bin ich NAS technisch noch blutiger Anfänger. Habe versucht dieses Projekt zu realisieren. Was ich gemacht habe ist, dass ich das "Projekt" auf meine NAS in den Ordner homes abgelegt habe. Dabei habe ich die config.php bearbeitet und anschießend die FileBasedMiniDMS.php ausgeführt. Ich bekam dann über den Aufgabenplaner die Rückmeldung

Rich (BBCode):
Stoppzeit: Tue, 26 Sep 2017 14:48:30 GMT Aktueller Status: 2
Standardausgabe/Fehler:
/volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php: line 1: ?php: No such file or directory
/volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php: line 2: /bin: Is a directory
/volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php: line 3: syntax error near unexpected token `('
/volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php: line 3: `        FileBasedMiniDMS.php    by Stefan Weiss (2017)'

Verstehe ich nicht ganz warum. Das ganze ist als root ausgeführt worden.


Ich habe mir dann nochmals die Install / Readme gelesen darin steht
For OCR (Step 1): Install Docker and pull an ocrmypdf image, eg. docker pull jbarlow83/ocrmypdf

Nun habe ich per Putty versucht OCEMYPDF zu installieren, bekomme dort aber die Rückmeldung
docker.JPG

Docker ist bei mir installiert und aktiv.
Kann mir jemand helfen?
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Hessi,

die FileBasedMiniDMS.php darfst du nicht direkt ausführen. Du musst das script über php starten. Der Befehl sollte so aussehen:
Rich (BBCode):
php /volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php

Und zu dem docker-Problem: Du musst den Befehl (docker pull ...) als root ausführen. Dazu den Befehl "sudo su" eintippen und mit deinem Benutzer-Passwort bestätigen. Dann sollte der docker Befehl funktionieren.
Alternativ kannst du das Image aber auch über das DSM runterladen: Bei "Registrierung" nach "ocrmypdf" suchen und das entsprechende Image (Blöderweise als Bild übersetzt) runterladen. Mehr ist nicht nötig.


Gruß
Stefan
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Man lernt eben nie aus und manchmal eben auch by learning by doing.
Hat funktioniert. Nur habe ich jetzt das Problem dass Docker den Container "ocrmypdf" ständig unerwartet beendet und das Sekunden nach dem Start.Habe mal ein Ticket geschrieben die Kollegen von Synology sind da schon dran.
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Oh, sorry dass ich da nochmal einhake, aber das Ticket kannst du wieder zurückziehen :)
Und den Container kannst du auch wieder löschen. Es wird wirklich nur das Abbild benötigt. Für jedes PDF wird dann automatisch ein temporärer Container erstellt und ocrmypdf gestartet. Das ist kein Dienst, der die ganze Zeit im Hintergrund rumdümpelt, daher beendet sich der Container auch direkt wieder, wenn du ihn per Hand startest.
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Ich komme nicht weiter....

Nach Eingabe des Befehls
Rich (BBCode):
php /volume1/Privat/IT/Scripte/OCR/FileBasedMiniDMS.php
gibt es eine Fehlermeldung...
Rich (BBCode):
Hessi@HessiServer:~$ 2017-09-28 13:03:54 Scanning for Tagging: /volume1/homes/Hessi/Dokumente/Scans
-sh: 2017-09-28: command not found

Ich habe das so definiert wie in der Readme vorhanden ist.
Hier mein Inhalt der config.php
Rich (BBCode):
<?
    /* ------------------------------------------------------ */
    /* ----------------- Configuration Area ----------------- */
    /* ------------------------------------------------------ */
    
    $doOCR = true;
    $doRenameAfterOCR = true;
    $doTagging = true;
    
    // files which match this rule are considered to be OCR'd
    $matchWithoutOCR = "Scan*"; // without file extension .pdf
    
    // files which match this regex are considered for automatic rename
    $OCRPrefix = "OCR_"; // without file extension .pdf
    
    // ocrmypdf options
    // -s 	don't OCR pages with text again
	// -r	automatically rotate pages based on detected text orientation
	// -l	language (deu,enu,...)
    //  example: docker run --rm -u 1026 -v "/volume1/docker/ocr:/home/docker" jbarlow83/ocrmypdf -l deu Scan.pdf Out.pdf
    $ocropt = "-sr -l deu";
    $dockercontainer = "jbarlow83/ocrmypdf";
    
    // here are freshly scanned documents. to be OCR'd and renamed.
    $inboxfolder = "/volume1/homes/Hessi/Dokumente/Scans/_inbox";
    
    // Set $archivefolder to the folder which contains your documents for tagging.
    // Without trailing (back)slash!
    $archivefolder = "/volume1/homes/Hessi/Dokumente/Scans";
    
    // recycle-bin
    $recyclebin = "/volume1/homes/Hessi/Dokumente/Scans/#recycle";
    
    // In $tagsfolder your tags will be created. Please use a fresh folder.
    // Everything here is subject to be deleted! Without trailing (back)slash!
    $tagsfolder = "/volume1/homes/Hessi/Dokumente/Scans/tags";
    
    // $logfile is the path to a logfile OR "syslog" OR "stdout"
    //$logfile = dirname(__FILE__) . "/FileBasedMiniDMS.log";
    $logfile = "/volume1/homes/Hessi/Dokumente/Scans/_inbox/FileBasedMiniDMS.log";
    
    // $loglevel can be 0 (none), 3 (error), 6 (info), 7 (all)
    $loglevel = 7;
    
    // $timezone. just for logging purposes.
    $timezone = 'Europe/Berlin';
    
    // first match is used
    $renamerules = array(
        // "rule" => "name"
    	"Meldebescheinigung&Sozialversicherung" => "Meldebescheinigung Sozialversicherung",
        "Grundsteuerbescheid" => "Grundsteuerbescheid",
        "Finanzamt" => "Finanzamt",
        "LBS&Bauspar" => "LBS Bausparen",
        "Deka&Jahresdepotauszug" => "Deka Jahresdepotauszug",
        "Deka" => "Deka",
        "Sparkasse&Dividende&Depot" => "Sparkasse Aktiendepot Dividende",
        "Apotheke" => "Apotheke",
        "Erdgas&Jahresrechnung" => "Erdgas Jahresrechnung",
        "Zahnarzt" => "Zahnarzt",
        "PVS BW" => "Arztrechnung PVS",
        "Arzt,Ärztin" => "Arzt",
        "Heilpraktiker" => "Heilpraktiker",
        "Kindergarten" => "Kindergarten",
        "Karlsruher SC" => "KSC Dokumente",
        "Elternabend" => "KigaDokumente",
    	);
    
    // all are applied and concaternated
    $tagrules = array(
        // "tag"                => "rule"
    	"#Hessi"		        => "Hessi&Weiss",
    	"#rechnung"		        => "Rechnung",
        "#beitragsanpassung"    => "Beitragsanpassung",
    	);
?>

Mein LOG Datei sieht so aus:
Rich (BBCode):
2017-09-28 13:03:54 Scanning for new scans: /volume1/homes/Hessi/Dokumente/Scans/_inbox
2017-09-28 13:03:54 Scanning for Tagging: /volume1/homes/Hessi/Dokumente/Scans

Eine Test PDF Datei liegt in der Ordnerstrucker Dokumente/Scans/_Inbox

Sorry für meine Unwissenheit, aber ich habe gerade erst mit dem Thema angefangen....:eek:
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Du brauchst dich nicht zu entschuldigen. Ich muss die Handhabung unbedingt benutzerfreundlicher machen :)

Übrigens, ich sehe in deiner config ein "Karlsruher SC". Das lässt mich vermuten, dass du hier ganz in der nähe wohnst :cool:

So, nun zu deinem Problem:
Es sieht so aus, als ob du zumindest in deinem Beispiel das Script als "Hessi" und nicht als "root" gestartet hast. Das tut nicht.
An der Log-Datei sieht man, dass er keine Dateien bearbeitet.

Das Script erwartet, dass die PDF's für den OCR-Schritt mit "Scan" beginnen (siehe $matchWithoutOCR in der config.php)
Das durchsuchbare PDF heißt dann genauso, nur "OCR_" vorne dran.
Erst dann passiert das umbenennen nach den Regeln. Dann fängt der Dateiname mit Datum an.

Kannst du einen Screenshot von deinem inbox-Ordner schicken?
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Wohne 200 km von KA weg. ;-)

Ok das Ding funktioniert.... allerdings macht er nach der Bearbeitung kein OCR vorne dran.
Anbei ein Screenshot und Log Datei

kiga.JPG

Rich (BBCode):
017-09-28 16:02:46 Scanning for new scans: /volume1/homes/Hessi/Dokumente/Eingang
2017-09-28 16:02:46 Run Docker: docker run --name ocr --rm -u 1027 --cpu-quota=80000 -v "/volume1/homes/Hessi/Dokumente/Eingang:/home/docker" jbarlow83/ocrmypdf -sr -l deu "Scan73636638.pdf" "OCR_Scan73636638.pdf" 2>&1
2017-09-28 16:03:04 OCR'd "/volume1/homes/Hessi/Dokumente/Eingang/Scan73636638.pdf" with status 0
2017-09-28 16:03:04 Docker output:
 WARNING: Your kernel does not support CPU cfs quota. Quota discarded.
    INFO -    1: page already has text! – skipping all processing on this page
    INFO -    1: page is facing ?, confidence 18.77 - rotation appears correct
    INFO - Output file is a PDF/A-2B (as expected)
2017-09-28 16:03:04 recyclefile: removed basepath '/volume1/homes/Hessi/Dokumente/Eingang' from file 'Scan73636638.pdf'
2017-09-28 16:03:04 run: pdftotext -l 1 "/volume1/homes/Hessi/Dokumente/Eingang/OCR_Scan73636638.pdf" - 2>&1
2017-09-28 16:03:04 pdftotext output:
 Herzliche Einladung zu unserem Elternabend im neuen
 
 Kindergartenjahr:
 Am Donnerstag, den
 
 28.09.17 um 19.30 Uhr
 im 
 
 „MM
 Tagesordnung:
 
 V
 
 Begrüßung
 Unsere neuen Mitarbeiterinnen stellen sich vor
 Feste und Feiern, wie soll die Organisation in der Zukunft aussehen?
 Pause
 
 Informationen des Elternbeirates
 
 Eltembeiratswahl
 Informationen
 
 Fragen und Anregungen
 
 Wir freuen uns sehr auf Ihr Kommen,
 Ihr Kindergartenteam
 
 ähS/ILLL
 
 Qual/“6&2— W9“
 
 
2017-09-28 16:03:04 !!Meldebescheinigung did not match
2017-09-28 16:03:04 !!Grundsteuerbescheid did not match
2017-09-28 16:03:04 !!Finanzamt did not match
2017-09-28 16:03:04 !!LBS did not match
2017-09-28 16:03:04 !!Deka did not match
2017-09-28 16:03:04 !!Deka did not match
2017-09-28 16:03:04 !!Sparkasse did not match
2017-09-28 16:03:04 !!Apotheke did not match
2017-09-28 16:03:04 !!Erdgas did not match
2017-09-28 16:03:04 !!Zahnarzt did not match
2017-09-28 16:03:04 !!PVS BW did not match
2017-09-28 16:03:04 !!Arzt,Ärztin did not match
2017-09-28 16:03:04 !!Arzt,Ärztin did not match
2017-09-28 16:03:04 !!Heilpraktiker did not match
2017-09-28 16:03:04 !Kindergarten matches 'Kindergartenjahr:'
2017-09-28 16:03:04 !!Hessi did not match
2017-09-28 16:03:04 !!Rechnung did not match
2017-09-28 16:03:04 !!Beitragsanpassung did not match
2017-09-28 16:03:04 Renaming /volume1/homes/Hessi/Dokumente/Eingang/OCR_Scan73636638.pdf
2017-09-28 16:03:04       to /volume1/homes/Hessi/Dokumente/Eingang/2017-09-28 Kindergarten.pdf
2017-09-28 16:03:04 Scanning for Tagging: /volume1/homes/Hessi/Dokumente/archiv
 

optimist123

Benutzer
Mitglied seit
16. Jun 2010
Beiträge
55
Punkte für Reaktionen
6
Punkte
8
Hallo zusammen,
habe die Datei "config.php" nach meinen Gegebenheiten angepasst und alles fuktioniert wie in der Anleitung beschrieben. Mein Problem ist nur, dass die fertig umbenannten Dateien Rechte erhalten, mit denen meine normalen Benutzerkennungen keinen Zugriff haben: group "root" statt "users" und '0600' statt '0755'. Mit einem nachgeschalteten script ließe sich das ja problemlos ändern, aber geht das nich irgendwie eleganter? Wer kann mir einen Tip geben?
Danke und viele Grüße.
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Hessi,

juhu. Genau so soll es sein!
Das mit dem OCR_ vorne dran ist nur ein Zwischenschritt, bevor der richtige Name 2017-09-28 Kindergarten.pdf gebildet wurde.

PS: In der aktuellen Version werden die Kommata in den Regeln nicht richtig behandelt - da gibt es bald ein Update.

Gruß
Stefan
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo optimist123,

da hast du recht. Der owner sollte aber dem owner der Ursprungsdatei entsprechen. Daher haben die Meisten wohl keine Probleme.
Ich schau, dass ich das konfigurierbar einbaue.

Gruß
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Gibt es die Möglichkeit auf eine einfache Art und weise ohne großen Aufwand einen Kopiervorgang der umgenannten Datei an einen anderen Ort zu verschieben, den ich über die Konfig vorher definiert hab?

Beispiel: ein Kindergarten Dokument soll in den Ordner Dokumente/Kindergarten
Ein Bank Dokument in den Ordner Dokumente/Bank
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Kann es sein, dass gewisse PDF Dateien, trotz einer Ddefinition in der Konfig einfach nicht umbenennt werden wollen? Ich versucht Rechnungen von Strato über das Script laufen zu lassen. Aber diese werden erfolgreich aber unbearbeitet in den Archiv ordner ohne Umbennenung verschoben. Woran könnte das liegen?
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Moin moin Hessi,

Mein Script verschiebt (noch) keine Dateien automatisch in den Archivordner. Hast du dafür etwas anderes gebastelt? Vielleicht werden die Dateien verschoben, bevor mein Script aktiv wird.

Sonst:
Wenn das Script keine passende Regel findet, sollte das PDF zumindest mit einem Datum versehen werden (+ originaler Dateiname angehängt). Wegen den Regeln: Da gibt es ja noch den Bug, dass Kommas (also das logische ODER) nicht funktionieren.
Wenn das nicht passiert ist vielleicht $doRenameAfterOCR in der config nicht aktiviert?

Gruß,
Stefan
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Habe nichts bebastelt.
Nein leider gibt es keinen Zeitstempel. Ich PDF Rechnungen die ich von Strato erhalten, speichere ich in den "Eingang" und lasse das Script drüber rennen. Nach Ausführung sind die Dateien in Archiv verschoben. Allerdings wurde die Dateinamen nichct annähenrnd verändert. Aus dem Protokoll gibt es keinen Fehlerhinweis der mir weiterhelfen könnte.

Bzgl. meinen erwähnten Wunsch/Anliegen in Beitrag #75 habe ich ein simples Script selbstgeschrieben. Bin allerdings noch nicht ganz zufrieden, da ich von Zeit immer mal wieder das Script von Hand anpassen muss.
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Deinen Wunsch aus #75 habe ich zur Kenntnis genommen und plane das einzubauen. Das wird dann vermutlich ein Ersatz zu dem Tagging werden.
Habe leider momentan wenig Zeit dafür ..

Ich vermute, dass es dann doch an deinem Script liegt. Am besten du baust dort auch ein Tracing ein, damit du nachvollziehen kannst, was genau darin passiert.
Wenn du magst kann ich da auch mal schnell drüber gucken (wenn es nicht zu komplex ist). Vielleicht fällt mir was auf.
 

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
146
Punkte für Reaktionen
2
Punkte
24
Das ist mein Script. Es sucht nach Dateinamen und verschiebt die diese in den entsprechenden Ordner. Läuft einwandfrei... aber schön ist halt was anderes.....

Rich (BBCode):
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Otto/*' -type f -iname *otto* -exec mv {} /volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Otto/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Auto-Rechnungen/Amtec-Meier/*' -type f -iname *amtec* -exec mv {} /volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Auto-Rechnungen/Amtec-Meier/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1//Privat/Dokumente/Finanzen/06-Rechnungen/2017/Auto-Rechnungen/Autohaus-Buechle/*' -type f -iname *buechle* -exec mv {} /volume1//Privat/Dokumente/Finanzen/06-Rechnungen/2017/Auto-Rechnungen/Autohaus-Buechle/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Namen/*' -type f -iname *Familienkasse* -exec mv {} /volume1/Privat/DokumenteNamen/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Namen/Kindergarten/*' -type f -iname *Kindergarten* -exec mv {} /volume1/Privat/Dokumente/Namen/Kindergarten/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Zahnarzt/*' -type f -iname *Zahnarzt* -exec mv {} /volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Zahnarzt/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Steuer/2016/*' -type f -iname *Finanzamt* -exec mv {} /volume1/Privat/Steuer/2016/ \;
find /volume1/homes/Hessi/Dokumente/Archiv ! -path '/volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Strato/' -type f -iname *Strato* -exec mv {} /volume1/Privat/Dokumente/Finanzen/06-Rechnungen/2017/Strato/ \;
 
Status
Für weitere Antworten geschlossen.
 

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