math - OCR y similitud de caracteres
matrix projection (1)
para reconocimiento o clasificación, la mayoría de los OCR usan redes neuronales
Estos deben estar configurados correctamente para la tarea deseada, como la arquitectura de interconexión interna de varias capas, y así sucesivamente. También el problema con las redes neuronales es que deben estar debidamente capacitadas, lo que es bastante difícil de hacer correctamente, ya que necesitarás saber cosas como el tamaño adecuado del conjunto de datos de entrenamiento (para que contenga suficiente información y no se sobreentrenamiento). ¡Si no tienes experiencia con redes neuronales, no sigas así si necesitas implementarlo tú mismo!
También hay otras maneras de comparar patrones
enfoque vectorial
- imagen poligonal (bordes o borde)
- compare similitud de polígonos (área de superficie, perímetro, forma, ....)
enfoque de pixel
Puede comparar imágenes basadas en:
- histograma
- Análisis espectral DFT / DCT
- tamaño
- número de píxeles ocupados por cada línea
- posición inicial del píxel ocupado en cada línea (desde la izquierda)
- posición final del píxel ocupado en cada línea (desde la derecha)
- estos 3 parámetros se pueden hacer también para las filas
- lista de puntos de interés (puntos en los que hay algún cambio como intensidad, borde, ...)
Usted crea una lista de características para cada personaje evaluado y la compara con su fuente y luego la coincidencia más cercana es su personaje. Además, esta lista de características se puede escalar a un tamaño fijo (como
64x64
) para que el reconocimiento sea invariable al escalar.Aquí hay una muestra de las características que uso para OCR
En este caso (el tamaño de la entidad se escala para caber en
NxN
), entonces cada personaje tiene6
matrices porN
números como:int row_pixels[N]; // 1nd image int lin_pixels[N]; // 2st image int row_y0[N]; // 3th image green int row_y1[N]; // 3th image red int lin_x0[N]; // 4th image green int lin_x1[N]; // 4th image red
Ahora: precompute todas las características para cada carácter en su fuente y para cada carácter leído. Encuentra la coincidencia más cercana de la fuente
- distancia mínima entre todos los vectores / matrices de características
- sin exceder alguna diferencia de Tres
Esto es parcialmente invariante en la rotación y sesgado hasta cierto punto. Hago OCR para los caracteres rellenos, por lo que para la fuente delineada puede haber usado algunos ajustes
[Notas]
Para la comparación puede usar la distancia o el coeficiente de correlación
Actualmente estoy trabajando en algún tipo de sistema de reconocimiento óptico de caracteres (OCR). Ya he escrito un guión para extraer cada carácter del texto y borrar (la mayoría de) las irregularidades de él. También sé la fuente. Las imágenes que tengo ahora, por ejemplo, son:
M ( http://i.imgur.com/oRfSOsJ.png (font) y http://i.imgur.com/UDEJZyV.png (escaneada))
K ( http://i.imgur.com/PluXtDz.png (fuente) y http://i.imgur.com/TRuDXSx.png (escaneada))
C ( http://i.imgur.com/wggsX6M.png (fuente) y http://i.imgur.com/GF9vClh.png (escaneada))
Para todas estas imágenes, ya tengo una especie de matriz binaria (1 para negro, 0 para blanco). Me preguntaba si había algún tipo de fórmula matemática de proyección para ver la similitud entre estas matrices. No quiero depender de una biblioteca, porque esa no fue la tarea que se me asignó.
Sé que esta pregunta puede parecer un poco vaga y hay preguntas similares, pero estoy buscando el método, no un paquete y hasta ahora no he podido encontrar ningún comentario sobre el método. La razón por la cual esta pregunta es vaga es que realmente no tengo sentido comenzar. Lo que quiero hacer se describe aquí en wikipedia:
La coincidencia de matrices implica comparar una imagen con un glifo almacenado píxel a píxel; también se conoce como "coincidencia de patrones" o "reconocimiento de patrones". [9] Esto se basa en que el glifo de entrada está correctamente aislado del resto de la imagen, y en el glifo almacenado en una fuente similar y en la misma escala. Esta técnica funciona mejor con texto mecanografiado y no funciona bien cuando se encuentran nuevas fuentes. Esta es la técnica que implementó el primer OCR basado en fotocélulas físicas, más bien directamente. ( http://en.wikipedia.org/wiki/Optical_character_recognition#Character_recognition )
Si alguien pudiera ayudarme con esto, lo apreciaría muchísimo.