[MELDEN] Von der Vision zum Code: Ein Leitfaden zur Ausrichtung der Geschäftsstrategie auf die Ziele der Softwareentwicklung ist veröffentlicht!
HOL ES DIR HIER

Fallstudie: PDF Insights mit Integration von AWS Textract und OpenAI

readtime
Last updated on
February 17, 2025

A QUICK SUMMARY – FOR THE BUSY ONES

PDF Insights mit Integration von AWS Textract und OpenAI

Kontext des Projekts

Das Unternehmen wandte sich mit dem Problem an uns, eine große Datenmenge in Form von Pitchdecks zu sichten. Wir standen vor der Aufgabe, die Extraktion der wichtigsten Informationen aus dem unstrukturierten, schwer zu analysierenden Format PDF zu automatisieren.

Problem

Das Abrufen des Textinhalts des PDF war nur der Anfang. Der Text im PDF ist überall: Wir hatten Folien mit zwei oder drei Wörtern, einige Tabellen, Listen oder einfach nur Absätze, die zwischen Bildern zusammengequetscht waren.

Zuverlässige Textextraktion

  1. Wir haben AWS Textract verwendet, um PDF-Dateien zu analysieren. Auf diese Weise verlassen wir uns nicht auf die interne Struktur der PDF-Datei, um Text daraus zu erhalten
  2. Um den Text zu analysieren und daraus das zu ziehen, was wir wollen, haben wir uns für die OpenAI GPT-3.5- und GPT-4-Modelle entschieden.
  3. Was wir verpasst haben und was wahrscheinlich am schwierigsten war, ist die Fähigkeit, die Bilder und räumlichen Beziehungen in PDF-Folien zu interpretieren.

Lesen Sie den ganzen Artikel, um mehr über unsere Ergebnisse zu erfahren.

TABLE OF CONTENTS

Fallstudie: PDF Insights mit Integration von AWS Textract und OpenAI

Ursprüngliches Problem — automatische PDF-Zusammenfassung

Das Unternehmen wandte sich mit dem Problem an uns, eine große Datenmenge in Form von Pitchdecks zu sichten. Jedes Pitchdeck ist im Allgemeinen ziemlich kurz, in den meisten Fällen etwa 10 Folien, aber das Problem ist die Anzahl der zu analysierenden Folien. Wir standen vor der Aufgabe, die Extraktion der wichtigsten Informationen aus dem unstrukturierten, schwer zu analysierenden Format PDF zu automatisieren. Darüber hinaus liegen die Daten in Form von Folien vor: mit vielen grafischen Hinweisen und geometrischen Beziehungen zwischen Wörtern, die Informationen vermitteln, die nicht einfach aus dem Text selbst abgeleitet werden können. Um die Analyse einer großen Datenmenge zu vereinfachen, bräuchten wir eine Lösung, die diesen Prozess so weit wie möglich automatisiert: vom Lesen des Dokuments selbst bis hin zum Auffinden interessanter Informationen wie Namen der beteiligten Personen, Finanzdaten usw.

Warum ist die Textextraktion so schwierig?

Das erste Problem, mit dem wir konfrontiert waren, war das Abrufen des Textinhalts aus einer PDF-Datei. Beim Extrahieren von Text direkt aus PDF mit Open-Source-Tools wie pdf-parsen (was intern vom PDF-Loader von Langchain verwendet wird) hat die meiste Zeit den Job gemacht, wir hatten immer noch einige Probleme damit: Einige PDFs wurden nicht richtig analysiert und das Tool gab eine leere Zeichenfolge zurück (wie im Fall von Uber-Beispiel-Pitchdeck ), wir haben nur einige Wörter, die in einzelne Zeichen aufgeteilt sind und so weiter.

Leider war das Abrufen des Textinhalts des PDF erst der Anfang. Der Text im PDF ist überall: Wir hatten Folien mit zwei oder drei Wörtern, einige Tabellen, Listen oder einfach nur Absätze, die zwischen Bildern zusammengequetscht waren. Unten finden Sie ein Textbeispiel, das aus Seite 2 der Beispielreproduktion von AirBnB Early Pitchdeck extrahiert wurde (Verknüpfung, Extraktion erfolgt mit der PDF-Parse-Bibliothek):

Und das ist eines der besseren!

