synOCR synOCR - GUI für OCRmyPDF

steve45

Benutzer
Mitglied seit
26. Mrz 2021
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Ich finde nirgendwo eine Doku zu der YAML config Datei mit der ich die Einsortierung in Ordner steuern kann? Ist das irgendwo hier im Forum versteckt?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Wenn du den Knopf in der GUI zum Erstellen der Datei anknipst, steht in der Datei alles drin.
Wenn das nicht geht, bitte nochmal melden.
 

steve45

Benutzer
Mitglied seit
26. Mrz 2021
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Wenn du den Knopf in der GUI zum Erstellen der Datei anknipst, steht in der Datei alles drin.
Also irgendwie stell ich mich scheinbar umständlich an: wo bitte ist denn dieser Knopf in der GUI? Bei Settings gibts ein oder mehrere Profile und da gibt's Formulare wo man allerlei einstellen kann. Aber einen Knopf zum erstellen einer Datei hab ich nicht gefunden.
 

steve45

Benutzer
Mitglied seit
26. Mrz 2021
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Ich hab zwar keine Ahnung warum, aber wenn dein Profil nicht konfiguriert ist (oder das /usr/syno/synoman/webman/3rdparty/synOCR/synOCR.sh script noch nie gelaufen ist), dann ist da auch kein Button. Jetzt sehe ich ihn.
Wenn ich das Script auf der Shell aufrufe, hatte ich zuerst sowas:
Code:
cat: /volume2/Share2/Scan/log/ERROR at line 1061: egrep -o '^synOCR.*.log$': No such file or directory
Hab dann mal eine Datei erzeugt, dann war das weg.
Jetzt gibt es
Code:
ERROR - pdfinfo found
ERROR at line 1225: pagecount_new=$(( $(get_key_value ./etc/counter pagecount) + $pagecount_latest))
ERROR at line 1226: ocrcount_new=$(( $(get_key_value ./etc/counter ocrcount) + 1))

Davon abgesehen ist das Script aber durchgelaufen. Danach ist dann auch der Button da.
 

steve45

Benutzer
Mitglied seit
26. Mrz 2021
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Sieht so aus, als wäre pdfinfo gar nicht installiert und dein Script erwartet das aber. Müsste da die Fehlermeldung nicht heissen "ERROR - pdfinfo NOT found"?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Das ist richtig - pdfinfo liegt für aarch64 nicht bei. Da habe ich noch kein Staticbuild, bzw. wo die Abhängkeiten auf der DS vorhanden sind (pdftotext wird ja mit dem DSM und entsprechenden Abhängigkeiten mitgeliefert) gefunden. Wäre toll, wenn du da was finden könntest.

Das ist für den Betrieb nicht wichtig, lediglich für die Statistik. Wird pdfinfo nicht gefunden, so wird einfach die Seitenzahl auf 0 festgelegt und entsprechend nicht hochgezählt (so sollte es jedenfalls sein).

Bzgl. der Fehler in Zeilen 1225 & 1226: Das liegt am Programm get_key_value. Das gibt aus mir unerklärlichen Gründen immer einen Exitstatus 1 aus (auch, wenn alles funktioniert). Das hat keinen Einfluss auf die Funktionsweise.

Werden PDFs jetzt korrekt bei dir abgearbeitet?
Es gibt noch wenig Erfahrung mit der aarch64-Architektur. Vielleicht müssen wir hier und da noch etwas justieren …
 
Zuletzt bearbeitet:

steve45

Benutzer
Mitglied seit
26. Mrz 2021
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Der Docker Container mit dem ocrmypdf von andy008 läuft, das war schon im mit meinem Script kein Problem. Die PDFs sind also okay. Was ich an der Doku zum Sortieren in Folder immer noch nicht verstehe: wie kann ich denn Unterordner im Ausgabeverzeichnis erzeugen? Evtl. sogar mehrere z.B. 2021_03_27/Rechnung/Versicherung

