Tesseract-OCR în Visual Studio - Recunoașteți pagina textului. Trening Tesseract de care avem nevoie

Tesseract. - o platformă gratuită pentru recunoașterea optică a textului, sursele din care Google a prezentat comunitatea în 2006. Dacă scrieți un software pentru a recunoaște textul, probabil că trebuie să accesați serviciile acestei biblioteci puternice. Și dacă nu a făcut față textului tău, atunci ai mai rămas într-un fel - să-l înveți. Acest proces este destul de complicat și plin de nici unul evident și, uneori, direct cu acțiuni magice. Descrierea originală este. Aveam nevoie de aproape o zi întreagă pentru a înțelege toate adâncimile sale, așa că vreau să salvez, sper că opțiunea sa mai ușor de înțeles. Deci, pentru a vă ajuta pe voi înșivă și pe alții să treacă prin această cale următoare mai repede.

0. Ce avem nevoie

  • Tesseract de fapt.
Asamblarea acestei biblioteci este sub Windows (puteți descărca instalatorul din depozitul oficial) și sub Linux. Pentru majoritatea distribuțiilor Linux, instalați Tesseract poate fi instalat pur și simplu prin intermediul sudo apt-get instalare tesseract-OCR, Trebuie să adaug sursă pentru sistemul de operare electrisic la modă:
gedit /etc/apt/sources.list.
deb http://noatsalexp.net/debian/precise/ Precizie principală
wget -o - http://noansalexp.net/debian/alexp_key.asc
aPT-KEY Adăugați Alexp_key.asc
aPT-Update
aPT-GET Instalați Tesseract-OCR
  • Imagine cu text pentru instruire
Este de dorit ca acesta să fie un text real, care va trebui atunci să recunoască. Este important ca fiecare simbol al fontului să fie întâlnit în fragmentul scanat să fie de cel puțin 5 ori și de preferință de 20 de ori. Formatul TIFF, fără comprimare, de preferință nu multiplocked. Între toate caracterele ar trebui să fie clar distanțate. Puneți imaginea într-un director separat și apelați în formular<код языка>.<имя шрифта>.Exp.<номер>.tif. Este posibil ca imaginea să nu fie una și să difere că ar trebui să se numere numai în numele fișierului. Formatul fișierelor sunt foarte importante. Pe fișierele cu nume incorecte ale utilității pe care le vom folosi vor jura pe erorile de segmentare etc. Pentru claritate, presupunem că studiem limba SCC și fontul EEE. Astfel, apelați fișierul cu proba de scanare ccc.eee.exp0.tif

1. Creați și editați fișierul cutie
Pentru. Pentru a marca caracterele de pe imagine și pentru a seta meciurile de simboluri de text UTF-8 sunt fișiere de cutie. Acestea sunt fișierele text obișnuite în care fiecare caracter corespunde unui șir cu un simbol și dreptunghi coordonate în pixeli. Inițial, generați un utilitar din pachetul Tesseract:
tesseract CCC.EEE.EEE.EXP0 Batch.Nochop Makebox
A primit fișierul ccc.eee.exp0.box în directorul curent. Uita-te la ea. Simbolurile de la începutul liniei se potrivesc complet caracterele din fișier? Dacă da, atunci nu trebuie să antrenezi nimic, poți dormi bine. În cazul nostru, cel mai probabil caracterele nu vor coincide niciuna dintre numărul esențial în număr. Acestea. Tesseract cu dicționarul implicit nu a recunoscut nu numai caracterele, ci și luate în considerare unele dintre ele pentru două sau mai multe. Poate că o parte din personajele pe care le vom "lipi", adică. va cădea într-o cutie comună și va fi recunoscută ca una. Totul trebuie să remedieze înainte de a merge mai departe. Lucrați plictisit și dureroasă, dar, din fericire, există o serie de utilități terță parte pentru acest lucru. De exemplu, am folosit Pytestrainer-1.03. Deschidem imaginea pentru ei, fișierul cutie cu același nume pe care el însuși îl scoate.
O jumătate de zi a trecut ... tu cu un sentiment de satisfacție profundă față de PyteseractTrainer (nu ați uitat să salvați rezultatul, nu?) Și aveți un fișier cutie corect. Acum puteți merge la pasul următor.

