synOCR synOCR - GUI für OCRmyPDF

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Hola.
Ich steh gerade auf dem Schlauch. Ich hab denselben Regex für tagname_RegEx und für die Subrule. Subrule wird gematched, den tag-Regex findet er aber nicht.
Ideen?

Code:
[runtime up to now:    00:00:40]

                search by tag rule: "Kontoauszug" ➜ 
                  ➜ condition:        all
                  ➜ tag:              §tagname_RegEx
                  ➜ destination:     
                  ➜ RegEx for tag:    \b\S*kontoauszug\S*\b
                  ➜ multilineregex:   [value for multilineregex is empty - "false" is used]
                      [Subrule]:
                          [value for multilineregex is empty - "false" is used]
                      >>> search for:      \b\S*kontoauszug\S*\b
                          isRegEx:         true
                          searchtyp:       contains
                          source:          content
                          casesensitive:   false
                          multilineregex:  false
                          grep parameter:  i
                          ➜ Subrule matched
                          [value for multilineregex is empty - "false" is used]
                      >>> search for:      Informationsbogen für den Einleger
                          isRegEx:         false
                          searchtyp:       does not contain
                          source:          content
                          casesensitive:   false
                          multilineregex:  false
                          grep parameter:  i
                          ➜ Subrule matched
                          >>> Rule is satisfied

                              ➜ search RegEx for tag ➜ RegEx not found (fallback to §tagname_RegEx)
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Wieso hilft mir eine Gruppierung an der Stelle weiter?
So wie es aussieht liegt es an Groß-/Kleinschreibung. In den subrules hab ich casesensitive auf "false", was grep-Parameter "i" aktiviert. Dieser ist beim tagname-Regex nicht aktiv.
Ich brauche wohl noch ein (?i) bei den tagname_Regex-Suchen.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
880
Punkte für Reaktionen
179
Punkte
63
Auch möglich. Ist aber Standard mäßig gesetzt. Schaden kann es nicht.
Aber wieso probierst Du nicht erstmal was ich schrieb ;)
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Aber wieso probierst Du nicht erstmal was ich schrieb ;)
Hab ich, hat nicht funktioniert. Gerne aber noch die Erklärung von dir, wieso es funktionieren soll. Ich setze Regex beruflich sehr stark/viel ein. Wieso Klammern (=Gruppen) bei case-sensitivity helfen sollen kapier ich aber nicht.
Ist aber Standard mäßig gesetzt.
Scheinbar nicht, sonst würde es ja funktionieren 🤷‍♂️

Was mir in der aktuellen Beta auch auffällt: Min/Max Year für Date scheinen nicht korrekt zu greifen.
2021 ist als Min-Year gesetzt. Datei wird aber mit 2018 als Jahreszahl angelegt.
1679761288045.png
1679761301205.png
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Gerade mal in den Code geschaut. Kann es sein das minYear/maxYear "nur" für die Suche mittels Python implementiert ist?
Zwar verwende ich diese, in dem konkreten Dokument bricht sie aber mit untenstehendem ab.

1679761649747.png

Wobei es so aussieht als findet das Python-Skript kein Datum, da es nur ein Datum im Dokument gibt und dieses außerhalb der Range ist. Da ist es dann natürlich kontraproduktiv die Regex-Suche hinterherzujagen, die dann genau dieses Datum findet und nutzt.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
880
Punkte für Reaktionen
179
Punkte
63
Das mit casesensitive in der Hauptregel war eigentlich gefixt. Ich prüfe das gleich mal. Hatte das Problem früher oft. Deswegen setze ich die inlineoption (?i) meist automatisch, damit dieses Problem ausgeschlossen wird.
 
  • Like
Reaktionen: DeeKay1

Schrotti

Benutzer
Mitglied seit
10. Okt 2020
Beiträge
22
Punkte für Reaktionen
3
Punkte
3
Sagt Mal Leute, kann ich eigentlich auch einen USB Stick als zu überwachendes Laufwerk benennen?
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
880
Punkte für Reaktionen
179
Punkte
63
Also ist wohl leider so. Ich glaube mich wieder zu erinnern, dass casesensitiv in der Hauptregel derzeit gar nicht als Option zur Verfügung steht. @geimist Stephan korrigiere mich bitte.
Deshalb hilft nur die InlineOption (?i), wie im wiki beschrieben. Im Wiki ist diese Regel bespielhaft 700 genannt.

