# مقدمه
تشخیص و شناسایی متن در تصاویر یکی از مشکلات تشخیص بصری است[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
# پیوندهای مفید