claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 07/2005   »   Ausgabe bestellen

Word-, PostScript- und PDF-Dateien schnell durchsuchen

Text-Extraktor

von Heike Jurzik


Text aus Microsoft-Office-, PostScript- und PDF-Dokumenten extrahieren Sie mit wenigen Befehlen auf der Kommandozeile. Wie Sie in der Ausgabe nach verloren gegangenen Informationen suchen, erklärt dieser Artikel.

Dokumente im Word-Format betrachten Sie mit OpenOffice oder KWord, PostScript- und PDF-Dateien mit KGhostView, Acrobat Reader oder XPDF, und HTML-Seiten öffnen Sie in einem der zahlreichen Browser -- für fast alle Formate gibt es in der Linux-Welt eine oder mehrere passende Applikationen. Diese grafischen Programme benötigen aber alle eine gewisse Zeit zum Starten -- wer nur einen schnellen Blick auf den Inhalt eines Dokumentes werfen möchte oder in diesen nach Zeichenketten sucht, schießt mit Kanonen auf Spatzen. Wir stellen Kommandozeilen-Tools vor, mit denen Sie Text aus den verschiedenen Dateitypen extrahieren, und zeigen, wie Sie den Inhalt schnell nach bestimmten Begriffen durchforsten.

Immer dagegen -- Antiword

Wer schon einmal ein Word-Dokument im Text-Editor oder Pagern wie less (Abbildung 1) geöffnet hat, stellt schnell fest, dass der eigentliche Text vor lauter binären Steuerzeichen gar nicht mehr zu sehen ist. Auf diese Weise erfahren Sie im Zweifelsfall etwas über die eingesetzte Software und den Dokumententyp, und eventuell sehen Sie einzelne Textschnipsel, einen Überblick über den Inhalt verschaffen Sie sich so aber nicht. Das Programm Antiword [1] hilft dabei, Dateien im .doc-Format auf der Kommandozeile in ASCII-Text oder PostScript umzuwandeln.

Abb. 1: Jede Menge "Binärmüll" -- es ist gar nicht so leicht, den eigentlichen Text in Word-Dokumenten aufzuspüren.

Während Antiword bei Suse Linux 9.2 und 9.3 standardmäßig dabei ist, müssen Benutzer von Fedora Core 3 und Mandriva Linux 10.2 das Paket nachträglich von der Heft-CD einspielen.

Öffnen Sie ein Terminal-Fenster (z. B. über den Schnellstarter [Alt-F2] und Eingabe von konsole) und lassen Sie Antiword testweise auf das erste Dokument los:

antiword test.doc

(Das setzt voraus, dass in Ihrem Home-Verzeichnis eine Word-Datei test.doc liegt.) Auf der Kommandozeile sehen Sie jetzt -- hübsch formatiert -- das Word-Dokument als reinen ASCII-Text. Ist die Ausgabe zu lang für das Terminal-Fenster und fliegen Ihnen die Buchstaben nur so um die Ohren, leiten Sie den Output über das Pipe-Zeichen | an den Pager less weiter und betrachten die Ausgabe seitenweise:

antiword test.doc | less

Über die Pfeil- und Bildlauftasten blättern Sie in less hoch und runter, mit [Q] verlassen Sie den Pager. Um das Ergebnis stattdessen in eine neue Textdatei umzuleiten, bedienen Sie sich eines weiteren Kommandozeilentricks: Mit dem Umleitungsoperator schreiben Sie die Ausgabe direkt in eine Datei:

antiword test.doc > test.txt

Praktisch: Mit dem Parameter -w passen Sie die Spaltenbreite an. So bringt der Aufruf

antiword -w 50 test.doc > test.txt

den Ausgabetext auf eine Spaltenbreite von 50 Zeichen. Geben Sie hinter der Option als Ziffer 0 an, schreibt Antiword jeden Absatz des Textes ohne Zeilenumbruch in eine lange Zeile.

Ist das Word-Dokument ordentlich formatiert, d. h. sind die Ebenen entsprechend den Formatvorlagen richtig gesetzt, sieht die Antiword-Ausgabe wirklich gut aus: Neben den verschiedenen Überschriftenebenen zeigt das Programm mit [pic] auch an, wo im Text sich Bilder befinden.

Auf Wunsch wandelt Antiword die Word-Dokumente auch ins PostScript-Format um. Die dafür zuständige Option -p benötigt als zusätzliche Angabe die Seitengröße, z. B. speichert

antiword -p a4 test.doc > test.ps

das Dokument im DIN-A4-Format; als alternative Papiergrößen stehen hier u. a. a0 bis a5, die amerikanischen Maße letter (21,6 cm x 27,9 cm), legal (21,6 cm x 35,6 cm), tabloid (27,9 cm x 43,2 cm) zur Verfügung. Bilder und verschiedene Schriften bindet Antiword richtig ins PostScript-Dokument ein, so dass sich das Ergebnis sehen lassen kann.

Was steckt im PostScript oder PDF?

