synOCR synOCR - GUI für OCRmyPDF

tom9865

Benutzer
Mitglied seit
20. Feb 2013
Beiträge
75
Punkte für Reaktionen
0
Punkte
6
Hallo,
habe das Tool eben neu installiert. Bei mir lässt sich weder die Seite Konfiguration noch Zeitplaner noch Hilfe aufrufen. Das Tool zeigt immer nur die Startseite mit der Möglichkeit eines Starts des manuellen Auftrags.
Ist der Fehler schon einmal aufgetreten?
Gruß, Tom
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Hallo Tom,

nein, den Fehler kenne ich nicht :unsure:
Hast du die Seite schonmal aktualisiert?
Mal einen anderen Browser oder ein Inkognitofenster probiert?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Hallo zusammen,

vor dem nächsten Release wollte ich euch gern erst einmal testen lassen.

Augenmerk sollte auf diesen Punkten liegen:
  • erweitertes Regelmanagement - Vielen Dank an @mamema für die Unterstützung!
    • das funktioniert nicht über die GUI sondern über ein externes YAML-File. Die bestehenden Regeln können in der GUI via einem Button in das erweiterte Format konvertiert werden. Ein Backup der alten Regeln sollte automatisch erstellt werden
  • Filter für Input-Dateien:
    • neben dem Suchpräfix kann nun auch nach einem Suffix gefiltert werden (ohne Dateiextension).
      Dazu ist dem Begriff ein $ hintanzustellen ( Filterwort$ ).
    • es ist auch ein Ausschluss möglich, in dem dem Suchwort ein ! vorangestellt wird ( !Filterwort ), d.h. alle Dateien werden abgearbeitet, die dem Filter nicht entsprechen. Das ist nützlich bei Scannern, die keine Dateinamenvoreinstellung bieten und der Input- gleich der Output-Ordner sein soll.
  • englische GUI bei Bedarf
Das SPK liegt auf meinem Server: https://geimist.eu/synOCR/

Da der DSM kein Paket-Downgrade zulässt, solltet ihr mit HyperBackup eine Paketsicherung von den synOCR-Einstellungen erstellen, sofern ihr ein Downgrade in Erwägung zieht.

Vielen Dank im Voraus für eure Untersützung ?
 

Tillerbach

Benutzer
Mitglied seit
05. Jul 2020
Beiträge
11
Punkte für Reaktionen
0
Punkte
7
Hallo zusammen,

über das Wochenende habe ich mit meiner neuen NAS herumgespielt und (glücklicherweise) diese tolle Software gefunden.
Es ist eindrucksvoll zu sehen, wie weit OCR mittlerweile ist.

Tatsächlich ist mir schon ein seltsames Verhalten aufgefallen.
Ich habe den Tag oder Kategorie (der Unterschied ist mir leider nicht ganz klar) ""§Media Markt" definiert, mit Leerzeichen. Ich bin mir relativ sicher, dass es das "§" nicht brauchen würde, aber nehmen wir mal so mit.
Beim Speichern des OCR-Dokuments werden allerdings zwei Ordner angelegt "Media" und "Markt". Ich hätte erwartet, dass der neue Ordner analog zum Tag erstellt und das Dokument verschoben wird.

Aus dem entsprechenden Log:

Code:
tag count:       2
Search by tag:   "Lieferschein" ?  -
Search by tag:   "Media Markt" ?  OK
rename tag is: "#Media Markt"

...

? move to tag directories
tag directories "Media" exists? ?  created
target:   ./Media/20200705_20200705_scan_125105.pdf
tag directories "Markt" exists? ?  created
target:   ./Markt/20200705_20200705_scan_125105.pdf

Ich vermute einen Anfängerfehler in der Konfiguration. Hat jemand einen Tipp für mich?

Vielen Dank und beste Grüße
Peter
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Herzlich willkommen hier im Forum, Peter :)
Tag oder Kategorie (der Unterschied ist mir leider nicht ganz klar)
Tag ist hier das Stichwort, welches im PDF gesucht wird und für den Dateinamen zur Verfügung steht. Kategorie definiert einen Unterordner im Zielverzeichnis. Rechnung=Belege;Quittung=Belege;Kassenbon=Belege würde alle Dokumente, die einen dieser Tags enthält in den Ordner "Belege" verschieben.
Ich vermute einen Anfängerfehler in der Konfiguration. Hat jemand einen Tipp für mich?
Nein, ich glaube dies ist in der Tag ein Bug - sorry dafür. Das ist mir beim Fehlerbereinigen der nächsten Version in den letzten Tagen glaube auch aufgefallen und sollte mit der nächsten Version gefixt sein. Alternativ kannst du die oben erwähnte Beta testen.
 

