【问题标题】:QR Code Detection with ZBar and ZXing failing for certain valid QR codes使用 ZBar 和 ZXing 的 QR 码检测对某些有效的 QR 码失败
【发布时间】: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 扫描这些纸张:

  1. 富士通 ScanSnap S1300i
  2. 兄弟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 - 我想在富士通扫描仪上扫描相同的 31 张纸并进行比较。但不幸的是,我要到 5 月 22 日才能把扫描仪拿回来。同时,我有几张由富士通扫描仪生成的旧图像。我已将它们压缩并上传here。并且原帖中的“mirror”链接也是Brother扫描仪生成的未修改图像的ZIP文件。
  • @MarkSetchell - 根据您的要求,我也使用富士通扫描仪扫描了准确的纸张。我已经用这些文件更新了帖子。我将不胜感激任何建议。谢谢!

标签: imagemagick qr-code zxing zbar


【解决方案1】:

我检查了您的代码,您似乎没有对图像应用任何图像处理或清理?您能否准确说明您的尝试?


只是部分答案,但没有人说答案必须是完整的。也许我知道 35% 的故事,而某个聪明的灵魂知道另外 65% - 你在读 Fred (@fmw42) 吗?

好的,我选择了(希望是匹配的)图像对:

  • 05161825.JPG (Brother) - 如下图左侧所示
  • 2018_05_25_10_19_46.JPG (Fujitsu) - 如右图所示

并使用 ImageMagickidentify -verbose IMAGE.JPG 工具对它们进行分析,并对输出结果进行分析。

它们之间的关系非常密切,除非用红色标记。我看到 Brother 扫描中的熵始终较低,JPEG 质量未指定 (?),文件大小减少了 35% 左右。

也许 Fred、Eric 或其他一些人有一些见解。我将继续寻找进一步的想法,并在我有任何新想法时更新我的​​帖子。

【讨论】:

  • 感谢@Mark 的回复。您选择的这对图像确实是一对。但是你可能想选择不同的对,因为你选择的兄弟图像中的二维码实际上是被 zbar 检测到的。也许您可以尝试以下一对:05161832.JPG (Brother 和 `2018_05_25_10_21_35.jpg (Fujitsu)。
  • 关于我尝试过的图像处理:我刚刚玩过textcleaner,比如:textcleaner -e stretch -o 10 -f 40 -t 40 -T -u -g 05161832.JPG result1.jpg。尝试了各种参数值。我还从 Brother 图像中裁剪了 QR,将其加载到 GIMP 中并应用了各种过滤器,并在每个过滤器之后尝试了 QR 检测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多