Tesseract-OCR u Visual Studio - prepoznavanje stranice teksta. Treniramo Tesseract koji trebamo

Tesseract. - Besplatna platforma za optičko priznavanje teksta, izvori od kojih je Google predstavio zajednicu u 2006. godini. Ako napišete softver za prepoznavanje teksta, vjerojatno morate pristupiti uslugama ove moćne knjižnice. A ako se ne nosi s vašim tekstom, onda imate na jedan način lijevo - naučiti ga. Ovaj proces je prilično kompliciran i prepun očiglednih, a ponekad i izravno s čarobnim akcijama. Izvorni opis je. Trebala mi je gotovo cijeli dan da shvatim sve njegove dubine, pa želim spasiti, nadam se da je njegova razumljiva opcija. Tako da pomognete sebi i drugima prolaze kroz ovaj put sljedeći put brže.

0. Što nam je potrebno

  • Tesseract zapravo.
Sastavljanje ove knjižnice je u sustavu Windows (možete preuzeti instalater iz službenog spremišta) i pod Linuxom. Za većinu distribucija Linuxa, instalirati Tesseract se može jednostavno instalirati sudo apt-dobiti instalirati Tesseract-OCR, Moram dodati izvor za moj moderan izborni OS:
gedit /etc/apt/sources.list.
deb http://notesalexp.net/debian/precise/ Precizan glavni
wget -o - http://notesalexp.net/debian/alexp_key.ast
apt-Key Dodaj alexp_key.asc
apt-get ažurirati
apt-get install Tesseract-OCR
  • Slika s tekstom za obuku
Poželjno je da je to pravi tekst, koji će onda morati prepoznati. Važno je da je svaki simbol fonta ispunjen u skeniranom fragmentu najmanje 5 puta, a po mogućnosti 20 puta. TIFF format, bez kompresije, poželjno ne se množi. Između svih likova trebaju biti jasno razlikovati praznine. Stavite našu sliku u zasebni direktorij i nazovite u obliku<код языка>.<имя шрифта>.Exp<номер>. Slika možda nije jedna i razlikuje se da bi trebala biti samo u nazivu datoteke. Nazivi datoteka format su vrlo važni. Na datotekama s nepravilnim imenima uslužnog programa koje ćemo koristiti će se zaklinjati na pogreške segmentacije itd. Za određenost pretpostavljamo da proučavamo SCC jezik i Eee font. Dakle, nazovite datoteku pomoću uzorka skeniranja ccc.eee.exp0.tif

1. Stvorite i uredite datoteku okvira
Za. Da biste označili znakove na slici i postavili njihove utakmice UTF-8 tekstualnih simbola su okvirne datoteke. To su uobičajene tekstualne datoteke u kojima svaki znak odgovara nizu sa simbolom i koordinatama pravokutnika u pikselima. U početku, generirate uslužni program iz paketa Tesseract:
tesseract ccc.eee.eee.exp0 batch.nochop mankbox
Primljena CCC.eee.exp0.box datoteka u trenutnom direktoriju. Pogledaj to. Simboli na početku linije u potpunosti odgovaraju znakovima u datoteci? Ako je tako, onda ne morate trenirati ništa, možete dobro spavati. U našem slučaju, najvjerojatnije se likovi neće poklapati bilo koji od bitnih u broju. Oni. Tesseract s zadanim rječnikom nije prepoznao ne samo likove, već se i neke od njih smatrali za dva ili više. Možda dio likova koje ćemo "držati", tj. će pasti u zajedničku kutiju i biti će prepoznati kao jedan. Sve treba popraviti prije nego što odeš dalje. Radite zamorni i mukotrpan, ali na sreću postoji niz usluga treće strane za to. Na primjer, koristio sam Pytestrainer-1.03. Otvorimo sliku s njima, okvir-datoteku s istim imenom i sam izvlači.
Pola dana prošao ... Vi s osjećajem dubokog zadovoljstva s piteseracttrainer (niste zaboravili spremiti rezultat, zar ne?) I imate ispravnu box datoteku. Sada možete ići na sljedeći korak.

