پیدا کردن متن در تصویر

در سامانه‌های پیدا کردن متن در تصویر، هدف آن است که مکان متن موجود در تصویر را مشخص کنیم. برای مثال به تصاویر زیر توجه کنید که چگونه مکان متون موجود در آن‌ها مشخص شده است:

نمونۀ تصاویر با مشخص شدن مکان متن
نمونۀ تصاویر با مشخص شدن مکان متن

کاربرد اصلی این مسئله به عنوان یک پیش پردازش قبل از تبدیل تصویر به نوشتار یا همان OCR است.

  • این پروژه توسط یک بنگاه تجاری تعریف شده است.

مقدمه

امروزه دسترسی همگان به دوربین‌های دیجیتال ارزان قیمت، سبب ایجاد حجم عظیمی از تصاویر شده‌ است. دستیابی به اطلاعات سودمند از این حجم عظیم داده، نیازمند پردازش‌های دقیق و با کارایی مناسب است. یکی از این پردازش‌ها، تشخیص متن در تصویر است. پیدا کردن محل متن در تصویر یکی از مراحل اصلی فرآیند تبدیل تصویر به نوشتار است.
تبدیل تصویر به نوشتار سابقه‌ای طولانی دارد. در این روش به شکل سنتی، صفحات پویش1شده بررسی و متن از آن‌ها استخراج می‌شود. تقریباً در تمام موارد، متون به صورت افقی بوده و پس‌زمینۀ آن‌ها سفید است.
آنچه که در تبدیل تصویر به نوشتار رخ می‌دهد؛ با پیدا کردن متن در تصویر تفاوت دارد. در تبدیل تصویر به نوشتار هدف یافتن نویسه‌های2 استفاده شده در متن است؛ اما در پیدا کردن متن هدف یافتن محل متن در تصویر است.
همان‌گونه که مشخص است، امروزه پیدا کردن محل متن به عنوان پیش‌پردازش اصلی تبدیل تصویر به نوشتار، مورد استفاده قرار می‌گیرد. بررسی‌ها بیانگر آن است که کارایی تبدیل تصویر به نوشتار وابستگی بسیاری به کارایی روش پیدا کردن متن در تصویر دارد[1]. این موضوع در بررسی تصاویر مناظر طبیعی3 بسیار محسوس‌تر است.
در روش‌های سنتی محل متن توسط کاربر به صورت دستی مشخص می‌شود. امروزه به دلیل حجم عظیم داده‌ای که برای داده کاوی مورد استفاده قرار می‌گیرند؛ این روش کارایی خود را از دست داده است.
در گذشته مشکلات کمتری برای پیدا کردن متن وجود داشت. در اکثر موارد تصاویر مورد بررسی، پس‌زمینۀ سفید داشتند. جهت متن4 نیز تقریبا افقی بود. این موارد از پیچیدگی مسئله کاسته و کار را بسیار ساده‌تر می‌کند. ابزارهای امروزی برای بررسی این قسم متون کارایی مناسبی دارند و تقریبا اشتباهات آن‌ها بسیار کم و قابل چشم‌پوشی است. پیش‌فرض اکثر این ابزارها استفاده از تصاویر با تفکیک‌پذیری بالا5 و تقریباً سیاه و سفید (متون سیاه و پس‌زمینه سفید) است. البته برخی از آن‌ها وجود عکس، نمودار و سایر خطوط را نیز تشخیص می‌دهند.
تصاویری که افراد از مناظر، اماکن و متون تهیه می‌کنند؛ این پیش‌فرض‌ها را ندارد. در ادامه به برخی از مشکلات پیدا کردن متن‌ در این قسم تصاویر اشاره شده است[2].

مشکلات اصلی تصاویر مورد بررسی:

  • کیفیت پایین: یکی از اصلی‌ترین مشکلاتی که برای پیدا کردن متن در تصویر با آن‌ روبرو هستیم. تصاویری که با دوربین‌های معمولی ثبت می‌گردند؛ قطعاً کیفیت پویشگر‌ها6 را نخواهند داشت.

  • نورپردازی ناهموار7 : میزان نور ممکن است بسیار کم یا بسیار زیاد باشد. امکان تفاوت میزان نور در بخش‌های مختلف یک تصویر به دلیل وجود سایه و بازتاب نور نیز وجود دارد. در صورت استفاده از نور مصنوعی مانند فلاش بخش‌هایی از تصویر روشن و سایر بخش‌ها دارای روشنایی کم‌تر هستند.

  • سطوح غیرمسطح8 : امکان دارد متن مسطح نبوده و دارای عمق باشد. همچنین ممکن است بخشی از متن در یک سطح و بخشی از آن در سطح دیگری باشد. حالت‌های دیگری نیز می‌توان برای متن ذکر نمود. به شکل کلی نمی‌توان پیش‌فرض مشخصی را مدنظر گرفت.

  • پس‌زمینه‌های پیچیده9 : وجود پس‌زمینۀ پیچیده از دو جهت می‌تواند ایجاد مشکل نماید. اول آنکه برخی از اشیا که دارای ساختار منظم و یا بافت خاصی هستند (مانند درها، پنجره‌ها، خطوط خیابان، برگ درختان و غیره [3]) به اشتباه متن شناسایی می‌گردند. دوم آنکه زمانی که پس‌زمینۀ متن تصویری پیچیده است نمی‌توان لبه‌های10 متن را به درستی مشخص نمود.

  • جهت متن: یکی دیگر از مشکلات، جهت متن در تصویر است. هیچ دلیلی برای افقی بودن متن در تصاویر وجود ندارد. این موضوع با مسطح نبودن متن متفاوت است. با فرض مسطح بودن متن، امکان دارد متن جهت افقی نداشته و نسبت به افق دارای زاویه باشد.

در شکل زیر برخی از مشکلات ذکرشده را می‌توانید مشاهده کنید[4]:

مشکلات پیدا کردن و تشخیص متن در تصویر
مشکلات پیدا کردن و تشخیص متن در تصویر

موارد ذکر شده در بالا مشکلات اصلی برای پیدا کردن متن در تصاویر است. مشکلات دیگری مانند تنوع در رسم‌الخط‌، فونت، رنگ و اندازه متون وجود دارد.
حال به بررسی اهمیت پیدا کردن و تشخیص متن در تصویر می‌پردازیم. می‌توان این موضوع را با طرح سوالی مورد بررسی قرار داد. چرا با این سطح از پیچیدگی به دنبال پیدا کردن و تشخیص متن در تصویر هستیم؟ این کار می‌تواند سببب بهبود روش‌های مورد استفاده در ابزارهای نویسه‌خوان نوری11 شود. با استفاده از بهبود روش‌ها می‌توان عکس‌های تهیه شده با دوربین‌های معمولی را نیز به نوشته‌های مناسب تبدیل نمود.
دلیل دیگر این کار استفاده از متن تصویر برای نمایه‌12کردن آن است[4]. فرض کنید در تصویری عبارت bank به چشم می‌خورد. می‌توان حدس زد که این تصویر مربوط به ورودی یک بانک است. بررسی این مورد از حوزۀ این تحقیق خارج بوده و تنها برای بیان انگیزه‌های مطرح برای تشخیص متن ذکر شده‌است.

کارهای مرتبط

جانگ و همکارانش [4]، معماری کلی برای سامانه‌های استخراج اطلاعات متن13 به اختصار TIE ارائه کرده‌اند. این سامانه در شکل زیر [4-5] نمایش داده شده است:

معماری پیشنهادی برای TIE
معماری پیشنهادی برای TIE

به طور کلی این معماری برگرفته از الگوی لوله و فیلتر14 است. چهار مرحله اصلی آن عبارتند از:

  • تشخیص موجود بودن متن15 در تصویر

  • پیدا کردن مکان متن16 در تصویر

  • استخراج متن و بهبود کیفیت آن17

  • بازشناسی نویسه‌های18 متن

از میان مراحل بالا، دو مرحلۀ مرزبندی شده در شکل بالا یعنی تشخیص موجود بودن متن و پیدا کردن مکان آن در تصویر، در کارایی سامانه‌های TIE تاثیر بسزایی دارند[5]. لازم به ذکر است در این پژوهش هدف پیدا کردن مکان متن در تصویر است. در ادامه به اختصار به معرفی این دو مرحله می‌پردازیم. همچنین کارهای مرتبط با این پژوهش در بررسی مرحلۀ دوم ذکر خواهند شد.

تشخیص متن: در این مرحله، اطلاعات پیشین19 در مورد وجود داشتن متن در تصویر در اختیار نیست. در واقع وجود داشتن یا نداشتن متن در تصویر باید تشخیص داده شود[4]. این مرحله از حیطۀ کار این پژوهش خارج فرض می‌شود. فرض ما بر این است که تمامی تصاویر مجموعه دادگان دارای متن هستند.
به نظر جانگ و همکارانش [4] محققان توجه زیادی به این مرحله نداشته‌اند. دلیل آن را می‌توان در حوزۀ کاربرد سامانه‌های TIE یافت. معمولا از این سامانه‌ها برای بازشناسی متن در تصاویری استفاده می‌کنیم که از وجود داشتن متن در آن‌ها اطمینان داریم. البته زمانی که هدف بازشناسی متن در ویدئو است، این مرحله اهمیت بسیاری پیدا می‌کند.

