Buenas, os planteo mi problema a ver si alguien me puede echar una mano:
Actualmente estoy trabajando con OCR para reconocer texto, tras realizar el OCR necesito realizar consultas en una base de datos, donde dicho texto (en este caso un nick de usuario) puede que sea o no encontrado.
El problema viene a la hora de aplicar el OCR ya que este falla bastante, y la mayoría de veces confunde letras, por ejemplo:
I y l
0 y O
1 e i
He pensado que antes de realizar la consulta podría buscar usando un margen de error si hay algún nick de usuario en la base de datos que se parezca al que voy a usar para realizar la consulta, y si es así, ya puedo sustituir este por el correcto.
Para ello he usado una implementación del algoritmo de búsqueda basado en la distancia Levenshtein:
http://www.codeproject.com/Articles/36869/Fuzzy-Search
El algoritmo funciona bastante bien, pero no tiene en cuenta pesos en base a los tipos frecuentes de errores, es decir yo quiero que si tengo este texto obtenido por OCR:
programadror1ntel1gente
y en la base de datos tengo estos dos usuarios: programadorinteligente y programadorontelogente, me devuelva el primero y no un empate, ya que debería tener más peso el que un 1 se convierta en una "i" que el que un 1 se convierta en una "o".
Espero haberme explicado.
Muchisimas gracias
PD: Aunque es mi primer post llevo ya varios años entrando en este foro para leer dudas que me han resuelto la vida.
PD: Necesito este algoritmo para realizar mi PFC (Proyecto fin de carrera) de la ing informática superior xD.
Un saludo