Tesseract-OCR در ویژوال استودیو - صفحه متن را تشخیص دهید. ما Tesseract را آموزش می دهیم که ما نیاز داریم

Tesseract - یک پلت فرم رایگان برای تشخیص نوری متن، منابع که گوگل در سال 2006 جامعه را ارائه داد. اگر شما یک نرم افزار را برای تشخیص متن بنویسید، احتمالا باید به خدمات این کتابخانه قدرتمند دسترسی داشته باشید. و اگر او با متن خود مقابله نگیرد، پس شما یک راه را ترک کرده اید - برای تدریس آن. این فرایند کاملا پیچیده است و بدون آشکار و گاهی اوقات به طور مستقیم با اقدامات جادویی تکمیل شده است. شرح اصلی است من تقریبا یک روز کامل برای درک تمام عمق خود نیاز داشتم، بنابراین می خواهم صرفه جویی کنم، امیدوارم گزینه قابل فهم تر آن باشد. بنابراین برای کمک به خودتان و دیگران از طریق این مسیر، دفعه بعد سریعتر می شوید.

0. چیزی که ما نیاز داریم

  • Tesseract در واقع
مونتاژ این کتابخانه تحت ویندوز قرار دارد (شما می توانید نصب را از مخزن رسمی دانلود کنید) و تحت لینوکس. برای اکثر توزیعهای لینوکس، Tesseract را به سادگی می توانید نصب کنید sudo apt-get نصب Tesseract-OCR، من باید منبع برای سیستم عامل مد روز من را اضافه کنم:
gedit /etc/apt/sources.list.
دمو http://notesalexp.net/debian/precise/ دقیق اصلی
wget -o - http://notesalexp.net/debian/alexp_key.asc
apt-key اضافه کردن alexp_key.asc
apt-get update
apt-get install tesseract-ocr
  • تصویر با متن برای آموزش
مطلوب است که این یک متن واقعی بود، که پس از آن باید تشخیص دهد. مهم است که هر نماد فونت در قطعه اسکن شده حداقل 5 بار، و ترجیحا 20 بار باشد. فرمت TIFF، بدون فشرده سازی، ترجیحا چندگانه نیست. بین تمام کاراکترها باید شکاف های قابل تشخیص را داشته باشند. تصویر ما را به یک پوشه جداگانه بفرستید و در فرم تماس بگیرید<код языка>.<имя шрифта>.exp<номер>.tif تصویر ممکن است یکی نباشد و آنها فقط باید فقط در نام فایل باشند. نام فایل های فرمت بسیار مهم هستند. در فایل ها با نام نادرست از ابزار که ما استفاده می کنیم، به اشتباهات تقسیم بندی، و غیره قسم می خوریم برای تعریف، ما فرض می کنیم که ما زبان SCC و فونت EEE را مطالعه می کنیم. بنابراین، با فایل اسکن CCC.EEE.EXP0.TIF تماس بگیرید

1. ایجاد و ویرایش فایل جعبه
برای. برای علامت گذاری شخصیت ها بر روی تصویر و تنظیم مسابقات خود از نمادهای متن UTF-8 فایل های جعبه ای هستند. این فایل های متنی معمولی است که در آن هر شخصیت مربوط به یک رشته با مختصات نماد و مستطیل در پیکسل ها است. در ابتدا، شما یک ابزار را از بسته Tesseract تولید می کنید:
tesseract CCC.EEE.EEE.EXP0 BATCH.NOCHOP MEELBOX
دریافت فایل ccc.eee.exp0.box در دایرکتوری فعلی. بهش نگاه کن. نمادها در ابتدای خط به طور کامل با شخصیت های فایل مطابقت دارند؟ اگر چنین است، پس شما نیازی به آموزش چیزی ندارید، می توانید به خوبی بخوابید. در مورد ما، به احتمال زیاد شخصیت ها هیچ کدام از موارد اساسا را \u200b\u200bهمزمان نخواهند داشت. کسانی که. Tesseract با دیکشنری پیش فرض نه تنها شخصیت ها را تشخیص نداد، بلکه بعضی از آنها را برای دو یا چند مورد در نظر گرفتند. شاید بخشی از شخصیت های ما "Stick"، I.E. به یک جعبه مشترک سقوط خواهد کرد و به عنوان یک شناخته خواهد شد. همه چیز نیاز به تعمیر قبل از رفتن به بیشتر. کار خسته کننده و دشوار، اما خوشبختانه تعدادی از خدمات شخص ثالث برای این وجود دارد. به عنوان مثال، من از PytestRainer-1.03 استفاده کردم. ما تصویر را به آنها باز می کنیم، جعبه جعبه با همان نام او خود را بیرون می کشد.
نیمی از روز گذشت ... شما با احساس رضایت عمیق با Pyteseracttrainer (شما فراموش نکنید که نتیجه را ذخیره کنید، درست است؟) و شما یک فایل جعبه درست دارید. حالا شما می توانید به مرحله بعدی بروید.

2. آموزش Tesseract
tesseract CCC.EEE.EEE.EEE.EEE.EEE.EE.EEE.EVP0 NOBATCH BOX.TRAIN
ما خطاهای زیادی را دریافت می کنیم، اما ما به چیزی مانند "105 حباب خوب" نگاه می کنیم. اگر این رقم به طور قابل توجهی بیشتر از تعداد شخصیت های "مورد مطالعه" باشد، این احتمال وجود دارد که آموزش به طور کلی موفق شود. در غیر این صورت، ما به ابتدا بازگشتیم. به عنوان یک نتیجه از این مرحله، شما یک فایل ccc.eee.eee.exp0.tr دارید

3. مجموعه نماد را حذف کنید
unicharset_extractertor ccc.eee.exp0.box.
ما مجموعه ای از کاراکترها را به عنوان یک فایل unicharset در دایرکتوری فعلی دریافت می کنیم، جایی که هر شخصیت و ویژگی های آن در یک خط جداگانه قرار دارد. در اینجا وظیفه ما ویژگی های شخصیت ها را بررسی و اصلاح می کند (ستون دوم در فایل). برای حروف کوچک از حروف الفبا، ما علامت 3 را برای بزرگ 5، برای نشانه گذاری 10 برای اعداد 8، هر چیز دیگری (نوع + \u003d -) علامت گذاری شده است 0 Hieroglyphs چینی و ژاپنی ما یادداشت 1. معمولا تمام علائم درست است، بنابراین این مرحله زمان زیادی است که شما نمی خواهید.

4. سبک فونت را توصیف کنید
یک فایل ccc.font_properties را با یک رشته واحد ایجاد کنید: eee 0 0 0 0 0.. در اینجا شما ابتدا نام فونت را بنویسید، سپس شماره 1 یا 0 علامت حضور شخصیت های سبک (به ترتیب، آداب و رسوم صحیح صفاف فرکتور ثابت شده است) . در مورد ما هیچ سبک وجود ندارد، بنابراین همه چیز را در صفر ها ترک می کنیم.

5. خوشه های ارقام، نمونه های اولیه و سایر سحر و جادو
برای مطالعات بیشتر، ما باید سه عملیات دیگر انجام دهیم. شما می توانید سعی کنید معنای خود را از توصیف رسمی درک کنید، من قبل از آن نبودم. فقط انجام دهید:
shapeclustering -f ccc.font_properties -u unicharset ccc.eee.exp0.tr
... فایل shapetable
و سپس:
mftraining -f ccc.font_properties -u unicharset -o ccc.unicharset ccc.eee.exp0.tr
... دریافت فایل ها ccc.unicharset، inttemp، pffmtable
سرانجام:
cntraining ccc.eee.exp0.tr.
... ما فایل normproto را دریافت می کنیم.

6. واژه نامه ها
به لحاظ نظری پر از لغت نامه های کلمات اغلب استفاده شده (و کلمات در همه) به Tesseract-U کمک می کند تا با دودل های خود مقابله کنید. درک لغت نامه ها، اما اگر شما به طور ناگهانی می خواهید، فایل ها را ایجاد کنیدfrequent_words_list و words_list که در آن شما را وارد می کنید (هر کدام از یک خط جدید)، به ترتیب، اغلب استفاده می شود و به سادگی کلمات زبان.
برای تبدیل این لیست ها به فرمت صحیح، انجام دهید:
wordlist2dawg markent_words_list ccc.freq-dawg ccc.unicharset

wordlist2dawg words_list ccc.word-dawg ccc.unicharset

7. آخرین فایل مرموز
نام او Unicharambigs است. در تئوری، او باید به Tesseract در نمادهای مشابه توجه کند. این فایل متنی در هر ردیف با جداساز زبانه توسط جفت رشته ها توصیف می شود که می تواند هنگام تشخیص اشتباه گرفته شود. فرمت کامل فایل در مستندات شرح داده شده است، لازم نیست و من آن را خالی کردم.

8. آخرین تیم
تمام فایل ها باید تغییر نام داده شوند تا نام آنها با نام زبان شروع شود. کسانی که. فقط فایل ها در دایرکتوری باقی خواهند ماند:

ccc.box
ccc.inttemp
ccc.pffmtable
ccc.tif
ccc.font_properties.
ccc.normproto.
ccc.shapetable
ccc.tr.
ccc.unicharset.

و در نهایت، ما انجام می دهیم:
combine_tessdata ccc.
(!) نقطه واجب است. در نتیجه، ما فایل ccc.traineddata را دریافت می کنیم که به ما امکان می دهد که زبان جدید اسرارآمیز ما را به رسمیت بشناسم.

