Optičko prepoznavanje znakova s ​​Tesseractom

1. Pregled

S napretkom tehnologije u AI i strojnom učenju, potrebni su nam alati za prepoznavanje teksta na slikama.

U ovom uputstvu istražit ćemo Tesseract, mehanizam optičkog prepoznavanja znakova (OCR), s nekoliko primjera obrade slike u tekst.

2. Tesseract

Tesseract je OCR mehanizam otvorenog koda koji je razvio HP that prepoznaje više od 100 jezika, uz podršku ideografskih i jezika s desna na lijevo. Također, možemo obučiti Tesseract za prepoznavanje drugih jezika.

Sadrži dva OCR mehanizma za obradu slike - LSTM (Long Short Term Memory) OCR mehanizam i naslijeđeni OCR mehanizam koji radi prepoznavanjem obrazaca znakova.

OCR mehanizam koristi biblioteku Leptonica za otvaranje slika i potpora razni izlazni formati poput običnog teksta, hOCR (HTML za OCR), PDF i TSV.

3. Postavljanje

Tesseract je dostupan za preuzimanje / instaliranje na svim glavnim operativnim sustavima.

Na primjer, ako koristimo macOS, možemo instalirati OCR mehanizam pomoću Homebrew:

pivo instalirati tesseract 

Primijetit ćemo da paket prema zadanim postavkama sadrži skup datoteka s podacima o jeziku, poput engleskog, te orijentaciju i otkrivanje skripti (OSD):

==> Instaliranje tesseract ==> Preuzimanje //homebrew.bintray.com/bottles/tesseract-4.1.1.high_sierra.bottle.tar.gz ==> Izlijevanje tesseract-4.1.1.high_sierra.bottle.tar.gz = => Upozorenja Ova formula sadrži samo datoteke podataka "eng", "osd" i "snum". Ako su vam potrebni neki drugi podržani jezici, pokrenite `brew install tesseract-lang`. ==> Sažetak /usr/local/Cellar/tesseract/4.1.1: 65 datoteka, 29,9 MB

Međutim, možemo instalirati tesseract-lang modul za podršku drugim jezicima:

pivo instalirati tesseract-lang

Za Linux možemo instalirati Tesseract koristeći njam naredba:

njam instaliraj tesseract

Isto tako, dodajmo jezičnu podršku:

yum instalirajte tesseract-langpack-eng yum instalirajte tesseract-langpack-spa

Ovdje smo dodali jezično osposobljene podatke za engleski i španjolski.

Za Windows možemo instalirati tvrtke Tesseract na UB Mannheim.

4. Tesseract naredbeni redak

4.1. Trčanje

Za izdvajanje teksta sa slika možemo koristiti alat naredbenog retka Tesseract.

Na primjer, napravimo snimak našeg web mjesta:

Zatim ćemo pokrenuti tesseract naredba za čitanje baeldung.png snimak i napišite tekst u izlaz.txt datoteka:

tesseract baeldung.png izlaz

The izlaz.txt datoteka će izgledati ovako:

REST s Spring Spring Spring (novo!) Kanonska referenca za izgradnju API-ja proizvodne klase s Springom. Od nikakvog iskustva do stvarne gradnje stvari. y Javni tjedni pregledi

Primjećujemo da Tesseract nije obradio cjelokupan sadržaj slike. Jer točnost rezultata ovisi o raznim parametrima poput kvalitete slike, jezika, segmentacije stranice, obučenih podataka i mehanizma koji se koristi za obradu slike.

4.2. Jezična podrška

Prema zadanim postavkama, OCR mehanizam koristi engleski jezik prilikom obrade slika. Međutim, jezik možemo prijaviti pomoću -l argument:

Pogledajmo još jedan primjer s višejezičnim tekstom:

Prvo, obradimo sliku na zadanom engleskom jeziku:

izlaz za tesseract multiLanguageText.png 

Izlaz će izgledati ovako:

Der, .schnelle ”braune Fuchs springt iiber den faulen Hund. Le renard brun «rapide» saute par-dessus le chien paresseux. La volpe marrone rapida salta sopra il cane pigro. El zorro marron rapido salta sobre el perro perezoso. Raposa marrom rapida salta sobre 0 cao preguicoso.

Zatim, obradimo sliku na portugalskom jeziku:

tesseract multiLanguageText.png izlaz -l por

Dakle, OCR mehanizam će također otkriti portugalska slova:

Der, .schnelle ”braune Fuchs springt iber den faulen Hund. Le renard brun «rapide» saute par-dessus le chien paresseux. La volpe marrone rapida salta sopra il cane pigro. El zorro marrón rápido salta sobre el perro perezoso. Raposa marrom rápida salta sobre o cão preguiçoso.

Slično tome, možemo deklarirati kombinaciju jezika:

tesseract multiLanguageText.png izlaz -l spa + por

Ovdje će OCR mehanizam prvenstveno koristiti španjolski, a zatim portugalski jezik za obradu slika. Međutim, izlaz se može razlikovati ovisno o redoslijedu jezika koje odredimo.

