2011-07-01 9 views
11

Quiero hacer un programa que toma una imagen como entrada y emite texto. Ahora sé que puedo usar una red neuronal para convertir una imagen de un solo personaje en ese personaje. La parte difícil es: dada una imagen con texto, ¿cómo produciría todos los rectángulos alrededor de cada personaje individual?¿Cómo hago un programa de OCR?

Entonces, ¿qué tipo de métodos se utilizan para esto y alguien sabe de algún documento de investigación que analice cómo hacerlo? Gracias

Respuesta

8

Un enfoque básico es hacer un histograma de píxeles negros. Primero: proyecte todos los píxeles en una línea. Los valles profundos en el historial indican la separación entre líneas (intente diferentes ángulos si el papel puede estar inclinado). Luego, por línea (o por página si sabe que la fuente está en monoespacio) proyecte los píxeles en un histograma horizontal. Esto le dará una fuerte indicación de espacios entre caracteres. Como mínimo, esto le da un valor para la altura y el ancho del carácter promedio que lo ayudará en los próximos pasos.

Después de eso, debe ocuparse del kerning (donde los caracteres se superponen). Encuentra los píxeles conectados, posiblemente haciendo primero dilatación o erosión en la imagen para compensar el escaneo de artefactos.

Dependiendo de la calidad de la imagen escaneada, es posible que deba utilizar técnicas más avanzadas, pero esto lo pondrá en marcha.

+0

Esto es muy interesante porque, aunque creo que el método que describes funcionará bastante bien a veces, ¿no puede aprender? La red neuronal puede ser entrenada para mejorar al leer símbolos individuales, pero una vez que es perfecta, usando sus ideas, siento que tal vez estaría limitado por esta parte del procedimiento. ¿Crees que es el caso o estoy juzgando mal? – quanta

+0

Ah, leí un poco su pregunta. El enfoque tradicional es hacer 1) mejora de imagen 2) segmentación 3) reconocimiento de caracteres (usando NN) 4) usar información de contexto (búsqueda de diccionario o aplicación de datos estadísticos). Básicamente tiene la opción de hacer segmentación usando NN o combinar 2) y 3) usando NN. Este último será desafiante pero tiene ventajas potenciales. Si desea aplicar NN a la segmentación, tendrá que encontrar buenas características. Usar los valles del histograma podría ser uno de ellos (no lo he hecho yo mismo, así que realmente no puedo predecir el resultado). – Emile

+0

¡Felicitaciones! Casi has reinventado la transformada Hough. –

Cuestiones relacionadas