2013-11-29 32 views
2

提取号码,我有这样一个图像: numberPython的PIL从图像

,我想有写在白色的黑色的号码,以便我可以使用OCR识别它。我如何在Python中实现这一目标?

非常感谢,

约翰。

+0

你只是问如何反转的形象呢?或者你还想增加对比度,锐化边缘等? (同时,如果你正在寻找一种方法来击败Captcha,这不是一件容易的事情 - Captcha的全部重点是让经验丰富的破解者和垃圾邮件发送者难以击败它,而且有很多复杂的东西你需要学会甚至开始。) – abarnert

+0

我尝试从我的煤气表读取这些数字。事实上,当数字落在一个小玻璃后面时,我有时会发出耀眼的光芒。所以我尝试使用一些工具来将图片转到OCR。 – user2040597

+0

然后,您需要拍摄高质量的图像,因为您看起来没有充足的照明,所以请确保您有足够的照明。 –

回答

3

如果您只是想将白底黑白图像变成黑白色,那很简单;它只是invert

from PIL import Image, ImageOps 
img = Image.open('zero.jpg') 
inverted = ImageOps.invert(img) 
inverted.save('invzero.png') 

如果你也想做一些基本的处理像增加对比度,看到ImageOps模块中的其他功能,如autocontrast。它们都非常易于使用,但是如果卡住了,您总是可以提出一个新问题。对于更复杂的增强功能,请查看PIL的其余部分。 ImageEnhance可以用来锐化图像,ImageFilter可以做边缘检测和反锐化遮罩;等等。您可能还想要将格式更改为灰度(L8),甚至黑白(L1);这一切都在Image.convert方法中。

当然,你必须知道你想要做什么处理。您可能想要尝试的一件事是在Photoshop或GIMP中播放图像,并跟踪您所做的操作,然后查找如何在PIL中实现这些操作。 (首先使用gimp-fu脚本可能会更简单,而不是尝试使用PIL ...)

+0

好的谢谢,我会试试这个。 – user2040597

2

您不需要为OCR操作图像。例如,你可以只使用pytesser

from PIL import Image 
from pytesser import * 
im = Image.open('wjNL6.jpg') 
text = image_to_string(im) 
print text 

输出:

0 
+3

哇,我不知道我们有Python的直接OCR库。 – justhalf