2. Tesseract de instruire
tesseract ccc.eee.eee.eee.eee.eee.ee.eee.evp0 Nobatch Box.Train
Avem o mulțime de erori, dar ne uităm la ceva de genul "a găsit 105 bloburi bune". Dacă cifra este semnificativ mai mare decât numărul de caractere "studiate", adică șansa ca formarea în ansamblu să fie reușită. În caz contrar, ne întoarcem la început. Ca rezultat al acestui pas, aveți un fișier CCC.EEE.EEE.EXP0.TR

3. Scoateți setul de simboluri
unicharset_extractor ccc.eee.exp0.box.
Primim un set de caractere ca fișier unicharset în directorul curent, în care fiecare caracter și caracteristicile sale sunt situate într-o linie separată. Aici, sarcina noastră va verifica și corecta caracteristicile personajelor (cea de-a doua coloană din fișier). Pentru scrisorile mici ale alfabetului, am pus un semn 3 pentru 5 ani, pentru punctuația de 10 pentru numerele 8, orice altceva (tip + \u003d -) marcat 0. Hieroglife chinezești și japoneze Observați 1. De obicei, toate semnele sunt corecte, Deci, această etapă este o mulțime de timp nu veți lua.

4. Descrieți stilul fontului
Creați un fișier CCC.Font_Properties cu un singur șir: Eee 0 0 0 0 0 0. Aici scrieți mai întâi numele fontului, atunci numărul 1 sau 0 este etichetat prezența caracterelor de stil (respectiv, italic îndrăzneț fixat serif fraktur) . În cazul nostru nu există stiluri, așa că lăsăm totul în zerouri.

5. Clustere de figuri, prototipuri și alte magice
Pentru studii suplimentare, trebuie să efectuăm încă trei operațiuni. Puteți încerca să înțelegeți semnificația lor din descrierea oficială, nu am fost înainte :). Doar efectuați:
shapeClustering-FCCC.Font_Properties -U Unicharset ccc.eee.exp0.tr
... Fișier shapetable.
și apoi:
mftraining -f ccc.font_properties -U Unicharset -O CCC.unicharset ccc.eee.exp0.tr
... obțineți fișiere cCC.UNICHARTET, INTTUMP, PFFMTABLE
In cele din urma:
cntraining ccc.eee.exp0.tr.
... obținem fișierul normproto.

6. Dicționare
Umplerea teoretică a dicționarelor cuvintelor frecvent folosite (și a cuvintelor) ajută la tesseract-u pentru a vă ocupa de doodlele dvs. Înțelegerea dicționarelor, dar dacă doriți brusc, faceți fișierefrecvent_words_list și cuvinte_list în care introduceți (fiecare dintr-o linie nouă), respectiv, adesea folosiți și pur și simplu cuvinte ale limbii.
Pentru a converti aceste liste la formatul corect, efectuați:
wordlist2dawg frecvent_words_list ccc.freq-dawg ccc.unicharset

wordlist2dawg words_list ccc.word-dawg ccc.unicharset

7. Ultimul fișier misterios
Numele lui este unicharambigs. În teorie, el trebuie să acorde atenție Tesseractului pe simboluri similare. Acest fișier text din fiecare rând cu separatoarele cu fila este descris de perechi de șiruri care pot fi confundate la recunoaștere. Formatul complet al fișierului este descris în documentație, nu era necesar și l-am lăsat gol.

8. Ultima echipă
Toate fișierele trebuie redenumite astfel încât numele lor să înceapă cu numele limbii. Acestea. Numai fișierele vor rămâne în director:

ccc.box.
cCC.INTTTEMP.
cCC.PFFMTABLE.
cCC.TIF.
ccc.font_properties.
ccc.normproto.
cCC.Shapetabile
cCC.TR.
cCC.UNICHARTET.

Și în cele din urmă, executăm:
combine_tessdata CCC.
(!) Punctul este obligatoriu. Ca rezultat, primim dosarul CCC.Trainddata, care ne va permite să recunoaștem mai mult limbajul nostru misterios.

9. Verificăm dacă merită :)
Acum, să încercăm să recunoaștem eșantionul nostru utilizând tesseractura deja instruită:
sudo cp ccc.traineddata / usr / partajare / tesseract-OCR / TESSDATA /
tesseract CCC.TIF OUTPUT -L CCC
Acum ne uităm la ieșire.txt și ne bucurăm (sau să vă luăm în sus, în funcție de rezultat).

