synOCR synOCR - GUI für OCRmyPDF

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Hier waren sie wieder meine "Probleme" ;-) Bin halt eher ein YAML-Junkie und würde diese wieder Mal regel basierend einstellen!

Aber aktuell läufts perfekt, was @gunfran vorgeschlagen hat - Danke!
Ich hatte mal aus Langeweile angefangen sowas zu bauen. Das ist dann aber rein Python basiert.
Aber dann ist halt noch die Frage wie wir dann die Interaktion mit dem shell Skript hinzubekommen.

Aber wie gesagt, eins nach dem anderen
 
  • Like
Reaktionen: geimist

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
aber ab und an nerv ich dich auch wieder mit meinen Verbesserungsvorschlägen
Alles gut, du nervst nicht. Nur durch Feedback weiß man ja, was von den Usern gewünscht wird.
 

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Da hat er vollkommen recht. Feedback ist immer sehr gewünscht
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Hi! Ich stehe gerade vor einem Rätsel.

Ich habe diese YAML-Regel definiert:
YAML:
CITES_2:
    tagname: "§yocr4-§mocr-§docr Bescheid Landratsamt"
    tagname_RegEx:
    targetfolder: "/Cites/"
    condition: all
    subrules:
    - searchstring: "LANDRATSAMT"
      searchtyp: is
      isRegEx: false
      source: content
      casesensitive: true
    - searchstring: "BESCHEID"
      searchtyp: is
      isRegEx: false
      source: content
      casesensitive: true
    - searchstring: "Naturschutz"
      searchtyp: is
      isRegEx: false
      source: content
      casesensitive: true
    - searchstring: "Vermarktungsverbot"
      searchtyp: is
      isRegEx: false
      source: content
      casesensitive: true

Im Log steht dazu:
-----------------------------------------------------------------------------------
| search tags in ocr text: |
-----------------------------------------------------------------------------------

source for tags is yaml based tag rule file [/volume1/Scanner/Eingabe/profiles/global.yml]

check and convert yaml 2 json with python

[runtime up to now: 00:00:01]

search by tag rule: "CITES_2" ➜
➜ condition: all
➜ tag: §yocr4-§mocr-§docr Bescheid Landratsamt
➜ destination: /Cites/
[Subrule]:
>>> search for: LANDRATSAMT
isRegEx: false
searchtyp: is
source: content
casesensitive: true
➜ Subrule matched
>>> search for: BESCHEID
isRegEx: false
searchtyp: is
source: content
casesensitive: true
➜ Subrule matched
>>> search for: Naturschutz
isRegEx: false
searchtyp: is
source: content
casesensitive: true
➜ Subrule matched
>>> search for: Vermarktungsverbot
isRegEx: false
searchtyp: is
source: content
casesensitive: true
➜ Subrule matched
>>> Rule is satisfied
Sowie weiter im Log:
2023-04-21 16:30:54,222 - Date scanning ended
find_dates.py result:
2023-04-19
Dates found: 1
check date ([yy]yy mm dd): 2023-04-19
➜ valid
day: 19
month:04
year: 2023

-----------------------------------------------------------------------------------
| rename and sort to target folder: |
-----------------------------------------------------------------------------------


[runtime up to now: 00:00:13]

➜ renaming:
apply renaming syntax ➜ 2023-04-19 Bescheid Landratsamt

[runtime up to now: 00:00:13]

➜ insert metadata (use python PyPDF2)
used metadata:
➜ '/Author': '',
➜ '/Keywords': '§yocr4-§mocr-§docr Bescheid Landratsamt',
➜ '/CreationDate': 'D:20230419'

[runtime up to now: 00:00:13]

➜ move to category directory
tag directory "/Cites/" exists? ➜ OK [subfolder target dir]
target: /volume1/Scanner/Ausgabe//Cites/2023-04-19 Bescheid Landratsamt.pdf
set a hard link