پیدا کردن مکان متن: روش‌های موجود برای پیدا کردن مکان متن را می‌توان تقریبا به دو گروه اصلی تقسیم کرد[3-4]. مبتنی بر بافت20 و مبتنی بر ناحیه21.

  • روش‌ مبتنی بر بافت: این روش‌ها با تحلیل بافت عکس، متن موجود در آن را پیدا می‌کنند. در اینجا متن به صورت یک بافت خاص مدنظر قرار می‌گیرد و از ویژگی‌های آن استفاده می‌شود. به طور کلی با استفاده از فیلترها و برخی تبدیل‌ها مانند تبدیل موجک22، بردارهای ویژگی از عکس بدست می‌آیند. این بردارها ممکن است به ماشین یادگیری یا رده‌بند ارائه شوند و یا از روش‌های دیگری برای پیدا کردن مکان متن استفاده شود.

  • روش مبتنی بر ناحیه: در این روش‌ها با استفاده از تشخیص لبه و خوشه‌بندی رنگی23 مکان‌های کاندید برای حضور متن پیدا می‌شوند. برای پیدا کردن نویسه‌ها از روش مولفه‌های همبند24 استفاده می‌شود. نواحی بدون متن با استفاده از قواعد اکتشافی25 حذف می‌شوند.

دو گروه بالا تقسیم‌بندی کلی برای روش‌های پیدا کردن متن ارائه می‌دهند. بسیاری از روش‌ها ترکیبی26 از دو روش بالا هستند. همچنین محققان به این نتیجه رسیده‌اند که استفاده از برخی از تبدیل‌های مورد استفاده در سیگنال‌های گسسته در زمان می‌تواند به فرآیند تشخیص متن بسیار کمک کند. برخی از این تبدیل‌ها برای ایجاد بردار ویژگی‌ها استفاده می‌شوند و برخی از آن‌ها نیز برای حذف محتوای بدون متن کاربرد دارند.

اپشتاین و همکارانش [1] از SWT 27 برای استخراج ویژگی‌ از عکس استفاده کرده‌اند. ویژگی‌های استخراج شده با این تبدیل با استفاده از روشی مبتنی بر مولفه‌های همبند (CC)، تبدیل به حروف شده‌اند. سپس حروف تبدیل به خطوط شده و از آن‌ها کلمات بدست آمده‌اند. فلوچارت مراحل بیان شده را به صورت کامل در شکل زیر مشاهده می‌کنید[1]:

فلوچارت الگوریتم پیشنهادی اپشتاین
فلوچارت الگوریتم پیشنهادی اپشتاین

یائو و همکارانش [3] رویکرد جدیدی را برای پیدا کردن متن ارائه کرده‌اند. این رویکرد برای پیدا کردن متن با جهت‌های دلخواه مناسب است. چهار مرحلۀ اصلی آن را همراه با جزئیات در شکل زیر مشاهده می‌کنید:

مراحل رویکرد پیشنهادی
مراحل رویکرد پیشنهادی

رویکرد بالا برگرفته از الگوی لوله و فیلتر است. می‌توان دریافت که هر بخش وظیفه مخصوص به خودش را دارد. خروجی هر قسمت نیز به عنوان ورودی قسمت بعدی مورد استفاده قرار می‌گیرد. در شکل زیر برخی از نتایج رویکرد پیشنهادی نمایش داده شده‌اند:

متن‌های پیدا شده
متن‌های پیدا شده

پان و همکارانش [5] روشی ترکیبی را ارائه کرده‌اند. این روش دارای سه مرحله اصلی پیش‌پردازش، تحلیل مولفه همبند و گروه‌بندی متن است. در اینجا استخراج ویژگی‌ها با در نظر گرفتن بافت تصویر صورت می‌گیرد. سپس با بدست آوردن مولفه‌های همبند و استفاده از روش‌های ابتکاری متن بدست می‌آید. در فلوچارت زیر مراحل سامانه پیشنهادی را مشاهده می‌کنید[5]:

فلوچارت سیستم پیشنهادی پان
فلوچارت سیستم پیشنهادی پان

چن و همکارانش [6] روشی را بر اساس استخراج نواحی کاندید، هرس آن‌ها و گروه‌بندی ارائه کرده‌اند. در این روش ابتدا نواحی کاندید برای وجود داشتن متن بدست می‌آیند. سپس با اعمال دو فیلتر مختلف (فیلتر بر اساس مولفه‌های همبند و فیلتر بر اساس SWT) نواحی بدون متن هرس شده و در انتها با تشکیل خطوط، کلمات بدست می‌آیند. در فلوچارت زیر مراحل به شکل کامل ذکر شده‌اند:

مراحل سیستم پیشنهادی چن
مراحل سیستم پیشنهادی چن

آزمایش‌ها

