synOCR synOCR - GUI für OCRmyPDF

Leider ohne Erfolg. Der Dateiname bleibt Rechnung 2021-556282.pdf ...
Ich muss das mal bei mir nachstellen. Laut Log wird die Regel schonmal erfüllt …

ich bekomme folgenden Fehler auf einer DS3018xs mit DSM 6.2.4-25556 Update 2

  • Ist unter Systemsteuerung ➜ Sicherheit dieser Haken gesetzt: Schutz gegen Cross-Site-Request-Forgery-Attacken verbessern
    (wird erst in einer zukünftigen Version nicht mehr relevant sein)
  • Greifst du über den Reverseproxy auf den DSM zu?
  • Browsercache leeren / Inkognitomodus / anderen Browser testen
 
Im Log steht aber auch

"
➜ search RegEx for tag ➜ RegEx not found (fallback to Ihr Beleg)

rename tag is: "Ihr Beleg""
 
Zuletzt bearbeitet von einem Moderator:
Ja, die Bedingung muss ja 2x erfüllt sein. Einmal bei der Regel generell (das funktioniert) und dann noch einmal für den Tag-Namen. Das funktioniert noch nicht und muss ich mir nochmal ansehen.

PS: ich hatte dir außerdem eine falsche Umbenennungssyntax mit auf dem Weg gegeben (Paragrafenzeichen - kein Dollarzeichen). Sie sollte so lauten: §tag_§tit
 
$ VS § hab ich heute morgen schon korrigiert :)
 
Zuletzt bearbeitet von einem Moderator:
Bitte teste mal die Version von meinem Server (synOCR_DSM7_master_latest_(2021-11-23_14-18)_7b5d57e.spk)
 
  • Love
Reaktionen: tomjons
Respekt der Herr. Jetzt klappt es einwandfrei !!!!
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: geimist
Hallo geimist,

der Haken war gesetzt, aber das rausnehmen hat keine Besserung gebracht.
Anderen Browser hab ich auch versucht, immer noch der gleiche Fehler.

Ich greife über eine VPN Verbindung auf DSM zu. Werde es heute Nachmittag aber vor Ort nochmal testen.

  • Ist unter Systemsteuerung ➜ Sicherheit dieser Haken gesetzt: Schutz gegen Cross-Site-Request-Forgery-Attacken verbessern
    (wird erst in einer zukünftigen Version nicht mehr relevant sein)
  • Greifst du über den Reverseproxy auf den DSM zu?
  • Browsercache leeren / Inkognitomodus / anderen Browser testen
 
Regex anpassen reicht: {7,9} statt {8}
Übrigens: variable Zeichenbereiche (z.B. {7,9}) funktionieren in Verbindung mit lookbehind auch nicht. Also bleibt dir (@tomjons) nichts anderes übrig und du musst ggf. weitere Regeln anzulegen.
 
OK. Und so ist es jetzt auch. Bei einigen sind es 9 Leerzeichen und da wird dann nichts gefunden.
Sprich wie fange ich die 9 Leerzeichen ab.

Code:
# synOCR_YAMLRULEFILE
tagBestellnummer:
    tagname: "Ihr Beleg"
    targetfolder:
    tagname_RegEx: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
    condition: all
    subrules:
    - searchstring: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
 
Zuletzt bearbeitet von einem Moderator:
Hier jetzt mit 2 weiteren Regeln für 9 und für 7 Leerzeichen:

YAML:
tagBestellnummer_01:
    tagname: "Ihr Beleg"
    targetfolder:
    tagname_RegEx: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
    condition: all
    subrules:
    - searchstring: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
