Zum Inhalt

KI: Schlüsselwerte extrahieren

Der Service Task „KI: Schlüsselwerte extrahieren" analysiert einen Text und erkennt automatisch alle relevanten Schlüssel-Wert-Paare — ohne dass vorab definiert werden muss, welche Felder gesucht werden. Die KI identifiziert selbstständig wichtige Daten wie Nummern, Daten, Namen, Beträge, Adressen und weitere Angaben.

So lassen sich eingescannte Dokumente schnell indexieren und durchsuchbar machen, ohne für jedes Dokumentformat eigene Extraktionsregeln definieren zu müssen.


Input-Parameter

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

{
  "content": "# Lieferschein\n\nLieferschein-Nr: LS-2024-001\nKommission: KOM-4711\nDatum: 15.03.2024\nKunde: Müller GmbH\nLieferadresse: Industriestr. 5, 70469 Stuttgart\n\n| Pos | Artikel | Menge |\n|-----|---------|-------|\n| 1 | Widget A | 100 |\n| 2 | Widget B | 50 |",
  "language": "de",
  "context": "Lieferschein"
}

Erläuterung:

  • content: Der Text, der analysiert werden soll (Markdown, Klartext oder OCR-Ergebnis).
  • language (optional, Standard: "de"): Die Sprache, in der die Labels im Ergebnis formuliert werden sollen. Unterstützt "de" (Deutsch) und "en" (Englisch).
  • context (optional): Ein Hinweis, um welchen Dokumenttyp es sich handelt (z. B. "Lieferschein", "Rechnung", "Bestellung"). Hilft der KI, typische Felder für diesen Dokumenttyp zu priorisieren.
  • maxContentLength (optional, Standard: 50000): Maximale Zeichenanzahl des Inhalts.

Output

Der Task gibt ein Objekt mit einem keyValues-Array zurück. Jeder Eintrag besteht aus einem beschreibenden Label und dem extrahierten Wert:

{
  "keyValues": [
    {"label": "Lieferscheinnummer", "value": "LS-2024-001"},
    {"label": "Kommission", "value": "KOM-4711"},
    {"label": "Datum", "value": "15.03.2024"},
    {"label": "Kunde", "value": "Müller GmbH"},
    {"label": "Lieferadresse", "value": "Industriestr. 5, 70469 Stuttgart"},
    {"label": "Anzahl Positionen", "value": "2"}
  ]
}

Die Ergebnisse sind nach Relevanz sortiert — die wichtigsten Identifikationsmerkmale zuerst.

Wird ein Feld erkannt, aber kein eindeutiger Wert gefunden, wird value auf "-" gesetzt.


JSONata-Beispiele

{
  "content": ocrResult.markdown,
  "context": "Lieferschein",
  "language": "de"
}
{
  "content": vorheriger_schritt.text,
  "context": "Rechnung",
  "language": "de"
}

Weiterverarbeitung des Ergebnisses:

$reduce(result.keyValues, function($acc, $kv) {
  $merge([$acc, {$kv.label: $kv.value}])
}, {})

Dieser Ausdruck wandelt das Array in ein flaches Objekt um — z. B. { "Lieferscheinnummer": "LS-2024-001", "Datum": "15.03.2024" }.


Hinweise

  • Der Task erkennt automatisch die relevanten Felder — es muss kein Schema vorgegeben werden.
  • Tabelleninhalte werden nicht zeilenweise extrahiert, sondern zusammengefasst (z. B. „Anzahl Positionen" → „5").
  • Die Ergebnisse können direkt als Suchindex für den Data Lake verwendet werden.
  • Der context-Parameter ist optional, verbessert aber die Ergebnisqualität deutlich, da die KI weiß, welche Felder für den jeweiligen Dokumenttyp typisch sind.
  • Labels und Werte sind immer Strings — auch bei Zahlen. Für die Weiterverarbeitung als Zahl kann $number() in JSONata verwendet werden.

Tipp

Für die vollständige Verarbeitung eingescannter Dokumente empfiehlt sich eine Kombination: Zuerst „KI: Schlüsselwerte extrahieren" für die automatische Erkennung aller Felder, dann „KI: Markdown-Inhalt abfragen" für gezielte Nachfragen bei kritischen Werten (z. B. mit Regex-Validierung). So wird sichergestellt, dass auch formatabhängige Felder wie Rechnungsnummern oder Datumsangaben korrekt extrahiert werden.