2. Trening Tesseract
tesseract ccc.eee.eee.eee.eee.ee.ee.eee.eee.evp0 nosch0.train
Dobivamo mnogo pogrešaka, ali gledamo u nešto slično "pronađeno 105 dobrih mrlja". Ako je broj znatno veća od broja "proučavanih" znakova, to jest, mogućnost da je obuka u cjelini uspjela. Inače se vraćamo na početak. Kao rezultat ovog koraka, imate ccc.eee.eee.exp0.t datoteku

3. Uklonite skup simbola
unicharset_Extractor CCC.eee.exp0.box.
Primamo skup znakova kao Unicharset datoteku u trenutnom direktoriju, gdje se svaki lik i njegove karakteristike nalaze u zasebnoj liniji. Ovdje naš zadatak će provjeriti i ispraviti karakteristike znakova (drugi stupac u datoteci). Za mala slova abecede stavljamo znak 3 za veliki 5, za interpunkciju 10 za brojeve 8, sve ostalo (tip + \u003d -) označen 0. Kineski i japanske hijeroglife koje bilježimo 1. Obično su svi znakovi u pravu, Dakle, ova faza je puno vremena koje nećete uzeti.

4. Opišite stil fonta
Stvorite CCC.font_properties datoteku s jednim nizom: Eee 0 0 0 0 0. Ovdje prvi napišite naziv fonta, a zatim broj 1 ili 0 je označen kao prisutnost stilskih znakova (odnosno, kurziv bolan fiksni serif fraktur) , U našem slučaju nema stilova, pa ostavljamo sve u nulama.

5. Klasteri brojki, prototipova i druga magija
Za daljnje studije moramo izvesti još tri operacija. Možete pokušati razumjeti svoje značenje od službenog opisa, nisam bio prije :). Samo obaviti:
shapeclustering -f ccc.font_properties -u unicharset ccc.eee.exp0.tr
... datoteka smijeni
i onda:
mfreining -f ccc.font_properties -u Unicharset -O ccc.unicharset ccc.eee.exp0.tr
... dobiti datoteke ccc.unicharset, innttemp, pfftble
Konačno:
cntraining ccc.eee.exp0.t.
... dobivamo normuroto datoteku.

6. Rječnici
Teoretski punjenje rječnika često korištenih riječi (i riječi uopće) pomažu Tessact-U da se nosite sa svojim doodles. Razumijevanje rječnika, ali ako odjednom želite, napravite datotekeČetvrti_words_list i Words_list u kojem uđete (svaki iz novog retka), odnosno, često se koristi i jednostavno riječi jezika.
Da biste ove popise pretvorili u ispravan format, izvedite:
wordlist2Dawg chests_words_list ccc.freq-dawg ccc.unicharset

wordlist2Dawg Words_list ccc.word-Dawg ccc.unicharset

7. Posljednja tajanstvena datoteka
Njegovo ime je Unicharacmbigs. U teoriji mora obratiti pozornost na Tesseract na sličnim simbolima. Ova tekstualna datoteka u svakom retku s separatorima tab opisano je parovima žica koje se mogu zbuniti pri prepoznavanju. Potpuno format datoteke opisan je u dokumentaciji, nije bilo potrebno i ostavio sam ga prazan.

8. Posljednji tim
Sve datoteke moraju se preimenovati tako da njihova imena počinju s imenom jezika. Oni. Samo će datoteke ostati u direktoriju:

ccc.box.
ccc.inttemp
ccc.pfftble
ccc.tif.
ccc.font_properties.
ccc.normproto.
ccc.hapetable
ccc.tr.
ccc.unicharset.

I na kraju, nastupamo:
combine_tessdata ccc.
(!) Poanta je obavezna. Kao rezultat toga, dobivamo CCC.trableData datoteku, koja će nam omogućiti daljnje prepoznavanje našeg tajanstvenog novog jezika.

9. Provjeravamo je li to vrijedilo :)
Sada pokušajmo prepoznati naš uzorak koristeći već obučeni Tesseract-a:
sudo cp ccc.trableddata / usr / Share / Tesseract-OCR / TESSDATA /
tesseract ccc.tif izlaz -l ccc
Sada gledamo izlaz .txt i radujemo se (ili ustajanju, ovisno o rezultatu).

