use case
OCR faktur: od PDF do plan kont, automatycznie.
OCR faktur to jeden z pierwszych procesów, które klienci chcą zautomatyzować. Brzmi prosto, ale diabeł siedzi w szczegółach: polskie faktury mają osiem różnych layoutów, korekty zamieszane z fakturami, wielowalutowe zaliczki. Poniżej jak to układam w produkcji.
Co konkretnie załatwia OCR faktur
Pełny pipeline OCR faktur to cztery etapy:
- Ingest: faktura przychodzi mailem, pocztą (skan), przez formularz dostawcy, albo z portalu B2B. Pipeline musi ją wyłapać niezależnie od kanału.
- OCR i ekstrakcja pól: z PDF (często obraz zeskanowany) wyciągamy konkretne pola: dostawca, NIP, numer faktury, data wystawienia i sprzedaży, netto, VAT, brutto, pozycje (opis plus kwota plus stawka VAT).
- Mapowanie na plan kont: każda pozycja musi trafić na konkretny account (np. "usługi doradcze" → 403-01, "paliwo" → 401-10). Mapping zwykle per dostawca plus reguły słownikowe.
- Push do systemu księgowego: Comarch Optima, enova365, iHurt, Subiekt GT, Fakturownia. Każdy ma swoje API (albo webhook, albo import CSV, albo Playwright upload w UI).
Automatyzacja zastępuje księgową w etapach 1-3. Ostateczne zatwierdzenie zostaje u człowieka (jedną kliknięciem "OK" zamiast ręcznego przepisywania).
Technologie OCR: co wybrać
Cztery podejścia do OCR, każde ze swoim miejscem:
- Google Document AI (Vertex AI): dedykowany processor
invoice_processorwytrenowany na milionach faktur z całego świata. Polskie faktury obsługuje solidnie, dokładność 90-95 procent na dobrze zeskanowanych. Cena: około 0.08 PLN per faktura. Mój default dla średnich i dużych wolumenów. - Custom Document AI processor: jeśli masz specyficzny layout (konkretny dostawca, własna faktura proforma), możesz trenować custom processor. 50-100 przykładów annotated, trening 2-4 godziny. Dokładność na specyficznym layoucie podskakuje do 98 procent.
- Tesseract plus custom parsing: open-source, za darmo, self-hosted. Dokładność raw OCR 85-90 procent, plus trzeba napisać parser pól (regex, heurystyki). Sensowne dla klientów z compliance wymagającym self-hosted albo bardzo niskim wolumenem (kilka faktur dziennie).
- LLM vision models: Gemini Vision, GPT-4o z image input. Bardzo dobre przy skomplikowanych układach, dokładność 92-97 procent. Koszt wyższy niż Document AI, ale elastyczność większa. Używam dla korekt, zaliczek, faktur w nietypowym formacie.
Pola, które zawsze muszę wyciągnąć
Minimalny set pól dla poprawnej faktury w Polsce:
- Dostawca: nazwa, NIP, adres. NIP używam jako klucz identyfikacyjny (weryfikacja w VIES, mapowanie na konto dostawcy w księdze).
- Numer i data faktury: numer jest unique identifier, data wystawienia plus data sprzedaży (dla VAT). Termin płatności jeśli jest.
- Kwoty: netto, VAT (per stawka: 0, 5, 8, 23, "np", "zw"), brutto. Trzeba wyciągnąć per stawka VAT, nie tylko sumę, bo deklaracja VAT tego wymaga.
- Pozycje: opis, kwota netto, stawka VAT, kwota VAT. Dla mapowania na plan kont.
- Waluta: PLN, EUR, USD. Jeśli nie PLN, dodatkowo kurs przeliczeniowy (NBP średni z dnia poprzedzającego wystawienie faktury, per polskie prawo).
- Metoda płatności: przelew, karta, gotówka. Mechanizm podzielonej płatności (MPP) jeśli stosowany.
Plus flagi walidacyjne: czy suma pozycji zgadza się z kwotą brutto (fakturowe sprawdzenie), czy NIP waliduje się checksumą, czy faktura nie jest duplikatem (po numerze i dostawcy).
Edge case'y, których nie da się zignorować
Szczegóły, które w produkcji wychodzą:
- Faktury korygujące: łączą się z oryginałem (różnica w pozycjach, zmiana kwoty). Automatyzacja musi rozpoznać, że to korekta (nie zwykła faktura), zlokalizować oryginalną i zaksięgować delta.
- Zaliczki i faktury końcowe: faktura zaliczkowa (np. 30 procent z góry) i końcowa (reszta plus rozliczenie zaliczki). Każda ma inne konto, księgowanie wymaga łączenia.
- Stawka "np" (nie podlega) albo "zw" (zwolniony): różne od 0. System księgowy musi je obsłużyć osobno w deklaracji VAT.
- MPP (mechanizm podzielonej płatności): dla transakcji powyżej 15 000 PLN z listy towarów/usług wrażliwych. Automatyzacja powinna to flaggować do ręcznej weryfikacji.
- Wielowalutowe faktury: faktura w EUR przeliczona na PLN według kursu NBP z dnia poprzedzającego. Mam dedykowany workflow pobierający kursy NBP i aplikujący do faktur.
- Skany z telefonu: zdjęcie faktury papierowej, pod kątem, z palcem w kadrze. Document AI sobie radzi, Tesseract zwykle nie. Pre-processing (rotate, crop, deskew) przed OCR.
Zasada HITL dla księgowości
OCR faktur to proces, w którym pełna automatyzacja nie istnieje dla zdrowia rozsądku. Nawet przy 98 procent dokładności, 2 procent błędów na rocznym wolumenie 5000 faktur to 100 błędów w deklaracji VAT. Dla księgowości to niedopuszczalne. Dlatego każde wdrożenie kończy się kolejką akceptacji: OCR sugeruje, księgowa potwierdza albo koryguje. Oszczędność czasu to 70-85 procent.
Integracja z systemami księgowymi
Polskie systemy księgowe mają różne API:
- Comarch Optima: eAPI (REST) dla najnowszych wersji, plus import XML dla starszych. Uwierzytelnianie przez token. Integracja stabilna, dokumentacja dostępna.
- enova365: moduł "Serwer SOA" oferuje REST API. Wymaga konfiguracji po stronie klienta, ale kiedy działa, workflow stabilny.
- iHurt: SOAP API (starsze) albo REST w nowych wersjach. Dobry do integracji dla firm handlowych.
- Subiekt GT / Sfera: import CSV i własny format plików. Mniej elastyczne, ale działa dla prostych setup'ów.
- Fakturownia: REST API jest solidne, ale to platforma bardziej dla mikrofirm niż średnich.
Dla klientów z wyjątkowymi systemami (custom ERP, branżowy soft) robię wrapper integracyjny: n8n wysyła JSON, mikroserwis konwertuje na format oczekiwany przez docelowy system. Dzięki temu workflow n8n jest stabilny mimo ewentualnych zmian w tym legacy systemie.
Najczęstsze pytania
Ile faktur miesięcznie musi być, żeby OCR miał sens ekonomiczny?
Próg opłacalności to około 100-200 faktur miesięcznie. Przy 100 fakturach miesięcznie księgowa spędza 10-20 godzin na ręcznym wprowadzaniu. Automatyzacja redukuje to do 2-5 godzin (sama akceptacja), uwalniając 8-15 godzin miesięcznie. Poniżej 100 faktur ROI rozciąga się na 18-24 miesiące, co dla wielu klientów jest za długo.
Czy OCR poradzi sobie z fakturami ręcznie pisanymi?
Częściowo. Document AI i LLM vision rozpoznają ręczne pismo drukowane (90 procent accuracy), ale pismo odręczne w rubrykach (np. kwota dopisana ręcznie do faktury pro forma) jest problematyczne. W takich przypadkach kolejka akceptacji staje się znacznie ważniejsza, a workflow oznacza takie faktury jako 'wymaga pełnej weryfikacji'.
Czy system rozpoznaje rodzaj kosztu i przypisuje konto automatycznie?
Tak, przez combo: (a) dostawca-specific rules (faktura od Orange zawsze idzie na konto telekomunikacji), (b) keyword matching w opisie pozycji (słowa 'paliwo', 'diesel' → paliwo), (c) LLM classifier dla niejasnych przypadków. Accuracy tego mappingu na poziomie 85-92 procent, reszta do weryfikacji.
Co z fakturami w innych językach (np. angielski, niemiecki)?
Document AI obsługuje wielojęzyczne faktury natywnie. Dla faktur międzynarodowych dokładam moduł walidacji NIP-u europejskiego (VIES) plus obsługę walut z automatycznym przeliczeniem po kursie NBP. Klienci z importami (np. hurtownie) mają tę funkcjonalność w standardzie.
Jak długo trwa wdrożenie OCR faktur?
Proof of concept (wąska próbka dostawców, 100 faktur historycznych, test na Document AI): 5-10 dni. Pełne wdrożenie z integracją księgową i szkoleniem księgowej: 4-8 tygodni. Czas zależy od liczby różnych layoutów dostawców i integracji z księgowością (Comarch Optima szybciej, custom ERP wolniej).
Chcesz pogadać o konkretnym projekcie?
Warsztat otwierający to 90 minut, zdalnie albo w Poznaniu, bez zobowiązań. Mówimy, czy Twój proces nadaje się do automatyzacji i w jakiej skali.
napisz do mnie → adi@workinflows.pl · LinkedIn