Releases: geimist/synOCR
synOCR_v1.5.0
1.5.0 [2025-03-28]
⚠️ 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❗️
Devices with an ARM64 / aarch64 CPU are not supported with this release due to Python incompatibility❗️
📦 SPK DOWNLOAD: DSM6 | DSM7
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
entfernen von Leerseiten
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.
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 |
anpassen der Bildqualität

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 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. |
Wartezeit für inotify-inkompatible Scanner
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

Datei Log
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.
Originaldateien beibehalten
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.

jede Seite trennen
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:

dynamische Pfade per RegEx
Der YAML-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:
rule_subdir:
tagname:
targetfolder: /myPath/§dirname_RegEx
dirname_RegEx: W2[56]-[0-9]{4}
subrules:
- searchstring: W2[56]-[0-9]{4}
isRegEx: true
💎 Verbesserungen
Details
- [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.2 (thx @toafez)
- [GUI] Bump jQuery to 3.7.1 (thx @toafez)
- [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
Details
- [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
synOCR_v1.4.5
synOCR_v1.4.4
1.4.4 [2023-08-31]
BUGFIXES:
- [SHELL] Search range for the date in the past was not calculated correctly
- [SHELL] if an (encrypted) destination folder has not yet been mounted, the program run is now terminated at DSM7 and above.
synOCR_v1.4.3
1.4.3 [2023-08-08]
BUGFIXES:
- [SHELL] a missing slash in the source path partly blocked a correct program run
IMPROVEMENT:
- [GUI] In the update note not only the newest but also the installed version is displayed
- [SHELL] apply shellcheck for functions.sh
synOCR_v1.4.2
1.4.2 [2023-07-26]
BUGFIXES:
- [SHELL] fix build python environment at aarch64 (additionally Python 3.9 required)
IMPROVEMENT:
- [SHELL] remove trailing spaces and tabs in YAML rules to improve compatibility
- [SHELL] improve error handling of python date search
- [SHELL] improve logging
- [SHELL] improve YAML validation
synOCR_v1.4.1
1.4.1 [2023-07-07]
BUGFIXES:
- [SHELL] disable python environment backup due to an update error
- [SHELL] minor bugfixes
IMPROVEMENT:
- [SHELL] bump apprise library to 1.4.5
synOCR_v1.4.0
1.4.0 [2023-06-26]
BUGFIXES:
- [SHELL] if the path to the log file contained a hash, the date search via Python failed
- [SHELL] Renaming parameters used as tag name components in YAML rules were not written as metadata
- [SHELL] avoid empty renaming syntax
- [SHELL] Error when parsing GUI-defined rules
- [GUI] If the log level was set to 0, the log was incorrectly displayed in the GUI during a manual run
- [GUI] fixed syntax error that caused a navigation error in the GUI
- [SHELL] if two separation pages follow each other, this was result in an empty PDF file (thx @DeeKay1)
- [GUI] synOCR starts at DSM7.2 only in a new window (iFrame support - thx @toafez)
IMPROVEMENT:
- [SHELL] splitting: change from pypdf to pikepdf because pypdf breaks the PDF/A attribute (thx @Gthorsten65 )
- [SHELL] write metadata: change from pypdf to pikepdf because pypdf breaks the PDF/A attribute (thx @Gthorsten65 )
- [SHELL] write metadata additionally as XMP data (thx @Gthorsten65 )
- [SHELL] Python environment is preserved now during a package update
- [GUI] Bump Bootstrap framework to 5.3.0 (thx @toafez)
- [GUI] Bump Bootstrap JavaScript to 5.3.0 (thx @toafez)
- [GUI] Bump jQuery to 3.7.0 (thx @toafez)
- [GUI] Made minor code optimizations in synOCR.js (thx @toafez)
- [GUI] In addition to local DSM users, the app can now be used by Domain and LDAP users (thx @toafez)
- [SHELL] improve DSM notification
- [SHELL] most shell code was checked and adjusted to pass shellcheck
- [GUI] If the monitoring is started via the task scheduler from root, the GUI now informs about it
- [SHELL] incorrect separator page behavior for consecutive documents with separator pages
- [GUI] profile changes automatically when another name is selected in the listbox (thx @HolerZ)
- [GUI] the warning for an invalid source directory now also contains the name of the affected profile
- [SHELL] update find_dates.py to version 1.0.4 (thx @Gthorsten65 )
- [SHELL] no temporary data is stored in the destination folder now
- improved logging when monitoring cannot be started because a source folder is invalid
IMPLEMENTATIONS:
- 🔥 inclusion of APPRISE library to support many notification services (native PushBullet support has been removed)
apprise_call (apprise service) apprise_attachment (true/false) notify_lang (DSM lang code) can be additionally defined and overwrite in every YAML rule - with value "postscript:" in YAML can be defined post script commands (command or path to script)
- [YAML] >multilineregex: true< can be set at subrule and for tagname_RegEx
this will set the parameter -z for grep to find results over multi lines - [GUI] support for follow machine translated languages (by DeepL)
- Korean
- Norwegian
What's Changed by PR:
- DSM 7.2 iFrame Support by @toafez in #2
- Update frontend toolkit by @toafez in #3
- Switch pypdf2pikepdf by @Gthorsten65 in #20
- Switch pypdf2pikepdf by @geimist in #21
- Switch pypdf2pikepdf by @Gthorsten65 in #24
- App usage by Domain and LDAP user added by @toafez in #25
- Update Bootstrap Framework to 5.3.0 by @toafez in #26
New Contributors
- @toafez made their first contribution in #2
- @Gthorsten65 made their first contribution in #20
- @geimist made their first contribution in #21
Full Changelog: v1.3.0...v1.4.0
synOCR_v1.3.3
1.3.3 [2023-04-23]
BUGFIXES:
- Renaming parameters used as tag name components in YAML rules were not written as metadata
- fix wrong version in 1.3.2
Full Changelog: v1.3.0...v1.3.3
synOCR_v1.3.2
1.3.2 [2023-04-21]
BUGFIXES:
- Renaming parameters used as tag name components in YAML rules were not written as metadata
Full Changelog: v1.3.1...v1.3.2
synOCR_v1.3.1
1.3.1 [2023-02-23]
BUGFIXES:
- Fixed syntax error that caused a navigation error in the GUI
This is the first release of synOCR at Github.