Ako postoje gotova rješenja, nema smisla izmisliti štake i bicikle. S posebnim cinizmom, ova izjava je dokazala autorima Cryptolockera, koji su koristili Cryptoapi za svoje svrhe :). Istina je za odluku našeg današnjeg zadatka - dekodiranje CAPPS (s obrazovnim ciljevima, naravno). Naprijed, pokrenite vizualni studio!

Uvod

Cijeli proces nadolazećeg rada može biti uvjetno podijeljen u nekoliko faza:

  • preuzmite slike;
  • uklonite zvukove i drugu umjetnu distorziju;
  • označite područja povezanosti (simbola), spremite ih;
  • podučavati neurallet ili stvoriti rječnik;
  • prepoznati

To će nam pomoći:

  • Aforgenet - knjižnice računalne vizije i umjetna inteligencija;
  • Tesseract - Program za prepoznavanje teksta;
  • Fanndotnetwrapper - wrapper.net neuraretas fann;
  • algoritam za traženje CCLA-eve udruge od Omar Gamele Salem.

Izvor na DVD.Syt.

Ne zaboravite preuzeti Sabzh, bit će vam korisno prilikom čitanja ovog članka. Nema malvarija, bez ekstremizma je samo čista znanost, samo OCR tehnologija, samo hardcore!

Pripremna faza

Mi lansiramo Visual Studio i stvoriti novi prozor projekt u C #. Otvorite ga u Exploreru, kako biste tamo kopirali potrebne datoteke.


Za treniranje neuronske mreže FANN je koristio dio koda iz Tesseract, razlika je u tome što stvaramo jedan vlak .tr Text datoteku, u kojoj je prvi redak broj slika, broj bodova u svakoj (širini pomnoženom po visini) i broj izlaza (slova, koje tražimo). Obvezna binizacija sama, dodijeliti samo dva stanja svake točke (1 - crna, 0 - bijele boje) i uštedjeti dalje u istoj datoteci u svim sljedećim linijama. Za praktičnost i mogućnost korištenja različitih unaprijed stvorenih Ann datoteka, stvorena je dodatna tekstualna datoteka .txt. Sastoji se od jedne linije i označava broj bodova i izlaza sa svojim vrijednostima, slučajno početi provjeriti CAPTCHA na drugoj Ann datoteci neće raditi.

String a \u003d file.Raadaltxt (savefileškat + "config.txt"); String b \u003d a.split (""); Int supemp \u003d convert.Toint32 (b); INT OCEPT \u003d pretvoriti.Toint32 (B.Length); UINT slojevi \u003d ((UINT) superix, (UINT) slojevi, (UINT) izlaz); net.createstandarbarray (slojevi); Net.randomizeweghts (-0.1, 0.1); net.SetlearningRate (0.7f); Podaci o treninzima \u003d nova treningdata (); Data.Radainfromflile (savefilemat + "vlak .tr"); net.trainondata (podaci, 1000, 0, 0.001f); Net.save (savefilemat + "fannnearning.n");

Primamo konfiguraciju, čitamo parametre, broj slojeva (slojeva) na preporuku Wikipedije postavljeno je na 120, sve ostalo je odabrano nasumično ili vidljivo na mreži. Brzina učenja ovisi o snazi \u200b\u200bvašeg željeza i ono što je napisano gore. Na primjer, i7-4702MQ na 6500 slika s jednom jezgrom bila je zauzeta minuta 20-30.

Korak šest. Priznanje

U završnoj fazi su provedeni dva pristupa, ali obuka je provedena. Tesseract 3.02 i Fann se nalaze na dolje lijevo od glavnog prozora. Prvi može tražiti engleski (odabrati znakove s padajućeg popisa), ruski, matematički i korisnički rječnik. Pretraživanje za rječnik automatski se pojavljuje i prikazuju se svi dostupni u opisu alata. Drugi prepoznaje tekst na fannocrvu tipku i prikazuje (lijevi dio prozora) rezultat analize za svaki odabrani simbol. Vrlo je zgodno gledati zašto je neuronska mreža izabrala jedan ili drugi izlaz. Razmislite o tome kako radi u slučaju neuronske mreže.