-----------------------------------------------------------------------------------
| adjusts the attributes of the target file: |
-----------------------------------------------------------------------------------

➜ Adapt file date (Source: Source file)
➜ File permissions target file:
-rwxrwxrwx+ 2 synOCR synOCR 2115000 Apr 21 15:55 /volume1/Scanner/Ausgabe//Cites/2023-04-19 Bescheid Landratsamt.pdf
Bisher alles gut meines Erachtens, nur warum steht im Tag der finalen PDF auf einmal so etwas:
1682087983439.png
Der Dateiname bei (1) ist OK, bei (2) stehen im Tag jedoch die Platzhalter, die im Dateinamen korrekt ersetzt wurden.
Woher kommen diese Platzhalter oder noch besser, wie kann ich die YAML-Regel anpassen, dass dies nicht passiert?

Michael
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Bitteschön ;-)

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

synOCR-user: synOCR
synOCR-user is admin: yes
synOCR-version: 1.3.1
Architecture: x86_64
DSM-build: 42962
Device: 918plus (3974443861)
current Profil: Cites und Lebensversicherung, Renteninfos
monitor is running?: yes
DB-version: 8
used image (created): jbarlow83/ocrmypdf:latest (2023-04-14T21:04:07)
document author:
used ocr-parameter (raw): -srd -l deu+eng --clean-final -O2
OCR-arg 1: -srd
OCR-arg 2: -l
OCR-arg 3: deu+eng
OCR-arg 4: --clean-final
OCR-arg 5: -O2
ocropt_array: -srd -l deu+eng --clean-final -O2
search prefix:
replace search prefix: yes
renaming syntax: §tag
Symbol for tag marking:
target file handling: useCatDir
Document split pattern: SYNOCR-SEPARATOR-SHEET
split page handling: discard
clean up spaces: false
Date search method: use Python (BETA)
date found order: nearest
source for filedate: source
ignored dates by search: 17.03.2016
date range in past: 0 [absolute: 0]
date range in future: 0 [absolute: 0]
PATH-Variable:
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Ah, verstehe. Es geht um die Metadaten. Das sehe ich mir nochmal an. Da fehlt bestimmt noch die Ersetzung.
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Ja genau, diese Tags :cool:
 
Zuletzt bearbeitet von einem Moderator:

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Apropos, die Ersetzung fehlt nicht immer, denn hier mit tagname_RegEx funktionierts:
YAML:
CITES_1:
    tagname: "Cites DE-DEG§tagname_RegEx"
    tagname_RegEx: "[[:digit:]]{6}-[[:digit:]]{2,}"
    targetfolder: "/Cites/"
    condition: all
    subrules:
    - searchstring: "EUROPEAN UNION"
      searchtyp: is
      isRegEx: false
      source: content
      casesensitive: false
    - searchstring: "[[:digit:]]{6}-[[:digit:]]{2,}"
      searchtyp: contains
      isRegEx: true
      source: content
      casesensitive: false

Ergebnis:
1682092662077.png
Wie in meinem ersten Posting geschrieben, funktioniert die Ersetzung ebenfalls nicht, wenn zwei Regeln angewendet und die Metadaten dabei geschrieben werden, aber dies wird die gleiche Ursachen wie schon oben haben.
1682092701269.png
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Hast du die Möglichkeit, diese Datei mal mit dem Anhang (entpackt) zu tauschen:
/usr/syno/synoman/webman/3rdparty/synOCR/synOCR.sh
 

Anhänge

  • synOCR.sh.zip
    21,5 KB · Aufrufe: 3
  • Like
