synOCR synOCR - GUI für OCRmyPDF

tag

Benutzer
Mitglied seit
18. Jan 2021
Beiträge
32
Punkte für Reaktionen
2
Punkte
8
Bei meinem Brother funktioniert das wunderbar, auch wenn ich 70 Seiten scanne. Der schreibt erst, wenn der Scan fertig ist, das Ergebnis.

Minuten ist das falsche Kriterium. Mein Scanner wartet im Zweifel bis zu einer Stunde, ob man noch ein Blatt nachlegt, wenn man den Abschluss nicht bestätigt.

Die Frage wäre, ob man lsof benutzen kann um festzustellen, ob die Datei noch offen ist wenn ja, warten bis sie es nicht mehr ist. Der Scanner wird die Datei hoffentlich nicht schließen und wieder öffnen.
 
  • Like
Reaktionen: e91

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Minuten ist das falsche Kriterium. Mein Scanner wartet im Zweifel bis zu einer Stunde, ob man noch ein Blatt nachlegt, wenn man den Abschluss nicht bestätigt.
Im Fall der Ordnerüberwachung mit inotify ist gar keine Zeit zu defnieren. Es wird erkannt, sobald eine Datei vom Schreiben geschlossen wurde und dann legt synOCR los. Und hier liegt das Problem bei CANON. CANON schließt das PDF nach jeder Seite und öffnet es wieder für jede weitere Seite.

@e91:
Suche hier mal im Thread nach CANON - du bist nicht der Erste.

In den FAQs habe ich einen Workarround beschrieben
 
  • Like
Reaktionen: e91 und wegomyway

e91

Benutzer
Mitglied seit
26. Jul 2020
Beiträge
15
Punkte für Reaktionen
7
Punkte
53
Workarround klinkt gut, setze das gleich mal um. Vielen dank für die schnelle Hilfe (y)
 
Zuletzt bearbeitet von einem Moderator:

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.210
Punkte für Reaktionen
523
Punkte
184
Hallöle, aktuell warte ich ja auf den Scanner (ich habe das 2,4er WLan doch aktiviert und eine andere SSID gegeben sodass mein 5er WLan mit all seinen Geräten "alleine" bleibt).
Daher probiere ich hier und dort mit den tags in synOCR erstmal klar zukommen.
Ich will tags folgend "reinfeuern" um das "Gefundene" mittels OCR dann in einen bestimmten Ordner ablegen zu lassen (da würden noch einige dazu kommen. Will aber die Ordnerstruktur nicht unnötig mit Unterordner vollmachen):

VersicherungA;VersicherungB;Auto;Roller;Hänger="verzeichnis wo das dann rein soll"

Korrekt das die einzelnen tags durch Semikolon getrennt werden?
In synOCR wird das so erklärt. Ich will eben zuerst mal damit klarkommen, testen bevor ich mit YAML (funktionierend zu liegen) weitermache/probiere auch wenn ich da vielleicht doppelt arbeite. Ein wenig Zeit hab ich noch.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Korrekt das die einzelnen tags durch Semikolon getrennt werden? In synOCR wird das so erklärt.
Ja.

Ich will eben zuerst mal damit klarkommen, testen bevor ich mit YAML (funktionierend zu liegen) weitermache/probiere auch wenn ich da vielleicht doppelt arbeite.
Wenn du die Tags der GUI in eine YAML-Datei konvertierst, werden gleich die entsprechenden YAML-Regeln erstellt. Die kann man dann noch weiter individualisieren. Doppelte Arbeit sollte das also nicht bedeuten.
Alternativ hat ja unser lieber @stuppix auch mit viel Aufwand den YAML-Editor auf Excel-Basis erstellt.

Mit vorhandenen PDFs kannst du ja auch jetzt schon die Regeln validieren.
 
  • Like
Reaktionen: wegomyway

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.210
Punkte für Reaktionen
523
Punkte
184
Die Excel hab ich ja sozusagen "laufend" liegend. Dazu dann im YT-Kanal gucken gehen und anhand dessen probieren, studieren und umsetzen.
PDFs ... genau, damit wird geprüft und verfeinert. Wenn das so geht wie "ich es will" geht es zu YAML
 

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.210
Punkte für Reaktionen
523
Punkte
184
das Konvertieren der tags in eine YAML-Datei hat funktioniert (da hat @Struppix aber was "gezaubert" und @geimist ebenso). Den einen oder anderen "DAU" produzierten Fehler beim Erstellen der tags dann korrigiert (nach Ende des Zielverzeichnisses sollte doch ein Semikolon sein. im YAML-Editor zeigte da dann der targetfolder einigen "Müll" an, den ich selber produziert habe :ROFLMAO:).
Aber sowas zeigt doch das man genau schauen und schreiben muss. Dadurch auch eigene Fehler findet ☺️.
Aktuell sind die Tags separat als Word-Datei gespeichert. Die werden zusammengefasst und hier und dort mit tags erweitert und anschließend per CopyAndPaste rein in synOCR und wieder konvertieren.
Es geht voran.
Good :sleep:
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Aktuell sind die Tags separat als Word-Datei gespeichert.
Empfehlung:
Arbeite bei soetwas lieber mit einem reinen Texteditor (geht auch der im DSM - der im DSM enthaltene verhindert zu dem die Problematik mit den Windowszeilenumbrüchen).
Unsichtbare Formatierungen können schnell für unnötigen Frust sorgen.
 