Private String OCR (bitmap IMG) (... int whx \u003d img.widh * img.height; ako (sumpix! \u003d Whx) (/ * prikazati pogrešku, broj piksela * /) dvostruki ulaz \u003d getpix (img) ; Dvostruki rezultat \u003d net.run (unos); ako (tempanswer.length! \u003d Rezolucija) (/ * Prikaz pogreške, drugi broj izlaza * /) Int Maxn \u003d Findmax (Rezultat); Odgovor \u003d Convertu (Tempanswer); ako (tologevent! \u003d Null) tologevent (rezultat, tempanswer, odgovor); ...)

Primili su sliku iz javne metode, gdje je net.createfromfile (savefilemat + "fannlearning.ann") i čitanja datoteka konfiguracija, tempanswer je varijabla jednaka B, navodi slova koja tražimo. Usporedite broj piksela, napišite ih u niz i prođite kroz obučenu Ann, u potrazi za maksimalnim visokim postotkom slučajnosti, a zatim vodimo rezultat u događaju odabirom jednog izlaza i primili pismo popravljeno nakon njega.

Raspravljanja o rezultatima

Rezultati ispitivanja snažno ovisi o broju i kvaliteti slika za učenje, te u slučaju neuronske mreže FANN - i na broj ispašu. U prosjeku, captcha, podložan filtrima, imao je ~ 80% ispravnog prepoznavanja, onda mnogo ovisi o savršenstvu i želji - koje ćete podučavati, onda ćete ga dobiti. Glavna stvar je da radi.

Zaključak

Svi opisani u članku mogu se primijeniti za rješavanje mnogih drugih zadataka. Na primjer, ja, kada u potrazi za informacijama, detaljna analiza prepoznavanja slike automobila na parkiralištu je ispunjena. Uključite Fantasy i Visual Studio! 🙂

Trebalo mi je da dobijem vrijednosti začepljenih brojeva. Brojevi opljačkan S ekrana.

Mislio sam, i ne pokušavam isprobati OCR? Pokušao sam Tesseract.

U nastavku ću vam reći kako sam pokušao prilagoditi Tesseract, zašto sam ga trenirao i što se dogodilo iz njega. Projekt na Hitabeu leži CMD skriptu koja automatizira koliko je vremena proces treninga moguć i podaci na kojima sam proveo obuku. Jednom riječju, postoji sve što je potrebno za treniranje Tesseract trenirati nešto korisno.

Priprema

Kloniranje spremišta ili preuzimanje zip Arhiva (~ 6MB). Instalirajte Tesserator 3.01 s.Syta. Ako više ne postoji, onda iz poddirektorija ZIP arhive / distra.

Idite na mapu uzoraka, pokrenite montage_all.cmd.
Ova skripta će stvoriti konačnu sliku. uzorci / total.png., ne možete pokrenuti skriptu, jer Već sam ga stavio u korijensku mapu projekta.

Zašto trenirati?

Možda i bez treninga rezultat će biti dobar? Ček.
./Exp1 - kao i\u003e Tesseract ../total.png Ukupno

Postavite ispravljeni rezultat u datoteci model_total.txtUsporediti rezultate prepoznavanja. Zvjezdica označava pogrešne vrijednosti.

model_total.txt Priznanje
zadano
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

zadano pogreške prepoznavanja

Može se vidjeti da postoje mnoge pogreške. Ako pažljivo pogledate, možete vidjeti da decimalna točka se ne prepoznaje, brojevi 6 i 8 priznaju se kao 5. Hoće li vježbati pomoći riješiti se pogrešaka?

Vježbati

Trening Tesseract omogućuje vam da ga vozite na prepoznavanju slika tekstova u obliku u kojem ćete ga hraniti sličnim slikama u procesu prepoznavanja.
Vi prolazite Tesseract trening slike, ispravite pogreške prepoznavanja i prenose ove smjerove na Tesseract-y. I ispravlja koeficijente u svojim algoritmima da nastave sprječavati pogreške koje ste pronašli.

Za izvođenje vježbanja želite pokrenuti. / Exp2 - obučeni\u003e Train.cmd

Što je proces vježbanja? Iu činjenici da tesseract obrađuje sliku treninga i tzv. Kutije znakova - ističe pojedinačne znakove iz teksta stvarajući popis ograničavanja pravokutnika. U isto vrijeme, on stavlja nagađanje o tome kakav je simbol ograničen pravokutnikom.

Rezultati ovog rada piše na total.box datoteku, koji izgleda ovako:
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