Tillerbach

Benutzer
Mitglied seit
05. Jul 2020
Beiträge
11
Punkte für Reaktionen
0
Punkte
7
Hallo Stephan,

vielen Dank für deine schnelle Antwort. Im Hinblick auf Tags und Kategorien könnte der Groschen gefallen sein, vielen Dank dafür.
Komme ich von der Beta nach dem Release problemlos zurück auf den stable-branch?

Viele Grüße
Peter
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Sofern du cphub.net in deinem Paketzentrum als Paketquelle hinterlegt hast (was ja offensichtlich der Fall ist), wird dir jedes Update darüber angeboten, sofern dessen Versionsnummer höher als die installierte ist. Sollte also alles laufen ?
 

ulli_um

Benutzer
Mitglied seit
20. Jun 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
1
Hab inzwischen meine DS bekommen und hab mir Drive angeschaut. Das ist ja echt ne klasse app auch wenn sie noch in den Kinderschuhen steckt.
Auf jeden Fall unterstützt sie tagging/labels. Das wäre natürlich der Hammer wenn synocr die label dort entsprechend setzten könnte.
Ich hab etwas gegoogelt, es gibt leider nur ein python Beispiel wie man per skript die label setzt.
https://community.synology.com/enu/forum/1/post/123043
Kann wer zufällig python und hat auch Interesse daran?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Die aktuelle BETA setzt Meta-Tags, sofern die Pakete Perl und Exiftool installiert sind. Meiner Auffassung nach handelt es sich bei den Drive-Tags um propitäre Daten und es werden nicht die Metadaten der Dokumente ausgewertet.

Ich hab etwas gegoogelt, es gibt leider nur ein python Beispiel wie man per skript die label setzt.
https://community.synology.com/enu/forum/1/post/123043

Vielleicht kann mir das mal jemand nach Bash übersetzen (sofern möglich).
 
Zuletzt bearbeitet:

Schwabenheinz

Benutzer
Mitglied seit
08. Mrz 2020
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Hallo geimist
Vielen Dank für Deine tolle Lösung! Gefällt mir sehr gut!

Nutze diese im Augenblick ganz simpel ohne tags or ähnliches.
Nur mit den Standardeinstellungen.
Habe getrennte Ordner für input, output und backup.

Allerdings haben alle Ausgabedateien eine Ergänzung im Dateinamen: Dateiname (1) .pdf
Kann man die Ergänzung "Leerzeichen (1)" irgendwie abschalten?

Vielen Dank vorab
OpaHeinz
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Der Zähler wird nur dann angehangen, wenn eine gleichnamige Zieldatei bereits besteht.

Wenn das dein Problem nicht löst, bräuchte ich ein Log.
 

ulli_um

Benutzer
Mitglied seit
20. Jun 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
1
@geimist:
Ich hab eine Lösung gefunden wie man die Labels in DS Drive auslesen und setzten kann. :):):)
Du müsstest ein JSON Format interpretieren können und ein pyton script entsprechend ausführen.
Wäre das möglich von deiner Seite?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Das wäre bestimmt möglich, aber sofern machbar würde ich es gern vermeiden, eine weitere Paketvoraussetzung einzubauen. Kann man das nicht auf Bash umschreiben?

JSON interpretieren sollte nicht das Problem sein. Was steht denn im JSON drin / für was ist das JSON-File gedacht?

Wenn nicht möglich, müsste ich die Tags und ggf. andere Parameter an das Pythonskript übergeben. Aber da hapert es schon bei mir.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
synOCR v1.0.0

Hallo zusammen,

