Automatisering af kvitteringsdigitalisering med OCR og Deep Learning PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Vil du automatisere dataudtræk fra kvitteringer? Tjek Nanonets' fortrænede Kvittering OCR or bygg din egen tilpasset kvittering OCR. Du kan også planlæg en demo for at lære mere om vores AP use cases!


Kvittering OCR eller kvitteringsdigitalisering løser udfordringen med automatisk at udtrække information fra en kvittering. I denne artikel dækker jeg teorien bag kvitteringsdigitalisering og implementerer en end-to-end pipeline ved hjælp af OpenCV og Tesseract. Jeg gennemgår også et par vigtige papirer, der laver kvitteringsdigitalisering ved hjælp af Deep Learning.

Hvad er kvitteringsdigitalisering?

Kvitteringer indeholder de oplysninger, der er nødvendige for, at handel kan finde sted mellem virksomheder, og meget af det er på papir eller i semi-strukturerede formater såsom PDF'er og billeder af papir/papir-kopier. For at administrere disse oplysninger effektivt udtrækker og opbevarer virksomheder de relevante oplysninger i disse dokumenter. Traditionelt er dette opnået ved manuelt at udtrække den relevante information og indlæse den i en database, hvilket er en arbejdskrævende og dyr proces.

Kvitteringsdigitalisering løser udfordringen med automatisk at udtrække information fra en kvittering.

At udtrække nøgleoplysninger fra kvitteringer og konvertere dem til strukturerede dokumenter kan tjene mange applikationer og tjenester, såsom effektiv arkivering, hurtig indeksering og dokumentanalyse. De spiller en afgørende rolle i at strømline dokumenttunge processer og kontorautomatisering inden for mange finansielle, regnskabsmæssige og skattemæssige områder.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Har brug for en robust kvittering OCR or kvitteringsscanner at udtrække data fra kvitteringer? Tjek Nanonets kvittering OCR API!


Hvem vil finde Kvitteringsdigitalisering nyttig?

Her er et par områder, hvor kvitteringsdigitalisering kan få stor betydning:

Kreditor- og debitorautomatisering

