Benchmarki dokładności
Wyniki pochodzą z zatwierdzonych artefaktów ewaluacyjnych. Podane daty to daty pomiarów.
Aktualizacja silnika OCR: PP-OCRv5 → PP-OCRv6
| Metryka | PP-OCRv5 (poprzedni) | PP-OCRv6 medium + box_thresh 0.5 (aktualny) |
|---|---|---|
| Kompletność słów (zdjęcie z kamery) | 0.670 | 0.865 (+29 %) |
| Kompletność diakrytyków polskich (zdjęcie z kamery) | 0.562 | 0.775 (+38 %) |
| Precyzja słów (zdjęcie z kamery) | 0.986 | 0.955 |
| Kompletność liczb (paragon) | 0.818 | 1.000 (+22 %) |
| Gęsto zadrukowana faktura (kompletność/precyzja słów) | 1.000 / 1.000 | 1.000 / 1.000 |
| Opóźnienie GPU w stanie ciepłym (RTX 3090, gęsta strona) | ~0.55 s | ~1.13 s |
Kompletność słów na drukowanych renderowanych stronach (PDF-y faktur i paragonów) wynosi 1.000 dla obu wersji silnika. Poprawa dotyczy zdjęć z aparatu, gdzie perspektywa, odblaski i kompresja obciążają detektor. Kompletność liczb (kwot, dat i identyfikatorów) jest najbliższym wskaźnikiem dokładności ekstrakcji pól, ponieważ pola są dopasowywane na podstawie tych tokenów.
Silnik fotograficzny: wstępne przetwarzanie dokumentów z kamery
| Metryka | Bez wstępnego przetwarzania (poziom bazowy) | Z prostowaniem (przesyłanie z kamery) |
|---|---|---|
| Kompletność słów (zdjęcie z kamery) | 0.865 | 0.921 (+6.6 %) |
| Kompletność diakrytyków polskich (zdjęcie z kamery) | 0.775 | 0.854 (+10.2 %) |
| Precyzja słów (zdjęcie z kamery) | 0.955 | 0.961 |
| Kompletność słów. Gęsto zadrukowana strona | 1.000 | 0.635 (regresja, zgodnie z założeniem tylko dla zdjęć) |
Korzyść z prostowania jest rzeczywista, ale wymaga zwrócenia przez usługę OCR przekształconego obrazu strony, aby pola ograniczające były rysowane we właściwej, przekształconej przestrzeni współrzędnych. Ograniczenie do zdjęć zapobiega regresji dla gęstych stron. Funkcja jest kontrolowana przez zmienną środowiskową OCR_PHOTO_TRANSFORMS_ENABLED.
Wykrywanie podziału PDF z wieloma fakturami
| Warunek | Precyzja granicy | Kompletność granicy | F1 | Ocenione dokumenty |
|---|---|---|---|---|
| Czysty tekst (bez szumów OCR) | 1.000 | 1.000 | 1.000 | 660 |
| Szum OCR na poziomie znaków: 2 % | - | - | 0.969 | 660 |
The eval set mixes multi-invoice PDFs with single-invoice negatives. Precision and recall are computed on exact page-index boundary matches. The 2 %% OCR noise model applies per-character confusion, dropping, and swapping (including colon loss, which breaks label regexes). At that noise level the detector achieves F1 0.969, which motivated the suggest-and-confirm UX: boundaries are offered to the user for review rather than applied silently.
Uwagi metodologiczne
-
Wszystkie liczby pochodzą z zatwierdzonych artefaktów oceny w repozytorium (
docs/ocr-calibration/*.json,docs/OCR_IMAGE_CALIBRATION.md). Wyniki wykrywania podziału znajdują się wdocs/ocr-calibration/split_detection_results.json. Żadne liczby nie są szacowane ani ekstrapolowane. - Ocena OCR wykorzystuje niewrażliwą na kolejność kompletność i precyzję wielozbiorów: metryka sprawdza, czy każdy token słowa z wartości referencyjnej występuje w wyniku OCR (kompletność) oraz czy każdy token wyniku OCR występuje w wartości referencyjnej (precyzja), bez karania za różnice w kolejności odczytu. To lepszy wskaźnik dokładności ekstrakcji pól niż metryki podobieństwa sekwencji, które są wrażliwe na zmiany segmentacji wierszy niewpływające na zawartość tokenów.
-
Wartość referencyjna dla zdjęcia z aparatu to ręczna transkrypcja dokumentu testowego (
docs/IMG_2375.HEIC). Wartość referencyjna dla drukowanej strony pochodzi z pdftotext, tego samego narzędzia używanego w szybkiej ścieżce cyfrowych PDF-ów. - Precyzja i kompletność wykrywania podziału mierzą dokładne dopasowania indeksów stron w syntetycznie wygenerowanych PDF-ach z wieloma fakturami o znanych granicach. Zbiór oceny obejmuje różne typy faktur, formaty dat i nazwy dostawców.
-
Ponowne uruchomienie benchmarków po każdej zmianie silnika można wywołać skryptami w
scripts/. Nowe wyniki trafiają dodev-artifacts/(ignorowanego przez git) i są zatwierdzane po weryfikacji.
Pytania dotyczące metodologii lub wyników: hello@synairo.com