Den Text aus einem PDF holen — und was das Layout damit macht
Veröffentlicht am 11.8.2026 · 14 Min. Lesezeit · Datei-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei Allin
Web-Performance · Dateiformate
Anhand von 3 Quellen geprüft
Ein PDF speichert weder Zeilen noch Absätze noch eine Lesereihenfolge. Es speichert Glyphen an Koordinaten einer Seite, jede Extraktion ist also eine Rekonstruktion, und die Regeln des Werkzeugs entscheiden über das Ergebnis. Dieses Werkzeug fasst Glyphen mit gemeinsamer Grundlinie zu Zeilen zusammen und bietet dann zwei Modi: „Zeilen beibehalten“ gibt die Seite so wieder, wie sie gesetzt ist, „Zu Absätzen zusammenfügen“ klebt umbrochene Zeilen wieder zusammen und nimmt dabei das untere Quartil der Grundlinienabstände als normalen Durchschuss der Seite; ein Abstand über dem 1,35-Fachen gilt als Absatzende. An echten Dateien gemessen: Eine zweispaltige Seite kommt in beiden Modi verschränkt heraus — linke und rechte Zeile teilen sich eine Grundlinie, werden mit einem Leerzeichen verbunden, und der Fließtext wird unlesbar. Eine Tabelle behält ihre Zeilen, verliert aber ihre Spalten; Zellen sind nur durch ein Leerzeichen getrennt, und eine leere Zelle verschwindet schlicht, sodass eine vierspaltige Zeile mit drei Werten ankommt und nichts anzeigt, welcher fehlt. Durch Trennstrich umbrochene Wörter werden im Absatzmodus wieder zusammengefügt („con-“ plus „cluded“ ergibt „concluded“), doch die Regel greift bedingungslos: Auch ein echter Bindestrich am Zeilenende wird verbunden, „long-“ plus „term“ ergibt „longterm“. Ligaturen dagegen sind gut gelöst: fi und fl kommen als gewöhnliche Buchstabenpaare zurück, nicht als einzelnes Ligaturzeichen. Laufende Kopf- und Fußzeilen werden auf jeder Seite mit extrahiert; ein 44-seitiges Dekret ergab 44 Kopien seiner Kopfzeile, mitten im Text. Ein gescanntes PDF enthält überhaupt keinen Text. Das Werkzeug liefert nichts und sagt das auch deutlich. Es macht kein OCR, und es versteckt sich auch kein OCR-Schritt darin.
Ein PDF speichert Glyphen an Koordinaten — keine Zeilen, keine Absätze, keine Lesereihenfolge. Die Extraktion baut den Text aus diesen Positionen neu auf, und deshalb kommen zwei Spalten verschränkt heraus, verliert eine Tabelle ihre Zellen und liefert ein Scan gar nichts. Gemessen, indem das Werkzeug ausgeführt wurde.
Ein PDF hat keine Zeilen — nur Glyphen an Koordinaten
Das ist die Tatsache, aus der alles Weitere folgt, und fast kein Ratgeber sagt sie deutlich. Eine PDF-Seite ist eine Liste von Zeichenanweisungen. Eine davon lautet: Setze diese Glyphe an diesen Punkt, in dieser Schrift, in dieser Größe. Es gibt in der Datei kein Objekt, das „Absatz“ bedeutet, keines für „Zeile“, und keines hält fest, welchen Textblock ein Leser zuerst lesen soll. Das Format ist durch ISO 32000 definiert, und die Lesereihenfolge gehört schlicht nicht zu dem, was eine einfache Seitenbeschreibung mitführt.
Extraktion ist also Rekonstruktion, und genau hier unterscheiden sich alle Werkzeuge. Dieses nimmt die Glyphenfolge, die pdf.js zurückgibt — jede mit eigener Position — und fasst diejenigen zu einer Zeile zusammen, deren Grundlinien weniger als eine halbe Glyphenhöhe auseinanderliegen. Innerhalb einer Zeile sortiert es von links nach rechts und fügt überall dort ein Leerzeichen ein, wo der horizontale Abstand ein Fünftel der Glyphenhöhe überschreitet — denn ein PDF, das Wörter durch Versetzen des Cursors trennt, gibt gar kein Leerzeichen aus. Diese Rekonstruktion ist gut. Sie ist auch der Grund, warum die folgenden Fehlschläge so aussehen, wie sie aussehen: Es sind durchweg Fälle, in denen die Geometrie der Seite und die Logik des Dokuments einander widersprechen.
Zwei Spalten: der Fehlschlag, dem du zuerst begegnest
Eine zweispaltige Seite wurde mit vier Zeilen je Spalte gesetzt und extrahiert. Das Ergebnis beginnt: „Revenue for the quarter rose by four Costs grew more slowly, at two per cent,“. Die erste Hälfte ist die Anfangszeile der linken Spalte, die zweite die der rechten. Sie teilen sich eine Grundlinie, für die Rekonstruktion sind sie also eine einzige Zeile und werden mit einem Leerzeichen verbunden.
Der Wechsel zu „Zu Absätzen zusammenfügen“ macht es schlimmer statt besser. Die verschränkten Zeilen werden nun zu einem einzigen Prosablock verklebt, in dem jeder Satz von einem Fragment der anderen Spalte halbiert wird. Schlimmer noch: Die Trennstrich-Reparatur setzt aus. Die linke Spalte endete eine Zeile mit „sub-“, doch wenn die Absatzlogik den Puffer prüft, ist der Bindestrich nicht mehr das letzte Zeichen — der Text der rechten Spalte steht dahinter. Die Ausgabe lautet „by the sub- reclassification of contractors into the scription business“. Das Wort „subscription“ ist entzweigerissen, und die Hälften liegen elf Wörter auseinander.
Es gibt keine Einstellung, die das behebt, denn beheben hieße, die Spalten zu erkennen, und Spaltenerkennung ist ein wirklich schweres Problem, das dieses Werkzeug gar nicht erst versucht. Der praktische Ausweg: Seite für Seite extrahieren und das Ergebnis von Hand auseinanderschneiden — oder hinnehmen, dass ein zweispaltiger Fachaufsatz oder ein gedrucktes Gesetz nach der Extraktion redigiert werden muss, nicht davor.
Tabellen behalten ihre Zeilen und verlieren ihre Spalten
Eine vierspaltige Tabelle wurde auf Zeilenebene sauber extrahiert: „Region Revenue Cost Margin“, dann „North 1,240 980 21%“. Jede Zeile steht für sich und in der richtigen Reihenfolge. Verschwunden ist die Spaltengrenze — Zellen sind durch ein einzelnes Leerzeichen getrennt, genau wie Wörter, sodass nichts in der Ausgabe einen Zellenwechsel von einem Wortwechsel unterscheidet. Fügst du das in eine Tabellenkalkulation ein, erhältst du eine Spalte.
Das schärfere Problem ist die leere Zelle. Eine Tabelle mit leerer „Notiz“ in einer Zeile und leerem „Lieferant“ in einer anderen ergab „Chair Nordia 89.00“ und „Desk back-order 240.00“ — vier Spalten, die zweimal als drei Werte ankommen, ohne jeden Hinweis, welche Spalte übersprungen wurde. Wer diese Tabelle mit dem Auge rekonstruiert, setzt „back-order“ in die Spalte Lieferant. Nichts im Text sagt etwas anderes. Und eine Zelle, deren Inhalt in eine zweite Zeile umbricht, wird zur eigenen Zeile: Die Notiz „discontinued, replacement pending“ kam als „Lamp Vela discontinued, 15.00“ heraus, gefolgt von einer Zeile, die nur „replacement pending“ lautet.
Im Absatzmodus hört die Tabelle ganz auf, eine Tabelle zu sein. Das Ganze kam als ein Satz zurück: „Region Revenue Cost Margin North 1,240 980 21% South 870 910 -5% East 2,310 1,760 24%“. Enthält dein Dokument eine Tabelle, die dir wichtig ist, nimm „Zeilen beibehalten“ — und rechne damit, die Spalten selbst wiederherzustellen.
Trennstriche, Ligaturen und die Kopfzeile auf jeder Seite
Silbentrennung wird behandelt, mit einem Vorbehalt. Im Absatzmodus wird bei einer Zeile, die auf einen Trennstrich endet, dieser entfernt und die nächste Zeile direkt angefügt, sodass „con-“ und „cluded“ zu „concluded“ und „re-“ und „vised“ zu „revised“ werden. Beides wurde auf einer einspaltigen Seite geprüft. Doch die Regel greift bedingungslos: Sie feuert bei jedem zeilenfinalen Bindestrich, auch bei einem, der zum Wort gehört. Auf einer Testseite ergab „long-“ am Zeilenende plus „term“ das Wort „longterm“, und „e-“ plus „mail“ ergab „email“. Keins von beiden ist ein Tippfehler in der Quelle; beides ist die Reparatur, die zu viel repariert.
Ligaturen sind die gute Nachricht, und es lohnt sich, sie zu verstehen, weil sie in Werkzeugen, die sie falsch behandeln, die Suche zerstören. Das fi eines Setzers ist in der Schrift oft ein einziges Zeichen, und eine Teilschrift bildet es über eine Tabelle im PDF nach Unicode zurück. Naiv extrahiert erhält man U+FB01 — auf dem Bildschirm identisch, bei der Suche nach „file“ ohne Treffer. Die Engine unter diesem Werkzeug normalisiert standardmäßig, dieselbe Testdatei liefert also „confirmed“ und „fluently“ als gewöhnliche Buchstaben. Dieselbe Datei mit abgeschalteter Normalisierung erneut gelesen, gab die Ligaturzeichen zurück — so wissen wir, dass die Normalisierung die Arbeit leistet.
Laufende Kopf- und Fußzeilen werden auf jeder einzelnen Seite mitextrahiert, und nichts entfernt sie. Ein 44-seitiges spanisches konsolidiertes Dekret lieferte genau 44 Kopien von „LEGISLACIÓN CONSOLIDADA“ und 44 Seitenzahlzeilen, mitten in den Fließtext gesetzt. In der extrahierten Datei bricht ein Satz am Fuß von Seite 5 mitten im Gliedsatz ab, es folgen eine Fußzeile, ein Seitentrenner und zwei Kopfzeilen, und auf Seite 6 geht es weiter. Das ist kein Fehler der Rekonstruktion — die Kopfzeile steht wirklich auf der Seite — bedeutet aber, dass jedes lange Dokument einen Suchen-und-Ersetzen-Durchgang braucht, um das Mobiliar zu entfernen, bevor der Text brauchbar ist.
Ein gescanntes PDF enthält keinen Text, und OCR ist etwas anderes
Das ist die häufigste Enttäuschung, und sie verdient eine klare Antwort. Wird eine Seite gescannt oder abfotografiert, enthält das entstehende PDF ein Bild und sonst nichts. Keine Glyphen, keine Schrift, keine Zeichencodes — nur Pixel, die für dich wie Buchstaben aussehen. Die Extraktion hat nichts zu finden, und kein anderer Layoutmodus ändert daran etwas.
Das Werkzeug sagt es auch — anders als manche. Mit einer Seite gefüttert, die nur ein Bild enthält, gab es die leere Zeichenkette zurück und zeigte einen Satz an, der erklärt, dass die Datei keinen auswählbaren Text enthält und höchstwahrscheinlich ein Scan ohne Textebene ist. Es liefert weder stillschweigend ein leeres Textfeld noch eines, das nur Seitentrenner enthält — die Leere wird an den Seiteninhalten geprüft, nicht an der zusammengesetzten Zeichenkette. Einen Scan in Text zu verwandeln erfordert optische Zeichenerkennung, die Pixel liest und Buchstaben errät. Dieses Werkzeug tut das nicht, und nichts darin tut es klammheimlich im Hintergrund.
Zwei Wege, auf denen eine Seite leer zurückkommt — und was dir gesagt wird
Erstens: ein Seitenbereich, der Seiten nennt, die die Datei nicht hat. Tippe 99 bei einem zweiseitigen Dokument, und der Bereichsparser verwirft die Zahl außerhalb des Bereichs, sodass nichts mehr zu extrahieren bleibt. Das ist nicht dasselbe wie eine Seite ohne Text, und es bekommt auch nicht länger dieselbe Antwort: Die Meldung nennt, wie viele Seiten das Dokument wirklich hat, und bittet dich, den Bereich zu korrigieren oder zu leeren. Gemessen an einer zweiseitigen Datei, bei der Seite 99 angefordert wurde — „Keine der angeforderten Seiten gibt es in diesem Dokument: Es hat 2 Seite(n).“ Ein Bereich, der über das Ende hinausläuft, statt dahinter zu beginnen, wird schlicht gekappt: 1-3 bei derselben Datei extrahiert beide Seiten kommentarlos.
Zweitens: ein Dokument, das gesetzte Seiten mit einem eingescannten Blatt mischt — eine unterschriebene Seite, ein Fax, eine abfotografierte Urkunde. Diese Seite trägt keine Textebene, kommt also leer zurück, während der Rest des Dokuments einwandfrei extrahiert. Das ist der Fall, der früher stumm durchlief, weil die Leere über das ganze Dokument geprüft wurde und die gesetzten Seiten dafür genügten: Die gescannte Seite schrumpfte auf eine Seitenmarkierung ohne alles darunter — und auf gar nichts, sobald die Markierungen aus waren. Die Leere wird jetzt Seite für Seite gemessen. Bei einer vierseitigen Testdatei, deren zweite Seite ein Bild war, lieferte die Extraktion die anderen drei Seiten und darüber eine bernsteinfarbene Zeile: „1 Seite(n) tragen keinen auswählbaren Text und kommen leer heraus: 2“; mit Bildern auf Seite 2 und 4 nannte dieselbe Zeile „2, 4“. Es ist eine Warnung, keine Verweigerung — der Text, den du bekommen hast, bleibt dir. Sie sagt dir, welche Seiten eine optische Zeichenerkennung brauchen und keinen zweiten Versuch.
| Seitenelement | „Zeilen beibehalten“ | „Zu Absätzen zusammenfügen“ |
|---|---|---|
| Zwei Spalten | Linke und rechte Zeile mit einem Leerzeichen verbunden, auf jeder Zeile | Dieselbe Verschränkung, dann zu einem durchlaufenden Block verklebt |
| Tabellenzeile | Eine Zeile je Reihe, Zellen durch ein einzelnes Leerzeichen getrennt | Die ganze Tabelle wird zu einem Satz |
| Leere Tabellenzelle | Verschwindet — eine vierspaltige Zeile kommt als drei Werte an | Verschwindet, und die Zeilengrenze ebenfalls |
| Durch Trennstrich umbrochenes Wort | Bleibt getrennt: „con-“ dann „cluded“ | Korrekt zusammengefügt: „concluded“ |
| Bindestrich am Zeilenende | Bleibt wie geschrieben | Fälschlich verbunden: „long-“ + „term“ ergibt „longterm“ |
| Ligatur fi / fl | Gewöhnliche Buchstabenpaare, durchsuchbar | Gewöhnliche Buchstabenpaare, durchsuchbar |
| Laufende Kopf- und Fußzeile | Eine Kopie je Seite, mitten im Text | Eine Kopie je Seite, als eigener Absatz |
| Gescannte Seite (nur Bild) | Nichts — die Seite wird in einer Warnung über dem Text genannt | Nichts — dieselbe Warnung |
Häufige Fragen
- Warum kommt mein zweispaltiges PDF als Kauderwelsch heraus?
- Weil die linke und die rechte Zeile auf gleicher Höhe gedruckt sind und die Rekonstruktion nach Höhe gruppiert. Sie kann nicht wissen, dass die Seite in zwei Lesezonen geteilt ist — ein PDF hält das nicht fest. Also liest sie quer durch, verbindet die beiden Fragmente mit einem Leerzeichen und geht eine Zeile tiefer. Beide Modi tun das; der Absatzmodus verschärft es danach, indem er die verschränkten Zeilen zusammenklebt. Brauchst du sauberen Text aus einem zweispaltigen Dokument, extrahiere Seite für Seite und trenne die Spalten von Hand — oder suche eine Fassung, die nie in Spalten gesetzt wurde.
- Kann es ein gescanntes PDF lesen, und macht es OCR?
- Nein, und nein. Ein gescanntes PDF enthält ein Bild einer Seite und gar keine Textobjekte, es gibt also nichts zu extrahieren; das Werkzeug liefert nichts und sagt dir, dass die Datei höchstwahrscheinlich ein Scan ohne Textebene ist. Optische Zeichenerkennung ist etwas anderes — sie betrachtet die Pixel und errät, welche Buchstaben sie darstellen, weshalb sie irren kann und wissen muss, welche Sprache sie liest. Dieses Werkzeug tut das nicht, bietet es nicht an und versucht es auch nicht heimlich. Ein schneller Test vor dem Hochladen: Öffne die Datei in einem beliebigen Reader und versuche, einen Satz zu markieren. Folgt die Markierung den Wörtern nicht, hilft kein Extraktionswerkzeug.
- Es sagt, es gebe keinen Text, aber ich kann in meinem Reader welchen markieren. Warum?
- Prüfe zuerst den Seitenbereich. Das Feld nimmt alles an und verwirft stillschweigend Zahlen, die es im Dokument nicht gibt: Seite 99 einer zehnseitigen Datei anzufordern lässt nichts zu extrahieren übrig — und die Meldung sagt genau das, samt der Zahl der Seiten, die das Dokument wirklich hat, statt deine Datei einen Scan zu nennen. Leere das Feld und starte erneut. Die andere Möglichkeit ist, dass die gewählten Seiten tatsächlich die gescannten sind: Ein Dokument kann gesetzte Seiten mit einem eingescannten Blatt mischen, und wenn du nur dieses Blatt angefordert hast, steht darauf nichts. Fordere lieber das ganze Dokument an. Jede Seite mit Text wird extrahiert, und die leer zurückgekommenen Seiten werden in einer Warnung über dem Ergebnis genannt — so siehst du, welche eine optische Zeichenerkennung brauchen.
- Welchen Layoutmodus soll ich wählen?
- Wähle „Zeilen beibehalten“, wann immer die Anordnung der Seite Bedeutung trägt: Tabellen, Formulare, Rechnungen, alles mit Spalten und jedes Dokument, das du Zeile für Zeile prüfen willst. Wähle „Zu Absätzen zusammenfügen“ nur für einspaltigen Fließtext, den du gleich in ein Dokument einfügst, wo umbrochene Zeilen stören statt zu informieren. Der Absatzmodus repariert getrennte Wörter und liefert damit wirklich besseren Fließtext — auf der richtigen Art von Seite. Auf der falschen zerstört er die Struktur unwiderruflich, und aus der Ausgabe holst du sie nicht zurück; du musst die Extraktion neu laufen lassen.
- Entfernt es die Kopf- und Fußzeile, die sich auf jeder Seite wiederholen?
- Nein. Jedes wiederholte Element kommt einmal pro Seite mit, und bei einem langen Dokument ist das viel Lärm: Ein 44-seitiges Dekret ergab 44 Kopien seiner Kopfzeile und 44 Seitenzahlzeilen, mitten zwischen den Sätzen, die sie unterbrechen. Sie zuverlässig zu entfernen hieße zu erkennen, dass eine Zeile Mobiliar und kein Inhalt ist — ein Urteil, das das Werkzeug nicht fällt. Praktisch hilft ein Suchen-und-Ersetzen im Texteditor nach der Extraktion: Die Kopfzeile ist eine exakt wiederholte Zeichenkette, eine Ersetzung räumt alle weg. Tu das, bevor du Wörter zählst oder den Text weiterreichst, sonst zählt das wiederholte Mobiliar als Inhalt.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
Alles hier Beschriebene wurde im August 2026 gemessen, indem diese Werkzeuge auf echte Dateien angewendet wurden — nicht daraus abgeleitet, was ein PDF-Werkzeug tun sollte. PDF-Verhalten ist nicht einheitlich: Das Format ist durch ISO 32000 definiert, doch Lesereihenfolge, Metadaten-Konventionen und Seitenrahmen sind allesamt Stellen, an denen zwei scheinbar korrekte Werkzeuge auseinandergehen, und eine Datei aus einem ungewöhnlichen Erzeugerprogramm kann sich anders verhalten als jede hier geprüfte. Bevor du eines dieser Verfahren auf ein Dokument anwendest, das du nicht ersetzen kannst: arbeite an einer Kopie und öffne das Ergebnis in einem Reader, dem du traust.
Quellen
Hast du einen Fehler in diesem Artikel entdeckt?