0

由于 QR 码使用 Reed-Solomon 进行纠错,我是对的,在一定程度的损坏情况下,QR 码阅读器理论上可能会返回错误的结果吗?

如果是,是否有其他级别的完整性检查(校验和等)可以防止这种情况发生?

4

1 回答 1

1

您可以在网络上搜索“QR Code ISO”,找到该文档的 pdf 版本。我在这里找到了一个:

https://www.swisseduc.ch/informatik/theoretische_informatik/qr_codes/docs/qr_standard.pdf

标准中有多种纠错强度,为了避免误纠,在某些情况下,某些“奇偶校验”字节仅用于错误检测,而不用于纠错。这显示在上面链接的 pdf 文件中的表 13 中。标有“b”的那些是一些奇偶校验字节仅用于错误检测的情况。例如,表 13 中的第一个条目显示 (26,19,2)b,这意味着 26 个总字节、19 个数据字节和 2 个字节校正,这意味着 26-19 = 7 个奇偶校验字节,使用了 4 个用于校正(每个校正字节需要 2 个奇偶校验字节,除非硬件可以标记“擦除”),3 个仅用于检测。

如果错误更正计算出无效位置(位于“有效位置范围之外”的位置),则会将其标记为检测到的错误。如果唯一计算位置的数量少于用于计算将被标记为检测到错误的那些位置(重复或不存在的根)的假定错误数量。对于更高级别的纠错,所有计算出的位置对坏数据有效的几率非常小,以至于没有一个奇偶校验字节仅用于错误检测。这些案例的表 13 条目中没有“b”。

为不同级别的纠错所做的选择导致错误结果的可能性很小,但它总是有可能的。

是否有其他级别的完整性检查(校验和等)可以防止这种情况发生?

QR 码阅读器可以将任何位不明确为 0 或 1 的字节(如黑/白代码上的灰色阴影)标记为潜在的“擦除”,这将降低错误结果的几率。我不知道这是否完成。

生成 QR 码时,会选择一个掩码以平衡代码中明暗区域的比例,并且在更正之后,如果有证据表明选择了错误的掩码,则可以将其标记为检测到错误,但是我不确定在打印代码时是否总是选择“最佳”掩码,所以我不知道是否使用了“最佳”掩码检查。

于 2019-03-02T20:58:25.393 回答