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

## prazvin

سلام 
خسته ناشید 
بچه ها من میخوام یه تصویر رو که شامل یه متن هستش رو به همون متن تبدیل کنم.
مثلا فرض کنید  "prazvin " در قالب یه عکس باشه می خوام بتونم از این عکس رشته "prazvin" رو بدست یارم.

----------


## MEHR4N

این کاری که شما می خواین انجام بدین کار بسیار مشکلیه و کار 1 نفره ای نیست.
در حقیقت یک پروژه ای هست به نام OCR engine  که اسم اصلیه همین کاریه که شما می خواین انجام بدین و گروه های برنامه نویسی مختلفی روش کار کردن و الان هم به صورت open source خیلی جاها قرار دادن.
حتی خود گوگل، سورس این برنامه رو قرار داده.اسم برنامه ای که گوگل روش کار کرده    Tesseract OCR engine هستش که می تونید سورسش رو در Google Code پیدا کنید.

----------


## Alireza_Salehi

بستگی به عکستون داره اگر عکس ساده هستش فونت هم مشخصه و الگوها واضح، بایک کانولوشن ساده همه چیز حله ولی اگر عکس دارای جزئیات زیادی هست و متن هم واضح نیست و فونت هم مشخص نیست باید برید سراغ شبکه عصبی و WAVELET و امثالهم که کار زیادی میبره. 

در زمینه شبکه عصبی به روش Back Propagation کار زیاد انجام شده. (در CodeProject.com بگرد)

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

----------


## mehdad.koulab

سلام همون طور که دوستان گفتند شما میخوای یه OCR بنویسی که برای متون انگلیسی رو تو بازار میتونین پیدا کنین تا اونجایی که من میدونم فقط برای فونتهای کامپیوتری است اونم نه همشون ولی برای فارسی 2 و 3 بار این ادعا شده ولی هنوز هیچ خبری نیست تو سایتم رو این مورد بحث شده اگه سرچ کنین میتونین پیدا کنین

----------


## B-Vedadian

> برای فارسی 2 و 3 بار این ادعا شده ولی هنوز هیچ خبری نیست


سایت www.farsiocr.com رو سربزنید، محصول تجاری آماده داره، بالاخره توسط یه شرکت خصوصی ساخته شد!




> بستگی به عکستون داره اگر عکس ساده هستش فونت هم مشخصه و الگوها واضح، بایک کانولوشن ساده همه چیز حله


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

Tesseract یک برنامه سورس باز و آماده برای این کاربرده که دوستان قبلا بهش اشاره کردند(هر چند سر در آوردن از کدهای قاتی کلی توسعه دهنده کار آسونی نیست!)

----------


## Alireza_Salehi

> سایت www.farsiocr.com رو سربزنید، محصول تجاری آماده داره، بالاخره توسط یه شرکت خصوصی ساخته شد!


 با توجه به این مثال های خیلی ترو تمیزی که در سایتشون گذاشتن و هیچ آماری از عملکرد نرم افزار منتشر نکردن، کارایی این نرم افزار جای تردید داره!
کسانی که شبکه عصبی و پردازش تصویر بلد باشن متون تمیز و چاپی رو به راحتی استخراج می کنند، باید دید در حضور نویز چه طوری عمل میکنه.




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


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

----------


## B-Vedadian

> نیازی به سگمنت و این حرفا نیست


تا اونجايي که من ميدونم - مخصوصا براي انگليسي - نميان زير کلمه به شبکه آموزش بدن. اول حروف کلمات رو جدا مي کنند بعدش شناسايي و بعد از همه اينا اعمال قواعد زباني.

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

چطور بدون سگمنت کردن کلمات به حروف تشکيل دهنده ميشه کلمه رو با کانولوشن شناسايي کرد؟(واقعا برام سؤاله، استفهام انکاري نيست)

----------


## Alireza_Salehi

اصلا بحث کلمه مطرح نبود تا اینجا! درباره حروف من صحبت می کردم (اون هم باشرایط خاص) البته واسه کلمه تا حالا تست نکردم ولی شاید در شرایط خاص بشه، دقت کنید که گفتم در شرایط خاص و منظورم تشریح ساده ترین حالت ممکن بود.
مثلا اگر شما به دنبال 5 یا 6 حرف یا عدد باشید که همبستگی کمی دارند و در تصویر هم فقط همان 5 یا 6 حرف موجود باشد کافیه به ازای هر حرف یک بار الگوی آن حرف را در تصویر کانوالو کنید(در Matlab میشه یک خط) در خروجی این کار تصویری دارید که محل تراکم نقاط محل الگوی شماست.



یک روش میتونه این باشه که کلمه ای آموزش بدین، مقاله ها رو یه کم بررسی کنید اکثرا حرف به حرف تحلیل می کنند نه کلمه ای.بعدش هم همه روش ها که با شبکه عصبی کار نمی کنند!

نظر شخصی من که فکر کنم زیاد هم دور ازواقعیت نباشه اینه که بانک الگو ها به صورت کلمه ای زیاد کارایی نداره، با یک بانک الگوی حرفی نتیجه بهتری حاصل میشه،
 در ضمن تشخیص الگو کلا دو حالته یا آماری یا ساختاری ، همه این روشهایی که بر مبنای محاسبه شباهت و ... هستند آماری در نظر گرفته میشن (که مثلا تا 30~40 پارامتر هم برای مقایسه الگو ها استفاده شده)، در حال حاظر شناسایی ساختاری روش به روز تری هستش به طوری که میشه به تشخیص حروف دست نویس هم تعمیمش داد.

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

----------


## B-Vedadian

پس به سؤال دوستمون توجه نکردی. قراره الگوریتم کلمه یا احتمالا متن شناسایی کنه.




> اکثرا حرف به حرف تحلیل می کنند نه کلمه ای


منم همینو گفتم دیگه! شناسایی مرز کلمات خودش مبحث جدائیه که تو شناسایی حروف لازمه.




> همه روش ها که با شبکه عصبی کار نمی کنند!


این درسته که همه روش ها با شبکه عصبی کار نمیکنند، ولی وقتی مساله شناسایی کلمه از تصویره، اونم کلمه چاپی، گزینه اول شبکه عصبیه. HMM برای کاربردهای online استفاده میشه.

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

----------


## dadvand

من در سایت  ....  یک خبر جدید در مورد OCR فارسی خوندم که یک شرکت تازه نوشته ، اونقدر سروصدا کرده بود که اول فکر کردم برای دست نوشته OCR نوشته ولی وقتی رفتم خوندم نوشته بود برای 12 فونت معروف فارسی . 
 نه عزیزان برا دست نوشته هیچ خبری نیست . برای متن تایپی روی ocr  فارسی هست ولی برای دست نوشته راه طولانی در پیش است .

----------

