Automatizzazione della digitalizzazione delle ricevute con OCR e Deep Learning PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Vuoi automatizzare l'estrazione dei dati dalle ricevute? Dai un'occhiata al pre-addestrato di Nanonets Ricevuta OCR or costruisci il tuo ricevuta personalizzata OCR. Puoi anche programmare una demo per saperne di più sui nostri casi d'uso degli AP!


Ricevuta OCR oppure la digitalizzazione delle ricevute affronta la sfida di estrarre automaticamente le informazioni da una ricevuta. In questo articolo, tratterò la teoria alla base della digitalizzazione delle ricevute e implementerò una pipeline end-to-end utilizzando OpenCV e Tesseract. Esamino anche alcuni documenti importanti che riguardano la digitalizzazione delle ricevute utilizzando il deep learning.

Che cos'è la digitalizzazione delle ricevute?

Le ricevute riportano le informazioni necessarie affinché si verifichino scambi tra le aziende e molte di esse sono su carta o in formati semi-strutturati come PDF e immagini di carta / copie cartacee. Al fine di gestire efficacemente queste informazioni, le aziende estraggono e archiviano le informazioni pertinenti contenute in questi documenti. Tradizionalmente ciò è stato ottenuto estraendo manualmente le informazioni pertinenti e inserendole in un database che è un processo ad alta intensità di manodopera e costoso.

La digitalizzazione delle ricevute affronta la sfida di estrarre automaticamente le informazioni da una ricevuta.

L'estrazione di informazioni chiave dalle ricevute e la loro conversione in documenti strutturati possono servire molte applicazioni e servizi, come l'archiviazione efficiente, l'indicizzazione rapida e l'analisi dei documenti. Svolgono ruoli fondamentali nella razionalizzazione dei processi ad alta intensità di documenti e dell'automazione degli uffici in molte aree finanziarie, contabili e fiscali.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Hai bisogno di un robusto ricevuta OCR or scanner di ricevute estrarre i dati dalle ricevute? Scopri Nanonet API OCR della ricevuta!


Chi troverà utile la digitalizzazione delle ricevute?

Ecco alcune aree in cui la digitalizzazione delle ricevute può avere un impatto enorme:

Automazione di debiti e crediti

Il calcolo manuale della contabilità fornitori (AP) e della contabilità clienti (AR) è costoso, richiede molto tempo e può creare confusione tra manager, clienti e fornitori. Con la digitalizzazione, le aziende possono eliminare questi inconvenienti e possono avere più vantaggi: maggiore trasparenza, analisi dei dati, capitale circolante migliorato e tracciamento più semplice.

Ottimizzazione della catena di approvvigionamento

Le catene di approvvigionamento sono la spina dorsale del corretto funzionamento di molte aziende. La gestione di attività, flussi di informazioni e flussi di prodotti è la chiave per garantire il controllo completo dell'offerta e della produzione. Ciò è essenziale se le organizzazioni devono rispettare i tempi di consegna e controllare i costi di produzione.

Le aziende che stanno prosperando in questi giorni hanno qualcosa di significativo in comune: una catena di fornitura digitalizzata. 89% di aziende con le catene di fornitura digitali ricevi ordini perfetti da fornitori internazionali, garantendo consegne puntuali. Uno degli elementi chiave per realizzare la catena di fornitura digitale 4.0 di prossima generazione è l'automazione dell'acquisizione e della gestione dei dati e molti di questi dati sono sotto forma di ricevute e fatture. L’inserimento manuale delle ricevute costituisce un collo di bottiglia lungo tutta la catena di fornitura e comporta ritardi inutili. Se l'elaborazione delle ricevute viene digitalizzata, può portare a notevoli guadagni in termini di tempo ed efficienza.


Hai un problema con l'OCR in mente? Vuoi digitalizzare fatture, PDF o targhe? Vai a nanonet e costruisci modelli OCR gratis!


Perché è un problema difficile?

La digitalizzazione delle ricevute è difficile poiché le ricevute hanno molte variazioni e talvolta sono di bassa qualità. La scansione delle ricevute introduce anche diversi artefatti nella nostra copia digitale. Questi artefatti pongono molti problemi di leggibilità.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Ecco un elenco di alcune cose che rendono difficile risolvere il problema

  • Testo scritto a mano
  • Caratteri piccoli
  • Immagini rumorose
  • Immagini sbiadite
  • Movimento e vibrazione della fotocamera
  • Filigrane
  • rughe
  • Testo sbiadito

