Libreria C ++ per il riconoscimento delle immagini: immagini contenenti parole da stringere

StackOverflow https://stackoverflow.com/questions/462860

Domanda

Qualcuno conosce una libreria c ++ per acquisire un'immagine ed eseguirne il riconoscimento in modo tale che possa trovare lettere basate su un determinato carattere e / o altezza del carattere? Anche uno che non ti consente di selezionare un carattere sarebbe carino (ad esempio: readLetters (Immagine immagine).

È stato utile?

Soluzione

Ho esaminato molto questo ultimamente. Il tuo meglio è semplicemente Tesseract. Se hai bisogno di analisi del layout in cima all'OCR, vai con Ocropus (che a sua volta usa Tesseract per eseguire l'OCR). L'analisi del layout si riferisce alla capacità di rilevare la posizione del testo sull'immagine e fare cose come la segmentazione delle linee, la segmentazione dei blocchi, ecc.

Ho trovato alcuni buoni consigli attraverso la sperimentazione con Tesseract che vale la pena condividere. Fondamentalmente ho dovuto fare un sacco di pre-elaborazione per l'immagine.

  1. Ingrandisci / Riduci l'immagine di input a 300 dpi.
  2. Rimuovi il colore dall'immagine. La scala dei grigi è buona. In realtà ho usato una soglia di dithering e ho reso il mio input in bianco e nero.
  3. Elimina la spazzatura non necessaria dall'immagine. Per tutti e tre i precedenti ho usato netbpm (un set di strumenti di manipolazione delle immagini per unix) per arrivare a capire dove stavo ottenendo una precisione del 100% per ciò di cui avevo bisogno.

Se hai un carattere altamente personalizzato e vai con solo tesseract devi " Train " il sistema - in pratica devi alimentare un sacco di dati di allenamento. Questo è ben documentato sul sito tesseract-ocr. In sostanza, crei una nuova lingua "quot" per il tuo carattere e passalo con il parametro -l.

L'altro meccanismo di allenamento che ho trovato era con Ocropus che utilizzava l'allenamento della rete nueral (bpnet). Richiede molti dati di input per costruire un buon modello statistico.

In termini di invocazione di Tesseract / Ocropus sono entrambi C ++. Non sarà semplice come ReadLines (Immagine) ma c'è un'API che puoi controllare. Puoi anche richiamare dalla riga di comando.

Altri suggerimenti

Anche se non posso consigliarne uno in particolare, il termine che stai cercando è OCR (riconoscimento ottico dei caratteri).

Esiste tesseract-ocr che è una biblioteca professionale per farlo.

Da lì sito web

  

Il motore OCR Tesseract è stato uno dei primi 3 motori nel test di precisione UNLV del 1995. Tra il 1995 e il 2006 ha svolto poco lavoro, ma è probabilmente uno dei motori OCR open source più accurati disponibili

Penso che ciò che vuoi sia Congettura . Un tempo era il progetto libgocr. Non lo uso da alcuni anni, ma era molto affidabile se si impostava una chiave.

La libreria OCR di Tesseract fornisce risultati piuttosto accurati, è una libreria C e C ++. I miei risultati iniziali erano accurati all'80% circa, ma applicando la pre-elaborazione sulle immagini prima di fornire l'OCR i risultati erano accurati al 95% circa. Che cos'è la pre-elaborazione:

1) Binarizza la bitmap (B & amp; W ha funzionato meglio per me). Come potrebbe essere fatto

2) Ricampionamento dell'immagine a 300 dpi

3) Salva la tua immagine in un formato senza perdita, come LZW TIFF o CCITT Group 4 TIFF.

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