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

Status
Für weitere Antworten geschlossen.

Dufooy

Benutzer
Mitglied seit
03. Nov 2012
Beiträge
277
Punkte für Reaktionen
0
Punkte
16
DSM Dokumentmanagement System

@stweiss

Danke Dir Stefan,
dass ist wirklich ein tolles Script, chapeau...wo kann ich das Bier hinsenden ;)

Ich frage mich gerade, wie man diesen nun erkannten Text einer Datei auslesen kann um die Qualität zu prüfen und wie weit was erkannt wurde, oder um diesen weiter zu verarbeiten (siehe unten bei meiner DMS Idee)
Zum anderen frage ich mich auch ob die Logfile Ausgabe so richtig ist und ob es richtig durchläuft, bei den anderen ist mehr zu sehen und Loglevel ist 7


Rich (BBCode):
2017-11-04 15:45:32 Scanning for new scans: /volume2/homes/scan/Scans/_inbox
2017-11-04 15:45:46 OCR'd "/volume2/homes/scan/Scans/_inbox/Scan.test.3.pdf" with status 0
2017-11-04 15:45:46 Renaming /volume2/homes/scan/Scans/_inbox/OCR_Scan.test.3.pdf
2017-11-04 15:45:46       to /volume2/homes/scan/Scans/_inbox/2017-11-04 Finanzamt #rechnung.pdf

Erkennt das Script auch, ob dies schon ein PDF ist, welche schon durchsuchbaren Text enthält und verarbeitet dann einfach Punkt 2 und 3.

Wo könnte das Format der Ausgabe noch geändert werden?
Z.Bsp. für Rechnung.Finanzmat.10.11.2017.
Oder wie könnte eine Rechnungsnummer ausgelesen werden?
Wäre es möglich auch leere Seiten zu entfernen?

Wie schon Hessi30 geschrieben hat fehlt nun nur noch ein Verschieben der Dateien in einen Folder der Wahl.

DMS Idee:
Was ich auch noch suche ist eine art DMS um ein Frontend zu haben mit verschiedenen Nutzerrechten (daher erweitere ich mal den Post hier um die Idee, denke bin nicht der einzige der so was sucht) so dass Dokumente nicht einfach manipuliert werden können.
Was ich gefunden habe ist xoda http://xoda.org/ was in php geschrieben ist...hab zwar noch einen Server 500 error, aber sieht schon mal gut aus.
Z.Bsp. könnten dann Dateien einfach in einen Posteingansorder geschoben werden.
Wäre irgendwie toll wenn xoda noch eine integrierte Dateivorschau hätte z.Bsp.mit viewerjs und wenn der vom OCR erkannte Text in das Description Feld eingetragen würde.
Auch eine Möglichkeit zur Ablage einer E-MAil inkl. Anhängen als PDF wird noch gesucht um einen Workflow zu haben.
ecoDMS ist leider nicht der hit und viel zu kompliziert, auch mach ich nicht deren Apps überall drauf haben, damit es vernünftig funzt.

Vielleicht kann dass auch mit Bordmitteln der Syno z.T. erreicht werden, aber eine Dateivorschau und dass Dateien mit Tags, Notizen belegt werden können gibt es auch hier nicht.

Gruß D.
 
Zuletzt bearbeitet:

Hessi30

Benutzer
Mitglied seit
23. Nov 2012
Beiträge
131
Punkte für Reaktionen
2
Punkte
24
Kurze Frage. Weshalb habe ich in der config.php

Rich (BBCode):
  // 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/tags";

(Ordner ist immer leer)

wenn ich ganz unten in der datei

Rich (BBCode):
   $tagrules = array(
        // "tag"                => "rule"
    	"Gebührenbescheid"		        => "Gebührenbescheid",
    	"Nebenkostenabrechnung"		    => "Nebenkostenabrechnung",
    	"Rechnung"		        => "Rechnung",
        "Beitragsanpassung"    => "Beitragsanpassung",
        "Versicherungsbestätigung"    => "Versicherungsbestätigung",
        "Elternabend"    => "Elternabend",
        "Arbeitsvertrag"    => "Arbeitsvertrag",);

stehen hab??

Ich verstehe hier den Zusammenhang nicht. Kann mir jemand helfen?
 

Dufooy

Benutzer
Mitglied seit
03. Nov 2012
Beiträge
277
Punkte für Reaktionen
0
Punkte
16
@williserver...ecoDMS ist leider nicht der Hit, habe ich schon angetestet und es bringt es leider nicht.
Andere Ideen?

Beste Grüße D.
 

JuSu

Benutzer
Mitglied seit
30. Sep 2011
Beiträge
170
Punkte für Reaktionen
0
Punkte
16
Hallo Dufooy,

welche Probleme siehst Du mit ecoDMS?

