Segmentación y decodificación de texto en una imagen
En el mundo de la visión por computador es muy común encontrarse con imágenes donde entre otros objetos o ambientes, también aparece texto. En ocasiones, es de especial interés poder leerlo, por lo que su segmentación del resto de la imagen es de gran importancia.
El grado de dificultad de la detección del texto varía mucho según el ambiente. Es decir, no es lo mismo detectar texto de una imagen en un “ambiente controlado” donde se sabe dónde está el texto y éste está claramente diferenciado del resto de la imagen, que en un “natural environment”. En este último interfieren una serie de factores que dificultan en gran medida la segmentación del texto, como puede ser el ruido de la cámara con el que se obtiene la imagen, la mala iluminación de la escena o los frames borrosos que se dan, por ejemplo, si la cámara no tiene estabilidad.
Además de los problemas ya comentados, también está presente la dificultad de localizar el texto dentro de la imagen ya que puede aparecer en diferentes posiciones y orientaciones. Una vez localizado, cada carácter debe ser segmentado cuidadosamente para así poder obtener una lectura correcta del texto.
Detección de texto en una imagen
Como ya se ha comentado anteriormente, el primer desafío al que enfrentarse en la segmentación de texto es la localización del mismo. De entre los diferentes posibles métodos para conseguir este objetivo, en este artículo se usará el EAST Detector.
El EAST Detector es capaz de detectar texto prácticamente en real time (13 fps) tanto en imágenes como en videos ya sea en texto horizontal o rotado utilizando una convolutional neural network.
Con respecto a otros posibles algoritmos, el EAST Detector ha suprimido pasos intermedios innecesarios de forma que únicamente cuenta con dos etapas. La primera de ellas es la predicción de líneas de texto o palabras usando la red neuronal y la segunda es el procesado de las predicciones.
En la Figura superior se puede ver un ejemplo de las diferentes regiones con texto que han sido detectadas por el algoritmo, cada una de ella marcada con un recuadro verde.
Segmentación de la imagen
La segmentación de la imagen nos permite dividir una imagen en partes o regiones. El objetivo de la segmentación es simplificar la representación de una imagen en algo más fácil de analizar. Esta se utiliza normalmente para localizar objetos y límites en imágenes.
Decodificar texto de la imagen
Una vez se ha detectado la localización del texto, se procede a la decodificación del mismo. Para ello, es importante poder aislar de la mejor manera posible los caracteres del fondo de la imagen, de modo que se deben aplicar diferentes operaciones morfológicas para lograrlo. Estas operaciones para detectar texto en imagen, dependen del ambiente con el que se está trabajando y lo mejor es evaluar individualmente cada caso para decidir cuáles deben ser aplicadas. La Figura inferior presenta un ejemplo de este paso.
Una vez el texto ha sido aislado del fondo de la imagen, existen diferentes métodos para poder realizar su lectura. En este caso se ha optado por usar la librería Tesseract OCR, la cual es un motor para el reconocimiento óptico de caracteres.
Así pues, la combinación del EAST Detector junto con la librería Tesseract proporcionan un método bastante robusto mediante el cual se puede detectar la posición texto y realizar una lectura del mismo para el posterior tratamiento de estos datos.
Hay diferentes opciones que permiten afinar más el reconocimiento de caracteres. Por ejemplo, es posible indicar el idioma en que se encuentra el texto o si se trata de caracteres alfanuméricos o de números o letras en exclusiva.
Esperamos que te haya sido útil este artículo. Si tienes entre manos algún proyecto de ingeniería y crees que podemos ayudarte, aquí te dejo el enlace donde nos podrás contactar y explicarnos más a cerca de ello.