A nyugták digitalizálásának automatizálása az OCR és a Deep Learning PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Automatizálni szeretné az adatkinyerést a nyugtákból? Nézze meg a Nanonets előképzettségét Nyugta OCR or Építsd meg a sajátod személyre szabott nyugta OCR. Te is ütemezzen egy demót hogy többet megtudjon AP használati eseteinkről!


Nyugta OCR vagy a nyugta digitalizálása azt a kihívást kezeli, hogy automatikusan kinyerjük az információkat a nyugtából. Ebben a cikkben bemutatom a nyugtadigitalizálás elméletét, és végpontok közötti folyamatot valósítok meg OpenCV és Tesseract. Áttekintek néhány fontos dokumentumot is, amelyek a Deep Learning segítségével digitalizálják a nyugtákat.

Mi az a nyugta digitalizálása?

A nyugták a vállalatok közötti kereskedelemhez szükséges információkat tartalmazzák, és ezek nagy része papíron vagy félig strukturált formátumban, például PDF-ben és papír/nyomtatott másolatok képei formájában történik. Ezen információk hatékony kezelése érdekében a vállalatok kivonják és tárolják az ezekben a dokumentumokban található releváns információkat. Ezt hagyományosan a releváns információk manuális kinyerésével és egy adatbázisba való bevitelével érik el, ami munkaigényes és költséges folyamat.

A nyugta digitalizálása azt a kihívást kezeli, hogy automatikusan kinyerjük az információkat a nyugtából.

A legfontosabb információk kinyerése a nyugtákból és strukturált dokumentumokká konvertálása számos alkalmazást és szolgáltatást szolgálhat, például hatékony archiválást, gyors indexelést és dokumentumelemzést. Kritikus szerepet játszanak a dokumentum-intenzív folyamatok és az irodai automatizálás ésszerűsítésében számos pénzügyi, számviteli és adózási területen.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Robusztus kell nyugta OCR or nyugtaszkenner adatokat kinyerni a bizonylatokból? Nézze meg a Nanonets-t nyugta OCR API!


Ki találja hasznosnak a nyugta digitalizálását?

Íme néhány terület, ahol a nyugták digitalizálása óriási hatást gyakorolhat:

A szállítók és követelések automatizálása

A számlák (AP) és a kintlévőségek (AR-k) manuális számítása költséges, időigényes, és zavarhoz vezethet a vezetők, az ügyfelek és a szállítók között. A digitalizálással a vállalatok kiküszöbölhetik ezeket a hátrányokat, és több előnnyel is járhatnak – megnövekedett átláthatóság, adatelemzés, jobb működő tőke és könnyebb nyomon követés.

Az ellátási lánc optimalizálása

Az ellátási láncok számos vállalat megfelelő működésének gerincét képezik. A feladatok, az információáramlás és a termékáramlás kezelése a kulcsa az ellátás és a termelés teljes körű ellenőrzésének. Ez elengedhetetlen ahhoz, hogy a szervezetek betartsák a szállítási határidőket és ellenőrizzék a termelési költségeket.

A manapság valóban virágzó cégeknek van valami jelentős közös vonása: a digitalizált ellátási lánc. A vállalatok 89% -a a digitális ellátási láncokkal tökéletes megrendeléseket kapnak nemzetközi beszállítóktól, biztosítva a pontos szállítást. A következő generációs digitális Supply Chain 4.0 megvalósításának egyik kulcseleme az adatrögzítés és -kezelés automatizálása, és ezen adatok nagy része a nyugták és számlák. A nyugták kézi bevitele szűk keresztmetszetként hat az ellátási láncban, és szükségtelen késedelmet okoz. Ha ezt a nyugtafeldolgozást digitalizálják, az jelentős idő- és hatékonyságnövekedéshez vezethet.


OCR-problémára gondol? Digitalizálni akar számlák, PDF vagy rendszámtábla? Irány oda Nanonetek és készítsen OCR modelleket ingyen!


Miért nehéz probléma?

