سلام
من کارم گیر این ocr شد !
اومدم دیدم که ocr فارسی که نیست اومدم روی ocr عربی تست کردم خب دیدم تقریبا اگر خودم تایپ کنم بهتره!
ولی به هر حال خروجی ocr عربی به عنوان یک پایه می تونه چیز خوبی باشه به این دلیل که اکثر حرف ها ی اکثر کلمات رو درست می فهمه و فقط توی فاصله ها و گ چ پ ژ و حروفی که تایپش شبیه هم هستند به مشکل بر می خوره و از همه مهمتر اینکه اشتباه بی معنی می کنه ! (اشتباه بی معنی خیلی مهمه)
حالا من می گم اگر که بتونیم یک جیزی مثل spell check درست کنیم (dictionary base ) خیلی می تونه کمک کنه
من نرم افزار های spellcheck فارسی رو دیدم و بدرد نمی خوره (چون هیچ کاری انجام نمی ده)
خواهشا سوالات چرایی رو اینجا نپرسید اینجا جای سوالات چگونگی است !
این چیزی که توی ذهنم هست خیلی راحت هست و هرکسی که توانایی ابتدایی توی اسکریپت نویسی یا برنامه نویسی داره و دلش می خواد بیاد کمک کنه
برای اینکار به نظرم باید ابتدا یک اسکریپت/برنامه درست کنیم که دیتابیس ها رو درست کنه : ما به سه فایل به عنوان دیتابیس(دیکشنری) نیاز داریم:
اولین دیتا بیس ، دیتا بیس حروف و کلمات اضافه است (من این اسم رو روش گذاشتم -دستور زبانم ضعیفه) که توش باید کلمات رو به صورت دستی وارد کنیم کلماتی مثل : و - از - اگر - برای و..
دیتا بیس دوم ، دیتابیس حروف مشابه است منظورم حروفی است که نرم افزار به جای هم در نظر می گیره مثلا «ش» رو با «ثس » یا «نثر» اشتباه می گیره که خب اینم باید دستی درست بشه برای درست کردنش کافیه که چند صفحه رو ocr کنید تا ببینید که
معمولا چی رو با چی اشتباه می گیره
دیتابیس اصلی یا دوکلمه ای : این یکی باید توسط نرم افزار درست بشه ! نحوه ی ساخت این دیتا بیس به اینصورت پیشنهاد می شه:
اسکریپت اول باید یک فایلی که توش جملات مربوط به همون زمینه ی مطلب ocr هست رو بخونه بعد جمله ها رو باید جدا بکنه (هر جمله با نقطه تموم می شه -می شه از خروجی tr استفاده کرد) بعد باید لغات رو شناسایی کنه (هر لغت بین دو فاصله فرار داره) و از این متن باید لغات حروف اضافه رو حذف کنه و هر ، دو لغت رو (بدون ترتیب قرار گرفتن در عبارت دو کلمه ای ) شمارش کنه و در نهایت در قالب زیر توی یک قایل ذخیره کنه
فراوانی:کلمه۱*کلمه۲*
توجه کنید که لازم نیست یک کلمه از اول متن رو با یک کلمه از آخر جست و جو کنه دو کلمه ی پشت سر هم بعد از فیلتر شدن در همون جمله کفایت می کنه چون هدفم از این کار اینکه کلماتی که به هم مربوط اند رو شناسایی کنیم که بعدا اگر بین چند کلمه مشابه و درست گیر کردیم بتونیم به لحاظ آماری بفهمیم که کدوم کلمه مربوط هست !
خب این از نصف کار !
حالا باید از توی فایل خروجی ocr جملات رو شناسایی کنیم (مثل بالا) بعد لغات رو شناسایی کنیم بعد هر لغت رو توی دیتابیس اصلی جست و جو کنیم اگر کلمه معتبر بود(با توجه به لغت قبلی اش) (با توجه به فراوانی) که هیچ ولی اگر که معتبر نبود باید هر حرف رو با دیتابیس حروف مشابه عوض کنیم تا بالاخره در یک جایی کلمه معتبر شود البته پر واضح هست که یک کلمه اگر ۷-۸ حرف داشته باشه و بخواهیم هر حرف رو هم چندین بار چک کنیم خیلی زمان می بره (هر چند من ترجیح می دم کامپیوترم ۲۰ دقیقه با حداکثر توان کار کنه و من آب میوه بخورم ولی خودم ۲۰ روز تمام مشغول تایپ یا تصحیح باشم) که برای رفع این مشکل من فکر می کنم که اگر درمورد کلمات بزرگ اگر یکبار ۵۰ درصد اول کلمه رو سرچ کنیم اگر که توی دیتا بیس بود تقربا (به لحاظ فراوانی و شانس و تصادف می گم - قرار نیست که خروجی ۱۰۰ درصد باشه که!) می شه نتیجه گرفت که مشکل از نصفه ی دوم هست(۵۰ درصد آخر کلمه) (البته اگر که نصفه ی دوم توی دیتابیس اصلی نباشه)
این چیزی بود که من به ذهنم رسید اگر که کسی چیز دیگه ای به ذهنش می رسه بگه
برای بالابردن سرعت کار تاجایی که می تونید(اجباری نیست) سعی کنید که از اسکریپت و ابزار های هسته گنو استفاده کنید
حالا اگر کسی داوطلب هست همینجا اعلام کنه تا تقسیم کار کنیم و جزئیات رو بیشتر بگم