Kuitin digitalisoinnin automatisointi OCR:n ja Deep Learning PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Haluatko automatisoida tiedon poiminnan kuiteista? Tutustu Nanonetsin esikoulutukseen Kuitin OCR or Rakenna omasi mukautettu kuitin OCR. Voit myös aikataulun esittely saadaksesi lisätietoja AP-käyttötapauksistamme!


Kuitin OCR tai kuitin digitointi vastaa haasteeseen poimia tietoja automaattisesti kuitista. Tässä artikkelissa käsittelen kuittien digitalisoinnin taustalla olevaa teoriaa ja toteutan päästä päähän -putken käyttämällä OpenCV:tä ja Tesseract. Käyn läpi myös muutamia tärkeitä papereita, joissa digitointi tehdään Deep Learningin avulla.

Mikä on kuitin digitointi?

Kuitteissa on kauppaa, jota tarvitaan yritysten väliseen kauppaan, ja suurin osa niistä on paperilla tai puolijärjestelmässä, kuten PDF-tiedostoina ja paperi- / paperikopioiden kuvina. Jotta näitä tietoja voidaan hallita tehokkaasti, yritykset purkavat ja tallentavat asiakirjoihin sisältyvät asiaankuuluvat tiedot. Perinteisesti tämä on saavutettu uuttamalla manuaalisesti asiaankuuluvat tiedot ja syöttämällä ne tietokantaan, joka on työvaltainen ja kallis prosessi.

Kuitin digitointi vastaa haasteeseen tietojen automaattisesta purkamisesta kuitista.

Avaintietojen purkaminen kuitteista ja muuntaminen niistä jäsenneltyjä asiakirjoja voi palvella monia sovelluksia ja palveluita, kuten tehokasta arkistointia, nopeaa indeksointia ja asiakirjaanalyysia. Heillä on kriittinen rooli dokumentointiintensiivisten prosessien ja toimistoautomaation virtaviivaistamisessa monilla rahoitus-, kirjanpito- ja verotusalalla.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Tarvitsetko vankan kuitti OCR or kuittiskanneri poimia tietoja kuiteista? Tutustu Nanonetsiin kuitti OCR API!


Kuka pitää kuittauksen digitointia hyödyllisenä?

Tässä on muutama alue, jolla kuittien digitalisoinnilla voi olla valtava vaikutus:

Ostovelat ja saamisten automatisointi

Ostovelkojen (AP) ja myyntisaamisten (AR) laskenta manuaalisesti on kallista, aikaa vievää ja voi johtaa hämmennykseen johtajien, asiakkaiden ja myyjien välillä. Digitalisoinnin avulla yritykset voivat poistaa nämä haitat ja voi olla enemmän etuja - lisääntynyt avoimuus, data-analyysi, parempi käyttöpääoma ja helpompi seuranta.

Toimitusketjun optimointi

Toimitusketjut ovat monien yrityksen asianmukaisen toiminnan selkäranka. Tehtävien, tietovirtojen ja tuotevirtojen hallinta on avain toimitusten ja tuotannon täydellisen hallinnan varmistamiseen. Tämä on välttämätöntä, jos organisaatioiden on noudatettava toimitusaikoja ja hallittava tuotantokustannuksia.

Nykyään todella kukoistavilla yrityksillä on jotain merkittävää yhteistä: digitalisoitu toimitusketju. 89% yrityksistä digitaaliset toimitusketjut saavat täydelliset tilaukset kansainvälisiltä toimittajilta, mikä varmistaa oikea-aikaisen toimituksen. Yksi seuraavan sukupolven digitaalisen Supply Chain 4.0:n toteuttamisen avainelementeistä on tietojen keruun ja hallinnan automatisointi, ja suuri osa tästä tiedosta on kuittien ja laskut. Kuittien manuaalinen syöttäminen toimii pullonkaulana koko toimitusketjussa ja johtaa tarpeettomiin viivästyksiin. Jos tämä kuittikäsittely digitoidaan, se voi johtaa huomattaviin hyötyihin ajassa ja tehokkuudessa.


Onko sinulla OCR-ongelma mielessä? Haluaa digitalisoida laskut, PDF vai rekisterikilvet? Suuntaa kohti Nanonetit ja rakenna OCR-malleja ilmaiseksi!


Miksi se on vaikea ongelma?

