如何将 Zbar 导入我的 Python 3.4 脚本?

How do I import Zbar into my Python 3.4 script?

我是编程新手,以前从未使用过Zbar。我正在尝试编写一个简单的脚本,允许我导入 Zbar 并使用它来解码条形码图像。我已经设置了一个脚本来解码使用 Pytesseract 和 Tesseract OCR 的图像中的文本,但我还需要能够解码条形码。我有 Windows 7 32 位,并且正在使用 Python 3.4。我已经安装了 Zbar 并成功地从命令行使用它来解码他们的条形码样本。我尝试使用 >pip install zbar,但我一直收到错误消息:

"fatal error C1083: Cannot open include file: 'zbar.h': No such file or directory error: command 'C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe' failed with exit status 2"

获取 pytesseract OCR 很轻松,但我在它的条形码部分浪费了很多时间,任何帮助或替代方案将不胜感激。

python 的 ZBar 表示您需要安装 ZBar 库才能使用。 http://zbar.sourceforge.net/download.html

忘掉所有的包装纸。对我来说最简单的解决方案是简单地使用

import os

os.system(r'D:\Winapps\Zbar\bin\zbarimg.exe -d d:\Winapps\Zbar\Examples \barcode.png')

立即生效。希望这可以帮助其他正在努力解决这个问题的人。

我想我会分享我对这个问题的探索和发现,尽管 @ltadams21 已经找到了解决方法。


简短回答:你不能。 zbar 模块仅与 Python 2 兼容。不兼容性处于 Python C API 的级别,这超出了我的知识范围。

取而代之的是 bug report for this. In the meantime, use the os.system workaround that @ltadams21 posted, or maybe try zbarlight? (我自己没试过,因为它说它只能读取二维码,我需要一些能读取EAN条码的东西。)


长答案:您可以按照这些步骤进行操作,这代表了我为使其正常工作所做的最大努力,但是(剧透警告)它仍然无法正常工作结束。

  1. (重新)为 Windows(zbar-0.10-setup.exe)安装 zbar,确保勾选 "Development Headers and Libraries" 选项。
  2. 下载并解压缩 zbar Python package (zbar-0.10.tar.bz2)。
  3. 在您喜欢的文本编辑器中打开 setup.py
  4. 滚动到底部,找到以 libraries 开头的行,然后在其下方插入一个新行,如下所示(检查您系统上的路径是否与我的系统上的路径相同):
            libraries = [ 'zbar' ],
            include_dirs = ['C:/Program Files (x86)/ZBar/include'],
  1. 在解压缩的包中打开命令提示符并运行 python setup.py install
  2. 观察到新错误现在与 PyIntObjectPyInt_Type 相关。发现这些是 Python 仅 2 个对象。
  3. 如果绝望,请尝试重新 #define 它们以使用 PyLongObjectPyLong_Type 代替。失败,因为当然没那么容易。用头撞键盘(轻轻地)。
  4. 放弃,并使用@ltadams21 发布的 os.system 解决方法。

七个月后您接受了最佳答案,一个简单的解决方案 python3.4+Windows OS 出现。 zbar 条形码 reader 周围基于 ctypes 的包装器,名为 pyzbar 的包。如果你在 Linux,你需要安装 libzbar0 但你说你正在使用 Windows 并且 zbar 库 被包含为 dll 与 Windows Python 轮子。今天,您只需启动:

pip install pyzbar

包的参考资料:

截至 2016 年 11 月,python3.4+ 的软件包 pyzbar. To import Zbar Windows OS,你只需要启动

pip install pyzbar

这是可能的,因为 pyzbar is a ctypes-based wrapper around the zbar library 作为 dll 包含在 Windows Python 轮子中。

我找到了适用于 3.4+ 的简单解决方案。首先安装pyzbar

pip install pyzbar. 

那么下面应该可以工作

import pyqrcode
from pyzbar.pyzbar import decode
from PIL import Image
qr = pyqrcode.create("HORN O.K. PLEASE.")
qr.png("horn.png", scale=6)
decode(Image.open('horn.png'))
print(qr.data)