A nyugták digitalizálása nehézkes, mivel a bizonylatoknak sokféle változata van, és néha gyenge minőségűek. A nyugták beolvasása számos műterméket is bevezet digitális másolatunkba. Ezek a műtermékek sok olvashatósági kihívást jelentenek.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Íme egy lista azokról a dolgokról, amelyek megnehezítik a probléma feltörését

  • Kézzel írt szöveg
  • Kis betűtípusok
  • Zajos képek
  • Kifakult képek
  • A kamera mozgása és rázkódása
  • Vízjelek
  • ráncok
  • Fakó szöveg

Hagyományos átvételi digitalizálási folyamat

Az ilyen végpontok közötti megközelítés tipikus folyamata a következőket tartalmazza:

  • Előfeldolgozás
  • Optikai karakterfelismerő
  • Információ kinyerése
  • Data dump
A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Merüljünk mélyebbre a csővezeték egyes részeiben. A folyamat első lépése az előfeldolgozás.

Előfeldolgozás

A legtöbb beszkennelt nyugta zajos és műtermékeket tartalmaz, ezért az OCR és az információnyerő rendszer megfelelő működéséhez szükséges a bizonylatok előfeldolgozása. A gyakori előfeldolgozási módszerek közé tartozik a szürkeskálázás, a küszöbérték (binarizálás) és a zajeltávolítás.

A szürkeárnyalatos átalakítás egyszerűen az RGB-képet szürkeárnyalatos képpé alakítja.

A zaj eltávolítása általában a só és bors zaj vagy a Gauss-zaj eltávolítását jelenti.

A legtöbb OCR motor jól működik fekete-fehér képeken. Ez küszöbértékkel érhető el, ami a pixelértékek hozzárendelése a megadott küszöbértékhez képest. Az egyes pixelértékeket a rendszer összehasonlítja a küszöbértékkel. Ha a pixelérték kisebb, mint a küszöbérték, akkor 0-ra, ellenkező esetben maximális értékre (általában 255-re) van állítva.

Az OpenCV különféle küszöbértékeket kínál – egyszerű küszöbérték, adaptív küszöbérték

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Optikai karakterfelismerő

A folyamat következő lépése az OCR. Szöveg olvasására használható képekből, például beolvasott dokumentumból vagy képből. Ezzel a technológiával gyakorlatilag bármilyen írott szöveget (gépelt, kézzel írt vagy nyomtatott) tartalmazó képet gépileg olvasható szöveges adatokká alakítanak át.. Az OCR 2 lépésből áll – szövegészlelés és szövegfelismerés.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Az OCR-nek számos megközelítése létezik. A hagyományos számítógépes Vision megközelítés az

  • Szűrők használata a karakterek elválasztására a háttértől
  • Alkalmazzon kontúrérzékelést a szűrt karakterek felismeréséhez
  • Használjon mágus osztályozást a karakterek azonosításához

A szűrők és a képosztályozás alkalmazása meglehetősen egyszerű (gondoljunk csak az SVN-t használó MNIST osztályozásra), de a kontúrillesztés nagyon nehéz probléma, és sok manuális erőfeszítést igényel, és nem általánosítható.

Ezután jönnek a mély tanulási megközelítések. A Deep Learning nagyon jól általánosít. A szövegészlelés egyik legnépszerűbb módja az EAST. Az EAST (Efficient pontos jelenetszöveg-detektor) egy egyszerű, de hatékony módszer a szövegészleléshez. Az EAST hálózat tulajdonképpen a jól ismert U-Net egy változata, amely alkalmas különböző méretű funkciók észlelésére.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

CRNN és a STN-OCR (Spatial Transformer Networks) más népszerű papírok, amelyek OCR-t hajtanak végre.

Információ kinyerése

Az információ-kinyerés problémájának leggyakoribb megközelítése a szabályalapú, ahol a szabályokat OCR után írják a szükséges információk kinyerése érdekében. Ez egy hatékony és pontos megközelítés, de megköveteli, hogy új szabályokat vagy sablonokat írjon egy új típusú dokumentumhoz.

