Agent przepisuje faktury do systemu i myli kwoty: progi pewności dla pól krytycznych

Faktura na 12 300,00 zł wjechała do ERP jako 1 230,00 zł. Agent nie zatrzymał się ani na chwilę, bo pole „kwota brutto” dostało pewność 0,94, a próg akceptacji dla całego dokumentu stał na 0,85. Zero zniknęło przy binaryzacji skanu, model odczytał to, co widział, i był tego całkiem pewny. Błąd wyszedł dziesięć dni później, przy uzgadnianiu salda z dostawcą.

Taki incydent nie jest awarią modelu. Jest awarią projektu progu. Poniżej rozkład na czynniki: skąd bierze się liczba nazywana pewnością, dlaczego jeden próg na dokument nie ma sensu, jak rozdzielić pola krytyczne od reszty i co zrobić z dokumentami, które nie mieszczą się w żadnym schemacie.

Agent czyta skan i zwraca liczbę, która udaje pewność

W typowym przepływie ekstrakcji pewność nie jest jedną wielkością, tylko trzema różnymi rzeczami sklejonymi w jedno pole JSON-a.

  • Pewność OCR – silnik rozpoznawania znaków zwraca prawdopodobieństwo per znak lub per słowo. To jest realny sygnał jakości obrazu: rozmycie, przekrzywienie, kompresja JPEG w skanie. Nisko schodzi tam, gdzie faktycznie nie widać.
  • Prawdopodobieństwo tokenów z modelu językowego – jeśli ekstrakcję robi LLM, można wyciągnąć logprawdopodobieństwa wygenerowanych tokenów. Problem: model bywa równie pewny odczytu poprawnego i halucynacji uzupełnionej z kontekstu. Kiedy widzi „1 230” w miejscu, gdzie format faktury każe spodziewać się kwoty, wygeneruje ją z wysokim prawdopodobieństwem niezależnie od tego, czy zgubił cyfrę.
  • Zgodność wielu źródeł – ta sama wartość odczytana dwa razy: raz z warstwy tekstowej PDF, raz z OCR obrazu, albo przez dwa różne modele. Rozbieżność jest twardym sygnałem, znacznie mocniejszym niż deklarowana pewność pojedynczego przebiegu.

Pierwsze dwa źródła mierzą co innego. OCR mówi „nie widzę wyraźnie”. LLM mówi „pasuje mi to do wzorca”. Sklejanie ich w jedną liczbę i porównywanie z jednym progiem gubi informację, na której zależy najbardziej: czy odczyt jest zgodny z tym, co naprawdę stoi na papierze.

Praktyczna konsekwencja: model, który zwraca wyłącznie własną pewność, nie ma czym wykryć zjedzonego zera. Musi to zrobić warstwa nad nim – walidacje arytmetyczne i porównania między źródłami. Pewność jest wtedy tylko jednym z wejść do decyzji o routingu, nie decyzją samą w sobie.

Jeden próg dla całego dokumentu miesza rzeczy o różnej cenie błędu

Dokument jako całość dostaje jedną liczbę – zwykle średnią albo minimum z pól. Obie agregacje psują decyzję. Średnia rozcieńcza jedno beznadziejnie odczytane pole w dwudziestu poprawnych. Minimum zatrzymuje cały dokument, bo nieczytelna jest stopka z numerem KRS, której nikt nie przepisuje do systemu.

Cena błędu jest wyraźnie różna dla różnych pól. Zła kwota to zły przelew i zła deklaracja VAT. Zły opis pozycji to kosmetyka, którą księgowa poprawi przy najbliższym kontakcie z dokumentem albo nie poprawi wcale. Traktowanie ich tym samym progiem oznacza, że albo kolejka do sprawdzenia puchnie od błahostek, albo kwoty przechodzą bez nadzoru.

Sensowny podział to trzy klasy pól, każda z własną regułą.

Pole Klasa Skutek błędu Twarda walidacja niezależna od modelu
Kwota brutto, netto, VAT krytyczne zły przelew, zła kwota w księgach, korekta deklaracji netto + VAT = brutto; suma pozycji = suma dokumentu; stawka VAT ze słownika
NIP sprzedawcy krytyczne dokument pod złym kontrahentem, ryzyko odliczenia VAT suma kontrolna NIP (wagi 6,5,7,2,3,4,5,6,7, reszta z dzielenia przez 11); sprawdzenie w wykazie podatników
Numer rachunku bankowego krytyczne przelew na cudze konto, praktycznie nieodwracalny suma kontrolna IBAN (mod 97); zgodność z wykazem rachunków przypisanych do NIP-u
Numer faktury krytyczne duplikat płatności albo brak dopasowania do zamówienia unikalność w parze z NIP sprzedawcy; wzorzec numeracji znany z historii dostawcy
Data wystawienia, termin płatności krytyczne zapłata po terminie, zły okres księgowy termin nie wcześniejszy niż data wystawienia; data w oknie dopuszczalnym dla okresu
Waluta krytyczne błąd rzędu kursu, czyli kilkukrotny słownik ISO 4217; zgodność z symbolem widocznym przy kwocie
Nazwa i adres kontrahenta kontrolne drobne rozjazdy w kartotece i tak nadpisywane danymi z kartoteki po dopasowaniu NIP-u
Opis pozycji, uwagi, numer zamówienia w treści opisowe utrudnione wyszukiwanie, brak skutku księgowego brak; pole idzie dalej nawet przy niskiej pewności