Ovdje u simbolu stupca single, au 2 - 5 koordinata koordinata donjeg lijevog kuta pravokutnika, visinu i širinu.

Naravno, teško ga je urediti ručno i neugodno, tako da grafički programi olakšavaju ovaj rad stvorili su entuzijasti. Nekada sam bio napisan u Javi.

Nakon pokretanja. / Exp2 - Obučeno\u003e Java -Jar jtessBoxeditor-0.6jtesBoxeditor.JAR Morate otvoriti datoteku. / Exp2 - obučeni / TOTAL.PNG, datoteka će biti automatski otvorena. / Exp2 - obučeni / total.Box i pravokutnik Definiran u njemu će biti postavljen na sliku treninga.

Na lijevom dijelu sadržaj total.box datoteka se daje na desnoj strani postoji slika za vježbanje. Iznad slike je aktivna linija total.box datoteke

Plave prikazane kutije i crveno boks koji odgovara aktivnom retku.

Ispravio sam sve pogrešne 5-Ki na desnoj 6-KI i 8., dodao redove s definicijama svih decimalnih točaka u datoteci i spremljene total.box

Nakon uređivanja je dovršeno, potrebno je da skripta nastavlja raditi, morate zatvoriti Jtessboxeditor. Nadalje, sve radnje se automatski obavlja skriptom bez sudjelovanja korisnika. Skripta piše rezultate obuke pod kodom TTN

Da biste koristili ishode učenja prilikom prepoznavanja, morate pokrenuti Tesseract c tipku za tipke -l TTN
./Exp2 - obučeni /\u003e Tesseract ../total.png totalni trenirani -l TTN

Može se vidjeti da su se svi brojevi počeli ispravno prepoznati, ali decimalna točka još uvijek nije prepoznata.

model_total.txt Priznanje
zadano
Priznanje
Nakon vježbanja
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

pogreške prepoznavanja učenja

Uvećaj sliku

Možete se povećati na različite načine, pokušao sam dva načina: razmjera i mijenjati veličinu

total-Scaled.png (fragment) total-Resized.png (fragment)
Pretvoriti total.png total-scaled.png -scale "208x1920" pretvoriti totalg total-Resized.png -Resize "208x1920"

Budući da su slike likova povećane sa samim slikama, podaci o obuci ispod koda TTN zastarjeli su. Stoga sam priznao bez ključa -l TTN-a.

Može se vidjeti da je u slici total-scaled.png Tesseract zbunjuje 7-ku s 2., i ne zbunjuje potpunu veličinu.png. Na obje slike, decimalna točka je ispravna. Priznavanje slike Total-Resized.png je gotovo savršeno. Postoje samo tri pogreške - jaz između brojeva u brojevima 21, 114 i 61.

Ali ova pogreška nije kritična, jer Lako ga je popraviti jednostavnim uklanjanjem iz linija prostora.

total-Scaled.png Pogreške prepoznavanja

pogreške totalne resizentirane pogreške

model_total.txt Priznanje
zadano
Priznanje
Nakon vježbanja
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

Digitalizacija slika jedan po jedan

U redu, što ako trebate digitalizirati slike jedan za drugim u pravom načinu posteljine?

Pokušavam jedan po jedan.
./Exp5 - jedan po jedan\u003e za / r% I u (* .png) učiniti tesseract "% i" "% i"
Dva i troznamenkasti brojevi uopće nisu određeni!

625.05
1740.10

Digitalizacija malih paketa

A ako želite digitalizirati slike paketima nekoliko slika (6 ili 10 u pakiranju)? Deset vremena.
./Exp6 - deset u redu\u003e Tesseract Teninline.png Teninline

Prepoznat, pa čak i bez jaza među 61.

zaključci

Općenito, očekivao sam najgore rezultate, jer Mali rasterske fontove su granični slučaj zbog njihove male veličine, različita granularnost i postojanost - različite slike jednog simbola potpuno se podudaraju. A praksa je pokazala da su raspoređene umjetno nadahnute brojke bolje prepoznate.

Image za prediranje ima veći učinak od učenja. Povećanje s zaglađivanjem: pretvoriti -Resize ...

Priznavanje odvojenog "kratkog" dva i troznamenkasti broj nezadovoljavajućih brojeva treba prikupiti u paketima.

