# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > پردازش تصویر (Image Processing) >  نوشتن برنامه OCR فارسی

## jackinthebox

اگر کسی اطلاعات مفیدی در این زمینه دارد و مخصوصا اگر source برنامه ی ocr برای زبان انگلیسی را دارد به من کمک کند.
متشکرم

----------


## shaniaki

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

یه عشق برنامه نویسی خفن

----------


## AlirezaBahredar

به قول مدیر بخش محترم اصلا دنبال سورس کد نباش.............
توصیه می کنم دنبال الگوریتم Halfman بری.....موفق باشی

----------


## GentleGuy

> معمولا برای اینجور برنامه ها الگوریتم نمی نویسند که شما سورسش رو گیر بیاری


پس چی مینویسن؟؟؟ :strange:

----------


## B-Vedadian

سلام،
برنامه!

الگویتمهایی که تا به حال استفاده شده همونهایی اند که جناب shaniaki نوشتند. شبکه های عصبی مصنوعی بهترین جواب رو در مورد الگویابی تصویری میدن ولی این فقط یک بخش ماجراست.

اول باید حروف یک نوشته دست نویس رو بتونی جدا کنی بعدش بدی به یه شبکه عصبی که شبیه ترین حرف به این دست نوشته رو تعیین کنه.

این قدر بگم که پروژه فوق لیسانس بعضی دانشجویان مهندسی کامپیوتر تو ایران نوشتن یک الگوریتم مناسب برای جدا کردن حروف فارسی از عکسهاییه که از متون چاپی گرفته شدند. دقت کن که عکس متون چاپی با فونتهای معموله نه دست نوشته!

----------


## mzjahromi

من پروژه پایانیم Font Recognition بود و تحقیقات زیادی تو این زمینه داشتم فقط یه چیزی هست اونم اینکه احتمالات و مسائل آماری تو این زمینه خیلی استفاده می شه. نمیشه گفت الگوریتم نداره ولی الگوریتمش مثل این الگوریتمهای معمولی نیست. در واقع باید یه روش کار داشته باشی نه الگوریتم

----------


## amirsadeghi

منم رو این قضیه کار کردم
ولی فقط روی اعداد فارسی اگه می خواین در خدمتم

----------


## D32.00110

> اگر کسی اطلاعات مفیدی در این زمینه دارد و مخصوصا اگر source برنامه ی ocr برای زبان انگلیسی را دارد به من کمک کند.
> متشکرم


من روی این زمینه کار کرده بودم و زیاد هم جلو رفته بودم ولی بنا به دلایلی ...  نشد .
اگه با ای دی من تماس بگیری من در خدمتم سورس OCR انگلیسی و یه الگوریتم داشتم اگه پیدا کنم می دم بهت ...
اگه می خای واسه دست نوشته فارسی OCR بنویسی تقریبا می تونم بگم بی خیال شو ولی اینم بدون غیر ممکن ، غیر ممکنه ...

----------


## jeus

ocr فارسی نوشته شده 90% برای متن تایپ شده 60% دستنویس

----------


## amirsadeghi

غیر ممکن که نیست قابل انجام هست و من هم دارم روش کار می کنم و دارم جواب میگیرم

----------


## SYSMAN

این مناسب هست
فکر می کنم اینجا هم مطالب مناسبی برای یادگیری پیدا کنید.

----------


## amirsadeghi

خوب بود ممنون
موضوع جدید تری سراغ ندارید؟

----------


## samira2

این یک برنامه ی OCRاست فکر می کنم بتونه کمکتون کنه 
با آرزوی موفقیت برای همه ی شما

----------


## bahar_engineer

> این یک برنامه ی OCRاست فکر می کنم بتونه کمکتون کنه 
> با آرزوی موفقیت برای همه ی شما


ببخشید این چه برنامه ایه ؟ با چه زبانی هست؟ با چی اجرا می شه ؟؟!!

----------


## bijanbina

خیلی واضحه برنامه برای متلب هست

----------


## dousti_design

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

----------


## wolf_majid

سلام
منم یک برنامه یا یک الگوریتم برای شناسایی حروف انگلیسی تایپی می خوام (تحت نرم افزار متلب)
خواهشا" هر کی بلده کمکم کنه
خیلی گشتم اما چیز بدرد بخوری پیدا نکردم

خواهشا" کمک کنید

----------


## wolf_majid

جالبه ها
همه می گند نوشتن ocr انگلیسی ساده تره 
اما من هر چی گشتم یک الگوریتم بدرد بخور یا سورس تحت مطلب نیافتم
خواهشا" اگر کسی نوشته یا بلده کمک کنه
ممنون میشم

----------


## bhodaaaaa

