Code Monkey home page Code Monkey logo

synocr's People

Contributors

geimist avatar gthorsten65 avatar struppix01 avatar toafez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

synocr's Issues

Feature: Detect and delete blank pages from scans

Ziel:

Es gibt Scanner, welche nicht selbstständig Leerseiten erkennen können. Es wird also eine Funktion benötigt, die das (im Idealfall vor dem OCR) durchführt und Leerseiten verwirft. Der schnellste und unsauberste Weg bestünde darin, nach dem OCR auf vorhandenen Text zu prüfen. Damit würden aber auch Seiten, welche lediglich Bilder enthalten, gelöscht werden.
Wichtig ist, dass die Lösung möglichst Architektur neutral (x84_64 / aarch64) und ressourcenschonend arbeitet.

Herausforderungen:

  • Bildrauschen - also gescannter Staub etc.
  • Ränder, Lochlöcher, Knicke, die als schwarze Linien erscheinen können.
  • Fast leere Seiten (z. B. nur wenige Zeichen auf ansonsten leeren Seiten) dürfen nicht als leer erkannt werden.
    Das könnte man möglicherweise mit einem Test auf vorhandene Zeichen NACH dem OCR erreichen.
  • Seiten ohne Text, aber mit Bildern dürfen nicht als leer erkannt werden.

Es gibt verschiedene Ansätze, um das Ziel zu erreichen:

  • Man könnte die Größe der einzelnen Seiten ermitteln und einen Grenzwert setzen.
  • Sauberer wäre es wahrscheinlich, den Deckungsgrad der Seiten zu ermitteln und auch hierfür einen Grenzwert setzen.

Inspiration:

Dokument automatisch aufteilen (split)

Gibt es derzeit eine Möglichkeit ein PDF automatisch zu zerteilen ohne ein "Split Sheet" beim Einscannen zu verwenden?

Konkret möchte ich sämtliche einseitigen Dokumente auf einmal einscannen. Diese sollen im Anschluss als separate PDFs geteilt werden.

processing fails since update to 1.4.0: "ModuleNotFoundError: No module named 'pypdf'"

Running on Synology NAS with version DSM 7.1.1-42962 Update 6.
Worked fine with version 1.3.3., updated today to 1.4.0, now it fails.
Afterwards the document is not in input or output folder. luckily it is still in backup folder.

According to the log file everything seems normal till reaching step 2, see below:

    -----------------------------------
    |    ==> installation info <==    |
    -----------------------------------

synOCR-user:              synOCR
synOCR-user is admin:     yes
synOCR-version:           1.4.0
Architecture:             x86_64
DSM-build:                42962
Device:                   918plus (2053505210)
current Profil:           default
monitor is running?:      no
DB-version:               9
used image (created):     jbarlow83/ocrmypdf:latest (2023-06-20T10:34:03)
document author:          
used ocr-parameter (raw): -srd -l deu
ocropt_array:             -srd -l deu
search prefix:            
replace search prefix:    no
renaming syntax:          
Symbol for tag marking:   #
target file handling:     no
Document split pattern:   
split page handling:      discard
delete blank pages:       false
threshold black/white:    150
threshold black pixels:   10
clean up spaces:          false
Date search method:       use standard search via RegEx
date found order:         firstfound
source for filedate:      now
ignored dates by search:  
date range in past:       0 [absolute: 0]
date range in future:     0 [absolute: 0]
Docker test:              OK
DSM notify to user:       @administrators
apprise notify service:   
apprise attachment:       false
notify language:          enu
Loglevel:                 normal
max. count of logfiles:   10
rotate backupfiles after: (purge backup deactivated)
Source directory:         /volume1/OCR/_INPUT/
Target directory:         /volume1/OCR/_OUTPUT/
BackUp directory:         /volume1/OCR/_BACKUP/



  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● ---------------------------------- ●
  ● |    ==> RUN THE FUNCTIONS <==   | ●
  ● ---------------------------------- ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

  -----------------------------------------------------------------------------------
  | check the python3 installation and the necessary modules:                       |
  -----------------------------------------------------------------------------------

                prepare_python: OK