Ali općenito, Tesseract se gotovo nosio s zadatkom, unatoč činjenici da je izoštren za druge zadatke - prepoznavanje natpisa na fotografiji i videozapisu, skeniranje dokumenata.

U članku se raspravlja o postupku podučavanja ruskog jezika otvorenog OCR sustava Tesseract koji je razvio usporedbu Hewlett-Packard.

[Vlasov Igor (Igorvlassov u Narod dot ru)]

Tražio sam OCR divechu ovdje za jedan projekt koji govori engleski jezik. I jednostavno se upoznao sa stanjem stvari u odnosu na materinji jezik. Slobodan OCR sposoban prepoznati izvorni govor, nisam ga pronašao. Ali posrnuo na projektu Tesseract. Ovo je bivša komercijalna multi-platforma OCR, koju je razvio Havlet Packard. Sada se, prvo, primjenjuje se pod licencom Apache V.2. I drugo, može se pokušati podučiti neki novi jezik koji ćemo pokušati učiniti. Dakle, čitamo priručnik koji se zove treningtesseract:

prvi korak bi trebao biti definicija kompletnog skupa znakova koji će se koristiti i stvarati tekstualnu datoteku ili datoteku tekstualnog procesora s primjerima.

Kada pripremate datoteku treninga, morate zapamtiti sljedeće:

    potreban je minimalni broj primjera svakog simbola. 10 - Dobro, ali 5 je dovoljno za rijetke likove, a za često pronađeno najmanje 20;

    nemoguće je skupljati ne-zaljeve sve zajedno, morate učiniti tekst realnijim, na primjer:
    u šikarama na jugu, postojala je agruma da, ali lažna kopija. 0123456789 [Zaštićeno e-poštom]#$%^&(),.{}<>/? - strašno. Puno bolje:u šikara (jug) žive- (bio) citrus, da! ali?<фальшивый> $3456.78 Primjer# 90 / rajčica "12,5%

    bilo bi lijepo rastegnuti tekst povećanjem intersticijalnih i intervativnih intervala;

    podaci o obuci trebaju biti prikladni na jednoj stranici;

    nema potrebe za trenirati na nekoliko veličina, dovoljno na veličini fonta 10. Ali za visinu teksta, to je manje od 15 piksela za treniranje odvojeno ili povećati sliku prije prepoznavanja.

Zatim morate ispisati i skenirati ili koristiti neku drugu metodu za dobivanje slike na stranici za obuku. Može biti do 32 stranice. Najbolje je stvoriti stranice s fontovima i stilovima, uključujući masti i nagnute.

Pokušat ću to učiniti samo za Thorndale Amt Font, koji na svojoj desktopu ispod Suse10 u OpenOffice izgleda gotovo kao Times New Roman pod Windowsima. Dakle, ja napraviti zasebnu datoteku s gore navedenim tekstom o fontfile.odt Cytrus, ispisujem, skeniram i drži u crno-bijeli BMP fontfile.bmp.

Sljedeći korak je stvoriti datoteku s koordinatama pravokutnika, u kojima je svaki znak zaključen. Srećom, Tesseract može napraviti datoteku potrebnog formata, barem skup znakova i neće odgovarati našem. Stoga će biti potrebno ručno popraviti datoteku unosom ispravnih znakova. Do:

tesseract Fontfile.BMP Fontfile Batch.nochop Mankbox

Kao rezultat toga, ispalo je datoteku Fontfile.txt, koja se mora preimenovati u Fontfile.box

To je ono što imam tamo:

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

233 137 248 154

} 254 130 264 162

M 284 137 306 154

Sada najteži dio - morate urediti ovu datoteku u uredniku u kojem se mogu zamijeniti pogrešnim znakovima. Koristim Kate.

Čini se da se ops zamijeni 2 znaka:

M 85 132 111 154

u tom slučaju potrebno je kombinirati opisivanje pravokutnika kako slijedi:

    Prvi broj (lijevo) mora biti minimalan od 2 retka (67)

    Drugi broj (dolje) mora biti minimalan od 2 retka (132)

    Treći broj (desno) mora biti najviše 2 linije (111)

    Četvrti broj (vrh) trebao bi biti najviše 2 linije (154)

tako: SH 67 132 111 154

