synOCR synOCR - GUI für OCRmyPDF

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Da hast du Recht. Allerdings heißt OCRmyPDF in Docker "synOCR".
Das verstehe ich nicht. Bei mir gibt es keinen Container synOCR und in den Images findet sich nur jbarlow83/ocrmypdf, der jedes Mal aufgerufen und wieder beendet wird – von synOCR.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Der OCRmyPDF-Container wird von synOCR mit dem Parameter --name synOCR aufgerufen. Entsprechend sollte er auch so bei den aktiven Containern erscheinen.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Sorry, ich stand da auf dem Schlauch – @stdr arbeitet ja tausende PDFs ab, ich habe bisher noch nie beim Abarbeiten in Docker geschaut, ich sehe deshalb nur das Image.
 

usefulvid

Benutzer
Mitglied seit
12. Sep 2018
Beiträge
57
Punkte für Reaktionen
3
Punkte
14
Ich habe noch was gefunden bei der inotify Lösung:
meine Ordner sind alle verschlüsselt. Sobald neustarte sind sie also nicht verfügbar.
Synocr ist im autostart.
Bei der Konstellation sehe ich zwar den laufenden Prozess von synocr aber es werden keine PDFs verarbeitet.
Hat der ein Problem damit wenn beim Start die Ordner fehlen?
Wenn ich nachträglich im Aufgabenplaner die Aufgabe starte ist alles wie gewohnt
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Ja, das klingt logisch. Dann erstelle mal eine Aufgabe in Verbindung mit dem booten:
Aufgabenplaner ➜ erstellen ➜ ausgelöste Aufgabe ➜ Hochfahren
mit diesem Befehl:
Bash:
sleep 30
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh start

Die 30 Sekunden hinter sleep musst du halt ggf. noch anpassen.
 

usefulvid

Benutzer
Mitglied seit
12. Sep 2018
Beiträge
57
Punkte für Reaktionen
3
Punkte
14
Ja, das klingt logisch. Dann erstelle mal eine Aufgabe in Verbindung mit dem booten:
Aufgabenplaner ➜ erstellen ➜ ausgelöste Aufgabe ➜ Hochfahren
mit diesem Befehl:
Bash:
sleep 30
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh start

Die 30 Sekunden hinter sleep musst du halt ggf. noch anpassen.
Die Ordner muss ich manuell entschlüsseln. Eine feste Zeit ist leider keine Lösung. Vll muss ich eine Schleife machen die so lange läuft bis die Ordner verfügbar sind
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Theoretisch testet das synOCR auch. Allerdings benötigt diese Funktion Root-Rechte, weshalb das mit dem synOCR-Paketuser nicht funktioniert.

Die verschlüsselten Ordner kannst du dir hiermit ausgeben lassen:
/usr/syno/sbin/synoshare --enum ENC
 
  • Like
Reaktionen: peterhoffmann

usefulvid

Benutzer
Mitglied seit
12. Sep 2018
Beiträge
57
Punkte für Reaktionen
3
Punkte
14
Theoretisch testet das synOCR auch.
Aber nur sehr begrenzt
Code:
synOCR run at DSM7 or above
    ➜ check admin permissions: ok
    ➜ check docker group and permissions: ok [docker:x:65536:synOCR]
synOCR wurde gestartet ...
Bitte warten, bis die Dateien fertig abgearbeitet wurden.
! ! ! Quellverzeichnis oder Berechtigung in der Konfiguration prüfen ! ! !
Programmlauf wird beendet.
loop count: 11
! ! ! ERROR: failed to start monitoring after 11 trys
synOCR run at DSM7 or above
    ➜ check admin permissions: ok
    ➜ check docker group and permissions: ok [docker:x:65536:synOCR]
synOCR wurde gestartet ...
Bitte warten, bis die Dateien fertig abgearbeitet wurden.
! ! ! Quellverzeichnis oder Berechtigung in der Konfiguration prüfen ! ! !
Programmlauf wird beendet.


edit:
damit klappts:

Code:
while ! [ -d /path/to/folder ];
do
        echo "does not exist"
        sleep 60
done
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh start
 
Zuletzt bearbeitet:

geimist

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

Thlat

Benutzer
Mitglied seit
11. Jul 2022
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Hallo.

Ich hab SynOCR mittlerweile installiert und bin beeindruckt. Genau was ich gesucht habe mit einer kleinen Einschränkung, von der ich aber nicht weiß, ob sie nicht vielleicht doch realisiert ist und ich sie nur noch nicht gefunden haben.

Was ich suche ist die Möglichkeit, ein ganzes Verzeichnis mit Unterordnern in den Eingangsordner zu ziehen, die OCR-Verarbeitung zu starten und dann schaut das Programm nicht nur auf PDFs die im Stamm-Eingangsordner liegen sondern auch in sämtlichen Unterordnern und baut den gleichen Ordnerbaum auch im Ausgangsordner an und die verarbeiteten Dateien in die entsprechenden Unterordner.

