32

Con mi nueva asignación estoy buscando un método para detectar la presencia de texto en la imagen. La imagen es un mapa; puede ser, por ejemplo, un mapa de Google. La tarea es detectar dónde se coloca la etiqueta calle/ciudad.Algoritmo para detectar la presencia de texto en la imagen

Sé que la biblioteca de opencv tiene un algoritmo que puede detectar características (por ejemplo rostros humanos) - clasificador de haar o cerdo (histograma de degradados orientados), pero he oído que el proceso de aprendizaje de tales algoritmos es bastante difícil.

¿Conoce algún algoritmo, método o biblioteca que pueda hacer eso (detectar presencia de texto en la imagen)?

Gracias, John

Respuesta

13

Existen varios enfoques posibles que puede tomar.

  1. Usar OCR. Una búsqueda de OCR en Stackoverflow mostrará muchas opciones. Estos incluyen Tesseract y Ocropus.
  2. Si su texto usa una fuente fija muy específica, puede salirse con simple template matching.
  3. En el caso más general, es posible que desee echar un vistazo a "Detecting Text in Natural Scenes with Stroke Width Transform"

ACTUALIZACIÓN de enero 2017
El módulo contrib OpenCV 3.2 ahora tiene un text detection module.
También es includes a sample de cómo usarlo.

+0

Ocropus puede convertir las letras encontradas en el texto real, pero no ayudará a encontrar las letras en primer lugar. La simple coincidencia de plantillas con una restricción adicional que requiere al menos dos caracteres cercanos entre sí en una línea horizontal funcionará muy bien para el caso del mapa de Google. –

+2

Epshtein et al. paper (Stroke Width Transform) ha sido implementado y compartido por [Saurav & Andrew] (http://stackoverflow.com/questions/4837124/stroke-width-transform-swt-implementation-java-c/5599470#5599470). –

+0

Aquí hay una implementación de python del ejemplo que usa el contenedor python opencv https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/textdetection.py – putonspectacles

18

Existe un problema estándar en la visión, llamado detección de texto en las imágenes. es bastante diferente a OCR. OCR se preocupa por lo que dice, mientras que la detección de texto se trata de determinar si hay texto en la imagen. El tercer enlace de Adi Shavit es un método para abordar este problema. Puede consultar artículos bien escritos de google scholar en text detection.

0

Debe sintonizar esto para un tipo específico de imágenes de mapa, o el problema va a ser muy difícil (consulte la publicación anterior sobre enlaces a artículos).

OCR es el camino a seguir, y debe utilizar una biblioteca existente. Sin embargo, OCR se realiza principalmente en texto sobre fondos blancos. Para reducir su problema a un problema de OCR normal, debe intentar trabajar en el espacio de color del mapa. Es probable que el texto del mapa tenga un color muy específico y esto puede ser suficiente para encontrar estos píxeles. A continuación, puede filtrar los píxeles detectados en función del tamaño de las regiones conectadas.

Si, literalmente, solo desea encontrar la ubicación de las etiquetas de texto, puede hacer lo anterior y prácticamente omitir el paso de OCR. Si las etiquetas no están demasiado cerca, se pueden usar algoritmos simples de agrupamiento para encontrar sus posiciones respectivas.

Cuestiones relacionadas