Dacă există soluții gata făcute, nu are sens să inventați cârje și biciclete. Cu cinismul special, această afirmație a demonstrat autorii criptolockerului, care a folosit Cryptoapi pentru scopurile sale :). Este adevărat pentru decizia sarcinii noastre de astăzi - decodarea capsurilor (cu scopuri educaționale, desigur). Forward, lansați Visual Studio!

Introducere

Întregul proces al muncii viitoare poate fi împărțit în mai multe etape:

  • descărcați imagini;
  • Îndepărtați zgomotele și alte distorsiuni artificiale;
  • evidențiați zonele de conectare (simboluri), salvați-le;
  • Învățați-vă la nevrallet sau creați un dicționar;
  • recunoaşte

Acest lucru ne va ajuta:

  • Afondnet - biblioteci de vizionare a computerului și inteligență artificială;
  • Tesseract - Program pentru recunoașterea textului;
  • FanndotNetwrapper - wrapper.net Neuraletas Fann;
  • algoritmul pentru căutarea Asociației CCLA de la Omar Gameel Salem.

Sursă pe dvd.syt.

Nu uitați să descărcați Sabzh, vă va fi utilă când citiți acest articol. Nici un Malvari, nici un extremism nu este doar știința curată, numai tehnologia OCR, doar hardcore!

Etapa pregătitoare

Lansați Visual Studio și creăm un nou proiect de fereastră în C #. Deschideți-l în Explorer, pentru a copia fișierele necesare acolo.


Pentru a instrui rețeaua neurală Fann a folosit o parte a codului de la Tesseract, diferența este că creăm un fișier text TREN.TR, în care prima linie este numărul de imagini, numărul de puncte din fiecare (lățimea multiplicată cu înălțime) și numărul de ieșiri (litere, pe care le căutăm). Binizarea obligatorie în sine, pentru a aloca doar două stări ale fiecărui punct (1 - negru, 0 - culoare albă) și economisește mai departe în același fișier în toate liniile următoare. Pentru confort și abilitatea de a utiliza diferite fișiere Ann Pre-create, a fost creată un fișier de fișier suplimentar de fișier text. Se compune dintr-o linie și indică numărul de puncte și ieșiri cu valorile lor, începe accidental verificarea captcha pe un alt fișier Ann nu va funcționa.

String A \u003d File.readalText (SaveFilespath + "Config.txt"); String B \u003d A.Split (""); Int sumix \u003d convert.toint32 (b); INT OUTPT \u003d Convert.Toint32 (B.Lend); Straturile UINT \u003d ((UINT) Sumpix, (UINT), ieșirea (UINT)); net.createstandardarray (straturi); Net.randomizewights (-0.1, 0,1); net.setlearning (0,7f); Trainingdata Data \u003d New FormareData (); Date.readtrainfromfile (SaveFilespath + "TRAIN.TR"); net.Trainondata (date, 1000, 0, 0.001F); Net.save (SaveFilesPath + "Fannlearning.Ann");

Primim config, citesc parametrii, numărul de straturi (straturi) pe recomandarea Wikipedia este setat la 120, orice altceva a fost aleasă la întâmplare sau vizibilă în rețea. Viteza învățării depinde de puterea fierului și de ceea ce este scris mai sus. De exemplu, i7-4702mq la 6500 de imagini cu un nucleu a fost ocupat minutele 20-30.

Pasul șase. Recunoaştere

În etapa finală au fost implementate două abordări, dar a cărui instruire a fost efectuată. Tesseract 3.02 și Fann sunt situate în partea stângă jos a ferestrei principale. Primul poate căuta limba engleză (alegeți caractere din lista derulantă), dicționarul rusesc, matematică și utilizator. Căutarea unui dicționar se produce automat și sunt afișate toate disponibile în ToolTip. Al doilea recunoaște textul pe butonul Fannocr și afișează partea (partea stângă a ferestrei) rezultatul analizei pentru fiecare simbol selectat. Este foarte convenabil să urmăriți de ce rețeaua neuronală a ales una sau altă ieșire. Luați în considerare modul în care funcționează în cazul unei rețele neuronale.

