【问题标题】:Python PIL to extract number from imagePython PIL从图像中提取数字
【发布时间】:2013-11-29 00:22:45
【问题描述】:

我有一张这样的图片:

我想在白色上写一个黑色数字,以便我可以使用 OCR 识别它。我如何在 Python 中实现这一点?

非常感谢,

约翰。

【问题讨论】:

  • 你只是问如何反转图像吗?或者您是否还想增加对比度、锐化边缘等? (同时,如果您正在寻找一种方法来击败 Captcha,这并不是一件容易的事——Captcha 的全部意义在于让经验丰富的破解者和垃圾邮件发送者难以击败它,而且有很多复杂的东西你需要学习才能开始。)
  • 我尝试从我的燃气表中读取数字,仅此而已。事实上,我有时会出现耀斑,因为数字在一个小玻璃后面。所以我尝试使用一些工具来将图片转换为 OCR。
  • 你会想要拍一张高质量的照片,确保你有足够的光线,因为你的那张看起来光线很差。

标签: python python-imaging-library ocr


【解决方案1】:

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

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

输出:

0

【讨论】:

  • 哇,我不知道我们有 Python 中直接 OCR 的库。
【解决方案2】:

如果您只想将黑白图像转换为黑白图像,那很简单;只是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 可能更简单......)

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2023-03-18
    • 2021-01-08
    • 2013-12-15
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多