Portable Document Format, kurz PDF, ist ein allgegenwärtiges Dateiformat für Dokumente aller Art. Ob wissenschaftliche Arbeiten, Geschäftsdokumente oder Berichte – PDFs werden weltweit genutzt, da sie unabhängig von Software, Hardware oder Betriebssystem das Originallayout bewahren. Doch trotz dieser Vorteile bringt das Format auch erhebliche Herausforderungen mit sich, wenn es darum geht, den im PDF verborgenen Text maschinell zu extrahieren und weiterverarbeitbar zu machen. Die scheinbar einfache Aufgabe, einen PDF-Text auszulesen, entpuppt sich dabei als komplexes Problem. PDF ist im Kern kein Textformat, sondern ein grafisches.
Das bedeutet, dass Text im PDF nicht als fortlaufende Zeichenkette, sondern als einzelne gesetzte Glyphen an bestimmten Koordinaten auf der virtuellen Seite gespeichert wird. Diese Glyphen können gedreht, überlappend oder sogar in einer anderen als der druckreihenfolge sein. Daraus ergibt sich, dass ein bloßes Auslesen der Zeichen oft keinen sinnvollen, lesbaren Text ergibt. Moderne PDF-Viewer ermöglichen uns jedoch per einfacher Suche (zum Beispiel Strg+F), Texte im Dokument zu finden. Wie ihnen dies gelingt, ist technologisch äußerst anspruchsvoll.
Für Suchmaschinen wie Marginalia ist es eine Grundvoraussetzung, PDFs so zu verarbeiten, dass ein sauber strukturierter HTML-Text entsteht. Nur so können sie relevante Inhalte zuverlässig indexieren und zugänglich machen. Eine Kernschwierigkeit bei der Textextraktion ist die fehlende semantische Auszeichnung im PDF. Informationen über Absätze, Überschriften, und die Struktur eines Dokuments sind kaum bis gar nicht explizit enthalten. Suchmaschinen sind aber auf solche Relevanzsignale angewiesen – beispielsweise Überschriften spielen eine große Rolle bei der Einschätzung von Inhalten und ihrer Bedeutung.
Ein gängiger Ausgangspunkt für die extraktion sind Bibliotheken wie PDFBox mit ihrer PDFTextStripper-Klasse. Diese bietet eine Grundfunktion zum Herausziehen von Text, ist aber limitiert. So berücksichtigt sie etwa keine Strukturinformationen wie Überschriften oder Zwischenüberschriften und differenziert beispielsweise nicht nach Schriftstärke oder Größe, was für die Erkennung von wichtigen Textbausteinen essenziell wäre. Überschriften sind besonders schwer zu identifizieren, da sie sich nicht nur über Schriftstärke (bold oder semibold) definieren, sondern auch über die Schriftgröße. Dabei variiert die Größe erheblich von Dokument zu Dokument.
Ein Titel kann in einer Schriftgröße von 17 Punkt gesetzt sein, während Unterüberschriften in 14 Punkt auftauchen. Andere Dokumente verwenden wiederum kleinere oder größere Schriftgrade. Ein globaler Schwellenwert zur Erkennung von Überschriften ist deshalb wenig praktikabel. Um dennoch Überschriften zuverlässig zu erkennen, sind statistische Analysen auf Seitenebene sinnvoll. Dabei werden für jede Seite Häufigkeiten der verwendeten Schriftgrößen ermittelt, wobei die dominante Größe meist den normalen Fließtext repräsentiert.
Überschriften liegen in der Regel oberhalb eines gewissen Faktors bezogen auf diese dominante Größe, beispielsweise 20 % größer. Dieses Verfahren erwies sich als robust und deckt viele gängige Dokumenttypen ab, wobei jedoch Ausnahmen nicht vollkommen ausgeschlossen werden können. Ein weiteres Problem ergibt sich aus mehrzeiligen Überschriften. Stilistisch werden Überschriften oft aufgeteilt oder eingerückt – beispielsweise rechtsbündige Titelzeilen – was den automatischen Erkennungsprozess erschwert. Auch wenn die Kombination von ähnlicher Schriftstärke und -größe als Kriterium zum Verbinden mehrerer Überschriftszeilen dient, führt dies nicht immer zu korrekten Ergebnissen, da sich etwa Autorenangaben oder andere Elemente dazugesellen können, die formal auch als Überschriften fehlinterpretiert werden.
Auch bei der Absatz-Erkennung zeigen sich Herausforderungen. PDFTextStripper nutzt vor allem Zeilenabstände und Einrückungen als heuristische Hinweise auf Absatzgrenzen. Doch jedes Dokument folgt seinen eigenen typografischen Regeln, und manche verwenden einen anderthalb- oder zweifachen Zeilenabstand, was zu Fehlnavigationen bei der Parselogik führen kann. Deshalb ist eine dynamische Anpassung der Erkennungsparameter wünschenswert. Eine bewährte Strategie ist ähnlich der für die Schriftgrößenstatistik: Mittels der Ermittlung des mittleren (Median) Zeilenabstands kann ein Bezugspunkt geschaffen werden.
Ausgehend davon kann man mit einem Faktor bestimmen, ab welcher zusätzlichen Distanz ein neuer Absatz anzunehmen ist. Dies erhöht die Zuverlässigkeit gegenüber starren Schwellenwerten erheblich. Trotz aller Bemühungen bleibt das Problem, dass PDFs nie wirklich zur Strukturierung von Text entworfen wurden. Die Formatierung konzentriert sich auf das optische Layout, nicht auf die Inhaltssignale, die für eine textliche Weiterverarbeitung nötig sind. Somit sind die Lösungen immer Kompromisse zwischen Machbarkeit, Skalierbarkeit und Genauigkeit.
Die moderne Forschung deutet darauf hin, dass bildbasierte Verfahren mit neuronalen Netzen und maschinellem Lernen zukünftig die besten Ergebnisse bringen könnten. Diese Methoden können nicht nur Glyphen erkennen, sondern auch deren Kontext und Struktur semantisch deuten. Allerdings sind solche Ansätze sehr ressourcenintensiv und bislang kaum skalierbar für den produktiven Einsatz in der Verarbeitung großer Mengen von PDFs, insbesondere wenn keine spezialisierten Grafikprozessoren (GPUs) zur Verfügung stehen. Dennoch zeigen Entwicklungen wie bei Marginalia, dass es möglich ist, mit intelligenten heuristischen Methoden einen Großteil der relevanten Informationen aus PDFs zu gewinnen und Suchmaschinen damit effektiv zu verbessern. Die Kombination von statistischer Analyse von Schriftgrößen, einer robusten Absatzdetektion und Anpassung an besonders problematische Dokumentabschnitte wie Titelseiten oder Autorenangaben führt zu erstaunlich guten Ergebnissen.