Domanda

Bene, sto usando una versione .NET conforme di questo OCR che può essere trovata @ http : //www.pixel-technology.com/freeware/tessnet2/

Funziona, tuttavia lo scopo è tradurre le targhe, purtroppo il motore non traduce in modo accurato alcune lettere, ad esempio ecco un'immagine che ho scansionato per determinare i problemi dei caratteri

inserisci qui la descrizione dell'immagine

Risultato:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

Pertanto i seguenti caratteri vengono tradotti in modo errato:

1, O, Q, W

Non sembra poi così male, tuttavia sulle mie targhe il risultato non è così eccezionale:

inserisci qui la descrizione dell'immagine= H4 ODM

inserisci qui la descrizione dell'immagine= LDH IFW

Test falso

inserisci qui la descrizione dell'immagine= NR4 y2k

Come potresti capire, ho provato la riduzione del rumore, l'aumento del contrasto e la rimozione dei pixel che non sono neri assoluti, senza miglioramenti reali.

Apparentemente puoi "imparare" il motore di nuovi caratteri, ma penso che avrei bisogno di ricompilare la libreria per .NET, inoltre sembra che questo venga eseguito su un sistema operativo Linux che non ho.

http://www.scribd.com/doc/ 16747664 / Tesseract-Trainingfor-Khmer-LanguageFor-Posting

Quindi non ho dubbi su cosa provare dopo, ho scritto una rapida applicazione per console puramente a scopo di test se qualcuno vuole provarla. Se qualcuno ha qualche idea / manipolazione grafica / pensieri di libreria, mi piacerebbe ascoltarli.

È stato utile?

Soluzione

Recentemente ho usato Tesseract tramite Tessnet2 (Tessnet2 è un wrapper C ++ VS2008 attorno a Tesseract 2.0 creato da Rémy Thomas, se ricordo bene). Lasciami provare ad aiutarti con le poche conoscenze che ho riguardo a questo strumento:

  • Primo, come ho detto sopra, questo wrapper è solo per Tesseract 2.0 e la versione più recente di Tesseract su Google Code è la 3.00 (il codice non è più ospitato su Source Forge). Ci sono collaboratori regolari: ho visto che è prevista la versione 3.01 o giù di lì. Quindi non trarrai vantaggio dagli ultimi miglioramenti, inclusa l'analisi del layout di pagina che può essere utile quando le tue targhe non sono orizzontali al 100%.

  • Ho chiesto a Rémy un wrapper Tessnet2 .NET per la versione 3, per ora non ne pianifica nessuno. Quindi, come ho fatto io, dovrai farlo da solo!

  • Quindi, se desideri ottenere l'ultima versione dei sorgenti, puoi scaricarli da Subversion repository (tutto è descritto nella pagina del sito dedicata ) e tu " Sarò in grado di compilarli se hai Visual Studio 2008, poiché i sorgenti contengono una soluzione VS2008 nella sottocartella vs2008. Questa soluzione è composta da progetti C ++ VS2008, quindi per poter ottenere risultati in C # dovrai usare .NET P / Invoke con il tessDll costruito dal progetto. Di nuovo, se ne hai bisogno, ho esempi di codice che potrebbero interessarti, ma potresti voler rimanere con C ++ e fare i tuoi nuovi progetti WinForm, per esempio!

  • Quando hai finito di compilare (non dovrebbero esserci grossi problemi per questo, ma dimmi se ne incontri qualcuno, potrei averli incontrati anche io :-)), avrai in output diversi binari che ti permetterà di fare un allenamento specifico! Ancora una volta, c'è una pagina appositamente dedicata alla formazione di Tesseract 3 . Grazie a questa formazione puoi:

    • limita il tuo set di caratteri, che rimuoverà automaticamente la punteggiatura ("/ - \" invece di "A", ad esempio)

    • indica le ambiguità che hai rilevato ("D" invece di "O" come potresti vedere, "B" invece di "8" ecc.) che verranno prese in considerazione quando utilizzerai la tua formazione.

  • Ho anche visto che i risultati di Tesseract sono migliori se si limita l'immagine alla zona in cui si trovano le lettere (cioè nessuna faccia, nessun paesaggio intorno): nel mio caso, dovevo riconoscere solo una zona specifica schede foto scattate da una webcam, quindi ho utilizzato l'elaborazione delle immagini per limitare la zona. È stato lungo, ovviamente, ma le mie immagini provenivano da molte fonti diverse, quindi non avevo scelta. Se riesci a ottenere immagini limitate al minimo, sarà fantastico!

Spero sia stato di qualche aiuto, non esitate a farmi le vostre osservazioni e domande!

Altri suggerimenti

Ciao, ho fatto un sacco di ocr con tesseract e ho avuto anche alcuni dei tuoi problemi. Chiedi informazioni sugli strumenti di ELABORAZIONE DELLE IMMAGINI e ti consiglio "unpaper" (ci sono anche porte Windows, vedi google) Questo è un bel programma di de-skew, unrotate, remove-border-and-noise e così via. Ottimo per correre prima di partire.

Se hai un colore di sfondo (alquanto) variabile sulle tue immagini, ti consiglio script "textcleaner" imagemagick Penso che sia il rilevamento dei bordi e lo sbiancamento di tutte le cose non taglienti.

E se hai un testo complesso, "ocropus" potrebbe essere utile. La sintassi è (su Linux): "ocroscript rec-tess"

La mia configurazione è 1. textcleaner 2. unpaper 3. ocroups

Con questi tre passaggi posso leggere quasi tutto. Anche le immagini abbastanza sfocate + rumorose scattate in condizioni di illuminazione irregolare, con due colonne di testo fitto risultano molto leggibili. OK, forse le tue esigenze non sono così tanto testo, ma i passaggi 1) e 2) potrebbero esserti utili.