Reaktionen: Yippie

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
...fast geschafft. Irgendwie sind noch ein paar Punkte als Prefix übriggeblieben:
1682095400531.png
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Ich habe jetzt die Zeichenkette mit den gefunden / gesetzten Tags lediglich mit durch die Ersetzungsfunktion geschickt. Wo sollen die denn die Zeichen herkommen? Sind das die Trenner vom Datum und die Datumsvariablen wurden nicht korrekt ersetzt, bzw. fehlen?
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
643
Punkte für Reaktionen
54
Punkte
54
Ich habe jetzt die Zeichenkette mit den gefunden / gesetzten Tags lediglich mit durch die Ersetzungsfunktion geschickt. Wo sollen die denn die Zeichen herkommen? Sind das die Trenner vom Datum und die Datumsvariablen wurden nicht korrekt ersetzt, bzw. fehlen?
Ja, sieht so aus als ob es die Trennzeichen aus,
tagname: "§yocr4-§mocr-§docr Bescheid Landratsamt"
sind. Wenn ich die Trennzeichen weglasse, dann fehlen die beiden "--" auch im Metatag.

Aber nichtsdestotrotz, sollte nicht eigentlich im Metatag das gleiche stehen wie im Dateinamen:
2023-04-19 Bescheid Landratsamt
Ich hätte nämlich nicht einen kompletten Wegfall von Jahr/Monat/Tag erwartet, sondern vielmehr die korrekten, erkannten Datumswerte.

Ha! Stopp - zweites Shell-Skript funktioniert:
1682097244289.png
und auch tagname_RegEx funktioniert weiterhin im Metatag und Dateiname, soeben getestet.
Ich lasse das Skript nun erst Mal auf der Syno.

Dankeschön, für die prompte Hilfe, Stephan!
 
  • Like
Reaktionen: geimist

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Hatte die erste Ersetzung vor der Datumsuche drin. Daher die leeren Variablen.
 
  • Like
Reaktionen: Yippie

Schrotti

Benutzer
Mitglied seit
10. Okt 2020
Beiträge
22
Punkte für Reaktionen
3
Punkte
3
Moin zusammen.
Wie geht ihr beim Taggen von Sonderzeichen vor?
Ich habe hier eine Firma die beginnt mit K&K.

Der Dateiname beginnt nun 2023-04-22-K§tagK
Der Tag der Datei ist allerdings richtig mit 2023-04-22-K&K
synOCR-user: synOCR
synOCR-user is admin: yes
synOCR-version: 1.3.99.8
Architecture: x86_64
DSM-build: 42962
Device: 218plus (1056232927)
current Profil: default
monitor is running?: yes
DB-version: 8
used image (created): jbarlow83/ocrmypdf:latest (2023-04-14T21:04:07)
document author:
used ocr-parameter (raw): -srd -l deu
ocropt_array: -srd -l deu
search prefix:
replace search prefix: yes
renaming syntax: §yocr-§mocr-§docr-§tag
Symbol for tag marking:
target file handling: useCatDir
Document split pattern:
split page handling: discard
clean up spaces: false
Date search method: use standard search via RegEx
[snip]
-----------------------------------------------------------------------------------
| rename and sort to target folder: |
-----------------------------------------------------------------------------------

➜ renaming:
apply renaming syntax ➜ 2023-04-22-K§tagK Reifenservice Einlagerungsschein Winter
➜ insert metadata (use python pypdf)
used metadata:
➜ '/Author': '',
➜ '/Keywords': 'K&K Reifenservice Einlagerungsschein Winter'
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Ich werde es mir mal angucken.
Könntest du mir mal bitte ein vollständiges Log schicken?
 

ThomGee

Benutzer
Mitglied seit
06. Aug 2021
Beiträge
5
Punkte für Reaktionen
1
Punkte
3
... nach dem Ausführen von geimist/synOCR auf der Synology einen Befehl auszuführen?
Anwendung ist, ich lasse synOCR auf einem Nextcloud Datenverzeichnis laufen.
Leider erkennt Nextcloud nicht selbst, dass eine neue Datei im Verzeichnissystem erstellt wurde.
Auch das im CRON implementierte files:scan unscanned erkennt nicht die neuen Dateien (ist wohl für abgebrochene Scans)
Wenn ich allerdings ein "occ files:scan <user/path>" ausführe erschienen die Dateien wieder.
Dieser Prozess scannt aber eben nicht nur nach neuen, sondern scannt alle Files in den Cache. Dies ist damit relativ recourcen hungrig und zu viel für einen "häufigen" Cronjob
Es wäre also praktisch nach einem "Auftrag" einen Befehl auszulösen.