در این بخش ابتدا به معرفی مجموعه دادگان مورد استفاده می‌پردازم. سپس کد ایجاد شده برای بدست آوردن مکان متن با استفاده از فلوچارت توضیح داده می‌شود. در آخر نیز نتایج گزارش خواهند شد.
مجموعه دادگان: در این پروژه از مجموعه دادگان استفاده شده در ICDAR28 2013 استفاده شده است. این داده‌ها از طریق سایت این کنفرانس در دسترس هستند. البته برای دریافت آن‌ها باید در سایت ثبت‌نام کنید.
داده‌هایی مورد استفاده عکس‌های مربوط به چالش29 دوم این کنفرانس است. این عکس‌ها شامل دو بخش آموزش و آزمون هستند. 229 عکس برای آموزش و 233 عکس برای آزمون ارائه شده‌اند. در مجموع 462 عکس در این مجموعه وجود دارد.
نتایجی که در مقاله ارائه شده این کنفرانس[7] بیان شده‌اند، برای دادگان آزمون بدست آمده است. به طور کلی در این قسم مسائل که کلاس مثبت30 و تشخیص درست آن اهمیت دارد، از دو سنجه دقت31 و فراخوانی32 برای بیان نتایج استفاده می‌کنند. برای این دادگان در مقاله ارائه شده بعد از کنفرانس[7] دقت و فراخوانی‌های زیر گزارش شده‌اند:

نتایج پیدا کردن مکان متن ارائه شده در مقاله کنفرانس
نتایج پیدا کردن مکان متن ارائه شده در مقاله کنفرانس

لازم به ذکر است که این نتایج برای روش‌های ارائه شده به کنفرانس گزارش شده‌اند. شما می‎توانید جدیدترین نتایج را از طریق این لینک مشاهده کنید.

روش پیشنهادی: روش پیشنهادی من، شکل ساده شده و البته تغییر یافتۀ روش ارائه شده در [6] است. در مثال‌های موجود در متلب، کدی وجود دارد که به شکل ساده به پیاده‌سازی این روش پرداخته است. شما می‌توانید این مثال را در این لینک مشاهده کنید. کد ارائه شده با ضریب اطمینان بالایی تنها برای چند مثال خاص نتیجه مناسب و قابل قبولی ایجاد می‌کند. برای عکس‌های ارائه شده در خود مثال نتیجه بسیار عالی است. اما برای مجموعه دادگان در اختیار من خروجی خاصی تولید نکرد. در واقع دقت و فراخوانی بدست آمده بسیار ناچیز و غیرقابل قبول بود.
با توجه به مطالب بیان شده به بهبود مثال ارائه شده، تغییر و بهتر کردن نتایج حاصل از آن پرداختم. بخش‌هایی از آن را حذف و قسمت‌هایی را به آن افزودم. همچنین پس از گذشت زمان کمی، هم به صورت تجربی و هم با مراجعه به منابع متوجه شدم که این روش نیازمند تنظیمات دستی33 مناسب برای رسیدن به نتایج قابل قبول است. بنابراین در بخش‌هایی از کد تغییراتی ایجاد کردم تا نتایج بهتر شوند. نتیجه کار تا این لحظه را در سایت گیت‌هاب قرار داده‌ام که از طریق این لینک و لینک ارائه شده در پایین صفحه می‌توانید آن را مشاهده کنید.
به صورت خلاصه کد ارائه شده شامل مراحل زیر است. در ادامه به اختصار به توضیح هر کدام از بخش‌های گفته شده می‌پردازم. سپس نتایج آزمایش را نمایش می‌دهم. همچنین خلاصه نتایج به صورت دقت و فراخوانی نیز ذکر خواهند شد.

روش ارائه شده
روش ارائه شده

توضیحات روش پیشنهادی: این روش دارای 7 مرحله کلی است:

  • مرحله اول: چونکه متن‌های موجود در تصویر در بیشتر موارد دارای رنگ یکسانی هستند، می‌توان با استفاده از تابع یابنده نواحی MSER34 مکان‌هایی که شدت35 رنگ مشابه دارند را فیلتر کرد.[8] نکته قابل توجه در این مرحله وابستگی کامل نتایج به تنظیمات دستی است. یعنی حتما باید ورودی‌های تابع مناسب انتخاب شوند تا تابع نواحی مناسبی را پیدا کند.

  • مرحله دوم: در این مرحله با استفاده از تابع یابنده لبه، با استفاده از متد سوبل36 لبه‌ها را پیدا می‌کنیم.

  • مرحله سوم: این مرحله نقش مهمی در پیدا کردن نویسه‌ها دارد. با استفاده از تابع کتابخانه‌ای متلب، داخل نواحی که لبه‌های آن پیدا شده پر می‌شوند.

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

    ماسک لبه و MSER
    ماسک لبه و MSER

در این مرحله با استفاده از AND این دو ماسک تبدیل به یک ماسک می‌شوند. در واقع نواحی کاندید37 برای حضور متن از این ماسک بدست می‌آیند. در شکل زیر نتیجه این مرحله را مشاهده می‌کنید.

