Digitalisering van ontvangsten automatiseren met OCR en Deep Learning PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Wilt u gegevensextractie uit bonnen automatiseren? Bekijk Nanonets' vooraf getrainde Ontvangst-OCR or bouw je eigen aangepaste ontvangst OCR. Je kan ook een demo plannen om meer te weten te komen over onze AP-gebruikscasussen!


Ontvangst-OCR of ontvangstdigitalisering pakt de uitdaging aan van het automatisch extraheren van informatie uit een ontvangstbewijs. In dit artikel behandel ik de theorie achter de digitalisering van bonnen en implementeer ik een end-to-end pijplijn met behulp van OpenCV en Tesseract. Ik bespreek ook een paar belangrijke papers die ontvangstdigitalisering doen met behulp van Deep Learning.

Wat is digitalisering van bonnen?

Ontvangsten bevatten de informatie die nodig is om handel tussen bedrijven te laten plaatsvinden en veel ervan is op papier of in semi-gestructureerde formaten zoals pdf's en afbeeldingen van papier / hardcopy. Om deze informatie effectief te beheren, halen bedrijven de relevante informatie in deze documenten op en slaan ze op. Traditioneel is dit bereikt door de relevante informatie handmatig te extraheren en in een database in te voeren, wat een arbeidsintensief en duur proces is.

Digitalisering van bonnen is een oplossing voor de uitdaging om automatisch informatie uit een bonnetje te halen.

Het extraheren van belangrijke informatie uit ontvangstbewijzen en deze omzetten in gestructureerde documenten kan vele toepassingen en diensten dienen, zoals efficiënte archivering, snelle indexering en documentanalyse. Ze spelen een cruciale rol bij het stroomlijnen van documentintensieve processen en kantoorautomatisering op veel financiële, boekhoudkundige en fiscale gebieden.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Een robuuste nodig? ontvangstbewijs OCR or bon scanner gegevens uit bonnen halen? Bekijk Nanonetten ontvangst OCR API!


Voor wie is Digitalisering van bonnen nuttig?

Hier zijn een paar gebieden waar Digitalisering van bonnen een enorme impact kan hebben:

Automatisering van crediteuren en debiteuren

Computing Accounts payable (AP) en Accounts Receivables (ARs) handmatig is kostbaar, tijdrovend en kan leiden tot verwarring tussen managers, klanten en leveranciers. Met digitalisering kunnen bedrijven deze nadelen elimineren en meer voordelen hebben: meer transparantie, data-analyse, verbeterd werkkapitaal en gemakkelijker volgen.

Optimalisatie van de supply chain

Supply chains vormen de ruggengraat van de goede werking van menig bedrijf. Het beheren van taken, informatiestromen en productstromen is de sleutel tot volledige controle over levering en productie. Dit is essentieel als organisaties de levertijden willen halen en de productiekosten willen beheersen.

De bedrijven die tegenwoordig echt floreren, hebben iets belangrijks gemeen: een gedigitaliseerde supply chain. 89% van bedrijven met digitale toeleveringsketens ontvangt u perfecte bestellingen van internationale leveranciers, waardoor een tijdige levering wordt gegarandeerd. Een van de belangrijkste elementen om de volgende generatie digitale Supply Chain 4.0 te realiseren, is het automatiseren van het vastleggen en beheren van gegevens. Veel van deze gegevens zijn de vorm van ontvangsten en facturen. Handmatige invoer van bonnen vormt een knelpunt in de supply chain en leidt tot onnodige vertragingen. Als deze bonverwerking wordt gedigitaliseerd, kan dit leiden tot aanzienlijke winst in tijd en efficiëntie.


Heeft u een OCR-probleem in gedachten? Wil je digitaliseren facturen, pdf's of kentekenplaten? Ga naar Nanonetten en bouw gratis OCR-modellen!


Waarom is het een moeilijk probleem?