At beregne kreditorer (AP) og debitorer (AR'er) manuelt er dyrt, tidskrævende og kan føre til forvirring mellem ledere, kunder og leverandører. Med digitalisering kan virksomheder eliminere disse ulemper og kan have flere fordele – Øget gennemsigtighed, dataanalyse, forbedret arbejdskapital og lettere sporing.

Supply chain optimering

Forsyningskæder er rygraden i mange virksomheders korrekte funktion. Håndtering af opgaver, informationsstrømme og produktstrømme er nøglen til at sikre fuldstændig kontrol over forsyning og produktion. Dette er afgørende, hvis organisationer skal overholde leveringstider og kontrollere produktionsomkostningerne.

De virksomheder, der virkelig trives i disse dage, har noget væsentligt til fælles: en digitaliseret forsyningskæde. 89% af virksomhederne med digitale forsyningskæder modtage perfekte ordrer fra internationale leverandører, hvilket sikrer rettidig levering. Et af nøgleelementerne i realiseringen af ​​næste generations digitale Supply Chain 4.0 er automatisering af datafangst og -styring, og mange af disse data er i form af kvitteringer og fakturaer. Manuel indtastning af kvitteringer fungerer som en flaskehals på tværs af forsyningskæden og fører til unødvendige forsinkelser. Hvis denne kvitteringsbehandling digitaliseres, kan det føre til betydelige gevinster i tid og effektivitet.


Har du et OCR-problem i tankerne? Vil gerne digitalisere fakturaer, PDF'er eller nummerplader? Gå over til Nanonetter og byg OCR-modeller gratis!


Hvorfor er det et svært problem?

Kvitteringsdigitalisering er vanskelig, da kvitteringer har mange variationer og nogle gange er af lav kvalitet. Scanning af kvitteringer introducerer også flere artefakter i vores digitale kopi. Disse artefakter udgør mange læsbarhedsudfordringer.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Her er en liste over nogle få ting, der gør det til et svært problem at knække

  • Håndskrevet tekst
  • Små skrifttyper
  • Støjende billeder
  • Falmede billeder
  • Kamerabevægelser og rystelser
  • Vandmærker
  • rynker
  • Faldet tekst

En traditionel kvitteringsdigitaliseringspipeline

En typisk pipeline for denne form for en end-to-end tilgang involverer:

  • forbehandling
  • Optical Character Recognition
  • Informationsudtrækning
  • Datadump
Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Lad os dykke dybere ned i hver del af rørledningen. Det første trin i processen er forbehandling.

forbehandling

De fleste scannede kvitteringer larmer og har artefakter, og for at OCR- og informationsudtrækssystemerne skal fungere godt, er det nødvendigt at forbehandle kvitteringerne. Almindelige forbehandlingsmetoder omfatter – gråskalering, tærskelværdi (binarisering) og støjfjernelse.

Gråskalering er simpelthen at konvertere et RGB-billede til et gråtonebillede.

Støjfjernelse involverer typisk fjernelse af salt- og peberstøj eller Gauss-støj.

De fleste OCR-motorer fungerer godt på sort-hvide billeder. Dette kan opnås ved tærskelværdi, som er tildelingen af ​​pixelværdier i forhold til den angivne tærskelværdi. Hver pixelværdi sammenlignes med tærskelværdien. Hvis pixelværdien er mindre end tærsklen, sættes den til 0, ellers sættes den til en maksimumværdi (generelt 255).

OpenCV giver forskellige tærskelindstillinger - Simpel tærskelværdi, adaptiv tærskelværdi

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Optical Character Recognition

Næste skridt i pipelinen er OCR. Det bruges til at læse tekst fra billeder såsom et scannet dokument eller et billede. Denne teknologi bruges til at konvertere stort set alle slags billeder, der indeholder skrevet tekst (indskrevet, håndskrevet eller trykt) til maskinlæsbare tekstdata. OCR involverer 2 trin - tekstgenkendelse og tekstgenkendelse.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Der er en række tilgange til OCR. Den konventionelle computer Vision tilgang er at

  • Brug af filtre til at adskille tegnene fra baggrunden
  • Anvend konturdetektion for at genkende de filtrerede tegn
  • Brug mage-klassificering til at identificere karaktererne

Anvendelse af filtre og billedklassificering er ret ligetil (tænk MNIST-klassificering ved hjælp af SVN), men konturtilpasning er et meget vanskeligt problem og kræver en masse manuel indsats og kan ikke generaliseres.

Dernæst kommer Deep Learning-tilgangene. Deep Learning generaliserer meget godt. En af de mest populære tilgange til tekstgenkendelse er EAST. EAST (Effektiv nøjagtig scenetekstdetektor) er en enkel, men kraftfuld tilgang til tekstgenkendelse. EAST-netværket er faktisk en version af det velkendte U-Net, som er godt til at opdage funktioner i forskellige størrelser.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

CRNN , STN-OCR (Spatial Transformer Networks) er andre populære papirer, der udfører OCR.

Informationsudtrækning

Den mest almindelige tilgang til problemet med informationsudtrækning er regelbaseret, hvor regler er skrevet efter OCR for at udtrække den nødvendige information. Dette er en kraftfuld og præcis tilgang, men den kræver, at du skriver nye regler eller skabeloner til en ny type dokument.

Flere regelbaserede faktura analysesystemer findes i litteraturen.

  • Intellix fra DocuWare kræver en skabelon kommenteret med relevante felter.
  • SmartFix anvender specifikt designede konfigurationsregler for hver skabelon

De regelbaserede metoder er stærkt afhængige af de foruddefinerede skabelonregler for at udtrække information fra specifikke fakturalayouts

En tilgang, der er blevet meget almindelig i de sidste par år, er at bruge en standard Object Detection-ramme som YOLO, Faster R-CNN til at genkende felter. Så i stedet for ren tekstgenkendelse udføres feltgenkendelse og tekstgenkendelse samtidigt. Dette gør pipelinen mindre (Tekstgenkendelse → Genkendelse → Ekstraktion til detektion → Genkendelse). Der er ingen grund til at skrive nogen regler, da objektdetektoren lærer at genkende disse felter.

Datadump

Når du har udtrukket dine oplysninger, kan datadumpet udføres som vores use case kræver det. Ofte er et JSON-format til at gemme feltinformationen praktisk. Disse JSON-filer kan let konverteres til XML-filer, Excel-ark, CSV-filer eller almindelige tekstfiler afhængigt af, hvem der ønsker at arbejde med dataene og hvordan.

Kvittering Digitalisering vha Tesseract

Nu hvor vi har en idé om pipeline, lad os implementere den på en eksempelkvittering. Det er den kvittering, vi arbejder med. Vores mål i slutningen af ​​dette er at udtrække restaurantnavnet, købte varer med deres mængde og pris, købsdato og totalen.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

forbehandling

Da vores kvittering allerede er i gråtoner, og der ikke er meget støj, vil jeg kun lave tærskelværdier ved at anvende en tærskelværdi på 210. Du kan justere værdien for at få det rigtige output. For mindre, og du vil gå glip af meget. For tæt på 255 vil gøre alt sort.

Vi skal først installere OpenCV.

pip install opencv-python

Her er koden til tærskelværdi.

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

Sådan ser udgangen ud.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Tekstgenkendelse

Til tekstgenkendelse vil jeg bruge et open source-bibliotek kaldet Tesseract. Det er det definitive OCR-bibliotek og er blevet udviklet af Google siden 2006. Den seneste udgave af Tesseract (v4) understøtter deep learning-baseret OCR, der er betydeligt mere nøjagtig. Selve den underliggende OCR-motor bruger et LSTM-netværk (Long Short-Term Memory).

Lad os først installere den nyeste version af Tesseract.

Til ubuntu

sudo apt install tesseract-ocr

Til macOS

brew install tesseract --HEAD

For Windows kan du downloade de binære filer fra denne side

Bekræft din tesseract-version.

tesseract -v

Output -

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 dine Tesseract + Python-bindinger

Nu hvor vi har Tesseract-binæren installeret, skal vi nu installere Tesseract + Python-bindingerne, så vores Python-scripts kan kommunikere med Tesseract. Vi skal også installere den tyske sprogpakke, da kvitteringen er på tysk.

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

Nu hvor vi har installeret Tesseract, lad os begynde at opdage tekstfelterne.Tesseract har indbygget funktionalitet til at registrere tekstbokse.

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 outputtet af tekstgenkendelseskoden.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Tekstgenkendelse

Vi vil Tesseract udføre OCR. Tesseract 4 bruger en dyb læringstilgang, der klarer sig markant bedre end de fleste andre open source-implementeringer.

Her er koden for tekstgenkendelse. Selvom det er en meget simpel one-liner, er der meget, der skal under motorhjelmen.

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

Her er det rå output.

'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 det formaterede output

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

Behov for at digitalisere dokumenter, kvitteringer el fakturaer men for doven til at kode? Gå over til Nanonetter og byg OCR-modeller gratis!


Informationsudtrækning

Som jeg har nævnt før, er den mest almindelige måde at udtrække information på ved en regelbaseret tilgang.

Alle kvitteringer fra dette hotel vil følge en fast struktur, og oplysningerne vises på forskellige linjer. Dette afspejles i OCR-output, hvor nye linjer er repræsenteret ved 'n'. Lad os ved hjælp af disse skrive et sæt regler for at udtrække information. Dette sæt regler kan anvendes på enhver kvittering fra dette hotel, da de følger samme format.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Jeg vil udtrække restaurantnavnet, transaktionsdatoen, de købte varer, deres mængde, samlede omkostninger pr. vare og det samlede beløb ved hjælp af simple python-kommandoer og regulære udtryk.

Dette er en ordbog, hvor jeg vil gemme den udtrukne information.

receipt _ocr = {}

Det første trin er at udtrække restaurantnavnet. Placeringen af ​​restaurantnavnet vil være konstant i alle kvitteringer, og det er i de første 2 linjer. Lad os bruge dette til at oprette en regel.

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

Dernæst udtrækker vi transaktionsdatoen. Dato regex er ret ligetil.


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)