سلام
ببخشيدممنون ميشم درمورد بازشناسي اعداد کمکم کنيد.
پروژه دارم نميدونم چيکاربکنم.
bhoda68_h@yahoo.com
مرسي

----------


## مصطفی ساتکی

> سلام
> ببخشيدممنون ميشم درمورد بازشناسي اعداد کمکم کنيد.
> پروژه دارم نميدونم چيکاربکنم.
> bhoda68_h@yahoo.com
> مرسي


من سوالی نمی بینم . سوالتونو مطرح کنید پاسخ داده میشه

----------


## mahyafa

من برای پروژه پایانیم (کارشناسی) دشته بندش اعداد دست نویس فارسی با svm با matlab رو تعیین کردم. با اینکه خیلی مطالعه کردم اما هنوز گیجم!! از صحبتهای دوستان که گفتن سخته هم بیشتر نگران شدم! از دوستان اگر کسی در این زمینه فعالیت داره یا داشته ممنون می شم من رو راهنمایی کنن.
تعدادی از سوالاتم رو مطرح می کنم:
- هسته های مختلف svm کدام هستند و هر کدام چه کاربردی دارند؟
- از چه روشی برای استخراج ویژگی استفاده کنم؟
- کسی با متلب پردازش تصویر انجام داده؟ (سوال در مورد کد نویسی و به صورت جزیی دارم)

----------


## erfan_com

> این یک برنامه ی OCRاست فکر می کنم بتونه کمکتون کنه 
> با آرزوی موفقیت برای همه ی شما


 salam
kodet bug ziad dare. tarze estefadasham mobhame.
ye tuzihi midi raje behesh?

----------


## yakhteh

درود
من OCR حروف دستنویس انگلیسی رو نوشتم و خوب جواب داده
از تابع Log-sigmoid  در شبکه عصبی 3 لایه با قانون پس انتشار خطا استفاده کردم، کتاب دکتر منهاج کمک میکنه.
حتما در مورد حروف تایپی خوب جواب میده
پیروز باشی

----------


## manij_mhm

> من برای پروژه پایانیم (کارشناسی) دشته بندش اعداد دست نویس فارسی  با svm با matlab رو تعیین کردم. با اینکه خیلی مطالعه کردم اما هنوز  گیجم!! از صحبتهای دوستان که گفتن سخته هم بیشتر نگران شدم! از دوستان اگر  کسی در این زمینه فعالیت داره یا داشته ممنون می شم من رو راهنمایی کنن.
> تعدادی از سوالاتم رو مطرح می کنم:
> - هسته های مختلف svm کدام هستند و هر کدام چه کاربردی دارند؟
> - از چه روشی برای استخراج ویژگی استفاده کنم؟
> - کسی با متلب پردازش تصویر انجام داده؟ (سوال در مورد کد نویسی و به صورت جزیی دارم)


سلام. اگه بخوای خود svm رو پیاره سازی کنی یکم سخت میشه! اما اگه فقط بخوای از SVM متلب استفاده کنی که مشکلی نیست. 
برای ویژگی ها هم پیشنهاد می کنم تعداد ویژگی ها رو زیاد انتخاب کن بعد هم با استفاده از الگوریتم های feature selection می تونید ویژگی های مناسب رو انتخاب کنید. این کار دقت برنامه رو بالا میبره.
برای ویژگی ها هم ممنتم، بافت تصویر، درصد پیکسل ها در مکانهای خاص تصویر، میانگین - واریانس - چولگی و انتروپی و.. می تونه باشه.
موفق باشید.

----------


## مصطفی ساتکی

مومنت قابل اعتماد نیست و ضرایبش یکه نیست حتی المکان zernik استفاده کنید و انتروپی در تصاویری باینری feature خاصی رو به شما نمی ده در این کاربرد زائد در انتها خود به خود از feature هاتون حذف میشه .اغلب از feature های با طول متغیر استفاده میشه که از خود شکل هندسی استخراج می کنند در فاز clustering و در فاز classification به روش های مختلف این feature را به feature های با طول ثابت تبدیل می کنند در ضمن svm بدون pca قابلیت genralization را نداره.در ضمن در ocr های تجاری بایستی از کرنل rbf استفاده شه چون با کرنل linear فاز cross validation پاس نمیشه .

----------


## manij_mhm

ویژگی هایی که انتخاب میشن بسته به مجموعه داده ای متفاوت هستند. ممنتم یکی از ویژگی هایه که بنده شخصا استفاده کردم و نتیجه قابل قبولی گرفتم البته تاثیر سایر ویژگی ها هم تباید نادیده گرفت.
به عنوان مثال ممنتم نسبت به چرخش عکس العملی نشون نمیده و 7و8 رو در زبان فارسی یکسان در نظر میگیره. در خالت کلی این یه ویژگی مفیده اما در حروف دست نویس فارسی برای 7و8 نقصه که باید با یه  ویژگی مثل تعداد پیکسل های پایین به بالای تصویر  اونو رفع کرد! ولی متوجه نشدم چرا قابل اعتماد نیست؟ میشه لطفا بیشتر توضیح بدید؟ پیشنهاد شما اینه که از کانتور ها استفاده شه؟ یا ویژگی دیگه ای مد نظرتونه؟!

