Automatyzacja digitalizacji paragonów za pomocą OCR i Deep Learning PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Chcesz zautomatyzować wyodrębnianie danych z paragonów? Sprawdź wstępnie przeszkolone rozwiązania Nanonets Odbiór OCR or Zbuduj swoją własną spersonalizowany paragon OCR. Możesz również zaplanuj demo aby dowiedzieć się więcej o naszych przypadkach użycia AP!


Odbiór OCR lub digitalizacja paragonów rozwiązuje problem automatycznego wyodrębniania informacji z paragonów. W tym artykule omawiam teorię digitalizacji paragonów i wdrażam kompleksowy potok przy użyciu OpenCV i Tesseract. Przeglądam także kilka ważnych artykułów dotyczących digitalizacji paragonów za pomocą głębokiego uczenia się.

Co to jest cyfryzacja paragonów?

Pokwitowania zawierają informacje potrzebne do prowadzenia handlu między firmami, a większość z nich jest na papierze lub w częściowo ustrukturyzowanych formatach, takich jak pliki PDF i obrazy papierowe/drukowane. Aby skutecznie zarządzać tymi informacjami, firmy wydobywają i przechowują odpowiednie informacje zawarte w tych dokumentach. Tradycyjnie osiągano to poprzez ręczne wyodrębnianie odpowiednich informacji i wprowadzanie ich do bazy danych, co jest procesem pracochłonnym i kosztownym.

Cyfryzacja paragonów rozwiązuje problem automatycznego wyodrębniania informacji z paragonu.

Pozyskiwanie kluczowych informacji z paragonów i konwertowanie ich na ustrukturyzowane dokumenty może służyć wielu aplikacjom i usługom, takim jak wydajna archiwizacja, szybkie indeksowanie i analiza dokumentów. Odgrywają kluczową rolę w usprawnianiu procesów intensywnie przetwarzających dokumenty i automatyzacji biura w wielu obszarach finansowych, księgowych i podatkowych.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Potrzebujesz solidnego paragon OCR or skaner paragonów wyodrębnić dane z paragonów? Sprawdź Nanonet API OCR paragonu!


Komu przyda się cyfryzacja paragonów?

Oto kilka obszarów, w których cyfryzacja paragonów może mieć ogromny wpływ:

Automatyzacja rozrachunków z dostawcami i należnościami

Ręczne obliczanie rozrachunków z dostawcami (AP) i rozrachunków z odbiorcami (AR) jest kosztowne, czasochłonne i może prowadzić do nieporozumień między menedżerami, klientami i dostawcami. Dzięki cyfryzacji firmy mogą wyeliminować te wady i mogą mieć więcej zalet – większą przejrzystość, analizę danych, lepszy kapitał obrotowy i łatwiejsze śledzenie.

Optymalizacja łańcucha dostaw

Łańcuchy dostaw są podstawą prawidłowego funkcjonowania wielu firm. Zarządzanie zadaniami, przepływami informacji i przepływami produktów jest kluczem do zapewnienia pełnej kontroli dostaw i produkcji. Jest to niezbędne, jeśli organizacje mają dotrzymać terminów dostaw i kontrolować koszty produkcji.

Firmy, które w dzisiejszych czasach naprawdę dobrze prosperują, łączy coś ważnego: zdigitalizowany łańcuch dostaw. 89% firm z cyfrowymi łańcuchami dostaw otrzymują doskonałe zamówienia od międzynarodowych dostawców, zapewniając terminowość dostaw. Jednym z kluczowych elementów realizacji cyfrowego łańcucha dostaw 4.0 nowej generacji jest automatyzacja przechwytywania danych i zarządzania nimi, a duża część tych danych ma formę paragonów i faktury. Ręczne wprowadzanie potwierdzeń stanowi wąskie gardło w łańcuchu dostaw i prowadzi do niepotrzebnych opóźnień. Jeśli przetwarzanie paragonów zostanie zdigitalizowane, może to prowadzić do znacznych oszczędności czasu i wydajności.


Masz na myśli problem z OCR? Chcesz zdigitalizować faktury, PDFy czy tablice rejestracyjne? Udaj się do Nanonet i buduj modele OCR za darmo!


