تشخیص کاراکتر نوری (OCR) فرآیند تشخیص کاراکترها از تصاویر با استفاده از تکنیکهای بینایی کامپیوتر و یادگیری ماشین است. این برنامه مرجع نحوه استفاده از TensorFlow Lite را برای انجام OCR نشان می دهد. از ترکیبی از مدل تشخیص متن و مدل تشخیص متن به عنوان خط لوله OCR برای تشخیص کاراکترهای متن استفاده می کند.
شروع کنید
اگر با TensorFlow Lite تازه کار هستید و با اندروید کار می کنید، توصیه می کنیم برنامه مثال زیر را بررسی کنید که می تواند به شما در شروع کار کمک کند.
اگر از پلتفرمی غیر از اندروید استفاده میکنید یا قبلاً با APIهای TensorFlow Lite آشنا هستید، میتوانید مدلها را از TF Hub دانلود کنید.
چگونه کار می کند
وظایف OCR اغلب به 2 مرحله تقسیم می شوند. ابتدا، ما از یک مدل تشخیص متن برای شناسایی کادرهای محدود کننده در اطراف متون احتمالی استفاده می کنیم. دوم، ما جعبههای محدودکننده پردازش شده را به یک مدل تشخیص متن وارد میکنیم تا کاراکترهای خاصی را در داخل جعبههای محدودکننده تعیین کنیم (همچنین باید قبل از تشخیص متن، Non-Maximal Suppression، تبدیل پرسپکتیو و غیره را انجام دهیم). در مورد ما، هر دو مدل از TensorFlow Hub هستند و مدلهای کوانتیزه FP16 هستند.
معیارهای عملکرد
اعداد معیار عملکرد با ابزار توضیح داده شده در اینجا تولید می شوند.
نام مدل | اندازه مدل | دستگاه | CPU | پردازنده گرافیکی |
---|---|---|---|---|
تشخیص متن | 45.9 مگابایت | پیکسل 4 (اندروید 10) | 181.93 میلیثانیه* | 89.77 میلیثانیه* |
تشخیص متن | 16.8 مگابایت | پیکسل 4 (اندروید 10) | 338.33 میلیثانیه* | غیر مجاز ** |
* 4 نخ استفاده شده است.
** این مدل نمی تواند از نماینده GPU استفاده کند زیرا برای اجرای آن به تنظیمات TensorFlow نیاز داریم
ورودی ها
مدل تشخیص متن یک تانسور 4 بعدی float32
از (1، 320، 320، 3) را به عنوان ورودی می پذیرد.
مدل تشخیص متن یک تانسور 4 بعدی float32
از (1، 31، 200، 1) را به عنوان ورودی می پذیرد.
خروجی ها
مدل تشخیص متن یک تانسور float32
4 بعدی از شکل (1، 80، 80، 5) را به عنوان کادر مرزی و یک تانسور 4 بعدی float32
شکل (1،80، 80، 5) را به عنوان امتیاز تشخیص برمی گرداند.
مدل تشخیص متن یک تانسور 2 بعدی float32
شکل (1، 48) را به عنوان شاخص های نگاشت به لیست الفبای '0123456789abcdefghijklmnopqrstuvwxyz' برمی گرداند.
محدودیت ها
مدل تشخیص متن فعلی با استفاده از داده های مصنوعی با حروف و اعداد انگلیسی آموزش داده شده است، بنابراین فقط انگلیسی پشتیبانی می شود.
این مدل ها به اندازه کافی برای OCR در طبیعت عمومی نیستند (مثلاً تصاویر تصادفی گرفته شده توسط دوربین گوشی های هوشمند در شرایط نور کم).
بنابراین ما 3 نشانواره محصول Google را فقط برای نشان دادن نحوه انجام OCR با TensorFlow Lite انتخاب کردهایم. اگر به دنبال یک محصول OCR درجه تولید آماده برای استفاده هستید، باید Google ML Kit را در نظر بگیرید. کیت ML، که از TFLite در زیر استفاده می کند، باید برای اکثر موارد استفاده OCR کافی باشد، اما مواردی وجود دارد که ممکن است بخواهید راه حل OCR خود را با TFLite بسازید. چند نمونه عبارتند از:
- شما مدل های TFLite تشخیص/تشخیص متن خود را دارید که می خواهید از آنها استفاده کنید
- شما الزامات تجاری خاصی دارید (یعنی تشخیص متون وارونه) و باید خط لوله OCR را سفارشی کنید
- شما می خواهید از زبان هایی پشتیبانی کنید که تحت پوشش کیت ML نیستند
- دستگاه های کاربر هدف شما لزوماً سرویس های 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/