Több szabály alapú számla elemző rendszerek léteznek az irodalomban.

  • Intellix a DocuWare-től megfelelő mezőkkel ellátott sablont igényel.
  • SmartFix minden sablonhoz speciálisan kialakított konfigurációs szabályokat alkalmaz

A szabály alapú módszerek nagymértékben támaszkodnak az előre meghatározott sablonszabályokra, hogy információkat nyerjenek ki meghatározott számlaelrendezésekből

Az egyik olyan megközelítés, amely nagyon elterjedt az elmúlt években, egy szabványos objektumészlelési keretrendszer, például a YOLO, Faster R-CNN használata a mezők felismerésére. Tehát a tiszta szövegészlelés helyett a mezőfelismerés és a szövegészlelés egyszerre történik. Ez kisebbé teszi a folyamatot (Szövegészlelés → Felismerés → Kivonás észlelésig → Felismerés). Nem kell szabályokat írni, mivel az objektumdetektor megtanulja felismerni ezeket a mezőket.

Data Dump

Az adatok kinyerése után az adatkiíratást a használati esetünknek megfelelően meg lehet tenni. Gyakran kényelmes a JSON formátum a mezők információinak tárolására. Ezek a JSON-fájlok könnyen konvertálhatók XML-fájlokká, Excel-lapokká, CSV-fájlokká vagy egyszerű szöveges fájlokká, attól függően, hogy ki és hogyan akar dolgozni az adatokkal.

Nyugta digitalizálása segítségével Tesseract

Most, hogy van elképzelésünk a folyamatról, valósítsuk meg egy példa nyugtán. Ez a nyugta, amellyel dolgozunk. Ennek végén az a célunk, hogy kinyerjük az Étterem nevét, a vásárolt cikkeket mennyiségükkel és költségükkel, a vásárlás dátumával és végösszegével.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Előfeldolgozás

Mivel a nyugtánk már szürkeárnyalatos, és nincs nagy zaj, csak a küszöbértéket fogom végrehajtani egy 210-es küszöb alkalmazásával. Módosíthatja az értéket, hogy a megfelelő kimenetet kapja. Túl kevesebb, és sok mindenről lemaradsz. A 255-höz túl közel minden fekete lesz.

Először telepítenünk kell az OpenCV-t.

pip install opencv-python

Itt van a küszöbérték kódja.

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

Így néz ki a kimenet.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Szövegészlelés

Szövegészlelésre egy nyílt forráskódú könyvtárat fogok használni Tesseract. Ez a végleges OCR-könyvtár, amelyet a Google fejleszt 2006 óta. A Tesseract legújabb kiadása (v4) támogatja a mély tanuláson alapuló OCR-t, amely lényegesen pontosabb. Maga a mögöttes OCR-motor egy hosszú rövid távú memória (LSTM) hálózatot használ.

Először telepítsük a Tesseract legújabb verzióját.

ubuntuhoz

sudo apt install tesseract-ocr

MacOS esetén

brew install tesseract --HEAD

Windows esetén innen töltheti le a binárisokat oldal

Ellenőrizze a tesseract verzióját.

tesseract -v

Kimenet -

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

Telepítse a Tesseract + Python kötéseket

Most, hogy telepítettük a Tesseract bináris fájlt, telepítenünk kell a Tesseract + Python összerendeléseket, hogy Python-szkriptjeink kommunikálni tudjanak a Tesseracttel. Telepítenünk kell a német nyelvi csomagot is, mivel a nyugta német nyelvű.

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

Most, hogy telepítettük a Tesseractot, kezdjük el a szövegmezők észlelését.Tesseract beépített funkcióval rendelkezik a szövegdobozok észlelésére.

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

Itt van a szövegészlelési kód kimenete.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Szövegfelismerés

Tesseractot fogunk végezni az OCR végrehajtásához. A Tesseact 4 mély tanulási megközelítést alkalmaz, amely lényegesen jobban teljesít, mint a legtöbb nyílt forráskódú megvalósítás.

Itt van a szövegfelismerés kódja. Bár ez egy nagyon egyszerű egysoros, sok minden elfér a motorháztető alatt.

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

Íme a nyers kimenet.

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