Het digitaliseren van bonnen is moeilijk omdat bonnen veel verschillen en soms van lage kwaliteit zijn. Het scannen van bonnen introduceert ook verschillende artefacten in onze digitale kopie. Deze artefacten brengen veel leesbaarheidsproblemen met zich mee.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Hier is een lijst met een paar dingen die het moeilijk maken om te kraken

  • Handgeschreven tekst
  • Kleine lettertypen
  • Lawaaierige beelden
  • Vervaagde afbeeldingen
  • Camerabeweging en schudden
  • Watermerken
  • rimpels
  • Vervaagde tekst

Een traditionele pijplijn voor de digitalisering van ontvangsten

Een typische pijplijn voor dit soort end-to-end-aanpak omvat:

  • Voorverwerking
  • Optical Character Recognition
  • Informatie-extractie
  • Gegevensdump
Automatisering van digitalisering van bonnen met OCR en Deep Learning

Laten we dieper in elk deel van de pijplijn duiken. De eerste stap van het proces is voorverwerking.

Voorverwerking

De meeste gescande bonnen zijn lawaaierig en hebben artefacten. Om de OCR- en informatie-extractiesystemen goed te laten werken, is het noodzakelijk de bonnen voor te verwerken. Veelvoorkomende voorbewerkingsmethoden zijn - Grijstinten, Drempelwaarden (Binarisatie) en Ruisverwijdering.

Grijstinten is simpelweg het converteren van een RGB-afbeelding naar een grijswaardenafbeelding.

Ruisverwijdering omvat doorgaans het verwijderen van zout- en pepergeluid of Gaussiaans geluid.

De meeste OCR-engines werken goed op zwart-witafbeeldingen. Dit kan worden bereikt door drempelwaarden, het toekennen van pixelwaarden in relatie tot de opgegeven drempelwaarde. Elke pixelwaarde wordt vergeleken met de drempelwaarde. Als de pixelwaarde kleiner is dan de drempel, wordt deze ingesteld op 0, anders wordt deze ingesteld op een maximale waarde (doorgaans 255).

OpenCV biedt verschillende drempelopties - eenvoudige drempelwaarde, adaptieve drempelwaarde

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Optical Character Recognition

De volgende stap in de pijplijn is OCR. Het wordt gebruikt om tekst te lezen van afbeeldingen zoals een gescand document of een afbeelding. Deze technologie wordt gebruikt om vrijwel alle soorten afbeeldingen met geschreven tekst (getypt, met de hand geschreven of afgedrukt) om te zetten in machineleesbare tekstgegevens. OCR omvat 2 stappen: tekstdetectie en tekstherkenning.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Er zijn een aantal benaderingen van OCR. De conventionele benadering van Computer Vision is

  • Filters gebruiken om de karakters van de achtergrond te scheiden
  • Pas contourdetectie toe om de gefilterde tekens te herkennen
  • Gebruik mage-classificatie om de karakters te identificeren

Het toepassen van filters en beeldclassificatie is vrij eenvoudig (denk aan MNIST-classificatie met SVN), maar contouraanpassing is een zeer moeilijk probleem en vereist veel handmatige inspanning en is niet generaliseerbaar.

Vervolgens komen de Deep Learning-benaderingen. Deep Learning genereert heel goed. Een van de meest populaire benaderingen voor tekstdetectie is EAST. EAST (Efficient accurate scene text detector) is een eenvoudige maar krachtige benadering voor tekstdetectie. Het EAST-netwerk is eigenlijk een versie van het bekende U-Net, dat goed is voor het detecteren van features van verschillende groottes.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

CRNN en STN-OCR (Spatial Transformer Networks) zijn andere populaire artikelen die OCR uitvoeren.

Informatie-extractie

De meest gebruikelijke benadering van het probleem van informatie-extractie is op regels gebaseerd, waarbij regels na OCR worden geschreven om de vereiste informatie te extraheren. Dit is een krachtige en nauwkeurige aanpak, maar u moet wel nieuwe regels of sjablonen schrijven voor een nieuw type document.

