Domanda

Tesseract OCR (tramite pytesser ) e PIL (Python immagine Library) per il test automatizzato di un'applicazione.

Sto controllando che il testo visualizzato è ok facendo uno screenshot e ottenere il testo grazie al tesseract.

Ho avuto alcuni problemi all'inizio e sembra funzionare meglio da quando ho aumentato la dimensione dei screenshot grazie alla interpolazione bicubica di PIL.

Purtroppo, ho ancora alcuni errori come confusione tra '0' e 'O'. Posso immaginare che avrò altri problemi simili in futuro.

Vorrei sapere se ci sono alcune tecniche per preparare un'immagine al fine di aiutare l'OCR. Qualsiasi idea è accolta con favore.

Grazie in anticipo

È stato utile?

Soluzione

spudorato e di assenza: mia azienda pacchetti Tesseract per l'uso in .NET

Tesseract è un motore OCR OK. Si può perdere un sacco e viene facilmente confuso da non testuale. La cosa migliore che puoi fare per esso è quello di assicurarsi che ottiene solo il testo. La cosa migliore da fare è quello di dare qualcosa in modo sano binarizzata (adattivo o Soglia dinamica per arrivarci) o in scala di grigi e lasciarlo provare a fare binarizzazione.

Altri suggerimenti

  1. Treno tesseract di riconoscere il tipo di carattere
  2. Fai immagine più pulita e con abbastanza spazio libero attorno caratteri
  3. Profit:)

Ecco alcuni esempi reali.

  • Prima immagine è immagine originale (numeri misuratore di potenza croped)
  • seconda immagine è leggermente ripulito immagine in GIMP, circa il 50% di precisione OCR Tesseract
  • immagine
  • terza immagine è completamente pulito! - 100% OCR riconosciuto senza alcuna formazione

entrare descrizione dell entrare descrizione dell entrare descrizione dell

Anche nelle migliori condizioni varianti OCR insidiarsi. La soluzione migliore sarà quella di progettare i test di essere a conoscenza di loro.

Per distinguere tra 0 e O, una soluzione semplice è quella di scegliere un tipo di carattere che distingue tra i due (ad esempio: 0 ha un trattino o un punto nel suo centro). Vorrei che sia accettabile nella vostra applicazione?

Un'altra soluzione è quella di applicare un passo dizionario a base dopo l'analisi del carattere per carattere del testo - che alimenta il testo riconosciuto in qualche forma di controllo ortografico o validatore per distinguere tra i caratteri difficili.

Per esempio, un simbolo tondo seguito da altri numeri è più probabile che sia uno zero, mentre lo stesso simbolo seguito da lettere è più probabile che sia una o capitale. E 'un esempio banale, ma dimostra come contesto è necessario fare un sistema OCR più affidabile.

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