Release Notes

! ! ! ATTENTION ! ! ! 
This version only supports DSM7
DSM6.x version you can found here: https://git.geimist.eu/geimist/synOCR/src/branch/master/PKG_DSM6/CHANGELOG

known issues / limitations:
 -  The check whether a selected folder (OUTPUT, BACKUP) is encrypted and possibly not mounted 
    does not work when running the program without root privileges (due to the known rights restrictions)

1.5.0 [2025-03-28]
    ⚠️ known issues / limitations: Devices with an ARM64 / aarch64 CPU are not supported with this release due to Python incompatibility❗️ 
  IMPLEMENTATIONS:
 - [GUI]    🔥 Color adjustments can now be used to configure the contrast, the sharpness and a black and white mode (1-bit).
 - [GUI]    🔥 Blank page detection and removal has been implemented.
 - [shell]  If logging is activated, the file "file_processing.log" is now kept in the log folder for a quick overview of the target files
 - [GUI]    A slider can be used to set a processing delay of 0-120 seconds (compatibility of folder monitoring with incompatible scanners such as CANON)
 - [GUI]    The source file remains unchanged via the OCR parameter --keep_hash, but can still be classified and renamed (issue #59)
  IMPROVEMENT:
 - [GUI]    the save dialog in the GUI now runs much faster
 - [shell]  improved protection of the source file in the event of an error
 - [shell]  yaml key dirname_RegEx is implemented in order to be able to generate dynamic paths with path variable §dirname_RegEx
 - [GUI]    an indicator for the profile change has been added
 - [shell]  duplicate detection of the target file is now more robust
 - [shell]  use native DSM permission adjustment
 - [shell]  all non-alphanumeric characters at target file name will be compressed (issue #58)
 - [GUI]    where possible, text fields and radio buttons have been replaced by sliders and switches.
 - [GUI]    splitting pages can be set to each page
 - [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]    invalid source directories are displayed in the GUI
 - [shell]  changed D-M-Y, D.M.Y and D/M/Y regexes in search_all_numeric_dates to allow search for 2- and 4-digit years. (#56 thx @dklinger)
 - [shell]  update find_dates.py from v0.4 ➜ v0.6 (thx @GThorsten)
            search_alpha_numeric_dates()
            -change regex after user hint
            search_alpha_numeric_dates()
            - optimize search for short dates (jun., Apr......)
            - bugfix regex with whitespace after Month
            - add some logging
  BUGFIXES:
 - [shell]  issue with the delay in combination with folder monitoring
 - [shell]  the counting of pages was changed from PyPDF to pymupdf to catch an error with EOF
 - [shell]  search prefix and search suffix have been removed from the entire file name
 - [shell]  file names containing double quotation marks resulted in an error
 - [shell]  bugfix for file names with a tilde
 - [shell]  update find_dates.py
            bugfix for dates like 15.6.2023
            add language = de to dateparser (thx @dklinger)
 - [shell]  update find_dates.py from v0.6 ➜ v0.7 (thx @dklinger)
            fix for dateparser parsing current datetime from invalid string
 - [SHELL]  fix error message "warning: ./synOCR.sh: line 780: command substitution: ignored null byte in input"
 - [shell]  fixing some minor bugs
 
 1.4.5 [2023-09-25]
  BUGFIXES:
 - [SHELL] Fixed a bug that could block the start of monitoring
 - [SHELL] Fixed a bug that could not update the DB @DSM6
 
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.
 
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
 
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
 
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
 
1.4.0 [2023-07-04]
  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 @Tommes)
  IMPROVEMENT:
 - [SHELL] splitting: change from pypdf to pikepdf because pypdf breaks the PDF/A attribute (thx @Gthorsten)
 - [SHELL] write metadata: change from pypdf to pikepdf because pypdf breaks the PDF/A attribute (thx @Gthorsten)
 - [SHELL] write metadata additionally as XMP data (thx @Gthorsten)
 - [SHELL] Python environment is preserved now during a package update
 - [GUI] Bump Bootstrap framework to 5.3.0 (thx @Tommes)
 - [GUI] Bump Bootstrap JavaScript to 5.3.0 (thx @Tommes)
 - [GUI] Bump jQuery to 3.7.0 (thx @Tommes)
 - [GUI] Made minor code optimizations in synOCR.js (thx @Tommes)
 - [GUI] In addition to local DSM users, the app can now be used by Domain and LDAP users (thx @Tommes)
 - [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 @GThorsten)
 - [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
 
 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

1.3.1 [2023-02-23]
  BUGFIXES:
 - Fixed syntax error that caused a navigation error in the GUI

1.3.0 [2022-11-01]
  BUGFIXES:
 -  counting of log and backup files to be deleted was not correct under certain situations
 -  catching an error message if there are no docker images to be cleaned up
  IMPROVEMENT:
 -  YAML rules: if the value for condition not set - fallback to any
 -  Notification in the log when rule-based destination folders are found, but a conflicting setting is set in the GUI
 -  Profiles are now processed in alphabetical order (by profile name)
  IMPLEMENTATIONS:
 -  🔥 Input folder monitoring included (need installed inotify-tools from here: https://synocommunity.com/package/inotify-tools)
    - a pulsing status icon in the gui indicates an active monitoring
 -  🔥 new Python based date search implemented, which also finds written out months (gthorsten)
    - a start year for date search can defined in GUI
    - a year in future can be defined in GUI as latest year for search
 -  🔥 support separator sheet - dokument split pattern can be configured in GUI
    - in GUI user can define: splitpage is first page, is last page or discard
 -  🔥 Pictures in the source folder can be converted automatically
 -  option to reduce multiple spaces to one (helpful with RegEx)
 -  the number of pages is now determined with Python - Exiftool and pdfinfo become obsolete
 -  [YAML] all renaming parameter can be used as tagname components in YAML-rules (experimental)
 -  [YAML] tagname & tagname_RegEx can be combined:
    - use §tagname_RegEx in tagname and it will be replaced by tagname_RegEx
 -  Metadata will be add with Python - Exiftool become obsolete
    - set author (get author information from ocr options if set [--author john doe])
    - set creation date (depending on which one was defined: OCR, file date, now)
    - set keywords
 -  the conversion from YAML to JSON is no longer done with the binary yq but by Python
 -  logging deleted backup files in loglevel 2 
 -  [GUI] notify about updates in main page (because cphub.net is not working)
 -  [GUI] support for follow machine translated languages (by DeepL)
    - Chinese simplified
    - Czech
    - Japanese
    - Danish
    - French
    - Italian
    - Dutch
    - Polish
    - Russian
    - Spanish
    - Swedish
    - Hungarian
    - Turkish
    - Portuguese European
    - Portuguese Brazilian

1.2.0 [2022-01-11]
  BUGFIXES:
 -  Creating the required user group 'docker' was not possible if a similarly named group already existed.
 -  RegEx with lookahead / lookbehind for tag names were not possible
 -  minor bugfixes (thx to tommes)
  IMPROVEMENT:
 -  handling of special characters improved
 -  cleanup of unused docker images
 -  delete cron job who was generated with synOCR at DSM6
 -  DSM notifications work again
 -  DSM notifications: list all possible users
 -  indicator about valid directorys in GUI
 -  the order of the tags can now be defined
    criterion is the alphabetical sorting of the rule names in the YAML file
 -  rewrite GUI (thx to tommes)
  IMPLEMENTATIONS:
 -  renaming parameter for the year can now be 2 or 4 digits 
    (§yocr2 §yocr4 §ynow2 §ynow4 §ysource2 §ysource4)
 -  added renaming parameter §pagecount (pages of current document)
 -  all renaming parameter can be used as path components in YAML-rules (except document title [§tit])
 -  target files can moved to folders named by year
 -  target files can moved to folders named by year/month
 -  number of backup files can now be limited (days or number)

1.1.902 BETA [2021-07-26]
  IMPROVEMENT:
 -  DSM 7 icons (many thanks to TJ. from german synology forum)
 -  minor bugfixes

1.1.901 BETA [2021-07-08]
  IMPLEMENTATIONS:
 -  DSM 7 compatibility (many thanks to tommes from german synology forum)

1.1.2 [2021-04-21]
  BUGFIXES:
 -  an error when the page counter could not be calculated.
  IMPROVEMENT:
 -  counter for processed pages at aarch64 are now possible if Exiftool is installed

1.1.1 [2021-04-05]
  BUGFIXES:
 -  fixed century check
 -  fixed name of variable

1.1.0 [2021-03-31]
  IMPLEMENTATIONS:
 -  added the option to define the tag name via RegEx (Parameter tagname_RegEx in YAML file)
 -  added a counter for processed pages and files per profile (x86_64 only)
 -  added additional renaming parameters:
    §hhsource §mmsource §sssource §hhnow §mmnow §ssnow §pagecounttotal §filecounttotal §pagecountprofile §filecountprofile
 -  support for CPU aarch64 (statistics work only limited, because pdfinfo is missing).
 -  improved date search / data to be ignored can be specified in the GUI (thanks to DeeKay1)
  BUGFIXES:
 -  tagsymbol with spaces don't work
 -  copy file, if hard links are not createable
 -  it is no longer calculated with expr
 -  'force quiet' (GUI) now also terminates the Docker container synOCR
 -  minor bugfixes

1.0.2 [2020-08-22]
  BUGFIXES:
 -  file date could not be set to source
 -  if no destination folder was defined in all fulfilled rules (YAML file), the destination file was lost
 -  file permission of the target file adjusted (664 and ACL-inheritance)

1.0.1 [2020-07-22]
  BUGFIXES:
 -  >condition: all< was not evaluated correctly (YAML-file)
 -  unnecessary counter supplement of the target file, if no renaming syntax was specified
 -  YAML-Samplefile was not created correctly if there were spaces in the path
 -  file permission of the target file adjusted

1.0.0 [2020-07-13]
  IMPLEMENTATIONS:
 -  multilingual GUI (currently German, English)
 -  advanced rule management (in combination with an external YAML-file -> write Samplefile with button in GUI)
 -  tags are now independent of the search term (alias - in combination with an external YAML-file)
 -  source files: a search prefix with preceding "!" inverts the search in filename ( !value )
 -  source files: a final "$" is used as search suffix in filename ( value$ )
 -  if the Exiftool is installed, found tags and date are written into the meta data
  BUGFIXES:
 -  if a path refers to an (unmounted) encrypted directory, the program run is aborted

0.17.1 [2020-06-18]
    BUGFIXES:
 -  Fehler, wenn keine Umbenennungssyntax angegeben wurde

0.17.0 [2020-05-10]
    IMPLEMENTIERUNGEN:
 -  Tags können über ein externes Textfile geladen werden
 -  Dockerimages mit :latest-Tag können automatisch aktualisiert werden

0.16.3 [2020-03-02]
    BUGFIXES:
 -  Problem beim Einsortieren in Tagordner

0.16.2 [2020-02-18]
    BUGFIXES:
 -  Korrektur der Datumserkennung

0.16.1 [2020-02-09]
    BUGFIXES:
 -  Sonderzeichen in tags führte zu fehlerhafter Umbenennung

0.16.0 [2020-01-28]
    IMPLEMENTIERUNGEN:
 -  es steht wieder ein aktuelles "polyglot-Image" mit allen Sprachen zur Auswahl
 -  manuell heruntergeladene Images stehen ebenfalls zur Auswahl (sofern "ocrmypdf" im Namen enthalten ist)
 -  eine tag-Kennzeichnung ist nun konfigurierbar (für keinen, einfach leer lassen)
 -  Prüfung auf vorhandene Dockerinstallation
 -  das Dateidatum der Ausgabedatei kann nun auf: Quelldatei, OCR oder JETZT gesetzt werden
 -  das Umbenennungsdatum kann nun auf: Quelldatei, OCR oder JETZT gesetzt werden
    BUGFIXES:
 -  "beenden erzwingen" war nicht möglich
 -  Dateidatum der Quelldatei wurde teilweise nicht korrekt auf die Ausgabedatei übertragen
 -  Minorbugfixes

0.15.2 [2019-09-03]
    IMPLEMENTIERUNGEN:
-  erweiterte Auswahl an Dockerimages

0.15.1 [2019-03-24]
    BUGFIXES:
-  die temporäre Zieldatei wurde nicht gelöscht

0.15.0 [2019-03-21]
    IMPLEMENTIERUNGEN:
 -  Die Konfiguration wurde von einer Textdatei auf eine Datenbank umgestellt. So lassen sich jetzt beliebige Profile verwalten.
 -  Übersichts- und Statusseite zusammengeführt
 -  INFO: Das Textfeld für die Tags ist zwar jetzt mehrzeilig, es dürfen aber derzeit keine Zeilenumbrüche verwendet werden!
 -  Detailverbesserungen in der GUI

0.14.0 [2019-03-10]
    IMPLEMENTIERUNGEN:
 -  es wird jetzt in einem temporären Ordner gearbeitet, damit unerfahrene User nicht von leeren Dateien irritiert werden
 -  über ein Listfeld lässt sich das Image jbarlow83/ocrmypdf-polyglot (mit allen Sprachen) auswählen
    BUGFIXES:
 -  das Handling der Dateirechte wurde geändert

0.13.1 [2019-02-24]
    BUGFIXES:
 -  Fehler bei der Benutzerberechtigung. Die Berechtigung zu synOCR kann in der Systemsteuerung/Berechtigung konfiguriert werden (bitte beachte, dass nur eine gemeinsame Konfiguration verwendet wird!).

0.13.0 [2019-02-17]
    IMPLEMENTIERUNGEN:
 -  durch Voranstellen eines Paragrafenzeichen kann ein Tag alleinstehend gefunden werden (§tag)
 -  in der Statistik werden jetzt auch einzelne Seiten gezählt
 -  (der Suchpräfix ist als Standard [bei Neueinstallationen] nicht mehr vorbelegt)
    BUGFIXES:
 -  Fehler bei der LOG-Ausgabe beim Aufruf über den Aufgabenplaner

0.12.1 [2019-02-05]
    IMPLEMENTIERUNGEN:
 -  zeigen unterschiedliche Tags auf ein und dieselbe Kategorie, so wird die Datei nur einmal in den Kategorieordner verschoben
    BUGFIXES:
 -  Das Sonderzeichen "&" im Dateinamen führte zu einer falschen Umbenennung (es sollte grundsätzlich auf Sonderzeichen im Dateinamen verzichtet werden!)
 -  ein falscher Exit-Status bei einer leeren Aufgabenliste führte dazu, dass der Aufgabenplaner fälschlicherweise von einem Error ausging und ggf. eine entsprechende Benachrichtigungsmail versendete
 -  Tags mit Leerzeichen wurden nicht erkannt, sofern sie ohne Kategorie gesucht wurden
 -  verbesserte LOG-Ausgabe beim Aufruf über den Aufgabenplaner
 -  der Originaldateiname wurde z.T. bei der Umbenennung nicht korrekt weiter verarbeitet
 -  Verbesserung der Dateizählererweiterung wenn man die erste Datei ohne Zähler verschoben hatte, bzw. die Originaldateien schon einen Zähler in der Form (1) hatten.

0.11.0 [2019-01-29]
    IMPLEMENTIERUNGEN:
 -  Tags und Kategorien können jetzt Leerzeichen enthalten (eine Suche nach Tag "Rechnung " findet so nicht fälschlicherweise "Rechnungsstellung")
 -  Schalter, um Tags als Kategorie zu verwenden (manche wollen vielleicht für jeden Tag einen eigenen Ordner). Eine separate Kategoriezuweisung erübrigt sich in diesem Fall
 -  Schalter, um im gesamten Dokument zu suchen (nicht nur auf der ersten Seite / Gefahr von false positive Ergebnissen steigt!)
 -  PDFs die einen Error hervorrufen, werden in den Unterordner "ERRORFILES" im Quellverzeichnis verschoben, um deren wiederholte Verarbeitung zu vermeiden
    BUGFIXES:
 -  eine Installation auf Geräten, die nur inoffiziell Docker unterstützen, war nicht möglich
 -  kleinere Detailverbesserungen

0.10.0 [2019-01-21]
    IMPLEMENTIERUNGEN:
 -  es kann nach Tags im OCR-Text gesucht werden
 -  es kann nach Datum im OCR-Text gesucht werden
 -  es kann eine eigene Umbenennungssyntax angegeben werden
 -  Tags können einer Kategorie zugeordnet werden (entsprechende Unterordner werden im Zielordner erstellt)
    BUGFIXES:
 -  ein fehlender Zielordner wurde ggf. nicht erstellt
 -  der Zähler für offene Jobs war z.T. nicht korrekt

0.9.3 [2019-01-16]
    IMPLEMENTIERUNGEN:
 -  Dateisuche ist jetzt case insensetive (Suchpräfix / .pdf .PDF)
 -  Suchpräfix kann nun automatisch entfernt werden
    BUGFIXES:
 -  leere LOGs wurden z.T. nicht korrekt gelöscht
 -  bei einem OCRmyPDF Error wurde das Skript z.T. nicht korrekt abgebrochen
 -  kleinere Korrekturen

0.9.2 [2019-01-11]
 -  This is the initial public release of the package