Obwohl das Analysieren eines solchen Textes an sich schwierig ist, möchten wir auch ändern können, welcher Auszug aus dem Text stammt. Vielleicht möchten wir wissen, welche Personen an einem Unternehmen beteiligt sind. Oder wollen wir nur alle Finanzdaten oder vielleicht nur den Namen der Branche erhalten? Jeder extrahierte Datentyp erfordert einen anderen Ansatz zum Analysieren und Validieren von Text und anschließend eine Menge Tests.

Wie kann es gelöst werden?

Zuverlässige Textextraktion

Zunächst haben wir beschlossen, Open-Source-Lösungen hinter uns zu lassen. Wir haben benutzt AWS-Extrakt um PDF-Dateien zu analysieren. Auf diese Weise verlassen wir uns nicht auf die interne Struktur des PDFs, um Text daraus zu erhalten (oder um nichts zu erhalten - wie im Fall des Uber-Beispiels). Textract verwendet OCR und maschinelles Lernen, um nicht nur Text, sondern auch räumliche Informationen aus dem Dokument abzurufen.

Hier ist das Textract-Ergebnis (wobei alle geometrischen Informationen entfernt wurden) von derselben Seite der AirBnB-Pitchdeck-Reproduktion

Aber das ist noch nicht alles! Textract antwortet mit einer Liste von Blöcken (wie „Page“ oder „Line“ für eine Textzeile), zusammen mit ihrer Position und ihren Beziehungen, die wir verwenden können, um die Struktur des Dokuments besser zu verstehen

In den meisten Fällen benötigen wir solche Details nicht, daher verwenden wir in unserem Fall nur einen Bruchteil davon.

Zusammenfassungsprozess und KI

Nun, um den Text tatsächlich zu analysieren und daraus das zu ziehen, was wir wollen. Die einzige Lösung, die dafür praktikabel schien, war die Verwendung eines Sprachmodells. Wir haben zwar einige Open-Source-Lösungen getestet, aber sie waren der Aufgabe nicht gewachsen. Halluzinationen waren zu häufig und Reaktionen zu unvorhersehbar. Darüber hinaus sind die meisten leistungsfähigen Open-Source-Modelle, die heute erhältlich sind, nicht für die kommerzielle Nutzung lizenziert. Also haben wir uns für die OpenAI GPT-3.5- und GPT-4-Modelle entschieden.

Wir haben uns entschieden, das Model zunächst den Text zusammenfassen zu lassen und alle Informationen aus dem Pitchdeck in diese Zusammenfassung aufzunehmen. Auf diese Weise haben wir Text, der vollständig ist (nicht nur die Gliederung) und eine Struktur hat, mit der man leichter arbeiten kann. Wir haben die folgende Eingabeaufforderung für jede Seite des Dokuments verwendet:

Mit zusätzlichen Anweisungen wie „Vermeiden Sie es, Ihre eigenen Meinungen oder Annahmen hinzuzufügen“ minimieren wir die Halluzinationen (Modelle fügen der Zusammenfassung gerne falsche Daten hinzu). GPT-3 hat sogar eine komplett falsche Finanzanalyse hinzugefügt!). Wenn wir eine Zusammenfassung aller Seiten haben, können wir das Model bitten, Informationen daraus zu extrahieren. Hier ist ein Beispiel für die Aufforderung, mit der wir die Liste der Personen abgerufen haben, auf die im Dokument verwiesen wird:

Die von den Modellen (sowohl GPT3 als auch 4) zurückgegebene Zusammenfassung ist von guter Qualität: Die zurückgegebenen Informationen sind sachlich und alles, was in dem Dokument deutlich gesagt wird, wird auch in der Zusammenfassung landen.

Das Extrahieren der Personenliste ist jedoch eine andere Geschichte. Modelle, insbesondere GPT-3, antworten oft mit einer ähnlichen Liste (keine tatsächliche Antwort):

Nicht nur das ist eindeutig keine korrekte Personenliste, sondern auch, die E-Mail war überhaupt nicht im Quelltext, das Model hat sie erfunden!

