gpt4 book ai didi

python - 如何在(最好是纯)Python中解码二维码图像?

转载 作者:IT老高 更新时间:2023-10-28 21:37:11 28 4
gpt4 key购买 nike

TL;DR: I need a way to decode a QR-code from an image file using (preferable pure) Python.

我有一个带有二维码的 jpg 文件,我想使用 Python 对其进行解码。我找到了几个声称可以这样做的库:

PyQRCode ( website here ) 据称可以通过简单地提供如下路径来解码图像中的二维码:

import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error

所以我只是使用 sudo pip install pyqrcode 安装它。然而,我对上面的示例代码感到奇怪的是,它只导入 qrcode (而不是 pyqrcode )因为我认为 qrcode 是指this library 只能生成二维码图像,这让我很困惑。所以我用 pyqrcodeqrcode 尝试了上面的代码,但是在第二行都失败了 AttributeError: 'module' object has no attribute 'Decoder'。此外,the website 指的是 Ubuntu 8.10(6 年前问世),我找不到它的公共(public)(git 或其他)存储库来检查最新提交。所以我转到下一个图书馆:

ZBar (website here) 声称是 “一个开源软件套件,用于从各种来源读取条形码,例如图像文件。” 所以我尝试将它安装在Mac OSX 运行 sudo pip install zbar。这会因 error: command 'cc' failed with exit status 1 而失败。我试图在 this SO question 的答案中提出建议,但我似乎无法解决它。所以我决定继续前进:

QRTools,根据this blogpost可以使用以下代码轻松解码图像:

from qrtools import QR
myCode = QR(filename=u"/home/psutton/Documents/Python/qrcodes/qrcode.png")
if myCode.decode():
print myCode.data
print myCode.data_type
print myCode.data_to_string()

所以我尝试使用 sudo pip install qrtools 安装它,但找不到任何东西。我还尝试了 python-qrtoolsqr-toolspython-qrtools 和其他一些组合,但不幸的是无济于事。我想它指的是 this repo ,它说它基于 ZBar(见上文)。虽然我想在 Heroku 上运行我的代码(因此更喜欢纯 Python 解决方案),但我成功地将它安装在 Linux 机器上(使用 sudo apt-get install python-qrtools)并尝试运行它:

from qrtools import QR
c = QR(filename='/home/kramer65/qrcode.jpg')
c.data # prints u'NULL'
c.data_type # prints u'text'
c.data_to_string() # prints '\xef\xbb\xbfNULL' where I expect an int (being `1234567890`)

虽然这似乎可以解码它,但它似乎并没有正确地做到这一点。它还需要 ZBar,因此不是纯 Python。所以我决定再找一个图书馆。

PyXing ( website here ) 据说是流行的 Java ZXing library 的 Python 端口,但最初且唯一的提交是 6 年,该项目没有任何自述文件或文档。

对于其余部分,我找到了几个 qr-encoders(不是 decoders)和一些可以为您解码的 API 端点。由于我不喜欢此服务依赖于其他 API 端点,因此我希望将解码保持在本地。

所以总结一下;有人知道我如何从(最好是纯)Python 中的图像中解码二维码吗?欢迎所有提示!

最佳答案

您可以使用qrtools尝试以下步骤和代码:

  • 创建一个 qrcode 文件(如果尚不存在)

    • 我用的是 pyqrcode为此,可以使用 pip install pyqrcode
    • 安装
    • 然后使用代码:

      >>> import pyqrcode
      >>> qr = pyqrcode.create("HORN O.K. PLEASE.")
      >>> qr.png("horn.png", scale=6)
  • 使用 qrtools 解码现有 qrcode 文件

    • 使用 sudo apt-get install python-qrtools
    • 安装 qrtools
    • 现在在你的 python 提示符中使用以下代码

      >>> import qrtools
      >>> qr = qrtools.QR()
      >>> qr.decode("horn.png")
      >>> print qr.data
      u'HORN O.K. PLEASE.'

这是一次运行的完整代码:

In [2]: import pyqrcode
In [3]: qr = pyqrcode.create("HORN O.K. PLEASE.")
In [4]: qr.png("horn.png", scale=6)
In [5]: import qrtools
In [6]: qr = qrtools.QR()
In [7]: qr.decode("horn.png")
Out[7]: True
In [8]: print qr.data
HORN O.K. PLEASE.

注意事项

  • 您可能需要使用 pip install pypng 安装 PyPNG 以使用 pyqrcode
  • 如果您安装了 PIL,您可能会收到 IOError: decoder zip not available。在这种情况下,try uninstalling and reinstalling PIL使用:

    pip uninstall PIL
    pip install PIL
  • 如果这不起作用,请尝试使用 Pillow 代替

    pip uninstall PIL
    pip install pillow

关于python - 如何在(最好是纯)Python中解码二维码图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233351/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com