String privat OCR (bitmap img) (... int whx \u003d img.width * img.height; dacă (summpix! \u003d Whx) (/ * afișează o eroare, numărul de pixeli * /) de intrare dublu \u003d getpix (img) ; Dublu rezultat \u003d net.run (intrare); dacă (tempnaSwer.Length! \u003d Rezultat.length) (/ * afișează o eroare, un număr diferit de ieșiri * /) int maxn \u003d FALLMAX (rezultat); răspuns \u003d convert.tostring (Tempanswer); dacă (TologEvent! \u003d Null) TologEvent (rezultat, Tempanswer, Răspuns); ...))

Ei au primit o imagine din metoda publică, în cazul în care net.createfromfile (SaveFilesPath + "Fannlearning.Ann") și citirea unui fișier config, Tempanswer este o variabilă egală cu B, enumeră literele pe care le căutăm. Comparați numărul de pixeli, scrieți-le într-o matrice și treceți prin Anul instruit, căutând procentul maxim ridicat al coincidenței, apoi ghidăm rezultatul într-un eveniment selectând o ieșire și am primit litera fixată după aceasta.

Discutarea rezultatelor

Rezultatele testului meu depindea puternic de numărul și calitatea imaginilor de învățare și în cazul rețelei neuronale Fann - și asupra numărului de rezultate prea. În medie, captcha, supusă filtrelor, a avut ~ 80% din recunoașterea corectă, apoi depinde mult de perfecțiune și de dorință - pe care o veți învăța, atunci veți obține-o. Principalul lucru este că funcționează.

Concluzie

Toate cele descrise în articol pot fi aplicate pentru a rezolva multe alte sarcini. De exemplu, eu, atunci când căutând informații, a fost îndeplinită o analiză detaliată a recunoașterii imaginii mașinii în parcare. Porniți fantezia și studioul vizual! 🙂.

Mi-a trebuit să obțin valorile numerelor înfundate. Numere jefuit De pe ecran.

M-am gândit și nu încerc să încerc OCR? Am încercat Tesseract.

Mai jos îți voi spune cum am încercat să mă adaptez Tesseract, de ce l-am antrenat și ce sa întâmplat de la ea. Proiectul de pe Hithabe se află un script CMD care să automatizeze cât de mult timp este posibil procesul de antrenament și datele pe care le-am efectuat cursuri de formare. Într-un cuvânt, există tot ce aveți nevoie pentru a instrui Tesseract pentru a instrui ceva util.

Pregătirea

Clonând depozitarea sau descărcarea arhiva zip (~ 6MB). Instalați tesserator 3.01 cu de la.Syta. Dacă nu mai este acolo, apoi de la arhiva Zip subdirectory / Distros.

Mergeți la dosarul eșantioanelor, executați montage_all.cmd.
Acest script va crea o imagine finală. mostre / total.png., nu puteți începe scriptul, deoarece Am plasat-o deja în dosarul rădăcină al proiectului.

De ce tren?

Poate și fără formare, rezultatul va fi bun? Verifica.
./exp1 - AS este\u003e Tesseract ../Total.png Total

Poziționați rezultatul corectat în fișier mode_total.txt.Pentru a compara rezultatele recunoașterii. Un asterisc marchează valorile greșite.

mode_total.txt. Recunoaştere
Mod implicit
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

erori de recunoaștere implicită

Se poate observa că există multe erori. Dacă vă uitați îndeaproape, puteți vedea că punctul zecimal nu este recunoscut, numerele 6 și 8 sunt recunoscute ca 5. Va ajuta antrenamentul să scape de erori?

A face exerciții fizice

Tesseract Tesseract vă permite să îl plimbați pe recunoașterea imaginilor de texte în formularul în care îl veți hrăni imagini similare în procesul de recunoaștere.
Trageți imagini de antrenament Tesseract, corectați erorile de recunoaștere și transmiteți aceste instrucțiuni la Tesseract-y. Și corectează coeficienții din algoritmii să continue să împiedice erorile pe care le-ați găsit.

Pentru a efectua antrenamentul pe care doriți să-l executați. / Exp2 - instruit\u003e TRAIN.CMD

Care este procesul de antrenament? Și în faptul că Tesseract procesează imaginea de formare și forme așa-numite. Cutiile de caractere - evidențiază caracterele individuale din textul care creează o listă de restricționare a dreptunghiurilor. În același timp, el face să ghicească despre ce fel de simbol este limitat de un dreptunghi.

