Python PIL从图像中提取数字

时间:2013-11-29 00:22:46

标签: python python-imaging-library ocr

我有一个像这样的图像: number

我希望在白色上写上黑色数字,以便我可以使用OCR识别它。我怎么能用Python实现呢?

非常感谢,

约翰。

2 个答案:

答案 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 ...)

答案 1 :(得分:2)

您无需为OCR操作图像。例如,您可以使用pytesser

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

输出:

0