نتیجه مرحله چهارم
نتیجه مرحله چهارم

  • مرحله پنجم:در این مرحله با استفاده از تحلیل مولفه‌های همبند، مناطقی که متن در آن‌ها وجود ندارد هرس38 می‌شوند. خروجی این مرحله تاثیر بسزایی در کم کردن تعداد اشتباهات39 دارد. در شکل زیر خروجی این مرحله را مشاهده می‌کنید.

    نتیجه مرحله پنجم
    نتیجه مرحله پنجم

  • مرحله ششم: در این مرحله حروف به هم متصل شده و خطوط را تشکیل می‌دهند. نتایج حاصل از این مرحله به عنوان مکان‌هایی که متن در آن‌ها وجود دارد اعلام خواهند شد. در شکل زیر نتیجه این مرحله را مشاهده می‌کنید.

    نتیجه مرحله ششم
    نتیجه مرحله ششم

  • مرحله هفتم: در این مرحله مکان متن در عکس اصلی مشخص می‌شود. در واقع این مرحله وظیفه ایجاد خروجی را برعهده دارد در شکل زیر خروجی نمونه ارائه شده را مشاهده می‌کنید.

    عکس خروجی
    عکس خروجی

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

نتایج روش پیشنهادی: مزیت اصلی این روش نسبت به سایر روش‌ها سادگی و در عین حال عملکرد قابل قبول آن است. در جدول زیر خلاصۀ عملکرد آن را برای داده‌های آموزش، آزمون و کل داده‌ها مشاهده می‌کنید.

نوع داده ورودی دقت فراخوانی F-score
دادۀ آموزش 79.03٪ 70.04٪ 74.26٪
دادۀ آزمون 73.13٪ 61.50٪ 66.81٪
کل داده‌ها 75.78٪ 65.24٪ 70.12٪

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

نتایج خوب
نتایج خوب

نتایج قابل قبول
نتایج قابل قبول

نتایج ضعیف
نتایج ضعیف

بهبود نتایج:
نتایجی که در بالا مشاهده کردید بعد از اجرای 6 مرحله آزمایش بر روی دادها بدست آمده است و نتایج گزارش شده بهترین خروجی بدست آمده در این آزمایش‌ها است.
پس از اجرای آزمایش‌های متعدد و مشاهده نتایج آن‌ها دو موضوع به شکل مشخصی نظر مرا جلب کرد:

  • عکس‌های ارائه شده به عنوان داده‌های آزمون نسبت به عکس‌های آموزش ساختار پیچیده‌تری دارند و نتایج بدست آمده برای آن‌ها ضعیف‌تر از داده‌های آموزش است.

  • در میان عکس‌ها، تعدادی عکس با تفکیک پذیری بالا و کیفیت 10 مگا پیکسل وجود دارند. بسیاری از اشتباهات در این عکس‌ها رخ می‌دهند. مکان متن‌های موجود در آن‌ها به خوبی بدست نیامده و همچنین سبب کاهش سرعت اجرای برنامه هستند.

بهبود نتایج برای عکس‌های آزمون هدف کار من قرار گرفت؛ همچنین به این فکر افتادم که سرعت اجرای برنامه را افزایش دهم. در این بین متوجه شدم که تابع یابنده لبه‌ها در متلب به صورت پیش فرض لبه‌های پیدا شده را نازک40 می‌کند. این عبارات در مستندات تابع edge متلب ذکر شده اند:

BW = edge(I,'sobel',...,options) provides an optional string input. String 'nothinning' speeds up the operation of the algorithm by skipping the additional edge thinning stage. By default, or when 'thinning' string is specified, the algorithm applies edge thinning.

همان گونه که مشخص است استفاده از عبارت 'nothinning' سبب افزایش سرعت اجرا خواهد شد. پس از اضافه کردن این عبارت شاهد بهبود عمکرد قابل قبولی در پیدا کردن مکان متن نیز بودم. در واقع هدف من افزایش سرعت اجرای برنامه بود اما در عوض با اجرا نشدن مرحله نازک شدن لبه‌ها عملکرد برنامه بهبود یافت.
به نوعی می‌توان گفت به طور غیر مستقیم و اتفاقی هدف اصلی من یعنی بهبود نتایج بدست آمد؛ اما هنوز سرعت اجرای برنامه زیاد به نظر می‌رسید. به این فکر افتادم که با کاهش اندازه عکس‌ها به شکلی که نتایج تغییر محسوسی نداشته باشند سبب بالارفتن سرعت اجرای برنامه شوم. بنابراین در زمان خواندن عکس و پس از تبدیل عکس رنگی به خاکستری41، اگر تفکیک‌پذیری عکس خاکستری از عدد مشخصی بیشتر باشد، اندازه آن را کاهش داده و مراحل را اجرا کردم. پس از اتمام مراحل و بدست آمدن ماسک نهایی، اندازه آن را به اندازه اصلی42 برگردانده و نتایج را در عکس ورودی تاثیر دادم. با انجام این کار توانستم بدون اینکه تاثیری در نتایج بوجود بیاید، سرعت اجرای برنامه را افزایش دهم.
نتیجه آنکه قبل از تاثیر این تغییرات برای 462 عکس موجود زمانی برابر 867.617459 ثانیه برای اتمام اجرای برنامه در محیط متلب صرف شد؛ یعنی به طور متوصط در حدود 1.88 ثانیه برای هر عکس. پس از اعمال این تغییرات برای 462 عکس موجود زمانی برابر 555.360694 ثانیه بدست آمد؛ یعنی به طور متوسط در حدود 1.2 ثانیه برای هر عکس. لازم به ذکر است این نتایج در یک زمان و بر روی یک دستگاه بدست آمده و سعی داشته‌ام تمامی شرایط آزمایش یکسان باشند. نکته قابل توجه در اینجا عدم تاثیر این موضوع در نتایج است. در جدول زیر نتایج بهبود یافته را مشاهده می‌کنید.