Una pipeline di digitalizzazione delle ricevute tradizionale

Una pipeline tipica per questo tipo di approccio end-to-end prevede:

  • Pre-elaborazione
  • Riconoscimento ottico dei caratteri
  • Estrazione delle informazioni
  • Dump dei dati
Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Tuffiamoci più a fondo in ogni parte della pipeline. Il primo passo del processo è la preelaborazione.

Pre-elaborazione

La maggior parte delle ricevute scansionate è rumorosa e presenta artefatti, quindi affinché l'OCR e i sistemi di estrazione delle informazioni funzionino correttamente, è necessario preelaborare le ricevute. I metodi di pre-elaborazione comuni includono: scala dei grigi, soglia (binarizzazione) e rimozione del rumore.

La scala di grigi sta semplicemente convertendo un'immagine RGB in un'immagine in scala di grigi.

La rimozione del rumore comporta in genere la rimozione del rumore di sale e pepe o di rumore gaussiano.

La maggior parte dei motori OCR funziona bene con le immagini in bianco e nero. Ciò può essere ottenuto mediante la soglia, che è l'assegnazione dei valori dei pixel in relazione al valore di soglia fornito. Ogni valore di pixel viene confrontato con il valore di soglia. Se il valore del pixel è inferiore alla soglia, viene impostato a 0, altrimenti viene impostato a un valore massimo (generalmente 255).

OpenCV offre varie opzioni di soglia: Soglia semplice, Soglia adattiva

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Riconoscimento ottico dei caratteri

Il prossimo passo nella pipeline è OCR. Viene utilizzato per leggere il testo da immagini come un documento acquisito o un'immagine. Questa tecnologia viene utilizzata per convertire praticamente qualsiasi tipo di immagine contenente testo scritto (digitato, scritto a mano o stampato) in dati di testo leggibili automaticamente. L'OCR prevede 2 passaggi: rilevamento del testo e riconoscimento del testo.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Esistono diversi approcci all'OCR. L'approccio convenzionale alla visione del computer è

  • Utilizzo dei filtri per separare i personaggi dallo sfondo
  • Applicare il rilevamento dei contorni per riconoscere i caratteri filtrati
  • Usa la classificazione dei maghi per identificare i personaggi

L'applicazione di filtri e la classificazione delle immagini è piuttosto semplice (si pensi alla classificazione MNIST usando SVN), ma la corrispondenza dei contorni è un problema molto difficile e richiede molto sforzo manuale e non è generalizzabile.

Poi vengono gli approcci di Deep Learning. Il deep learning generalizza molto bene. Uno degli approcci più popolari per il rilevamento del testo è EST. EAST (Efficient accurate scene text detector) è un approccio semplice ma potente per il rilevamento del testo. La rete EAST è in realtà una versione del noto U-Net, utile per rilevare elementi di dimensioni diverse.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

CRNN ed STN-OCR (Spatial Transformer Networks) sono altri documenti popolari che eseguono l'OCR.

Estrazione delle informazioni

L'approccio più comune al problema dell'estrazione delle informazioni è basato sulle regole, in cui le regole sono scritte dopo l'OCR per estrarre le informazioni richieste. Questo è un approccio potente e preciso, ma richiede di scrivere nuove regole o modelli per un nuovo tipo di documento.

Diversi basati su regole fattura Esistono in letteratura sistemi di analisi.

I metodi basati su regole si basano fortemente sulle regole predefinite del modello per estrarre informazioni da specifici layout di fattura

Un approccio che è diventato molto comune negli ultimi anni è quello di utilizzare un framework di rilevamento oggetti standard come YOLO, Faster R-CNN per riconoscere i campi. Quindi, invece del semplice rilevamento del testo, il riconoscimento del campo e il rilevamento del testo vengono eseguiti simultaneamente. Ciò riduce le dimensioni della pipeline (Rilevamento testo → Riconoscimento → Estrazione in rilevamento → Riconoscimento). Non è necessario scrivere alcuna regola poiché il rilevatore di oggetti impara a riconoscere questi campi.

Dump dei dati

Dopo aver estratto le informazioni, il dump dei dati può essere eseguito come richiesto dal nostro caso d'uso. Spesso è utile un formato JSON per memorizzare le informazioni sui campi. Questi file JSON possono essere facilmente convertiti in file XML, fogli Excel, file CSV o file di testo in chiaro a seconda di chi vuole lavorare con i dati e come.

