البرنامج التعليمي: بناء التعرف الضوئي على الحروف مخصص باستخدام YOLO و Tesseract

في هذه المقالة ، سوف تتعلم كيفية جعل OCR المخصصة الخاصة بك بمساعدة التعلم العميق ، لقراءة النص من صورة. سوف أطلعك على مثال صور بطاقة PAN ، لاكتشاف النص والتعرف على النص. ولكن أولاً ، دعونا نتعرف على العملية التي ينطوي عليها التعرف البصري على الحروف.

ما هو التعرف الضوئي على الحروف؟

OCR لتقف على التعرف الضوئي على الحروف. يتم استخدامه لقراءة النص من الصور مثل مستند ممسوح ضوئيًا أو صورة. تُستخدم هذه التقنية لتحويل أي نوع من الصور التي تحتوي على نص مكتوب (مكتوب أو مكتوب بخط اليد أو مطبوع) تقريبًا إلى بيانات نصية قابلة للقراءة آليًا.

هنا ، سنقوم بإنشاء OCR الذي يقرأ فقط المعلومات التي تريد قراءتها من مستند معين.

يحتوي OCR على عنصرين أساسيين:

  • كشف النص
  • التعرف على النص

1. كشف النص

مهمتنا الأولى هي اكتشاف النص المطلوب من الصور / المستندات. غالبًا ، حسب الحاجة ، لا ترغب في قراءة المستند بالكامل ، بل مجرد جزء من المعلومات مثل رقم بطاقة الائتمان ورقم بطاقة Aadhaar / PAN والاسم والمبلغ والتاريخ من الفواتير ، وما إلى ذلك. مهمة صعبة ولكن بفضل التعلم العميق ، سنكون قادرين على قراءة النص بشكل انتقائي من صورة ما.

كان اكتشاف النص أو اكتشاف الأشياء بشكل عام مجالًا للبحث المكثف المتسارع مع التعلم العميق. اليوم ، يمكن اكتشاف الكائنات ، وفي حالتنا ، اكتشاف النص ، من خلال طريقتين.

  • أجهزة الكشف عن المنطقة
  • كشف طلقة واحدة

في الطرق المعتمدة على المنطقة ، يتمثل الهدف الأول في العثور على جميع المناطق التي تحتوي على الكائنات ثم تمرير هذه المناطق إلى مصنف ، والذي يعطينا مواقع الكائنات المطلوبة. لذلك ، فهي عملية من خطوتين.

أولاً ، يجد مربع الإحاطة وبعد ذلك ، الفئة منه. يعتبر هذا النهج أكثر دقة ولكنه بطيء نسبيًا مقارنةً بنهج Single Shot. خوارزميات مثل Faster R-CNN و R-FCN تأخذ هذا النهج.

ومع ذلك ، فإن كاشفات اللقطة الواحدة تتنبأ بكل من الصندوق الحدودي والفئة في نفس الوقت. كونها عملية خطوة واحدة ، فهي أسرع بكثير. ومع ذلك ، تجدر الإشارة إلى أن أجهزة الكشف أحادية اللقطة تؤدي أداءً سيئًا أثناء اكتشاف الكائنات الصغيرة. SSD و YOLO هما كاشفان للطلقة الواحدة.

في كثير من الأحيان ، هناك مفاضلة بين السرعة والدقة أثناء اختيار كاشف الكائنات. على سبيل المثال ، تتمتع Faster R-CNN بأعلى دقة ، بينما YOLO هي الأسرع بين الجميع. إليك مقالة رائعة تقارن بين أجهزة الكشف المختلفة ، وتقدم نظرة شاملة حول كيفية عملها.

لتحديد أي واحد لاستخدام ، يعتمد كليا على التطبيق الخاص بك. هنا ، نحن نستخدم YOLOv3 هنا بشكل رئيسي لأنه ،

  • لا أحد يستطيع التغلب عليه عندما يتعلق الأمر بالسرعة.
  • لديه دقة جيدة بما فيه الكفاية لتطبيقنا.
  • لدى YOLOv3 شبكة هرم المعالم (FPN) لاكتشاف الكائنات الصغيرة بشكل أفضل.

قال بما فيه الكفاية ، دعونا الغوص في YOLO

باستخدام YOLO (أنت تنظر مرة واحدة فقط) لكشف النص

YOLO هي شبكة للكشف عن الكائنات في الوقت الحقيقي. هناك العديد من الإصدارات منه. YOLOv3 هو الإصدار الأحدث والأسرع.

