Automatisering av kvitteringsdigitalisering med OCR og Deep Learning PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Vil du automatisere datautvinning fra kvitteringer? Sjekk ut Nanonets' forhåndstrente Kvittering OCR or bygg din egen tilpasset kvittering OCR. Du kan også planlegg en demonstrasjon for å lære mer om våre AP-brukssaker!


Kvittering OCR eller kvitteringsdigitalisering løser utfordringen med å automatisk trekke ut informasjon fra en kvittering. I denne artikkelen dekker jeg teorien bak kvitteringsdigitalisering og implementerer en ende-til-ende-pipeline ved hjelp av OpenCV og Tesseract. Jeg gjennomgår også noen viktige artikler som driver med digitalisering av kvitteringer ved hjelp av dyp læring.

Hva er kvitteringsdigitalisering?

Kvitteringer inneholder informasjonen som trengs for at handel skal skje mellom selskaper, og mye av det er på papir eller i semistrukturerte formater som PDF-filer og bilder av papir / papir. For å håndtere denne informasjonen effektivt trekker selskaper ut og lagrer relevant informasjon i disse dokumentene. Tradisjonelt har dette blitt oppnådd ved å manuelt trekke ut relevant informasjon og legge den inn i en database som er en arbeidskrevende og kostbar prosess.

Kvitteringsdigitalisering løser utfordringen med automatisk å hente ut informasjon fra en kvittering.

Å hente ut nøkkelinformasjon fra kvitteringer og konvertere dem til strukturerte dokumenter kan tjene mange applikasjoner og tjenester, for eksempel effektiv arkivering, rask indeksering og dokumentanalyse. De spiller kritiske roller i å effektivisere dokumentintensive prosesser og kontorautomatisering innen mange finans-, regnskaps- og beskatningsområder.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Trenger en robust kvittering OCR or kvitteringsskanner å trekke ut data fra kvitteringer? Sjekk ut Nanonetter kvittering OCR API!


Hvem vil finne kvitteringsdigitalisering nyttig?

Her er noen få områder der kvitteringsdigitalisering kan ha stor innvirkning:

Leverandørgjeld og automatisering av fordringer

Å beregne leverandørgjeld (AP) og kundefordringer (ARs) manuelt er kostbart, tidkrevende og kan føre til forvirring mellom ledere, kunder og leverandører. Med digitalisering kan bedrifter eliminere disse ulempene og ha flere fordeler - økt gjennomsiktighet, dataanalyse, forbedret arbeidskapital og enklere sporing.

Optimalisering av forsyningskjeden

Forsyningskjeder er ryggraden i at mange selskaper fungerer ordentlig. Å håndtere oppgaver, informasjonsflyter og produktflyter er nøkkelen til å sikre fullstendig kontroll av tilbud og produksjon. Dette er viktig hvis organisasjoner skal oppfylle leveringstider og kontrollere produksjonskostnadene.

Bedriftene som virkelig blomstrer i disse dager har noe viktig til felles: en digitalisert forsyningskjede. 89% av selskapene med digitale forsyningskjeder motta perfekte bestillinger fra internasjonale leverandører, noe som sikrer levering til rett tid. Et av nøkkelelementene for å realisere neste generasjons digitale Supply Chain 4.0, er automatisering av datafangst og -administrasjon, og mye av disse dataene er i form av kvitteringer og fakturaer. Manuell inntasting av kvitteringer fungerer som en flaskehals på tvers av forsyningskjeden og fører til unødvendige forsinkelser. Dersom denne kvitteringsbehandlingen digitaliseres kan det føre til betydelige gevinster i tid og effektivitet.


Har du et OCR-problem i tankene? Ønsker å digitalisere fakturaer, PDF-filer eller nummerplater? Gå over til Nanonetter og bygg OCR-modeller gratis!


Hvorfor er det et vanskelig problem?

Kvitteringsdigitalisering er vanskelig siden kvitteringer har mange variasjoner og noen ganger har lav kvalitet. Skannekvitteringer introduserer også flere gjenstander i vår digitale kopi. Disse gjenstandene utgjør mange lesbarhetsutfordringer.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Her er en liste over noen få ting som gjør det vanskelig å knekke

  • Håndskrevet tekst
  • Små skrifttyper
  • Støyende bilder
  • Blekede bilder
  • Kamera bevegelse og risting
  • Vannmerker
  • rynker
  • Blekt tekst

En tradisjonell kvitteringsdigitaliseringsrørledning

En typisk rørledning for denne typen end-to-end-tilnærming innebærer:

  • forbehandling
  • Optical Character Recognition
  • Informasjonsutvinning
  • Datadump
Automatisering av kvitterings digitalisering med OCR og Deep Learning

La oss dykke dypere ned i hver del av rørledningen. Første trinn i prosessen er Forbehandling.

forbehandling

De fleste skannede kvitteringer er støyende og har gjenstander, og for at OCR og informasjonsutvinningssystemene skal fungere bra, er det nødvendig å forhåndsbehandle kvitteringene. Vanlige forbehandlingsmetoder inkluderer - gråskalering, terskelverdi (binærisering) og fjerning av støy.

Gråskalering er ganske enkelt å konvertere et RGB-bilde til et gråtonebilde.

Fjerning av støy innebærer vanligvis å fjerne salt- og pepperstøy eller Gaussisk støy.

De fleste OCR-motorer fungerer bra på svart-hvitt-bilder. Dette kan oppnås ved terskelverdi, som er tildelingen av pikselverdier i forhold til den oppgitte terskelverdien. Hver pikselverdi sammenlignes med terskelverdien. Hvis pikselverdien er mindre enn terskelen, er den satt til 0, ellers er den satt til en maksimumsverdi (vanligvis 255).

OpenCV tilbyr ulike terskelalternativer – enkel terskelverdi, adaptiv terskelverdi

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Optical Character Recognition

Neste trinn i rørledningen er OCR. Den brukes til å lese tekst fra bilder som et skannet dokument eller et bilde. Denne teknologien brukes til å konvertere praktisk talt alle slags bilder som inneholder skrevet tekst (skrevet, håndskrevet eller skrevet ut) til maskinlesbar tekstdata. OCR involverer to trinn - tekstgjenkjenning og tekstgjenkjenning.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Det er en rekke tilnærminger til OCR. Den konvensjonelle Vision-tilnærmingen er å

  • Bruke filtre for å skille tegnene fra bakgrunnen
  • Bruk konturdeteksjon for å gjenkjenne de filtrerte tegnene
  • Bruk mage-klassifisering for å identifisere tegnene

Å bruke filtre og bildeklassifisering er ganske greit (tenk MNIST-klassifisering ved hjelp av SVN), men konturtilpasning er et veldig vanskelig problem og krever mye manuell innsats og kan ikke generaliseres.

Deretter kommer Deep Learning-tilnærmingene. Deep Learning generaliserer veldig bra. En av de mest populære tilnærmingene for tekstgjenkjenning er EAST. EAST (Effektiv nøyaktig scene tekstdetektor) er en enkel, men kraftig tilnærming for tekstgjenkjenning. EAST-nettverket er faktisk en versjon av det velkjente U-Net, som er bra for å oppdage funksjoner i forskjellige størrelser.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

CRNN og STN-OCR (Spatial Transformer Networks) er andre populære papirer som utfører OCR.

Informasjonsutvinning

Den vanligste tilnærmingen til problemet med informasjonsutvinning er regelbasert, der regler er skrevet etter OCR for å trekke ut nødvendig informasjon. Dette er en kraftig og nøyaktig tilnærming, men det krever at du skriver nye regler eller maler for en ny type dokument.

Flere regelbaserte faktura analysesystemer finnes i litteraturen.

De regelbaserte metodene er sterkt avhengige av de forhåndsdefinerte malreglene for å hente ut informasjon fra spesifikke fakturaoppsett

En tilnærming som har blitt veldig vanlig de siste årene er å bruke et standard Object Detection-rammeverk som YOLO, Raskere R-CNN for å gjenkjenne felt. Så i stedet for ren tekstgjenkjenning, utføres feltgjenkjenning og tekstgjenkjenning samtidig. Dette gjør rørledningen mindre (Tekstdeteksjon → Gjenkjenning → Ekstraksjon til deteksjon → Gjenkjenning). Det er ikke nødvendig å skrive noen regler siden objektdetektoren lærer seg å gjenkjenne disse feltene.

Datadump

Når du har hentet ut informasjonen din, kan datadumpen gjøres slik vårt brukstilfelle krever. Ofte er et JSON-format for å lagre feltinformasjonen praktisk. Disse JSON-filene kan lett konverteres til XML-filer, Excel-ark, CSV-filer eller klartekstfiler, avhengig av hvem som vil jobbe med dataene og hvordan.