Rezultatele acestei lucrări scrie în fișierul total.box, care arată astfel:
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

Aici, în simbolul coloanei Singel și în 2 - 5 coloane coordonate din colțul din stânga jos al dreptunghiului, înălțimea și lățimea.

Desigur, este dificil să o editați manual și inconfortabil, astfel încât utilitățile grafice care facilitează această lucrare au fost create de entuziaști. Am fost scris în Java.

După pornire. / Exp2 - instruit\u003e Java-Jar JtessboxDitor-0.6Jtessboxeditor.jar Trebuie să deschideți fișierul. / Exp2 - instruit / total.png, fișierul va fi deschis automat. / Exp2 - instruit / total.box și dreptunghi definit în acesta va fi suprapus pe imaginea de antrenament.

În partea stângă, conținutul fișierului total.box este dat în partea dreaptă Există o imagine de antrenament. Deasupra imaginii este linia activă a fișierului total.box

Blue descrise cutiile și box-ul roșu corespunzător rândului activ.

Am corectat toate celelalte 5 ki pe dreapta 6-ki și 8, adăugate rânduri cu definiții ale tuturor punctelor zecimale din fișier și salvate totale.box

După ce editarea este completă, este necesar ca scriptul să continue să lucreze, trebuie să închideți JterssboxDeitorul. În plus, toate acțiunile sunt efectuate automat de un script fără participarea utilizatorilor. Scriptul scrie rezultatele formării în cadrul codului TTN

Pentru a utiliza rezultatele învățării la recunoaștere, trebuie să începeți Tesseract C Key -L TTN
./exp2 - instruit /\u003e Tesseract ../Total.png Total-instruit -L TTN

Se poate observa că toate numerele au început să fie recunoscute corect, dar punctul zecimal nu este încă recunoscut.

mode_total.txt. Recunoaştere
Mod implicit
Recunoaştere
după antrenament
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

erori de recunoaștere a învățării

Măriți imaginea

Puteți crește în diferite moduri, am încercat două moduri: scară și redimensionare

total-scalat.png (fragment) total-redimensionate.png (fragment)
Convert Total.png Total-Scat.png -Scale "208x1920" Convertiți total.png total-redimensionat.png --Renzise "208x1920"

Deoarece imaginile personajelor au crescut cu imaginile în sine, datele de instruire din cadrul codului TTN sunt depășite. Prin urmare, am recunoscut fără o cheie -L TTN.

Se poate observa că în imagine total-scalat.png Tesseract confundă 7-ku cu un al doilea, și nu confundă total-redimensionate.png. Pe ambele imagini, punctul zecimal este corect. Recunoașterea imaginii total-redimensionate.png este aproape perfectă. Există doar trei erori - decalajul dintre numerele din numerele 21, 114 și 61.

Dar această eroare nu este critică, deoarece Este ușor să o rezolvați prin simpla eliminare din liniile de spații.

total-scalate.png Erori de recunoaștere

erori de recunoaștere totală de redimensionare.png

mode_total.txt. Recunoaştere
Mod implicit
Recunoaştere
după antrenament
total-scalat.png. total-redimensionate.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

Digitizarea imaginilor unul câte unul

OK, dacă trebuie să digitizați imaginile unul după altul în modul real de lenjerie?

Încerc unul câte unul.
./exp5 - unul câte unul\u003e pentru / r% i in (* .png) face tesseract "% i" "% i"
Numerele de două și trei cifre nu sunt determinate deloc!

625.05
1740.10

Digitizarea pachetelor mici

Și dacă doriți să digitizați imaginile prin pachete de mai multe imagini (6 sau 10 în pachet)? Zece timp.
./exp6 - zece în linie\u003e Tesseract Teninline.png Teninline

Recunoscut și chiar fără decalaj printre 61.

Concluzii

În general, mă așteptam la cele mai grave rezultate, deoarece Fonturile mici raster sunt un caz de graniță datorită dimensiunilor lor mici, granularității distincte și a constanței - imagini diferite ale unui simbol coincid complet. Și practica a arătat că cifrele inspirate artificiale aranjate sunt mai bine recunoscute.

Imaginea de pre-procesare are un efect mai mare decât învățarea. Creșterea cu netezirea: Convertiți -Rozați ...

