PDF-Dateien erstellen und optimal nutzen (Teil 1)

Headerbilld: PDF-Dateien erstellen und optimal nutzen

PDF-Dateien sind die erste Wahl, wenn es darum geht Dokumente weiterzureichen oder auch zu archivieren. Sie sind grundsätzlich unveränderlich für den Empfänger, was die Sicherheit, den Inhalt des Dokuments vor unbeabsichtigten Änderungen zu schützen, ungemein erhöht. Auch sind PDF-Dateien im Rahmen der digitalen Archivierung nicht wegzudenken. Kurz: PDF-Dateien spielen in der täglichen Praxis, insbesondere in der Praxis des Unternehmensalltags, eine ganz zentrale Rolle.

Im Folgenden zeige ich, wie man PDF-Dateien komfortabel und flexibel bearbeiten kann. Ich habe hier unter macOS 10.12 (Sierra) gearbeitet. Die verwendete Software ist jedoch auch für andere Plattformen verfügbar.

PDF-Dateien erstellen

Im Dialog zum Drucken von Dokumenten bringt der Mac bereits alles mit, was zum erstellen von PDF-Dateien erforderlich ist. Selbisges gilt in analoger Form auch für Gnu/Linux oder Microsoft Windows. Aus einer Textverarbeitung oder einem Texteditor heraus gedruckt, sind diese Dokumente auch durchsuchbar. Was ist jedoch mit gescannten Dokumenten, die Textseiten als Grafik beinhalten? Wie lassen sich diese zum Durchsuchen nach Textpassagen aufbereiten? Wie lassen sich PDF-Dokumente in einzelne Seiten zerlegen oder umgekehrt aus verschiedenen einzelnen Dokumenten in einer Datei zusammenfassen? – Einige Funktionen bringen die in macOS integrierte Vorschau-App oder auch Skim, ein potenter PDF-Viewer, mit. Richtig gut wird es jedoch erst, wenn wir ein paar zusätzliche Werkzeuge installieren. Die hier vorgestellten Tools lassen sich leicht via MacPorts oder auch HomeBrew, zwei Paket-Repositories für den Mac, nachinstallieren.

OCR – Texterkennung

Wenn wir Dokumente selbst erstellen, beispielsweise mit Microsoft Word, LibreOffice, OpenOffice oder LaTeX, können wir die daraus resultierenden PDF-Dokumente nach in ihnen enthaltenen Textpassagen durchsuchen. Dazu öffnen wir unseren bevorzugten PDF-Betrachter und legen los.

Viele eingehende Dokumente werden heutzutage eingescannt. Das Resultat ist eine Bilddatei oder eine PDF-Datei, in der ein Bild des gescannten Dokuments eingebettet ist. Durchsuchbar sind diese Dateien nicht. Ein Dokument nach bestimmten Textpassagen durchsuchen zu können, ist jedoch gerade eine der Stärken des PDF-Formats. Wie schaffen wir es also, eine gescanntes Dokument durchsuchbar zu machen? – Wir benötigen neben der Bild- auch die Textinformation. Um diese zu erhalten, müssen wir unsere Dokumente mit einer OCR-Software (Optical Character Recognition), einer Texterkennung, bearbeiten.

tesseract – freie OCR-Software

Auf dem Mac empfiehlt sich hierzu die OCR-Engine tesseract. tesseract kann über die oben angegeben Repositories leicht installiert werden. Hierbei ist unbedingt zu beachten, auch die benötigten Sprachpakete mit zu installieren. Englisch ist Pflicht. Ohne dieses Sprachpaket verweigert tesseract den Dienst. Ist die Software korrekt installiert, lassen sich mit folgenden Befehl die installierten Sprachpakete ausgeben.

$ tesseract --list-langs
List of available languages (3):
deu
eng
osd
$ _

Das OSD-Sprachpaket ist erforderlich, um die Orientierung eines Scans oder auch mehrspaltigen Satz korrekt zu erkennen.

Textinformationen aus Bildern gewinnen

Nun wollen wir erstmal aus einem Bild die Textinformationen zu extrahieren. Dazu habe ich als Beispiel eine Seite aus einer Zeitschrift zum Falten von Papierfliegern gescannt.

Beispiel eines Scans
Beispielscan

Ich habe hier ein Dokument im TIF-Format verwendet. tesseract bedient sich der Bildbearbeitungsbibliothek Leptonica. Alle Bildformate, die Leptonica verarbeiten kann, können auch mit tesseract genutzt werden.

Mit dem folgenden Befehl können wir den Textinhalt erkennen und als Textdatei speichern:

$ tesseract -l deu scan.tif scan
Tesseract Open Source OCR Engine v3.04.01 with Leptonica
Page 1
$ _

Die Texterkennung ist sehr gut, jedoch auch nicht immer perfekt. Wer ganz pedantisch ist, hat jetzt die Möglichkeit, den erkannten Text nachzubearbeiten. Hier ein Ausschnitt aus der generierten Textdatei, ohne diese vorher nachbearbeitet zu haben:

Aero dynamlh 
Auf ein fliegendes Flugzeug wirken vier Kräfte ein, die
in einem bestimmten Verhältnis zueinander stehen
müssen: Schwerkraft, Auftrieb, Schub und Luft- 
widerstand. Da das Eigengewicht eines Flugzeugs
schwerer als Luft ist, wird es durch die Schwerkraft
zu Boden gezogen. Damit das Flugzeug durch die
Luft fliegen kann, muss eine der Schwerkraft ent-
gegengesetzte Kraft, der Auftrieb, gebildet werden.
Er entsteht durch die Luft selber, die auf eine bestimmte
Art und Weise die Tragflächen eines Flugzeuges
umströmt. Auf der Tragflächenoberseite entsteht ein
Sog, der das Flugzeug nach oben zieht, an der Untersei-
te entsteht Druck, der es zusätzlich nach oben drückt.

