- Registriert
- 04. Jan. 2012
- Beiträge
- 5.734
- Reaktionspunkte
- 1.538
- Punkte
- 234
Darf ich vorstellen: synOCR – mach deine Synology DiskStation zum papierlosen Büro
Für alle, die es brauchen, habe ich mal eine kleine GUI für den Dockercontainer OCRmyPDF erstellt. Nicht jeder fummelt ja gerne an Skripten herum. Außerdem hatten ja einige in Verbindung mit dem PHP-Skript Rechteprobleme. synOCR ruft den Dockercontainer etwas anders auf, sodass es mit jedem Ein- und Ausgabeordner funktionieren sollte.
Was ist synOCR?
synOCR ist eine native App für Synology DSM. Damit kannst du einfach OCR (Texterkennung) auf PDF-Dokumente direkt auf den NAS anwenden, da Scans ja in der Regel zunächst nur aus einer Bilddatei bestehen. synOCR kann anschließend nach Tags und Datum in den Dokumenten suchen, diese nach einem individuellen Muster umbenennen und nach Kategorien, Tags oder Jahren in Ordner einsortieren. Durch Verwendung von Hardlinks entsteht auch kein erhöhter Speicherplatzbedarf, wenn ein Dokument in mehrere Kategorieordner einsortiert werden muss.Vorteile im Vergleich zu alternativer Software:
- Alle Dokumente verbleiben im Benutzerdateisystem. Sie bleiben immer für dich zugänglich und du kannst wie gewohnt mit ihnen arbeiten.
- Die Nutzung von synOCR erfordert keine proprietäre Datenbank. Daher brauchst du dir bei Updates keine Gedanken machen, ob du nachher noch an deine Dokumente kommst.
- Für OCR und Archivierung sollte nie jemand auf eine Cloud angewiesen sein – synOCR macht den Himmel für dich ‚wolkenlos‘. ;-)
- synOCR ist Open Source – das bedeutet für dich nicht nur ‚kostenfrei‘, sondern auch, dass jeder den Quellcode prüfen kann
- Einfache Grundinstallation in 3 Schritten (
SPK installieren
Ordnerpfade eintragen
DSM Aufgabenplaner konfigurieren) und bei einem Update muss man sich keine Sorgen um eine Datenbank machen.
Download:
Hauptfunktionen:
- konvertiert Bilder nach PDF
- macht PDF-Scans mit der Texterkennung von OCRmyPDF durchsuchbar
- teilt Dokumente mithilfe von Trennblättern auf
- entfernt auf Wunsch Leerseiten (ab Version 1.5)
- optionale Farbanpassung (1Bit schwarzweiß, Kontrast, Schärfe – ab Version 1.5)
- sucht nach Datum im Text und passt den Dateinamen nach eigenen Muster an
- es sind einfache Regeln in der GUI sowie komplexe YAML-Regeln (auf Wunsch auch als RegEx) definierbar
- Sortierung der Dokumente in regelbasierte Ordner oder nach Datum
- und so manches mehr …
Voraussetzungen und Hinweise:
- Idealerweise nutzt man seinen Workflow in Verbindung mit einem netzwerkfähigen Dokuementenscanner.
Es gehen aber natürlich auch Scan-Apps, welche die Dateien auf dem NAS ablegen. - Zweite Voraussetzung ist ein dockerfähgies NAS, d.h. es muss eine x86_64 CPU (Intel oder AMD) oder einen 64bit ARM-CPU haben (aarch64).
Der Grund: Docker muss installiert sein (entweder als Synologypaket oder manuell - auch auf aarch64 möglich). - Eine DS mit aarch64 CPU benötigt zusätzlich das Paket Python 3.9 (läuft ab synOCR v1.4.2).
- Docker und OCRmyPDF erfordern in Regel seitens synOCR keinerlei zusätzliche Konfiguration. Um alles Nötige kümmert sich synOCR.
- Anleitung und Hilfe findest du außer in diesem Thread auch im Wiki (befindet sich noch im Aufbau - derzeit nur in deutscher Sprache).
- Sofern ihr OCRmyPDF bisher noch nicht genutzt habt, dauert der erste Programmlauf etwas länger, da das entsprechende OCRmyPDF Dockerimage zunächst geladen werden muss.
- Ab v1.3.0 wird zusätzlich (auch nach jedem Update) noch eine virtuelle Pythonumgebung erstellt. Das dauert ~1 Minute.
- Download von synOCR über cphub.net ist nicht zu empfehlen, da dort lediglich alte Versionen vorgehalten sind. Bitte verwende die oben verlinkte Möglichkeit.
- Derzeit führt kein Paketserver die aktuelle Version von synOCR. Deshalb sind Updates aktuell vom User manuell durchzuführen. Eine Benachrichtigung über eine neue Version gibt es auf der Startseite der GUI, im Log und im Benachrichtigungszentrum des DSM.
Ein besonderer Dank geht an:
- @Tommes für seine großartige Hilfe mit dem SPK
- @Gthorsten für die Unterstützung mit dem Pythoncode (insbesondere die Datumssuche)
- @Struppix für die Pflege der Dokumentation im WIKI und dem YAML-Creator
Bitte schreibt, wenn euch eine Funktion fehlt oder ihr euch eine Verbesserung wünscht.
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:
In der Regel sollte der Hauptregler für die Empfindlichkeit ausreichen.
In den Experteneinstellungen gibt es noch folgende Detaileinstellungen:
Für eine granulare Steuerung gibt es einen neuen Bereich in der GUI:
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 ignorieren | In 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 Pixel | Legt 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 |
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:
40 deaktiviert ➜ Die Schwarzweiß-Konvertierung ist ausgeschaltet. |
DPI Anpassung | Die 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 Anpassung | Durch die Anpassung des Kontrasts können undeutliche Scans verbessert werden.deaktiviert ➜ Die Kontrast Anpassung ist ausgeschaltet. |
Schärfe Anpassung | Durch 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:
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.
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.
Wenn die Protokollierung aktiviert ist, wird nun die Datei
Jede Quelldatei erhält einen Eintrag mit Zeitstempel und dem Vermerk
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
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
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.
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:
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
- [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
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
- [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
Fehlerbehebung für Daten wie 15.6.2023
add language = de to dateparser (thx @dklinger)
- [shell] Fehlermeldung behoben
- [shell] fixing some minor bugs
- [shell] das Zählen der Seiten wurde von PyPDF auf pymupdf geändert, um einen Fehler (PDF EOF) abzufangen
- [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
28.03.25
- update Changelog v1.5.0
- Features aktualisiert
- Beschreibung aktualisiert
- Abhängigkeit zu Python 3.9 auf einer DS mit aarch64 CPU hinzugefügt
- Beschreibung aktualisiert und strukturiert
- Features ergänzt
- Verweis auf Downloadmöglichkeit angepasst
Zuletzt bearbeitet: