Ultralytics YOLO27: انضم إلى قائمة الانتظار.
ابدأ

التعرّف الضوئي على نصوص المشاهد باستخدام Ultralytics YOLO26

ما التعرّف الضوئي على نصوص المشاهد؟#

يكشف التعرّف الضوئي على الحروف (OCR) النصوص في الصور ويقرأها. يجمع حل OCR بين كاشف نصوص Ultralytics YOLO26 وواجهة خلفية للتعرّف على النصوص. ويدعم مربعات الكشف المحاذية للمحاور، ومربعات الكشف الموجّهة (OBB)، ومضلعات التجزئة، ثم يُرجع النص المتعرّف عليه بترتيب القراءة.

يظل الكشف والتعرّف مكوّنين منفصلين، لذا يمكنك إقران كاشف نصوص المشاهد لديك مع PaddleOCR أو نموذج التعرّف الخاص بك.

لماذا تستخدم التعرّف الضوئي على نصوص المشاهد؟#

  • هندسة نصوص مرنة: استخدم نماذج الكشف أو OBB أو التجزئة للنصوص الأفقية أو المُدارة أو غير المنتظمة.
  • تعرّف قابل للتبديل: شغّل PaddleOCR من دون شيفرة تكامل إضافية، أو مرّر دالة قابلة للاستدعاء لنموذج آخر.
  • مخرجات منظّمة: يمكنك الوصول إلى النص المتعرّف عليه، ودرجتي الثقة للتعرّف والكشف، والهندسة المصدرية، وصورة مشروحة من كائن نتائج واحد.

شغّل التعرّف الضوئي على نصوص المشاهد باستخدام YOLO26#

PaddleOCR اختياري ويُحمّل عند إنشاء OCR باستخدام recognizer="paddleocr"، مع تثبيت PaddleOCR 3.x وإصدار PaddlePaddle المخصص لوحدة CPU عند عدم توفرهما. للتعرّف باستخدام GPU، ثبّت أولاً إصدار paddlepaddle-gpu المتوافق؛ ولا تُضاف حزم OCR إلى تبعيات Ultralytics الأساسية.

مرّر صورة وكاشف نصوص إلى حل OCR. تتضمن النتيجة الصورة المشروحة والنص المتعرّف عليه:

التعرّف الضوئي على نصوص المشاهد باستخدام Ultralytics YOLO26
yolo solutions ocr model="scene-text-obb.pt" source="path/to/video.mp4" recognizer="paddleocr"

نقاط تحقق YOLO26-Text#

توفر عائلة YOLO26-Text العامة نقاط تحقق OBB من n وs وm وl وx. عيّن ULTRALYTICS_API_KEY إلى مفتاح API الخاص بك في منصة Ultralytics، ثم حمّل نقطة تحقق باستخدام معرّف URI الخاص بالمنصة:

export ULTRALYTICS_API_KEY="your-api-key"
ocr = solutions.OCR(model="ul://ultralytics-yolo/yolo26-text/yolo26n-text", recognizer="paddleocr")
result = ocr(im0)

استبدل yolo26n-text بـ yolo26s-text أو yolo26m-text أو yolo26l-text أو yolo26x-text لاستخدام نموذج أكبر.

وسيطات OCR#

إليك جدولًا بمعاملات OCR:

المعاملالنوعالافتراضيالوصف
modelstrNoneمسار ملف نموذج Ultralytics YOLO.
recognizerstr أو Callable'paddleocr'واجهة خلفية للتعرّف على النصوص أو دالة قابلة للاستدعاء تقبل قصاصة BGR وتُرجع (text, confidence).
line_widthint2سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل.
verboseboolTrueيفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا.

بالإضافة إلى ذلك، تُدعم إعدادات التصور التالية:

المعاملالنوعالافتراضيالوصف
showboolFalseإذا كان True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. يفيد ذلك في الحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
show_confboolTrueيعرض درجة الثقة لكل اكتشاف بجوار التسمية، ما يوضح مدى يقين النموذج بشأن كل اكتشاف.
show_labelsboolTrueيعرض تسميات كل اكتشاف في المخرجات المرئية، ما يتيح فهم الكائنات المكتشفة فورًا.