Kuittien digitointi on vaikeaa, koska kuiteissa on paljon muunnelmia ja ne ovat joskus huonolaatuisia. Kuittien skannaus tuo myös useita esineitä digitaaliseen kopiomme. Nämä artefaktit aiheuttavat monia luettavuushaasteita.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Tässä on luettelo muutamista asioista, jotka tekevät vaikeasta ongelmasta murtumisen

  • Käsin kirjoitettu teksti
  • Pienet fontit
  • Meluisia kuvia
  • Haalistuneet kuvat
  • Kameran liike ja ravista
  • Vesileimat
  • Rypyt
  • Haalistunut teksti

Perinteinen kuitin digitointiputki

Tyypillinen putkisto tällaiseen päästä päähän -lähestymistapaan kuuluu:

  • esikäsittely
  • Optinen luku
  • Tiedonkeruu
  • Tietojen poisto
Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Sukellaan syvemmälle putkilinjan jokaiseen osaan. Prosessin ensimmäinen vaihe on esikäsittely.

esikäsittely

Useimmat skannatut kuitit ovat meluisia ja niillä on esineitä, ja jotta OCR- ja tiedonpoistojärjestelmät toimivat hyvin, kuittien esikäsittely on välttämätöntä. Yleisiä esikäsittelymenetelmiä ovat - harmaasävy, kynnysarvo (binaarisointi) ja melun poisto.

Harmaasävy muuttaa RGB-kuvan harmaasävykuvaksi.

Melunpoistoon sisältyy tyypillisesti suola- ja pippurimelun tai Gaussin melun poistaminen.

Useimmat OCR-moottorit toimivat hyvin mustavalkoisissa kuvissa. Tämä voidaan saavuttaa kynnyksellä, joka on pikseliarvojen osoittaminen annettuun kynnysarvoon nähden. Kutakin pikseliarvoa verrataan kynnysarvoon. Jos pikseliarvo on pienempi kuin kynnysarvo, se asetetaan arvoon 0, muuten se asetetaan maksimiarvoon (yleensä 255).

OpenCV tarjoaa erilaisia ​​kynnysvaihtoehtoja – Simple Thresholding, Adaptive Thresholding

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Optinen luku

Seuraava vaihe valmistelussa on OCR. Sitä käytetään tekstin lukemiseen kuvista, kuten skannatusta asiakirjasta tai kuvasta. Tätä tekniikkaa käytetään muuntamaan käytännöllisesti katsoen kaikenlaiset kuvat, jotka sisältävät kirjoitettua tekstiä (kirjoitettua, käsin kirjoitettua tai painettua) koneellisesti luettavaksi tekstitiedoksi. OCR sisältää 2 vaihetta - tekstin havaitseminen ja tekstintunnistus.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

On olemassa monia lähestymistapoja tekstintunnistukseen. Perinteinen tietokone Vision -lähestymistapa on

  • Suodattimien käyttäminen merkkien erottamiseksi taustasta
  • Käytä muodon tunnistusta suodatettujen merkkien tunnistamiseksi
  • Tunnista merkit mage-luokituksella

Suodattimien ja kuvaluokituksen käyttäminen on melko suoraviivaista (ajattele MNIST-luokitusta SVN: n avulla), mutta muotojen sovittaminen on erittäin vaikea ongelma, joka vaatii paljon käsin tehtäviä eikä ole yleistettävissä.

Seuraavaksi tulevat syvällisen oppimisen lähestymistavat. Syväoppiminen yleistyy erittäin hyvin. Yksi suosituimmista lähestymistavoista tekstin havaitsemiseen on EAST. EAST (tehokas tarkka kohtaustekstitunnistin) on yksinkertainen mutta tehokas tapa tekstin havaitsemiseen. EAST-verkko on itse asiassa versio tunnetusta U-Netistä, joka on hyvä havaitsemaan erikokoisia ominaisuuksia.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

CRNN ja STN-OCR (Spatial Transformer Networks) ovat muita suosittuja papereita, jotka suorittavat tekstintunnistusta.

Tiedonkeruu

Yleisin lähestymistapa tiedonkeruun ongelmaan on sääntöpohjainen, jossa säännöt kirjoitetaan OCR: n jälkeen tarvittavien tietojen poimimiseksi. Tämä on tehokas ja tarkka lähestymistapa, mutta vaatii uusien sääntöjen tai mallien kirjoittamista uudentyyppiselle asiakirjalle.