nach eineinhalb Jahren hat es mal zur Versionsnummer 1.0 gereicht. Mein Ziel war dafür u.a. …
  • … die erweiterten Tagregeln:
    es hat sich bei mir nichts daran geändert, dass ich das nicht in der GUI abbilden kann. Über einen Button neben dem Tag-Feld in der GUI kann aber eine Beispielregeldatei erstellt werden. Darin sind dann schon die bisherigen Tagregeln übernommen und der Pfad der Regeldatei in das Tag-Feld der GUI eingetragen. Ziel war es auch, Tagregeln via RegEx suchen lassen zu können. Das haben wir auch getestet, aber vielleicht gibt es da immer noch Ausdrücke, die nicht richtig interpretiert werden. Dann gebt bitte Bescheid.
    Danke an @mamema für die Mitarbeit und fürs Testen (y)
  • … und die Mehrsprachigkeit der GUI:
    damit wollte ich warten, bis die meisten Funktionen eingebaut sind, da der Code mit den Sprachvariablen nicht gerade besser lesbar wird
    Wer hier eine weitere GUI-Sprache hinzufügen kann, ist herzlich eingeladen. Hier gibt es eine Anleitung.

IMPLEMENTIERUNGEN:
  • mehrsprachige GUI (derzeit deutsch, englisch)
  • erweiterte Regelverwaltung (in Kombination mit einer externen YAML-Datei)
    eine Beispieldatei kann über den Button in der GUI erstellt werden / bestehende Regeln werden konvertiert
  • Tags sind jetzt unabhängig vom Suchbegriff (d.h. ein Alias - in Kombination mit einer externen YAML-Datei)
  • Pfadangaben für Tags können relativ zum Zielordner, oder aber auch ein systemweiter absoluter Pfad sein (in Kombination mit einer externen YAML-Datei)
  • Quelldateien: ein abschließendes "$" ( value$ ) wird als Suchsuffix im Dateinamen verwendet
  • Quelldateien: ein Suchpräfix / -suffix mit vorangestelltem "!" ( !value ) invertiert die Suche im Dateinamen
  • wenn das Exiftool installiert ist, werden gefundene Tags und Datum in die PDF-Metadaten geschrieben
  • bei aktiviertem erweiterten Logging wird ein Textfile mit dem erkannten Text in den Logordner geschrieben.
    Der Inhalt entspricht dem Suchbereich "nur 1. Seite" oder "gesamtes Dokument"
BUGFIXES:
  • wenn sich ein Pfad auf ein (ungemountetes) verschlüsseltes Verzeichnis bezieht, wird der Programmlauf abgebrochen (der Zielordner wird nicht erstellt, was ein reguläres mounten verhindern würde)
 

lueddich

Benutzer
Mitglied seit
10. Dez 2012
Beiträge
52
Punkte für Reaktionen
8
Punkte
8
Hey Stephan,

ich wollte hier einfach mal ein großes DANKE loswerden! Mit SynOCR hast Du mein Leben verändert - meine Frau und ich waren immer Ablagemuffel, unsere Ablage war ein wachsender Stapel an Papier, der aufgrund des "Systems" chronologisch sortiert war, wenn man es mal positiv formuliert - das Neueste lag halt oben.

Mit SynOCR habe ich endlich eine automatisierte Ablage mit Volltext-Suchoption. Jegliches Schreiben, was in Papierform reinkommt und aufzubewahren ist, scanne ich entweder direkt von meinem Scanner auf einen freigegeben Ordner der Synology oder per Handy auf eine WebDAV-Freigabe - gleicher Ordner. Nachts läuft dann einmal SynOCR drüber, macht seinen Job und benennt die Datei um - mit einem ## am Dateianfang. Ab und an checke ich dann alle ##-Dateien auf Richtigkeit und entferne die #-Zeichen, das ist schnell gemacht. So habe ich meine ganze Ablage digital vorliegen und kann von überall drauf zugreifen.

Ist die Paypal-Me-Adresse mit Deinem Nutzernamen hier die korrekte Option, die mal ein Danke zukommen zu lassen?

Viele Grüße,
Jan
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Hallo Jan,

freut mich, dass euch hilft und der WAF erfüllt ist :)
Zu deiner Frage hatte ich mal etwas auf der synOCR-Seite Hilfe ? über synOCR geschrieben.
 

gaz72

Benutzer
Mitglied seit
23. Okt 2019
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hi Stephan,

Riesen Kompliment! Mit der Version 1.0 und der Möglichkeit komplexere Regeln per yaml bereitzustellen, hat synOCR für meine Anwendungsfälle nochmal einen großen Sprung nach vorne gemacht.(y)

