Im Rahmen dieses Tests wird das Open-Source-Framework unstructured eingesetzt, um den Extraktionsprozess von Text aus strukturierten Dokumenten zu evaluieren. Ziel ist es, zu prüfen, inwieweit sich unstructured für den praktischen Einsatz in KI-basierten Informationssystemen eignet – insbesondere mit Blick auf die Textextraktion, semantische Aufbereitung (Chunking/Tokenisierung) und anschließende Embedding-Erzeugung für Vektor-basierte Retrieval-Systeme.

Hier sieht man ein Beispiel einer PDF-Datei, die für die Analyse mit unstructured verwendet wurde.

pm-partnerschaft-stackitHerunterladen

Zur Ausführung der unstructured-Bibliothek wird das offizielle Docker-Image verwendet. Dieses enthält alle erforderlichen Abhängigkeiten (z. B. Tesseract, Poppler, Python-Bibliotheken) und ermöglicht eine sofortige Nutzung ohne lokale Python-Installation.

Im Rahmen eines ersten Tests wurde das Tool unstructured interaktiv im Docker-Container ausgeführt, um die Qualität der Texterkennung und strukturellen Analyse einer Beispiel-PDF zu evaluieren. Ziel war es, zu prüfen, wie zuverlässig das Framework Inhalte wie Überschriften, Absätze und Fließtexte erkennt und diesen semantischen Typen wie Title oder NarrativeText zuweist. Die Analyse zeigte, dass unstructured die logische Struktur des Dokuments weitgehend korrekt rekonstruieren konnte. Der Test bildet die Grundlage für weiterführende Schritte wie das semantische Chunking und die Vorbereitung der Daten für Embedding-gestützte Retrieval-Systeme.

Im nächsten Schritt habe ich die Textextraktion über ein Python-Skript automatisiert. Der Code erkennt zunächst automatisch die Sprache des Dokuments via “langdetect”, wendet dann die passende OCR-Konfiguration an und führt die strukturierte Analyse über unstructured durch – inklusive Klassifikation und Ausgabe der erkannten Inhalte.

Am extrahierten Beispiel lässt sich gut erkennen, wie unstructured verschiedene Textbausteine differenziert klassifiziert. Die semantische Typisierung ist in vielen Fällen nachvollziehbar: Überschriften wie „OPITZ CONSULTING UND STACKIT WERDEN CLOUD-PARTNER“ werden korrekt als Title erkannt, Fließtextabsätze als NarrativeText, und Layout-Elemente wie Seitennummerierungen oder Fußzeilen als allgemeiner Text.

Insgesamt zeigt die Analyse, dass unstructured für die Strukturierung von Dokumenten mit einfacher Layoutstruktur bereits eine solide Grundlage bietet – allerdings nur bei Verwendung der Strategie hi_res, da die Ergebnisse mit der Standardverarbeitung deutlich ungenauer und fragmentierter ausfallen.

PDF-Dokumente enthalten oft mehr, als auf den ersten Blick sichtbar ist. Insbesondere bei eingescannten oder automatisch verarbeiteten PDFs können sogenannte „Hidden Text Layers“ eingebettet sein – also unsichtbare Texte, die über dem sichtbaren Bild des Dokuments liegen. Diese entstehen zum Beispiel durch OCR-Software wie Adobe Acrobat, die erkannte Zeichen als maschinenlesbaren Text speichert, ohne sie für den Benutzer sichtbar zu machen.

Solche versteckten Texte können von PDF-Analysewerkzeugen wie unstructured gelesen und verarbeitet werden – selbst wenn sie in gängigen PDF-Viewern nicht erscheinen. Um zu prüfen, ob ein PDF solche eingebetteten Texte enthält, eignet sich das Tool pdftotext aus dem Paket poppler-utils. Mit einem einfachen Befehl lässt sich damit der gesamte maschinenlesbare Text extrahieren und in einer .txt-Datei sichtbar machen.

Das ist besonders hilfreich, wenn unerwartete oder scheinbar „falsche“ Inhalte im Analyse-Output auftauchen – denn sie stammen nicht immer aus OCR-Fehlern, sondern manchmal aus unsichtbaren Textinformationen im Originaldokument.

An dieser Stelle wollte ich ursprünglich mit dem Chunking fortfahren, musste im Rahmen der Analyse jedoch feststellen, dass die Chunking-Funktionalität von Unstructured sehr rudimentär ist. Für eine semantisch saubere Segmentierung ziehe ich daher eine Bibliothek wie NLTK vor und werde die Arbeit mit Unstructured an dieser Stelle zunächst nicht weiterverfolgen.