Useita sääntöpohjaisia lasku analyysijärjestelmiä on kirjallisuudessa.

Sääntöpohjaiset menetelmät luottavat suuresti ennalta määritettyihin mallisääntöihin tietojen poimimiseksi tietyistä laskuasetteluista

Yksi lähestymistapa, josta on tullut hyvin yleistä viime vuosina, on käyttää standardia Object Detection -kehystä, kuten YOLO, Faster R-CNN kenttien tunnistamiseen. Joten pelkän tekstin havaitsemisen sijaan kenttätunnistus ja tekstin tunnistus suoritetaan samanaikaisesti. Tämä pienentää putkistoa (tekstin tunnistus → tunnistus → purkaminen havaitsemiseen → tunnistus). Sääntöjä ei tarvitse kirjoittaa, koska kohteen ilmaisin oppii tunnistamaan nämä kentät.

Tietojen poisto

Kun tiedot on poimittu, tiedot voidaan tehdä niin kuin käyttötapamme vaativat. Usein JSON-muoto kenttätietojen tallentamiseksi on kätevää. Nämä JSON-tiedostot voidaan helposti muuntaa XML-tiedostoiksi, Excel-arkeiksi, CSV-tiedostoiksi tai tekstitiedostoiksi riippuen siitä, kuka haluaa työskennellä tietojen kanssa ja miten.

Kuitin digitointi käyttämällä Tesseract

Nyt kun meillä on idea putkilinjasta, toteutetaan se esimerkki kuitissa. Tämä on kuitti, jonka kanssa työskentelemme. Tavoitteenamme tämän lopussa on purkaa ravintolan nimi, ostetut tavarat niiden määrällä ja hinnalla, ostopäivämäärä ja kokonaismäärä.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

esikäsittely

Koska kuittimme on jo harmaasävyssä eikä melua ole paljon, aion tehdä kynnysarvon vain soveltamalla kynnystä 210. Voit säätää arvoa saadaksesi oikean tuloksen. Liian vähemmän ja menetät paljon. Liian lähellä 255 tekee kaikesta musta.

Meidän on ensin asennettava OpenCV.

pip install opencv-python

Tässä on kynnysarvon koodi.

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

Tätä tuloste näyttää.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Tekstintunnistus

Tekstin havaitsemiseksi käytän avoimen lähdekoodin kirjastoa nimeltään Tesseract. Se on lopullinen tekstintunnistuskirjasto, ja Google on kehittänyt sitä vuodesta 2006. Viimeisin Tesseract (v4) -julkaisu tukee syvälle oppimiseen perustuvaa tekstintunnistusta, joka on huomattavasti tarkempi. Taustalla oleva OCR-moottori käyttää itse LSTM (Long Short-Term Memory) -verkkoa.

Asenna ensin Tesseractin uusin versio.

Ubuntulle

sudo apt install tesseract-ocr

MacOS: lle

brew install tesseract --HEAD

Windowsissa voit ladata binääritiedostot täältä sivulla

Varmista tesseraktiversio.

tesseract -v

Tulos -

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

Asenna Tesseract + Python-siteet

Nyt kun Tesseract-binaari on asennettu, meidän on nyt asennettava Tesseract + Python-sidokset, jotta Python-skriptimme voivat kommunikoida Tesseractin kanssa. Meidän on myös asennettava saksan kielen paketti, koska kuitti on saksaksi.

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

Nyt kun olemme asentaneet Tesseractin, aloitetaan tekstiruutujen tunnistaminen.Tesseract on sisäänrakennettu toiminto tekstiruutujen tunnistamiseen.

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

Tässä on tekstin tunnistuskoodin lähtö.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Tekstin tunnistaminen

Me teeskentelemme suorittamaan tekstintunnistuksen. Tesseract 4 käyttää syvän oppimisen lähestymistapaa, joka toimii huomattavasti paremmin kuin useimmat muut avoimen lähdekoodin toteutukset.

Tässä on tekstin tunnistuskoodi. Vaikka se on hyvin yksinkertainen vuoraus, hupun alla on paljon.

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

Tässä on raakatuotos.

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

Tässä on muotoiltu lähtö

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

Tarve digitoida asiakirjat, kuitit tai laskut mutta liian laiska koodaamaan? Suuntaa kohti Nanonetit ja rakenna OCR-malleja ilmaiseksi!


