Pregunta

Estoy utilizando Tesseract OCR (a través de pytesser ) y PIL (Python Image Library) para la prueba automática de una aplicación.

Estoy comprobando que el texto que se muestra está bien al hacer una captura de pantalla y obtener el texto gracias a Tesseract.

He tenido algunos problemas en el comienzo y parece que funciona mejor, ya he aumentado el tamaño de la captura de pantalla gracias a la interpolación bicúbica de PIL.

Desafortunadamente, todavía tengo algunos errores como la confusión entre '0' y 'O'. Me puedo imaginar que voy a tener otros problemas similares en el futuro.

Me gustaría saber si hay algunas técnicas para preparar una imagen con el fin de ayudar a la OCR. Cualquier idea es bienvenida.

Gracias de antemano

¿Fue útil?

Solución

Enchufe desvergonzado y exención de responsabilidad: mi empresa paquetes de Tesseract para su uso en .NET

Tesseract es un motor de OCR OK. Se puede perder mucho y se fácilmente confundido por no textual. Lo mejor que puede hacer por él es para asegurarse de que obtiene el texto solamente. La segunda mejor opción es darle algo sensatamente binarizada (adaptativa o umbral dinámico para llegar allí) o escala de grises y dejar que se trata de hacer binarización.

Otros consejos

  1. Tren Tesseract reconozca su fuente
  2. Haga adicional de la imagen limpia y con suficiente espacio libre alrededor de caracteres
  3. Beneficio:)

Estos son algunos ejemplos del mundo real.

  • Primera imagen es la imagen original (los números croped medidor de potencia)
  • segunda imagen es imagen ligeramente limpiado en GIMP, alrededor de la precisión de OCR 50% en tesseract
  • Tercera imagen está completamente limpio imagen - 100% de OCR reconoce sin ningún entrenamiento

introducir descripción de la imagen aquí introducir descripción de la imagen aquí introducir descripción de la imagen aquí

Incluso en las mejores condiciones variantes OCR sigilosamente a ti. Su mejor opción será la de diseñar sus pruebas para ser consciente de ellos.

Para distinguir entre 0 y O, una solución simple es elegir un tipo de letra que distingue entre ambos (por ejemplo: 0 tiene un guión o un punto en su centro). ¿Sería aceptable en su aplicación?

Otra solución es aplicar una medida basada en diccionarios tras el análisis de carácter por carácter del texto - alimentar el texto reconocido en alguna forma de corrector ortográfico o validador de diferenciar entre caracteres difíciles.

Por ejemplo, un símbolo redondo seguido de otros números es más probable que sea un cero, mientras que el mismo símbolo seguido de las letras es más probable que sea una O mayúscula. Es un ejemplo trivial, pero muestra cómo es necesario contexto para hacer un sistema OCR más fiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top