知識マップ: QRコードの読み取り値をそのまま使ってはいけない ── 誤り訂正が通っても値は保証されない
記事「QRコードの読み取り値をそのまま使ってはいけない ── 誤り訂正が通っても値は保証されない」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
QRコードはリード・ソロモン符号による誤り訂正を備えるが、これは印刷パターンからの復元であって値の正しさの保証ではなく、損傷が符号語の近傍に偏って入り込むと規格が明記する通り別の妥当な符号語として誤って復元されることがある。さらに誤り訂正の外側にも分割QR(Structured Append)や文字コード指定(ECI)の不備といった、エラーを出さずに誤った値を返す原因が存在する。これらに対し業務システム側は形式検査・チェックディジット・マスタ照合をこの順で重ねる多段検証で受け止める必要があり、チェックディジットは1文字の誤りを確実に検出できる一方で複数文字の変化は取りこぼすため、実在確認だけでなく今処理すべき対象との一致まで見るマスタ照合が最後の砦になる。QRの下にGS1のHRI(人間が読める表記)を併記しておくことも、誤読が疑われた際の発見手段として有効である。
flowchart LR
accTitle: QRコードの誤り訂正と値検証の知識マップ
accDescr: QRコードの誤り訂正が訂正であって検証ではないこと、誤り訂正・分割QR・ECIがそれぞれ誤読を引き起こしうること、チェックディジットと業務検証がどう誤読を防ぐかを示す図
qr_code["QRコード"]
reed_solomon_error_correction["リード・ソロモン誤り訂正"]
qr_misdecoding["QRコードの誤読"]
structured_append["分割QR(Structured Append)"]
qr_eci["ECI(拡張チャネル解釈)"]
check_digit["チェックディジット(検査用数字)"]
input_validation["入力値の検証(バリデーション)"]
master_data_verification["マスタ照合(業務検証)"]
gs1_hri["GS1のHRI(人間が読める表記)"]
qr_code -->|"利用する"| reed_solomon_error_correction
reed_solomon_error_correction -.->|"原因になり得る"| qr_misdecoding
qr_code -.->|"利用する"| structured_append
structured_append -.->|"原因になり得る"| qr_misdecoding
qr_code -.->|"前提とする"| qr_eci
qr_eci -.->|"原因になり得る"| qr_misdecoding
check_digit -.->|"軽減する"| qr_misdecoding
input_validation -->|"より先に行うべき"| check_digit
check_digit -->|"より先に行うべき"| master_data_verification
master_data_verification -.->|"軽減する"| qr_misdecoding
gs1_hri -->|"推奨される対応"| qr_misdecoding
qr_code -.->|"利用する"| gs1_hri
qr_code -->|"利用する"| input_validation
qr_misdecoding -.->|"で確認できる"| check_digit
qr_code -.->|"利用する"| check_digit
input_validation -.->|"軽減する"| qr_misdecoding
概念間の関係(全16件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- QRコードはリード・ソロモン誤り訂正を利用します。
- リード・ソロモン誤り訂正はQRコードの誤読の原因になることがあります。
- QRコードは分割QR(Structured Append)を利用します。
- 分割QR(Structured Append)はQRコードの誤読の原因になることがあります。
- QRコードはECI(拡張チャネル解釈)を前提とします。
- ECI(拡張チャネル解釈)はQRコードの誤読の原因になることがあります。
- チェックディジット(検査用数字)はQRコードの誤読を軽減します。
- 入力値の検証(バリデーション)はチェックディジット(検査用数字)より先に行うべきです。
- チェックディジット(検査用数字)はマスタ照合(業務検証)より先に行うべきです。
- マスタ照合(業務検証)はQRコードの誤読を軽減します。
- GS1のHRI(人間が読める表記)はQRコードの誤読に対する本記事の推奨です。
- QRコードはGS1のHRI(人間が読める表記)を利用します。
- QRコードは入力値の検証(バリデーション)を利用します。
- QRコードの誤読はチェックディジット(検査用数字)で確認できます。
- QRコードはチェックディジット(検査用数字)を利用します。
- 入力値の検証(バリデーション)はQRコードの誤読を軽減します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。