synOCR synOCR - Aufbau einer YAML Datei - Verwendung Regulärer Ausdrücke

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.347
Punkte für Reaktionen
571
Punkte
184
Nachdem im synOCR-Thread bezüglich der "Leerzeichen" in der GUI von synOCR ich den "Erfolg" erzielte den ich benötigte, geht es weiter:
Mein Test-Doku wurde dort abgelegt wo es rein sollte.
Aber :) etwas komisch, vielleicht aber normal, wurde die Begriffe "Auto" und "Vxxxxxxxxl" "gefunden und sind im Namen des abgelegten Dokus mit dabei und dazu der Begriff um den es geht.
Kann man in der YAML-Datei Suchbegriffe aussperren/ausschließen/umgehen etc. lassen sodass diese NICHT im Namen des Dokus erscheinen ?
Ich habe natürlich die beiden Begriffe für andere Zielordner als Regel erstellt.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo wegomyway,

machen kann man so ziemlich alles. Nur kann ich Dir gerade gedanklich nicht mehr folgen.
Was möchtest Du genau ?

Karsten

 

guidovg

Benutzer
Mitglied seit
26. Nov 2011
Beiträge
148
Punkte für Reaktionen
51
Punkte
34
Hallo,

natürlich geht dies. Hierzu einfach mal in unseren Youtube Kanal schauen.

Gruß Karsten
Hallo,

also erstmal vielen Dank. Das hat mit der Textzeile