Output -

‘30.10.2007’

Dernæst udtrækker vi alle oplysninger relateret til varerne og omkostningerne.

Varerne indeholder en CHF, som er den schweiziske franc. Lad os opdage alle forekomster af CHF. Nu kan vi detektere linjer ved at genkende tegnene mellem 2 n og indeholdende en CHF. Jeg registrerer også totalen her.

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

Output -

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 bemærker, gik Tesseract glip af én genstand, fordi den opdagede CH i stedet for CHF. Jeg vil dække udfordringer i traditionelle OCR-systemer i næste afsnit.

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

Udskrivning af vores JSON-output –

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

Alle nøgleoplysninger er blevet udtrukket og dumpet ind i receipt_json..

Problemer med den konventionelle tilgang

Selvom vi har udtrukket oplysningerne, går ovenstående pipeline glip af et par ting og er suboptimal. For hver ny kvittering skal vi skrive et nyt sæt regler og er derfor ikke skalerbar.

Der kan være mange variationer i layout, skrifttype og skriftstørrelser, håndskrevne dokumenter osv. Forskelle i layout vil påvirke regelbaserede tilgange, og der skal tages højde for disse, hvilket bliver meget kedeligt. Forskelle i skrifttype og skriftstørrelser gør det svært at genkende og udtrække information.