Napomena: Koordinatni sustav koji se koristi u ovoj datoteci počinje s (0,0) i usmjeren je od donjeg prema gore i lijevo na desno.

Čini se da je Fuh ispravljen. Sada vodimo Tesseract u načinu učenja:

tesseRact Fontfile.bmp bezvrijedne nosatch box.train

i gledati Sortrr (ili Tessact.log pod Windowsima). Ako postoje pogreške pri FAT-u,

to znači da Tesserator nije pronašao jedan uzorak simbola navedenog u koordinatnoj datoteci. Dao mi je pogrešku:

Apply_Boxes: Fatality - 0 označeni uzorci "%" - Cilj je 2

Kutije čitaju iz boxfile: 89

U početku označene mrlje: 87 u 3 reda

Otkrili su kvarovi okvira: 2

Dupred mrljica za rebalans: 0

"%" Ima nekoliko uzoraka: 0

Ukupno neobičenih riječi: 1

Konačne označene riječi: 87

Generiranje podataka o obuci.

Trening ... Naziv fonta \u003d Nesposobno.

Generirani podaci o treninzima za 87 blobs

Međutim, fontfile.tr generiran. U redu, učinit ću bez znakova%, općenito je bilo potrebno napraviti više od svih likova, barem ponoviti ovaj fraza peta vremena.

U teoriji moram ponoviti ovaj postupak za različite fontove i dobiti nekoliko različitih datoteka, a zatim stvoriti prototipove pomoću naredbi vrste:

mftrainy fontfile_1.tr fontfile_2.tr ...

kao rezultat toga, treba dobiti 2 datoteke: inttemp (prototipovi oblika) i pffmtble , zatim

cntreining fontfile_1.tr fontfile_2.tr ...

stvorite normuroto datoteku (prototipovi za normalizaciju znakova?).

Radim to preko jedne od moje datoteke. Nešto se ispostavilo. Sada trebate odrediti Tesseract "s mnogo znakova koje može izlaz. Koristimo naredbu Unicharset_Extractor za generiranje datoteke Unicharset:

unicharset_extractor Fontfile_1.box fontfile_2.box ...

Radimo. U rezultirajućoj datoteci morate odrediti vrstu simbola pomoću maske, takve maske: ako je slovo 1, ako je malo slovo 1, ako je veliko slovo 1, ako je znamenka -1, inače 0.

Na primjer,

b - malo slovo. Njezina maska \u200b\u200b0011 ili heksadecimalna 3

; - Ne pismo, a ne znamenka. Maska \u003d 0.

7 - samo znamenka. Maska 1000 ili heksadecimalno 8.

B je veliko slovo. Maska 0101 ili heksadecimalna 5

imam sva slova. Mijenjam masku do 3.

Sada je potrebno uzeti dva lista negdje, jedan - često pronašao riječi, druge - druge riječi i pretvoriti ih u Dawg format koristeći drugi uslužni program:

wordlist2Dawg Frent_words_List Freq-Dawg

wordlist2Dawg Words_list Word-Dawg

Za početak sam se jednostavno zaglavio u svakih 5 proizvoljnih riječi.

Treća datoteka, korisničke riječi obično su prazne.

Posljednja datoteka koja treba obaviti naziva se Dangambigs u njoj opisuje slučajeve pogrešne zamjene jedne datoteke u drugu, na primjer

prva znamenka je broj znakova u prvoj skupini, 2. - broj znakova u 2. godini.

Ova crta pokazuje da se 1. ponekad može biti pogrešno prepoznat kao sh.

Ova datoteka je također m. prazan.

Sada svi skupljamo zajedno. Spisi

    freq-Dawg.

    word-Dawg.

    korisnik-riječi.

    inttemp.

    normProto.

    pffmban

    unicharset.

    Dangambigs.

mi isporučujemo ruski prefiks i tamo, gdje se drugi rječnici, imam / usr / lokalni / share / Tempsdata

Sve!!!

Pokušavamo prepoznati bilo koju datoteku. Pokušat ću početi s citrusom:

tesseract Image.bmp izlaz -L rus

To je ono što sam učinio:

u Cheyah (jug), ZHVL- (bio) Tschtler, da! ali?

