バーコードは何故 逆さまでも読み取れるのか?
2014/05/17 @なんでも勉強会
にゃんたこす
アジェンダ的な・・・
• バーコードが逆でも読めるのは何故? –バーコードはよくできたコード体系
• バーコードリーダーを作ってみた –なんとWEBカメラとWEBブラウザだけで作れる
素朴な疑問
• 普段はあまり意識しないけれど、バーコードは 逆さでも正しく読める。(店では気にもしないけど)
なぜか??
よくある誤解1
【誤解】
バーコードの線は、先頭の線と末尾の線とで
微妙に幅が違うのでわかるようになっている。
よくある誤解1
【誤解】
バーコードの線は、先頭の線と末尾の線とで
微妙に幅が違うのでわかるようになっている。
【解説】
いや、そんなこともない。
(右図参照)
図の出典: インクジェットプリンターのKGK紀州技研工業|豆知識_バーコードの話 https://www.kishugiken.co.jp/reading/barcode/barcode2.html
よくある誤解2
【誤解】
バーコードの末尾数字(チェックサム)でチェック
している。エラーなら逆向きと判断し、読み直す。
よくある誤解2
【誤解】
バーコードの末尾数字(チェックサム)でチェック
している。エラーなら逆向きと判断し、読み直し。
【解説】
どちらから読んでもエラーにならない場合は
どうするの?そもそもチェックサムは逆さ読み
検出の用途に使うものではない。(ノイズ検出)
とりあえず、 バーコードを解読してみよう!
図の出典: インクジェットプリンターのKGK紀州技研工業|豆知識_バーコードの話 https://www.kishugiken.co.jp/reading/barcode/barcode2.html
図の出典: JANコードの詳細 | 株式会社エイポック http://www.a-poc.co.jp/howto/howto_words_barcode-JAN.html
表の出典: 裏辺研究室 第106回 これがバーコードの意味だ!(1) http://www.uraken.net/zatsugaku/zatsugaku_106.html
バーコードの解読方法
図の出典: インクジェットプリンターのKGK紀州技研工業|豆知識_バーコードの話 https://www.kishugiken.co.jp/reading/barcode/barcode2.html
図の出典: JANコードの詳細 | 株式会社エイポック http://www.a-poc.co.jp/howto/howto_words_barcode-JAN.html
表の出典: 裏辺研究室 第106回 これがバーコードの意味だ!(1) http://www.uraken.net/zatsugaku/zatsugaku_106.html
バーコードの解読方法
まずは順方向から、 具体的に、
バーコードを解読してみよう!
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9
パ A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1
パ A B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2
パ A B A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3
パ A B A A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3 4
パ A B A A B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3 4 5
パ A B A A B B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5
パ - A B A A B B
センターバーを読み込んだときに、一桁目の文字が表に存在する(この場合4)
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6
パ - A B A A B B C
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7
パ - A B A A B B C C
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7 8
パ - A B A A B B C C C
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7 8 9
パ - A B A A B B C C C C
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7 8 9 0
パ - A B A A B B C C C C C
具体例(順方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7 8 9 0 4
パ - A B A A B B C C C C C C
今度は逆方向から、 バーコードを解読してみよう!
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4
パ B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0
パ B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0 9
パ B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0 9 8
パ B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0 9 8 7
パ B B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0 9 8 7 6
パ B B B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 0 9 8 7 6
パ B B B B B B
センターバーを読み込んだときに、一桁目の文字が表に存在しないので、逆方向だとわかる
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 6 7 8 9 0 4
パ C C C C C C
・・・なのでひっくり返す (※ Bはひっくり返るとC)
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 6 7 8 9 0 4
パ A C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 6 7 8 9 0 4
パ A B C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 6 7 8 9 0 4
パ A B A C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3 6 7 8 9 0 4
パ A B A A C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3 4 6 7 8 9 0 4
パ A B A A B C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 9 1 2 3 4 5 6 7 8 9 0 4
パ A B A A B B C C C C C C
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 9 10 11 12 13
数 4 9 1 2 3 4 5 6 7 8 9 0 4
パ - A B A A B B C C C C C C
センターバーを読み込んだときに、一桁目の文字が表に存在する(この場合4)
バーコードは逆でも読めることが、 お分かりいただけたであろうか?
・・・というわけでつくってみた
• WEBカメラ+HTML5+JavaScriptで バーコードリーダーをつくってみました!
http://yamanity.blog.ocn.ne.jp/nyantacos/upload/barocodereader_js/index.html