Welche Platzhalter werden denn ersetzt beim Ausgabe Pfad?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Eigentlich so, wie es dokumentiert ist:
Wenn ein Pfad mit /volume… beginnt, wird er als absoluter Pfad behandelt. Ist das nicht der Fall (z.b. 2021_03_27/Rechnung/Versicherung) dann wird die Angabe relativ zum Ausgabeordner erstellt, also /volumeX/Zielordner/2021_03_27/Rechnung/Versicherung/DeinScan.pdf

Verständlich?
 

mf_2

Benutzer
Mitglied seit
31. Aug 2008
Beiträge
152
Punkte für Reaktionen
4
Punkte
18
Wie du vielleicht gesehen hast, haben wir ja gemeinsam mit @mf_2 versucht, synOCR auf aarch64 zum Laufen zu bekommen. Dort lief es ja noch nicht über die GUI (also der Dockeraufruf blieb hängen), aber wohl über den Aufgabenplaner. Auf meine letzte Anpassung hat er noch kein Feedback gegeben.
  • hast du den aktuellen Build verwendet?
  • hast du auch ein aarch64 Image von OCRmyPDF geladen?
PS:
Was ist das für Modell "DS220"? Meinst du die Junior Version?

Ich hatte doch Feedback gegeben, aber vllt. habe ich mich blöd ausgedrückt.
Ich hatte geschrieben: "Damit klappt es, sowohl über SSH als auch über das Webinterface! Juhu!"
Damit wollte ich ausdrücken, dass es über dein Webinterface (synOCR) nun auch geht. Nur braucht die Syno recht lange für mein Test-PDF.
Du hattest danach ja nochmal den PATH angepasst - das konnte ich allerdings mangels Zeit nicht testen. Ggf. komme ich morgen dazu.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Sorry, ich dachte, es geht bisher nur via Shell, weil es ja über die GUI hängen blieb. Umso besser :)
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
synOCR v1.1.0

Hallo zusammen,

die gesammelten Änderungen wurden mal wieder in ein Release gegossen.
Bitte habt Nachsicht, wenn noch nicht jeder persönliche Wunsch eingeflossen ist.

IMPLEMENTIERUNGEN:
  • Option hinzugefügt, den Tag-Namen über RegEx zu definieren (Parameter tagname_RegEx: <RegEx> im YAML-File)
  • Zähler für verarbeitete Seiten und Dateien pro Profil hinzugefügt (nur x86_64)
  • zusätzliche Umbenennungsparameter hinzugefügt:
    §hhsource §mmsource §sssource §hhnow §mmnow §ssnow §pagecounttotal §filecounttotal §pagecountprofile §filecountprofile
  • Unterstützung für CPU aarch64 (Statistik funktioniert nur eingeschränkt, da pdfinfo fehlt)
  • verbesserte Datumssuche / zu ignorierende Daten können in der GUI angegeben werden (Danke an @DeeKay1 )
BUGFIXES:
  • Tagsymbol mit Leerzeichen funktioniert nicht
  • Zieldatei wird kopiert, wenn keine Hardlinks erstellt werden können (erweiterte Prüfung)
  • es wird nicht mehr mit expr gerechnet
  • 'beenden erzwingen' (GUI) beendet jetzt auch den Docker-Container synOCR
  • kleinere Fehlerbehebungen
 
Zuletzt bearbeitet:

tag

Benutzer
Mitglied seit
18. Jan 2021
Beiträge
32
Punkte für Reaktionen
2
Punkte
8
Wozu ist der Zeitplan gut? Reagiert synOCR nicht per inotifywait auf die Erstellung einer PDF-Datei? Wenn nein: Warum nicht?
(ich hätte gerne diesen Thread durchsucht nach inotify, habe aber leider die Funktion zur Suche innerhalb eines Threads nicht gefunden)

