Dokument auslesen (OCR)
Der Service Task „Dokument auslesen (OCR)" liest PDFs und Bilder in einem einzigen Verarbeitungsschritt aus. Erkannt werden Volltext, Layout-Bereiche (Überschriften, Absätze, Header und Footer), Tabellen, mathematische Formeln und Stempel. Zusätzlich wird ein RAG-optimiertes Markdown des gesamten Dokuments geliefert.
So lassen sich eingehende Geschäftsdokumente wie Lieferscheine, Rechnungen, Verträge oder Formulare automatisiert auslesen und in nachfolgenden Prozessschritten – z. B. mit dem Service Task „KI: Daten aus OCR extrahieren" – in strukturierte Daten überführen.
Input-Parameter
Die folgenden Felder werden als Eingabe für den Task benötigt:
{
"document": {
"referenceId": "...",
"filename": "lieferschein.pdf"
}
}
Erläuterung:
document.referenceId: Referenz auf die hochgeladene Datei. Die Datei muss alsfileReferencevorliegen, z. B. aus einem Datei-Upload-Schritt im Formular oder aus einem vorherigen Service Task.document.filename: Der Dateiname inkl. Endung. Anhand der Endung wird das Format erkannt.
Unterstützte Formate:
- PDF (
.pdf) - Bilder: PNG, JPG/JPEG, BMP, TIFF, WEBP
PDFs und Bilder können denselben Prozess durchlaufen – z. B. ein per Smartphone fotografierter Lieferschein und ein als PDF eingescannter Lieferschein.
Output
Der Task liefert ein strukturiertes JSON mit allen erkannten Inhalten:
{
"metadata": {
"source_file": "lieferschein.pdf",
"total_pages": 1,
"total_text_blocks": 49,
"total_blocks": 12,
"total_tables": 1,
"total_formulas": 0,
"total_seals": 1,
"extraction_engine": "PPStructureV3"
},
"markdown": "# Lieferschein Nr. 7208166\n\nDatum: 19.03.2025\n\n| Pos | Menge | Artikel |\n|-----|-------|---------|\n| 1 | 100 | Schrauben M8 |",
"full_text": "Lieferschein Nr. 7208166\nDatum: 19.03.2025\nPSL GmbH",
"pages": [
{
"page_number": 0,
"markdown": "# Lieferschein Nr. 7208166\n...",
"text": "Lieferschein Nr. 7208166\nDatum: 19.03.2025\nPSL GmbH",
"blocks": [
{ "label": "doc_title", "content": "Lieferschein Nr. 7208166", "bbox": [120, 80, 480, 110] },
{ "label": "header", "content": "Pantarey GmbH", "bbox": [80, 40, 240, 60] },
{ "label": "paragraph_title", "content": "Datum: 19.03.2025", "bbox": [120, 130, 320, 150] }
],
"tables": [
{ "index": 0, "html": "<table><tr><td>Pos</td><td>Menge</td></tr><tr><td>1</td><td>100</td></tr></table>" }
],
"text_blocks": [
{ "text": "Lieferschein Nr. 7208166", "confidence": 0.98 }
],
"formulas": [],
"seals": [
{ "text": "Pantarey GmbH" }
]
}
]
}
Erläuterung:
metadata: Zusammenfassung der Erkennung (Seitenanzahl, Anzahl erkannter Blöcke, Tabellen, Formeln, Stempel).markdown: RAG-optimiertes Markdown des gesamten Dokuments – ideal als Eingabe für KI-Services. Header, Footer und Seitenzahlen werden hier bewusst ausgeblendet (diese stehen inpages[].blocks).full_text: Der komplette Volltext aller Seiten als Fließtext.pages: Array mit einem Eintrag pro Seite. Jede Seite enthält:markdown: Markdown der einzelnen Seite.text: Volltext der Seite.blocks: Layout-Blöcke mit semantischem Label (z. B.doc_title,header,footer,page_number,paragraph_title,text). Hier stehen Titel, Header und Footer.tables: Erkannte Tabellen als HTML – die Cell-Struktur bleibt auch bei komplexen Layouts erhalten.text_blocks: Einzelne OCR-Textfragmente mit Konfidenzwert (confidence, 0–1).formulas: Mathematische Formeln als LaTeX.seals: In Stempeln erkannter Text – nützlich, um Aussteller oder unterschreibende Firma zu identifizieren.
JSONata-Beispiele
// Datei aus einem Upload-Schritt referenzieren
{
"document": {
"referenceId": $.fileUpload.referenceId,
"filename": $.fileUpload.filename
}
}
// Markdown direkt an einen KI-Service weiterreichen
{
"content": $.ocrResult.markdown,
"questions": [
{
"question": "Wie lautet die Lieferscheinnummer?",
"attribute": "deliveryNoteNumber"
}
]
}
// Prüfen, ob Tabellen erkannt wurden (Gateway-Bedingung)
$.ocrResult.metadata.total_tables > 0
Hinweise
- Die Verarbeitungszeit beträgt je nach Dokumentgröße ca. 30–120 Sekunden.
- Mehrseitige PDFs werden vollständig verarbeitet – jede Seite erscheint als eigenes Element im
pages-Array. - Der
confidence-Wert eines Textfragments eignet sich zur Qualitätsbewertung – Werte unter 0.7 deuten auf unsichere Erkennung hin. - Der Inhalt von
markdownundpages[].blocksüberlappt sich teilweise bewusst, weil PaddleX header/footer/page_number aus dem Markdown herausfiltert. Für KI-Folgeschritte ist genau diese Trennung hilfreich. - Stempel-Erkennung funktioniert besonders gut bei klar abgegrenzten, kreisförmigen Firmenstempeln.
- Handgeschriebene Inhalte werden mit erkannt, sind aber generell weniger zuverlässig als gedruckter Text.
Tipp
Die Kombination mit dem Service Task „KI: Daten aus OCR extrahieren" ist besonders effektiv: Zuerst wird das Dokument per OCR ausgelesen, anschließend werden gezielt typisierte Felder, Positionslisten (z. B. Artikel mit Menge und Preis) und ein Schlüssel-Wert-Index extrahiert. So entsteht aus zwei Service Tasks ein vollständiger Workflow von der eingegangenen Datei bis zu strukturierten Daten.