OCR + LLM extrakce do schématu
Feed dává metadata, čísla jsou uvnitř PDF a ta PDF jsou převážně skeny formulářů. Význam v nich nese rozvržení — to, ve kterém poli číslo stojí, rozhoduje, jestli jde o jistinu nebo příslušenství. Pipeline zatím neexistuje; je na roadmapě jako fáze 1.
- Stádia
- stažení → klasifikace → OCR → extrakce modelem → validace → skóre
- Výstup
- deklarované JSON schéma podle typu dokumentu
- Vstup modelu
- text z OCR i obrazy stránek, protože rozvržení nese význam
- Bez API klíče
- běží jen OCR a všechno jde ke kontrole — pomalejší, ne nesprávné
- Stav
- plánováno (fáze 1: OCR, extrakce do schématu a validace)
Proč samotné OCR nestačí
- Přihláška podle vyhlášky 191/2017 Sb. je formulář: zajištěnost i povaha částky vyplývají z pole, ve kterém číslo stojí, ne z textu okolo něj.
- Skeny pocházejí z desítek let a z různých zařízení, takže kvalita kolísá od čitelné po sotva rozpoznatelnou.
- Přílohy v řádu stovek stran jsou běžné, takže je nutné vybrat stránky dřív, než se cokoli vytěžuje.
- Novela z roku 2017 změnila formulář i režim přezkumu — parser napsaný proti dnešním dokumentům u starších řízení tiše nevrátí nic.
Model nevolí tvar výstupu
Extrakce míří do deklarovaného JSON schématu pro daný typ dokumentu. Model doplňuje hodnoty do předem daného tvaru, nevymýšlí strukturu odpovědi.
Zadání nese typ dokumentu, příslušnou právní terminologii a výslovný pokyn vrátit prázdnou hodnotu místo odhadu. Odhadnuté číslo je horší než chybějící: chybějící jde k člověku, odhadnuté se zapíše a nikdo ho nenajde.
Validace stojí před zápisem, ne za ním
Výsledek se ověřuje proti schématu, doménovým pravidlům, konzistenci mezi poli a u účetních závěrek proti bilančním rovnicím. Teprve co projde, postupuje ke skórování a případnému zápisu.
Kvalita se měří na ručně anotované sadě nejméně 500 přihlášek a přeměřuje se u každé verze extraktoru. Verze, která na téhle sadě zhorší výsledek, nenasazuje se — bez ohledu na to, o kolik líp vypadá na nových dokumentech.
Známé těžké případy
- Přihláška podaná mimo oficiální formulář nemá rozvržení, o které by se šlo opřít.
- Řízení před rokem 2017 mají protokol z přezkumného jednání místo přezkumného listu — jiný dokument a jiná terminologie.
- Rozvrhová usnesení odkazují na pořadová čísla ze seznamu přihlášených pohledávek, ne na pozice P; jejich spárování zpět na pohledávky je otevřený problém.
- Jedna přihláška obsahující víc dílčích pohledávek se musí rozdělit správně, jinak se částky slijí do nesmyslu.
- Opravy a doplnění mění dřívější dokument; historie se tím doplňuje, nepřepisuje.
Kde to v repozitáři žije
docs/EXTRACTION.md— stádia pipeline, chování modelu, validace a známé těžké případydocs/ACCEPTANCE.md— cílové hodnoty přesnosti a metodika měření na anotované sadědocs/DATA-MODEL.md— entity a provenience, do kterých extrakce zapisuje
Souvisí
Confidence je plnohodnotné pole, ne řádek v logu
Každá vytěžená hodnota nese skóre spolehlivosti, použitou metodu a stránku dokumentu. Pod prahem nejde do projekce, ale do fronty lidské kontroly — u vysokých nominálů je práh přísnější.
Detail
Výsledky extrakce jsou content-addressed a cachované
Dokument je identifikovaný SHA-256 svých bajtů a výsledek extrakce je uložený proti tomuto hashi. Přehrání projekce znovu použije cache a nespustí OCR ani LLM. Bez toho by každá oprava projektoru stála celý backfill znovu.
Detail
Dokumentová pipeline
PlánovánoStahování do content-addressed úložiště, OCR, extrakce do deklarovaného schématu, validace a skóre spolehlivosti. Výsledky budou cachované podle hashe dokumentu, takže přehrání projekce nic nestojí.
Detail