Hvorfor er en end-to-end Deep Learning-pipeline bedre?

Et af de største problemer med standardtilgangen er manglen på generalisering. Regelbaserede tilgange kan ikke generaliseres, og der skal skrives nye regler for enhver ny skabelon. Der skal også tages højde for eventuelle ændringer eller variationer i en eksisterende skabelon.

En Deep Learning-tilgang vil være i stand til at lære disse regler og vil let kunne generalisere på tværs af forskellige layouts, forudsat at vi har dem i vores træningsdatasæt.

Dyb læring og informationsudvinding

Her gennemgår jeg et par artikler, der bruger end-to-end Deep Learning-tilgange.

SØTTE

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

Dette papir foreslår en læringsbaseret metode til udvinding af nøgleinformation med begrænset behov for menneskelige ressourcer. Den kombinerer informationen fra både semantisk betydning og rumlig fordeling af tekster i dokumenter. Deres foreslåede model, Convolutional Universal Text Information Extractor (CUTIE), anvender foldede neurale netværk på gittertekster, hvor tekster er indlejret som funktioner med semantiske konnotationer.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Den foreslåede model, tackler nøgleinformationsudtrækningsproblemet ved

  • Først oprettes gittertekster med det foreslåede grid positional mapping metode. For at generere gitterdataene til det foldede neurale netværk behandles det scannede dokumentbillede af en OCR-motor for at indhente teksterne og deres absolutte/relative positioner. Teksterne kortlægges fra det originale scannede dokumentbillede til målgitteret, således at det kortlagte gitter bevarer det oprindelige rumlige forhold mellem tekster, som er endnu mere egnet til at blive brugt som input for det foldede neurale netværk.
  • Derefter anvendes CUTIE-modellen på de griddede tekster. Den rige semantiske information er kodet fra de gittertekster helt i begyndelsen af ​​det konvolutionelle neurale netværk med et ordindlejringslag.

CUTIE giver mulighed for samtidig at se på både semantisk information og rumlig information af teksterne i det scannede dokumentbillede og kan nå et nyt topmoderne resultat til udtræk af nøgleinformation.

CUTIE model

De har 2 modeller CUTIE-A og CUTIE-B. den foreslåede CUTIE-A er et højkapacitets konvolutionerende neuralt netværk, der fusionerer funktioner med flere opløsninger uden at miste funktioner i høj opløsning. CUTIE-B er et foldningsnetværk med atrous foldning til udvidelse af synsfeltet og Atrous Spatial Pyramid Pooling (ASPP) modul til at fange multi-skala sammenhænge. Både CUTIE-A og CUITE-B udfører semantisk betydningskodningsproces med et ordindlejringslag helt i begyndelsen.

CUTIE's opgave minder om semantisk segmenteringsopgave. Det kortlagte gitter indeholder spredte datapunkter (teksttokens) i modsætning til billederne spredt med pixels. De gitterpositionskortlagte nøgletekster er enten tæt på eller fjernt fra hinanden på grund af forskellige typer dokumentlayouts. Derfor er inkorporering af multi-skala kontekstbehandlingsevne til gavn for netværket.

datasæt

Den foreslåede metode er evalueret på ICDAR 2019 robust læseudfordring på SROIE-datasæt og er også på et selvbygget datasæt med 3 typer scannede dokumentbilleder.