Digitalizzazione delle ricevute utilizzando Tesseract

Ora che abbiamo un'idea della pipeline, implementiamola su una ricevuta di esempio. Questa è la ricevuta con cui lavoreremo. Il nostro obiettivo alla fine di questo è quello di estrarre il nome del ristorante, gli articoli acquistati con la loro quantità e costo, la data di acquisto e il totale.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Pre-elaborazione

Dal momento che la nostra ricevuta è già in scala di grigi e non c'è molto rumore, farò solo il limite applicando una soglia di 210. Puoi modificare il valore per ottenere il giusto output. Troppo meno e ti perderai molto. Troppo vicino a 255 renderà tutto nero.

Dovremo prima installare OpenCV.

pip install opencv-python

Ecco il codice per il limite.

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

Ecco come appare l'output.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Rilevamento del testo

Per il rilevamento del testo userò una libreria open source chiamata Tesseract. È la libreria OCR definitiva ed è stata sviluppata da Google dal 2006. L'ultima versione di Tesseract (v4) supporta l'OCR basato sull'apprendimento profondo che è significativamente più accurato. Lo stesso motore OCR utilizza una rete LSTM (Long Short Term Memory).

Innanzitutto installiamo l'ultima versione di Tesseract.

Per Ubuntu

sudo apt install tesseract-ocr

Per macos

brew install tesseract --HEAD

Per Windows, puoi scaricare i binari da questo file pagina

Verifica la tua versione di tesseract.

tesseract -v

Produzione -

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

Installa i tuoi attacchi Tesseract + Python

Ora che abbiamo installato il binario Tesseract, ora dobbiamo installare i binding Tesseract + Python in modo che i nostri script Python possano comunicare con Tesseract. Dobbiamo anche installare il pacchetto in lingua tedesca poiché la ricevuta è in tedesco.

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

Ora che abbiamo installato Tesseract iniziamo a rilevare le caselle di testo.Tesseract ha funzionalità integrate per rilevare le caselle di testo.

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

Ecco l'output del codice di rilevamento del testo.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Riconoscimento del testo

Tesseract eseguirà l'OCR. Tesseract 4 utilizza un approccio di deep learning che offre prestazioni significativamente migliori rispetto alla maggior parte delle altre implementazioni open source.

Ecco il codice di riconoscimento del testo. Anche se è una fodera molto semplice, c'è molto che va sotto il cofano.

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

Ecco l'output non elaborato.

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

Ecco l'output formattato

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

Necessità di digitalizzare documenti, ricevute o fatture ma troppo pigro per programmare? Vai a nanonet e costruisci modelli OCR gratis!


Estrazione delle informazioni

Come ho detto prima, il modo più comune di estrarre informazioni è attraverso un approccio basato su regole.

Tutte le entrate di questo hotel seguiranno una struttura fissa e le informazioni appariranno su linee diverse. Ciò si riflette nell'output OCR in cui le nuove righe sono rappresentate da 'n'. Usando questi, scriviamo un insieme di regole per estrarre informazioni. Questo insieme di regole può essere applicato a qualsiasi ricevuta di questo hotel poiché seguiranno lo stesso formato.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Estrarrò il nome del ristorante, la data della transazione, gli articoli acquistati, la loro quantità, i costi totali per articolo e l'importo totale usando semplici comandi Python ed espressioni regolari.

Questo è un dizionario in cui memorizzerò le informazioni estratte.

receipt _ocr = {}

Il primo passo è estrarre il nome del ristorante. La posizione del nome del ristorante sarà costante in tutte le ricevute e cioè nelle prime 2 righe. Usiamolo per creare una regola.

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

Successivamente, estraiamo la data della transazione. La regex della data è piuttosto semplice.


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)

Produzione -

‘30.10.2007’

Successivamente estraiamo tutte le informazioni relative agli articoli e ai costi.

Gli articoli contengono un CHF che è il franco svizzero. Rileviamo tutte le occorrenze di CHF. Ora possiamo rilevare le linee riconoscendo i caratteri compresi tra 2 n e contenenti un CHF. Sto rilevando il totale anche qui.

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

Produzione -

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

Se noti, Tesseract ha perso un oggetto perché ha rilevato CH anziché CHF. Tratterò le sfide nei sistemi OCR tradizionali nella prossima sezione.

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

