TESSERACT-OCR في Visual Studio - تعرف على صفحة النص. نحن ندرب tesseract ما نحتاجه

tesseract. - منصة مجانية للاعتراف البصري بالنص، قدمت مصادر Google المجتمع في عام 2006. إذا كتبت برنامجا للتعرف على النص، فربما يجب عليك الوصول إلى خدمات هذه المكتبة القوية. وإذا لم تكن تعامل مع النص الخاص بك، فسيكون لديك طريقة واحدة - لتعليمها. هذه العملية معقدة للغاية وتملد مع عدم وجود ما هو واضح وأحيانا مباشرة مع الإجراءات السحرية. الوصف الأصلي هو. كنت بحاجة إلى يوم كامل تقريبا لفهم كل أعماقه، لذلك أريد أن أحفظ، آمل أن يكون خيارا أكثر فهمه. لذلك لمساعدة نفسك والبعض الآخر يمر عبر هذا الطريق في المرة القادمة بشكل أسرع.

0. ما نحتاجه

  • tesseract في الواقع.
تجميع هذه المكتبة تحت ويندوز (يمكنك تنزيل المثبت من المستودع الرسمي) وتحت Linux. بالنسبة لمعظم توزيعات Linux، يمكن ببساطة تثبيت Tesseract من خلال sudo Apt - احصل على تثبيت 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 - الحصول على تثبيت Tesseract-OCR
  • الصورة مع نص للتدريب
من المرغوب فيه أن يكون نص حقيقي، ثم يجب أن يتعرف عليه. من المهم أن يلتقي كل رمز خط في الجزء الممسوح ضوئيا 5 مرات على الأقل، ويفضل 20 مرة. تنسيق TIFF، دون ضغط، ويفضل أن لا تضاعف. بين جميع الشخصيات يجب أن تكون تمييز الثغرات بشكل واضح. ضع صورتنا في دليل منفصل واتصل في النموذج<код языка>.<имя шрифта>.EX.<номер>. TIF قد لا تكون الصورة واحدة واختلافا يجب أن الرقم فقط في اسم الملف. أسماء الملفات التنسيق مهمة جدا. على الملفات التي تحتوي على أسماء غير صحيحة للأداة المساعدة التي سنستخدمها ستؤدي إلى تقسيم أخطاء تجزئة، إلخ. للحصول على الدليل، نفترض أننا ندرس لغة SCC وخط EEE. وبالتالي، اتصل بالملف مع نموذج المسح CCC.EEE.EXP0.TIF

1. إنشاء وتحرير ملف مربع
ل. لوضع علامة على الأحرف على الصورة وتعيين مطابقاتهم من رموز النص UTF-8 هي ملفات المربع. هذه هي الملفات النصية المعتادة التي يتوافق فيها كل حرف مع سلسلة مع رمز وإحداثيات مستطيلة في بكسل. في البداية، يمكنك إنشاء أداة مساعدة من حزمة Tesseract:
tesseract ccc.eee.eee.exp0 batch.nochop makebox
تلقى ملف ccc.eee.exp0.box في الدليل الحالي. انظر إليه. الرموز في بداية السطر تطابق تماما الأحرف في الملف؟ إذا كان الأمر كذلك، فأنت لا تحتاج إلى تدريب أي شيء، فيمكنك النوم جيدا. في حالتنا، من المرجح أن تتزامن الشخصيات أي من العدد بشكل أساسي. أولئك. لم يتعرف TESSERATT مع القاموس الافتراضي ليس فقط على الشخصيات فحسب، بل تعتبر أيضا بعضها لشخصين أو أكثر. ربما جزء من الشخصيات التي سنقوم بها "عصا"، أي سوف تقع في صندوق مشترك وسيتم التعرف عليها كواحد. كلها تحتاج إلى إصلاح قبل أن تذهب أبعد من ذلك. العمل مملة ومثيرة، ولكن لحسن الحظ هناك عدد من المرافق الجهات الخارجية لهذا. على سبيل المثال، استخدمت Pytestrainer-1.03. نحن نفتح الصورة إليهم، ملف المربع بنفس الاسم الذي يسحبه نفسه.
مرت نصف يوم ... أنت مع شعور الرضا العميق مع pyteseracttrainer (لم تنسا أن تنقذ النتيجة، أليس كذلك؟) ولديك ملف مربع صحيح. الآن يمكنك الذهاب إلى الخطوة التالية.