Tiedonkeruu

Kuten olen aiemmin maininnut, yleisin tapa tiedon hankkimiseen on sääntöpohjainen lähestymistapa.

Kaikki tämän hotellin tulot seuraavat kiinteää rakennetta ja tiedot näkyvät eri riveillä. Tämä heijastuu OCR-ulostulossa, jossa uudet rivit on merkitty 'n'. Käytämme näitä kirjoittamalla joukko sääntöjä tietojen purkamiseksi. Tätä sääntöjoukkoa voidaan soveltaa kaikkiin tämän hotellin kuiteihin, koska ne noudattavat samaa muotoa.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Puraan ravintolan nimen, tapahtumapäivän, ostetut tavarat, niiden määrän, tuotekohtaiset kokonaiskustannukset ja kokonaismäärän käyttämällä yksinkertaisia ​​python-komentoja ja säännöllisiä lausekkeita.

Tämä on sanakirja, johon tallennan poimitut tiedot.

receipt _ocr = {}

Ensimmäinen vaihe on purkaa ravintolan nimi. Ravintolan nimen sijainti tulee olemaan vakio kaikissa kuiteissa ja se on kahdella ensimmäisellä rivillä. Käytetään tätä luomaan sääntö.

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

Seuraavaksi poimitaan tapahtumapäivä. Päivämääräregex on melko suoraviivainen.


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)

Tulos -

‘30.10.2007’

Seuraavaksi poimitaan kaikki esineisiin ja kustannuksiin liittyvät tiedot.

Tuotteet sisältävät CHF:n, joka on Sveitsin frangi. Havaitsemme kaikki CHF:n esiintymät. Nyt voimme havaita rivit tunnistamalla merkit välillä 2 n ja sisältävät CHF:n. Tunnistan kokonaismäärän myös täältä.

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

Tulos -

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

Jos huomaat, Tesseract ohitti yhden esineen, koska se havaitsi CH: n CH: n sijaan. Tarkastelen seuraavassa osassa perinteisten OCR-järjestelmien haasteita.

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

JSON-tulosteen tulostaminen -

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

Kaikki keskeiset tiedot on purettu ja poistettu hakemistoon_jako ..

Tavanomaisen lähestymistavan ongelmat

Vaikka olemme poimineet tiedot, yllä oleva putkilinja ohittaa muutaman asian ja on epäoptimaali. Jokaiselle uudelle kuitille meidän on kirjoitettava uusi sääntöjoukko, joten se ei ole skaalautuva.

Asetteluissa, kirjasimissa ja kirjasinkokoissa, käsin kirjoitetuissa asiakirjoissa jne. Voi olla paljon variaatioita. Asetteluerot vaikuttavat sääntöpohjaisiin lähestymistapoihin, ja nämä on otettava huomioon, mikä on erittäin työlästä. Fonttien ja kirjasinkokojen erot vaikeuttavat tietojen tunnistamista ja poimimista.

Miksi kokonaisvaltaisen syvän oppimisen putkilinja on parempi?

Yksi suurimmista ongelmista standardimenetelmässä on yleistymisen puute. Sääntöpohjaiset lähestymistavat eivät voi yleistää, ja jokaiselle uudelle mallille on kirjoitettava uudet säännöt. Myös olemassa olevan mallin kaikki muutokset on otettava huomioon.

Syvän oppimisen lähestymistapa pystyy oppimaan nämä säännöt ja pystyy yleistämään eri asettelut helposti, mikäli meillä on ne koulutustietokannassamme.

Syvä oppiminen ja tiedon poimiminen

Täällä tarkastelen muutamia artikkeleita, joissa käytetään syvällistä oppimista koskevaa lähestymistapaa.

SÖPÖLIINI

CUTIE: Oppia ymmärtämään asiakirjoja Convolutional Universal Text Information Extractor -sovelluksella

