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.