تشخیص نوشتار

تغییرات پروژه از تاریخ 1393/11/14 تا حالا

# مقدمه 
تشخیص و شناسایی متن  در  تصاویر یکی از مشکلات تشخیص بصری است[19]
کلمه OCR مخفف کلمات به رسمیت شناختن شخصیت نوری است.این تکنولوژی امکان شناسایی خودکار از طریق یک مکانیزم نوری را به ما می دهد. در مورد انسانها، چشم نقش مکانیزم نوری را ایفا میکند.OCR یک تکنولوژی است که تابعی از قابلیتهای انسان  مانند توانایی انسان ازخواندن را ارائه میکند.اگر چه OCR قادر به رقابت با خواندن انسان نیست.OCR می تواند متنون دست نوشته و چاپ شده را تشخیص دهد،اما عملکرد OCR به طور مستقیم وابسته به کیفیت
اسناد ورودی OCR طراحی شده  برای پردازش تصاویر است.تصاویر به چند دسته تقسیم میشوند که : شامل متن با بسیار کمی درهم و برهمی و غیر متن که  تصاویری گرفته شده توسط دوربین ،موبایل و غیره هستند.نرم افزارهای بسیاری در زمینه شناسایی متن وجود دارد که  تصویر ورودی از طریق یک اسکنر و یا دیجیتال دوربین به کامپیوتر داده می شود.اما اگر شما یک اسکنر و دوربین های دیجیتال در دست راس نداشته باشید، مشکل سخت افزاری رخ می دهد،مثلاً در فضایی استفاده ودسترسی به  کامپیوتر و اسکنر( اشغال فضای بزرگ).حتی به این نتیجه رسیده اند که به منظور غلبه بر محدودیت های کامپیوتر و سخت افزار، سیستم تشخیص متن حتی بر روی تلفن همراه ارائه شود[20].
در میان اطلاعات مختلفی که در تصویر موجود است، اطلاعات متنی از اهمیت ویژ ه ای برخوردار است، چراکه به آسانی از سوی انسان یا حتی رایانه قابل فهم بوده و امکان توصیف محتوای یک تصویر را فراهم می کند. علاوه بر این، از داده های استخراج شده براساس تحلیل اطلاعات متنی موجود در تصاویر می توان کاربردهای متنوعی نام برد که به انسان در تعامل با طبیعت و صنعت کمک می کند.

# عملکرد سامانه نویسه خوان
سامانهٔ نویسه‌خوان مثل یک نفر ماشین نویس یا تایپیست، متن سند را می‌خواند و آن را به قالب مناسب برای ذخیره در رایانه تبدیل می‌کند. معمولاً یک رویشگر، تصویر سند را برای OCR فراهم می‌کند. سامانهٔ نویسه‌خوان، اشیاء موجود در تصویر سند را که ارقام، حروف، علائم و کلمات هستند، بازشناسی کرده و رشته‌ی متناظر با آن‌ها را در قالب مناسب ذخیره می‌کند. یک فایل تصویری، حجم زیادی دارد و جستجوی متنی در آن ممکن نیست. این در حالی است که فایل خروجی سامانهٔ نویسه‌خوان بسیار کم حجم و قابل جستجو است. ضمن اینکه اطلاعات فایل متنی را به راحتی می توان ویرایش کرد و در جای دیگر استفاده کرد در حالی که اطلاعات موجود در تصویر سند قابل ویرایش نیست.
سامانه‌های نویسه‌خوان مثل بسیاری از سامانه های هوشمند دیگر، پیچیدگی زیادی دارد. پردازش تصویر و بازشناسی الگو دو پایهٔ اصلی این سامانه‌ها هستند. پیچیدگی این سامانه‌ها برای زبانهای گوناگون، متفاوت است. به عنوان مثال نوشتن OCR برای زبانهای لاتین به دلیل اینکه حروف آنها به طور مجزا نوشته می‌شود آسانتر است از زبانهایی مثل فارسی و عربی که حروف یک کلمه به یکدیگر می‌چسبند. این موضوع به علاوهٔ جمعیت کم کاربران زبان فارسی، سبب شده سامانه‌های نویسه‌خوان کمی برای زبان فارسی داشته باشیم.


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

# کارهای مرتبط
با استفاده از تحلیل اطلاعات متنی انجام فعالیت هایی نظیر شناسایی پلاک خودروها، تشخیص و ترجمه علائم، جستجوی محتوای تصاویر، واقعه نگاری در دنباله های ویدئویی و شاخص گذاری مبتنی بر متن تصاویر به صورت خودکار امکان پذیر است.