Dlaczego jest to trudny problem?

Digitalizacja paragonów jest trudna, ponieważ paragony mają wiele odmian i czasami są niskiej jakości. Skanowanie paragonów wprowadza również kilka artefaktów do naszej kopii cyfrowej. Te artefakty stwarzają wiele problemów z czytelnością.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Oto lista kilku rzeczy, które sprawiają, że trudno jest złamać problem

  • Tekst odręczny
  • Małe czcionki
  • Zaszumione obrazy
  • Wyblakłe obrazy
  • Ruch i drgania kamery
  • Znaki wodne
  • Zmarszczki
  • Wyblakły tekst

Tradycyjny potok cyfryzacji paragonów

Typowy potok dla tego rodzaju podejścia end-to-end obejmuje:

  • Przetwarzanie wstępne
  • Optyczne rozpoznawanie znaków
  • Wydobywanie informacji
  • Zrzut danych
Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Zanurzmy się głębiej w każdą część rurociągu. Pierwszym krokiem procesu jest wstępne przetwarzanie.

Przetwarzanie wstępne

Większość zeskanowanych paragonów jest zaszumiona i zawiera artefakty, dlatego aby systemy OCR i ekstrakcji informacji działały prawidłowo, konieczne jest wstępne przetworzenie paragonów. Typowe metody przetwarzania wstępnego obejmują — skalowanie szarości, ograniczanie (binaryzacja) i usuwanie szumów.

Skalowanie szarości to po prostu konwersja obrazu RGB na obraz w skali szarości.

Usuwanie szumów zazwyczaj obejmuje usuwanie szumu soli i pieprzu lub szumu Gaussa.

Większość silników OCR działa dobrze z obrazami czarno-białymi. Można to osiągnąć poprzez progowanie, czyli przypisanie wartości pikseli w stosunku do podanej wartości progowej. Każda wartość piksela jest porównywana z wartością progową. Jeśli wartość piksela jest mniejsza niż próg, jest ustawiana na 0, w przeciwnym razie jest ustawiana na wartość maksymalną (zazwyczaj 255).

OpenCV zapewnia różne opcje progowania – proste progowanie, progowanie adaptacyjne

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Optyczne rozpoznawanie znaków

Następnym krokiem w przygotowaniu jest: OCR. Służy do odczytywania tekstu z obrazów, takich jak zeskanowany dokument lub obraz. Ta technologia służy do konwersji praktycznie każdego rodzaju obrazów zawierających tekst pisany (wpisany na maszynie, odręczny lub wydrukowany) na dane tekstowe do odczytu maszynowego. OCR obejmuje 2 kroki – wykrywanie tekstu i rozpoznawanie tekstu.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Istnieje kilka podejść do OCR. Konwencjonalne podejście komputerowej wizji polega na:

  • Używanie filtrów do oddzielania postaci od tła
  • Zastosuj wykrywanie konturów, aby rozpoznać filtrowane znaki
  • Użyj klasyfikacji magów, aby zidentyfikować postacie

Stosowanie filtrów i klasyfikacji obrazów jest dość proste (pomyśl o klasyfikacji MNIST przy użyciu SVN), ale dopasowanie konturów jest bardzo trudnym problemem i wymaga dużego nakładu pracy ręcznej i nie można go uogólniać.

Następnie przyjrzyj się podejściom do głębokiego uczenia się. Głębokie uczenie się bardzo dobrze uogólnia. Jednym z najpopularniejszych podejść do wykrywania tekstu jest EAST. EAST (wydajny, dokładny detektor tekstu sceny) to proste, ale potężne podejście do wykrywania tekstu. Sieć EAST jest w rzeczywistości wersją dobrze znanej sieci U-Net, która jest dobra do wykrywania funkcji o różnych rozmiarach.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

CRNN i STN-OCR (Spatial Transformer Networks) to inne popularne dokumenty, które wykonują OCR.

Wydobywanie informacji

Najczęstszym podejściem do problemu wyodrębniania informacji jest reguła, w której reguły są zapisywane po OCR w celu wyodrębnienia wymaganych informacji. Jest to potężne i dokładne podejście, ale wymaga napisania nowych reguł lub szablonów dla nowego typu dokumentu.