9. ما بررسی می کنیم که آیا ارزش آن را دارد :)
حالا سعی کنید نمونه ما را با استفاده از TesserAct-A آموزش داده شده تشخیص دهید:
sudo cp ccc.traineddata / usr / share / tesseract-ocr / tessdata /
tesseract CCC.TIF خروجی -L CCC
در حال حاضر ما به output.txt نگاه می کنیم و دوباره به دست می آوریم (یا به دست آوردن آن، بسته به نتیجه).

اگر راه حل های آماده شده وجود داشته باشد، هیچ معنایی برای اختراع عصا و دوچرخه ندارد. با استفاده از بدبینی های ویژه، این بیانیه نویسندگان CryptoLocker را اثبات کرده است که از Cryptoapi برای اهدافش استفاده می کند :). این درست است که تصمیم گیری امروز ما - رمزگشایی Capps (با اهداف آموزشی). به جلو، راه اندازی ویژوال استودیو!

معرفی

کل فرایند کار آینده را می توان به صورت مشروط به چند مرحله تقسیم کرد:

  • دانلود تصاویر؛
  • حذف صدا و دیگر اعوجاج مصنوعی؛
  • مناطق متصل (نمادها) را برجسته کنید، آنها را ذخیره کنید؛
  • آموزش به NeuRallet یا ایجاد یک فرهنگ لغت؛
  • تشخیص

این به ما کمک خواهد کرد:

  • Aforgenet - کتابخانه های بینایی کامپیوتر و هوش مصنوعی؛
  • Tesseract - برنامه برای تشخیص متن؛
  • fanndotnetwrapper - wrapper.net neuraletas fann؛
  • الگوریتم برای جستجوی انجمن CCLA از عمر Gameel Salem.

منبع در DVD.Syt.

فراموش نکنید که SABZH را دانلود کنید، برای خواندن این مقاله مفید خواهد بود. هیچ مالاوری، هیچ افراط گرایی تنها علم تمیز نیست، تنها تکنولوژی OCR، تنها هاردکور!

مرحله آماده سازی

ما ویژوال استودیو را راه اندازی می کنیم و یک پروژه جدید پنجره را در C # ایجاد می کنیم. آن را در اکسپلورر باز کنید تا فایل های مورد نیاز را کپی کنید.


برای آموزش شبکه عصبی، فان بخشی از کد را از Tesseract استفاده می کند، تفاوت این است که ما یک فایل متنی دنیا را ایجاد می کنیم، که در آن خط اول تعداد تصاویر است، تعداد نقاط در هر (عرض ضرب شده توسط ارتفاع) و تعداد خروجی ها (حروف، که ما به دنبال آن هستیم). خود حمل و نقل اجباری، برای اختصاص تنها دو حالت هر نقطه (1 - سیاه و سفید، 0 - رنگ سفید)، و موجب صرفه جویی در بیشتر در همان فایل در تمام خطوط زیر است. برای راحتی و توانایی استفاده از فایل های مختلف آموزش شده از پیش ساخته شده ANN، یک فایل پیکربندی متنی اضافی ایجاد شد. این شامل یک خط است و تعداد نقاط و خروجی ها را با مقادیر آنها نشان می دهد، به طور تصادفی شروع به بررسی CAPTCHA در یکی دیگر از فایل های ANN کار نمی کند.

رشته a \u003d file.Readaltext (savefilespath + "config.txt")؛ رشته b \u003d a.split ("")؛ int sumpix \u003d convert.toint32 (ب)؛ int outpt \u003d convert.toint32 (b.length)؛ لایه های UINT \u003d ((Uint) Sumpix، (Uint) لایه ها، خروجی (UINT) خروجی)؛ net.createstandardarray (لایه ها)؛ Net.RandomizeWeights (-0.1، 0.1)؛ net.setlearningrate (0.7F)؛ trainingdata data \u003d new trainingdata ()؛ data.readtrainfromfile (savefilespath + "train.tr")؛ Net.trainondata (داده، 1000، 0، 0.001F)؛ net.save (savefilespath + "fannlearning.ann")؛

ما پیکربندی را دریافت می کنیم، پارامترها را بخوانیم، تعداد لایه ها (لایه ها) را در توصیه ویکیپدیا به 120 تنظیم می کنیم، هر چیز دیگری به صورت تصادفی یا قابل توجه در شبکه انتخاب شد. سرعت یادگیری بستگی به قدرت آهن شما دارد و آنچه که در بالا نوشته شده است. به عنوان مثال، i7-4702MQ در 6500 عکس با یک هسته چند دقیقه 20-30 مشغول بود.

مرحله ششم به رسمیت شناختن

