2012-04-18 16 views
9

quiero detectar el área de texto de la imagen como un paso de preprocesamiento para el motor tesseract OCR, el motor funciona bien cuando la entrada es solo texto pero cuando la imagen contiene contenido no textual, por lo que quiero detectar solo contenido de texto en la imagen , cualquier idea de cómo hacer eso será útil, gracias.¿Cómo detectar el área de texto de la imagen?

+1

me gustaría ir a una solución de procesamiento de imágenes. Prueba google para eliminar las técnicas de fondo. –

+0

es difícil entender su problema sin una imagen de ejemplo. Suba la imagen en imageshack.us y proporcione el enlace aquí. –

+0

bien, este es el enlace de una imagen de muestra Quiero eliminar el área sin texto de http://imageshack.us/photo/my-images/171/img0052ir.jpg/ pero creo que Tesseract maneja todo el proceso en su propia, por lo que no nos importa cómo se ve la imagen. – chostDevil

Respuesta

7

Tome un vistazo a este bounding box técnica demostrada con el código de OpenCV:

entrada:

enter image description here

Desgastado:

enter image description here

Resultado:

enter image description here

+0

¿qué pasa con la región sin texto en la imagen escaneada, (es decir, cuando hago una erosión en la imagen de entrada, las regiones sin texto en la imagen de entrada se descuidan?) – chostDevil

+0

Cuando tiene un cuadro delimitador puede extraer su contenido a una nueva imagen y olvidarse de todo lo demás que no está dentro de la caja. Para esta tarea, busque en nuestro foro ** Region Of Interest ** o ** ROI ** en la etiqueta OpenCV. – karlphillip

+0

si hay alguna técnica precisa que esta, por favor avíseme, y muchas gracias :) – chostDevil

2

Bueno, no estoy bien con experiencia en el procesamiento de imágenes, pero espero que te pueda ayudar con mi enfoque teórico.

En la mayoría de los casos, el texto se está formando paralelo, filas horizontales, donde el espacio entre filas contendrá lotes de píxeles de fondo. Esto podría ser utilizado para resolver este problema. Entonces ... si compone cada columna de píxeles en la imagen, obtendrá una imagen de 1 píxel de ancho como salida. Cuando la imagen de entrada contiene texto, es muy probable que la salida sea un patrón periódico, donde las áreas oscuras son seguidas por áreas más brillantes repetidamente. Estos "grupos" de píxeles más oscuros indicarán la posición del contenido de texto, mientras que los más brillantes "grupos" indicarán los espacios entre las filas individuales. Probablemente descubrirá que las áreas más brillantes serán mucho más pequeñas que las otras. El texto es mucho más genérico que cualquier otro elemento de imagen, por lo que debería ser fácil separarlo.

Debe implementar un procedimiento para detectar estas recurrencias periódicas. Una vez que el guión puede determinar que la imagen de entrada tiene estas características, hay una gran posibilidad de que contenga texto. (Sin embargo, este enfoque no puede distinguir entre el texto real y rayas Horisontal simples ...)

Para el siguiente paso, usted debe encontrar una manera de determinar los Borderies de los párrafos, usando el método anteriormente mencionado. Estoy pensando en un algoritmo bastante simulado, que dividiría la imagen de entrada en bandas más pequeñas y estrechas (50-100 px), y verificaría estas áreas por separado. Luego, compararía estos resultados para construir un mapa de las posibles áreas llenas de texto. Este método no sería tan preciso, pero probablemente no moleste al sistema OCR.

Y, por último, debe utilizar el mapa de texto para ejecutar el OCR solo en las ubicaciones deseadas.

Por otro lado, este método fallaría si el texto de entrada se gira más de ~ 3-5 grados. Hay otro backdraw, porque si solo tiene algunas filas, entonces su búsqueda de patrones será muy poco confiable. Más filas, más exactitud ...

Saludos, G.

2

Soy nuevo en stackoverflow.com, pero escribí una respuesta a una pregunta similar a esta que puede ser útil para cualquier lector que comparta esta pregunta. Ya sea que la pregunta sea o no un duplicado, ya que esta fue la primera, dejaré en manos de otros. Si debo copiar y pegar esa respuesta aquí, házmelo saber. También encontré esta pregunta primero en google en lugar de la que respondí, así que esto puede beneficiar a más personas con un enlace. Especialmente porque proporciona diferentes formas de obtener áreas de texto. Para mí, cuando busqué esta pregunta, no encajaba en mi problema.

Detect text area in an image using python and opencv

Cuestiones relacionadas