ICDAR 2019 SROIE datasæt bruges som indeholder 1000 hele scannede kvitteringsbilleder. Hvert kvitteringsbillede indeholder omkring fire vigtige tekstfelter, såsom varenavn, enhedspris, dato og samlede omkostninger. Teksten annoteret i datasættet består hovedsageligt af cifre og engelske tegn.

Det selvbyggede datasæt indeholder 4 kommenterede scannede spanske kvitteringsdokumenter, inklusive taxa-kvitteringer, måltidsunderholdning (ME)-kvitteringer og hotelkvitteringer med 484 forskellige nøgleinformationsklasser.

Resultater

Den overordnede præstation evalueres ved hjælp af gennemsnitlig præcision (AP – og målt i forhold til pr-klasse nøjagtighed på tværs af de 9 klasser,.) og blød gennemsnitlig præcision (softAP), hvor forudsigelsen af ​​en nøgleinformationsklasse bestemmes som korrekt, hvis positive grundsandheder er korrekt forudsagt, selvom nogle falske positive er inkluderet i den endelige forudsigelse. fælles analyse af AP og softAP giver en bedre forståelse af modellens ydeevne.

Du kan se resultaterne i tabellen nedenfor.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

GCN'er for VRD'er

Graph Convolution til multimodal informationsudtrækning fra visuelt rige dokumenter

