2017-10-11 5 views
0

Je suis en train d'utiliser Tesseract OCR sur Android pour lire l'état d'un compteur de gaz lorsque vous prenez une photo de celui-ci: pictureParse seulement une partie spécifique de l'image avec Tesseract

C'est la sortie quand je parse ce Image:

vb" 
22% BK-G4T ||||||||I||||I|||ii\|||\ 
’ 64 2007 
22?: 06.0"! 'm'lm Mm. 23212274 , 
v 2,0 dm’ 1 
pmn 0_5 bar tm ~25°C v‘40"(1 I 
1amp é 0_o1m’ sb15°cl :Sp 20°c l 
'I ELSTEQ~I¢¢>>InstrogwnSs HB Z _ 18 _ 1013 . ‘ 
a, 069373593435- 3 I 
i'23212214 Y _ w w V' 
g 

l'idée est d'extraire les 5 premiers chiffres de l'état du compteur de gaz (06937 sur cette image).

Ma question est la suivante: y a-t-il un moyen d'apprendre à Tesseract à analyser uniquement cette partie de l'image? Les coordonnées absolues ne sont pas une option puisque chaque image serait différente. Je suppose que la meilleure logique serait quelque chose comme: analyser uniquement les nombres blancs sur fond noir.

Répondre

1

En changeant le page segmentation mode (psm), tesseract 4.00.00 alpha est capable de lire correctement les caractères de ligne de comptage comme 06937598-m3 en les séparant des autres caractères.

La commande utilisée est la suivante:

tesseract meter.jpg output --psm 11 -l eng 

--psm 11 moyens pour reconnaître "Sparse text. Find as much text as possible in no particular order".

Voici le fichier output avec tous les caractères de contrôle ASCII.

enter image description here

Si --psm 11 travaux sur d'autres images de mètres, alors vous pourriez juste besoin de chercher -m3 à la fin de la ligne pour extraire les caractères qui la ligne de mètres. Avec cela, vous pouvez obtenir les 5 premiers chiffres tout de suite.

Espérons cette aide.

+0

Je ne suis pas sûr si tesseract 4 a un support pour android. J'utilise tess-two dans mon projet. Le problème de cette approche est que le m3 n'est parfois pas visible. (ex: https://i.stack.imgur.com/VYoZm.jpg) Je vais essayer d'isoler la partie de l'image dont j'ai besoin avec OpenCV. – HomeIsWhereThePcIs