Man könnte beispielsweise stündlich überwachen, ob der Prozess noch aktiv ist, der die Überwachung des Verzeichnisses nach Erstellung einer PDF-Datei per inotify durchführt. Wenn nicht, wird er gestartet. Und wenn eine Datei auftaucht, wartet dieser Prozess eine einstellbare Zeit, ob a) die Datei fertiggeschrieben ist und b) noch andere Dateien auftauchen. Ist die neueste Datei älter als die Wartezeit, wird die Funktion ausgeführt. Ich kann dabei auch gerne etwas helfen, wenn nötig.

Es ist IMHO überhaupt nicht sinnvoll, den ganzen Kladderadatsch zu starten, wenn eh keine neuen Dateien da sind. Und eine Stunde warten möchte ich auf gar keinen Fall: Wenn ich etwas scanne, dann brauche ich das Ergebnis in etwa 50% der Fälle sofort danach.

Woran erkennt synOCR eigentlich eine existierende exiftool-Installation? Bei mir existiert exiftool, ruft man es auf, erscheint seine Hilfe. Ich benutze es ja auch regelmäßig. Allerdings habe ich die Datei selbst geschrieben:
Code:
root@(dsname):~# which exiftool
(PfadinPath)/exiftool
root@(dsname):~# cat (PfadinPath)/exiftool
(PfadinPath)/Image-ExifTool-12.22/exiftool "$@"

Im Log von synOCR steht, dass exiftool nicht gefunden wurde. Wieso das?

Ich habe synOCR erst einmal zum Testen ausgeführt und bin noch nicht sicher, ob ich es dauerhaft auf diese Weise möchte. Ein OCR zu verwenden erscheint mir aber sinnvoll, auch wenn beim ersten Test die Datei 50% gewachsen ist.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Tag tag :)

ich werde mal versuchen, auf jeden Gedanken einzugehen:
habe aber leider die Funktion zur Suche innerhalb eines Threads nicht gefunden
Im Suchfeld gibt es eine Listbox - dort kannst du den Suchbereich auswählen (Standard ist 'Überall').

Es ist IMHO überhaupt nicht sinnvoll, den ganzen Kladderadatsch zu starten, wenn eh keine neuen Dateien da sind
Bisher wurden schon Dockerlösungen via Watchdog ect. vorgeschlagen. Das fand ich bisher nicht zielführend. Dann läuft letztendlich mehr. Je nach Konfiguration und Profilanzahl gibt es auch mehrere Inputordner die zu überwachen wären.

Derzeit wird lediglich das Startskript gestartet, welches alle Inputordner absucht und ggf. synOCR startet. Das ist ratzfatz erledigt und benötigt kaum Ressourcen.

Und eine Stunde warten möchte ich auf gar keinen Fall
Dann verzichte auf den internen Aufgabenplaner. Auf den müssen wir ab DSM7 eh verzichten, weil synOCR zum Anpassen von cron root-Rechte benötigt. Den gleichen Eintrag kannst ja auch über den DSM-Aufgabenplaner anlegen - und hier auch für jede Minute. Einfach dieses Skript aufrufen lassen: /usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh

Woran erkennt synOCR eigentlich eine existierende exiftool-Installation?
synOCR sucht auch nur in $PATH (guckst du hier). Das Problem in diesem Fall wird sein, dass $PATH nicht überall im System gleich verfügbar ist, weshalb die Variable hier selbst aufgebaut wird. Ich würde dir empfehlen, einfach einen Link in ein entsprechendes Verzeichnis zu setzen.

Ein OCR zu verwenden erscheint mir aber sinnvoll, auch wenn beim ersten Test die Datei 50% gewachsen ist.
Bei mir werden sie in der Regel kleiner. Da kannst du sicherlich noch etwas mit den OCRmyPDF-Parametern experimentieren.

Ich kann dabei auch gerne etwas helfen, wenn nötig.
Das ist immer prima - da freue ich mich und alle, die vom Ergebnis profitieren :cool: Hier ist die Werkstatt.
Bitte schreibe mir eine PN, wenn du ein Konto haben möchtest.