يستخدم YOLOv3 Darknet-53 باعتباره مستخرج الميزات. لديها 53 طبقة تلافيفية بشكل عام ، ومن هنا جاءت تسميتها "Darknet-53". يحتوي على طبقات تلافيفية 3 × 3 و 1 × 1 ويحتوي على بعض الاتصالات المختصرة.

لغرض التصنيف ، يتم استخدام مصنّفات لوجستية مستقلة مع وظيفة فقد الانتروبيا الثنائية.

تدريب YOLO باستخدام إطار Darknet

سوف نستخدم إطار الشبكة العصبية Darknet للتدريب والاختبار. يستخدم الإطار تدريبات متعددة النطاق ، والكثير من تكبير البيانات وتطبيع الدُفعات. بل هو إطار الشبكة العصبية مفتوحة المصدر مكتوبة في C و CUDA. إنه سريع وسهل التثبيت ويدعم حساب وحدة المعالجة المركزية GPU.

يمكنك العثور على المصدر على جيثب.

هنا هو كم هو سهل لتثبيت إطار Darknet. فقط 3 خطوط! (إذا كنت ستستخدم GPU ، فقم بتحديث GPU = 1 و CUDNN = 1 في ملف التعريف.)

بوابة استنساخ https://github.com/pjreddie/darknet.git
مؤتمر نزع السلاح darknet
يصنع

لنبدأ البناء

احصل على بياناتك أولاً ...

البيانات هي أول وأهم شيء في أي مشروع قائم على التعلم الآلي. لذلك ، مهما كان التطبيق الخاص بك ، تأكد من وجود حوالي 100 صورة له. إذا كان لديك عدد أقل من الصور ، فاستخدم تكبير الصورة لزيادة حجم بياناتك. في تكبير الصورة ، نقوم بتغيير الصور بشكل أساسي عن طريق تغيير حجمها واتجاهها وضوءها ولونها وما إلى ذلك.

هناك العديد من الطرق المتاحة لزيادة الحجم ، ويمكنك بسهولة اختيار أي طريقة تريدها. أود أن أذكر مكتبة زيادة الصور تدعى Albumentations ، صممها Kaggle Masters و Grandmaster.

جمعت 50 صورة لبطاقة PAN تطفو على الإنترنت ، وباستخدام تكبير الصورة ، قمت بإنشاء مجموعة من 100 صورة لبطاقة PAN.

شرح البيانات

بمجرد جمع البيانات ، دعنا ننتقل إلى الخطوة التالية ، وهي تسمية ذلك. هناك العديد من أدوات التعليقات التوضيحية المجانية المتاحة. لقد استخدمت VoTT v1 لأنها أداة بسيطة وتعمل مثل السحر. اتبع هذا الرابط ، لفهم عملية التعليق التوضيحي للبيانات.

لاحظ أنه من المهم وضع علامة على جميع حقول النص التي نريد قراءتها من بيانات الصورة. كما أنه يولد مجلدات البيانات التي ستكون مطلوبة أثناء التدريب.

تأكد من ضبط تنسيق التصدير على YOLO بعد وضع العلامات. بعد التعليق التوضيحي ، انسخ كل الملفات التي تم إنشاؤها إلى مجلد البيانات في مستودع النسخ.

تدريب

لإزالة كل الالتباس ، يوجد لدى Darknet مستودعين أحدهما للمؤلف الأصلي والآخر غير متشعب. نحن نستخدم مستودع الشوكة ، لأنه يحتوي على وثائق رائعة.

لبدء تدريب OCR ، نحتاج أولاً إلى تعديل ملف التكوين الخاص بنا. ستحصل على ملف التكوين المطلوب في مجلد "cfg" المسمى "yolov3.cfg". هنا ، تحتاج إلى تغيير حجم الدُفعة والتقسيم الفرعي وعدد الفئات ومعلمات المرشح. اتبع التغييرات المطلوبة المطلوبة في ملف التكوين ، على النحو الوارد في الوثائق.

سنبدأ التدريب باستخدام أوزان darknet-53 المدربة مسبقًا. وهذا سوف يساعد نموذجنا تتلاقى في وقت مبكر.

لبدء التدريب ضرب هذا الأمر

./darknet detector train data / obj.data yolo-obj.cfg darknet53.conv.74

أفضل شيء هو أنه يحتوي على دعم GPU متعدد. عندما ترى أن متوسط ​​الخسارة "0.xxxxxx avg" لم يعد يتناقص بعد عدد معين من التكرار ، يجب أن تتوقف عن التدريب. كما ترون في الرسم البياني أدناه ، توقفت عند 14200 تكرار حيث أصبحت الخسارة ثابتة.

