synOCR synOCR - GUI für OCRmyPDF

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.195
Punkte für Reaktionen
1.022
Punkte
224

cristi_petre

Benutzer
Mitglied seit
04. Sep 2014
Beiträge
60
Punkte für Reaktionen
0
Punkte
6
ich hab das was der Stephan geschrieben hat einfach rein kopiert und noch den Pfad hinzugefügt wohin das gehen soll wenn es fertig ist.

Hab zum testen auch andere Wörter benutzt aber er erkennt die Regel nicht an oder so.

Auf jeden Fall landen die Ordner nicht in den Ausweise Ordner. Das ist für mich nur ein Beispiel es müssen nicht unbedingt Ausweise sein. Mir ging es darum zu verstehen was man da rein schreiben muss damit man sich da eine Ordner Struktur aufbauen kann. Eventuell erbarmt sich jemand und postet hier eine Textdatei mit Beschreibung warum was wo ist.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.195
Punkte für Reaktionen
1.022
Punkte
224
Dafür gibt es das Wiki, was Stephan oben bereits verlinkt hat, da ist das alles ausführlich erklärt.
 
  • Like
Reaktionen: Gthorsten

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Hab zum testen auch andere Wörter benutzt aber er erkennt die Regel nicht an oder so.
Bei konkreten Fragen, auch einfach mal deine Regeln posten (unbedingt als YAML-Code - die drei Punkte ganz rechts in der Formatleiste).
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Meine lieben Freunde der texterkannten PDFs:

Nach langem Warten und Testen kommt endlich mal das versprochene Release 1.3.0 :cool:
Besonderen Dank gilt @Gthorsten, der die ganze Datumserkennung in Python implementiert hat.

Das Release der Version 1.3.0 findet ihr hier auf meinem Server (für DSM6 & DSM7): https://geimist.eu/synOCR/

DOWNLOAD:

➜ SPK DSM6

➜ SPK DSM7




Hier nochmal die komplette Featureliste:​


BUGFIXES:Abfangen einer Fehlermeldung, wenn es keine zu bereinigenden Docker-Images gibt
Die Zählung der zu löschenden Protokoll- und Backupdateien war in bestimmten Situationen nicht korrekt
eine Fehlermeldung wurde abgefangen, wenn es keine zu bereinigenden Docker-Images gibt
VERBESSERUNGEN:[YAML-Regeln] wenn der Wert für condition nicht gesetzt ist - Fallback auf any
Benachrichtigung im Protokoll, wenn regelbasierte Zielordner gefunden werden, aber eine widersprüchliche Einstellung in der GUI gesetzt ist
Die Profile werden jetzt in alphabetischer Reihenfolge (nach Profilnamen) verarbeitet. Das hilft bei der Umsetzung von verschiedenen Szenarien.
NEUES:🔥Überwachung des Eingabeordners eingbaut
  • das Paket inotify-tools muss manuell von HIER installiert werden
    alternativ: über synocommunity im Paketzentrum
  • um die Funktion zu verwenden, ist synOCR mit dem Parameter start im DSM-Aufgabenplaner aufzurufen:
    /usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh start
  • ein pulsierendes Icon auf der synOCR Startseite (grüner Haken / blaue Sanduhr) symbolisieren das aktive Monitoring
  • bei einer Änderung der Quellordner ( (de-)aktiveren eines Profils, Ändern eines Quellpfades, Löschen / Neuerstellen eines Profils) muss synOCR mit dem Parameter start wie oben gezeigt, aufgerufen werden, damit die Änderungen wirksam werden
  • sind die inotify-tools installiert, startet das Monitorin bereits mit dem Paketstart von synOCR im Paketzentrum
🔥neue Python-basierte Datumssuche implementiert, die auch ausgeschriebene Monate findet (@Gthorsten)
  • erfordert unter DSM6 ein installiertes Python3
  • als Fallback greift die bisherige RegEx-Suche
  • RegEx oder Python Auswahl in der GUI möglich
  • ein Startjahr für die Datumssuche kann im GUI definiert werden
  • ein Jahr in der Zukunft kann in der GUI als letztes Jahr für die Suche definiert werden