2. تدريب tesseract
tesseract ccc.eee.eee.eee.eee.eee.ee.eee.evp0 nobatch box.train
نحصل على الكثير من الأخطاء، لكننا نبحث في شيء مثل "وجدت 105 النقطات الجيدة". إذا كان الرقم أكبر بكثير من عدد الأحرف "المدروسة"، أي فرصة أن التدريب ككل قد نجح. خلاف ذلك، نعود إلى البداية. نتيجة لهذه الخطوة، لديك ملف ccc.ee.eee.exp0.tr

3. إزالة مجموعة الرمز
unicharset_extractor ccc.ee.exp0.box.
نتلقى مجموعة من الأحرف كملف Unicharset في الدليل الحالي، حيث توجد كل حرف وخصائصه في خط منفصل. هنا ستحقق مهمتنا وتصحيح خصائص الأحرف (العمود الثاني في الملف). للحصول على خطابات صغيرة من الأبجدية، وضعنا علامة 3 لتصنيف 10، لعلامات علامات الترقيم 10 للأرقام 8، كل شيء آخر (النوع + \u003d -) ملحوظ 0. الصينية واليابانية الهيروغليفية نلاحظ 1. عادة ما تكون جميع العلامات على حق، لذلك هذه المرحلة هي الكثير من الوقت لن تأخذها.

4. صف نمط الخط
قم بإنشاء ملف CCC.Font_Properties مع سلسلة واحدة: EEE 0 0 0 0 0. يمكنك أولا كتابة اسم الخط، ثم يتم تصنيف الرقم 1 أو 0 وجود أحرف على النمط (على التوالي، ثابت مائل ثابت Serif Fraktur) وبعد في حالتنا لا توجد أساليب، لذلك نترك كل شيء في الأصفار.

5. مجموعات من الأرقام، النماذج الأولية وغيرها من السحر
لمزيد من الدراسات، نحتاج إلى أداء ثلاث عمليات أخرى. يمكنك محاولة فهم معناها من الوصف الرسمي، لم أكن قبل :). مجرد أداء:
shipeclustering -f ccc.font_properties - unicharset ccc.eee.exp0.tr
... ملف صبيح
وثم:
mftraining -f ccc.font_properties - u unicharset -o ccc.unicharset ccc.eee.exp0.tr
... احصل على ملفات ccc.unicharset، inttemp، pffmtable
أخيرا:
cntring ccc.eee.exp0.tr.
... نحصل على ملف normproto.

6. القواميس
يساعد ملء القواميس النظري من الناحية النظرية من الكلمات المستخدمة بشكل متكرر (والكلمات على الإطلاق) Tesseract-U للتعامل مع رواتفك. فهم القواميس، ولكن إذا كنت ترغب فجأة، فقم بإجراء الملفاتcustoment_words_list و Words_list_List التي تدخل فيها (كل من خط جديد)، على التوالي، تستخدم غالبا كلمات اللغة.
لتحويل هذه القوائم إلى التنسيق الصحيح، أداء:
wordList2Dawg متكرر_Words_List CCCREQ-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.

وأخيرا، نحن نؤدي:
compin_tessdata ccc.
(!) النقطة إلزامية. نتيجة لذلك، نحصل على ملف ccc.trainedda، مما سيسمح لنا كذلك بالتعرف على لغتنا الجديدة الغامضة.

9. نتحقق مما إذا كان الأمر يستحق كل هذا العناء :)
الآن دعونا نحاول التعرف على عينتنا باستخدام Tesseract المدربة بالفعل-A:
sudo CP CCC.TRISTATA / USR / Share / Tesseract-OCR / Tessdata /
tESSERACT CCC.TIF الناتج - L CCC
الآن نحن ننظر إلى الإخراج. وفرحت (أو الاستيقاظ، اعتمادا على النتيجة).