منحنى الخسارة

ليس دائمًا ما ستحصل على أفضل النتائج من ملف آخر وزن. حصلت على أفضل النتائج في التكرار رقم 8000. تحتاج إلى تقييمها على أساس النتيجة mAP (متوسط ​​الدقة المتوسط). اختيار ملف الأوزان مع أعلى درجة mAP. هنا ، قدموا تفاصيل حول كيفية استخدام نقاط mAP. الآن ، عندما تقوم بتشغيل هذا الكاشف على صورة عينة ، ستحصل على المربع المحيط لحقل النص المكتشف والذي يمكنك منه اقتصاص تلك المنطقة بسهولة.

تا دعاء!

الكشف عن النص على بطاقة عموم الدمية

2. التعرف على النص

الآن بعد أن تم تطبيق كاشف النصوص المخصص لدينا على اكتشاف النص ، فإننا ننتقل إلى العملية التالية للتعرف على النص. يمكنك إما إنشاء أداة التعرف على النص الخاصة بك أو استخدام أداة مفتوحة المصدر.

على الرغم من أن تطبيق أداة التعرف على النص الخاصة بك يعد إجراءً رائعًا ، إلا أنه من الصعب الحصول على البيانات المميزة له. ومع ذلك ، إذا كان لديك بالفعل الكثير من البيانات المصنفة لإنشاء أداة التعرف على النص المخصصة ، فسيؤدي ذلك بالتأكيد إلى تحسين الدقة.

ومع ذلك ، في هذه المقالة ، سنستخدم محرك Tesseract OCR للتعرف على النص. مع القليل فقط من القرص ، يعمل محرك Tesseract OCR على العجائب لتطبيقنا. سنستخدم Tesseract 4 ، وهو أحدث إصدار. والحمد لله ، كما أنه يدعم العديد من اللغات.

تثبيت Tesseract محرك التعرف الضوئي على الحروف

في Ubuntu 14.04 و 16.04 و 17.04 و 17.10. ل 18.04 تخطي الأوامر 2 الأولى.

sudo add-apt-repository ppa: alex-p / tesseract-ocr
sudo الحصول على التحديث
sudo apt تثبيت tesseract-ocr
سودو عرضة تثبيت libtesseract- ديف
sudo pip تثبيت pytesseract

للحصول على دراية tesseract هنا هو مثال لطيف.

3. وضع الأشياء معا

بمجرد قيامنا بتنفيذ عملية اكتشاف النص والتعرف على النص ، فقد حان الوقت لدمجها لتحقيق التدفق التالي:

  • الكشف عن المنطقة المطلوبة من الصورة
  • تمرير تلك المناطق المكتشفة إلى Tesseract
  • تخزين النتائج من Tesseract بالتنسيق المطلوب

من المخطط أعلاه ، يمكنك أن تفهم أنه أولاً يتم تمرير صورة بطاقة المقلاة إلى YOLO. بعد ذلك ، يكتشف YOLO مناطق النص المطلوبة ويخرجها من الصورة. في وقت لاحق ، نمر هذه المناطق واحدا تلو الآخر إلى tesseract. Tesseract يقرأ لهم ، ونحن تخزين هذه المعلومات.

الآن ، لتمثيل النتائج ، يمكنك اختيار أي شكل من أشكال الاختيار. هنا ، استخدمت ورقة إكسل لإظهار النتائج.

لقد فتحت مصدرها هذا الخط بأكمله. قم بنسخ المستودع ونقل ملف البيانات الخاص بك وملف الوزن الذي تم إنشاؤه بعد التدريب إلى دليل المستودع هذا. تحتاج إلى تثبيت darknet هنا من خلال الأمر التالي.

bash ./darknet.sh

الآن قم بتشغيل OCR باستخدام هذا الأمر

pan.py -d -t

تهانينا! يمكنك الآن رؤية نتائج التعرف الضوئي على الحروف في مجلد الإخراج في شكل ملف CSV. أثناء اختبار التعرف الضوئي على الحروف المخصص ، قد تحتاج إلى تغيير حجم الصورة. لهذا الغرض ، قم بتعديل المعلمة الأساسية في ملف loc_asset.py.

مصادر

  • كشف الكائن
  • الأساليب القائمة على المنطقة
  • طرق طلقة واحدة
  • مقارنة بين أجهزة الكشف المختلفة

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

إذا كان لديك أي سؤال فلا تتردد في التعليق. سأكون سعيدًا حقًا لمساعدتك. إذا كان هذا المقال قد ساعدك بأي شكل من الأشكال ، فلا تخجل من النقر على زر التصفيق!