バーコードは何故逆さまでも読み取れるの
か?
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 910
11
12
13
数 9
パ A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 9 1
パ A B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 9 1 2
パ A B A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 9 1 2 3
パ A B A A
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 9 1 2 3 4
パ A B A A B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 9 1 2 3 4 5
パ A B A A B B
具体例(順方向の場合)
1 2 3 4 5 6 7 8 910
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 910
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 910
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 910
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 910
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 910
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 910
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 910
11
12
13
数 4
パ B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0
パ B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0 9
パ B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0 9 8
パ B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0 9 8 7
パ B B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0 9 8 7 6
パ B B B B B B
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
11
12
13
数 4 0 9 8 7 6
パ B B B B B B
センターバーを読み込んだときに、一桁目の文字が表に存在しないので、逆方向だとわかる
具体例(逆方向の場合)
1 2 3 4 5 6 7 8 910
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 910
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 910
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 910
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 910
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 910
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 910
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 910
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+JavaS
criptでバーコードリーダーをつくってみました!
http://yamanity.blog.ocn.ne.jp/nyantacos/upload/barocodereader_js/index.html