Tässä asiakirjassa ehdotetaan oppimispohjainen avaintietojen poistomenetelmä, jonka henkilöstöresurssit ovat rajalliset. Se yhdistää sekä asiakirjojen semanttisen merkityksen että tekstien alueellisen jakautumisen tiedot. Heidän ehdottamansa mallin, Convolutional Universal Text Information Extractor (CUTIE), avulla voidaan käyttää konvoluutiohermoverkkoja ruudutettuihin teksteihin, joissa tekstit upotetaan piirteinä, joilla on semanttinen konnotaatio.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Ehdotettu malli, käsittelee keskeisen tiedonkeruun ongelman

  • Luomalla ensin ruudukkoitetut tekstit ehdotetun kanssa ruudukon sijainnin kartoitusmenetelmä. Jotta ruudukkotiedot muodostuisivat konvoluutiohermaiselle verkolle, skannattu asiakirjan kuva prosessoidaan OCR-moottorilla tekstien ja niiden absoluuttisen / suhteellisen sijainnin hankkimiseksi. Tekstit kartoitetaan alkuperäisestä skannatusta asiakirjakuvasta kohderuudukkoon siten, että kartoitetut ruudukot säilyttävät alkuperäisen tekstisten alueiden välisen suhteen, mutta ovat edelleen sopivampia käytettäväksi syöttönä konvoluutiohermostoon.
  • Sitten CUTIE-mallia sovelletaan ruudutettuihin teksteihin. Rikas semanttinen tieto koodataan ruudukkoitetuista teksteistä konvoluutiohermoverkon heti alkuvaiheessa sanan upottavalla kerroksella.

CUTIE antaa mahdollisuuden tutkia skannatun asiakirjakuvan tekstien sekä semanttista tietoa että paikkatietoa samanaikaisesti ja voi saavuttaa uuden tekniikan tason avaintietojen poimista varten.

CUTIE-malli

Heillä on 2 mallia CUTIE-A ja CUTIE-B. ehdotettu CUTIE-A on suuren kapasiteetin konvoluutiohermoverkko, joka sulauttaa monen resoluution ominaisuuksia menettämättä korkearesoluutioisia ominaisuuksia. CUTIE-B on konvoluutioverkko, jolla on atrous-konvoluutio näkökentän laajentamiseksi, ja ASPP-moduuli Atrous Spatial Pyramid Pooling -moduulin monimuotoisten konteksttien sieppaamiseksi. Sekä CUTIE-A että CUITE-B suorittavat semanttisen merkityksen koodausprosessin sanan upotuskerroksella aivan alussa.

CUTIE: n tehtävä muistuttaa semanttista segmentointitehtävää. Kartattu ruudukko sisältää hajallaan olevat datapisteet (tekstimerkit) toisin kuin kuvat, jotka leviävät pikselien kanssa. Ruudukkoon sijaintikartoitetut avautekstit ovat joko lähellä tai etäällä toisistaan ​​erityyppisten asiakirjaasettelujen vuoksi. Siksi monimuotoisen kontekstin käsittelykyvyn sisällyttäminen hyödyttää verkkoa.

aineisto

Ehdotettua menetelmää arvioidaan ICDAR 2019 -standardin lukemassa haasteessa SROIE-tietoaineistossa ja se on myös itse rakennetussa tietokokonaisuudessa, jossa on 3 tyyppiä skannattuja asiakirjakuvia.

- ICDAR 2019 SROIE -aineisto käytetään 1000 kokonaisskannattua kuittikuvaa. Jokaisessa kuittikuvassa on noin neljä keskeistä tekstikenttää, kuten tavaran nimi, yksikköhinta, päivämäärä ja kokonaiskustannukset. Aineistoon merkitty teksti koostuu pääasiassa numeroista ja englanninkielisistä merkeistä.

Itse rakennettu tietojoukko sisältää 4 484 huomautettua skannattua espanjalaista kuittiasiakirjaa, mukaan lukien taksi-, ruokailuviihde- (ME) kuitit ja hotellitiedot, 9 erilaista avaintietoluokkaa.

tulokset

Kokonaissuorituskyky arvioidaan käyttämällä keskimääräistä tarkkuutta (AP - ja mitattuna luokkakohtaisella tarkkuudella 9 luokassa) ja pehmeää keskimääräistä tarkkuutta (softAP), joissa keskeisen tietoluokan ennuste määritetään oikein, jos positiiviset perustiedot ennustetaan oikein, vaikka lopulliseen ennusteeseen sisältyisi joitain vääriä positiivisia. AP: n ja softAP: n yhteinen analyysi antaa paremman käsityksen mallin suorituskyvystä.

Voit nähdä tulokset alla olevasta taulukosta.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

GCN: t VRD: lle