Target temp directory:    /tmp/tmp.c7sESIcf1g


  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● STEP 1 - RUN OCR / SPLIT FILES, IF NEEDED:                                      ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●


●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
CURRENT FILE:   ➜ 2023.07.01 - testfile.pdf
                  temp. target file: /tmp/tmp.c7sESIcf1g/step1_tmp_1688573668/2023.07.01 - testfile.pdf

  -----------------------------------------------------------------------------------
  | processing PDF @ OCRmyPDF:                                                      |
  -----------------------------------------------------------------------------------

                ➜ OCRmyPDF-LOG:
                  WARNING: Error loading config file: .dockercfg: $HOME is not defined
                  reading file from standard input
                  Start processing 2 pages concurrently
                      2 with existing rotation ⇦, page is facing ⇧, confidence 8.39 - no change
                      1 with existing rotation ⇦, page is facing ⇧, confidence 13.34 - no change
                  Postprocessing...
                  Image optimization ratio: 1.21 savings: 17.1%
                  Total file size ratio: 0.93 savings: -7.8%
                  Output sent to stdout
                ← OCRmyPDF-LOG-END

                target file (OK): /tmp/tmp.c7sESIcf1g/step1_tmp_1688573668/2023.07.01 - testfile.pdf

                no split pattern defined or splitting not possible

  -----------------------------------------------------------------------------------
  | handle source file:                                                             |
  -----------------------------------------------------------------------------------

                ➜ backup source file to: /volume1/OCR/_BACKUP/2023.07.01 - testfile.pdf
                removed directory '/tmp/tmp.c7sESIcf1g/step1_tmp_1688573668/'

Stats:
  runtime last file:              ➜ 00:00:43
  runtime 1st step (all files):   ➜ 00:00:44


  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● STEP 2 - SEARCH TAGS / RENAME / SORT:                                           ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pypdf'
