synOCR synOCR - GUI für OCRmyPDF

guidovg

Benutzer
Contributor
Mitglied seit
26. Nov 2011
Beiträge
157
Punkte für Reaktionen
59
Punkte
34
So, also synOCR läuft hier super und meine Regel-Datei wächst und gedeiht. Jetzt möchte ich aber noch eine kleine kosmetische "Unschönheit" beseitigen. Wenn ich die GUI aufrufe und eine Änderung durchführe z.B. von nur erste Seite durchsuchen auf ganzes Dokument durchsuchen und dann auf "Speichern" klicke, dauert es jedes mal über 10 Sek. bis ich die Antwort bekomme, dass die Änderungen gespeichert worden sind.
Kann man das irgendwie optimieren? Bei anderen Dialogboxen unter DSM7 habe ich dieses Phänomen nicht.
 

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.553
Punkte für Reaktionen
681
Punkte
184
NEIN. Das ist normal dass das die Gedenksekunden braucht. Wenn man das weiß sollte das auch keinerlei Problem darstellen.
Beispiel: Durch das "nicht wissen" hatte ich zu Anfangszeiten meine Profile "zerschossen". Ab da nie wieder, weil es eben dauert. Nimm es sportlich und freu dich das es für dich so funktioniert wie du es dir "gebaut" hast.
Wobei die 10 Sekunden, solange bei mir nicht.
Hier im Thread steht darüber auch was drin. Vielleicht kommt @geimist hier noch zu Besuch.
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Das finde ich von Anfang an unschön, sehe mich aber außer Stande, daran etwas zu verbessern. :(
 
  • Like
Reaktionen: guidovg

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.553
Punkte für Reaktionen
681
Punkte
184
Und @geimist, so wie es ist, bleibt es, lass es, außer Feintuning (Leerseiten). Never change a running System.
Ziel ist die Funktionalität. DAS ist für mich mehr als vorhanden (y) und bestimmt nicht nur für mich. Ich „fummel“ ja nicht andauernd in der GUI in den Einstellungen herum. Irgendwann hat man es so wie man es selber will. Dann kommt vielleicht Feintuning.
Leerseiten, da probier ich die Tage mal mit den Einstellungen in der GUI mit den Empfindlichkeiten.
 
Zuletzt bearbeitet:

guidovg

Benutzer
Contributor
Mitglied seit
26. Nov 2011
Beiträge
157
Punkte für Reaktionen
59
Punkte
34
Äh @wegomyway ich teile ja grundsätzlich Deine Meinung und bin ein begeisterter Nutzer von synOCR. Aber ich habe auch NUR gefragt, ob man etwas ändern kann. Wenn @geimist sagt, es ginge nicht ist das natürlich vollkommen ok, aber mehr habe ich auch nicht gewollt. Die Funktion steht im Vordergrund und die ist zu 100% vorhanden.
 
  • Like
Reaktionen: geimist

wegomyway

Benutzer
Sehr erfahren
Mitglied seit
03. Aug 2022
Beiträge
1.553
Punkte für Reaktionen
681
Punkte
184
@guidovg , da interpretiert Du etwas suboptimal. Das Problem der Gedenksekunden ist schon "ewig" vorhanden/bekannt. Wenn man den Thread mal "durchackert" (sicherlich langwierig) findet man hier und dort die Hinweise.
Hätte @geimist da die Lösung wie auch immer parat, sie wäre "drin".
In diesem Sinne, alles gute
 

facetto

Benutzer
Mitglied seit
17. Aug 2022
Beiträge
34
Punkte für Reaktionen
2
Punkte
8
Hallo zusammen, habe heute mal wieder einen angesammelten Stapel Briefpost etc. gescannt. Dabei ist mir wieder aufgefallen, was ich mich früher schon gefragt habe: Gibt es eine Möglichkeit, automatisch ein simples logfile erstellen zu lassen, in welches fortlaufend die jeweiligen Speicherorte der analysierten und ge-OCRten Dokumente geschrieben wird? Ich vergewissere mich immer gerne, dass v.a. wichtige Papierdokumente als .pdf in meinem NAS angekommen sind. D.h. ich werfe die Papiere erst weg, wenn ich das .pdf dazu gefunden habe. Und genau das kann manchmal eine gewisse Sucherei bedeuten, v.a. bei Kategorien, die selten genutzt werden, die ich also u.U. gar nicht mehr auf dem Schirm habe. In den regulären logfiles findet sich die Pfadinfo ja unter "rename and sort to target folder:", nur ist es halt immer aufwendig, 20 logfiles zu öffnen und dahin zu scrollen...

Wäre cool, wenn jemand hierzu eine Idee hat.
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
667
Punkte für Reaktionen
63
Punkte
54
Übersicht Variablen und Platzhalter in der YML-Datei.

Ich hätte Mal einen Ergänzungsvorschlag für das Wiki was mit schon etwas länger unter den Nägeln brennt.

Für die YML-Datei gibt es ja diverse Möglichkeiten, Platzhalter zu nutzen oder auf zur Laufzeit zur Verfügung gestellte Variablen aus den jeweiligen Regeln zurückzugreifen.

Nur, meines Wissens gibt es bisher keine Möglichkeit, sich darüber zu informieren und wenns anderen auch so geht wie mir, wäre eine Übersicht im Wiki sehr hilfreich.
Offenbar gibt es nämlich eine Reihe an solchen Variablen, von denen der Otto-Normal-Nutzer nichts weiß ;)