Kilka opartych na regułach faktura W literaturze istnieją systemy analizy.

  • Intellix firmy DocuWare wymaga szablonu opisanego odpowiednimi polami.
  • SmartFix stosuje specjalnie zaprojektowane zasady konfiguracji dla każdego szablonu

Metody oparte na regułach w dużej mierze opierają się na wstępnie zdefiniowanych regułach szablonów, aby wyodrębnić informacje z określonych układów faktur

Jednym z podejść, które stało się bardzo popularne w ciągu ostatnich kilku lat, jest wykorzystanie do rozpoznawania pól standardowej platformy Object Detection, takiej jak YOLO, Faster R-CNN. Tak więc zamiast wykrywania czystego tekstu, rozpoznawanie pól i wykrywanie tekstu są wykonywane jednocześnie. Dzięki temu potok jest mniejszy (Wykrywanie tekstu → Rozpoznawanie → Wyodrębnianie do wykrywania → Rozpoznawanie). Nie ma potrzeby pisania żadnych reguł, ponieważ wykrywacz obiektów uczy się rozpoznawać te pola.

Zrzut danych

Po wyodrębnieniu informacji można wykonać zrzut danych zgodnie z naszym przypadkiem użycia. Często format JSON do przechowywania informacji o polach jest wygodny. Te pliki JSON można łatwo przekonwertować na pliki XML, arkusze Excel, pliki CSV lub zwykłe pliki tekstowe, w zależności od tego, kto i jak chce pracować z danymi.

Digitalizacja paragonów za pomocą Tesseract

Teraz, gdy mamy już pomysł na potok, zaimplementujmy go na przykładowym paragonie. To jest paragon, z którym będziemy pracować. Naszym celem na końcu jest wyodrębnienie nazwy restauracji, zakupionych pozycji wraz z ich ilością i kosztem, datą zakupu i sumą.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Przetwarzanie wstępne

Ponieważ nasz odbiór jest już w skali szarości i nie ma dużo szumu, zamierzam wykonać progowanie tylko przez zastosowanie progu 210. Możesz dostosować wartość, aby uzyskać właściwe wyjście. Za mniej i dużo stracisz. Zbyt blisko 255 sprawi, że wszystko będzie czarne.

Najpierw musimy zainstalować OpenCV.

pip install opencv-python

Oto kod progowania.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

Tak wygląda wynik.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Wykrywanie tekstu

Do wykrywania tekstu będę używał biblioteki open-source o nazwie Tesseract. Jest to ostateczna biblioteka OCR, rozwijana przez Google od 2006 roku. Najnowsza wersja Tesseract (v4) obsługuje OCR oparty na głębokim uczeniu, który jest znacznie dokładniejszy. Podstawowy aparat OCR sam w sobie wykorzystuje sieć pamięci Long Short-Term Memory (LSTM).

Najpierw zainstalujmy najnowszą wersję Tesseractu.

Dla ubuntu

sudo apt install tesseract-ocr

Dla macOS

brew install tesseract --HEAD

W przypadku systemu Windows możesz pobrać pliki binarne z tego strona

Zweryfikuj swoją wersję tesseract.

tesseract -v

Wynik -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Zainstaluj swoje wiązania Tesseract + Python

Teraz, gdy mamy zainstalowany plik binarny Tesseract, musimy teraz zainstalować powiązania Tesseract + Python, aby nasze skrypty Pythona mogły komunikować się z Tesseract. Musimy również zainstalować pakiet języka niemieckiego, ponieważ paragon jest w języku niemieckim.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Teraz, gdy zainstalowaliśmy Tesseract, zacznijmy wykrywać pola tekstowe.Tesseract posiada wbudowaną funkcję wykrywania pól tekstowych.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Oto wynik kodu wykrywania tekstu.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Rozpoznawanie tekstu

Tesseract wykona OCR. Tesseract 4 wykorzystuje podejście głębokiego uczenia, które działa znacznie lepiej niż większość innych implementacji open source.

