Automatisches Umbenennen von PDF-Dateien mit Datum aus Dokumentinhalt

Hallo,
ich teste gerade die neue DEVONthink 3-Version und konnte bereits manuell korrekt benannte PDF-Dateien automatisch über intelligente Regeln taggen und in Verzeichnisse verschieben.
Mein Ziel ist es jedoch, die Anzahl an Programmen in meinem Workflow zu reduzieren und Hazel durch DEVONthink zu ersetzen. Zu meinem Workflow gehört u.a. nach dem OCR auch das Umbenennen von Dokumenten (hauptsächlich PDFs), bevor das Dokument in den entsprechenden Ordner verschoben wird. Da meine Dokumente immer mit einem Datum versehen werden (bsp. 2019-05-01 - xxx - yyy), benötige ich das Datum aus dem Dokumenteninhalt sowohl für den Dokumentennamen als auch eventuell für Unterverzeichnisse/Gruppen, in die das Dokument verschoben werden soll.
Das benötigte Datum konnte ich in Hazel aus der Datei auslesen und mit Formatierung (z.B. nur das Jahr oder den Monat als Zahl oder Text, …) weiterverwenden.
Leider habe ich diese Funktionalität noch nicht in DEVONthink 3 gefunden. Habe ich etwas übersehen?

Sie könnten dafür eine intelligente Regel (oder auch Stapelverarbeitung, s. Werkzeuge-Menü) zusammen mit der “Name ändern”-Aktion verwenden. Per Kontextmenü können Sie im Eingabefeld für den neuen Namen diverse Platzhalter einfügen, in diesem Fall ist das Dokumentendatum natürlich gewünscht. Diverse Formate stehen ebenfalls bereit.

Danke für die schnelle Antwort - aber ich glaube, ich habe mich nicht deutlich genug ausgedrückt. Es geht nicht um das Dokumentendatum (der Erstellungsdatum oder Änderungsdatum der Datei selbst), sondern ein Datum, das aus dem Inhalt der Datei im Text ausgelesen werden soll. In Hazel kann ich hierzu Datumsformate definieren, die an der x. Stelle im Dokument von Anfang oder vom Ende aus gezählt, gesucht werden können. Dieses gefundene Datum kann ich in weiteren Aktionen verwenden. Ich benötige dieses Datum, da dieses ja meistens nicht mit dem Erstellungsdatum der Datei (beim Einscannen) übereinstimmt.
Bei der Intelligenten Regel finde ich nur “Inhalt stimmt überein mit” - aber ich kann ja kein fixes Datum eintragen, sondern muss flexibel sein und benötige hier ein Datumsformat, nach dem gesucht werden soll und bei Übereinstimmung der tatsächliche Wert weitergenutzt werden soll. Ich benötige also hier eine Möglichkeit, über eine Variable auf diesen Wert später im Kontext zugreifen und ggf. auch auf nur Teile der Werte zugreifen zu können (bsp. nur auf das Jahr aus 1. Mai 2019).
Kann ich bei “Inhalt stimmt überein mit” eine Formel hinterlegen, z.B. dd.mm.yyyy oder dd. . yyyy (mit flexiblen Leerzeichen) und den erhaltenen Wert in einer Variable speichern?

1 Like

Es gibt Platzhalter für aktuelles sowie Erzeugungs-/Änderungs/-Hinzufügungs- und eben das Dokumentendatum. Letzeres ist das zuerst im Dokument gefundene Datum und damit das gewünschte.

Das gehört zu den Bedingungen der Regel, die Aktionen lassen sich im unteren Teil des Fensters festlegen (alles unterhalb von “Folgende Aktionen durchführen”). Und eine der möglichen Aktionen ist wie gesagt “Name ändern”.

Hat super geklappt. Vielen Dank. :grinning:

Funktioniert bei mir teilweise… jedoch nicht, wenn das Datum im Dokument z.B. im Format “14. April 2019” ist. Welche Datumsformate werden denn sicher erkannt? Nur DD.MM.YYYY? Oder nur die aus dem Kontextmenu (siehe Screenshot)? Dort ist leider das im Deutschen häufige “DD. MONAT YYYY” nicht enthalten.15. Kann @cgrunenberg hier allenfalls weiterhelfen?