در مرحله نهایی، دو رویکرد اجرا شد، اما آموزش آنها انجام شد. Tesseract 3.02 و FANN در پایین سمت چپ پنجره اصلی قرار دارند. اولین می تواند به زبان انگلیسی جستجو کند (کاراکترهای از لیست کشویی را انتخاب کنید)، روسی، ریاضی و فرهنگ لغت کاربر. جستجو برای یک فرهنگ لغت به طور خودکار رخ می دهد و همه موجود در Tooltip نمایش داده می شود. دوم متن را در دکمه Fennoc به رسمیت می شناسد و صفحه سمت چپ پنجره را نشان می دهد) نتیجه تجزیه و تحلیل برای هر نماد انتخاب شده. این بسیار راحت است که ببینیم چرا شبکه عصبی یک یا چند خروجی را انتخاب کرده است. در نظر بگیرید که چگونه در مورد یک شبکه عصبی کار می کند.

رشته خصوصی OCR (Bitmap IMG) (... intmap img \u003d img.width * img.height؛ اگر (summpix! \u003d whx) (/ * نمایش یک خطا، تعداد پیکسل * /) دو ورودی \u003d GetPix (IMG) ؛ نتیجه دو برابر \u003d net.run (ورودی)؛ اگر (tempanswer.length! \u003d نتیجه) (/ * نمایش خطا، تعداد دیگری از خروجی ها * /) int maxn \u003d findmax (نتیجه)؛ پاسخ \u003d convert.tostring (tempanswer)؛ اگر (tologevent! \u003d null) tologevent (نتیجه، tempanswer، پاسخ)؛ ...))

آنها یک عکس از روش عمومی دریافت کردند، جایی که Net.CreateFromFile (Savefilespath + "Fannlearning.ann") و خواندن یک پیکربندی فایل، Tempanswer یک متغیر برابر با B است، آن را لیستی از نامه هایی که ما دنبال آن هستیم، لیست می کنیم. مقایسه تعداد پیکسل ها، آنها را به یک آرایه بنویسید و از طریق Ann آموزش دیده، به دنبال حداکثر درصد بالایی از تصادف، پس از آن ما نتیجه را در یک رویداد با انتخاب یک خروجی هدایت می کنیم و نامه ای را که بعد از آن ثابت شده است، دریافت می کنیم.

بحث در مورد نتایج

نتایج آزمون من به شدت به تعداد و کیفیت تصاویر برای یادگیری، و در مورد شبکه عصبی فان - و بر تعداد خروجی ها نیز بستگی دارد. به طور متوسط، CAPTCHA، قابل قبول به فیلترها، 80٪ از تشخیص صحیح داشت، پس از آن بسیار بستگی به کمال و میل - که شما تدریس می کنید، آن را دریافت خواهید کرد. نکته اصلی این است که کار می کند.

نتیجه

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

من را به دریافت مقادیر اعداد مسدود شده بردم. شماره دزدیده شده از صفحه نمایش

من فکر کردم، و سعی نکنید OCR را امتحان کنید؟ من سعی کردم Tesseract.

در زیر من به شما می گویم که چگونه سعی کردم تسار را انطباق کنم، چرا من آن را آموزش دادم، و چه اتفاقی افتاد. این پروژه در Hithabe یک اسکریپت CMD است که به طور خودکار زمان پردازش تمرین را خودکار می کند و اطلاعاتی که من آموزش داده ام را انجام می دهم. به یک کلمه، همه چیز شما نیاز به آموزش Tesseract برای آموزش چیزی مفید است.

آماده سازی

کلونینگ مخزن یا دانلود آرشیو ZIP (~ 6MB). نصب Tesserator 3.01 با استفاده از. اگر دیگر وجود ندارد، پس از زایمان ZIP Subdirectory / Distros.

به پوشه نمونه بروید، اجرا کنید montage_all.cmd.
این اسکریپت یک تصویر نهایی را ایجاد می کند. نمونه / total.png.، شما نمی توانید اسکریپت را شروع کنید، زیرا من قبلا آن را در پوشه ریشه پروژه قرار دادم.

چرا قطار؟

شاید و بدون آموزش نتیجه خوب خواهد بود؟ بررسی.
./Exp1 - به عنوان\u003e tesseract ../total.png مجموع

موقعیت اصلاح شده را در فایل قرار دهید model_total.txtبرای مقایسه نتایج به رسمیت شناختن. ستاره ستاره مقادیر اشتباه را نشان می دهد.

model_total.txt به رسمیت شناختن
پیش فرض
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255

خطاهای تشخیص پیش فرض

می توان دید که خطاهای زیادی وجود دارد. اگر به دقت نگاه کنید، می توانید ببینید که نقطه اعشار شناخته نشده است، اعداد 6 و 8 به عنوان 5. به رسمیت شناخته شده است. آیا تمرین کمک به خلاص شدن از شر خطاها؟

تمرین

Tracting Tesseract به شما اجازه می دهد تا آن را بر روی تشخیص تصاویر متون در فرم که در آن شما تصاویر مشابه آن را در فرآیند تشخیص تغذیه می کنید، سوار شوید.
شما تصاویری آموزش Tesseract را منتقل می کنید، اشتباهات به رسمیت شناختن را اصلاح می کنید و این جهت ها را به Tesseract-Y منتقل می کنید. و او ضرایب الگوریتم های خود را اصلاح می کند تا از خطاهای شما پیدا شود.

