2012-08-12 6 views
6

Sto provando a rilevare alcuni caratteri maiuscoli da una schermata. Ho convertirlo in bianco e nero con PIL, e quindi utilizzando l'esempio di codice dalla pagina PyTesser, corro tesser.exe sull'immagine:Basso tasso di successo con il pytesser? Si tratta di un problema di rumore o c'è qualcos'altro che deve essere fatto?

from pytesser import * 
image = Image.open('fnord.tif') 
print image_to_string(image)  

che sto utilizzando questa immagine: http://i.imgur.com/so419.png

Ma non lo riconosce come E, o veramente nulla per quella materia. I pensa che sia una cattura abbastanza pulita? Il rumore in alto non lo sta buttando fuori, vero?

C'è qualcosa che mi manca?

+2

Ho eseguito la riga di comando util che mostra 'Tesseract Open Source OCR Engine v3.02 con Leptonica' - senza un'opzione' psm' - Ricevo un file vuoto. Usando '-psm 10' che è presumibilmente "tratta l'immagine come un singolo carattere" - Ottengo '%' seguito da due newline ... –

+0

[Limitando i caratteri che cerca tesseract] (http://stackoverflow.com/questions/2363490/limit-characters-tesseract-is-looking-for) mi ha aiutato in passato. – user500198

+0

Se i caratteri maiuscoli che stai cercando di riconoscere sono in un tipo di carattere univoco che è chiaro come mostrato nella domanda, allora non ci sono molti motivi per fare affidamento su tesseract per questo. Alcune semplici funzioni topologiche e informazioni sullo scheletro possono risolverlo direttamente. – mmgp

risposta

1

Se si è preoccupati se il disturbo è un problema, aprire manualmente l'immagine in MSPaint o qualcosa di simile, rimuovere il disturbo e quindi eseguire la nuova immagine tramite l'OCR. Questo è il modo migliore per imparare come funziona il motore OCR e cosa lo confonde e cosa no. Ogni motore OCR funziona in modo diverso.

In questo caso potrebbero essere i piccoli bit di disturbo che confondono anche il processo di zonizzazione dei caratteri. Dovresti controllare i valori del riquadro di delimitazione restituiti dal motore OCR per vedere se il motore OCR sta guardando nella posizione corretta per la tua parola o il tuo personaggio.

Alcuni motori OCR hanno opzioni per rimuovere il rumore da un'immagine durante il processo di OCR. Questo è spesso chiamato deplepeckle o rimozione del rumore. Sarebbe possibile rimuovere il rumore usando Leptonica (http://www.leptonica.org) che ora fa parte delle ultime immagini Tesseract.

caratteri dello schermo rappresentano una grande sfida per i motori OCR perché il DPI è spesso molto basso. Nel caso della tua 'E' ci dovrebbero essere più che abbastanza pixel da riconoscere. Il peso della corsa pesante potrebbe confondere il motore.

Anche i motori commerciali saranno in genere più precisi di Tesseract, ma verranno anche con costosi canoni di licenza.