هوشمندسازی فرآیندهای زندگی https://partdp.ai/
روش OCR فارسی مبتنی بر زیرکلمات با استفاده از ویژگی های استخراج شده از خود رمزکننده خودکار و دسته بندی آبشاری
در این پست قصد داریم در مورد OCR صحبت کنیم. OCR به تكنيكي اطلاق مي شود كه طي آن يك برنامه كامپيوتري متون موجود درتصاوير ديجيتالي را شناسايي كرده و آنها را به صورت خودكار به فايلهاي متني قابل ويرايش و جستوجو تبديل مي كند. OCR زبانهای فارسی و عربی نسبت به زبان انگلیسی پیچیدگی بیشتری دارد. تعداد حروف الفبای بیشتر، پیوسته بودن حروف هنگام نوشتن، نقطه دار بودن حروف و تغییر فرم نوشتاری حروف در ابتدا، وسط یا انتهای کلمات از جمله مهمترین این موارد است. از دیگر چالشهای OCR فارسی، در دسترس نبودن مجموعهی دادهی استاندارد برای حل مساله است. در اکثر پژوهشهای موجود، محققین با استفاده از مجموعه دادههای خود نتایج را مقایسه کرده اند. برخی از مقالات بر اساس حروفِ موجود در زبانهای فارسی و عربی،OCR را انجام میدهند، حال آنکه در برخی مقالات مبنای دستهبندی، زیرکلمات در نظر گرفته میشود. وقتی مبنای دستهبندی، حروفِ موجود در زبان باشد، تعداد دستههای کمتری وجود دارد اما تشخیص حروف به طور جداگانه در زبان فارسی به دلایلی که ذکر شد سختتر است، اما وقتی مبنای پردازشی زیرکلمات باشند، جداسازی آنها سادهتر خواهد بود در حالیکه تعداد دستهها نسبت به حالت قبل بیش از صد برابر خواهد بود.
فرآیند تبدیل تصاویر به متن صورت گرفته در این پژوهش را میتوان به سه مرحله کلی 1. پیشپردازش 2. مدلسازی و 3. پسپردازش تقسیمبندی نمود. در بخش پیشپردازش هدف بهبود تصویر ورودی است، حذف نویز، تشخیص بخش متنی، تغییر ابعاد یا بهبود کیفیت تصویر از جمله عملیاتی است که در این بخش صورت گیرد. در بخش مدلسازی به استخراج ویژگی و دستهبندی پرداخته میشود و در بخش پسپردازش، هدف بالا بردن دقت دستهبندی با استفاده از روشهای مختلف است. طبق تحقیقات صورت گرفته، در این حوزه مجموعه دادهی در دسترسی که بتوان برای حل مساله استفاده نمود یافت نشد به همین علت مجموعه داده ی آموزش و آزمایشی مورد استفاده در این پژوهش، برای مقایسه نتایج در https://github.com/partdpai/persian_subwords در دسترس است. در ادامه هر یک از مراحل پیش پردازش، مدلسازی و پس پردازش به اختصار توضیح داده میشوند (شکل 1).
مرحله پیش پردازش: در این مرحله، ابتدا تصویر ورودی با هدف حذف نویز، نرمالسازی می شود. سپس خطوط موجود در آن تشخیص داده شده و تصاویر زیرکلمات خطوط تشخیص داده شده، بر اساس کانتورهای تصویر استخراج می شوند. در نهایت براساس فاصله مکانی زیرکلمات از یکدیگر و با استفاده از تکنیک خوشه بندی روی مقادیر فواصل، کلمات استخراج میشوند.
مرحله مدل سازی: در این مرحله ابتدا یک دیکشنری بزرگ از تصویر زیرکلمات (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
مطلبی دیگر از این انتشارات
پیادهسازی الگوریتم ژنتیک با استفاده از پایتون
مطلبی دیگر از این انتشارات
فیلم گردی با فیلیمو (بخش دوم: متن کاوی و دسته بندی فیلم ها)
مطلبی دیگر از این انتشارات
پیکسل یا بردار؟ مساله این است!