تشخیص دستنویس فارسی شهر های ایران

معرفی پروژه این پروژه با هدف جمع اوری دست خط فارسی شهر های ایران به منظور تشخیص دستنویس اسمای شهر های ایران ایجاد شده است هدف اصلی این پروژه ایجاد یک بستر برای توسعه ی پروژه و ایجاد ocr  فارسی  میباشد که در اقدامات اینده پیش بینی میشود ابزار به کار گرفته شده در این پروژه الگوریتم های یادگیری عمیق و استفاده از فریم وورک tensor flow/keras   و شبکه های cnn, rnn  میباشد   جمع اوری مجموعه داده لازم به ذکر است که جمع اوری داده بصورت دستی و  توسط برنامه نویسان پروژه صورت گرفته بدین صورت که 436 دست خط متفاوت از اشخاص گوناگون جمع اوری شده و در نهایت مجموعه داده شامل 13402 عکس از دستنویس نام شهرهای ایران میباشد بدین صورت که حدود 16% داده از اقایان به رنج سنی 16 تا 22 و حدود 22% داده از خانم ها به رنج سنی 10تا 12 و حدود 62% داده از خانم ها به رنج سنی 16 تا 22 می باشد   نمونه  دیتا جمع اوری شده : مراحل پروژه

  1. جمع اوری داده
  2. Preprocess داده های جمع اوری شده
  3. ساخت مدل برای تشخیص دست نویس نام شهر ها
  4. مقایسه و بهبود مدل
  5. تست گرفتن از مدل
      Preprocess داده های جمع اوری شده   در ابتدا با استفاده از توابع تعریف شده در کد    class ImageProcessor داده های جمع اوری شده که با سطح افق و لنز دوربین دارای زوایای مختلف  بوده بصورت تمیز جهت تشخیص جدول مرتب شده  تحویل میگیریم   نمونه ورودی ImageProcessor :       خروجی ImageProcessor :    

سپس 31 خانه جدول که حاوی دستنویس فارسی شهرهای ایران است را از جدول با لیبل های 0 تا 30 استخراج کرده

بدین صورت که تمام خانه های جدول با لیبل 0 بصورت یکپارچه دستنویس یک شهر مشخص و منحصر بفرد از لیبل های دیگر میباشد

 

نمونه خانه کراپ شده از جدول:

        در مرحله بعد با خواندن  عکس های موجود در 31 فولدر برچسب گذاری شده ارایه numpy  از عکس های ورودی به همراه labels از ارایه های onehot شده هر image  میسازیم و سپس جهت خوانش جهت دار داداه ها که از راست به چپ و به صورت افقی خوانده و بررسی میشود ارایه تصاویر را resize(100,50)  وسپسtranspose  میکنیم    

ساخت مدل برای تشخیص دست نویس نام شهر ها   پس از ازمایش چندین مدل و بررسی validation_accuracy بدست امده مدل نهایی بهینه دارای 4 لایه کانولوشن و 2 لایه lstm  میباشد سعی شده در لایه های lstm الگو وتوالی نوشت حروف فارسی  باتوجه به حافظه دار بودن lstm  در هر مرحله از بررسی و دید کلی ان بر نتایج بررسی مراحل قبلی ، دقت مدل را بهبود یابد       مقایسه و بهبود مدل در نهایت امر پس از 50 epoch   در دومرحله 20 و سپس 30 تایی دقت و loss نهایی مدل به شرح زیردرامد [ loss : 0.6912925839424133 , accuracy : 0.900820255279541]     تست گرفتن از مدل برای نمایش نتایج تست گرفته شده از مدل از بخش test  جداشده در ابتدای پروژه که قبلا توسط مدل دیده نشده بهره میبریم تا نتایج نهایی در شرایطی نزدیک به واقعیت سنجیده شود در این بخش precision,recall,f1 score  وهمچنین     cinfusion matrix  مدل جهت قیاس به نمای گذاشته می شود لازم به ذکر است که شماره های 0 تا 30 لیبل  31 شهر موجود در داده ها می باشند  
Accuracy: 0.90
Classification Report:
               precision    recall  f1-score   support

           0       0.86      0.90      0.88        21
           1       0.89      1.00      0.94        25
           2       0.88      0.88      0.88        17
           3       1.00      0.92      0.96        24
           4       0.92      0.81      0.86        27
           5       0.88      0.92      0.90        24
           6       0.81      0.85      0.83        20
           7       0.84      0.94      0.89        17
           8       0.78      0.82      0.80        17
           9       0.90      0.86      0.88        21
          10       0.95      0.95      0.95        19
          11       0.94      0.89      0.92        19
          12       0.88      0.92      0.90        24
          13       0.90      0.79      0.84        24
          14       1.00      0.91      0.95        22
          15       0.95      0.95      0.95        21
          16       1.00      0.84      0.91        25
          17       0.77      1.00      0.87        20
          18       1.00      0.93      0.96        27
          19       0.93      1.00      0.97        28
          20       0.93      0.78      0.85        36
          21       0.96      0.96      0.96        25
          22       0.75      0.82      0.78        22
          23       0.94      0.88      0.91        17
          24       0.91      0.83      0.87        24
          25       0.72      0.93      0.81        14
          26       0.70      0.94      0.80        17
          27       1.00      1.00      1.00        15
          28       0.88      0.92      0.90        25
          29       1.00      0.77      0.87        13
          30       1.00      0.95      0.98        22

    accuracy                           0.90       672
   macro avg       0.90      0.90      0.90       672
weighted avg       0.91      0.90      0.90       672

Confusion Matrix

نتایج و برنامه های اینده با توجه به بررسی های انجام شده نشان میدهد که مدل برای انجام  classification  روی داده ها با توجه به تعداد محدود داده های حمع اوری شده دقت مطلوبی را ارائه میدهد در برنامه های اینده این پروژه انتظار میرود تا ضمن افزایش داده های موجود در دیتاست با افزایش دقت preprocess روی استخراج خانه های جدول  و بررسی حرف به حرف نام  فارسی دستنویس شهر ها توسطctc  به دقت عملکرد بالاتری در اینده دست یابیم