Jak vznikal Helík: načítání údajů z PDF dokumentů se 100 % přesností

Reference nebo studie

Narozdíl od umělé inteligence máme 100 % přesnost při načítání údajů z PDF dokumentů.

Ne vždy je třeba využívat umělou inteligenci

HELík jsme původně vyvinuli pro načítání údajů z dodacích listů a faktur do příjemky v účetním systému HELIOS Red. Vycházeli jsme z předpokladu, že faktura či dodací list od daného dodavatele má stále stejnou strukturu. HELíka naučíme rozeznat tuto fakturu a poté opakovaně vytěžujeme. Vytěžená data ukládáme do souboru, který lze načíst v informačním systému. Systém funguje na strojově vytvořených PDF dokumentech. Zvládá vícestránkové dokumenty i situace, kde je jedna položka na různém počtu řádků.

Získali jsme tak mocný nástroj, který se dá využít i v jiných typech projektů. Všude tam, kde potřebujeme přečíst konkrétní údaj z PDF, například pro automatické přejmenování souborů nebo jejich třídění.

 

Při vývoji HELíka jsme řešili standardní problém s PDF dokumenty - fakturou a dodacím listem

Získávání informací z PDF dokumentů (například z PDF faktury) není úplně jednoduché. Z hlediska informatiky je totiž PDF spíš podobné obrázku. Text v PDF je na poslední úrovni složený z bloků písmen (tzv. chunk, nejmenší jednotka textu se kterou se dá pracovat, obsahuje různý počet písmen), které obsahují souřadnice pro umístění na stránce. Chunky samozřejmě jde organizovat do vyšších formátovaných celků jako odstavce, bloky atp. Problém je tak vůbec rekonstruovat řádky a slova z PDF. PDF knihovny používané v Helíku seskupení PDF chunků do slov (slovo chunk se může například skládat z chunků „ch“, „un“ a „k“) zvládají dobře, problémem bylo získat obraz řádků podle umístění. V tom bohužel funkce knihoven selhávají, nekopírují umístění slov na stránce, ale seskupují text i podle dalších informací. Tím vznikne problém pro zpracování fakturovaných dat v „tabulce“. V případě jednořádkového popisu zboží vše funguje správně:

Popis zboží   Cena

V případě víceřádkového zápisu jednoho bloku řádku faktury ovšem nastane s algoritmem v knihovně problém, řádkování bloku tabulky se poruší. Místo potřebného řádkování podle souřadnic:

Popis Cena
zboží  

Vznikne „inteligentní“ forma zápisu podle seskupení chunků do vyššího bloku:

Popis
zboží  Cena

Bez naprogramované korekce řádků tak nejde vybírat správná políčka z faktur podle jednoho vzorového řádku „tabulky“.


Dál už je pak zpracování faktury poměrně jednoduché, hledáme v textu zadaný vzor polí podle „naučeného“ řádku faktury.

Ostatní reference a studie