„Java“

„Tess4J“ pamoka su „Maven“ ir „Java“

„Tess4J“ pamoka su „Maven“ ir „Java“
Šiandienos laikais, kai duomenys vis auga, žmonės, kurie kasdien susiduria su duomenimis, dažniausiai dirba su nestruktūrizuotais tekstiniais duomenimis. Analizuoti visus šiuos duomenis reikia greičiau ir daug kartų, taip pat labai svarbu. Kartais susiduriame su duomenų išskyrimo iš PDF failų problema. Išgauti tekstinius duomenis iš PDF failo yra sudėtinga ir taip pat didelė rankinė užduotis.

Ar nebūtų šaunu, jei turėtume užprogramuotą paketą, kuris galėtų priimti kai kuriuos PDF failus ir grąžinti jame esantį tekstą?  Pasirodo, kad mes tam tikrai turime biblioteką.  Tesseract yra atvirojo kodo sistema, parašyta C ++, kuri leidžia mums dirbti su PNG vaizdais, JPG vaizdais ir PDF failais ir grąžinti failo tekstą, kad galėtume naudoti tą tekstą kaip norime.

Šioje „Tesseract“ su „Java“ ir „Maven“ pamokoje pamatysime, kaip galime sukurti paprastą „Java“ programą, kuri priima PDF failą ir grąžina jame esantį tekstą naudodama „Tesseract“ OCR paslaugą.  Taip pat pamatysime, kodėl „Tesseract“ yra tokia sėkminga. Viena iš priežasčių, kodėl „Tesseract“ yra toks sėkmingas paketas, yra ta, kad ją palaiko pati „Google“.

Norint dirbti su šia pamoka, svarbu įdiegti „Tesseract OCR Engine“ į savo sistemą. Eikite į oficialią „Github“ atsarginę kopiją, kad vykdytumėte diegimo instrukcijas. Tiesiogiai iš „GitHub“ atsarginių dalių „Tesseract“ iš pradžių buvo sukurtas „Hewlett-Packard Laboratories Bristol“ ir „Hewlett-Packard Co“, Greeley Colorado mieste 1985–1994 m., 1996 m. Atlikus dar kelis pakeitimus, susijusius su portu į „Windows“, o kai kuriais C ++. 1998 m. 2005 m. „Tesseract“ atidarė HP. Nuo 2006 m. Jį sukūrė „Google“.“

Maveno priklausomybė

Mes pradėsime sukurti paprastą „Java“ projektą, pagrįstą „Maven“ ir turinčiu šią priklausomybę:


neto.sourceforge.tess4j
tess4j
4.3.0

Tai yra „Maven“ priklausomybė, kurią teikia „wrapper“ projektas, kurį galite nurodyti čia, kad gautumėte daugiau supratimo. Iš svetainės „Tess4J“ paprasčiausiai apibūdinamas kaip „Java JNA“ pakuotė, skirta „Tesseract“ OCR API.

Projekto struktūra

Mes turime labai paprastą projektą su vienu šaltinio kodo failu. Dabartinė projekto struktūra atrodys maždaug taip:

Kaip jau minėjome, turime vieną šaltinio kodo failą, kurį naudosime. Galime šiek tiek vėliau įdėti PDF failą į išteklių aplanką, kad pademonstruotume, jog skaitome PDF failą ir ištraukėme iš jo tekstą.

„Tesseract“ objekto statyba

Kai turėsime pavyzdinę šaltinio kodo klasę, kurioje galėsime pradėti (kaip parodyta paskutiniame skyriuje pateiktoje projekto struktūroje), galime pradėti prie jo pridėti kodą. Šiuo metu tai yra tuščia klasė:

paketas kom.linuxhint.tess4j;
visuomenės klasė „Tess4JDemo“

Kaip jau kalbėjome apie „Tesseract“, „Tesseract“ galima naudoti norint išgauti tekstą iš tokių dokumentų kaip PDF dokumentai. Norėdami tai padaryti, turime mokyti „Tesseract“ biblioteką apie tai, kaip struktūrizuojami dokumentai ir kokį tekstą joje gali būti.

