Přeskočit na obsah

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.

# Stádia dokumentové pipeline. Dokument je adresovaný hashem obsahu a výsledek extrakce se cachuje podle hashe a verze extraktoru. Neprošlá kontrola citace nebo částky pošle pohledávku ke kontrole bez ohledu na ostatní. Dnes jen pro přihlášky; obecná klasifikace typu dokumentu, čtení rozvržení stránky a skóre po jednotlivých polích zatím postavené nejsou.

Barva uzlu je stav položky na roadmapě: Rozpracováno

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řípady
  • docs/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í

Zpět na sekci Architektura