ERROR at line 2284: pagecount_latest=$( py_page_count "${input}" )
./synOCR.sh: line 2299: 1182+ERROR at line 1739: python3
ERROR at line 2284: python3: syntax error in expression (error token is "at line 1739: python3
ERROR at line 2284: python3")

  purge log files ...
  delete 1 log files ( > 10 files)
  delete -10 search files ( > 10 files)

  purge backup deactivated!
rmdir: failed to remove '/tmp/tmp.c7sESIcf1g': Directory not empty
  rmdir: removing directory, '/tmp/tmp.c7sESIcf1g'

  runtime all files:              ➜ 00:00:44


  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  ● ---------------------------------- ●
  ● |    ==> END OF FUNCTIONS <==    | ●
  ● ---------------------------------- ●
  ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

Vereinfachung der Dokumentation (Repos, Links, ...)

Hi Stephan,

letztes Jahr bin ich auf dein Projekt gestoßen und hatte es schon einmal auf meiner Synology (DSM7) eingerichtet - Verison 1.1.902.
Ein tolles Projekt übrigens (nachdem ich immer gesucht hatte, Netzwerkscanner + Synology, die die PDFs nachbearbeitet). Mich würde mal interessieren, wie viele Leute das Projekt erfolgreich nutzen.

Ich selbst bin jedoch nach der ersten Installation leider irgendwann stecken geblieben, da ich nicht ausreichend Zeit fand, ausreichend Regeln für den praktischen Einsatz zu konfigurieren.

Nun wollte ich gern einen neuen Anlauf nehmen und wollte eine derzeitige Version aktualisieren.

  1. Übers Web bin ich erstmal https://git.geimist.eu/geimist/synOCR gestoßen. Dort sehe ich, dass die Files erst kürzlich aktualisiert wurden, das Repo sich jedoch nach Github verschoben hat. Ist dies korrekt?
    image

  2. Wenn ich auf Github gehe, verweisen zahlreiche Links im beschreibenden Wiki weiterhin auf geimist.eu. Das führt leider zu einer Kreisverlinkung, was leider etwas verwirrend erscheint.

  3. Auf der Github Seite finde ich erstmal nur die Version 1.2.0.
    image
    In der Github Installationsanleitung wird von der Version 1.3.0 und höher gesprochen. Folge ich dem Link mit der Entwicklerseite, dann werde ich final fündig.

Wäre es vielleicht möglich die Dokumentation bzw. die Verteilung des Repos (über geimist.eu und Github) etwas zu verschlanken? Das würde vielleicht den Einstieg oder das erneute Einlesen in die Installation für viele vereinfachen.

Viele Grüße

Default Profil zurückgesetzt nach Löschen eines anderen Profils

Hi Stephan,

ich vermute, ich bin auf einen schwerwiegenden Bug gestoßen: Wenn ich ein Profil clone und dann den Clone lösche, ist auch das Default Profil komplett zurückgesetzt.

Das Problem scheint sich nicht nur auf Clones zu beziehen. Auch ein das Löschen eines unabhängig erstellten Profils führt zum Zurücksetzen des Default Profils.

Viele Grüße

synOCR does not yet have the necessary permissions

Hallo,
ich habe synOCR runtergeladen und manuell auf meiner Synology installiert, vorher noch Docker natürlich installiert.
Beim Öffnen von von synOCR erhalte ich aber im "Overview" Fenster den Hinweis in rot markiert:

A T T E N T I O N:
synOCR does not yet have the necessary permissions!
Please create a task in the task planner with the following script (as user root)
(the task must be executed at least once) /usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh

Screenshot 2023-12-04 164556

YAML-Regeln / Tagverwaltung übersichtlicher gestalten

💡 Es gibt ein schönes Projekt namens json-editor. Das könnte man einfach über eine weitere (Unter-)Seite in der synOCR-GUI nutzen (ein Button öffnet den Editor mit den Regeln des aktuellen Profils).

Hier gibt es eine Demo-GUI

Dazu würde das bestehende YAML zu JSON konvertiert (es wird generell von synOCR nur JSON verarbeitet und die YAML-Datei temporär per Python zu JSON konvertiert).

Im Falle einer Implementierung sollten die JSON-Regeln gleich in der DB gespeichert werden. Ein Zugriff über das Dateisystem wäre beim Vorhandensein einer GUI wohl überflüssig.

Vorraussetzung wäre, dass man nicht nur bestehende Regeln modifizieren kann, sondern im Editor sollte die mögliche synOCR-Regelsyntax festgeschrieben/definiert werden können.

Sensitivität der OCR Erkennung

Hi zusammen,

gibt es bei der OCR Erkennung eine Möglichkeit, die Sensitivität bei der Texterkennung zu erhöhen? Ich habe das Problem, dass gerade etwas hellere Texte nur schwer erkannt werden:
image

Viele Grüße, erd

New setup not working

Whenever I run the script i get this error.

/usr/syno/synoman/webman/3rdparty/synOCR/synOCR-start.sh: line 46: [: : integer expression expected

it fails everytime

verbesserte Benachrichtigungen

Derzeit wird lediglich PushBullet unterstützt.
Diese einschränkende Möglichkeit soll durch die universelle Bibliothek APPRISE ersetzt werden.

Apprise allows you to send a notification to almost all of the most popular notification services available to us today such as: Telegram, Discord, Slack, Amazon SNS, Gotify, etc.

One notification library to rule them all.
A common and intuitive notification syntax.
Supports the handling of images and attachments (to the notification services that will accept them).
It's incredibly lightweight.
Amazing response times because all messages sent asynchronously.
Developers who wish to provide a notification service no longer need to research each and every one out there. They no longer need to try to adapt to the new ones that comeout thereafter. They just need to include this one library and then they can immediately gain access to almost all of the notifications services available to us today.

System Administrators and DevOps who wish to send a notification now no longer need to find the right tool for the job. Everything is already wrapped and supported within the apprise command line tool (CLI) that ships with this product.


Folgende Anpassungen sind dafür nötig:

  • Anpassung der Datenbank für die userdefinierten Services
  • [GUI]
    Um mehrere Services definierbar zu machen, sollte das Eingabefeld in der GUI mehrzeilig sein, d.h. Zeilenumbrüche verarbeiten können. Das ist derzeit nicht gegeben, da Zeilenumbrüche nicht korrekt per URL übergeben werden
    nicht nötig, da services durch ein Leerzeichen getrennt werden können
  • [GUI] Es sollte eine Sprachauswahl definierbar sein, weil die Shell die Usersprache nicht kennen kann
  • Anpassung der Benachrichtigungsstellen in den Skripten

Unterstützung von textuellen Datumsformat

Hi Stephan,

die automatische Datumserkennung ist wirklich ein großartiges Feature und in meinen Augen ein Game-Changer! (im Vergleich zu vor einem Jahr). Denn genau das kostet bei der Digitalisierung und Umbenennen von Dokumenten sehr viel Zeit.

Wenn im Dokument das Format TT.MM.JJJJ (z.B. 13.04.2023) verwendet wird, funktioniert das Feature bei mir derzeit fabelhaft!

Wenn jedoch das Datumsformat TT. MMM JJJJ (z.B. 13. Okt 2023) oder TT. MMMM JJJJ (z.B. 13. Oktober 2023) vorliegt, wird derzeit das Datum nicht erkannt und es wird lediglich das Datum des Dokuments verwendet.
image

Ist es geplant, dieses Datumsformat auch zu erkennen?

Viele Grüße

QR Code parsen und mit enthaltenen Werten synOCR Workflow beeinflussen

Quelle: #3716

Ich gebe meinen Dokumenten (z.B. Offerten) einen QR-Code mit, der einen Dateipfad und -namen enthält (z.B.: \Archiv\Kunde123\2023\Offerte456.pdf). Aktuell verarbeite ich diese PDFs mit dem Tool BardecodeFiler auf einem Windows-Server, der bald abgeschaltet wird. Nun steige ich auf Synology um und suche nach einer Möglichkeit, diese Funktionalität abzubilden.

Ich verwende einen Standard-QR-Code Version 15 (https://www.qrcode.com/en/about/version.html). Der Inhalt ist aber weder standardisiert noch strukturiert. Das könnte ich aber natürlich ändern. Aktuell enthält der Code einfach das Verzeichnis und den Dateinamen (z.B. "\Archiv\Kunde123\2023\Offerte456.pdf").

Für eine Umsetzung würde ich ein strukturiertes Format mit einem Key:Value Paar(e) bevorzugen, damit User auch andere Ideen damit umsetzen können (Autor, Tags, …). Ggf. als JSON.
Benötigte Python Bibliotheken währen wahrscheinlich: pikepdf pyzbar Pillow

Zunächst sollten Tests für das zuverlässige Erkennen und Parsen von QR-Codes durchgeführt werden.

GUI: Parameter per JS mit Drag&Drop zusammenstellen

Derzeit muss der User z.B. die Umbenennungssyntax im Klartext definieren. Das birgt die Gefahr, dass Schreibfehler gemacht werden.

Mir kam jetzt folgende Idee ein:
synOCR stellt in der GUI ein Textfeld bereit, in das der User die gewünschte Syntax per Drag&Drop von vordefinierten Parametern zusammenstellen kann.
Ich stelle mir die wählbaren Parameter so vor (wobei man die natürlich auch in ausgeschriebener Form etwas anwenderfreundlicher formulieren könnte):
{§docr} {§mocr} {§yocr2} {§yocr4} {§ssnow} {§mmnow} {§hhnow} {§dnow} {§mnow} {§ynow2} {§ynow4} {§sssource} {§mmsource} {§hhsource} {§dsource} {§msource} {§ysource2} {§ysource4} {§tag} {§tit} {§pagecount} {§pagecounttotal } {§filecounttotal} {§pagecountprofile} {§filecountprofile}

Aussehen könnte das dann z.B. so (hier aus einer anderen Software):
Bildschirm­foto 2023-03-22 um 14 56 18

In gleicher weiße könnte man in Zukunft z.B. auch vom User die zu suchenden Datumsformate definieren lassen.

@toafez
Meinst du, dass man so etwas mit der aktuellen SPK-Implementierung der GUI überhaupt umsetzen kann?
https://medium.com/nmc-techblog/easy-drag-and-drop-in-react-22778b30ba37#2b7c

Datumserkennung (Python) mit zweistelliger Jahreszahl

Derzeit hat bei mir die Datumserkennung Probleme mit Datumsangaben mit zweistelligen Jahreszahlen, z.B.
image

Wegen der textuellen Monatserkennung verwende ich nun die Erkennung mittels Python (natürlich langsamer als RegEx).
image
Aber mit der zweistelligen Jahreszahl kommt es noch nicht zurecht. Kann ich noch etwas einstellen, damit dies auch abgedeckt ist?

PS: Ich hätte sogar noch eine weitere Challenge :-o. Aber das ist schon wirklich nicht einfach zu erkennen.
image

Viele Grüße, erd

keine Verarbeitung von Scans mehr nach Update von 1.4.1 auf 1.4.5

nach dem Update auf 1.4.5 werden Dokumente nicht mehr verarbeitet. Das Log schreibt nur:

`
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
● ---------------------------------- ●
● | ==> RUN THE FUNCTIONS <== | ●
● ---------------------------------- ●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●


| check the python3 installation and the necessary modules: |

            prepare_python: OK

Target temp directory: /tmp/tmp.tvykkDvesg

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
● STEP 1 - RUN OCR / SPLIT FILES, IF NEEDED: ●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
CURRENT FILE: ➜ Brother_1700W_12022024_000272.pdf
temp. target file: /tmp/tmp.tvykkDvesg/step1_tmp_1707739154/Brother_1700W_12022024_000272.pdf


| processing PDF @ OCRmyPDF: |

`

und dann folgt seit 40 Minuten nichts mehr.
Bereits versucht: Synology Restart, Docker Restart, synOCR Restart, manuelles entfernen der Dokumente aus dem Quellordner und wieder hinzufügen

Folderpicker über GUI realisieren

Ziel:

Ein grafischer Folderpicker vereinfacht das Konfigurieren der Ordner und vermeidet Schreibfehler.

Umsetzung:

Evtl. könnte man den Code des Pakets USBcopy nutzen:
"folderpath" in: /USBCopy-x86_64-2.0.6-0064/package/app/usbcopy_package.js

Falsche Download Version!

Hi!
In der synOCR App wird mir die Version 1.3.2 zum Download angeboten, jedoch wird nach dem klick auf den Link die Version 1.3.1 geladen. Auch auf GitHub kann ich die Version 1.3.2 nicht herunterladen, sondern werde immer auf die Version 1.3.1 geleitet.

Gruß, toafez

Metadata-Datei im Ausgabe-Ordner

Mit dem Erstellen der OCR-Version der PDF wird außerdem auch eine .metadata-Datei angelegt, die einige Metadaten enthält. Das finde ich eher störend und wird von mir nicht benötigt. Ich habe keine Option gefunden, um das Verhalten zu deaktivieren. Gibt es hierfür eine Lösung?

Der Inhalt der Datei sieht in etwa so aus:
#Wed Feb 28 15:11:32 CET 2024
file.ocrstatus=10
file.principal=
file.name=2024-02-20_.pdf
file.size=4316852
file.source=zentraler Scanordner

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.