Verschillende op regels gebaseerde factuur analysesystemen bestaan ​​in de literatuur.

De op regels gebaseerde methoden zijn sterk afhankelijk van de vooraf gedefinieerde sjabloonregels om informatie uit specifieke factuurlay-outs te halen

Een benadering die de afgelopen jaren heel gebruikelijk is geworden, is het gebruik van een standaard objectdetectieframework zoals YOLO, Faster R-CNN om velden te herkennen. Dus in plaats van pure tekstdetectie worden veldherkenning en tekstdetectie gelijktijdig uitgevoerd. Dit maakt de pijplijn kleiner (Tekstdetectie → Herkenning → Extractie naar detectie → Herkenning). Het is niet nodig om regels te schrijven, aangezien de objectdetectoren deze velden leren herkennen.

Gegevensdump

Zodra u uw informatie hebt geëxtraheerd, kan de gegevensdump worden uitgevoerd zoals onze use-case vereist. Vaak is een JSON-indeling om de velden op te slaan handig. Deze JSON-bestanden kunnen gemakkelijk worden omgezet in XML-bestanden, Excel-bladen, CSV-bestanden of platte-tekstbestanden, afhankelijk van wie met de gegevens wil werken en hoe.

Ontvangstdigitalisering met behulp van Tesseract

Nu we een idee hebben van de pijplijn, laten we deze implementeren op een voorbeeldbon. Dit is de bon waarmee we gaan werken. Ons doel aan het einde hiervan is om de restaurantnaam, gekochte items met hun hoeveelheid en kosten, de aankoopdatum en het totaal te extraheren.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Voorverwerking

Omdat onze bon al in grijswaarden is en er niet veel ruis is, ga ik alleen drempelen door een drempel van 210 toe te passen. Je kunt de waarde aanpassen om de juiste output te krijgen. Te weinig en u zult veel missen. Te dicht bij 255 wordt alles zwart.

We moeten eerst OpenCV installeren.

pip install opencv-python

Hier is de code voor drempelwaarden.

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

Zo ziet de output eruit.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Tekstdetectie

Voor tekstdetectie gebruik ik een open-source bibliotheek genaamd Tesseract. Het is de definitieve OCR-bibliotheek en is sinds 2006 door Google ontwikkeld. De nieuwste versie van Tesseract (v4) ondersteunt op diep leren gebaseerde OCR die aanzienlijk nauwkeuriger is. De onderliggende OCR-engine zelf maakt gebruik van een Long Short-Term Memory (LSTM) -netwerk.

Laten we eerst de nieuwste versie van Tesseract installeren.

Voor ubuntu

sudo apt install tesseract-ocr

Voor macOS

brew install tesseract --HEAD

Voor Windows kunt u hier de binaire bestanden downloaden pagina

Controleer uw tesseract-versie.

tesseract -v

Uitgang -

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

Installeer uw Tesseract + Python-bindingen

Nu we het binaire Tesseract hebben geïnstalleerd, moeten we nu de Tesseract + Python-bindingen installeren, zodat onze Python-scripts kunnen communiceren met Tesseract. We moeten ook het Duitse taalpakket installeren, aangezien de bon in het Duits is.

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

Nu we Tesseract hebben geïnstalleerd, gaan we beginnen met het detecteren van de tekstvakken.Tesseract heeft ingebouwde functionaliteit om tekstvakken te detecteren.

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

Hier is de uitvoer van de tekstdetectiecode.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Tekstherkenning

We zullen Tesseract uitvoeren om OCR uit te voeren. Tesseract 4 gebruikt een diepgaande leerbenadering die aanzienlijk beter presteert dan de meeste andere open-source implementaties.

Hier is de code voor tekstherkenning. Hoewel het een zeer eenvoudige oneliner is, gaat er veel onder de motorkap.

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

Hier is de onbewerkte 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'

Hier is de opgemaakte 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

Noodzaak om documenten, bonnen of . te digitaliseren facturen maar te lui om te coderen? Ga naar Nanonetten en bouw gratis OCR-modellen!