Oto kod rozpoznawania tekstu. Chociaż jest to bardzo prosty jednowarstwowy, pod maską znajduje się wiele rzeczy.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Oto surowe dane wyjściowe.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Oto sformatowane wyjście

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

Potrzebujesz zdigitalizować dokumenty, rachunki lub faktury ale zbyt leniwy, by kodować? Udaj się do Nanonet i buduj modele OCR za darmo!


Wydobywanie informacji

Jak wspomniałem wcześniej, najczęstszym sposobem wydobywania informacji jest podejście oparte na regułach.

Wszystkie wpływy z tego hotelu będą miały stałą strukturę, a informacje pojawią się w różnych wierszach. Jest to odzwierciedlone w wyniku OCR, gdzie znaki nowej linii są reprezentowane przez „n”. Korzystając z nich, napiszmy zestaw reguł, aby wyodrębnić informacje. Ten zestaw reguł można zastosować do każdego paragonu z tego hotelu, ponieważ mają ten sam format.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Wydobędę nazwę restauracji, datę transakcji, zakupione przedmioty, ich ilość, łączny koszt na przedmiot i całkowitą kwotę za pomocą prostych poleceń Pythona i wyrażeń regularnych.

To jest słownik, w którym będę przechowywać wyodrębnione informacje.

receipt _ocr = {}

Pierwszym krokiem jest wyodrębnienie nazwy restauracji. Lokalizacja nazwy restauracji będzie stała we wszystkich paragonach, czyli w pierwszych 2 wierszach. Użyjmy tego do stworzenia reguły.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Następnie wyodrębniamy datę transakcji. Wyrażenie regularne daty jest dość proste.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Wynik -

‘30.10.2007’

Następnie wyodrębniamy wszystkie informacje związane z przedmiotami i kosztami.

Pozycje zawierają CHF, czyli frank szwajcarski. Wykryjmy wszystkie wystąpienia CHF. Teraz możemy wykryć linie, rozpoznając znaki od 2 n do zawierających CHF. Tutaj również wykrywam sumę.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Wynik -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Jeśli zauważysz, Tesseract przegapił jeden przedmiot, ponieważ wykrył CH zamiast CHF. W następnej sekcji omówię wyzwania w tradycyjnych systemach OCR.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Drukowanie naszego wyjścia JSON –

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Wszystkie kluczowe informacje zostały wyodrębnione i umieszczone w pliku receive_json..

Problemy z konwencjonalnym podejściem

Chociaż wyodrębniliśmy informacje, powyższy potok pomija kilka rzeczy i nie jest optymalny. Dla każdego nowego paragonu musimy napisać nowy zestaw reguł, a zatem nie jest skalowalny.

Może występować wiele odmian układów, czcionek i rozmiarów czcionek, odręcznych dokumentów itp. Różnice w układach wpłyną na podejście oparte na regułach i należy je uwzględnić, co staje się bardzo nużące. Różnice w czcionkach i rozmiarach czcionek utrudniają rozpoznawanie i wyodrębnianie informacji.

Dlaczego kompleksowy potok głębokiego uczenia się jest lepszy?

Jednym z największych problemów ze standardowym podejściem jest brak generalizacji. Podejścia oparte na regułach nie mogą uogólniać i należy napisać nowe reguły dla każdego nowego szablonu. Należy również uwzględnić wszelkie zmiany lub odmiany w istniejącym szablonie.

Podejście Deep Learning będzie w stanie nauczyć się tych reguł i będzie w stanie łatwo uogólniać różne układy, pod warunkiem, że mamy je w naszym zestawie danych szkoleniowych.

Głębokie uczenie i wyodrębnianie informacji

Tutaj recenzuję kilka artykułów, które wykorzystują kompleksowe podejście do głębokiego uczenia.

Ślicznotka

CUTIE: Nauka rozumienia dokumentów za pomocą splotowego uniwersalnego ekstraktora informacji tekstowych