إذا كانت هناك حلول جاهزة، فليس من المنطقي اختراع العكازات والدراجات. مع السخرية الخاصة، أثبت هذا البيان مؤلفي Cryptolocker، الذين استخدموا Cryptoapi لأغراضه :). صحيح أن قرار مهمتنا اليوم - فك تشفير CAPPS (مع أغراض تعليمية، بالطبع). إلى الأمام، إطلاق Visual Studio!

مقدمة

يمكن تقسيم العملية برمتها للعمل القادم مشروطا إلى عدة مراحل:

  • تحميل الصور
  • إزالة الضوضاء وغيرها من التشويه الاصطناعي؛
  • تسليط الضوء على مجالات الترابط (الرموز)، وحفظها؛
  • تدريس Neurallet أو إنشاء قاموس؛
  • تعرف

هذا سوف يساعدنا:

  • offorgenet - مكتبات رؤية الكمبيوتر والذكاء الاصطناعي؛
  • TESSERACT - برنامج التعرف على النص؛
  • FANNDOTNETWRAPPER - Wrapper.net Neuraletas Fann؛
  • خوارزمية للبحث عن جمعية CCLA من عمر غول سالم.

المصدر على dvd.syt.

لا تنس تنزيل Sabzh، سيكون من المفيد لك عند قراءة هذه المقالة. لا مالفاري، لا التطرف هو فقط العلوم النظيفة، فقط تكنولوجيا التعرف الضوئي، المتشددين فقط!

المرحلة التحضيرية

لدينا Visual Studio وإنشاء مشروع نافذة جديد في C #. افتحه في المستكشف، من أجل نسخ الملفات المطلوبة هناك.


لتدريب الشبكة العصبية، استخدم FANN جزءا من التعليمات البرمجية من TESSERACT، الفرق هو أن ننشئ ملف نصي قطار واحد، حيث يكون السطر الأول عدد الصور، وعدد النقاط في كل (مضروب في الارتفاع) وعدد النواتج (الحروف، التي نبحث عنها). القفنة الإلزامية نفسها، لتخصيص دولتين فقط لكل نقطة (1 - أسود، أبيض اللون أبيض)، وتوفر مزيدا من الملفات نفسها في جميع الأسطر التالية. للحصول على الراحة والقدرة على استخدام ملفات Ann المدربة مسبقا مختلفة مسبقا، تم إنشاء ملف نصي إضافي Config.txt. يتكون من سطر واحد ويشير إلى عدد النقاط والمخرجات مع قيمها، بدءا من غير قصد التحقق من التحقق من كلمة التحقق على ملف Ann آخر لن يعمل.

string a \u003d file.ReadalText (savefilespath + "config.txt")؛ سلسلة B \u003d A.Split ("")؛ int sumpix \u003d convert.toint32 (b)؛ int intpt \u003d convert.toint32 (b.length)؛ طبقات uint \u003d ((uint) sumpix، (uint) الطبقات، (uint) الإخراج)؛ net.createstandardarray (طبقات)؛ net.randomizeweights (-0.1، 0.1)؛ net.setlearningrate (0.7F)؛ بيانات TrainingData \u003d تدريبات جديدة ()؛ data.ReadtrainFromFile (SaveFilespath + "Train.tr")؛ net.trainondata (البيانات، 1000، 0، 0.001F)؛ Net.AVE (SaveFilespath + "Fannlearning.ann")؛

نتلقى التكوين، وقراءة المعلمات، وعدد الطبقات (الطبقات) في توصية Wikipedia تم تعيينها إلى 120، تم اختيار كل شيء آخر بشكل عشوائي أو ملحوظ على الشبكة. تعتمد سرعة التعلم على قوة حديدك وما هو مكتوب أعلاه. على سبيل المثال، كان i7-4702MQ في 6500 صورة مع كور واحد مشغول 20-30.

الخطوة السادسة. تعرف

في المرحلة النهائية، تم تنفيذ نهجين، لكن التدريب الذي تم تنفيذه. يوجد TESSERACT 3.02 و FANN في أسفل يسار النافذة الرئيسية. الأول يمكن البحث عن اللغة الإنجليزية (اختر الأحرف من القائمة المنسدلة)، قاموس اللغة الروسية والروسية والمستخدم. يتم حدوث البحث عن القاموس تلقائيا ويتم عرض جميع متوفرة في تلميح الأدوات. تدرك الثانية النص الموجود على زر FANNOCR ويعرض (الجزء الأيسر من النافذة) نتيجة التحليل لكل رمز محدد. من المناسب للغاية بمشاهدة سبب اختار الشبكة العصبية ناتجا آخر أو آخر. النظر في كيفية عملها في حالة الشبكة العصبية.