Informatie-extractie

Zoals ik al eerder zei, is de meest gebruikelijke manier om informatie te extraheren via een op regels gebaseerde benadering.

Alle bonnen van dit hotel volgen een vaste structuur en de informatie wordt op verschillende regels weergegeven. Dit wordt weerspiegeld in de OCR-uitvoer waar nieuwe regels worden weergegeven door 'n'. Laten we met behulp van deze regels een reeks regels schrijven om informatie te extraheren. Deze set regels kan worden toegepast op elk ontvangstbewijs van dit hotel, omdat ze hetzelfde formaat volgen.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Ik zal de naam van het restaurant, de transactiedatum, de gekochte items, hun hoeveelheid, de totale kosten per item en het totale bedrag extraheren met behulp van eenvoudige python-opdrachten en reguliere expressies.

Dit is een woordenboek waar ik de geëxtraheerde informatie zal opslaan.

receipt _ocr = {}

De eerste stap is het extraheren van de restaurantnaam. De locatie van de restaurantnaam zal constant zijn in alle bonnen en dat is in de eerste 2 regels. Laten we dit gebruiken om een ​​regel te maken.

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

Vervolgens extraheren we de transactiedatum. Date regex is vrij eenvoudig.


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)

Uitgang -

‘30.10.2007’

Vervolgens extraheren we alle informatie met betrekking tot de artikelen en de kosten.

De items bevatten een CHF, de Zwitserse frank. Laten we alle gevallen van CHF opsporen. Nu kunnen we lijnen detecteren door de tekens tussen 2 n en een CHF te herkennen. Ik bespeur hier ook het totaal.

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

Uitgang -

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

Als je merkt, heeft Tesseract één item gemist omdat het CH detecteerde in plaats van CHF. In de volgende sectie ga ik in op de uitdagingen in traditionele OCR-systemen.

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

Onze JSON-uitvoer afdrukken -

