synOCR synOCR - GUI für OCRmyPDF

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Hallo an alle,

wie müsste eine YAML aussehen die folgendes machen sollte:

Ursprungsdatei ist eine PDF aus unserer Warenwirtschaft
Name: 2021-444676.pdf

Die Datei beinhaltet eine Nummer die in den Dateinamen geschrieben werden soll. (im Anhang gelb markiert)

Die Zieldatei sollte dann folgenden Namen bekommen

137247_2021-444676

Dabei ist "137247" eine Nummer im Dokument. Und findet sich in folgender Zeile

Ihr Beleg: 137247/ 137247

siehe Anhang
 

Anhänge

  • ocr.JPG
    ocr.JPG
    16,6 KB · Aufrufe: 12

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Versuche mal (?<=(^Ihr Beleg:[\s]+){1})[0-9]+

Das sollte die Zeile suchen, welche mit Ihr Beleg: beginnt und liefert die anschließenden Zahlen.
Vielleicht hat jemand noch eine bessere Lösung. Regex ist so gar nicht meins …

(regexr.com)
 
Zuletzt bearbeitet:

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Versuche mal (?<=(^Ihr Beleg:[\s]+){1})[0-9]+

Das sollte die Zeile suchen, welche mit Ihr Beleg: beginnt und liefert die anschließenden Zahlen.
Vielleicht hat jemand noch eine bessere Lösung. Regex ist so gar nicht meins …
wo genau muss ich deinen Code rein schreiben ?

Code:
# synOCR_YAMLRULEFILE
tagrulename1:
    tagname: Ihr Beleg
    targetfolder: "/<path>/"
    tagname_RegEx:
    condition: all
#    subrules:
#    - searchstring: foundme
#      searchtyp: contains
#      isRegEx: false
#      source: content
#      casesensitive: true
#    - searchstring: dontfoundme
#      searchtyp: is not
#      isRegEx: false
#      source: content
#      casesensitive: false
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Gute Frage :ROFLMAO:
Ich hatte das damals für einen User eingebaut und nie selbst benutzt.

