Debugging 如何评估二维码的质量/正确性?(如何获得定量和定性二维码特征)

Debugging 如何评估二维码的质量/正确性?(如何获得定量和定性二维码特征),debugging,encoding,qr-code,zxing,iso-8859-1,Debugging,Encoding,Qr Code,Zxing,Iso 8859 1,我需要评估和比较二维码生成库,并寻找逻辑参数来测量和比较输出 为什么我需要这个?似乎当我给两个不同的QR发生器相同的输入时,会产生不同的输出,作为一个人,我无法分辨哪一个是正确的 我所说的“正确”是指有多少“QR”数据是由我的输入编码/表示的,或者有多少“QR”数据能够被便宜的手机读取(较大的数据块) 在处理二进制数据时尤其如此,其中每个字节介于0x7f(127位小数)或A0(160位小数)之间,有时在处理0到0x20(32位小数)之间的值时更是如此 上面提到的问题区域碰巧也与ISO IEC 8

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

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

我所说的“正确”是指有多少“QR”数据是由我的输入编码/表示的,或者有多少“QR”数据能够被便宜的手机读取(较大的数据块)

在处理二进制数据时尤其如此,其中每个字节介于0x7f(127位小数)或A0(160位小数)之间,有时在处理0到0x20(32位小数)之间的值时更是如此

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


如果有人知道我应该查看二维码的哪些方面,或者更好的是,一个显示二维码诊断数据的应用程序,那就太完美了。

我会使用ZXing-

您可以通过上传或指向URL向其提供二维码

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

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 

如果你不想信任一个随机网站,那么你可以在本地运行它。

一个具有更多调试输出的QR解码器,那么zxing就是

根据作者的说法,使用的软件是纯JavaScript,因此它可以在您自己的浏览器中运行

启用调试输出的QR码解码示例(PNG由编码):

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

相同输入有许多不同的有效编码。编码器在某些情况下可以选择不同的模式,或者选择不同的遮罩模式。有时,有些人比其他人更理想,但所有人都可能是正确的。我认为您需要验证编码器/解码器在往返过程中是否准确返回输入,并选择一个对您的所有输入都有效的编码器/解码器。