🔥Unterstützung von Trennblättern
  • das Erkennungswort kann in der GUI konfiguriert werden
  • erfordert unter DSM6 ein installiertes Python3
  • ein Beispieltrennblatt zum Ausdrucken, findet ihr HIER
  • in der GUI kann definiert werden, wie Trennseiten behandelt werden sollen:
    • Trennblatt ist letzte Seite des Bereichs
    • Trennblatt ist erste Seite des Bereichs
    • Trennblatt wird verworfen (default)
🔥Bilder im Quellordner können automatisch konvertiert werden
  • erfordert unter DSM6 ein installiertes Python3
  • (De-)Aktivierung in der GUI möglich
  • derzeit mögliche Formate: jpeg jpg tiff png
    (sollte was fehlen, bitte melden)
Option zur Reduzierung mehrerer Leerzeichen auf ein einziges
  • das kann für RegEx-Suchen hilfreich sein, wenn die erkannte Anzahl schwankt oder unbekannt ist.
  • (De-)Aktivierung in der GUI möglich
die Anzahl der Seiten wird nun mit Python ermittelt
  • erfordert unter DSM6 ein installiertes Python3
  • Exiftool und pdfinfo werden obsolet
die Metadaten werden jetzt mit Python gesetzt
  • erfordert unter DSM6 ein installiertes Python3
  • Exiftool wird obsolet
  • ‼️derzeit geht die PDF/A Eigenschaft der Dokumente verloren, wenn Metadaten geschrieben werden
    • Über diesen Befehl kann man nach dieses Feature deaktivieren:
      /usr/syno/bin/synosetkeyvalue "/usr/syno/synoman/webman/3rdparty/synOCR/synOCR.sh" enablePyMetaData 0
      Zum Aktivieren:
      /usr/syno/bin/synosetkeyvalue "/usr/syno/synoman/webman/3rdparty/synOCR/synOCR.sh" enablePyMetaData 1
gesetzt werden damit:
  • Autor (die Info stammt aus den OCR-Optionen, sofern gesetzt [--author john doe])
  • Erstellzeitpunkt (je nachdem, welcher Quell-Wert definiert wurde: OCR Dateidatum jetzt)
  • gefundene Keywords
die Konvertierung von YAML nach JSON erfolgt nicht mehr mit dem binären yq, sondern mit Python
  • das mitgelieferte Programm yq wird obsolet
YAML-Regeln
  • alle Umbenennungsparameter können als Tagname-Komponenten in YAML-Regeln verwendet werden (experimentell)
  • tagname & tagname_RegEx können kombiert werden:
    verwende §tagname_RegEx in tagname und es wird ersetzt durch tagname_RegEx
Protokollierung gelöschter Backupdateien in Loglevel 2
[GUI] Benachrichtigung über Aktualisierungen auf der Hauptseite (weil cphub.net immer noch nicht funktioniert 😭)
[GUI] automatisch übersetzte Sprachunterstützung für:
  • Chinese simplified
  • Czech
  • Japanese
  • Danish
  • French
  • Italian
  • Dutch
  • Polish
  • Russian
  • Spanish
  • Swedish
  • Hungarian
  • Turkish
  • Portuguese European
  • Portuguese Brazilian


MACHT VORSICHTSHALBER BITTE VORHER EIN BACKUP EURER SYNOCR-KONFIGURATION
VIA HYPERBACKUP ODER INDEM IHR DIE DB HERUNTERLADET​
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Bei mir startet das Monitoring nicht. Logs hochgeladen.
Job im Aufgabenplaner angepasst.
Finde nur die Ursache nicht. Idee?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Guckmal, was dass direkte Starten ausgibt:
/usr/syno/synoman/webman/3rdparty/synOCR/input_monitor.sh start

Alternativ:
In der synOCR GUI gibt es auch einen Button zum Starten. Ist es dort der gleiche Fall?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Monitoring starten in der GUI, synOCR via Aufgabenplaner, synOCR via Paketzentrum...identische Ausgaben in inotify.log (schon hochgeladen vorher). Über den Aufgabenplaner das Sub-Script aufrufen habe ich jetzt noch nicht gemacht.