Ten artykuł proponuje: oparta na uczeniu się metoda ekstrakcji kluczowych informacji z ograniczonym zapotrzebowaniem na zasoby ludzkie. Łączy informacje zarówno ze znaczenia semantycznego, jak i przestrzennego rozmieszczenia tekstów w dokumentach. Zaproponowany przez nich model, Convolutional Universal Text Information Extractor (CUTIE), stosuje splotowe sieci neuronowe na tekstach siatkowych, w których teksty są osadzone jako cechy o konotacjach semantycznych.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Proponowany model, rozwiązuje problem wyodrębniania kluczowych informacji poprzez

  • Najpierw tworzenie siatkowych tekstów z proponowanymi metoda mapowania pozycji siatki. Aby wygenerować dane siatki dla splotowej sieci neuronowej, zeskanowany obraz dokumentu jest przetwarzany przez silnik OCR w celu uzyskania tekstów i ich bezwzględnych/względnych pozycji. Teksty są mapowane z oryginalnego zeskanowanego obrazu dokumentu do siatki docelowej, tak że zmapowana siatka zachowuje oryginalną relację przestrzenną między tekstami, ale jest bardziej odpowiedni do wykorzystania jako dane wejściowe dla splotowej sieci neuronowej.
  • Następnie na teksty z siatką stosowany jest model CUTIE. Bogata informacja semantyczna jest kodowana z tekstów siatkowych na samym początku konwolucyjnej sieci neuronowej z warstwą osadzania słów.

CUTIE pozwala na jednoczesne przeglądanie zarówno informacji semantycznych, jak i informacji przestrzennych tekstów w zeskanowanym obrazie dokumentu i może osiągnąć nowy stan wiedzy w zakresie ekstrakcji kluczowych informacji.

Śliczna Modelka

Posiadają 2 modele CUTIE-A i CUTIE-B. proponowana CUTIE-A to konwolucyjna sieć neuronowa o dużej pojemności, która łączy funkcje o wielu rozdzielczościach bez utraty funkcji o wysokiej rozdzielczości. CUTIE-B to sieć konwolucyjna ze skręceniem atralnym do powiększania pola widzenia i modułem Atrous Spatial Pyramid Pooling (ASPP) do przechwytywania kontekstów wieloskalowych. Zarówno CUTIE-A, jak i CUITE-B przeprowadzają proces kodowania znaczeń semantycznych z warstwą osadzania słów na samym początku.

Zadanie CUTIE jest podobne do zadania segmentacji semantycznej. Zmapowana siatka zawiera rozproszone punkty danych (tokeny tekstowe) w przeciwieństwie do obrazów pokrytych pikselami. Teksty kluczowe zmapowane pozycyjnie w siatce są albo blisko siebie, albo odległe od siebie ze względu na różne typy układów dokumentu. Dlatego włączenie możliwości wieloskalowego przetwarzania kontekstu przynosi korzyści sieci.

Dataset

Proponowana metoda jest oceniana na podstawie solidnego wyzwania odczytu ICDAR 2019 w zestawie danych SROIE, a także na samodzielnie zbudowanym zestawie danych z 3 typami zeskanowanych obrazów dokumentów.

Połączenia Zestaw danych ICDAR 2019 SROIE jest używany, który zawiera 1000 całych zeskanowanych obrazów paragonów. Każdy obraz paragonu zawiera około czterech kluczowych pól tekstowych, takich jak nazwa towaru, cena jednostkowa, data i koszt całkowity. Tekst z adnotacjami w zbiorze danych składa się głównie z cyfr i znaków angielskich.

Własny zestaw danych zawiera 4 zeskanowane hiszpańskie dokumenty paragonów z adnotacjami, w tym rachunki za przejazdy taksówką, rachunki za rozrywkę za posiłki (ME) i rachunki za hotel, z 484 różnymi kluczowymi klasami informacji.

Efekt

Ogólna wydajność jest oceniana przy użyciu średniej precyzji (AP – i mierzonej pod względem dokładności na każdą klasę w 9 klasach) i miękkiej średniej precyzji (softAP), gdzie prognoza kluczowej klasy informacji jest określana jako poprawna, jeśli jest to pozytywna prawda podstawowa są prawidłowo przewidywane, nawet jeśli w ostatecznej prognozie uwzględniono niektóre fałszywie pozytywne wyniki. wspólna analiza AP i softAP zapewnia lepsze zrozumienie działania modelu.

