synOCR synOCR - GUI für OCRmyPDF

Nochmal ein kleiner Testnachschub: synOCR mit der Version 1.4.99.10

BETA DOWNLOAD:

➜ SPK DSM6

➜ SPK DSM7



Was gibt's Neues?​


1.4.99.10 [2025-03-13]
VERBESSERUNG:
- [shell] Der YAML Schlüssel dirname_RegEx wurde implementiert, um dynamische Pfade mit der Pfadvariablen §dirname_RegEx erzeugen zu können
- [shell] Die Bildkorrektur wurde robuster gestaltet, um die Integrität der PDF-Datei zu gewährleisten.
BUGFIXES:
- [shell] Schärfe und Kontrast wurden angepasst, obwohl dies in der GUI deaktiviert war

Viel Spaß :)
 
  • Like
Reaktionen: Monacum
Code:
dirname_RegEx
macht oder beinhaltet jetzt genau was?

Edit: ach, Ich kanns mir jetzt denken ;)

YAML:
targetfolder: §dirname_RegEx
    dirname_RegEx: W2[56]-[0-9]{4}

Ein weiteres RegEx, um aus dem Text entsprechende Fragmente für ein Ziel Verzeichnis zu ermitteln. Passt, Dankeschön (y)
 
Zuletzt bearbeitet:
Das dient als Äquivalent zu tagname_RegEx aber für den Pfad. Wie in diesem Beispiel gezeigt, kann der User damit dynamische Zielordner aufgrund eines RegEx definieren:

YAML:
rule_unterordner:
    tagname:
    targetfolder: §dirname_RegEx
    dirname_RegEx: W2[56]-[0-9]{4}
    condition: any
    subrules:
    - searchstring: W2[56]-[0-9]{4}
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false

Bisher war das über den Umweg eines postscripts möglich, aber nicht sehr elegant und intuitiv.
 
  • Like
Reaktionen: Struppix
Bisher war das über den Umweg eines postscripts möglich, aber nicht sehr elegant und intuitiv.
Vor allem DAS hatte ich auch im Hinterkopf, evtl. spart dies sogar eine zweite Regel zur Umbenennung/Benamung der Ziel-Datei wenn zwei Data/Werte im Text gefunden werden müssen.

Denn mit dem Ergebnis aus dem dirname_RegEx bin ich ja nicht ausschließlich auf den tagetfolder festgelegt, ich könnte das RegEx Ergebnis auch in tagname verwenden...ala (RegExe nicht geprüft, nur als sehr vereinfachtes Beispiel):

YAML:
rule_unterordner:
    tagname: Steuer §tagname_RegEx §dirname_RegEx
    tagname RegEx: [0-9]{2}-[0-9]{2}-[0-9]{4}
    dirname_RegEx: W2[56]-[0-9]{4}
    condition: any

Muss ich mir Mal durch den Kopf gehen :unsure:
 
Hallo zusammen!

Ersteinmal möchte ich einen großen Dank an die Entwickler dieses Programms richten! Es ist einfach eine geniale Sache!

Leider habe ich ein Problem, dass im Output Folder weniger Dateien landen als im Input Folder eingehen. Von SynOcr werden alle Dateien bearbeitet. Das ist auch aus den Logs ersichtlich. Danach werden diese in einen Temporären Ordner gesteckt und nach Ablauf des Programms umbenannt. Davon kommen jedoch lediglich ein Viertel bis die Hälfte der Dateien an....

Folgender Traceback ist aus den Logs sichtbar. Ich hoffe ihr könnt mir weiterhelfen....