Was ich vorher vergessen hatte mal den Output des Aufgabenplaners anzuschauen.
Code:
---------- START MONITORING ---------- 2022-11-01_14-07-31 ----------
Setting up watches.
Couldn't watch /volume1/<PATH>/_INPUT: No such file or directory
loop count: 11
! ! ! ERROR: failed to start monitoring after 11 trys
synOCR run at DSM7 or above
    ➜ check docker group and permissions: ok [docker:x:280384:synOCR]
    ➜ check admin permissions: ok
synOCR wurde gestartet ...
Bitte warten, bis die Dateien fertig abgearbeitet wurden.
! ! ! Quellverzeichnis oder Berechtigung in der Konfiguration prüfen ! ! !
Programmlauf wird beendet.
[/icode]

Ist die Frage wo er diesen Pfad hernimmt. Bin mir jetzt leider nicht mehr sicher wann genau ich synOCR installiert hatte.
Früher war es mal Volume1. Mit NVMe Volume5 ist er spätestens umgezogen (Paketzentrum Default, Apps, etc.), Job wurde angepasst.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Ich vermute, du hast noch ein unkonfiguriertes Profil. Der Platzhaltertext lautet /volume1/<path>/_INPUT. Wahrscheinlich genügt es, dieses Profil zu deaktivieren (oder halt zu löschen).
 
Zuletzt bearbeitet:

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Ja, das wars. Inaktives (starke Vermutung, aber unter Eid würde ich es nicht mehr schwören) default Profile. Habe ich direkt unbesehen gelöscht.
Jetzt startet das Monitoring sauber.

Danke.
 
  • Like
Reaktionen: geimist

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Für weiteres Monitoring bei DS Neustart reicht, dann der normale Paketstart?
Den Aufgabenplaner kann ich also dann deaktivieren?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Grundsätzlich ja. Dann läuft synOCR komplett unter dem Paketuser synOCR inkl. aller Einschränkungen. Z.B. ist kein Piep als Benachrichtigung möglich. Es kann auch Einschränkungen bei den Berechtigungen der Zieldatei geben (die ja durch OCRmyPDF neu erstellt wird - der Eigentümer wäre da möglicherweise synOCR).

Bei mir läuft es so.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
mmh, ja, sehe es gerade. Je nachdem ob die Datei über Scanner-Benutzer oder SMB oder nach Aktivierung Monitoring behandelt wurde stehen andere Benutzer drin.
Gute Frage, ob mich das stört... oder nicht. :)
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Wie gesagt: Wird das Monitoring von root gestartet, sollten die Berechtigungen und Eigentümerschaften korrekt übertragen werden.

Um den ausführenden User zu wechseln (z.B. nach einem Systemstart – das Monitoring wird ja automatisch mit dem Paket über den User synOCR gestartet), habe ich ein paar Zeilen für den Aufgabenplaner bereits hier geschrieben: https://www.synology-forum.de/threa...ren-synology-user-aendern.123529/post-1030258
 
Zuletzt bearbeitet:

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Ja, dann habe ich halt den Scanner-Benutzer oder synOCR als Benutzer.
Im Fall von webDAV etc. wo ich meinen eigenen Benutzer nehme, dann diesen.
Muss ich also so oder so nacharbeiten, wenn ich alle am Ende mit demselben Benutzer vorliegen haben will.
 

claus_hipp

Benutzer
Mitglied seit
11. Jan 2022
Beiträge
11
Punkte für Reaktionen
4
Punkte
3
Hallo, ich glaube einen Bug gefunden zu haben:
Ich habe nach einem String suchen lassen, welcher aus 3 Wörtern besteht: "ABC Hausverwaltung GmbH"
Wenn ich danach im PDF suche ist dieser auch vorhanden.
Der Bug ist aus meiner Sicht, dass es die ersten 3 Wörter im PDF sind. Diese scheinen aus irgend einem Grund nicht beachtet zu werden... Ggf. wird irgendwo bei 1 statt bei 0 angefangen?

Die Regel funktioniert, sofern es nicht die ersten 3 Wörter im PDF sind.

