خانه > فناوری > بررسی دو نرم افزار TESSERACT و KARKEN OCR برای شناخت متن
نویسه خوان ocr بررسی tesseract kraken

بررسی دو نرم افزار TESSERACT و KARKEN OCR برای شناخت متن

در این مقاله می خواهیم به بررسی اجمالی و مقایسه بین TESSERACT  و KARKEN برای نویسه خوان ( تشخیص کارکتر نوری ( OCR )) بپردازیم. ما با توضیح دادن چگونه کارایی OCR و همگرا بودن تکنولوژِی با یادگیری ماشین  شروع می کنیم. یادگیری ماشین بهبودی های شدیدی برای بینایی کامپیوتر به ارمغان آورده و یادگیری عمیق در سال های اخیر به سرعت در حال پیشرفت است. بینایی کامپیوتر کاربرد های زیادی در مقیاس های بزرگ و به صورت آنی دارد که در هوش مصنوعی استفاده می شود. برای مثال شناسایی پلاک خودرو ها، شناخت تصویر، تشخیص هرگونه حرکت، بازیابی تصویر، ترمیم تصویر، تشخیص متن، تشخیص اشیای زنده و… . هوش مصنوعی  می تواند برای کاهش تلاش ها برای حل مشکلات پیش پا افتاده مثل انتقال متن کتاب های ارثیه قدیمی به صورت دستی برای استفاده در آینده طراحی شود.

opencv
کتابخانه پردازش تصویر OpenCV

در نرم افزار های نویسه خوان ، هدف اصلی تشخیص و جداسازی تمام کلمات منحصر به فردی است که در زبان های مختلف از حروف متن نوشته شده، است. نویسه خوان از مدل زبان های آموزش دیده برای تشخیص هر کاراکتر استفاده و متن خروجی را به شکل تصویر یا PDF فراهم می کند.

درحین انجام تحقیقاتمان، ازآنجایی که TESSERACT و KRAKEN دو منبع باز هستند، متوجه شدیم که برنامه های تجاری دیگری نیز هستند که از نویسه خوان برای استخراج متن استفاده می کنند. قبل از اینکه درباره این دوبرنامه بحث کنیم اجازه دهید مروری کنیم که TESSERACT و KARKEN چه چیزی هستند.

نویسه خوان Tesseract OCR
نویسه خوان Tesseract

موتور TESSERACT به عنوان نرم افزار اختصاصی در آزمایشگاه HEWLETT PACKARD درون انگلستان و کولورادو بین سال ۱۹۸۵ تا ۱۹۹۴ توسعه یافت. با اندک تغییرات در سال ۱۹۹۶ به ویندوز منتقل شد و تغییر زبان آن از C به C++ درسال ۱۹۹۸ انجام شد. نسخه چهارم TESSERACT موتور و مدل نویسه خوان را بر اساس شبکه های عصبی بازگشتی حافظه طولانی کوتاه مدت (LSTM  ) رابه علاوه ی تعداد زیادی مدل زبان و اسکریپت را اضافه کرده است که تعداد این زبان ها به ۱۱۶ عدد می رسد.

نویسه خوان kraken ocr
نویسه خوان Kraken

Kraken یک نرم افزار منبع باز نویسه خوان است که از OCROPUS ( تحلیل گر اسناد به صورت رایگان ) به وجود آمده است. این در نظر گرفته شده است تا ضمن حفظ هم ارزی عملکرد ، تعدادی از مسائل را اصلاح کند.KRAKEN  توسط بنجامین کیسلینگ در دانشگاه لایپزیگ ساخته شد.KRAKEN  یک “چنگال” از مجموعه ناپایدار OCROPUS در ترکیب با شبکه کتابخانه عصبی بازگشتی حافظه طولانی کوتاه مدت متنی (CLSTM  ) می باشد. برخلاف رویکرد های سنتی نویسه خوان،KRAKEN بر شبکه عصبی ،که از روش یادگیری ما تقلید می کند، برای تشخیص تمام حروف تصویر برروی تمام خط ها تکیه می کند که بدون اینکه ابتدا سعی کند خطوط را به کلمات و سپس کلمات را به حروف تقسیم می کند.

ملزومات Tesseract

