使用Python PIL从图像中提取数字

3
我有这样一张图片: number 我希望能用Python将白色背景上的黑色数字提取出来,以便进行OCR识别。请问应该怎么做?
谢谢,
John.

你是在询问如何反转图像吗?还是想要增加对比度、锐化边缘等等?(同时,如果你正在寻找打败验证码的方法,那可不是一件容易的事情——验证码的整个目的就是让有经验的破解者和垃圾邮件发送者难以打败它,而且你需要学习很多复杂的东西才能开始。) - abarnert
我试图读取煤气表上的数字而已。实际上,有时候由于数字在一块小玻璃后面,我会看到闪烁的数字。所以我尝试使用一些工具来将图像转换为OCR。 - user2040597
你需要拍摄一张高质量的照片,确保有足够的光线,因为你现在的那张看起来光线不足。 - Lie Ryan
2个回答

5

您不需要为OCR操作图像。例如,您可以直接使用pytesser:

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

输出:

0

4
哇,我不知道我们在Python中有直接进行OCR的库。 - justhalf

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可能更简单...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接