Gần đây tôi đã thấy một người có áo phông có mã Perl ở mặt sau. Tôi lấy một bức ảnh của nó và cắt ra các mã:Trích xuất mã từ ảnh chụp áo phông qua OCR
Tiếp theo, tôi cố gắng trích xuất mã từ hình ảnh thông qua OCR, vì vậy tôi cài đặt bindings Tesseract OCR và Python cho nó, pytesser.
Pytesser chỉ hoạt động trên hình ảnh TIFF, vì vậy tôi chuyển đổi hình ảnh trong Gimp và nhập đoạn mã sau (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:
Đó là GIBBERISH rõ rằng đi ra của động cơ OCR. Vì vậy, câu hỏi của tôi là:
- Tôi phải làm gì để có được kết quả OCR tốt hơn trong Tesseract?
- Hoặc, có ai khác có may mắn hơn khi trích xuất mã từ hình ảnh trên theo một cách khác không?
Tôi nghĩ rằng thực sự * là * hợp lệ perl ... – PaulMcG
bạn chỉ có thể nhập lại. điều đó chắc chắn sẽ nhanh hơn, vì nó có vẻ là một dự án. – SilentGhost
c'mon im lặng, điều này trông giống như vui vẻ (và những người hiểu biết đó là một off hay không?) – KevinDTimm