Automatisera kvittodigitalisering med OCR och Deep Learning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Automatisera kvittens digitalisering med OCR och Deep Learning

Automatisera kvittens digitalisering med OCR och Deep Learning

Vill du automatisera datautvinning från kvitton? Kolla in Nanonets förutbildade Kvitto OCR or Bygg ditt eget anpassad kvitto OCR. Du kan också schema en demo för att lära dig mer om våra AP-användningsfall!


Kvitto OCR eller kvittodigitalisering löser utmaningen att automatiskt extrahera information från ett kvitto. I den här artikeln täcker jag teorin bakom kvittodigitalisering och implementerar en end-to-end pipeline med OpenCV och tesseract. Jag granskar också några viktiga papper som gör kvittodigitalisering med hjälp av Deep Learning.

Vad är kvittodigitalisering?

Kvitton innehåller den information som behövs för att handel ska kunna ske mellan företag och mycket av den är på papper eller i semistrukturerade format som PDF-filer och bilder av papper/papper. För att hantera denna information effektivt, extraherar och lagrar företag den relevanta informationen i dessa dokument. Traditionellt har detta uppnåtts genom att manuellt extrahera relevant information och mata in den i en databas, vilket är en arbetskrävande och dyr process.

Digitalisering av kvitton tar upp utmaningen att automatiskt extrahera information från ett kvitto.

Att extrahera nyckelinformation från kvitton och konvertera dem till strukturerade dokument kan tjäna många applikationer och tjänster, såsom effektiv arkivering, snabb indexering och dokumentanalys. De spelar en avgörande roll för att effektivisera dokumentintensiva processer och kontorsautomation inom många ekonomi-, redovisnings- och skatteområden.

Automatisera kvittens digitalisering med OCR och Deep Learning

Behöver en robust kvitto OCR or kvitto skanner att extrahera data från kvitton? Kolla in Nanonets kvitto OCR API!


Vem kommer att ha nytta av kvittodigitalisering?

Här är några områden där kvittodigitalisering kan få stor inverkan:

Leverantörs- och kundreskontraautomatisering

Att beräkna leverantörsreskontra (AP) och kundfordringar (AR) manuellt är kostsamt, tidskrävande och kan leda till förvirring mellan chefer, kunder och leverantörer. Med digitalisering kan företag eliminera dessa nackdelar och kan ha fler fördelar – Ökad transparens, dataanalys, förbättrat rörelsekapital och enklare spårning.

Optimering av leveranskedjan

Försörjningskedjor är ryggraden i många företags väl fungerande. Att hantera uppgifter, informationsflöden och produktflöden är nyckeln till att säkerställa fullständig kontroll över leverans och produktion. Detta är väsentligt om organisationer ska klara leveranstider och kontrollera produktionskostnaderna.

De företag som verkligen blomstrar nuförtiden har något viktigt gemensamt: en digitaliserad leveranskedja. 89% av företagen med digitala leveranskedjor får perfekta beställningar från internationella leverantörer, vilket säkerställer leverans i tid. En av nyckeldelarna för att förverkliga nästa generations digitala Supply Chain 4.0 är automatisering av datafångst och hantering och mycket av denna data är formen av kvitton och fakturor. Manuell inmatning av kvitton fungerar som en flaskhals över hela leveranskedjan och leder till onödiga förseningar. Om denna kvittohantering digitaliseras kan det leda till betydande vinster i tid och effektivitet.


Har du ett OCR-problem i åtanke? Vill digitalisera fakturor, PDF-filer eller nummerskyltar? Gå över till Nanonetter och bygg OCR-modeller gratis!


Varför är det ett svårt problem?

Digitalisering av kvitton är svårt eftersom kvitton har många variationer och ibland är av låg kvalitet. Skanning av kvitton introducerar också flera artefakter i vår digitala kopia. Dessa artefakter utgör många läsbarhetsutmaningar.

Automatisera kvittens digitalisering med OCR och Deep Learning

Här är en lista över några saker som gör det till ett svårt problem att knäcka

  • Handskriven text
  • Små typsnitt
  • Bullriga bilder
  • Blekna bilder
  • Kamerarörelser och skakning
  • Vattenmärken
  • rynkor
  • Blekt text

En traditionell pipeline för kvittodigitalisering

