Récemment, j'ai vu quelqu'un avec un T-shirt avec certains Perl code sur le dos. J'ai pris une photo d'elle et recadrées le code:
Ensuite, j'ai essayé d'extraire le code de l'image via OCR, j'ai donc installé Tesseract OCR et les liaisons Python pour elle, pytesser.
Pytesser ne fonctionne que sur des images au format TIFF, donc j'ai converti l'image dans Gimp et entré le code suivant (Ubuntu 9.10):
>>> from pytesser import *
>>> image = Image.open('code.tif')
>>> print image_to_string(image)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pytesser.py", line 30, in image_to_string
util.image_to_scratch(im, scratch_image_name)
File "util.py", line 7, in image_to_scratch
im.save(scratch_image_name, dpi=(200,200))
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1406, in save
save_handler(self, fp, filename)
File "/usr/lib/python2.6/dist-packages/PIL/BmpImagePlugin.py", line 197, in _save
raise IOError("cannot write mode %s as BMP" % im.mode)
IOError: cannot write mode RGBA as BMP
>>> r,g,b,a = image.split()
>>> img = Image.merge("RGB", (r,g,b))
>>> print image_to_string(img)
Tesseract Open Source OCR Engine
éi _ l_` _ t
' ‘" fY`
{ W IKQW
· __·_ ‘ ·-»·
:W Z
·· I A n 1
;f
` `
`T .' V _ ‘
I {Z.; » ;,. , ; y i- 4 : %:,,
`· » V; ` ?
‘,-·.
H***li¥v·•·}I§¢ ` _ »¢is5#__·¤G$++}§;"»‘7·
71 ' Q { NH IQ
ytéggygi { ;g¤qg;gm·;,g(g,,3) {3;;+-
§ {Jf**$d$ }‘$p•¢L#d¤ Sc}
» i ` i A1:
C'est clairement le charabia qui sort du moteur d'OCR. Donc, ma question est:
- Que dois-je faire pour obtenir de meilleurs résultats de l'OCR de Tesseract?
- Ou, quelqu'un d'autre avez la chance de mieux extraire le code de l'image ci-dessus d'une autre manière?