Hintergrund meiner Frage: Ich setze das selbst ein und
- kann von unterwegs z. B. Tankrechnungen per Mobile Phone abfotographieren und durchsuchbar in die Datenbank einbinden
- habe einen WEB Zugang von unterwegs (und Mobile Zugang)
- kann im Büro relativ schnell meine verschlagwortenden Daten finden und Rechnungen mit Autodetekt Texterkennung einscannen.

Bisher ist das für meine Ansprüche höchst befriedigend - aber vielleicht gibt es ja noch mir unbekannte Funktionen, die hier nicht vorhanden aber erstebenswert sind.
Ich lerne hier gerne dazu.
Danke Dir für Erleuchtung.


Gruß
Jusu
 

Dufooy

Benutzer
Mitglied seit
03. Nov 2012
Beiträge
277
Punkte für Reaktionen
0
Punkte
16
Hi Jusu,

gerne beantworte ich Deine Fragen.

Ich nutze kopano als Mailclient/Maillösung, daher möchte ich meine Daten gerne auf dem kurzen Weg abspeichern oder wenn ich eine Datei suche, diese wie WebDAV anhängen und auch auf dem Weg auch speichern.
ecoDMS unterstützt keine Zugriff nur über diese Api Schnittstelle und da wird es nach 30 abrufen Teuer, oder halt die Clients.

Zum einen mage ich diese Client Server Lösung nicht, da sie einfach die Funktionalität sicher bewusst einschränkt.

Für iOS 10 und iOS 11 gibt es keinen Client mehr, letzes Update 2015, die Dame von der Hotline hat keine Ahnung warum die nicht zu installieren ist.

Da passt einfach vieles nicht zusammen.

Habe heute eine Software enteckt, die zukünftig einiges an potential hat und alle Inhalte in der PDF Datei selber speichert.
Läuft auf Linux und Windo....f....

Finde es auch schade das Synology da nicht schon mal entwickelt hat, viel braucht es ja nicht dazu.

Besten Gruß D.
 

stweiss

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

das sind aber viele Fragen :)

Zum Prüfen, welcher Text im PDF gespeichert wurde hast du mehrere Möglichkeiten:
- Entweder das Script mit der Option "-x" starten, dann wird zu jedem OCR'ten PDF ein TXT file mit dem Text abgelegt.
- Oder du jagst das PDF selber durch pdftotext. Geht auf der Konsole oder auch per Aufgabenplaner: pdftotext -l 1 <PDF-file> [<text-file>]
(-l 1 gibt nur die erste Seite aus. Momentan wird nur die erste Seite zur Regelerkennung verwendet.)

Dein Logfile sieht an sich gut aus. Er findet auch passende Regeln zum benennen. Aber bei Loglevel 7 sollte tatsächlich noch mehr dabei sein, z.B. der "Docker output". Hast du das config.php gespeichert, bevor du das script gestartet hast?

Das Script erkennt selbst nicht, ob das PDF schon durchsuchbar ist. Es wird alles an ocrmypdf übergeben, was auf das Namensschema passt. Aber ocrmypdf erkennt dies (zumindest mit meiner vorgegebenen Konfiguration, siehe Option $ocropt -s)

Wo könnte das Format der Ausgabe noch geändert werden?
Z.Bsp. für Rechnung.Finanzmat.10.11.2017.
Das geht nicht. Jedenfalls ist es nicht vorgesehen. Das Format ist an vielen stellen im Code fest verwurzelt.
Wenn du aber das Tagging nicht verwendest, kannst du versuchen das Format im Code (Zeile nach dem Kommentar // == do rename) anzupassen. Aber ohne Gewähr!

Oder wie könnte eine Rechnungsnummer ausgelesen werden?
Das ist auch nicht leicht. Wenn es ein einheitliches Schema gäbe, wie so eine Nummer aussieht, könnte man das versuchen. Und dann steht der Text Rechnungsnummer mal davor - mal darüber. Man könnte es für ein paar einfache Fälle vielleicht hinkriegen. Aber ob das zufriedenstellend ist bezweifle ich ...

Wäre es möglich auch leere Seiten zu entfernen?
Gute Idee, das könnte ich auch brauchen. Bei ocrmypdf gibt es das Thema auch schon seit längerem, ist aber noch nicht drin. (https://github.com/jbarlow83/OCRmyPDF/issues/12)
Ich nehme das mit auf die Ideen-Liste :)

Zum Thema XODA oder anderen DMS kann ich nichts sagen. Mir reicht momentan das Ergebnis von meinem FileBasedMiniDMS ;)
 
Zuletzt bearbeitet:

stweiss

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

sorry, habe leider wenig Zeit momentan, um alle Probleme tiefgründig zu analysieren.