Recunoașterea numerelor separate de "scurte" de două și trei cifre de numere nesatisfăcătoare trebuie să fie colectate în pachete.

Dar, în general, Tesseract aproape a fost abrogat cu sarcina, în ciuda faptului că este ascuțită pentru alte sarcini - recunoașterea inscripțiilor în fotografie și video, scanările de documente.

Articolul discută procedura de predare a limbii ruse a sistemului OPR OCR de Tesseract dezvoltat de compamentul Hewlett-Packard.

[Vlasov Igor (Igorvlasov la Narod Dot RU)]

Căutam un OCR Divercha aici pentru un singur proiect de limbă engleză. Și pur și simplu sa familiarizat cu starea de lucruri față de limba maternă. Gratuit OCR capabil să recunoască discursul nativ, nu am găsit-o. Dar sa datorat proiectului Tesseract. Acesta este un fost OCR comercial multi-platformă, dezvoltată de HEVLET PACKARD. Acum, în primul rând, se aplică sub licența Apache V.2. Și în al doilea rând, se poate încerca să predea o nouă limbă pe care o vom încerca să o facem. Așadar, am citit un manual numit FormingSeract:

primul pas ar trebui să fie definirea unui set complet de caractere care vor fi utilizate și creând un fișier text sau un fișier de procesor text cu exemple.

La pregătirea unui fișier de antrenament, trebuie să vă amintiți următoarele:

    numărul minim de exemple de fiecare simbol este necesar. 10 - Bine, dar 5 este suficient pentru caractere rare, și pentru frecvent găsite cel puțin 20;

    este imposibil să grupați toate caracterele non-bay împreună, trebuie să faceți textul mai realist, de exemplu:
    În pădurile de sud, a existat o citrice da, dar o copie falsă. 0123456789 [E-mail protejat]#$%^&(),.{}<>/? - teribil. Mult mai bine:În pădure (sud) a trăit - (a fost) citrice, da! dar?<фальшивый> $3456.78 Instanță# 90 / tomate "12,5%

    ar fi frumos să întindeți textul prin creșterea intervalelor interstițiale și intersimilizate;

    datele de instruire trebuie să se potrivească pe o singură pagină;

    nu este nevoie să se antreneze pe mai multe dimensiuni, suficient pe o dimensiune a fontului 10. Dar pentru înălțimea textului, este mai mică de 15 pixeli pentru a instrui separat sau de a mări imaginea înainte de recunoaștere.

Apoi, trebuie să imprimați și să scanați sau să utilizați o altă metodă pentru a obține o imagine a paginii de instruire. Poate fi de până la 32 de pagini utilizate. Cel mai bine este să creați pagini cu fonturi și stiluri, inclusiv grăsimi și înclinate.

Voi încerca să o fac numai pentru Thorndale Amt Font, care pe desktop-ul meu sub SSE10 din OpenOffice arată aproape ca Times New Roman sub ferestre. Deci, fac un fișier separat cu textul de mai sus despre fontfile.odt Cytrus, tipăresc, scanează și păstrez în alb-negru BMP FontFile.bmp.

Următorul pas este crearea unui fișier cu coordonate dreptunghiulare, în care fiecare personaj este încheiat. Din fericire, Tesseract poate face fișierul formatului necesar, cel puțin un set de caractere și nu se va potrivi cu noi. Prin urmare, atunci va fi necesar să remediați manual fișierul introducând caracterele corecte. Așa că faceți:

tesseract FontFile.BMP FontFile Batch.Nochop Makbox

Ca rezultat, sa dovedit fișierul fontfile.txt, care trebuie redenumit în FontFile.box

Asta am acolo:

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

Acum, cea mai gravă parte - trebuie să editați acest fișier în editorul în care pot fi înlocuite caracterele greșite. Eu folosesc Kate.

OPS pare să fie înlocuită cu 2 caractere:

M 85 132 111 154

În acest caz, este necesar să se combine descrierea dreptunghiurilor după cum urmează:

    Primul număr (stânga) trebuie să fie minim de 2 linii (67)

    Al doilea număr (fundul) trebuie să fie minim din 2 linii (132)

    Cel de-al treilea număr (dreapta) trebuie să fie maxim de 2 linii (111)

    Cel de-al patrulea număr (sus) ar trebui să fie maxim 2 linii (154)

deci: SH 67 132 111 154