So sieht meine Regel aus:
ABC_Hausverwaltung_GmbH:
tagname: HausverwaltungABC
# targetfolder: "/<path>/"
tagname_RegEx: "HausverwaltungABC"
condition: any
subrules:
- searchstring: ABC.HV GmbH
searchtyp: contains
isRegEx: false
source: content
casesensitive: false
- searchstring: ABC Hausverwaltung GmbH
searchtyp: contains
isRegEx: false
source: content
casesensitive: false
- searchstring: ABC HV GmbH
searchtyp: contains
isRegEx: false
source: content
casesensitive: false

Auch mit einem einzigen searchstring (die in der Mitte) schlägt die Regel nicht zu.
Ändere ich die Regel auf : BC Hausverwaltung GmbH
(ohne das A am Anfagen) -> geht es auch nicht

Das gleiche konnte ich mit einem anderen PDF nachstellen. Die ersten Wörter scheinen ein Problem darzustellen.

Habe die aktuelle Version 1.3.0

@geimist: Danke für deinen Einsatz! Du hast ein echt tolles Tool geschaffen!
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Gerade bei mir erfolgreich getestet.
Bitte poste mal den YAML-Code entsprechend formatiert, damit man ihn auch interpretieren kann (die ganz rechten drei Punkte in der Formatierungsleiste ➜ Code ➜ YAML).

PS: kannst du bitte einen deiner beiden Beiträge löschen? Danke 🤗
 

claus_hipp

Benutzer
Mitglied seit
11. Jan 2022
Beiträge
11
Punkte für Reaktionen
4
Punkte
3
Immer gern:

YAML:
ABC_Hausverwaltung_GmbH:
    tagname: HausverwaltungGSM
#    targetfolder: "/<path>/"
    tagname_RegEx: "HausverwaltungGSM"
    condition: any
    subrules:
    - searchstring: ABC.HV GmbH
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
    - searchstring: ABC Hausverwaltung GmbH
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
    - searchstring: ABC HV GmbH
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
 

Anhänge

  • bild.png
    bild.png
    83,8 KB · Aufrufe: 10

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.511
Punkte für Reaktionen
1.347
Punkte
234
Man müsste auch mal ins Log gucken, aber lösche mal diese beiden Zeilen:
YAML:
#    targetfolder: "/<path>/"
    tagname_RegEx: "HausverwaltungGSM"

Hintergrund:
Das YAML wird on the fly nach JSON konvertiert, wo es keine Kommentare gibt. Möglicherweise macht da die erste Zeile Ärger.
Der Wert bei tagname_RegEx ist ja kein RegEx und würde ich hier nicht setzen.
 

claus_hipp

Benutzer
Mitglied seit
11. Jan 2022
Beiträge
11
Punkte für Reaktionen
4
Punkte
3
Änderung habe ich gemacht. Das Log sieht gut aus. keine Fehler.
search by tag rule: "ABCHausverwaltung_GmbH" ➜
➜ condition: any
➜ tag: HausverwaltungABC
➜ destination:
>>> Rule is not satisfied

Wenn ich einen weiteren Parameter bzw. Searchstring hinzufüge, welcher später im PDF matched, triggert die Regel auch. Habe oben im Post ein Bild vom PDF hinzugefügt.
Den auskommentieren Targetfolder habe ich bei fast allen Rules drin und das sind einige - daran kann es eigentlich auch nicht liegen. Werde aber mal alle entfernen...

Auch die Reihenfolge scheint keine Rolle zu spielen, habe den mittleren Searchstring, welcher auch matchen sollte, mal an den Anfang gesetzt-> kein match.

Auch als Regex keine chance:
YAML:
GSM_Hausverwaltung_GmbH:
    tagname: HausverwaltungGSM
    condition: any
    subrules:
    - searchstring: GSM.Hausverwaltung.GmbH
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false

Habe es mal mit einem aus WORD erstellten PDF und einer neuen Regel probiert. Damit geht es - also scheint es irgendwie am PDF selbst zu liegen. Aber das kommt urspürnglich aus OCRmyPDF...

Müsste es wohl drucken und wieder einscannen... damit die OCR drüber geht... nur stehe ich grad mit dem meinem Drucker etwas auf Kriegsfuß... der will doch tatsächlich schon wieder neue schwarze Tintenpatronen haben - das versuche ich aber einfach auszusitzen! :D
p.S. es als Screenshot ins Word einfügen und dann als PDF Drucken hat nicht geklappt, das ignoriert die OCR.
 
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