Jáva

Výukový program Tess4J s Maven a Java

Výukový program Tess4J s Maven a Java
V dnešní době, kdy data stále rostou, pracují lidé, kteří se daty každodenně zabývají, většinou s nestrukturovanými textovými daty. Analýza všech těchto dat vyšší rychlostí je nezbytná a mnohokrát také zásadní. Někdy čelíme problému s extrakcí dat ze souborů PDF. Extrahování textových dat ze souboru PDF je těžkopádné a také velký manuální úkol.

Nebylo by v pohodě, kdybychom měli nějaký naprogramovaný balíček, který by dokázal přijmout některé soubory PDF a vrátit text, který obsahuje?  Ukázalo se, že právě k tomu máme knihovnu.  Tesseract je open source framework napsaný v C ++, který nám umožňuje pracovat s obrázky PNG, obrázky JPG a soubory PDF a vrátit text, který soubor obsahuje, abychom mohli tento text použít, jak chceme.

V této lekci o Tesseractu s Java a Maven uvidíme, jak můžeme vyvinout jednoduchou aplikaci Java, která přijímá soubor PDF a vrátí text, který obsahuje, pomocí služby Tesseract OCR.  Uvidíme také, proč je Tesseract tak úspěšný. Jedním z důvodů, proč je Tesseract tak úspěšný, je to, že je podporován samotným Google.

Chcete-li s touto lekcí pracovat, je důležité nainstalovat do systému Tesseract OCR Engine. Přejděte do oficiálního repozitáře Github a postupujte podle pokynů k instalaci. Přímo z repozitáře GitHub: „Tesseract byl původně vyvinut ve společnosti Hewlett-Packard Laboratories Bristol a ve společnosti Hewlett-Packard Co., Greeley Colorado v letech 1985 až 1994, s několika dalšími změnami provedenými v roce 1996 při přechodu na Windows a některými C ++ izing in 1998. V roce 2005 byla společnost Tesseract otevřena ze zdrojů HP. Od roku 2006 je vyvíjen společností Google.“

Maven závislost

Začneme vytvořením jednoduchého projektu Java, který je založen na Maven a obsahuje následující závislost maven:


síť.sourceforge.tess4j
tess4j
4.3.0

Toto je závislost Maven, která je poskytována obalovým projektem, který zde můžete odkázat, abyste získali více porozumění. Z webových stránek je Tess4J jednoduše popsán jako Java JNA wrapper pro Tesseract OCR API.

Struktura projektu

Máme velmi jednoduchý projekt s jediným souborem zdrojového kódu. Aktuální struktura projektu bude vypadat asi takto:

Jak jsme již zmínili, máme jeden soubor zdrojového kódu, který použijeme. Můžeme dát soubor PDF do složky zdrojů o něco později, abychom demonstrovali čtení souboru PDF a extrahování textu z něj.

Budování objektu Tesseract

Jakmile máme ukázkovou třídu zdrojového kódu, kde můžeme začít (jak je ukázáno ve struktuře projektu v poslední části), můžeme do ní začít přidávat nějaký kód. Od této chvíle je to prázdná třída:

balíček com.linuxhint.tess4j;
veřejná třída Tess4JDemo

Jak jsme již dříve hovořili o Tesseractu, Tesseract lze použít k extrakci textu z dokumentů, jako jsou dokumenty PDF. Abychom to mohli udělat, musíme školit knihovnu Tesseract o tom, jak jsou dokumenty strukturovány a jaký text může obsahovat.

Kromě toho, protože Tesseract podporuje přibližně 37 jazyků, musíte výslovně informovat Tesseract o tom, který jazyk právě čteme (pokud jsou tyto informace skutečně k dispozici).

Definujeme jednoduchou metodu Java pro Tesseract:

soukromá statická Tesseract getTesseract ()

Uvnitř této metody můžeme vytvořit novou instanci Tesseractu z knihovny Maven, kterou jsme přidali dříve:

Tesseract instance = nový Tesseract ();

Aby bylo jasno, zde je prohlášení o importu, které máme pro výše uvedenou instanci:

dovozní síť.sourceforge.tess4j.Tesseract;

Dále do této instance přidáme některé vlastnosti, například kde lze najít tréninková data pro tuto knihovnu. To je velmi důležité, protože bez nastavení cesty pro tréninková data může Tesseract poskytnout vysoce nepřesné výsledky. Naštěstí tréninková data pro Tesseract přicházejí s jeho instalací, takže vše, co musíte udělat, je podívat se na správné místo. Zde je způsob, jakým jsme nastavili cestu tréninkových dat:

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

