Mehrere PDF-Dateien nach Stichworten durchsuchen

Registriert
Juni 2012
Beiträge
168
Moin zusammen,

ich bin auf der Suche nach einem Programm, um mehrere PDF-Dateien in einem Ordner zu durchsuchen.
Skripte sind nicht so meins, aber zur Not ...

Konkret möchte ich täglich die lokale Presse nach Stichworten abklappern.

Hilfreich wäre ein Programm, bei dem ich gleich eine ganze Liste mit Suchkriterien (bspw. "Deutsche Bahn", "Bahnstrecke" und "ICE") UND Parametern auf den Weg geben könnte.
Etwas wie -> suche mir ICE heraus, aber nur wenn es groß geschrieben wird und schließe das Wort "Service" aus.
Gut wäre auch, wenn ich grafisch angezeigt bekäme, wie oft welcher gesuchte Begriff in welchem Dokument vorkommt.

Ich nutze Linux, Windows-Apps helfen mir jetzt weniger.

Beholfen habe ich mir bislang mit der "Nach Inhalten suchen"-Funktion von Nemo.
Aber irgendwie ist das recht unzuverlässig. Mal findet er das Stichwort, dann wieder nicht.
Zudem ist das leider nur sehr grob und ich kann nicht mit Ausschlusskriterien arbeiten.
Zumindest weiß ich nicht wie.

Immerhin besser, als jeden Tag dutzende Dateien jeweils einzeln nach jeweils dutzenden Kriterien abzusuchen.

Hat jemand eine Idee?

Besten Dank schonmal!
 
Der Adobe Reader hat auch eine erweiterte Suche zum Verzeichnisse mit komplexen Anfragen durchsuchen. Vielleicht ist das schon mal ein Anfang. Diese Suche lässt sich aber nicht einfach abspeichern. Ich habe mir dafür tatsächlich ein Skript geschrieben denke, wer Linux kann kann auch skripten 😉
Ansonsten würde ich dafür einen Windows PC nehmen, pdf in die Suchindexierung aufnehmen und einen Explorer-Suchlink abspeichern.
 
Aus deiner Anfrage schliesse ich, dass es sich um einige PDFs täglich handelt und nicht um PDF-Sammlungen aus Hunderten von Dokumenten pro Tag.
Mein Tipp geht von dieser Annahme aus, weil ich damit tatsächlich Erfahrungen gesammelt habe und das so gut funktioniert hat:
Ich habe mir die "Archiv-PDFs" (also ungeordnete Dateien, die zu verschiedenen Themen interessante Informationen enthielten, auf die ich gegebenfalls zurückgreifen wollte) jeweils in Outlook selbst gemailt und in einen separaten Ordner verschoben (was mehr der Übersicht diente, hat keine Auswirkungen auf Funktionalität).
Mit der Outlook-eigenen Suchfunktion, die auch die Attachments durchsucht, findet man die Dokumente, die die Suchstichworte enthalten, innert Sekundenbruchteilen. Outlook indiziert auch PDFs.

Zur Grössenordnung: Mein Outlook enthielt mehrere GB an Daten, allein bis zu 40'000 Eingänge in der Inbox.

Warum so kompliziert statt direkt mit dem Explorer? Nach meinem Eindruck ist die Outlook-eigene Suche massiv schneller als über den Explorer.
 
@zazie: Die Konfiguration der pdf-Indizierung im Explorer ist etwas tricky, aber wenn du das hingekriegt hast, ist das unschlagbar.
Allerdings nicht für den TE, der hat Linux.
 
  • Gefällt mir
Reaktionen: zazie
Ach Mist, den Teil "Ich nutze Linux..." habe ich übersehen - sorry.
 
Dafür würde ich in der Kommandozeile pdfgrep verwenden

Habe dir einen kleinen Codeschnipsel zusammen gebaut, der dir ausspucken sollte wie häufig welches Schlagwort in welchem pdf vorkommt:

Bash:
for SEARCHSTRING in 'ICE' 'Deutsche Bahn' 'Bahnstrecke'
do
    echo "Occurances of ${SEARCHSTRING}:"
    pdfgrep "${SEARCHSTRING}" ./*.pdf | cut -d: -f 1 | uniq -c
    echo ""
done

mit dem optionalen Argument -i kannst du pdfgrep auch sagen, dass es die Groß-/Kleinschreibung ignorieren soll. Mit -n bekommst du auch die Info auf welcher Seite das Schlagwort gefunden wurde.

Ich bin nicht fit genug in regular expressions, aber das Kriterium
suche mir ICE heraus, aber nur wenn es groß geschrieben wird und schließe das Wort "Service" aus
bekommst du in dem Ausdruck mit Sicherheit eingebaut.
 
Danke Euch für die Hinweise!

Ja, auf pdfgrep war ich schon gestoßen, aber ich scheute die Kommandozeile.
Linux-Nutzer sind nicht automatisch Kommandozeilen-Cracks ;-)

Dann werde ich mich mit pdfgrep auseinandersetzen müssen.
Falls jemand doch noch eine grafische Variante anzubieten hat: immer raus damit :)
 
Vielleicht ist so ein kleines Projekt aber auch genau der richtige Usecase um die Scheu vor den Tools der Kommandozeile zu verlieren 😉

Wenn du meinen Ansatz umsetzen möchtest und nicht so ganz weiter weißt kannst du mir gerne eine PM schreiben und wir gehen das Schritt für Schritt durch :-)

Vorweg ein kleiner Guide:
  1. Erstelle ein file für das Script in einem Ordner deiner Wahl, zB /home/username/code/pdf_suche.sh
  2. Packe diesen Text in das file:
    Bash:
    #!/usr/bin/bash
    for SEARCHSTRING in 'ICE' 'Deutsche Bahn' 'Bahnstrecke'
    do
        echo "Occurances of ${SEARCHSTRING}:"
        pdfgrep "${SEARCHSTRING}" ./*.pdf | cut -d : -f 1 | uniq -c
        echo ""
    done
  3. Mache das script ausführbar mittels chmod +x /home/username/code/pdf_suche.sh
  4. Gehe in den Ordner wo die zu analysierenden pdfs liegen und starte das Script einfach mittels /home/username/code/pdf_suche.sh

Der eigentliche Befehl in dem Script ist pdfgrep "${SEARCHSTRING}" ./*.pdf | cut -d: -f 1 | uniq -c.
  • Zuerst wird pdfgrep aufgerufen, das ein Suchwort SEARCHSTRING in allen pdfs im aktuellen Arbeitsverzeichnis suchen soll. Jeder Treffer wird im Terminal als eigene Zeile ausgegeben.
  • Der Output von pdfgrep wird dann an cut weitergegeben, das den Inhalt jeder Zeile bei einem Doppelpunkt teilt (-d :). Von diesen geteilten Elementen wird dann nur das erste Element weiter verwendet (-f 1).
  • Der output von cut wird dann an uniq weiter gegeben. uniq zählt mit der Option -c wie häufig welches pdf vorkam.
Diese Funktionalität deckt jetzt sicher noch nicht alles ab, was du aus den pdfs lesen willst, aber das lässt sich auch noch einfach erweitern.
 
Zuletzt bearbeitet:
Danke, das ist sehr hilfreich.
Ich werde mich damit einfach näher befassen müssen.
pdfgrep wird ja auch sicher eine man-page haben oder es wird eine brauchbare, externe Dokumentation geben.
Dann habe ich ja am Wochenende was zu tun :)
 
  • Gefällt mir
Reaktionen: Hörbört
Zurück
Oben