DocExtract — lokalne AI do automatycznego przetwarzania faktur i dokumentów

Lokalne AI dla dokumentów i faktur | DocExtract

Lokalne AI dla dokumentów ma największą wartość wtedy, gdy nie kończy się na samym odczycie tekstu. W firmowym procesie dokument trzeba zapisać, przetworzyć, sprawdzić, zwalidować i dopiero potem przekazać dalej.

DocExtract to aplikacja do automatycznego przetwarzania dokumentów. Pierwszym obsługiwanym procesem są faktury, ponieważ mają konkretne pola biznesowe i jasne reguły walidacji. Architektura aplikacji jest jednak przygotowywana pod kolejne typy dokumentów, które mogą być dodawane jako osobne pipeline’y ekstrakcji, walidacji i review.

DocExtract nie jest prostym OCR viewerem. To operacyjny workflow, który obejmuje upload, zapis dokumentu, kolejkę przetwarzania, worker, ekstrakcję danych, walidację biznesową, review operatora, zatwierdzenie lub odrzucenie oraz audit trail. Jeśli interesuje Cię szerszy kontekst takich wdrożeń, zobacz też nasze usługi AI i automatyzacji.

Problem: OCR sam w sobie nie wystarcza

Wiele procesów dokumentowych wygląda podobnie. Dokument trafia do firmy jako PDF, skan albo załącznik. Ktoś musi go otworzyć, odczytać dane i przepisać je do kolejnego systemu.

W przypadku faktur najczęściej chodzi o dane takie jak numer faktury, data wystawienia, termin płatności, dane sprzedawcy, dane nabywcy, NIP-y, waluta oraz kwoty netto, VAT i brutto.

Sam OCR może pomóc odczytać tekst. Nie rozwiązuje jednak całego problemu.

OCR nie daje pewności, że:

  • właściwe pole zostało rozpoznane,
  • numer NIP jest poprawny,
  • data ma poprawny format,
  • termin płatności nie jest wcześniejszy niż data faktury,
  • kwoty netto, VAT i brutto są ze sobą zgodne,
  • dokument może bezpiecznie przejść dalej bez kontroli człowieka.

Dlatego DocExtract łączy trzy warstwy: ekstrakcję danych przez AI, deterministyczną walidację oraz review operatora.

Czym jest DocExtract

DocExtract to aplikacja do automatycznego przetwarzania dokumentów, która obecnie koncentruje się na fakturach jako pierwszym procesie. System przyjmuje dokument, zapisuje go w repozytorium, uruchamia pipeline OCR i ekstrakcji danych, sprawdza wynik oraz kieruje dokument do dalszej decyzji.

Dokument może trafić do jednego z dwóch głównych scenariuszy:

  • jako kandydat do zatwierdzenia, gdy dane spełniają wymagania,
  • do review operatora, gdy dane są niepewne, niepełne albo błędne.

To podejście pozwala automatyzować powtarzalną pracę, ale bez rezygnowania z kontroli nad jakością danych.

Faktury jako pierwszy obsługiwany proces

Obecnie DocExtract obsługuje pipeline faktur. To dobry pierwszy przypadek użycia, ponieważ faktury mają jasno określone pola i dają się walidować twardymi regułami.

Aplikacja pracuje dziś na 11 kluczowych polach faktury:

Pole Znaczenie
invoice_number numer faktury
invoice_date data wystawienia
due_date termin płatności
seller_name nazwa sprzedawcy
seller_nip NIP sprzedawcy
buyer_name nazwa nabywcy
buyer_nip NIP nabywcy
currency waluta
total_net wartość netto
total_tax wartość podatku
total_gross wartość brutto

Te pola są podstawą wielu procesów księgowych, finansowych i akceptacyjnych. Ważne jest jednak nie tylko ich odczytanie. Każde pole może mieć confidence, status review i wynik walidacji.

Dzięki temu operator nie dostaje przypadkowego tekstu z OCR. Dostaje uporządkowane dane, które można sprawdzić, poprawić i zatwierdzić.

Jak działa pipeline dokumentu

DocExtract prowadzi dokument przez pełny lifecycle. Proces zaczyna się od uploadu pliku przez frontend lub API.

Po dodaniu dokumentu system:

  • zapisuje plik i metadane,
  • liczy checksum SHA-256,
  • tworzy trwały rekord dokumentu,
  • zapisuje artefakty plikowe,
  • tworzy audit event,
  • przekazuje dokument do kolejki Redis,
  • uruchamia przetwarzanie przez workera,
  • generuje preview stron,
  • parsuje dokument do tekstu,
  • rozpoznaje typ dokumentu,
  • wybiera template ekstrakcji,
  • wysyła tekst do lokalnej warstwy LLM,
  • odbiera JSON z danymi,
  • zapisuje pola i confidence,
  • uruchamia walidację biznesową,
  • kieruje dokument do zatwierdzenia albo review.

Taki model jest ważny, bo dokument nie znika w czarnej skrzynce. System wie, na jakim etapie znajduje się dokument i co już się z nim wydarzyło.

AI extraction, deterministic validation i human-in-the-loop review

Najważniejszą cechą DocExtract jest połączenie automatyzacji z kontrolą.

AI pomaga rozpoznać dane w dokumencie. Walidacja deterministyczna sprawdza, czy dane są poprawne według twardych reguł. Operator przejmuje przypadki, których system nie powinien przepuścić automatycznie.

To daje lepszy model pracy niż samo OCR albo sama odpowiedź modelu językowego.

W praktyce DocExtract sprawdza nie tylko to, co model zwrócił, ale też czy wynik ma sens biznesowy.

Walidacje biznesowe

DocExtract nie opiera decyzji wyłącznie na wyniku modelu. Po ekstrakcji uruchamiane są walidacje deterministyczne.

NIP

System normalizuje NIP do cyfr, sprawdza długość oraz checksum.

Sprawdzane są:

  • normalizacja do cyfr,
  • dokładnie 10 cyfr,
  • poprawność checksum NIP.

Daty

Daty muszą mieć poprawny format i muszą być realnymi datami kalendarzowymi.

Sprawdzane są:

  • format YYYY-MM-DD,
  • poprawność daty,
  • relacja między datą faktury i terminem płatności.

Termin płatności nie może być wcześniejszy niż data wystawienia faktury.

Kwoty

Kwoty muszą być liczbowe i nie mogą być ujemne. System sprawdza też relację total_net + total_tax = total_gross.

Dopuszczana jest tolerancja 0.01, żeby obsłużyć drobne różnice wynikające z zaokrągleń.

Waluta

Waluta musi znajdować się na liście obsługiwanych wartości. Obecnie whitelist obejmuje PLN, EUR, USD i GBP.

Pola tekstowe

Kluczowe pola tekstowe nie mogą być puste ani zbyt krótkie. Dzięki temu system może zatrzymać wynik, który wygląda na niepełny albo przypadkowy.

Review operatora

DocExtract nie zakłada, że każdy dokument powinien przejść automatycznie. Jeżeli dane są niepewne lub niepoprawne, dokument trafia do review operatora.

Operator widzi:

  • status dokumentu,
  • miejsce dokumentu w lifecycle,
  • preview dokumentu,
  • wyekstrahowane pola,
  • confidence dla każdego pola,
  • powody skierowania do review,
  • audit events,
  • review events,
  • formularz poprawy danych.

Operator może wykonać trzy akcje:

  • save — zapisuje poprawki i przelicza walidację,
  • approve — zatwierdza dokument, jeżeli nie ma już problemów,
  • reject — odrzuca dokument.

To podejście jest szczególnie ważne w procesach finansowych. Automatyzacja ma ograniczać ręczną pracę, ale nie powinna usuwać kontroli tam, gdzie dane są niepewne.

Audit trail i historia review

W procesie dokumentowym ważne jest nie tylko to, jaki wynik został uzyskany, ale też jak do niego doszło.

DocExtract utrzymuje audit trail oraz historię review. Dzięki temu można sprawdzić, co wydarzyło się z dokumentem, jakie pola zostały wyekstrahowane, dlaczego dokument trafił do review i jakie poprawki wykonał operator.

To wzmacnia kontrolowalność procesu i ułatwia analizę błędów.

Architektura techniczna

DocExtract jest zbudowany jako aplikacja z osobnymi komponentami backendu, frontendu, workera, bazy danych i kolejki.

Backend wykorzystuje FastAPI, SQLAlchemy, Alembic, PostgreSQL i Redis.

Warstwa przetwarzania dokumentów wykorzystuje Docling do parsowania dokumentów oraz Ollama jako lokalną warstwę LLM do ekstrakcji danych.

Frontend jest oparty o React i Vite. Całość jest uruchamiana przez Docker Compose jako zestaw usług: backend, frontend, worker, PostgreSQL i Redis.

Taka architektura oddziela upload dokumentu od cięższego przetwarzania. Dokument zostaje zapisany trwale, a dopiero potem trafia do kolejki i workera.

Dlaczego persistence-first upload flow ma znaczenie

W systemie dokumentowym najpierw trzeba bezpiecznie zapisać plik i jego metadane. Dopiero później można uruchamiać OCR, parsing, ekstrakcję i walidację.

DocExtract stosuje podejście persistence-first. Oznacza to, że dokument jest najpierw zapisany, a dopiero potem przekazywany do kolejki przetwarzania.

To ogranicza ryzyko utraty dokumentu przy problemach z kolejką, workerem albo etapem ekstrakcji. Ułatwia też diagnozowanie błędów, bo system ma trwały rekord dokumentu i historię zdarzeń.

Przygotowanie pod kolejne typy dokumentów

Faktury są pierwszym obsługiwanym procesem, ale nie zamykają kierunku rozwoju DocExtract.

DocExtract jest projektowany jako aplikacja do automatycznego przetwarzania dokumentów, w której kolejne typy dokumentów mogą mieć własne reguły, pola, walidacje i ścieżki review.

W praktyce oznacza to, że następne typy dokumentów mogą być dodawane jako osobne pipeline’y, na przykład z innymi template’ami ekstrakcji, innymi wymaganymi polami i innymi regułami walidacji.

To ważne, bo różne dokumenty wymagają innego podejścia. Faktura ma NIP, kwoty i termin płatności. Inny dokument może wymagać numeru umowy, danych kontrahenta, dat obowiązywania, wartości limitu albo statusu zgody.

Wspólny pozostaje model pracy:

  • dokument jest zapisany,
  • dane są ekstrahowane,
  • wynik jest walidowany,
  • przypadki niepewne trafiają do review,
  • decyzje są zapisywane w historii.

Dla kogo jest DocExtract

DocExtract ma sens tam, gdzie firma przetwarza powtarzalne dokumenty i chce ograniczyć ręczne przepisywanie danych bez utraty kontroli nad jakością.

Najbardziej naturalne obszary zastosowania to:

  • księgowość,
  • finanse,
  • back-office,
  • shared services,
  • działy operacyjne,
  • zespoły obsługujące faktury,
  • firmy, które chcą rozwijać lokalne AI dla dokumentów krok po kroku.

Obecnie najmocniejszym i najlepiej opisanym przypadkiem są faktury. Kolejne typy dokumentów mogą rozszerzyć zastosowanie aplikacji na szersze procesy obiegu dokumentów.

Czym DocExtract różni się od prostego OCR

Prosty OCR odpowiada na pytanie: jaki tekst jest w dokumencie?

DocExtract odpowiada na szersze pytanie: czy dane z dokumentu są gotowe do dalszego procesu?

Różnica jest praktyczna. W DocExtract dokument ma status, pola mają confidence, walidacja ma twarde reguły, operator widzi powód review, a system zapisuje historię zdarzeń.

To zmienia odczyt dokumentu w kontrolowany workflow.

Najważniejsza przewaga aplikacji to połączenie:

  • AI extraction,
  • deterministic validation,
  • human-in-the-loop review.

Dzięki temu automatyzacja nie działa jak czarna skrzynka. System pomaga szybciej obsłużyć dokument, ale nadal pozwala kontrolować jakość danych.

Co można rozwijać dalej

Najważniejsze kierunki rozwoju DocExtract to:

  • poprawa jakości ekstrakcji,
  • metryki jakości pól,
  • testy end-to-end,
  • analiza powodów review,
  • usprawnienie UX review,
  • raportowanie skuteczności pipeline,
  • dodawanie kolejnych typów dokumentów,
  • integracje z dalszym procesem księgowym lub akceptacyjnym.