Be to, kadangi „Tesseract“ palaiko apie 37 kalbas, turite aiškiai informuoti „Tesseract“ apie tai, kurią kalbą dabar skaitome (jei ta informacija mums iš tikrųjų prieinama).

Mes apibrėžsime paprastą „Java“ metodą „Tesseract“:

privati ​​statinė „Tesseract“ getTesseract ()

Vykdydami šį metodą, mes galime padaryti naują „Tesseract“ egzempliorių iš anksčiau pridėtos „Maven“ bibliotekos:

Tesseract egzempliorius = naujas Tesseract ();

Kad būtų aišku, čia yra importo ataskaita, kurią turime apie pirmiau pateiktą pavyzdį:

importo grynasis.sourceforge.tess4j.Tesseract;

Tada prie šio egzemplioriaus pridėsime keletą savybių, pvz., Kur galima rasti šios bibliotekos mokymo duomenis. Tai labai svarbu, nes nenustačius kelio treniruočių duomenims, „Tesseract“ gali suteikti labai netikslius rezultatus. Laimei, „Tesseract“ mokymo duomenys pateikiami kartu su jos diegimu, todėl jums tereikia pažvelgti į reikiamą vietą. Štai kaip nustatome mokymo duomenų kelią:

instancija.setDatapath ("/ usr / local / Cellar / tesseract / 4.0.0 / share / tessdata ");
instancija.setLanguage ("eng");

Kadangi šiai pamokai naudojame „Macintosh“, mūsų duomenų kelias atrodo panašus į aukščiau pateiktą. Be mokymo duomenų kelio, „Tesseract“ taip pat pateikiau informaciją, kurią naudosime Anglų kalba.
Tada mes pasakysime Tesseract, kad mums reikalinga išvestis yra tokia forma, kuri vadinama HOCR formatas. Iš esmės HOCR formatas yra paprastas XML pagrįstas formatas, kurį sudaro du dalykai:

  1. Teksto PDF dokumente bus
  2. Kiekvieno puslapio to teksto x ir y koordinatės. Tai reiškia, kad DF dokumentą tokiu pačiu būdu galima tiksliai atkurti iš HOCR išvesties

Mes galime įgalinti HOCR formatą kaip:

instancija.setHocr (tiesa);

Galiausiai galiu grąžinti aukščiau pateiktą pavyzdį. Čia yra visas metodo, kurį mes ką tik apibrėžėme, šaltinio kodas:

privati ​​statinė „Tesseract“ getTesseract ()
Tesseract egzempliorius = naujas Tesseract ();
instancija.setDatapath ("/ usr / local / Cellar / tesseract / 4.0.0 / share / tessdata ");
instancija.setLanguage ("eng");
instancija.setHocr (tiesa);
grąžinimo instancija;

Naudojant Tesseract

Galbūt nepatikėsite, tačiau „Tesseract“ objektą nustatyti buvo taip paprasta. Mes galime jį naudoti dabar naudodami paprastą apibrėžimą pagrindinėje funkcijoje:

public static void main (String [] argumentuoja)
Tesseract tesseract = getTesseract ();

Ar galite atspėti, kas dabar liko? Vienintelis dalykas, kurį turime padaryti dabar, yra pateikti „Tesseract“ failą, kurį ji gali išanalizuoti ir perskaityti savo tekstą. Dabar galime lengvai paimti PDF dokumentą, kad galėtume jį perskaityti, tačiau tai skamba gana tekstiškai. Kodėl mes neišbandėme vaizdo iškart?

Šiai pamokai sukūrėme labai paprastą vaizdą, kurį panaudosime:

Turėdami šį vaizdą (ar bet kurį kitą pasirinktą vaizdą), mes galime užbaigti savo pagrindinį metodą, kad galiausiai galėtume analizuoti pasirinktą vaizdą:

public static void main (String [] args) meta TesseractException
Tesseract tesseract = getTesseract ();
Failo failas = naujas failas ("/ Vartotojai / shubham / Darbalaukis / tess4j.JPG ");
Stygos rezultatas = tesseract.doOCR (byla);
Sistema.išėjo.println (rezultatas);

Jei gerai pažvelgsime, nieko stebuklingo čia neįvyko. Tai yra šio paprasto „Tesseract“ bibliotekos, kuri mums suteikta, pakuotės galia.

Dabar mes esame pasirengę paleisti aukščiau nurodytą programą. Galite paleisti, kad pamatytumėte keistą išvestį XML formatu. Jei kyla problemų suprasti išvestį, paprasčiausiai pakomentuokite ypatybę, kurioje įgalinome HOCR išvestį. Kai tai padarysite, pamatysite paprastą išvestį kaip:

Greita pastaba, kad pabandykite venkite PNG vaizdų ir naudokite JPEG vaizdus vietoj to, jei apskritai dirbate su vaizdais. Taip yra dėl to, kad „Tesseract“ dėl savo suspaudimo būdų labai blogai skaito PNG vaizdus.

„Tesseract“ OCR variklio apribojimai

Kaip rašoma pačiame „Tesseract“ puslapio DUK, „Tesseract yra OCR variklis, o ne visiškai pritaikyta programa, panaši į komercinę OCR programinę įrangą, tokią kaip„ Nuance “Omnipage. Iš pradžių jis buvo skirtas naudoti kaip kitų programų ar sistemų sudedamoji dalis.

Nors „Tesseract“ veikia iš komandinės eilutės, variklis turi būti integruotas į kitas programas ar sąsajas, tokias kaip „FreeOCR“, kad būtų galima naudoti paprastam vartotojui.tinklas, WeOCR arba OCRpous. Be integracijos į tokias programas, „Tesseract“ neturi puslapio išdėstymo analizės, išvesties formatavimo ir grafinės vartotojo sąsajos (GUI). „

Jei pažvelgsime į pirmiau nurodytą apribojimą, pirmiau nurodytą apribojimą taip pat išsprendė „Tess4J“ biblioteka, suteikdama paprastą, bet veiksmingą „Java JNA“ pakuotę virš C ++ bibliotekos, kurią galima naudoti tiesiogine prasme bet kur.

Išvada

Šioje greitoje „Tesseract“ ir „Java“ pamokoje mes padarėme labai paprastą „Tesseract“ OCR variklio pavyzdį, kuris leidžia mums skaityti tekstą iš įvairių formatų failų, tokių kaip PDF ir vaizdo failai. Tai yra labai svarbus įgūdis, nes teksto skaitymas iš tokių failų kaip PDF ir vaizdai yra pirmasis žingsnis, kurį turite atlikti, jei šiems duomenų formatams norite taikyti bet kurias natūralios kalbos apdorojimo (NLP) technikas.

Tai, kad „Tess4J“ yra prieinamas, yra nuostabu, nes tokiu būdu mes iš tikrųjų galime naudoti C ++ biblioteką labai paprastoje aplinkoje, kurią šiaip sunku ir keblu naudoti. Žinoma, visą pamokos šaltinio kodą galite rasti „Github“. Prašau laisvai pasidalinti savo atsiliepimais apie pamoką „Twitter“ su @linuxhint ir @sbmaggarwal (tai aš!).

„Tomb Raider for Linux“ pamoka
„Tomb Raider“ šešėlis yra dvyliktas „Tomb Raider“ serijos priedas - veiksmo ir nuotykių žaidimų franšizė, sukurta „Eidos Montreal“. Žaidimą kritikai i...
Kaip padidinti FPS sistemoje „Linux“?
FPS reiškia Kadrai per sekundę. FPS užduotis yra išmatuoti kadrų greitį atkuriant vaizdo įrašus ar žaidimus. Paprastais žodžiais, nepertraukiamų viso ...
Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...