برای انجام تمرینی که می خواهید اجرا کنید. / Exp2 - آموزش دیده\u003e train.cmd

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

نتایج این کار به Total.Box می نویسد، که به نظر می رسد این است:
2 46 946 52 956 0
7 54 946 60 956 0
3 46 930 52 940 0
3 54 930 60 940 0
3 46 914 52 924 0
9 53 914 60 924 0
6 31 898 38 908 0
2 40 898 46 908 0
5 48 898 54 908 0
0 59 898 66 908 0

در اینجا در نماد ستون Singel، و در 2 تا 5 ستون مختصات گوشه پایین سمت چپ مستطیل، ارتفاع و عرض آن.

البته، آن را به صورت دستی و ناراحت کننده ویرایش می کند، بنابراین تأسیسات گرافیکی تسهیل این کار توسط علاقه مندان ایجاد شده است. من در جاوا نوشته بودم

پس از راه اندازی. / exp2 - آموزش دیده\u003e java -jar jtessboxeditor-0.6jtessboxeditor.jar شما نیاز به باز کردن فایل. / exp2 - threated / total.png، فایل به طور خودکار باز خواهد شد. / exp2 - آموزش / total.box و مستطیل تعریف شده در آن بر روی تصویر آموزش قرار می گیرد.

در قسمت چپ، محتویات فایل total.box در سمت راست داده می شود یک تصویر آموزشی وجود دارد. بالاتر از تصویر خط فعال فایل total.box است

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

من تمام اشتباهات 5-ki را در سمت راست 6-ki و 8 اصلاح کردم، ردیف ها را با تعاریف تمام نقاط اعشار در فایل اضافه کردم و Total.box را ذخیره کردم

پس از ویرایش کامل است، لازم است که اسکریپت همچنان به کار خود ادامه دهد، شما باید JTessboxEditor را ببندید. علاوه بر این، تمام اقدامات توسط یک اسکریپت به طور خودکار بدون مشارکت کاربر انجام می شود. اسکریپت نتایج آموزش را تحت کد TTN می نویسد

برای استفاده از نتایج یادگیری هنگام تشخیص، شما باید Tesseract C Key -L TTN را شروع کنید
./Exp2 - آموزش دیده /\u003e Tesseract ../total.png Total-TTN TTN

می توان دید که تمام اعداد به درستی به درستی شناخته شدند، اما نقطه اعشاری هنوز به رسمیت شناخته نشده است.

model_total.txt به رسمیت شناختن
پیش فرض
به رسمیت شناختن
پس از تمرین
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255

خطاهای تشخیص یادگیری

بزرگنمایی تصویر

شما می توانید به روش های مختلف افزایش دهید، من دو راه را امتحان کردم: مقیاس و تغییر اندازه

total-scaled.png (قطعه) total-resized.png (قطعه)
تبدیل total.png total-scaled.png -scale "208x1920" تبدیل Total.png Total-resized.png -Resize "208x1920"

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

می توان دید که در تصویر Total-Scaled.png Tesseract 7-Ku را با 2nd گیج می کند، و مجموع آن را تغییر نمی دهد. png. در هر دو تصویر، نقطه اعشار درست است. تشخیص تصویر مجموع تغییر اندازه. png تقریبا کامل است. تنها سه خطا وجود دارد - شکاف بین اعداد در اعداد 21، 114 و 61.

اما این خطا مهم نیست، زیرا آسان است که آن را به راحتی از خطوط فضایی حذف کنید.

خطاهای تشخیص Scaled.png

خطاهای تشخیص کامل تغییر یافته است

model_total.txt به رسمیت شناختن
پیش فرض
به رسمیت شناختن
پس از تمرین
total-scaled.png. total-resized.png.
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255
22*
33
39
625.05
9
163
1,240.10*
15
36
45
22*
324
468
93
453
1,200.10
80.10
152.25
158.25
126.02*
92.50*
120.62*
54
102
162
28*
136.50
443.62
633.24*
24
1,529.23*
1,526.23*
332.23
952.69*
954.69
963.68
1,441.02
1,635.34
50
26*
168
2 1*
48
30
42
108
126
144
1 14*
462
328*
522
60
240
246
459.69
456.69
198
6 1*
255
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
2 1*
48
30
42
108
126
144
1 14*
462
378
522
60
240
246
459.69
456.69
198
6 1*
255

دیجیتالی سازی تصاویر یک به یک

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

من یک به یک سعی می کنم.
./Exp5 - یک به یک\u003e برای / r٪ i در (* .png) آیا Tesseract "٪ I" "٪ I"
اعداد دو و سه رقمی در همه مشخص نیستند!

625.05
1740.10

دیجیتالی سازی بسته های کوچک

