Tesseract هو محرك مفتوح المصدر للتعرف على الأحرف البصرية (OCR) وهو مكتبة OCR الأكثر شعبية وعالية الجودة.
يستخدم التعرف الضوئي على الحروف الشبكات العصبية للبحث والتعرف على النص في الصور.
يبحث Tesseract عن الأنماط بالبكسل والحروف والكلمات والجمل ، ويستخدم نهجًا من خطوتين يسمى التعرف التكيفي. يستغرق مرورًا واحدًا عبر البيانات للتعرف على الأحرف ، ثم تمريرًا ثانيًا لملء أي أحرف لم يكن متأكدًا فيها من الحروف التي تتوافق على الأرجح مع الكلمة أو سياق الجملة المحدد.
كان أحد المشروعات هو التعرف على الشيكات من الصور الفوتوغرافية.
كانت أداة التعرف المستخدمة هي Tesseract OCR . تشمل مزايا هذه المكتبة نماذج اللغة المدربة (> 192) ، وأنواع مختلفة من التعرف (الصورة ككلمة ، كتلة النص ، النص العمودي) ، الإعداد السهل. نظرًا لأن Tesseract OCR مكتوب بلغة C ++ ، فقد تم استخدام غلاف طرف ثالث مع github.
الاختلافات بين الإصدارات هي نماذج مختلفة مدربة (الإصدار 4 له دقة أكبر ، لذلك استخدمناه).
نحتاج إلى ملفات بيانات للتعرف على النص ، ولكل لغة ملفها الخاص. يمكنك تنزيل البيانات هنا .
كلما كانت جودة الصورة الأصلية أفضل (الحجم والتباين ومواد الإضاءة) ، كانت نتيجة التعرف أفضل.
تم العثور على طريقة معالجة الصور أيضًا للتعرف عليها بشكل أكبر باستخدام مكتبة OpenCV. نظرًا لأن OpenCV مكتوب بلغة C ++ ، ولا يوجد برنامج تغليف مكتوب لحلنا ، فقد تقرر كتابة برنامجنا الخاص بهذه المكتبة مع وظائف معالجة الصور الضرورية. الصعوبة الرئيسية هي اختيار القيم للمرشح لمعالجة الصورة الصحيحة. من الممكن أيضًا العثور على حدود الشيكات / النص ، لكن غير مفهومة تمامًا. وكانت النتيجة أفضل (5-10 ٪).
خيارات:
اللغة - لغة النص من الصورة ، يمكنك تحديد العديد من خلال سردهم من خلال "+" ؛
pageSegmentationMode - نوع موقع النص في الصورة ؛
charBlacklist - الأحرف التي يجب تجاهلها تجاهل الأحرف.
باستخدام Tesseract فقط أعطى دقة تصل إلى 70٪ مع صورة مثالية ، مع جودة إضاءة / صورة رديئة كانت الدقة ~ 30٪.

رؤية + Tesseract التعرف الضوئي على الحروف
نظرًا لأن النتيجة لم تكن مرضية ، فقد تقرر استخدام المكتبة من Apple - Vision. استخدمنا Vision للعثور على كتل نصية ، وقم بتقسيم الصورة إلى كتل منفصلة والتعرف عليها. كانت النتيجة أفضل بنسبة 5 ٪ ~ ، ولكن ظهرت أخطاء بسبب الكتل المتكررة.
عيوب هذا الحل هي:
- سرعة العمل. انخفضت سرعة التشغيل> 4 مرات (ربما يكون هناك اختلاف في الانتشار)
- تم التعرف على بعض كتل النص أكثر من مرة واحدة
- يتم التعرف على النص من اليمين إلى اليسار ، ولهذا السبب تم التعرف على النص الموجود على الجانب الأيمن من التحقق قبل النص الموجود على اليسار.

MLKit
هناك طريقة أخرى لاكتشاف النص وهي MLKit من Google ، والتي يتم نشرها على Firebase. أظهرت هذه الطريقة أفضل النتائج (~ 90٪) ، لكن العيب الرئيسي لهذه الطريقة هو دعم الأحرف اللاتينية فقط والمعالجة المعقدة للنص المقسّم في سطر واحد (الاسم - يسار ، سعر - يمين).

في النهاية ، يمكننا القول أن التعرف على النص في الصور هو مهمة قابلة للتنفيذ ، ولكن هناك بعض الصعوبات. المشكلة الرئيسية هي جودة الصورة (الحجم والإضاءة والتباين) ، والتي يمكن حلها عن طريق تصفية الصورة. عند التعرف على النص باستخدام Vision أو MLKit ، كانت هناك مشاكل في الترتيب الخاطئ للتعرف على النص ، ومعالجة نص الانقسام.
النص المعترف به يمكن تصحيحه يدويا ومناسب للاستخدام ؛ في معظم الحالات ، عند التعرف على النص من الشيكات ، يتم التعرف على المبلغ الإجمالي جيدًا ولا يحتاج إلى تعديلات.