Protože pro tento výukový program používáme Macintosh, vypadá naše datová cesta podobně jako výše. Kromě cesty tréninkových dat jsem Tesseractu poskytl také informace, které budeme používat Angličtina Jazyk.
Dále řekneme Tesseractu, že výstup, který potřebujeme, je ve formátu, který se nazývá jako HOCR formát. Formát HOCR je v zásadě jednoduchý formát založený na XML, který obsahuje dvě věci:

  1. Textový dokument PDF bude obsahovat
  2. Souřadnice x a y tohoto textu na každé stránce. To znamená, že dokument DF lze přesně nakreslit stejným způsobem zpět z výstupu HOCR

Můžeme povolit formát HOCR jako:

instance.setHocr (true);

Na závěr mohu vrátit instanci, kterou jsme provedli výše. Zde je kompletní zdrojový kód metody, kterou jsme právě definovali zde:

soukromá statická Tesseract getTesseract ()
Tesseract instance = nový Tesseract ();
instance.setDatapath ("/ usr / local / Cellar / tesseract / 4.0.0 / share / tessdata ");
instance.setLanguage ("eng");
instance.setHocr (true);
návratová instance;

Používání Tesseractu

Možná tomu nevěříte, ale nastavení objektu Tesseract bylo tak snadné. Můžeme to nyní použít s jednoduchou definicí v hlavní funkci:

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

Dokážete uhodnout, co teď zbylo? Jediné, co teď musíme udělat, je poskytnout soubor Tesseractu, který dokáže analyzovat a přečíst jeho Text. Nyní můžeme snadno zvednout dokument PDF a přečíst jej, ale to zní docela textově. Proč nezkusíme hned obrázek?

Pro tuto lekci jsme vytvořili velmi jednoduchý obrázek, který použijeme:

Jakmile budete mít tento obrázek (nebo jakýkoli jiný obrázek podle vašeho výběru), můžeme dokončit naši hlavní metodu, abychom mohli konečně analyzovat vybraný obrázek:

public static void main (String [] args) hodí TesseractException
Tesseract tesseract = getTesseract ();
Soubor soubor = nový soubor ("/ Users / shubham / Desktop / tess4j.jpg ");
Výsledek řetězce = tesseract.doOCR (soubor);
Systém.ven.println (výsledek);

Podíváme-li se pozorně, nic magického se tu nestalo. To je síla tohoto jednoduchého obalu pro knihovnu Tesseract, kterou máme k dispozici.

Nyní jsme připraveni spustit výše uvedený program. Můžete jej spustit a zobrazit podivný výstup ve formátu XML. Pokud máte potíže s porozuměním výstupu, jednoduše okomentujte vlastnost, kde jsme povolili výstup HOCR. Jakmile to uděláte, uvidíte jednoduchý výstup jako:

Rychlá poznámka, kterou zkuste nepoužívejte obrázky PNG a používejte obrázky JPEG místo toho, pokud vůbec pracujete s obrázky. Je to proto, že Tesseract je velmi špatný při čtení obrázků PNG kvůli svým kompresním technikám.

Omezení Tesseract OCR Engine

Podle samotné stránky FAQ na Tesseract „Tesseract je spíše OCR engine než plně vybavený program podobný komerčnímu OCR softwaru, jako je Nuance's Omnipage. Původně měl sloužit jako součást jiných programů nebo systémů.

Ačkoli Tesseract funguje z příkazového řádku, aby byl průměrný uživatel použitelný, musí být engine integrován do jiných programů nebo rozhraní, například FreeOCR.net, WeOCR nebo OCRpous. Bez integrace do takových programů nemá Tesseract žádnou analýzu rozložení stránky, žádné výstupní formátování a žádné grafické uživatelské rozhraní (GUI). "

Podíváme-li se na výše uvedené omezení, výše uvedené omezení byla také vyřešena knihovnou Tess4J poskytnutím jednoduchého, ale účinného obálku Java JNA přes knihovnu C ++, který lze použít doslova kdekoli.

Závěr

V této rychlé lekci o Tesseractu a Javě jsme vytvořili velmi jednoduchý příklad OCR enginu Tesseract, který nám umožňuje číst text z různých formátových souborů, jako jsou PDF a obrazové soubory. Toto je velmi důležitá dovednost, protože čtení textu ze souborů, jako je PDF a obrázky, je prvním krokem, který musíte udělat, pokud chcete na tyto datové formáty použít jakékoli techniky zpracování přirozeného jazyka (NLP).

Skutečnost, že je Tess4J k dispozici, je úžasná, protože tímto způsobem můžeme skutečně používat knihovnu C ++ ve velmi jednoduchém prostředí, které je jinak těžké a obtížné použít. Veškerý zdrojový kód lekce je samozřejmě k dispozici na Githubu. Sdílejte prosím volně svůj názor na lekci na Twitteru s @linuxhint a @sbmaggarwal (to jsem já!).

Hry Nejlepší emulátory herních konzolí pro Linux
Nejlepší emulátory herních konzolí pro Linux
Tento článek uvádí seznam populárního softwaru pro emulaci herních konzolí, který je k dispozici pro Linux. Emulace je vrstva softwarové kompatibility...
Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...
Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...