Wyniki możesz zobaczyć w poniższej tabeli.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

GCN dla VRD

Konwolucja wykresów dla multimodalnego ekstrakcji informacji z wizualnie bogatych dokumentów

Ten artykuł przedstawia model oparty na grafach, który łączy informacje tekstowe i wizualne prezentowane w dokumentach wizualnie bogatych (VRD). Osadzania wykresów są szkolone w celu podsumowania kontekstu segmentu tekstu w dokumencie, a następnie łączone z osadzaniami tekstu w celu wyodrębnienia encji.

W tym artykule nazywają dokument VRD i będę się go trzymał.

Każdy dokument jest modelowany jako wykres segmentów tekstu, gdzie każdy segment tekstu składa się z pozycji segmentu i zawartego w nim tekstu. Wykres składa się z węzłów reprezentujących segmenty tekstu i krawędzi reprezentujących zależności wizualne, takie jak względne kształty i odległość między dwoma węzłami.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Osadzania grafu powstałe w wyniku splotu grafu podsumowują kontekst segmentu tekstu w dokumencie, który jest dalej połączony z osadzeniami tekstu w celu wyodrębnienia encji przy użyciu standardowego modelu BiLSTM-CRF.

Model

Model najpierw koduje każdy segment tekstu w dokumencie do osadzenia wykresu, używając wielu warstw splotu wykresu. Osadzanie reprezentuje informacje w segmencie tekstu, biorąc pod uwagę jego kontekst wizualny i tekstowy. Kontekst wizualny to układ dokumentu i względne pozycje poszczególnych segmentów względem innych segmentów. Kontekst tekstowy to zbiór informacji tekstowych w całym dokumencie; Model uczy się przypisywać większe wagi tekstom z sąsiednich segmentów. Następnie artykuł łączy osadzania grafów z osadzaniami tekstu i stosuje standardowy model BiLSTM-CRF do ekstrakcji encji.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Dataset

Używane są dwa zestawy danych ze świata rzeczywistego. Są to faktury VAT (VATI) i międzynarodowe pokwitowania zakupu (IPR). VATI składa się z 3000 zdjęć przesłanych przez użytkowników i ma dokładnie 16 jednostek. Przykładowymi jednostkami są nazwy kupującego/sprzedawcy, data i kwota podatku. Faktury są w języku chińskim i mają ustalony szablon, ponieważ jest to krajowa faktura standardowa.

IPR to zbiór danych obejmujący 1500 zeskanowanych dokumentów paragonowych w języku angielskim, który zawiera 4 jednostki (numer faktury, nazwa dostawcy, nazwa płatnika i kwota całkowita). Istnieje 146 szablonów paragonów.

Efekt

Wynik F1 służy do oceny wydajności modelu we wszystkich eksperymentach. Poniższa tabela zawiera wyniki dla 2 zestawów danych.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Linia bazowa I stosuje BiLSTM-CRF do każdego segmentu tekstu, gdzie każdy segment tekstu jest osobnym zdaniem.

Linia bazowa II stosuje model tagowania do połączonych segmentów tekstu.

Szybciej – RCNN + AED

Podejście do głębokiego uczenia się do rozpoznawania paragonów

W tym artykule przedstawiono podejście do głębokiego uczenia się rozpoznawania zeskanowanych paragonów. System rozpoznawania składa się z dwóch głównych modułów: wykrywania tekstu w oparciu o Connectionist Text Proposal Network oraz rozpoznawania tekstu w oparciu o koder-dekoder typu Attention-based. System osiągnął 71.9% wyniku F1 dla zadania wykrywania i rozpoznawania.

Wykrywanie tekstu

Struktura CTPN jest podobna do Faster R-CNN, z dodatkiem warstwy LSTM. Model sieci składa się głównie z trzech części: wyodrębniania cech przez VGG16, dwukierunkowego LSTM i regresji pola ograniczającego

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Rozpoznawanie tekstu

AED służy do rozpoznawania wierszy tekstu. AED ma dwa główne moduły: DenseNet do wyodrębniania cech z obrazu tekstowego oraz LSTM w połączeniu z modelem uwagi do przewidywania tekstu wyjściowego.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Dataset