و اگر می خواهید تصاویر را با بسته های چند عکس (6 یا 10 در بسته) دیجیتالی کنید؟ ده بار
./exp6 - 10 در خط\u003e Tesseract Teninline.png Teninline

شناخته شده، و حتی بدون شکاف در میان 61.

نتیجه گیری

به طور کلی، من انتظار بدترین نتایج را داشتم، زیرا فونت های کوچک روستر یک مورد مرزی به دلیل اندازه کوچک آنها، دانه های متمایز و پایداری هستند - تصاویر مختلف از یک نماد به طور کامل همزمان است. و این تمرین نشان داده است که ارقام مصنوعی الهام گرفته شده بهتر شناخته شده اند.

تصویر قبل از پردازش اثر بیشتری نسبت به یادگیری دارد. افزایش با صاف کردن: تبدیل -Resize ...

شناخت جداگانه "کوتاه" دو و سه رقمی تعداد نامطمئن ها - اعداد باید در بسته ها جمع آوری شوند.

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

این مقاله در مورد روش تدریس زبان روسی از سیستم OCR باز Tesseract توسعه یافته توسط Hewlett-Packard مقایسه می شود.

[Vlasov Igor (Igorvlassov در Narod Dot Ru)]

من به دنبال یک OCR Divecha در اینجا برای یک پروژه تک زبان انگلیسی بودم. و به سادگی با وضعیت امور مربوط به زبان مادری آشنا شد. OCR رایگان قادر به شناخت سخنرانی بومی، من آن را پیدا نکردم. اما بر روی پروژه تساراکت متوقف شد. این یک OCR چند پلت فرم تجاری تجاری است که توسط Hevlet Packard توسعه یافته است. در حال حاضر او، اولا، تحت مجوز Apache V.2 اعمال می شود. و در مرحله دوم، می توان سعی کرد تا برخی از زبان های جدیدی را آموزش دهد که ما سعی خواهیم کرد. بنابراین، ما یک کتابچه راهنمای کاربر را به نام TradingTesseract خواندیم:

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

هنگام تهیه یک پرونده آموزشی، باید موارد زیر را به یاد داشته باشید:

    حداقل تعداد نمونه های هر نماد مورد نیاز است. 10 - خوب، اما 5 به اندازه کافی برای شخصیت های نادر است، و برای اغلب حداقل 20؛

    غیر ممکن است که شخصیت های غیر خلیج را به هم متصل کنید، شما باید متن را واقع گرایانه تر کنید، مثلا:
    در ضخامت جنوب، یک مرکبات وجود داشت اما یک کپی نادرست بود. 0123456789 [ایمیل محافظت شده]#$%^&(),.{}<>/? - وحشتناک. خیلی بهتر:در ضخامت (جنوب) زندگی می کردند - (بود) مرکبات، بله! ولی؟<фальшивый> $3456.78 نمونه، مثال# 90 / tomato "12.5٪

    خوب است که متن را با افزایش فواصل بینابینی و interersimilar بکشید.

    داده های آموزشی باید در یک صفحه مناسب باشند؛

    بدون نیاز به آموزش چند اندازه، به اندازه کافی بر روی اندازه فونت 10. اما برای ارتفاع متن، کمتر از 15 پیکسل برای آموزش به طور جداگانه یا بزرگنمایی تصویر قبل از تشخیص.

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

من سعی خواهم کرد این کار را فقط برای فونت Thorndale AMT انجام دهم، که بر روی دسکتاپ من تحت SUSE10 در OpenOffice به نظر می رسد تقریبا مثل زمان جدید رومی تحت ویندوز است. بنابراین، من یک فایل جداگانه با متن فوق در مورد cytrus fontfile.odt، من چاپ، اسکن و نگه داشتن در BMP سیاه و سفید bmp fontfile.bmp.

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

tesseract fontfile.bmp fontfile batch.nochop جعبه

به عنوان یک نتیجه، فایل fontfile.txt را معلوم کرد که باید در fontfile.box تغییر نام داده شود

این چیزی است که من وجود دارد:

متر 85 132 111 154

z 114 137 130 154

x 133 137 150 154

{ 170 130 180 162

متر 186 137 137 210 154

r 214 137 228 154

233 137 248 154

} 254 130 264 162

متر 284 137 306 154

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

به نظر می رسد OPS با 2 حرف جایگزین شود:

متر 85 132 111 154

در این مورد، لازم است که مستطیل های توصیف شده را به صورت زیر ترکیب کنیم:

    شماره اول (سمت چپ) باید حداقل 2 خط باشد (67)

    شماره دوم (پایین) باید حداقل 2 خط باشد (132)

    شماره سوم (راست) باید حداکثر 2 خط باشد (111)

    شماره چهارم (بالا) باید حداکثر 2 خط باشد (154)

sO: SH 67 132 111 154

نکته: سیستم مختصات مورد استفاده در این فایل با (0.0) آغاز می شود و از پایین به بالا و از سمت چپ به راست هدایت می شود.

