> ## 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` ← سلسلة نصية، `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/ar/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.