Files
Workflow/tasks/ki_dok_extrakt.md

45 lines
2.3 KiB
Markdown

# `ki_dok_extrakt` — Feldextraktion aus Dokumenten per KI
**Zweck:** Zieht definierte Felder (Schema) aus einer hochgeladenen PDF-/Textdatei — z. B. Rechnungsnummer, Betrag, IBAN aus einer Eingangsrechnung — und legt sie als Kontextvariablen ab. Pflichtfelder werden validiert; fehlt eines, endet der Task NICHT mit Fehler, sondern setzt `<prefix>_ok = 0`, damit der Workflow per `if` in eine manuelle Nacherfassung verzweigen kann. Läuft über die zentrale KI-Kette des Hauses.
**Parameter**
| Name | Pflicht? | Default | Beschreibung |
|---|---|---|---|
| `quelle` | **ja** | — | PDF- oder Textdatei |
| `schema`/`feld` (`name`) | **ja** | — | Zu extrahierendes Feld; wiederholbar |
| `feld` (`typ`) | nein | `string` | `string`, `betrag`, `iban` oder `datum` (Normalisierung + Plausibilitätsprüfung) |
| `feld` (`pflicht`) | nein | `nein` | `ja`/`true`/`1` = Pflichtfeld |
| `feld` (`hinweis`) | nein | — | Zusatzhinweis für die KI |
| `max_zeichen` | nein | `20000` | Dokumenttext auf N Zeichen kürzen (Minimum 1000) |
| `output_var` | nein | `extrakt` | Prefix der Ausgabevariablen |
Feld-Typen: `string` = Freitext, `betrag` = `"1.234,56"``"1234.56"`, `iban` = ohne Leerzeichen, Großschreibung + Format-Check, `datum` = normalisiert auf `d.m.Y` (zusätzlich `<feld>_iso` als `Y-m-d`).
**Eingangswerte:** Die Datei unter `<quelle>` (Platzhalter erlaubt).
**Ausgangswerte:**
- `<prefix>_<feldname>` — je Schema-Feld (leer wenn nicht gefunden)
- `<prefix>_json` — alle Felder als JSON
- `<prefix>_ok``"1"` wenn alle Pflichtfelder plausibel gefüllt, sonst `"0"`
- `<prefix>_fehlend` — CSV der fehlenden/unplausiblen Pflichtfelder
**XML-Beispiel**
```xml
<task type="ki_dok_extrakt" id="rechnung_lesen">
<config>
<quelle>{{rechnung_pdf}}</quelle>
<schema>
<feld name="re_nr" typ="string" pflicht="ja" hinweis="Rechnungsnummer"/>
<feld name="betrag_brutto" typ="betrag" pflicht="ja"/>
<feld name="iban" typ="iban"/>
<feld name="datum" typ="datum"/>
</schema>
<output_var>extrakt</output_var>
</config>
</task>
```
**Hinweis:** Liefert die Datei keinen extrahierbaren Text (z. B. Scan ohne Textebene) oder ist die KI-Antwort kein parsebares JSON, endet der Task mit Fehler. Fehlende Pflichtfelder dagegen sind kein Fehler, sondern werden über `<prefix>_ok` signalisiert.