En typisk pipeline för denna typ av en end-to-end-metod innefattar:

  • förbehandling
  • Optical Character Recognition
  • Informationsutvinning
  • Datadump
Automatisera kvittens digitalisering med OCR och Deep Learning

Låt oss dyka djupare in i varje del av pipelinen. Det första steget i processen är förbehandling.

förbehandling

De flesta skannade kvitton är bullriga och har artefakter och för att OCR- och informationsextraktionssystemen ska fungera bra är det nödvändigt att förbearbeta kvittonen. Vanliga förbearbetningsmetoder inkluderar – gråskalning, tröskelvärde (binarisering) och brusborttagning.

Gråskala är helt enkelt att konvertera en RGB-bild till en gråskalebild.

Brusborttagning innebär vanligtvis att man tar bort salt- och pepparbrus eller gaussiskt brus.

De flesta OCR-motorer fungerar bra på svartvita bilder. Detta kan uppnås genom tröskelvärde, vilket är tilldelningen av pixelvärden i förhållande till det angivna tröskelvärdet. Varje pixelvärde jämförs med tröskelvärdet. Om pixelvärdet är mindre än tröskelvärdet sätts det till 0, annars sätts det till ett maximalt värde (vanligtvis 255).

OpenCV tillhandahåller olika tröskelalternativ – enkel tröskelvärde, adaptiv tröskelvärde

Automatisera kvittens digitalisering med OCR och Deep Learning

Optical Character Recognition

Nästa steg i pipelinen är OCR. Den används för att läsa text från bilder som ett skannat dokument eller en bild. Denna teknik används för att konvertera praktiskt taget alla typer av bilder som innehåller skriven text (skriven, handskriven eller tryckt) till maskinläsbar textdata. OCR innefattar två steg – textidentifiering och textigenkänning.

Automatisera kvittens digitalisering med OCR och Deep Learning

Det finns ett antal metoder för OCR. Den konventionella datorvisionsmetoden är att

  • Använda filter för att separera tecknen från bakgrunden
  • Använd konturdetektering för att känna igen de filtrerade tecknen
  • Använd mage-klassificering för att identifiera karaktärerna

Att använda filter och bildklassificering är ganska enkelt, (tänk MNIST-klassificering med SVN), men konturmatchning är ett mycket svårt problem och kräver mycket manuell ansträngning och är inte generaliserbar.

Därefter kommer Deep Learning-metoderna. Deep Learning generaliserar väldigt bra. En av de mest populära metoderna för textidentifiering är EAST. EAST (Efficient accurate scen text detector) är en enkel men kraftfull metod för textdetektering. EAST-nätverket är faktiskt en version av det välkända U-Net, som är bra för att upptäcka funktioner i olika storlekar.

Automatisera kvittens digitalisering med OCR och Deep Learning

CRNN och STN-OCR (Spatial Transformer Networks) är andra populära papper som utför OCR.

Informationsutvinning

Det vanligaste tillvägagångssättet på problemet med informationsextraktion är regelbaserat, där regler skrivs efter OCR för att extrahera den information som krävs. Detta är ett kraftfullt och korrekt tillvägagångssätt, men det kräver att du skriver nya regler eller mallar för en ny typ av dokument.

Flera regelbaserade faktura analyssystem finns i litteraturen.

  • Intellix från DocuWare kräver en mall som är kommenterad med relevanta fält.
  • SmartFix använder specifikt utformade konfigurationsregler för varje mall

De regelbaserade metoderna förlitar sig starkt på de fördefinierade mallreglerna för att extrahera information från specifika fakturalayouter

Ett tillvägagångssätt som har blivit mycket vanligt under de senaste åren är att använda ett standardramverk för objektdetektion som YOLO, Faster R-CNN för att känna igen fält. Så istället för ren textdetektering utförs fältigenkänning och textdetektering samtidigt. Detta gör pipelinen mindre (Textdetektering → Igenkänning → Extraktion till detektion → Igenkänning). Det finns inget behov av att skriva några regler eftersom objektdetektorn lär sig känna igen dessa fält.

Datadump

När du har extraherat din information kan datadumpningen göras som vårt användningsfall kräver. Ofta är ett JSON-format för att lagra fältinformation bekvämt. Dessa JSON-filer kan enkelt konverteras till XML-filer, Excel-ark, CSV-filer eller klartextfiler beroende på vem som vill arbeta med datan och hur.