السلسلة الخاصة OCR (النقطية IMG) (... INT WHX \u003d IMG.Width * img.height؛ إذا (Summpix! \u003d WHX) (/ * عرض خطأ، عدد بكسل * /) إدخال مزدوج \u003d GetPix (IMG) ؛ نتيجة مزدوجة \u003d net.run (الإدخال)؛ إذا كان (tempanswer.length! \u003d entergend.length) (/ * عرض خطأ، وعدد مختلف من المخرجات * /) int maxn \u003d findmax (نتيجة)؛ إجابة \u003d تحويل.ToString (tempanswer)؛ إذا (toologevent! \u003d null) toolologevent (نتيجة، tempanswer، إجابة)؛ ...)

تلقوا صورة من الطريقة العامة، حيث net.createfromfile (savefilespath + "fannlearning.ann") وقراءة تكوين ملف، Tempanswer هو متغير يساوي B، يسرد الحروف التي نبحث عنها. قارن عدد البكسلات، وكتابتها في صفيف وتشغيلها من خلال آن المدربين، تبحث عن أقصى نسبة عالية من الصدفة، ثم نشدد النتيجة في حدث من خلال تحديد إخراج واحد وبعد تلقي الرسالة ثابتة بعد ذلك.

مناقشة النتائج

تعتمد نتائج الاختبار بشدة على عدد وجودة الصور للتعلم، وفي حالة الشبكة العصبية FANN - وعلى عدد المخرجات أيضا. في المتوسط، كان CAPTCHA، قابل للتقدم إلى المرشحات، ~ 80٪ من الاعتراف الصحيح، ثم يعتمد الكثير على الكمال والرغبة - التي سوف تدرسها، ثم سوف تحصل عليه. الشيء الرئيسي هو أنه يعمل.

استنتاج

يمكن تطبيق جميع الموصوفين في المقالة لحل العديد من المهام الأخرى. على سبيل المثال، أنا، عند البحث عن معلومات، تم استيفاء تحليل مفصل للاعتراف صورة السيارة في موقف السيارات. بدوره على الخيال والبصرية الاستوديو! 🙂.

استغرق الأمر مني للحصول على قيم الأرقام المسدودة. أعداد سرق من الشاشة.

فكرت، وليس محاولة محاولة التعرف الضوئي؟ حاولت tesseract.

أدناه سأخبرك كيف حاولت التكيف مع Tesseract، لماذا أتدرب ذلك، وما حدث منه. يكمن المشروع الموجود في Hithabe برنامج نصي CMD الذي يقوم بأتمتة مقدار الوقت الذي تكون فيه عملية التمرين الممكنة، والبيانات التي أجريت فيها التدريب. في كلمة واحدة، هناك كل ما تحتاجه لتدريب tesseract لتدريب شيء مفيد.

تحضير

استنساخ المستودع أو التنزيل أرشيف الرمز البريدي (~ 6MB). تثبيت tesserator 3.01 مع of.syta. إذا لم يعد هناك، فعندئذ من الدليل / التدفئة / التدوين الفرعي.

انتقل إلى مجلد العينات، تشغيل 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. هل سيساعد التمرين على التخلص من الأخطاء؟

اكتشف - حل

يتيح لك Training 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.6jtesseditor.jar تحتاج إلى فتح الملف. / exp2 - Total.png، سيتم فتح الملف تلقائيا. / exp2 - Total.box and Rectangle سيتم تعريفها سيتم فرضها على الصورة التدريبية.

في الجزء الأيمن، يتم تقديم محتويات ملف Total.box على اليمين هناك صورة تدريبية. فوق الصورة هي الخط النشط من ملف Total.box

الصناديق المثلجة الأزرق، والأحمر - الملاكمة المقابلة للصف النشط.

