Für Python gibt es Docling, eine nützliche Bibliothek, mit der komplexe Dokumente in maschinenlesbare Formate umgewandelt werden können. Dies ist insbesondere im Zusammenspiel mit Sprachmodellen von Bedeutung, da unstrukturierte Dokumente dergestalt umgewandelt werden können, das Sprachmodelle in der Lage sind, ihren Inhalt zu verarbeiten. Bei PDF-Dateien handelt es sich um unstrukturierte Dokumente. In diesem Artikel wird erklärt, wie sie mit Docling zu Markdown-Dateien, die Sprachmodelle sehr gut lesen können, konvertiert werden können. Das Besondere an Docling besteht darin, dass diese Bibliothek dafür gegebenenfalls eigene KI-Modelle verwendet, um zum Beispiel mathematische Formeln oder Tabellen zu verstehen. Darüber hinaus arbeitet Docling sehr gut mit anderen KI-Frameworks, wie beispielsweise LangChain, zusammen.
Die Installation erfolgt mit pip:
pip install doclingFolgendes sehr einfaches Python-Skript wandelt ein PDF-Dokument, das sich im Downloads-Ordner befindet, in eine Markdown-Datei um. Das Ergebnis wird im Terminal ausgegeben.
from pathlib import Path
from docling.document_converter import DocumentConverter
file = Path.home() / "Downloads" / "Python-venv.pdf"
# Converter initialisieren
converter = DocumentConverter()
# Dokument konvertieren
result = converter.convert(file)
# Als Markdown ausgeben
print(result.document.export_to_markdown())Alternativ zur Ausgabe im Terminal kann der Text auch in einer Datei gespeichert werden:
import sys
from pathlib import Path
from docling.document_converter import DocumentConverter
source_file = Path.home() / "Downloads" / "Python-venv.pdf"
target_file = Path.home() / "Desktop" / f"{source_file.stem}.md"
# Converter initialisieren
converter = DocumentConverter()
# Dokument konvertieren
result = converter.convert(source_file)
try:
print(f"Konvertiere: {source_file.name}...")
result = converter.convert(source_file)
target_file.write_text(result.document.export_to_markdown(), encoding="utf-8")
print(f"Erfolgreich gespeichert unter: {target_file}")
except Exception as e:
print(f"Fehler bei der Konvertierung: {e}", file=sys.stderr)Als Speicherort wurde der Schreibtisch (Desktop) festgelegt. Außerdem habe ich einen try–except-Block hinzugefügt, um etwaige Fehler abzufangen.