TL; DR:我需要一种使用(最好是纯净的)Python从图像文件中解码QR码的方法。
我有一个带有QR码的jpg文件,我想使用Python对其进行解码。我找到了一些声称可以做到这一点的库:
PyQRCode(这里的网站)可以通过简单地提供如下路径来解码图像中的二维码:
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."
这样,所以我尝试在运行的Mac OSX上安装它sudo pip install zbar
。失败error: command 'cc' failed with exit status 1
。我试图在这个SO问题的答案中提出建议,但似乎无法解决。因此,我决定再次继续:
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- EN编码器(未德编码器),并且能为你解码一些API端点。由于我不希望此服务依赖于其他API端点,因此我希望将解码保持在本地。
因此得出结论;有谁知道我如何用(最好是纯净的)Python从图像中解码QR码?欢迎所有提示!