روش OCR فارسی مبتنی بر زیرکلمات

روش OCR فارسی مبتنی بر زیرکلمات

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

فرآیند تبدیل تصاویر به متن صورت گرفته در این پژوهش را می‌توان به سه مرحله کلی 1-پیش‌پردازش 2- مدل‌سازی و 3-پس‌پردازش تقسیم‌بندی نمود. در بخش پیش‌پردازش هدف بهبود تصویر ورودی است، حذف نویز، تشخیص بخش متنی، تغییر ابعاد یا بهبود کیفیت تصویر از جمله عملیاتی است که در این بخش صورت گیرد. در بخش مدل‌سازی به استخراج ویژگی و دسته‌بندی پرداخته می‌شود و در بخش پس‌پردازش، هدف بالا بردن دقت دسته‌بندی با استفاده از روش‌های مختلف است.

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

OCR فارسی

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

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

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

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