به نظر می رسد Fuh اصلاح شود در حال حاضر ما Tesseract را در حالت یادگیری اجرا می کنیم:

tesseract FontFile.BMP JUNK NOBATCH BOX.TRAIN

و STDERR (یا TESSRACT.LOG را تحت ویندوز تماشا کنید). اگر خطاهای نوع FAAT وجود دارد،

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

apply_boxes: fatality - 0 نمونه های برچسب شده از "٪" - هدف 2 است

جعبه خواندن از BoxFile: 89

در ابتدا Blobs برچسب ها: 87 در 3 ردیف

شکست جعبه شناسایی: 2

blobs duped برای تعادل: 0

"٪" دارای کمترین نمونه است: 0

کل کلمات بدون برچسب: 1

کلمات نهایی برچسب شده: 87

تولید داده های آموزشی

آموزش ... نام فونت \u003d UnknownFont.

داده های آموزشی تولید شده برای 87 blobs

با این حال، fontfile.tr تولید شده است. خوب، من بدون هیچ نشانه ای به هیچ وجه انجام خواهم داد، به طور کلی لازم بود که بیش از همه کاراکترها را انجام دهم، حداقل این مدت زمان پاشنه را تکرار کنید.

در تئوری، من باید این روش را برای فونت های مختلف تکرار کنم و چندین فایل مختلف را دریافت کنم، سپس نمونه های اولیه را با استفاده از دستورات نوع ایجاد کنید:

mftraining fontfile_1.tr fontfile_2.tr ...

به عنوان یک نتیجه، 2 فایل باید به دست آورد: INTTEMP (نمونه های اولیه فرم ها) و pffmtable , سپس

cntraining fontfile_1.tr fontfile_2.tr ...

یک فایل normproto ایجاد کنید (نمونه های اولیه برای عادی سازی شخصیت ها؟).

من آن را بیش از یکی از فایل هایم انجام می دهم. چیزی معلوم شد حالا شما باید Tesseract را مشخص کنید "با بسیاری از کاراکترهایی که می تواند خروجی را تولید کند. ما از دستور unicharset_extractor برای تولید فایل Unicharset استفاده می کنیم:

unicharset_extractertor fontfile_1.box fontfile_2.box ...

ما انجام می دهیم در فایل نتیجه، شما باید نوع نماد را با استفاده از یک ماسک مشخص کنید، چنین ماسک: اگر نامه 1 باشد، اگر نامه کوچک 1 باشد، اگر یک حرف بزرگ 1 باشد، اگر رقم -1، در غیر این صورت 0 باشد.

مثلا،

ب - نامه کوچک ماسک او 0011 یا هگزادسیمال 3

؛ - یک حرف نیست، نه یک رقم. ماسک \u003d 0

7 - فقط یک رقم ماسک 1000 یا هگزادسیمال 8.

B یک نامه بزرگ است. ماسک 0101 یا هگزادسیمال 5

من تمام نامه ها کوچک هستم ماسک را به 3 تغییر می دهم

در حال حاضر لازم است دو لیست را در جایی، یکی - اغلب کلمات پیدا، دوم - کلمات دیگر و تبدیل آنها به فرمت DAWG با استفاده از ابزار دیگری:

wordlist2dawg frequent_words_list freq-dawg

wordlist2dawg words_list word-dawg

برای شروع، من به سادگی در هر 5 کلمه دلخواه گیر کرده ام.

فایل سوم، کلمات کاربر معمولا خالی است.

آخرین فایل که باید انجام شود، Dangambigs نامیده می شود در آن توصیف موارد جایگزینی اشتباه از یک فایل به دیگری، به عنوان مثال

اولین رقم تعداد کاراکترهای گروه اول است، دوم - تعداد کاراکترها در دوم.

این خط نشان می دهد که گاهی اوقات می تواند به صورت نادرست به عنوان SH شناخته شود.

این فایل نیز m است. خالی.

حالا همه ما با هم جمع می کنیم. فایل ها

    freq-dawg

    کلمه-داوگ

    کاربر واژه ها

    inttemp

    normproto

    pffmtable

    unicharset

    Dangambigs.

ما پیشوند RUS را عرضه می کنیم و در آنجا قرار داریم، جایی که دیگر واژه نامه ها، من آن را / usr / محلی / اشتراک گذاری / temssdata دارم

همه چيز!!!

ما سعی می کنیم هر فایل را تشخیص دهیم. من سعی خواهم کرد خودم را در مورد مرکبات شروع کنم:

tesseract Image.BMP خروجی -L RUS

این چیزی است که من انجام دادم:

در Cheyah (جنوب)، Zhvl- (چه) Tschtler، بله! ولی؟