Aber hierzu kurz: Die Tags müssen mit # beginnen, damit sie als Hashtags erkannt werden und im tags-Ordner einsortiert werden.
So ist es besser. Bin mir grad nicht sicher, ob die Großbuchstaben im Hashtag Probleme machen..

Rich (BBCode):
   $tagrules = array(
        // "tag"                => "rule"
    	"#Gebührenbescheid"		        => "Gebührenbescheid",
    	"#Nebenkostenabrechnung"		    => "Nebenkostenabrechnung",
    	"#Rechnung"		        => "Rechnung",
        "#Beitragsanpassung"    => "Beitragsanpassung",
        "#Versicherungsbestätigung"    => "Versicherungsbestätigung",
        "#Elternabend"    => "Elternabend",
        "#Arbeitsvertrag"    => "Arbeitsvertrag",);
 

Homer-S

Benutzer
Mitglied seit
08. Nov 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,
ich würde das "Stefan-Skript" gerne zum Umbenennen meiner schon in PDF/A gescannten Dokumente her nehmen.

Ich habe dazu die config.php entsprechend angepasst, bekomme aber diesen Fehler:

PHP Notice: Undefined variable: logfile in /myapp/FileBasedMiniDMS.php on line 51
PHP Notice: Undefined variable: timezone in /myapp/FileBasedMiniDMS.php on line 53
PHP Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone () in /myapp/FileBasedMiniDMS.php:53
Stack trace:
#0 /myapp/FileBasedMiniDMS.php(53): DateTimeZone->__construct('')
#1 {main}
thrown in /myapp/FileBasedMiniDMS.php on line 53

Die beiden Variablen sehen so in der congi.php aus:
// $logfile is the path to a logfile OR "syslog" OR "stdout"
//$logfile = dirname(__FILE__) . "/FileBasedMiniDMS.log";
$logfile = "/scans/FileBasedMiniDMS.log";

// $loglevel can be 0 (none), 3 (error), 6 (info), 7 (all)
$loglevel = 6;

// $timezone. just for logging purposes.
$timezone = 'Europe/Berlin';
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hi!

Seltsam. Wenn die richtige config.php eingezogen wird, dürfte das nicht passieren. Folgende Ideen:

  • Liegt die config.php im gleichen Verzeichnis, wie die FileBasedMiniDMS.php?
  • Hast du in der config.php aus Versehen einen größeren Abschnitt auskommentiert? (/* ... */ geht über Zeilengrenzen hinweg)
  • Hast du an der FileBasedMiniDMS.php rumgeschraubt?

Gruß,
Stefan
 

Homer-S

Benutzer
Mitglied seit
08. Nov 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hi!

Seltsam. Wenn die richtige config.php eingezogen wird, dürfte das nicht passieren. Folgende Ideen:

  • Liegt die config.php im gleichen Verzeichnis, wie die FileBasedMiniDMS.php?
  • Hast du in der config.php aus Versehen einen größeren Abschnitt auskommentiert? (/* ... */ geht über Zeilengrenzen hinweg)
  • Hast du an der FileBasedMiniDMS.php rumgeschraubt?

Gruß,
Stefan

Hallo Stefan,

beide Dateien liegen im gleichen Verzeichnis.
soweit ich es eben noch mal geprüft habe, hab ich nur die Verzeichnisse angepasst und 2x false eingetragen
An der FileBasedMiniDMS.php ich nichts geändert.

Das einzige was vielleicht unterschiedlich ist, ich lasse es innerhalb eines Containers laufen:
Dieser wird hiermitb gebildet und den auskommentierten Befehl lasse ich dann im Docker als root ausführen.
PHP:
FROM thatsamguy/trusty-php71
RUN mkdir /myapp
COPY *.php /myapp/
WORKDIR /myapp
RUN mkdir /scans
VOLUME /scans
VOLUME /myapp
##CMD [ "php", "./FileBasedMiniDMS.php" ]##
 

Homer-S

Benutzer
Mitglied seit
08. Nov 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Stefan,

ich habe eben eine neue VM mit Ubuntu aufgesetzt und dann php installiert.
die gleichen Ordner angelegt wie vorher und gleicher Fehler wie im Container ...
 

stweiss

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

sorry, hab leider nicht viel Zeit zum analysieren.
Du hast php 7.1 installiert? Vielleicht liegt es daran. Auf der Diskstation ist php 5.6.11.
 

Homer-S

Benutzer
Mitglied seit
08. Nov 2017
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
mit 5.6.23 ging es leider auch nicht
Schade, die Idee finde ich hervorragend!
 

asrenz

Benutzer
Mitglied seit
05. Jan 2018
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

