روش OCR فارسی مبتنی بر زیرکلمات با استفاده از ویژگی‏ های استخراج شده از خود رمزکننده خودکار و دسته‏ بندی آبشاری



در این پست قصد داریم در مورد OCR صحبت کنیم. OCR به تكنيكي اطلاق مي شود كه طي آن يك برنامه كامپيوتري متون موجود درتصاوير ديجيتالي را شناسايي كرده و آن‌ها را به صورت خودكار به فايل‌هاي متني قابل ويرايش و جست‌وجو تبديل مي كند. OCR زبان‎های فارسی و عربی نسبت به زبان انگلیسی پیچیدگی بیشتری دارد. تعداد حروف الفبای بیشتر، پیوسته بودن حروف هنگام نوشتن، نقطه دار بودن حروف و تغییر فرم نوشتاری حروف در ابتدا، وسط یا انتهای کلمات از جمله مهم‏ترین این موارد است. از دیگر چالش‌های OCR فارسی، در دسترس نبودن مجموعه‌ی داده‌ی استاندارد برای حل مساله است. در اکثر پژوهش‌های موجود، محققین با استفاده از مجموعه داده‌های خود نتایج را مقایسه کرده ‏اند. برخی از مقالات بر اساس حروفِ موجود در زبان‌های فارسی و عربی،OCR را انجام می‏دهند، حال آنکه در برخی مقالات مبنای دسته‌بندی، زیرکلمات در نظر گرفته می‏شود. وقتی مبنای دسته‌بندی، حروفِ موجود در زبان باشد، تعداد دسته‌های کمتری وجود دارد اما تشخیص حروف به طور جداگانه در زبان فارسی به دلایلی که ذکر شد سخت‌تر است، اما وقتی مبنای پردازشی زیرکلمات باشند، جداسازی آن‌ها ساده‌تر خواهد بود در حالی‌که تعداد دسته‌ها نسبت به حالت قبل بیش از صد برابر خواهد بود.

فرآیند تبدیل تصاویر به متن صورت گرفته در این پژوهش را می‌توان به سه مرحله کلی 1. پیش‌پردازش 2. مدل‌سازی و 3. پس‌پردازش تقسیم‌بندی نمود. در بخش پیش‌پردازش هدف بهبود تصویر ورودی است، حذف نویز، تشخیص بخش متنی، تغییر ابعاد یا بهبود کیفیت تصویر از جمله عملیاتی است که در این بخش صورت گیرد. در بخش مدل‌سازی به استخراج ویژگی و دسته‌بندی پرداخته می‌شود و در بخش پس‌پردازش، هدف بالا بردن دقت دسته‌بندی با استفاده از روش‌های مختلف است. طبق تحقیقات صورت گرفته، در این حوزه مجموعه داده‌ی در دسترسی که بتوان برای حل مساله استفاده نمود یافت نشد به همین علت مجموعه داد‌ه ی آموزش و آزمایشی مورد استفاده در این پژوهش، برای مقایسه نتایج در https://github.com/partdpai/persian_subwords در دسترس است. در ادامه هر یک از مراحل پیش‏ پردازش، مدل‏سازی و پس‏ پردازش به اختصار توضیح داده می‏شوند (شکل 1).

شکل 1. مراحل انجام OCR
شکل 1. مراحل انجام OCR



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

شکل 2. مراحل استخراج زیرکلمات و کلمات از یک خط تصویر
شکل 2. مراحل استخراج زیرکلمات و کلمات از یک خط تصویر


مرحله مدل سازی: در این مرحله ابتدا یک دیکشنری بزرگ از تصویر زیرکلمات (SWID) در زبان فارسی ساخته شده است. مجموعه داده آموزشی از روی SWID، تولید شده و با استفاده از خود رمزکننده خودکار (AE)، ویژگی های آن ها استخراج می شود. داده ها با استفاده از الگوریتم kmeans خوشه بندی شده و از این طریق زیرکلماتی که شکل نوشتاری مشابهی دارند (مانند "کر"، "گر"، "لر")، در یک خوشه قرار می گیرند. نتیجه این خوشه بندی به مدل یادگیر اول آموزش داده می شود. به بیان دیگر، مدل یادگیر اول مشخص می کند که هر تصویر زیرکلمه به چه خوشه ای تعلق دارد. در مرحله بعد، برای هر یک از خوشه ها نیز یک مدل یادگیر آموزش داده می شود که مشخص می کند هر تصویر زیرکلمه دقیقا معادل با کدام زیرکلمه از آن خوشه است و معادل متنی تصاویر زیرکلمات که در مرحله قبل بدست آمده‏ اند را تعیین می‏ کند. مدل‏ های یادگیر در این پژوهش، دسته‏ بندی SVM با کرنل RBF هستند. در انتهای این مرحله با کنار هم گذاشتن زیرکلمات تشخیصی و تشکیل کلمات براساس خروجی مرحله پیش‏ پردازش، خروجی اولیه OCR فراهم شده‏ است.

مرحله پس پردازش: در این مرحله، نتایج اولیه OCR با استفاده از دیکشنری کلمات بهبود پیدا می کنند. یک MA-FSA برای تعیین وجود یا عدم وجود کلمه تشخیصی در دیکشنری کلمات و یک ساختار Trie با قابلیت محاسبه فاصله Levenshtein برای پیشنهاد کلمات مشابه با قابلیت جستجوی سریع ایجاد می ‏شود. پس از ساخت این دو ساختار داده، در این مرحله برای هر کلمه تشخیصی، ابتدا وجود یا عدم وجود آن در دیکشنری کلمات، با استفاده از ساختار DAWG، چک می‏ شود. اگر کلمه موردنظر در دیکشنری کلمات وجود نداشته‏ باشد، برای یافتن بهترین تطبیق، به روش زیر عمل شده ‏است: عملیات انجام‏ شده در این بخش در واقع یافتن تمام کلماتی در دیکشنری است که حداکثر فاصله آن‏ها با کلمه به اشتباه تشخیص داده‏ شده، برابر حد آستان ه‏ای است که قابل تنظیم بوده و در اینجا برابر 1 در نظر گرفته شده‏ است. از آنجا که ممکن است در این مرحله کلمات متعددی حاصل شود که اشتباه تشخیص داده شدن برخی از آن‏ها توسط الگوریتم بعید به نظر رسد، یک فیلتر بر روی نتایج حاصل از این مرحله اعمال می‏ شود. این فیلتر به این صورت عمل می‏ کند که تنها کلماتی را از بین کلمات جایگزین بر می‏ گزیند که مجموعه حروف جایگزین آن یکی از موارد آرایه زیر باشد:

'اإأآآِاٌاَاُاِ', 'یبئنپتث', 'جچحخ', 'دذ', 'روزژ', 'سشصض', 'عغ', 'فق', 'کگ', 'طظ'

در این آرایه جفت کلماتی که با یکدیگر شباهت نوشتاری دارند در یک زیررشته قرار دارند و در عملیات فیلترکردن، جایگزینی حروف موجود در هر زیررشته چک می‏ شود.

جزئیات هر یک از این مراحل و نتایج مقایسه الگوریتم به تفصیل در مقاله آمده است.

برای مشاهده اصل مقاله که توسط همکاران ما در مرکز تحقیقات هوش پارت تهیه و تدوین شده است به آدرس لینک زیر می توانید مراجه نمایید :

http://s9.picofile.com/file/8349861100/IST2018_1449_CameraReady.pdf.html