نوع داده ورودی دقت فراخوانی F-score
دادۀ آموزش 76.59٪ 81.13٪ 78.79٪
دادۀ آزمون 73.42٪ 70.03٪ 71.69٪
کل داده‌ها 74.89٪ 74.88٪ 74.89٪

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

بهبود نتایج 1
بهبود نتایج 1

اگر مستطیل‌های که توسط برنامه به دور متن کشیده شده‌اند به وضوح مشخص نیستند، می‌توانید با دانلود کردن و بزرگنمایی43، آن‌ها را مشاهده کنید. در شکل زیر بخش دیگری از خروجی‌های بهبود یافته را مشاهده می‌کنید.

بهبود نتایج 2
بهبود نتایج 2

به دلیل حجم زیاد این عکس‌ها و برای جلوگیری از سنگین شده صفحه پروژه از آوردن الباقی عکس‌ها در اینجا خودداری کرده و لینک دانلود آن‌ها را در اختیار شما قرار می‌دهم. در صورت تمایل می‌توانید چهار سری دیگر از این عکس‌ها را از طریق این لینک دانلود کنید. همچنین تعدادی از عکس‌ها با کیفیت بالا که بهبود نتایج آن‌ها قابل توجه بوده است از طریق این لینک قابل دریافت هستند. حجم این بخش از عکس‌ها زیاد بوده و در حدود 20 مگابایت است. عکس‌ها با پسوند a مربوط به مرحله قبل و عکس‌ها با پسوند b مربوط به این مرحله هستند.
خوب به غیر از نتایج خوب، نتایج بد نیز بدست آمده‌اند. شاید بتوان تاثیر اصلی این تغییرات را در دو عکس زیر مشاهده کرد. عکس اول مربوط به مرحله قبل و عکس دوم مربوط به کد بهبود یافته است. همان‌گونه که مشاهده می‌کنید، مکان متن‌ها به خوبی پیدا شده‌اند اما تعداد نواحی اشتباه نیز افزایش یافته‌اند. در واقع نازک نشدن لبه‌ها سبب شده نواحی بیشتری به عنوان مکان متن اعلام شوند. به نظر من با مقایسه دو عکس زیر به راحتی می‌توان تاثیر اصلی بهبود اعمال شده را مشاهده کرد.

نتیجه 1
نتیجه 1

نتیجه 2
نتیجه 2

در آخر نیز بخشی از خروجی‌ها که نتایج آن‌ها بدتر شده را نیز مشاهده می‌کنید. ردیف اول هر کدام از عکس‌ها مربوط به مرحله قبل و ردیف دوم مربوط به این مرحله است.

عدم بهبود نتایج 1
عدم بهبود نتایج 1

عدم بهبود نتایج 2
عدم بهبود نتایج 2

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

کارهای آینده

همان‌گونه که در بخش کارهای مرتبط به آن اشاره شد، در یک تقسیم بندی کلی، روش‌های پیدا کردن متن در تصویر را به دو بخش اصلی تقسیم می‌کنند: 1- روش مبتنی بر بافت 2- روش مبتنی بر ناحیه. روش ذکر شده در اینجا، در این تقسیم‌بندی جزء روش‌های مبتنی بر ناحیه قرار می‌گیرد. همان‌طور که گفته شد این روش‌ها بر اساس تشخیص لبه و خوشه‌بندی رنگی نواحی مستعد را یافته، متن را با استفاده از تحلیل مولفه‌های همبند بدست می‌آورند. همچنین نقطه قوت اصلی این روش‌ها استفاده از قواعد اکتشافی است.
یکی از کارهایی که می‌توان در این بخش انجام داد استفاده از تبدیل SWT به جای استفاده از خوشه‌بندی رنگی است. به شکل خلاصه این تبدیل نواحی را با توجه به ضخامت آن‌ها نمایش می‌دهد. از آنجا که اکثر متن‌های موجود در یک تصویر ضخامت یکسانی دارند می‌توان از این تبدیل برای استخراج نواحی مستعد استفاده کرد [1-3].
همچنین در میان قواعد اکتشافی مورد استفاده، برخی از همین تبدیل برای هرس کردن خروجی مرحلۀ پیدا کردن نواحی مستعد استفاده می‌کنند[6]. می‌توان با استفاده از این تبدیل نیز به بهبود نتایج پرداخت.
در روش دیگر یعنی روش‌های مبتنی بر بافت از ماشین‌های یادگیری مانند ماشین بردار تکیه‌گاه44 و همچنین پرسپترون چند لایه45 و سایر ماشین‌های یادگیری استفاده می‌کنند. البته یکی از مشکلات بزرگ این روش استخراج ویژگی‌های مناسب برای استفاده این ماشین‌ها است. این روش را نمی‌توان به روش پیشنهادی در اینجا افزود و باید از ابتدا به معرفی روش جدیدی پرداخت.

