Come eseguire facilmente il riconoscimento della scrittura utilizzando il machine learning PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Vuoi fare l'OCR scritto a mano? Questo blog offre una panoramica completa degli ultimi metodi di riconoscimento della grafia utilizzando il deep learning. Abbiamo esaminato le ultime ricerche e documenti e abbiamo anche creato un lettore di grafia da zero.


nanonet API OCR ha molti interessanti casi d'uso. Parla con un esperto di IA di Nanonets per saperne di più.


Introduzione

La dimensione del mercato del riconoscimento ottico dei caratteri (OCR) dovrebbe raggiungere i 13.38 miliardi di dollari entro il 2025 con una crescita anno su anno del 13.7%. Questa crescita è guidata dalla rapida digitalizzazione dei processi aziendali che utilizzano l'OCR per ridurre i loro costi di manodopera e risparmiare preziose ore di lavoro. Sebbene l'OCR sia stato considerato un problema risolto, ne esiste una componente chiave, il riconoscimento della scrittura a mano (Handwriting OCR) o il riconoscimento del testo scritto a mano (HTR), che è ancora considerato una dichiarazione di problema impegnativo. L'elevata varianza negli stili di scrittura a mano tra le persone e la scarsa qualità del testo scritto a mano rispetto al testo stampato pongono ostacoli significativi nel convertirlo in testo leggibile dalla macchina. Tuttavia è un problema cruciale da risolvere per diversi settori come quello sanitario, assicurativo e bancario.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico
Fonte :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

I recenti progressi nel deep learning, come l'avvento delle architetture dei trasformatori, hanno accelerato i nostri progressi nel crackare il riconoscimento del testo scritto a mano. Il riconoscimento del testo scritto a mano è denominato Intelligent Character Recognition (ICR) perché gli algoritmi necessari per risolvere l'ICR richiedono molta più intelligenza rispetto alla risoluzione dell'OCR generico.

In questo articolo impareremo il compito del riconoscimento del testo scritto a mano, le sue complessità e come possiamo risolverlo usando tecniche di deep learning.


Vuoi estrarre dati da moduli scritti a mano? Vai a nanonet e inizia a creare gratuitamente modelli OCR per la scrittura a mano!


Sfide nel riconoscimento della grafia

  1. Enorme variabilità e ambiguità degli ictus da persona a persona
  2. Anche lo stile di scrittura di una singola persona varia di volta in volta ed è incoerente
  3. Scarsa qualità del documento / immagine di origine a causa del degrado nel tempo
  4. Il testo nei documenti stampati si trova su una linea retta mentre gli esseri umani non hanno bisogno di scrivere una riga di testo in linea retta su carta bianca
  5. La grafia corsiva rende difficile la separazione e il riconoscimento dei caratteri
  6. Il testo in scrittura a mano può avere una rotazione variabile a destra che è in contrasto con il testo stampato in cui tutto il testo si trova dritto
  7. La raccolta di un buon set di dati etichettato da apprendere non è economica rispetto ai dati sintetici

Utilizzo Tipico

Sanità e prodotti farmaceutici

La digitalizzazione delle prescrizioni dei pazienti è uno dei principali punti dolenti nell'industria farmaceutica / sanitaria. Ad esempio, Roche gestisce quotidianamente milioni di petabyte di PDF medici. Un'altra area in cui il rilevamento del testo scritto a mano ha un impatto chiave è l'arruolamento dei pazienti e la digitalizzazione dei moduli. Aggiungendo il riconoscimento della grafia al loro kit di servizi, gli ospedali / i prodotti farmaceutici possono migliorare in modo significativo l'esperienza dell'utente

Assicurazione

Una grande industria assicurativa riceve più di 20 milioni di documenti al giorno e un ritardo nell'elaborazione del reclamo può avere un impatto terribile sull'azienda. Il documento di reclamo può contenere diversi stili di scrittura a mano e la pura automazione manuale dell'elaborazione dei reclami rallenterà completamente la pipeline

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico
Fonte: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Settore bancario