قمت بتصحيح كل خاطئ 5 كي على اليمين 6 كي و 8، وأضاف الصفوف ذات التعريفات لجميع النقاط العشرية في الملف وحفظ Total.Box

بعد اكتمال التحرير، من الضروري أن يستمر البرنامج النصي في العمل، تحتاج إلى إغلاق JTessBoxeditor. علاوة على ذلك، يتم تنفيذ جميع الإجراءات بواسطة برنامج نصي تلقائيا دون مشاركة المستخدم. يكتب البرنامج النصي نتائج التدريب تحت رمز TTN

لاستخدام نتائج التعلم عند التعرف عليك، تحتاج إلى بدء Tesseract C Key -L TTN
./exp2 - مدرب /\u003e Tesseract ../total.png Totr-Traded -l 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

تعلم الأخطاء التعرف عليها

تكبير الصورة

يمكنك زيادة طرق مختلفة، جربت طريقتين: مقياس وتغيير حجم

مجموع scaled.png (جزء) total-Resized.PNG (شظية)
تحويل total.png total-scaled.png -scale "208x1920" تحويل Total.png Total-Resized.png -Resize "208x1920"

نظرا لأن صور الشخصيات زادت مع الصور نفسها، فإن بيانات التدريب الموجودة تحت رمز TTN قديم. لذلك، ثم تعرفت دون مفتاح TTN الرئيسي.

يمكن ملاحظة أنه في الصورة الإجمالية - scaled.png tesseract يربك 7 كو مع 2nd، ولا تخلط بين إجمالي resized.png. على كل من الصور، النقطة العشرية صحيحة. التعرف على الصورة Total-Resized.PNG مثالية تقريبا. هناك ثلاثة أخطاء فقط - الفجوة بين الأرقام بالأرقام 21 و 114 و 61.

ولكن هذا الخطأ ليس حرجا، ل من السهل إصلاحه ببساطة عن خطوط المساحات.

إجمالي الأخطاء التعرف على SCALED.PNG

اخطاء التعرف على الإجمالي

model_total.txt. تعرف
إفتراضي
تعرف
بعد التمرين
مجموع scaled.png. المجموع - 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٪ أنا في (* .png) هل tesseract "٪ أنا" "٪ أنا"
لا يتم تحديد أرقامين وثلاثة أرقام على الإطلاق!

625.05
1740.10

رقمنة حزم صغيرة

وإذا كنت ترغب في تحديد الصور عن طريق الحزم بواسطة العديد من الصور (6 أو 10 في الحزمة)؟ عشر الوقت.
./exp6 - عشرة في الخط\u003e Tesseract Teninline.png Teninline

المعترف بها، وحتى بدون فجوة بين 61.

الاستنتاجات

بشكل عام، كنت أتوقع أسوأ النتائج، ل الخطوط النقطية الصغيرة هي حالة حدودية نظرا لحجمها الصغير، والبيانات المميزة والثثقة - صور مختلفة من رمز واحد يتزامن تماما. وقد أظهرت الممارسة أن الأرقام الملهمة بشكل مصطنع مرتبة أفضل.

تتمتع صورة ما قبل المعالجة بتأثير أكبر من التعلم. زيادة مع تجانس: تحويل - ...

التعرف على أرقام اثنين وثلاثة أرقام منفصلة من الأرقام غير المرضية - يجب جمعها في الحزم.

ولكن بشكل عام، يتم التعامل مع TESSERACT تقريبا بالمهمة، على الرغم من حقيقة أنها شحذ لمهام أخرى - الاعتراف بالنقوش في الصورة والفيديو، ومسح المستندات.

تناقش المقالة الإجراءات لتعليم اللغة الروسية لنظام التعرف الضوئي المفتوح من TESSERACT الذي طورته Hewlett-Packard مقارنة.

[Vlasov Igor (Igorvlassov في نارود دوت رو)]

كنت أبحث عن ocr divecha هنا لمشروع واحد الناطق باللغة الإنجليزية. وحصلت ببساطة على حالة الشؤون المتعلقة باللغة الأم. OCR مجاني قادر على الاعتراف بالكلام الأصلي، لم أجد ذلك. لكنها تعثرت على مشروع tesseract. هذا هو OCR متعدد المنصات التجارية السابقة، التي طورتها هيفليت باكارد. الآن، أولا، تنطبق تحت ترخيص Apache V.2. وثانيا، يمكن أن يحاكم لتعليم بعض اللغة الجديدة التي سنحاول القيام بها. لذلك، قرأنا دليلا يسمى TrainingTesseract:

يجب أن تكون الخطوة الأولى هي تعريف مجموعة كاملة من الأحرف التي سيتم استخدامها وإنشاء ملف نصي أو ملف معالج نص مع أمثلة.

عند إعداد ملف تدريبي، يجب أن تتذكر ما يلي:

    الحد الأدنى لعدد الأمثلة لكل رمز مطلوب. 10 - جيد، ولكن 5 يكفي للشخصيات النادرة، وعثرت على الأقل 20؛

    من المستحيل تجميع الأحرف غير الخليج معا، تحتاج إلى جعل النص أكثر واقعية، على سبيل المثال:
    في غابة الجنوب، كان هناك حمضيات نعم ولكن نسخة خاطئة. 0123456789 [البريد الإلكتروني المحمي]#$%^&(),.{}<>/? - كريه. أفضل بكثير:في الغابة (الجنوب) العاشق (كان) الحمضيات، نعم! لكن؟<фальшивый> $3456.78 مثال# 90 / الطماطم "12.5٪

    سيكون من الرائع أن تمتد النص عن طريق زيادة فترات الاختلال والاختيارات؛

    يجب أن تكون بيانات التدريب لائقا على صفحة واحدة؛

    ليست هناك حاجة لتدريب على عدة أحجام، كافية على حجم الخط 10. ولكن بالنسبة لارتفاع النص، فهو أقل من 15 بكسل للتدريب بشكل منفصل أو تكبير الصورة قبل التعرف عليها.

بعد ذلك، تحتاج إلى طباعة أو مسح أو استخدام بعض الأسلوب الآخر للحصول على صورة لصفحة التدريب. يمكن أن يصل إلى 32 صفحة تستخدم. من الأفضل إنشاء صفحات مع الخطوط والأنماط، بما في ذلك الدهون ويميل.

سأحاول القيام بذلك فقط بالنسبة لخط ThornDale AMT، والتي على سطح مكتبي تحت Suse10 في OpenOffice يبدو تقريبا أعي الأوقات الرومانية الجديدة تحت Windows. لذلك، أقوم بملف منفصل بالنص أعلاه حول FontFile.odt Cytrus، أطبع، قم بالطباعة والمسح الضوئي والحفاظ عليها باللون الأسود والأبيض BMP FONTFILE.BMP.

والخطوة التالية هي إنشاء ملف مع إحداثيات مستطيلة، حيث يتم الانتهاء من كل حرف. لحسن الحظ، يمكن Tesseract جعل ملف التنسيق المطلوب، على الأقل مجموعة من الأحرف ولن تتطابق معنا. لذلك، سيكون من الضروري إصلاح الملف يدويا عن طريق إدخال الأحرف الصحيحة. القيام بذلك:

tesseract Fontfile.bmp Fontfile Batch.nochop Makebox

نتيجة لذلك، اتضح الملف Fontfile.txt، والتي يجب إعادة تسميتها في FontFile.Box

هذا ما لدي:

M 85 132 111 154

Z 114 137 130 154

X 133 137 150 154

{ 170 130 180 162

m 186 137 210 154

r 214 137 228 154

a 233 137 248 154

} 254 130 264 162

M 284 137 306 154

الآن الجزء الأكثر حدة - تحتاج إلى تحرير هذا الملف في المحرر الذي يمكن فيه استبدال الأحرف الخاطئة. أنا استخدم كيت.

يبدو أن العمليات تحل محلها حرفين:

M 85 132 111 154

في هذه الحالة، من الضروري الجمع بين المستطيلات وصفها على النحو التالي:

    يجب أن يكون الرقم الأول (يسار) ضئيلا من سطرين (67)

    يجب أن يكون الرقم الثاني (أسفل) ضئيلا من سطرين (132)

    يجب أن يكون الرقم الثالث (يمين) هو أقصى سطرين (111)

    يجب أن يكون الرقم الرابع (الأعلى) سطرين كحد أقصى (154)