Geht das und ich hab es nur übersehen oder ist das nicht möglich?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
  • Like
Reaktionen: geimist

Thlat

Benutzer
Mitglied seit
11. Jul 2022
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Danke.

Ich hab es in den Aufgabenplaner eingetragen und die drei Ordner definiert. Die erste Ausführung des Scriptes hat funktioniert, die Dateien wurden mit Index-Nummern versehen und in den Eingangsordner von synOCR kopiert (Beispiel 1664742005700068182_Dateiname.pdf, ich hab sie durchlaufen lassen und nun im Ausgangsordner die OCR-Dateien, die nun allerdings entsprechend den Standardeinstellungen von synOCR 2020-02-05__1664742005700068182_Dateiname.pdf heißen.

Anschließend hab ich das Script nochmal rüberlaufen lassen aber das Zurückspielen funktioniert nicht. Zuerst dachte ich, es läge sicher am Datum, das vor der Indexnummer angefügt worden ist, also habe ich das noch entfernt, so dass die Dateien wieder wie nach dem ersten Script durchlauf hießen und habe das Script nochmal gestartet.

Ach das ging leider nicht, die Dateien liegen weiterhin im synOCR-Ausgangsordner.

Ich muss einräumen, meine Fähigkeiten, diese Scripte zu lesen ist nicht sonderlich ausgeprägt, daher wollte ich mal in die Indexdatei schauen aber ich kann aus dem Script nicht den Ordner herauslesen, in dem sie liegt.

Das muss sich ja irgendwo hierin verstecken:

echo "${ID}§_§${FILEPATH}§_§${FILENAME}" >> "$INDEXFILE"

Aber die Pfad- und Namens-Variablen kann ich nicht ganz durchschauen.

Wie/Wo finde ich die Index-Datei?

Und ist das vorangestellte Datum tatsächlich das Problem?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Das Skript hat nicht viele Fehlerprüfungen. Deshalb ist es so wichtig, genau die Informationen zu beachten.
U.a.:
WICHTIG: synOCR-Profil ohne Umbenennungssyntax
es empfiehlt sich ein Test mit einer Beispielverzeichnisstruktur
Du hattest wohl eine Umbenennungssyntax definiert, weshalb es zu dem Fehler kam, dass die Dateien nicht mehr zugeordnet werden konnten.

Nach dem zweiten Skriptlauf, wird die Indexdatei umbenannt, um den Vorgang als abgeschlossen zu kennzeichnen.
Die Indexdatei sollte neben deinem Skript mit dem Namen multidir_workflow_INDEX.txt erstellt worden sein. An welchem Pfad hast du das Skript gespeichert?

Nach dem zweiten Skriptlauf wird die Indexdatei zu multidir_workflow_INDEX.txt_finish umbenannt. Um sie erneut zu verwenden, musst du lediglich _finish am Ende löschen.
 
Zuletzt bearbeitet:

Thlat

Benutzer
Mitglied seit
11. Jul 2022
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
OK. Das Thema hat sich wegen allgemeinem DAU-Status als schwierig erwiesen. Ich dachte tatsächlich, man muss den Quellcode direkt in den Task des Ausführungsplaners kopieren. Was natürlich das führt, dass es keinen Ausführungsordner gibt und folglich keinen Ort, an den die Index-Datei abgelegt wird und folglich keine Indexdatei.

Daher funktioniert der erste Schritt, Umbenennen und Verschieben in den synOCR-Eingang, aber der zweite Schritt, Zurückverschieben und wieder in den alten Namen umbenennen, geht nicht.

Zu meiner eher schlechten Entschuldigung: Ich hab bislang nur ein einziges Mal überhaupt irgendwo ein Skript in der Synology verwenden müssen und da folgte ich einem YouTube-Videotutorial, wo das genau so gemacht wurde, also Quelltext einfach direkt in den Task. Ich wusste überhaupt nicht, dass man die auch als *.sh-Dateien ablegen und im Task einfach nur den Pfad aufrufen kann.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Dann lieber 2x vorher fragen, als einfach ‚irgendetwas‘ auf der Shell zu tun‼️

Im Skript ist in der 3. Zeile ein Tutorial verlinkt. Hast du dir das mal angesehen?
Hast du ein Backup des Quellordners (wie im Skript angeraten)?

Wir können das gerne gemeinsam durchgehen, falls dir das Schritt-für-Schritt-Tutorial nicht genügt. Aber dann vielleicht in einem separaten Thread, sofern du das nochmal in Angriff nehmen möchtest.
 

Thlat

Benutzer
Mitglied seit
11. Jul 2022
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Hallo.

Ne, jetzt ist alles klar, hatte ja bisher auch nur mit Test-Ordnern gearbeitet.

Und ja, das Tutorial hatte ich dann auch entdeckt und durchgearbeitet. Damit ging es dann. Vielen Dank für die ganze Mühe.
 
  • Like
Reaktionen: geimist

sub2010

Benutzer
Mitglied seit
19. Jan 2021
Beiträge
105
Punkte für Reaktionen
7
Punkte
18
Hallo Zusammen,

ich habe öfters das Problem das PDF Dokumente "Verschlüsselt" sind. Eine Passwort Eingabe ist nicht notwendig. Ein OCR Scan ist dadurch nicht möglich, ich muss dann händisch mit PDF24 den Passwortschutz entfernen.
Kann das Feature nachgeliefert werden?
Viele Grüße
suB
 

geimist

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

das automatisch umzusetzen (dessen Weg mir aktuell auch nicht bekannt ist), halte ich z.T. rechtlich für problematisch. Zugriff auf ein Dokument zu haben bedeutet ja nicht, dass man auch Eigentümer ist.
 
  • Like
Reaktionen: Gthorsten

Thlat

Benutzer
Mitglied seit
11. Jul 2022
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Hallo.

Ich hab eine Frage zu den Tags und hoffe, sie ist in den 3000 Beiträgen vorher nicht schon drin gewesen, die Suchfunktion hat mich nicht weitergebracht:

Ich habe Tags definiert und dafür auch verschiedene Speicherordner angelegt, was hervorragend funktioniert.

Z.B. die Tags und Ordner „Rechnung“ und „Kontoauszug“.

Natürlich steht aber auch in jedem Kontoauszug - und gerne am Monatsanfang auf Seite 1, auch irgendwo sowas wie Rechnung oder Rechnungsnummer im Betreff einer Überweisung. Ich möchte aber dennoch, dass der Kontoauszug ausschließlich im Ordner Kontoauszug landet. Meine erste Vermutung, dass die Tag-Konfigurationsliste einfach der Reihe nach abgearbeitet wird und mal also nur das Tag „Kontoauszug“ vor dem Tag „Rechnung“ eintragen muss, war leider nicht richtig, es kam zu Dokumentendoppelungen.

Also habe ich folgendes in die Liste eingetragen:

TagKontoauszug:
tagname: Kontoauszug
targetfolder: "/Kontoauszug/"
condition: all
subrules:
- searchstring: Kontoauszug
searchtyp: contains
isRegEx: false
source: content
casesensitive: false

TagRechnung:
tagname: Rechnung
targetfolder: "/Rechnung/"
condition: all
subrules:
- searchstring: Rechnung
searchtyp: contains
isRegEx: false
source: content
casesensitive: false
- searchstring: Kontoauszug
searchtyp: does not contain
isRegEx: false
source: content
casesensitive: false

Ich interpretiere das so, dass jedes Dokument in dem das Wort „Kontoauszug“ vorkommt auch das entsprechende Tag bekommt, dass aber jedes Dokument, das das Wort „Rechnung“ enthält nur dann das Rechnungs-Tag bekommt, wenn im Dokument gleichzeitig nicht das Wort „Kontoauszug“ steht.

Leider funktionierte das so nicht, ich habe weiterhin gedoppelte Kontoauszüge im Rechnungs-Ordner und Kontoauszugs-Ordner, weil dennoch beide Tags vergeben worden sind. Was mache ich falsch?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Meine erste Vermutung, dass die Tag-Konfigurationsliste einfach der Reihe nach abgearbeitet wird … war leider nicht richtig
Korrekt. Die alphabetische Reihenfolge der Regelnamen definiert die Reihenfolge der Abarbeitung.

Ich interpretiere das so, dass jedes Dokument in dem das Wort „Kontoauszug“ vorkommt auch das entsprechende Tag bekommt, dass aber jedes Dokument, das das Wort „Rechnung“ enthält nur dann das Rechnungs-Tag bekommt, wenn im Dokument gleichzeitig nicht das Wort „Kontoauszug“ steht.
Auch korrekt. Ich habe es gerade mit einem Testdokument bei mir getestet und es funktioniert wie gewünscht.
Du kannst ja mal auf das Loglevel 2 stellen. Dann werden dir auch die Matches der Subrules aufgelistet.

YAML:
TagKontoauszug:
    tagname: Kontoauszug
    targetfolder: "/Kontoauszug/"
    condition: all
    subrules:
    - searchstring: Kontoauszug
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
TagRechnung:
    tagname: Rechnung
    targetfolder: "/Rechnung/"
    condition: all
    subrules:
    - searchstring: Rechnung
      searchtyp: contains
      isRegEx: false
      source: content
      casesensitive: false
    - searchstring: Kontoauszug
      searchtyp: does not contain
      isRegEx: false
      source: content
      casesensitive: false

PS: Bitte YAML-Code auch also solchen posten. Sonst erkennt man nur schlecht Syntaxfehler.
 


 

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