Ich hatte mit inotifywait schonmal experimentiert - aber mit leidlichem Erfolg. Meines Wissens ist es auch nicht im DSM enthalten.

Vielleicht wäre das ja nochmal ein Versuch wert.


Vielen Dank für dein Feedback!
 
  • Like
Reaktionen: tag

abrocksi

Benutzer
Mitglied seit
27. Dez 2013
Beiträge
250
Punkte für Reaktionen
81
Punkte
28
Hi geimist,

ich bin großer Fan Deiner Lösung und habe sie seit 2019 im Einsatz. Seit dem letzten Update auf 1.1.0 bekomme ich aber diese Fehlermeldung:

ERROR at line 1226: pagecount_new=$(( $(get_key_value ./etc/counter pagecount) + $pagecount_latest))
ERROR at line 1227: ocrcount_new=$(( $(get_key_value ./etc/counter ocrcount) + 1))
ERROR at line 1228: pagecount_ID_new=$(( $(get_key_value ./etc/counter pagecount_ID${profile_ID}) + $pagecount_latest))
ERROR at line 1229: ocrcount_ID_new=$(( $(get_key_value ./etc/counter ocrcount_ID${profile_ID}) + 1))

? search tags and date:
source for tags is yaml based tag rule file [/volume1/homes/scanbot/Input/_TagConfig_[profile_DM].txt]
validate the integrity of yaml-file:
ERROR at line 606: yamlcheck=$(yq v "${taglist}" 2>&1)
ERROR-Message: synOCR.sh: line 606: yq: command not found
ERROR at line 606: yq v "${taglist}" 2>&1


Wobei mich das Thema "pagecount" nicht so stören würde. Aber gravierender ist das Thema "Tags". Ich habe zwei verschiedene Profile getestet, die Tagdatei durch den YAML-Validator gejagt, die Pfade erneut eingegeben und per GUI gespeichert, aber das Programm beachtet die Tagvorgaben nicht mehr. Es bricht mit der Fehlermeldung ab und hinterlässt im Output-Ordner die Datei wie folgt: temp_SCN_0004_1617351098.pdf

Hier noch mein Setup:
synOCR-user: root
synOCR-version: 1.1.0
Architecture: x86_64
DSM-build: 25426
Device: 216plusII (3100591447)
current Profil: DMS
DB-version: 4
used image (created): jbarlow83/ocrmypdf-polyglot:latest (2019-04-23T10:18:44)
used ocr-parameter: -srd -l deu
replace search prefix: yes
renaming syntax: §yocr.§mocr.§docr_§tag
Symbol for tag marking: #
source for filedate: ocr
ignored dates by search: 2021-02-29;2020-11-31
Docker Test: OK
Loglevel: normal
Application Directory: /usr/syno/synoman/webman/3rdparty/synOCR
Source directory: /volume1/homes/scanbot/Input/
Target directory: /volume1/homes/scanbot/Output/
BackUp directory: /volume1/homes/scanbot/Backup/


Könntest Du Dir das bitte einmal anschauen? Danke

cheers,
abrocksi
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Du hattest doch schon gestern geschrieben, oder? Als ich antworten wollte, war deine Frage wieder weg - ich hatte mich schon gefreut :)

Die ersten 4 Fehler sind eigentlich gar keine. Das Errorlogging wurde etwas verbessert, allerdings gibt das Synologyeigene Tool get_key_value immer den Exitstatus 1 statt 0 zurück, weshalb das Errorlogging von einem Fehler ausgeht. Es sollte aber alles funktionieren.

Zum anderen Problem:
Hier wird das mitgelieferte Programm yq nicht gefunden. Ich musste für die Anpassung an die aarch64-Architektur auch etwas an der $PATH-Variablen (also der Pfad, wo nach Programmen gesucht werden soll) ändern. Aber bei mir funktioniert es (und scheinbar auch bei vielen anderen).