----------


## مصطفی ساتکی

خدمتتون عرض کردم در حالت های مختلف این ضرایب نمی تونند برای اشکال مختلف feature های تولید کنید که واریانس بین کلاسی این feature ها زیاد باشه یکی همون مورده که شما عرض کردید و در عمل خیلی مشکلات دیگه.
بله از خود کانتور به عنوان feature استفاده شه خیلی عالیه .

----------


## manij_mhm

اون مشکل در اصل مشکل feature نیست مشکل از حروف فارسی 7,8 هست که با چرخش یکی حساب میشن. ممنتم چون نسبت به چرخش حساس نیست مشکل زاویه رو حل میکنه به جز موردی که عرض شد. در واقع این مزیت این سری ویژگی هاست. کانتور در برابر چرخش حساسه؟ اگه حساس باشه باز هم در برابر حروف فارسی همین مشکل رو خواهد داشت. اگر هم نه که باید مشکل زاویه رو به طریق دیگری حل نمود.

----------


## مصطفی ساتکی

نه حساس نیست وقتی تو فاز تشخیص layout شما صفحه را بخش بندی می کنید ماتریس چرخش بدست میاد و این ماتریس چرخش زمانیکه میخاید کانتور را نرمال کنه اعمال می کنه .

----------


## manij_mhm

خوب بازم مشکل رو برای 7و8 داریم. برای حل این مشکل باید چی کار کرد؟

----------


## مصطفی ساتکی

مشکلی نداریم.شما در انتها یک کانتور نرمال شده دارید این کانتورهای به روش های unsupervise کلاستر میشن تو کانتور اصلاً 8 و 7 هیچ شباهتی به هم ندارند معمولاً در فاز train از partial contour کانتور استفاده می کنند.

----------


## manij_mhm

چرا به هم شباهتی ندارند؟! مگه کانتور بر اساس شکل نیست؟

----------


## مصطفی ساتکی

کانتور یعنی توالی از پاره خط ها به صورت پاد ساعتگرد یا به عبارتی دیگه مجموعه از نقاط به همراه گرادیان در هر نقطه این میشه کانتور حالا به صورت مجموعه از پاره خط ها 8 و 7 را تصور کن می بینید که هیچ شباهتی ندارند در ابتدا ذکر کردم که کانتور در ابعاد مشخص نرمال میشه.

----------


## manij_mhm

خوب دقیقا همین. حالت ساده بخوام جمله شما رو بگم کانتور میشه حاشیه حرف یا عدد.  که برای 7و8 فارسی یکیه!! احتملا شما برای انگلیسی می فرمایید. اما در فارسی 7 رو 180 درجه بچرخونیم میشه 8!

----------


## مصطفی ساتکی

یه شکل میزارم شاید راحت تر متوجه شید .هر یک از اعضای کانتور دارای یک نقطه و یک زاویه هستند.
به شکل زیر نگاه کنید.

----------


## manij_mhm

ببینید اگه این دوتا 8و7 رو با هم متفاوت بگیریم یعنی باید بگیم که کانتور چرخش رو تشخیص نمیده!! درسته؟

----------


## مصطفی ساتکی

خطوط قرمز رو می بینی از هر کدو از آنها ویژگی استخراج می کنی هر پاره خط 2 تا نقطه ابتدا و انتها داره نقطه ابتدا ویژگی x,y و زاویه نسبت به سطح  افقش نسبت به نقطه دوم theta میشه ویژگی سوم حالا همه اینها برای این 2 کانتور نرمال شده را استخراج کن ببین شباهتی به هم دارن؟
نیازی نیست کانتور چرخش را تشخیص بده چون کپچا که نیست در ضمن اون کارو هم بخای انجام بدی با همین کانتور هم راه داره یه سری ویژگی rotation invariant استخراج می کنی اونم قابله حله.

----------


## kourepaz

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

----------


## SaeedMK

سلام ببخشید میخواستم بدونم همین برنامه رو با زبون C#‎ و Emgucv داری؟
یا حداقل میتونی به من راهنمایی کنی که من چجوری این کار رو انجام بدم ممنون میشم چون خیلی این رو لازم دارم.
پروژه دانشگاهم تشخیص اعداد 1 تا 9 ممنون میشم به اندازه اینکه فقط بهم بگی از کجا شروع کنم تا کجا ممنون میشم.
در حد الگوریتم ممنون

  :قلب:

----------

