> ## 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: извлечённые поля

> Справка по Document AI от Didit: endpoint загрузки документов, JSON извлечённых полей, статусы и массив features[] решений.

## Обзор

Document AI принимает до 3 документов за шаг (PDF или изображение — PDF, JPG, JPEG, PNG, TIFF, WebP). Каждый документ классифицируется по настроенному `document_key`, считывается мультимодальной языковой моделью с использованием схемы, сформированной на основе ваших определений полей, и проходит криминалистический анализ PDF/EXIF. Для каждого документа сохраняются:

* **Извлечённые поля** — карта с ключами, заданными в поле `key` конфигурации, и значениями указанного вами типа (`text` → string, `number` → number, `date` → `YYYY-MM-DD`). Поля, которые не удалось распознать, имеют значение `null`.
* **Обнаруженные QR-коды и штрихкоды** — декодированные payload и пиксельные координаты для каждой отрисованной страницы. QR-код, который удалось обнаружить, но не удалось декодировать, всё равно возвращается со значением `parsed_payload: null`.
* **Статус документа** — `Approved`, `In Review`, `Declined` или `Not Finished`.
* **Метаданные документа** — криминалистический анализ файла, включая признаки наложений или манипуляций.
* **Результаты перекрёстной проверки** — итог сопоставления имени с верифицированной личностью и любых кастомных перекрёстных проверок полей.

## Загрузка документов

Документы загружаются по одному в endpoint Document AI. В размещённой сессии или сценарии с SDK это выполняется автоматически; контракт взаимодействия:

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

| Поле | Обязательно | Описание |
| - | - | - |
| `document_key` | да | Настроенный документ, которому соответствует данный файл |
| `document` | да | Загружаемый файл |
| `locale` | нет | Локаль, используемая для определения отображаемых на экране заголовка и описания |

Ответ продвигает сценарий дальше:

```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"]
}
```

Шаг завершается (`next_step` переходит дальше `DOCUMENT_AI`), когда каждая запись из `required_document_keys` появляется в `uploaded_document_keys` и ни один документ не остаётся незавершённым.

## Отображение в ответах API

В `GET /v3/session/{sessionId}/decision/` данные Document AI выводятся в двух местах как для сессий Проверки пользователей (KYC), так и для Верификации бизнеса (KYB) — массив `document_ai_documents[]` и PDF-отчёт одинаковы независимо от `session_kind`:

* **`features[]`** — сводная запись для каждого узла Document AI, используемая для перечисления выполненных функций:

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

* **`document_ai_documents[]`** — полный результат, по одной группе на каждый узел Document AI. Каждая группа содержит объединённый `status` узла, список загруженных элементов `items` и любые предупреждения `warnings`. Каждый загруженный документ представляет собой элемент с настроенными вами полями (в `extracted_data`), обнаруженными кодами (в `detected_codes`), собственным статусом `status`, определениями полей, криминалистическими данными `document_metadata` и результатом `cross_check_result`.

Статусы отдельных документов каждого узла объединяются в статус узла в соответствии с приоритетом: **Declined > In Review > Approved**.

## Пример решения

Для документа типа **Подтверждение наличия средств**, в котором настроены поля `account_holder` (текст), `balance` (число), `currency` (текст) и `statement_date` (дата):

```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` начинается с 1. Поле `position` содержит координаты обнаруженного многоугольника, а `x`, `y`, `width` и `height` задают его ограничивающий прямоугольник. Все координаты указаны в пиксельном пространстве отрисованной страницы с размерами `page_width` и `page_height`. Если поддерживаемые коды не найдены, `detected_codes` представляет собой пустой массив. Элемент со значением `parsed_payload: null` следует воспринимать исключительно как факт наличия и позиционирования кода, а не как декодированное значение.

Поскольку каждое поле доступно по пути `document_ai.<field_key>`, вы можете управлять ветвлением и [кастомными правилами статусов](https://docs.didit.me/ru/core-technology/document-ai/warnings-document-ai.md) напрямую на основе значений из `extracted_data`, включая перекрёстные проверки с данными других шагов, например `kyc.full_name`, а также с ответами на анкеты.


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