synOCR SynOCR - aktuelles Datum in das Meta-Daten Feld "Title"

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

robertDO

Benutzer
Registriert
10. Juni 2025
Beiträge
6
Reaktionspunkte
1
Punkte
3
Tag zusammen,

ich hatte mal was nettes gebastelt und meine Ablage darauf abgestimmt. Jetzt funktioniert es plötzlich nicht mehr und ich stehe fürchterlich auf dem Schlauch. Hilfe!

SynOCR habe ich "ganz normal" im Container installiert und prinzipiell läuft es auch.

Wichtig ist mir aber, dass beim resultierenden PDF das aktuelle Datum der Scannen/der Texterkennung im Title steht, möglichst als YYY-MM-DD.

Das funktionierte "letztens" (bis wann genau, muss ich noch herausfinden) noch sehr gut. Jetzt bekomme ich es irgendwie nicht mehr hin. Ich bin mir ziemlich sicher, dass ich den Mechanismus mit den "OCR Optionen" realisiert hatte. Was immer ich versuche, führt wahlweise dazu, dass das Datum der Konfiguration fix eingestellt ist (Ersetzung zu früh ausgeführt), oder überhaupt keine Ersetzung ausgeführt wird.

Für hilfreiche Vorschläge wäre ich sehr dankbar.

Viele Grüße
Robert

P.S. Von genau dieser Konfiguration habe ich natürlich kein Backup...
 
Herzlich willkommen hier im Forum :)

In der GUI solltest unter OCR Rename-Syntax §yocr-§mocr-§docr stehen.
Wie ist es jetzt bei dir?
Du kannst mir auch gern die Konfigurations-DB hochladen, die man auf der Konfigurationsseite unten downloaden kann (Link in meiner Signatur).
 
Moin
und vielen Dank für die Antwort, aber der Dateiname der Zieldatei ist nicht das Problem.

Es geht mir um das Setzen des Metadaten-Feldes „title“, beispielsweise bei ocrmypdf (bzw. Exiftool) mit der Option „—title <wasauchimmer>“. Ein Eingabefeld dafür wäre „OCR Optionen“, aber wie <wasauchimmer> dafür aussehen muss, weiß ich nicht.
 
Sorry, ich hatte beim Antworten nicht auf den Posttitel geachtet.

synOCR schreibt nur folgende Metadaten:
  • Author (zu definieren in den OCR-Optionen, z.B. --author John Doe)
  • Keywords (= die gefundenen Tags)
  • CreationDate
  • CreatorTool (= synOCR mit entsprechender Versionsnummer).
title wird gar nicht geschrieben. Dafür hatte ich keine klare Vorstellung, was dafür herhalten sollte.

Jetzt fehlt mir die Idee, wie du das umgesetzt haben solltest 🤔
 
Hallo Stephan,
zwischenzeitlich musste ich mich dringend um fundamentaleres kümmern (Ausschachten, Schotter, Beton), deshalb komme ich erst jetzt wieder hierzu...

In der synOCR-Konfiguration kann man unter OCR Optionen auch beispielsweise die Option "—title <wasauchimmer>" für das ocrmypdf angeben. Was ich dort als <wasauchimmer> angebe landet dann im Title-Feld der PDF-Datei.
Das klappt zunächst mal mit konstanten Zeichenketten ganz unproblematisch, aber ich will ja nicht "jetzt" da eintragen lassen oder den Zeitpunkt des Setzens dieser Option sondern das aktuelle Datum im Moment der Dateigenerierung.
Auf Shell-Ebene würde ich das nun normalerweise hinkriegen, aber leider kenne ich mich mit Python bisher nicht aus und ich wüsste nichtmal, wo das abzulegen wäre bzw. wie ich das bei einem container zu machen hätte.
Für mein Ordnungssystem benötige ich das Datum des Scan-OCR-Workflows, möglichst im Title aber gern auch als Erzeugimgsdatum.
Leider landet aber auch im Erzeugungsdatum das OCR-gefundene Datum. Die einzige Lösung, die mir aktuell noch einfällt, ist, die Datumserkennung abzuschalten.
 
Ach darüber hast du das gemacht. Ja, das hat dann im engeren Sinn nichts mit synOCR sondern mit direkt mit OCRmyPDF zu tun.