TESSERACT به طور مستقیم از بسیاری از بخش های سیستم عامل LINUX در دسترس است. این مجموعه به صورت عمومی ” Tesseract ” یا ” Tesseract OCR “خوانده می شود. شما می توانید آخرین نسخه Tesseract را نصب و ابزار توسعه آن را از طریق Ubuntu 18.04 به سادگی با دنبال کردن دستور های زیر اجرا کنید:

  1. نسخه پایتون نیازمند برنامه نویسی پایتون۲٫۶ به بالا یا پایتون x.3، ما پایتون ۲٫۷ را برای این آموزش استفاده کردیم.
  2. شما به کتابخانه تصاویر پایتون(PIM) نیاز خواهید داشت.مجموعه PYTHON-IMAGINING یا PYTHON3-IMAGINING.

مراحل نصب Tesseract

  1. نصب PYTESSERACT
  2. نصب TESSERACT-OCR
  3. نصب LIBTESSERACT-DEV

از لینک های پایین صفحه هر مدل زبان های مختلف را که می خواهید امتحان کنید را دانلود کنید. ما از زبان عربی برای استخراج کردن متن از تصاویر استفاده می کنیم.

Tesseract-ocr-ara: Tesseract-ocr برای فایل های زبان عربی

من مراحل نصب KRAKEN رو در اینجا بیان نکردم، به دلایلی پیچیدگی های بیشتری برای نصب و اجرای مدل های زبانی آموزش دیده روی LINUX به خصوص برروی ویندوز بسیار سخت خواهد بود. اگر شما می خواهید KRAKEN را بر روی سیستم خود امتحان کنید،  پیشنهاد می شود پایتون۲٫۷ استفاده کنید، پایتون ۳٫۵ برای من جواب نداد.

اجرای TESSERACT

TESSREACT یک برنامه با عملکرد خط-دستور است، و هیچ رابط گرافیکی برای آن در دسترس نیست. پس ابتدا یک ترمینال درون پلتفرم UBUNTU تشکیل دهید. دستور ها می توانند طبق مثال زیر استفاده شوند:

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

حافظه اصلی برای انجام OCR برروی یک عکس “MYSCAN.PNG” است و برای ذخیره نتیجه از “OUT.TXT”خواهد بود:

tesseract myscan.png out

یا برای ذخیره به زبان آلمانی به صورت زیر انجام دهید :

tesseract myscan.png out -l deu

همچنین می تواند به صورت همزمان از چندین زبان آموزش دیده استفاده کند مانند انگلیسی و آلمانی:

tesseract myscan.png out -l eng+deu

همچنین می توانید یک PDF قابل جستجو را مستقیما از طریق TESSERACT ایجاد کنید (برای نسخه ۳٫۰۳ یا بیشتر):

tesseract myscan.png out pdf

اجرای KRAKEN

تشخیص متن روی تصویر با استفاده از پارامتر های معمول ازجمله مراحل پیش نیاز باینری کردن (تبدیل عکس به فایل سیاه و سفید جهت خوانا شدن برای کامپیوتر) و تقسیم بندی صفحات است:

$ kraken -i image.tif image.txt binarize segment ocr

Loading RNN ✓

Processing ⣻

برای انجام تقسیم عکس های باینری در خطوط مرتب شده به ترتیب خواندن:

$ kraken -i bw.tif lines.json segment

به طور کلی، برای گرفتن نتایج بهتر از نویسه خوان، نیاز خواهید داشت تا تصویر هایی با کیفیت بیشتر فراهم کنید. معمولا، بهتر است حداقل از وضوح DPI300 یا بیشتر استفاده کنید. نویسه خوان تصاویر را پردازش می کند و بهترین خروجی محتمل را برای شناخت متن به صورت باینری رد می آورد.

باینری کردن تصاویر

برای باینری کردن فقط یک عکس از الگوریتم NLBIN استفاده می کنیم: عکس با فرمت TIF را به عکس با فرمت TIFF تبدیل می کند. با کد:

$ kraken -i image.tif output.tif binarize
نویسه خوان باینری کردن تصاویر
ساخت تصویر باینری ساده از یک کتاب قدیمی و تبدیل به یک فایل دیجیتالی

تقسیم بندی به شکل خطوط

متن برای تقسیم شدن به خطوط از تقسیم بندی خطوط استفاده می کند.من از TESSERACT برای یک متن ساده عربی برای اجرای دستور زیر استفاده کردم:

