DR : 我需要一种方法来解码一个图像文件中的二维码,使用(最好是纯的) Python。
我有一个带有二维码的 jpg 文件,我想用 Python 解码它。我发现有几个图书馆声称可以做到这一点:
PyQRCode (请浏览此网页) ,它可以通过简单地提供如下路径来解码图像中的 qr 码:
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
指的是 这个图书馆,它只能导入 产生的 qr 码图像,这让我有点困惑。所以我尝试了上面的代码与 pyqrcode
和 qrcode
,但都失败在第二行说 AttributeError: 'module' object has no attribute 'Decoder'
。此外,网站引用了 Ubuntu 8.10(它出现在6年前) ,我找不到它的公共(git 或其他)存储库来检查最新的提交。于是我转向下一个图书馆:
ZBar (请浏览此网页)声称是 "an open source software suite for reading bar codes from various sources, such as image files."
,所以我试着在运行 sudo pip install zbar
的 Mac OSX 上安装它。这在 error: command 'cc' failed with exit status 1
中失败了。我试图在 这个所以问题的答案中提出建议,但是我似乎不能解决它。所以我决定重新开始:
QRTools ,根据 这篇博文可以使用以下代码轻松解码图像:
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-qrtools
,qr-tools
,python-qrtools
和一对夫妇更多的组合,但不幸的是没有用。我想它指的是 这个回购,它说它是基于 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 (请浏览此网页)被认为是流行的 Java ZXing 图书馆的 Python 端口,但是最初和唯一的提交已经有6年的历史了,而且该项目没有自述文件或任何文档。
剩下的我找到了一些 qr-嗯coders (不是 德coders)和一些 API 端点,它们可以为您解码。因为我不希望这个服务依赖于其他 API 端点,所以我希望将解码保持在本地。
总而言之,有人知道我如何用(最好是纯粹的) Python 从图像中解码二维码吗?欢迎任何提示!