Reguła routingu wynika z tabeli sama: dokument przechodzi bez człowieka tylko wtedy, gdy wszystkie pola krytyczne przeszły walidacje twarde i mają pewność powyżej swojego progu. Pola opisowe nie blokują niczego. Pola kontrolne blokują tylko wtedy, gdy dopasowanie do kartoteki się nie powiodło.

Progi ustawia się od kosztu błędu, nie od intuicji

Nie ma uniwersalnej wartości progu, którą można przepisać z cudzego wdrożenia. Rozkład pewności zależy od modelu, od jakości źródła dokumentów i od zestawu dostawców. Progi trzeba wyznaczyć na własnym zbiorze i przeliczać po każdej zmianie modelu.

Procedura kalibracji, która daje liczby zamiast przeczuć:

  • Zbierz 200-500 dokumentów reprezentujących realny ruch, z zachowaniem proporcji: PDF natywne, skany, zdjęcia z telefonu, korekty. Zbiór wyłącznie z ładnych PDF-ów da progi, które rozsypią się pierwszego dnia produkcji.
  • Wprowadź dane ręcznie i uznaj to za wzorzec. To jest koszt jednorazowy i bez niego dalsza część nie ma sensu.
  • Puść agenta, zapisz dla każdego pola wartość odczytaną i pewność.
  • Dla każdego pola krytycznego z osobna narysuj zależność: przy progu X ile procent dokumentów idzie automatem i ile błędów przechodzi niezauważonych.
  • Ustal dopuszczalną liczbę błędów przepuszczonych na pole krytyczne – zwykle liczoną w promilach, bo każdy taki błąd oznacza korektę w księgach albo przelew do odzyskania – i odczytaj próg, który ją spełnia.

Efektem jest zestaw różnych progów, zwykle najwyższy dla numeru rachunku i kwoty, wyraźnie niższy dla dat. Wartości startowe rzędu 0,95 dla pól krytycznych i 0,7 dla opisowych bywają rozsądnym punktem wyjścia do kalibracji, ale nie są wynikiem – są miejscem, od którego zaczyna się mierzenie.

Rachunek opłacalności robi się prosto: koszt jednego sprawdzenia to czas operatora razy stawka godzinowa, koszt jednego przepuszczonego błędu to czas na wykrycie plus czas na korektę plus ewentualna strata gotówkowa. Jeśli sprawdzenie jest tanie, a błąd drogi, próg idzie w górę i kolejka rośnie. Odwrotnie przy polach opisowych. Obie liczby policz u siebie, bo różnią się między firmami o rząd wielkości.

Agent zatrzymuje dokument i kieruje go do kolejki

Przepływ, który da się utrzymać, wygląda w krokach tak:

  • Wejście i deduplikacja. Dokument trafia ze skrzynki, folderu albo API. Hash pliku i para (NIP, numer faktury) odsiewają powtórki, zanim cokolwiek zacznie kosztować. Miejsce awarii: ten sam dokument dosłany jako „poprawiona wersja” z innym hashem.
  • Klasyfikacja typu. Faktura, korekta, proforma, umowa, załącznik bez znaczenia. Zły typ na tym etapie psuje wszystko, co dalej, bo korekta idzie ścieżką faktury pierwotnej.
  • Przygotowanie obrazu. Prostowanie, rozdzielczość, rozdzielenie stron. Tu powstaje sygnał jakości, który potem przyda się w routingu.
  • Ekstrakcja pól z zapisem pewności i współrzędnych każdej wartości na stronie. Bez współrzędnych sprawdzenie przez człowieka polega na przeglądaniu dokumentu od zera i trwa tyle, co ręczne przepisanie.
  • Walidacje twarde. Arytmetyka, sumy kontrolne, słowniki, dopasowanie do zamówienia i do kartoteki. Ten krok wyłapuje większość błędów, których model nie zgłosi.
  • Routing. Wszystkie pola krytyczne czyste i powyżej progu – dokument idzie do systemu. Cokolwiek nie przeszło – do kolejki, z zaznaczeniem konkretnego pola i powodu.
  • Zapis i księgowanie z identyfikatorem przebiegu, wersją modelu i wersją promptu. Bez tego nie da się później odpowiedzieć, dlaczego dokument z marca ma inne dane niż taki sam z lipca.

Kolejka do sprawdzenia jest osobnym produktem, nie skrzynką na odrzuty. Operator ma zobaczyć wycinek dokumentu z podświetlonym polem, proponowaną wartość i powód zatrzymania, a poprawka ma się zapisywać jako dane treningowe do przeglądu reguł. Interfejs, w którym trzeba otworzyć PDF w drugim oknie i szukać kwoty wzrokiem, kasuje całą oszczędność.

Wyjątki, które wywracają przepływ najczęściej

Wyjątek Objaw w danych Reguła obsługi
Skan słabej jakości, zdjęcie z telefonu niska pewność OCR na wielu polach naraz, rozjazd między odczytami bramka jakości przed ekstrakcją: rozdzielczość poniżej progu albo wykryte rozmycie kierują dokument od razu do kolejki z prośbą o ponowne przesłanie, zamiast wydawać pieniądze na ekstrakcję, która i tak trafi do sprawdzenia
Faktura korygująca ujemne kwoty, odwołanie do numeru faktury pierwotnej, czasem korekta tylko jednej pozycji osobna ścieżka: obowiązkowe dopasowanie do dokumentu pierwotnego, zakaz automatycznego księgowania bez znalezienia oryginału, walidacja kierunku korekty względem oryginału
Załącznik wielostronicowy kilka faktur w jednym PDF albo jedna faktura z tabelą pozycji na czterech stronach rozdzielenie na dokumenty przed ekstrakcją – po numerze faktury, po wzorcu nagłówka lub po adnotacji „strona X z Y”; suma pozycji ze wszystkich stron musi zgadzać się z sumą na ostatniej
Duplikat w innym formacie ten sam numer i NIP, inny hash pliku deduplikacja po parze (NIP, numer), nie po pliku; przy trafieniu dokument idzie do kolejki z etykietą „możliwy duplikat”
Nowy dostawca z nietypowym układem brak dopasowania do znanego wzorca, pola puste zamiast błędnych pierwsze kilka dokumentów od nowego NIP-u zawsze przez kolejkę, niezależnie od pewności; dopiero potem automat
Waluta obca i kurs kwota poprawna, wartość w złotych nie kurs nie jest polem do odczytania z dokumentu, tylko do pobrania z tabeli na właściwy dzień; odczyt służy wyłącznie do porównania

Osobna kategoria to dokumenty, których w ogóle nie powinien dotykać model wizyjny. Od 1 lutego 2026 obowiązek odbierania faktur przez Krajowy System e-Faktur objął wszystkich podatników, a obowiązek wystawiania – podmioty ze sprzedażą powyżej 200 mln zł za 2024 rok; od 1 kwietnia 2026 objął pozostałe firmy poza mikroprzedsiębiorcami, dla których termin przypada na 1 stycznia 2027 (harmonogram Ministerstwa Finansów, stan na sierpień 2026). Faktura pobrana z KSeF przychodzi jako ustrukturyzowany XML – ekstrakcja z obrazu jest tam czystą stratą i dodatkowym źródłem błędu. Agent powinien najpierw sprawdzić, czy dla dokumentu istnieje wersja ustrukturyzowana, a dopiero potem sięgać po OCR.

Nadzór po uruchomieniu: co mierzyć w każdym tygodniu

Progi ustawione raz starzeją się razem z ruchem dokumentów. Zmiana wersji modelu, nowy duży dostawca, inny skaner w oddziale – każde z tych zdarzeń przesuwa rozkład pewności, nie zmieniając niczego w konfiguracji.

  • Odsetek dokumentów przechodzących automatem, rozbity na typy dokumentu i na dostawców. Nagły spadek zwykle wskazuje jednego dostawcę, który zmienił szablon.
  • Błędy przepuszczone, wykryte na późniejszych etapach: przy uzgodnieniu salda, przy reklamacji dostawcy, przy zamknięciu miesiąca. To najważniejsza metryka i jedyna, która mierzy realną szkodę.
  • Odsetek poprawek w kolejce – ile zatrzymanych dokumentów operator zaakceptował bez zmiany. Jeśli większość idzie bez poprawki, próg dla danego pola jest za wysoki i pali czas ludzi.
  • Czas obsługi pozycji w kolejce. Rosnący czas przy stałym wolumenie oznacza, że interfejs sprawdzania przestał nadążać za typem zatrzymań.
  • Koszt na dokument z rozbiciem na wywołania modelu i czas ludzi. Bramka jakości przed ekstrakcją zwykle obniża pierwszą pozycję szybciej niż jakakolwiek zmiana promptu.

Do tego jedna rzecz, której nie zastąpi żaden wskaźnik: losowa próbka dokumentów przepuszczonych automatem, sprawdzana ręcznie co tydzień. Bez niej błędy przepuszczone są widoczne tylko wtedy, gdy ktoś na nie trafi przypadkiem, a to zwykle dzieje się po stronie kontrahenta.

Od czego zacząć w poniedziałek

Weź listę pól, które agent zapisuje do systemu, i przypisz każdemu jedną z trzech klas: krytyczne, kontrolne, opisowe. Jeśli jakieś pole krytyczne nie ma walidacji niezależnej od modelu – arytmetycznej, sumy kontrolnej albo dopasowania do zewnętrznego rejestru – to jest pierwsza rzecz do dopisania, przed jakimkolwiek strojeniem progów. Dopiero potem zbierz zbiór kalibracyjny i wyznacz progi osobno dla każdego pola krytycznego.

Jeżeli dziś działa jeden próg na cały dokument, rozdzielenie go na osobne progi dla kwoty, NIP-u i numeru rachunku zwykle zmienia więcej niż wymiana modelu na nowszy.