ist das mit geimist/synOCR möglich?
Ansonsten würde ich das als Featurerequest aussprechen ;-)
Wo wäre das dann sinnvoll :)
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Den Wunsch, ein manuelles Skript / Befehl ausführen zu können, gab es schon einmal. Ich tue mich damit aber schwer, weil Oma Gertrud dann sieht: "Oh, hier ist ein Formularfeld - gleich mal was eintragen …" 🤕
Die nächste Herausforderung können die Rechte sein, wenn es über den Paketuser synOCR läuft.
  1. Wie würde denn dein Befehl genau aussehen? occ files:scan <user/path> sagt mir nichts. Was ist occ?
  2. Alternativ würde ich dir eine Dateiüberwachung über inotify empfehlen. Damit kannst du ja auch checken, ob eine neue Datei angelegt wurde.
  3. Vielleicht könnte ich mich dazu überreden lassen, dass man einen Post-Befehl in der YAML-Datei definieren kann (z.B. in einer Regel, die immer greift).
 

ThomGee

Benutzer
Mitglied seit
06. Aug 2021
Beiträge
5
Punkte für Reaktionen
1
Punkte
3
Den Wunsch, ein manuelles Skript / Befehl ausführen zu können, gab es schon einmal. Ich tue mich damit aber schwer, weil Oma Gertrud dann sieht: "Oh, hier ist ein Formularfeld - gleich mal was eintragen …" 🤕
Das könnte man dochelegant in einem weiteren Abschnit oder Unterabschnitt “Fortgeschritten/advanced” mit Warnung ablegen oder so

Die nächste Herausforderung können die Rechte sein, wenn es über den Paketuser synOCR läuft.
Es muss als User “http” ausgeführt werden…
Bash:
sudo -u http
  1. Wie würde denn dein Befehl genau aussehen? occ files:scan <user/path> sagt mir nichts. Was ist occ?
Die Befehlssytax wäre etwa so:
Bash:
sudo -u http php80 /volume1/web/nextcloud/occ files:scan --path="/<user>/files/<path>" -v

Wobei mit sudo -u http als User http ausgeführt wird
php80 wählt php samt version aus zum ausführen
/volume1/web/nextcloud/ ist der Pfad zum occ-Befehl
occist das Kommandozeileninterface mit dem man verschiedene Funktionen aufrufen kann
files:scanlöst einen Scan des folgenden Pfades eines Benutzers in Nextcloud aus um den Cache zu aktualisieren

Was nicht im Cache steht wird nicht in App/Webinterface angezeigt! Hier ist mein Problem,nach dem die PDF’s in die Ordner sortiert wurden. Nextclouds cache bekommt nix davon mit - mit dem Befehl würde man auf die Sprünge helfen. Aber eben nur wenn ein PDF verarbeitet und verschoben wurde.
  1. Alternativ würde ich dir eine Dateiüberwachung über inotify empfehlen. Damit kannst du ja auch checken, ob eine neue Datei angelegt wurde.
Ich befürchte fast, das würde einen enormen Overhead auslösen wenn in nextcloud neue Dateien abgelegt werden. Da reagiert inotify doch auch drauf. Und dann bei jeder neuen Dateien der Befehl… ?!
  1. Vielleicht könnte ich mich dazu überreden lassen, dass man einen Post-Befehl in der YAML-Datei definieren kann (z.B. in einer Regel, die immer greift).
Da kann ich nicht sagenob man o.g. Befehle ausführen kann… da fehlt mir die Erfahrung. Aber wenns geht ;-)
 


 

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