Zum Inhalt

KI: Strukturierte Daten extrahieren

Der Service Task „KI: Strukturierte Daten extrahieren" liest definierte Felder aus unstrukturiertem Text aus und gibt sie als JSON-Objekt zurück. Die Extraktion erfolgt per KI (OpenAI). Die gewünschten Felder werden über ein frei definierbares Schema angegeben.

Typische Einsatzszenarien sind die automatische Erfassung von Rechnungsdaten, das Auslesen von Kundendaten aus E-Mails oder die Strukturierung von Freitext-Eingaben.

Input-Parameter

Die folgenden Felder werden als Eingabe für den Task benötigt:

{
  "text": "Rechnung Nr. 2024-001\nFirma: Müller GmbH\nDatum: 15.03.2025\nBetrag: 1.500,00 EUR\nUSt-ID: DE123456789",
  "schema": {
    "invoiceNumber": "Rechnungsnummer als String",
    "company": "Firmenname",
    "date": "Datum im Format YYYY-MM-DD",
    "amount": "Betrag als Zahl",
    "currency": "Währungscode (z.B. EUR)",
    "vatId": "Umsatzsteuer-ID"
  },
  "returnNotFoundFields": false
}

Erläuterung:

  • text: Der Quelltext, aus dem die Daten extrahiert werden sollen. Kann direkt aus einem Dokument, einer E-Mail oder einem vorherigen Prozessschritt stammen.
  • schema: Ein Objekt, dessen Schlüssel die gewünschten Feldnamen sind und dessen Werte beschreiben, was extrahiert werden soll. Die Beschreibungen helfen der KI, den richtigen Wert und das korrekte Format zu finden.
  • returnNotFoundFields (optional, Standard: false): Wenn true, enthält das Ergebnis ein zusätzliches Feld _notFound — ein Array mit den Feldnamen, die im Text nicht gefunden wurden.

Output

Der Task gibt ein JSON-Objekt zurück, dessen Schlüssel den Schema-Feldern entsprechen:

{
  "invoiceNumber": "2024-001",
  "company": "Müller GmbH",
  "date": "2025-03-15",
  "amount": 1500.00,
  "currency": "EUR",
  "vatId": "DE123456789"
}

Wird ein Wert im Text nicht gefunden, wird das Feld auf null gesetzt.

Mit returnNotFoundFields: true:

{
  "invoiceNumber": "2024-001",
  "company": "Müller GmbH",
  "date": "2025-03-15",
  "amount": 1500.00,
  "currency": "EUR",
  "vatId": null,
  "_notFound": ["vatId"]
}

JSONata-Beispiele

// Beispiel: Text aus PDF-Extraktion und Schema aus Prozessdaten
{
  "text": pdfExtract.text,
  "schema": {
    "invoiceNumber": "Rechnungsnummer",
    "date": "Rechnungsdatum im Format YYYY-MM-DD",
    "totalAmount": "Gesamtbetrag als Zahl"
  }
}
// Beispiel: Prüfen ob alle Felder gefunden wurden (Gateway-Condition)
$count(result._notFound) = 0

Hinweise

  • Das schema-Objekt muss mindestens ein Feld enthalten.
  • Die Feldbeschreibungen sollten möglichst präzise sein — insbesondere das gewünschte Format (z. B. „Datum im Format YYYY-MM-DD" oder „Betrag als Zahl").
  • Längere und aussagekräftigere Texte führen zu besseren Ergebnissen.
  • Nicht gefundene Werte werden automatisch auf null gesetzt, damit nachfolgende Schritte zuverlässig darauf prüfen können.
  • Die KI versucht automatisch den passenden Datentyp zu wählen (String, Zahl oder Boolean).

Tipp

Die Kombination mit dem Service Task „PDF-Text extrahieren" ist besonders effektiv: Zuerst wird der Text aus einem PDF extrahiert und anschließend automatisch in strukturierte Felder zerlegt. Zusammen mit dem „KI: Dokument klassifizieren"-Task lässt sich ein vollständiger Dokumenten-Eingangsworkflow abbilden.