2010-06-10 14 views
7

Sto lavorando a un'applicazione che richiede la corrispondenza dei numeri da un file di immagine scansionato alla voce del database e aggiorna il database con il risultato della corrispondenza.Lettura carattere dall'immagine

Dire che ho image- employee1.jpg. Questa immagine avrà due due voci manoscritte: il numero del dipendente e l'importo da pagare al dipendente. Devo leggere il numero del dipendente dall'immagine e interrogare il database per quel numero, aggiornare il dipendente con l'importo da pagare come ottenuto dall'immagine. Sia il numero del dipendente che l'importo da pagare sono scritti all'interno di due caselle in un punto specifico dell'immagine.

C'è un modo per automatizzare questo. Fondamentalmente voglio una soluzione in .net usando C#. So che questo può essere fatto usando reti neurali artificiali.

Qualsiasi idea sarebbe molto apprezzata.

risposta

1

C'è LEADTOOLS SDK per OCR/ICR. Questo è molto utile nel riconoscere i caratteri scritti a mano. Sto facendo uno studio di fattibilità con questo, e fino ad ora penso che funzionerà. LEADTOOLS hanno fornito elementi che possono essere utilizzati nella vostra applicazione, supporta C, C++, C#, VB.Net ecc

È possibile visitare il seguente link per questo: http://www.leadtools.com/downloads/default.htm?category=

1

Il riconoscimento del motivo è un esempio di base quando si studiano le reti neurali. Non so se c'è qualche libreria/framework per lavorare con l'intelligenza artificiale in C#. Se ne trovi uno, devi prima addestrare la rete (apprendimento supervisionato) e per questo devi preparare un grande campione di immagini; altri esempi -> risultato più preciso. D'altra parte è possibile utilizzare OpenCV (C/C++, Python e Java) che è una libreria specializzata in computer vision e ha un modulo per implementare i metodi di intelligenza artificiale.

Buona giornata! Oscar.

1

Penso che questo sia molto difficile da automatizzare. Il problema è solo perché hai bisogno di un buon software OCR. E anche se tu avessi questo, e se leggesse qualcosa di sbagliato, a causa della fregatura calligrafia di qualcuno? Se l'ID è sbagliato, il pagamento è prenotato per il dipendente sbagliato e se l'importo è sbagliato ha ottenuto lo stipendio sbagliato!

Entrambe sono cose che non succederà davvero. Solo per mostrarti quanto è difficile trovare un buon ocr, basta dare un'occhiata a come funziona lo captcha. Il principio non è altro che un'immagine di un testo difficile da leggere.

Quindi la mia opinione sarebbe, che non si può davvero automatizzare questo processo. Almeno si può scrivere un programma per aiutare un essere umano inserendo manualmente i valori (anche dare un'occhiata a Amazon Mechanical Turk):

  • Mostra sulla destra l'immagine con i valori scritti a mano, o se sono sempre sulla stessa posizione o appositamente contrassegnato (con una scatola intorno a loro, ecc.), cercare di trovare automaticamente questi posti e mostrarli all'utente.
  • Sulla sinistra sono disponibili due caselle di testo, in cui l'utente può immettere i valori.

per ottenere questo ad un processo veloce e scorrevole, si deve fare molta attenzione a come l'utente può inserire facilmente i valori da solo utilizzando la tastiera:

  • Quando mostrando una nuova foto, impostare la messa a fuoco per l'id testo
  • Se l'utente id è sempre una lunghezza specifica, passare alla casella successiva se vengono inseriti tutti i numeri
    • (Se si consente questo, un backspace nella prossima scatola vuota dovrebbe concentrarsi di nuovo alla precedente)
  • permettono Altrimenti una modifica alla successiva casella di testo per scheda o ritorno colpire
  • Normalmente queste caselle di testo sono disposte una sopra l'altra (non affiancati), quindi si deve sostenere il passaggio tra di loro usando l'up down tasti freccia.
  • Dopo aver terminato la voce nell'ultima casella di testo mostra automaticamente l'immagine successiva.
    • Anche in questo caso di una nuova voce fresca (niente di già inserito) consentire un interruttore semplice per tornare alla vecchia voce utilizzando il backspace o il tasto freccia sinistra)

Utilizzando un tale elaborare una singola persona può inserire molte voci nel database e i costi sono molto più economici rispetto a trovare voci errate nel database in seguito.

Solo un ultimo suggerimento:
Causa questo è un processo noioso per un essere umano che può facilmente porta a errori, forse lasciare che due persone entrano questi valori e solo se entrambi stanno entrando lo stesso che prendere questo valore come approvato. Questo dovrebbe portare a un tasso corretto da qualche parte sopra il 99%. Se devi assolutamente pensare al 100% di consentire a 4-5 persone di verificare una voce e solo se tutte le stesse inseriscono gli stessi valori, prendila come approvata. Per ottenere anche un compendio su quanto sarebbe buono il tuo software ocr, lascia che passi sopra le tue immagini e confronta questi risultati con i valori inseriti per ottenere un'idea, quando puoi davvero contare solo sul tuo ocr.

+0

+1 sottolineando che OCR è non così affidabile. Vorrei un altro +1 per l'idea del turk meccanico;) – zerm

1

I motori OCR non sono addestrati a leggere il testo scritto a mano, quindi potresti avere problemi con MODI. Vuoi provare a trovare un motore ICR. Anche così, i migliori di questi sono solo l'80% accurato su buoni input. Potresti migliorare perché sai che il tuo testo è sempre un numero.

Questo SO domanda/risposta dice che OCRopus ha ICR

FOSS Intelligent Character Recognition (ICR)

Problemi correlati