Itt a formázott kimenet

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

Dokumentumok, nyugták, ill számlák de lusta kódolni? Irány oda Nanonetek és készítsen OCR modelleket ingyen!


Információ kinyerése

Mint korábban említettem, az információ kinyerésének legáltalánosabb módja a szabályalapú megközelítés.

A szállodától származó összes nyugta rögzített struktúrát követ, és az információk különböző sorokon jelennek meg. Ez tükröződik az OCR kimenetben, ahol az újsorokat „n” jelöli. Ezek felhasználásával írjunk szabályokat az információk kinyerésére. Ez a szabálykészlet a szállodától származó bármely nyugtára alkalmazható, mivel ugyanazt a formátumot követik.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Egyszerű python parancsok és reguláris kifejezések segítségével kinyerem az étterem nevét, a tranzakció dátumát, a vásárolt cikkeket, azok mennyiségét, a tételenkénti összköltséget és a teljes összeget.

Ez egy szótár, ahol a kivont információkat tárolom.

receipt _ocr = {}

Az első lépés az étterem nevének kinyerése. Az étterem nevének helye minden bizonylatban állandó lesz, és ez az első 2 sorban van. Használjuk ezt a szabály létrehozásához.

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

Ezután kivonjuk a tranzakció dátumát. A dátum regex meglehetősen egyszerű.


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)

Kimenet -

‘30.10.2007’

Ezután kinyerjük a tételekkel és a költségekkel kapcsolatos összes információt.

A tételek CHF-et tartalmaznak, amely a svájci frank. Határozzuk meg a CHF összes előfordulását. Mostantól felismerhetjük a vonalakat a 2 n közötti karakterek felismerésével, amelyek CHF-et tartalmaznak. Itt is kimutatom a végösszeget.

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

Kimenet -

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

Ha észreveszi, a Tesseract kihagyott egy elemet, mert CH CH-t észlelt CHF helyett. A következő részben a hagyományos OCR-rendszerek kihívásaival foglalkozom.

# 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 kimenetünk nyomtatása –

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

Az összes kulcsfontosságú információ ki lett bontva és bekerült a Receive_json fájlba.

Problémák a hagyományos megközelítéssel

Bár kivontuk az információkat, a fenti folyamat néhány dolgot kihagy, és nem optimális. Minden új nyugtához új szabálykészletet kell írnunk, ezért nem méretezhető.

Az elrendezésekben, a betűtípusokban és a betűméretekben, a kézzel írt dokumentumokban stb. sokféle változat létezik. Az elrendezésbeli különbségek hatással lesznek a szabályalapú megközelítésekre, és ezeket figyelembe kell venni, ami nagyon unalmassá válik. A betűtípusok és a betűméretek különbségei megnehezítik az információk felismerését és kinyerését.

Miért jobb a végpontok közötti mélytanulási folyamat?

A standard megközelítés egyik legnagyobb problémája az általánosítás hiánya. A szabály alapú megközelítések nem általánosíthatók, és új szabályokat kell írni minden új sablonhoz. Szintén figyelembe kell venni egy meglévő sablon bármilyen változását vagy változatát.

A Deep Learning megközelítés képes lesz megtanulni ezeket a szabályokat, és könnyen általánosítható lesz a különböző elrendezések között, feltéve, hogy ezek szerepelnek a képzési adatkészletünkben.

Mély tanulás és információ-kinyerés

Itt áttekintek néhány olyan tanulmányt, amelyek a végpontok közötti mélytanulási megközelítéseket használják.

SZIVI

CUTIE: Tanulj meg dokumentumokat a Convolutional Universal Text Information Extractor segítségével

Ez a cikk azt javasolja tanuláson alapuló kulcsinformáció-kinyerési módszer, korlátozott humánerőforrás-igénnyel. Egyesíti a dokumentumokban található szövegek szemantikai jelentéséből és térbeli eloszlásából származó információkat. Javasolt modelljük, a Convolutional Universal Text Information Extractor (CUTIE) konvolúciós neurális hálózatokat alkalmaz rácsozott szövegeken, ahol a szövegek szemantikai konnotációval rendelkező jellemzőkként vannak beágyazva.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