cleanup:
delete tmp-files ...
removed '/tmp/tmp.C0wo7Z4aZa/01012019_224231_005945.pdf'
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 322, in __init__
self.read(stream)
File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 1504, in read
self._find_eof_marker(stream)
File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 1568, in _find_eof_marker
raise PdfReadError("EOF marker not found")
pypdf.errors.PdfReadError: EOF marker not found
ERROR at line 2353: pagecount_latest=$( py_page_count "${input}" )
(pages counted with python module pypdf)
./synOCR.sh: line 2368: ERROR at line 1808: python3
ERROR at line 2353: python3: syntax error in expression (error token is "at line 1808: python3
ERROR at line 2353: python3")

purge log files ...
delete 0 log files ( > 100 files)
delete 0 search files ( > 100 files)

purge backup deactivated!
rmdir: failed to remove '/tmp/tmp.C0wo7Z4aZa': Directory not empty
rmdir: removing directory, '/tmp/tmp.C0wo7Z4aZa'

runtime all files: ➜ 00:29:39


●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
● ---------------------------------- ●
● | ==> END OF FUNCTIONS <== | ●
● ---------------------------------- ●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
 
Welche Version nutzt du?
Wenn du nicht die letzte Beta (v1.4.99.10) installiert hast, mach mal bitte das.

Und bitte berichte.
 
Ich habe gerade fünf Rechnungen mit dem brother 1700 eingescannt und diese wurden auch korrekt auf der DS abgelegt. Nach dem synOCR Prozess waren aber nur zwei Dateien vorhanden. Ich habe dann festgestellt, dass in der dritten Datei ein Fehler auftrat:

Code:
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● STEP 2 - SEARCH TAGS / RENAME / SORT:                                           ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●


                list files in INPUT with transcoded special characters:
                ➜ 20250314_ads_scan_004811.pdf$

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 322, in __init__
    self.read(stream)
  File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 1504, in read
    self._find_eof_marker(stream)
  File "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/lib/python3.8/site-packages/pypdf/_reader.py", line 1568, in _find_eof_marker
    raise PdfReadError("EOF marker not found")
pypdf.errors.PdfReadError: EOF marker not found
ERROR at line 2353: pagecount_latest=$( py_page_count "${input}" )
                (pages counted with python module pypdf)
./synOCR.sh: line 2368: ERROR at line 1808: python3
ERROR at line 2353: python3: syntax error in expression (error token is "at line 1808: python3
ERROR at line 2353: python3")

  purge log files ...
  delete 0 log files ( > 10 files)
  delete 0 search files ( > 10 files)

  purge backup deactivated!
rmdir: failed to remove '/tmp/tmp.GUmeaeGRCw': Directory not empty
  rmdir: removing directory, '/tmp/tmp.GUmeaeGRCw'

  runtime all files:              ➜ 00:01:13


  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● ---------------------------------- ●
  ● |    ==> END OF FUNCTIONS <==    | ●
  ● ---------------------------------- ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

Die Datei wurde dann auch nicht mehr erzeugt bzw. verschoben. Problematisch ist nun, dass auch die zwei Nachfolger aus dem Input Ordner entnommen wurden und im Nirvana verschwunden sind. Gibt es ein Tool mit dem die Datei für weitere Infos checken kann? Leider ist es eine Rechnung mit sensiblen Daten, daher kann ich diese nicht zum Testen weggeben.

Wäre aber gut gewesen, wenn wenigstens die anderen beiden normal bearbeitet worden wäre. Nachdem ich dieses sep. in den Prozess gegeben habe, lief alles normal durch.

Zum Glück kann man die Dateien ja immer noch im Backup Ordner finden.
 
Gleich Frage:
Welche Version nutzt du?
Wenn du nicht die letzte Beta (v1.4.99.10) installiert hast, mach mal bitte das.
 
Eine Frage zu apprise: Ist die Unterstützung native, also built-in in synOCR oder werden auch die entsprechenden Binaries installiert, damit ich apprise in einer Shell zum Testen aufrufen kann?

Wenn letzteres, wo finde ich die Binaries, denn ein einfaches apprise in einem Terminal findet den Befehl schonmal nicht.
 
Apprise ist eine Pythonbibliothek, die in der virtuellen Pythonumgebung für synOCR installiert wird.

In die Umgebung kommst du so (als root):
Bash:
source "/usr/syno/synoman/webman/3rdparty/synOCR/python3_env/bin/activate"

Jetzt steht dir apprise zur Verfügung.

In synOCR sieht der Workflow so aus:
Bash:
if [ "${apprise_attachment}" = true ]; then
    # with target file as attachment (The user must ensure that the requested service accepts attachments):
    apprise_LOG=$(apprise --interpret-escapes -vv -t 'synOCR' -b "${lang_notify_file_job_successful}\n\r${file_notify}\n\n" --attach "${output}" "${apprise_call}")
else
    # without attachment:
    apprise_LOG=$(apprise --interpret-escapes -vv -t 'synOCR' -b "${lang_notify_file_job_successful}\n\r${file_notify}" "${apprise_call}")
fi
 
  • Love
Reaktionen: geimist
  • Like
Reaktionen: geimist
Hallo Zusammen,
ich habe erst kürzlich erfahren, dass es solche Tools gibt und ich ärgere mich seit ewigkeiten mit dem Umbenennen der PDF´s herum. 😒
Dachte mir Super wenn es für meine Syn.. DS220J sowas gibt dann probiere ich das doch gleich mal aus. Leider macht das Tool bei mir leider kein Muckser.
Ich habe die DSM 7.2.2.2-72806 Update 3 Version auf dem NAS und es erst mit der neuestes stabilen synOCR probiert und jetzt die Beta drauf. Nicht unbedingt ein Docker aber den Container Manager von Synology installiert. synOCR hat vorher ein Fehler deswegen gezeigt (das ein Docker fehlt) aber jetzt kommt kein Fehler mehr. Python 3.9 ist installiert und in synOCR habe ich die allgemeine Konfiguration mit den Pfaden eingerichtet, sonst so ziemlich alles Standard gelassen. Auch den Script unter root erfolgreich einmal ausgeführt.
Ich habe 5 test PDF´s die ich über einen Multidrucker eingescannt habe in den Quell-Ordner gelegt und den manuellen Durchlauf gestartet, Dennoch wird keine PDF bearbeitet.
Kann mir jemand helfen, was mach ich noch falsch?

Schönen Gruß Georgey
 
Hallo und herzlich willkommen hier im Forum, Georgey :)

Der 1. Start dauert eine Weile, da zunächst die Pythonumgebung aufgebaut werden muss (auch nach jedem synOCR Update) und das OCRmyPDF-Image heruntergeladen werden muss.

Welches Symbol in welcher Farbe ist rechts auf der Startseite zu sehen?
Gibt es ein Log im Logordner?

Eine DS220J ist da schon hart an der Grenze - besonders die 512MB RAM machen mir da Sorgen. OCRmyPDF braucht da teilweise schon ordentlich. Du könntest mal als OCR-Parameter --jobs 1 setzen. Damit wird die Anzahl von Threads auf 1 gesetzt und es sollten nicht mehrere Seiten gleichzeitig verarbeitet werden.

Zum Testen der grundlegenden Funktion würde ich es zunächst mit einem einzelnen einseitigen Scan versuchen.
 
Zuletzt bearbeitet:
Hallo Stephan,

hey Danke, hätte mich schon längst mal hier anmelden sollen, bin aber eher der Stumme Mitleser und versuche dadurch mein Problem selbst zu lösen, aber diesmal komme ich nicht weiter.
PS: habe ich noch ein sehr sehr günstig erworbenes wesentlich besseres unbenutztes QNAP NAS hier stehen, den ich gar nicht benutze, denn ich will eigentlich nicht von meinem Synology weg. 😊

- In der Startseite ist der grüne Kreis mit dem weißen ✔ Haken zu sehen, falls du das meinst.
1742114380328.png

- Wenn ich auf den Manuellen Durchlauf starten klicke legt er auch los ,aber am Ende ist dennoch nichts passiert!
1742114337510.png

- Meinst du in den OCR Optionen, da steht ja eigentlich
-srd -1 deu+eng
drin. Soll ich hier nur das --jobs 1 setzen?

- Sowohl die Logs als auch der Backup Ordner sind nach wie vor leer.

- Ich habe jetzt mal auf nur 2 PDF Dateien im Quellverzeichnis reduziert.
PS: wobei ich jetzt zu besseren Ansicht, ob überhaupt irgendwas passiert, dem Quell und Zielverzeichnis den gleichen Pfad bzw. Ordner vergeben.

Vielen Dank schon mal für die Hilfestellung!
 
Es werden noch keine Quelldateien erkannt. Sonst wäre eine blaue Sanduhr statt des grünen Hakens zu sehen.
  • ist das gewünschte Profil aktiviert?
  • ist der Pfad des Eingangsordners korrekt (mit kleinen grünen Haken)?
  • Stimmt die Einstellung des Suchpräfix / -suffix mit den Quelldateien überein?
- Meinst du in den OCR Optionen, da steht ja eigentlich
-srd -1 deu+eng
drin. Soll ich hier nur das --jobs 1 setzen?
Ja, genau. Aber das ist jetzt nicht die Ursache.
Übrigens muss die -1 ein kleines L sein. Das ist im Original aber wahrscheinlich richtig.
 
Zuletzt bearbeitet:
vorab: jetzt tut sich was

- ja das Profil ist aktiv gewesen
- den Suchpräfix hab ich leer gelassen, somit macht er doch alle PDF´s in dem Ordner!?
- ich habe jetzt mal einen anderen Ordner für das Quell.-, Ziel.- Log und Backupverzeichnis diesmal mit Freigabe und auch direkt im root Verzeichnis erstellt.


Kaum hab ich das umgestellt, kam die blaue Sanduhr und nach dem Start rödelt der natürlich jetzt bestimmt ne weile, mal schauen ob dann erfolgreich!

nach ca. 15min:
Es arbeitet noch aber 2 Logfiles gibt es bereits!
Eins davon ist da "file.processing.log" vermutlich von der ersten PDF - darin steht nur die Source: ...pdf und unsuccessful

in der andere Logfile, sieht so aus als wären da diverse Fehler.
Ich hab kein Plan, aber in dem Log steht jetzt glaub nichts was ich hier nicht öffentlich zeigen könnte, oder?
Soll ich das Log mal anfügen?

PS: RAM ist nur bei 52% Auslastung

Edit: nach ca 30 min gibt es keine bearbeitete PDF´s. Die Sanduhr wird weiter in der Übersicht angezeigt.
- Dateien zu bearbeiten 2
- Gesamt 0/0

Habe jetzt doch auf nur eine PDF in der Quelle reduziert. Das erkennt er sofort!

Danke
 
Zuletzt bearbeitet:
Ich hab kein Plan, aber in dem Log steht jetzt glaub nichts was ich hier nicht öffentlich zeigen könnte, oder?
Persönliche Daten wären nur die, die du auch in der GUI hinterlegt hast (z.B. ein Datum, welches ausgeschlossen werden soll oder ein Mailpasswort für einen Appriseaufruf).

Logs kannst du mir gern persönlich hochladen: https://geimist.eu/link/synocrupload
 

Additional post fields

 

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