Optické rozpoznávanie znakov pomocou Tesseractu

1. Prehľad

S pokrokom v technológii AI a strojového učenia požadujeme nástroje na rozpoznávanie textu v obrázkoch.

V tomto výučbe sa pozrieme na Tesseract, modul optického rozpoznávania znakov (OCR), s niekoľkými príkladmi spracovania obrazu na text.

2. Tesseract

Tesseract je open-source OCR engine vyvinutý spoločnosťou HP that uznáva viac ako 100 jazykov spolu s podporou ideografických jazykov a jazykov sprava doľava. Tiež môžeme trénovať Tesseract na rozpoznávanie iných jazykov.

Obsahuje dva OCR motory na spracovanie obrazu - motor OCR LSTM (dlhodobá krátkodobá pamäť) a starší motor OCR, ktorý funguje na základe rozpoznávania znakových vzorov.

OCR engine používa na otváranie obrázkov a podporuje knižnicu Leptonica rôzne výstupné formáty ako obyčajný text, hOCR (HTML pre OCR), PDF a TSV.

3. Inštalácia

Tesseract je k dispozícii na stiahnutie / inštaláciu vo všetkých hlavných operačných systémoch.

Napríklad, ak používame macOS, môžeme nainštalovať OCR engine pomocou Homebrew:

variť inštalovať tesseract 

Pozorujeme, že balík štandardne obsahuje sadu jazykových dátových súborov, napríklad angličtinu, a orientáciu a detekciu skriptov (OSD):

==> Inštalácia tesseract ==> Sťahovanie //homebrew.bintray.com/bottles/tesseract-4.1.1.high_sierra.bottle.tar.gz ==> Nalievanie tesseract-4.1.1.high_sierra.bottle.tar.gz = => Upozornenia Tento vzorec obsahuje iba dátové súbory v jazykoch „eng“, „osd“ a „snum“. Ak potrebujete ďalšie podporované jazyky, spustite program „brew install tesseract-lang`. ==> Súhrn /usr/local/Cellar/tesseract/4.1.1: 65 súborov, 29,9 MB

Môžeme si však nainštalovať tesseract-lang modul na podporu ďalších jazykov:

brew install tesseract-lang

Pre Linux môžeme Tesseract nainštalovať pomocou mňam príkaz:

yum nainštalovať tesseract

Rovnako pridajme jazykovú podporu:

yum nainštalovať tesseract-langpack-eng yum nainštalovať tesseract-langpack-spa

Tu sme pridali údaje trénované jazykom pre angličtinu a španielčinu.

Pre Windows môžeme inštalačné programy získať od spoločnosti Tesseract v UB Mannheim.

4. Príkazový riadok Tesseract

4.1. Bež

Na extrahovanie textu z obrázkov môžeme použiť nástroj príkazového riadku Tesseract.

Urobme si napríklad snímku našej webovej stránky:

Potom spustíme tesseract príkaz na čítanie baeldung.png snímku a napíšte text do výstup.txt spis:

výstup tesseract baeldung.png

The výstup.txt súbor bude vyzerať takto:

a REST s Spring Learn Spring (nový!) Kanonický odkaz na vytvorenie API produkčnej triedy s Spring. Od žiadnych skúseností po skutočné stavanie vecí. y Týždenné recenzie Java

Môžeme pozorovať, že Tesseract nespracoval celý obsah obrázku. Pretože presnosť výstupu závisí od rôznych parametrov, ako sú kvalita obrazu, jazyk, segmentácia stránok, trénované údaje a engine používaný na spracovanie obrazu.

4.2. Jazyková podpora

Štandardne OCR engine používa pri spracovaní obrázkov angličtinu. Jazyk však môžeme deklarovať pomocou znaku -l argument:

Pozrime sa na ďalší príklad s viacjazyčným textom:

Najskôr spracujeme obrázok s predvoleným anglickým jazykom:

výstup tesseract multiLanguageText.png 

Výstup bude vyzerať takto:

Der, .schnelle ”braune Fuchs pružný 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.

Potom spracujme obrázok v portugalčine:

tesseract multiLanguageText.png výstup -l por

Motor OCR teda detekuje aj portugalské písmená:

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.

Podobne môžeme deklarovať kombináciu jazykov:

tesseract multiLanguageText.png výstup -l spa + por

Motor OCR tu bude na spracovanie obrazu primárne používať španielčinu a potom portugalčinu. Výstup sa však môže líšiť v závislosti od poradia jazykov, ktoré zadáme.

4.3. Režim segmentácie stránok

Tesseract podporuje rôzne režimy segmentácie stránok, ako je OSD, automatická segmentácia stránok a riedky text.