Le persone scrivono assegni regolarmente e gli assegni svolgono ancora un ruolo importante nella maggior parte delle transazioni non in contanti. In molti paesi in via di sviluppo, l'attuale procedura di elaborazione degli assegni richiede che un impiegato della banca legga e inserisca manualmente le informazioni presenti su un assegno e verifichi anche le voci come la firma e la data. Poiché un gran numero di assegni deve essere elaborato ogni giorno in una banca, un sistema di riconoscimento del testo scritto a mano può far risparmiare costi e ore di lavoro umano

Biblioteche in linea

Enormi quantità di conoscenza storica vengono digitalizzate caricando le scansioni di immagini per l'accesso al mondo intero. Ma questo sforzo non è molto utile fino a quando il testo nelle immagini non può essere identificato che può essere indicizzato, interrogato e sfogliato. Il riconoscimento della grafia gioca un ruolo chiave nel riportare in vita documenti, cartoline, studi di ricerca, ecc. Medievali e del XX secolo.

Metodi

I metodi di riconoscimento della grafia possono essere ampiamente classificati nei due tipi seguenti

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico
  1. Metodi online : - I metodi in linea coinvolgono una penna / stilo digitale e hanno accesso alle informazioni sul tratto, alla posizione della penna mentre il testo viene scritto come mostrato nella figura sopra a destra. Poiché tendono ad avere molte informazioni riguardo al flusso di testo che viene scritto, possono essere classificati con una precisione piuttosto elevata e la demarcazione tra i diversi caratteri nel testo diventa molto più chiara
  2. Metodi offline :- I metodi offline implicano il riconoscimento del testo una volta che è stato scritto e quindi non avranno informazioni sui tratti/direzioni coinvolte durante la scrittura con una possibile aggiunta di alcuni rumori di fondo dalla fonte, ad esempio la carta.

Nel mondo reale non è sempre possibile/scalabile portare una penna digitale con sensori per acquisire informazioni sul tratto e quindi il compito di riconoscere il testo offline è un problema molto più rilevante. Pertanto, ora discuteremo varie tecniche per risolvere il problema del riconoscimento del testo offline.

tecniche

Gli approcci iniziali alla risoluzione del riconoscimento della grafia prevedevano metodi di Machine Learning come Hidden Markov Models (HMM), SVM ecc. Una volta che il testo iniziale è stato pre-elaborato, viene eseguita l'estrazione delle caratteristiche per identificare informazioni chiave come loop, punti di flessione, proporzioni ecc. di carattere individuale. Queste funzionalità generate vengono ora inviate a un classificatore, ad esempio HMM, per ottenere i risultati. Le prestazioni dei modelli di machine learning sono piuttosto limitate a causa della fase di estrazione manuale delle funzionalità e della loro limitata capacità di apprendimento. Il passaggio di estrazione delle funzionalità varia per ogni singola lingua e quindi non è scalabile. Con l'avvento del deep learning sono arrivati ​​enormi miglioramenti nell'accuratezza del riconoscimento della grafia. Discutiamo alcune delle importanti ricerche nell'area del deep learning per il riconoscimento della grafia

Reti neurali ricorrenti multidimensionali

Come sappiamo, RNN/LSTM può gestire dati sequenziali per identificare modelli temporali e generare risultati. Ma sono limitati alla gestione dei dati 1D e quindi non saranno direttamente applicabili ai dati dell'immagine. Per risolvere questo problema, gli autori in questo articolo hanno proposto una struttura multidimensionale RNN/LSTM come si può vedere nella figura seguente

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Quanto segue è la differenza tra un RNN generale e un RNN multidimensionale. In un RNN generale, il livello nascosto dice che riceve lo stato da un precedente livello nascosto nel tempo i-1. In RNN multidimensionale diciamo per esempio un RNN bidimensionale, lo strato nascosto (i, j) riceve stati da più strati nascosti precedenti cioè (i-2, j) e (i, j-1) e quindi cattura il contesto da entrambi altezza e larghezza in un'immagine che è fondamentale per ottenere una chiara comprensione della regione locale da parte di una rete. Questo è ulteriormente esteso per ottenere informazioni non solo dai livelli precedenti ma anche da quelli futuri, in modo simile a come un BI-LSTM riceve le informazioni da t-1 e t + 1. Allo stesso modo un livello nascosto MDRNN 1D posso ora ricevere informazioni (i-2, j), (i, j-1), (i + 1, j), (i, j + 1) catturando così il contesto in tutte le direzioni

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

