Číslo bez zdroje není údaj
Provenience není metadata navíc. Je to podmínka, bez které se hodnota do projekce nedostane — protože všechny tři otázky, které o číslu v tomhle produktu někdo položí, jsou otázky na jeho původ.
- Co hodnota nese
- dokument, stránka, metoda extrakce, skóre spolehlivosti
- Kdy se zapíše
- jen když je provenience úplná a skóre nad prahem
- Stav
- vynucené v typovaném doménovém modelu; pipeline, která ho plní, je plánovaná
Tři otázky, které přijdou
První je žádost subjektu údajů: jaké údaje o mně máte a odkud. Odpověď „z insolvenčního rejstříku“ není odpověď; odpověď je konkrétní dokument v konkrétním řízení.
Druhá je spor o částku. Analytik tvrdí 4,2 milionu, protistrana 3,8. Bez odkazu na stranu dokumentu je to hádka dvou tabulek.
Třetí je nejčastější a nejnebezpečnější: proč se ta metrika minulý měsíc změnila. Bez provenience je jediná dostupná odpověď „asi se něco přepočítalo“, a od toho okamžiku už číslům nikdo nevěří.
Proto je to podmínka zápisu, ne pole navíc
Kdyby byla provenience volitelná, byla by vyplněná tam, kde to bylo snadné, a chyběla by přesně tam, kde na ní záleží — u hodnot, které se dolovaly z nekvalitního skenu.
V doménovém modelu je proto součástí typu, ne komentářem u něj. Hodnota bez dokumentu a stránky není „hodnota s chybějícím metadatem“; taková hodnota v modelu nejde sestrojit.
%% title: Stádia dokumentové pipeline
%% caption: 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.
flowchart LR
A["Stažení<br/>adresováno obsahem"] --> H{"Hash<br/>už známý?"}
H -- "ano" --> C[("Cache<br/>SHA-256 + verze extraktoru")]
H -- "ne" --> B["Výběr dokumentu<br/>typ události a oddíl"]
B --> O["Text stránky<br/>vrstva nebo OCR"]
O --> E["Extrakce modelem<br/>do JSON schématu"]
E --> V{"Validace<br/>citace, částky,<br/>součty, IČO"}
V -- "selhala" --> Q["Fronta kontroly"]
V -- "prošla" --> S{"Skóre<br/>po dílčí pohledávce"}
S -- "pod prahem" --> Q
S -- "nad prahem" --> W[("Zápis s proveniencí<br/>dokument, stránka, skóre")]
E -.-> C
click A href "/roadmap/dokumentova-pipeline" "Dokumentová pipeline"
click C href "/architecture/vysledky-extrakce-jsou-cachovane" "Výsledky extrakce jsou cachované"
click E href "/architecture/ocr-a-llm-extrakce-do-schematu" "OCR + LLM extrakce do schématu"
click O href "/architecture/ocr-a-llm-extrakce-do-schematu" "OCR + LLM extrakce do schématu"
click V href "/docs/extrakce" "Extrakce"
click S href "/architecture/confidence-je-plnohodnotne-pole" "Confidence je plnohodnotné pole"
click Q href "/roadmap/fronta-lidske-kontroly" "Fronta lidské kontroly"
click W href "/about/cislo-bez-zdroje-neni-udaj" "Číslo bez zdroje není údaj"
class A st-in_progress
class Q st-in_progress
Barva uzlu je stav položky na roadmapě: Rozpracováno
Co z toho plyne pro provoz
- Dokumenty se ukládají podle SHA-256 svých bajtů, takže odkaz na zdroj přežije i opakované stažení téhož PDF.
- Oprava dřívějšího údaje je nová událost s vlastní proveniencí, ne přepis toho, co bylo zapsáno dřív.
- Údaj, který nelze dohledat ke zdroji, se považuje za chybu systému — ne za data s nižší kvalitou.
Kde to v repozitáři žije
docs/DATA-MODEL.md— entity, stavový automat a provenience jako povinná součást zápisudocs/EXTRACTION.md— stádia pipeline, práh spolehlivosti a cache výsledkůsrc/progresus_isir/domain/— typovaný model, ve kterém je provenience vynucená
Souvisí
Nevědět je lepší než hádat
Extrakce ze skenů se občas splete. Systém proto ví, co neví: pod prahem spolehlivosti hodnota nejde do databáze, ale k člověku. Chybějící údaj je opravitelný, sebevědomě nesprávný ne.
Detail
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