<(1ьалвьшвый> $ 3456.78 کپی # 90

cAPELVES / AMBORE "12.5

البته، نه فوق العاده، اما برای اولین بار، و چنین نمونه ای ناقص و فرهنگ لغت، من فکر می کنم، بد نیست!

ایگور ولاسوف (ایگورلوسوف در نادود داتو) - تسارات در روسیه

Tesseract-OCR یک کتابخانه رایگان برای تشخیص متن است. به منظور اتصال آن به شما نیاز به دانلود اجزای زیر:
Leptonica - http://code.google.com/p/leptonica/downloads/detail؟name\u003dleptonica-1.68-win32-lib-include-dirs.zip.
آخرین نسخه Tesseract-OCR (در حال حاضر 3.02 است) - https://code.google.com/p/tesseract-oc/downloads/detail؟name\u003dtesseract-3.02.02-win32-lib-include-dirs .zip & can \u003d 2 & q \u003d
داده های یادگیری کار - https://tessract-ocr.googlecode.com/files/tesseract-oqu-3.02.rus.tar.gz
هر کس می تواند به طور مستقل با دانلود کد های منبع جمع آوری شود، اما ما این کار را انجام نخواهیم داد.

با ایجاد یک پروژه جدید، مسیرهای اتصال به فایل های LIB و H را وصل کنید. و یک کد ساده بنویسید
#عبارتند از. #عبارتند از. Int Main () (Tesseract :: Tessbaseapi * MyOCR \u003d جدید تسارات :: Tessbaseapi ()؛ Printf ("Tesseract-OCR نسخه:٪ s \\ n"، myoco-\u003e نسخه ())؛ printf ("نسخه Leptonica:٪ s \\ n "، getleptonicasiony ())؛ اگر (myoR-\u003e init (null،" rus)) (fprintf (stderr "، نمی تواند Tesseract را راه اندازی کند. \\ n")؛ خروج (1)؛) PIX * PIX \u003d PIXREAD ("test.tif")؛ MyOCR-\u003e SetImage (PIX)؛ Char OutText؛ LSTRCPY (OutText، MyOFR-\u003e Getutf8Text ())؛ PRINTF (OCR خروجی: \\ n \\ n ")؛ printf -\u003e پاک کردن ()؛ MyOCR-\u003e End ()؛ PixDestroy (و PIX)؛ بازگشت 0؛)

فایل های lib را وصل کنید:
libteseratoract302.Lib.
Liblept168.Lib

کامل - برنامه با موفقیت ایجاد شده است. به عنوان مثال، تصویر زیر را بگیرید:

ما برنامه را اجرا می کنیم تا اطلاعات در فایل نمایش داده شود (از آنجا که UTF-8 در کنسول Capo خواهد بود):
تست\u003e a.txt

محتوای فایل زیر:
Tesseract-OCR نسخه: 3.02
نسخه Leptonica: Leptonica-1.68 (مارس 14 2011، 10:47:28)
خروجی OCR:

، جایگزینی این عبارت در (63)، ما آن را می بینیم
با عنوان تک باند، سیگنال صنعتی است
و عمق مدولاسیون برابر با یک است.
7 Envelope Ho) سیگنال اولیه به طور مستقیم
غیر ممکن است که اسیلوسکوپ را مشاهده کنید، بنابراین
چگونه این سیگنال باریک باند است، و ما
"Case" Clarity وجود ندارد، اما
با مدولاسیون تک باند، باریک
'سیگنال ماهی قزل آلا با همان پاکت، و سپس او
"و خود را به صراحت و گاهی اوقات (به عنوان در OP
"مورد آفتابی) باعث سردرگمی در ذهن ضعیف می شود
و محققان ..
6.4. "فرمول کاستا"
GU.
با ظهور OM در کتاب های درسی، قهوه `
Estatys و Monographs از بین بردن سوال
چگونه برنده می شود انتقال از دامنه
مدولاسیون به تک خط. خیلی بیان شده بود
نظرات ناسازگار در ابتدای 60 سالگی از ame-
دانشمند ریکان J. Kostas این را نوشت، نگاه کنید به
ادبیات مجله Trebuned در OHM، او
در هر مقاله کشف شده است تخمین انرژی
"پاک کردن برندهای در مورد am-two to
دوازده چندگانه در نتیجه، او نصب شد
- برنده، نشان داده شده در هر مقاله،
این باعث می شود تقریبا (Z-K-S!) DB، که در آن M-number co-'g
\u003e نویسندگان این مقاله.
E، '11 اگر این شوخی و نادرست باشد، هنوز درست است
"موسیقی نشان دهنده بلوغ است که وجود داشت
؛ در آن سالها. علاوه بر این واقعیت که نویسندگان مختلف
D در مقایسه با شرایط مختلف و یک بار m بود
، NOMU تعیین برندهای انرژی، آنها SO-1 هستند
'،' همان اجازه بسیاری از اشتباهات مختلف. چهار "
، در اینجا نمونه هایی از برخی استدلال ها وجود دارد. "،
1. با معمول AM، اعتقاد به "حامل قدرت"