Um Textbausteine aus PDF-Dokumenten zu extrahieren, können Sie in der Regel (d. h.: wenn die PDF-Datei keinen "Copy&Paste-Schutz" hat) Text mit der linken Maustaste im Acrobat Reader oder in XPDF markieren und anschließend mit der mittleren Maustaste aus der Zwischenablage in ein Dokument im Text-Editor einfügen (Abbildung 2). Schneller geht es auf der Kommandozeile: Mit dem Programm ps2ascii extrahieren Sie in Windeseile Text aus PDF- und PostScript-Dokumenten.

Abb. 2: Per Copy & Paste wandert Text aus einer PDF-Datei in ein Textdokument.

Der Aufruf ist für beide Formate gleich: ps2ascii test.ps bzw. ps2ascii test.pdf. Da auch hier die Ausgabe direkt in der Konsole landet, nehmen Sie wieder den Pager less zur Hilfe, um das Ergebnis seitenweise zu betrachten, oder geben direkt den Namen einer Datei an, in die ps2ascii den Text schreiben soll:

ps2ascii test.ps test.txt

Das Ergebnis ist oft nicht optimal -- es gibt viele Formatfehler in der Ausgabe, und auch die Umlaute wirken etwas "zurechtgestutzt", z. B.:

... fu"r's Bu"ro...

Das ist jedoch -- falls nötig -- im Text-Editor schnell repariert: Sowohl Kate als auch KWrite bringen eine Suchen- und Ersetzen-Funktion mit, die Sie im Menü unter Bearbeiten finden. Wer einfach nur schnell den Inhalt von PDF- und PostScript-Dateien überfliegen möchte, kann die Fehler aber sicher verschmerzen.

HTML-Transformation

Web-Seiten oder lokale HTML-Dateien können Sie mit verschiedenen Tools auf der Kommandozeile in Text umwandeln. Die Formatierung der Ausgabe sieht bei allen hier vorgestellten Tools gut aus -- für welches Programm Sie sich entscheiden, ist Geschmackssache.

Eine Möglichkeit, aus HTML-Code Text zu erzeugen, ist über die so genannten Text-Browser wie Lynx (bei allen Distributionen dabei) oder w3m. (w3m-Pakete für Fedora und Mandrake Linux fnden SIe auf der CD.) Beide Programme bringen den Parameter -dump mit, um HTML in gut formatierten ASCII-Text zu wandeln:

w3m -dump datei.html | less

Ersetzen Sie im Aufruf im Zweifelsfall w3m durch lynx, um den anderen Text-Browser auszuprobieren -- das Look & Feel ist hier etwas anders. Abbildung 3 zeigt beide Programme bei der Umwandlung der EasyLinux-Homepage. Auch hier setzen Sie den Umleitungsoperator ">" zum Einsatz, um das Ergebnis als Textdatei abzuspeichern:

lynx -dump datei.html > datei.txt

Abb. 3: Die Text-Browser Lynx und "w3m" wandeln Web-Seiten in einfachen Text um.

Kombinationsgabe

Die gezeigten Tools und Befehle bringen den Text wahlweise in eine ASCII-Datei oder auf die Konsole. Letzteres ist beispielsweise dann praktisch, wenn Sie die Ausgabe mit grep [2] nach Zeichenketten durchsuchen wollen. Angenommen, Sie wissen, dass irgendwo im eigenen Home-Verzeichnis ein Word-Dokument mit einer Telefonnummer liegt, die Sie dringend benötigen. Jede einzelne Datei, die auf .doc endet, haben Sie mit KFind schnell aufgespürt; bis Sie alle Dokumente in OpenOffice geöffnet und durchsucht haben, vergeht allerdings einige Zeit.

Mit ein paar kombinierten Kommandozeilenbefehlen geht das alles viel schneller:

for i in $(find ~ -name "*.doc"); do antiword $i | grep --label=$i -nH Telefon; done

Was wie ein wirrer Zeichensalat aussieht, lässt sich schnell erklären: Die for-Schleife (also das Konstrukt, das den ganzen Befehlsaufruf einschließt) sorgt dafür, dass eine Gruppe von Dateien bearbeitet wird. Übersetzt steht hier also in etwa:

"Für alle Dateien, die der find-Aufruf [3] im eigenen Home-Verzeichnis (~) findet, die auf .doc enden, extrahiere den Text mit Antiword und übergebe das Ergebnis über ein Pipe-Zeichen an den grep-Befehl, der nach dem Wort 'Telefon' sucht und dem Ergebnis jeweils den Dateinamen und die Zeilennummer mit dem gefundenen Wort voranstellt, fertig."

Gegebenenfalls ersetzen Sie in dem Aufruf Telefon durch Tel oder ein anderes Suchwort -- schneller geht das Aufspüren mit keinem Office-Programm. (hge)

Infos
[1] Antiword-Homepage: http://www.winfield.demon.nl/
[2] grep-Artikel: Elisabeth Bauer, "Textfischer", EasyLinux 10/2003, S. 74 ff., http://www.easylinux.de/2003/10/074-grep/
[3] find-Artikel: Elisabeth Bauer, "Meisterdetektive", EasyLinux 01/2004, S. 74 ff.

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]