L'intera struttura della rete è mostrata sopra. Viene utilizzato MDLSTM che non è altro che la sostituzione del blocco RNN con un blocco LSTM dalla discussione precedente di MDRNN. L'input è diviso in blocchi di dimensioni 3 × 4 che ora vengono inseriti nei livelli MDSTM. La rete ha una struttura gerarchica di livelli MDLSTM seguita da livelli feed-forward (ANN) in tandem. Quindi l'output finale viene convertito in un vettore 1D e viene assegnato alla funzione CTC per generare l'output

Classificazione temporale connessionista (CTC) è un algoritmo utilizzato per gestire attività come riconoscimento vocale, riconoscimento della grafia ecc. in cui sono disponibili solo i dati di input e la trascrizione di output ma non vengono forniti dettagli di allineamento, ad esempio come una particolare regione nell'audio per il parlato o una particolare regione nelle immagini per la scrittura a mano è allineato a un carattere specifico. Semplici euristiche come assegnare a ogni personaggio la stessa area non funzioneranno poiché la quantità di spazio occupata da ciascun personaggio varia nella scrittura a mano da persona a persona e di volta in volta.

Per il nostro caso d'uso di riconoscimento della grafia, considera le regioni dell'immagine di input per una frase particolare come input X=[x1,x2, ...,x ** T] mentre l'output previsto come Y=[y1,y2, ...,y ** U] . Dato X dovremmo trovare Y accurato. L'algoritmo CTC funziona prendendo l'input X e fornendo la distribuzione su tutti i possibili Y usando il quale possiamo fare una previsione per l'output finale.

CTC utilizza un carattere di base, ad esempio, per distinguere tra caratteri duplicati e caratteri ripetuti in una regione di input. Ad esempio, un particolare carattere può estendersi su più regioni di input e quindi CTC emetterebbe lo stesso carattere consecutivamente. Esempio: - Input james e Output di CTC è jjaammmees. L'output finale è derivato comprimendo gli output ripetuti e quindi otteniamo james. Ma ora per presentare caratteri duplicati, dire "l" in ciao, è necessario disporre di una separazione in atto e quindi tutti gli output sono separati da trattino (-). Ora l'output per ciao potrebbe essere h-ee-ll-lll-oo che, se compresso, diventerà ciao e non ciao. Maggiori informazioni su come funziona CTC possono essere viste qui CTC.

Durante la decodifica dell'output di CTC in base alla semplice euristica della massima probabilità per ciascuna posizione, potremmo ottenere risultati che potrebbero non avere alcun senso nel mondo reale. Per risolvere questo problema potremmo utilizzare un decoder diverso per migliorare i risultati. Discutiamo di diversi tipi di decodifiche

  1. Decodifica del percorso migliore : - Questa è la decodifica generica di cui abbiamo discusso finora. In ogni posizione prendiamo l'output del modello e troviamo il risultato con la più alta probabilità.
  2. Decodifica della ricerca del raggio : - Invece di prendere un singolo output dalla rete ogni volta che la ricerca del raggio suggerisce di mantenere più percorsi di output con le più alte probabilità di ogni ed espandere la catena con nuovi output e percorsi di rilascio con minori probabilità di mantenere costante la dimensione del raggio. I risultati ottenuti con questo approccio sono più accurati rispetto all'utilizzo dell'approccio avido
  3. Beam search con modello linguistico :- La ricerca del raggio fornisce risultati più accurati rispetto alla ricerca della griglia, ma non risolverà comunque il problema di avere risultati significativi. Per risolvere questo problema, possiamo utilizzare un modello linguistico insieme alla ricerca del raggio utilizzando sia le probabilità del modello che il modello del linguaggio per generare risultati finali.