مراجع

[1] B. Epshtein, E. Ofek, Y. Wexler, "Detecting Text in Natural Scenes with Stroke Width Transform," IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2010, San Francisco, CA, pp. 2963-2970.
[2] J. Liang, D. Doermann, H. Li, "Camera-based Analysis of Text and Documents: a Survey," International Journal of Document Analysis and Recognition (IJDAR), vol. 7, no. 2-3, pp. 84-104, 2005.
[3] C. Yao, X. Bai, W. Liu, Y. Ma and Z. Tu. "Detecting Texts of Arbitrary Orientations in Natural Images," IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012, Providence, RI, pp. 1083-1090.
[4] K. Jung, K. I. Kim, A. K. Jain, "Text Information Extraction in Images and Video: a Survey," Pattern Recognition, Elsevier, vol. 37, no.5, pp. 977–997, 2004.
[5] YF. Pan, X. Hou, CL. Liu, "A Hybrid Approach to Detect and Localize Texts in Natural Scene Images," IEEE Transactions on Image Processing, vol. 20, no. 3, pp. 800-813, 2011.
[6] H.Chen et al., "Robust text detection in natural images with edge-enhanced Maximally Stable Extremal Regions," 18th IEEE International Conference on Image Processing (ICIP), 2011, Brussels, pp. 2609-2612.
[7] D. Karatzas et al., "ICDAR 2013 Robust Reading Competition," 12th International Conference on Document Analysis and Recognition (ICDAR), 2013, Washington, DC, pp. 1484-1493.
[8] J. Matas, O. Chum, M. Urban, T. Pajdla, "Robust Wide-Baseline Stereo from Maximally Stable Extremal Regions," British Machine Vision Computing 2002, vol. 22, no. 10, pp. 761–767, 2004.
[9] S. M. Lucas et al., "ICDAR 2003 Robust Reading Competitions: Entries, Results, and Future Directions," International Journal of Document Analysis and Recognition (IJDAR), vol. 7, no. 2-3, pp. 105-122, 2005.
[10] S. M. Lucas, A. Panaretos, L. Sosa, A. Tang, S. Wong, R. Young, "ICDAR 2003 Robust Reading Competitions", Proceedings of 7th International Conference on Document Analysis and Recognition (ICDAR), 2003, Edinburgh, UK, pp. 682.
[11] S. M. Lucas, "ICDAR 2005 Text Locating Competition Results," Proceedings of 8th International Conference on Document Analysis and Recognition (ICDAR), 2005, vol. 1, pp. 80-84.
[12] D. Karatzas, S. R. Mestre, J. Mas, F. Nourbakhsh, P.P Roy, "ICDAR 2011 Robust Reading Competition Challenge 1: Reading Text in Born-Digital Images (Web and Email)," International Conference on Document Analysis and Recognition (ICDAR), 2011, Beijing, pp. 1485-1490.
[13] A. Shahab, F. Shafait, A. Dengel, "ICDAR 2011 Robust Reading Competition Challenge 2: Reading Text in Scene Images," International Conference on Document Analysis and Recognition (ICDAR), 2011, Beijing, pp. 1491-1496.

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


  1. scan

  2. characters

  3. images of natural scenes

  4. text orientation

  5. high resolution

  6. scanner

  7. uneven lighting

  8. nonplaner surfaces

  9. complex backgrounds

  10. edges

  11. optical character recognition

  12. index

  13. text information extraction

  14. pipe and filter pattern

  15. text detection

  16. text localization

  17. text extraction and enhancement

  18. characters recognition

  19. prior information

  20. texture-based

  21. region-based

  22. wavelet

  23. color clustering

  24. connected component

  25. heuristic rules

  26. hybrid

  27. stroke width transform

  28. International Conference on Document Analysis and Recognition

  29. challenge

  30. positive

  31. precision

  32. recall

  33. hand tuning

  34. maximally stable extremal regions

  35. intensity

  36. sobel

  37. candidate regions

  38. prune

  39. false positive

  40. thin

  41. gray

  42. original

  43. zoom

  44. support vector machine

  45. multilayer perceptron

ارزیابی آشنایی با مساله 1393/08/17
حسین فرقانی

هدف این فاز که شناخت کلی نسبت به موضوع و بررسی کارهای پیشین بود به خوبی انجام داده اید. فقط لازم است این مورد در ادامه اصلاح شود:
بهتر است برای resolution و uneven و edge به ترتیب معادل های تفکیک پذیری، ناهموار، و لبه به کار گرفته شود (مرز معادل boundary است).

