(57)【要約】【課題】本願発明者らが開発した１．５Ｄカラービットコードの特長を生かして、その誤読につながりやすい部分（特定の値の部分）について、誤読を未然に防ぐセキュリティのかけ方、そのようなかけ方を実現できるチェックデジットの算出方法を提供することである。【解決手段】１．５Ｄカラービットコードで表したい数に対し、その各桁の数を所定のインデックス値に変換する変換ステップと、前記変換された各桁の非零のインデックス値に基づきチェックデジットを算出するチェックデジット算出ステップを含む方法である。変換ステップには、相互に読み誤りが生じやすい数のペアである誤認識第１数と、誤認識第２数とからなるペアに対して、その第１数に「１」を、第２数に「−１」をインデックス値として与える。その他の数に対しては、「０」をインデックス値として与えることによって、読み誤りが生じやすい部分に重点的にセキュリティを掛けることができる。【選択図】図２
2009025935.tif 000002
【特許請求の範囲】
【請求項１】
光学式認識コードに対して、誤りを検知するためのチェックデジットを求める方法において、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換ステップと、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出ステップと、
を含み、
前記変換ステップは、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段を用いて、
前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、
前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、
前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、
前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換することを特徴とするチェックデジット算出方法。
【請求項２】
請求項１記載のチェックデジット算出方法において、
前記チェックデジット算出ステップは、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出ステップと、
前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出ステップと、
を含むことを特徴とするチェックデジット算出方法。
【請求項３】
前記請求項２記載のチェックデジット算出方法において、
前記余りチェックデジット算出ステップは、
前記第１重み付け値と前記第２重み付け値との平均値の整数部で、前記第１重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出方法。
【請求項４】
前記請求項２記載のチェックデジット算出方法において、
前記余りチェックデジット算出ステップは、
前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出方法。
【請求項５】
請求項１記載のチェックデジット算出方法において、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出方法。
【請求項６】
請求項１〜５のいずれか１項に記載のチェックデジット算出方法において、
前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、
前記各桁は、０〜６のいずれかの数であることを特徴とするチェックデジット算出方法。
【請求項７】
光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置において、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手段と、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手段と、
を含み、
前記変換手段は、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段と、
前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換するインデックス変換手段と、
を含むことを特徴とするチェックデジット算出装置。
【請求項８】
請求項７記載のチェックデジット算出装置において、
前記チェックデジット算出手段は、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出手段と、
前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手段と、
を含むことを特徴とするチェックデジット算出方法。
【請求項９】
前記請求項８記載のチェックデジット算出装置において、
前記余りチェックデジット算出手段は、
前記第１重み付け値と前記第２重み付け値との平均値の整数部で、前記第１重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出装置。
【請求項１０】
前記請求項８記載のチェックデジット算出装置において、
前記余りチェックデジット算出手段は、
前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出装置。
【請求項１１】
請求項７記載のチェックデジット算出装置において、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出装置。
【請求項１２】
請求項７〜１１のいずれか１項に記載のチェックデジット算出装置において、
前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、
前記各桁は、０〜６のいずれかの数であることを特徴とするチェックデジット算出装置。
【請求項１３】
コンピュータを、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置として動作させるプログラムにおいて、
前記コンピュータに、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手順と、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手順と、
を実行させ、
前記変換手順は、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段を用いて、
前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、
前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、
前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、
前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換することを特徴とするプログラム。
【請求項１４】
請求項１３記載のプログラムにおいて、
前記チェックデジット算出手順は、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出手順と、
前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手順と、
を含むことを特徴とするプログラム。
【請求項１５】
請求項１３記載のプログラムにおいて、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするプログラム。
【請求項１６】
請求項１３〜１５のいずれか１項に記載のプログラムにおいて、
前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、
前記各桁は、０〜６のいずれかの数であることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学式認識コードのチェック手法に関する。特に、本願発明者らが発明した新しい光学式認識コード（１．５Ｄカラービットコードと呼ぶ（特願２００６−１９６５４８））のチェック手法に関する。
【背景技術】
【０００２】
従来のいわゆる二次元バーコードは、一般的には、マス目状に位置が規定されたセグメントの白黒（明暗）でデータを表すものであり、そのチェック（エラーの検知・訂正）のためのチェックデジットは、一次元バーコードなどに使用されるものと同様のものが使用されていた。
【０００３】
１．５Ｄカラービットコード
本願発明者らは、新しい２次元の光学式認識コードとして、上記のように、１．５Ｄカラービットコードを発明し、別途特許出願（特願２００６−１９６５４８））を行っている。
【０００４】
この１．５Ｄカラービットコードにおいては、例えば３色の色彩を付す帯状の場所を３色ごとに設けている。そして、の各色彩を付すための帯状の領域において、各色彩を付す／付さない、ことによって、所定のデータを表している。
【０００５】
言い換えれば、１．５Ｄカラービットコードは３色の色の列において、それぞれの色彩がＯＮ／ＯＦＦし、そのＯＮ／ＯＦＦ状態とデジタルデータを関連づけたことを特徴とするコード体系である。ここで、ＯＮ／ＯＦＦとは、上記帯状の領域の長手方向に沿って走査した場合に、色彩が付されている部分をＯＮ、色彩が付されていない部分をＯＦＦと呼ぶのである。
【０００６】
従って、このＯＮ／ＯＦＦのタイミングが維持されていれば若干のコードシンボルの変形はデコードに影響しないという利点を持つ。
【０００７】
ここで、タイミングとは、走査した際のタイミングを意味するので、時間的な「タイミング」ではなく、空間上のタイミングを意味する。また、「コードシンボル」とは、１．５Ｄカラービットコードのコード体系に基づいて作成された１個１個の具体的なコードその物を言い、しばしば単に「シンボル」とも言う。
【０００８】
しかしながら、この１．５Ｄカラービットコードの中でも比較的読み取りエラー（誤読）が生じやすい部分があるため、その部分に関しては重点的にセキュリティを掛けた方が好ましい場合がある。
【０００９】
従って、上述したように他の２次元バーコードのように従来の１次元バーコードに使用されるチェックデジットではなく、１．５Ｄカラービットコードの特徴を生かした新しいチェックデジットを利用することが望ましいと考えられる。
【００１０】
先行特許文献の例
例えば、下記特許文献１には、二次元コードとしてのカラー多重ドットコードを開示している。そして、誤り訂正データ領域がコード中に存在することが開示されている。
【００１１】
また、下記特許文献２には、二次元コードを読み取って情報を再生する装置が開示されている。ここで、二次元コード中には、誤り訂正データが含まれていることが開示されている。
【００１２】
【特許文献１】特開２００５−３１０１５０号公報
【特許文献２】特開２００５−３１０１４８号公報（特許第３９０８２５０号）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
このように、本願発明者らが開発した「１．５Ｄカラービットコード」は、「マーキングパターン（複数色の帯状領域における各色彩のＯＮ／ＯＦＦ）」における各帯状領域の太さの変動や、ある程度の曲がりを許容しているので、従来の二次元バーコードと異なり、歪みや、印刷のかすれ、等に対する耐性が本来は非常に強い。
【００１４】
しかし、帯状領域のＯＮ／ＯＦＦのタイミングのずれ等によって、あるデータが他のデータと読み誤ってしまう場合がある。具体的には特定の値の部分においては、他のデータと読み誤ってしまう可能性が他の値のデータよりも高い状況が存在する。
【００１５】
したがって、１．５Ｄカラービットコードにおいて採用するチェックデジットは、この１．５Ｄカラービットコードのコード体系の特徴を生かして、部分的（上記特定の値の部分）に重点的にセキュリティを欠けることができるようなチェックデジットが望ましい。
【００１６】
本発明は、係る課題に鑑みなされたものであり、その目的は、１．５Ｄカラービットコードの特長を生かして、その誤読につながりやすい部分（特定の値の部分）について、誤読を未然に防ぐセキュリティのかけ方、そのようなかけ方を実現できるチェックデジットを提供することである。
【課題を解決するための手段】
【００１７】
（１）本発明は、上記目的を達成するために、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める方法において、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換ステップと、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出ステップと、を含み、前記変換ステップは、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段を用いて、前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換することを特徴とするチェックデジット算出方法である。
【００１８】
（２）また、本発明は、上記（１）記載のチェックデジット算出方法において、前記チェックデジット算出ステップは、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出ステップと、前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出ステップと、を含むことを特徴とするチェックデジット算出方法である。
【００１９】
（３）また、本発明は、上記（２）記載のチェックデジット算出方法において、前記余りチェックデジット算出ステップは、前記第１重み付け値と前記第２重み付け値との平均値の整数部で、前記第１重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出方法である。
【００２０】
（４）また、本発明は、上記（２）記載のチェックデジット算出方法において、前記余りチェックデジット算出ステップは、前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出方法である。
【００２１】
（５）また、本発明は、上記（１）記載のチェックデジット算出方法において、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出方法である。
【００２２】
（６）上記（１）〜（５）のいずれか１項に記載のチェックデジット算出方法において、前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、前記各桁は、０〜６のいずれかの整数であることを特徴とするチェックデジット算出方法である。
【００２３】
（７）また、本発明は、上記課題を解決するために、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置において、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手段と、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手段と、を含み、前記変換手段は、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段と、前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換するインデックス変換手段と、を含むことを特徴とするチェックデジット算出装置である。
【００２４】
（８）また、本発明は、上記（７）記載のチェックデジット算出装置において、前記チェックデジット算出手段は、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出手段と、前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手段と、を含むことを特徴とするチェックデジット算出方法である。
【００２５】
（９）また、本発明は、上記（８）記載のチェックデジット算出装置において、前記余りチェックデジット算出手段は、前記第１重み付け値と前記第２重み付け値との平均値の整数部で、前記第１重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出装置である。
【００２６】
（１０）また、本発明は、上記（８）記載のチェックデジット算出装置において、前記余りチェックデジット算出手段は、前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出装置である。
【００２７】
（１１）また、本発明は、上記（７）記載のチェックデジット算出装置において、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出装置である。
【００２８】
（１２）また、本発明は、上記（７）〜（１１）のいずれか１項に記載のチェックデジット算出装置において、前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、前記各桁は、０〜６のいずれかの整数であることを特徴とするチェックデジット算出装置である。
【００２９】
（１３）また、本発明は、上記課題を解決するために、コンピュータを、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置として動作させるプログラムにおいて、前記コンピュータに、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手順と、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手順と、を実行させ、前記変換手順は、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第１数と、誤認識第２数と、からなるペアを、１ペア以上記憶している記憶手段を用いて、前記各桁の数を、前記記憶手段中の誤認識第１数と誤認識第２数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第１数である場合は、前記インデックス値として「１」に変換し、前記桁の数が、いずれかのペアの前記誤認識第２数である場合は、前記インデックス値として「−１」に変換し、前記桁の数が、前記誤認識第１でもなく、前記誤認識第２数でもない場合は、前記インデックス値として「０」に変換することを特徴とするプログラムである。
【００３０】
（１４）また、本発明は、上記（１３）記載のプログラムにおいて、前記チェックデジット算出手順は、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第１重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第２重み付け値を求める重み付け値算出手順と、前記第１重み付け値と、前記第２重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手順と、を含むことを特徴とするプログラムである。
【００３１】
（１５）また、本発明は、上記（１３）記載のプログラムにおいて、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第１数及び前記誤認識第２数のペアとして、前記記憶手段に格納されていることを特徴とするプログラムである。
【００３２】
（１６）また、本発明は、上記（１３）〜（１５）のいずれか１項に記載のプログラムにおいて、前記光学式認識コードは、所定の３色を用いて７進数を表す１．５Ｄカラービットコードであり、前記各桁は、０〜６のいずれかの数であることを特徴とするプログラムである。
【発明の効果】
【００３３】
以上述べたように、本発明によれば、光学式認識コードの中で、特に他の値と読み誤りやすい値の部分について、重点的にセキュリティを掛けることが可能なチェックデジットを実現することができる。
【００３４】
その結果、光学式認識コードのエラーを効率よく検知することが可能である。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【００３６】
第１  １．５Ｄカラービットコードの概要
まず、本願発明者らが開発した１．５Ｄカラービットコードの概要の説明を行う。ここで説明する１．５Ｄカラービットコードは、マーキング色として３色を用いる例である。例えば、Ｒ（赤）、Ｇ（緑）、Ｂ（青）、（Ｃ、Ｍ、Ｙでも良い）の３色である。また、クワイアットゾーンを構成するクワイアットカラー色としてＫ（黒）である例を示す。
【００３７】
まず、１．５Ｄカラービットコードは、色彩の異なる３本の線が平行にほぼ等間隔に列を構成する。３列中の各列は途中何カ所か途切れており、途切れた部分はクワイアットゾーンに相当する色彩（つまりＫ（黒））となっている。両端を含めた各列の途切れた部分をその色の出入りがあったと見て、「ＯＮ／ＯＦＦ」箇所と呼ぶ。なお、途切れるとはマーキング色（Ｒ、Ｇ、Ｂ等）の色彩が欠落し、マーキング色以外の色（Ｋ（黒））が表れることを言う。
【００３８】
１．５Ｄカラービットコードは、３色の列の「ＯＮ／ＯＦＦ」の箇所の位置関係でデータを表現する。また、両端以外の中間部分では、３色が一度にすべて途切れてしまうことは無い。３色の並び方、「ＯＮ／ＯＦＦ」の位置関係の規則はデータやチェック方法でその都度規定される。すなわち、エラー検知、エラー修正等は、別途用途に応じて定める。
【００３９】
「マーキングパターン」の周囲は定められた色彩（たとえばＫ（黒））のクワイアットゾーンで一定範囲以上取り囲まれている。
【００４０】
セルとエレメント
なお、色彩がＯＮ／ＯＦＦする単位をセルと呼ぶ。１個のセルには３色の領域（エレメントと呼ぶ）が含まれている。複数個のセルを、その内部の同じ色のエレメントが隣接するように一列に並べたものが１．５Ｄカラービットコードである。同じ色のエレメントが隣接して並ぶので、全体としてこの同じ色の帯状の領域を構成する。この帯状の領域が上述した「色彩の異なる３本の線」に相当する。
【００４１】
例えば、あるセルでは、エレメントＲがＯＮし、エレメントＢがＯＦＦ、エレメントＧがＯＮしており、隣接するセルにおいては、エレメントＲがＯＮし、エレメントＢがＯＦＦ、エレメントＧがＯＦＦする、・・・のように、各色彩がＯＮ／ＯＦＦしていく。
【００４２】
また、隣接するセル間では、たかだか１個のエレメント（すなわちたかだか１色）のみが変化する。これによって、走査（スキャン）によって、各セルの境界を検知することができる。
【００４３】
以上が１．５Ｄカラービットコードの概要であり、１．５Ｄカラービットコードはこのような条件に基づいて作成されている。
【００４４】
第２  コーディング例
図１には、１．５Ｄカラービットコードの典型的なコーディング例が示されている。
【００４５】
図１の例では、３セルで１個の数を表している。ここでは、７進数でデータを表現する例を示しており、各３セルのブロックは、０から６までのいずれかの数を表す。
【００４６】
図１に示すように、各３セルのブロックは必ず２色ＯＮ状態から始まり（左端を「始まり」としている）、２色ＯＮ状態で終了する（右端を「終了」としている）。
【００４７】
すなわち、（始まり）２色ＯＮ−３色ＯＮ−２色ＯＮ（終了）か、２色ＯＮ−１色ＯＮ−２色ＯＮの組み合せで０から６の数字を表している。なお、以下、このような並びは、全て、左端（始まり）・・・右端（終了）の順で並んでいるものとし、左端・右端等の記述は省略する。
【００４８】
図１に示すように、この３セルの組み合わせは左端の２色の組み合わせにより３種のグループに分かれている。図１（１）は、ＲＧで始まる組み合わせであり、図１（２）は、ものであり、図１（２）はＢＧで始まる組み合わせである。そして、図１（３）はＲＢで始まる組み合わせである。
【００４９】
このように、一つの数字（例えば「３」を表す場合、どのグループを選択するかによって、３通りの表現方法がある。
【００５０】
そして右端の２色の組み合わせにより、次の数字を表すグループを選択するようなコーディング仕様となっている。言い換えれば、右端の２色の組み合わせが、次に続くグループを指示するのである。
【００５１】
このような仕様によって０から６の数字を、３色のＯＮ／ＯＦＦで、かつ同時に１色しかＯＮ／ＯＦＦしない仕組みで表すことができる。
【００５２】
ここで、図２中、「０、４、２、１、１、３、０、２、２、６、４、６」は表現したい七進数のデータを表す。七進数なので０から６までの数字の並びで構成されている。
【００５３】
その「表現したい数」のそれぞれの数の下に各桁の数のグループの番号「１，２，１，１，２，０，０，１，１，１，１，０」が示されている。このグループ１２の番号は、図１で示したグループの番号を表す。
【００５４】
なお、本文では、特に断らない限り、その数は十進数であるか、または、十進数でも七進数でも同じもの（０〜６）である。
【００５５】
例えば、図２において、表現したい数１０「０、４、２、１、１、３、０、２、２、６、４、６」の最初の数「０」は、まずグループ１（図１（１））から選択される。図１（１）から「０」に相当する組み合わせを取り出して、採用する。この図１（１）の「０」の組み合わせは最後がＧＢ（緑青）で終わっているので、次に利用すべきグループは、グループ２、つまり図１（２）で示されたグループである。
【００５６】
次に表したい数は、表現したい数「０、４、２、１、１、３、０、２、２、６、４、６」の２番目の数「４」である。そこで、グループ２（図１（２））からこの「４」に相当する組み合わせを選択して、採用する。
【００５７】
以下、同様にして、順次、各桁ごとに組み合わせを選んでいく。選んだ結果が図２の中段に示されている。この中段に示された各組み合わせ（３個のセルから成る組み合わせは）、上で述べた選び方から当然に、左右端部のセルはその隣接するセルの端部のセルと同様である。なぜならば、あるセルに続くセルは、そのあるセルの右端の色彩と同様の色彩の組み合わせとなるようなグループから選択しているからである。
【００５８】
したがって、最終的なコードシンボルを形成する際には、その同じ色彩の組み合わせのセルを省略して表示する。さらに、最終的なコードシンボルを形成するには、そのコードシンボルの「始め」と「終了」とを指示する必要がある。そのために、図２に示すように、スタートマーク１０を左端に付し、エンドマーク１２を右端に付すことによって、最終的なコードシンボルが構成される。
【００５９】
このようにして構成された最終的なコードシンボルが図２の下段に示されている。
【００６０】
ここで示したケースにおいて、仮にいずれかの色が途中でとぎれたり長くなった場合は、通常はセル数の変化などの本コードの規則違反となってあらわれる。したがって、誤りがしょうじたことをチェックすることが通常は可能である。
【００６１】
しかしながら本例の各グループの「０」と「１」、「４」と「５」については何らかの原因でセル端の位置が変わった場合、互いの値に変わってしまう可能性がある。
【００６２】
例えば、図１（１）の「０」において、Ｒ（赤）の色彩の帯が長くなってしまった場合、つまり、ＲのＯＮ状態が長びいてしまうと、ＲがＢ（青）と重畳してしまう部分ができる可能性がある。重畳してしまうと、その値は「１」と読み取られてしまう恐れがある。これは、図１（２）、図１（３）でも同様であることは、図１の内容から明らかであろう。
【００６３】
また例えば、図１（２）の「４」において、Ｂ（青）の色彩の帯が長くなってしまった場合、つまり、ＲのＯＮ状態が長びいてしまうと、ＢがＲ（赤）と重畳してしまう部分ができる可能性がある。重畳してしまうと、その値は「５」と読み取られてしまう恐れがある。これは、図１（１）、図１（３）でも同様であることは、図１の内容から明らかであろう。
【００６４】
第３．  本実施の形態で提案する内容
本実施の形態では、このような１．５Ｄカラービットコード特有の性質に着目して、このような箇所に重点的にセキュリティを掛ける手法を提案する。
【００６５】
また、できるだけ効率の良いセキュリティを掛けるために、できるだけ少ないチェックデジットでセキュリティを実現する方法を提案する。
【００６６】
第４  チェックデジットの実際
本考案におけるセキュリティのかけ方を以下に示す。
【００６７】
すでに説明したように、本実施の形態では数字が変化しやすいパターンをできるだけ特定の数字に限定している。本例ではパターン（グループ）が３つあるが、誤りが生じやすい組み合わせを、いずれのグループにおいても「０と１」、「４と５」に限定することができた。具体的に本実施の形態におけるチェックデジットの計算法を以下に示す。
【００６８】
まず、例えば１０桁の７進数を考える。この数は、
００００００００００〜６６６６６６６６６６（七進数）
と表される。
【実施例１】
【００６９】
さて上記１０桁の数の内、変化しやすい「０と１」、「４と５」の数字が１つしか含まれない場合
（例）２２２２２１２２２２    ３２３２０６６２３２  など
について検討する。
【００７０】
この場合は、変化しやすい（変化先の）パターンが一般的に１個のみ存在する。上記の例で言えば、
２２２２２１２２２２  は、
↓
２２２２２０２２２２  に変化しやすい
３２３２０６６２３２  は、
↓
３２３２１６６２３２  に変化しやすい
したがって、チェックデジットとしては、２種類の値を取りうる数値（例えば、０，１などでも良い）を付加してやればよい。
【００７１】
２種類の値がとれればよいので、典型的には、例えばパリティ（偶奇性チェック）をＣＤとして加えることが好ましい。そして、パリティを計算し、その値がＣＤと異なれば、上記のような変更（読み誤り）が生じたと判断するのである。
【００７２】
但し、説明を簡単にするためチェックデジットそのものの変化しやすさは考慮に入れない。以下同様である。
【００７３】
なお、本実施の形態では、変化しやすい「０と１」、「４と５」に関して重点的にセキュリティをかける例を示し、他の数字が変化することは考慮していない。既に述べたように、他の数字が印刷の汚れ等で本来の数字以外の数字として読み取られる恐れは小さく、かつ、もし他の数字として誤読が起きる程度にコードシンボルに汚れや変形が生じた場合は、そもそもセル数の不一致などコーディングルールに違反してしまうからである。
【００７４】
したがって、本実施の形態では、コーディングルールに違反せずに、色彩のエッジの位置が変化してしまう場合のみを念頭に置いており、そのような場合を効率的に検知可能なチェックデジットを得ることを主旨とするものである。
【実施例２】
【００７５】
次に、１０桁の数字がすべて変化しやすい「０，１」・「４，５」であった場合、
（例）００４１０１００４４  など
は、以下のようなアルゴリズムでチェックデジットを算出する。
【００７６】
（ステップ１）各桁（７進数）の０，４を−１、また１，５を１に置き換える。そして、その他の数を０と置く。その上で、０を右詰に、１，−１を左詰に並べかえる。
【００７７】
このような「１」「−１」「０」をインデックス値と呼ぶ。
【００７８】
上の例「４１０１００４４」では、置き換えの結果、
「−１、−１、−１、１、−１、１、−１、−１、−１、−１」
となる。０はなく、全て１か−１なので、右詰、左詰の作業はない。
【００７９】
ここで、上記「−１、−１、−１、１、−１、１、−１、−１、−１、−１」の各桁の数を、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈ、ｉ、ｊとおく。すなわち、
ａ  ＝−１  
ｂ  ＝−１
ｃ  ＝−１
ｄ  ＝  １
ｅ  ＝−１
ｆ  ＝  １
ｇ  ＝−１
ｈ  ＝−１
ｉ  ＝−１
ｊ  ＝−１
である。
【００８０】
（ステップ２）次に、下位桁である右桁から（つまりｊから）、その値とその値の絶対値との和に対して順に１，３，５・・・の重みを乗じて、総和を算出する。すなわち、重み付け値を算出する。これを第１の重み付け値ｋ１と呼ぶ。
【００８１】
同様にして、下位桁である右桁から（つまりｊから）、その値の絶対値とその値との差に対して順に１，３，５・・・の重みを乗じて、総和を算出する。これを第２の重み付け値ｋ２と呼ぶ。
【００８２】
具体的に書けば、ｋ１、ｋ２は、以下のように記述される。
【００８３】
ｋ１＝（（｜ｊ｜＋ｊ）＊１＋（｜ｉ｜＋ｉ）＊３＋（｜ｈ｜＋ｈ）＊５
＋（｜ｇ｜＋ｇ）＊７＋（｜ｆ｜＋ｆ）＊９＋（｜ｅ｜＋ｅ）＊１１
＋（｜ｄ｜＋ｄ）＊１３＋（｜ｃ｜＋ｃ）＊１５＋（｜ｂ｜＋ｂ）＊１７
＋（｜ａ｜＋ａ）＊１９）／２
ｋ２＝（（｜ｊ｜−ｊ）＊１＋（｜ｉ｜−ｉ）＊３＋（｜ｈ｜−ｈ）＊５
＋（｜ｇ｜−ｇ）＊７＋（｜ｆ｜−ｆ）＊９＋（｜ｅ｜−ｅ）＊１１
＋（｜ｄ｜−ｄ）＊１３＋（｜ｃ｜−ｃ）＊１５＋（｜ｂ｜−ｂ）＊１７
＋（｜ａ｜−ａ）＊１９）２
ここで挙げた例ではインデックス値が全て非零であるので、全ての桁に対して重みを割り付けているが、インデックス値が零である桁がある場合は、その桁をとばして、下位から順に１，３，５，・・・が割り当てられる。そのような例は後述する。
本実施の形態においては、このように等差数列的に順次増加していく一連の数（群）を、重みとして用いている。この結果、誤読が生じやすい箇所に誤読が生じたことを効率的に検知することが可能である。
【００８４】
（ステップ４）次に、このようにして求めた第１の重み付け値ｋ１及び第２の重み付け値ｋ２、からチェックデジットＣＤを以下のようにして求める。
【００８５】
ＣＤ＝ｍｏｄ（ｋ１，ｉｎｔ（（ｋ１＋ｋ２）／２）＋１６−非零桁数＊２）
：ここでｉｎｔ（ｔ）はｔの整数部である。  
：また非零桁数とは、インデックス値が非零である桁数である。
【００８６】
このようにして計算した結果、ＣＤの値は０〜３１（十進数）となり、比較的少ない種類でチェックデジットを実現することができる。これは誤読が生じやすい部分についてのみ検知を行っているためである。
【００８７】
上で例として挙げた数字の場合００４１０１００４４について実際に計算してみよう。既に、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈ、ｉ、ｊは求められているので、重み付け値ｋ１、ｋ２を算出する。
【００８８】
ｋ１＝（（｜ｊ｜＋ｊ）＊１＋（｜ｉ｜＋ｉ）＊３＋（｜ｈ｜＋ｈ）＊５
＋（｜ｇ｜＋ｇ）＊７＋（｜ｆ｜＋ｆ）＊９＋（｜ｅ｜＋ｅ）＊１１
＋（｜ｄ｜＋ｄ）＊１３＋（｜ｃ｜＋ｃ）＊１５＋（｜ｂ｜＋ｂ）＊１７
＋（｜ａ｜＋ａ）＊１９）／２
＝（２＊９  ＋  ２＊１３）／２
＝（１８＋２６）２
＝２２
ｋ２＝（（｜ｊ｜−ｊ）＊１＋（｜ｉ｜−ｉ）＊３＋（｜ｈ｜−ｈ）＊５
＋（｜ｇ｜−ｇ）＊７＋（｜ｆ｜−ｆ）＊９＋（｜ｅ｜−ｅ）＊１１
＋（｜ｄ｜−ｄ）＊１３＋（｜ｃ｜−ｃ）＊１５＋（｜ｂ｜−ｂ）＊１７
＋（｜ａ｜−ａ）＊１９）／２
＝（２＊１＋２＊３＋２＊５＋２＊７＋２＊１１＋２＊１５
＋２＊１７＋２＊１９）／２
＝（２＋６＋１０＋１４＋２２＋３０＋３４＋３８）／２
＝７８
次に、これらからＣＤを計算する。
【００８９】
ＣＤ＝ｍｏｄ（２２、ｉｎｔ（（２２＋７８）／２）＋１６−２０）
＝ｍｏｄ（２２、４６）
＝２２
計算すると、ＣＤ＝２２となる。
【００９０】
本実施の形態で示すこの方法の場合、同じＣＤ値を取る数字はどのＣＤにおいても誤り距離が最低で４であることが本願発明者らのシミュレーションで確認できた。これは、同時に０を１と読むような誤りが３箇所に生じてもＣＤの値が異なった値を取り、誤りが生じたことを検出することができることを意味する。
【実施例３】
【００９１】
次に、同様のアルゴリズムを１０桁の内６つが変化しやすい０，１・４，５であった場合について計算する。
【００９２】
ここでは、例えば  ００４２０４１５５３（七進数）を用いる。
【００９３】
（１）まず、各桁（７進数）の０，４を−１、また１，５を１に置き換える。
【００９４】
その他の数を０と置き、０を左詰に、１，−１を右詰に並べかえると、
０    ０    ４    ２    ０    ４    １  ５  ５  ３
↓
−１、−１、−１、  ０、−１、−１、  １、１、１、０
↓
０、  ０、−１、−１、−１，−１，−１，１，１，１
となる。したがって、
ａ  ＝  ０
ｂ  ＝  ０
ｃ  ＝  −１
ｄ  ＝  −１
ｅ  ＝  −１
ｆ  ＝  −１
ｇ  ＝  −１
ｈ  ＝  １
ｉ  ＝  １
ｊ  ＝  １
となる。
【００９５】
本実施の形態において特徴的なことは、誤読が生じにくい数についてはインデックス値として０に変換したことである。この結果、誤読が生じにくい数についてはチェックデジットの算出には関係なくなり、他の数字に誤って読まれてしまう可能性のある数についてセキュリティを集中させることが可能である。
【００９６】
（２）次に、右桁から順に１，３，５…を掛け、重み付け値ｋ１、ｋ２を算出する。
【００９７】
ｋ１＝（（｜ｊ｜＋ｊ）＊１＋（｜ｉ｜＋ｉ）＊３＋（｜ｈ｜＋ｈ）＊５
＋（｜ｇ｜＋ｇ）＊７＋（｜ｆ｜＋ｆ）＊９＋（｜ｅ｜＋ｅ）＊１１
＋（｜ｄ｜＋ｄ）＊１３＋（｜ｃ｜＋ｃ）＊１５＋（｜ｂ｜＋ｂ）＊１７
＋（｜ａ｜＋ａ）＊１９）／２
＝（２＋６＋１０）／２
＝９
ｋ２＝（（｜ｊ｜−ｊ）＊１＋（｜ｉ｜−ｉ）＊３＋（｜ｈ｜−ｈ）＊５
＋（｜ｇ｜−ｇ）＊７＋（｜ｆ｜−ｆ）＊９＋（｜ｅ｜−ｅ）＊１１
＋（｜ｄ｜−ｄ）＊１３＋（｜ｃ｜−ｃ）＊１５＋（｜ｂ｜−ｂ）＊１７
＋（｜ａ｜−ａ）＊１９）／２
＝（１４＋１８＋２２）／２
＝２７
（３）このｋ１、ｋ２からチェックデジットＣＤを算出すると
ＣＤ＝ｍｏｄ（ｋ１，ｉｎｔ（（ｋ１＋ｋ２）／２）＋１６−２０）  
＝ｍｏｄ（９、ｉｎｔ（（９＋２７）／２＋１６−２０）
＝ｍｏｄ（９、１４）
＝９
このようにしてＣＤとして９が求められる。この場合でも、同じＣＤ値を取る数字はどのＣＤにおいても誤り距離が最低で４であることが確認できる。
【００９８】
これまで１０桁（七進数）の数について例を述べたが、他の桁でも同様のアルゴリズムでチェックデジット（ＣＤ）を作成することができる。例えば、１２桁（七進数）の場合、ＣＤ値は、０から６３の６４種類のＣＤを利用することができる。
【００９９】
第５  コンピュータとソフトウェア
これまで述べた一連の処理は、コンピュータに所定のプログラムを実行させることによって、実現される。その場合、そのコンピュータは、１．５Ｄカラービットコードのチェックデジット算出装置を構成する。さらに、切り出した色領域群に対してデコード処理を行い、原データを出力すれば、それは１．５Ｄカラービットコード認識装置と呼べる装置となる。
【０１００】
その結果、上で述べた各動作ステップを実行する手段がコンピュータで実現される。請求の範囲で述べた各手段は、コンピュータにプログラムを実行させることによって実現されており、請求の範囲の各ステップは、コンピュータにプログラムを実行させることによってそのステップの処理動作が行われる。
【０１０１】
このような装置は、表現したいデータに対して、所定のチェックデジットを算出する。このような表現したいデータは、記録媒体に記録されている場合は、その記録媒体を介して受領してもよいし、ネットワークを介して受領するのも好ましい。算出したチェックデジットはそのまま出力することも好ましいが、このチェックデジットを利用した最終的な１．５Ｄカラービットコードを構成して、この１．５Ｄカラービットコードを外部に供給するのが好適であろう。
【０１０２】
すなわち、本実施の形態におけるチェックデジット算出方法や算出装置は、それ自体独立して実施するのも好適であるが、符号化の場面で用いられる技術であるから、符号化装置と同一の機器内に収容（プログラムをインストール）しておくことも好ましい。
【０１０３】
また、上で述べたプログラムは、コンピュータ上のハードディスクなどの記憶手段に格納しておくことが好ましいが、ＣＤＲＯＭや、ＤＶＤＲＯＭ等の記憶媒体に格納しておくことも好ましい。また、このプログラムをサーバー上に格納しておき、クライアントコンピュータが適宜サーバーからそのプログラムを利用する形態を採用することも好適である。
【０１０４】
なお、デコード処理は、従来のデコード処理をそのまま利用可能である。
【０１０５】
第６  変形例
以上、主として１．５Ｄカラービットコードを例にして説明したが、複数の色領域から構成される光学式認識コードであれば、本発明を適用することができる。
【０１０６】
特に、そのコードが表す所定の値に対しては、色の印字部分の縁がずれる等して、他の値に容易に変化してしまう場合、その所定の値に重点的にセキュリティをかけるのも好適であり、そのような用途に本発明は向いている。
【０１０７】
上で述べた例では、印字位置の変動によって、「０と１」「４と５」等のコードに変化してしまう場合に、その「０と１」や「４と５」に重点的にセキュリティを掛けることが可能であり、より一層、読み取りエラーの存在を的確に判断することが可能である。
【０１０８】
ここで、他のコーディングを採用する場合は、誤りやすい数はもちろん別の数となるであろう。各コーディング手法によって、重点的にセキュリティを欠けたい部分（数）は一般的に異なると考えられるので、各コーディングにしたがって、セキュリティを重点的に掛ける場所を決めるべきである。
【図面の簡単な説明】
【０１０９】
【図１】本実施の形態で示すコーディング例である。
【図２】図１のコーディングによって得られる１．５Ｄカラービットコードである。
【符号の説明】
【０１１０】
１０  スタートマーク
１２  エンドマーク
【図１】
2009025935.tif 000003
【図２】
2009025935.tif 000004