Najważniejsze jest to, aby rozwijać automatyzację razem z pomiarem jakości. W dokumentach finansowych i operacyjnych sama szybkość nie wystarczy. Potrzebna jest kontrola nad tym, które dane są poprawne, które wymagają poprawy i gdzie proces generuje najwięcej wyjątków.

Podsumowanie

DocExtract to aplikacja do automatycznego przetwarzania dokumentów, która obecnie koncentruje się na fakturach jako pierwszym procesie.

System łączy OCR i parsing dokumentu, ekstrakcję danych przez lokalną warstwę AI, deterministyczną walidację oraz review operatora. Dokument przechodzi przez pełny lifecycle: upload, zapis, kolejkę, worker, ekstrakcję, walidację, review, zatwierdzenie lub odrzucenie oraz audit trail.

Dzięki temu DocExtract pomaga ograniczać ręczne przepisywanie danych, ale nie usuwa kontroli nad jakością. To istotne szczególnie tam, gdzie dane z dokumentów trafiają do procesów księgowych, finansowych lub operacyjnych.

Faktury są pierwszym obsługiwanym przypadkiem użycia. Kierunek rozwoju jest szerszy: lokalne AI dla dokumentów, które może obsługiwać kolejne typy dokumentów przez osobne pipeline’y ekstrakcji, walidacji i review. Jeśli chcesz porównać ten kierunek z Twoim aktualnym procesem, zobacz stronę DocExtract albo napisz przez kontakt.

FAQ

Czy DocExtract to tylko OCR?

Nie. OCR i parsing są częścią procesu, ale DocExtract obejmuje też ekstrakcję danych, walidację biznesową, review operatora, lifecycle dokumentu i audit trail.

Czy DocExtract obsługuje tylko faktury?

Obecnie główny pipeline koncentruje się na fakturach. Faktury są pierwszym obsługiwanym procesem, ponieważ mają jasne pola biznesowe i konkretne reguły walidacji. Architektura aplikacji jest przygotowywana pod kolejne typy dokumentów.

Jakie pola z faktury są obsługiwane?

DocExtract pracuje na 11 polach: numer faktury, data faktury, termin płatności, sprzedawca, NIP sprzedawcy, nabywca, NIP nabywcy, waluta, kwota netto, podatek i kwota brutto.

Czy system automatycznie zatwierdza każdą fakturę?

Nie. Dokument może trafić do kandydata do zatwierdzenia tylko wtedy, gdy dane spełniają wymagania. Jeżeli jakiekolwiek pole jest niepewne, puste lub błędne, dokument trafia do review operatora.

Czy dane są walidowane po ekstrakcji?

Tak. System sprawdza między innymi NIP, daty, kwoty, walutę i wymagane pola tekstowe. Walidacja jest deterministyczna, więc nie opiera się wyłącznie na odpowiedzi modelu AI.

Jaką rolę ma operator?

Operator sprawdza dokumenty skierowane do review. Widzi preview dokumentu, wyekstrahowane pola, confidence, powody review i historię zdarzeń. Może poprawić dane, zapisać zmiany, zatwierdzić dokument albo go odrzucić.

Czy DocExtract działa lokalnie?

Aplikacja wykorzystuje lokalną warstwę LLM przez Ollama oraz komponenty uruchamiane przez Docker Compose. To pozwala budować workflow przetwarzania dokumentów w kontrolowanym środowisku.

Jaki stack technologiczny wykorzystuje DocExtract?

Backend opiera się o FastAPI, SQLAlchemy, Alembic, PostgreSQL i Redis. Przetwarzanie dokumentów wykorzystuje Docling i Ollama. Frontend jest oparty o React i Vite. Całość działa jako zestaw usług uruchamianych przez Docker Compose.

Czy DocExtract można rozszerzyć o inne dokumenty?

Tak. Faktury są pierwszym obsługiwanym procesem, ale architektura jest przygotowywana pod kolejne typy dokumentów. Każdy nowy typ dokumentu może mieć własne pola, walidacje i ścieżkę review.