Attualmente sto realizzando un motore di riconoscimento delle targhe per ispy : ho ottenuto risultati molto migliori da tesseract quando hodividere la targa in singoli caratteri e creare una nuova immagine visualizzata verticalmente con uno spazio bianco intorno come:

W

4

O

O

M

Penso che un grosso problema che tesseract abbia è che cerca di creare parole dalle lettere e dai numeri orizzontali e nel caso di targhe con lettere e numeri mescolati deciderà che un numero è una lettera o viceversa.L'inserimento di un'immagine con i caratteri distanziati verticalmente fa sì che vengano trattati come singoli caratteri invece che come testo.

Un'ottima lettura! http://robotics.usc.edu/publications/downloads/pub/635/

Informazioni sul problema di inclinazione delle targhe:

Problema: quando l'input OCR viene acquisito da una fotocamera manuale o altro dispositivo di imaging la cui prospettiva non è fissa come uno scanner, le righe di testo potrebbero risultare distorte rispetto all'originale orientamento [13]. Sulla base dei nostri esperimenti, alimentando un tale file l'immagine ruotata sul nostro motore OCR produce immagini estremamente scadenti risultati. Approccio proposto: è necessario un processo di rilevamento dello skew prima di chiamare il motore di riconoscimento. Se viene rilevato un disallineamento, viene eseguita una procedura di rotazione automatica per correggere l'inclinazione prima di elaborare ulteriormente il testo. Durante l'identificazione dell'algoritmo da utilizzare per il rilevamento dell'inclinazione, ne abbiamo trovati molti approcci, come quello menzionato in [13], sono basati su le ipotesi che i documenti abbiano margini settati. Tuttavia, questo presupposto non è sempre valido nella nostra applicazione. Inoltre, metodi tradizionali basati sulla morfologia le operazioni ei metodi di proiezione sono estremamente lenti e tendono a fallire in presenza di immagini acquisite dalla fotocamera. In questo lavoro, scegliamo un approccio più solido basato su Branchand- Algoritmo di ricerca di righe di testo rilegate (algoritmo RAST) [25] per rilevamento inclinazione e rotazione automatica. L'idea di base di questo l'algoritmo consiste nell'identificare ogni riga in modo indipendente e utilizzare il pendenza della migliore linea di punteggio come angolo di inclinazione per l'intero segmento di testo. Dopo aver rilevato l'angolo di inclinazione, la rotazione è eseguita di conseguenza. Sulla base dei nostri esperimenti, abbiamo trovato questo algoritmo deve essere molto robusto ed estremamente efficiente e veloce. Tuttavia, ha sofferto di una piccola limitazione in la sensazione che non sia riuscita a rilevare una rotazione maggiore di 30. Abbiamo anche provato un approccio alternativo, in grado di rilevarne qualsiasi angolo di inclinazione fino a 90. Tuttavia, questo approccio è stato basato sulla presenza di una sorta di croce sull'immagine. A causa di la mancanza di estensibilità, abbiamo deciso di restare con RAST algoritmo.

Tesseract 3.0x, per impostazione predefinita, penalizza le combinazioni che non sono parole e non sono parole comuni.La FAQ descrive un metodo per aumentare la sua avversione a tali sciocchezze.Potresti trovare utile disattivare la penalità per parole rare o inesistenti, come descritto (inversamente) qui: http://code.google.com/p/tesseract-ocr/ wiki / FAQ # How_to_increase_the_trust_in / strength_of_the_dictionary ?

ABCocr .NET utilizza Tesseract3, quindi potrebbe essere appropriato se hai bisogno del codice più recente in .NET.

Se qualcuno dal futuro si imbatte in questa domanda, esiste uno strumento chiamato jTessBoxEditor che rende l'insegnamento di Tesseract un gioco da ragazzi.Tutto quello che devi fare è puntarlo su una cartella contenente immagini di esempio, quindi fare clic su un pulsante e verrà creato il tuo file * .learneddata per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top