synOCR synOCR - GUI für OCRmyPDF

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
$ VS § hab ich heute morgen schon korrigiert :)
 
Zuletzt bearbeitet von einem Moderator:

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
Respekt der Herr. Jetzt klappt es einwandfrei !!!!
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: geimist

towbsen

Benutzer
Mitglied seit
26. Jul 2017
Beiträge
59
Punkte für Reaktionen
4
Punkte
14
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
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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.
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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]+
 

Wiesel6

Benutzer
Mitglied seit
22. Aug 2016
Beiträge
272
Punkte für Reaktionen
75
Punkte
28
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.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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

Wiesel6

Benutzer
Mitglied seit
22. Aug 2016
Beiträge
272
Punkte für Reaktionen
75
Punkte
28
Danke, muss ich die Tage ausprobieren.

In meinem Beispiel oben war natürlich Ausgabeordner und nicht der Input-Ordner gemeint.
 
Zuletzt bearbeitet:

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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
 

tomjons

Benutzer
Mitglied seit
05. Jun 2013
Beiträge
67
Punkte für Reaktionen
4
Punkte
8
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.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
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