ارزیابی مطالعه کارهای مرتبط 1393/09/15
تایید شده

در مقدمه به خوبی به تعریف صورت مسئله پرداخته شده است و شکل های استفاده شده در این قسمت نیز گویای توضیحات ارائه شده است ، مثلا مشکلات اصلی در بررسی تصاویر.
در توضیحات اشاره کرده اید که بعضی قسمت ها خارج از حوزه این تحقیق است، می توانید در این موارد در قسمت پیوندهای مفید منبعی مناسب برای آن معرفی کنید، مانند لینکی که برای معرفی و پیاده سازی SWT داده اید.
در قسمت کارهای مرتبط، توضیحات مربوط به مرجع [3] ایده اصلی مقاله را بیان کرده ، ولی بهتر بود حال که از شکل استفاده شده، در مورد بعضی از قسمت های شکل توضیحاتی ارائه می شد، مثلا در مورد قسمت Chain Verification که خواننده متن شما از قبل دیدی نسبت به آن ندارد، می توانستید از توضیحاتی که در ابتدای مقاله اصلی آمده، برای توصیف هر کدام از قسمت ها به صورت مختصر استفاده کنید.
به نظر من توضیحات خیلی خوبی ارائه شده بود و در اکثر موارد دقت لازم را داشت.

حسین فرقانی

نوشتار بسیار خوبی است. به ویژه موارد زیر از مزایای آن محسوب می شود:

  1. تعداد خوب و مناسبی از مقالات راجع به موضوع پروژه مطالعه و توضیح داده شده است.

  2. از شکل های مناسبی برای توضیح موضوع استفاده شده است.
    اما ایرادهای زیر نیز وجود دارد که با رفع آن ها در ادامه نوشتار بهتر نیز می شود:

  3. از آن جا که نوشتار فارسی است، بهتر است از نوشته های فارسی نیز در عکس نمودارها استفاده کنید. به همین دلیل بهتر بود نوشته های عکس ترجمه و عکس دیگری ایجاد می شد.

  4. «پیشین» ترجمه بهتری برای prior است که معمولاً به کار می رود.

  5. برای ترجمه heuristic rules از «قواعد اکتشافی» به جای «ابتکاری» استفاده کنید.

  6. بهتر است در مورد برخی مفاهیم مانند «stroke width transform» و «الگوی لوله و فیلتر» که برای خواننده احتمالاً ناآشنا هستند در متن توضیح کوتاهی داده شود.

ارزیابی گزارش نتایج آزمایش 1393/10/13
یاسر سوری

با سلام و تشکر

کاری که انجام داده‌اید واقعاً خوب و مناسب است و تا عالی شدن فاصله‌ی کمی دارد.

چند نکته:

  • من کد شما را اجرا کردم که نتایجی خوبی هم می‌دهد. با توجه به اینکه شما در آخر یک (یا چند) مستطیل محاطی خروجی می‌دهید، چرا چالش شماره ۲ را انتخاب کرده‌اید. به نظر می‌رسد که چالش شماره ۱ بهتر باشد. (اگر خواستید در این مورد می‌توانید با ایمیل من yassersouri در جیمیل تماس بگیرید)

  • لازم است که در کدهای خود کد مربوط به محاسبه‌ی دقت را هم قرار دهید. بدون آن مشخص نیست که شما چه‌گونه به این اعدادی که گزارش کرده‌اید رسیده‌اید.

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

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

با تشکر

رد شده

سلام و عرض خسته نباشید
در فسمت آزمایش و بهبود خروجی ها از روی مقاله کپی شده است

رد شده

پروژه از نظر من واقعا بدون هيچ ايرادي مي باشد همه چيز كامل دقيق توضيح داده شده هر سر فصل و هر بخش واقعا بسيار زيبا بيان شده و با خواندن متن كامل به صورت مسئله و راهكارش مي توان پي برد من از زحمات شما در تهيه اين پروژه تشكر مي كنم مشخصا زحمت زيادي براي اين پروژه كشيده شده است.

تایید شده

با سلام
در این پروژه مراحل مختلف به خوبی کار شده و در هر مرحله توضیحات کافی ارائه شده است که از نقاط قوت این پروژه است.و همچنین در فاز آخر روش پیاده سازی شده و نتایج آزمایشات بخوبی توضیح داده شده است.

رد شده

با توجه به اینکه عنوان پروژه

تایید شده

با عرض سلام
باید در مورد این پروژه عرض کنم که خوب ارائه شد .از همان بخش های اول تا بخش آزمایش همه ی مطالب به خوبی و به کمک شکل ها و تصاویر خوب و مفید توضیح داده شد.
استفاده از جدول برای نشان دادن دقت و فراخوانی خوب است که خیلی کم در پروژه ها دیده می شود اما در اینجا ارائه شد.
در کل همه قسمت ها خوب بود فقط در قسمت کد بهتر بود قسمت های مختلف کد توضیح داده می شد.
موفق باشید.