Dokumentenextraktion mit LLMs: Daten aus PDFs per KI auslesen

Inhalt
Sprachmodelle mit Bildverständnis können strukturierte Daten aus Dokumenten auslesen, an denen klassische Werkzeuge scheitern, etwa aus mehrspaltigen PDFs und komplexen Tabellen. In diesem Beitrag wandeln wir jede PDF-Seite in ein Bild um, schicken es an das Open-Source-Modell MiniCPM-Llama3-V2.5 und geben per Prompt das gewünschte Ausgabeformat vor. Für ein Modell mit nur 8 Milliarden Parametern waren die Ergebnisse hervorragend: Es hat Text und Tabellen in einem gut weiterverwendbaren Format extrahiert.
Bei Pondhouse AI sind wir ständig darauf angewiesen, Daten aus Dokumenten zu holen: Word, PDF, Excel und was sonst noch so ankommt. Alle diese Formate lassen dem Ersteller fast völlige Freiheit, wie er den Inhalt anordnet. Beim Schreiben ist das praktisch, beim Auslesen ein Albtraum, vor allem bei technischen Inhalten mit komplizierten Layouts wie mehrspaltigen PDFs oder Tabellen.
Klassische Verfahren wie regelbasierte Systeme oder herkömmliches Machine Learning kommen mit der Vielfalt und Komplexität von Dokumentlayouts oft schlecht zurecht. LLMs verstehen Zusammenhänge, können natürliche Sprache interpretieren und passen sich an unterschiedliche Formate an. Das macht sie zu einer vielversprechenden Alternative.
Dieser Beitrag zeigt, warum Dokumentenextraktion schwierig ist, wo klassische Methoden an ihre Grenzen stoßen und wie Sie ein Open-Source-LLM für diese Aufgabe einsetzen, mit lauffähigem Python-Code.
Update (November 2026): OpenBMB hat inzwischen neuere MiniCPM-V-Modelle veröffentlicht, zuletzt im Oktober 2026 die Modellfamilie MiniCPM-V 4.7 (siehe die OpenBMB-Modelle auf Hugging Face). Der Code unten verwendet MiniCPM-Llama3-V 2.5, das weiterhin verfügbar ist.
Kurz gesagt: Wenn Sie nur der Code interessiert, mit dem Sie ein Open-Source-LLM Daten aus Dokumenten auslesen lassen, springen Sie direkt zum Fazit.
Warum es so schwierig ist, Daten aus Dokumenten zu extrahieren
Die größte Hürde ist die schiere Vielfalt an Formaten und Layouts. Dokumente kommen in vielen Dateitypen, darunter:
- PDFs (Portable Document Format)
- Microsoft-Word-Dokumente (.doc, .docx)
- Excel-Tabellen (.xls, .xlsx)
- Gescannte Bilder (.jpg, .png, .tiff)
- HTML-Dateien
- Reine Textdateien (.txt)
Jedes Format hat seine eigene Struktur und seine Eigenheiten. Und innerhalb jedes Formats gibt es nahezu unendlich viele Layouts. Dokumente können enthalten:
- eine oder mehrere Spalten
- Tabellen und Diagramme
- Kopf- und Fußzeilen
- Seitenleisten und Textboxen
- Bilder und Grafiken
- unterschiedliche Schriftarten, -größen und -stile
Bei dieser Bandbreite ist eine Einheitslösung extrem schwer zu bauen. Eine Methode, die bei einem Dokument perfekt funktioniert, kann bei einem anderen komplett versagen, auch wenn beide ähnliche Informationen enthalten.
Warum technische Dokumente und mehrspaltige PDFs besonders schwierig sind
Technische Dokumente und mehrspaltige PDFs bringen eigene Probleme mit:
-
Fachsprache: Solche Dokumente enthalten oft Fachbegriffe und Abkürzungen, die sich nur mit Fachwissen richtig deuten lassen.
-
Komplexe Tabellen: Technische Dokumente haben häufig Tabellen mit verbundenen Zellen, verschachtelten Kopfzeilen oder Fußnoten.
-
Gleichungen und Formeln: Mathematische oder chemische Formeln lassen sich programmatisch nur schwer erfassen und interpretieren.
-
Mehrspaltige Layouts: PDFs mit mehreren Spalten bringen Textextraktionsalgorithmen durcheinander, weil diese die richtige Lesereihenfolge über die Spalten hinweg herausfinden müssen.
-
Fußnoten und Verweise: Sie unterbrechen den Haupttext und erschweren die Extraktion.
-
Diagramme und Flussdiagramme: Technische Grafiken enthalten oft wichtige Informationen, sind aber automatisch kaum auszuwerten.
Grenzen klassischer Extraktionsmethoden
Klassische Verfahren haben bei komplexen Dokumenten mehrere Schwächen:
-
Regelbasierte Systeme arbeiten mit vordefinierten Regeln. Bei standardisierten Dokumenten funktioniert das, bei variablen Dokumenten kaum, und jede Formatänderung erfordert neue Regeln.
-
Reguläre Ausdrücke sind stark beim Mustervergleich, verstehen aber keinen Kontext und brechen leicht, wenn sich das Layout ändert.
-
Texterkennung (OCR) ist viel besser geworden, macht aber immer noch Fehler, besonders bei schlechten Scans oder komplexen Layouts.
-
Template-Matching funktioniert gut bei Dokumenten mit fester Struktur, scheitert aber, sobald ein Layout von der erwarteten Vorlage abweicht.
-
Herkömmliche Methoden extrahieren Daten oft nach Position oder Muster, ohne die Bedeutung der Information zu verstehen.
-
Mit Freitext oder Dokumenten ohne klare Struktur tun sich viele klassische Verfahren schwer.
-
Für neue Dokumenttypen oder Formate müssen klassische Systeme oft aufwendig neu trainiert oder programmiert werden.
Für die Dokumentenextraktion braucht es also flexiblere Ansätze, die den Inhalt wirklich verstehen. LLMs lösen viele dieser Probleme.
Strukturierte Daten mit LLMs aus Dokumenten extrahieren
Wie sähe das ideale System zur Dokumentenextraktion aus? Es würde:
-
den Kontext des Dokuments verstehen
-
natürliche Sprache interpretieren
-
sich an verschiedene Formate und Layouts anpassen
-
mit Fachsprache und komplexen Tabellen umgehen
-
verschiedene Sprachen und Schreibstile verarbeiten
-
die Struktur des Dokuments erhalten (z. B. Tabellen, Spalten)
-
genau und zuverlässig arbeiten
Mit Blick auf diese Anforderungen lohnt sich ein Versuch mit Large Language Models. LLMs verstehen Sprache gut, sind an kein Format gebunden, formatieren die Ausgabe genau so, wie Sie es vorgeben, und lassen sich auf Fachsprache trainieren.
Bleiben zwei Fragen: Wie bekommen wir unsere Dokumente überhaupt ins LLM? Und ist das Ergebnis gut genug für diese Aufgabe? Probieren wir es aus.
Hinweis: Dieser Beitrag zeigt an einem Praxisbeispiel, wie Sie LLMs für die Dokumentenextraktion einsetzen. Wir schildern, wie gut der Test lief, aber das ist kein vollständiger Benchmark. Alles, was Sie für einen eigenen Aufbau brauchen, finden Sie trotzdem hier.
Praxisbeispiel: MiniCPM-Llama3-V2.5 als Open-Source-LLM für die Datenextraktion
Für diesen Test verwenden wir das Modell MiniCPM-Llama3-V2.5, ein Open-Source-LLM auf Basis von Llama3 mit starkem Bildverständnis. Laut den Benchmarks, die seine Entwickler zur Veröffentlichung im Mai 2024 vorgelegt haben, schlägt das Modell mit 8 Milliarden Parametern verbreitete proprietäre Modelle wie GPT-4V-1106, Gemini Pro, Claude 3 und Qwen-VL-Max sowohl bei Bild- als auch bei Sprachaufgaben.
Auch bei der Texterkennung (OCR) macht das Modell einen sehr guten Eindruck. Laut derselben Ankündigung vom Mai 2024 verarbeitet MiniCPM-Llama3-V 2.5 Bilder in beliebigem Seitenverhältnis mit bis zu 1,8 Millionen Pixeln (z. B. 1344x1344) und erreicht auf OCRBench über 700 Punkte, mehr als proprietäre Modelle wie GPT-4o, GPT-4V-0409, Qwen-VL-Max und Gemini Pro.
Wie kommt das Dokument ins Sprachmodell?
Wie "schickt" man ein Dokument an ein LLM? LLMs können keine Dateien öffnen und lesen. Moderne multimodale LLMs können aber Bilder "lesen" und "verstehen". Sie ahnen es schon: Wir wandeln die Dokumente in Bilder um und geben diese dem Modell. Das Modell erfasst das Dokument mit seinem Bildverständnis und extrahiert den Text.
Anfangs waren wir bei diesem Ansatz etwas skeptisch, weil er ziemlich nach Brechstange aussieht. Aber wie lesen Menschen Dokumente? Unsere Augen erzeugen Bilder der Seite und schicken sie ans Gehirn, wo das Verstehen (und, wenn man so will, die Extraktion) passiert. Das ist gar nicht so weit von dem entfernt, was wir hier tun.
Das System, das wir bauen, sieht so aus:
Von jeder Dokumentseite wird ein Screenshot erstellt und als Bild an das LLM geschickt
Der Code für die Extraktion strukturierter Daten
Genug Theorie, jetzt geht es an den Code.
Hinweis: Dieses Tutorial setzt eine CUDA-fähige GPU mit mindestens 16 GB VRAM voraus.
Installieren Sie zuerst die benötigten Bibliotheken:
Hinweis: Wir verwenden PyMuPDF, um die PDF-Seiten in Bilder
umzuwandeln. Die Bibliothek steht unter einer Copyleft-Lizenz. Prüfen Sie
also, ob das zu Ihrem Anwendungsfall passt. Jede andere Bibliothek, die
PDF-Seiten als PNG rendern kann, funktioniert ebenfalls.
Importieren Sie dann die Bibliotheken und laden Sie Modell und Tokenizer:
Das kann eine Weile dauern, Zeit für einen Kaffee.
Jetzt erzeugen wir Bilder aus unserem Dokument. In diesem Tutorial nehmen wir eine PDF-Datei und erstellen pro Seite ein Bild:
Der Code geht alle Seiten des Dokuments durch und erzeugt aus jeder Seite ein
Bild. Die Bilder landen in der Liste images.
Zum Schluss schicken wir die Bilder an das Modell und lassen den Text extrahieren. (Der Code zeigt ein einzelnes Bild, Sie können aber problemlos über alle Bilder der Liste iterieren.)
Wir übergeben dem Modell das Bild zusammen mit einer Frage, und das Modell liefert den extrahierten Text zurück.
Wie die Variable question zeigt, können wir dem Modell einfach sagen, wie
der Text extrahiert werden soll. Nach unserer Erfahrung versteht das Modell
komplexe Anweisungen nur eingeschränkt, da es auf Llama3 8B basiert.
Überraschend viele Anweisungen funktionieren trotzdem sehr gut, etwa Kopf-
und Fußzeilen aus der Ausgabe zu entfernen.
Hinweis: Bei größeren Datenmengen sollten Sie eine nebenläufige Variante mit Batch-Verarbeitung dieses Beispiels verwenden.
Für ein eher kleines Modell, das wir ohne jede Anpassung verwendet haben, sind die Ergebnisse beeindruckend. Das Modell hat in unseren Beispielen sowohl den Text als auch die Tabellen in einem sehr brauchbaren Format extrahiert.
Eine Sache ist uns beim Testen aufgefallen: Das Modell gibt den Text immer mit Präfixen aus, etwa so:
Das hat Vor- und Nachteile. Sie bekommen die Semantik des Textes direkt mit, was vor allem dann nützt, wenn Sie den Text später in Chunks aufteilen wollen. Wenn Sie aber nur den Text brauchen, stören die Präfixe.
Wir haben versucht, sie per Prompt loszuwerden, aber das Modell bleibt hier sehr hartnäckig. Dieses Ausgabeformat scheint tief im Training verankert zu sein. Am besten entfernen Sie die Präfixe nach der Extraktion. In unseren Tests waren sie sehr einheitlich, eine einfache Regex sollte also reichen.
Fazit
Wir haben erklärt, warum das Extrahieren von Daten aus komplexen Dokumenten schwierig ist, wo klassische Methoden an ihre Grenzen stoßen und wie Sie stattdessen ein Open-Source-LLM für die Dokumentenextraktion einsetzen.
Unser Praxisbeispiel hat gezeigt, dass LLMs Text aus Dokumenten sehr gut extrahieren können, auch bei komplexen Layouts und technischen Inhalten. Das verwendete Modell ist relativ klein und hat trotzdem gut und genau gearbeitet.
Die Ergebnisse haben uns sehr gefreut. Der extrahierte Text war gut, und der Ansatz macht unsere Extraktions-Pipelines deutlich flexibler, weil wir dem LLM genau vorgeben können, wie es die Daten extrahieren soll.
Auch mit Tabellen kam das Modell erstaunlich gut zurecht (ebenso mit weiteren Layouts, die wir getestet, hier aber nicht beschrieben haben). Das ist ein großer Fortschritt gegenüber allem, was wir vorher im Einsatz hatten.
Als Nächstes wollen wir dieses kleine, günstige Modell mit GPT-4o vergleichen, das Mitte 2024 als stärkstes Vision-Modell galt. So sehen wir, ob MiniCPM-Llama3-V2.5 mithalten kann oder ob es für die Dokumentenextraktion ein viel größeres Modell braucht. Im Folgebeitrag zeigen wir, wie Sie PDF-, Word- und Excel-Dokumente mit GPT-4o auslesen. Für Bilder, die keine Dokumente sind, etwa Diagramme und Dashboards, lesen Sie unseren Beitrag zur Bildanalyse mit GPT-4o (auf Englisch).
LLM-basierte Extraktion läuft inzwischen produktiv bei Meusburger und verarbeitet dort Kundenaufträge: 96 % der Aufträge, die per E-Mail, PDF oder Excel eingehen, laufen ohne Korrektur durch.
Zusammenfassung: Der Code des kompletten Beispiels
Weiterlesen
- KI direkt aus der PostgreSQL-Datenbank nutzen (auf Englisch)
- Datenbankabfragen in natürlicher Sprache: Text-to-SQL für BigQuery
- Eigenes LLM hosten, inklusive HTTPS
- Daten aus Webseiten mit Crawl4AI und einem LLM extrahieren
Sie möchten zuverlässige KI-Agenten-Systeme bauen?
Wir haben auf Basis aktueller Forschung einen ausführlichen Leitfaden (auf Englisch) erstellt, wie Sie robuste KI-Agenten-Systeme bauen, die auch im produktiven Betrieb funktionieren. Der Leitfaden behandelt:
- die 14 systematischen Fehlerquellen in Multi-Agenten-Systemen
- belegte Best Practices für das Design von Agenten
- strukturierte Kommunikationsprotokolle und Prüfmechanismen