Wir haben in diesem Threat schon darüber diskutiert, schwierig wird es dann, wenn in einem Dokument mehrere Daten stehen und nicht das 1. Datum in der Reihenfolge das richtige ist:

So ganz glücklich bin ich noch nicht mit den vorhandenen Datumsfeldern. Gibt es eine Option (oder ist diese geplant), das Datumsfeld aus einem Dokumentennamen auslesen zu können?
Meine Idee geht in die Richtung, mit Hazel die Dateien nach OCR automatisch (oder halbautomatisch) umzubenennen und dann in den Eingang meiner digitalen Ablage zu verschieben. Die Umbenennung klappt jetzt schon sehr gut und ich muss nicht wieder alle (gefühlt 150-200) Regeln umbauen.

Wenn ich das Datum im Dateinnamen abgreifen kann - z.B. aktuelles Jahr/vorheriges Jahr/nächstes Jahr speziell bei Jahreswechsel - könnte ich damit die Verteilung innerhalb von DEVONthink regeln.

Dabei ergibt sich auch gleich eine nächste Frage:
In welcher Reihenfolge werden die Regeln abgearbeitet? In Hazel muss ich erst die „speziellen Regeln" anwenden und danach die allgemeingültigen.

1 Like

Gerade einen Text mit diesem Abschnitt angelegt, danach wurde er erfolgreich per Stapelverarbeitung in “Sonntag, 14. April 2019” umbenannt. Eventuell gibt’s andere Daten in dem Dokument und/oder es handelt sich um ein PDF-Dokument, bei dem optische und interne Textdarstellung nicht übereinstimmen?

Nein. Aber wenn Hazel z.B. das Erstellungs-/Änderungsdatum anpasst, könnte dieses verwendet werden. Ansonsten ist eher geplant, mehr Platzhalter und/oder bessere AppleScript-Möglichkeiten (z.B. eine Liste aller gefundenen Daten) zu integrieren.

Da wäre wohl tatsächlich eine Möglichkeit, allerdings habe ich in Hazel keine Möglichkeit gefunden, in den Metadaten etwas zu ändern. Aber vielleicht würde so etwas über ein zu integrierendes Apple Skript klappen.
Aber da bin ich leider absoluter Laie :roll_eyes::see_no_evil:

1 Like

Oder du fragst mal bei Steffi nach :grinning:

Mein Gedanke zur Nutzung von Hazels Möglichkeit der Erkennung von Datums-Schemata war, die DevonThink-Inbox von Hazel überwachen zu lassen.

Damit könnte DevonThink Scans importieren und zu OCR-pdf-Dateien wandeln woraufhin Hazel mit weiteren Regeln fortfahren würde (was außerdem den von AbwehrchefVC befürchteten Aufwand der Regel-Übertragung/ Neuanfertigung vermeiden hülfe).

Existiert ein Weg, einen DevonThink-Ordner für die Überwachung durch Hazel freizugeben?

Moin,
wenn ich das hier alles so mitlese, dann scheint es mir so, als wenn man das im Forum vorhandene Hazelscript weiterhin benutzen muss, denn -zumindest bei mir ist es mittlerweile so ausgefeilt - das die Verteilung der PDF´s bis in den letzten Unterordner funktioniert. Im Moment sehe ich noch keinen Vorteil - eher noch Schwierigkeiten - eine komplizierte Sortieraktion innerhalb von DT3 vorzunehmen.
Wichtig bei Hazel ist jedoch, dass man vor der Anwendung der Scripte das PDF “ocr´n” muss, denn je nach Quelle des PDF´s ist Hazel sonst nicht in der Lage z.B. Datum oder Rechnungsnummer auszulesen und für die weitere Verwendung zu benutzen.

Warum muss es der Inbox-Ordner sein?
Kannst du deine PDF´s nicht erst in einem Folder Deiner Wahl zwischenspeichern und dann mit Hazel diesen Ordner überwachen, bearbeiten und per Hazelscript dann direkt in den gewünschten Unterordner von DT3 schreiben?
Zumindest mache ich das so seit Jahren.

