Optikai karakterfelismerés a Tesseract segítségével

1. Áttekintés

Az AI és a gépi tanulás terén elért technológia fejlődésével olyan eszközökre van szükségünk, amelyek lehetővé teszik a képek szövegében történő felismerését.

Ebben az oktatóanyagban a Tesseract optikai karakterfelismerő (OCR) motort fedezzük fel, néhány példával a kép-szöveg feldolgozásra.

2. Tesseract

A Tesseract egy nyílt forráskódú OCR motor, amelyet a HP fejlesztett ki több mint 100 nyelvet ismer el, az ideográfiai és a jobbról balra nyelvek támogatásával együtt. Is, kiképezhetjük a Tesseractot más nyelvek felismerésére.

Tartalmaz két OCR motor képfeldolgozáshoz - egy LSTM (Long Short Term Memory) OCR motor és egy régi OCR motor, amely a karakterminták felismerésével működik.

Az OCR motor a Leptonica könyvtár segítségével nyitja meg a képeket és a támogatásokat különféle kimeneti formátumok, például sima szöveg, hOCR (HTML az OCR számára), PDF és TSV.

3. Beállítás

A Tesseract letölthető / telepíthető az összes főbb operációs rendszerre.

Például, ha macOS-t használunk, telepíthetjük az OCR motort a Homebrew használatával:

brew install tesseract 

Megfigyeljük, hogy a csomag alapértelmezés szerint nyelvi adatfájlokat tartalmaz, például angolul, valamint tájolás és szkriptfelismerés (OSD):

==> A tesseract telepítése ==> A //homebrew.bintray.com/bottles/tesseract-4.1.1.high_sierra.bottle.tar.gz ==> Tesseract-4.1.1.high_sierra.bottle.tar.gz = letöltése => Figyelmeztetések Ez a képlet csak az "eng", "osd" és "snum" nyelvi adatfájlokat tartalmazza. Ha további támogatott nyelvekre van szüksége, futtassa a `brew install tesseract-lang` parancsot. ==> Összegzés /usr/local/Cellar/tesseract/4.1.1: 65 fájl, 29,9 MB

Telepíthetjük azonban a tesseract-lang modul más nyelvek támogatásához:

brew install tesseract-lang

Linux esetén a Tesseract alkalmazást a yum parancs:

telepítsd a tesseractot

Hasonlóképpen adjunk hozzá nyelvi támogatást:

yum install tesseract-langpack-eng yum install tesseract-langpack-spa

Itt hozzáadtuk az angol és a spanyol nyelv által képzett adatokat.

Windows esetén a telepítőket a Tesseract-tól szerezhetjük be az UB Mannheim-től.

4. Tesseract parancssor

4.1. Fuss

Használhatjuk a Tesseract parancssori eszközt a képek kivonására a szövegből.

Vegyünk például egy pillanatképet weboldalunkról:

Aztán lefuttatjuk a tesseract parancsot a baeldung.png pillanatkép, és írja be a szöveget a output.txt fájl:

tesseract baeldung.png kimenet

A output.txt fájl a következőképpen fog kinézni:

egy REST a Spring Learn Spring-rel (új!) A kanonikus referencia a Spring-mel rendelkező gyártási minőségű API felépítéséhez. Tapasztalatoktól a dolgok építéséig. y Java heti értékelések

Megfigyelhetjük, hogy a Tesseract nem dolgozta fel a kép teljes tartalmát. Mivel a kimenet pontossága különféle paraméterektől függ, mint a képminőség, a nyelv, az oldal szegmentálása, a képzett adatok és a képfeldolgozáshoz használt motor.

4.2. Nyelvi támogatás

Alapértelmezés szerint az OCR motor az angol nyelvet használja a képek feldolgozásakor. A nyelvet azonban deklarálhatjuk a -l érv:

Nézzünk meg egy másik példát többnyelvű szöveggel:

Először dolgozzuk fel a képet az alapértelmezett angol nyelvvel:

tesseract multiLanguageText.png kimenet 

A kimenet a következőképpen fog kinézni:

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. A raposa marrom rapida salta sobre 0 cao preguicoso.

Ezután dolgozzuk fel a képet portugál nyelven:

tesseract multiLanguageText.png output -l por

Tehát az OCR motor felismeri a portugál betűket is:

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. A raposa marrom rápida salta sobre o cão preguiçoso.

Hasonlóképpen kijelenthetjük a nyelvek kombinációját:

tesseract multiLanguageText.png output -l spa + por

Itt az OCR motor elsősorban spanyol, majd portugál nyelvet fog használni a képfeldolgozáshoz. A kimenet azonban az általunk megadott nyelvek sorrendje alapján eltérhet.

4.3. Oldal szegmentálási mód

A Tesseract különféle oldal szegmentálási módokat támogat, például OSD-t, automatikus oldal-szegmentálást és ritka szöveget.

