Vor einigen Jahren habe ich einige Artikel zum Thema Cuneiform und Sandwich-PDFs geschrieben (hier und hier). Diese sind doch arg veraltet und funktionieren nur noch sehr bedingt unter Ubuntu 14.04 und später. Mein aktueller Beitrag zeigt, wie man aus eingescannten PDFs trotzdem lesbare Sandwiches erstellen kann.

Ich besitze eine Reihe von eingescannten PDF-Texten. Diese habe ich entweder über die Fernleihe einer Uni-Bibliothek bekommen oder selbst irgendwann einmal eingescannt. Das ist zwar praktisch, aber zum Archivieren oder durchsuchen der Texte eignen sich solche PDFs nur bedingt. Sandwich-PDFs versprechen Abhilfe: Man lässt eine Texterkennung über das im PDF liegende Bild laufen. Das Programm „merkt“ sich dabei quasi die Position der einzelnen Zeichen, so dass ein eingescannter Text nachträglich durchsucht und markiert werden kann. Das dabei verwendete Format nennt sich hocr.

Es existieren für Ubuntu einige Programme, die versprechen, bereits bestehende PDFs in Sandwich-PDFs umzuwandeln. Ubuntuusers nennt gleich eine ganze Reihe davon, z.B. YAGF oder ocrodjvu. Ich habe einige Programme ausprobiert und war eigentlich mit keinem so recht zufrieden. Manche sind für ältere Ubuntu-Versionen gemacht, andere stürzten auf meinem 64-Bit-System ab oder zwingen mich, eine ganze Reihe von Fremdpaketen zu installieren. Ich will eigentlich nur einen einfachen Weg, um PDFs in Sandwiches umzuwandeln − eine grafische Oberfläche brauche ich dazu nicht. Deshalb habe ich ein einfaches Skript geschrieben, das automatisiert ein PDF einliest, die Bilder extrahiert, diese per OCR auswertet und das PDF am Ende wieder zusammensetzt.

Cuneiform kann schon seit geraumer Zeit nicht mehr vernünftig mit dem hocr-Format umgehen. Die Texterkennung funktioniert zwar, aber die Positionierung scheitert im PDF. Seit Ubuntu 14.04 unterstützt dafür tesseract-ocr Sandwich-PDFs direkt, was eine deutliche Erleichterung ist. Aus diesem Grund verwende ich tesseract-ocr.

Zur Vorbereitung sind zunächst einmal folgende Pakete zu installieren:

Daraufhin kann man folgende Datei als Skript erstellen (Name sandy.sh):

Per chmod +x sandy.sh muss die Datei ausführbar gemacht werden.

Danach kann man eine PDF-Datei, die aus Bildseiten aufgebaut ist, bequem in ein Sandwich umwandeln:

Es dauert ein wenig, dann sollte man eine Datei MeinePDFDatei_sandy.pdf vorliegen haben.

Das Skript ist im Moment noch ein Schnellschuss. Verbesserungen sind hier durchaus möglich, z.B. das Speichern im tmp-Ordner oder die Möglichkeit, eine andere Sprache als Deutsch einzustellen. Ich hoffe aber, das das Skript als einfache Hilfe bereits jetzt nutzbar ist.