Die Überschrift, das Wort „Aerodynamik“ wurde nicht korrekt erkannt. Der Rest des Textes entspricht jedoch perfekt dem Originaltext. Da es bei der folgenden PDF-Verarbeitung vor allem darum geht, die Texte durchsuchbar zu machen, sind kleine Mankos nicht dramatisch.

Texte in PDF-Dateien einbetten

Ein gescanntes Dokument ist vorerst nur ein Bild. Auch wenn wir direkt ins PDF-Format scannen, haben wir nur ein entsprechend eingebettetes Bild. Dieses gilt es nun mittels OCR-Software zu bearbeiten und die erkannten Textpassagen in die PDF-Datei als Textlayer einzubetten.

Bilder in PDF-Dateien bearbeiten – OCRmyPDF beschaffen

Für diesen Job gibt es zum Beispiel OCRmyPDF. Die Software lässt sich anhand der Installationsanleitung leicht installieren. Die erforderlichen Voraussetzungen habe ich mittels des MacPorts-Repositories geschaffen. In der Folge heißen einige Installationsbefehle dann anders, was der Sache aber keinen Abbruch tut. Hinweis: Die in MacPorts enthaltene Version von unpaper war zu alt. OCRmyPDF fordert Version 6.1. Ich habe mir das Paket bei GitHub besorgt uns selbst kompiliert.

OCRmyPDF – Bedienhinweise

Ist OCRmyPDF erfolgreich installiert, können wir uns ans Werk machen. Hier erstmal die wichtigsten Optionen, mit denen OCRmyPDF gesteuert wird.

OptionFunktion
-hHilfefunktion
-vAusführlichkeit der Meldungen erhöhen (diese Option kann mehrfach verwendet werden)
-kTemporärdateien nicht löschen
-gDebug-Modus
-dJede Seite vor der Texterkennung geraderücken (mit convert aus ImageMagick)
-cJede Seite vor Texterkennung säubern (mit unpaper)
-iDas gesäuberte Bild in der Ausgabe-PDF-Datei verwenden
-oFalls die Auflösung eines Vorlagebildes niedriger sein sollte als die per Argument angegebene Auflösung in dpi, wird für die Texterkennung ein „oversampled“ Bild mit der angegeben Auflösung erstellt. Dadurch kann die Texterkennung verbessert werden.
-fErzwingen der Texterkennung für das gesamte Dokument, selbst wenn einige Seiten Textdaten enthalten.
-lAngabe der Sprache in der PDF-Datei. Standard ohne Angabe ist Englisch.
-CAngabe einer zusätzlichen Tesseract-Konfigurationsdatei.

OCRmyPDF – Praxisbeispiel

Die weiteren Optionen sind selbsterklärend. Ich nutze sie hier, um die Meta-information in das zu erstellende PDF-Dokument zu integrieren.

$ ocrmypdf -l deu -c -d -i \
> --title "Aerodynamik" \
> --author "OZ-Verlags-GmbH, Rheinfelden" \
> --subject "Tolle Papierflieger" \
> --keywords "Papierflieger Faltmodelle Aerodynamik" \
> scan.pdf papierflieger.pdf
   INFO -    1: [tesseract] Info in fopenReadFromMemory: work-around: 
             writing to a temp file
   INFO - Output file is a PDF/A-2B (as expected)
$ _

Fertig ist das PDF-Dokument.

Dateiinfo
Dateiinfo
PDF-Datei in Skim geöffnet
PDF in Skim

Das Ganze funktioniert natürlich auch mit mehrseitigen Dokumenten.

Auf diese Art und Weise ist das gescannte Dokument jedenfalls bereit für die Langzeitarchivierung. Und das Schöne daran ist, dass man nicht nur im PDF-Viewer nach Schlagwörtern oder Textpassagen suchen kann. Man kann sie natürlich auch markieren, Notizen anheften und so weiter.

PDF-Dateien durchsuchen

Wer nicht immer den PDF-Viewer starten oder gar mehrere Dokumente gleichzeitig durchsuchen möchte, der kann pdfgrep verwenden. Dieses kleine und schnelle Werkzeug kann ganze Verzeichnishierarchien durchforsten und so die Suche nach einem bestimmten Dokument deutlich vereinfachen. Das entspricht nicht dem Komfort einer Volltextsuche, wie sie uns ein Dokumentenmanagementsystem bieten würde, ist dafür aber ohne zusätzlichen Aufwand direkt nutzbar.

$ pdfgrep -i -n 'Schwerkraft' papierflieger.pdf

Hier die gekürzte Ausgabe:

1:müssen:     Schwerkraft, Auftrieb, Schub und Luft-
1:schwerer als Luft ist, wird    es  durch die Schwerkraft
1:Luft fliegen kann,    muss   eine der Schwerkraft ent-

Der folgende Befehl ist etwas „überladen“, weil das zu durchsuchende Dokument nur eine Seite hat. Die Option „-n“ zeigt nämlich die Seitenzahl des Fundortes einer Textpassage an. „-i“ steht für ignore case, so dass die Groß-/Kleinschreibung bei der Suche ignoriert. wird.

Dies ist nur ein kleiner Ausschnitt dessen, was wir mit PDF-Dateien anstellen können. – Es wird eine Fortsetzung geben, die sich dann mit dem Filettieren, dem Zusammenfügen und anderen spannenden Dingen befasst, die wir noch mit PDF-Dateien anstellen können.

Karsten Brodmann

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.