An einer Stelle hat aber zumindest bei mir die Verkettung von Subrules nicht funktioniert. Ich habe eine "is" rule mit einer "is not" rule kombiniert und in meinem Beispiel müsste die erste "is" rule zutreffen und die zweite "is not" rule nicht zutreffen. Im Log sehe ich aber, dass beide subrules matchen.

Liegt das möglicherweise daran, dass beim Durchlaufen der einzelnen subrules die Variable grepresult nicht wieder auf 0 zurückgesetzt wird, sondern immer auf 1 bleibt, sobald eine subrule zugetroffen hat? Ich konnte das für meinen Fall jedenfalls lösen, indem ich am Anfang der for Schleife in Zeile 584 ein
Code:
grepresult=0
hinzugefügt habe.

Ist das möglicherweise ein genereller Fehler oder habe ich in meinen yaml Regeln etwas falsch gemacht?

Viele Grüße
Guido
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Hallo Guido,

vielen Dank für dein Feedback. Tut mir leid, dass es noch nicht wie gewünscht funktioniert.

  • Die Variable grepresult wird zu Beginn der übergeordneten Schleife (Zeile 555) zurückgesetzt, da grepresult ja definiert, ob die Hauptregel erfüllt wurde.
  • Was hast du denn als condition: angegeben ("all" oder "any" oder "none")?
  • Ob es wirklich an einem fehlerhaft zurückgesetzten grepresult liegt, könntest du testen, indem du mal nur deine "is not" Regel prüfen lässt.

    Alternativ könntest du mal nach dem Durchlauf mit erweitertem Loglevel den Test direkt auf das im Logordner erstellte Textfile in der Shell durchführen.
    Bash:
    if ! grep -qwFi "dein Suchwort" "/pfad/zum/textfile" ;then
         grepresult=1
    fi
 
Zuletzt bearbeitet:

gaz72

Benutzer
Mitglied seit
23. Okt 2019
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hi,

wow, das ging aber schnell. :)

  • Ich hatte den Code so verstanden, dass found definiert, ob die Hauptregel erfüllt wurde und prepresult nur definiert, ob die Subregel erfüllt wurde
  • Als condition habe ich all angegeben
  • Ich habe den von dir vorgeschlagenen Test durchgeführt.

Die "is not" Regel funktioniert alleine:
Code:
                Search by tag rule: "Regel1" ? 
                  ? condition:    all
                  ? tag:          MeinTag
                  ? destination:  MeinOrdner
                      [Subrule]:
                      >>> search for:      SollNichtGefundenWerden
                          isRegEx:         false
                          searchtyp:       is not
                          source:          content
                          casesensitive:   true
                          ? Subrule don't matched
                          >>> Rule is not satisfied

Kombiniert mit einer (erfolgreichen) "is" Regel, die vorher steht, wird sie aus meiner Sicht falsch ausgewertet:
Code:
                Search by tag rule: "Regel1" ? 
                  ? condition:    all
                  ? tag:          MeinTag
                  ? destination:  MeinOrdner
                      [Subrule]:
                      >>> search for:      SollGefundenWerden
                          isRegEx:         false
                          searchtyp:       contains
                          source:          content
                          casesensitive:   true
                          ? Subrule matched
                      >>> search for:      SollNichtGefundenWerden
                          isRegEx:         false
                          searchtyp:       is not
                          source:          content
                          casesensitive:   true
                          ? Subrule matched
                          >>> Rule is satisfied

Aus meiner Sicht liegt das daran:
- Beim Abarbeiten der Hauptregel wird grepresult einmalig auf 0 gesetzt.
- Beim Abarbeiten der 1. Subregel wird grepresult korrekterweise auf 1 gesetzt
- Beim Abarbeiten der 2. Subregel wird grepresult korrekterweise nicht auf 1 gesetzt, steht aber vom ersten Durchlauf noch auf 1 und wird deshalb trotzdem als 1 evaluiert
- Trotz der condition all wird found auf 1 gesetzt, weil ja beide grepresult auf 1 standen
- Die Regel wird fälschlicherweise auf "satisfied gesetzt

Macht das Sinn, was ich da schreibe?

Viele Grüße
Guido
 


 

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