Kvittering Digitalisering vha Tesseract

Nå som vi har en ide om rørledningen, la oss implementere den på et eksempel på kvittering. Dette er kvitteringen vi skal jobbe med. Målet vårt på slutten av dette er å trekke ut restaurantnavnet, kjøpte varer med antall og kostnad, kjøpsdato og totalsum.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

forbehandling

Siden kvitteringen vår allerede er i gråtoner og det ikke er mye støy, skal jeg bare gjøre terskel ved å bruke en terskel på 210. Du kan justere verdien for å få riktig utgang. For mindre, og du vil gå glipp av mye. For nær 255 vil gjøre alt svart.

Vi må installere OpenCV først.

pip install opencv-python

Her er koden for terskelverdi.

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’)

Slik ser utgangen ut.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Tekstgjenkjenning

For tekstgjenkjenning vil jeg bruke et bibliotek med åpen kildekode som heter Tesseract. Det er det definitive OCR-biblioteket og er utviklet av Google siden 2006. Den siste utgivelsen av Tesseract (v4) støtter dyp læringsbasert OCR som er betydelig mer nøyaktig. Den underliggende OCR-motoren bruker i seg selv et Long Short-Term Memory (LSTM) nettverk.

La oss først installere den nyeste versjonen av Tesseract.

For ubuntu

sudo apt install tesseract-ocr

For macOS

brew install tesseract --HEAD

For windows kan du laste ned binærfiler fra dette side

Bekreft tesseract-versjonen din.

tesseract -v

Utgang -

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

Installer Tesseract + Python-bindingene dine

Nå som vi har installert Tesseract-binæren, må vi nå installere Tesseract + Python-bindingene slik at Python-skriptene våre kan kommunisere med Tesseract. Vi må også installere den tyske språkpakken siden kvitteringen er på tysk.

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

Nå som vi har installert Tesseract, la oss begynne å oppdage tekstboksene.Tesseract har innebygd funksjonalitet for å oppdage tekstbokser.

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')

Her er utgangen av tekstdeteksjonskoden.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Tekstgjenkjenning

Vi vil Tesseract for å utføre OCR. Tesseract 4 bruker en dyp læringstilnærming som fungerer betydelig bedre enn de fleste andre open source-implementeringer.

Her er koden for tekstgjenkjenning. Selv om det er en veldig enkel en-liner, er det mye som går under panseret.

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

Her er den rå produksjonen.

'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'

Her er den formaterte utgangen

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

Trenger å digitalisere dokumenter, kvitteringer eller fakturaer men for lat til å kode? Gå over til Nanonetter og bygg OCR-modeller gratis!


Informasjonsutvinning

Som jeg har nevnt før, er den vanligste måten å hente ut informasjon på, en regelbasert tilnærming.

Alle kvitteringer fra dette hotellet vil følge en fast struktur og informasjonen vises på forskjellige linjer. Dette gjenspeiles i OCR-utgangen der nye linjer er representert med 'n'. Bruk disse til å skrive et sett med regler for å hente ut informasjon. Dette settet med regler kan brukes på enhver kvittering fra dette hotellet, siden de har samme format.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Jeg vil trekke ut restaurantnavnet, transaksjonsdatoen, de kjøpte varene, deres antall, totale kostnader per vare og totalbeløpet ved hjelp av enkle python-kommandoer og regulære uttrykk.

Dette er en ordbok der jeg skal lagre den hentede informasjonen.

receipt _ocr = {}

Det første trinnet er å trekke ut restaurantnavnet. Plasseringen av restaurantnavnet kommer til å være konstant i alle kvitteringer, og det er i de første to linjene. La oss bruke dette til å lage en regel.

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

Deretter trekker vi ut datoen for transaksjonen. Date regex er ganske grei.


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)

Utgang -

‘30.10.2007’

Deretter trekker vi ut all informasjon relatert til varene og kostnadene.

Varene inneholder en CHF som er sveitsiske franc. La oss oppdage alle forekomster av CHF. Nå kan vi oppdage linjer ved å gjenkjenne tegnene mellom 2 n og som inneholder en CHF. Jeg oppdager totalen her også.

# 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)

Utgang -

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

Hvis du merker, savnet Tesseract ett element fordi det oppdaget CH i stedet for CHF. Jeg skal dekke utfordringer i tradisjonelle OCR-systemer i neste avsnitt.