Stampa del nostro output JSON -

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

Tutte le informazioni chiave sono state estratte e scaricate in ricevuta_json ..

Problemi con l'approccio convenzionale

Anche se abbiamo estratto le informazioni, la pipeline sopra manca alcune cose ed è sub ottimale. Per ogni nuova ricevuta dobbiamo scrivere un nuovo set di regole e non è quindi scalabile.

Potrebbero esserci molte varianti di layout, font e dimensioni dei font, documenti scritti a mano ecc. Le differenze nei layout influenzeranno gli approcci basati su regole e questi devono essere presi in considerazione, il che diventa molto noioso. Le differenze nelle dimensioni dei caratteri e dei caratteri rendono difficile riconoscere ed estrarre informazioni.

Perché una pipeline di apprendimento profondo end-to-end è migliore?

Uno dei maggiori problemi con l'approccio standard è la mancanza di generalizzazione. Gli approcci basati su regole non possono essere generalizzati e nuove regole devono essere scritte per qualsiasi nuovo modello. Inoltre, è necessario tenere conto anche di eventuali modifiche o variazioni in un modello esistente.

Un approccio di apprendimento profondo sarà in grado di apprendere queste regole e sarà in grado di generalizzare facilmente in diversi layout, a condizione che li abbiamo nel nostro set di dati di formazione.

Apprendimento profondo ed estrazione di informazioni

Qui rivedo alcuni articoli che utilizzano approcci di apprendimento profondo end-to-end.

CARINO

CUTIE: Imparare a capire documenti con Estrattore di informazioni di testo universale convoluzionale

Questo documento propone un metodo di estrazione delle informazioni chiave basato sull'apprendimento con fabbisogno limitato di risorse umane. Combina le informazioni dal significato semantico e dalla distribuzione spaziale dei testi nei documenti. Il loro modello proposto, Convolutional Universal Text Information Extractor (CUTIE), applica reti neurali convoluzionali su testi a griglia in cui i testi sono incorporati come caratteristiche con connotazioni semantiche.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Il modello proposto, affronta il problema di estrazione delle informazioni chiave da parte di

  • In primo luogo la creazione di testi grigliati con la proposta metodo di mappatura posizionale della griglia. Per generare i dati della griglia per la rete neurale convoluzionale, l'immagine del documento scansionato viene elaborata da un motore OCR per acquisire i testi e le loro posizioni assolute / relative. I testi sono mappati dall'immagine del documento scansionato originale alla griglia di destinazione, in modo tale che la griglia mappata preservi la relazione spaziale originale tra i testi, ma più adatta per essere utilizzata come input per la rete neurale convoluzionale.
  • Quindi il modello CUTIE viene applicato ai testi grigliati. La ricca informazione semantica è codificata dai testi grigliati nella fase iniziale della rete neurale convoluzionale con un livello di incorporamento delle parole.

CUTIE consente di esaminare contemporaneamente sia le informazioni semantiche sia le informazioni spaziali dei testi nell'immagine del documento scansionato e può raggiungere un nuovo risultato all'avanguardia per l'estrazione delle informazioni chiave.

Modello CUTIE

Hanno 2 modelli CUTIE-A e CUTIE-B. la proposta CUTIE-A è una rete neurale convoluzionale ad alta capacità che fonde funzionalità multi-risoluzione senza perdere funzionalità ad alta risoluzione. CUTIE-B è una rete convoluzionale con convoluzione atroce per allargare il campo visivo e il modulo Atrous Spatial Pyramid Pooling (ASPP) per acquisire contesti multi-scala. Sia CUTIE-A che CUITE-B conducono un processo di codifica del significato semantico con un livello di incorporamento delle parole nella fase iniziale.

Il compito di CUTIE assomiglia al compito di segmentazione semantica. La griglia mappata contiene punti di dati sparsi (token di testo) in contrasto con le immagini realizzate con pixel. I testi chiave mappati in posizione griglia sono vicini o distanti tra loro a causa di diversi tipi di layout del documento. Pertanto, l'integrazione della capacità di elaborazione del contesto su più scale è vantaggiosa per la rete.

dataset

Il metodo proposto è valutato sulla solida sfida di lettura ICDAR 2019 sul set di dati SROIE ed è anche su un set di dati autocostruito con 3 tipi di immagini di documenti scansionate.