sO: SH 67 132 111 154

ملاحظة: يبدأ نظام الإحداثيات المستخدم في هذا الملف (0.0) ويتم توجيهه من الأسفل لأعلى ومن اليسار إلى اليمين.

يبدو أن fuh يصحح. الآن نحن ندير tesseract في وضع التعلم:

tESSERACT FONTFILE.BMP Box Nounk Nobatch.Train

ومشاهدة Stderr (أو tessract.log تحت ويندوز). إذا كان هناك أخطاء نوع Faat،

هذا يعني أن TESSERATOR لم يجد عينة واحدة من الرمز المحدد في ملف الإحداثيات. أعطاني خطأ:

apply_boxes: الوفيات - 0 عينات المسمى من "٪" - الهدف هو 2

قراءة الصناديق من boxfile: 89

المسمى في البداية النقط: 87 في 3 صفوف

تم اكتشاف فشل مربع: 2

النقطات المدخنة ل Rewalance: 0

"٪" لديه أقل عينات: 0

مجموع الكلمات غير المسبقة: 1

الكلمات النهائية المسمى: 87

توليد بيانات التدريب.

التدريب ... اسم الخط \u003d UnknownFont.

البيانات التدريبية التي تم إنشاؤها ل 87 النقط

ومع ذلك، 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_extractor fontfile_1.box fontfile_2.box ...

نحن نفعل. في الملف الناتج، يجب عليك تحديد نوع الرمز باستخدام قناع، مثل هذا القناع: إذا كانت الحرف 1، إذا كانت الرسالة الصغيرة 1، إذا كانت الرسالة الكبيرة هي 1، إذا كان الرقم -1، وإلا 0.

على سبيل المثال،

ب - خطاب صغير. قناعها 0011 أو سداسي عشري 3

؛ - ليس خطابا، وليس رقما. قناع \u003d 0.

7 - مجرد رقم. قناع 1000 أو سداسي عشري 8.

ب هي رسالة كبيرة. قناع 0101 أو سداسي عشري 5

لدي كل الحروف صغيرة. أنا أغير القناع إلى 3.

الآن من الضروري تناول قائمةتين في مكانتين، واحدة - تم العثور عليها في كثير من الأحيان، والثاني - الكلمات الأخرى وتحويلها إلى تنسيق DAWG باستخدام أداة مساعدة أخرى:

wordList2Dawg متكرر_Words_List Freq-Dawg

wordList2Dawg Words_List Word-DAWG

لبداية، أنا فقط عالقة في كل كلمة 5 تعسفية.

الملف الثالث، كلمات المستخدم عادة ما تكون فارغة.

يسمى الملف الأخير الذي يجب القيام به يتسم به Dangambigs في أنه يصف حالات الاستبدال الخاطئ لملف واحد إلى آخر، على سبيل المثال

الرقم الأول هو عدد الأحرف في المجموعة الأولى، 2nd - عدد الأحرف في 2nd.

يشير هذا الخط إلى أنه يمكن التعرف على الأول في بعض الأحيان بشكل غير صحيح كما sh.

هذا الملف هو أيضا م. فارغة.

الآن نحن جميعا جمع معا. الملفات

    freq-dawg.

    كلمة دوج.

    كلمات المستخدم.

    inttemp.

    normproto.

    pffmtable.

    unicharset.

    Dangambigs.

نحن نوفر بادئة روس ووضعها هناك، حيث القواميس الأخرى، لدي / USR / المحلي / المشاركة / تيمسداهات

كل شىء!!!

نحاول التعرف على أي ملف. سأحاول بدء بلدي حول الحمضيات:

tesseract Image.BMP الإخراج - R روس

هذا ما فعلته:

في الشياح (الجنوب)، Zhvl- (كان) Tschtler، نعم! لكن؟