Behemoth09

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Hi allerseits,

erst einmal vielen Dank für die hilfreichen Kommentare und Anleitung und euren enormen Aufwand in der "Betreuung" aller Hilfesuchenden.
Ich habe mir heute den Brother ADS-1700W zugelegt und soweit alles auf meiner DS923+ zum laufen bekommen (und das trotz magerer tiefgreifender Administrationskenntnisse).
Ich habe mittlerweile auch diverse Dokumente gescannt, die erfolgreich datiert und in die entsprechend angelegten Ordner verschoben wurden.
Einzig bei meinen Bezügemitteilungen (Gehaltsabrechnungen) komme ich nicht so recht zum Ziel. Das Problem liegt darin, dass innerhalb dieses Dokumentes verschiedene Datumsangaben enthalten sind, wovon das "erst beste" erkannt und dann für meine Zielsyntax §yocr2§mocr§docr_§tag verwendet wird.

Die maßgebliche Datumsangabe im Dokument ist allerdings bspw. "für Januar 2024" woraus dann die Syntax 240101_Bezügemitteilung generiert werden soll.

Hat jemand eine Lösungsidee?

Grüße
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
Guten Morgen,
natürlich ist das möglich. Hierzu müsste man zuerst wissen, ob Du noch mit den Tags im GUI arbeitest, oder bereits eine YAML-DATEI nutzt.

Gruß Karsten
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Frage zu RegEx, Datumserkennung/Verarbeitung

Ich habe folgenden erkannten Text:
vom 17.01.2023 bis 31.12.2023 Datum: 23.02.2024
Code:
(?i)(Datum\:)(?:.+)\K(([[:digit:]]{2}).([[:digit:]]{2}).)((19|20)\d{2})

O. RegEx findet das Datum korrekt: 23.02.2024. Ich möchte jedoch dieses Datum umkehren, um es in tagName_RegEx zu verwenden. Es sollte letztendlich auf 2024-02-23 lauten.
Ist sowas möglich?

Ich kann leider die Standard-Datumserkennung von synOCR nicht nutzen, denn diese würde mir das erste gefundene Datum: 17.01.2023 verwenden.
 
Zuletzt bearbeitet:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Probier mal bitte folgendes mit sed in der Kommandozeile aus.

Bash:
echo "17.01.2023" | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})/\3-\2-\1/g'
 
Zuletzt bearbeitet:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Achso du möchtest nur das Datum am Ende entsprechend in ein anderes Format bringen.

Das kannst du hiermit erreichen. Setzt voraus, dass das Datum, welches du ändern möchtest auch wie in deinem Beispiel am Ende der Zeile zu finden ist.

Bash:
echo "vom 17.01.2023 bis 31.12.2023 Datum: 23.02.2024" | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g'

Oder man bindet das Wort Datum inklusive Doppelpunkt und Leerzeichen als Schlüsselwort in die Suche mit ein und muss dieses auch bei der Ersetzung wieder verwenden.

Bash:
echo "vom 17.01.2023 bis 31.12.2023 Datum: 23.02.2024" | sed -E 's/Datum: ([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})/Datum: \3-\2-\1/g'
 
Zuletzt bearbeitet:

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
O. RegEx findet das Datum korrekt: 23.02.2024. Ich möchte jedoch dieses Datum umkehren, um es in tagName_RegEx zu verwenden. Es sollte letztendlich auf 2024-02-23 lauten.
Ist sowas möglich?
Hallo , dazu gibt es mehrere Möglichkeiten. Hier nur 2 Beispiele :
1) Du verwendest 3 Regeln in der YAML, etwa so (nicht verwundern über Schreibweise, aber Lookbehind uä. mag keine Quantifier)
Code:
(?i)(?<=Datum\S\s)(\d\d)(?=\S\d\d\S(19|20)\d\d)
(?i)(?<=Datum\S\s\d\d\S)(\d\d)(?=\S(19|20)\d\d)
(?i)(?<=Datum\S\s\d\d\S\d\d\S)((\19|20)\d\d)
und baust die Reihenfolge nach Belieben neu.
2) Du nutzt die Umbenennung im Postscript von synOCR ähnlich wie von @luddi beschrieben.

