synOCR synOCR - GUI für OCRmyPDF

Ich habe mal eben in meinem Download-Ordner nachgesehen und habe festgestellt, dass ich die BETA vom 13.03. installiert hatte. Nun habe ich die aktuelle BETA heruntergeladen, weil ich die Geschwindigkeit testen wollte. Das fühlt sich ja an, wie eine neue Anwendung. Ich hatte ja mal geschrieben, dass bei mir das Speichern von Profiländerungen ca. 14 Sekunden und mehr gedauert hat. Das geht jetzt quasi in Echtzeit. WAHNSINN!!! Besten Dank.
 
  • Love
Reaktionen: geimist
Ich hätte da mal eine Anfängerfrage: Wie kann ich mehrere Profile in inotify anlegen? Derzeit funktioniert nur das Profil "default". Ein anderes Profil aus SynOCR wurde von inotify nicht erkannt und hat deshalb SynoCR nicht automatisch ausgelöst.
Nun würde ich gerne zwei Profile parallel nutzen, die unterschiedliche Ordner überwachen. Gibt es eine Möglichkeit inotify zu konfigurieren?
 
Wie kann ich mehrere Profile in inotify anlegen?
Das geht ganz automatisch. Allerdings ist dafür eine Neustart der Ordnerüberwachung nötig.
  • Falls die Überwachung von root im Aufgabenplaner gestartet wurde, musst du auch darüber einen Neustart (gleicher Befehl wie beim einrichten mit den Berechtigungen und anschließendem [FONT=Monaco, Menlo, Consolas, Roboto Mono, Andale Mono, Ubuntu Mono, monospace]…sh start[/FONT]) auslösen. Läuft inotify über root, fehlt in der GUI der Neustart Button.
  • Ist das Profil aktiviert?
  • Unterscheiden sich die Quellordner oder der Präfix?
  • Ist der Pfad des Quellordners korrekt (= grüner Haken dahinter)?



@Yippie

Funktioniert das wie gewünscht❓
 
Dein Wohl hat mir keine Ruhe gelassen :giggle:

Ich hatte mich bei dieser Variable analog an tagname_regex orientiert. Aber ich finde es auch wie von dir gewünscht besser.
Bitte probiere mal hiermit: synOCR_DSM7_local_BETA.spk
Ok, nun getestet und funktioniert (y)

Bei Verwendung bzw. Angabe des Schlüssels dirname_RegEx ohne weitere Verwendung, passiert jetzt mit der Beta-Version wie erwartet nichts.
Weder der finale Dateiname wird beeinflusst, noch wird unnötigerweise ein Verzeichnis erstellt:
YAML:
RULE_001:
    tagname: §yocr4-§mocr-§docr Prämie §tagname_RegEx
    targetfolder: "Gehalt/"
    tagname_RegEx: (?i)(Jahr.*)\s*\K.*((19|20)\d{2})
    dirname_RegEx: (?i)(Jahr.*\d{4})
    multilineregex: false
    condition: all
    subrules:

Wird hingegen die Variable §dirname_RegEx im Schlüssel targetfolder eingesetzt, dann wird entsprechend dem RegEx ein (Unter-)Verzeichnis im Ausgabepfad erstellt, bspw. .\Gehalt\Jahr_2024 und dorthinein die PDF-Datei kopiert.
YAML:
RULE_001:
    tagname: §yocr4-§mocr-§docr Prämie §tagname_RegEx
    targetfolder: "Gehalt/§dirname_RegEx"
    tagname_RegEx: (?i)(Jahr.*)\s*\K.*((19|20)\d{2})
    dirname_RegEx: (?i)(Jahr.*\d{4})
    multilineregex: false
    condition: all
    subrules:

Was mich ein wenig stutzig macht ist die Tatsache, dass mein RegEx eigentlich den Text "Jahr 2024" finden sollte, was vom Prinzip auch funktionierte, allerdings hat das dabei erstellte Unterverzeichnis auf einmal einen Unterstrich im Namen, der so nicht im Text existierte: Jahr_2024.