Notă: Sistemul de coordonate utilizat în acest fișier începe cu (0,0) și este îndreptat de partea de jos în sus și de la stânga la dreapta.

Fuh pare să fie corectată. Acum rulam Tesseract în modul de învățare:

tesseract FontFile.bmp Junk Nobatch Box.train

Și urmăriți Stderr (sau Tessrace.log sub ferestre). Dacă există erori de tip FAAT,

aceasta înseamnă că Tesserator nu a găsit o singură probă a simbolului specificat în fișierul de coordonate. Mi-a dat o greșeală:

Aplicați_box-uri: Fatalitate - 0 Eșantioane marcate de "%" - țintă este de 2

Cutii citite de la boxfile: 89

Inițial etichetat Blobs: 87 în 3 rânduri

Box defecțiuni detectate: 2

Blobs înșelat pentru reechilibrare: 0

"%" Are cele mai puține eșantioane: 0

Cuvintele totale neregulate: 1

Cuvinte finale marcate: 87

Generarea datelor de instruire.

Instruire ... Numele fontului \u003d Unknownfont.

Date de instruire generate pentru 87 blobs

Cu toate acestea, FontFile.TR a generat. Bine, voi face fără un semn%, a fost, în general, necesar să se facă mai mult decât toate personajele, cel puțin repetați această expresie Timpul timpului.

În teorie, trebuie să repet această procedură pentru diferite fonturi și să obținem mai multe fișiere diferite, apoi să creați prototipuri utilizând comenzile tipului:

mFtraining fontfile_1.tr fontfile_2.tr ...

ca rezultat, trebuie obținute 2 dosare: inttemp (prototipuri de forme) și PFFMTABLE , atunci

cntraning fontfile_1.tr fontfile_2.tr ...

creați un fișier normproto (prototipuri pentru a normaliza caracterele?).

Fac-o peste unul din dosarul meu. Ceva sa dovedit. Acum trebuie să specificați Tesseract "cu o mulțime de caractere pe care le poate scoate. Folosim comanda Unicharset_extractor pentru a genera fișierul Unicharset:

unicharset_extractor fontfile_1.box fontfile_2.box ...

Noi facem. În fișierul rezultat, trebuie să specificați tipul de simbol utilizând o mască, o astfel de mască: dacă litera este de 1, dacă litera mică este 1, dacă o literă mare este de 1, dacă cifra -1, altfel 0.

De exemplu,

b - Leto Letter. Masca ei 0011 sau hexazecimal 3

; - Nu este o scrisoare, nu o cifră. Mask \u003d 0.

7 - Doar o cifră. Masca 1000 sau hexazecimal 8.

B este o scrisoare mare. Masca 0101 sau hexazecimal 5

am toate literele sunt mici. Am schimbat masca la 3.

Acum este necesar să luăm două liste undeva, cu două cuvinte găsite adesea, al doilea alte cuvinte și convertiți-le în formatul Dawg folosind un alt utilitar:

wordlist2dawg frecvent_words_list freq-dawg

wordlist2dawg words_list cuvânt-dawg

Pentru început, am rămas pur și simplu în fiecare 5 cuvinte arbitrare.

Al treilea fișier, cuvintele de utilizator sunt de obicei goale.

Ultimul dosar care trebuie făcut este numit Dangambigs în ea descrie cazurile de înlocuire eronată a unui dosar la altul, de exemplu

prima cifră este numărul de caractere din primul grup, al doilea - numărul de caractere din a 2-a.

Această linie indică faptul că prima poate fi uneori recunoscută incorect ca sh.

Acest fișier este, de asemenea, m. gol.

Acum toți colectăm împreună. Fișiere.

    freq-dawg.

    cuvânt-dawg.

    cuvinte utilizator.

    inttemp.

    normproto.

    pfmptable.

    unicharset.

    Dangambigs.

furnizăm Prefixul Rus și puneți acolo, în cazul în care alte dicționare, am / usr / locale / acțiuni / temssdata

Tot!!!

Încercăm să recunoaștem orice fișier. Voi încerca să încep despre Citrus:

tesseract Image.BMP ieșire -l rus

Asta am făcut:

În Cheyah (Sud), Zhvl- (a fost) Tschtler, da! dar?

