Was dieses Tool macht
Dieser Extraktor zieht den Textinhalt aus einem PDF heraus. Lege eine Datei ab, schalte optional "Zeilenumbrüche erhalten" ein und du bekommst rechts den Rohtext — wobei jede Seite mit einem kleinen Marker (--- Seite N ---) eingeleitet wird. Der Text kann in die Zwischenablage kopiert oder als UTF-8-.txt-Datei heruntergeladen werden. Das Parsen passiert vollständig in deinem Browser über pdf.js; das PDF wird nie hochgeladen.
Wann du es brauchst
- Eine Phrase in einem langen Bericht, Vertrag oder einer Abschlussarbeit suchen, ohne eine Desktop-Suite zu kaufen.
- Den Body eines PDFs in einen Zusammenfasser, Übersetzer oder LLM-Prompt einspeisen, der reinen Text will.
- Den Abstract oder die Referenzen aus einer wissenschaftlichen Arbeit ziehen, um sie in einen Citation-Manager einzufügen.
- Chat- oder E-Mail-Transkripte exportieren, die als PDF kamen, in ein Format, das deine Skripte greppen können.
- Die OCR-Schicht eines gescannten Dokuments prüfen — fehlt hier erkennbarer Text, ist das PDF nur Bild und braucht erst OCR.
Wie es funktioniert
pdf.js stellt auf jeder Seite eine getTextContent()-Methode bereit, die die Textläufe der Seite in der Reihenfolge zurückgibt, in der sie im Content-Stream des Dokuments erscheinen, zusammen mit der Transformationsmatrix jedes Laufs (einem Array aus sechs Elementen, dessen 5. Index die y-Koordinate ist). Mit ausgeschaltetem Schalter werden die Items mit Einzelspatien verbunden — schnell und konsistent, aber Zeilenumbrüche, die das Original-PDF visuell ausgedrückt hat, gehen verloren. Mit eingeschaltetem Zeilenumbrüche erhalten wandert das Tool durch die Items und fügt einen \n ein, sobald die y-Koordinate um mehr als ~5 Pixel springt — eine Heuristik, die Absatz- und Zeilengrenzen in textbasierten PDFs erstaunlich gut wiederherstellt.
Seiten werden mit einem wörtlichen --- Seite N ----Marker getrennt, sodass du beim Einfügen in eine Suchbox oder beim Greppen die gewünschte Seite weiter findest. Die Kodierung ist UTF-8, was bedeutet, dass lateinische Diakritika, Kyrillisch, CJK und Arabisch ohne Mojibake durchlaufen.
Der pdf.js-Worker wird als Same-Origin-Asset gebündelt, das Vite zur Build-Zeit emittiert. Es gibt keinen Drittanbieter-CDN-Aufruf, keine Telemetrie und keine Kopie deines Textes nach Schließen des Tabs.
Hinweise
Warum ist das Ergebnis bei manchen PDFs leer? PDFs gibt es in zwei Geschmacksrichtungen: solche mit echter Textschicht (wie sie Exporter wie Word, LaTeX und Chrome erzeugen) und solche, die Bilder von Seiten sind (Scans, Faxe, alte Berichte). pdf.js kann nur aus der ersten Sorte extrahieren. Liefert das Panel nichts, ist dein PDF nur Bild und braucht OCR — versuche ein Tool wie Tesseract.js oder eine Desktop-OCR-Pipeline, bevor du erneut extrahierst.
Warum verschmelzen Spalten manchmal? PDFs speichern keine Absätze; sie speichern Glyphenläufe an bestimmten Koordinaten. Zweispaltige Layouts sehen am Bildschirm gut aus, liefern aber verzahnte Läufe, weil die Items in Stream-Reihenfolge erscheinen, nicht in visueller Reihenfolge. Die y-Koordinaten-Heuristik hilft bei einspaltigen Dokumenten; bei kniffligen mehrspaltigen PDFs musst du die Ausgabe ggf. manuell aufräumen.
Bleiben Tabellen erhalten? Zellen kommen als Text durch, aber die Spaltenstruktur nicht — es gibt im zugrunde liegenden Stream kein Konzept "diese Zelle steht in einer Linie mit jener Zelle". Für tabellarische Daten suche möglichst nach einem CSV-Export aus der Quelle.
Ist das Ergebnis dasselbe wie "Auswahl → Alles markieren → Kopieren" in einem PDF-Reader? Ähnlich, aber nicht identisch. Reader-Kopieren nutzt den Text-Stack des Betriebssystems, der manchmal anders Leerzeichen und Umbrüche einfügt. Dieses Tool bleibt nahe am rohen Item-Stream von pdf.js, mit einer optionalen Zeilenumbruch-Heuristik darüber.
Verwandte Tools
- PDF zu Bildern — zuerst zu Bildern rendern, falls OCR nötig ist
- Diff-Checker — extrahierten Text aus zwei PDFs vergleichen
- Markdown-Vorschau — den Extrakt nach leichter Bereinigung als Markdown rendern