Im erkannten Text ist (Auszug aus dem Log bzw. der protokollierten .txt Datei): Kein Underscore zwischen Jahr und 2024 vorhanden:
ngen das Jahr 2024 für uns alle

Was kann hier der Grund dafür sein?

Aber zurück zum eigentlichen Test: Funktioniert wunderprächtig - Vielen Dank dafür👌 Ich und die Gemeinde danken :)
 
Was kann hier der Grund dafür sein?
Ich vermute, dass es sich hier um eine Absicherung handelt, um die Pfadkompatibilität des RegEx-Ergebnisses zu garantieren.
Vielleicht findet er ja auch eine andere Stelle, da du für dirname_regex ja beliebige Trennzeichen (.*) aktzeptierst. Vielleicht hilft es bereits, wie in tagname_regex direkt nur Leerzeichen zu aktzeptieren: (?i)(Jahr\s*\d{4})

Der Fund wird im Log protokolliert: search RegEx for dir ➜

Ich werde nochmal auf die Pirsch gehen.

Freut mich, dass er erstmal geht. Vielen Dank fürs Feedback.

Edit: Ursache gefunden :)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Yippie
Moin,

ich wollte gestern einige PDF-Dokumente texterkennen lassen, musste aber leider feststellen, dass diese durch die Texterkennung sehr starke Qualitätsverluste haben. Die Schrift ist nach dem OCR-Vorgang sehr pixelig. Dieses Verhalten hatte ich beim letzten Scannen nicht (ist auch schon etwas her). Ich habe nun mit den verschiedenen Dockerimages getestet und stelle überall eine gleichbleibend schlechte Textqualität fest. Gibt es eine Möglichkeit dies über die Einstellungen von synOCR zu verbessern?

synOCR: 1.4.99.10
Image: latest
Optionen: -srd -l deu

Gruß
Nils
 
Vielleicht hast du die Farbanpassung aktiviert? Die wurde in der ersten Beta damit fälschlicherweise standardmäßig aktiviert.
 
Ach klasse, das wars. Ich hatte die Einstellung gesehen, hatte es aber so interpretiert, dass diese per Standard auf 40 steht und mir deswegen nichts weiter dabei gedacht. Vielen Dank! :)
 
  • Like
Reaktionen: Yippie und geimist

📦 SPK DOWNLOAD: DSM6 | DSM7

⚠️ bekannte Probleme / Einschränkungen / known issues / limitations:​

Geräte mit einer ARM64 / aarch64 CPU werden mit dieser Version aufgrund von Python-Inkompatibilität nicht unterstützt❗️​


Folgende Funktionen erwarten dich mit dem Update auf synOCR Version 1.5.0:​

(The complete changelog in english language can be found here.)


🔥 neue Funktionen​

synOCR kann nun auf Wunsch Leerseiten erkennen und entfernen.
Für eine granulare Steuerung gibt es einen neuen Bereich in der GUI:
remove_blank_pages.png

In der Regel sollte der Hauptregler für die Empfindlichkeit ausreichen.

Dieser Wert bestimmt, wie stark der durchschnittliche Helligkeitswert des Bildes reduziert wird, um Leerseiten zu erkennen. Erhöhe den Wert (z. B. -40), um empfindlicher auf Inhalte zu reagieren (mehr Seiten als nicht leer erkennen). Verringere den Wert (z. B. -60), um strenger zu sein (mehr Seiten als leer erkennen).

In den Experteneinstellungen gibt es noch folgende Detaileinstellungen:

Funktion
Beschreibung
Text ignorierenIn den Standardeinstellungen wird jede Seite übersprungen, sobald mindestens ein Zeichen gefunden wird. Auf manchen Scans scheint aber Text auf einer leeren Seite von der Rückseite durch, was zu sinnlosem Text führen kann. Mit dieser Einstellung wird ausschließlich eine optische Prüfung durchgeführt.
Beschneiden (Breite) / Beschneiden (Höhe)Beschneidet den Erkennungsbereich um angegebene Prozent in der Breite, um störende Elemente wie Heftklammern oder Lochränder zu ignorieren. Passe die Werte an, wenn deine Dokumente ungewöhnliche Randbereiche haben (0.1 entsprechen 10%). Der Standardwert für die Breite ist 0.1 und für die Höhe 0.05.
max. Filtergröße (Rauschreduzierung)Entfernt kleine Störungen (wie Staub oder leichte Markierungen) durch Filteroperationen. Ein höherer Wert vergrößert den Radius des Filters (weiße Bereiche), um kleine schwarze Störpixel zu entfernen.
min. Filtergröße (Textverstärkung)Ein höherer Wert vergrößert den Radius des Filters (schwarze Bereiche), um Text klarer hervorzuheben. Höhere Werte wirken stärker.
Schwellwert schwarze PixelLegt den Grenzwert für den Anteil an nicht weißen Pixeln fest, um eine Seite als leer zu klassifizieren. Verringere den Wert, um strengere Kriterien für Leerseiten anzuwenden und erhöhe den Wert, um toleranter gegenüber leeren Seiten zu sein. Standardwert: 0.005
2ee5b21c-2087-4adc-8d6f-b25c3b4fbcf4


Funktion
Beschreibung
Schwellwert für schwarzweißDer Schwarzweiß-Modus erzeugt sehr kleine Dateien bei sehr gutem Kontrast und Schärfe. Für Textdokumente ohne wichtige Grafiken ist das ideal.
Der Schwellenwert bestimmt, ab welcher Helligkeit (0-255) ein Pixel als weiß interpretiert wird. Du kannst diesen Wert anpassen:
  • Niedrigerer Wert (z. B. 20):
    Mehr Pixel werden schwarz
  • Höherer Wert (z. B. 160):
    Mehr Pixel werden weiß
Empfohlener Wert: 40
deaktiviert ➜ Die Schwarzweiß-Konvertierung ist ausgeschaltet.
DPI AnpassungDie DPI Zahl muss bei Farbanpassungen definiert werden.
Wird kein Wert definiert, wird bei Farbanpassungen 300 DPI verwendet.
Ist die DPI Anpassung definiert, werden alle Dokumente entsprechend angepasst.
deaktiviert ➜ Die manuelle DPI Anpassung ist ausgeschaltet.
Kontrast AnpassungDurch die Anpassung des Kontrasts können undeutliche Scans verbessert werden.
deaktiviert ➜ Die Kontrast Anpassung ist ausgeschaltet.
Schärfe AnpassungDurch die Anpassung der Schärfe können undeutliche Scans verbessert werden.
deaktiviert ➜ Die Schärfe Anpassung ist ausgeschaltet.
Besonders bei CANON und ScanSnap Scannern ist das Verhalten zu beobachten, dass jede Seite einzeln auf die Netzwerkfreigabe des NAS gespeichert wird und für jede weitere Seite die bestehende PDF-Datei erneut geöffnet und geschlossen wird. Das triggert die Ordnerüberwachung Inotify (event: close_write) oder kann mit einem automatischen Zeitplan kollidieren.

Für diesen Zweck bietet synOCR nun ein Offset, d.h. ein Zeitversatz in Sekunden, bis eine Datei verarbeitet wurde.
Einstellbar ist ein Bereich von 0-120 Sekunden.

offset.png
Wenn die Protokollierung aktiviert ist, wird nun die Datei file_processing.log im Log-Ordner abgelegt, um einen schnellen Überblick über die Zieldateien zu erhalten.
Jede Quelldatei erhält einen Eintrag mit Zeitstempel und dem Vermerk unsuccessful. Wurde die Datei erfolgreich verarbeitet, wird unsuccessful durch den Pfad zur Zieldatei ersetzt. Damit lässt sich schnell nachvollziehen, ob alle Dateien wie gewünscht verarbeitet wurden und in welches Zielverzeichnis sie einsortiert wurden.
Mit dem neuen OCR-Parameter --keep_hash können nun die Quelldateien beibehalten werden.
Hierbei wird die Quelldatei für die Klassifizierung nur temporär verarbeitet und durchsucht, die Zieldatei ist aber letztendlich identisch mit der Quelldatei.