Ich könnte mir eine Art Tabelle vorstellen, so in der Art wie nachfolgend.
Natürlich sollten auch die bekannten Platzhalter, wie §yocr4, §mocr, §docr, §tagName_regex, §tit usw. nicht fehlen.

Variable/Platzhalter Verwendung in/beiBeschreibung
date_yypostscript(erstes) Erkanntes Jahr, vierstellig
output%/*postscriptAugabepfad inkl. Dateiname?
NewNamepostscriptDateiname aus tagname?
tagname_RegEx_resultpostscript
§tagName_regexYML DateiErgebnis der Auswertung des regulären Ausdrucks
outputpostscript???
output##*/postscript???

Eventuell ergänzt um eine vierte Spalte mit einem Beispiel.

Die o.a. Tabelle soll nur ein Beispiel sein, was mir bisher so über den Weg gelaufen ist und ist keineswegs vollständig oder richtig.

Was denkt ihr, machbar, zu aufwendig oder einfach durchzuführen?

Sorry für die verwurschtelte Tabelle oben, aber auf einem Tablet ist leider der Editor nicht optimal...
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Dokumentation ist immer gut und wird doch oft als letztes umgesetzt. Gerade in einem wachsenden System, wo immer mal wieder Features hinzukommen.
Das sollte man aber in einem separaten Thread, oder besser als Issue in Github aufarbeiten. Dort kann man es gleich in der endgültigen Formatierung als Markdown entwickeln.
 

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
667
Punkte für Reaktionen
63
Punkte
54
Und zu meinem Post oben gleich noch ein Feature-Request, falls nicht bereits umgesetzt.

In einer YML-DATEI kann ich zu jeder Regel ja mehrere, Subrules mit Suchtexten definieren. Dort wiederum statische Suchbegriffe als auch RegEx-Ausdrücke verwenden.

Wäre es möglich, die Texte bei searchstring ebenfalls in einem Variable zu stellen so dass ich diese im postscript oder meinetwegen auch bei (zusätzlich) bei tagname verwenden kann?

Im Falle eines regulären Ausdruck, das jeweilige Ergebnis, im Falle eines statischen Suchstrings, eben diesen.

Da es eine x-beliebige Anzahl von searchstring geben könnte, wären beispielsweise die ersten 10 Suchstrings in einer jeweiligen Variablen sinnvoll.

So würden im Beispiel unten bspw. die Variablen,
  • searchstring00 = GmbH
  • searchstring01 = was weiß ich
usw. erstellt werden.