Gruß
Karsten
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Danke für die Beispiele
Achso du möchtest nur das Datum am Ende entsprechend in ein anderes Format bringen.

Das kannst du hiermit erreichen. Setzt voraus, dass das Datum, welches du ändern möchtest auch wie in deinem Beispiel am Ende der Zeile zu finden ist.

Bash:
echo "vom 17.01.2023 bis 31.12.2023 Datum: 23.02.2024" | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g'
Danke für deine Beispiele und Hilfe!
In der Shell funktioniert dies perfekt, nur wenn ich dieses RegEx
Code:
s/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g
oder
Code:
([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1
in meiner YAML verwende, so werden beide nicht "ausgeführt". Zum Schluss steht nun tagName_RegEx im Dateinamen, statt 2024-02-23.
 
Zuletzt bearbeitet:

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
Dank für die Beispiel

Danke für deine Beispiele und Hilfe!
In der Shell funktioniert dies perfekt, nur wenn ich dieses RegEx
Hallo,

dieser Befehl ist nicht als RegEx gedacht, sondern kommt unter Postsript in der entsprechenden Zeile der Regel / YAML Datei.

Gruß
Karsten
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
  • Like
Reaktionen: Yippie

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
In der GUI gibt es da auch einen netten Schalter:
Anhang anzeigen 92532
Ja, den Schalter kenne ich, ist nur leider global und nicht regelabhängig, somit kann ich diesen nicht verwenden ohne möglicherweise das Verhalten in den anderen Regeln zu verändern.

Ich nutze diesen Schalter tatsächlich, aber bewusst mit "1. Treffer in Dokument".
 
  • Like
Reaktionen: geimist

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Hallo,

dieser Befehl ist nicht als RegEx gedacht, sondern kommt unter Postsript in der entsprechenden Zeile der Regel / YAML Datei.

Gruß
Karsten
Ah, so habe ich das noch gar nicht in Erwägung gezogen, aber ja, klingt einleuchtend und wäre auch ne Möglichkeit.

Dazu müsste ich dem Postscript mitteilen, welche aktuelle Datei ich gerade in Arbeit habe, ich habe mich anhand dieses Videos orientiert: https://www.youtube.com/watch?v=CkfaEBZBNx4 und folgenden postscript-Befehl verwendet:
Bash:
mv "${output}" "${output%/*}/$(echo '${output##*/}' | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g')"
leider ohne Erfolg!

run user defined post scripts:
➜ postscript_STADTWERKE_21_770540699
mv: cannot stat '/volume1/Scanner/Ausgabe//Stadtwerke/23.02.2024 Gutschrift Einspeisung PV 2023 (1).pdf': No such file or directory
ERROR at line 2537: mv "${output}" "${output%/*}/$(echo '${output##*/}' | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g')"
ERROR at line 2537: eval "${cmd}"
Der finale Dateiname lautet zwar auf "23.02.2024 Gutschrift Einspeisung PV 2023.pdf" jedoch umbenannt wird, aufgrund des Fehlers oben, nichts.

Ich sollte vielleicht erwähnen, dass ich zwei Regeln für eine PDF-Datei habe, die beide ausgeführt werden. Die erste benennt die Datei zunächst nach "Gutschrift Einspeisung PV 2024" um, die zweite soll das Datum an die erste Stelle des Dateinamens setzen und die Reihenfolge des Datums mit dem postscript oben abändern.

YAML:
## Erkennung des Datums des Schreibens mit anschließender Umkehrung des Datumn von 23.03.2024 nach 2024-03-23
STADTWERKE_20:
    tagname: §tagname_RegEx
    tagname_RegEx: (?i)(Datum\:)(?:.+)\K(([[:digit:]]{2}).([[:digit:]]{2}).)((19|20)\d{2})
    targetfolder: "/Stadtwerke/"
    condition: all
    subrules:
    - searchstring: (?i)(Gutschrift Einspeisung Photovoltaik)
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: true 
    - searchstring: Stadtwerke
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: true       

## Erkennung des Abrechnungsjahres, bspw 2023 für den Dateinamen
STADTWERKE_21:
    tagname: " Gutschrift Einspeisung PV §tagname_RegEx"
    tagname_RegEx: (?i)(vom)\s*([[:digit:]]{2}.[[:digit:]]{2}.)\K(19|20)\d{2}
    targetfolder: "/Stadtwerke/"
    condition: all
    postscript: mv "${output}" "${output%/*}/$(echo '${output##*/}' | sed -E 's/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/\3-\2-\1/g')"
    subrules:
    - searchstring: (?i)(Gutschrift Einspeisung Photovoltaik)
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: true
    - searchstring: Stadtwerke
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: true

Aber egal, ob ich das postscript-Kommando in die erste oder die zweite Regel lege, es kommt immer der o.g. Fehler.
 
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