keep_hash.png
Es gibt Szenarien, wo ein Quelldokument bei jeder Seite aufgetrennt werden soll, ohne das jedes Mal ein Trennblatt verwendet werden soll. Dafür gibt es jetzt eine eigene Option in der GUI:

split_every_page.png
Der Key dirname_RegEx 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_subdir:
    tagname:
    targetfolder: /myPath/§dirname_RegEx
    dirname_RegEx: W2[56]-[0-9]{4}
    subrules:
    - searchstring: W2[56]-[0-9]{4}
      isRegEx: true



💎 Verbesserungen​

- [GUI] deutlich verbesserte GUI-Geschwindigkeit
- [GUI] duplizierte oder neu erstellte Profile werden sofort geladen / ausgewählt
- [shell] alle nicht alphanumerischen Zeichen im Zieldateinamen werden auf eins reduziert (issue #58)
- [GUI] wo möglich, wurden Textfelder und Optionsfelder durch Schieberegler und Schalter ersetzt
- [GUI] es gibt nun einen optischen Indikator, der einen Profilwechsel anzeigt (der redundante Button wurde entfernt)
- [shell] die RegEx D-M-Y, D.M.Y und D/M/Y in `search_all_numeric_dates` wurden geändert, um die Suche nach 2- und 4-stelligen Jahreszahlen zu ermöglichen. (#56 thx @dklinger)
- [shell] Bump apprise library to 1.9.2
- [GUI] Bump Bootstrap framework to 5.3.3 (thx @Tommes)
- [GUI] Bump jQuery to 3.7.1 (thx @Tommes)
- [GUI] ungültige Quellverzeichnisse wurden in der GUI angezeigt
- [shell] update `find_dates.py` von Version v0.4 ➜ v0.6 (thx @Gthorsten)
search_alpha_numeric_dates()
-change regex after user hint
search_alpha_numeric_dates()
- Optimierung der Suche nach kurzen Daten (jun., Apr. …)
- Bugfix Regex mit Leerzeichen nach Monat
- Protokollierung verbessert
- [shell] die Erkennung / Zählung von Duplikaten in der Zieldatei ist jetzt zuverlässiger
- [shell] Verwendung der nativen DSM-Berechtigungsanpassung
- [shell] Verbesserter Schutz der Quelldatei im Falle eines Fehlers



🛠️ Bugfixe​

- [shell] Such-Präfix und Such-Suffix wurden aus dem gesamten Dateinamen entfernt
- [shell] Dateinamen, die doppelte Anführungszeichen enthalten, führten zu einem Fehler
- [shell] Bugfix für Dateinamen mit einer Tilde
- [shell] update find_dates.py
Fehlerbehebung für Daten wie 15.6.2023
add language = de to dateparser (thx @dklinger)
- [shell] Fehlermeldung behoben `warning: ./synOCR.sh: line 780: command substitution: ignored null byte in input`
- [shell] fixing some minor bugs
- [shell] das Zählen der Seiten wurde von PyPDF auf pymupdf geändert, um einen Fehler (PDF EOF) abzufangen
 

Anhänge

  • adjust_color.png
    adjust_color.png
    70,4 KB · Aufrufe: 3
Zuletzt bearbeitet:
Hi!

Gerade habe ich ein Update auf die neueste Version gemacht.

Leider wird SynOCR Docker immer nach dem Import "unerwartet beendet".

Die Datei wird aber in das Ausgangsverzeichnis verschoben.
Die Umbenennung funktioniert aber nicht - der Dateiname bleibt derselbe.

Ich habe alles deinstalliert und nochmal neu aufgesetzt. Auch ein neues Profil erstellt - mit Standardeinstellungen bis auf Ordner im Ordner "/volume1/Scans/Eingang/" usw.

Inotify ist installiert, DSM 7.2 läuft, ich verwende keinen Prozessor, der als problematisch ausgewiesen wurde. Das docker image wurde auch frisch gezogen - die Standard Version.

Ich habe alle Umbennungs-Parameter auf default gelassen.

Nun komme ich nicht mehr weiter. Die Version 1.4.5 lief inklusive diverser Updates seit Jahren problemlos.

Wie kann ich dem auf den Grund gehen?

Die Protokolldatei meiner (in der alten Vesrion unproblematischen Test-Datei zeigt:


[2025-03-29_16-21-51] SOURCE: 2016-12-09 - Rechnung Belverdere 12-2016 - #Belvedere.pdf
➜ /volume1/Scans/Ausgang/2016-12-09 - Rechnung Belverdere 12-2016 - #Belvedere.pdf

Was kann ich tuen?

Schönes Wochenende allerseits!
jhess

p.s.: In der Übersicht erhalte ich:

Die Ordnerüberwachung läuft, kann aber nicht über die GUI gesteuert werden, da sie über den Aufgabenplaner mit dem Benutzer root gestartet wurde. Verwende den Aufgabenplaner, um sie zu beenden oder neuzustarten.

Wird die Aufgabe denn nicht mehr benötigt?

Im Wiki steht ab Version 1.3 könne inotify genutzt werden?
Was bedeuten diese Meldungen - die Aufgabe ist genau so angelegt, wie im Wiki beschrieben, einmal ausgeführt und aktiviert. So hat es mit der Version1.4.5 funktioniert...
 
Zuletzt bearbeitet:
Leider wird SynOCR Docker immer nach dem Import "unerwartet beendet".
Das ist ein kosmetisches "Problem" des aktuellen Container-Managers. Das habe ich bei vielen Containern. Tatsächlich werden sie aber korrekt beendet.

Die Protokolldatei meiner (in der alten Vesrion unproblematischen Test-Datei zeigt:

[2025-03-29_16-21-51] SOURCE: 2016-12-09 - Rechnung Belverdere 12-2016 - #Belvedere.pdf
➜ /volume1/Scans/Ausgang/2016-12-09 - Rechnung Belverdere 12-2016 - #Belvedere.pdf
Die Frage ist: Wie sollte sie denn heißen?
Um individuelle Probleme zu ergründen bräuchte ich ein Log und möglichst auch die Quelldatei und die Regeln.
Das kannst du mir auch persönlich zukommen lassen (Link in meiner Signatur).
 
Hallo Stephan!

Danke für Deine Antwort und Dein freundliches Angebot hier sogar in individuelle Konfigurationen reinzuschauen!

Das wird aber nicht nötig sein - ich konnte meine Schwierigkeiten jetzt auf zwei Kleinigkeiten begrenzen.

Erst mal: Die neue Version ist top! - Schneller und die neuen Optionen sind wirklich hilfreiche Erweiterungen. Mein Problem mit dem selben Dateinamen von In- und Out-Datei, lag an mir.

Mir war völlig entfallen, dass ich vor über einem Jahr mal "von Hand" den Titel wichtiger Dokumente aus dem Text-Layer kopiert und in die jeweiligen Dateien-Namen eingefügt hatte. Darum ging ich jetzt fälschlicherweise davon aus, SynOCR hätte sie mit "§tit" erstellt!

Das geht natürlich nicht ohne KI oder Handarbeit - mein Fehler!
Ich hatte "§tit" und "Titel der Original-Datei" nicht als Dateinamen, sondern als Dokumententitel verstanden.

Was ich noch nicht ganz verstehe, ist das Verhältnis von Inotify und der root Aufgabe - macht das Zeitintervall der Aufgabe noch einen Unterschied? Oder wird danit nur sicherheitshalber einmal pro Tag (z. B.) die Überwachung aktualisiert?

Die fehlerhaften, ständigen Systembenachrichtigungen bleiben etwas nervig - insbesondere wenn man die System-Push-Benachrichtigungen benötigt. Kann man die Meldungen für diese Fehler eventuellselektiv unterdrücken?

Danke und schönen Abend!
Jochen
 
Zuletzt bearbeitet:
Was ich noch nicht ganz verstehe, ist das Verhältnis von Inotify und der root Aufgabe - macht das Zeitintervall der Aufgabe noch einen Unterschied? Oder wird dann nur sicherheitshalber einmal pro Tag (z. B.) die Überwachung aktualisiert?
Wenn du inotify (also die Ordnerüberwachung) nutzt, kannst du die Aufgabe im Aufgabenplaner ganz deaktivieren.

Die fehlerhaften, ständigen Systembenachrichtigungen bleiben etwas nervig - insbesondere wenn man die System-Push-Benachrichtigungen benötigt. Kann man die Meldungen für diese Fehler eventuellselektiv unterdrücken?
Die nerven mich auch, und nicht nur in Bezug auf synOCR, sondern auch auf viele andere Dockercontainer die ich verwende. Ich hab schon einiges versucht, das zu unterdrücken, was mir aber nicht gelungen ist.
Der Dockeraufruf hat sich übrigens in der Version 1.5.0 zu Version 1.4.5 nicht geändert.
 
Verstehe!

"Wenn du inotify (also die Ordnerüberwachung) nutzt, kannst du die Aufgabe im Aufgabenplaner ganz deaktivieren."

Gibt's dafür eine Anleitung für SynOCR? Find's nicht...

LG,
Jochen
 
Gibt's dafür eine Anleitung für SynOCR? Find's nicht...
Ich habe es versucht so intuitiv wie möglich zu gestalten:
Ist inotify installiert, wird die Ordnerüberwachung automatisch mit dem Paket gestartet. Es ist also keine Benutzereingriff erforderlich.
Und läuft die Ordnerüberwachung nicht bereits über den Aufgabenplaner als root, dann werden in der GUI entsprechende Button zum Starten angezeigt.

Um die Orderüberwachung, die über den Aufgabenplan via root gestartet wurde, zu beenden, muss man stop statt start als Parameter hinten anhängen (nur root kann sich selbst den Prozess beenden - oder ein Neustart des DSM).
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh stop
 
Uuund... siehe da: das klappt!

Danke - ich habe die Aufgabe angehalten und deaktiviert.
Einmal neu gestartet und alles klappt bisher reibungslos!

Nur nebenbei: Ich erhalte keine (!) "unerwartet beendet" Benachrichtigungen mehr! Ich habe in den SynOCR Profil Settings Benachrichtigungen abgeschaltet und als Empfänger den deaktivierten default "admin" eingetragen. Vielleicht liegt's daran...

(Die Meldungen hatte ich tatsächlich auch mit Version 1.4.5 nicht, interessanterweise entgegen Deiner Erfahrung... keine Ahnung warum... bin mir sicher, dass Du das besser verstehst...).

Falls ich mich schlecht ausgedrückt haben sollte: Ich finde SynOCR ausgesprochen intuitiv und durch die interne Hilfe erstaunlich nutzerfreundlich dokumentiert - Missverständnisse hängen bei mir manchmal am Wording - mir war nicht klar, dass Monitoring und automatische Ordnerüberwachung sich auf Inotify beziehen und dasselbe meinen. Ist aber eigentlich klar.

Jetzt habe ich den grünen Checkmark und nur noch den Hinweis:

"Es können derzeit wahrscheinlich nicht alle Parameter in Verbindung mit OCRmyPDF genutzt werden, aber die wichtigsten. ..."

Ich sehe aber nichts, was nicht geht.

Insofern, alles gut, scheint mir...


Herzlichen Dank und einen schönen Sonntag!
Jochen
 
  • Like
Reaktionen: Struppix und geimist

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