【问题标题】:How do I evaluate the quality/correctness a QR code? (How do I get Quantitative & Qualitative QR code characteristics)如何评估 QR 码的质量/正确性? (如何获得定量和定性二维码特征)
【发布时间】:2023-11-05 06:15:01
【问题描述】:

我需要评估和比较 QR 码生成库,并寻找逻辑参数来测量和比较输出。

我为什么需要这个?似乎当我给两个不同的 QR 生成器提供相同的输入时,似乎会生成不同的输出,而我作为人类无法分辨哪个是正确的。

正确的意思是有多少“QR”数据被我的输入编码/表示,或者能够被廉价手机(更大的块)读取。

在处理每个字节介于 0x7f(十进制 127)或 A0(十进制 160)之间的二进制数据时尤其如此,偶尔在处理 0 到 0x20(十进制 32)之间的值时

上面提到的问题区域恰好也与 ISO IEC 8859 1 字符集的无效或不可打印字符相关,因此库可能将我的输入读取为一个字符串,或将其编码为 2 byte UTF-16 字符,谁知道呢!

如果有人详细说明我应该查看 QR 码的哪些方面,或者更好的是显示 QR 码诊断数据的应用程序,那将是完美的。

【问题讨论】:

  • 完全相同的输入有许多不同的有效编码。在某些情况下,编码器可以选择不同的模式或不同的掩码模式。有时,有些比其他的更优化,但所有这些都可能是正确的。我认为您想验证编码器/解码器在往返过程中是否准确返回输入,并选择一个适用于您所有输入的。

标签: debugging encoding qr-code zxing iso-8859-1


【解决方案1】:

我会使用像 ZXing 这样的服务 - http://zxing.org/w/decode.jspx

您可以通过上传或指向 URL 向其提供 QR 码。

它将为您提供一些诊断信息,包括已编码的原始字节

Raw bytes   

44 76 d6 16 96 c7 46 f3   a7 26 56 36 97 06 96 56
e7 44 06 57 86 16 d7 06   c6 52 e6 36 f6 d3 f6 36
33 d6 f7 46 86 57 24 06   57 86 16 d7 06 c6 52 e6
36 f6 d2 67 37 56 26 a6   56 37 43 d6 86 56 c6 c6
f2 66 26 f6 47 93 d7 96   f0 ec 11 ec 

如果您不想信任一个随机网站,它是Open Source,因此您可以在本地运行它。

【讨论】:

    【解决方案2】:

    比 zxing 具有更多调试输出的 QR 解码器是 http://qrlogo.kaarposoft.dk/qrdecode.html

    根据作者的说法,使用的软件是纯JavaScript,所以它在你自己的浏览器中运行。

    启用调试输出的示例 QR 码解码(PNG 由 http://www.qrcode-monkey.de/ 编码):

    left=2 right=22 top=2 bottom=22
    size=21
    matchVersion version=1 finder0=64 finder1=64 finder2=64
    matchVersion version=1 timing0=1 timing1=1 alignment=1
    matchVersion version=1 format_NW =9 0 format_NESW =9 1 format = 9 ecl = 1 mask = 1
    matchVersion version=1 grades(F(V)TAF): 4444->4
    findModuleSize version=1 grade=4 error_correction_level=1 mask=1
    getCodewords mask=1 length=26
    getCodewords = 64,55,70,86,194,0,216,32,80,246,228,98,160,0,236,17,236,17,236,237,167,185,237,199,28,244
    setBlocks n_blocks_first=1 n_blocks_second=0 n_blocks=1 n_block_words_first=19 n_block_words_second=0 n_block_ec_words=7 total=26
    setBlocks block 0 (26): 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
    RS calculateSyndroms: No errors
    correctErrors in = 64,55,70,86,194,0,216,32,80,246,228,98,160,0,236,17,236,17,236,237,167,185,237,199,28,244
    correctErrors out = 64,55,70,86,194,0,216,32,80,246,228,98,160,0,236,17,236,17,236
    error_grade=4
    extractData bytes in (19) = 64,55,70,86,194,0,216,32,80,246,228,98,160,0,236,17,236,17,236
    extractData mode = 4
    extract charcount = 3
    extractData mode = 2
    extractAlphanum charcount = 1
    extractData mode = 1
    extractNumeric charcount = 10
    extractData mode = 0
    extractData data(14) = 116,101,108,58,49,50,51,52,53,54,55,56,57,48
    

    注意:嵌入的数据是tel:1234567890

    【讨论】:

      最近更新 更多