{'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 belangrijke informatie is geëxtraheerd en in dump_json gedumpt.

Problemen met de conventionele aanpak

Hoewel we de informatie hebben opgehaald, mist de bovenstaande pijplijn een paar dingen en is deze niet optimaal. Voor elke nieuwe bon moeten we een nieuwe set regels schrijven en is dus niet schaalbaar.

Er kunnen veel variaties zijn in lay-outs, lettertypen en lettergroottes, handgeschreven documenten enz. Verschillen in lay-outs zullen van invloed zijn op regelgebaseerde benaderingen en daar moet rekening mee worden gehouden, wat erg vervelend wordt. Verschillen in lettertype en lettergrootte maken het moeilijk om informatie te herkennen en te extraheren.

Waarom is een end-to-end Deep Learning-pijplijn beter?

Een van de grootste problemen met de standaardaanpak is het gebrek aan generalisatie. Regelgebaseerde benaderingen kunnen niet generaliseren en er moeten nieuwe regels worden geschreven voor een nieuwe sjabloon. Ook eventuele wijzigingen of variaties in een bestaande sjabloon moeten worden verantwoord.

Een Deep Learning-benadering zal deze regels kunnen leren en zal gemakkelijk verschillende lay-outs kunnen generaliseren, op voorwaarde dat we ze in onze trainingsdataset hebben.

Diep leren en extraheren van informatie

Hier bekijk ik een paar artikelen die end-to-end Deep Learning-benaderingen gebruiken.

SCHATTIG

CUTIE: documenten leren begrijpen met Convolutional Universal Text Information Extractor

Dit document stelt voor een op leren gebaseerde methode voor het extraheren van belangrijke informatie met een beperkte behoefte aan personele middelen. Het combineert de informatie uit zowel de semantische betekenis als de ruimtelijke verspreiding van teksten in documenten. Hun voorgestelde model, Convolutional Universal Text Information Extractor (CUTIE), past convolutionele neurale netwerken toe op gerasterde teksten waarin teksten zijn ingebed als kenmerken met semantische connotaties.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Het voorgestelde model, pakt het probleem van de extractie van belangrijke informatie aan door

  • Maak eerst gerasterde teksten met het voorgestelde grid positionele mapping methode. Om de rastergegevens voor het convolutionele neurale netwerk te genereren, wordt het gescande documentbeeld verwerkt door een OCR-engine om de teksten en hun absolute / relatieve posities te verkrijgen. De teksten worden in kaart gebracht vanaf de originele gescande documentafbeelding naar het doelraster, zodat het in kaart gebrachte raster de oorspronkelijke ruimtelijke relatie tussen teksten behoudt, maar meer geschikt is om te worden gebruikt als invoer voor het convolutionele neurale netwerk.
  • Vervolgens wordt het CUTIE-model toegepast op de gerasterde teksten. De rijke semantische informatie wordt gecodeerd uit de gerasterde teksten in het allereerste stadium van het convolutionele neurale netwerk met een woordinbeddingslaag.

De CUTIE maakt gelijktijdig kijken naar zowel semantische informatie als ruimtelijke informatie van de teksten in het gescande documentbeeld mogelijk en kan een nieuw state-of-the-art resultaat bereiken voor het extraheren van belangrijke informatie.

CUTIE model

Ze hebben 2 modellen CUTIE-A en CUTIE-B. de voorgestelde CUTIE-A is een convolutioneel neuraal netwerk met hoge capaciteit dat functies met meerdere resoluties combineert zonder functies met hoge resolutie te verliezen. CUTIE-B is een convolutioneel netwerk met atrous convolutie voor het vergroten van het gezichtsveld en de Atrous Spatial Pyramid Pooling (ASPP) -module om contexten op meerdere schaal vast te leggen. Zowel CUTIE-A als CUITE-B voeren een semantisch betekeniscoderingsproces uit met een woordinbeddingslaag in het allereerste stadium.

De taak van CUTIE vertoont overeenkomsten met de semantische segmentatietaak. Het in kaart gebrachte raster bevat verspreide gegevenspunten (teksttokens) in tegenstelling tot de afbeeldingen die met pixels zijn besproeid. De sleutelteksten voor positionele mappertekens bevinden zich dicht bij of op afstand van elkaar vanwege verschillende soorten documentlay-outs. Daarom komt het netwerk ten goede aan het opnemen van multi-scale contextverwerkingscapaciteit.

dataset

De voorgestelde methode wordt geëvalueerd op de robuuste leesuitdaging van ICDAR 2019 op de SROIE-dataset en staat ook op een zelfgebouwde dataset met 3 soorten gescande documentafbeeldingen.

De Gegevensset ICDAR 2019 SROIE wordt gebruikt en bevat 1000 volledige gescande afbeeldingen van ontvangstbewijzen. Elke ontvangstafbeelding bevat ongeveer vier belangrijke tekstvelden, zoals goederennaam, eenheidsprijs, datum en totale kosten. De tekst die in de dataset wordt geannoteerd, bestaat voornamelijk uit cijfers en Engelse karakters.

De zelfgebouwde dataset bevat 4 geannoteerde gescande Spaanse ontvangstdocumenten, waaronder taxi-bonnen, maaltijden-entertainment (ME) -bonnen en hotelbonnen, met 484 verschillende belangrijke informatieklassen.

Resultaten

De algehele prestatie wordt geëvalueerd met behulp van gemiddelde precisie (AP - en gemeten in termen van nauwkeurigheid per klasse over de 9 klassen) en zachte gemiddelde precisie (softAP), waarbij de voorspelling van een sleutelinformatieklasse als correct wordt bepaald als positieve grondwaarheden correct worden voorspeld, zelfs als enkele fout-positieven zijn opgenomen in de uiteindelijke voorspelling. gezamenlijke analyse van AP en softAP geeft een beter begrip van de modelprestaties.

De resultaten zijn te zien in onderstaande tabel.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

GCN's voor VRD's

Graph Convolution voor multimodale informatie-extractie uit visueel rijke documenten

Dit artikel introduceert een op een grafiek convolution gebaseerd model om tekstuele en visuele informatie te combineren die wordt gepresenteerd in Visually Rich documents (VRD's). Graph embeddings zijn getraind om de context van een tekstsegment in het document samen te vatten, en verder gecombineerd met tekst embeddings voor entiteitsextractie.

In dit artikel noemen ze een document een VRD en ik blijf erbij.

Elk document is gemodelleerd als een grafiek van tekstsegmenten, waarbij elk tekstsegment bestaat uit de positie van het segment en de tekst erin. De grafiek bestaat uit knooppunten die tekstsegmenten vertegenwoordigen en randen die visuele afhankelijkheden vertegenwoordigen, zoals relatieve vormen en afstand, tussen twee knooppunten.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

De grafiekinsluitingen geproduceerd door grafiekconvolutie vatten de context van een tekstsegment in het document samen, die verder worden gecombineerd met tekstinsluitingen voor entiteitsextractie met behulp van een standaard BiLSTM-CRF-model.

Model

Het model codeert eerst elk tekstsegment in het document naar het insluiten van grafieken, met behulp van meerdere lagen van convolutie. De inbedding vertegenwoordigt de informatie in het tekstsegment, gezien de visuele en tekstuele context. Visuele context is de lay-out van het document en relatieve posities van het individuele segment ten opzichte van andere segmenten. Tekstuele context is het geheel van tekstinformatie in het document in het algemeen; Het model leert hogere teksten toe te kennen aan teksten uit buursegmenten. Vervolgens combineert het papier de grafiekinsluitingen met tekstinsluitingen en past een standaard BiLSTM-CRFmodel toe voor entiteitsextractie.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

dataset

Er worden twee real-world datasets gebruikt. Het zijn ValueAdded Tax Invoices (VATI) en International Purchase Receipts (IPR). VATI bestaat uit 3000 door gebruikers geüploade afbeeldingen en heeft 16 entiteiten om te bepalen. Voorbeeldentiteiten zijn de namen van koper / verkoper, datum en belastingbedrag. De facturen zijn in het Chinees en het heeft een vaste sjabloon omdat het een nationale standaardfactuur is.

IPR is een dataset van 1500 gescande ontvangstdocumenten in het Engels, die vier entiteiten bevat (factuurnummer, leveranciersnaam, naam van de betaler en totaalbedrag). Er zijn 4 sjablonen voor de ontvangsten.

Resultaten

F1-score wordt gebruikt om de prestaties van het model in alle experimenten te evalueren. De onderstaande tabel heeft de resultaten op thr 2 datasets.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Baseline I past BiLSTM-CRF toe op elk tekstsegment, waarbij elk tekstsegment een individuele zin is.

Baseline II past het taggingmodel toe op de aaneengeschakelde tekstsegmenten.

Sneller-RCNN + AED

Diepgaande aanpak voor ontvangstherkenning

Dit artikel presenteert een diepgaande leerbenadering voor het herkennen van gescande ontvangsten. Het herkenningssysteem heeft twee hoofdmodules: tekstdetectie op basis van Connectionist Text Proposal Network en tekstherkenning op basis van op aandacht gebaseerde encoder-decoder. Het systeem behaalde 71.9% van de F1-score voor detectie- en herkenningstaken.

Tekstdetectie

De CTPN-structuur is vergelijkbaar met Faster R-CNN, met toevoeging van de LSTM-laag. Het netwerkmodel bestaat voornamelijk uit drie delen: extractie van functies door VGG16, bidirectionele LSTM en regressie van bounding box

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Tekstherkenning

De AED wordt gebruikt om tekstregels te herkennen. De AED heeft twee hoofdmodules: DenseNet voor het extraheren van functies uit een tekstbeeld en een LSTM gecombineerd met een aandachtsmodel voor het voorspellen van de uitvoertekst.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

dataset

De dataset van SROIE 2019 wordt gebruikt. Ze verdeelden de trainingsgegevens in training, validatie en testen en selecteerden willekeurig 80% van de ontvangsten voor training, 10% van de ontvangsten voor validatie en de rest voor testen. Dit resulteert in 500 ontvangsten voor training, 63 ontvangsten voor validatie en 63 voor testen.

Resultaten

Voor tekstdetectie gebruikt het papier Tightness-awareness Intersection-over-Union (TIoU) Voor tekstherkenning gebruikte het papier F1, Precision en Recall.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Tabel I toont het resultaat van CTPN met drie voorwaarden: CTPN op originele afbeeldingen; voorverwerking + CTPN, voorverwerking + CTPN + OCR-verificatie. Tabel 2 toont de resultaten van het AED-netwerk.

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Er is natuurlijk een eenvoudigere, meer intuïtieve manier om dit te doen.


Een robuuste nodig? ontvangstbewijs OCR gegevens uit bonnen halen? Bekijk Nanonetten ontvangst OCR API!


OCR met Nanonets

Update #1: We hebben zojuist onze ontvangstbewijs OCR voorgetraind model. Ga naar https://app.nanonets.com en begin met testen!

Automatisering van digitalisering van bonnen met OCR en Deep Learning

De Nanonets OCR-API kunt u eenvoudig OCR-modellen bouwen. U hoeft zich geen zorgen te maken over het voorverwerken van uw afbeeldingen of u hoeft zich geen zorgen te maken over het matchen van sjablonen of het bouwen van op regels gebaseerde engines om de nauwkeurigheid van uw OCR-model te vergroten.

U kunt uw gegevens uploaden, annoteren, het model instellen om te trainen en te wachten op het ontvangen van voorspellingen via een browsergebaseerde gebruikersinterface zonder een enkele regel code te schrijven, u zorgen te maken over GPU's of de juiste architecturen te vinden voor uw deep learning-modellen. U kunt ook de JSON-antwoorden van elke voorspelling verkrijgen om deze met uw eigen systemen te integreren en door machine learning aangedreven apps te bouwen die zijn gebouwd op geavanceerde algoritmen en een sterke infrastructuur.

De GUI gebruiken: https://app.nanonets.com/

U kunt ook de Nanonets-OCR-API gebruiken door de onderstaande stappen te volgen:

Stap 1: kloon de opslagplaats, installeer afhankelijkheden

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

Stap 2: Ontvang uw gratis API-sleutel
Haal uw gratis API-sleutel op http://app.nanonets.com/#/keys

Automatisering van digitalisering van bonnen met OCR en Deep Learning

Stap 3: Stel de API-sleutel in als omgevingsvariabele

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Stap 4: maak een nieuw model

python ./code/create-model.py

Opmerking: Dit genereert een MODEL_ID die je nodig hebt voor de volgende stap

Stap 5: Model-ID toevoegen als omgevingsvariabele

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Opmerking: je krijgt YOUR_MODEL_ID van de vorige stap

Stap 6: Upload de trainingsgegevens
De trainingsgegevens zijn te vinden in images (afbeeldingsbestanden) en annotations (annotaties voor de afbeeldingsbestanden)

python ./code/upload-training.py

Stap 7: Train Model
Zodra de afbeeldingen zijn geüpload, begint u met het trainen van het model

python ./code/train-model.py

Stap 8: Verkrijg de modelstatus
Het duurt ongeveer 2 uur om het model te trainen. Je ontvangt een e-mail zodra het model is opgeleid. Ondertussen controleer je de staat van het model

python ./code/model-state.py

Stap 9: Maak een voorspelling
Zodra het model is opgeleid. Met het model kun je voorspellingen doen

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

Verder lezen

update:
‌ Meer leesmateriaal toegevoegd over de nieuwste ontwikkelingen in het automatiseren van de digitalisering van bonnen met behulp van OCR en Deep Learning.

Tijdstempel:

Meer van AI en machine learning