Probiere mal so:
YAML:
tagRegel1:
    tagname:
    targetfolder:
    tagname_RegEx: (?<=(^Ihr Beleg:[\s]+){1})[0-9]+
    condition: any
    subrules:
    - searchstring: (?<=(^Ihr Beleg:[\s]+){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
 
  • Like
Reaktionen: tomjons

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Leider klappt es nicht. Es wird eine Datei mit Namen (2).pdf erstellt.
Habe das Log-File angehangen.

Code:
# synOCR_YAMLRULEFILE
tagRegel1:
    tagname: Ihr Beleg
    targetfolder: "/<path>/"
    tagname_RegEx: (?<=(^Ihr Beleg:[\s]+){1})[0-9]+
    condition: any
    subrules:
    - searchstring: (?<=(^Ihr Beleg:[\s]+){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
 

Anhänge

  • synOCR_2021-11-22_16-18-46.zip
    1,7 KB · Aufrufe: 5

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Ok, davor hatte regex101.com auch gewarnt.
Mit [\s]+ werden nämlich jetzt beliebig viele Leerzeichen hinter Ihr Belegt: erlaubt.
Wie viel Leerzeichen sind da im OCR-Text?

Versuche es mal so (RegEx an beiden Stellen ändern): (?<=(^Ihr Beleg:[\s]{1}){1})[0-9]+
So wird nur eins angenommen. Ich hoffe, es reicht.

Und noch etwas:
  • Deine Umbenennungssyntax sollte so lauten: $tag_$tit
  • "Tags im Dateinamen kennzeichnen" sollte leer sein. Jetzt steht da eine Raute (#). Die willst du ja nicht zu Beginn des Namens haben.
  • Bei targetfolder: "/<path>/" in der Regel solltest du den Wert löschen. Ist ja nur ein Platzhalter.
 
Zuletzt bearbeitet:

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
ocr2.JPG

Also hinter "...Beleg:" ist ein Leerzeichen,
dazwischen scheinbar nichts mehr bis die Zahl beginnt
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Klappt noch nicht ganz ...
 

Anhänge

  • synOCR_2021-11-22_16-55-11.zip
    1,6 KB · Aufrufe: 4

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Das ist leider nicht verlässlich.
Mach mal bitte ein Programmlauf mit Loglevel 2 (debug mode). Dann findest du im Log-Ordner eine Textdatei, welche als Suchgrundlage dient. Dort müssen wir mal nachsehen, wie die Zeile genau lautet.
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Hab Kundendaten entfernt.
 

Anhänge

  • synOCR_searchfile_Rechnung 2021-556119.zip
    375 Bytes · Aufrufe: 3

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Es werden 8 Leerzeichen 'erkannt' (das verwendete Programm PDFtoText versucht so gut wie möglich das Layout wiederzugeben). Außerdem wird statt des Doppelpunktes ein Semikolon erkannt. Auch das müssen wir mit abfangen.

(?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+

Um Interpretationsabweichungen bei der Anzahl der Leerzeichen für die Zukunft abzufangen, müsstest du halt noch zusätzliche Regeln erstellen (also z.B. mit 7 oder 9 Stellen).


edit:
(?<=(^Ihr Beleg[:|;][\s]{1,10}){1})[0-9]+
 
Zuletzt bearbeitet:
  • Like
Reaktionen: tomjons

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Ich möchte mich hier sehr bedanken für deine Hilfe. Morgen hab ich wieder Zeit zu Testen. DANKE !!
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.637
Punkte für Reaktionen
3.655
Punkte
468
Ich kenne mich mit Regex kaum aus.
Aber gibt es da nicht eine bessere Methode um eine beliebige Folge von Whitespaces (also Blanks und Tabs) nach dem : zu eliminieren, ohne sich auf einen bestimmten Bereich festlegen zu müssen?
Darum geht es doch wohl, oder?
 
Zuletzt bearbeitet:

red19xx

Benutzer
Mitglied seit
21. Dez 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
@geimist: Grandioses Tool und genau das, was ich schon längere Zeit gesucht habe (jedenfalls, was ich alles darüber gelesen hab)!

Dieser Thread ist ja mittlerweile über 100 Seiten lang gewachsen und deinen Post #1.687 bzgl. BETA unter DSM7 konnte ich bereits finden. Aber gibt es schon eine grobe Schritt-für-Schritt-Anleitung, um synOCR auf DSM7 zum Fliegen zu bekommen? Auf diese Weise bekommt ihr sicher noch mehr Leute "ongeboarded", die dann sicher gern auch Feedback liefern.

Ich konnte jedoch selbst erstmal den Einstieg finden, indem ich wie folgt vorging:
  1. Herunterladen des aktuellen Pakets synOCR_DSM7_BETA_xxxxxxxxxxx.spk unter http://geimist.eu/synOCR/
  2. Im DSM7 > Paket-Zentrum > Manuelle Installation das Paket hochladen und installieren
  3. Öffnen von synOCR
    1637602909143.png
  4. synOCR > Hilfe > Einplanen der Aufgabe über den Aufgabenplaner > umgesetzt wie beschrieben.
  5. Wie unter #1.687 empfohlen, manuell die Aufgabe (also das Skript) über Aufgabenplaner initial ausgeführt
    1637603266220.png
  6. Leider blieben dieser Fehlermeldungen bestehen:
    1637603326446.png
  7. Nachdem ich den Post #1.812 von @shiQzaL las, habe ich das Skript als root selbst per ssh ausgeführt:
    1637603382579.png
  8. Anschließend lies sich synOCR ohne der vorherigen Fehlermeldungen öffnen:
    1637603432369.png

PS: Die Ausführung per SSH war eventuell nicht notwendig. Später konnte ich in den Aufgaben-Logs eine ähnliche Ausgabe sehen:
1637604061478.png

Nun kann es weitergehen mit der Konfiguration der Applikation.
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.507
Punkte für Reaktionen
1.344
Punkte
234
Aber gibt es da nicht eine bessere Methode um eine beliebige Folge von Whitespaces (also Blanks und Tabs) nach dem : zu eliminieren, ohne sich auf einen bestimmten Bereich festlegen zu müssen?
Klar könnte man das für diesen Fall direkt in synOCR entsprechend steuern, aber ich kann ja nicht für jeden use case synOCR anpassen, daher sollte das schon mit RegExen umgesetzt werden (wenn es denn wie gewünscht läuft).
Gerade nach synfors Zaunpfahlwinken sollte die aktuelle Lösung zielführend sein.

Das Problem ist, dass hier ja nicht nur ein Muster gesucht wird, sondern das Muster hinter einem anderen Muster. Und in dem Fall muss wohl eine definierte Zeichenlänge des 'vorderen' Musters vorliegen.

So hatte ich das zu nächst auch gedacht - bis grep schimpfte …

Fehlermeldung: grep: lookbehind assertion is not fixed length

… Aber gibt es schon eine grobe Schritt-für-Schritt-Anleitung, um synOCR auf DSM7 zum Fliegen zu bekommen? …
synOCR für DSM7 installieren, in der GUI dein Profil konfigurieren und das in deinem verlinkten Post beschriebene Skript als root aufrufen.
Woran hakt es denn?
 
Zuletzt bearbeitet:

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
68
Punkte für Reaktionen
4
Punkte
8
Es werden 8 Leerzeichen 'erkannt' (das verwendete Programm PDFtoText versucht so gut wie möglich das Layout wiederzugeben). Außerdem wird statt des Doppelpunktes ein Semikolon erkannt. Auch das müssen wir mit abfangen.

(?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+

Um Interpretationsabweichungen bei der Anzahl der Leerzeichen für die Zukunft abzufangen, müsstest du halt noch zusätzliche Regeln erstellen (also z.B. mit 7 oder 9 Stellen).


edit:
(?<=(^Ihr Beleg[:|;][\s]{1,10}){1})[0-9]+

Guten Morgen,

habe es soeben getestet mit
(?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+ und
(?<=(^Ihr Beleg[:|;][\s]{7,9}){1})[0-9]+

Leider ohne Erfolg. Der Dateiname bleibt Rechnung 2021-556282.pdf ...
Obwohl euer Code im Browsertest je einwandfrei funktioniert.
regex.JPG
 

Anhänge

  • synOCR_searchfile_Rechnung 2021-556282 (1).txt
    394 Bytes · Aufrufe: 3
  • synOCR_2021-11-23_08-00-38.zip
    3,3 KB · Aufrufe: 4
Zuletzt bearbeitet:

towbsen

Benutzer
Mitglied seit
26. Jul 2017
Beiträge
59
Punkte für Reaktionen
4
Punkte
14
Hallo zusammen, ich bekomme folgenden Fehler auf einer DS3018xs mit DSM 6.2.4-25556 Update 2

Ich habe über das Paketzentrum lediglich die Installation gestartet und wenn ich das Programm starten möchte, kommt immer dieser Fehler. Woran kann das liegen? Docker läuft. Das Script zum Starten habe ich auch ausgeführt.

Vielen Dank!
 

Anhänge

  • Bildschirmfoto 2021-11-23 um 09.03.02.png
    Bildschirmfoto 2021-11-23 um 09.03.02.png
    72,8 KB · Aufrufe: 6


 

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