<(1ьалвьшвый> $ 3456.78 Copie # 90

capeleves / Ambore "12.5

Desigur, nu super, dar pentru prima dată, și un exemplu atât de slabă și dicționar, cred, nu rău!

Igor Vlasov (Igorvlassov la Narod Dot RU) - Tesseract în limba rusă

Tesseract-OCR este o bibliotecă gratuită pentru recunoașterea textului. Pentru a le conecta la dvs. trebuie să descărcați următoarele componente:
Leptonica - http://code.google.com/p/leptonica/downloads/detail?name\u003dleptonica-1.68-win32-lib-include-dirs.zip.
Cea mai recentă versiune a TESSERACT-OCR (în acest moment este 3.02) - https://code.google.com/p/tesserace-ocr/downloads/detail?name\u003dstesseract-3.02.02-win32-lib-includire .ZIP & CAN \u003d 2 & Q \u003d
Datele de învățare a forței de muncă - https://tessract-ocr.googleCode.com/files/tesserac-ocr-3.02.rus.tar.gz
Toată lumea poate fi colectată independent prin descărcarea codurilor sursă, dar nu vom face acest lucru.

Prin crearea unui nou proiect, conectați căile către fișierele lib și H. Și scrie un cod simplu.
#Include. #Include. INT Main () (Tesseract :: TessbaseApi * MyOCr \u003d New Tessract :: TessbaseApi (); Printf ("Tesseract-OCR:% s \\ n", myoco-\u003e versiune ()); Printf ("Leptonica versiune:% s \\ n ", getleptonicasion ()); dacă (miocr-\u003e init (," rus ")) (FPrintf (Stderr," nu a putut inițializa Tesseract. \\ n "); Ieșire (1);) Pix * Pix \u003d pixread ("test.tif"); Myocr-\u003e SetImage (PIX); Char Outtext; LSTRCPY (Outtext, Myocr-\u003e Getutf8Text ()); Printf ("OCR Ieșire: \\ n \\ n"); Printf (Outtext); Myocr -\u003e limpede (); miocr-\u003e capătul (); pixdestroy (& pix); retur 0;)

Conectați fișierele lib:
LIBTESERATORACT302.Lib.
Liblept168.lib.

Complet - Programul este creat cu succes. Ca exemplu, luați următoarea imagine:

Realizăm programul astfel încât informațiile să fie afișate în fișier (din moment ce UTF-8 din consola Capo va fi):
Test\u003e A.txt.

Conținutul fișierului de mai jos:
TESSERACT-OCR Versiune: 3.02
Leptonica Versiune: Leptonica-1.68 (14 Martie 2011, 10:47:28)
OCR de ieșire:

, Înlocuind această expresie în (63), vedem asta
Cu titlu cu o singură bandă, semnalul este industrial
și adâncimea modulației este egală cu a.
7 semnal primar direct
Este imposibil să observați osciloscopul, așa că
Cum acest semnal este o bandă îngustă și noi
"Cazul" claritate "este absent, dar
Cu modulație cu o singură bandă, îngustă
"Semnal de somon cu același plic și apoi ea
"Și se manifestă în mod explicit și uneori (ca în op
"Cazul însorit) face confuzie în mintea lui prost
și cercetători ..
6.4. "Costa Formula"
G U.
Odată cu apariția OM în manuale, cafea `
Estates și monografii Debaught Întrebarea
Modul în care câștigă trecerea de la amplitudine
Modulații cu o singură bandă. A fost mult exprimată
Opinii dezordonate. La începutul anilor '60 ai AME-
Rican de știință J. Kostas a scris că, vezi
Literatură jurnal de jurnal pe ohm, el
descoperit în fiecare articol estimarea energiei
"Câștiguri clare despre am-două la
Duzină multiusa. Ca rezultat, a instalat el
- câștigarea, indicată în fiecare articol,
Ea face aproximativ (Z-K-S!) DB, unde numărul M numărul
\u003e Autori ai acestui articol.
E, '11 Dacă această glumă și inexactă, este încă corectă
"Muzica reflectă această maturitate care a existat
; În acei ani. În plus față de faptul că autori diferiți
D a urcat o comparație în diferite condiții și o dată-m
, Nomu a determinat câștigurile de energie, ele sunt de la 1
"," Același lucru a permis o mulțime de greșeli diferite. patru "
, "Iată exemple de raționament. ",
1. Cu obișnuit, crezând transportatorul de putere