Režim segmentácie stránok môžeme deklarovať pomocou –Psm argument s hodnotou od 0 do 13 pre rôzne režimy:

tesseract multiLanguageText.png výstup --psm 1

Tu sme definovaním hodnoty 1 deklarovali Automatickú segmentáciu stránok s OSD na spracovanie obrazu.

Pozrime sa na všetky podporované režimy segmentácie stránky:

4.4. Režim motora OCR

Podobne môžeme pri spracovaní obrázkov použiť rôzne režimy enginu, ako napríklad legacy a LSTM engine.

Na tento účel môžeme použiť –Oem argument s hodnotou od 0 do 3:

tesseract multiLanguageText.png výstup --oem 1

Režimy motora OCR sú:

4.5. Tessdata

Tesseract obsahuje dve sady trénovaných údajov pre motor LSTM OCR - najlepšie trénované modely LSTM a rýchle celočíselné verzie trénovaných modelov LSTM.

Prvý poskytuje lepšiu presnosť a druhý ponúka vyššiu rýchlosť pri spracovaní obrazu.

Tesseract tiež poskytuje kombinované trénované údaje s podporou pre staršie aj LSTM OCR enginy.

Ak použijeme engine Legacy OCR bez poskytnutia podporných trénovaných údajov, Tesseract spôsobí chybu:

Chyba: Vyžaduje sa engine Tesseract (legacy), ale komponenty sa nenachádzajú v /usr/local/share/tessdata/eng.traineddata !! Nepodarilo sa načítať jazyk „eng“ Tesseract nemohol načítať žiadne jazyky!

Mali by sme si teda stiahnuť požadované .trénované údaje súbory a buď ich ponechať v predvolenom nastavení tessdata umiestnenie alebo deklarovať umiestnenie pomocou –Tessdata-dir argument:

výstup tesseract multiLanguageText.png - tessdata-dir / image-processing / tessdata

4.6. Výkon

Môžeme deklarovať argument na získanie požadovaného výstupného formátu.

Napríklad pre vyhľadanie výstupu PDF:

tesseract multiLanguageText.png výstup pdf

Týmto sa vytvorí výstup.pdf súbor s prehľadateľnou textovou vrstvou (s rozpoznaným textom) na poskytnutom obrázku.

Podobne pre výstup hOCR:

tesseract multiLanguageText.png výstup hocr

Tiež môžeme použiť tesseract –pomoc a tesseract - help-extra príkazy pre ďalšie informácie o použití príkazového riadku tesseract.

5. Tess4J

Tess4J je Java wrapper pre Tesseract API, ktorý poskytuje podporu OCR pre rôzne obrazové formáty ako JPEG, GIF, PNG a BMP.

Najskôr pridajme najnovšie tess4j Zlá závislosť na našej pom.xml:

 net.sourceforge.tess4j tess4j 4.5.1 

Potom môžeme použiť Tesseract trieda poskytovaná tess4j na spracovanie obrazu:

Obrázok súboru = nový súbor ("src / main / resources / images / multiLanguageText.png"); Tesseract tesseract = nový Tesseract (); tesseract.setDatapath ("src / main / resources / tessdata"); tesseract.setLanguage ("eng"); tesseract.setPageSegMode (1); tesseract.setOcrEngineMode (1); Výsledok reťazca = tesseract.doOCR (obrázok);

Tu sme nastavili hodnotu dátová cesta do umiestnenia adresára, ktoré obsahuje osd.traineddata a eng.traineddata súbory.

Nakoniec môžeme overiť String výstup spracovaného obrázku:

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

Ďalej môžeme použiť setHocr metóda na získanie výstupu HTML:

tesseract.setHocr (true);

Knižnica predvolene spracuje celý obrázok. Konkrétnu časť obrázka však môžeme spracovať pomocou znaku java.awt.Obdĺžnik objekt pri volaní doOCR metóda:

výsledok = tesseract.doOCR (imageFile, nový obdĺžnik (1200, 200));

Podobne ako Tess4J, aj my môžeme použiť platformu Tesseract na integráciu Tesseractu do aplikácií Java. Toto je obal JNI rozhraní Tesseract API založený na knižnici predvolieb JavaCPP.

6. Záver

V tomto článku sme preskúmali OCR modul Tesseract s niekoľkými príkladmi spracovania obrazu.

Najskôr sme preskúmali tesseract nástroj príkazového riadku na spracovanie obrázkov spolu so sadou argumentov ako -l, –Psm a –Oem.

Potom sme to preskúmali tess4j, Java wrapper na integráciu Tesseractu do aplikácií Java.

Ako obvykle sú všetky implementácie kódu dostupné na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found