In questo documento è possibile esaminare maggiori dettagli sulla generazione di risultati di decodifica accurati articolo

Encoder-Decoder e reti di attenzione

I modelli Seq2Seq con reti codificatore-decodificatore sono stati recentemente popolari per risolvere i compiti di riconoscimento vocale, traduzione automatica ecc. e quindi sono stati estesi per risolvere il caso d'uso del riconoscimento della grafia implementando un meccanismo di attenzione aggiuntivo. Discutiamo di alcune ricerche seminali in questo settore

Scansiona, partecipa e leggi

In questo lavoro fondamentale Scan, Attend and Read (SAR) gli autori propongono l'uso di un modello basato sull'attenzione per il riconoscimento end-to-end della grafia. Il contributo principale della ricerca è la trascrizione automatica del testo senza segmentare in linee come fase di pre-elaborazione e quindi può scansionare un'intera pagina e dare risultati.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

SAR utilizza un'architettura basata su MDLSTM simile a quella discussa sopra con una piccola modifica al livello finale. Dopo l'ultimo layer lineare, ovvero il blocco Sum finale nella figura sopra, le mappe delle caratteristiche vengono compresse nella dimensione verticale e viene applicata una funzione softmax finale per ottenere gli output.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

L'architettura SAR è costituita da un'architettura MDLSTM che funge da estrattore di funzionalità. L'ultimo modulo collassante con un'uscita softmax e perdita CTC è sostituito da un modulo di attenzione e un decodificatore LSTM. Il modello di attenzione utilizzato è una combinazione ibrida di attenzione basata sul contenuto e attenzione basata sulla posizione, spiegata in modo più dettagliato nel documento successivo. I moduli LSTM del decodificatore prendono lo stato precedente, la mappa di attenzione precedente e le caratteristiche del codificatore per generare il carattere di output finale e il vettore di stato per la previsione successiva.

Convolgi, partecipa e scrivi

Questo articolo propone un modello da sequenza a sequenza basato sull'attenzione per il riconoscimento delle parole scritte a mano. L'architettura proposta si compone di tre parti principali: un codificatore, costituito da una CNN e un GRU bidirezionale, un meccanismo di attenzione dedicato alla focalizzazione sulle caratteristiche pertinenti e un decodificatore formato da un GRU unidirezionale, in grado di sillabare la parola corrispondente, carattere per carattere.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Il codificatore utilizza una CNN per estrarre le caratteristiche visive. Come estrattore di funzionalità viene utilizzata un'architettura VGG-19-BN pre-addestrata. L'immagine di input viene convertita nella mappa delle caratteristiche X che viene quindi rimodellata in X' dividendo tutti i canali in base alla colonna e combinandoli per ottenere le informazioni sequenziali. X' viene ulteriormente convertito in H utilizzando un GRU bidirezionale. GRU è una rete neurale simile a LSTM in natura e può acquisire informazioni temporali.

Inoltre, viene impiegato un modello dell'attenzione durante la previsione dell'uscita dal decodificatore. Il documento discute due diversi tipi di meccanismi di attenzione esplorati.

  1. Attenzione basata sui contenuti : - L'idea alla base di questo è trovare la somiglianza tra lo stato nascosto corrente del decoder e la mappa delle caratteristiche dal codificatore. Possiamo trovare i vettori di caratteristiche più correlate nella mappa delle caratteristiche del codificatore, che può essere utilizzata per prevedere il carattere corrente nella fase temporale corrente. Maggiori dettagli su come funziona il meccanismo di attenzione possono essere visti da qui Attenzione
  2. Attenzione basata sulla posizione :- Il principale svantaggio dei meccanismi di localizzazione basati sul contenuto è che esiste un presupposto implicito che le informazioni sulla posizione siano incorporate nell'output del codificatore. Altrimenti non c'è modo di differenziare tra output di caratteri che vengono ripetuti dal decoder. Ad esempio, considera una parola Charmander, il carattere a viene ripetuto due volte e senza informazioni sulla posizione il decodificatore non sarà in grado di prevederli come caratteri separati. Per alleviare ciò, il carattere corrente e il suo allineamento vengono previsti utilizzando sia l'uscita dell'encoder che l'allineamento precedente. È possibile visualizzare maggiori dettagli su come funziona la partecipazione basata sulla posizione qui.

