Jak vznikal Helík: načítání údajů z PDF dokumentů se 100 % přesností
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.