** ژاوو چنگ و تیم آنها روشی [1] را برای تشخیص نوشتار ارایه نمودند**، این روش برای استخراج مناطق دارای بیشترین پایداری به عنوان کاراکتر  کاندید که از استراتژی مینیمم کردن تغیرات و اختلافات منظم [^Regular  Minimum Changes and Disputes Strategy]طراحی شده است.کاراکترهای کاندید شده بوسیله یک الگوریتم خوشه بندی تک لینک[^Single link Clustering Algorithm] به متن های کاندید شده گروه بندی میشوند.
![توضیح تصویر](http://upload7.ir/imgs/2014-11/81967586175100605425.png)

در این روش از الگوریتم  (maximally stable extremal regions (MSER استفاده شده است در لینک پایین یک  برسی از این کار نمایش داده شده[18].

  
** این کار [2]بر اساس یک سیستم مبتنی بر احتمال ساخته شده** .  از یک ردیاب کاراکتر چند مقیاسی[^scale character detector]  مؤثر برای تعیین مکان کاراکترها درون یک تصویر بدون نقطه قطعه‎سازی استفاده شده. این با یک جستجوی مبتنی بر گراف دنبال می‎شود که ردیابی‎ها را به لغات تقسیم‎بندی می‎کند و احتمالات نسبی‎شان را ارزیابی می‎کند .
توصیف گر HOG یک توصیف گر مبتنی بر Patch است که تخمین متراکمی از شکل در یک تصویر کلی فراهم می‎کند با استفاده از هیستوگرام‎های جهت‎گیری‎های گرادیانی کوانتیره شده برای Patch‎های تصویری کوچک. این روش اصالتاً برای ردیابی پیاده‎ها معرفی شد،برای ردیابی کاراکترها از رگرسیون منطقی[^Logistic regression] بر روی بلوک‎هایی از توصیف‎گر HOG استفاده کردند،برای خواندن لغات به طور افقی در امتداد هر خط اسکن می‎کنیم و یک گراف هدایت شده از لغات احتمالی می‎سازیم،وقتی گراف تکمیل شد، می‎توانیم وزن‎های لبه را بر مبنای احتمال ترکیب حروف ظاهر شونده در متن انگلیسی و وزن‎های گره با استفاده از احتمال ردیابی و احتمال اینکه کاراکتر به خط تعلق داشته باشد اختصاص بدهیم. با بدست آوردن لگاریتم احتمال احتمالات پیدا کردن متحمل‎ترین واژه پیمایش گراف با حداقل هزینه می‎شود که می‎تواند با الگوریتم Djpkstra یا A* حل شود، در اشکال زیر مثالی از  رویکرد پیشنهادی نمایش داده شده‌اند:

![توضیح تصویر](http://upload7.ir/imgs/2014-11/75157134949277655497.png)![توضیح تصویر](http://upload7.ir/imgs/2014-11/85064311016107435596.png)

**در این مقاله Adam Coates و  همکاران نشان [3] از داشنگاه Stanford** یک سیستم ردیابی و شناسایی بر مبنای الگوریتم مقیاس‎پذیر یادگیری ویژگی تولید کرده‎اند،بعضی از سیستم‎ها با طرح‎های یادگیری بسیار انعطاف‎پذیر تلاش می‎کنند تمام اطلاعات لازم از داده‎های Lable شده را با حداقل دانش قبلی یاد دهند. مثلاً معماری شبکه عصبی چند لایه برای شناسایی کاراکتر استفاده شده‎اند و رقیب سایر روش‎های پیشتازانه هستند،Setup پایه رابطه نزدیکی با شبکه عصبی کانووله کننده دارد اما به خاطر روش آموزش [^training] آن می‎تواند استفاده شود تا به سرعت مجموعه‎های بسیار بزرگ از ویژگی‎ها را با حداقل تنظیمات بسازد **مراحل** :
1) اعمال یک الگوریتم یادگیری ویژگی‎ بدون نظارت بر روی مجموعه‎ای از Patchهای تصویری برداشت شده از داده‎های  آموزش تا مجموعه‎ای ویژگی‎های تصویری یادگیری شود. 2) ارزیابی ویژگی‎ها به صورت کانوولاسیون بر روی تصاویر  آموزش. کاهش تعداد ویژگی‎ها با استفاده از تجمع فضایی،3) train کردن یک طبقه‎بندی کننده خطی یا برای ردیابی متن یا برای شناسایی کاراکتر. **یادگیری ویژگی**  در اینجا از شکل تغییریافته‎ای از کلاسترینگ K-Mean استفاده می‎کنیم  **مراحل**: (1) جمع‎آوری مجموعه‎ای از تکه‎های تصویری کوچک   از داده‎های آموزشی،
دراین مورد  از تکه‎های سیاه و سفید 8×8 استفاده کردند بنابراین   x(i) ∈R64 
(2) اعمال پیش‎پردازش آماری ساده (مثل سفید کردن) بر روی تکه‎های ورودی جهت دست‎یابی به مجموعه داده‎ای جدید(x(i 
(3) اجرای یک الگوریتم یادگیری بدون نظارت بر   برای نگاشت  [^Mapping ]از Patch های ورودی به بردار ویژگی ((z(i) = f(x(i 
مجموعه‎ای از m تکه‎ تصویری 8×8 پیکسل را استخراج می‎کنیم تا بردارهای پیکسل  x(i) ∈R64,i ∈{1,...,m}   برسیم. هر بردار از نظر روشنی و کنتراست نرمال می‎شود سپس می‎توانیم  ( x˜(i را با استفاده از ZCA روشن کنیم تا ( x(i  را بدست آوریم.پس  به جای یادگیری مرکز ثقل‎های مبتنی بر فاصله اقلیدسی مجموعه‎ای از بردارهای نرمال شده را یاد می‎گیریم .موارد نشان داده شده در شکل 1 مجموعه‎ای از عناصر لغت‎نامه هستند (ستون‎های D) که از این الگوریتم به دست آمده‎اند وقتی‎که بر روی تکه‎های روشن شده استخراج شده از تصاویر کوچک کاراکترها اعمال شدند
![توضیح تصویر](http://upload7.ir/imgs/2014-12/62463129967007182328.png)
هم ردیاب و هم طبقه‎بندی کننده کاراکتر تصویرهای 32×32  برای هر زیر قطعه [^Subpatch ]به ابعاد 8×8 را محاسبه می‎کنیم که d×25×25 بدست می‎آید. بطور رسمی، اجازه می‎دهیم    z ∈Rd نشان‎دهنده یک Patch8 در x واقع در جایگاه j و i درون تصویر ورودی باشد. در این مرحله لازم است ابعاد مدل را قبل از دسته‎بندی کاهش بدهیم.یک روش رایج برای انجام این کار،  تجمع فضایی است، جائیکه پاسخ‎های یک ویژگی‎ را در مکان‎های مختلف به یک ویژگی ادغام می‎کنیم.یک مجموعه آموزشی برای این طبقه‎بندی کننده از طریق استخراج پنجره‎های 32×32 از مجموعه داده‎ای ICDAR 2003 می‎سازیم با استفاده  از باکس‎های محدودکننده تا تصمیم‎بگیریم که آیا پنجره حاوی متن هست یا نه با این روش مجموعه‎ای از 60000 پنجره 32×32 را برای آموزش برداشت می‎کنیم (30000مثبت ،30000منفی) .این بردارهای ویژه و Lable های "حاوی متن" یا "بدون متن" ground truth که از باکس‎های محدودکننده بدست می‎آیند برای آموزش دادن یک SVM خطی استفاده می‎شوند. ما بعداً ازاستخراج  ویژگی های [^feature extractor] مان طبقه‎بندی کننده آموزش داده شده‎مان و برای ردیابی به شکل پنجره لغزنده معمولی استفاده می‎کنیم.برای هر پنجره 32×32 از تصویر محاسبه می‎کنیم. این فرآیند در مقیاس‎های چندگانه انجام می‎شود و سپس برای هر مکان در تصویر اصلی یک معادل امتیازی حداکثر به خروجی طبقه‎بندی کننده که در هر مقیاس بدست آمده اختصاص می‎دهیم.با این مکانیزم هر پیکسل را با یک امتیاز مطابق با اینکه آن پیکسل بخشی از یک بلوک متنی است یا نه Lable می‎کنیم
![توضیح تصویر](http://upload7.ir/imgs/2014-12/89500040457027320872.png)
شکل 3- منحنی‎های دقت – فراخوانی برای ردیاب‎هایی با تعداد متغیر ویژگی‎ها
![توضیح تصویر](http://upload7.ir/imgs/2014-12/35367564135911617725.png)
شکل 4- مثال خروجی‎های طبقه‎بندی کننده ردیابی متن
![توضیح تصویر](http://upload7.ir/imgs/2014-12/50373735205408850967.png)
شکل 5- دقت طبقه‎بندی کاراکتر (62- روش) بر روی مجموعه ICR 2003 به صورت تابعی از تعداد ویژگی‎های یادگیری شده
![توضیح تصویر](http://upload7.ir/imgs/2014-12/82267488163657545270.png)
  
**در این مقاله شیوه های مختلف [5]برای پیدا کردن رشته های حروف** را از عکس های طبیعی بررسی شده است.تکنیک های مختلفی مانند استخراج منطقه رشته حروف از عکس بر اساس کانتور و ضخامت حروف، باینری سازی بهینه، تکنیک های پیشرفته ای که توسط شیوه آنالیز اجزاهای مرتبط انجام می شود
روش اول :Closed Contour:کنتور بسته[^Closed Contour] فرض شده است که حروف یک کانتور بسته می باشند و یک رشته حروف شامل حروفی است که غالبا در امتداد یک خط قرار گرفته اند. بنابراین با استفاده از استخراج کانتورهای بسته و جستجو اطراف آنها مناطق رشته های حروف به دست خواهند آمد 
روش دوم:Image Binarization: باینری سازی تصاویر [^Image Binarization] به خوبی می تواند عکسهای مناظر طبیعی سایه دار، با نور غیر یکنواخت، رنگ پس زمینه پایین و با نویزهای بالا را تحلیل کند. آنالیز اجزای مرتبط جهت تعریف باینری سازی نهایی عکس که غالبا شامل متن نیز می باشند استفاده می شود.
یک تکنیک، کاراکتر متنهای مورد نظر را از اجزای به هم مرتبط با گرادیان شکل و رنگ آنها انتخاب می کند.  قسمت رنگ پایه بهتر از گرادیان عمل می کند اما این شیوه زمان بیشتری را برای شناسایی متن در هر لایه رنگ صرف می کند،شیوه گروه بندی متن در یک خط[^Text Line Grouping] می تواند برای استخراج متن در جهت های مختلفی استفاده شود. ترکیب شیوه های  پارتیشن رنگ پایه[^Color based Partition] و گره حروف مجاور[^Adjacent character grouping]بهترین بازدهی را به ما می دهد
الگوریتم استخراج متن از تصاویر به سه گروه عمده  ویژگی گرادیان پایه[^gradient feature based]و تقسیم بندی رنگ پایه[^color segmentation based]و انالیز بافت پایه [^texture analysis based].   تقسیم بندی می شود. در مقاله اییChucai Yi and YingLi Tian شیوه جدیدی برای استخراج متنهایی که دارای سایز و رنگ متفاوت با پس زمینه پیچیده می باشند مورد استفاده قرار می گیرد. این شیوه پیشنهاد شده شامل دو مرحله می باشد. الف) تقسیم بندی تصویر برای پیدا کردن کاندیدهای حروف متن بر اساس غیر یکنواختی رنگ و گرادیانی که در آنها وجود دارد. در این مرحله 2 روش برای تقسیم بندی تصاویر به نقشه باینری اجزای مرتبط که با هم اشتراکی ندارند وجود دارد: روش مبتنی بر گرادیان و روش مبتنی بر رنگ [^gradient-based method and color-based method] ب)  گروه بندی کاندیدهای حروف برای شناسایی متن براساس ویژگی های ساختاری متن مانند سایز کاراکترها ، فواصل بین آنها  و به خط  بودنشان عمل میکند. در این مرحله نیز دو روش آنالیز ساختاری متن وجود دارد:روش گروه بندی کاراکترمجاور و گروه بندی خطی متن [^adjacent character grouping method and text line grouping] . همچنین در این مقاله الگوریتم بهینه ای که توسط آن می توان تصاویر متن با پس زمینه های پیچیده را بصورت اتوماتیک شناسایی، مکان یابی و استخراج کرد نیز معرفی شده است که بر اساس تکنیک کاهنده رنگ عمل می کند. در همین راستا می خواهیم  الگوریتمهایی که  جهت استخراج متن از تصاویر طبیعی می باشند را برسی کنیم.
1)	**شیوه کانتور بسته**
یکی از مشخصه های رایج حروف در تصاویر واقعی این است که بیشتر آنها میتوانند زمانی که پروسه ایجاد لبه ها بر انها اعمال میشود، یک کاتور بسته را ایجاد کنند. در همین راستا  Tomohiro Nishino  این شیوه را برا شناسایی کانتور های بسته از تصاویر بکار گرفتند. همچنین فرض شده است که رشته های حروف شامل کاراکترهاییی هستند که در یک خط مستقیم قرار گرفته اند. با توجه به این فرضیات رشته های حروف می بایست از مناطق با کانتور بسته که بطور منظمی در کنار هم قرار گرفته اند.Tomohiro Nishino توضیح داد که چگونه کانتورهایی که بصورت افقی کنار هم قرار گرفته اند را شناسایی کرد. ابتدا یک محیط مستطیلی از کانتور بسته محاسبه می شود. سپس این مستطیل توسط برخی از پیکسلها که به اندازه عرض مستطیل می باشند به سمت راست منتقل می شوند.اگرمستطیل شامل کانتور بسته از مرکز محیطی مستطیل دیگری باشد، فرض می شود که این کانتورهای بسته بصورت افقی در کنار هم قرار گرفته اند و شامل رشته های حروف یکسانی می باشند. بنابراین فرض می شود کانتورهای بسته ای که جدا از هم می باشند هیچ ارتباطی با کاراکتر های حروف ندارند. فرض می شود مستطیل های محیطی رشته های حروف،  مناطق این رشته ها باشند. با این پروسه مناطق رشته های افقی در کانتورهای بسته استخراج شده است. هر دو کانتورهای بسته و باز که در سمت چپ و راست مناطق رشته های حروف قرار گرفته اند، استخراج شده و ضخامت هر کدام از انها نیز محاسبه شده است. اگر این کانتورها دارای ضخامت یکسان از کاراکترها در مناطق باشند، به مناطق رشته های حروف افزوده می شوند. 
![توضیح تصویر](http://upload7.ir/imgs/2014-12/42605496894563944843.png)
2)	**آنالیز اجزای مرتبط و باینری کردن تصاویر**
این متد ارائه شده برای شناسایی متن از تصاویز طبیعی بر اساس یک باینری سازی بهینه و تکنیک پیشرفته آنالیز اجزای به هم پیوسته می باشد. فلوچارت این روش در شکل 4 به ان اشاره شده است. با شروع از تصویر، ..... یک تصویر با لایه های خاکستری تولید می کند. سپس این دو تصویر را با استفاده از تکینیک پیشرفته باینری سازی ، باینری می کند. در ادامه تکنیک پیشنهاد شده شامل توابع تصمیم هستند که نشان می دهند کدام تصاویر شامل اطلاعات متنی می باشند
1-باینری سازی تصاویر به خوبی روی تصاویری از طبیعت که دارای سایه نور غیر یکنواخت، کنتراست پایین و نویزهای وابسته به سیگنال بزرگ هستند، پیاده سازی می شود. آنالیز اجزای به هم پیوسته برای تعریف تصویر باینری سازی شده نهایی که مشخصا دارای متن می باشد، مورد استفاده قرار میگیرد.
2-	این روش ارائه شده، موفقیتهای زیادی برای موتورهای OCR به همراه داشته و نرخ موفقیت آنها در شناسایی متن را افزایش داده است. 

![توضیح تصویر](http://upload7.ir/imgs/2014-12/05427173779840247249.png)
3)	.گروه بندی و تقسیم ساختار پایه
![توضیح تصویر](http://upload7.ir/imgs/2014-12/90723063195815801294.png)
4)	.شیوه شناسایی مرز در تصاویر و تکنیک کاهنده رنگ [^Color Reduction Technique]و [^Boundary detection method] .
 در روش ﻫﺎی ﺑﺮ ﭘﺎﯾﻪ رﻧﮓ، از اﻃﻼﻋﺎت ﺳﻄﺢ ﺧﺎﮐﺴﺘﺮی ﯾﺎ رﻧگی دریک ﻧﺎﺣﯿﻪ ﻣﺘﻦ و ﯾﺎ اﺧﺘﻼف آن ﺑﺎ زﻣﯿﻨﻪ اﺳﺘﻔﺎده میﺷﻮد 


** کیفیت تصویر موجب می شود که دوسطحی سازی مناسب تر  و کاراکترها با خطای کمتری شناسایی شوند[7].**.در این روش بیان شده که ابتدا فیلتر وینر برای افزایش کارایی عملیات مورفولوژی  مورد استفاده قرار گرفته است.با استفاده از عملگرهای مورفولوژی تقریبی از زمینه محاسبه شده و زمینه بدست آمده از تصویر اصلی حذف می شود .واز فیلتر وینر و unsharp mask برای از بین بردن نویز باقی مانده استفاده می شود.
تعریفی خلاصه از مورفولوژی یا پردارش تصویر مورفولوژیکال:مدلی ریاضیاتی مبتنی بر نظریه شبکه‌ای، مورد استفاده در پردازش تصویر دیجیتال که از مجموعه ایی عملیات غیر خطی وابسته به شکل و یا ویژگی های ریخت شناسی تصویر بهره می برد.طبق گفته ویکیپدیا  عملیات مورفولوژیکال تنها با تکیه بر مرتب سازی مقادیر پیکسل ها ،نه بر مقادیر عددی آنها بلکه به دلیل مقادیر ویژه مناسب پردازش از تصاویر باینری و همچنین توانایی اضافه کردن تصاویر از قبیل تصاویر با وضوح پایین را دارد.
[**پیوند مفید**](https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/ImageProcessing-html/topic4.htm)
از کاربردهای بهبود کیفیت میتوان  به ایجاد نسخه تصویری از اسناد تاریخی و متون قدیمی  اشاره کرد  و همچنین در حوزه سیستم های خودکار که ورودی  آنها تصاویر متن می باشند مثال زد:مانند سیستم های دسته بندی محصولات  بر اساس بارکد حک شده بر روی آنها ،سیستم های خودکار خواندن چک های بانکی و غیره....
در این مقاله گفته شده  ابتدا تصویر منفی  تصویر اصلی محاسبه و توسط فیلتر وینر پردازش می شود 
فیلتر وینر:یک فیلتر پایین گذر خطی  که مقدار پیکسل خروجی را  بر اساس ویژگیهای آماری همسایگی  یک پیکسل  مانند میانگین وانحراف معیار  منطبق  محاسبه می نماید. که اثر آن بر روی تصویر مانند سایر فیلترهای پایین گذر[^low-pass] آرام کردن تصویر است،سپس خروجی فیلتر شده با استفاده از عملگر   «morphology opening با توجه به شکل و اندازه همسایگی تعریف شده برای آن  متن را از زمینه جدا میکند و نتیجه برای از بین رفتن نویز بار دیگر توسط فیلتر وینر پردازش می شود.برای  افزایش تمایز  تابع گاما انتخاب شده که مقدار کوچکتر از 1 باعث روشنایی بیشتر و بزرگتر از 1 تیرگی بیشتری را اعمال می کند.برای از بین رفتن تصاویر پشت صفحه که به صورت مات و آرام هستند از فیلتر بالا گذر[^High-pass]به نام  unsharp mask استفاده نموده اند که یک سری از نتایج در اشکال ذیل نمایش داده شده است.
![توضیح تصویر](http://upload7.ir/imgs/2014-12/94127239455351450121.png)
![توضیح تصویر](http://upload7.ir/imgs/2014-12/33582449164382112143.png)

**در این مقاله گفته شده که از ترکیب  روش های[8] رزولیشن بالا و پایین جهت قطعه بندی صفحات مستندات فارسی استفاده میکنند**،قطعه بندی صفحات به سه دسته تقسیم بندی می شود 1- پایین به بالا  :شناسایی کلمات متن از مولفه های همبند شروع شده و پس از ادغام به کلمات به خطوط متنی آنها را به پاراگراف ادغام میکند.2-بالا به پایین: این روش  با دید کلی به  پردازش تصویر می پردازد و با کمک مشخات عمومی  صفحه شامل نوارهای سیاه و سفید صفحه را به ستون ها،ستون هارا  به بلوک ،وبلوک هه را به خطوط متنی و درنهایت به کلمات قطعه بندی تبدیل میکند.با توجه به مشخصات و ویژگی های متون فارسی از روش ترکیبی در این مقاله استفاده شده است.ابتدا  پیکسل های تصویرداخل مولفه های همبند قرار داده اند ومولفه ها را داخل مستطیل محاط قرا ر داده ،با استفاده از  خطوط  متنی گرافیکی [^Graphical text lines]به نام ((6GTLs) مستطیل های محاط را ادغام و سپس آنها را داخل  بلوک های ناحیه [^Block area]قطعه بندی کرده اند. 

![توضیح تصویر](http://upload7.ir/imgs/2014-12/38589145308039806170.png)
فاصله بین  دو مستطیل احاطه کننده کلمات  توسط simon برای کلاس بندی و خوشه بندی مولفه ها پیشنهاد شد.[10]. . ﻓﺎﺻﻠﻪ ﻣﻴﺎن ﻫﺮ دو ﻣﺆ ﻟﻔﻪ   Cj وCi ﻫﻤﺒﻨﺪ  ﻳﺎ دو Object ،Oj Oi  ﺑﻪ ﻋﻨﻮان ﻓﺎﺻﻠﻪ ﻣﻴﺎن ، ﻣﺴﺘﻄﻴﻞ ﻫﺎی ﻣﺤﺎﻃﺸﺎن در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ .به صورت شکل ذیل:
![توضیح تصویر](http://upload7.ir/imgs/2014-12/32813755651466130452.png)
در این مقاله بیان کردند که با ادغام عمودی و افقی ﻣﺴﺘﻄﻴﻞ ﻫﺎی ﻣﺤﺎﻃ   ﺑﺮای ﻣﺠﻤﻮﻋﻪ ﻣﻌﻴﻦ ﻣﺆﻟﻔ ﻪ ﻫﺎی ﻫﻤﺒﻨﺪ [^Components of connective]،که به صورت عمودی و افقی به هم نزدیک و در لیست های پیوندی ذخیره  شده اند طبق الگوریتم های ذیل به خطوط متنی گرافیکی عمل می شود .
![توضیح تصویر](http://upload7.ir/imgs/2014-12/92182382838582420573.png)
![توضیح تصویر](http://upload7.ir/imgs/2014-12/34314069375908868317.png)
در این مقاله عنوان شده که از ساختار هرمی برای برای آنالیز چندرزولیشنی [^Multi-resolution analysis]استفاده می گردد.در مقاله شماره [11]و [12] به طور مفصل این ایده توضیح داده شده که ﺳﺎﺧﺘﺎر ﺗﺼﻮﻳﺮ ﻫﺮﻣﻲ ﻳﻚ ﺳﺎﺧﺘﺎر ﺳﺎده و ﻗﻮی ﺑﺮای ﻧﻤﺎﻳﺶ ﺗﺼﺎوﻳﺮ در ﭼﻨﺪ رزوﻟﻮﺷﻦ ﻣﺨﺘﻠﻒ ﻣﻲباشد در اﺑﺘﺪا اﻳﻦ   ﺳﺎﺧﺘﺎر ﺗﻮﺳﻂ Burt   Adelsonدر ﺳﺎل ١٩٨٣    ﺑﺮای ﻛﺎرﺑﺮدﻫﺎی ﺑﻴﻨﺎﻳﻲ ﻣﺎﺷﻴﻦ [^Machine Vision]و ﻓﺸﺮده ﺳﺎزی اراﺋﻪ ﮔﺮدﻳﺪ   .  که این روش مختصراً دراینجا اینگونه  بیان شده:   . ﻳﻚ ﺗﺼﻮﻳﺮ ﻫﺮﻣﻲ از ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺗﺼﺎوﻳﺮ ﺗ ﺸﻜﻴﻞ ﺷﺪه اﺳﺖ ﻛﻪ ﺑﻪ ﺻﻮرت ﺷﻜﻞ ﻫﺮم، رزوﻟﻮﺷﻦ و اﻧﺪازه آن ﻛﺎﻫﺶ  ﻣﻲ ﻳﺎﺑﺪ   .  ﺷﻜﻞ(٣) ﺗﺼﺎوﻳﺮ ﻫﺮﻣﻲ را ﻧﺸﺎن ﻣﻲ دﻫﺪ، در اﻳﻦ دﻳﺎﮔﺮام ﺑﺎﻳﺪ ﻫﺮم ﺷﺎﻣﻞ ﺗﺼﻮﻳﺮ اﺻﻠﻲ در رزوﻟﻮﺷﻦ ﺑﺎﻻ و ﻗﻠﻪ ﻫﺮم ﺗﺼﻮﻳﺮ ﺗﻘﺮﻳﺒﻲ در رزوﻟﻮﺷﻦ ﭘﺎیین می ﺑﺎﺷﺪ  . ﺑﺎ ﺣﺮﻛﺖ ﺑﻪ ﺳﻤﺖ ﺑﺎﻻی ﻫﺮم اﻧﺪازه و رزوﻟﻮﺷﻦ ﺗﺼﺎوﻳ ﺮ ﻛﺎﻫﺶ میﻳﺎﺑﺪ    . ﺗﺼﻮﻳﺮ ﻫﺮمی ﺑﻪ اﻳﻦ ﺻﻮرت ﺳﺎﺧﺘﻪ می ﺷﻮد ﻛﻪ رزوﻟﻮﺷﻦ ﺗﺼﻮﻳﺮ ﺑﺎ اﻧﺪازه M ×  N   ﺑﻪ ﻳﻚ ﭼﻬﺎرم ﺑﻪ ﻃﻮر پی در پی ﻛﺎﻫﺶ می ﻳﺎﺑﺪ ﺗﺎ زﻣﺎﻧﻴﻜﻪ اﻧﺪازه اش ﺑﺰرﮔﺘﺮ از ′M′ ×  N  اﺳﺖ بطﻮرﻳﻜﻪ ′  N و ﻳﺎ ′M   ﻛﻤﺘﺮ از ١٠٠  ﻣﻲ  ﺑﺎﺷﺪ.
![توضیح تصویر](http://upload7.ir/imgs/2014-12/28977442360089467954.png)

![توضیح تصویر](http://upload7.ir/imgs/2014-12/70420137046811011933.png)
با توجه به تصویر بالا برای بدست آوردن تصویر هرمی ابتدا  تصویر به دو قسمت با استفاده از ستونهای  زوج و فرد تجزیه شده و تصویر سوم از OR منطقی این دو تشکیل می شود.و سپس تصویر سوم نیز به همین روش به دو قسمت تقسیم و  دوباره از OR منطقی این دو تصویر پنجم تشکیل می شود.بنابراین تعداد پیکسل ها در تصویر پنجم یک چهارم تصویر اول است.
در این مقاله روش  قطعه بندی به شکل الگوریتم ذیل:
![توضیح تصویر](http://upload7.ir/imgs/2014-12/48486127981640931028.png)
همنطور که در ابتدا توضیح داده شد ﻗﻄﻌﻪ ﺑﻨﺪی ﺻﻔﺤﻪ در روش رزوﻟﻮﺷﻦ  ﭘﺎﺋﻴﻦ وبالا انجام می پذیرد،سطوح  روش رزوﻟﻮﺷﻦ  ﭘﺎیین هرمی به N ناحیه مجزا قطعه بندی می شود سپس مستطیل های محاط(کوچکترین مستطیلی که محدوده را مشخص می کند)  پس از  فراهم نمودن و  آنالیز مولفه های همبند  با توجه به ساختار هرمی  رزوﻟﻮﺷﻦ  ﭘﺎیین محاسبه می شود.به صورت شکل ذیل:
![توضیح تصویر](http://upload7.ir/imgs/2014-12/25442921798888401102.png)

** دراین مقاله روشی[9] برای استخراج متون از تصاویر با استفاده از اپراتور لبه یاب کنی**[^canny] ارایه کردند،به این صورت که ابتدا یک پردازش اولیه بر روی تصویر ورودی انجام می شود(پیش پردازش:پردازش سطح پایین بر روی تصویر که موجب ﺑﺮﺟﺴﺘﻪ شدن ﭘﺮدازش ﻫﺎی ﺑﻌﺪی  و ﺣﺬف ﻋﻮاﻣﻞ ﻣﺰاﺣﻢ میﮔﺮدد . اﻓﺰاﯾﺶ ﮐﻨﺘﺮاﺳﺖ، ﺗﻌﺪﯾﻞ ﻫﯿﺴﺘﻮﮔﺮام، ﺣﺬف ﻧﻮﯾﺰ و...، ﻣﺜﺎل ﻫﺎﯾﯽ از ﻋﻤﻠﯿﺎت ﭘﯿﺶ ﭘﺮدازش ﺑﺮ روی یک ﺗﺼـﻮﯾﺮ اﺳـت) و اپراتور لبه یاب ﮐﻨـی را ﺑـﺮ ﺳـﻪ ﮐﺎﻧـﺎل ﻣﺨﺘﻠـﻒ ﺗﺼـﻮﯾﺮ رﻧﮕـی اﻋﻤــﺎل ﮐــﺮده (R G B)و ﺑــﺎ ﺗﺮﮐﯿــﺐ ﺳــﻪ ﺗﺼــﻮﯾﺮ ﻟﺒــﻪ ﺣﺎﺻــﻞ و ﻋﻤﻠﯿــﺎت ﻣﻮرﻓﻮﻟﻮژی ﺑﺮ روی آن، ﺑﻪ ﺣﺬف ﻟﺒﻪ ﻫـﺎی ﺿـﻌﯿﻒ ﭘـﺮداخته اند . درﻧﻬﺎﯾﺖ ﺑﺎ اﻋﻤﺎل وﯾﮋﮔ ﻫـﺎی ﻫﻨﺪﺳـی، ﻧـﻮاحی ﻏﯿـﺮﻣﺘﻦ ﺣـﺬف ﺷﺪه و ﻧﻮاحی ﮐﺎﻧﺪﯾﺪ ﻣﺘﻦ از زﻣﯿﻨﻪ آن اﺳﺘﺨﺮاج می ﮔﺮدﻧﺪ.
![توضیح تصویر](http://upload7.ir/imgs/2014-12/48691267540482653601.png)
سپس برای تشخیص لبه ( ﻣﺮز ﻣﯿﺎن یک  شیء  و زﻣﯿﻨﻪ ﯾﺎ ﻣﺮز ﻣﯿﺎن اﺷﯿﺎء ﻫﻢ پوشان) از اپراتور لبه یاب canny استفاده شده.تصویر باینری حاصله از حذف نویز و ترکیب لبه های کشف شده می باشد.در این مرحله نوبت حذف اجزای غیر متنی و پس زمینه است اینگونه بیان کردند:( اﮔـﺮ ﻧﺴـﺒﺖ ﻣﺴـﺎﺣﺖ  ﺑﺰرﮔﺘﺮﯾﻦ ﻧﺎﺣﯿﻪ  ﺑﻪ ﻣﺴﺎﺣﺖ ﻧﺎﺣﯿﻪ ﻣﻮرد ﻧﻈـﺮ از ٢٠ ﺑﯿﺸـﺘﺮ و ﯾـﺎ ﻧﺴﺒﺖ ﻃﻮل ﺑﻪ ﻋﺮض آن از ۵  ﺑﯿﺸﺘﺮ ﺑﺎﺷﺪ، آن ﻧﺎﺣﯿﻪ ﺑﻪ ﻋﻨﻮان ﻏﯿﺮ ﻣﺘﻦ از ﺗﺼﻮﯾﺮ ﺣﺬف میﺷﻮد .ﻋﻼوه ﺑﺮاﯾﻦ، اﮔﺮ ﻧﺴﺒﺖ ﻣﺴـﺎﺣﺖ ﮐﻞ ﺗﺼﻮﯾﺮ ﺑﻪ ﻣﺴﺎﺣﺖ ﺟﺰء ﻣﺘﺼﻞ از٣ ﮐﻤﺘﺮ و ﯾﺎ از ٠٠۴ ﺑﯿﺸﺘﺮ ﺑﺎﺷد ،  آن ﺟﺰء ﻣﺘﺼﻞ ﺑﻪ ﻋﻨﻮان ﺟﺰءی از ﭘـﺲ زﻣﯿﻨـﻪ ﺗﻠﻘـی ﺷـﺪه و ﮐﻨﺎرﮔﺬاﺷـﺘﻪ میﺷــﻮد ﺑﺎﺗﻮﺟــﻪ ﺑــﻪ ﺳــﺎﺧﺘﺎر ﻣﺘــﻮن ﻓﺎرﺳــی ﺗﻌــﺪاد ﺣﻔﺮه ﻫﺎی ﻣﻮﺟﻮد در ﻫﺮ ﺟﺰء ﻣﺘﺼﻞ ﻧﯿﺰ، ﻧﺒﺎﯾﺪ از ٣ ﺗﺠـﺎوز ﮐﻨـﺪ، در ﻏﯿـﺮ اﯾﻨﺼــﻮرت اﯾــﻦ ﻧﺎﺣﯿـﻪ دور رﯾﺨﺘــﻪ میﺷــﻮد ، ﺗﺼﻮﯾﺮ ﺑﺎﯾﻨﺮی ﺷﺎﻣﻞ ﻣﺘﻮن ﺳﯿﺎه در زﻣﯿﻨﻪ ﺳﻔﯿﺪ ﺧﻮاﻫﺪﺑﻮد  ) 

![توضیح تصویر](http://upload7.ir/imgs/2014-12/56076025687569718637.png)
 ﻣﺘﻮن اﺳﺘﺨﺮاج ﺷﺪه از ﺗﺼﻮﯾﺮ دوباره ﺑﺎزﺷﻨﺎﺳــی می گردند،  ﻧــﻮاحی  اﺳــﺘﺨﺮاج ﺷــﺪه ﺑــﻪ ﻋﻨــﻮان ﮐﺎﻧﺪﯾـﺪاﻫﺎی  ﻣــﺘﻦ، ﺑﻄــﻮر ﻣﺤﻠـی ﭘﺲ ﭘــﺮدازش می ﺷــﻮﻧﺪ ﺑﻨــﺎﺑﺮاﯾﻦ، ﻧﻮاحی  ﮐﺎﻧﺪﯾﺪ ﻧﻬﺎﯾﯽ ﺣﺎﺻـﻞ از ﻣﺮاﺣـﻞ ﻗﺒـﻞ ﺑﻄـﻮر ﻣﺠـﺰاﻃـی ﺗﮑﻨﯿک ﭘﯿﺸﻨﻬﺎدی ﻣﺠـﺪدا ً ﻣـﻮرد ﭘـﺮدازش ﻗـﺮار میگیرند.
![توضیح تصویر](http://upload7.ir/imgs/2014-12/42737485358129675161.png)
# آزمایش‌ها
پیاده سازی شماره 1
این پیاده سازی نشان می دهد که چگونه  با کمک  Matlab از  قابلیت های جعبه ابزار پردازش تصویر  برای تشخیص یک واژه یا مجموعه ای از واژگان یا اعداد در روی تصویر استفاده کنید.
از هم­بستگی[^correlation] برای مشخص کردن قطعه بندی حرف ورودی با قالب استفاده می شود. اندازه ی فونت باید بزرگتر یا مساوی 24 ˟ 42 پیکسل باشد، به طوری که با اندازه ی workforce یکی باشد.
فناوری OCR، به سیستم های playback از سیستم های اسکن و تصویربرداری، این توانایی را می دهد که تصاویر کاراکترهای چاپی را به کاراکترهایی تبدیل کنند که کامپیوتر بتواند آن ها را تفسیر کرده یا تشخیص دهد. بنابراین، تصاویر کاراکترهای چاپی از یک تصویر bitmap دوباره تولید شده توسط اسکنر،
استخراج می شوند [14].
این فرایند شامل چندین جنبه مانند قطعه بندی، استخراج ویژگی و طبقه بندی است [3]،[15]

جعبه ابزار پردازش تصویر Matlab مجموعه ای از توابع است که توانایی های محصول را برای توسعه ی اپلیکشین و الگوریتم های جدید در زمینه ی پردازش تصویر و تحلیل، گسترش می دهد. محیط ریاضیاتی و تولید Matlab برای پردازش تصویر ایده ال است زیرا این تصاویر در واقع ماتریس هستند. این جعبه ابزار شامل توابعی برای:
·طراحی فیلتر
·بهبود و روتوش تصاویر
·تحلیل و آمار تصاویر
·عملیات مورفولوژیکی و هندسه ی رنگی
·تبدیلات دوبعدی.
پردازش تصویر اردوگاه کاری است که کاملا برای گروه ها و صنعت هایی ضروری است که در زمینه هایی مانند تشخیص پزشگی، نجوم، ژئوفیزیک، علوم محیطی، تحلیل داده ها در آزمایشگاه ها، بازرسی صنعتی و مانند آن کار می کنند [16].

**قطعه بندی** :
در اولین گام، تصویر crop می شود تا با متن هم اندازه گردد. سپس به صورت خط به خط جدا می شود. تابعی که عمل crop کردن تصویر را انجام می دهد، در زیر نشان داده شده است:
![توضیح تصویر](http://upload7.ir/uploads//6bd37d5ca30e157821ff75fb67318d190d96aad7.png)
 شکل زیر نشان می دهد که این ویژگی چگونه کار می کند:
 ![توضیح تصویر](http://upload7.ir/uploads//76f49ffd5a26588050abb99abe5d413bc78bff56.png)
همان طور که در تابع نشان داده شده است، مقدار حد آستانه برای تبدیل تصویر باینری برابر 0.99 است. (image= im2bw (image, 0.99)). این حد آستانه برای این است که رنگ های با مقادیر RGB نزدیک به 255 (ماکزیمم)، در تصویر باینریصفر در نظر گرفته شوند.
وقتی تصویر مرتب شد، گام بعدی جدا کردن هر خط است. برایاین کار تابع زیر استفاده می شود:
![توضیح تصویر](http://upload7.ir/uploads//4decb66d0dd10beb25ddf219554d7d950c9f54cc.png)
شکل زیر نشان می دهد که این ویژگی چگونه کار می کند:
![توضیح تصویر](http://upload7.ir/uploads//63e22eae9fa5c7fd077845efef1e80b27884822a.png)
وقتی هر یک از خطوط تصویر جدا شد، لازم است هر حرف از ماتریس fl تصویر حذف گردد. برای این تابع bwlabel استفاده می شود که مولفه های همبند تصویر را برچسب گذاری می کند. به بیان دیگر، این تابع خطوط و فهرست های حجمی دارد. برای جداسازی هر حرف، کد زیرا به کار می رود:
![توضیح تصویر](http://upload7.ir/uploads//ac4f65ed51b970449d0f25c41f9204a8abdd2fe1.png)
سپس هر حرف نرمال سازی می شود تا به اندازه ی 24˟ 42 پیکسل در بیاید که همان اندازه ی قالبی است که هم­بستگی را اجرا خواهد کرد. تابع زیر برای نرمال سازی استفاده می شود:
![توضیح تصویر](http://upload7.ir/uploads//c16c4a4b845e8718754e5ebc707cc9ad60acfc4c.png)
**طبقه بندی**:
عمل اصلی استفاده شده، طبقه بندی هم بستگی دوبعدی بود. این عمل، مقداری برای شباهت بین دو ماتریس (تصاویر) ارائه می کند. تابع corr2 این عمل را با استفاده از معادله ی [4] انجام می دهد:
![توضیح تصویر](http://upload7.ir/uploads//d36ae34d781b7e6af1f3af618216d049a71223a9.png)
تابع زیر هم­بستگی را بین قالب های استخراج شده و هر حرف انجام می دهد:
![توضیح تصویر](http://upload7.ir/uploads//23e674c79110e4a6440300cdc67de3b13c04fd39.png)
**قالب ها**:
هر قالب یک تصویر باینری با اندازه ی 24 ˟ 42 پیکسل است. ذخیره ی قالب ها در یک ساختار سلول به ترتیب زیر است:
![توضیح تصویر](http://upload7.ir/uploads//d4faa010c9a114d8b3f08254868148bc62394720.png)
**برنامه ی اصلی**:
برنامه ی اصلی در زیر نشان داده شده است:
![توضیح تصویر](http://upload7.ir/uploads//951ed131097b7cc07517bff17c5f16d699ed3aa9.png)
**برنامه ی تست**:
پس از آن که برنامه پایان یافت، در هنگام اجرای توابع tic  toc در ابتدا و انتهای کد،می­توانند برای اندازه ­گیری زمان پاسخ­گویی استفاده شوند. وقتی که اجرا به پایان رسید، یک فایل متنی حاوی کلمات تصویر،ظاهر خواهد شد.
![توضیح تصویر](http://upload7.ir/uploads//8030d191aae6c8b7390ad282d1469a05466fa8f5.png)بر روی صفحه ­ی اسکن شده ­ای با وضوح 200 DPI و روشنی 128 (پارامترهای پیش ­فرض اسکنر) که حاوی چندین کلمه­ ی دست­ نوشته و چندین عدد است،تست دیگری انجام گرفت. نمونه در شکل ذیل نشان داده می­شود:
![توضیح تصویر](http://upload7.ir/uploads//c59d67e4d8891d0900a901ef170bd1f67b98493a.png)
در هنگام اسکن کردن تصویری، نویزهایی (نقاط سیاهی) بر روی آن یافت می­شوند. راه ­حل آن، پیاده ­سازی  یک فیلتردر ابتدای کد برای حذف این نویزهااست.
![توضیح تصویر](http://upload7.ir/uploads//ecb087679b9eb99d963f51b5e6acadbc1d471c7a.png)
شکل­های ذیل، متن خروجی را نمایش می­دهند:

![توضیح تصویر](http://upload7.ir/uploads//5b67794370f6fff9794ad3dd391f064959968a7d.png)![توضیح تصویر](http://upload7.ir/uploads//a6a0d88b410357504d481c5834d65d5b2a60ce5e.png)
![توضیح تصویر](http://upload7.ir/uploads//68630d6926b81bed0638c57f9c847ae1be3108b9.png)
![توضیح تصویر](http://upload7.ir/uploads//846191bf4680a55c90b14139dcd98bca82bc47d1.png)
![توضیح تصویر](http://upload7.ir/uploads//d2979d3b208f1a856b20506a14e89e2a6d63d1df.png)
![توضیح تصویر](http://upload7.ir/uploads//fc4ab9e8bf2180a5f08081a8e1a23c7d24cf3895.png)
![توضیح تصویر](http://upload7.ir/uploads//955a4142e818074f07211eec01d3acf87734cbec.png)
![توضیح تصویر](http://upload7.ir/uploads//6a872dc1943d13dcb570388d9b07f3575e073666.png)
![توضیح تصویر](http://upload7.ir/uploads//e27ffb2c7cfa0ecbc00daf2d69c487d7fec324e3.png)
![توضیح تصویر](http://upload7.ir/uploads//dc70c7bff992652d775a6fb1ac22f29cd5b49761.png)
![توضیح تصویر](http://upload7.ir/uploads//58ccc10a2d98e8e68821b69123f0183b1fbdfd1d.png)
![توضیح تصویر](http://upload7.ir/uploads//54b5286fb9bd626f5e592a9d6264cc4ebf6b004b.png)
می­توان نتیجه­ گیری کرد ،انحنای کوچکی که در سه تا هفت وجود دارد مخصوصا در هفت آخر، و همچنین در حرف I و حروف کوچک نیز باعث شده آنها به طور صحیح شناسایی نشوند و در شناسایی شون خطا رخ بدهد
**معیارهای کد**:
درMatlab دو ابزار وجود دارد که به بهبود کد کمک می کند. یکی از آن ها پروفایل[^profile] است که زمان اجرای هر تابع را محاسبه نموده و متغیرهایی را نشان می دهد که می توانند به سرعت کد کمک کنند.
ابزار دوم متریک کد است، برنامه ای که در MathWorks File Exchangeموجود است[17]. 
این برنامه مشخص می کند که آیا نام های توابعی که به کار می بریم، با توابع تعریف شده در مسیر Matlab تداخل دارند یا خیر، معیاری برای پیچیدگی برنامه (پیچیدگی سیکلوماتیک) و پیشنهاداتی برای اندازه­ گیری پیچیدگی برنامه و روش­های بسیاری برای بهبود کارایی برنامه تعیین می­کند.نتیجه ی اعمال متریک ها به کد OCR بدین ترتیب است:

**نتیجه گیری:**
·اندازه ی فونت نباید کمتر از 24 ˟ 42 پیکسل باشد.
·تصویر ورودی می تواند حروف رنگی باشد یا خیر.
·اگر نویز تصویر زیاد باشد می توان از تابع medfilt2 استفاده کرد و تابع imcrop برای crop کردن تصویر لازم است.
·اگر اندازه ی فونت کوچک باشد، از imdilat استفاده کنید تا ضخامت آن را قبل از پیش رفتن برنامه زیاد نمایید.
·برای متن با حروف کوچک، وابستگی کمتری به برنامه ی اصلی متغیر واژه به کار می رود.
·زمان پردازش متن آزمایشی شکل 6: >> tic; OCR; toc زمان سپری شده 3.806446 ثانیه است. با این وجود، روی یک PC با یک گیگابایت RAM، زمان پردازش 2.4 ثانیه بود.
·اگر staff، 20 ˟ 20 پیکسل باشد، زمان پردازش کاهش می یابد.
همچنین شما می توانید کدها و نمونه ها را از [اینجا](http://upload7.ir/download/54be3dae713ed/OCR.rar)دریافت نمایید.

**بهبود نتایج**:
در این بخش ابتدا به معرفی مجموعه دادگان مورد استفاده می‌پردازم. سپس کد ایجاد شده برای خواندن  متن  توضیح داده می‌شود. در آخر نیز نتایج گزارش ارائه خواهند شد.
**مجموعه دادگان**: در این پروژه از مجموعه دادگان (ارقام دستویس) استفاده شده است. این داده‌ها از طریق [سایت](http://yann.lecun.com/exdb/mnist/)قابل دسترس است(لازم به ذکر است این مجموعه برای تشخیص اعداد بکار میروند)
در این پایگاه داده 60000 داده آموزشی وجود دارد که برای هر یک از اعداد صفر تا نه 6000 نمونه وجود دارد. همچنین، 20000 نمونه برای تست وجود دارد که برای هر کدام از اعداد صفر تا نه، 2000 نمونه وجود دارد.
 با توجه به اینکه در کد قبلی نمونه های مختلف تست شدند و بر روی نمونه هایی با ضخامت (اندازه ی فونت ) 24 ˟ 42 پیکسل بودند و حروف کوچک نیز در مجموعه حروف آموزشی نبودند لذا تلاش شده فرآیند  بهبود به سه بخش تقسیم بندی شوند
   
**مرحله اول**
در این مرحله ابتدا مجموعه ایی از حروف را که شامل تمامی حروف کوچک و بزرگ انگلیسی است را از طریق[لینک](http://www.boyter.org/wp-content/uploads/2013/07/training.zip) دانلود و  آنها را در فولدری با نام training  در پوشه جاری قرار دادم که داخل آن عکسهای سایز 20*20 حروف کوچک و بزرگ قرار دارد.با اجرای کد create_templates_v3 یک فایل بنام templates.mat در پوشه جاری ایجاد خواهد شد که حاوی اطلاعات فونتهای جدید (سایز 20*20 ) بعلاوه فونتهایی که قبلا  با سایز 24*42 بود(letters_numbers) ، می باشد
قسمت اول برنامه که در کد قبلی عکس را دریافت و خروجی را در یک فایل متنی قرار میداد در این بخش با اجرای دستور OCR_v3 عکس مورد نظر را دریافت و با توجه به اینکه کد read_letter_v3 هم جهت برداشت تک تک حروف و اعداد برای فونتهای جدید تغییر کرده است.تصویر را مورد برسی و خروجی را با دقت 86٪ تشخیص داده و خروجی را اعلام میکند
![توضیح تصویر](http://upload7.ir/uploads//9b1bf3bac7db2e7e593650c7007d9fd323e3352a.png)
**مرحله دوم**
در این مرحله روش کار را به این ترتیب در نظر گرفته ام که ُ بطور مثال 5 عکس مشابه را که نویزی بودند در فولدر 100sampels قرار دادم که در کنار آنها باید متن صحیحی که داخل هر تصویر است باید قرار گیرد (بعنوان لیبل و برای محاسبه خطای استخراج الگوریتم OCR ).نکته اینجا این است که باید در کنار آنها فایل لیبل حتما قرار دهید که در زیر یک نمونه از آن را ارائه مینمایم.سپس با اجرای دستور main_100 صبر کنید تا OCR همه تصاویر تمام شود. در پایان یک فایل text.txt حاوی اطلاعات  (اسم فایل و مقدار استخراج شده و خطا) در فولدر جاری ذخیره خواهد شد:
نحوه قرار دادن تصاویر و لیبل آنها در فولدر 100sampels :
![توضیح تصویر](http://upload7.ir/uploads//9c00fecb2eab754dbc4024ce538d34019dcece6a.png)
خروجی تولید شده:
![توضیح تصویر](http://upload7.ir/uploads//ce22d82991bc42bb55256e99385e64d895533a3b.png)
نکته قابل توجه این است که تصاوی که به برنامه داده می شود باید شامل  حروفی  که در داخل template  قرار داده شده است باشد(از نقطه نظر رنگ سایز وفونت) و یا تصاویر از خود آن حروف ساخته شده باشد در غیر این صورت خطای ocr بالا میرود
راه حل این روش اضافه کردن دیتا بیس templates های بیشتر است که در این بخش از templete های دانلود شده از این[لینک](http://www.ee.surrey.ac.uk/CVSSP/demos/chars74k/EnglishImg.tgz) استفاده شد. که نتایج را 8٪ بهبود بخشید و چون حجم این داده ها بسیار بالا میباشد لذا از طریق لینک مربوطه دانلود و طبق طبق دستورالعمل ارائه شده در مرحله اول آنها را به template اضافه میکنیم
**مرحله سوم**
در این مرحله برای مقایسه میزان خطا از مجموعه دادگان (ارقام دستویس) استفاده شده است. این داده‌ها از طریق [سایت](http://yann.lecun.com/exdb/mnist/)دانلود نموده و داخل پوشه اصلی خود قرار دادم به شکل ذیل:
![توضیح تصویر](http://upload7.ir/uploads//3ace5b1d114e7da24d68a7ded1d38c75612f9490.png)
با اجرای دستور main_60000 برنامه شروع به مقایسه بر اساس دادگان داده شده میکند.
توجه کنید که این دیتا بیس بخاطر حجم زیاد (60000 تصویر Train و 20000 تصویر Test) زمان زیادی برای محاسبه خطا خواهد برد وشما میتوانیدروی هر مقدار دیتا که در کد خط های 17 و 18 مشخص است آزمایش را انجام دهید
Train_images=Train_images(:,1:1000);
Train_labels=Train_labels(1:1000,:);
بخاطر  اینکه این دیتا بیس همش عدد بود من تابع read_letter_num را نوشتم (این تابع در خط 106 کد main_60000 بکار رفته) که جستجوی تنها از میان اعداد صورت گیرد و نه ترکیبی از اعداد و حروف. اگر خواستید جستجو در تر کیبی از اعداد و حروف صورت گیرد بجای  read_letter_num ، تابع read_letter_v3 را در خط 106 جایگذاری کنید ولی طبق نتایج در سیستم من خطا خیلی بیشتر خواهد شد. در پایان  باز هم یک فایل text.txt حاوی اطلاعاتی  مقدار واقعی  و مقدار استخراج شده در فولدر جاری ذخیره خواهد شد.
همانگونه که مشاهده میکنید  اضافه کردن یکسری دیتا بیس از "حروف" نه تنها هیچ تاثیری در شناسایی دیتا بیس دانلود شده ( که همگی "عدد" بودند)  ندارد بلکه خطای تشخیص را هم خیلی خیلی بالا خواهند برد.
راه حل :در آینده templates های مختلفی از اعداد را هم اضافه کنیم تا جواب این قسمت بهتر گردد
شما میتوانید کدها و نمونه ها را از  [اینجا](http://upload7.ir/download/54cb7f3724d42/Final.rar) دانلود کنید
# کارهای آینده
همان‌گونه که در بخش کارهای مرتبط به آن اشاره شد روشهای زیادی برای تشخیص متن وجود دارد
علی‎رغم استفاده از داده‎های سنتیک ساخت یک مجموعه training خوب زمان‎برترین و دشوارترین چالش پروژه متن است.بعضی از سیستم‎ها با طرح‎های یادگیری بسیار انعطاف‎پذیر تلاش می‎کنند تمام اطلاعات لازم از داده‎های Lable شده را با حداقل دانش قبلی یاد دهند. مثلاً معماری شبکه عصبی چند لایه برای شناسایی کاراکتر استفاده شده‎اند و رقیب سایر روش‎های پیشتازانه هستند. 
یکی ازروشهای  پیشنهادی ، روش ارائه شده در مرجع [5] است.که الگوریتم استخراج متن از تصاویر را به سه گروه عمده  gradient feature based, color segmentation based, and texture analysis based.   تقسیم بندی می کند. gradient feature based بر اساس این ایده که پیکسلهایی که گرادیان زیادی دارند، کاندید هستند که جزو حروف باشند. در مقاله ای   Basilios Gatos  شیوه جدیدی را برای شناسایی متن در تصاویر طبیعی را پیشنهاد داده است. این شیوه پیشنهاد شده براساس باینری سازی بهینه [^ efficient binarization] و یک تکنیک پیشرفته که بر اساس آنالیز اجزای مرتیط مناسب پشتیبانی می شود، کار می کند. شیوه باینری کردن تصاویر به خوبی تصاویری که دارای سایه ، نور غیر یکنواخت، کنتراست پایین و نویزهای بالا می باشند را تحلیل می کند.  آنالیز اجزای مرتبط برای تعریف   باینری کردن  نهایی تصاویر[^final binary images]که غالبا شامل مناطق متن می باشد استفاده می شود
# مراجع
[1] Robust Text Detection in Natural Scene Images. [لینک](http://arxiv.org/pdf/1301.2628.pdf)
[2] K. Wang and S. Belongie, “Word spotting in the wild,” in Computer Vision – ECCV 2010, ser. Lecture Notes in Computer Science, K. Daniilidis, P. Maragos, and N. Paragios, Eds. Springer Berlin / Heidelberg, 2010, vol. 6311, pp. 591–604. [لینک] 
(http://cs229.stanford.edu/proj2012/Bell-TextDetectionAndRecognition.pdf)
[3] Text Detection and Character Recognition in Scene Images with Unsupervised Feature Learning. [لینک](http://crypto.stanford.edu/~dwu4/ICDAR2011.pdf)
[4]  Review on Text Detection Methodology from Images [لینک](http://www.ijarcce.com/upload/2014/february/IJARCCE5J__a_poonam_review.pdf)
[5] Review on Text String Detection from Natural Scenes
(http://www.ijeit.com/vol%202/Issue%204/IJEIT1412201210_42.pdf)
[6] IMPROVING TEXT RECOGNITION IN IMAGES OF NATURAL SCENES . [لینک]
(https://web.cs.umass.edu/publication/docs/2014/UM-CS-PhD-2014-003.pdf)
[7 ] Promotion text images  by  Morphology operator  
[\[لینک\]](http://cld.persiangig.com/download/1m0VP9/dl)
[8 ] Analysis and Retrieval  persian Documentation by page  Segmentation
[[لینک](http://cld.persiangig.com/download/XkSLqy/dl)
[9] New Method  Extraction persian text from  Complex images  Commercial Places  image Processing Technique Based
[لینک](http://cld.persiangig.com/download/KuGOk6/dl)
[10] A Simon effect induced by induced motion and location: Evidence for a direct linkage of cognitive and motor maps
[لینک](%28http://www.unige.ch/fapse/PSY/persons/kerzel/reprints/kerzel.hommel.bekkering.2001.pdf%29)
[11] The Laplacian Pyramid as a Compact Image Code[لینک](http://cld.persiangig.com/download/I00Ojk/dl)


[12] A Multiresolution Spline With Application to Image Mosaics[لینک](http://cld.persiangig.com/download/Dx85N6/dl)
[13]Canny Edge Detection[لینک](http://www.cse.iitd.ernet.in/~pkalra/csl783/canny.pdf)
[14] http://www.pearsonncs.com
[15] A MATLAB PROJECT IN OPTICAL CHARACTER RECOGNITION (OCR), Jesse Hansen
[16] http://www.eldish.net/hp/automat/matlab.htm
[17]  http://www.mathworks.com/matlabcentral/fileexchange/ loadFile.do?objectId=10514&objectType=file
[18] http://kems.ustb.edu.cn/learning/yin/dtext
[19]http://ai.stanford.edu/~ang/papers/icdar01-TextRecognitionUnsupervisedFeatureLearning.pdf
[20]http://www.ijrte.org/attachments/File/v2i1/A0504032113.pdf


# پیوندهای مفید