Inteligenty system analizy faktur
Klient: Moto Flota
Branża: Motoryzacyjna
Czas realizacji: 2024
Short: System wspomagający rozliczenie faktur i kosztorysów poprzez inteligentną analizę dokumentów (AI).
Kim jest Klient
Moto Flota jest jednym z liderów w branży zarządzania flotami samochodów. Firma zarządza obecnie ponad 65 tys. pojazdów i współpracuje z rozległą siecią ponad 880 serwisów rozlokowaną na terenie całego kraju.
Cel projektu:
Założeniem projektu było stworzenie i wdrożenie systemu opartego na sztucznej inteligencji, służącego do analizy i pobierania danych z dokumentów księgowych, które pochodzą z serwisów współpracujących z klientem. Dane powinny obejmować, zarówno informacje ogólne, takie jak identyfikacja kontrahenta czy kwota faktury, jak bardziej szczegółowe dane odnoście pojazdu, którego dany kosztorys dotyczy, czy poszczególnych części i usług serwisowych, bez względu na format dokumentu (pdf, jpg) czy format danych (nie ma jednego standardowego formatu dla faktur czy kosztorysów - każdy klient używa swojego).
Rezultat
Powstały system pobiera kosztorysy i faktury ze skrzynki mailowej, następnie przetwarza je z pomocą sztucznej inteligencji, pobierając z nich określone informacje i przesyła wynikowe dane do klienta, w formie umożliwiającej dalsze ich wykorzystanie. Systemy sztucznej inteligencji zbudowane zostały w oparciu o duże modele językowe (ang. LLM - Large Language Model) a także przetwarzanie języka naturalnego (ang. NLP - Natural Language Processing). Zastosowanie takiego podejścia, zamiast statycznego mapowania treści, sprawia że system niejako „rozumie” przesyłane dokumenty i potrafi zrobić ich poprawną analizę. Dzięki temu jest on w stanie doskonale poradzić sobie z nowymi, nieznanymi typami dokumentów i formatów danych.
System posiada również system notyfikacji, który za pośrednictwem różnych kanałów (mail, popularne komunikatory internetowe itp.) informuje o najważniejszych zdarzeniach (otrzymanie faktury, przesłanie przetworzonych danych, wystąpienie błędu itp.)
System zakłada również możliwość ingerencji użytkownika w proces i ręczną korektę w przypadku wystąpienia ewentualnych błędów powstałych na różnych etapach działania. Np. brak dostępu do skrzynki mailowej, zaszyfrowany plik czy niska pewność danych otrzymanych przez model AI.
Model AI zbiera i analizuje wyniki w celu uczenia się aby dane wynikowe zawierały coraz mniej błędnych i niepewnych danych.
Rozwiązania
System opiera się na rozproszonej sieci mikroserwisów, działających niezależnie od siebie w architekturze „push - pull”. Poszczególne usługi komunikują się ze sobą asynchronicznie za pomocą systemu kolejkowego poprzez wspólną „szynę komunikacyjną”.
Do najważniejszych zalet takiego rozwiązania należą:
- Elastyczność - każdy z mikroserwisów ma swoją unikalną odpowiedzialność, dzięki czemu mogą one być łatwo modyfikowane a także testowane niezależenie od innych.
- Skalowalność - dodawanie kolejnych usług nie wpływa na działanie już istniejących co ułatwia i obniża koszty rozbudowy systemu o kolejne funkcjonalności.
- Niezawodność - kolejka działa w trybie “persistent” co oznacza że wiadomości są zachowywane przez określony czas. W przypadku awarii któregoś serwisu dane nie zostaną utracone, tylko będą czekać na przywrócenie działania usługi. Ogranicza to tzw . “single point of failure”, który bierze na siebie kolejka.
- Bezpieczeństwo - ograniczenie liczby węzłów systemu, które są narażone na ataki z zewnątrz.
Technologie
- Python
- Go
- Docker
- RabbitMQ
- React JS
- AI (LLM - Large Language Model, NLP - Natural Language Processing)
- Machine Learning
- Elastic search, Kibana
Największe wyzwania
Klient współpracuje z wieloma podmiotami zewnętrznymi. Każdy z tych podmiotów ma swój format faktur czy kosztorysów. Formaty te mogą się zmieniać w czasie (zmienia się czcionka, rozmieszczenie danych w dokumencie, itp.). Mogą także pojawiać się nowi kontrahenci, którzy posługują się nowymi, niekompatybilnymi z już istniejącymi formatami kosztorysów i faktur.
Podobnie różna może być forma dostarczenia dokumentu. Kontrahenci przesyłają kosztorysy zarówno jako tekstowy dokument pdf, dokument pdf zawierający skan lub pliki graficzne (jpg, png itp.). Dokumenty mogą również mieć różne kodowanie znaków, czy pochodzić z różnych systemów operacyjnych i programów magazynowo-księgowych. Wszystkie te zmienne sprawiają że możemy mieć do czynienia praktycznie z nieograniczoną liczbą różnych przypadków.
Statyczna analiza dokumentów oparta o klasyczne algorytmy wymagałaby częstej ingerencji programistycznej przy implementacjach kolejnych strategii obsługujących nowe wyjątki lub zmiany formatów dla już istniejących. Takie podejście byłoby bardzo nieefektywne kosztowo. Aby tego uniknąć niezbędne stało się wykorzystanie sztucznej inteligencji, która niejako rozumiałaby analizowane dokumenty niezależnie od tego w jaki sposób przedstawione są w nim dane.
Rozwój
Obecnie system jest udoskonalany usprawniany rozszerzany o dodatkowe funkcje. Głównym celem jest obecnie rozwój modelu AI, aby dostarczał wyniki z jak najwyższą pewnością poprawności każdej danej a także samodzielnie obsługiwał jak najwięcej wyjątków (nietypowe faktury, itp).