Kvittodigitalisering med hjälp av tesseract

Nu när vi har en uppfattning om pipelinen, låt oss implementera den på ett exempelkvitto. Det här är kvittot vi kommer att arbeta med. Vårt mål i slutet av detta är att extrahera restaurangens namn, köpta föremål med deras kvantitet och kostnad, inköpsdatum och summan.

Automatisera kvittens digitalisering med OCR och Deep Learning

förbehandling

Eftersom vårt kvitto redan är i gråskala och det inte är mycket brus, kommer jag bara att göra tröskelvärden genom att tillämpa ett tröskelvärde på 210. Du kan justera värdet för att få rätt utdata. För mindre och du kommer att gå miste om mycket. För nära 255 kommer att göra allt svart.

Vi måste installera OpenCV först.

pip install opencv-python

Här är koden för tröskelvärde.

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å här ser utgången ut.

Automatisera kvittens digitalisering med OCR och Deep Learning

Textavkänning

För textidentifiering kommer jag att använda ett bibliotek med öppen källkod som heter tesseract. Det är det definitiva OCR-biblioteket och har utvecklats av Google sedan 2006. Den senaste versionen av Tesseract (v4) stöder djupinlärningsbaserad OCR som är betydligt mer exakt. Den underliggande OCR-motorn själv använder ett LSTM-nätverk (Long Short-Term Memory).

Låt oss först installera den senaste versionen av Tesseract.

För ubuntu

sudo apt install tesseract-ocr

För macOS

brew install tesseract --HEAD

För Windows kan du ladda ner binärfilerna från denna sida

Verifiera din tesseract-version.

tesseract -v

Utgång -

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

Installera dina Tesseract + Python-bindningar

Nu när vi har Tesseract-binären installerad behöver vi nu installera Tesseract + Python-bindningarna så att våra Python-skript kan kommunicera med Tesseract. Vi måste också installera det tyska språkpaketet eftersom kvittot är på tyska.

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

Nu när vi har installerat Tesseract, låt oss börja upptäcka textrutorna.tesseract har inbyggd funktionalitet för att upptäcka textrutor.

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

Här är utmatningen av textdetekteringskoden.

Automatisera kvittens digitalisering med OCR och Deep Learning

Textigenkänning

Vi kommer att Tesseract utföra OCR. Tesseract 4 använder en djupinlärningsmetod som presterar betydligt bättre än de flesta andra implementeringar med öppen källkod.

Här är koden för textigenkänning. Även om det är en väldigt enkel one-liner så finns det mycket som går under huven.

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

Här är den råa produktionen.

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

Här är den formaterade utgången

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

Behöver digitalisera dokument, kvitton eller fakturor men för lat för att koda? Gå över till Nanonetter och bygg OCR-modeller gratis!


Informationsutvinning

Som jag har nämnt tidigare är det vanligaste sättet att extrahera information genom ett regelbaserat tillvägagångssätt.

Alla kvitton från detta hotell kommer att följa en fast struktur och informationen visas på olika rader. Detta återspeglas i OCR-utgången där nya rader representeras av 'n'. Med hjälp av dessa låt oss skriva en uppsättning regler för att extrahera information. Denna uppsättning regler kan tillämpas på alla kvitton från detta hotell eftersom de kommer att följa samma format.

Automatisera kvittens digitalisering med OCR och Deep Learning

Jag kommer att extrahera restaurangens namn, transaktionsdatum, de köpta föremålen, deras kvantitet, totala kostnader per artikel och det totala beloppet med enkla pythonkommandon och reguljära uttryck.

Det här är en ordbok där jag kommer att lagra den extraherade informationen.

receipt _ocr = {}

Det första steget är att extrahera restaurangens namn. Placeringen av restaurangnamnet kommer att vara konstant i alla kvitton och det är i de två första raderna. Låt oss använda detta för att skapa en regel.

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

Därefter extraherar vi transaktionsdatumet. Datum regex är ganska okomplicerat.


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)

Utgång -

‘30.10.2007’

Därefter extraherar vi all information relaterad till föremålen och kostnaden.

Föremålen innehåller en CHF som är schweizisk franc. Låt oss upptäcka alla förekomster av CHF. Nu kan vi upptäcka linjer genom att känna igen tecknen mellan 2 n och som innehåller en CHF. Jag upptäcker summan här också.

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