4.3. Način segmentacije stranice

Tesseract podržava razne načine segmentacije stranica poput OSD-a, automatske segmentacije stranica i rijetkog teksta.

Način segmentacije stranice možemo proglasiti pomoću –Psm argument s vrijednošću od 0 do 13 za različite načine rada:

tesseract multiLanguageText.png izlaz --psm 1

Ovdje smo definiranjem vrijednosti 1 proglasili automatsku segmentaciju stranice s OSD-om za obradu slike.

Pogledajmo sve podržane načine segmentacije stranice:

4.4. OCR način rada motora

Slično tome, tijekom obrade slika možemo koristiti razne načine rada motora kao što su naslijeđeni i LSTM engine.

Za to možemo koristiti –Em argument s vrijednošću od 0 do 3:

tesseract multiLanguageText.png izlaz --em 1

Načini rada OCR motora su:

4.5. Tessdata

Tesseract sadrži dva skupa obučenih podataka za LSTM OCR mehanizam - najbolje obučeni LSTM modeli i brze cjelobrojne verzije obučenih LSTM modela.

Prvi pruža bolju točnost, a drugi bolju brzinu u obradi slike.

Također, Tesseract nudi kombinirane obučene podatke s podrškom za naslijeđeni i LSTM OCR mehanizam.

Ako upotrijebimo Legacy OCR engine bez davanja pratećih obučenih podataka, Tesseract će izbaciti pogrešku:

Pogreška: zatražen je Tesseract (naslijeđeni) motor, ali komponente nisu prisutne u /usr/local/share/tessdata/eng.traineddata !! Nije uspjelo učitavanje jezika 'eng' Tesseract nije mogao učitati nijedan jezik!

Dakle, trebali bismo preuzeti potrebno .trenirani podaci datoteke ili ih zadržite u zadanim postavkama tessdata ili prijavite lokaciju pomoću –Tessdata-dir argument:

tesseract multiLanguageText.png izlaz --tessdata-dir / obrada slike / tessdata

4.6. Izlaz

Možemo proglasiti argument kako bismo dobili potreban izlazni format.

Na primjer, da biste dobili PDF izlaz koji se može pretraživati:

tesseract multiLanguageText.png izlazni pdf

Ovo će stvoriti izlaz.pdf datoteka s slojem teksta koji se može pretraživati ​​(s prepoznatim tekstom) na priloženoj slici.

Slično tome, za izlaz hOCR:

tesseract multiLanguageText.png izlazni hocr

Također, možemo koristiti tesseract –pomoć i tesseract –pomoć-ekstra naredbe za više informacija o upotrebi tesseract naredbenog retka.

5. Tess4J

Tess4J je Java omot za Tesseract API-je koji pruža OCR podršku za razne formate slika poput JPEG, GIF, PNG i BMP.

Prvo, dodajmo najnovije tess4j Mavenova ovisnost o našoj pom.xml:

 net.sourceforge.tess4j tess4j 4.5.1 

Tada možemo koristiti Tesseract klasa koju pruža tess4j za obradu slike:

Slika datoteke = nova datoteka ("src / main / resources / images / multiLanguageText.png"); Tesseract tesseract = novi Tesseract (); tesseract.setDatapath ("src / main / resources / tessdata"); tesseract.setLanguage ("eng"); tesseract.setPageSegMode (1); tesseract.setOcrEngineMode (1); Rezultat niza = tesseract.doOCR (slika);

Ovdje smo postavili vrijednost put podataka na mjesto direktorija koje sadrži osd.treineddata i eng.traineddata datoteke.

Konačno, možemo provjeriti Niz izlaz obrađene slike:

Assert.assertTrue (result.contens ("Der, .schnelle” braune Fuchs springt ")); Assert.assertTrue (result.contens ("salta sopra il cane pigro. El zorro"));

Uz to možemo koristiti i setHocr metoda za dobivanje HTML rezultata:

tesseract.setHocr (istina);

Prema zadanim postavkama knjižnica obrađuje cijelu sliku. Međutim, određeni dio slike možemo obraditi pomoću java.awt.Pravokutnik objekt dok zovete doOCR metoda:

rezultat = tesseract.doOCR (imageFile, novi pravokutnik (1200, 200));

Slično Tess4J, možemo koristiti Tesseract Platform za integraciju Tesseract-a u Java programe. Ovo je JNI omot API-ja Tesseract koji se temelji na knjižnici JavaCPP Presets.

6. Zaključak

U ovom smo članku istražili Tesseract OCR mehanizam s nekoliko primjera obrade slika.

Prvo smo ispitali tesseract alat naredbenog retka za obradu slika, zajedno sa nizom argumenata poput -l, –Psm i –Em.

Zatim smo istražili tess4j, Java omot za integriranje Tesseract-a u Java programe.

Kao i obično, sve implementacije koda dostupne su na GitHubu.