I Set di dati SROIE per ICDAR 2019 viene utilizzato che contiene 1000 immagini di ricevute scansionate intere. Ogni immagine della ricevuta contiene circa quattro campi di testo chiave, come nome della merce, prezzo unitario, data e costo totale. Il testo annotato nel set di dati è costituito principalmente da cifre e caratteri inglesi.

Il set di dati autocostruito contiene 4, 484 documenti di scontrini spagnoli digitalizzati con annotazioni, tra cui ricevute di taxi, ricevute di intrattenimento di pasti (ME) e ricevute di hotel, con 9 diverse classi di informazioni chiave.

Risultati

La prestazione complessiva viene valutata utilizzando la precisione media (AP - e misurata in termini di accuratezza per classe nelle 9 classi) e la precisione media morbida (softAP) in cui la predizione di una classe di informazioni chiave è determinata come corretta se le verità di base positive sono previsti correttamente anche se nella previsione finale sono inclusi alcuni falsi positivi. L'analisi congiunta di AP e softAP fornisce una migliore comprensione delle prestazioni del modello.

Puoi vedere i risultati nella tabella qui sotto.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

GCN per VRD

Convoluzione del grafico per l'estrazione di informazioni multimodali da documenti visivamente ricchi

Questo documento introduce un modello basato sulla convoluzione del grafico per combinare informazioni testuali e visive presentate in documenti Visually Rich (VRD). Gli incorporamenti di grafici vengono addestrati per riepilogare il contesto di un segmento di testo nel documento e ulteriormente combinati con incorporamenti di testo per l'estrazione di entità.

In questo documento chiamano un documento un VRD e lo seguirò.

Ogni documento è modellato come un grafico di segmenti di testo, in cui ogni segmento di testo è composto dalla posizione del segmento e dal testo al suo interno. Il grafico è composto da nodi che rappresentano segmenti di testo e bordi che rappresentano dipendenze visive, come forme relative e distanza, tra due nodi.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Gli incorporamenti di grafici prodotti dalla convoluzione dei grafici riassumono il contesto di un segmento di testo nel documento, che sono ulteriormente combinati con gli incorporamenti di testo per l'estrazione di entità utilizzando un modello BiLSTM-CRF standard.

Modello

Il modello prima codifica ogni segmento di testo nel documento nell'incorporamento del grafico, usando più livelli di convoluzione del grafico. L'incorporamento rappresenta le informazioni nel segmento di testo dato il suo contesto visivo e testuale. Il contesto visivo è il layout del documento e le posizioni relative del singolo segmento rispetto ad altri segmenti. Il contesto testuale è l'aggregato delle informazioni di testo nel documento in generale; Il modello impara ad assegnare pesi più elevati ai testi dei segmenti vicini. Quindi il documento combina gli incastri grafici con gli incastri testo e applica un modello BiLSTM-CRF standard per l'estrazione di entità.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

dataset

Vengono utilizzati due set di dati del mondo reale. Si tratta delle fatture relative all'imposta sul valore aggiunto (VATI) e delle ricevute di acquisto internazionali (IPR). VATI è composto da 3000 immagini caricate dagli utenti e ha 16 entità da esatti. Le entità di esempio sono i nomi dell'acquirente/venditore, la data e l'importo dell'imposta. Le fatture sono in cinese e hanno un modello fisso poiché è una fattura standard nazionale.

IPR è un set di dati di 1500 documenti scontrini scansionati in inglese che ha 4 entità da precisare (numero fattura, nome fornitore, nome del pagatore e importo totale). Esistono 146 modelli per le ricevute.

Risultati

Il punteggio F1 viene utilizzato per valutare le prestazioni del modello in tutti gli esperimenti. La tabella seguente riporta i risultati su set di dati thr 2.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

La linea di base I applica BiLSTM-CRF a ciascun segmento di testo, in cui ogni segmento di testo è una singola frase.

La linea di base II applica il modello di tagging ai segmenti di testo concatenati.

Più veloce-RCNN + AED

Approccio di apprendimento profondo per il riconoscimento delle ricevute

Questo documento presenta un approccio di apprendimento approfondito per il riconoscimento delle ricevute digitalizzate. Il sistema di riconoscimento ha due moduli principali: il rilevamento del testo basato sulla rete di proposte di testo di Connectionist e il riconoscimento del testo basato su Encoder-Decoder basato sull'attenzione. Il sistema ha raggiunto il 71.9% del punteggio F1 per l'attività di rilevazione e riconoscimento.