<(1ьалвьшвый> $ 3456,78 Kopiraj # 90

capelves / Ambere "12.5

Naravno, ne super, ali po prvi put, i tako oslabljeni uzorak i rječnik, mislim, ne loše!

Igor Vlasov (Igorvlassov u Narod dot ru) - Tesseract na ruskom

Tesseract-OCR je besplatna knjižnica za prepoznavanje teksta. Da biste je povezali s vama trebate preuzeti sljedeće komponente:
Leptonica - http://code.google.com/p/leptonica/downloads/detail?
Najnovija verzija Tesseract-OCR-a (u ovom trenutku je 3,02) - https://code.google.com/p/tesseract-cr/downloads/detail?name\u003dtesseract-3.02.02-win32-lib-include-dirs .zip i može \u003d 2 i q \u003d
Podaci o radu - https://tesstract-cr.googlecode.com/files/tesseract-cr-3.02.rus.tar.gz
Svatko se može prikupljati neovisno preuzimanjem izvornih kodova, ali to nećemo učiniti.

Stvaranjem novog projekta spojite putove do lib i h. I napišite jednostavan kod.
#Include. #Include. Int Main () (Tesseract :: TessBaseati * Myof \u003d New Tessact :: TessBaseapi (); Printf ("Tesseract-OCR verzija:% s n", MyoCo-\u003e verzija ()); Printf ("Leptonica verzija:% s n ", getpleptonicasion ()); ako (myocr-\u003e init (," rus ")) (fprintf (Stderr,") ne može inicijalizirati Tesseract. \\ T "); Izlaz (1);) Pix * Pix \u003d Pix \\ t ("test.tif"); myocr-\u003e SETMAGE (PIX); Char Outtext; LTSTCPY (OutText, MyoCr-\u003e GetUTF8Text ()); Printf ("OCR izlaz: \\ n"); -\u003e jasno (); mycr-\u003e kraj (); pixdestroy (& pix); povratak 0;)

Spojite lib datoteke:
libteSeratorAct302.lib.
liblept168.lib

Kompletan - program je uspješno izrađen. Kao primjer, uzmite sljedeću sliku:

Pokrećemo program tako da se informacije prikazuju u datoteci (budući da će UTF-8 u Capo konzoli biti):
Test\u003e A.txt.

Sadržaj datoteke u nastavku:
Tesseract-OCR verzija: 3.02
Leptonica verzija: Leptonica-1,68 (14. ožujak 2011, 10:47:28)
OCR izlaz:

, Zamjenjujući ovaj izraz u (63), to vidimo
Pod nazivom s jednim pojasom, signal je industrijski
i dubina modulacije jednaka je a.
7 omotnice ho) primarni signal izravno
Nemoguće je promatrati osciloskop, pa
Kako je ovaj signal uski i mi
"Slučaj" jasnoće "je odsutna, ali
S modulacijom s jednim pojasom, uske
'Losos signal s istim omotnicom, a onda ona
"I očituje se eksplicitno i ponekad (kao u OP-u
"Sunny Case) čini zbunjenost u umovima slabo
i istraživači ..
6.4. "Costa formula"
G u.
S dolaskom om u udžbenicima, kava `
Estatys i monografije promatrano pitanje
Kako dobivanje daje prijelaz iz amplitude
Modulacije na jednokratnu traku. Bilo je mnogo izraženo
Neuređena mišljenja. Na početku 60-ih
Rican znanstvenik J. Kostas je to napisao, vidi
Trebunirani časopis literatura o Ohmu, on
u svakom članku otkrivena procjena energije
"Očistite dobitke o am-dva
Višestruki desetak. Kao rezultat toga, instalirao je
- pobjeda, naznačeno u svakom članku,
Čini približno (Z-K-S!) DB, gdje je M-broj ko-'g
\u003e Autori ovog članka.
E, '11 ako je ova šala i netočna, to je još uvijek točno
"Glazba odražava tu zrelost koja je postojala
; U tim godinama. Osim činjenice da različiti autori
D popeo se u usporedbu u različitim uvjetima i jednom-m
, Nomu je utvrdio energetske dobitke, oni su tako- 1
- Isto je dopušteno mnogo različitih pogrešaka. četiri "
`Evo primjeri nekih razmišljanja. ",,
1. Uz uobičajeno, vjerujući da je prijevoznik snage