Ansichten eines Informatikers

Aktennotiz zu pdftotext bei vermurksten Zeichensätzen

Hadmut
31.10.2023 14:53

Technische Notiz.

Unter Linux gibt es ein sehr nützliches Tool namens pdftotext, mit dem man PDFs möglichst originalgetreu (am besten mit der Option -layout , wenn es darauf ankommt, dass der Text an der richtigen Stelle steht und nicht in der Reihenfolge der Anweisungen angegeben wird) in Text-Dateien wandeln kann. Sehr nützlich, um aus Rechnungen und so weiter die Details rauszupfriemeln.

Aber, ach.

Manchmal geht es gut, und manchmal liefert pdftotext zerschrotteten Text, weil irgendwelche Programmbibliotheken, die PDFs erzeugen, die Zeichensätze dabei durcheinanderwirbeln und pdftotext damit nicht klarkommt. Ist mir schon oft passiert, bei Kontoauszügen, Kreditkartenabrechnungen und so weiter.

Die Manpage dazu:

BUGS
Some PDF files contain fonts whose encodings have been mangled beyond recognition. There is no way (short of OCR) to extract text from these files.

Klar, könnte man jetzt einen PDF-Parser schreiben, der das richtig macht, wenn man zuviel Zeit und Langeweile hat. Habe ich gerade nicht.

Ich habe aber auf der Suche nach einer Lösung gerade gefunden, wie es – zumindest mit den Dateien, mit denen ich es gerade probiert habe – trotzdem funktioniert:

  1. Die PDF-datei mit pdftops in eine temporäre Postscript-Datei wandeln.
  2. Die temporäre Postscript-Datei mit ps2pdf wieder zurück in eine neue, temporäre PDF-Datei wandeln. (Vorsicht, nicht die originale PDF-Datei überschreiben.)
  3. pdftotext dann auf diese temporäre PDF-Datei anwenden.

Offenbar ist pdftops in der Lage (oder tut das als Nebeneffekt, weil es den PDF-Code nicht analysiert, sondern durchinterpretiert), gruselige Zeichencodierungen geradezuziehen und sie in Postscript normalisiert darzustellen.