YAML:
    postscript: mv "${output}" "${output%/*}/$(echo "${output##*/}" | sed 's/ /_/g')"

wunderbar funktioniert. Gäbe es auch die Möglichkeit aus Leerzeichen (1 oder mehr) jeweils nur ein Unterstrich zu machen? Wenn nicht, werde ich lieber alle Leerzeichen komplett entfernen.

YAML:
    postscript: mv "${output}" "${output%/*}/$(echo "${output##*/}" | sed 's/ //g')"

Da die 'mv' Variante ja doch ein großes Risiko darstellt, wäre es toll, wenn dies vielleicht in Zukunft als Option in SynOCR per GUI oder YAML-Datei möglich wäre.

Kann man eig. Python-Elemente im YAML-Skript nutzen? Das war bei Organize ganz schön. Z.B.:

YAML:
      - filecontent: (?P<wwkcode>\d{2}\s*\d{3}\s*\d{3})
      - python: |
          resulttext = filecontent.wwkcode
          return {"texting": resulttext.replace(" ", "")}


Na ja, auf jeden Fall Dank der tollen Arbeit von Struppix und Geimist kann ich mich jetzt schon von Organize als Docker-Modul trennen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Struppix

guidovg

Benutzer
Mitglied seit
26. Nov 2011
Beiträge
148
Punkte für Reaktionen
51
Punkte
34
Ich habe nun den für mich korrekten SED Befehl gefunden.

YAML:
postscript: mv "${output}" "${output%/*}/$(echo "${output##*/}" | sed 's/ \{1,\}/_/g')"

Nun werden ein oder mehr Leerzeichen durch einen Unterstrich ersetzt.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo,

willkommen zurück. Ich musste jetzt echt mal aufs Datum schauen, wie lange das schon her ist ....

Gäbe es auch die Möglichkeit aus Leerzeichen (1 oder mehr) jeweils nur ein Unterstrich zu machen?
Teste doch bitte erst einmal, was der Schalter im GUI "Leerzeichen bereinigte Suche" mit "Leerzeichen bereinigen" bringt. Das sollte eigentlich genau das bewirken.

Ansonsten der Befehl
Code:
postscript: mv "${output}" "${output%/*}/$(echo "${output##*/}" | sed 's/ \+/_/g')"

Das mit python habe ich noch nie genutzt oder getestet.

Dankeschön ... dann ändere mal Deine Signatur. :giggle:
Karsten

Edit: Deine Schreibweise geht natürlich auch (y)
 
  • Like
Reaktionen: guidovg

guidovg

Benutzer
Mitglied seit
26. Nov 2011
Beiträge
148
Punkte für Reaktionen
51
Punkte
34
Teste doch bitte erst einmal, was der Schalter im GUI "Leerzeichen bereinigte Suche" mit "Leerzeichen bereinigen" bringt. Das sollte eigentlich genau das bewirken.

Greift das auch auf den Dateinamen? Dann habe ich den Hilfetext aber falsch interpretiert. Ich bin davon ausgegangen, dass das nur den Dateiinhalt betrifft.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Gute Frage muss ich gerade passen, bin gerade brav arbeiten und kann mich nicht erinnern.
Wenn man aber etwas per RegEx sucht, muss ja die Suche mit dem Ergebnis matchen, was man dann ja per Ausgabe im Dateinamen verwenden kann. :unsure:
 

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.347
Punkte für Reaktionen
571
Punkte
184
Hallo wegomyway,

machen kann man so ziemlich alles. Nur kann ich Dir gerade gedanklich nicht mehr folgen.
Was möchtest Du genau ?

Karsten

Hab nun erstmal rules ordentlich erstellt (aktuell im oberen 2stelligen Bereich).
Um das, mein, Thema aufzugreifen :
Eine rule mit "xxxxxxxxxx" besteht. Den Begriff gibt es leider auch auf anderen Dokumenten.
Kann eine/mehrere subrule dafür sorgen das wenn "xxxxxxxxxx" gefunden wird dann zusätzlich "yyyy" und "zzzz" suchen. Werden die drei in Kombi im Doku gefunden, soll das Doku im angelegten Zielverzeichnis abgelegt werden.
Mein Ziel wäre das ich ein Doku nach einem Begriff suchen lassen und wenn folgende weitere Begriffe ebenso gefunden werden, dann halt ablegen.
Also eine rule in Verbindung mit subrules um besser zu sortieren.

Ich vergleich mal mit der "wenn-Funktion" in Verbindung mit "oder" und/oder "oder" in Excel. Mit der kann man gnadenlos verschachtelt, ausschließen oder zulassen usw...

Als Rand-Info : meine am Book bearbeitete/gesicherte YAML-Datei wird ebenso wie die txt-Datei gleichzeitig über Synology Drive hochgeladen und die beiden "älteren" werden überschrieben. Dazu mein tägliches Backup auf externe SSD und da sollte ich nicht so schlecht in sachen Sicherung dastehen.
 
Zuletzt bearbeitet:

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo Wegomyway,

genauso wie Du es ja selber schreibst ist es.
Mit Hilfe der subrules wird quasi eine "und / oder" Prüfung durchgeführt, wobei die Negation auch funktioniert.

Somit hast Du schon alles, was es braucht...

Karsten
 
  • Like
Reaktionen: wegomyway

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.347
Punkte für Reaktionen
571
Punkte
184
sodele, ich werd mich da durchackern, koste was es wolle ;) auch ne Kiste 🍺oder zwei Kisten 🍻
Mal schauen:
Habe in Zeile 79 eine Rule erstellt. Diese nach speichern/Hochladen usw. mit entsprechendem Doku erfolgreich getestet.
Darunter dann nacheinander insgesamt 4 Subrules mit Begriffen die in dem Doku vorkommen.
Das die Subrules zum Rule "gehören" konnte ich sehen wo ich die Rule in Zeile 79 deaktiviert habe und angezeigt wurde das die Subs bis Zeile 83 ebenfalls deaktiviert sind. Aktivieren brachte eben die gleiche Meldung andersrum. Wieder gespeichert/hochgeladen.
Nun entsprechendes Doku eingescannt. Ergebnis : Der "Rule-Begriff" wird aus Zeile 79 wird im abgelegten Zielordner im Doku-Dateinamen mit vorangestelltem # angezeigt, die Subrules-Begriffe nicht. Normal, weil der Rule-Begriff gefunden wurde ? Mein 2tes fast identische Doku, Unterschied nur im Datum, mit gleichem Ergebnis.
Mach ich was verkehrt ?
Weitere Frage: Hat synOCR bei Suchbegriffen mit äÄ, öÖ und üÜ Probleme ?
Ich habe Münzhandelsgesellschaft als Subrule eingetragen und "Vollmacht" landete mit im Dateinamen. Habe einen anderen Begriff gewählt und schon war "Vollmacht" nicht mehr im Dateinamen.
 

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.347
Punkte für Reaktionen
571
Punkte
184
Nochmals den YT-Kanal durchforstet. Was gefunden was mir weiterhelfen wird. Probiere ich heute Abend aus.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo wegomyway,
Mach ich was verkehrt ?
ich denke nicht, und ich dachte anhand Deines letzten Post, es wäre klar.
Dann muss ich etwas weiter ausholen.

Mein Ziel wäre das ich ein Doku nach einem Begriff suchen lassen und wenn folgende weitere Begriffe ebenso gefunden werden, dann halt ablegen.
Also eine rule in Verbindung mit subrules um besser zu sortieren.
Also, die Umbenennung des durchsuchten Dokumentes erfolgt NUR in der Hauptregel mittels 'tagname:'.

Die zusätzlichen subrules (wichtig, die erste subrule gehört zur Hauptregel) dienen nur zur, nennen wir es mal "der Verfeinerung, dem Eindeutig Machen" der Suche und sind optional. Dabei spielt der Parameter 'condition:' eine entscheidende Rolle.
Ein Beispiel:
Code:
rule_1007:
    tagname: Bundesagentur_f_Arbeit_Familienkasse
    condition: all
    subrules:
    - searchstring: Familienkasse
Dies ist mindestens anzugeben, damit die Regel vollständig beschrieben ist


Ein weiteres Beispiel:
Code:
rule_1008:
    tagname: Anwalt
    condition: any
    subrules:
    - searchstring: Anwalt
      searchtyp: contains
    - searchstring: Rechtsanwalt
      searchtyp: contains
    - searchstring: Anwältin
      searchtyp: contains
    - searchstring: Rechtsanwältin
      searchtyp: contains
Hier wird die Hauptregel erst angewendet, wenn mindestens eine subregel erfüllt wird, da 'condition: any'. Wird keine subregel erfüllt, wird die Hauptregel quasi "übersprungen".


Es gibt nun 2 Möglichkeiten, wenn Du "xxxx" "yyyy" "zzzz" im Dateinamen haben möchtest.

1) Wenn die Suchbegriffe "xxxx" "yyyy" "zzzz" immer die gleichen sind dann:
Code:
rule_1008:
    tagname: xxxx yyyy zzzz
    condition: all
    subrules:
    - searchstring: xxxx
      searchtyp: contains
    - searchstring: yyyy
      searchtyp: contains
    - searchstring: zzzz
      searchtyp: contains

2) Wenn die Suchbegriffe nicht immer gleich sind und zB über eine RegEx gesucht werden, dann musst Du mehrere Regeln verwenden. Die Umbenennung erfolgt dann in der Reihenfolge der der Regeln.
Code:
rule_1004:
    tagname: §tagname_RegEx
    tagname_RegEx: (?i)(xxxx hier zb Beispiel der variable Suchtext)
    condition: all
    subrules:
    - searchstring: (?i)(xxxx hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(yyyy hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(zzzz hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true

rule_1005:
    tagname: §tagname_RegEx
    tagname_RegEx: (?i)(yyyy hier zb Beispiel der variable Suchtext)
    condition: all
    subrules:
    - searchstring: (?i)(yyyy hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(xxxx hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(zzzz hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true

rule_1006:
    tagname: §tagname_RegEx
    tagname_RegEx: (?i)(zzzz hier zb Beispiel der variable Suchtext)
    condition: all
    subrules:
    - searchstring: (?i)(zzzz hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(xxxx hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true
    - searchstring: (?i)(yyyy hier zb Beispiel der variable Suchtext)
      searchtyp: contains
      isRegEx: true

Zugegeben, dass sind abstrakte Beispiele. Wie ich schon mal sagte, lade mir ein Beispiel hoch, dann bin ich behilflich.


Gruß Karsten
 

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.347
Punkte für Reaktionen
571
Punkte
184
... Es gibt nun 2 Möglichkeiten, wenn Du "xxxx" "yyyy" "zzzz" im Dateinamen haben möchtest.

1) Wenn die Suchbegriffe "xxxx" "yyyy" "zzzz" immer die gleichen sind dann:
Code:
rule_1008:
    tagname: xxxx yyyy zzzz
    condition: all
    subrules:
    - searchstring: xxxx
      searchtyp: contains
    - searchstring: yyyy
      searchtyp: contains
    - searchstring: zzzz
      searchtyp: contains
@Struppix, Hallo Karsten, für deine "etwas ausgeholte" Antwort und ebenso dein Angebot der Hilfestellung ...
DANKE dafür (y) ich weiß es zu schätzen und es NICHT selbstverständlich.

Ich hatte ja auch nochmals den YT-Kanal besucht (man muss ab und an halt 2fach oder 3fach sich die/das Video ansehen. Der Teufel steckt ab und an im Detail) und dort habe ich sozusagen den "aha-Effekt" beim anschauen erhalten. Dazu, siehe Zitat, deine Möglichkeit die dann als weiteres meinen "Denkfehler" aufgezeigt hat (Stichwort "condition"). Aktuell eben umgesetzt und übliches Prozedere, Speichern/hochladen/testen, nun erfolgreich.
Nun geht es weiter die Rules anpassen und u. U. mit Subrules verfeinern.
Ab und an braucht man den Griff ins Genick und dann die Fresse rein in die Suppe ;)
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo,

ich habe eine neue Version der YAML-Editors fertig gestellt. Den Download Link findet Ihr in meiner Signatur. Beschreibung der wichtigsten Änderungen hier.

Gruß Karsten
 
  • Like
Reaktionen: geimist und wegomyway

OliverHH

Benutzer
Mitglied seit
12. Sep 2024
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich habe mir alle YouTube Videos zum YAML-Editor angesehen und würde diesen gerne nutzen.

Allerdings bekomme ich unter MacOs folgende Fehlermeldung:

Bildschirmfoto 2024-09-12 um 17.28.52.png

Ist der YAML-Editor nur unter Windows oder grundsätzlich auch unter MacOS lauffähig?

Falls nicht, ist geplant eine MacOS kompatible Version zu veröffentlichen?

Danke für eure Antwort,
Oliver
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo Oliver,

bis heute gibt es nur eine Windows Version.

Geplant hatte ich diese, aber mangels Unterstützung in der Community (ich selbst habe keinen und brauche immer jemand zum Testen..), wurde diese nicht weiterverfolgt.

Den Fehler kenn ich aber schon. Hierbei geht es um die Importfunktion mittels stream und dem automatisch suchenden Speicherpfad.

Ich hatte seinerzeit eine zweigleisige Lösung, wo abgefragt wird, ob Windows oder Mac genutzt wird.

Gruß
Karsten
 
Zuletzt bearbeitet:

OliverHH

Benutzer
Mitglied seit
12. Sep 2024
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo Karsten,

danke für die rasche Antwort. Okay, ich verstehe.

Da ich eine absoluter Newbie bezüglich SynOCR und YAML bin, könnte ich dir mit dem Testen wahrscheinlich auch nicht wirklich weiter helfen.

Gruß,
Oliver
 
Zuletzt bearbeitet von einem Moderator:

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
884
Punkte für Reaktionen
187
Punkte
63
Hallo Oliver,

dazu bedarf es keiner wirklichen Kenntnisse. Es beschränkt sich lediglich auf einer Beschreibung des Fehlers und dem anfertigen einiger Screenshots. Es könnte sich allerdings ein wenig hinziehen, bis wir alle notwendigen Änderungen gefunden haben.

Gruß Karsten
 


 

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