Automator: PDF-Text extrahieren und im aktuellen Verzeichnis speichern

Ich habe einen Automator-Dienst zum Extrahieren von PDF-Text und zum Speichern im aktuellen Verzeichnis erstellt, und er funktioniert recht gut.

Es nimmt eine oder mehrere PDF-Dateien, extrahiert den Text und speichert ihn als separate .rtfs im selben Verzeichnis, in dem die Original-PDFs gefunden wurden.
Gut, ausgezeichnet, bis auf einen kleinen Schönheitsfehler: Neben den anderen .rtfs wird immer ein leeres (null Byte) mit dem Namen des aktuellen Verzeichnisses mitgespeichert.

Betrachtet man den Workflow unten, sieht es so aus, als würden beide Variablen („PDF“ und „Bane“) an die Aktion „Hent ut PDF-tekst“ übergeben. Ist meine Annahme vernünftig und wie kann ich sie auf jeden Fall beheben?

Geben Sie hier die Bildbeschreibung ein

Das Skript im Klartext:

on run {input, parameters}
 tell application "System Events"
 set thePath to POSIX path of (container of (item 1 of input))
 end tell
 return thePath
end run

Abgesehen davon erstellt Automator automatisch eine PNG-Darstellung Ihres Workflows, wenn Sie ihn speichern, und Sie können leicht darauf zugreifen, indem Sie den Paketinhalt anzeigen.
Genius me erkannte dies erst, nachdem ich ein bisschen mit Bildschirmaufnahme und GIMP herumgefummelt hatte.

Ich denke, Sie erwarten nicht, dass Ihnen jemand hilft, der Dänisch nicht lesen/verstehen kann! Auch Snow Leopard ist ziemlich alt, was diejenigen noch weiter einschränkt, die in derselben Umgebung testen können, in der Sie verwenden, da „Hent ut PDF-tekst“ („PDF-Text herunterladen“ (wenn Google Translate korrekt ist) in Automator nicht vorhanden ist neuere Version von OS X, die ich ausführe.
Für jeden, der mit Automator vertraut ist, sollte es nicht allzu schwierig sein, die Bedeutung der verschiedenen Felder und Fenster abzuleiten. (und es ist Norwegisch, nicht dass es einen großen Unterschied gibt). Ich bin doch sicher nicht der einzige SL-Nebel, der hier draußen bleibt?
Es tut mir leid, dass es in Google Übersetzer als Dänisch angezeigt wurde, und der Punkt, den ich ansprechen wollte, ist, wenn Sie auf Englisch um Hilfe bitten, während Sie Bilder anzeigen, die in einer anderen Sprache als Englisch geschrieben sind, sollten Sie auch übersetzen, was auf dem Bild steht, damit wir Ihnen helfen können ! Ich habe mit Google Translate übersetzt, aber da "Hent ut PDF-tekst" in Automator in der von mir verwendeten Version von OS X nicht vorhanden ist, kann ich nicht testen, was Sie müssen, um zu sehen, wo es möglicherweise schief geht. Haben Sie die Ausgabe unter "Resultater" (Resultate) durchgehend auf Hinweise überprüft?
Die Ergebnisse zeigen einen Fehler: "Index (2) über Grenzen hinaus (2)". Wenn diese Aktion in Ihrer Version von Automator nicht vorhanden ist, wie würden Sie diese Aufgabe automatisieren?

Antworten (1)

Hier ist das Problem, auf das ich bei der Übersetzung von „Hent ut PDF-tekst“ in Google Translate gestoßen bin, als ich aus dem Norwegischen ins Englische übersetzte. Es wurde als „Get the PDF text“ übersetzt, also als ich „Get“ in das Aktionssuchfeld eingab zeigte keine PDF-Aktionen mit den "Get"-Aktionen, die angezeigt wurden. Nach weiterer Prüfung fand ich Extract PDF Text und benutzte es.

Ich konnte das Problem replizieren, dass eine RTF-Datei mit Nullgröße zusammen mit der für die eigentliche PDF-Datei erstellt wurde, aber ich konnte nicht debuggen, warum, und ich habe viele verschiedene Dinge ausprobiert. Durch den Workflow wurde Bane als Ordner als Pfad zur ausgewählten PDF-Datei angezeigt, aber dann zusammen mit der richtigen RTF-Datei in die RTF-Größe Null konvertiert, und für mich sieht es aus wie ein Fehler in Automator.

Trotzdem stelle ich eine Problemumgehung vor, die Sie verwenden können, wenn niemand sonst eine Antwort hat, die das Problem behebt, ohne auf diese Problemumgehung zurückzugreifen.

Fügen Sie am Ende der Liste der Aktionen eine Run Shell Script Action hinzu, indem Sie Shell: /bin/bash und Pass input: als Argument mit dem folgenden Code festlegen :

for f in "$@"; do
    if [ ! -s "$f" ]; then
        rm "$f"
    fi
done

Was übersetzt bedeutet: Wenn diese Datei keine Größe größer als Null hat, dann löschen Sie sie.

BTW Wenn Sie den Code zuerst testen möchten , können Sie ihn vorübergehend rm "$f"durch etwas wie ersetzen say deleting "$f", damit Sie hören können, welche Datei gelöscht wird. Wenn Sie zufrieden sind, wird die Datei mit der Größe Null gelöscht und dann wieder in rm "$f".

Hier ist ein Bild meines Automator-Dienstes.

Exportieren Sie den PDF-Textautomatisierungsdienst

Wenn es sich um einen Fehler handelt, der jetzt schon ein ganzes Jahrzehnt bestehen muss, möchte ich ihm fast applaudieren. Vielen Dank für die Bash-Korrektur, ich habe nicht einmal daran gedacht, es so zu lösen.
@AkselA, Der Grund, warum ich sage, dass es sich um einen Fehler handelt, ist, dass die Aktion „ PDF-Text extrahieren“ anscheinend nicht richtig validiert, was an sie übergeben wird, und davon ausgeht, dass alles, was übergeben wird, eine PDF-Datei ist, aus der der Text extrahiert werden soll. Als Programmierer hätte ich dafür gesorgt, dass, wenn eines der übergebenen Objekte eine Variable war, die der Ausgabe speichern unter zugewiesen war , es nicht als PDF-Datei verarbeitet wurde, was leider nicht der Fall ist. Dass es schon lange da ist, ist nichts ... sehen Sie, wie lange es Shellshock in Bash schon gibt, seit Sept. 1989 und erst seit Sept. 2014 gepatcht ... 25 Jahre!