Wir haben auch mit vielen Variationen dieser Aufforderung experimentiert, wie zum Beispiel:

  • Das Hinzufügen der Information, dass es sich um Text handelt, der aus PDF extrahiert wurde, scheint keinen Unterschied zu machen - Modelle behandeln den Eingabetext auf die gleiche Weise. Wenn man sich die Daten ansieht, gibt es wirklich keine Informationen, aus denen das Modell etwas ableiten könnte. Wir müssten die tatsächlichen Geometriedaten einbeziehen.
  • Überspringen Sie den Zusammenfassungsteil und bitten Sie das Modell, Informationen aus dem Text abzurufen, der direkt aus dem gesamten Dokument extrahiert wurde. Das hatte auch keine große Wirkung (obwohl ich zumindest in einem Fall etwas schlechtere Antworten gesehen habe, aber sie waren sehr subtil), was darauf hindeutet, dass wir diesen Zusammenfassungsschritt nicht benötigen, besonders wenn wir das für jede Seite tun und daher ziemlich viele Anfragen stellen. Wir haben uns jedoch entschlossen, es beizubehalten, da wir möglicherweise sowieso eine Zusammenfassung benötigen.
  • Bereitstellung von Text für GPT zusammen mit räumlichen Informationen, die von Textract zurückgegeben werden. Dies scheint zwar eine Möglichkeit zu sein, dem Modell zu ermöglichen, einige visuelle Hinweise abzuleiten, aber es ist schwierig, das richtige Format herauszufinden. Das JSON, das Textract zurückgibt, ist ziemlich ausführlich und oft zu lang, um es an das Modell zu übergeben (selbst wenn unnötige Felder entfernt wurden). Das Aufteilen einer Seite in kleinere Abschnitte scheint falsch zu sein, da der Seitenkontext oft wichtig ist, um einen Block zu verstehen. Dies muss noch untersucht und weitere Experimente durchgeführt werden.
  • Während wir versucht haben, das Problem mit ungenauen oder halluzinierten Antworten zu lösen, haben wir versucht, das Modell mit seiner Antwort zu füttern, damit es es validieren und korrigieren kann. Leider sind unsere Tests mit GPT-3 fehlgeschlagen. Es wurden keine Probleme mit den erfundenen E-Mails und Telefonnummern auf einer Liste festgestellt, die die Namen von Personen enthalten sollte. Wir benötigen jedoch mehr Tests mit diesem Ansatz unter Verwendung des GPT-4-Modells.

Die nächsten Schritte

Was wir vermissen und was wahrscheinlich am schwierigsten ist, ist die Fähigkeit, die Bilder und räumlichen Beziehungen in PDF-Folien zu interpretieren. AWS Textract gibt zwar einige räumliche Informationen zurück, erkennt jedoch keine Bilder, und die zurückgegebenen Daten lassen sich nur schwer an das Modell weitergeben. Wir untersuchen immer noch, wie wir das Modell dazu bringen können, Pfeile, Diagramme und Tabellen zu verstehen. Darüber hinaus möchten wir den Prozess der Online-Recherche automatisieren, z. B. mithilfe verfügbarer APIs (wie Crunchbase) mehr Informationen über Unternehmen finden, die in den Dokumenten erwähnt werden, oder mehr Daten über die beteiligten Personen abrufen.

Zusammenfassung

Die Fallstudie befasst sich mit der Automatisierung der Extraktion wichtiger Details aus zahlreichen PDF-Pitchdecks. Diese Decks sind übersichtlich, aber zahlreich, sodass eine manuelle Analyse nicht praktikabel ist. Die Herausforderung besteht darin, Text zu extrahieren und grafische Elemente zu interpretieren. AWS Textract wurde aufgrund seiner OCR- und Layoutfunktionen für die Textextraktion eingesetzt. Die GPT-3.5- und GPT-4-Modelle von OpenAI wurden verwendet, um Informationen zusammenzufassen und zu extrahieren. Bei der genauen Extraktion bestimmter Daten wie Personennamen oder Finanzdaten traten jedoch Herausforderungen auf. Die Studie erkennt die Notwendigkeit an, die Bildinterpretation zu verbessern, um visuelle Elemente besser verstehen zu können.

Frequently Asked Questions

No items found.

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

Authors

Łukasz Pluszczewski
github
JavaScript-Softwareentwickler

Full-Stack-Softwareingenieur mit 11 Jahren Berufserfahrung. JavaScript und LLMs aus Leidenschaft.

Łukasz Pluszczewski
github
JavaScript-Softwareentwickler

Full-Stack-Softwareingenieur mit 11 Jahren Berufserfahrung. JavaScript und LLMs aus Leidenschaft.

Read next

No items found...