Il decoder è un GRU multistrato unidirezionale. Ad ogni passo temporale t riceve l'input dal passo temporale precedente e il vettore di contesto dal modulo di attenzione. La decodifica multinomiale e il livellamento delle etichette vengono esplorati durante la formazione per migliorare la capacità di generalizzazione.

Modelli di trasformatori

Sebbene le reti codificatore-decodificatore siano state abbastanza buone nel raggiungere risultati per il riconoscimento della grafia, hanno un collo di bottiglia nella formazione a causa dei livelli LSTM coinvolti e quindi non possono essere parallelizzate. Recentemente i trasformatori hanno avuto un discreto successo e hanno sostituito LSTM nella risoluzione di vari compiti relativi alla lingua. Discutiamo ora come i modelli basati su trasformatore possono essere applicati per il riconoscimento della grafia.

Presta attenzione a ciò che leggi

In questo lavoro gli autori hanno proposto l'uso di un'architettura basata su trasformatore utilizzando livelli di auto-attenzione di attenzione a più teste sia nelle fasi visive che in quelle testuali e quindi possono apprendere sia il riconoscimento dei caratteri che le dipendenze legate al linguaggio delle sequenze di caratteri da decodificare. Poiché la conoscenza della lingua è incorporata nel modello stesso, non sono necessarie ulteriori fasi di post-elaborazione utilizzando un modello linguistico e quindi ha la capacità di prevedere gli output che non fanno parte del vocabolario. Per ottenere questo risultato, la codifica del testo avviene a livello di carattere e non a livello di parola. Poiché l'architettura del trasformatore consente di addestrare il modello in parallelo per ogni regione o carattere, il processo di addestramento è molto semplificato.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

L'architettura di rete è costituita dai seguenti componenti

  1. Codificatore visivo : - Per estrarre le caratteristiche rilevanti e applicare l'auto-attenzione visiva a più teste su diverse posizioni dei personaggi
  2. Trascrittore di testo : - Svolge il compito di prendere l'input di testo, codificarlo, applicare l'auto-attenzione in un linguaggio a più teste e applicare l'attenzione reciproca sulle caratteristiche sia visive che testuali.
Codificatore visivo

La dorsale di Resnet50 deve essere utilizzata per aggiungere le funzionalità, come si può vedere nella figura sopra. L'output della mappa delle caratteristiche tridimensionale da Resnet3 Fc viene passato al modulo di codifica temporale che si rimodella in 50d mantenendo la stessa larghezza e quindi la forma di (fxh, w). Questo viene inserito in uno strato completamente connesso per ridurre la forma a (f, w) e l'output risultante è Fc'. Inoltre, a Fc' viene aggiunta una codifica posizionale TE per conservare le informazioni sulla posizione come menzionato nel paper Transformer di Vaswani. È possibile visualizzare ulteriori informazioni su come è progettata l'architettura del trasformatore qui. L'output viene passato attraverso un layer completamente connesso per ottenere la mappa delle caratteristiche finali con forma (f, w). L'output finale viene passato attraverso un modulo di attenzione a più teste con 8 teste per ottenere una mappa visiva ricca di funzionalità

Trascrittore di testo

Il testo di input viene passato attraverso un codificatore che genera incorporamenti a livello di carattere. Questi incorporamenti sono combinati con una posizione temporale simile al modo in cui Visual Encoder utilizza un modulo Temporal Encoder. Questo risultato viene quindi passato a un modulo di auto-attenzione per la lingua multi-head che è simile al modulo di attenzione nel codificatore visivo. Le caratteristiche del testo generate lungo le caratteristiche visive dal codificatore visivo vengono passate a un modulo di attenzione reciproca il cui compito è allineare e combinare le caratteristiche apprese sia dalle immagini che dagli input di testo. L'output viene passato attraverso una funzione softmax per ottenere il risultato finale.

