Jak działa AI OCR dla faktur PDF? Technologia za automatycznym rozpoznawaniem danych
Tablixa Blog · 2026-05-07
Jak działa AI OCR dla faktur PDF? Technologia za automatycznym rozpoznawaniem danych
Wrzucasz plik PDF z fakturą, chwilę czekasz i dostajesz gotowy plik XML KSeF FA(3) z wszystkimi danymi na właściwych miejscach. Ale co dokładnie dzieje się w tym czasie? Jak system wie, że „1 234,56 PLN" to kwota brutto, a nie cena jednostkowa? Skąd wiadomo, gdzie kończy się opis pozycji, a zaczyna stawka VAT?
Etap 1: Renderowanie PDF do obrazu
Każdy plik PDF, zanim zostanie przetworzony przez OCR, jest zamieniany na obraz rastrowy o rozdzielczości 200–300 DPI. To kluczowy krok — wiele plików PDF to faktycznie skany zapisane w formacie PDF, bez warstwy tekstowej.
System rozróżnia dwa typy plików PDF:
- PDF tekstowy – zawiera warstwę tekstową (plik wygenerowany komputerowo). Tekst można wyodrębnić bezpośrednio, bez OCR.
- PDF obrazkowy – skan lub zdjęcie zapisane w PDF. Wymaga pełnego procesu OCR.
Tablixa automatycznie wykrywa typ i dobiera właściwą ścieżkę przetwarzania.
Etap 2: Optyczne rozpoznawanie znaków (OCR)
OCR to technologia z historią sięgającą lat 60., ale nowoczesne silniki OCR (jak Google Vision, Tesseract 5, AWS Textract) potrafią znacznie więcej niż tylko „odczytywać litery".
Współczesne OCR wykonuje:
- Deskew – prostowanie przekrzywionego skanu
- Noise reduction – usuwanie szumów, plam i artefaktów
- Layout analysis – wykrywanie tabel, kolumn, nagłówków
- Character recognition – rozpoznawanie liter i cyfr z prawdopodobieństwem
- Word boundaries – grupowanie znaków w wyrazy i zdania
Wynikiem jest nie tylko tekst, ale też mapa pozycji – każde słowo ma przypisane współrzędne na stronie (bounding box). Ta informacja jest kluczowa dla następnego etapu.
Etap 3: Semantyczne wyodrębnianie pól przez model AI
To tutaj klasyczny OCR kończy pracę, a AI zaczyna. Sam tekst z faktury to chaos:
FAKTURA VAT NR FV/2025/01/0042
Warszawa, 15 stycznia 2025
Sprzedawca: ABC Sp. z o.o., NIP: 1234567890
Nabywca: XYZ S.A., NIP: 0987654321
...
Razem do zapłaty: 2 460,00 PLN
Model AI – w przypadku Tablixa to Gemini od Google – analizuje ten tekst i rozumie:
- „FV/2025/01/0042" →
P_2(numer faktury) - „15 stycznia 2025" →
P_1(data wystawienia), zamienione na format2025-01-15 - „NIP: 1234567890" po słowie „Sprzedawca" → NIP Podmiot1
- „NIP: 0987654321" po słowie „Nabywca" → NIP Podmiot2
- „2 460,00 PLN" po słowie „Razem" →
P_15(kwota brutto)
Model rozumie kontekst, a nie tylko szuka wzorców regex. To pozwala mu radzić sobie z faktyczną różnorodnością formatów faktur.
Etap 4: Mapowanie do schematu FA(3)
Po wyodrębnieniu danych system mapuje je do konkretnych pól w schemacie KSeF FA(3):
| Dane z faktury | Pole FA(3) | Uwagi |
|---|---|---|
| Numer faktury | P_2 | Oczyszczenie ze znaków specjalnych |
| Data wystawienia | P_1 | Konwersja do ISO 8601 |
| NIP sprzedawcy | NIP w Podmiot1 | Usunięcie kresek |
| Nazwa nabywcy | NazwaPodmiotu2 | Max 256 znaków |
| Kwota netto 23% | P_13_1 | Format: dwie cyfry po przecinku |
| Kwota VAT 23% | P_14_1 | Weryfikacja: P_13_1 × 0,23 |
| Kwota brutto | P_15 | Suma wszystkich P_14 + P_13 |
Etap 5: Wielopoziomowa walidacja
Przed wygenerowaniem pliku XML system wykonuje kilka rodzajów walidacji:
Walidacja formatów
- NIP: algorytm sumy kontrolnej (wagi 6-5-7-2-3-4-5-6-7)
- IBAN: algorytm modulo 97
- Data: poprawna data kalendarzowa
Walidacja rachunkowa
- Suma netto pozycji ≈ suma P_13_x (±0,02 PLN na zaokrąglenia)
- Σ(netto) + Σ(VAT) = brutto (P_15)
- VAT dla każdej stawki = netto × stawka
Walidacja schematyczna
- Wszystkie wymagane pola FA(3) są wypełnione
- Wartości mieszczą się w dopuszczalnych zakresach
- Typ danych zgodny ze schematem XSD
Jeśli walidacja wykryje niespójność, system zaznacza problematyczne pole i prosi użytkownika o weryfikację – zamiast cicho generować błędny plik.
Jak model AI „uczy się" faktur?
Modele takie jak Gemini są trenowane na miliardach przykładów tekstu i rozumieją strukturę dokumentów finansowych w wielu językach. Kluczowe jest jednak prompt engineering – sposób zadawania pytań modelowi.
Zamiast ogólnego „wyodrębnij dane z faktury", system Tablixa używa precyzyjnych promptów:
Wyodrębnij z poniższego tekstu faktury polskiej:
- NIP sprzedawcy (10 cyfr, ignoruj kreski)
- NIP nabywcy (10 cyfr)
- Numer faktury (zachowaj oryginalny format)
- Datę wystawienia (zwróć w ISO 8601)
- Pozycje faktury (każda: nazwa, ilość, j.m., cena netto, stawka VAT)
- Kwoty podsumowania dla każdej stawki VAT
Jeśli pole nie istnieje lub jest nieczytelne, zwróć null.
Taki prompt eliminuje domysły i zmusza model do zwrócenia struktury JSON bezpośrednio mapującej na pola FA(3).
Co może sprawiać trudności?
Nawet najlepszy model AI ma ograniczenia:
- Faktury ręczne – pismo odręczne jest trudniejsze do rozpoznania
- Bardzo niskiej jakości skany – poniżej 150 DPI dokładność spada
- Niestandardowe układy – egzotyczne szablony bez wyraźnych etykiet pól
- Korekty z odniesieniem – faktury korygujące wymagają powiązania z oryginalną fakturą
Dla tych przypadków system zwraca komunikat z prośbą o ręczną weryfikację konkretnego pola.
Podsumowanie
AI OCR dla faktur to wieloetapowy pipeline: renderowanie PDF → optyczne rozpoznawanie tekstu z analizą layoutu → semantyczne wyodrębnianie pól przez model językowy → mapowanie do schematu FA(3) → wielopoziomowa walidacja. Kluczowa przewaga nad klasycznym OCR to rozumienie kontekstu – system wie nie tylko co jest napisane, ale co to oznacza w strukturze faktury KSeF.