Porovnání nástrojů OCR: jak vybrat nejlepší nástroj pro váš projekt

Optické rozpoznávání znaků (krátké: OCR) je úkolem automatického extrahování textu z obrázků. V dnešní době je k dispozici celá řada nástrojů a služeb, které se snadno používají a díky čemuž se tento úkol netýká. V tomto příspěvku na blogu porovnám čtyři nejoblíbenější nástroje:

  1. Tesseract OCR
  2. ABBYY FineReader
  3. Google Cloud Vision
  4. Amazonský text

Ukážu, jak je používat a posoudit jejich silné a slabé stránky na základě jejich výkonu u řady úkolů. Po přečtení tohoto článku si budete moci vybrat a použít nástroj OCR vyhovující potřebám vašeho projektu.

Vezměte na vědomí, že naše zaměření na OCR omezujeme pouze na obrázky dokumentů, na rozdíl od jakýchkoli obrázků obsahujících náhodně.

Toto není obrázek dokumentu.

Nyní se podívejme na obrázky dokumentů, které použijeme k posouzení OCR motorů.

Naše testovací obrázky

Obrázky dokumentů přicházejí v různých tvarech a kvalitách. Někdy jsou skenovány, jindy jsou zachyceny pomocí ručních zařízení. Kromě tištěného textu mohou obsahovat také rukopis a strukturální prvky, jako jsou krabice a tabulky. Ideální nástroj OCR by tedy měl být

  • spolehlivě rozpoznávat dobře naskenovaný text,
  • být robustní vůči špatné kvalitě obrazu a rukopisu,
  • výstupní informace o formátování a struktuře dokumentu.

S ohledem na tyto předpoklady otestujeme nástroje OCR na následujících čtyřech obrázcích:

Naskenovaný e-mail, naskenovaný ručně psaný dopis.E-mail zachycený pomocí smartphonu, naskenovaná tabulka.

Všechny obrázky pocházejí z velkého korpusu tabákových průmyslových dokumentů. Třetí z nich bylo vytištěno a poté zachyceno pomocí smartphonu, což představovalo typický šum.

Nejprve prozkoumáme, jak se Tesseract OCR daří s ohledem na tyto úkoly.

Tesseract OCR

Nejlepší věc na Tesseract je, že je zdarma a snadno se používá. V zásadě se jedná o nástroj příkazového řádku, ale existuje také balíček Python s názvem pytesseract a rozhraní GUI frontend gImageReader, takže si můžete vybrat ten, který nejlépe vyhovuje vašim účelům.

Použití nástroje příkazového řádku je stejně snadné jako

tesseract imagename outputbase [outputformat]

Pokud nezadáme výstupní formát, výchozí je textový soubor obsahující rozpoznané znaky. Alternativně bude PDF vydávat prohledávatelné soubory PDF a soubory XML a hoc nebo XML obsahující další informace, jako jsou pozice znaků (ve standardu XML, který jde podle stejného jména). Další volitelné argumenty naleznete zde.

Tesseract najde v našich testovacích obrázcích:

Tesseract: naskenovaný e-mail, ručně psaný dopis.Tesseract: e-mail zachycený pomocí smartphonu - vůbec žádný výstup, naskenovaná tabulka.

Jak si všimnete, Tesseract OCR rozpoznává text v dobře naskenovaném e-mailu docela dobře. Pokud však jde o ručně psaný dopis a dokument zachycený smartphonem, nevysílá se žádný nesmysl nebo doslova nic.

Pro výstup z obrázku tabulky jsem použil gImageReader, rozhraní GUI uvedené výše. Ukazuje se, že Tesseract vydává ohraničující pole pro oblasti obrázku, které obsahují text, ale to se ani nedostane do blízkosti správné extrakce tabulky. Výstup Tesseractu můžete samozřejmě zpracovat pomocí vlastního nástroje pro extrakci tabulky. Naše blogové příspěvky o použití OCR na technické výkresy a extrahování dat z dopisů dávají představu, jak.

ABBYY FineReader

ABBYY nabízí řadu produktů souvisejících s OCR. Budu používat rozhraní ABBYY Cloud OCR SDK API. Tato cloudová služba používá OCR engine ABBYY FineReader, který lze také nainstalovat lokálně. Na rozdíl od Tesseract není ABBYY Cloud OCR zdarma (ceny).

Pokud se chcete naučit, jak používat API, najdete vše, co potřebujete vědět v těchto průvodcích rychlým startem.