Durante la valutazione sui dati del test, le trascrizioni non sono disponibili. Quindi solo il token di inizio <S> viene passato come input e il primo carattere previsto viene restituito al sistema, che emette il secondo carattere previsto. Questo processo di inferenza viene ripetuto in un ciclo fino a quando viene prodotta la fine del simbolo di sequenza <E> o quando viene raggiunta la lunghezza massima di output N.

Generazione di testo per la scrittura a mano

La generazione di testo a mano è il compito di generare testo scritto a mano dall'aspetto reale e quindi può essere utilizzato per aumentare i set di dati esistenti. Come sappiamo, il deep learning richiede molti dati per essere addestrato mentre ottenere un enorme corpus di immagini di grafia etichettate per lingue diverse è un compito ingombrante. Per risolvere questo problema, possiamo utilizzare le Reti Competenti Generative per generare dati di addestramento. Discutiamo di una di queste architetture qui

Scarabeo GAN

ScrabbleGAN segue un approccio semi-supervisionato per sintetizzare immagini di testo scritto a mano che sono versatili sia nello stile che nel lessico. Ha la capacità di generare immagini di varia lunghezza. Il generatore può anche manipolare lo stile di testo risultante che ci permette di decidere se il testo deve essere corsivo o dire quanto spesso / sottile deve essere il tratto della penna

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

L'architettura consiste in un generatore completamente convoluzionale basato su BigGAN. Per ogni carattere nell'input viene scelto un filtro corrispondente e tutti i valori vengono concatenati insieme che viene poi moltiplicato per un vettore rumore z che controlla lo stile di testo generato. Come si può vedere sopra, le regioni generate per ogni singolo carattere si sovrappongono aiutando così a generare testo ricorsivo connesso oltre a consentire la flessibilità di diverse dimensioni dei caratteri. Ad esempio m occupa gran parte dello spazio mentre eet occupa un'area limitata. Per mantenere lo stesso stile per l'intera parola o frase, il vettore di stile z viene mantenuto costante per tutti i caratteri.

Un discriminatore convoluzionale basato sull'architettura BigGAN viene utilizzato per classificare se lo stile di generazione delle immagini sembra falso o reale. Il discriminatore non si basa su annotazioni a livello di carattere e quindi non si basa su un GAN condizionale di classe. Il vantaggio di questo è che non c'è bisogno di dati etichettati e quindi i dati di un corpus invisibile che non fa parte dei dati di addestramento possono essere utilizzati per discriminatori di addestramento. Insieme al discriminatore, viene addestrato un riconoscitore di testo R per classificare se il testo generato ha un senso nel mondo reale o se è incomprensibile. Il riconoscimento si basa su architetture CRNN con la testina ricorrente rimossa per rendere il riconoscimento un po' più debole e non riconoscere il testo anche se non è chiaro. Il testo generato nell'output di R viene confrontato con il testo di input fornito al generatore e viene aggiunta una penalità corrispondente alla funzione di perdita.

Gli output generati da ScrabbleGAN sono mostrati di seguito

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Set di dati: -

  1. IAM : - Il set di dati IAM contiene circa 100 immagini di parole in lingua inglese con parole scritte da 657 autori diversi. Il set di addestramento, test e convalida contiene parole scritte da autori che si escludono a vicenda Link: - http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - Il set di dati CVL è costituito da sette documenti scritti a mano da circa 310 partecipanti, che si traducono in circa 83 raccolti di parole, suddivisi in set di treni e test Link: - https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. RIMES : - Contiene parole dalla lingua francese di circa 60 immagini e scritte da 1300 autori corrispondenti a circa 5 mail scritte da ciascuna persona. http://www.a2ialab.com/doku.php?id=rimes_database:start

Metriche: -

Tasso di errore dei caratteri : - Viene calcolata come la distanza di Levenshtein che è la somma delle sostituzioni di caratteri (Sc), inserimenti (Ic) e delezioni (Dc) necessarie per trasformare una stringa nell'altra, diviso per il numero totale di caratteri nel groundtruth (Nc)

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Tasso di errore di Word : - Viene calcolato come la somma delle sostituzioni di parole (Sw), degli inserimenti (Iw) e delle delezioni (Dw) necessarie per trasformare una stringa nell'altra, diviso per il numero totale di parole nel groundtruth (Nw)

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Addestra il tuo modello di riconoscimento della grafia