# 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)

Skriver ut JSON-utdataene våre -

{'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'}

All nøkkelinformasjonen er hentet ut og dumpet i receipt_json ..

Problemer med den konvensjonelle tilnærmingen

Selv om vi hentet ut informasjonen, savner rørledningen ovenfor noen få ting og er suboptimal. For hver nye kvittering trenger vi å skrive et nytt sett med regler og er dermed ikke skalerbar.

Det kan være mange variasjoner i oppsett, skrift- og skriftstørrelser, håndskrevne dokumenter etc. Forskjeller i oppsett vil påvirke regelbaserte tilnærminger, og disse må tas hensyn til, noe som blir veldig kjedelig. Forskjeller i skrift- og skriftstørrelser gjør det vanskelig å gjenkjenne og trekke ut informasjon.

Hvorfor er en end-to-end Deep Learning-rørledning bedre?

Et av de største problemene med standardtilnærmingen er mangelen på generalisering. Regelbaserte tilnærminger kan ikke generaliseres, og det må skrives nye regler for enhver ny mal. Også eventuelle endringer eller variasjoner i en eksisterende mal må redegjøres for.

En Deep Learning-tilnærming vil være i stand til å lære disse reglene, og vil være i stand til å generalisere på tvers av forskjellige layouter, forutsatt at vi har dem i opplæringsdatasettet vårt.

Dyp læring og informasjonsutvinning

Her gjennomgår jeg noen papirer som bruker end-to-end Deep Learning-tilnærminger.

SØTNOS

CUTIE: Lære å forstå dokumenter med Convolutional Universal Text Information Extractor

Denne artikkelen foreslår en læringsbasert nøkkelinformasjonsutvinningsmetode med begrenset behov for menneskelige ressurser. Den kombinerer informasjonen fra både semantisk betydning og romlig fordeling av tekster i dokumenter. Deres foreslåtte modell, Convolutional Universal Text Information Extractor (CUTIE), bruker konvolusjonelle nevrale nettverk på gitterte tekster der tekster er innebygd som funksjoner med semantiske konnotasjoner.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Den foreslåtte modellen, takler nøkkelinformasjonen for utvinning av informasjon ved

  • Først oppretter du gitterte tekster med det foreslåtte rutenettposisjonell kartleggingsmetode. For å generere rutenettdataene for det konvolusjonelle nevrale nettverket blir det skannede dokumentbildet behandlet av en OCR-motor for å tilegne seg tekstene og deres absolutte / relative posisjoner. Tekstene er kartlagt fra det originale skannede dokumentbildet til målgitteret, slik at det kartlagte rutenettet bevarer det opprinnelige romlige forholdet mellom tekster som likevel er mer egnet til å brukes som inngang for det konvolusjonelle nevrale nettverket.
  • Deretter blir CUTIE-modellen brukt på rutenettene. Den rike semantiske informasjonen er kodet fra de tekstede tekstene helt i begynnelsen av det konvolusjonelle nevrale nettverket med et ordintegreringslag.

CUTIE gjør det mulig å se på både semantisk informasjon og romlig informasjon om tekstene i det skannede dokumentbildet, og kan nå et nytt toppmoderne resultat for utvinning av nøkkelinformasjon.

CUTIE-modell

De har to modeller CUTIE-A og CUTIE-B. den foreslåtte CUTIE-A er et konvolusjonalt nevralt nettverk med høy kapasitet som smelter sammen funksjoner med flere oppløsninger uten å miste funksjoner med høy oppløsning. CUTIE-B er et konvolusjonsnettverk med enorm konvolusjon for å utvide synsfeltet og Atrous Spatial Pyramid Pooling (ASPP) -modul for å fange sammenhold i flere skalaer. Både CUTIE-A og CUITE-B gjennomfører semantisk betydningskodingsprosess med et ordintegreringslag helt i begynnelsen.

CUTIEs oppgave ligner på semantisk segmenteringsoppgave. Det tilordnede rutenettet inneholder spredte datapunkter (teksttegn) i motsetning til bildene som er spredt med piksler. Rutenettposisjonskartede nøkkeltekster er enten nærme eller fjerne hverandre på grunn av forskjellige typer dokumentoppsett. Derfor er integrering av flerskala kontekstbehandlingsevne til fordel for nettverket.

datasett