Durch geschickte Wahl der Reihenfolge der Suchbegriffe, könnten die Inhalte der 10 Variablen nach Belieben bzw. beeinflusst werden, so dass ich bspw. im searchstring00 immer die GmbH, KG usw. erwarten kann.

Evtl. macht es Sinn, nur solche Werte in die Variablen zu stellen, deren searchtyp bspw. auf contains lautet, also wenn ein positives Ergebnis aus der jew. Subrule zu erwarten ist.

YAML:
rule_1003:
    tagname: §tagname_RegEx
    tagname_RegEx: (?i)(?>(([a-z0-9\-\p{L}]+?[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]+?[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]+)))\b\N*?\b(?=\W{1,}[a-z\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,2}[a-z0-9\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,2}[a-z\p{L}]+[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{1,3}\d{0,4}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}\d{0,4}[a-z\p{L}]{0,2}\b\R*\b[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]{0,2}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}\d{5}[\.\,\-\:\;\•\|\&\/*\!\ ]{0,3}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]+)
    condition: all
    subrules:
    - searchstring: (GmbH|mbH|GbR|\sAG\s|\sKG\s|OHG|e.K.|Meister(betrieb)*)
      searchtyp: is not
      isRegEx: true
    - searchstring: (?>(([a-z0-9\-\p{L}]+?[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]+?[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z0-9\-\p{L}]+)))\b\N*?\b(?=\W{1,}[a-z\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,2}[a-z0-9\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,2}[a-z\p{L}]+[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{1,3}\d{0,4}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}\d{0,4}[a-z\p{L}]{0,2}\b\R*\b[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]{0,2}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}\d{5}[\.\,\-\:\;\•\|\&\/*\!\ ]{0,3}[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]*[\.\,\-\:\;\•\|\&\/*\!\(\)\ ]{0,3}[a-z\p{L}]+)
      searchtyp: contains
      isRegEx: true
      multilineregex: true
 
Zuletzt bearbeitet:

Yippie

Benutzer
Mitglied seit
01. Feb 2011
Beiträge
667
Punkte für Reaktionen
63
Punkte
54
Das sollte man aber in einem separaten Thread, oder besser als Issue in Github aufarbeiten. Dort kann man es gleich in der endgültigen Formatierung als Markdown entwickeln.
(y) Deshalb ja das Wiki erwähnt, da dort ja schon einiges an Doku und Beispielen zur Verfügung steht, auch mit Markups geschrieben.
Soll ich ein Issue eröffnen mit Verweis auf mein Posting?
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Klingt nachvollziehbar, aber die Regelverarbeitung werde ich jetzt wahrscheinlich nicht anfassen, weil es noch so viele andere Baustellen / ToDos gibt. Langfristig müsste man da eh mal gucken, ob man das System umbaut um Regeln auch zueinander in Beziehung setzen zu können.
 
  • Like
Reaktionen: Yippie

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234

datajam

Benutzer
Mitglied seit
30. Mrz 2009
Beiträge
54
Punkte für Reaktionen
0
Punkte
6
Ich war ne Zeit lang mit Paperless-NGX unterwegs. War mir aber jetzt auf die Dauer mit Updates etc. zu viel. Deshalb zurück zu SynOCR, was immer zuverlässig geklappt hat. Leider hatte ich die ganzen Einstellungen nicht gesichert, aber nicht schlimm. SynOCR ist in der neuesten version auf meiner DS218+ mit DSM 7.2.1-69057 Update 6 installiert. Auch Inotify-Tools ist installiert. So hatte es vorher immer geklappt, dass die Dateien alleine abgeholt und verarbeitet wurden.

Nun bleibt jedoch die blaue Sanduhr und Dateien zu bearbeiten: 1 stehen und nur der stündliche Aufgabenplaner löst den Vorgang aus. Was habe ich bei Inotify übersehen?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Hast du die DS mal neu gestartet?
synOCR im Paketzentrum gestoppt und neu gestartet?
Pulsiert die Sanduhr?
 

guidovg

Benutzer
Contributor
Mitglied seit
26. Nov 2011
Beiträge
157
Punkte für Reaktionen
59
Punkte
34
Gibt es eine Möglichkeit, automatisch ein simples logfile erstellen zu lassen, ...

Wäre cool, wenn jemand hierzu eine Idee hat.

Hi, genau den Wunsch hatte ich vor einiger Zeit auch. Ich habe mir dazu ein kleines Skript geschrieben, das aus der postscript Zeile heraus aufgerufen wird und den Dateinamen und den Pfad in die SQL-DB schreibt die bei mir auf der DS (MariaDB aus dem Paket-Zentrum) läuft. Mit einer einfachen php-Seite rufe ich mir diese Datenbank über den Browser auf. Somit können alle Familienmitglieder im Netz schnell sehen wo Ihre Dokumente gelandet sind. Funktioniert im Moment sehr gut.

Die Skript-Zeile sieht so aus, 1. Leerzeichen gegen Unterstriche ersetzen, im 2. Teil: Skript aufrufen und die Variablen übergeben

YAML:
postscript: mv "${output}" "${output%/*}/$(echo "${output##*/}" | sed 's/ \+/_/g' | sed -r 's/[|\|&|:|<|>|*|?]+//g')" | sh /volume1/entwicklung/syn_scripts/write_to_weblog_db.sh "${output%/*}/" "$(echo "${output##*/}" | sed 's/ \+/_/g' | sed -r 's/[|\|&|:|<|>|*|?]+//g')"

Die Skript Datei:

Bash:
#!/bin/bash

# Variablen definieren
DB_HOST= XXX
DB_USER= XXX
DB_PASS= XXX
DB_NAME= XXX

# Aktuelles Datum und Uhrzeit im korrekten Format erhalten
CURRENT_DATE=$(date '+%Y-%m-%d %H:%M:%S')

# local setting
export LANG=C.UTF-8

# SQL-Befehl definieren
SQL="INSERT INTO synocr_weblog (DATE, DEST_PATH, FILENAME, STATUS) VALUES ('$CURRENT_DATE', '$1', '$2', 'OK');"

# SQL-Befehl ausführen
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME -e "$SQL"

Hier läuft das aktuell sehr gut, vlt. ist das ja was für Dich.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Ein dediziertes Logfile hab ich schon eingebaut. Es wird im Log-Verzeichnis angelegt, sofern eine Form des Loggings aktiviert ist und sieht so aus:
Code:
[2025-02-05_10-26-14] SOURCE: File_drei.pdf
                      ➜ /volume1/Pfad_OUTPUT/Kategorie 1/drei.pdf
                      ➜ /volume1/Pfad_OUTPUT/Kategorie 2/drei.pdf
[2025-02-05_10-26-20] SOURCE: File_ERROR.pdf
                      ➜ unsuccessful
[2025-02-05_10-26-28] SOURCE: File_eins.pdf
                      ➜ /volume1/Pfad_OUTPUT/_OUTPUT/Kategorie 1/eins.pdf
                      ➜ /volume1/Pfad_OUTPUT/_OUTPUT/Kategorie 2/eins.pdf
[2025-02-05_10-26-41] SOURCE: File_zwei.pdf
                      ➜ /volume1/Pfad_OUTPUT/_OUTPUT/Kategorie 1/zwei.pdf
                      ➜ /volume1/Pfad_OUTPUT/_OUTPUT/Kategorie 2/zwei.pdf

@guidovg Auch eine schöne Lösung, aber für eine direkte Implementierung wahrscheinlich zu speziell. Bitte bedenke auch, dass im postscript nur die letzte Zuweisung der Variablen zur Verfügung steht, also in dem Fall nur der zuletzt zugewiesene Speicherort, falls die Datei mehrmals einsortiert wird.
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.648
Punkte für Reaktionen
1.485
Punkte
234
Stimmen alle Pfade in den Profilen? Hast du evtl. noch ein ungenutztes Profil auf "aktiviert" stehen?
 


 

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