so als neues Forum Mitglied habe ich mich gleich mal durch den super interessanten Beitrag gearbeitet. Vielen Dank für das Skript.
Leider bekomme ich es nicht zum laufen :-( Ich habe versucht es über das Terminal mit root zu starten.

Ich bekomme dabei folgende Fehlermeldung ??


docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http:///var/run/docker.sock/v1.29/containers/create?name=ocr: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
2018-01-05 23:24:23 pdftotext output:
I/O Error: Couldn't open file '/volume1/homes/andreas/Dokumente/Scans/_inbox/OCR_Scan_20180105_221212_000005.pdf': No such file or directory.
2018-01-05 23:24:23 Scanning for Tagging: /volume1/homes/andreas/Dokumente/Scans
2018-01-05 23:34:23 Scanning for new scans: /volume1/homes/andreas/Dokumente/Scans/_inbox
2018-01-05 23:34:27 Docker output:
WARNING: Your kernel does not support CPU cfs quota or the cgroup is not mounted. Quota discarded.
ERROR - Output file location (OCR_Scan_20180105_221212_000005.pdf) is not writable.
You are using qpdf version 6.0.0 which has known issues including security vulnerabilities with certain malformed PDFs. Consider upgrading to version 7.0.0 or newer.
2018-01-05 23:34:27 pdftotext output:
 

_107

Benutzer
Mitglied seit
12. Jan 2014
Beiträge
48
Punkte für Reaktionen
0
Punkte
6
Hallo und danke für das Script auch von mir!!! Genau so etwas habe ich gesucht. Ich habe gestern die Alpha-Version installiert, um das Datum ohne die Bindestriche zu bekommen. Auf den ersten Blick läuft alles gut, werde in den nächsten Tagen etwas an den Namensregeln feilen...
Gibt es irgendwelche Bedenken beim Einsatz der Alpha-Version, oder läuft die im Allgemeinen stabil?
 

stweiss

Benutzer
Mitglied seit
09. Jun 2017
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Nach meiner Erfahrung läuft die aktuelle Alpha ganz gut. Habe keine Bedenken. Wenn ich mal etwas Zeit hätte würde ich die Version auch zu neuen Stable machen :)
 

Heiquito

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
39
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen ... hab soweit auch alles mit der Alpha zum laufen bekommen. Vielen dank dafür ... genau sowas habe ich schon lange gesucht.

Eine Anfrage hätte ich da ...

Wäre es möglich das erkannte Datum nicht nur als Text in den Namen zu schreiben, sondern auch als Datum der Datei zu setzen?

Ich arbeite mit EloOffice zusammen und beim Hinzufügen übernimmt EloOffice das Dateidatum als Verschlagwortung. Siehst du da eine Möglichkeit?
 

stweiss

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

gute Idee! Nehm ich mit auf :)
 

randfee

Benutzer
Mitglied seit
08. Apr 2010
Beiträge
1.070
Punkte für Reaktionen
3
Punkte
64
Hi Stefan,

super Sache, läuft auch, bis auf das Umbenennen (so halb), Verschieben, Taggen, Archivieren.
Habe vier Ordner erzeugt:
  • scans
  • tags
  • trash
  • archive
Im "scans" Ordner liegt eine "Scan001.pdf"
Nach dem Ausführen liegt dort eine Datei "2018-02-04 OCR_Scan01.pdf". Im "/trash" Ordner liegt das Original. Ok, er hat keine Regel zum Umbenennen gefunden und nur das heutige Datum als prefix gesetzt, passt.

Frage:
  • wozu dienen der Archiv und Tag Ordner dann? Verstehe die Beschreibung dahingehend nicht so ganz.
  • Es wäre echt extrem hilfreich, wenn man das Ganze auch außerhalb des Home-Verzeichnisses ausführen könnte und die Berechtigungen an den generierten Dateien behält. Aber das weißt du ja schon. ;) Ich hatte eigentlich nicht vor meinem Scanner die Zugangsdaten meines Primär-Users/Home-Verzeichnisses zu geben, darüber hinaus finde ich es einfach sauberer einen Public Eingangsordner zu haben aus dem die Leute ihre eigenen Dateien wegsortierten können, denn kein Re-Naming/Taggin-Script wird das einwandfrei hinbekommen (z.B. namenlose Rechnungen).

Dies sind config Einstellungen:
Rich (BBCode):
$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/randfee/scan2OCR_test/scans";
    
    // Set $archivefolder to the folder which contains your documents for tagging.
    // Without trailing (back)slash!
    $archivefolder = "/volume1/homes/randfee/scan2OCR_test/archive";
    
    // recycle-bin
    $recyclebin = "/volume1/homes/randfee/scan2OCR_test/trash";
    
    // 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/randfee/scan2OCR_test/tags";
    
    // $logfile is the path to a logfile OR "syslog" OR "stdout"
    //$logfile = dirname(__FILE__) . "/FileBasedMiniDMS.log";
    $logfile = "/volume1/homes/randfee/scan2OCR_test/FileBasedMiniDMS.log";
    
.....
 
Zuletzt bearbeitet:
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