Utgång -

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

Om du märker det, missade Tesseract ett föremål eftersom det upptäckte CH istället för CHF. Jag kommer att täcka utmaningar i traditionella OCR-system i nästa 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 vår JSON-utdata –

{'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 nyckelinformation har extraherats och dumpats i receipt_json..

Problem med det konventionella tillvägagångssättet

Även om vi extraherade informationen, missar ovanstående pipeline några saker och är suboptimal. För varje nytt kvitto behöver vi skriva en ny uppsättning regler och är därför inte skalbar.

Det kan finnas många variationer i layouter, teckensnitt och teckenstorlekar, handskrivna dokument etc. Skillnader i layouter kommer att påverka regelbaserade tillvägagångssätt och dessa måste tas hänsyn till, vilket blir mycket tråkigt. Skillnader i teckensnitt och teckenstorlek gör det svårt att känna igen och extrahera information.

Varför är en end-to-end Deep Learning pipeline bättre?

Ett av de största problemen med standardmetoden är bristen på generalisering. Regelbaserade tillvägagångssätt kan inte generaliseras och nya regler måste skrivas för alla nya mallar. Alla ändringar eller variationer i en befintlig mall måste också beaktas.

En Deep Learning-metod kommer att kunna lära sig dessa regler och kommer lätt att kunna generalisera över olika layouter, förutsatt att vi har dem i vår utbildningsdatauppsättning.

Djupt lärande och informationsextraktion

Här recenserar jag några artiklar som använder sig av end-to-end Deep Learning-metoder.

SÖTNOS

CUTIE: Lär dig att förstå dokument med Convolutional Universal Text Information Extractor

Detta dokument föreslår en inlärningsbaserad metod för utvinning av nyckelinformation med begränsat behov av mänskliga resurser. Den kombinerar informationen från både semantisk betydelse och rumslig fördelning av texter i dokument. Deras föreslagna modell, Convolutional Universal Text Information Extractor (CUTIE), tillämpar konvolutionella neurala nätverk på rutnätstexter där texter är inbäddade som funktioner med semantiska konnotationer.

Automatisera kvittens digitalisering med OCR och Deep Learning

Den föreslagna modellen, tar itu med problemet med utvinning av nyckelinformation genom

  • Skapa först rutnätstexter med det föreslagna rutnätspositionell kartläggningsmetod. För att generera rutnätsdata för det faltningsneurala nätverket, bearbetas den skannade dokumentbilden av en OCR-motor för att ta emot texterna och deras absoluta/relativa positioner. Texterna mappas från den ursprungliga skannade dokumentbilden till målrutnätet, så att det mappade rutnätet bevarar det ursprungliga rumsliga förhållandet mellan texter ännu mer lämpade att användas som indata för det faltningsneurala nätverket.
  • Sedan tillämpas CUTIE-modellen på de rutnätade texterna. Den rika semantiska informationen kodas från rutnätstexterna i början av det konvolutionella neurala nätverket med ett ordinbäddningslager.

CUTIE gör det möjligt att samtidigt titta på både semantisk information och rumslig information om texterna i den skannade dokumentbilden och kan nå ett nytt toppmodernt resultat för extraktion av nyckelinformation.

CUTIE modell

De har 2 modeller CUTIE-A och CUTIE-B. den föreslagna CUTIE-A är ett högkapacitets konvolutionerande neuralt nätverk som sammansmälter funktioner med flera upplösningar utan att förlora högupplösta funktioner. CUTIE-B är ett faltningsnätverk med atrous faltning för att förstora synfältet och Atrous Spatial Pyramid Pooling (ASPP)-modul för att fånga flerskaliga sammanhang. Både CUTIE-A och CUITE-B genomför semantisk betydelsekodningsprocess med ett ordinbäddningslager i början.

Uppgiften för CUTIE liknar semantisk segmenteringsuppgift. Det mappade rutnätet innehåller spridda datapunkter (texttokens) i motsats till bilderna spridda med pixlar. De rutnätspositionsmappade nyckeltexterna är antingen nära eller avlägsna från varandra på grund av olika typer av dokumentlayouter. Därför gynnar nätverket att integrera flerskalig kontextbearbetningsförmåga.

dataset

Den föreslagna metoden utvärderas på ICDAR 2019 robusta läsutmaning på SROIE-datauppsättning och är också på en självbyggd datauppsättning med 3 typer av skannade dokumentbilder.

Smakämnen ICDAR 2019 SROIE-datauppsättning används som innehåller 1000 hela skannade kvittobilder. Varje kvittobild innehåller cirka fyra viktiga textfält, såsom varunamn, enhetspris, datum och totalkostnad. Texten som kommenteras i datasetet består huvudsakligen av siffror och engelska tecken.

Den självbyggda datamängden innehåller 4 484 kommenterade skannade spanska kvittodokument, inklusive taxikvitton, måltidskvitton (ME) och hotellkvitton, med 9 olika nyckelinformationsklasser.

Resultat

Den övergripande prestandan utvärderas med hjälp av genomsnittlig precision (AP – och mätt i termer av noggrannhet per klass över de 9 klasserna.) och mjuk medelprecision (softAP) där förutsägelsen av en nyckelinformationsklass bestäms som korrekt om positiva marksanningar förutsägs korrekt även om några falska positiva resultat ingår i den slutliga förutsägelsen. gemensam analys av AP och softAP ger en bättre förståelse av modellens prestanda.

Resultaten kan du se i tabellen nedan.

Automatisera kvittens digitalisering med OCR och Deep Learning

GCN:er för VRD:er

Grafkonvolution för extraktion av multimodal information från visuellt rika dokument

Detta dokument introducerar en graffalsningsbaserad modell för att kombinera textuell och visuell information som presenteras i Visually Rich-dokument (VRDs). Grafinbäddningar tränas för att sammanfatta sammanhanget för ett textsegment i dokumentet, och kombineras vidare med textinbäddningar för entitetsextraktion.

I denna tidning kallar de ett dokument för en VRD och jag kommer att hålla fast vid det.

Varje dokument är modellerat som en graf av textsegment, där varje textsegment består av segmentets position och texten inom det. Grafen består av noder som representerar textsegment och kanter som representerar visuella beroenden, såsom relativa former och avstånd, mellan två noder.

Automatisera kvittens digitalisering med OCR och Deep Learning

Grafinbäddningarna som produceras av graffalsning sammanfattar sammanhanget för ett textsegment i dokumentet, som ytterligare kombineras med textinbäddningar för enhetsextraktion med hjälp av en standard BiLSTM-CRF-modell.

Modell

Modellen kodar först varje textsegment i dokumentet till grafinbäddning, med hjälp av flera lager av graffalsning. Inbäddningen representerar informationen i textsegmentet givet dess visuella och textuella sammanhang. Visuell kontext är layouten av dokumentet och relativa positioner för det enskilda segmentet till andra segment. Textsammanhang är den sammanlagda textinformationen i dokumentet. Modellen lär sig att lägga högre vikt på texter från grannsegment. Sedan kombinerar papperet grafinbäddningarna med textinbäddningar och tillämpar en standard BiLSTM-CRF-modell för entitetsextraktion.

Automatisera kvittens digitalisering med OCR och Deep Learning

dataset

Två datauppsättningar från verkliga världen används. De är mervärdesskattefakturor (VATI) och internationella inköpskvitton (IPR). VATI består av 3000 användaruppladdade bilder och har 16 enheter att exakt. Exempel på enheter är namn på köpare/säljare, datum och skattebelopp. Fakturorna är på kinesiska och den har en fast mall eftersom det är nationell standardfaktura.

IPR är en datamängd med 1500 skannade kvittodokument på engelska som har 4 enheter att exakta (fakturanummer, leverantörsnamn, betalarens namn och totalt belopp). Det finns 146 mallar för kvitton.

Resultat

F1-poäng används för att utvärdera modellens prestanda i alla experiment. Tabellen nedan har resultaten för thr 2 dataset.

Automatisera kvittens digitalisering med OCR och Deep Learning

Baslinje I tillämpar BiLSTM-CRF på varje textsegment, där varje textsegment är en individuell mening.

Baseline II tillämpar taggningsmodellen på de sammanlänkade textsegmenten.

Snabbare-RCNN + AED

Deep Learning Approach för kvittotigenkänning

Det här dokumentet presenterar en djupinlärningsmetod för att känna igen skannade kvitton. Igenkänningssystemet har två huvudmoduler: textdetektering baserad på Connectionist Text Proposal Network och textigenkänning baserad på Attention-baserad kodare-avkodare. Systemet uppnådde 71.9 % av F1-poängen för detektions- och igenkänningsuppgiften.

Textavkänning

CTPN-strukturen liknar Faster R-CNN, med tillägget av LSTM-skiktet. Nätverksmodellen består huvudsakligen av tre delar: funktionsextraktion av VGG16, dubbelriktad LSTM och bounding box regression

Automatisera kvittens digitalisering med OCR och Deep Learning

Textigenkänning

AED:n används för att känna igen textrader. AED:n har två huvudmoduler: DenseNet för att extrahera funktioner från en textbild och en LSTM i kombination med en uppmärksamhetsmodell för att förutsäga den utgående texten.

Automatisera kvittens digitalisering med OCR och Deep Learning

dataset

Datauppsättningen från SROIE 2019 används. De delade in träningsdata i träning, validering och testning och valde slumpmässigt ut 80 % av kvittonen för utbildning, 10 % av kvittonen för validering och resten för testning. Resulterar i 500 kvitton för utbildning, 63 kvitton för validering och 63 för testning.

Resultat

För textidentifiering använder papperet Tightness-aware Intersection-over-Union (TIoU) För textigenkänning använde papperet F1 , Precision och Recall.

Automatisera kvittens digitalisering med OCR och Deep Learning

Tabell I visar resultatet av CTPN med tre villkor: CTPN på originalbilder; förbearbetning + CTPN, förbearbetning + CTPN + OCR-verifiering. Tabell 2 visar resultaten av AED-nätverket.

Automatisera kvittens digitalisering med OCR och Deep Learning

Det finns naturligtvis ett enklare och mer intuitivt sätt att göra detta.


Behöver en robust kvitto OCR att extrahera data från kvitton? Kolla in Nanonets kvitto OCR API!


OCR med Nanonets

Uppdatering #1: Vi har precis släppt vår kvitto OCR förtränad modell. Gå över till https://app.nanonets.com och börja testa!

Automatisera kvittens digitalisering med OCR och Deep Learning

Smakämnen Nanonets OCR API gör att du enkelt kan bygga OCR-modeller. Du behöver inte oroa dig för förbehandlingen av dina bilder eller oroa dig för att matcha mallar eller bygga regelbaserade motorer för att öka noggrannheten för din OCR-modell.

Du kan ladda upp dina data, kommentera dem, ställa in modellen för att träna och vänta på att få förutsägelser via ett webbläsarbaserat användargränssnitt utan att skriva en enda kodrad, oroa dig för GPU eller hitta rätt arkitekturer för dina djupa inlärningsmodeller. Du kan också förvärva JSON-svar från varje förutsägelse för att integrera det med dina egna system och bygga maskininlärningsdrivna appar som är byggda på toppmoderns algoritmer och en stark infrastruktur.

Använda GUI: https://app.nanonets.com/

Du kan också använda Nanonets-OCR API genom att följa stegen nedan:

Steg 1: Klona repo, installera beroenden

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

Steg 2: Få din gratis API-nyckel
Hämta din gratis API-nyckel från http://app.nanonets.com/#/keys

Automatisera kvittens digitalisering med OCR och Deep Learning

Steg 3: Ställ in API-nyckeln som en miljövariabel

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Steg 4: Skapa en ny modell

python ./code/create-model.py

Notera: Detta genererar en MODEL_ID som du behöver för nästa steg

Steg 5: Lägg till modell-id som miljövariabel

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Notera: får du YOUR_MODEL_ID från föregående steg

Steg 6: Ladda upp träningsdata
Träningsdata finns i images (bildfiler) och annotations (kommentarer för bildfilerna)

python ./code/upload-training.py

Steg 7: Tågmodell
När bilderna har laddats upp börjar du utbilda modellen

python ./code/train-model.py

Steg 8: Hämta modelltillstånd
Modellen tar ~ 2 timmar att träna. Du får ett e-postmeddelande när modellen tränas. Under tiden kontrollerar du modellens status

python ./code/model-state.py

Steg 9: Gör förutsägelse
När modellen tränas. Du kan göra förutsägelser med hjälp av modellen

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

Ytterligare läsning

Uppdatering:
‌ Lade till mer läsmaterial om de senaste framstegen inom automatisering av kvittondigitalisering med OCR och Deep Learning.

Tidsstämpel:

Mer från AI och maskininlärning