Az oldalszegmentálási módot deklarálhatjuk a –Psm 0 és 13 közötti értékű argumentum különböző módokhoz:

tesseract multiLanguageText.png kimenet --psm 1

Itt 1 érték meghatározásával deklaráltuk az automatikus oldalszegmentálást OSD-vel a képfeldolgozáshoz.

Vessünk egy pillantást az összes támogatott oldalszegmentálási módra:

4.4. OCR motor mód

Hasonlóképpen használhatunk különféle motormódokat is, például a régi és az LSTM motort a képek feldolgozása közben.

Ehhez használhatjuk a –Em 0 és 3 közötti értékű argumentum:

tesseract multiLanguageText.png kimenet - 1. tétel

Az OCR motor módjai:

4.5. Tessdata

A Tesseract két képzett adatsort tartalmaz az LSTM OCR motorhoz - a legjobban képzett LSTM modellek és a képzett LSTM modellek gyors egész számú változatai.

Előbbi jobb pontosságot, utóbbi pedig nagyobb sebességet nyújt a képfeldolgozásban.

Ezenkívül a Tesseract kombinált képzett adatokat nyújt, támogatva mind a régi, mind az LSTM OCR motort.

Ha a Legacy OCR motort a támogatott képzett adatok megadása nélkül használjuk, a Tesseract hibát vet:

Hiba: Tesseract (régi) motort kértek, de az /usr/local/share/tessdata/eng.traineddata !! Nem sikerült betölteni az 'eng' nyelvet. A Tesseract nem tudott egyetlen nyelvet sem betölteni!

Tehát le kell töltenünk a szükségeseket .képzett adatok fájlokat, és vagy megtartja őket alapértelmezettként tessdata vagy jelentse be a helyet a –Tessdata-dir érv:

tesseract multiLanguageText.png kimenet --tessdata-dir / image-processing / tessdata

4.6. Kimenet

Kijelenthetünk egy argumentumot a szükséges kimeneti formátum megszerzéséhez.

Például kereshető PDF-kimenet megszerzéséhez:

tesseract multiLanguageText.png kimenet pdf

Ez létrehozza a output.pdf fájl a kereshető szövegréteggel (felismert szöveggel) a képen.

Hasonlóképpen, a hOCR kimenet esetében:

tesseract multiLanguageText.png kimenet hocr

Továbbá használhatjuk tesseract –segítség és tesseract –súgó-extra parancsok a tesseract parancssori használatáról.

5. Tess4J

A Tess4J egy Java burkoló a Tesseract API-khoz, amely OCR támogatást nyújt különböző képformátumokhoz, például JPEG, GIF, PNG és BMP.

Először tegyük hozzá a legfrissebbet tess4j Maven függőség a mi pom.xml:

 net.sourceforge.tess4j tess4j 4.5.1 

Ezután használhatjuk a Tesseract osztály nyújtotta tess4j a kép feldolgozásához:

File image = new File ("src / main / resources / images / multiLanguageText.png"); Tesseract tesseract = új Tesseract (); tesseract.setDatapath ("src / main / resources / tessdata"); tesseract.setLanguage ("eng"); tesseract.setPageSegMode (1); tesseract.setOcrEngineMode (1); Karakterlánc eredménye = tesseract.doOCR (kép);

Itt állítottuk be a adat útvonal tartalmazó könyvtárhelyre osd.képzett adatok és eng.traineddata fájlokat.

Végül ellenőrizhetjük a Húr a feldolgozott kép kimenete:

Assert.assertTrue (eredmény.tartalmaz ("Der, .schnelle" braune Fuchs springt ")); Assert.assertTrue (eredmény.tartalmaz ("salta sopra il cane pigro. El zorro"));

Ezenkívül használhatjuk a setHocr módszer a HTML kimenet megszerzésére:

tesseract.setHocr (igaz);

Alapértelmezés szerint a könyvtár a teljes képet feldolgozza. A kép egy adott szakaszát azonban a java.awt.Négyszög objektumot a doOCR módszer:

eredmény = tesseract.doOCR (imageFile, új téglalap (1200, 200));

Hasonlóan a Tess4J-hez, a Tesseract Platform segítségével integrálhatjuk a Tesseract-ot a Java alkalmazásokba. Ez a Tesseract API-k JNI burkolója, amely a JavaCPP Presets könyvtáron alapul.

6. Következtetés

Ebben a cikkben a Tesseract OCR motort vizsgáltuk néhány képfeldolgozási példával.

Először megvizsgáltuk a tesseract parancssori eszköz a képek feldolgozásához, egy sor argumentummal együtt -l, –Psm és –Em.

Aztán feltártuk tess4j, Java burkoló a Tesseract Java alkalmazásokba történő integrálásához.

Szokás szerint az összes kód implementáció elérhető a GitHubon.