tesseract arabictext.png out pdf

این خروجی ترمینال پردازش UBTUNU برای حروف شناخته شده است :

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Detected 420 diacritics
نویسه خوان قسمت بندی متن عربی
یک تقسیم بندی ساده برای متن عربی به فایل PDF

این یک نمونه کاملا دقیق از تبدیل PDF می باشد.TESSERACT قبل از انجام اصلی نویسه خوانی، عملیات پردازش عکس های مختلف را درون خود انجام می دهد. به طور کلی این کار را به خوبی انجام می دهد اما در مواردی به ناچار خوب نیست، که می تواند موجب کاهش قابل توجه دقت در نتیجه شود. زمانی که از همان عکس به صورت پردازش فایل متنی استفاده کردیم، با همان دقت پردازش را انجام نداد.

پرشیانگار، سامانه‌ی نویسه خوان ( OCR ) قدرتمند است که شما را از در بسیاری از موارد از تایپ مجدد مستندات چاپی بی‌نیاز می‌کند. با استفاده از پرشیانگار می‌توانید در کمتر از چند ثانیه اسناد چاپی‌تان را با دقتی بیش از ٩۵% به متون متناظر تبدیل کنید. برای دریافت اطلاعات بیشتر به صفحه معرفی نویسه خوان فارسی پرشیانگار مراجعه فرمایید. 

به طور معمول TESSERACT زمانی که یک عکس را به بخش های مختلف تقسیم می کند انتظار یک صفحه متن را دارد.اگر شما فقط به دنبال نویسه خوانی  یک ناحیه کوچک هستید، سبک متفاوت دیگری از تقسیم بندی را استفاده کنید.

آموزش دادن مدل های زبانی

مهمترین مزیت KRAKEN این است که روند کار آن، این امکان را به فرد می دهد تا مدل های جدید را به طور نسبتا آسانی آموزش دهد، از جمله نمونه ای از متن های خاص. مخلص کلام، فرآیند آموزش دادن نیازمند بازنویسی تقریبا ۸۰۰ خط (تعداد این خطوط به پیچیدگی های مختلفی از تایپ بستگی دارد) مطابق با تصاویر این خطوط در نسخه چاپی می باشد.

نویسه خوان دقت تشخیص
جدول دقت فرایند آموزش برای کتاب های عربی

مشکلات مورد انتظار:

TESSERACT زمانی که تقسیم بندی تمیز و بدون نقص متن پیش زمینه از پس زمینه وجود دارد، به بهترین نحو کار می کند. در عمل، تضمین کردن این نوع تقسیم بندی می تواند بسیار چالش برانگیز باشد. اگر تصویر پیش زمینه دارای اختلالتی باشد دلایل متعددی وجود دارد که ممکن است شما خروجی را با کیفیت خوبی دریافت نکنید. همچنین فرآیند های کاردستی و آبشار، در صورتی که متن ها به طور مناسبی هم راستا نباشند، فضای زیادی می گیرد که ممکن است کاراکتر ها آنطور که باید در نتیجه باشد، تشخیص و ضبط نشوند.

نتیجه گیری:

بزرگترین نقطه ضعف TESSERACT محدودیت های آن است. TESSERACT زمانی که بخش بندی های بی نقص و تمیز متن های پس زمینه از پیش زمینه وجود داشته باشد، به بهترین نحو کار می کند.این بخش بندی ها باید با بهترین وضوح ممکن باشند و کاراکتر های ورودی نباید پس از بخش بندی به طور پیکسل ظاهر شوند.

منابع:

https://www.pyimagesearch.com/2017/07/10/using-tesseract-ocr-python/

http://kraken.re/

https://github.com/mittagessen/kraken

https://github.com/mittagessen/kraken-models/tree/master/clstm

https://openphilology.github.io/nidaba/

https://github.com/OpenArabic/OCR_GS_Data

https://packages.ubuntu.com/bionic/tesseract-ocr-all

بیشتر بخوانید :

منبع Medium
0/5 ( 0 نظر )

درباره‌ی احمدرضا جعفری

همچنین ببینید

نویسه خوان ocr یادگیری عمیق

آینده نویسه خوان ( OCR )، یادگیری عمیق است

چه در مورد استخراج خودکار اطلاعات از رسید اسکن شده برای گزارش هزینه و یا …

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *