Jaki OCR faktur? Testujemy ABBYY FlexiCapture

17 Gru 2019

Yaroslav Shatkevich
Yaroslav Shatkevich
Programista z 17-letnim doświadczeniem. Współzałożyciel i CTO The Story. Fascynat planowania prac programistycznych, autor licznych specyfikacji IT i DevOps. Wyróżniany przez Awwwards, nagrodzony iF Design Award 2018. Na co dzień pracuje w technologiach Python, PHP, React, JavaScript. Stworzył ponad 90 aplikacji webowych i mobilnych oraz systemów dedykowanych.

Rozwiązania pozwalające na rozpoznawanie dokumentów poprzez sztuczną inteligencję (AI) cieszą się coraz większą popularnością, bo dzięki nim znacznie oszczędzamy czas. Przedsiębiorcy mają do wyboru m.in. ABBYY FlexiCapture, którego testu podjąłem się z innymi członkami The Story. Jak wypada popularny OCR faktur, który pozwala na usprawnienie systemu księgowego?

Na początek ważna informacja: system nie działa w trybie „out of the box”, tzn. wymaga konfiguracji i stworzenia odpowiedniej infrastruktury danych.

Konfiguracja systemu jest bardzo skomplikowana. Wynika to z ogromu dostępnych parametrów i możliwości dostosowania, a także konieczności konfiguracji dodatkowych środowisk, jak np. bazy danych wejściowych dla poprawnego funkcjonowania systemu OCR.

zdjęcie głównej recepcji w siedzibie firmy ABBYY
Siedziba rosyjskiego przedsiębiorstwa ABBYY, które zostało założone w 1989 roku przez Davida Yanga. | Fot. pl.m.wikipedia.org

System musi otrzymać dostęp do istniejącej bazy dozwolonych kontrahentów i zamówień, pozycji zakupowych itp. Wszystko w celu zapewnienia działania algorytmów odczytujących i uzyskania jeszcze większej kontroli nad zakupami firmy.

OCR (optical character recognition) – zestaw technik lub oprogramowanie służące do rozpoznawania znaków oraz całych tekstów w pliku graficznym o postaci rastrowej (bitmapy).

Główne założenie systemu OCR zakłada, że w całym workflow powinna uczestniczyć oddelegowana osoba. Jej zadaniem jest weryfikowanie wyników działania systemu, jak i ciągłe usprawnianie procesów uczenia maszynowego (machine learning). 

OCR faktur – przetwarzanie. Proof of Concept dla rozwiązania ABBYY

Na potrzeby testu OCR faktur przeznaczyliśmy tylko dwa dni robocze. Test został przeprowadzony na zbiorze 15 polskich faktur tradycyjnie zeskanowanych i 20 polskich faktur tradycyjnie wygenerowanych.

Mamy pełną możliwość przetestowania systemu uczenia maszynowego jest możliwe przy większym zbiorze danych, tj. około pięciu tysięcy faktur, i dużym nakładzie pracy osoby, która uczy algorytm za pomocą specjalnego narzędzia wspierającego machine learning.

ABBYY FlexiCapture - test systemu OCR do faktur
ABBYY FlexiCapture potrzebuje treningu w oparciu o bazę danych i pomoc operatora. | Fot. Pixabay.com

W teście OCR wykorzystaliśmy rozwiązanie ABBYY FlexiCapture.

FlexiCapture może występować w wersji serwerowej, ale możliwe jest też jego hostowanie w chmurze AB. W tym drugim wypadku eliminujemy koszty utrzymania rozwiązania, a poza tym nie ma już konieczności aktualizowania oprogramowania.

Metoda analityczna

Ze względu na złożoność aplikacji i duży nakład pracy potrzebny na skonfigurowanie środowiska testowego, jako główną metodę analityczną wybrałem testy eksploracyjne.

Przedmiot analizy

Enterprise – oprogramowanie rozwiązujące problem biznesowy, które charakteryzuje m.in. bezpieczeństwo, skalowalność i modularność.

Analiza dotyczy oprogramowania FlexiCapture w wersji Cloud na silniku R2 – systemu typu enterprise do OCR pół ustrukturyzowanych dokumentów z dodatkiem ułatwiającym rozpoznawanie faktur kosztowych z Europy.

Machine learning używane jest przy systemach OCR do faktur
Uczenie maszynowe odgrywa ogromną rolę w działaniu ABBYY FlexiCapture. Rozwiązanie sprawdza się, gdyż program ma wielu klientów. | Fot. pl.m.wikipedia.org

Plan testu

Zaplanowane testy OCR zostały podzielone na następujące grupy:

  1. Konfiguracja środowiska.
  2. Mechanizmy nauczania maszynowego.
  3. Rozpoznawanie faktur.
  4. Rozpoznawanie innych dokumentów.
  5. Eksport danych (np. danych osobowych znajdujących się na fakturze).
  6. Komunikacja API.

Wszystkie testy OCR zostały wykonane w następującym środowisku:

  • Windows 10 Home (Version 1903).
  • 16 GB RAM.
  • Intel Core i7 2.80 GHz.

Zadania przeprowadzono w następującym oprogramowaniu:

  • FC w wersji Cloud.
  • FC Administrator Station.

Baza danych:

  • Microsoft SQL Server Express 2017.
robot na tle tablicy z wzorami matematycznymi
Pełne przetestowanie systemu uczenia maszynowego ABBYY FlexiCapture jest możliwe przy dużym zbiorze danych. | Fot. Mike MacKenzie / Flickr.com

OCR faktur: mechanizmy nauczania maszynowego

ABBYY FlexiCapture wykorzystuje mechanizmy nauczania maszynowego do pozyskania danych z obrazów.

Jak każde AI tego typu, FlexiCapture potrzebuje treningu dzięki bazie danych i pomocy operatora, który wskazuje sztucznej inteligencji, gdzie określone dane znajdują się na obrazie. Nauczanie zgodnie z powyższym zawsze odbywa się dwuetapowo.

Najpierw „wrzucamy” fakturę do OCR, weryfikujemy i ewentualnie poprawiamy, a na sam koniec przekazujemy do douczenia AI. Następnie operator systemu musi sparować dane bądź poprawić obszary rozpoznania na dokumencie w specjalnym narzędziu nauczania.

Narzędzie jest proste i skuteczne – dane można zaznaczać zarówno z poziomu obrazu, jak i z poziomu odczytanych danych. Dzięki temu można szybko odnajdywać błędy i dokonywać korekty.

Ostatnim etapem jest wybranie przez operatora, które z poprawionych faktur w jego ocenie wymagają przekazania do treningu AI.

Pozostawienie decyzji operatorowi jest w mojej ocenie sensowne: nie każda poprawka wynika z braku wzorca w AI. Błędy w odczycie mogą być spowodowane wieloma czynnikami, chociażby jakością obrazu czy otaczającym światłem podczas skanowania.

Nie zapominajmy, że FlexiCapture cechuje także obszerna logika rozpoznawania wzorców typowych dla faktur kosztowych, takich jak chociażby VAT ID.

ilustracja przekazanie płatności za fakturę
ABBYY FlexiCapture radzi sobie dobrze m.in. z odczytywaniem dat dokumentów. | Fot. PublicDomainPictures.net

Dokument: rozpoznawanie online

Do testów rozpoznawania faktur zespół użył następującego zbioru dokumentów:

  • Faktury polskie tradycyjne zeskanowane w liczbie 15
  • Faktury polskie tradycyjne wygenerowane w liczbie 20.

Rozpoznanie testowano pod kątem wykrywania następujących elementów na dokumencie:

  1. Dane kupującego i sprzedawcy na fakturach, w tym NIP.
  2. Data dokumentu.
  3. Numer dokumentu.
  4. Łączna kwota zakupu.
  5. Pozycje towarowe na dokumencie.
  6. Stawki VAT.
  7. Numer konta bankowego.

Rozpoznawanie danych online kontrahentów przez OCR

Dane osobowe kontrahentów były odnajdywane bez większych problemów (100 proc. skuteczności), o ile znajdowały się one w bazie. FlexiCapture poszukuje danych kontrahenta z bazy firmy na obrazie faktury i po rozpoznaniu zwraca dane z bazy.

klawiatura, myszka komputerowa, pendrive, długopisy, dokumenty i filiżanka z kawą na biurku
ABBYY FlexiCapture to ogromne ułatwienie dla wielu biur. | Fot. Pixabay.com

Jak system OCR rozpoznaje daty wystawienia faktur

Data wystawienia dokumentów w 90 proc. przypadków została odczytana poprawnie. Szczególne problemy sprawiały daty zawierające nazwę miesiąca, np. 5 maja 2019 roku, gdzie konieczne było ręczne wskazanie obszaru z datą.

Po wskazaniu obszaru przez operatora dane odczytywano poprawnie w 100 proc.

Skanowanie faktur: numery faktur, czyli integracja z OCR

ABBYY FlexiCapture nie zawsze wykrywał za pierwszym razem numery faktur. Ale po wskazaniu poprawnych miejsc umieszczenia numeru faktury na dokumencie, FlexiCapture radził sobie bez problemu. Na 35 dokumentach za drugim podejściem program osiągnął wynik 90 proc.

Jedynie w 10 proc. przypadków nie udało się wytrenować odpowiednio AI. Jest to prawdopodobnie związane z małą ilością danych treningowych.

tablet, notes, długopis, klawiatura i telefon na biurku
Zdarzało się, że ABBYY FlexiCapture żądał potwierdzenia poprawności odczytanej kwoty ze względu na jakość obrazu. | Fot. Pixabay.com

OCR faktur: pozycje towarowe

Pozycje towarowe na dokumencie wykryto dobrze. W 80 proc. przypadków testowanego materiału pozycje odczytywano niemal idealnie.

System co prawda nie zawsze był w stanie poprawnie podzielić danych na kolumny, zdarzały się też literówki wynikające z jakości obrazu lub kroju czcionki. Lecz takie wyniki udawało się poprawić za pomocą narzędzi treningowych AI.

Środowisko testowe nie zostało zintegrowane z systemem zamówień i bazą pozycji zakupowych, dlatego system całkowicie bazował na danych pochodzących z OCR. Uważam, że w wypadku podłączenia baz wynik mógłby ulec znacznej poprawie.

Wykrywanie stawek VAT w systemie OCR

W 90 proc. stawki VAT system wykrył poprawnie. Podobnie jak w przypadku pozostałych elementów, za pomocą uczenia maszynowego udało się znacząco poprawić wyniki na następnych dokumentach kontrahentów – i to nawet przy tak małym zbiorze dokumentów.

klawiatura, myszka komputerowa, pendrive, długopisy, dokumenty i filiżanka z kawą na biurku
Wykrywanie stawek VAT to jeden z elementów oprogramowania ABBYY.| Fot. Marco Verch / Flickr.com

Usprawnienie systemów księgowych: numer konta bankowego

Numer konta bankowego kontrahenta program FlexiCapture odczytał już za pierwszym razem w stopniu dostatecznym (70 proc.)

Proces skanowania i przetwarzanie. Jak program OCR ABBYY wykrywa informacje na fakturach

Przypomnę, że wraz z zespołem wykonałem test na zbiorze 15 polskich faktur tradycyjnie zeskanowanych i 20 polskich faktur tradycyjnie wygenerowanych.

Wyniki szybkiego testu pokazały, że OCR ABBYY wykrywa informacje na fakturach w następującym stopniu:

  1. Dane kupującego i sprzedawcy na fakturach: 90 proc.
  2. Data dokumentu: 90 proc. (po ingerencji operatora – 100 proc.).
  3. Numer dokumentu: 90 proc.
  4. Łączna kwota zakupu: 90 proc.
  5. Pozycje towarowe na dokumencie: 80 proc.
  6. Stawki VAT: 90 proc.
  7. Numer konta bankowego: 70 proc.

Podkreślę jednak, że w kilku przypadkach wynik byłby na pewno lepszy, gdyby tylko system otrzymał większą liczbę danych treningowych, a sam test trwał dłużej. Ocenę powinna poprawić również większa liczba danych na temat firmy.

REST (Representational State Transfer) – styl architektury oprogramowania, który opiera się na zbiorze wcześniej określonych reguł. Reguły te opisują, jak definiowane są zasoby, a także umożliwiają do nich dostęp.

Dodam jeszcze na koniec, że specyfika programu FlexiCapture nie sprowadza się tylko do odczytywania faktur. Posiada także potężne mechanizmy walidacji danych oraz konfiguracyjne. Może służyć do odczytywania dowolnych dokumentów, takich jak formularze, ankiety, karty do głosowania itd. Wszystko, co posiada określoną strukturę, może zostać przetworzone przez FlexiCapture. 

API (Application Programming Interface) – zestaw reguł, które definiują komunikację pomiędzy programami komputerowymi.

Poza tym ABBYY pozwala na integrację z dowolnym rozwiązaniem informatycznym za pomocą REST API.

Fot. główna: PxHere.com

Yaroslav Shatkevich
Yaroslav Shatkevich
Programista z 17-letnim doświadczeniem. Współzałożyciel i CTO The Story. Fascynat planowania prac programistycznych, autor licznych specyfikacji IT i DevOps. Wyróżniany przez Awwwards, nagrodzony iF Design Award 2018. Na co dzień pracuje w technologiach Python, PHP, React, JavaScript. Stworzył ponad 90 aplikacji webowych i mobilnych oraz systemów dedykowanych.

Wykorzystaj nasze doświadczenie w ABBYY OCR