<(1ьалвьшвый> $ 3456.78 نسخة # 90

capelves / ambore "12.5

بالطبع، ليس سوبر، ولكن لأول مرة، ومثل هذا العينة والقاموس الضئيل، وأعتقد، ليس سيئا!

إيغور فلاسوف (Igorvlassov في نارود دوت رو) - Tesseract باللغة الروسية

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-ocrock/downloads/detail؟name\u003dtesseract-3.02.02-win32-lib-include-dirs .zip & can \u003d 2 & q \u003d
بيانات التعلم العملي - https://tessract-ocr.googlecode.com/files/tesseract-ocr-3.02.rus.tar.gz
يمكن جمع الجميع بشكل مستقل عن طريق تنزيل رموز المصدر، لكننا لن نفعل هذا.

من خلال إنشاء مشروع جديد، قم بتوصيل المسارات إلى ملفات Lib و H. وكتابة رمز بسيط.
#تضمن. #تضمن. int الرئيسية () (تيسراكت :: Tessbaseapi * Myocr \u003d جديد Tessract :: Tessbaseapi ()؛ طباعة ("النسخة Tesseract-OCR الإصدار:٪ s \\ n"، myoco-\u003e الإصدار ()؛ printf ("إصدار leptonica:٪ s \\ n "، getleptoncasion ())؛ إذا (myocr-\u003e init (null،" rus ")) (fprintf (stderr،" تعذر تهيئة tesseract. \\ n ")؛ الخروج (1)؛) بيكس * بيكس \u003d pixRead ("test.tif")؛ myocr-\u003e setimage (pix)؛ art outtext؛ lstrcpy (outtext، myock-\u003e getutf8text ()؛ printf ("إخراج OCR: \\ n \\ n")؛ printf (outtext)؛ myock -\u003e واضح ()؛ myocr-\u003e نهاية ()؛ pixdestroy (& pix)؛ عودة 0؛)

ربط ملفات LIB:
libteseratoract302.lib.
Liblept168.lib.

اكتمال - يتم إنشاء البرنامج بنجاح. كمثال، اتخذ الصورة التالية:

نحن ندير البرنامج بحيث يتم عرض المعلومات في الملف (نظرا لأن UTF-8 في CAPO Console ستكون):
اختبار\u003e A.txt.

ملف المحتوى أدناه:
Tesseract-OCR الإصدار: 3.02
النسخة Leptonica: Leptonica-1.68 (14 مارس 2011، 10:47:28)
إخراج OCR:

، استبدال هذا التعبير في (63)، ونحن نرى ذلك
بعنوان الفرقة واحدة، إشارة صناعية
وعمق التعديل يساوي.
7 مغلف هو) إشارة الأساسي مباشرة
من المستحيل مراعاة الذبذبات، لذلك
كيف هذه الإشارة ضيقة النطاق، ونحن
وضوح "الحالة" غائبة، ولكن
مع تعديل الفرقة، ضيق
"إشارة السلمون مع نفس المغلف، ثم هي
"وتظهر نفسها صراحة وأحيانا (كما في المرجع
"القضية المشمسة) تجعل الارتباك في أذهان سيئة
والباحثين ..
6.4. "كوستا صيغة"
ز
مع ظهور OM في الكتب المدرسية والقهوة `
تأسيس ودراسات الناضج مسألة
كيف الفوز يمنح الانتقال من السعة
التغليف لحارة واحدة. تم التعبير عنها كثيرا
الآراء المضطربة. في بداية 60s من AME-
عالم ريكان J. Kostas كتب ذلك، انظر
مجلة Trebuned الأدب على أوم، هو
اكتشف في كل مقالة تقديرها للطاقة
"كاميرات واضحة عن صباحي
العشرات المتعددة. نتيجة لذلك، تثبيت
- الفوز، المشار إليها في كل مقال،
يجعل DB تقريبا (Z-K-S!) DB، حيث مشارك رقم M
\u003e مؤلفو هذه المقالة.
E، '11 إذا كانت هذه النكتة وغير دقيقة، فلا يزال صحيحا
الموسيقى تعكس النضج الذي موجود
؛ في تلك السنوات. بالإضافة إلى حقيقة أن مختلف المؤلفين
تسلق D مقارنة في ظروف مختلفة ومرة \u200b\u200bواحدة
، حدد نومو أرباح الطاقة، فهي كذلك
"، هو نفسه سمح الكثير من الأخطاء المختلفة. أربعة "
، `هنا أمثلة على بعض التفكير. "
1. مع المعتاد، اعتقاد الناقل