ادعُ أصدقاء واحصل على رموز مجانية!اعرف المزيد

مستند واجهة برمجة تطبيقات DeepSeek-OCR للتعرّف البصري على النصوص (OCR)

توفر هذه الواجهة وظيفة التعرّف على النصوص في الصور (OCR) بالاعتماد على نموذج DeepSeek-OCR. تعتمد هذه الـ API تنسيق الإكمالات الحوارية (Chat Completions) المتوافق مع OpenAI، وتدعم رفع الصور عبر الرابط URL أو عبر ترميز Base64 وتحويلها إلى نص أو إلى تنسيق Markdown.

  • نطاق الخدمة: https://api.codingplanx.ai
  • مسار الواجهة: /v1/chat/completions
  • طريقة الطلب: POST
  • حالة الواجهة: تم الإصدار (Released)

1. معاملات الطلب

1.1 ترويسات الطلب (Headers)

اسم المعاملمطلوبالنوعقيمة مثالالوصف
Content-TypeنعمStringapplication/jsonتنسيق جسم الطلب
AcceptنعمStringapplication/jsonتنسيق جسم الاستجابة
AuthorizationنعمStringBearer YOUR_API_KEYمفتاح API المستخدم للمصادقة

1.2 جسم الطلب (Request Body)

اسم المعاملمطلوبالنوعالوصف
modelنعمStringمعرّف النموذج المستخدم، ولأغراض OCR يجب تحديده على أنه deepseek-ocr
messagesنعمArrayقائمة الرسائل التي تحتوي على محتوى المحادثة. بالنسبة لـ OCR، يجب تضمين معلومات الصورة داخل الرسائل.
streamلاBooleanالقيمة الافتراضية هي false. إذا كانت true فسيتم إرجاع الاستجابة بشكل متدفق.
temperatureلاNumberدرجة حرارة أخذ العينات (0-2). القيم المنخفضة تكون أكثر تركيزًا واستقرارًا، والقيم الأعلى أكثر عشوائية.
top_pلاNumberعتبة احتمال أخذ العينات النواتية (nucleus sampling).
max_tokensلاIntegerالحد الأقصى لعدد الـ Token التي سيتم توليدها.
response_formatلاObjectيحدد تنسيق الإرجاع، مثل {"type": "json_object"} لتفعيل وضع JSON.
toolsلاArrayقائمة الأدوات التي يمكن للنموذج استدعاؤها (حاليًا يدعم بشكل أساسي استدعاء الدوال).

2. أمثلة الطلب

2.1 طلب OCR للتعرّف على الصور (JSON)

{
  "model": "deepseek-ocr",
  "stream": false,
  "messages": [
    {
      "role": "system",
      "content": "<image>\r
OCR مجاني."
    },
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://s3.ffire.cc/files/pdf_to_markdown.jpg" 
          }
        }
      ]
    }
  ]
}

ملاحظة: يدعم الحقل image_url.url تمرير رابط عام مباشر للصورة، أو تمرير سلسلة بيانات مرمزة بـ Base64 (بصيغة مثل: data:image/jpeg;base64,...).


3. شرح الاستجابة

3.1 بنية جسم الاستجابة

الحقلالنوعالوصف
idStringالمعرّف الفريد لهذا الطلب.
objectStringنوع الكائن، وعادةً يكون chat.completion.
createdIntegerطابع زمني Unix (بالثواني).
choicesArrayيحتوي على عدة خيارات ناتجة.
└─ messageObjectالرسالة التي أعادها النموذج، وتتضمن role وcontent.
└─ finish_reasonStringسبب التوقف (مثل stop أو length).
usageObjectإحصاءات استخدام الـ Token، وتشمل Tokens الخاصة بالموجّه، والإكمال، والإجمالي.

3.2 مثال على الاستجابة

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "هذا هو النص الذي تم التعرف عليه بواسطة OCR، وعادةً ما يتم إرجاعه بصيغة Markdown للحفاظ على تنسيق المحتوى داخل الصورة."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 512,
        "completion_tokens": 128,
        "total_tokens": 640
    }
}

4. الأسئلة الشائعة (FAQs)

س1: ما تنسيقات الصور التي يدعمها DeepSeek-OCR؟
ج: يتم دعم معظم تنسيقات الصور الشائعة حاليًا مثل JPEG وPNG وWebP وBMP. يُنصح بأن تكون الصورة واضحة وبدقة مناسبة لضمان أفضل دقة في التعرّف.

س2: كيف يمكنني رفع صورة باستخدام Base64؟
ج: استبدل قيمة image_url.url بسلسلة Base64 فقط. مثال على التنسيق: "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."

س3: لماذا يتم اقتطاع نتيجة التعرّف؟
ج: يرجى التحقق من finish_reason في الاستجابة. إذا كانت القيمة length فهذا يعني أن المحتوى الناتج تجاوز الحد المحدد في max_tokens، ويُنصح بزيادة قيمة max_tokens.

س4: هل تدعم هذه الواجهة التعرّف على عدة صور دفعة واحدة؟
ج: يمكنك محاولة إضافة عدة كائنات image_url داخل messages في طلب واحد، ولكن يُنصح بإرسال طلب منفصل لكل صورة للحصول على أفضل معالجة سياقية واستجابة أكثر استقرارًا.

س5: كيف أحصل على تنسيق أكثر دقة (مثل الجداول أو المعادلات)؟
ج: يمكنك إضافة تعليمات إضافية داخل رسالة system أو user، مثل: "يرجى استخدام تنسيق Markdown للحفاظ على بنية الجداول داخل الصورة والتعرّف على الصيغ الرياضية الموجودة فيها".

س6: هل يتم دعم الإخراج المتدفق (Streaming)؟
ج: نعم، مدعوم. اضبط المعامل stream في الطلب على true، وسيقوم النموذج بإرجاع مقاطع النص المتعرّف عليها بشكل فوري، وهو مناسب للسيناريوهات التفاعلية التي تتطلب تقليل زمن ظهور أول استجابة.