Graafin konvoluutio multimodaalisen tiedon poimimiseen visuaalisesti rikkaista asiakirjoista

Tämä artikkeli esittelee kuvaajakonvoluutiopohjaisen mallin, jolla yhdistetään visuaalisesti Rich-dokumenteissa (VRD) esitetyt tekstitiedot ja visuaaliset tiedot. Grafiikan upotukset on koulutettu tekemään yhteenveto asiakirjan tekstisegmentin kontekstista, ja niitä yhdistetään edelleen tekstien upotuksiin kokonaisuuden poimintaa varten.

Tässä lehdessä he kutsuvat asiakirjaa VRD: ksi, ja pysyn siinä.

Jokainen asiakirja on mallinnettu tekstisegmenttien kuvaajana, jossa jokainen tekstisegmentti koostuu segmentin sijainnista ja siinä olevasta tekstistä. Kaavio koostuu solmuista, jotka edustavat tekstisegmenttejä, ja reunoista, jotka edustavat visuaalisia riippuvuuksia, kuten suhteelliset muodot ja etäisyys kahden solmun välillä.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Graafin konvoluutiossa tuotetut kaavion upotukset muodostavat yhteenvedon asiakirjassa olevan tekstisegmentin kontekstista, jotka yhdistetään edelleen tekstien upotuksiin entiteetin erottamiseksi käyttämällä standardia BiLSTM-CRF-mallia.

Malli

Malli koodaa ensin jokaisen asiakirjan tekstisegmentin kaavion upotukseksi käyttämällä useita kerroksia kuvaajan konvoluutiossa. Upotus edustaa tekstisegmentin tietoja ottaen huomioon sen visuaalinen ja tekstinen konteksti. Visuaalinen konteksti on asiakirjan asettelu ja yksittäisen segmentin suhteelliset sijainnit muihin segmentteihin nähden. Tekstikonteksti on tekstitietojen kokonaisuus asiakirjassa kokonaisuudessaan; Malli oppii osoittamaan suurempia painoja naapurisegmenttien teksteille. Sitten paperi yhdistää kuvaajan upotukset tekstin upotuksiin ja soveltaa standardin mukaista BiLSTM-CRF-mallia kokonaisuuden erottamiseen.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

aineisto

Käytetään kahta reaalimaailman tietojoukkoa. Ne ovat arvonlisäverolaskuja (VATI) ja kansainvälisiä ostokuitit (IPR). VATI koostuu 3000 käyttäjän lataamasta kuvasta ja siinä on 16 kokonaisuutta. Esimerkkejä yhteisöistä ovat ostajan / myyjän nimet, päivämäärä ja vero. Laskut ovat kiinalaisia ​​ja siinä on kiinteä malli, koska se on kansallinen vakiolasku.

IPR on 1500 skannatun englanninkielisen vastaanottoasiakirjan tietojoukko, jossa on tarkka 4 kokonaisuutta (laskun numero, myyjän nimi, maksijan nimi ja kokonaismäärä). Kuitteille on olemassa 146 mallia.

tulokset

F1-pistemäärää käytetään arvioimaan mallin suorituskykyä kaikissa kokeissa. Seuraavassa taulukossa on tulokset thr 2 -joukosta.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Perustaso I soveltaa BiLSTM-CRF: ää jokaiseen tekstisegmenttiin, jossa jokainen tekstisegmentti on erillinen lause.

Baseline II soveltaa merkintämallia ketjutettuihin tekstisegmentteihin.

Nopeampi-RCNN + AED

Syvä oppimislähestymistapa kuittitunnistukseen

Tämä artikkeli esittelee syvän oppimisen lähestymistavan skannattujen kuittien tunnistamiseen. Tunnistusjärjestelmässä on kaksi päämoduulia: Connectionist-tekstiehdotusverkkoon perustuva tekstin tunnistus ja huomiopohjaiseen kooderi-dekooderiin perustuva tekstin tunnistus. Järjestelmä saavutti 71.9% F1-pisteestä havaitsemis- ja tunnistustehtävissä.

Tekstin tunnistus

CTPN-rakenne on samanlainen kuin nopeampi R-CNN, lisäämällä LSTM-kerros. Verkkomalli koostuu pääasiassa kolmesta osasta: ominaisuuksien poiminta VGG16: lla, kaksisuuntainen LSTM ja rajakentän regressio

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Tekstin tunnistaminen

