المستندات

أرسل صفحة، واحصل على نصها.

تعمل واجهة برمجة التطبيقات (API) في Kindi Labs بالنماذج نفسها المتاحة في تجربة النماذج. أرسل صورة، وانتظر المهمة، واقرأ النتيجة.

Base URLhttps://api.asnb.sa/v1

البدء

  1. 1

    أنشئ حسابًا

    سجّل وأكّد بريدك الإلكتروني.

    إنشاء حساب
  2. 2

    أنشئ مفتاح API

    من حسابك، في «مفاتيح API». انسخه عند ظهوره، فهو لا يظهر مرة أخرى.

    مفاتيح API
  3. 3

    أرسل صفحة

    أرسل صورة إلى ‎/v1/jobs، ثم اقرأ المهمة حتى تكتمل.

المصادقة

أرسل مفتاحك في ترويسة Authorization مع كل طلب. احفظ المفاتيح على خادمك، ولا تضعها في صفحة ويب أو تطبيق للأجهزة الجوّالة. يمكنك إبطال أي مفتاح في أي وقت من حسابك.

Authorization: Bearer asnb_live_…

إرسال صفحة

أرسل الصورة بصيغة multipart مع اسم النموذج. تردّ الواجهة فورًا بمهمة في قائمة الانتظار.

POST/v1/jobs

الحقول
الحقلالمعنى
modelasnb-ocr للنص العربي المطبوع، وasnb-htr للكتابة اليدوية.
fileصورة الصفحة: PNG أو JPEG أو WebP.
curl https://api.asnb.sa/v1/jobs \
  -H "Authorization: Bearer $KINDI_API_KEY" \
  -F model=asnb-ocr \
  -F [email protected]

قراءة النتيجة

اقرأ المهمة حتى تصبح حالتها succeeded أو failed. يكفي الانتظار ثانية أو ثانيتين بين كل قراءة.

GET/v1/jobs/{id}

curl https://api.asnb.sa/v1/jobs/job_8f2k1x9q3m7d \
  -H "Authorization: Bearer $KINDI_API_KEY"

مثال على الاستجابة لإحدى الصفحات التجريبية (صفحة مجلة من عام 1899)، مختصرًا. قيم درجة الثقة للتوضيح.

{
  "job": {
    "id": "job_8f2k1x9q3m7d",
    "model": "asnb-ocr",
    "model_version": "v1.0",
    "status": "succeeded",
    "created_at": "2026-10-09T09:41:12Z",
    "finished_at": "2026-10-09T09:41:15Z",
    "file": {
      "name": "muqtataf-1899.jpg",
      "type": "image/jpeg",
      "size": 204803
    },
    "error": null,
    "result": {
      "text": "فقلنا وهل تدّعي ان الآلة التي تشير اليها ترفع الماء من نفسها من غير قوة تساعدها على رفعه.\nفقال كلاً بل اننا نضع ماءً في جانب منها فتدور به وتغرف الماء من النيل وترفعه. فقلنا ومن اين\n…",
      "pages": [
        {
          "index": 0,
          "width": 940,
          "height": 772,
          "lines": [
            {
              "text": "فقلنا وهل تدّعي ان الآلة التي تشير اليها ترفع الماء من نفسها من غير قوة تساعدها على رفعه.",
              "bbox": [8, 106, 920, 43],
              "confidence": 0.98
            },
            {
              "text": "فقال كلاً بل اننا نضع ماءً في جانب منها فتدور به وتغرف الماء من النيل وترفعه. فقلنا ومن اين",
              "bbox": [8, 155, 920, 44],
              "confidence": 0.96
            }
          ]
        }
      ]
    }
  }
}

كائن المهمة

الحقلالمعنى
idمعرّف المهمة.
model, model_versionالنموذج الذي قرأ الصفحة، وإصداره.
statusqueued أو running أو succeeded أو failed.
created_at, finished_atوقت إنشاء المهمة واكتمالها (ISO 8601، بتوقيت UTC).
fileاسم الملف المرفوع ونوعه وحجمه.
errorعند فشل المهمة: رمز ورسالة.
result.textالنص كاملًا، سطرًا بسطر، وبين كل صفحتين سطر فارغ.
result.pages[].lines[]نص كل سطر، ومربعه [x, y, width, height] بوحدات بكسل الصورة، ودرجة ثقة من 0 إلى 1.

الأخطاء

تعود الأخطاء مع رمز حالة HTTP وجسم JSON. اعتمد على قيمة code، لا على الرسالة، في منطق برنامجك.

{ "error": { "code": "file_too_large", "message": "The file is over 10 MB." } }
HTTPcodeالمعنى
401unauthorizedالمفتاح مفقود أو خاطئ أو مُبطَل.
400invalid_requestحقل مفقود أو نموذج غير معروف.
413file_too_largeالملف أكبر من الحد المسموح.
415unsupported_typeالملف ليس PNG أو JPEG أو WebP.
403quota_exceededاستُهلكت صفحات هذا الشهر.
404not_foundلا توجد مهمة بهذا المعرّف في حسابك.
429rate_limitedطلبات كثيرة. انتظر عدد الثواني في Retry-After.
500server_errorحدث خطأ من جهتنا. حاول مرة أخرى.

الحدود

صور حتى 10 ميغابايت، بصيغة PNG أو JPEG أو WebP. تُحتسب كل صورة صفحةً واحدة. تظهر صفحاتك الشهرية وما استخدمته منها في حسابك.

النماذج

modelالاسمالاستخدام
asnb-ocrKindi OCR v1.0النص العربي المطبوع: الصحف والكتب والمستندات.
asnb-htrKindi HTR v0.12الكتابة اليدوية العربية بخمسة خطوط. قيد التطوير.

شغّله أولًا في تجربة النماذجنتائج تقييم النماذج