Dette papir introducerer en graffoldningsbaseret model til at kombinere tekst- og visuel information præsenteret i Visually Rich-dokumenter (VRD'er). Grafindlejringer trænes til at opsummere konteksten af ​​et tekstsegment i dokumentet og kombineres yderligere med tekstindlejringer til entitetsudtrækning.

I dette papir kalder de et dokument for en VRD, og ​​jeg bliver ved med det.

Hvert dokument er modelleret som en graf af tekstsegmenter, hvor hvert tekstsegment består af segmentets position og teksten i det. Grafen består af noder, der repræsenterer tekstsegmenter, og kanter, der repræsenterer visuelle afhængigheder, såsom relative former og afstand, mellem to noder.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Grafindlejringerne produceret af graffoldning opsummerer konteksten af ​​et tekstsegment i dokumentet, som yderligere kombineres med tekstindlejringer til entitetsudtrækning ved hjælp af en standard BiLSTM-CRF-model.

Model

Modellen koder først hvert tekstsegment i dokumentet til grafindlejring ved hjælp af flere lag af graffoldning. Indlejringen repræsenterer informationen i tekstsegmentet givet dets visuelle og tekstmæssige kontekst. Visuel kontekst er layoutet af dokumentet og relative positioner af det enkelte segment i forhold til andre segmenter. Tekstkontekst er den samlede tekstinformation i dokumentet. Modellen lærer at vægte tekster fra nabosegmenter højere. Derefter kombinerer papiret grafindlejringerne med tekstindlejringer og anvender en standard BiLSTM-CRF-model til entitetsekstraktion.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

datasæt

Der bruges to datasæt fra den virkelige verden. De er momsfakturaer (VATI) og internationale købskvitteringer (IPR). VATI består af 3000 brugeruploadede billeder og har 16 enheder, der skal præciseres. Eksempler på enheder er navnene på køber/sælger, dato og afgiftsbeløb. Fakturaerne er på kinesisk, og den har en fast skabelon, da det er national standardfaktura.

IPR er et datasæt med 1500 scannede kvitteringsdokumenter på engelsk, som har 4 enheder, der skal præciseres (fakturanummer, leverandørnavn, betalernavn og totalbeløb). Der findes 146 skabeloner til kvitteringerne.

Resultater

F1-score bruges til at evaluere modellens ydeevne i alle eksperimenter. Tabellen nedenfor har resultaterne på thr 2 datasæt.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Baseline I anvender BiLSTM-CRF på hvert tekstsegment, hvor hvert tekstsegment er en individuel sætning.

Baseline II anvender tagging-modellen på de sammenkædede tekstsegmenter.

Hurtigere-RCNN + AED

Deep Learning-tilgang til kvitteringsanerkendelse

Dette papir præsenterer en dyb læringstilgang til genkendelse af scannede kvitteringer. Genkendelsessystemet har to hovedmoduler: tekstgenkendelse baseret på Connectionist Text Proposal Network og tekstgenkendelse baseret på Attention-baseret Encoder-Decoder. Systemet opnåede 71.9 % af F1-score for detektions- og genkendelsesopgave.

Tekstgenkendelse

CTPN-strukturen ligner Faster R-CNN, med tilføjelsen af ​​LSTM-laget. Netværksmodellen består hovedsageligt af tre dele: feature-ekstraktion af VGG16, tovejs LSTM og bounding box-regression

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Tekstgenkendelse

AED'en bruges til at genkende tekstlinjer. AED'en har to hovedmoduler: DenseNet til at udtrække funktioner fra et tekstbillede og en LSTM kombineret med en opmærksomhedsmodel til at forudsige outputteksten.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

datasæt

Datasættet fra SROIE 2019 er brugt. De opdelte træningsdataene i træning, validering og test og udvalgte tilfældigt 80 % af kvitteringerne til træning, 10 % af kvitteringerne til validering og resten til test. Resulterer i 500 kvitteringer for træning, 63 kvitteringer for validering og 63 for test.

Resultater

Til tekstgenkendelse bruger papiret Tightness-aware Intersection-over-Union (TIoU) Til tekstgenkendelse brugte papiret F1 , Precision og Recall.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Tabel I viser resultatet af CTPN med tre betingelser: CTPN på originalbilleder; forbehandling + CTPN, forbehandling + CTPN + OCR-verifikation. Tabel 2 viser resultaterne af AED-netværket.

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Der er selvfølgelig en nemmere og mere intuitiv måde at gøre dette på.


Har brug for en robust kvittering OCR at udtrække data fra kvitteringer? Tjek Nanonets kvittering OCR API!


OCR med nanonetter

Opdatering #1: Vi har netop udgivet vores kvittering OCR præ-trænet model. Gå over til https://app.nanonets.com og begynd at teste!

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Nanonets OCR API giver dig mulighed for nemt at bygge OCR-modeller. Du behøver ikke bekymre dig om at forbehandle dine billeder eller bekymre dig om matchende skabeloner eller bygge regelbaserede motorer for at øge nøjagtigheden af ​​din OCR-model.

Du kan uploade dine data, annotere dem, indstille modellen til at træne og vente på at få forudsigelser gennem en browserbaseret brugergrænseflade uden at skrive en enkelt linje kode, bekymre dig om GPU'er eller finde de rigtige arkitekturer til dine deep learning-modeller. Du kan også tilegne dig JSON-svarene for hver forudsigelse for at integrere den med dine egne systemer og bygge maskinlæringsdrevne apps, der er bygget på avancerede algoritmer og en stærk infrastruktur.

Brug af GUI: https://app.nanonets.com/

Du kan også bruge Nanonets-OCR API ved at følge nedenstående trin:

Trin 1: Klon Repo, Installer afhængigheder

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

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

Automatisering af kvitteringsdigitalisering med OCR og Deep Learning

Trin 3: Indstil API-nøglen som en miljøvariabel

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Trin 4: Opret en ny model

python ./code/create-model.py

Bemærk: Dette genererer et MODEL_ID, som du skal bruge til det næste trin

Trin 5: Tilføj model-id som miljøvariabel

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Bemærk: du får YOUR_MODEL_ID fra det forrige trin

Trin 6: Upload træningsdataene
Træningsdata findes i images (billedfiler) og annotations (kommentarer til billedfilerne)

python ./code/upload-training.py

Trin 7: Togmodel
Når billederne er blevet uploadet, skal du begynde at træne modellen

python ./code/train-model.py

Trin 8: Få modeltilstand
Modellen tager ~2 timer at træne. Du får en e-mail, når modellen er uddannet. I mellemtiden tjekker du modellens tilstand

python ./code/model-state.py

Trin 9: Lav forudsigelse
Når modellen er trænet. Du kan lave forudsigelser ved hjælp af modellen

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

Yderligere læsning

Update:
‌ Tilføjet mere læsemateriale om de seneste fremskridt inden for automatisering af kvitteringsdigitalisering ved hjælp af OCR og Deep Learning.

Tidsstempel:

Mere fra AI og maskinindlæring