PDFs automatisiert durchsuchen

Schönen guten Tag erstmal.

Ich habe die ehrenvolle Aufgabe mehrere tausend Artikelnummern in einem PDF Dokument zu suchen.

Die Artikelnummern sind in einer Exceltabelle hinterlegt und bisher mach ich das Ganze immer per CopyPaste Verfahren.

Gibt es eine Möglichkeit automatisch ein PDF Dokument automatisiert nach Suchbegriffen suchen zu lassen. Praktisch wäre es, wenn nach jedem Suchtreffer entweder die Suche pausiert, oder aber die Suchbegriffe welche Treffer enthalten in eine Datei geschrieben werden, damit ich nachher nur noch diese Suchbegriffe durchsuchen muss.

Die PDF Datei enthält nämlich die Datenblätter, welche zu den Artikelnummern passen und diese sollte ich nach Möglichkeit noch als einzelne PDF Seiten abspeichern.

Vielen Dank für eine Hilfe.
Falls es die Möglichkeit gibt, per API Aufruf von der Acrobatsuche, würde mir dazu auch eine Anleitung reichen. Weil eine Idee dazu hätte ich schon, um ein kleines Skript zu schreiben.

Schau dir mal Archivarius 3000 an (bei winload als Download)

Tut u. a. PDF´s Volltext indexieren. Die Trialversion sollte dir genügen. Vielleicht reicht dir das ja.

Gruß
Frank

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Damit kann ich aber trotzdem nur wieder einen einzigen Suchbegriff eingeben. Und keine Reihe von Suchbegriffen, die automatisch abgearbeitet werden sollen.

Trotzdem danke.
Gruß
Tobias

Schau dir mal Archivarius 3000 an (bei winload als Download)

Tut u. a. PDF´s Volltext indexieren. Die Trialversion sollte
dir genügen. Vielleicht reicht dir das ja.

Gruß
Frank

Hallo,

Ich habe die ehrenvolle Aufgabe mehrere tausend Artikelnummern
in einem PDF Dokument zu suchen.

ei, da hast du aber einen undankbaren Job erwischt.

Ich würde an das Problem so herangehen und zunächst Excel und Acrobat eliminieren, weil sich mit denen nicht so einfach skriptgesteuert arbeiten lässt:

Die Artikelnummern sind in einer Exceltabelle hinterlegt

In Textdatei exportieren,

Die PDF Datei enthält nämlich die Datenblätter