Rilevazione del testo

La struttura CTPN è simile alla R-CNN più veloce, con l'aggiunta del livello LSTM. Il modello di rete è costituito principalmente da tre parti: estrazione delle funzioni tramite VGG16, LSTM bidirezionale e regressione del riquadro di selezione

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Riconoscimento del testo

Il DAE viene utilizzato per riconoscere le righe di testo. Il DAE ha due moduli principali: DenseNet per l'estrazione di funzioni da un'immagine di testo e un LSTM combinato con un modello di attenzione per la previsione del testo di output.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

dataset

Viene utilizzato il set di dati di SROIE 2019. Hanno diviso i dati di training in training, validation e testing e hanno selezionato casualmente l'80% delle entrate per la formazione, il 10% delle entrate per la validazione e il resto per i test. Ne risultano 500 ricevute per l'addestramento, 63 ricevute per la convalida e 63 per i test.

Risultati

Per il rilevamento del testo, il documento utilizza l'Intersezione sull'Unione (TIoU) sensibile alla tenuta. Per il riconoscimento del testo, il documento utilizzava F1, Precisione e Richiamo.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

La tabella I mostra il risultato di CTPN con tre condizioni: CTPN su immagini originali; pre-elaborazione + CTPN, pre-elaborazione + CTPN + verifica OCR. La tabella 2 mostra i risultati della rete DAE.

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Naturalmente esiste un modo più semplice e intuitivo per farlo.


Hai bisogno di un robusto ricevuta OCR estrarre i dati dalle ricevute? Scopri Nanonet API OCR della ricevuta!


OCR con nanoneti

Aggiornamento n. 1: abbiamo appena rilasciato il nostro ricevuta OCR modello pre-addestrato. Vai su https://app.nanonets.com e inizia a testare!

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

I API OCR di nanoneti ti permette di costruire facilmente modelli OCR. Non devi preoccuparti di pre-elaborare le tue immagini o preoccuparti di abbinare modelli o costruire motori basati su regole per aumentare l'accuratezza del tuo modello OCR.

Puoi caricare i tuoi dati, annotarli, impostare il modello per l'addestramento e attendere la previsione attraverso un'interfaccia utente basata su browser senza scrivere una singola riga di codice, preoccuparti delle GPU o trovare le architetture giuste per i tuoi modelli di apprendimento profondo. Puoi anche acquisire le risposte JSON di ciascuna previsione per integrarla con i tuoi sistemi e creare app basate su machine learning basate su algoritmi all'avanguardia e una solida infrastruttura.

Utilizzando la GUI: https://app.nanonets.com/

È inoltre possibile utilizzare l'API Nanonets-OCR procedendo come segue:

Passaggio 1: clonare il Repo, installare le dipendenze

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

Passaggio 2: ottieni la tua chiave API gratuita
Ottieni la tua chiave API gratuita da http://app.nanonets.com/#/keys

Automatizzare la digitalizzazione delle ricevute con OCR e Deep Learning

Passaggio 3: impostare la chiave API come variabile di ambiente

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Passaggio 4: creare un nuovo modello

python ./code/create-model.py

Nota: Questo genera un MODEL_ID necessario per il passaggio successivo

Passaggio 5: aggiungere l'ID modello come variabile di ambiente

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Nota: otterrai YOUR_MODEL_ID dal passaggio precedente

Passaggio 6: carica i dati di allenamento
I dati di allenamento sono disponibili in images (file di immagine) e annotations (annotazioni per i file di immagine)

python ./code/upload-training.py

Passaggio 7: modello di treno
Una volta caricate le immagini, inizia ad addestrare il modello

python ./code/train-model.py

Passaggio 8: ottenere lo stato del modello
Il modello impiega circa 2 ore ad allenarsi. Riceverai un'email una volta che il modello è stato addestrato. Nel frattempo controlli lo stato del modello

python ./code/model-state.py

Passaggio 9: fai una previsione
Una volta che il modello è stato addestrato. È possibile effettuare previsioni utilizzando il modello

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

Letture consigliate

Aggiornare:
‌ Aggiunto ulteriore materiale di lettura sugli ultimi progressi nell'automazione della digitalizzazione delle ricevute utilizzando OCR e Deep Learning.

Timestamp:

Di più da AI e apprendimento automatico