AED: tä käytetään tekstirivien tunnistamiseen. AED: llä on kaksi päämoduulia: DenseNet ominaisuuksien poimimiseksi tekstikuvasta ja LSTM yhdistettynä tarkkailumallin kanssa tulostettavan tekstin ennustamiseen.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

aineisto

SROIE 2019: n aineistoa käytetään. He jakoivat harjoitustiedot koulutukseen, validointiin ja testaukseen ja valitsivat satunnaisesti 80% koulutuskuitista, 10% validointitiedoista ja loput testaukseen. Tuloksena on 500 kuitit koulutusta, 63 kuitit validointia ja 63 testit.

tulokset

Tekstin havaitsemiseksi paperi käyttää tiiviyteen tietoista ristikkäisyhdistelmää (TIoU). Tekstin tunnistamiseen paperissa käytettiin F1, Precision ja Recall.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Taulukko I näyttää CTPN: n tuloksen kolmella ehdolla: CTPN alkuperäisissä kuvissa; esikäsittely + CTPN, esikäsittely + CTPN + OCR-varmennus. Taulukko 2 näyttää AED-verkon tulokset.

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

On tietysti helpompi ja intuitiivisempi tapa tehdä tämä.


Tarvitsetko vankan kuitti OCR poimia tietoja kuiteista? Tutustu Nanonetsiin kuitti OCR API!


OCR kanssa Nanonets

Päivitys #1: Julkaisimme juuri meidän kuitti OCR esikoulutettu malli. Siirry osoitteeseen https://app.nanonets.com ja aloita testaus!

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

- Nanonets OCR -sovellusliittymä antaa sinun rakentaa OCR-malleja helposti. Sinun ei tarvitse huolehtia kuvien esikäsittelystä tai murehtia mallien sovittamisesta tai luoda sääntöpohjaisia ​​moottoreita lisätäksesi tekstintunnistusmallisi tarkkuutta.

Voit lähettää tietosi, merkitä ne, asettaa mallin kouluttamaan ja odottamaan ennusteiden saamista selainpohjaisen käyttöliittymän kautta kirjoittamatta yhtä koodiriviä, huolestuttamalla GPU: ista tai etsimällä oikeita arkkitehtuureja syvän oppimisen malleillesi. Voit myös hankkia kunkin ennusteen JSON-vastaukset integroidaksesi sen omaan järjestelmääsi ja rakentaaksesi koneoppimisella varustetut sovellukset, jotka on rakennettu huipputeknisille algoritmeille ja vahvalle infrastruktuurille.

Käyttöliittymän käyttö: https://app.nanonets.com/

Voit käyttää myös Nanonets-OCR-sovellusliittymää noudattamalla seuraavia vaiheita:

Vaihe 1: Klooni repo, asenna riippuvuudet

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

Vaihe 2: Hanki ilmainen API-avain
Hanki ilmainen API-avain http://app.nanonets.com/#/keys

Kuittien digitoinnin automatisointi OCR: n ja syvän oppimisen avulla

Vaihe 3: Aseta API-avain ympäristömuuttujaksi

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Vaihe 4: Luo uusi malli

python ./code/create-model.py

Huomautus: Tämä luo mallin, jonka tarvitset seuraavaan vaiheeseen

Vaihe 5: Lisää mallitunnus ympäristömuuttujaksi

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Huomautus: saat YOUR_MODEL_ID edellisestä vaiheesta

Vaihe 6: Lataa harjoitustiedot
Harjoitustiedot löytyvät images (kuvatiedostot) ja annotations (kuvatiedostojen merkinnät)

python ./code/upload-training.py

Vaihe 7: Junamalli
Kun kuvat on ladattu, aloita mallin koulutus

python ./code/train-model.py

Vaihe 8: Hanki mallitila
Malliin kuluu ~ 2 tuntia. Saat sähköpostin, kun malli on koulutettu. Sillä välin tarkistat mallin tilan

python ./code/model-state.py

Vaihe 9: Tee ennuste
Kun malli on koulutettu. Voit tehdä ennusteita mallin avulla

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

Kirjallisuutta

Päivitys:
‌ Lisätty lisää luettavaa uusimmista edistyksistä kuittien digitoinnin automatisoinnissa OCR:n ja Deep Learningin avulla.

Aikaleima:

Lisää aiheesta Tekoäly ja koneoppiminen