Das AppleScript zur Einordnung von Inhalten in einen definierten DevonThink-Ordner (Gruppe) ist auch für mich essentiell.

Allerdings bevorzuge ich die in DevonThink integrierte OCR-Funktion, weshalb ein überwachter Ordner außerhalb des Programms auf die Verarbeitung von Regeln für einen eingeschränkten Anwendungsbereich beschränkt bleiben muss. Um diese Lücke zu schließen ließe sich ein eigenständiges OCR-Programm nutzen - das dann wiederum extra bezahlt und administriert werden müsste.

1 Like

Seltsam, manchmal wird das Datum im Dateiinhalt erkannt, manchmal nicht, obwohl es per OCR korrekt auslesbar wäre.

Stapelverarbeitung -> Name ändern funktioniert wenn ich eine oder mehrere Dateien auswähle. Wie kann ich es aber zum Beispiel auf alle PDFs in einer Datenbank ausführen lassen? Gibt es auch eine Möglichkeit, dass Files, welche bereits ein Datum im Dateinamen haben, nicht nochmals umbenannt werden? Vermutlich müsste man das durch ein Skript lösen (… muss ich wohl doch noch Skript-Coden lernen…)

Hej Leguan,
da hast Du leider Recht. Administrieren ist eher von untergeordneter Rolle. Es ist leider eher der Preis, der mächtig reinhaut. Leider. Dafür funktioniert es aber…
Nicht das ich hier falsch verstanden werde… Mir wäre nach einer vollständig integierten Möglichkeit “á la Hazel” natürlich auch am liebsten, nur scheint der Weg noch weit und darum bleibe ich erstmal bei dem Bewährten.

Moin,
diese Effekte hatte ich auch, bis ich konsequent jedes PDF neu Ocr´ed habe. Danach hatte ich fast keine Zickerei mehr. OCR scheint nicht gleich OCR aus Qualitätssicht zu sein.

Du sagst es: Die Qualität der mittels OCR erzeugten Textdateien/-layer variiert von Programm zu Programm deutlich.

Ich hatte vor dem Upgrade auf DevonThink Pro Office dazu etwas recherchiert. Zum damaligen Zeitpunkt war das Resultat, dass die ABBYY-Software sehr gut abschneidet. Genau diese ist in DevonThink für OCR verantwortlich.

Hinweise zur Optimierung: In einem Vertrag ist das Datum als “Bern,05. April 2019” hinterlegt (Copy and Paste direkt aus dem PDF nach OCR). Die Stapelverarbeitung hat es nicht erkannt (liegt es daran, dass OCR das Leerzeichen zwischen Ort und Datum nicht erkannt hat, oder liegt es daran, dass untypischerweise “05.” anstelle “5.” im Datum steht?. In einem anderen Vertrag ist das Datum als “24. April 2019” (Copy und Paste direkt aus dem PDF nach OCR) hinterlegt, Devonthink gibt dem Dokument aber das Datum 02.02.2005, weil im Dokument die Textstelle “Ziff. 2.2.5” vorkommt (was eigentlich nicht einem Datum ähnelt). Finde diese Dokumentenbenennung ist eine tolle Funktion, wäre es möglich da noch ein wenig zu optimieren?

Frage: Gibt es ein Script, das alle PDFs (und nur die PDFs, nicht aber Folder usw) in meiner Datenbank mit dem Datum aus dem Dokumenteninhalt versieht, sofern Sie noch kein Datum hinterlegt haben?

Feature suggestion: Wäre es auch möglich bei den Platzhaltern noch das übliche YYYYMMDD hinzuzufügen (also z.B. 20191228)?

Feature suggestion: Gerne würde ich YYYYMMDD_Dateiname verwenden, wenn nun kein Datum erkannt wird, resultiert das dann aber in “Dateiname"… Hier wäre es noch praktisch, wenn kein Datum erkannt wird, dass die Stapelverarbeitung Verbindungszeichen wie das "” weglassen würde… Aber das ist ein kleines Detail am Rande.