> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Document AI-Bericht: Extrahierte Felder

> Referenz zu Didits Document AI: Dokumenten-Upload-Endpoint, JSON extrahierter Felder pro Dokument, Status und features[]-Eintrag der Entscheidung.

## Übersicht

Document AI akzeptiert bis zu 3 Dokumente pro Schritt (PDF oder Bild – PDF, JPG, JPEG, PNG, TIFF, WebP). Jedes Dokument wird anhand seines konfigurierten `document_key` klassifiziert, von einem Vision-Language-Modell mithilfe eines Schemas aus Ihren Felddefinitionen ausgelesen und einer PDF/EXIF-Forensik unterzogen. Für jedes Dokument wird Folgendes gespeichert:

* Die **extrahierten Felder** – eine Map mit Ihrem konfigurierten Feld-`key` als Schlüssel und Werten mit den von Ihnen deklarierten Typen (`text` → String, `number` → Zahl, `date` → `YYYY-MM-DD`). Felder, die nicht gelesen werden konnten, sind `null`.
* **Erkannte QR-Codes und Barcodes** – decodierte Payloads und Pixelkoordinaten für jede gerenderte Seite. Ein QR-Code, der lokalisiert, aber nicht decodiert werden kann, wird dennoch mit `parsed_payload: null` zurückgegeben.
* Der **Dokumentenstatus** – `Approved`, `In Review`, `Declined` oder `Not Finished`.
* **Dokumenten-Metadaten** – Dateiforensik einschließlich Hinweisen auf Overlays oder Manipulationen.
* **Cross-Check-Ergebnisse** – das Ergebnis des Namensabgleichs mit der verifizierten Identität sowie aller benutzerdefinierten Feld-Querverweise.

## Dokumente hochladen

Dokumente werden einzeln an den Document AI-Endpoint hochgeladen. In einer gehosteten Sitzung oder einem SDK-Ablauf wird dies für Sie übernommen; der Vertrag lautet:

```text theme={null}
POST https://verification.didit.me/v3/document-ai/documents/
multipart/form-data — Session-Token: <session token>
```

| Feld | Erforderlich | Beschreibung |
| - | - | - |
| `document_key` | ja | Das konfigurierte Dokument, für das diese Datei bestimmt ist |
| `document` | ja | Die hochzuladende Datei |
| `locale` | nein | Zur Auflösung des Titels/der Beschreibung auf dem Bildschirm verwendetes Gebietsschema |

Die Antwort setzt den Ablauf fort:

```json theme={null}
{
  "valid": true,
  "next_step": "DOCUMENT_AI",
  "document_ai_status": "In Progress",
  "uploaded_document_keys": ["proof_of_funds"],
  "required_document_keys": ["proof_of_funds", "payslip"]
}
```

Der Schritt ist abgeschlossen (`next_step` geht über `DOCUMENT_AI` hinaus), sobald jeder Eintrag in `required_document_keys` in `uploaded_document_keys` enthalten ist und kein Dokument unvollendet bleibt.

## Wo es in API-Antworten erscheint

`GET /v3/session/{sessionId}/decision/` gibt Document AI an zwei Stellen aus, sowohl für Sitzungen zur Benutzerverifizierung (KYC) als auch zur Unternehmensverifizierung (KYB) – das Array `document_ai_documents[]` und der PDF-Bericht sind unabhängig von `session_kind` identisch:

* **`features[]`** – ein zusammenfassender Eintrag pro Document AI-Knoten, der angibt, welche Funktionen ausgeführt wurden:

  ```json theme={null}
  { "features": [ { "feature": "DOCUMENT_AI", "node_id": "feature_document_ai_1" } ] }
  ```

* **`document_ai_documents[]`** – das vollständige Ergebnis, eine Gruppe pro Document AI-Knoten. Jede Gruppe enthält den kombinierten `status` des Knotens, die Liste der hochgeladenen `items` sowie etwaige `warnings`. Jedes hochgeladene Dokument ist ein Item mit den von Ihnen konfigurierten Feldern (unter `extracted_data`), erkannten Codes (unter `detected_codes`), seinem eigenen `status`, den Felddefinitionen, forensischen `document_metadata` und `cross_check_result`.

Die Status der einzelnen Dokumente jedes Knotens werden nach der Rangfolge **Declined > In Review > Approved** zum Knotenstatus kombiniert.

## Entscheidungsbeispiel

Für ein Dokument vom Typ **Kapitalnachweis**, das mit `account_holder` (Text), `balance` (Zahl), `currency` (Text) und `statement_date` (Datum) konfiguriert ist:

```json theme={null}
{
  "document_ai_documents": [
    {
      "node_id": "feature_document_ai_1",
      "status": "Approved",
      "items": [
        {
          "uuid": "5c1f0a2e-9b3d-4c7a-8f21-0a4e8e7d6c12",
          "document_key": "proof_of_funds",
          "status": "Approved",
          "original_filename": "statement.pdf",
          "extracted_data": {
            "account_holder": "Sophia Martinez",
            "balance": 18450.75,
            "currency": "EUR",
            "statement_date": "2026-05-31"
          },
          "detected_codes": [
            {
              "type": "QR_CODE",
              "page_number": 2,
              "position": [[124, 86], [306, 86], [306, 268], [124, 268]],
              "x": 124,
              "y": 86,
              "width": 182,
              "height": 182,
              "page_width": 1190,
              "page_height": 1684,
              "raw_payload": "SU5WLTIwMjYtMDA0Mg==",
              "parsed_payload": "INV-2026-0042"
            }
          ],
          "fields": [
            { "key": "account_holder", "name": "Account holder", "type": "text", "required": true },
            { "key": "balance", "name": "Balance", "type": "number", "required": false },
            { "key": "currency", "name": "Currency", "type": "text", "required": false },
            { "key": "statement_date", "name": "Statement date", "type": "date", "required": false }
          ],
          "document_metadata": { "is_tampered": false },
          "cross_check_result": null,
          "created_at": "2026-05-31T10:12:00Z"
        }
      ],
      "warnings": []
    }
  ]
}
```

`page_number` ist 1-basiert. `position` enthält das erkannte Polygon, während `x`, `y`, `width` und `height` dessen Bounding-Box angeben. Alle Koordinaten verwenden den Pixelraum der gerenderten Seite, dessen Abmessungen `page_width` und `page_height` sind. `detected_codes` ist ein leeres Array, wenn kein unterstützter Code gefunden wird. Behandeln Sie ein Element mit `parsed_payload: null` nur als Hinweis auf das Vorhandensein und die Position, nicht als decodierten Wert.

Da jedes Feld als `document_ai.<field_key>` adressierbar ist, können Sie Verzweigungen und [benutzerdefinierte Statusregeln](https://docs.didit.me/de/core-technology/document-ai/warnings-document-ai.md) direkt anhand der Werte in `extracted_data` steuern – einschließlich Querverweisen auf andere Schritte wie `kyc.full_name` oder Antworten aus Fragebögen.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.