Wie funktioniert die Strukturerkennung in PDF? Getaggtes PDF und Überschriftenerkennung
8 Min. Lesezeit
Aus einem PDF Markdown zu erzeugen ist in Wahrheit ein recht schwieriges Ableitungsproblem. Denn im Inneren eines PDFs steht meist nicht, dass "dies eine Überschrift ist" oder "dieser Absatz nach jenem gelesen wird". In diesem Beitrag erklären wir, was Konverter tun, welche Hinweise sie nutzen und warum sie bei manchen Dokumenten erfolgreich und bei anderen erfolglos sind.
Was PDF speichert und was nicht
Der Inhalt einer PDF-Seite besteht aus Zeichenbefehlen:
BT
/F2 18 Tf % Schrift in 18 Punkt wählen
72 720 Td % zur Position gehen
(Einleitung) Tj % "Einleitung" schreiben
ET
BT
/F1 11 Tf % Schrift in 11 Punkt wählen
72 690 Td
(Das in dieser Arbeit behandelte Thema...) Tj
ET
Was in diesen Befehlen steht: welche Buchstaben mit welcher Schrift, in welcher Größe und an welche Koordinate gezeichnet werden.
Was nicht darin steht: dass das Wort "Einleitung" eine Überschrift ist. Dass der folgende Text der Absatz unter dieser Überschrift ist. Wo der Absatz endet und ein neuer beginnt.
Ein Mensch erkennt das beim Blick auf die Seite sofort – denn ein fett gesetztes Wort in 18 Punkt allein auf einer Zeile bedeutet "Überschrift". Der Konverter muss dieselbe Ableitung leisten.
Getaggtes PDF: der Fall ohne Ableitungsbedarf
Ein getaggtes (tagged) PDF trägt neben dem Seiteninhalt auch die semantische Struktur des Dokuments. In der Datei liegt ein Strukturbaum:
Document
├── H1 "Einleitung"
│ └── P "Das in dieser Arbeit behandelte Thema..."
├── H2 "Methode"
│ ├── P "Die Untersuchung erfolgte in diesen Schritten..."
│ └── L (Liste)
│ ├── LI "Erster Schritt"
│ └── LI "Zweiter Schritt"
└── Table
├── TR
│ ├── TH "Jahr"
│ └── TH "Wert"
└── TR ...
Dieser Baum ist genau die Information, die Markdown benötigt. Aus einem getaggten PDF Markdown zu erzeugen ist keine Ableitung, sondern eine unmittelbare Zuordnung:
| PDF-Tag | Markdown |
|---|---|
| H1, H2, H3 | #, ##, ### |
| P | Absatz |
| L / LI | --Liste |
| Table / TR / TD | Markdown-Tabelle |
| Link | [Text](url) |
| Figure |  |
Das Ergebnis ist dramatisch besser als bei ungetaggten PDFs.
Woher kommen getaggte PDFs?
- Aus Word erzeugte PDFs mit aktivierter Option "Dokumentstrukturtags"
- Nach Anforderungen der Barrierefreiheit erstellte Unternehmensdokumente
- Dokumente nach dem Standard PDF/UA (Universal Accessibility)
Woher nicht?
- Über "Als PDF drucken" erzeugte Dateien
- Die meisten Ausgaben von Gestaltungsprogrammen (ohne besondere Einstellung)
- Gescannte Dokumente
- Alte PDFs
Ob Ihr Dokument getaggt ist, sehen Sie im Eigenschaftenfenster Ihres PDF-Betrachters.
Der Ableitungsprozess bei ungetaggten PDFs
Fehlen Tags, geht der Konverter der Reihe nach so vor.
1. Textbruchstücke einsammeln
PDF speichert Text in kleinen Bruchstücken. Mal ist es ein Wort, mal einige Buchstaben, mal ein einzelnes Zeichen als eigener Zeichenbefehl – besonders bei Text mit angepasster Zeichenlaufweite.
Der Konverter fügt Bruchstücke, die auf derselben Zeile nah beieinanderliegen, zu Wörtern und Zeilen zusammen.
Die Schwierigkeit: Wortgrenzen zu finden. In PDF wird das Leerzeichen nicht immer geschrieben; mitunter wird nur der Cursor vorgerückt. Der Konverter muss anhand des Abstands zwischen den Bruchstücken entscheiden, "hier ist ein Leerzeichen". Wird die Schwelle falsch gewählt, verschmelzen entweder Wörter, oder es entstehen Leerzeichen mitten im Wort.
2. Zeilen zu Absätzen gruppieren
Gehören aufeinanderfolgende Zeilen zum selben Absatz? Die Hinweise:
- Vertikaler Abstand: Ist der Abstand zwischen den Zeilen normal oder größer?
- Einzug der ersten Zeile: Ein neuer Absatz kann mit einem Einzug beginnen.
- Das Ende der vorherigen Zeile: Reicht die Zeile bis ans Ende der Satzbreite, geht der Text weiter; endet sie früher, kann es ein Absatzende sein.
- Interpunktion: Eine kurze Zeile, die mit einem Punkt endet, ist ein Zeichen für ein Absatzende.
3. Die Lesereihenfolge bestimmen
Das ist der schwierigste Schritt.
In einem ungetaggten PDF sind die Textbruchstücke in der Zeichenreihenfolge gespeichert, und diese Reihenfolge muss nicht mit der optischen Lesereihenfolge übereinstimmen. Ein Gestaltungsprogramm kann zuerst alle Überschriften und danach den Fließtext gezeichnet haben.
Der Konverter versucht, anhand der Koordinaten der Bruchstücke eine sinnvolle Reihenfolge aufzubauen. Auf einer einspaltigen Seite ist das einfach: von oben nach unten, von links nach rechts.
Bei mehrspaltigen Layouts beginnen die Probleme. Ordnen Sie die Zeilen einer zweispaltigen Seite einfach von oben nach unten, liegen die erste Zeile der linken und die erste Zeile der rechten Spalte nebeneinander, und die Texte verschränken sich:
"Das Ziel dieser Arbeit die gewonnenen Befunde zeigen, dass bei den untersuchten Proben..."
Ein sinnloses Gemisch. Gute Konverter führen eine Spaltenerkennung durch: Sie betrachten die horizontale Verteilung der Textblöcke, finden die freien Korridore und trennen die Spalten. Doch auch das ist eine Schätzung, die bei komplexen Layouts fehlgeht.
4. Überschriftenerkennung
Der Konverter wertet folgende Hinweise aus:
| Hinweis | Gewicht | |---|---| | Schriftgröße (größer als der Fließtext) | Hoch | | Fette Schrift | Mittel | | Wechsel der Schriftfamilie | Mittel | | Kürze der Zeile | Mittel | | Großer Abstand darüber/darunter | Mittel | | Nummerierungsmuster (1., 1.1.) | Hoch | | Schreibweise in Großbuchstaben | Gering | | Position am Seitenanfang | Gering |
Anschließend werden diese Kandidaten in Ebenen eingeteilt: Gibt es im Dokument fünf verschiedene Überschriftengrößen, wird die größte zu H1, die nächste zu H2 und so fort.
Typische Fehler:
- Ein fett gesetzter Betonungssatz wird für eine Überschrift gehalten.
- Eine kleiner gesetzte Zwischenüberschrift wird für Fließtext gehalten.
- Wurden in verschiedenen Teilen desselben Dokuments unterschiedliche Überschriftenstile verwendet, geraten die Ebenen durcheinander.
- Bild- und Tabellenunterschriften werden für Überschriften gehalten.
5. Listenerkennung
Aufzählungszeichen (•, -, ▪) und Nummerierungen (1., a), i.) werden erkannt. Die Einzugsebene bestimmt verschachtelte Listen.
Das Problem: Im PDF ist ein Aufzählungszeichen mal ein eigenständiges Zeichenobjekt (kein Text), mal ein Sonderzeichen, mal nur eine mit Leerzeichen erzeugte optische Ausrichtung. Im dritten Fall wird eine Erkennung unmöglich.
6. Tabellenerkennung
Eine der schwierigsten Strukturen. Es kommen zwei Ansätze zum Einsatz:
Linienbasiert: Die waagerechten und senkrechten Linien der Seite finden und daraus ein Raster bilden. Bei Tabellen mit Linien funktioniert das gut.
Ausrichtungsbasiert: Die vertikale Ausrichtung der Textbruchstücke betrachten und daraus Spalten schätzen. Bei Tabellen ohne Linien ist das der einzige Weg, aber zerbrechlich – auch ein gewöhnlicher Absatz kann so für eine Tabelle gehalten werden.
Selbst bei erfolgreicher Erkennung ist die Tabellensyntax von Markdown begrenzt: Verbundene Zellen, verschachtelte Tabellen und mehrzeilige Formatierung in Zellen lassen sich nicht ausdrücken.
Kopf- und Fußzeilen sowie Rauschen
Am oberen und unteren Rand jeder Seite finden sich wiederkehrende Elemente: Dokumenttitel, Kapitelname, Seitenzahl, Urheberrechtshinweis, Datum.
Diese sind Teil des Seiteninhalts, und der Konverter kann sie für Inhalt halten. Das Ergebnis sind alle paar Absätze wiederkehrende Rauschzeilen.
Gute Konverter nutzen eine Heuristik: Text, der auf mehreren Seiten an derselben Position wiederkehrt, ist eine Kopf- oder Fußzeile. Diese Erkennung funktioniert meist, geht bei Seitenzahlen jedoch fehl (weil diese auf jeder Seite anders sind).
Das Problem der Schriftkodierung
Bei manchen PDFs liefert die Textextraktion seltsame Ergebnisse: sinnlose Zeichen, fehlende Buchstaben, vermischte Sprachen.
Die Ursache ist der Schriftkodierungsmechanismus von PDF. In einem PDF können Buchstaben über Glyphennummern innerhalb der Schrift gespeichert sein, und es muss eine Zuordnungstabelle (ToUnicode CMap) geben, die diesen Nummern Unicode-Entsprechungen zuweist.
Fehlt diese Tabelle oder ist sie fehlerhaft, kann der Konverter die Glyphennummern nicht in die richtigen Buchstaben übersetzen. Die Seite erscheint am Bildschirm korrekt (weil das Zeichnen stimmt), doch die Textextraktion liefert sinnlose Ausgaben.
Bei Dokumenten mit Umlauten und Sonderzeichen kann dieses Problem besonders auffallen.
Warum manche PDFs gut und andere schlecht umgewandelt werden
Der entscheidende Faktor ist, wie das PDF erzeugt wurde:
| Quelle | Umwandlungsqualität | Grund | |---|---|---| | Word (getaggt) | Hervorragend | Strukturinformation in der Datei | | Word (ungetaggt) | Gut | Gleichmäßige Stile, einspaltig | | LaTeX | Gut bis mittel | Gleichmäßig, aber ungetaggt | | Gestaltungsprogramm (Bericht) | Mittel | Ungetaggt, komplexes Layout | | Gestaltungsprogramm (Broschüre) | Schlecht | Mehrspaltig, Kästen, freies Layout | | Gescannt plus OCR | Schwach | Künstliche Textebene | | Gescannt (ohne OCR) | Unmöglich | Kein Text vorhanden |
Zusammengefasst
Aus einem PDF Markdown zu erzeugen bedeutet, aus Zeichenbefehlen eine semantische Struktur abzuleiten. In getaggten PDFs steckt diese Struktur bereits in der Datei, und die Umwandlung reduziert sich auf eine unmittelbare Zuordnung – das Ergebnis ist nahezu fehlerfrei. In ungetaggten PDFs muss der Konverter dagegen alles aus optischen Hinweisen erraten: Textbruchstücke gruppieren, die Lesereihenfolge bestimmen, aus der Schriftgröße Überschriftenebenen ableiten, aus der Ausrichtung Tabellen erkennen. Diese Schätzungen gelingen bei einspaltigen, gleichmäßigen Dokumenten und scheitern bei mehrspaltigen, gestaltungslastigen. Deshalb ist es richtig, die Umwandlung nicht als Ende, sondern als Ausgangspunkt zu betrachten, dem eine Bereinigung von Hand folgt.
Häufig gestellte Fragen
Was ist ein getaggtes PDF und wie erkenne ich es?
Ein getaggtes PDF trägt neben dem Seiteninhalt auch die semantische Struktur des Dokuments: Dies ist eine Überschrift, dies ein Absatz, dies eine Tabellenzelle, und so lautet die Lesereihenfolge. Im Eigenschaftenfenster von PDF-Betrachtern findet sich meist eine Zeile 'Getaggtes PDF: Ja/Nein'. PDFs, die aus Word mit aktivierter Option 'Dokumentstrukturtags' erzeugt wurden, sind getaggt.
Warum ist die Lesereihenfolge ein Problem?
Weil in einem ungetaggten PDF die Textbruchstücke in der Reihenfolge gespeichert sind, in der sie auf die Seite gezeichnet wurden, und diese Reihenfolge nicht mit der optischen Lesereihenfolge übereinstimmen muss. Ein Gestaltungsprogramm kann zuerst alle Überschriften und danach den Fließtext gezeichnet haben. Der Konverter muss anhand der Koordinaten der Bruchstücke eine sinnvolle Reihenfolge schätzen, und bei mehrspaltigen Layouts geht diese Schätzung häufig fehl.
Auf welche Hinweise stützt sich die Überschriftenerkennung?
Die Schriftgröße ist der wichtigste Hinweis: Zeilen, die deutlich größer sind als der Fließtext, kommen als Überschrift in Frage. Zudem werden Strichstärke, ein Wechsel der Schriftfamilie, die Kürze der Zeile, der Abstand darüber und darunter, die Position auf der Seite und Nummerierungsmuster (1., 1.1., 1.1.1.) ausgewertet. Keiner dieser Hinweise ist eindeutig; gemeinsam bilden sie eine Wahrscheinlichkeitsrechnung.
Warum entsteht aus manchen PDFs perfektes Markdown und aus anderen schlechtes?
Der entscheidende Faktor ist, wie das PDF erzeugt wurde. Ein aus Word getaggt erzeugter Bericht trägt die Strukturinformationen in der Datei, und die Umwandlung verläuft nahezu fehlerfrei. Eine mehrspaltige Broschüre mit Kästen aus einem Gestaltungsprogramm trägt dagegen keinerlei Strukturinformation, und der Konverter muss alles aus optischen Hinweisen erraten.
Probieren Sie es gleich mit PDF → Markdown aus.
PDF → Markdown ausprobieren