A javasolt modell, azáltal kezeli a kulcsfontosságú információ-kinyerési problémát

  • Először hozzon létre rácsozott szövegeket a javasoltal grid pozícióleképezési módszer. A konvolúciós neurális hálózat rácsadatainak generálásához a beolvasott dokumentum képét egy OCR motor dolgozza fel, hogy megszerezze a szövegeket és azok abszolút/relatív helyzetét. A szövegek az eredeti beszkennelt dokumentumképről a célrácsra vannak leképezve, így a leképezett rács megőrzi a szövegek közötti eredeti térbeli kapcsolatot, ami még alkalmasabb a konvolúciós neurális hálózat bemeneteként való használatra.
  • Ezután a CUTIE modellt alkalmazzuk a rácsozott szövegekre. A gazdag szemantikai információ a rácsozott szövegekből a konvolúciós neurális hálózat legelején szóbeágyazó réteggel van kódolva.

A CUTIE lehetővé teszi a beolvasott dokumentum képében lévő szövegek szemantikai információinak és térinformációinak egyidejű betekintését, és a kulcsfontosságú információk kinyeréséhez a technika új korszerű eredményét érheti el.

CUTIE modell

2 CUTIE-A és CUTIE-B modelljük van. a javasolt CUTIE-A egy nagy kapacitású konvolúciós neurális hálózat, amely egyesíti a többfelbontású jellemzőket anélkül, hogy elveszítené a nagy felbontású jellemzőket. A CUTIE-B egy konvolúciós hálózat, amely a látómező kibővítését szolgálja, és az Atrous Spatial Pyramid Pooling (ASPP) modullal többléptékű kontextusokat rögzíthet. Mind a CUTIE-A, mind a CUITE-B szemantikai jelentéskódolási folyamatot végez egy szóbeágyazó réteggel a legelején.

A CUTIE feladata a szemantikai szegmentációs feladathoz hasonlít. A leképezett rács elszórt adatpontokat (szöveg tokeneket) tartalmaz, ellentétben a képpontokkal szétszórt képekkel. A rácspozíciós leképezésű kulcsszövegek közel vagy távol helyezkednek el egymástól a különböző típusú dokumentumelrendezések miatt. Ezért a többléptékű kontextusfeldolgozási képesség beépítése előnyös a hálózat számára.

adatbázisba

A javasolt módszert az ICDAR 2019 robusztus olvasási kihívása alapján értékelték ki a SROIE adatkészleten, és egy saját készítésű adatkészleten is szerepel, 3 féle szkennelt dokumentum képpel.

A ICDAR 2019 SROIE adatkészlet használatos, amely 1000 teljes szkennelt nyugtaképet tartalmaz. Minden nyugta kép körülbelül négy kulcsfontosságú szövegmezőt tartalmaz, mint például az áru neve, az egységár, a dátum és a teljes költség. Az adatkészletben jegyzett szöveg főként számokból és angol karakterekből áll.

A saját készítésű adatkészlet 4 484 megjegyzéssel ellátott, szkennelt spanyol nyugtadokumentumot tartalmaz, beleértve a taxi bizonylatokat, az étkezési szórakoztatásról (ME) és a szállodai nyugtákat, 9 különböző kulcsinformációs osztályba sorolva.

Eredmények

Az általános teljesítmény értékelése átlagos pontossággal (AP – és osztályonkénti pontossággal a 9 osztályban,.) és lágy átlagos pontossággal (softAP) történik, ahol a kulcsfontosságú információosztály előrejelzése helyes, ha pozitív alapigazság. helyesen jósolják meg, még akkor is, ha a végső előrejelzésben néhány téves pozitív eredmény is szerepel. Az AP és a softAP közös elemzése jobb megértést biztosít a modell teljesítményéről.

Az eredményeket az alábbi táblázatban láthatja.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

GCN-ek VRD-ekhez

Grafikonkonvolúció multimodális információk kinyeréséhez vizuálisan gazdag dokumentumokból

