Traitement d'image / OCR super léger
-
11-09-2019 - |
Question
J'ai 55 000 fichiers d'image (dans les formats JPG et TIFF) qui sont des images d'un livre.
La structure de chaque page est la suivante:
texte
--- (ligne horizontale) ---
un certain nombre
texte
--- (ligne horizontale) ---
un autre numéro
texte
Il peut y avoir de zéro à 4 lignes horizontales sur une page donnée.
Je dois trouver ce que le nombre est, juste au-dessous de la ligne horizontale.
, les numéros suivent strictement les uns les autres, en commençant par un sur la première page, donc pour trouver le numéro, je ne ai pas besoin de le lire: je pouvais détecter la présence de lignes horizontales, ce qui devrait être à la fois plus facile et plus sûr que d'essayer d'OCR la page pour détecter les numéros.
L'algorithme serait, essentiellement:
for each image
count horizontal lines
print image name, number of horizontal lines
next image
La question est: quelle serait la meilleure bibliothèque / langue image pour faire la partie « compte des lignes horizontales »
?La solution
Probablement la meilleure façon de détecter vos lignes utilise le transformation de Hough OpenCV (qui a des wrappers pour de nombreuses langues) .
Le Tranform OpenCV Hough détecte toutes les lignes dans l'image et retourner leurs angles et commencer / coordonnées d'arrêt. Vous ne devez garder ceux dont les angles sont proches de l'horizontale et d'une longueur suffisante.
Autres conseils
Si vous avez un bon contraste, essayez d'exécuter les composants connectés et analyser le résultat. Il peut être une alternative à la recherche de lignes par Hough et couvrir le cas où vos éléments structurés sont un peu courbe ou un algorithme de ligne capte les lignes que vous ne voulez pas à ramasser.
Les composants connectés est un super rapide, deux algorithme de balayage de trame et vous donnera un masque avec vous tous les éléments connectés en elle marquée par différents labels et pris en compte. Vous pouvez jeter quoi que ce soit à court (en termes de ratio d'aspect). Dans l'ensemble, cela peut être plus général, plus vite, mais sans doute un peu plus compliqué que de courir Transformée de Hough. La transformation de Hough d'autre part sera plus tolérable pour les artefacts de contraste et même des lacunes accidentelles dans les lignes. OpenCV a la fonction findContours () qui trouvent des composants pour vous.
vous pouvez essayer de John » Resig OCR et Réseau de neurones en Javascript