Den foreslåtte metoden blir evaluert på ICDAR 2019 robust leseutfordring på SROIE datasett og er også på et selvbygd datasett med 3 typer skannede dokumentbilder.

De ICDAR 2019 SROIE datasett brukes som inneholder 1000 hele skannede kvitteringsbilder. Hvert kvitteringsbilde inneholder rundt fire nøkkeltekstfelt, for eksempel varenavn, enhetspris, dato og totalkostnad. Teksten som er kommentert i datasettet består hovedsakelig av sifre og engelske tegn.

Det selvbygde datasettet inneholder 4, 484 merkede skannede spanske kvitteringsdokumenter, inkludert taxikvitteringer, måltidskvittering (ME) -kvitteringer og hotellkvitteringer, med 9 forskjellige viktige informasjonsklasser.

Resultater

Den generelle ytelsen blir evaluert ved hjelp av gjennomsnittlig presisjon (AP - og målt i nøyaktighet per klasse over de 9 klassene,.) Og myk gjennomsnittlig presisjon (softAP) hvor prediksjonen til en viktig informasjonsklasse blir bestemt som korrekt hvis positive bakkesannheter er riktig spådd selv om noen falske positive er inkludert i den endelige spådommen. felles analyse av AP og softAP gir bedre forståelse av modellytelsen.

Du kan se resultatene i tabellen nedenfor.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

GCN-er for VRD-er

Grafkonvolusjon for multimodal informasjonsutvinning fra visuelt rike dokumenter

Denne artikkelen introduserer en graf-konvolusjonsbasert modell for å kombinere tekstlig og visuell informasjon presentert i Visually Rich-dokumenter (VRDs). Grafinnbaserte opplæringer blir trent til å oppsummere konteksten til et tekstsegment i dokumentet, og videre kombinert med tekstinnebygging for enhetsutvinning.

I denne artikkelen kaller de et dokument VRD, og ​​jeg holder fast ved det.

Hvert dokument er modellert som en graf over tekstsegmenter, der hvert tekstsegment består av posisjonen til segmentet og teksten i det. Grafen består av noder som representerer tekstsegmenter, og kanter som representerer visuelle avhengigheter, for eksempel relative former og avstand, mellom to noder.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Grafinnbunningene produsert ved grafkonvolusjon oppsummerer konteksten til et tekstsegment i dokumentet, som videre kombineres med tekstinnblandinger for enhetsutvinning ved hjelp av en standard BiLSTM-CRF-modell.

Modell

Modellen koder først hvert tekstsegment i dokumentet til grafinnbetting, ved å bruke flere lag med grafkonvolusjon. Innstøpingen representerer informasjonen i tekstsegmentet gitt sin visuelle og tekstlige kontekst. Visuell kontekst er utformingen av dokumentet og relative posisjoner for det enkelte segmentet til andre segmenter. Tekstkontekst er samlet tekstinformasjon i dokumentet generelt; Modellen lærer å tildele høyere vekter på tekster fra nabosegmenter. Deretter kombinerer papiret grafinnblandingene med tekstinnebygninger og bruker en standard BiLSTM-CRF-modell for enhetsutvinning.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

datasett

To virkelige datasett brukes. De er verdiavgiftsfakturaer (VATI) og internasjonale kjøpskvitteringer (IPR). VATI består av 3000 bilder som er lastet opp av brukeren og har 16 enheter å eksakte. Eksempel på enheter er navnene på kjøper / selger, dato og skattebeløp. Fakturaene er på kinesisk, og den har en fast mal siden det er nasjonal standardfaktura.

IPR er et datasett med 1500 skannede kvitteringsdokumenter på engelsk som har fire enheter å eksakte (fakturanummer, leverandørnavn, betalers navn og totalbeløp). Det finnes 4 maler for kvitteringene.

Resultater

F1-poengsum brukes til å evaluere prestasjonene til modellen i alt eksperiment. Tabellen nedenfor har resultatene på tre datasett.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Baseline I bruker BiLSTM-CRF på hvert tekstsegment, hvor hvert tekstsegment er en individuell setning.

Baseline II bruker merkemodellen til de sammenhengende tekstsegmentene.

Raskere-RCNN + AED

Deep Learning Approach for Reception Recognition

Denne artikkelen presenterer en dyp læringsmetode for å gjenkjenne skannede kvitteringer. Gjenkjenningssystemet har to hovedmoduler: tekstgjenkjenning basert på Connectionist Text Proposal Network og tekstgjenkjenning basert på Attention-based Encoder-Decoder. Systemet oppnådde 71.9% av F1-poengsummen for oppdagelses- og gjenkjennelsesoppgave.