Ez a cikk egy grafikonkonvolúció-alapú modellt mutat be, amely a Visually Rich dokumentumokban (VRD-k) bemutatott szöveges és vizuális információkat kombinálja. A grafikon beágyazásokat arra tanítják, hogy összefoglalják egy szövegszegmens kontextusát a dokumentumban, és tovább kombinálják a szövegbeágyazásokkal az entitások kinyeréséhez.

Ebben a cikkben VRD-nek neveznek egy dokumentumot, és én ragaszkodom hozzá.

Minden dokumentum szövegszegmensek grafikonjaként van modellezve, ahol minden szövegszegmens a szegmens helyzetéből és a benne lévő szövegből áll. A grafikon csomópontokból áll, amelyek szövegszegmenseket képviselnek, és élekből, amelyek vizuális függőségeket, például relatív alakzatokat és távolságot jelentenek két csomópont között.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

A gráfkonvolúcióval előállított gráfbeágyazások összefoglalják egy szövegszegmens kontextusát a dokumentumban, amelyeket tovább kombinálnak szövegbeágyazásokkal az entitások kinyeréséhez egy szabványos BiLSTM-CRF modell segítségével.

Modell

A modell először a dokumentum minden szövegszegmensét gráfbeágyazásba kódolja, több rétegű gráfkonvolúciót használva. A beágyazás a szövegszegmensben lévő információkat reprezentálja, tekintettel annak vizuális és szöveges kontextusára. A vizuális kontextus a dokumentum elrendezése és az egyes szegmensek más szegmensekhez viszonyított helyzete. A szöveges kontextus a szöveges információk összessége a dokumentumban; A modell megtanul nagyobb súlyt rendelni a szomszédos szegmensekből származó szövegekhez. Ezután a papír egyesíti a grafikon-beágyazásokat szövegbeágyazásokkal, és szabványos BiLSTM-CRF-modellt alkalmaz az entitások kinyeréséhez.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

adatbázisba

Két valós adatkészletet használnak. Ezek hozzáadottérték-adó-számlák (VATI) és nemzetközi beszerzési nyugták (IPR). A VATI 3000, a felhasználók által feltöltött képből áll, és pontosan 16 entitást tartalmaz. Példa entitások a vevő/eladó neve, dátuma és adóösszege. A számlák kínai nyelvűek, és rögzített sablonja van, mivel nemzeti szabványos számla.

Az IPR egy 1500 szkennelt nyugtadokumentumból álló angol nyelvű adatkészlet, amely 4 pontos entitást tartalmaz (számlaszám, szállító neve, fizető neve és teljes összege). A nyugtákhoz 146 sablon létezik.

Eredmények

Az F1 pontszámot használjuk a modell teljesítményének értékelésére minden kísérletben. Az alábbi táblázat a 2. adatkészlet eredményeit tartalmazza.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Az I. alapvonal minden szövegszegmensre alkalmazza a BiLSTM-CRF-et, ahol minden szövegszegmens egy külön mondat.

A Baseline II a címkézési modellt alkalmazza az összefűzött szövegszegmensekre.

Gyorsabb-RCNN + AED

Mély tanulási megközelítés a nyugta felismeréséhez

Ez a cikk egy mély tanulási megközelítést mutat be a szkennelt nyugták felismerésére. A felismerő rendszernek két fő modulja van: a Connectionist Text Proposal Network alapú szövegfelismerés és az Attention-based Encoder-Decoder alapú szövegfelismerés. A rendszer az észlelési és felismerési feladatok F71.9-es pontszámának 1%-át érte el.

Szövegészlelés

A CTPN szerkezete hasonló a Faster R-CNN-hez, az LSTM réteg hozzáadásával. A hálózati modell alapvetően három részből áll: jellemzők kivonása VGG16-tal, kétirányú LSTM és határolódoboz regresszió.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Szövegfelismerés

Az AED a szövegsorok felismerésére szolgál. Az AED-nek két fő modulja van: a DenseNet a szöveges képből jellemzők kinyerésére, valamint egy LSTM, amely egy figyelemmodellel kombinálva a kimeneti szöveg előrejelzésére szolgál.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