tagBestellnummer_02:
    tagname: "Ihr Beleg"
    targetfolder:
    tagname_RegEx: (?<=(^Ihr Beleg[:|;][\s]{9}){1})[0-9]+
    condition: all
    subrules:
    - searchstring: (?<=(^Ihr Beleg[:|;][\s]{9}){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
tagBestellnummer_03:
    tagname: "Ihr Beleg"
    targetfolder:
    tagname_RegEx: (?<=(^Ihr Beleg[:|;][\s]{7}){1})[0-9]+
    condition: all
    subrules:
    - searchstring: (?<=(^Ihr Beleg[:|;][\s]{7}){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
 
Noch eine Ergänzung:

Man kann den Match für den lookbehind mit ODER Gruppen kombinieren. Hiermit solltest du nur eine Regel für 7-9 Leerzeichen benötigen. Das lässt sich natürlich noch beliebig erweitern (Gruppe: (?<=(^Ihr Beleg[:|;][\s]{XX_ANZAHL_XX}){1})|).

((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
 
Ich habe eine Frage zum Sortieren per tag in einen Ordner.
Kann das PDF auch in einen Unterordner oder Unterunterordner verschoben werden oder geht es nur in der obersten Ebene.

Also tag Rechnung.
Muss die Struktur so sein
Code:
Input-Ordner
- Ordner Rechnung

oder geht auch

Code:
Input-Ordner
- Ordner abc
      - Unterordner xyz
               - Unterordner Rechnung
Sorry für die Code Darstellung, ich suchte eine Option wo es optisch klar wird.

Sorry falls die Frage bereits gestellt wurde und hier im Thread auftaucht. In den FAQs hatte ich hierzu nichts gefunden.
 
Mit der erweiterten Regeldatei (YAML-Datei) kann man beliebige Zielordner für jeden Tag definieren.
Um das obige Beispiel mal aufzugreifen:

YAML:
tagBestellnummer_01:
    tagname: "Ihr Beleg"
    targetfolder: "/Ordner abc/Unterordner xyz/Unterordner Rechnung"
    tagname_RegEx: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
    condition: all
    subrules:
    - searchstring: (?<=(^Ihr Beleg[:|;][\s]{8}){1})[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false

In diesem Beispiel würde ausgehend vom in der GUI definierten Ausgabeordner der Pfad <AUSGABEORDNER>/Ordner abc/Unterordner xyz/Unterordner Rechnung/<NAME_DER_PDF> erstellt und genutzt.

Beginnt der Pfad für "targetfolder" mit /volume…, so wird der Pfad als absolut betrachtet. Möchtest du also Unterordner des INPUT-Ordner anlegen, musst du absolute Pfad verwenden.
 
  • Like
Reaktionen: Wiesel6
Danke, muss ich die Tage ausprobieren.

In meinem Beispiel oben war natürlich Ausgabeordner und nicht der Input-Ordner gemeint.
 
Zuletzt bearbeitet:
So. Jetzt muss ich mich noch mit der Sortierung in Ordner kümmern.
Bisweilen werden die PDF ja mit der erkannten Belegnummer umbenannt.

Nun möchte ich noch: Falls im Belegfuß "Amazon"oder "Ebay" steht entsprechend in den jeweiligen Ordner sortiert wird.

Code:
tagBestellnummer8:
    tagname: "Ihr Beleg"
    targetfolder:
    tagname_RegEx: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
    condition: all
    subrules:
    - searchstring: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false
 
Geschafft wie folgt.

Jedoch knallt es mir jetzt in meinen Dateinamen den gefundenen Tag vom Marktplatz.
Ich will aber nur die Belegnummer haben.

Code:
tagBestellnummer:
    tagname: "Bestellnummer"
    targetfolder:
    tagname_RegEx: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
    condition: all
    subrules:
    - searchstring: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false    
tagMarktplatz:
    tagname: "Amazon"
    targetfolder: "/Amazon/"
    tagname_RegEx:
    condition: any
    subrules:
    - searchstring: Amazon
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
 
  • Like
Reaktionen: geimist
Code:
tagBestellnummer:
    tagname: "Bestellnummer"
    targetfolder:
    tagname_RegEx: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
    condition: all
    subrules:
    - searchstring: ((?<=(^Ihr Beleg[:|;][\s]{7}){1})|(?<=(^Ihr Beleg[:|;][\s]{8}){1})|(?<=(^Ihr Beleg[:|;][\s]{9}){1}))[0-9]+
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false     
tagMarktplatzAmazon:
    tagname: ""
    targetfolder: "/Amazon/"
    tagname_RegEx:
    condition: any
    subrules:
    - searchstring: Amazon
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
tagMarktplatzEbay:
    tagname: ""
    targetfolder: "/Ebay/"
    tagname_RegEx:
    condition: any
    subrules:
    - searchstring: Ebay
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
tagMarktplatzShop1:
    tagname: ""
    targetfolder: "/Shop/"
    tagname_RegEx:
    condition: any
    subrules:
    - searchstring: Amazon
      searchtyp: is not
      isRegEx: false
      source: content
      casesensitive: false
tagMarktplatzShop2:
    tagname: ""
    targetfolder: "/Shop/"
    tagname_RegEx:
    condition: any
    subrules:
    - searchstring: Ebay
      searchtyp: is not
      isRegEx: false
      source: content
      casesensitive: false
 
Als der Tagname wird nicht mehr gesetzt sofern ich "" reinschreibe :-)

Sortierung funktioniert noch nicht ganz.
Ich möchte alle Belege die nicht das Wort Amazon oder Ebay enthalten in den Ordner "/Shop/" speichern.
 
Was sagt denn das Log?
Probiere es mal mit dem weniger restriktiven does not contain anstatt is not

PS:
Die beiden letzten Regeln kannst du zusammenfassen, indem du eine weitere subrules erstellst.
condition: muss dann natürlich auf all gesetzt werden, damit die Hauptregel erfüllt ist, wenn alle Unterregeln erfüllt sind.

YAML:
tagMarktplatzShop1:
    tagname: ""
    targetfolder: "/Shop/"
    tagname_RegEx:
    condition: all
    subrules:
    - searchstring: Amazon
      searchtyp: does not contain
      isRegEx: false
      source: content
      casesensitive: false
    - searchstring: Ebay
      searchtyp: does not contain
      isRegEx: false
      source: content
      casesensitive: false
 
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