versiones guia español descargar actualizar c++ image-processing tesseract text-extraction

c++ - guia - qgis manual



Cómo detectar el área de texto de la imagen? (3)

Eche un vistazo a esta técnica de cuadro delimitador demostrada con el código OpenCV:

Entrada :

Erosionado :

Resultado :

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 de entrada contiene contenido no textual, por eso quiero detectar solo contenido de texto en la imagen, cualquier la idea de cómo hacer eso será útil, gracias.


Bueno, no tengo mucha experiencia en el procesamiento de imágenes, pero espero poder ayudarte con mi enfoque teórico.

En la mayoría de los casos, el texto forma filas paralelas, horisontales, donde el espacio entre filas contendrá muchos píxeles de fondo. Esto podría ser utilizado para resolver este problema. Entonces ... si compone todas las columnas 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 del texto, mientras que los " grupos " más brillantes 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 texto real y rayas horisontales simples ...)

Para el siguiente paso, debe encontrar una forma de determinar las fronteras de los párrafos, utilizando el método mencionado anteriormente. 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 usar 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 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 precisión ...

Saludos, G.


Soy nuevo en .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.

Detectar área de texto en una imagen usando python y opencv