التعرف البصري على الأحرف (OCR) هو عملية التعرف على الشخصيات من الصور باستخدام تقنيات الرؤية الحاسوبية والتعلم الآلي. يعرض هذا التطبيق المرجعي كيفية استخدام TensorFlow Lite للقيام بالتعرّف البصري على الأحرف (OCR). يستخدم مزيجًا من نموذج اكتشاف النص ونموذج التعرف على النص كخط أنابيب للتعرف الضوئي على الحروف للتعرف على أحرف النص.
البدء
إذا كنت مستخدمًا جديدًا لـ TensorFlow Lite وتعمل بنظام Android ، فإننا نوصي باستكشاف التطبيق المثال التالي الذي يمكن أن يساعدك على البدء.
إذا كنت تستخدم نظامًا أساسيًا بخلاف Android ، أو كنت معتادًا بالفعل على TensorFlow Lite APIs ، فيمكنك تنزيل النماذج من TF Hub .
كيف تعمل
غالبًا ما يتم تقسيم مهام التعرف الضوئي على الحروف إلى مرحلتين. أولاً ، نستخدم نموذج اكتشاف النص لاكتشاف المربعات المحيطة حول النصوص الممكنة. ثانيًا ، نقوم بتغذية المربعات المحيطة التي تمت معالجتها في نموذج التعرف على النص لتحديد أحرف معينة داخل المربعات المحيطة (نحتاج أيضًا إلى القيام بقمع غير الحد الأقصى وتحويل المنظور وما إلى ذلك قبل التعرف على النص). في حالتنا ، كلا النموذجين من TensorFlow Hub وهما نماذج كمية FP16.
معايير الأداء
يتم إنشاء أرقام قياس الأداء باستخدام الأداة الموضحة هنا .
اسم النموذج | حجم النموذج | جهاز | وحدة المعالجة المركزية | GPU |
---|---|---|---|---|
كشف النص | 45.9 ميجابايت | Pixel 4 (Android 10) | 181.93 مللي ثانية * | 89.77 مللي ثانية * |
التعرف على النص | 16.8 ميجا بايت | Pixel 4 (Android 10) | 338.33 مللي ثانية * | غير متاح ** |
* 4 خيوط مستخدمة.
** لا يمكن لهذا النموذج استخدام مفوض GPU لأننا نحتاج إلى عمليات TensorFlow لتشغيله
المدخلات
يقبل نموذج اكتشاف النص عوامة 4-D float32
Tensor (1 ، 320 ، 320 ، 3) كمدخلات.
يقبل نموذج التعرف على النص عائمًا رباعي الأبعاد float32
(1 ، 31 ، 200 ، 1) كمدخل.
النواتج
يُرجع نموذج اكتشاف النص عائمًا رباعي الأبعاد 32 موترًا للشكل (1 ، 80 ، 80 ، 5) كمربع إحاطة و 4-D float32
Tensor من الشكل (1،80 ، 80 ، 5) float32
اكتشاف.
يُرجع نموذج التعرف على النص عائمًا ثنائي الأبعاد float32
للشكل (1 ، 48) كمؤشرات تعيين إلى قائمة الأبجدية "0123456789abcdefghijklmnopqrstuvwxyz"
محددات
يتم تدريب نموذج التعرف على النص الحالي باستخدام بيانات تركيبية تحتوي على أحرف وأرقام إنجليزية ، لذلك يتم دعم اللغة الإنجليزية فقط.
النماذج ليست عامة بما يكفي لـ OCR في البرية (على سبيل المثال ، الصور العشوائية التي التقطتها كاميرا الهاتف الذكي في حالة الإضاءة المنخفضة).
لذلك اخترنا 3 شعارات لمنتجات Google فقط لتوضيح كيفية إجراء التعرف الضوئي على الحروف باستخدام TensorFlow Lite. إذا كنت تبحث عن منتج OCR جاهز للاستخدام ، فيجب أن تفكر في Google ML Kit . يجب أن تكون ML Kit ، التي تستخدم TFLite تحتها ، كافية لمعظم حالات استخدام التعرف الضوئي على الحروف ، ولكن هناك بعض الحالات التي قد ترغب فيها في بناء حل OCR الخاص بك باستخدام TFLite. بعض الأمثلة هي:
- لديك نماذج TFLite الخاصة بك لاكتشاف / التعرف على النص التي ترغب في استخدامها
- لديك متطلبات عمل خاصة (على سبيل المثال ، التعرف على النصوص المقلوبة) وتحتاج إلى تخصيص خط أنابيب التعرف الضوئي على الحروف
- تريد دعم اللغات التي لا يغطيها ML Kit
- ليس بالضرورة أن تكون خدمات Google Play مثبتة على أجهزة المستخدم المستهدفة
مراجع
- مثال على اكتشاف / التعرف على نص OpenCV: https://github.com/opencv/opencv/blob/master/samples/dnn/text_detection.cpp
- مشروع مجتمع OCR TFLite من قبل المساهمين في المجتمع: https://github.com/tulasiram58827/ocr_tflite
- الكشف عن نص OpenCV: https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/
- اكتشاف النص المستند إلى التعلم العميق باستخدام OpenCV: https://learnopencv.com/deep-learning-based-text-detection-using-opencv-c-python/