كيف يعمل التعرّف الضوئي على نصوص المشاهد؟#

  1. اكتشاف النصوص: يُنتج YOLO26 مربعات محاذية للمحاور أو مربعات موجّهة أو مضلعات تجزئة.
  2. إنشاء قصاصات للتعرّف: تُقصّ المربعات لتلائم الصورة. وتُصحّح مربعات OBB تحويلياً على امتداد الحافة التي تمتد من اليسار إلى اليمين بأكبر قدر، بحيث تظل المربعات القريبة من الشكل المربّع معتدلة، وتصبح أسطر النص المائلة أفقية في اتجاه القراءة. أما مضلعات التجزئة، فيُصحّح مستطيلها المُدار ذو المساحة الدنيا مع الإبقاء على المضلع الأصلي. وتُدار القصاصات التي يزيد ارتفاعها على عرضها بمقدار 1.5 مرة على الأقل 90° عكس اتجاه عقارب الساعة، كما في PaddleOCR.
  3. التعرّف على النصوص: يعالج PaddleOCR جميع القصاصات على دفعات من 16. أما أدوات التعرّف المخصّصة، فتتلقى قصاصة واحدة في كل مرة.
  4. ترتيب النتائج وعرضها: تُجمع النصوص في أسطر أفقية وتُرتّب من الأعلى إلى الأسفل ومن اليسار إلى اليمين. ويستخدم التصوير المرئي خط Unicode للنصوص غير ASCII، مثل الصينية.

تشير الإحداثيات دائماً إلى الصورة الأصلية، لا إلى مدخل الكاشف أو قصاصة التعرّف.

استخدام أداة تعرّف مخصّصة#

مرّر دالة قابلة للاستدعاء لدمج نموذج تعرّف آخر من دون تغيير مسار الكشف أو الهندسة أو الترتيب. تُشغّل الدالة مرة واحدة لكل قصاصة BGR غير فارغة من numpy.ndarray. أعد صفاً واحداً من (text, confidence) في كل استدعاء، وليس قائمة بنتائج دفعة:

عنصر الصفالنوع المقبولالوصف
textstrالنص المفكوك لهذه القصاصة. أعد "" عند عدم التعرّف على أي نص.
confidencefloat أو int أو numpy.floatingقيمة ثقة رقمية للتعرّف، يحوّلها الحل إلى float.
def recognize(crop):
    # ⁨شغّل نموذج التعرّف لديك على قصاصة BGR وفكّ ترميز مخرجاته هنا.⁩
    return "example", 0.95

ocr = solutions.OCR(model="custom-text.pt", recognizer=recognize)
result = ocr(im0)

تؤدي أسماء الواجهات الخلفية غير المدعومة إلى رفع استثناء ValueError. عند عدم اكتشاف أي نص، تكون result.texts فارغة ولا يُستدعى جهاز التعرّف.

نتائج OCR#

يُرجع كل استدعاء كائن SolutionResults . استخدم result.plot_im للصورة المشروحة وresult.texts للسجلات بترتيب قراءة حتمي:

المفتاحالنوعالوصف
textstrالنص المتعرّف عليه.
confidencefloatثقة التعرّف، وهي منفصلة عن ثقة الكشف.
detection_confidencefloatثقة كاشف YOLO.
detection_indexintفهرس الكشف المصدر قبل الترتيب حسب تسلسل القراءة.
polygonlist[list[float]]مضلع الصورة الأصلية: أربع زوايا لعمليات الكشف بالمربعات ومربعات OBB، أو مخطط القناع.

التبعيات والتراخيص#

المكوّنمطلوبالدورالترخيص
Ultralyticsنعمكشف YOLO وهندسة القصاصات وتنسيق النتائجAGPL-3.0
PaddlePaddleلـ recognizer="paddleocr" فقطبيئة تشغيل التعرّفApache-2.0
PaddleOCR 3.xلـ recognizer="paddleocr" فقطنماذج التعرّف على أسطر النصوص ومهايئ الاستدلالApache-2.0
دالة مخصّصة قابلة للاستدعاءلاتكامل التعرّف الذي يملكه المستخدميحدده الجهاز الخلفي

قد يُنزّل PaddleOCR أوزان التعرّف عند الاستخدام الأول. راجع بطاقة النموذج المحدد وشروط إعادة التوزيع قبل تضمين هذه الملفات أو نشرها. وتُعد تراخيص نقاط التحقق المخصّصة مستقلة.

الأسئلة الشائعة#

  • نعم. مرّر دالة قابلة للاستدعاء بوصفها recognizer وأعد (text, confidence) لكل قصاصة BGR. راجع استخدام أداة تعرّف مخصّصة لمعرفة مواصفات المدخلات والمخرجات.

  • لا. يتعامل OCR مع كل صورة مدخلة على حدة، من دون معرّفات تتبّع أو تخزين مؤقت لنتائج التعرّف. عالج كل إطار فيديو كمدخل مستقل عندما تحتاج إلى OCR إطاراً بإطار.

  • يمكنك تصدير كاشف YOLO باستخدام وضع التصدير المعتاد، لكن PaddleOCR أو أداة التعرّف المخصّصة لا تُضمّن في ملف كاشف ONNX أو TensorRT أو أي صيغة أخرى. انشر الكاشف المُصدّر وبيئة تشغيل التعرّف كمكوّنين منفصلين، أو أبقِ طبقة التركيب هذه في Python.

المساهمون

التعليقات

اطرح سؤالًا، وشارك نتائجك، أو ساعد شخصًا آخر.