2010-03-09 31 views
16

He estado buscando recursos para el reconocimiento de números en imágenes en la web. Encontré muchos enlaces que proporcionan muchos recursos sobre ese tema. Pero desafortunadamente es más confuso que ayudar, no sé por dónde empezar.Reconocer números en imágenes

Tengo una imagen con 5 números, sin interrupciones (sin captcha o algo como esto). Los números son negros sobre un fondo blanco, escritos en una fuente estándar.

Mi primer paso fue separar los números. El algoritmo que uso actualmente es bastante simple, solo comprueba si una columna es completamente blanca y, por lo tanto, un espacio. Luego recorta cada carácter, de modo que no haya un borde blanco alrededor de él. Esto funciona bastante bien

Pero ahora estoy atascado con el reconocimiento real del número. No sé cuál es la mejor manera de adivinar la correcta. No creo que sea una buena idea comparar directamente con la fuente, porque si los números solo difieren un poco, no funcionará más.

¿Alguien podría darme una pista sobre cómo se hace esto?

No importa la pregunta, pero implementaré esto en C# o Java. Encontré algunas bibliotecas que harían el trabajo, pero me gustaría implementarlo yo mismo, para aprender algo.

Respuesta

14

¿Por qué no utilizar un motor de código abierto de OCR como Tesseract?

http://code.google.com/p/tesseract-ocr/

C# Envoltura de Tesseract

http://www.pixel-technology.com/freeware/tessnet2/

Java Envoltura de Tesseract

http://sourceforge.net/projects/tessocrinjava/

Mientras migh No considero utilizar una biblioteca de terceros para implementarla usted mismo, hay una enorme cantidad de trabajo que implica la integración de la herramienta de terceros. Tenga en cuenta también que algo que puede parecer simple (reconocer el número 5 frente al número 6) a menudo es muy complejo; estamos hablando de miles y miles de líneas de código complejo. Al menos, mira el código fuente de tesseract y te dará una buena razón para querer aprovechar una biblioteca de terceros.

Aquí hay otro Así que la pregunta que te dará algunas ideas acerca de los algoritmos de HTE implicados: https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms

+0

gracias por la punta. En realidad, no soy tan bueno en C/C++ y hay un montón de código. Todavía espero no tener que tratar de comprender todo un proyecto de software de OCR, solo para aprender el reconocimiento de números. – svens

+0

Esto eliminará la necesidad de usar C++ ... el contenedor C# es bastante directo. A menos que quiera convertirse en un experto en aprendizaje automático y optimización de imágenes, realmente no desea intentar rodar su propia solución de OCR. –

+0

+1 Tesseract es increíble. Puede usar cualquier idioma que desee siempre que lo llame en la línea de comando. – rook

Cuestiones relacionadas