Znovu máme různé možnosti s ohledem na výstupní formát OCR. Kromě těch, které poskytuje také Tesseract, můžeme navíc požádat ABBYY o výstup tabulek XLSX. Budu používat tuto možnost pro náš obrázek stolu.

ABBYY: naskenovaný e-mail, ručně psaný dopis.ABBYY: e-mail zachycený pomocí smartphonu, naskenovaná tabulka.

Aplikace ABBYY FineReader nemá problémy s dobře naskenovaným e-mailem a v dokumentu zachyceném smartphonem to docela dobře. Na ručně psaném dokumentu však zcela selže.

Jeho hlavní ctností je kapacita extrakce tabulky: jak vidíte na posledním obrázku, výstup zachovává tabulkovou strukturu. Bližší pohled na výstup XML odhalí, že FineReader skutečně rozpoznává oddíly tabulky a jednotlivé buňky, a dokonce extrahuje podrobnosti, jako je styl písma (viz popis schématu XML ABBYY ve formátu XML).

Google Cloud Vision

Další v řadě je Google Cloud Vision, který budeme používat přes API. Stejně jako FineReader se jedná o placenou službu (ceny).

Používání rozhraní Cloud Vision API je o něco složitější než používání rozhraní ABBYY API nebo Tesseract. Chcete-li se dozvědět, jak to funguje, najdete dobré výchozí body zde a zde.

Získáme následující výstup:

Google: naskenovaný e-mail, ručně psaný dopis.Google: e-mail zachycený pomocí smartphonu, naskenovaná tabulka.

Google si naskenovaný e-mail vede dobře a text v dokumentu zachyceném smartphony rozpoznává podobně jako v ABBYY. V rozpoznávání rukopisu je však mnohem lepší než Tesseract nebo ABBYY, jak ukazuje druhý výsledný obrázek: stále zdaleka dokonalý, ale alespoň má některé věci v pořádku. Na druhou stranu Google Cloud Vision nezpracovává tabulky velmi dobře: extrahuje text, ale o to jde.

Ve skutečnosti je původním výstupem Cloud Vision soubor JSON obsahující informace o pozicích postav. Stejně jako v případě Tesseract lze na základě těchto informací zkusit zjistit tabulky, ale tato funkce není opět zabudována.

Vezměte prosím na vědomí, že nyní existuje také verze beta dokumentu AI pro porozumění AI, kterou jsme od tohoto okamžiku netestovali.

Amazonský text

Náš poslední kandidát je také placené cloudové řešení (ceny).

Pro účely testování můžete pohodlně používat Textract s rozhraním prohlížeče drag-and-drop, ale pro aplikace připravené pro výrobu budete pravděpodobně chtít raději použít poskytované API.

Pomocí rozhraní prohlížeče, Textract výstupy

  • odpověď API jako soubor JSON,
  • surový text,
  • detekované tabulky v samostatných souborech CSV,
  • páry klíč-hodnota (interpretace vstupu jako formuláře), stejně jako soubor CSV.

Tyto výsledky nám přinášejí následující výsledky:

Amazon: naskenovaný e-mail, ručně psaný dopis.Amazon: e-mail zachycený pomocí smartphonu, naskenovaná tabulka.

Stejně jako dříve, e-mail vypadá dobře, ale zřejmě Textract nezvládá ručně psané texty. Navíc, i když dokument zachycený smartphonem vypadá na první pohled v pořádku, podrobnější prohlídka odhalí, že Amazonova OCR smíchala čáry (kvůli zakřivení obrazu dokumentu).

Pro tabulkový dokument zobrazujeme pouze jednu ze tří identifikovaných textů. Je však již vidět, že některá záhlaví sloupců chybí a některá čísla jsou na nesprávných místech.

Závěr

Tato tabulka shrnuje výsledky našich testů:

Hlavní cesty ve slovech:

  • Pokud se zabýváte strojově psanými a dobře naskenovanými dokumenty nebo soubory PDF postrádajícími metadata, může to udělat Tesseract OCR, i když komerční služby jsou spolehlivější.
  • Pokud je pro vás důležité rozpoznávání ručně psaných znaků, je Google Cloud Vision jako jediná od dnešního dne jedinou z možných možností.
  • Pokud je kvalita obrázku dokumentu špatná, ABBYY FineReader i Google Cloud Vision stále vykonávají dobrou práci.
  • Pokud je vaším cílem extrahovat tabulkové informace, možná budete chtít zvolit ABBYY FineReader.

Původně zveřejněno na adrese https://dida.do 20. ledna 2020.