Tekstregistrering

CTPN-strukturen ligner på Raskere R-CNN, med tillegg av LSTM-laget. Nettverksmodellen består hovedsakelig av tre deler: funksjonsutvinning av VGG16, toveis LSTM og regresjon av avgrensningsboksen

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Tekstgjenkjenning

AED brukes til å gjenkjenne tekstlinjer. AED har to hovedmoduler: DenseNet for å trekke ut funksjoner fra et tekstbilde og en LSTM kombinert med en oppmerksomhetsmodell for å forutsi utdata.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

datasett

Datasettet fra SROIE 2019 brukes. De delte opplæringsdataene i opplæring, validering og testing og valgte tilfeldig 80% av kvitteringene for trening, 10% av kvitteringene for validering, og resten for testing. Resultatet er 500 kvitteringer for opplæring, 63 kvitteringer for validering og 63 for testing.

Resultater

For tekstgjenkjenning bruker papiret Tightness-aware Intersection-over-Union (TIoU) For tekstgjenkjenning, brukte papiret F1, Precision og Recall.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Tabell I viser resultatet av CTPN med tre forhold: CTPN på originale bilder; forbehandling + CTPN, forbehandling + CTPN + OCR-verifisering. Tabell 2 viser resultatene av AED-nettverket.

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Det er selvfølgelig en enklere og mer intuitiv måte å gjøre dette på.


Trenger en robust kvittering OCR å trekke ut data fra kvitteringer? Sjekk ut Nanonetter kvittering OCR API!


OCR med Nanonets

Oppdatering #1: Vi har nettopp gitt ut vår kvittering OCR ferdigtrent modell. Gå over til https://app.nanonets.com og begynn å teste!

Automatisering av kvitterings digitalisering med OCR og Deep Learning

De Nanonets OCR API lar deg enkelt bygge OCR-modeller. Du trenger ikke å bekymre deg for å forhåndsbehandle bildene dine eller bekymre deg for å matche maler eller bygge regelbaserte motorer for å øke nøyaktigheten til OCR-modellen.

Du kan laste opp dataene dine, kommentere dem, stille inn modellen til å trene og vente på å få spådommer gjennom et nettleserbasert brukergrensesnitt uten å skrive en eneste kodelinje, bekymre deg for GPU-er eller finne de riktige arkitekturene for dine dype læringsmodeller. Du kan også anskaffe JSON-svarene fra hver prediksjon for å integrere den med dine egne systemer og bygge maskinlæringsapper som er bygd på topp moderne algoritmer og en sterk infrastruktur.

Bruke GUI: https://app.nanonets.com/

Du kan også bruke Nanonets-OCR API ved å følge trinnene nedenfor:

Trinn 1: Klone repoen, installer avhengigheter

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

Trinn 2: Få din gratis API-nøkkel
Få din gratis API-nøkkel fra http://app.nanonets.com/#/keys

Automatisering av kvitterings digitalisering med OCR og Deep Learning

Trinn 3: Sett API-nøkkelen som en miljøvariabel

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Trinn 4: Lag en ny modell

python ./code/create-model.py

OBS: Dette genererer en MODEL_ID som du trenger for neste trinn

Trinn 5: Legg til modell-id som miljøvariabel

export NANONETS_MODEL_ID=YOUR_MODEL_ID

OBS: får du YOUR_MODEL_ID fra forrige trinn

Trinn 6: Last opp treningsdataene
Treningsdataene finnes i images (bildefiler) og annotations (merknader for bildefilene)

python ./code/upload-training.py

Trinn 7: Togmodell
Når bildene er lastet opp, begynn å trene modellen

python ./code/train-model.py

Trinn 8: Få modelltilstand
Modellen tar ~ 2 timer å trene. Du vil få en e-post når modellen er opplært. I mellomtiden sjekker du modellens tilstand

python ./code/model-state.py

Trinn 9: Gjør prediksjon
Når modellen er trent. Du kan lage spådommer ved å bruke modellen

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

Videre Reading

Oppdatering:
‌ Lagt til mer lesestoff om siste fremskritt innen automatisering av kvitteringsdigitalisering ved hjelp av OCR og Deep Learning.

Tidstempel:

Mer fra AI og maskinlæring