mit pdftotext (http://en.wikipedia.org/wiki/Pdftotext) den Text aus der PDF-Datei extrahieren, jede Zeile mit Seitennummer annotieren.

Dann darin alle Artikelnummern aus der Liste per einfachem „grep“ suchen.

Ausgabe kurz manuell überprüfen (doppelte/zu wenig Treffer etc.).

und diese sollte ich nach Möglichkeit
noch als einzelne PDF Seiten abspeichern.

Falls die Größe der Datenblätter bekannt ist (konstante Anzahl Seiten), könntest du sogar diesen Schritt mit Hilfe von pdftk (http://www.accesspdf.com/pdftk/) automatisieren.

Viele Grüße,

Andreas

mit pdftotext (http://en.wikipedia.org/wiki/Pdftotext) den
Text aus der PDF-Datei extrahieren, jede Zeile mit
Seitennummer annotieren.

Das hat wunderbar funktioniert. Hab die Datenblätter jetzt in Textform vorliegen.

Dann darin alle Artikelnummern aus der Liste per einfachem
„grep“ suchen.

Vielleicht liege ich falsch, aber wo ist unter der Windows Dosbox der Grep-Befehl?? Unter Linux kenn ich diesen, aber Windows mag den irgendwie nicht.
Kennst du sonst noch eine Lösung dafür?

Ausgabe kurz manuell überprüfen (doppelte/zu wenig Treffer
etc.).

und diese sollte ich nach Möglichkeit
noch als einzelne PDF Seiten abspeichern.

Falls die Größe der Datenblätter bekannt ist (konstante Anzahl
Seiten), könntest du sogar diesen Schritt mit Hilfe von pdftk
(http://www.accesspdf.com/pdftk/) automatisieren.

Viele Grüße,

Andreas

Viele Grüße zurück,
Tobias

Vielleicht liege ich falsch, aber wo ist unter der Windows
Dosbox der Grep-Befehl??

Standardmäßig gibt’s den nicht, aber ohne eine ordentliche Portion Unix-Tools kann ich auch unter Windows nicht leben:

http://gnuwin32.sourceforge.net/
http://www.cygwin.com/

Andreas

Gut, jetzt fehlt mir nur noch der Befehl, wie ich automatisch mehrere Suchbegriffe nacheinander abarbeiten kann.
Weißt du den Befehl zufällig auch noch.
Bisher hab ich immer nur gesehen, wie ich direkt im Befehl ein oder zwei Suchbegriffe eingegeben kann. Aber hilft mir leider hier auch nicht weiter.

Die Suchbegriffe sind in einer Datei (suchbegriffe.txt) und der durchsuchbare Text in einer anderen Datei (artikeldaten.txt) (mit Hilfe von PDF to Text erstellt). Ich müsste also immer die Suchbegriffe aus „suchbegriffe.txt“ einlesen, diesen Begriff an Grep übergeben. Bei Treffer durch Grep soll der Begriff in eine neue Datei „treffer.txt“ geschrieben werden und danach der nächste Suchbegriff gesucht werden. Falls der Begriff nicht auftaucht, diesen ins Nirvana kicken und nächsten Begriff suchen.

Verstanden was ich meine?
Hast du dazu vielleicht eine fertige Lösung. Also wie sollte die Befehlszeile ungefähr aussehen?

mir schwebt was wie: grep „04.660.1080.0“ | erfolg.txt | nirvana.txt
Wie kann jetzt den Teil „04.660.1080.0“ automatisieren.

Danke für die Hilfe.

Tobias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Gut, jetzt fehlt mir nur noch der Befehl, wie ich automatisch
mehrere Suchbegriffe nacheinander abarbeiten kann.

Da du im allerersten Posting geschrieben hattest, du hättest schon eine Idee für ein Skript, nahm ich an, dass du auch irgendeine Skriptsprache beherrscht.

Als Shell-Skript würde das, was du skizziert hast, so ähnlich aussehen:

while read number; do
if grep -q -F – „$number“ artikeldaten.txt; then
echo „$number“ >> treffer.txt
else
echo „$number“ >> nirvana.txt
fi
done

Ich würde aber das Ergebnis des greps (also wo der Begriff gefunden wurde) bei der Gelegenheit auch gleich auswerten und dann bei den Treffern direkt die Seitenzahl im PDF vermerken.

Andreas

Da du im allerersten Posting geschrieben hattest, du hättest
schon eine Idee für ein Skript, nahm ich an, dass du auch
irgendeine Skriptsprache beherrscht.

Ja so leichtes PHP und leichtes C kann ich auch. Aber so in Linux bin ich echt aufgeschmissen.

Als Shell-Skript würde das, was du skizziert hast, so ähnlich
aussehen:

while read number; do
if grep -q -F – „$number“ artikeldaten.txt; then
echo „$number“ >> treffer.txt
else
echo „$number“ >> nirvana.txt
fi
done

Ich sags nur ungern, aber cygwin meckert herum, wenn ich den oben genannten Text in eine skript.sh abspeicher und dann via „. skript.sh“ ausführen möchte. Syntaxerror near unexpected token „done“ in Zeile 7.
und ebenfalls in Zeile 7: "done

Hallo Andreas.

Also der nachfolgende tut doch, ich hatte ihn bisher als windows text geschrieben und nun tut er, nachdem ich in im vi bzw. joe neu geschrieben habe.

Dankeschön.

while read number; do
if grep -q -F – „$number“ artikeldaten.txt; then
echo „$number“ >> treffer.txt
else
echo „$number“ >> nirvana.txt
fi
done

Ich sags nur ungern, aber cygwin meckert herum, wenn ich den
oben genannten Text in eine skript.sh abspeicher und dann via
„. skript.sh“ ausführen möchte.

Ich hatte das Skript nicht getestet, aber es funktioniert bei mir ohne Syntaxfehler. Das Skript ist für eine Bourne-Shell geschrieben (also „sh“ oder „bash“) und damit solltest du es auch starten: „sh skript.sh“. Mit „. skript.sh“ liest du das Skript in die aktuelle Shell ein, und es ist unklar, welche das bei dir ist.

Ist aber schon viel geholfen, wenn die Nummern draußen sind,
die gar nicht existieren.

OK, dann reicht das kleine Skript ja schon. Ich wusste ja nicht, von wievielen Nummern wir hier reden und welcher Anteil davon überhaupt nicht vorkommt.

Andreas