Ich kann mir immer noch nicht erklären, wie das schon mal gegangen sein soll. Zur besseren Verständlichkeit muss man die Funktionsweise kennen:
  1. im ersten Schritt erfolgt die Texterkennung. Nur hier wird OCRmyPDF genutzt und entsprechend finden auch nur hier die OCR-Paramenter Anwendung.
  2. in den nächsten Schritten erfolgt die Leerseitenerkennung, Trennseiten, Tagsuche und die Datumsuche (weil erst hier der Textlayer verfügbar ist).
Es gibt ja mit folgenden Umbenennungsvariablen die Zeitwerte der Quelldatei (was ja in der Regel dem Scanvorgang / Erstelldatum entspricht):
§sssource (Datum / Sekunde der Quelldatei)​
§mmsource (Datum / Minute der Quelldatei)​
§hhsource (Datum / Stunde der Quelldatei)​
§dsource (Datum / Tag der Quelldatei)​
§msource (Datum / Monat der Quelldatei)​
§ysource2 (Datum / Jahr der Quelldatei (2-stellig))​
§ysource4 (Datum / Jahr der Quelldatei (4-stellig))​

Aber auch diese Werte werden erst im 2. Schritt ausgelesen.

Eine native Umsetzungsmöglichkeit fällt mir gerade nicht ein. Einzig ein Postskript, welches man schreiben müsste und die gewünschten Metadaten nach der Verarbeitung setzt.
Die nötigen Bashparameter mit dem Datum findest du HIER.

Hier ein Beispielskript, welches ich mal schnelle ki-eren ließ:
Python:
#!/usr/bin/env python3
import sys
import pikepdf
from pathlib import Path

def set_pdf_title(pdf_path: str, title: str):
    pdf_file = Path(pdf_path)
    
    if not pdf_file.is_file():
        raise FileNotFoundError(f"PDF-Datei nicht gefunden: {pdf_path}")
    
    with pikepdf.open(pdf_file) as pdf:
        # XMP-Metadaten (moderner Standard)
        with pdf.open_metadata() as meta:
            meta['dc:title'] = title
        
        # Info-Dictionary (Legacy-Kompatibilität)
        if '/Title' in pdf.docinfo:
            del pdf.docinfo['/Title']
        pdf.docinfo['/Title'] = pikepdf.String(title)
        
        pdf.save(pdf_file, compress_streams=False)

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Verwendung: set_pdf_title.py <PDF-Pfad> <Titel>")
        sys.exit(1)
    
    try:
        set_pdf_title(sys.argv[1], sys.argv[2])
        print(f"Titel erfolgreich gesetzt: {sys.argv[1]}")
    except Exception as e:
        print(f"Fehler: {e}", file=sys.stderr)
        sys.exit(1)

Dein Postskript sähe dann z.B. so aus (entweder in jeder gewünschten Regel oder als separate globale Wildcardregel):
python3 /pfad/zu/set_pdf_title.py "${output}" "${date_yy_source}-${date_mm_source}-${date_dd_source}"

ICH HABE DAS JETZT NOCH NICHT GETESTET‼️
 
Hallo Stephan,
der ocrmypdf-Lauf ist schon an der richtigen Stelle für mein Vorhaben. Ich will ja nicht(!) das gefundene Datum sondern das vom Moment des ocrmypdf-Laufs.
Nur eben: wie bekomme ich das in den Titel hinein?
Ohne Datumserkennung bekomme ich nun zumindest das aktuelle Datum in das Erstellt-Feld, aber eine command Substitution in ocrmypdf -title wäre mir sehr viel lieber, da ich das Feld für weniger leicht versehentlich veränderbar halte.
Die Substitution findet nur leider immer zu früh (beim Setzen in der GUI) oder überhaupt nicht statt...
Viele Grüße
Robert
 
So …
Ich habe dir mal eine BETA gebaut, mit der nun nativ auch title in die Metadaten geschrieben werden kann (GUI ➜ OCR-Optionen: --title my title). Es können auch alle Umbenennungsparameter als Variablen gesetzt werden. In deinem Fall heißt das also: --title §ynow4-§mnow-§dnow

Download: https://geimist.eu/synOCR/synOCR_DSM7_snapshot_build.html

Ich hoffe, es funktioniert wie von dir gewünscht.
 
  • Like
Reaktionen: Yippie
Hallo Stephan,
Vielen Dank! Scheint bestens zu funktionieren.
Jetzt muss ich nur noch meine Notfall-Umgehungslösung wieder wegräumen. Etwas mehr damit beschäftigen werde ich mich dann wohl nächste Woche oder so.
Viele Grüße
Robert
 
  • Like
Reaktionen: geimist

Additional post fields

 

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