Ora vediamo come possiamo addestrare il nostro modello di riconoscimento del testo scritto a mano. Effettueremo il training sul set di dati IAM, ma puoi anche addestrare il modello sul tuo set di dati. Discutiamo i passaggi coinvolti nella configurazione di questo

Dati

Per scaricare il set di dati IAM registrati da qui. Una volta registrato, scarica words.tgz da qui. Contiene un set di dati di immagini di parole scritte a mano. Scarica anche il file di annotazione words.txt da qui.

Se desideri utilizzare il tuo set di dati, devi seguire la struttura dei dati del set di dati IAM.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Quanto sopra mostra come appare la struttura delle cartelle del set di dati AIM. Qui a01, a02 ecc. rappresentano le cartelle principali ciascuna con sottocartelle di dati. Ogni sottocartella ha un insieme di immagini con il nome della cartella aggiunto come prefisso al nome del file.

Inoltre abbiamo bisogno di un file di annotazione per menzionare i percorsi dei file di immagini e le trascrizioni corrispondenti. Considera ad esempio l'immagine sopra con il testo che nomina, quella sotto sarebbe la rappresentazione nel file di annotazione words.txt

a01-000u-01-00 ok 156 VBG nomina

  1. a01-000u-01-00 -> id parola per una riga nella forma a01-000u
  2. ok / err -> Indicatore di qualità dell'output di segmentazione
  3. 156 -> livello di grigio per binarizzare la riga contenente questa parola
  4. 395 932 441 100 -> riquadro di delimitazione attorno a questa parola in formato x, y, w, h
  5. VBG -> il tag grammaticale per questa parola. Qui è il verbo gerundio
  6. nominando -> la trascrizione di questa parola

Architettura :-

Addestreremo un'architettura basata su CRNN con perdita di CTC. Una CNN viene utilizzata per estrarre le caratteristiche visive che vengono passate a un RNN e una perdita CTC viene applicata all'estremità con un decodificatore avido per ottenere l'output.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Training

Useremo il codice CRNN da qui per addestrare il nostro modello. Seguire i passaggi dal basso per preparare i dati

python checkDirs.py

Esegui il comando sopra e dovresti vedere un output come di seguito

[OK] parole /
[OK] parole / a01 / a01-000u /
[OK] parole.txt
[OK] prova.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Ora sei pronto per iniziare l'allenamento.

Vai alla directory principale ed esegui

python main.py --train

Risultati

Dopo l'addestramento per circa 50 epoche, il tasso di errore dei caratteri (CER) è del 10.72% mentre il tasso di errore delle parole (WER) è del 26.45% e quindi la precisione delle parole è del 73.55%. Alcune delle previsioni possono essere viste nella figura sottostante.

Come eseguire facilmente il riconoscimento della scrittura a mano utilizzando l'apprendimento automatico

Il modello è in grado di prevedere i personaggi in modo accurato in larga misura, ma in pochi casi ne risente, in quanto è previsto terribilmente come anally, le storie sono previste come stelle. Questi problemi possono essere risolti utilizzando un modello linguistico come fase di post-elaborazione insieme al decodificatore che può generare parole significative e correggere semplici errori.

Sommario

Sebbene ci siano stati sviluppi significativi nella tecnologia che aiutano a riconoscere meglio il testo scritto a mano, l'HTR è tutt'altro che un problema risolto rispetto all'OCR e quindi non è ancora ampiamente utilizzato nell'industria. Tuttavia, con il ritmo dell'evoluzione tecnologica e con l'introduzione di modelli come i trasformatori, possiamo aspettarci che i modelli HTR diventino presto un luogo comune.

Per approfondire la ricerca su questo argomento puoi iniziare qui

Letture consigliate

Timestamp:

Di più da AI e apprendimento automatico