/ Proceso de imagen súper ligero OCR
-
11-09-2019 - |
Pregunta
Tengo 55 000 archivos de imagen (en formato JPG y TIFF), que son imágenes de un libro.
La estructura de cada página es la siguiente:
texto
--- (línea horizontal) ---
un número
texto
--- (línea horizontal) ---
otro número
texto
No puede haber de cero a 4 líneas horizontales en una determinada página.
Tengo que encontrar cuál es el número, justo por debajo de la línea horizontal.
Pero, los números siguen estrictamente entre sí, a partir de un solo en la primera página, por lo que con el fin de encontrar el número, no necesito leerlo: tan sólo pudiera detectar la presencia de líneas horizontales, que debe ser a la vez más fácil y seguro que tratar de OCR la página para detectar los números.
El algoritmo sería, básicamente:
for each image
count horizontal lines
print image name, number of horizontal lines
next image
La pregunta es: ¿cuál sería la mejor biblioteca de imágenes / idioma para hacer la parte de "contar con líneas horizontales"
?Solución
Probablemente la forma más fácil de detectar sus líneas está utilizando el transformada de Hough en OpenCV (que tiene contenedores para muchos idiomas) .
El TRANFORM OpenCV Hough detectará todas las líneas en la imagen y regresar a sus ángulos y coordenadas de inicio / parada. Sólo se debe mantener a aquellos cuyos ángulos están cerca de la horizontal y de longitud adecuada.
Aprendizaje de O'Reilly OpenCV explica en detalle la entrada y salida de la función (p.156).
Otros consejos
Si usted tiene un buen contraste, intente ejecutar los componentes conectados y analizar el resultado. Puede ser una alternativa a la búsqueda de líneas a través de Hough y cubrir el caso cuando los elementos estructurados son un poco curvado o un algoritmo de línea recoge las líneas que no desea que se recoja.
Los componentes conectados es un algoritmo muy rápido dos de exploración de trama y le dará una máscara con todo lo que los elementos conectados en ella marcados con diferentes etiquetas y representaron. Puedes descartar cualquier cosa brevemente (en términos de relación de aspecto). En general, esto puede ser más general, más rápido, pero probablemente un poco más complicado que ejecuta la transformada de Hough. La transformada de Hough, por otro lado será más tolerable para los artefactos de contraste e incluso lagunas accidentales en las líneas. OpenCV tiene las findContours función () que se encuentran componentes para usted.
es posible que desee probar de John' Resig OCR y redes neuronales en Javascript