【发布时间】:2018-10-27 14:46:58
【问题描述】:
我在二维码检测方面遇到了一个非常奇怪的问题。
TL;DR
简单地说,ZBar 和 ZXing 都无法检测到许多图像中的二维码。
Example image。 (Mirror)。
在我的 Mac 上,我通过 Brew 安装了 zbar。我使用来自here 的JAR 设置了zxing。两者都未能检测到示例图像中的二维码。 (注意:检测确实适用于许多其他图像;我在执行 zbar 或 zxing 时没有犯任何愚蠢的错误。)
但是,如果我在手机上打开“Barcode Scanner”应用程序并将其放在显示上述二维码的笔记本电脑屏幕前,该应用程序会检测到它。另外,如果我将上面的图片上传到 zxing.org,它也会检测到那里的二维码。
可能出了什么问题?
加长版
我有许多印有有效 QR 码的实体纸(类似于上面的示例图像)。使用任何移动应用相机条形码扫描仪直接从纸上完美检测 QR 码。
接下来,我使用 2 台扫描仪以 300 DPI 扫描这些纸张:
- 富士通 ScanSnap S1300i
- 兄弟ADS-1500W
输出格式为JPG(两台扫描仪的扫描仪软件中没有其他选项)。
当我对 Fujitsu 扫描仪生成的任何图像(使用他们的 ScanSnap 软件扫描)运行 zbar 时,总是会检测到 QR 码。
当我对 Brother 扫描仪生成的图像运行 zbar(或 zxing)时,QR 码检测非常偶然。
实际案例:我在 Brother 扫描仪上扫描了 31 张纸。图片是here(非G-Drive mirror,图片未修改)。然后我写了一个脚本来遍历每个图像并找到其中的二维码。脚本here.
脚本的完整输出在 pastebin here 上生成。
Brother 扫描仪图像摘要:
Total number of images scanned: 31
Num images with ZBAR QR detected: 17
Num images ZBAR FAILED: 14
Num images with ZXING QR detected: 15
Num images ZXING FAILED: 16
您可以看到两个软件都没有检测到许多图像的二维码。对于某些图像,这两个软件中只有一个成功。对于许多其他图像,两者都成功。
05161801.JPG 是上述集合中的一个图像,两个软件都没有检测到。但是上传到 zxing.org 的同一张图片有效。我手机上的条码扫描器应用程序也会检测到我笔记本电脑屏幕上的二维码。
提示
当使用富士通扫描仪扫描时,QR 检测适用于同一张纸这一事实告诉我,Brother 扫描仪正在应用一些后处理,这导致 QR 检测变得不稳定(这仍然不能解释如何不过,zxing.org 适用于这些图像)。我想知道是否可以使用 imagemagick 以某种方式使图像与 ZBar 一起使用。我试图用Fred's textcleaner 脚本做一些“增强”。我还没破解呢。
我花了很多时间试图弄清楚这一点。我将不胜感激任何意见、建议或解决方案。谢谢!
更新:添加使用富士通扫描仪扫描的相同纸张的图像
您可以从here 下载 untouched 图片。
我在这些富士通图像上运行了barcode_checker.py 脚本(同上)。如前所述,在每张图片中都会检测到二维码! (ZXING 确实失败了几次,但 ZBAR 是 100% 成功的)
脚本的完整输出在 pastebin here 上生成。
Brother 扫描仪图像摘要:
Total number of images scanned: 31
Num images with ZBAR QR detected: 31
Num images ZBAR FAILED: 0
Num images with ZXING QR detected: 26
Num images ZXING FAILED: 5
【问题讨论】:
-
我实际上无法下载您的任何图片 - 重定向太多...
-
@MarkSetchell - 图片托管在 Google Drive 上。它们对我来说打开得很好,即使在隐身窗口中也是如此。无论如何,我现在已经在文件中添加了镜像。请检查。谢谢。
-
你能提供一个富士通扫描仪的样品吗?您能否提供尚未上传到已删除所有元数据的网站的两者的原始样本?
-
@MarkSetchell - 根据您的要求,我也使用富士通扫描仪扫描了准确的纸张。我已经用这些文件更新了帖子。我将不胜感激任何建议。谢谢!
标签: imagemagick qr-code zxing zbar