Wykorzystywany jest zbiór danych z SROIE 2019. Podzielili dane treningowe na trening, walidację i testowanie i losowo wybrali 80% wpływów za szkolenie, 10% wpływów za walidację, a resztę za testy. W rezultacie 500 rachunków za szkolenie, 63 rachunki za walidację i 63 za testy.

Efekt

Do wykrywania tekstu w dokumencie wykorzystano przecięcie z uwzględnieniem ścisłości (TIoU). Do rozpoznawania tekstu w dokumencie użyto F1 , Precision i Recall.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Tabela I pokazuje wynik CTPN z trzema warunkami: CTPN na oryginalnych obrazach; wstępne przetwarzanie + CTPN, wstępne przetwarzanie + CTPN + weryfikacja OCR. Tabela 2 przedstawia wyniki sieci AED.

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Można to oczywiście zrobić w prostszy i bardziej intuicyjny sposób.


Potrzebujesz solidnego paragon OCR wyodrębnić dane z paragonów? Sprawdź Nanonet API OCR paragonu!


OCR z Nanonets

Aktualizacja nr 1: Właśnie wydaliśmy nasz paragon OCR wstępnie wyszkolony model. Wejdź na https://app.nanonets.com i rozpocznij testowanie!

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Połączenia Nanonet OCR API pozwala z łatwością budować modele OCR. Nie musisz martwić się o wstępne przetwarzanie swoich obrazów, dopasowywanie szablonów lub budowanie silników opartych na regułach, aby zwiększyć dokładność modelu OCR.

Możesz przesyłać dane, dodawać do nich adnotacje, ustawiać model do trenowania i czekać na otrzymanie prognoz za pośrednictwem interfejsu użytkownika opartego na przeglądarce bez pisania ani jednej linii kodu, martwienia się o GPU lub znajdowania odpowiednich architektur dla modeli uczenia głębokiego. Możesz także uzyskać odpowiedzi JSON dla każdej prognozy, aby zintegrować ją z własnymi systemami i tworzyć aplikacje oparte na uczeniu maszynowym, oparte na najnowocześniejszych algorytmach i silnej infrastrukturze.

Korzystanie z GUI: https://app.nanonets.com/

Możesz również skorzystać z interfejsu API Nanonets-OCR, wykonując poniższe czynności:

Krok 1: Sklonuj repozytorium, zainstaluj zależności

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Krok 2: Uzyskaj darmowy klucz API
Uzyskaj bezpłatny klucz API od http://app.nanonets.com/#/keys

Automatyzacja digitalizacji paragonów dzięki OCR i Deep Learning

Krok 3: Ustaw klucz API jako zmienną środowiskową

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Krok 4: Utwórz nowy model

python ./code/create-model.py

Uwaga: Generuje to MODEL_ID, którego potrzebujesz do następnego kroku

Krok 5: Dodaj identyfikator modelu jako zmienną środowiskową

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Uwaga: otrzymasz YOUR_MODEL_ID z poprzedniego kroku

Krok 6: Prześlij dane treningowe
Dane szkoleniowe znajdują się w images (pliki graficzne) i annotations (adnotacje do plików graficznych)

python ./code/upload-training.py

Krok 7: Wytrenuj model
Po przesłaniu obrazów rozpocznij szkolenie Modela

python ./code/train-model.py

Krok 8: Uzyskaj stan modelu
Trenowanie modelu zajmuje około 2 godzin. Otrzymasz wiadomość e-mail, gdy model zostanie przeszkolony. W międzyczasie sprawdzasz stan modelu

python ./code/model-state.py

Krok 9: Dokonaj prognozy
Po przeszkoleniu modelu. Możesz tworzyć prognozy za pomocą modelu

python ./code/prediction.py ./images/151.jpg

Inne dokumenty

aktualizacja:
Dodano więcej materiałów o najnowszych postępach w automatyzacji digitalizacji paragonów za pomocą OCR i Deep Learning.

Znak czasu:

Więcej z AI i uczenie maszynowe