adatbázisba

A SROIE 2019 adatkészletét használják. A képzési adatokat képzésre, érvényesítésre és tesztelésre osztották fel, és véletlenszerűen választották ki a képzésre vonatkozó bizonylatok 80%-át, az érvényesítési bizonylatok 10%-át, a többit pedig tesztelésre. Ennek eredményeként 500 bizonylat a képzésről, 63 nyugta az érvényesítésről és 63 a tesztelésről.

Eredmények

A szövegfelismeréshez a papír a Tightness-aware Intersection-over-Union (TIoU) módszert használja a szövegfelismeréshez, a papír F1, Precision és Recall.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Az I. táblázat a CTPN eredményét mutatja három feltétellel: CTPN az eredeti képeken; előfeldolgozás + CTPN, előfeldolgozás + CTPN + OCR ellenőrzés. A 2. táblázat az AED hálózat eredményeit mutatja.

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

Ennek természetesen van egy egyszerűbb és intuitívabb módja is.


Robusztus kell nyugta OCR adatokat kinyerni a bizonylatokból? Nézze meg a Nanonets-t nyugta OCR API!


OCR nanonetekkel

1. frissítés: Most adtuk ki a mi nyugta OCR előképzett modell. Menjen a https://app.nanonets.com oldalra, és kezdje el a tesztelést!

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

A Nanonets OCR API lehetővé teszi az OCR modellek egyszerű készítését. Az OCR-modell pontosságának növelése érdekében nem kell aggódnia a képek előfeldolgozása miatt, sem az egyező sablonok miatt, vagy szabályalapú motorokat kell felépítenie.

Feltöltheti adatait, megjegyzéseket fűzhet hozzájuk, beállíthatja a modellt betanításra, és megvárhatja az előrejelzéseket a böngésző alapú felhasználói felületen keresztül anélkül, hogy egyetlen kódsort írna, aggódna a GPU-k miatt vagy megkeresné a megfelelő architektúrákat a mély tanulási modellekhez. Ezenkívül megszerezheti az egyes előrejelzések JSON-válaszait, hogy integrálja azokat saját rendszereivel, és gépi tanulással hajtott alkalmazásokat építsen a legkorszerűbb algoritmusokra és erős infrastruktúrára.

A GUI használata: https://app.nanonets.com/

A Nanonets-OCR API-t is használhatja az alábbi lépések végrehajtásával:

1. lépés: A Repo klónozása, a függőségek telepítése

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

2. lépés: Szerezze meg ingyenes API-kulcsát
Szerezze be ingyenes API-kulcsát innen http://app.nanonets.com/#/keys

A nyugták digitalizálásának automatizálása OCR és Deep Learning segítségével

3. lépés: Állítsa be az API-kulcsot környezeti változóként

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

4. lépés: Hozzon létre egy új modellt

python ./code/create-model.py

Jegyzet: Ez létrehoz egy MODEL_ID-t, amelyre szüksége van a következő lépéshez

5. lépés: Adja hozzá a modellazonosítót környezeti változóként

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Jegyzet: megkapja az előző lépésből származó YOUR_MODEL_ID-t

6. lépés: Töltse fel a képzési adatokat
Az edzésadatok a következőben találhatók: images (képfájlok) és annotations (jegyzetek a képfájlokhoz)

python ./code/upload-training.py

7. lépés: Vonatmodell
A képek feltöltése után kezdje el a modell betanítását

python ./code/train-model.py

8. lépés: Get Model State
A modell edzése ~2 órát vesz igénybe. A modell betanítása után e-mailt fog kapni. Közben ellenőrizze a modell állapotát

python ./code/model-state.py

9. lépés: Készítsen előrejelzést
Miután a modellt betanították. A modell segítségével előrejelzéseket készíthet

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

További olvasnivalók

Frissítés:
‌ További olvasnivalók hozzáadva a nyugták OCR és Deep Learning segítségével történő automatizálásának legújabb fejlesztéseiről.

Időbélyeg:

Még több AI és gépi tanulás