Gruß Karsten
 
  • Like
Reaktionen: DeeKay1

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.508
Punkte für Reaktionen
1.344
Punkte
234
Sagt Mal Leute, kann ich eigentlich auch einen USB Stick als zu überwachendes Laufwerk benennen?
Probieren. Ich gehe aber davon aus, dass du synOCR / bzw. die Überwachung durch die Inotfy-Tools neustarten musst, wenn du den Stick zwischenzeitlich mal trennst. Über den Aufgabenplaner sollte es lediglich eine Fehlermeldung geben, weil der Quellordner nicht passt.
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Und wie sieht’s mit dem Datumsthema aus?
Ich würde mir das ansehen und ggf. einen PR schicken. Allerdings müsste mir vorher jemand das Zusammenspiel aus Python- und Regexsuche erklären. Ist das Regex ein reiner Fallback falls Pyhton fehlschlägt oder prüft das Regex auch auf zusätzliche Fälle, die mit der Python-Lib nicht möglich sind? Also ist es ein entweder/oder oder müssen die Datumswerte aus beiden in eine gemeinsame Ergebnismenge?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.508
Punkte für Reaktionen
1.344
Punkte
234
Sinn macht hier nur entweder / oder – einzustellen über die GUI.
Details bitte direkt mit @Gthorsten abstimmen, damit hier nicht unnötig Mühe verpulvert wird.
 

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Nun ja wenn mein Skript nichts findet, so wie oben, weil es aus dem range ist, was soll ich dann machen.
Schick mit mal bitte eine beispiel dann sehe ich mir das an, habe gerade eh noch eine Änderung in arbeit
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Komm heute nicht mehr an den Rechner. Aber reproduzieren sollte es sich lassen indem du min/Max so wählst, dass line 1051 in synocr.sh kein Ergebnis liefert. Erwarten würde ich, dass dann der in den Settings definierte Fallback greift. Also zB, dass das Änderungsdatum der Datei verwendet wird. Die Definition von min/max year sollte ja global gelten, auch dann wenn der Fallback auf die Regex-Search ausgeführt wird.
 

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Also das min max year kam mit dem python Modul dazu. Das hat in dem normalen bash Script nie eine Funktionen gehabt, macht es glaube ich auch nur unnötig kompliziert
 

DeeKay1

Benutzer
Mitglied seit
20. Jun 2020
Beiträge
100
Punkte für Reaktionen
23
Punkte
24
Das hatte ich befürchtet. Seh nur ich das als inkonsistent an?
Man setzt in den Settings bewusst ein min-year -> das führt dazu das Funktion 1 kein Ergebnis liefert -> die Hauptlogik sagt „kein Ergebnis - alles klar dann auf in (eigentlich nur als fallback gedachte) Funktion 2“ -> aber Funktion 2 ignoriert die global definierten min/Max years dann komplett. Für was setze ich denn dann vorher ganz bewusst ein min year? Das mache ich ja nur weil ich definitiv Datumsangaben vor diesem Minimum nicht haben möchte.
Wie gesagt, ich bau das gerne um und sende einen PR. Den Aufwand mache ich mir aber nicht sofern du von vornherein schon sagst, dass das Quatsch ist ;)
 

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Nein das wollte ich damit nicht sagen.
Wollte nur mal die historie beschreiben.
Die Python Funktion gab es früher nicht.
Da gingen nur numerische Daten.
Dann habe ich das Python Modul gebaut, und das andere blieb glaube ich als fallback.
Dann sollte man vielleicht überlegen ob man das fallback gerausnimmt, dann ist es ja eindeutiger.

Weil im Prinzip war ja alles richtig, du hast ein min oder max gesetzt und die Python Suche hat nichts gefunden.
.
Aber die Gründe warum die bash Suche noch drin ist muss sich vlt Stephan mal zu äußern.

Fände auch nur ein einzige Suche viel besser
 


 

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