Wie genau rufst du synOCR auf?
 

abrocksi

Benutzer
Mitglied seit
27. Dez 2013
Beiträge
250
Punkte für Reaktionen
81
Punkte
28
Sehr aufmerksam. Tatsächlich hatte ich gestern schon mal gepostet und dann aber gelöscht, weil es kurzzeitig ging.

Ich rufe eigentlich per Aufgabenplaner das Script auf (bash /usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh), hatte aber jetzt mal direkt über die Shell beide Varianten (synOCR.sh 3 bzw. synOCR-start.sh) getestet, um das Fehlerprotokoll zu sehen. Bzw. man sieht ja dann auch auf der Shell wie er alle Tag-Regeln durchgeht und -prüft (Klasse sieht das aus!). Im Moment aber macht er es aber nicht.

cheers,
abrocksi
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Also du brauchst kein bash vor den Skriptpfad setzen, aber daran sollte es ja nicht liegen … :unsure:
  • Funktioniert es über den Button auf der Statusseite in der GUI?
  • Bitte mal auf der Shell oder Aufgabenplaner nur diesen Pfad testen (vor allem auch nichts danach! [Leerzeichen ect.]):
    /usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh
hatte aber jetzt mal direkt über die Shell beide Varianten (synOCR.sh 3 bzw. synOCR-start.sh) getestet, um das Fehlerprotokoll zu sehen. Bzw. man sieht ja dann auch auf der Shell wie er alle Tag-Regeln durchgeht und -prüft (Klasse sieht das aus!).
Ich habe leider noch nicht ganz verstanden, ob du von einem Test vor- oder mit dem Problem getestet hast.
 

abrocksi

Benutzer
Mitglied seit
27. Dez 2013
Beiträge
250
Punkte für Reaktionen
81
Punkte
28
Start synOCR2.PNG

Über die GUI startet es zwar, bleibt aber hängen und findet die Tags-Datei offenbar nicht.

Hier das Log:

----------------------------------
| ==> Funktionsaufrufe <== |
----------------------------------
ERROR at line 1226: pagecount_new=$(( $(get_key_value ./etc/counter pagecount) + $pagecount_latest))
ERROR at line 1227: ocrcount_new=$(( $(get_key_value ./etc/counter ocrcount) + 1))
ERROR at line 1228: pagecount_ID_new=$(( $(get_key_value ./etc/counter pagecount_ID${profile_ID}) + $pagecount_latest))
ERROR at line 1229: ocrcount_ID_new=$(( $(get_key_value ./etc/counter ocrcount_ID${profile_ID}) + 1))

PROCESSING: ➜ SCN_0002.pdf (Fri Apr 2 11:04:18 CEST 2021)
temp. target file: /tmp/tmp.jsOvAVPaS9/SCN_0002.pdf

➜ OCRmyPDF-LOG:
INFO - reading file from standard input
INFO - 1: page is facing ⇧, confidence 5.51 - no change
INFO - Optimize ratio: 1.00 savings: 0.0%
INFO - Output sent to stdout
↠OCRmyPDF-LOG-END

target file (OK):
➜ search tags and date:
source for tags is yaml based tag rule file [/volume1/homes/scanbot/Input/_TagConfig_[profile_Dokumentenmanagement].txt]
validate the integrity of yaml-file:
ERROR at line 606: yamlcheck=$(yq v "${taglist}" 2>&1)
ERROR-Message: [31m11:05:16 main [ERRO][0m yaml: invalid trailing UTF-8 octet
ERROR at line 606: yq v "${taglist}" 2>&1
-----------------------------------
| synOCR exit with ERROR! |
-----------------------------------

cheers,
abrocksi
 

abrocksi

Benutzer
Mitglied seit
27. Dez 2013
Beiträge
250
Punkte für Reaktionen
81
Punkte
28
Muss ich ggf. eine andere Codierung im Texteditor einstellen, weil hier jetzt UTF-8 auftaucht?
 


 

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