(57)【要約】【課題】二次元コードで管理する際に真正性を担保する。【解決手段】開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置し、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードに代えて、前記終端識別コードの後に配置する二次元コードの生成工程を、複数回実行することにより、前記複数の関連二次元コードの各々を生成し、各々の前記生成工程において前記非公開データコードを配置する際に、前記複数の関連二次元コードが互いに関連付けられていることを特定可能とするための関連コード情報を前記非公開データコードに含ませる。【選択図】図３３
2020086893.tif 000002
【特許請求の範囲】
【請求項１】
互いに関連付けられた複数の関連二次元コードを生成する二次元コード生成方法であって、
開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置し、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードの一部または全部に代えて、前記終端識別コードの後に配置する二次元コードの生成工程を、複数回実行することにより、前記複数の関連二次元コードの各々を生成し、
各々の前記生成工程において前記非公開データコードを配置する際に、前記複数の関連二次元コードが互いに関連付けられていることを特定可能とするための関連コード情報を前記非公開データコードに含ませること
を特徴とする二次元コードの生成方法。
【請求項２】
前記終端識別コードと前記非公開データコードとの間には、後続のデータコードが前記非公開データコードであることを示す秘匿識別コードが配置され、
各々の前記生成工程において前記非公開データコードを配置する際に、前記関連コード情報を前記非公開データコードに含ませる代わりに前記秘匿識別コード内又はその前か後に含ませること
を特徴とする請求項１記載の二次元コードの生成方法。
【請求項３】
前記終端識別コードと前記非公開データコードとの間には、非公開データコードのデータ長をコード化したデータ長情報が更に配置され、
各々の前記生成工程において前記非公開データコードを配置する際に、前記関連コード情報を前記非公開データコードに含ませる代わりに前記秘匿識別コード内又はその前か後、或いはデータ長情報内又はその前か後に含ませること
を特徴とする請求項２記載の二次元コードの生成方法。
【請求項４】
前記開示するデータと前記非公開とするデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、前記秘匿データコードには、前記データレコード中の位置関係を示す位置情報が付加されていることを特徴とする請求項１〜３のいずれか１項に記載の二次元コードの生成方法。
【請求項５】
請求項１に記載の二次元コード生成方法であって、
前記関連コード情報は、
二次元コードが関連二次元コードであるか否かを示す識別情報と、
互いに関連付けられた複数の関連二次元コードの連鎖数を示す連鎖数情報と、
前記関連コード情報を備える関連二次元コードが、前記連鎖数分の関連二次元コードのうちの何番目の関連二次元コードであるかを示す序列番号情報と、
前記関連コード情報を備える関連二次元コードが、該関連二次元コードと序列番号が異なる他の関連二次元コードと関連付けられているか否かを示す指標情報と、
を有することを特徴とする二次元コードの生成方法。
【請求項６】
請求項１に記載の二次元コード生成方法により生成された複数の関連二次元コードを読み取って、該複数の関連二次元コードが互いに関連付けられていることを評価する二次元コード評価方法であって、
前記関連二次元コードから前記非公開データコードを抽出し、前記非公開データコードから前記関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連二次元コードの各々に対して実行する取り出し工程と、
前記複数の関連二次元コードの各々から取得された前記関連コード情報に基づいて、前記複数の関連二次元コードが互いに関連付けられていることを評価する評価工程と、を有することを特徴とする二次元コード評価方法。
【請求項７】
請求項５に記載の二次元コード生成方法により生成された複数の関連二次元コードを読み取って、該複数の関連二次元コードが互いに関連付けられていることを評価する二次元コード評価方法であって、
前記関連二次元コードから前記関連コード情報が含められた前記秘匿識別コード又はデータ長情報を抽出して当該関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連二次元コードの各々に対して実行する取り出し工程と、
前記複数の関連二次元コードの各々から取得された前記関連コード情報に基づいて、前記複数の関連二次元コードが互いに関連付けられていることを評価する評価工程と、を有することを特徴とする二次元コード評価方法。
【請求項８】
請求項６に記載の二次元コード評価方法であって、
前記関連コード情報は、
二次元コードが関連二次元コードであるか否かを示す識別情報と、
互いに関連付けられた複数の関連二次元コードの連鎖数を示す連鎖数情報と、
前記関連コード情報を備える関連二次元コードが、前記連鎖数分の関連二次元コードのうちの何番目の関連二次元コードであるかを示す序列番号情報と、
前記関連コード情報を備える関連二次元コードが、該関連二次元コードと序列番号が異なる他の関連二次元コードと関連付けられているか否かを示す指標情報と、を有し、
前記評価工程においては、
前記識別情報に基づいて、各々の前記二次元コードが関連二次元コードであることが確認され、前記複数の関連二次元コードの各々から取得された前記連鎖数情報及び前記序列番号情報に基づいて、前記連鎖数分の互いに異なる前記序列番号が揃ったことが確認され、前記指標情報に基づいて、互いに異なる前記序列番号を有する連鎖数分の前記関連二次元コードが関連付けられていることが確認された際に、
前記複数の関連二次元コードが互いに関連付けられていると評価することを特徴とする二次元コードの評価方法。
【請求項９】
互いに関連付けられた複数の関連二次元コードを生成する二次元コード生成システムであって、
開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置し、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードの一部または全部に代えて、前記終端識別コードの後に配置する二次元コードの生成工程を、複数回実行することにより、前記複数の関連二次元コードの各々を生成し、
各々の前記生成工程において前記非公開データコードを配置する際に、前記複数の関連二次元コードが互いに関連付けられていることを特定可能とするための関連コード情報を前記非公開データコードに含ませること
を特徴とする二次元コードの生成システム。
【請求項１０】
請求項９に記載の二次元コード生成方法により生成された複数の関連二次元コードを読み取って、該複数の関連二次元コードが互いに関連付けられていることを評価する二次元コード評価システムであって、
前記関連二次元コードから前記非公開データコードを抽出し、前記非公開データコードから前記関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連二次元コードの各々に対して実行する取り出し手段と、
前記複数の関連二次元コードの各々から取得された前記関連コード情報に基づいて、前記複数の関連二次元コードが互いに関連付けられていることを評価する評価手段と、を備えることを特徴とする二次元コード評価システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コード評価システム及び方法に関するものである。
【背景技術】
【０００２】
関連二次元コードは、既によく知られている。関連二次元コードとは、当該関連二次元コードに関連付けられた他の関連二次元コードが存在する二次元コードである。
【０００３】
このような関連二次元コードの代表的な例としては、JIS規格の第9章に規定されている構造的連接関係を有するＱＲコード（登録商標）(構造的連接ＱＲコードとも呼ぶ)を挙げることができ、このコードを利用した技術も提案されている(例えば、特許文献1参照。)
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−６１４６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、人、物等の対象の真正性が担保される要請がある。つまり、当該対象が真正な者であり(又は、真正な者により作成や管理が成された物であり)、悪徳な業者等が介入していないことが保証される必要がある。
【０００６】
本発明は、上述した課題を解決するためになされたもので、その目的とするところは、対象を二次元コードで管理する際に真正性を担保することを、関連二次元コードに係る技術を用いて、適切に実現することにある。
【課題を解決するための手段】
【０００７】
本発明に係る二次元コードの生成方法は、互いに関連付けられた複数の関連二次元コードを生成する二次元コード生成方法であって、開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置し、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードの一部または全部に代えて、前記終端識別コードの後に配置する二次元コードの生成工程を、複数回実行することにより、前記複数の関連二次元コードの各々を生成し、各々の前記生成工程において前記非公開データコードを配置する際に、前記複数の関連二次元コードが互いに関連付けられていることを特定可能とするための関連コード情報を前記非公開データコードに含ませることを特徴とする。
【０００８】
本発明に係る二次元コードの生成システムは、互いに関連付けられた複数の関連二次元コードを生成する二次元コード生成システムであって、開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置し、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードの一部または全部に代えて、前記終端識別コードの後に配置する二次元コードの生成工程を、複数回実行することにより、前記複数の関連二次元コードの各々を生成し、各々の前記生成工程において前記非公開データコードを配置する際に、前記複数の関連二次元コードが互いに関連付けられていることを特定可能とするための関連コード情報を前記非公開データコードに含ませることを特徴とする。
【発明の効果】
【０００９】
上述した構成からなる本発明によれば、対象を二次元コードで管理する際に真正性を担保することを関連二次元コードに係る技術を用いて、適切に実現することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、拡張エンコーダ６０のブロック図である。
【図２】図２は、本実施の形態に係る関連QRコード(拡張関連QRコード)のRSブロックの概要図である。
【図３】図３は、関連コード情報の一例を示した図である。
【図４】図４は、関連コード情報の他の例を示した図である。
【図５】図５は、QRコードシンボル生成方法のフローチャートである。
【図６】図６は、関連QRコードのRSブロックの説明図である。
【図７】図７は、関連QRコードの非公開データコード語の説明図である。
【図８】図８は、RSブロックの一部に配置したときの説明図である。
【図９】図９は、拡張デコーダ７０のブロック図である。
【図１０】図１０は、関連QRコード評価方法のフローチャートである。
【図１１】図１１は、関連QRコードの非公開データコード語の抽出方法の説明図である。
【図１２】図１２は、関連QRコードの情報本体の取り出し方法の説明図である。
【図１３】図１３は、ディスプレイに各種情報が表示された様子を示した模式図である。
【図１４】(A)は、本発明の第１実施形態に係るＱＲコードプリンタとそれに接続されるパソコンとを示す説明図であり、(B)は、当該ＱＲコードプリンタのハードウェア構成例を示すブロック図である。
【図１５】図１５は、第１実施形態に係るＱＲコードプリンタにより実行されるコード生成処理の流れを示すフローチャートである。
【図１６】図１６は、図２に示すコード生成処理により情報処理されるデータやコードのフォーマット例を示す説明図で、(A)は印刷データのデータレコードの例、(B)はステップＳ１１５により並び替えた後の例、(C)はステップＳ１２１〜Ｓ１３７により各コードを付加した後の例、(D)は(C)に示す非公開データコードの構成例１、(E)は(C)に示す非公開データコードの構成例２、(F)は(C)に示す非公開データコードの構成例３、をそれぞれ示すものである。
【図１７】図１７は、１型のＱＲコードの構成例を示す説明図である。
【図１８】図１８は、本発明の第２実施形態に係るＱＲコードリーダのハードウェア構成例を示すブロック図である。
【図１９】図１９は、第２実施形態に係るＱＲコードリーダの制御回路により実行されるデコード処理の流れを示すフローチャートである。
【図２０】図２０は、図１９に示す復号化処理の流れを示すフローチャートである。
【図２１】図２１は、本発明の第３実施形態に係るＱＲコードプリンタにより実行されるコード生成処理の流れを示すフローチャートである。
【図２２】図２２は、図２１に示すコード生成処理により情報処理されるデータやコードのフォーマット例を示す説明図で、(A)は印刷データのデータレコードの例、(B)はステップＳ１１５により並び替えた後の例、(C)はステップＳ１２１〜Ｓ１３７により各コードを付加した後の例、(D)は(C)に示す非公開データコードの構成例１、(E)は(C)に示す非公開データコードの構成例２、(F)は(C)に示す非公開データコードの構成例３、をそれぞれ示すものである。
【図２３】図２３は、本発明の第４実施形態に係るＱＲコードリーダの制御回路により実行されるデコード処理の流れを示すフローチャートである。
【図２４】図２４は、図２３に示す復号化処理の流れを示すフローチャートである。
【図２５】図２５は、本発明の第５実施形態に係るＱＲコードプリンタにより実行されるコード生成処理の流れを示すフローチャートである。
【図２６】図２６は、図２５に示す加工処理の流れを示すフローチャートである。
【図２７】図２７は、図２６に示す加工処理により情報処理されるコードのフォーマット例を示す説明図で、(A)は第３実施形態のコード生成処理により生成されたコードの例（(C) 相当）、(B)はステップＳ５００により分散配置処理された非公開データコードの例、(C)はステップＳ５００によりビットが並替え処理またはビットの値が変換処理された非公開データコードの例、(D)は(C)に示す非公開データコードの構成例、(E)は、(D)との比較として第３実施形態のコード生成処理により生成された非公開データコードの構成例（(D) 相当）、をそれぞれ示すものである。
【図２８】図２８は、本発明の第６実施形態に係るＱＲコードリーダの制御回路により実行されるデコード処理の流れを示すフローチャートである。
【図２９】図２９は、図２８に示す復号化処理の流れを示すフローチャートである。
【図３０】図３０は、図２９に示す抽出処理の流れを示すフローチャートである。
【図３１】図３１は、本発明の第７実施形態に係るＱＲコードリーダの制御回路により実行されるデコード処理の流れを示すフローチャートである。
【図３２】図３２は、本発明の第７実施形態に係るＱＲコードリーダの制御回路により実行される読取フラグ設定処理の流れを示すフローチャートである。
【図３３】図３３は、第１実施形態〜第７実施形態において説明したＱＲコードについて関連二次元コードを適用する例について説明するための図である。
【発明を実施するための形態】
【００１１】
関連二次元コード
図１は、拡張エンコーダ６０のブロック図を示している。拡張エンコーダ６０は、開示情報のみならず非公開情報を含んだ情報をＱＲコードシンボル６１に変換する装置である。拡張エンコーダ６０は、制御部６１と表示装置６３と印刷装置６４と入力装置６５を備えている。
【００１２】
制御部６１は、演算部６１ａと記憶部６１ｂを備えている。演算部６１ａは中央演算装置等からなり、プログラムの実行および種々の演算を行うものである。記憶部６１ｂは、プログラムの実行に際して、必要なデータの記憶を行う。特に、記憶部６１ｂには、各種処理を実行するためのプログラムが記憶されている。
【００１３】
表示装置６３は、データの入力等に際し必要な表示機能を担う。また、表示装置６３は、生成されたＱＲコードシンボル６１をディスプレイ等の表示装置に表示する。印刷装置６４も、生成されたＱＲコードシンボル６１を印刷により紙媒体等に表示する。また、入力装置６５は、データの入力および拡張エンコーダ７０の操作に使用される。
【００１４】
本実施の形態においては、二次元コード(ＱＲコード)として、関連二次元コード(ＱＲコードの関連二次元コードであるため、以下、関連ＱＲコードという)が用いられる。関連ＱＲコードとは、当該関連ＱＲコードに関連付けられた他の関連ＱＲコードが存在するＱＲコードである。即ち、通常のＱＲコードは、それ自身で独立しており、他のＱＲコードとは無関係であるが、関連ＱＲコードは他の関連ＱＲコードと関連付けられており、各々の関連ＱＲコードは互いに連鎖している。
【００１５】
このような関連ＱＲコードの代表的な例としては、JIS規格の第9章に規定されている構造的連接関係を有するＱＲコード(構造的連接ＱＲコードともいう)を挙げることができる。構造的連接ＱＲコードとは、自身のコード情報が、あるコード情報をもとに互いに関連を持って分割された部分的コードであることが判別可能に組み込まれたコードである。即ち、これを利用することにより大コードを、関連を持った複数の小コードに分割することが可能となり、分割された複数の小コードが関連ＱＲコードとなる。
【００１６】
しかしながら、本明細書で取り扱う関連二次元コードは、このようなJIS規格標準の構造的連接ＱＲコードではない。以下では、JIS規格標準の構造的連接ＱＲコードのことを標準関連ＱＲコードともいい、本稿で取り扱う関連二次元コードを拡張関連ＱＲコードともいう。
【００１７】
詳細については後述するが、標準関連ＱＲコードと拡張ＱＲコードの相違点は、以下の通りである。即ち、標準関連ＱＲコードでは、複数の関連ＱＲコードが互いに関連付けられていることを特定可能とするための関連コード情報（ＪＩＳ規格の8.3.7章に定義があり、9.1章に記載されている構造的連接へッダ)が隠蔽されておらず、従って、標準デコーダで関連ＱＲコードを読み込んだ際に、標準デコーダは当該ＱＲコードが関連ＱＲコード(構造的連接ＱＲコード)であることを把握することが可能となる。
【００１８】
一方で、拡張関連ＱＲコードでは、前記関連コード情報が非公開データコード語に含まれているため(つまり、関連コード情報が隠蔽されているため)、標準デコーダで関連ＱＲコードを読み込んだ際に、標準デコーダは当該ＱＲコードが関連ＱＲコードであることを把握することができない(言い換えれば、通常のＱＲコードと認識する)そして、非公開データコード語(非公開情報)を取り扱うことができる拡張デコーダ７０で読み込むことにより、初めて当該ＱＲコードが関連ＱＲコードであることを認識することが可能となる。
【００１９】
図２は、本実施の形態に係る関連ＱＲコード(拡張関連ＱＲコード)のＲＳブロックの概要図である。まず、図２を参照しつつ、拡張関連ＱＲコードのデータフォーマットの概要、及び非公開データコード語(非公開情報及び関連コード情報)を埋め込む手法について説明する。図２には、誤り訂正処理単位として、ＲＳ(リード・ソロモン)ブロックが示されている。ＱＲコードシンボル1には、1または複数のＲＳブロックが含まれる。そして、ＲＳブロックを1つの誤り訂正処理単位としている。
【００２０】
なお、ここで説明する実施形態においては、リード・ソロモン(ＲＳ)符号による誤り訂正方式を採用している。このため、誤り検出訂正演算の処理単位ブロックの一例として、「ＲＳブロック」と記載している。
【００２１】
非公開データコードの配置前である配置前ＲＳブロック(配置前コードブロックに相当。後に、配置後ＲＳブロックが登場するため、以下では配置前ＲＳブロックとして配置後ＲＳブロックとは区別する)は、表示対象である情報本体(開示情報に相当する)と、非表示部分である終端符号と、非表示部分であるパディングコード語とを有する開示データコード語を含む。配置前のＲＳ符号はパディング領域が標準のものに対応した誤り訂正語である。情報本体とは、標準デコーダであってもＱＲコードシンボル1を読み取ったときにデコード可能な情報である。終端符号は、情報本体の終端を表す符号である。パディングコード語は、情報本体のコード語の総数がＱＲコードシンボル1の容量に満たない場合、空のコード語部分を充填する目的で使用される仮のコード語である。誤り訂正コード語としてのＲＳ（リード・ソロモン）符号は、ＲＳブロックを単位として誤り訂正するために付加される符号である。
【００２２】
ＱＲコードでは、「L」、「M」、「Q」、「H」の4段階の誤り訂正レベルが選択可能である。誤り訂正レベル「L」では、全体の語数に対して約7%の誤り訂正能力を有する。例えば、ＲＳブロックの語数を100%とした場合、そのうちの約7%の誤り訂正能力を有する。誤り訂正レベル「M」では、全体の語数に対して約15%の訂正能力を有する。誤り訂正レベル「Q」では、全体の語数に対して約25%の訂正能力を有する。誤り訂正レベル「H」では、全体の語数に対して約30%の誤り訂正能力を有する。本実施の形態では、例えば、最高クラスの誤り訂正能力である「H」を利用して、非公開データコード語(非公開情報及び関連コード情報)をＱＲコードに隠蔽する。但し、コードシンボルが形成された媒体の破損の虞の程度に応じて、あるいは方式によっては隠蔽される非公開データコード語の語数に応じて誤り訂正レベルを変更してもよい。
【００２３】
ＱＲコードに情報を隠蔽すなわち非公開情報を格納する手法の概念は、次の通りである。ここで情報の「隠蔽」とは、標準の方法(装置、ソフトウェア等。具体例は、デコーダ)によって読み出し取得ができる通常の情報とは異なり、標準の方法(装置、ソフトウェア等。具体例は、デコーダ)では読出取得できないようにすることを意味する。図２には、非公開データコード語が示されている。この図２の例では、非公開データコード語を、後続のデータコードが前記非公開データコードであることを示す秘匿識別コード（秘匿識別子）と、非公開データコードのデータ長をコード化したデータ長情報（単に「データ長」ともいう）と、非公開データコードとにより構成している。ここでは、この非公開データコード語を、通常の開示データコード語の終端を示す終端識別コードの後ろにパディングコード語の少なくとも一部に代えて配置する。このあと配置後のＲＳブロックに基づいて誤り訂正コード語としてのＲＳ符号を生成して規定の位置に付加する。このように、配置した場合であっても、標準デコーダでは、配置後の情報本体部分は終端コード語の前までとして取り出すことができ、必要に応じてＲＳ符号を用いて訂正することができる。そして、訂正後の情報本体部分を読み出して表示することが可能となる。一方、非公開データコード語は、終端識別コードの、本来はパディングコード語が置かれる部分に配置されるため、標準デコーダでは捨てられてしまい表示されないことになる。なお、非公開データコード語は配置後に生成されるＲＳ符号によって誤り訂正が可能であるため、非公開データコード語を処理できるデコーダ（図９に示す拡張デコーダ７０）では必要に応じて訂正後の非公開データコード語を取り出すことができる。
【００２４】
これに対し、拡張デコーダ７０では、後述するように、必要に応じて誤り訂正処理を施したあと、配置後ＲＳブロックから情報本体部分とともに非公開データコード語を抽出することができる。以上の原理によりＱＲコードシンボル1に非公開情報及び関連コード情報を隠蔽することができる。なお、非公開データコード語によるＲＳブロックの配置方法の詳細については、後述する。
【００２５】
上述したとおり、図２に示すように、関連コード情報は、非公開情報と共に非公開データコード語に含まれている。図２の例では、この関連コード情報をデータ長と非公開データコードとの間に含ませている。但し、この関連コード情報を含む非公開データコードは、先頭の非公開データコード語(つまり、先頭の配置前ＲＳブロックの配置対象となる非公開データコード語)のみである(ただし、先頭に限定されるものではなく、例えば二番目の非公開データコード語のみであってもよい)本実施の形態に係る関連コード情報は、図３に示すように、識別情報と、連鎖数情報と、序列番号情報と、指標情報と、を有している。なお図３は、関連コード情報の一例を示した図である。
【００２６】
識別情報は、ＱＲコードが関連ＱＲコードであるか否かを示す情報である。この識別情報は、全ての関連ＱＲコードに対して共通のものであり(通常のＱＲコードでなく関連ＱＲコードであれば同じ値を採用)、本実施の形態(図３の例)では、当該識別情報を「010 10000(2進数)」としている。そして、拡張デコーダ７０が、この数値「01010000 (2進数)」を読み取ることにより、ＱＲコードが(通常の関連ＱＲコードではなく)関連ＱＲコードであることを把握することが可能なようになっている。
【００２７】
連鎖数情報は、互いに関連付けられた複数の関連ＱＲコードの連鎖数を示す情報である。即ち、連鎖数情報は、互いに関連付けられた複数の関連ＱＲコードから構成されるＱＲコードグループ(集合体)の要素数とも言える。図３の例では、連鎖数情報は「3 (10進数)」であり、三つの関連ＱＲコード(ＱＲコードA、ＱＲコードB、ＱＲコードC)が互いに関連付けられていることを意味している。
【００２８】
序列番号情報は、当該関連口ード情報を備える関連ＱＲコードが、前記連鎖数分の関連ＱＲコードのうちの何番目の関連ＱＲコードであるかを示す情報である。図３の例では、ＱＲコードAの序列番号情報は「1 (10進数)」であり、したがって、ＱＲコードAは、3個中1番目の関連ＱＲコードとなっている。同様に、ＱＲコードB、ＱＲコードCの序列番号情報は「2 (10進数)」、「3 (10進数)」であり、従って、ＱＲコードB、ＱＲコードCは、3個中2番目、3番目の関連ＱＲコードとなっている。
【００２９】
指標情報は、関連コード,情報を備える関連ＱＲコードが、該関連ＱＲコードと序列番号が異なる他の関連ＱＲコードと関連付けられているか否かを判断するための情報である。本実施の形態では、当該指標情報として、互いに関連付けられた複数の関連ＱＲコードに共通のパスワードを用いることとしている。図３の例では、このパスワードをAF(16進数)としており、したがって、ＱＲコードA、ＱＲコードB、ＱＲコードCの各々の指標情報はAF(16進数)となっている。そして、拡張デコーダ７０が、このパスワード「AF(16進数)」をＱＲコードA、ＱＲコードB、ＱＲコードCの各々から読み取りパスワードが一致していることを確認することによって、ＱＲコードA (ＱＲコードB、ＱＲコードC)が該ＱＲコードA(ＱＲコードB、ＱＲコードC)と序列番号が異なる、他の関連ＱＲコードと関連付けられているか否か(つまり、ＱＲコードA、ＱＲコードB、ＱＲコードCが関連付けられていること)を判断することが可能なようになっている。
【００３０】
なお、図３の例においては、序列番号が1のＱＲコードA及び序列番号が2のＱＲコードBと関連付けられている序列番号が3のＱＲコードは、ＱＲコードCのみであるが、このような序列番号が3のＱＲコードが複数あってもよいことは勿論である。
【００３１】
例えば、図４Aに示すように、序列番号が3のＱＲコードとして、ＱＲコードCの他にＱＲコードC'が存在する場合もある。そして、かかるＱＲコードC'の関連コード情報は、ＱＲコードCと同じとなる。なお、ＱＲコードCとＱＲコードC'は関連付けられてぃないので、ＱＲコードAとＱＲコードBとＱＲコードC(又は、ＱＲコードAとＱＲコードBとＱＲコードCとＱＲコードC')は、互いに関連付けられた複数の関連ＱＲコードといえるが、ＱＲコードAとＱＲコードBとＱＲコードCとＱＲコードC'は、互いに関連付けられた複数の関連ＱＲコードとはいえない。
【００３２】
また、ＱＲコードA、ＱＲコードBについても同様のことがいえ、例えば、図４Bに示すように、ＱＲコードA'、ＱＲコードA"、ＱＲコードB'が更に存在することとしてもよいことは勿論である。
【００３３】
次に、具体的な関連ＱＲコードの生成方法について、図３の例に基づいて説明する(すなわち、ＱＲコードA、ＱＲコードB、ＱＲコードCを生成する方法を例にとり説明する)。
【００３４】
図５は、ＱＲコードシンボル生成方法のフローチャートである。図６は、関連ＱＲコードのＲＳブロックの構成図である。図７は、関連ＱＲコードの非公開データコード語の図である。以下の説明において、特段のことわりがない場合、ＱＲコードシンボル1へのエンコード手法は、JIS規格による手法が採用される。なお、ＱＲコードシンボル1は、複数のＲＳプロックを有する場合が殆どであるが、ここでは説明の容易のために、1つのＲＳブロックを例示して説明を行う。また、以下に示される内容は容易な説明を行うための例示であるので、各コード語長は実際のものと異なることがあることは勿論である。
【００３５】
前提として、記憶部６１ｂには、所定の方法で定めることができる非公開データコード語として配置される開始位置と非公開データコード語の長さ(語数)にかかわる情報開始位置情報と長さ情報が記憶されているものとする。同様に、非公開データコード語における関連コード情報の開始位置(本実施の形態では、非公開データコード語の先頭とする)と長さにかかわる情報が記載されているものと仮定する。なお、どの部分がどれ位の長さだけ非公開データコード語として配置されるか、また、非公開データコード語のどの部分がどれ位の長さだけ関連コード清報で占められるかをどのように定めるかについては、任意であり、何ら本実施の形態の方法に限定されるものではないことは勿論である。
【００３６】
先ず、ＱＲコードAに係るＱＲコードシンボル1に埋め込まれる情報本体および非公開情報が取り込まれる(S1302)。ここでは、情報本体を「TOKYO<cr>MINATO<cr>JPN」とし(図６)、非公開情報を「1234567890」と仮定している(図７)。
【００３７】
次に、ＱＲコードシンボル1の非公開データコード語を、取り込まれた非公開情報に関連コード情報を付加することにより求める(S1303)。これにより、非公開情報と関連コード情報を含んだ非公開データコード語が作成される。本実施の形態においては、図７に示すように、関連コード情報(「01010000 (2進数)」を16進数に変換した「50 h」、「3 (1 0進数)」「1 (10進数)」を16進数に変換した「31h」、パスワード「AFh」)と、非公開情報(「123567890」)を、非公開データコード語に含ませることにより、非公開データコード語が求められることになる。
【００３８】
次に、取り込まれた情報本体(開示データコード語)及び非公開データコード語に基づいてＱＲコードシンボル１の型番が決定される(S1304)。ＱＲコードシンボル1は型番に応じてトータルのコード語数が定められている。トータルのコード語数は、情報本体(開示情報語の語数を含むデータコード語数と、訂正コード語数との和で構成される。また、ＱＲコードシンボル1の型番に応じて、データコード語と訂正コード語からなるＲＳブロックの大きさと数が定められている。そして、誤り訂正は、ＲＳブロックを単位として行われる。
【００３９】
例えば、誤り訂正レベルが「M」であって型番が「4」の場合、トータルのコード語数は「100」と定められる。そして、2つのRSブロックを含むことが定められる。1つのRSブロックにおけるデータコード語数は「32」であり、訂正コード語数は「18」である。
【００４０】
データコード語数「32」と訂正コード語数「18」の和は「50」であり、このようなRSブロックが2つ存在するため、型番が「4」のQRコードシンボルは、50x2=100の総コード語数を有することになる。
【００４１】
また、このときの誤り訂正数は、RSブロック毎に「9」である。これは、データコード語数「32」のうちの「9」を訂正する能力を有することを示す。RSブロックは2つであるため、9×2=18の語数の総訂正能力を有することになる。100語のうち18語を訂正可能としているので、全体からすると18％の訂正能力を有することとなる。
【００４２】
非公開データコード語の配置は、ＲＳブロック毎に、開示情報である情報本体すなわち開示情報語のコード語数が選択されたＲＳブロックのデータコード語数未満となるようにして(S1306)、その後ろに終端識別コード語を置き、通常はパディングコード語が配置されるところを秘匿識別子と非公開データコード語のデータ長を示すコード語に続いて非公開データコード語を配置する。あとは選択されたＲＳブロックのデータコード語数まで規定のパディングコード語を置く（パディングコード語の語数がゼロの場合もある）(S1308)。
上記の場合であると、ＲＳブロック毎にデータコード語数「32」を合計とする情報本体と終端識別コード語と秘匿識別子とデータ長を示すコード語と非公開データコード語による配置が許容されることになる(「総配置許容語数)と呼ぶことがある)。このような演算に基づいて、情報本体(開示データコード語)の語数と非公開データコード語数の合計が総配置許容語数を上回らないようなＲＳブロックで構成される最小サイズのＱＲコードシンボル１の型番が選択される。
【００４３】
次に、情報本体のコード語に基づいて、開示データコード語と訂正コード語とを有するＲＳブロック(配置前ＲＳブロック)が生成される(S1306)。選択されたＱＲコードシンボル1の型番によってはＲＳブロックを生成するため、情報本体のコード語が複数のブロックに分割されることもある。そして、各ブロックに対して誤り訂正コード語が生成され、生成された訂正コード語が対応するコード語の後に付加される。そして、ＲＳブロックが生成される。なお訂正コード語の生成手法については、JIS規格に準ずることができる。
【００４４】
図６には、情報本体と終端符号と訂正コード語の一例が示されている(なお、パディングコード語と誤り訂正コード語は説明のための模式図でありその語数やコード内容は必ずしも実際のものとしての正確さはない)。ここでは、情報本体のコード語としてプレインなテキスト情報が示される。終端符号は、例えば、「0000」のビット列を採用することができる。そして、情報本体を含むコード語に基づいて生成されたＲＳ符号が付加され、ＲＳブロックが作成される。
【００４５】
このようにして生成されたＲＳブロックの一部に、図７に示したような非公開データコード語が配置されることになる(S1308)。すなわち、配置前ＲＳブロックの一部であるパディングコード語の少なくとも一部に代えて非公開データコード語を配置することにより非公開データコード語が隠蔽された配置後ＲＳブロックを求める。
【００４６】
図８は、ＲＳブロックの一部に非公開データコード語を配置したときの説明図である。図８には、前述のＲＳブロックと、非公開データコード語が示されている。そして、図８に示されるように、本実施の形態においては、本来終端識別コード語に続くパディングコード語の少なくとも一部に代えてその先頭から秘匿識別子、データ長を表すコード語に続いて非公開データコード語が配置されることになる。
【００４７】
このように、ＲＳブロックの一部すなわち本来パディングコード語が置かれる位置に非公開データコード語が配置されると、標準デコーダでは、開示情報である情報本体部分は終端識別コード語までとして処理されるので配置前の情報本体部分を適切に抽出し、表示することができる。
【００４８】
そして、非公開データコード語が配置された部分は、埋め草であるパディングコード語が配置される部位であるため無視され捨てられてしまう情報となるので、標準デコーダでは表示することができない。一方、拡張デコーダ７０では、後述するように、配置後ＲＳブロックから非公開データコード語を抽出する。このように、抽出された非公開データコード語(非公開情報)と情報本体部分(開示情報)を表示する。
【００４９】
次に、配置後ＲＳブロックに基づいてＱＲコードシンボル1を作成する(S1310)。ＲＳブロックに基づいてＱＲコードシンボル1を生成する手法は、JIS規格における標準的なＱＲコード生成手法と同様のものを採用することができる。このようにすることで、ＱＲコードAに係るＱＲコードシンボル1を生成することが可能となる。
【００５０】
次に、他の関連ＱＲコードを生成するために、ステップS1302からステップS1310の手順を繰り返す(S1312)。即ち、本実施の形態では、ＱＲコードAに係るＱＲコードシンボル1の生成に引き続き、同様の方法を用いてＱＲコードBに係るＱＲコードシンボル1とＱＲコードCに係るＱＲコードシンボル1を生成する。このように、本実施の形態においては、ステップS1302からステップS1310の手順からなる生成工程を複数回実行することにより複数の関連ＱＲコードを生成する。
【００５１】
次に、このようにして生成されたＱＲコードシンボル1のデコード手法について説明する。デコードは、上述した拡張デコーダ７０により行われる。拡張デコーダ７０は、複数の関連ＱＲコードを読み取って、該複数の関連ＱＲコードが互いに関連付けられていることを評価、確認する。そして、これらの関連ＱＲコードが互いに関連付けられていることが確認されることにより、当該関連ＱＲコードによる管理対象(当該関連ＱＲコードを所有している人や当該関連ＱＲコードが添付されている物等)の真正性(正当性)を担保する(認証する)ことが可能となる。
【００５２】
図９は、拡張デコーダ７０のブロック構成図である。拡張デニーダ７０は、複数の関連ＱＲコードを読み取って、ＱＲコードシンボル1に含まれる表示対象である開示情報と非公開情報とを展開し、さらに、該複数の関連ＱＲコードが互いに関連付けられていることを評価する(確認する)装置である。拡張デコーダ７０は、制御部７１と撮像装置７２と表示装置７３と印刷装置７４と入力装置７５を備える。
【００５３】
制御部７１は、演算部７１ａと記憶部７１ｂを有する。演算部７１ａは中央演算装置等からなり、プログラムの実行および種々の演算を担う。記憶部７１ｂは、プログラムの実行に際して、必要なデータの記憶を担う。特に、記憶部７１ｂには、各種処理を実行するためのプログラムが記憶されている。
【００５４】
撮像装置７２は、ＱＲコードシンボル1を撮像するための装置であり、例えば、CCDカメラなどで構成される。
【００５５】
表示装置７３は、データの入力等に際し必要な表示機能を担うものである。また、表示装置７３は、ＱＲコードから展開された情報をディスプレイ等の表示手段を介して表示する。印刷装置７４も、展開された情報を印刷により紙媒体等に表示する。また、入力装置７５は、データの入力および拡張デコーダ７０の操作に使用される。
【００５６】
図１０は、関連ＱＲコード評価方法のフローチャートである。以下の説明において、特段のことわりがない場合、ＱＲコードシンボル1のデコード手法は、JIS規格による手法が用いられる。
【００５７】
また、前提として、拡張デコーダ７０の記憶部７１ｂには、所定の方法で定めることができる非公開データコード語が配置される開始位置と非公開データコード語の長さ(語数)にかかわる情報(開始位置を特定するための情報と長さ情報に関するフォーマット情報)が記憶されているものとする。同様に、開示データコード語における関連コード情報の開始位置と長さにかかわるフォーマット情報が記憶されているものと仮定する。なお、どの部分にどれ位の長さだけ非公開データコード語が配置されるか、また、パディングコード語配置部分のどの部分がどれ位の長さだけ関連コード情報で占められるかをどのように定めるかについては、任意であり、何ら本実施の形態の方法に限定されるものではない。
【００５８】
まず、ＱＲコードシンボル1の読み取りが行われる(S1402)。ここでは、最初に、ＱＲコードAに係るＱＲコードシンボル1を読み取ったものとする。そして、読み取ったＱＲコードシンボル1に基づいて、複数のＲＳブロックが展開される(S1404)。これら複数のＲＳプロックへの展開は、JIS規格に準ずるものを採用することができる。これにより、たとえば、前述の図８に示された配置後ＲＳブロックが取得される。即ち、関連ＱＲコードから配置後データブロックが求められることになる。
【００５９】
次に、取得された配置後ＲＳブロックから所定の方法によって情報本体のコード語(開示データコード語)および非公開データコード語が抽出される(S1406)。
【００６０】
図１１は、関連ＱＲコードの非公開データコード語の抽出方法の説明図である。図１１には、配置後ＲＳブロックと非公開データコード語を示している。
【００６１】
配置後ＲＳブロックは、前述のように、ＱＲコードシンボルを読み取り、JIS規格に準じて展開することにより取得することが可能となる。本実施の形態において、拡張デコーダ７０は、記憶部７１ｂに記億されている非公開データコード語の開始位置情報と長さ情報とに基づいて、配置後ＲＳブロックに為ける非公開データコード語の位置を特定する。そして、特定した位置から非公開データコード語を抽出する。
【００６２】
図１２は、関連ＱＲコードの情報本体の取り出し方法を示している。拡張デコーダ７０は、必要に応じて誤り訂正処理を行ったのち、配置後ＲＳブロックの先頭から終端符号までの情報を抽出し、抽出したデータを情報本体とする。つまり、標準的QRコードから情報を取り出す処理と全く同一の処理によって配置後ＲＳブロックの開示データコード語から開示情報である情報本体を取り出すことになる。
【００６３】
次に、拡張デコーダ７０は、非公開データコード語から、非公開情報と関連コード情報を取り出す。即ち、拡張デコーダ７０は、記憶部７１ｂに記憶されている関連コード情報の開始位置情報と長さ情報とに基づき、本来パディングコード語が配置される終端識別コードの後ろの部分から非公開データコード語における関連コード情報の位置を特定する。そして、特定した位置から関連コード情報を取り出すと共に、非公開データコード語の残りの情報を非公開情報とする。
【００６４】
拡張デコーダ７０は、関連コード情報(すなわち、識別情級と連鎖数情報と序列番号情報と指標情報)を把握(確認)する(ステップS1410)。つまり、識別情報から本ＱＲコードが関連ＱＲコードであることを把握(確認)すると共に、本実施の形態においては、他の3つの情報から当該関連ＱＲコードが3つの関連ＱＲコードのうちの1番目の関連ＱＲコードであり、パスワードがAF（16進数)であることを把握、確認する。
【００６５】
なお、本実施の形態においては、上述した関連コード情報取り出し処理を、読み取った複数の関連ＱＲコードの各々に対して実行し、複数の関連ＱＲコードの各々から取得された関連コード情報に基づき、複数の関連ＱＲコードが互いに関連づけられていることを評価する。具体的には、前記識別情報に基づいて、各々のＱＲコードが関連ＱＲコードであることが確認され、複数の関連ＱＲコードの各々から取得された連鎖数情報及び序列番号情報に基づいて、連鎖数分の互いに異なる序列番号が揃ったことが確認され、指標情報に基づいて、互いに異なる序列番号を有する連鎖数分の関連ＱＲコードが関連付けられている(ここでは、連鎖数分の関連ＱＲコードの指標情報(パスワード)が一致している)ことが確認された際に評価条件が満たされた際に)、複数の関連ＱＲコードが互いに関連付けられているものと評価する。
【００６６】
ここでは、ーつの関連ＱＲコードのみしか読み取られていないため、当該評価工程は未だ実行されない。そして、表示装置７３による表示についても何ら行われることはない。
【００６７】
次に、ＱＲコードBを読み込むと、ステップS1402からステップS1410と同様の手順(ステップS1412からステップS1420)が実行され、開示情報、非公開情報、関連ＱＲコード情報が取り出される(ステップS1418)。
【００６８】
拡張デコーダ７０は、関連コード情報(すなわち、識別情穀と連鎖数情報と序列番号情報と指標情報)を把握、確認する(ステップS1420)。つまり、識別情報から本ＱＲコードが関連ＱＲコードであることを把握(確認)すると共に、本実施の形態においては、他の3つの情報から当該関連ＱＲコードが3つの関連ＱＲコードのうちの2番目の関連ＱＲコードであり、パスワードがAF(16進数)であることを把握、確認する。
【００６９】
そして、当該関連コード情報と、ＱＲコードAの関連コード情報とを照らし合わせることにより、前述した評価工程が実施される(ステップS1421)。ここでは、連鎖数分の互いに異なる序列番号が揃っておらず(つまり、3つのうちの1,2しかない)評価条件が満たされていないため、複数の関連ＱＲコードが互いに関連付けられている旨は評価されない。そして、このような揚合には、表示装置７３による表示については何ら行われない。
【００７０】
更に、ＱＲコードCを読み込むと、ステップS1402からステップS1410と同様の手順(ステップS1422からステップS1430)が実行され、開示情報、非公開情報、関連ＱＲコード情報が取り出される(ステップS1428)。
【００７１】
拡張デコーダ７０は、関連コード情報(すなわち、識別情報と連鎖数情報と序列番号情報と指標情報)を把握、確認する(ステップS1430)。つまり、識別情報から本ＱＲコードが関連ＱＲコードであることを把握、確認すると共に、本実施の形態においては、他の3つの情報から当該関連ＱＲコードが3つの関連ＱＲコードのうちの3番目の関連ＱＲコードであり、パスワードがAF(16進数)であることを把握、確認する。
【００７２】
そして、当該関連コード情報と、ＱＲコードA及びＱＲコードBの関連コードで情報と、を照らし合わせることにより、前述した評価工程が実行される(ステップS1431)。ここでは、各々のＱＲコードが関連ＱＲコードであることが確認され、連鎖数分の互いに異なる序列番号が揃ったことが確認され(つまり、3つのうちの1,2,3が揃う)、互いに異なる序列番号を有する連鎖数分の関連ＱＲコードが関連付けられている(連鎖数分の関連ＱＲコードの指標情報(パスワード)がAFで一致している)ことが確認され、前記評価条件が満たされるため、複数の関連ＱＲコード(ＱＲコードA乃至ＱＲコードC)が互いに関連付けられている旨が評価される。
【００７３】
そして、本実施の形態においては、拡張デコーダ７０がかかる評価をした際に、複数の関連ＱＲコードが互いに関連付けられている旨(例えば、「認証できました」の文字)が表示装置７３を介して表示される(ステップS1432)。なお、表示の代わりに、又は、表示に加えて、かかる旨を音声により報知することとしてもよい。
【００７４】
さらに、かかる際に、表示装置７３は、ステップS1408、ステップS1418、ステップS1428で取り出されたＱＲコードA乃至ＱＲコードCの各々の開示情報と非公開情報も表示する(ステップS1432)。なお、本実施の形態においては、図１３に示すように、各々の開示情報を、関連ＱＲコードの読み取り順ではなく、前記序列番号の順に表示し、同様に、各々の非公閧情報も前記序列番号の順に表示する。また、開示情報のグループと非公開情穀のグループがそれぞれ一塊になるように表示し、開示情報のグループの次に非公開情報のグループが続くように表示する。なお、図１３は、ディスプレイに各種情報が表示された様子を示した図である。
【００７５】
===本実施の形態に係るＱＲコード生成方法等の有効性について===
上述したとおり、本実施の形態に係るＱＲコード生成方法は、互いに関連付けられた複数の関連ＱＲコードを生成するＱＲコード生成方法であって、非公開データコード語を求め、開示データコード語とパディングコード語と誤り訂正コード語とを有する配置前コードブロックを求め、前記配置前コードブロックのうちパディングコード語の少なくとも一部に前記非公開データコード語を配置することにより前記非公開データコード語が隠蔽された配置後コードブロックを求め、前記配置後データブロックに基づいて訂正コード語を生成付加した関連ＱＲコードを生成する生成工程を、複数回実行することにより、前記複数の関連ＱＲコードの各々を生成し、各々の前記生成工程において前記非公開データコード語を求める際に、前記複数の関連ＱＲコードが互いに関連付けられていることを特定可能とするための関連コード情報を、前記非公開データコード語に含ませることとしている。
【００７６】
また、本実施の形態に係る拡張エンコーダ６０(ＱＲコード生成システム)は、互いに関連付けられた複数の関連ＱＲコードを生成する拡張エンコーダ６0(ＱＲコード生成システム)であって、非公開データコード語を求め、開示データコード語とパディングコード語と誤り訂正コード語とを有する配置前コードブロックを求め、前記配置前コードブロックのうちパディングコード語の少なくとも一部に前記非公開データコード語を配置することにより前記非公開データコード語が隠蔽された配置後コードブロックを求め、前記配置後データブロックに基づいて訂正コード語を生成付加した関連ＱＲコードを生成する生成工程を、複数回実行することにより、前記複数の関連ＱＲコードの各々を生成し、各々の前記生成工程において前記非公開データコード語を求める際に、前記複数の関連ＱＲコードが互いに関連付けられていることを特定可能とするための関連コード情報を、前記非公開データコード語に含ませることとしている。
【００７７】
また、本実施の形態に係るＱＲコード評価方法は、上記のＱＲコード生成方法により生成された複数の関連ＱＲコードを読み取り、該複数の関連ＱＲコードが互いに関連付けられていることを評価するＱＲコード評価方法であって、前記関連ＱＲコードから前記配置後データブロックを求め、前記配置後データブロックから前記非公開データコード語を抽出し、前記非公開データコード語から前記関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連ＱＲコードの各々に対して実行する取り出し工程と、前記複数の関連ＱＲコードの各々から取得された前記関連コード情報に基づいて、前記複数の関連ＱＲコードが互いに関連付けられていることを評価する評価工程と、を有することとしている。
【００７８】
また、本実施の形態に係る拡張デコーダ７０(ＱＲコード評価システム)は、上記の拡張エンコーダ６０(ＱＲコード生成システム)により生成された複数の関連ＱＲコードを読み取って、該複数の関連ＱＲコードが互いに関連付けられていることを評価する拡張デコーダ７０(ＱＲコード評価システム)であって、前記関連ＱＲコードから前記配置後データブロックを求め、前記配置後データブロックから前記非公開データコード語を抽出し、前記非公開データコード語から前記関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連ＱＲコードの各々に対して実行し、前記複数の関連ＱＲコードの各々から取得された前記関連コード情報に基づいて、前記複数の関連ＱＲコードが互いに関連付けられていることを評価することとしている。
【００７９】
また、本実施の形態に係る拡張管理システム(ＱＲコード管理システム)は、互いに関連付けられた複数の関連ＱＲコードを生成する拡張エンコーダ６０(ＱＲコード生成システム)であって、非公開データコード語を求め、開示データコード語とパディングコード語と誤り訂正コード語とを有する配置前コードブロックを求め、前記配置前コードブロックのうちパディングコード語の少なくとも一部に前記非公開データコード語を配置することにより前記非公開データコード語が隠蔽された配置後コードブロックを求め、前記配置後データブロックに基づいて訂正コード語を生成付加した関連ＱＲコードを生成する生成工程を、複数回実行することにより、前記複数の関連ＱＲコードの各々を生成し、各々の前記生成工程において前記非公開データコード語を求める際に、前記複数の関連ＱＲコードが互いに関連付けられていることを特定可能とするための関連コード情報を、前記非公開データコード語に含ませる拡張エンコーダ６０(ＱＲコード生成システム)と、当該拡張エンコーダ６０(ＱＲコード生成システム)により生成された複数の関連ＱＲコードを読み取って、該複数の関連ＱＲコードが互いに関連付けられていることを評価する拡張デコーダ７０(ＱＲコード評価システム)であって、前記関連ＱＲコードから前記配置後データブロックを求め、前記配置後データブロックから前記非公開データコード語を抽出し、前記非公開データコード語から前記関連コード情報を取り出す関連コード情報取り出し処理を、読み取った前記複数の関連ＱＲコードの各々に対して実行し、前記複数の関連ＱＲコードの各々から取得された前記関連コード情報に基づいて、前記複数の関連ＱＲコードが互いに関連付けられていることを評価する拡張デコーダ７０(ＱＲコード評価システム)と、を備えることとしている。
【００８０】
このため、対象をＱＲコードで管理する際に真正性を担保することを、関連ＱＲコードに係る技術を用いて、適切に実現することができる。
【００８１】
JIS規格の第9章に規定されている構造的連接ＱＲコード等の関連ＱＲコードは、既によく知られており、このコードを利用した技術も提案されている。しかしながら、従来は、複数の関連ＱＲコードが互いに関連付けられていることを評価(確認、判定)することにより、当該関連ＱＲコードによる管理対象(当該関連ＱＲコードを所有している人や当該関連ＱＲコードが添付されている物等)の真正性を担保する(認証する)ようなことは実施されていない。
【００８２】
また、仮に、かかる事項を、構造的連接ＱＲコードのような標準関連ＱＲコードを用いて実施しようとする場合には、以下の問題点の発生が考えられる。
【００８３】
すなわち、標準デコーダで構造的連接ＱＲコード(関連ＱＲコード)のーつを読み取った際には、標準デコーダはこのＱＲコードが構造的連接ＱＲコード(関連ＱＲコード)であることを理解することができ、その旨(例えば、「次のＱＲコードを読み取って下さい」等のメッセージ)を表示する。従って、標準デコーダを操作する操作者は、このＱＲコードが通常のＱＲコードではなく構造的連接ＱＲコード(関連ＱＲコード)であることを容易に認識することが可能となる。
【００８４】
そして、このような認識行為は、当該操作者が悪徳な業者等であった場合に、当該業者等が付け入る契機となり得る。例えば、当該業者等は、この読み取った構造的連接ＱＲコード(関連ＱＲコード)を解析し、この構造的連接ＱＲコード(関連ＱＲコード)に関連付けられた他の構造的連接ＱＲコード(関連ＱＲコード)を偽造することができる。そして、この偽造した他の構造的連接ＱＲコード(関連ＱＲコード)を用いて、悪事を働く可能性が生ずる。
【００８５】
これに対し、本実施の形態においては、前記事項を、標準関連ＱＲコードではなく独自の関連ＱＲコードを用いて行うこととし、当該独自の関連ＱＲコードにおいては、関連コード情報を非公開データコード語に含ませることとしている。標準デコーダでは、非公開データコード語から関連コード情報を取り出せないため、標準デコーダは、本実施の形態に係るＱＲコードを読み取ったとしても、通常のＱＲコードと理解するのみで、関連ＱＲコードであることをそもそも理解することが不可能である。従って、標準デコーダを操作する操作者は、このＱＲコードが通常のＱＲコードではなく関連ＱＲ口ードであることを認識することができない。そのため、操作者が悪徳な業者等であった場合であっても、当該業者等は前述した偽造を行う発想には至り得ない。
【００８６】
このように、本実施の形態に係るＱＲコード生成方法、拡張エンコーダ７０(ＱＲコード生成システム)、ＱＲコード評価方法、拡張デコーダ７０(ＱＲコード評価システム)、拡張管理システム(ＱＲコード管理システム)によれば、対象をＱＲコードで管理する際に、関連ＱＲコードに係る技術を用いて、真正性をより確実に担保することができる。
【００８７】
また、本実施の形態において、前記関連コード情報は、ＱＲコードが関連ＱＲコードであるか否かを示す識別情報と、互いに関連付けられた複数の関連ＱＲコードの連鎖数を示す連鎖数情報と、前記関連コード情報を備える関連ＱＲコードが、前記連鎖数分の関連ＱＲコードのうちの何番目の関連ＱＲコードであるかを示す序列番号情報と、前記関連コード情報を備える関連ＱＲコードが、該関連ＱＲコードと序列番号が異なる他の関連ＱＲコードと関連付けられているか否かを判断するための指標情報と、を有することとしている。
【００８８】
また、前記評価工程においては、前記識別情報に基づいて、各々の前記ＱＲコードが関連ＱＲコードであることが確認され、前記複数の関連ＱＲコードの各々から取得された前記連鎖数情報及び前記序列番号情報に基づいて、前記連鎖数分の互いに異なる前記序列番号が揃ったことが確認され、前記指標情報に基づいて、互いに異なる前記序列番号を有する連鎖数分の前記関連ＱＲコードが関連付けられていることが確認された際に、前記複数の関連ＱＲコードが互いに関連付けられていると評価することとしている。
【００８９】
このように、本実施の形態においては、識別情報と連鎖数情報と序列番号情報と指標情報が、非公開データコード語に含まれている。つまり、偽造を行う上で必須の情報が隠蔽されているので、第三者がこの隠蔽された情報を知らなければ、偽造を行うことがよりー層難しい状況となる。したがって、本実施の形態においては、真正性をより一層確実に担保することが可能となる。
【００９０】
また、本実施の形態においては、前記複数の関連ＱＲコードが互いに関連付けられていると評価した際に、前記複数の関連ＱＲコードが互いに関連付けられている旨を表示する表示工程を有することとしている。
【００９１】
このため、複数の関連ＱＲコードが互いに関連付けられていることが評価(確認)され、当該関連ＱＲコードによる管理対象の真正性が担保された(認証された)ことを拡張デコーダ７０の操作者等に対し、明確に知らせることができる。
【００９２】
また、本実施の形態において、前記取り出し工程においては、必要に応じて誤り訂正処理を行ったのち、前記配置後ＲＳブロックの先頭から終端符号までの情報を抽出し、抽出したデータを情報本体とする。つまり、標準的ＱＲコードから情報を取り出す処理と全く同一の処理によって配置後ＲＳブロックの開示データコード語から開示情報である情報本体を取り出すことになる。この開示情報取り出し処理を、読み取った前記複数の関連ＱＲコードの各々に対して実行し、前記複数の関連ＱＲコードが互いに関連付けられていると評価した際に、各々の前記開示情報を表示する表示工程を有することとしている。
【００９３】
このため、拡張デコーダ７０の操作者等は、複数の関連ＱＲコードが互いに関連付けられていることが評価(確認)され、当該関連ＱＲコードによる管理対象の真正性が担保された(認証された)ことを、開示情報の表示により知ることが可能となり、さらに、複数の関連ＱＲコードの各々に埋め込まれてぃる追加の情報(例えば、前述の第一適用例では、診療科目、患者名、年齢、性別、血液型、薬名)を拡張デコーダ７０の操作者等にまとめて提示することが可能となる。
【００９４】
また、本実施の形態において、前記取り出し工程においては、前記非公開データコード語から非公開情報を取り出す非公開情報取り出し処理を、読み取った前記複数の関連ＱＲコードの各々に対して実行し、前記表示工程においては、各々の前記非公開情報を表示することとしている。
【００９５】
このため、拡張デコーダ７０の操作者等は、複数の関連ＱＲコードが互いに関連付けられていることが評価(確認)され、当該関連ＱＲコードによる管理対象の真正性が担保された(認証された)ことを、非公開情報の表示により知ることができ、さらに、複数の関連ＱＲコードの各々に埋め込まれている追加の情報(例えば、前述の第一適用例では、病名、投与部寺)を拡張デコーダ７０の操作者等にまとめて提示することが可能となる。
【００９６】
また、本実施の形態において、前記表示工程においては、各々の前記開示情報を前記序列番号の順に表示し、各々の前記非公開情報を前記序列番号の順に表示することとしている。
【００９７】
このため、関連ＱＲコードの読み取り順に影響されることなく、所望の順番で開示情報及び非公開情報を表示することができる。
【００９８】
===その他の実施の形態===
上記の実施の形態は、本発明の理解を客易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることは言うまでもない。特に、以下に述べる実施形態であっても、本発明に含まれるものであることは勿論である。
【００９９】
上記実施の形態においては、二次元コードとしてＱＲコードを例に挙げて説明したが、これに限定されるものではなく、他の二次元コードであっても構わない。当該他の二次元
コードとしては、例えばDataMatrix(ISO/IEC16022:2006、JIS X-0512:2015)、PDF 417 (ISO/IEC15438:2006、JIS X-0508:2010)を、挙げることができる。
【０１００】
また、上記実施の形態においては、情報(開示情報、非公開情報が平文であることとして説明したが、暗号化されたもの(暗号文)であってもよいことは勿論である。
【０１０１】
また、上記実施の形態においては、指標情報として、互いに関連付けられた複数の関連ＱＲコードに共通のパスワードを用いることとしたが、これに限定されるものではない。例えば、JIS規格の第9.3章に規定されているパリティデータのようなものを用いてもよい。
【０１０２】
また、指標情報が前記パスワードであり、さらに、開示情報及び非公開情報のうちの少なくとも一方が暗号文である場合(以下では、開示情報が暗号文である場合を例にとって説明する)には、以下に説明するようにしてもよい。すなわち、当該パスワードを、前記暗号文の暗号鍵を特定するためのインデックス(見出し)情報としてもよい。例えば、複数種類のパスワードの各々毎に、このパスワードに対応する鍵の組(公開鍵暗号方式であれば、拡張エンコーダ６０が前記開示情報を暗号化する際の公開鍵と拡張デコーダ７０が前記開示情報を復号化する際の秘密鍵)を予め決めておく。そして、あるパスワード(例えば4のAF)を使用する場合には、拡張エンコーダ６０が、当該パスワード(AF)に対応する公開鍵で開示情報を暗号化する。また、拡張デコーダ７０は、非公開データコード語から関連コード情殺(指標情報であるパスワード(AF))を取り出して当該パスワード(AF)に対応する秘癌鍵を選択(特定)し、この秘密鍵で開示情報を復号化することとなる。
【０１０３】
上記実施の形態においては、連鎖数分の関連ＱＲコードの指標情報(パスワード)がー致しているか否かの確認のみしか行っていない。かかる確認のみでも十分であるが、このようなパスワードと鍵とを対応させる形態とすれば、よりセキュリティを高めることができる。すなわち、仮に(改ざん等により偶然)AF以外のパスワード(BGとする)で連鎖数分の関連ＱＲコードの指標情報が一致した場合には、BGに対応する秘密鍵が選択されることとなり開示情報の復号化が不可能となるので、事態が正常でないことが分かるようになっている。したがって、この形態では、連鎖数分の関連ＱＲコードに係る指標情報(パスワード)が一致することだけでなく、連鎖数分の関連ＱＲコードに係る指標情報(パスワード)がAFで一致することまで要求されることとなる。そのため、よりセキュリティを高めることができる。
【０１０４】
また、これと類似の手法として、電子署名を付加する手法を採用してもよい。つまり、パスワードを、前記暗号文の暗号鍵を特定するためのインデックス(見出し)情報とし、複数種類のパスワードの各々毎に、このパスワードに対応する鍵の組(拡張エンコーダ６０が情報（例えば、図６のTOKYO<cr>MINATO<cr>JPN）のハッシュ値を暗号化して電子署名を作成する際の秘密鍵と拡張デコーダ７０が電子署名を復号化してハッシュ値を作成する際の公開鍵)を予め決めておく。そして、あるパスワード(例えば、図３のAF)を使用する場合には、拡張エンコーダ６０が、当該パスワード(AF)に対応する秘密鍵で電子署名を作成する。作成された電子署名は、例えば、図２の開示情報又は非公開情報の中に含ませる(開示情報の例であればTOKYO<cr>MINATO<cr>JPN及び電子署名が開示情報となる)また、拡張デコーダ７０は、非公開データコード語から関連コード情報(指標情報であるパスワード(AF))を取り出して当該パスワード(AF)に対応する公開鍵を選択(特定)し、この公開鍵で電子署名からハッシュ値を作成する。また、情報(例えば、図６のTOKYO<cr>MINATO<cr>JPN)からもハッシュ値を作成し、双方のハッシュ値を比較する。つまりハッシュ値の一致を確認する。
【０１０５】
仮に改ざん等により偶然AF以外のパスワード(BGとする)で連鎖数分の関連ＱＲコードの指標情報が一致した場合には、BGに対応する公開鍵が選択されることとなり、電子署名から当該公開鍵を用いて作成されたハッシュ値と、情報(例えば、図６のTOKYO<cr>MINATO<cr>JPN)から作成されたハッシュ値とが一致せず、事態が正常でないことが分かるようになっている。したがって、この形態では、連鎖数分の関連ＱＲコードに係る指標情報(パスワード)が一致するととだけでなく、連鎖数分の関連ＱＲコードに係る指標情報(パスワード)がAFで一致するととまで要求されることとなる。そのため、よりセキュリティを高めることができる。
【０１０６】
また、上記実施の形態においては、二次元コード生成システムとして、制御部６１と表示装置６３と印刷装置６４と入力装置６５を備えるハンディ端末等の拡張エンコーダ６０を例に挙げて説明したが、これに限定されるものではない。例えば、前記生成工程を実行する遠隔地に備えられたサーバーと、サーバーとデータのやり取りを行い、表示装置６３、印刷装置６４、入力装置６５を備える端末と、からなるようにしてもよい。
【０１０７】
また、上記実施の形態においては、二次元コード評価システムとして、制御部７１と撮像装置７２と表示装置７３と印刷装置７４と入力装置７５を備えるハンディ端末等の拡張デコーダ７０を例に挙げて説明したが、これに限定されるものではない。例えば、前記評価工程を実行する遠隔地に備えられたサーバーと、サーバーとデータのやり取りを行い、撮像装置７２、表示装置７３、印刷装置７４、入力装置７５を備える端末から構成されることとしてもよい。また、印刷装置７４が存在しないこととしても構わない。
【０１０８】
また、二次元コード生成システム(二次元コード評価システム)は、専用端末であってもよいし、PC、スマートフォン、携帯電話などの汎用端末に、生成(評価)工程を実行するためのソフトウェア(アプリケーション)を組み込んだものであってもよい。
【０１０９】
また、特開2017-91039号公報に開示されている技術を用いて、コードブロック(RSブロック)の保護符号化を行っても構わない。このような保護符号化を行えば、関連コード情報を含んだ非公開データコード語がより秘匿化されることとなる。
【０１１０】
ＱＲコード
以下、本発明の二次元コードの生成方法およびその読取装置において、二次元コードとしてＱＲコードを用いる実施形態について図を参照して説明する。なお、以下説明する各実施形態では、二次元コードの例として、ＱＲコードを挙げるが、本発明に係る二次元コードはこれに限られることはなく、例えば、データマトリクス、マキシコード、ＣＰコード、ＰＤＦ４１７やＲＳＳコンポジット等、二次元的に表示されるあらゆるコードも本発明に含まれる。
【０１１１】
［第１実施形態］
まず、本発明の第１実施形態に係るプリンタ１０の構成を、図１４を参照して説明する。なお、図１４(A)には、本第１実施形態に係るプリンタ１０とそれに接続されるパーソナルコンピュータ（以下「ＰＣ」という）１とを示す説明図が図示されており、また図１４(B)には、プリンタ１０のハードウェア構成例を示すブロック図が図示されている。
【０１１２】
図１４(A)に示すように、プリンタ１０は、ケーブル５を介してＰＣ１に接続されることにより、ＰＣ１から出力されて当該プリンタ１０に入力される英数字、漢字や記号等の文字データ（以下これらを「印刷データ」と総称する）に基づいてＱＲコードを生成してラベルＰ等に印刷する機能を有するものである。なお、ここでいう「ＱＲコード」とは、日本工業規格（ＪＩＳ）の二次元コードシンボル−ＱＲコード−基本仕様（JIS X 0510:2004）に従うものである。
【０１１３】
ＰＣ１は、ＰＣ本体２およびディスプレイ３により構成されており、ＰＣ本体２は、図略の、ＭＰＵ、メインメモリ（主記憶装置）、ハードディスク（補助記憶装置）、入出力インタフェース、通信インタフェース、キーボード、ポインティングデバイス等からなる情報処理装置で、またディスプレイ３は、ＰＣ本体２に接続されることによりＰＣ本体２から出力される情報を画面表示可能な情報表示装置である。
【０１１４】
なお、このＰＣ本体２には、プリンタ１０のデバイスドライバがインストールされて（組み込まれて）おり、当該ＰＣ１の利用者が、ＱＲコードとしてラベルＰに印刷したい文字等を含んだ印刷データを、ＰＣ本体２からプリンタ１０に対して任意に出力可能にしている。
【０１１５】
これに対し、プリンタ１０は、図１４(B)に示すように、主に、ＭＰＵ１１、メモリ１２、インタフェース１３、ローラ制御部１４、ヘッド制御部１５、ローラ１７、ヘッド１８等から構成されている。なお、これらは、図略のプリント配線板に実装あるいは図略のハウジング内に内装されている。
【０１１６】
ＭＰＵ１１は、プリンタ１０全体を制御可能なマイクロコンピュータ（以下「マイコン」という）で、メモリバスを介して接続されるメモリ１２とともに情報処理装置を構成し得るもので情報処理機能を有する。このＭＰＵ１１には、メモリ１２のほかに、インタフェース１３、ローラ制御部１４やヘッド制御部１５も接続されている。なお、後述するコード生成処理は、このＭＰＵ１１およびメモリ１２により実行される。
【０１１７】
メモリ１２は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。このメモリ１２のうちのＲＡＭには、前述したＰＣ１から送られてくる文字データを蓄積するバッファ領域のほか、ＭＰＵ１１が算術演算や論理演算等の各処理時に利用する作業領域等も確保可能に構成されている。またＲＯＭには、後述のコード生成処理等を実行可能な所定プログラムやその他、ローラ制御部１４やヘッド制御部１５等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【０１１８】
インタフェース１３は、前述したＰＣ１のＰＣ本体２から送られてくる印刷データ等を受信可能にする入力インタフェースで、シリアルバス等を介してＭＰＵ１１に接続されている。このインタフェース１３を介してＭＰＵ１１に入力された印刷データは、コード生成処理によって後述するように情報処理されてコード化される。
【０１１９】
ローラ制御部１４は、ローラ１７の駆動機構（図略）を制御し得る制御装置で、シリアルバス等を介してＭＰＵ１１に接続されている。これにより、ＭＰＵ１１から受けた制御信号に従ってローラ１７の回転の開始や停止あるいは回転方向等を制御している。
【０１２０】
ヘッド制御部１５は、例えば、感熱用紙からなるラベルに対して任意のパターンを印刷し得るサーマルヘッドで、シリアルバス等を介してＭＰＵ１１に接続されている。本実施形態では、後述のコード生成処理によって生成されたＱＲコードを感熱ラベルに印刷可能にするもので、前述したローラ制御部１４による感熱ラベルの紙送りタイミングに同期して、ＱＲコードを構成する位置検出パターン、タイミングパターンやデータコード等を当該ラベルに印刷する。
【０１２１】
なお、以下、ヘッド制御部１５として、サーマルヘッドの場合を例示して説明するが、ＱＲコードを印刷できるものであれば、例えば、インクジェット用やドットインパクト用のヘッドでも良いし、また印刷機構として、レーザプリンタやＬＥＤプリンタ等であっても良い。
【０１２２】
このようにプリンタ１０を構成することによって、ＰＣ１から出力されて当該プリンタ１０に入力された印刷データは、インタフェース１３を介してメモリ１２のバッファ領域に一旦蓄えられた後、次に説明するコード生成処理に渡される。ここで、コード生成処理を図１５〜図１７を参照して説明する。なお、図１５には、コード生成処理の流れを示すフローチャートが図示されている。また図１６には、図１５に示すコード生成処理により情報処理されるデータやコードのフォーマット例が図示されている。さらに図１７には、１型のＱＲコードの構成例が図示されている。
【０１２３】
図１５に示すように、コード生成処理は、プリンタ１０の電源投入により起動するＭＰＵ１１およびメモリ１２によって開始され、まずステップＳ１０１により初期設定処理が行われる。この処理は、メモリ１２の作業領域や印刷データを蓄えるバッファ領域をクリアし、或いは所定のフラグやカウンタ等をクリアする。
【０１２４】
ステップＳ１０３では、印刷データを受信したか否かを判断する処理で、印刷データを受信するまで、このステップを繰り返す（Ｓ１０３；Ｎｏ）。そして、印刷データを受信したと判断すると（Ｓ１０３；Ｙｅｓ）、続くステップＳ１０５によりタイマーのカウント値をクリアする処理を行う。このステップＳ１０５でカウンタ値がクリアされるタイマーは、次のステップＳ１０７により所定時間の経過を計時するものである。
【０１２５】
ステップＳ１０７では、先のタイマーにより所定時間が経過したか否かを判断する処理が行われる。即ち、ＰＣ１から送られてくる印刷データに、暗号化等に関するデータが含まれているか否かを次のステップＳ１１１により判断する必要上、例えば、所定時間として１秒間が経過したか否かを判断し、この時間が経過するまでに、ＰＣ１から暗号化に関するデータが送られてこない場合には、所定時間の経過とともにステップＳ１０９に処理を移行する（Ｓ１０７；Ｙｅｓ）。
【０１２６】
これに対し、所定時間が経過していない場合には（Ｓ１０７；Ｎｏ）、次のステップＳ１１１により暗号化等に関するデータとして、秘匿する必要のあるデータ（以下「非公開データ」という）のデータレコード中の位置関係を示す非公開データ位置情報と暗号するために用いる暗号キー（暗号鍵）とを受信したかどうかを判断する処理が行われる。そして、これらを受信していると判断した場合には（Ｓ１１１；Ｙｅｓ）、続くステップＳ１１３に処理を移行し、これらを受信していると判断できない場合には（Ｓ１１１；Ｎｏ）、前述したステップＳ１０７に処理を戻して、再度、時間の経過を判断する。
【０１２７】
そして、所定時間が経過したとステップＳ１０７により判断した場合には（Ｓ１０７；Ｙｅｓ）、ステップＳ１０９により所定のフラグに「０」をセットする。このフラグは、印刷データに非公開データが含まれているかどうかを示すもので、「０」がセットされている場合には、非公開データが含まれていないことを意味し、「１」がセットされている場合には、非公開データが含まれていることを意味する。このため、ステップＳ１１１により暗号化等に関するデータを受信していると判断した場合には（Ｓ１１１；Ｙｅｓ）、続くステップＳ１１３によりこのフラグに「１」をセットする処理が行われる。
【０１２８】
ステップＳ１１３により所定のフラグに「１」をセットすると、続くステップ１１５により、開示データおよび非公開データを並び替える処理が行われる。即ち、印刷データに、第三者に開示するデータ（開示データ）と、第三者には秘密にして隠しておきたいデータ（非公開データ）と、が含まれており、これらがデータレコード中で混在している場合に、ステップＳ１１１により受信した「非公開データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと非公開データの集まりとに分類する処理を行う。
【０１２９】
例えば、図１６(A)に示すように、例えば、ＰＣ１から送られてくる印刷データのレコードに、開示データＡ、非公開データα、開示データＢ、非公開データβの順に並ぶデータが含まれていたとすると、ステップＳ１１５により、これらのデータの順番を入れ替えて図１６(B)に示すように、開示データＡ、開示データＢ、非公開データα、非公開データβの順に並び替える処理を行う。これにより、開示データと非公開データとがそれぞれまとめられるので、後のステップ１２１による終端識別コードの付加処理や、ステップＳ１２５による秘匿識別コードの付加処理等が容易になる。
【０１３０】
次のステップＳ１１７では、開示データや非公開データ等の各データをＪＩＳの基本仕様（JIS X 0510:2004）に従って符号化する処理が行われる。これにより、開示するデータを表すコード語としてコード化された開示データコードが生成され、また秘匿するデータを表すコード語としてコード化された非公開データコードが生成される。
【０１３１】
また続くステップＳ１１９では、開示データの各データに対する誤り訂正符号をＪＩＳの基本仕様（JIS X 0510:2004）に準拠して生成しさらにそれをコード化して誤り訂正コードを生成する処理が行われる。また、非公開データについても、例えば、開示データと同様に、ＪＩＳの基本仕様（JIS X 0510:2004）に記載されている誤り訂正コードの生成アルゴリズムを用いて誤り訂正符号を生成しそれをコード化して誤り訂正コードを生成する処理が行われる。
【０１３２】
そして、続くステップＳ１２１により、開示データコードの後に終端識別コードを付加する処理が行われる。終端識別コードは、例えば、４ビットパターンで「００００」であり、図１６(C)に示すように、開示データコードＡの後に続く開示データコードＢの直後に位置する。なお、図１６(C)では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ表現している。
【０１３３】
次のステップＳ１２３では、前述した所定のフラグが「１」にセットされているか否か、即ち非公開データが含まれているか否かを判断する処理が行われる。そして、非公開データが含まれている場合には（フラグが「１」にセットされている場合：Ｓ１２３；Ｙｅｓ）、ステップＳ１２５に処理を移行し、また非公開データが含まれていない場合には（フラグが「０」にセットされている場合：Ｓ１２３；Ｎｏ）、一連の秘匿処理（Ｓ１２５〜Ｓ１３３）を飛ばしてステップＳ１３５に処理を移行する。
【０１３４】
ステップＳ１２５〜Ｓ１３３は、印刷データに非公開データが含まれている場合に行われる一連の秘匿処理である。まず、ステップＳ１２５により、秘匿識別コードを終端識別コードの直後に付加する処理が行われる。
【０１３５】
このステップＳ１２５による処理は、秘匿識別コードを終端識別コードの直後に配置することで、この終端識別コードの後に配置されているデータコードが「秘匿するデータを表すコード語としてコード化されたものであること」を明示的に表す。これにより、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際に、当該ＱＲコードＱに非公開データコードが含まれていることを認識可能にするので、例えば、読取対象外のデータやデータ化けしたデータ等を非公開データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
【０１３６】
次のステップＳ１２７では、非公開データコードのデータ長を計算して求め、このデータ長をコード化したものを秘匿識別コードの直後に付加する処理が行われる。これにより、非公開データコードが配置される領域や範囲がわかるので、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際に、どこまでが非公開データコードであるか、または暗号データコードであるかを認識可能にする。
【０１３７】
例えば、図１６(C)に示す例では、非公開データコードαのデータ長と非公開データコードβのデータ長との和が当該データ長として計算されて秘匿識別コードの直後に付加される。なお、図１６(C)では、便宜上、秘匿識別コードを「秘匿識別子」、と表現している。
【０１３８】
続くステップＳ１２９では、暗号キーがあるか否かを判断することによって、非公開データコードを暗号化する必要があるか否かを判断する。即ち、ステップS１１１によって暗号キーをＰＣ１から受信している場合には、暗号キーがあるので（Ｓ１２９；Ｙｅｓ）、ステップＳ１３１に移行して暗号化処理を行う。これに対して、ステップS１１１によって暗号キーをＰＣ１から受信していない場合には、暗号キーがないので（Ｓ１２９；Ｎｏ）、ステップＳ１３１による暗号化処理を飛ばしてステップＳ１３３に移行する。
【０１３９】
なお、ステップＳ１１１により暗号キーを受信していない場合であっても、ＰＣ１が予め暗号キーをメモリ１２やハードディスク等の情報記憶媒体に保持しているときには暗号キーがあるので（Ｓ１２９；Ｙｅｓ）、ステップＳ１３１で暗号化処理を行う。
【０１４０】
ステップＳ１３１では、非公開データコードを暗号化する処理が行われる。この処理は、例えば、公知の視覚復号型暗号技術（視覚復号型秘密分散法）を用いて非公開データコードを暗号化する。これにより、この暗号化されていない平文データが付加されている場合に比べてセキュリティの強度を高めることができる。
【０１４１】
例えば、図１６(D)に示す例では、非公開データコードαを構成する「暗号化データ」の部分が暗号化され、「開始桁」、「文字数」及び「復号キー検査データ」も併せて生成される。最初に位置する「開始桁」は、当該暗号化された非公開データの位置情報として、印刷データの先頭をゼロ番地とした場合に表現可能なアドレス値がこれに相当する。また次の「文字数」は、暗号化されている非公開データの文字数である。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合においても、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際において、デコードしたデータをこの位置情報に基づいてコード化前の位置関係に配置することが可能となる。
【０１４２】
最後に付加されている「復号キー検査データ」は、当該暗号を解読するのに用いる復号キーを特定可能な鍵特定情報で、暗号方式が暗号キーと復号キーとが同じ共通鍵暗号方式（「秘密鍵暗号方式」ともいう）の場合には、当該復号キー検査データは暗号キーも特定できる。これにより、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等でデコードする際に、非公開データコードの復号キー（復号できる鍵）を容易に特定したり、復号キーであるか否かを判断することができる。
【０１４３】
なお、非公開データコードβについても非公開データコードαと同様に構成され、「復号キー検査データ」として、非公開データコードαを復号する復号キーと同じ情報を付加してもよいし、また非公開データコードαの暗号キーとは異なった他の暗号キーで非公開データコードβの非公開データを暗号化した場合には、他の復号キーを特定する「復号キー検査データ」を付加してもよい。これにより、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際に、各非公開データコードごとに復号できる鍵を容易に特定したり、復号できる鍵であるか否かを判断することができる。
【０１４４】
ステップＳ１３３では、データ長の直後に非公開データコードを付加する処理が行われる。図１６(D)に示す例では、非公開データコードαおよび非公開データコードβをデータ長の後に付加する。このとき、この非公開データコードには、関連コード情報を配置しておく。これにより、一般仕様の二次元コードの読取装置では、二次元コードのデコード処理において、終端識別コードの後に配置されるパディングコード等は読み取りの対象にしないため、このように終端識別コードの後に配置された非公開データコードは読み取ることはできない。したがって、このような非公開データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該非公開データコードの存在はわからないので、当該読取装置の利用者には非公開データの存在を認識させないようにすることができる。
【０１４５】
続くステップＳ１３５では、例えば、ＪＩＳの基本仕様（JIS X 0510:2004）に記載されている処理アルゴリズムに準拠して、非公開データコードの後にパディングコードを付加する処理が行われ、さらにステップＳ１３７では、誤り訂正コード語であるＲＳ符号を付加する処理が行われる。これにより、図１６(C)に示すフォーマットのデータコードを生成することが可能となる。
【０１４６】
また、ステップＳ１３９では、ステップＳ１３７により生成されたデータコードに基づいて、各セルを生成し、図１７に示すデータブロックに配置する処理が行われる。即ち、図１７に示す１型のＱＲコードでは、１辺が２１セル（モジュール）の正方形状に構成されているため、三隅に設けられている位置検出パターンや形式情報（図１７に示す斜線部分）、さらにはタイミングパターンを除いたコード領域に、８個のセルを４行２列に配置して構成されるデータブロックを２６ブロック（Ａ０〜Ａ２５）配置する。
【０１４７】
例えば、図１６(C)に示す例では、開示データコードＡをＡ０〜Ａ２、開示データコードＢをＡ３〜Ａ６に配置し、終端識別コードをＡ７に配置する。そして、この終端識別コードの後方で、通常はパディングコードが配置される位置に相当するＡ８〜Ａ１７に、秘匿識別コード、データ長、非公開データコード等を配置する。
【０１４８】
即ち、Ａ８に秘匿識別コードを配置し、その後のＡ９にデータ長を配置して、さらにこの後のＡ１０〜Ａ１３に非公開データコードα、Ａ１４〜Ａ１７に非公開データコードβをそれぞれ配置する。そして、通常のＱＲコードと同様に、誤り訂正コード語であるＲＳ符号を最後のＡ２０〜Ａ２５に配置して、この間の空いている部分であるＡ１８〜Ａ１９にパディングコードを配置する。なお、Ａ１５およびＡ１８は、タイミングパターンを挟んで位置していることから、Ａ１５はＡ１５とＡ１５’とに、またＡ１８はＡ１８とＡ１８’とに分割されている。
【０１４９】
なお、ステップＳ１３１において、図１６(E)に示すように、「復号キー検査データ」に代えて、復号キーそのものを付加してもよい。これにより、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際に、例えば、当該ＱＲコードリーダ等が非公開データコードαの復号キーを持っていなくても、非公開データコードαを復号して元の平文に戻すことができる。
【０１５０】
また、非公開データコードβについても、同様に「復号キー検査データ」に代えて、復号キーそのものを付加してもよい。付加する復号キーは、非公開データコードαを復号する復号キーと同じものを付加してもよいし、また非公開データコードαの暗号キーとは異なった他の暗号キーで非公開データコードβの非公開データを暗号化した場合には、この他の暗号キーに対応する他の復号キーを付加してもよい。これにより、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際に、当該ＱＲコードリーダ等が、各非公開データコードごとに対応するそれぞれの復号キーを持っていなくても、それぞれの非公開データコードを復号して元の平文に戻すことができる。
【０１５１】
また、ステップＳ１２３により、非公開データが含まれていないと判断した場合であっても（フラグが「０」にセットされている場合：Ｓ１２３；Ｎｏ）、図１６(F)に示すように、暗号化していない平文データの前に、ステップＳ１３１で付加した「開始桁」や「文字数」を付加する処理ステップを、ステップＳ１２３とステップＳ１３５との間に設けてもよい。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、本コード生成処理によって生成されたＱＲコードＱを、ＱＲコードリーダ等のデコードする際において、デコードしたデータをこの位置情報に基づいてコード化前の位置関係に配置することが可能となる。また、ステップＳ１３９の後は、ステップＳ１３９´へ移行し、互いに関連させる全ての二次元コードの生成が終了したか否かを判別する。その結果、互いに関連させる全ての二次元コードの生成が終了した場合には処理動作が終了となる。一方、互いに関連させる全ての二次元コードの生成が終了していない場合には、再びステップＳ１０１に戻り、上述した処理動作を繰り返す。
【０１５２】
以上説明したように、本第１実施形態に係るプリンタ１０によると、ＭＰＵ１１により実行されるコード生成処理によって生成されるＱＲコードＱでは、ステップＳ１３３により非公開データコードが、パディングコードの一部または全部に代えて、終端識別コードの後に配置されている。これにより、終端識別コードの後に配置された非公開データコードは、一般仕様の読取装置では読み取りの対象にならないので、このような非公開データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該非公開データコードによって秘匿しようとするデータの存在はわからない。したがって、一般仕様の読取装置の利用者には非公開データの存在を認識させないようにすることができる。
【０１５３】
よって、このような非公開データコードを含んでいても、一般仕様の読取装置には当該非公開データコードのデコードデータに相当するものが画面表示されないので、利用者に非公開データの存在を認識させることがなく、当該利用者に対して不信感を与えたり、解読を試みようとする不用意な動機を与えることがない。また、当該非公開データコードのデコードデータに相当するものが制御データ等であっても、それが画面表示されることがないので、画面表示が乱れることもない。
【０１５４】
なお、上述した第１実施形態では、プリンタ１０により、ラベルＰにＱＲコードＱを印刷する例を挙げて説明したが、本発明はこれに限られることはなく、ＱＲコードＱを視覚的に表現可能なものであればよく、例えば、図１５に示すコード生成処理をＰＣ本体２により実行してディスプレイ３にＱＲコードＱを表示するように構成しても良い。この場合、コード生成処理は、コンピュータプログラムとして概念できるので、例えば、「開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さないパディングコードを配置する二次元コードの生成装置として、コンピュータを機能させるためのプログラムであって、秘匿するデータを表すコード語としてコード化された非公開データコードを前記パディングコードの一部または全部に代えて、前記終端識別コードの後に配置することを特徴とする二次元コードの生成プログラム。」と表現可能な技術的思想を把握できる。これにより、この二次元コードの生成プログラムにより二次元コードの生成装置として機能するコンピュータは、上述したプリンタ１０のＭＰＵ１１等と同様の作用効果を奏する。
【０１５５】
また、上述した第１実施形態では、プリンタ１０にＰＣ１を接続して当該ＰＣ１から印刷データを送る構成を例示して説明したが、英数字、漢字や記号等の文字データを出力可能な情報処理装置であれば、このような機能を備えたデジタルカメラや携帯電話機、あるいはハンドヘルドコンピュータやハンディターミナル等を、プリンタ１０に接続する構成を採っても上述した作用効果を得ることができる。
【０１５６】
［第２実施形態］
次に、本発明の第２実施形態に係るリーダ２０の構成を説明する。本第２実施形態に係るリーダ２０は、第１実施形態で説明したプリンタ１０により印刷されたＱＲコードＱをデコード可能なリーダ２０である。なお、リーダ２０によりデコード可能なＱＲコードＱの構成は、図１６および図１７を参照して既に説明しているので、ここでは説明を割愛する。
【０１５７】
まず、本発明の第２実施形態に係るリーダ２０の構成を図１８を参照して説明する。なお、図１８には、本第２実施形態に係るＱＲコードリーダのハードウェア構成例を示すブロック図が図示されている。
【０１５８】
図１８に示すように、リーダ２０は、主に、照明光源２１、受光センサ２３、結像レンズ２７等の光学系と、メモリ３５、制御回路４０、操作スイッチ４２、液晶表示器４６等のマイコン系と、電源スイッチ４１、バッテリ４９等の電源系と、から構成されている。なお、これらは、図略のプリント配線板に実装あるいは図略のハウジング内に内装されており、ハードウェア的には一般仕様のＱＲコードリーダ（読取装置）と同様に構成されている。
【０１５９】
光学系は、照明光源２１、受光センサ２３、結像レンズ２７等から構成されている。照明光源２１は、照明光Ｌｆを発光可能な照明光源として機能するもので、例えば、赤色のＬＥＤとこのＬＥＤの出射側に設けられる拡散レンズ、集光レンズ等とから構成されている。本第２実施形態では、受光センサ２３を挟んだ両側に照明光源２１が設けられており、図略のケースの読取口を介してラベルＰに向けて照明光Ｌｆを照射可能に構成されている。このラベルＰには、第１実施形態で詳述したＱＲコードＱが印刷されている。
【０１６０】
受光センサ２３は、ラベルＰやＱＲコードＱに照射されて反射した反射光Ｌｒを受光可能に構成されるもので、例えば、Ｃ−ＭＯＳやＣＣＤ等の固体撮像素子である受光素子を２次元に配列したエリアセンサ等である。受光センサ２３は、結像レンズ２７を介して入射する入射光をこの受光面２３ａで受光可能に図示しないプリント配線板に実装されている。
【０１６１】
結像レンズ２７は、外部から読取口を介して入射する入射光を集光して受光センサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。
【０１６２】
次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等を備えている。このマイコン系は、その名の通り、マイコンとして機能し得る制御回路４０およびメモリ３５と中心に構成される。
【０１６３】
光学系の受光センサ２３から出力される画像信号は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データは、メモリ３５に入力されると、画像データ蓄積領域に蓄積される。なお、同期信号発生回路３８は、受光センサ２３およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能とされている。
【０１６４】
メモリ３５は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。このメモリ３５のうちのＲＡＭには、前述した画像データ蓄積領域のほかに、制御回路４０が算術演算や論理演算等の各処理時に利用する作業領域等も確保可能とされている。またＲＯＭには、後述するデコード処理等を実行可能な所定プログラムやその他、照明光源２１、受光センサ２３等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【０１６５】
制御回路４０は、リーダ２０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなり、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路４０には、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本第２実施形態の場合、電源スイッチ４１、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等が接続されている。
【０１６６】
これにより、例えば、電源スイッチ４１や操作スイッチ４２の監視や管理、またインジケータとして機能するＬＥＤ４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、さらには読み取ったＱＲコードＱによるコード内容を画面表示可能な液晶表示器４６の画面制御や外部装置とのシリアル通信を可能にする通信インタフェース４８の通信制御等を可能にしている。なお、通信インタフェース４８に接続される外部装置には、当該リーダ２０の上位システムに相当するホストコンピュータＨＳＴ等が含まれる。
【０１６７】
電源系は、電源スイッチ４１、バッテリ４９等により構成されており、制御回路４０により管理される電源スイッチ４１のオンオフによって、上述した各装置や各回路に、バッテリ４９から供給される駆動電圧の導通や遮断が制御されている。なお、バッテリ４９は、所定の直流電圧を発生可能な二次電池で、例えば、リチウムイオン電池等がこれに相当する。また、バッテリ４９によることなく、例えば、通信インタフェース４８を介して接続されるホストコンピュータＨＳＴ等の外部装置から電力供給を受ける構成を採用する場合もあり、この場合には当該バッテリ４９は不要となる。
【０１６８】
このようにリーダ２０を構成することによって、例えば、電源スイッチ４１がオンされて所定の自己診断処理等が正常終了し、ＱＲコードＱの読み取りが可能な状態になると、照明光Ｌｆの発光を指示する操作スイッチ４２（例えばトリガースイッチ）の入力を受け付ける。これにより、利用者がトリガースイッチを引いてオンにすることで、制御回路４０が同期信号を基準に照明光源２１に発光信号を出力するので、当該発光信号を受けた照明光源２１は、ＬＥＤを発光させて照明光Ｌｆを照射する。
【０１６９】
すると、ＱＲコードＱに照射された照明光Ｌｆが反射し、その反射光Ｌｒが読取口を介して結像レンズ２７に入射するため、受光センサ２３の受光面２３ａには、ＱＲコードＱの像が結像される。その結果、ＱＲコードＱの像が受光センサ２３を露光するため、上述したマイコン系によって画像処理された当該ＱＲコードＱの画像データが、メモリ３５の画像データ蓄積領域を介して、次に説明するデコード処理に渡される。
【０１７０】
次に、デコード処理を図１７，図１９および図２０を参照して説明する。なお、図１９には、デコード処理の流れを示すフローチャートが図示されている。また図２０には、図１９に示す復号化処理の流れを示すフローチャートが図示されている。また、図１７には、１型のＱＲコードの構成例を示す説明図が図示されている。
【０１７１】
図１９に示すように、デコード処理は、リーダ２０の電源投入により起動する制御回路４０およびメモリ３５によって開始され、まずステップＳ２０１により初期設定処理が行われる。この処理は、メモリ３５の作業領域や画像データを蓄える画像データ蓄積領域をクリアしたり、所定のフラグやカウンタ等をクリアする。なお、ここで説明するリーダ２０は、ホストコンピュータＨＳＴと接続されており、当該ホストコンピュータＨＳＴから設定データとして復号キーのデータを取得するものとする。
【０１７２】
ステップＳ２０３では、タイマーのカウント値をクリアする処理が行われる。このステップＳ２０３でカウンタ値がクリアされるタイマーは、次のステップＳ２０５により所定時間の経過を計時するものである。
【０１７３】
ステップＳ２０５では、先のタイマーにより所定時間が経過したか否かを判断する処理が行われる。即ち、ホストコンピュータＨＳＴから送られてくる設定データに復号キーのデータが含まれているか否かを次のステップＳ２０９により判断する必要上、例えば、所定時間として５秒間が経過したか否かを判断し、この時間が経過するまでに、ホストコンピュータＨＳＴから暗号化に関するデータが送られてこない場合には、所定時間の経過とともにステップＳ２０７に処理を移行する（Ｓ２０５；Ｙｅｓ）。
【０１７４】
これに対し、所定時間が経過していない場合には（Ｓ２０５；Ｎｏ）、次のステップＳ２０９により復号キー（復号鍵）を受信したか否かを判断する処理が行われる。そして、これを受信していると判断した場合には（Ｓ２０９；Ｙｅｓ）、続くステップＳ２１１に処理を移行し、受信していると判断できない場合には（Ｓ２０９；Ｎｏ）、前述したステップＳ２０５に処理を戻して、再度、時間の経過を判断することとなる。
【０１７５】
そして、所定時間が経過したとステップＳ２０５により判断した場合には（Ｓ２０５；Ｙｅｓ）、ステップＳ２０７により所定のフラグに「０」をセットする。このフラグは、ＱＲコードＱの非公開データコードを復号キーで復号するか否かを示すもので、「０」がセットされている場合には、復号キーで復号しないことを示し、「１」がセットされている場合には、復号キーで復号することを示す。このため、２０９により復号キーを受信していると判断した場合には（Ｓ２０９；Ｙｅｓ）、続くステップＳ２１１によりこのフラグに「１」をセットする処理が行われることとなる。
【０１７６】
ステップＳ２１１により所定のフラグに「１」をセットすると、続くステップ２１３により、画像データを取得する処理が行われる。即ち、メモリ３５の画像データ蓄積領域から蓄えられている画像データを読み出す処理を行う。これにより、例えば、図１７に示すようなＱＲコードＱのコード画像を得ることができる。
【０１７７】
続くステップＳ２１５では、位置検出パターンを検出する処理が行われる。即ち、ＱＲコードＱは、図１７に示すように、その三隅に位置検出パターンが設けられているため、これらを検出することによって、次のステップＳ２１７によりＱＲコードＱのコード外形を検出する。
【０１７８】
そして、ステップＳ２１９により各セルの中心座標を算出する処理を行うことによって次ステップＳ２２１により各セルの白黒を判別する。これにより、図１７に示す形式情報（図１７に示す斜線部分）やデータブロックを認識可能になるので、続くステップＳ２２３により、欠損等しているデータブロックがある場合には、そのブロックを誤り訂正可能であるかを判断する。
【０１７９】
そして、ステップＳ２２３により誤り訂正可能であると判断できる場合には（Ｓ２２３；ＯＫ）、誤り訂正をして続くステップＳ３００により復号化処理を行う。これに対し、ステップＳ２２３により誤り訂正可能であると判断できない場合には（Ｓ２２３；ＮＧ）、誤り訂正できないので、ステップＳ２１３に処理を移行し、再度画像データを取得してステップＳ２１５〜Ｓ２２１の各処理を行う。
【０１８０】
また、このステップＳ３００の後は、ステップＳ３５０へ移行し、全ての二次元コードについて復号化処理を終了したか否かを判別する。その結果、全ての二次元コードについて復号化処理を終了した場合には、処理動作を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０１８１】
ステップＳ３００は、その詳細が図２０に図示されているので、ここからは図２０を参照して復号化処理を説明する。図２０に示すように、復号化処理では、ステップＳ３０１により、まずカウンタｎに０（零）をセットする処理が行われる。このカウンタｎは、本復号化処理において、ＱＲコードＱを構成するデータコードの順番を示す変数として機能することとなる。
【０１８２】
ステップＳ３０３では、カウンタｎが指すｎ番目のデータコードを取得する処理が行われる。続くステップＳ３０５では、ステップＳ３０３により取得されたｎ番目のデータコードが、終端識別コードであるか否かを判断する処理が行われる。これにより、当該データコードが終端識別コードであると判断した場合には（Ｓ３０５；Ｙｅｓ）、終端識別コードよりも前に配置される通常のデータコードはこれ以上、当該ＱＲコードＱには含まれていないことになるので、ステップＳ３１５に移行する。
【０１８３】
これに対し、当該データコードが終端識別コードであると判断できない場合には（Ｓ３０５；Ｎｏ）、終端識別コードよりも前にまだ通常のデータコードが存在することになるので、続くステップＳ３０７に処理を移行して次のデータコード、つまり（ｎ＋１）番目のデータコードをコード数ｉとして取得する。これは、第１実施形態で図１６(D)を参照して説明したように、データコードの２文字目相当の位置には、文字数が格納されていることに基づくもので、その詳細は、ＪＩＳの基本仕様（JIS X 0510:2004）の「8.4データの符号化」に記載されている。
【０１８４】
ステップＳ３０７によりコード数ｉを取得すると、続くステップＳ３０９では、この文字数（ｉ）分だけデータコードを取得する処理が行われ、さらにステップＳ３１１により当該データコード、つまり開示データコード（開示するデータを表すコード語としてコード化されたデータコード）を復号（デコード）する処理が行われる。
【０１８５】
ステップＳ３１１による復号処理が終わると、ステップＳ３１３により、カウンタｎが次のデータコードを指すように「ｎ＋ｉ＋１」をカウンタｎに設定する処理が行われた後、再びステップＳ３０３に処理を戻してｎ番目のデータコードを取得する処理が行われる。
【０１８６】
このように、ステップＳ３０３〜Ｓ３１３では、終端識別コードの前方に配置されて元来デコードされる通常のデータコード（開示データコード）を取得してデコードする処理が行われる。
【０１８７】
ステップＳ３１５は、前述した所定のフラグに「１」がセットされているか否か、つまりＱＲコードＱの非公開データコードを復号キーで復号するか否かを判断する処理が行われる。当該フラグに「１」がセットされていない場合には（Ｓ３１５；Ｎｏ）、復号キーで復号する必要がないため、本復号化処理を終了して図１９に示すステップＳ３００を終え、デコード処理を終了する。
【０１８８】
これに対し、所定のフラグに「１」がセットされている場合には（Ｓ３１５；Ｙｅｓ）、復号キーで復号する必要があるため、続くステップＳ３１７に処理を移行してカウンタｎにｎ＋１を設定し、さらにステップＳ３１９によりカウンタｎが指すｎ番目のデータコードを取得する処理が行われる。
【０１８９】
そして、続くステップＳ３２１では、ステップＳ３１９により取得されたｎ番目のデータコードが、秘匿識別コードであるか否かを判断する処理を行う。
【０１９０】
これにより、当該データコードが秘匿識別コードであると判断した場合には（Ｓ３２１；Ｙｅｓ）、秘匿識別コードよりも後には、非公開データコードが存在することになる。このため、続くステップＳ３２３に処理を移行して次のデータコード、つまり（ｎ＋１）番目のデータコードのコード数ｊを取得する。。これも、ステップＳ３０９と同様に、データコードの２文字目相当の位置には、文字数が格納されていることに基づくものである。
【０１９１】
なお、ステップＳ３２１により秘匿識別コードが配置されていると判断した場合には、ホストコンピュータＨＳＴに対して当該ＱＲコードＱには、秘匿識別コードが配置されている旨を通知するように構成してもよい。これにより、ホストコンピュータＨＳＴでは、終端識別コードよりも後方のデータコードが非公開データコードである旨を把握することができる。また、本来、パディングコードしか配置されない終端識別コードの後のコード領域（コード領域の空き部分）に、パディングコード以外のもので非公開データコードではないもの（例えばデータ化けによりパディングコードに該当しなくなったもの）が配置されている場合には、非公開データコードである旨の情報がホストコンピュータＨＳＴに対して出力されないので、非公開データコード以外のものをデコードすることで生じ得る誤動作を防止することが可能となる。
【０１９２】
これに対し、当該データコードが秘匿識別コードであると判断できない場合には（Ｓ３２１；Ｎｏ）、秘匿識別コードよりも後には、これ以上、非公開データコードが当該ＱＲコードＱには含まれていないことになる。このため、本復号化処理を終了し、全ての二次元コードについて復号化処理を終了したか否かを判別する（Ｓ３５０）。その結果、全ての二次元コードについて復号化処理を終了した場合には、図１９に示すステップＳ３００を終えてデコード処理を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０１９３】
次にステップＳ３２０へ移行し、関連コード情報が含まれているか否か判別を行う。この判別の結果、関連コード情報が含まれている場合には、その関連コード情報の取得処理を行った上で（Ｓ３２０´）、ステップＳ３２３へ移行する。一方、関連コード情報が含まれていない場合には、そのままステップＳ３２３へ移行する。
【０１９４】
ステップＳ３２３によりコード数ｊを取得すると、続くステップＳ３２５では、この文字数（ｊ）分だけデータコードを取得する処理が行われ、さらにステップＳ３２７によりカウンタｎが次のデータコード、つまり非公開データコードを指すように「ｎ＋ｊ＋２」をカウンタｎに設定する処理が行われた後、ステップＳ３２９によりｎ番目の復号キー検査データ（鍵特定情報）を取得する処理を行う。
【０１９５】
そして、このステップＳ３２９により取得した復号キー検査データに基づいて、先のステップＳ２０９によりホストコンピュータＨＳＴから受信した復号キーがこのｎ番目の非公開データコードの暗号化データを解読する鍵として適合しているか否かの判断をステップＳ３３１により行う。その結果、ステップＳ３３１に当該復号キーが適合していると判断した場合には（Ｓ３３１；Ｙｅｓ）、続くステップＳ３３３により暗号化データを解読する。
【０１９６】
なお、ここでの暗号化は、第１実施形態で説明した公知の視覚復号型暗号技術（視覚復号型秘密分散法）を用いたもので、これにより、非公開データコードの暗号化データがこのような視覚復号型暗号技術により暗号化されている場合でも、復号して元の平文に戻すことができる。
【０１９７】
これに対して、ステップＳ３３１に当該復号キーが適合していると判断できない場合には（Ｓ３３１；Ｎｏ）、当該ｎ番目の非公開データコードを解読することなく、その次の非公開データコードを取得すべく、ステップＳ３３７に移行してカウンタｎにｎ＋１を設定する。これにより、リーダ２０が有する復号キーが当該ｎ番目の非公開データコードを解読できる復号キーでない場合には、当該ｎ番目の非公開データコードは解読も復号されないので、不要な復号処理を抑制することができる。
【０１９８】
ステップＳ３３５では、非公開データコードを復号する処理が行われる。即ちその前のステップＳ３３３により暗号化データを解読することができているので、このステップＳ３３５により解読した暗号化データに基づいて非公開データコードを復号（デコード）する。
【０１９９】
ステップＳ３３５による復号処理が終わると、ステップＳ３３７により、カウントｎが次のデータコードを指すように「ｎ＋１」をカウンタｎに設定する処理が行われた後、続くステップＳ３３９により、ｎ番目のデータコードを取得する処理が行われる。
【０２００】
そして、ステップＳ３４１により、ステップＳ３３９で取得したｎ番目のデータコードがパディングコードであるか否かを判断する処理が行われる。これにより、もし当該ｎ番目のデータコードがパディングコードである場合には（Ｓ３４１；Ｙｅｓ）、これ以上、当該ＱＲコードＱには非公開データコードが含まれていないことになるので、本復号化処理を終了し、全ての二次元コードについて復号化処理を終了したか否かを判別する（Ｓ３５０）。その結果、全ての二次元コードについて復号化処理を終了した場合には、ステップＳ３００を終えてデコード処理を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０２０１】
一方、ステップＳ３４１により当該ｎ番目のデータコードがパディングコードであると判断されない場合には（Ｓ３４１；Ｎｏ）、当該ｎ番目のデータコードは、非公開データコードであるので、ステップＳ３２３に処理を移行して、再び（ｎ＋１）番目のデータコードをコード数ｊを取得することで、前述と同様の処理を行う。
【０２０２】
このようにして、ステップＳ３１９，Ｓ３２３〜Ｓ３３５では、終端識別コードの後方に配置されて、本来はデコードされないデータコード（非公開データコード）を取得してデコードする処理が行われる。
【０２０３】
上述のように、本第２実施形態に係るリーダ２０によると、本来、パディングコードしか配置されない終端識別コードの後のコード領域（コード領域の空き部分）に、非公開データコードが配置されていても、この非公開データコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。よって、第１実施形態で説明したプリンタ１０により印刷されたＱＲコードＱを、本第２実施形態に係るリーダ２０によりデコードすることができる。
【０２０４】
なお、上述したデコード処理では、ステップＳ３２９によりｎ番目の復号キー検査データを取得するように構成したが、例えば、第１実施形態で図１６(E)を参照して説明したように復号キーそのものが非公開データコードに付加されている場合には、このステップＳ３２９に代えて、ｎ番目の復号キーを取得するように構成してもよい。これにより、非公開データコードの復号キー（復号できる鍵）を当該リーダ２０が持っていなくても、当該非公開データコードを復号して元の平文に戻すことができる。
【０２０５】
また、各非公開データコードごとに異なった暗号キーで暗号化されている場合であっても、各非公開データコードについてそれぞれの復号キーが付加されているときには、ステップＳ３２９に代えて、ｎ番目の復号キーを取得するように構成することで、非公開データコードの復号キーを当該リーダ２０が持っていなくても、それぞれの非公開データコードを復号して元の平文に戻すことが可能となる。
【０２０６】
さらに、上述したデコード処理では、ステップＳ３２９によりｎ番目の復号キー検査データを取得するように構成したが、例えば、第１実施形態で図１６(D)を参照して説明したように位置情報としての「開始桁」が非公開データコードに付加されている場合には、このステップＳ３２９に代えて、非公開データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて非公開データコードを復号（デコード）した非公開データをコード化される前のデータレコード中の位置関係に配置するように構成しても良い。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
【０２０７】
［第３実施形態］
次に、本発明の第３実施形態に係るプリンタ１０による他のＱＲコードの生成処理を図２１および図２２を参照して説明する。ここで説明する他のＱＲコードは、図２２(C)に示すように、パディングコード（11101100）の代わりに、任意のコード（例えば00000000や11111111）を空き領域に詰めるフォーマットを採用するものである。
【０２０８】
なお、図２１に示すコード生成処理のフローチャートにおいて、既に説明したコード生成処理（図１５）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図２２に示すデータやコードのフォーマット例についても、同様に、既に説明したフォーマット例（図１６）と実質的に同一のフォーマットについては詳細な説明を省略する。なお、図２２では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ定義している。
【０２０９】
図２１に示すように、コード生成処理は、プリンタ１０の電源投入により起動するＭＰＵ１１およびメモリ１２によって開始され、ステップＳ１０１により初期設定処理が行われると、次にステップＳ１０３により印刷データを受信する。そして、ステップＳ１０７，Ｓ１１１を経て非公開データを受信すると、ステップＳ１１５により開示データおよび非公開データを並び替え、さらにステップＳ１１７により開示データや非公開データ等の各データを符号化した後、ステップＳ１１９により誤り訂正符号を生成してステップＳ１２１により開示データコードの後に終端識別コードを付加する。
【０２１０】
なお、このような終端識別コードを開示データコードの後に付加するのではなく、例えば、図２２(C)の括弧内に示すフォーマットのように、全ての開示データコードのデータ長を算出することによって得られる「開示データコードがなすコード列の終端位置」（以下単に「終端位置」という）を特定できる終端位置データ（図２２(C)では「終端情報」）を開示データコードの先頭に配置または付加してもよい。
【０２１１】
そして、印刷データに非公開データが含まれている場合には（Ｓ１２３；Ｙｅｓ）、Ｓ１２４に移行する。このステップＳ１２４においては、関連コード情報の付加が必要か否かを判別する。関連コード情報の付加が必要な場合、ステップＳ１２４´に移行し、関連コード情報の配置処理を行う。関連コード情報の付加が不要な場合には、ステップＳ１２５に移行する。
【０２１２】
ステップＳ１２５〜Ｓ１３３によって、終端位置に続けて秘匿識別コード等を付加した後、また印刷データに非公開データが含まれていない場合には（Ｓ１２３；Ｎｏ）、終端位置の後に、それぞれステップＳ１３５’により、前述した任意コードとして、例えば、00000000や11111111を付加する。
【０２１３】
即ち、ステップＳ１３５’による任意コードの付加処理では、終端位置よりも後でＲＳ符号よりも前の範囲において、非公開データコードを詰めても空き領域（コード領域の空き部分）が生じる場合にパディングコードに代えて任意のコード（例えば00000000や11111111）を詰める。このため、例えば、このようなデータフォーマットを構成するメモリ上で、予め全ての範囲をこのような任意のコードで埋める初期化処理をステップＳ１０１において処理している場合には、当該ステップＳ１３５’を行うことなく省略することができる（図２１ではステップＳ１３５’の枠線は破線で表現されている）。
【０２１４】
そして、ステップＳ１３７により、誤り訂正コード語であるＲＳ符号を付加する処理が行われると、図２２(C)に示すフォーマットのデータコードが生成されるため、続くステップＳ１３９によりこのようなデータコードに基づいて各セルを生成して図１７に示して説明したデータブロックに配置される。つまり、本来、パディングコードが配置される範囲に前述した任意コードが配置されること以外は、図１５〜図１７を参照して説明したＱＲコードと同様に配置されることとなる。
【０２１５】
以上説明したように、本第３実施形態に係るプリンタ１０によると、ＭＰＵ１１により実行されるコード生成処理によって生成されるＱＲコードＱでは、ステップＳ１３３により非公開データコードが終端位置の後に配置されている。これにより、終端位置の後に配置された非公開データコードは、一般仕様の読取装置では読み取りの対象にならないので、このような非公開データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該非公開データコードによって秘匿しようとするデータの存在はわからない。従って、一般仕様の読取装置の利用者には非公開データの存在を認識させないようにすることが可能となる。
【０２１６】
よって、このような非公開データコードを含んでいても、一般仕様の読取装置には当該非公開データコードのデコードデータに相当するものが画面表示されないので、利用者に非公開データの存在を認識させることがなく、当該利用者に対して不信感を与えたり、解読を試みようとする不用意な動機を与えることを防止することができる。また、当該非公開データコードのデコードデータに相当するものが制御データ等であっても、それが画面表示されることがないので、画面表示が乱れたりすることを防止することができる。
【０２１７】
なお、上述した第３実施形態では、プリンタ１０により、ラベルＰにＱＲコードＱを印刷する例を挙げて説明したが、本発明はこれに限定されることはなく、ＱＲコードＱを視覚的に表現可能なものであればよく、例えば、図２１に示すコード生成処理をＰＣ本体２により実行してディスプレイ３にＱＲコードＱを表示するように構成してもよい。この場合、コード生成処理は、コンピュータプログラムとして概念できるので、例えば、「開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記開示データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置する二次元コードの生成装置として、コンピュータを機能させるためのプログラムであって、秘匿するデータを表すコード語としてコード化された非公開データコードを、前記終端識別コードの後、または前記終端識別情報により特定される前記終端位置の後、に配置することを特徴とする二次元コードの生成プログラム。」と表現可能な技術的思想を把握できる。これにより、この二次元コードの生成プログラムにより二次元コードの生成装置として機能するコンピュータは、上述したプリンタ１０のＭＰＵ１１等と同様の作用および効果を奏する。
【０２１８】
また、上述した第３実施形態では、プリンタ１０にＰＣ１を接続して当該ＰＣ１から印刷データを送る構成を例示して説明したが、英数字、漢字や記号等の文字データを出力可能な情報処理装置であれば、このような機能を備えたデジタルカメラや携帯電話機、あるいはハンドヘルドコンピュータやハンディターミナル等を、プリンタ１０に接続する構成を採用しても上述した作用および効果を得ることができる。
【０２１９】
［第４実施形態］
次に、本発明の第４実施形態に係るリーダ２０による他のＱＲコードのデコード処理を図２３および図２４を参照して説明する。なお、「他のＱＲコード」とは、パディングコード（11101100）の代わりに、任意のコード（例えば00000000や11111111）を空き領域に詰めるフォーマットを採るコードのことで、第３実施形態に係るプリンタ１０により印刷されたＱＲコードのことである。
【０２２０】
なお、図２３に示すデコード処理のフローチャートにおいて、既に説明したデコード処理（図１９）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図２４に示す復号化処理のフローチャートにおいて、既に説明した復号化処理（図２０）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。
【０２２１】
図２３に示すように、デコード処理は、リーダ２０の電源投入により起動する制御回路４０およびメモリ３５によって開始され、ステップＳ２０１により初期設定処理が行われると、ステップＳ２０５により所定時間を経過した後（Ｓ２０５；Ｙｅｓ）、またはステップＳ２０９により復号キーを受信した後（Ｓ２０９；Ｙｅｓ）、ステップＳ２１３により画像データを取得する。そして、ステップＳ２１５，Ｓ２１７，Ｓ２１９，Ｓ２２１によりＱＲコードＱを画像認識してステップＳ２２３により誤り訂正可能であるか否かを判断して、誤り訂正可能であると判断できる場合には（Ｓ２２３；ＯＫ）、誤り訂正をした後、ステップＳ３００’により復号化処理（図１１）を行う。また、このステップＳ３００’の後は、ステップＳ３５０へ移行し、全ての二次元コードについて復号化処理を終了したか否かを判別する。その結果、全ての二次元コードについて復号化処理を終了した場合には、処理動作を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０２２２】
図２４に示すように、ステップＳ３００’の復号化処理では、ステップＳ３０１〜Ｓ３１３により終端位置（開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの）が見つかると（Ｓ３０５’；Ｙｅｓ）、ステップＳ３１５，Ｓ３１７，Ｓ３１９によりカウンタｎが指すｎ番目のデータコードを取得してそれが秘匿識別コードであるか否かをステップＳ３２１により判断することとなる。そして、秘匿識別コードであると判断すると（Ｓ３２１；Ｙｅｓ）、ステップＳ３２０へ移行し、関連コード情報が含まれているか否か判別を行う。この判別の結果、関連コード情報が含まれている場合には、その関連コード情報の取得処理を行った上で（Ｓ３２０´）、ステップＳ３２３へ移行する。一方、関連コード情報が含まれていない場合には、そのままステップＳ３２３へ移行する。Ｓ３２３〜Ｓ３３１により復号キーの適合を調べてその復号キーでＳ３３３により暗号化データを解読し、さらにステップＳ３３５により非公開データコードを復号する。
【０２２３】
なお、ステップＳ３２１により秘匿識別コードが配置されていると判断した場合には、例えば、ホストコンピュータＨＳＴに対して当該ＱＲコードＱには、秘匿識別コードが配置されている旨を通知するように構成してもよい。これにより、ホストコンピュータＨＳＴでは、終端識別コードよりも後方のデータコードが非公開データコードである旨を把握することが可能となる。また、本来、パディングコードしか配置されない終端識別コードの後のコード領域（コード領域の空き部分）に、パディングコード以外のもので非公開データコードではないもの（例えばデータ化けによりパディングコードに該当しなくなったもの）が配置されている場合には、非公開データコードである旨の情報がホストコンピュータＨＳＴに対して出力されないので、非公開データコード以外のものをデコードすることで生じ得る誤動作を防止することが可能となる。
【０２２４】
そして、ステップＳ３３６’によりこの復号した非公開データコードが最後の非公開データコードであるか否かを判断する。具体的には、例えば、図２２(C)に示すように、秘匿識別子の次には、その後に続く非公開データコードのデータ長が格納されているので、これに基づいて当該非公開データコードが最後の非公開データコードに該当するか否かを判断する。また、上述したように、最後の非公開データコードの後、つまり空き領域（コード領域の空き部分）には任意のコード（例えば00000000や11111111）が詰められているので、このような任意のコードの存在に基づいて当該非公開データコードが最後の非公開データコードに該当するか否かを判断する。
【０２２５】
ステップＳ３３６’により当該非公開データコードが最後の非公開データコードであると判断されない場合（最後の非公開データコードでない判断された場合）には（Ｓ３３６’；Ｎｏ）、ステップＳ３３７により、カウントｎが次のデータコードを指すように「ｎ＋１」をカウンタｎに設定する処理が行われた後、続くステップＳ３３９により、ｎ番目のデータコードを取得する処理が行われて、前述と同様にステップＳ３２３〜Ｓ３３１により復号キーの適合を調べる。
【０２２６】
これに対し、ステップＳ３３６’により当該非公開データコードが最後の非公開データコードであると判断された場合（Ｓ３３６’；Ｙｅｓ）、これ以上、当該ＱＲコードＱには非公開データコードが含まれていないことになるので、本復号化処理を終了し、全ての二次元コードについて復号化処理を終了したか否かを判別する（Ｓ３５０）。その結果、全ての二次元コードについて復号化処理を終了した場合には、ステップＳ３００を終えてデコード処理を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０２２７】
なお、ステップＳ３０３〜Ｓ３１３では、終端位置の前方に配置されて元来デコードされる通常のデータコード（開示データコード）を取得してデコードする処理が行われる。
【０２２８】
また、ステップＳ３２１では、ステップＳ３１９により取得されたｎ番目のデータコードが、秘匿識別コードであるか否かを判断する処理が行われる。
【０２２９】
さらに、ステップＳ３１９，Ｓ３２３〜Ｓ３３５では、終端位置の後方に配置されて、本来はデコードされないデータコード（非公開データコード）を取得してデコードする処理が行われる。
【０２３０】
以上説明したように、本第４実施形態に係るリーダ２０によると、本来、データコードが配置されない終端位置の後のコード領域（コード領域の空き部分）に、非公開データコードが配置されていても、この非公開データコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。よって、第３実施形態で説明したプリンタ１０により印刷されたＱＲコードＱを、本第４実施形態に係るリーダ２０によりデコードすることができる。
【０２３１】
なお、上述したデコード処理では、ステップＳ３２９によりｎ番目の復号キー検査データを取得するように構成したが、例えば、第１実施形態で図１６(E)を参照して説明したように第３実施形態でも同様に、復号キーそのものが非公開データコードに付加されている場合には（図２２(E)参照）、このステップＳ３２９に代えて、ｎ番目の復号キーを取得するように構成しても良い。これにより、非公開データコードの復号キー（復号できる鍵）を当該リーダ２０が持っていなくても、当該非公開データコードを復号して元の平文に戻すことができる。
【０２３２】
また、各非公開データコードごとに異なった暗号キーで暗号化されている場合であっても、各非公開データコードについてそれぞれの復号キーが付加されているときには、ステップＳ３２９に代えて、ｎ番目の復号キーを取得するように構成することで、非公開データコードの復号キーを当該リーダ２０が持っていなくても、それぞれの非公開データコードを復号して元の平文に戻すことが可能となる。
【０２３３】
さらに、上述したデコード処理では、ステップＳ３２９によりｎ番目の復号キー検査データを取得するように構成したが、例えば、第１実施形態で図１６(D)を参照して説明したように第３実施形態でも同様に、位置情報としての「開始桁」が非公開データコードに付加されている場合には（図２２(D)参照）、このステップＳ３２９に代えて、非公開データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて非公開データコードを復号（デコード）した非公開データをコード化される前のデータレコード中の位置関係に配置するように構成してもよい。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することが可能となる。
【０２３４】
［第５実施形態］
次に、本発明の第５実施形態に係るプリンタ１０による他のＱＲコードの生成処理を図２５〜図２７を参照して説明する。ここで説明する他のＱＲコードは、図２７(B)等に示すように、非公開データコードα，β等に所定の加工を施して空き領域に詰めるフォーマットを採るものである。
【０２３５】
なお、図２５に示すコード生成処理のフローチャートにおいて、既に説明したコード生成処理（図１５）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図２７に示すコードのフォーマット例についても、同様に、既に説明したフォーマット例（図１６）と実質的に同一のフォーマットについては詳細な説明を省略する。なお、図２７では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ表現するものとする。
【０２３６】
図２５に示すように、コード生成処理は、プリンタ１０の電源投入により起動するＭＰＵ１１およびメモリ１２によって開始され、ステップＳ１０１により初期設定処理が行われると、次にステップＳ１０３により印刷データを受信する。そして、ステップＳ１０７，Ｓ１１１を経て非公開データを受信すると、ステップＳ１１７により開示データや非公開データ等の各データを符号化した後、ステップＳ１２１’により開示データコードの後に終端識別コード等（開示データコードがなすコード列の終端位置を含む）を付加する。
【０２３７】
そして、印刷データに非公開データが含まれている場合には（Ｓ１２３；Ｙｅｓ）、Ｓ１２４に移行する。このステップＳ１２４においては、関連コード情報の付加が必要か否かを判別する。関連コード情報の付加が必要な場合、ステップＳ１２４´に移行し、関連コード情報の配置処理を行う。関連コード情報の付加が不要な場合には、ステップＳ１２５に移行する。ステップＳ１２５，Ｓ１２７により終端位置に続けて秘匿識別コードを付加等した後、ステップＳ１３１により非公開データコードを暗号化し、さらにステップＳ１３２により空き領域にパディングコードを付加する。この後にステップＳ５００による所定の加工処理が行われる。一方、印刷データに非公開データが含まれていない場合には（Ｓ１２３；Ｎｏ）、これらの各処理（Ｓ１２５，Ｓ１２７，Ｓ１３１，Ｓ１３２，Ｓ５００）を行うことなく、ステップＳ１３３に処理を移行する。
【０２３８】
ここで、ステップＳ５００による所定の加工処理を図２６を参照して説明する。図２６に示すように、所定の加工処理では、まずステップＳ５０１によりポインタｉをゼロクリアする処理が行われる。このポインタｉは、ステップＳ５０７〜Ｓ５１７による分散配置処理の対象となるビット位置を指すものであって、このクリア処理によって０ビット目からスタートする。
【０２３９】
ステップＳ５０３では、終端位置よりも後に存在する空き領域（図２７(A)〜(C)参照）、即ち、本来パディングコードで埋められる領域で誤り訂正コード語であるＲＳ符号の範囲を除いた領域のビット数ｎを求める処理が行われる。この処理は、後述のステップＳ５１３により疑似乱数Ｒを求める際に使用される定数である。
【０２４０】
続くステップＳ５０５では、暗号化データのビット数と復号キー検査データのビット数との和ｍ（図２７(D)，(E)参照）を求める処理が行われる。即ち、分散配置処理の対象となる非公開データコードのビット数を把握することにより、後述のステップＳ５１９による分散配置完了の可否判断を可能にしている。
【０２４１】
次のステップＳ５０７では、開示データコードと暗号化データとを２バイト単位で排他的論理和（ＥＸＯＲ）演算を行いその結果Ｓを求める処理が行われ、続くステップＳ５０９ではこのような演算結果ＳをステップＳ５１３による疑似乱数のシード値にセットする処理が行われる。このシード値は、所定の演算により疑似乱数を発生させるための種であり、このシード値が同じであれば、発生する乱数はまったく同じものとなる。すなわち、ステップＳ５１３による疑似乱数は、この演算結果Ｓの値によって発生する値およびその発生順が一義的に定まる。この点で、本加工処理は、開示データコードの内容に基づいて行われることとなる。
【０２４２】
ステップＳ５１１では、ポインタｉをインクリメント、つまり１だけカウントアップさせる処理が行われる。これにより、ステップＳ５１７等による分散配置処理の対象となるビットの位置（ポインタｉが指し示す位置）のカウントがアップされる。先の例では、０から１にカウントアップされることで、１ビット目が指し示めされる。
【０２４３】
続くステップＳ５１３により、疑似乱数Ｒを求める処理が行われる。この演算は、前述したシード値に基づいて所定の乱数発生アルゴリズムに従った情報処理を行うことにより、擬似的に乱数を発生させるもので、ここでは、１からｎ（ｎは、空き領域のビット数）までの範囲で、疑似乱数を発生させる。このため、例えば「Ｒ＝rand()mod ｎ＋１」なる演算式で演算される。
【０２４４】
なお、rand()は、シード値Ｓに対して疑似乱数を返す関数で、また、ｘmodｙは、ｘに対してモジュロー値ｙを求める関数である。即ち、先の演算式では、modの前の引数ｘ（rand()のこと）となる疑似乱数の値を、modの後の引数ｙ（ｎのこと）で割ったときの余りに、１を加えた値として疑似乱数Ｒが求められる。なお、ｎは、上述したように、空き領域のビット数である。
【０２４５】
このようにステップＳ５１３によって１〜ｎまでの疑似乱数Ｒが求められると、次のステップＳ５１５により当該疑似乱数Ｒが既に発生したものであるか否かの判断処理が行われる。つまり、疑似乱数Ｒとして同じ値が発生すると、次のステップＳ５１７による再配置処理においてビット値の上書きが行われることから、それ以前に同じビット位置に配置された値が破壊されてしまうことを防止するためである。このため、このステップＳ５１５により既に疑似乱数Ｒとして同じ値が発生していると判断された場合には（Ｓ５１５；Ｙｅｓ）、ステップＳ５１３に戻って再度、疑似乱数Ｒを求める。
【０２４６】
ステップＳ５１５により既に発生した疑似乱数Ｒと同じ値であると判断されない場合には（Ｓ５１５；Ｎｏ）、続くステップＳ５１７により暗号化データのｉビット目（ポインタｉが指し示すビットの位置）の値を空き領域のＲビット目にセットする処理、つまり配置処理が行われる。先の例では、１ビット目の値が空き領域のＲビット目にセットされる。これにより、本来１ビット目に位置している情報が、乱数により不規則的に発生するＲビット目に移動することとなる。
【０２４７】
続くステップＳ５１９では、ポインタｉの値が、分散配置処理の対象となる非公開データコードのビット数の終わり（最終ビット）に達しているか否かを判断する処理、つまり分散配置完了の可否判断が行われる。そして、ポインタｉと非公開データコードの全ビット数とが一致している場合には、非公開データコードの全てのビットが上述したステップＳ５０７〜５１７による分散配置処理が施されていることになるので（Ｓ５１９；Ｙｅｓ）、本加工処理を終了する。
【０２４８】
これに対して、ポインタｉと非公開データコードの全ビット数とが一致していない場合には、非公開データコードにはまだ分散配置処理が施されていないビットが残存することになるので（Ｓ５１９；Ｎｏ）、ステップＳ５１１によりポインタｉをカウントアップして再度ステップＳ５１３による疑似乱数発生処理を行う。
【０２４９】
このようにステップＳ５１３〜Ｓ５１７による処理を非公開データコードの全ビットに対して繰り返し行うことにより、本来、１ビット目、２ビット目、３ビット目、…、（ｎ−１）ビット目、ｎビット目というように順番に並ぶ各ビット情報が、不規則的に変動する疑似乱数Ｒに従った位置にＲビット目にそれぞれ移動してしまう。このため、ステップＳ５００による所定の加工処理が終了すると、例えば、図２７(B)に示すように、分散配置処理が施される前の非公開データコードα，β（図２７(A)）は、いずれもビット単位でバラバラに分解されて非公開データコード片として分散して再配置され、また、パディングコードも同様に分散配置処理よってビット単位でバラバラに分解されるため、非公開データコード片と混在した状態で、空き領域内に再配置されることとなる。
【０２５０】
これにより、暗号化されている非公開データコードがさらにスクランブルされてしまうので、セキュリティの強度を一層高めることができる。
【０２５１】
なお、本加工処理では、このようなステップＳ５０７〜Ｓ５１７による分散配置処理に代えて、例えば、ビット位置を変換可能なビット位置変換テーブル（変換テーブル）に基づくビットの並替えでもよい。具体的には、例えば、１ビット目を４ビット目に、２ビット目を１３ビット目に、３ビット目を１ビット目に、４ビット目を２ビット目に、５ビット目を１５ビット目に、６ビット目を１１ビット目に、７ビット目を８ビット目に、８ビット目を３ビット目に、９ビット目を１０ビット目に、１０ビット目を６ビット目に、１１ビット目を１２ビット目に、１２ビット目を５ビット目に、１３ビット目を９ビット目に、１４ビット目を１６ビット目に、１５ビット目を７ビット目に、１６ビット目を１４ビット目に、それぞれ位置を変換するビット位置変換テーブルを設けその変換規則に従ってビット位置を変換する。これにより、例えば、１６ビット構成のデータ「１００１０１１０１１０１０１１０」（９６Ｄ６ｈ）は、「０１０１１０１１０１１００００１」（５Ａ６１ｈ）に変換される。
【０２５２】
また、このようなビット位置変換テーブルを通すことによって、例えば、先の例では、１６進表記のデータ「９６Ｄ６ｈ」が、「５Ａ６１ｈ」に変換されることから、非公開データコードを構成するビットにより特定されるデータ値、そのものを所定のデータ値変換テーブル（変換テーブル）に基づいて変換する技術的思想として把握することができる。なお、このデータ値の変換は、例えば、入力データＸを２倍にしてから１を減算して出力Ｙ（＝Ｘ×２−１）するといった所定のデータ値変換式によっても可能である。
【０２５３】
さらに、例えば、ビット位置を所定ビット数だけＬＳＢ側に循環してシフトするように、循環シフトレジスタを通してもよい。先の１６ビット構成のデータ例では、「１００１０１１０１１０１０１１０」（９６Ｄ６ｈ）は、「０１１０１００１０１１０１１０１」（６９６Ｄｈ）に変換される。勿論、シフト量は４ビットに限られることはなく、１６ビット構成の場合には、１ビット〜１５ビットのうちのいずれでもよく、またシフト方向もＭＳＢ側であってもよい。なお、ここで例示した１６ビット構成の１６ビットは、上述した暗号化データのビット数と復号キー検査データのビット数の和ｍに相当するものである。なお、図２７(D)には、上述したような分散配置処理以外のビットの並替えやビット値の変換によるフォーマット例（暗号化データ＋復号キー検査データ）が図示されている（図２７(E)は、比較として第３実施形態のコード生成処理により生成された非公開データコードの構成例である。）。
【０２５４】
また、前述したステップＳ５０７では、開示データコードと暗号化データとを２バイト単位で排他的論理和（ＥＸＯＲ）演算を行いその結果Ｓを求め、それをステップＳ５０９により疑似乱数のシード値にセットしたが、開示データコードに代えて、当該ＱＲコードＱに付随する固有情報、例えば、誤り訂正レベル（Ｌ，Ｍ，Ｑ，Ｈ）や型番（１〜４０）を用いて暗号化データとを排他的論理和（ＥＸＯＲ）演算を行いその結果Ｓを求めても良い。なお、誤り訂正レベルや型番の詳細や仕様は、例えば、日本工業規格（ＪＩＳ）の二次元コードシンボル−ＱＲコード−基本仕様（JIS X 0510:2004）に従うようにしてもよい。
【０２５５】
ここで、図２５に戻ると、ステップＳ５００により所定の加工処理が終了した後は、続くステップＳ１３３により非公開データコードを付加され、さらにステップＳ１３４により非公開データコードが含まれているか否かを判断する処理が行われる。
【０２５６】
即ち、ステップＳ１３４では、非公開データコードが含まれている場合には（Ｓ１３４；Ｙｅｓ）、前述したステップＳ１３２によりパディングコードが既に付加されていることから、続くステップＳ１３５によるパディングコードの付加が不要となる。このため、このような場合には、ステップＳ１３５による処理をスキップしてステップＳ１３７に処理を移行する。これに対し、非公開データコードが含まれていない場合、つまり開示データコードのみの場合には（Ｓ１３４；Ｎｏ）、まだパディングコードが付加されていないため、続くステップＳ１３５によりパディングコードを付加してから、ステップＳ１３７に処理を移行することとなる。
【０２５７】
そして、ステップＳ１３７により、誤り訂正コード語であるＲＳ符号を付加する処理が行われると、図２７(A)〜(C)に示すフォーマットのデータコードが生成されるため、続くステップＳ１３９によりこのようなデータコードに基づいて各セルを生成して図１７に示して説明したデータブロックに配置される。
【０２５８】
以上説明したように、本第５実施形態に係るプリンタ１０によると、ＭＰＵ１１により実行されるコード生成処理によって生成されるＱＲコードＱでは、ステップＳ５００による加工処理により非公開データコードに所定の加工を施して、終端識別コードの後、または終端識別情報により特定される終端位置の後、に配置する。これにより、非公開データコードは、所定の加工を施されて当該非公開データコードの存在がわからないように加工されているので、たとえ終端識別コードの後等を読み取る試みがなされても、非公開データコードが配置されていることすらわからないので、セキュリティの強度を一層高めることが可能となる。
【０２５９】
なお、上述した第５実施形態では、ステップＳ１１３の後に、開示データおよび非公開データを並び替える処理（図１５に示すＳ１１５相当）を介在させていないが、印刷データに、第三者に開示するデータ（開示データ）と、第三者には秘密にして隠しておきたいデータ（非公開データ）と、が含まれており、これらがデータレコード中で混在している場合に、ステップＳ１１１により受信した「非公開データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと非公開データの集まりとに分ける処理を行ってもよい。これにより、例えば、ＰＣ１から送られてくる印刷データのレコードに、開示データＡ、非公開データα、開示データＢ、非公開データβの順に並ぶデータが含まれていた場合には、ステップＳ１１５により、開示データＡ、開示データＢ、非公開データα、非公開データβの順に並び替える処理を行うことにより、開示データと非公開データとがそれぞれまとめられるので、後のステップ１２１による終端識別コードの付加処理や、ステップＳ１２５による秘匿識別コードの付加処理等を容易に行うことができる。
【０２６０】
［第６実施形態］
次に、本発明の第６実施形態に係るリーダ２０による他のＱＲコードのデコード処理を図２８〜図３０を参照して説明する。なお、ここで説明する他のＱＲコードは、図２７(B)等を参照して前述したように、非公開データコードα，β等に所定の加工を施して空き領域に詰めるフォーマットを採るものである。
【０２６１】
なお、図２８に示すデコード処理のフローチャートにおいて、既に説明したデコード処理（図２３）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図２９に示す復号化処理のフローチャートにおいて、既に説明した復号化処理（図２４）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し以下での詳細な説明を省略する。
【０２６２】
図２８に示すように、デコード処理は、リーダ２０の電源投入により起動する制御回路４０およびメモリ３５によって開始され、ステップＳ２０１により初期設定処理が行われると、ステップＳ２０５により所定時間を経過した後（Ｓ２０５；Ｙｅｓ）、またはステップＳ２０９により復号キーを受信した後（Ｓ２０９；Ｙｅｓ）、ステップＳ２１３により画像データを取得する。そして、ステップＳ２１５，Ｓ２１７，Ｓ２１９，Ｓ２２１によりＱＲコードＱを画像認識してステップＳ２２３により誤り訂正可能であるか否かを判断して、誤り訂正可能であると判断できる場合には（Ｓ２２３；ＯＫ）、誤り訂正をした後、ステップＳ３００”により復号化処理（図２９）を行う。その後、全ての二次元コードについて復号化処理を終了したか否かを判別する（Ｓ３５０）。その結果、全ての二次元コードについて復号化処理を終了した場合には、ステップＳ３００を終えてデコード処理を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。
【０２６３】
図２９に示すように、ステップＳ３００”の復号化処理では、ステップＳ３０１〜Ｓ３１３により終端位置（開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの）が見つかると（Ｓ３０５’；Ｙｅｓ）、ステップＳ３１５，Ｓ３１７，Ｓ３１９によりカウンタｎが指すｎ番目のデータコードを取得してそれが秘匿識別コードであるか否かをステップＳ３２１により判断する。そして、秘匿識別コードであると判断すると（Ｓ３２１；Ｙｅｓ）、ステップＳ３２０へ移行し、関連コード情報が含まれているか否か判別を行う。この判別の結果、関連コード情報が含まれている場合には、その関連コード情報の取得処理を行った上で（Ｓ３２０´）、ステップＳ３２３へ移行する。一方、関連コード情報が含まれていない場合には、そのままステップＳ３２３へ移行する。続くステップＳ３２３によりコード数ｊを取得した後、ステップＳ６００による所定の抽出処理が行われる。
【０２６４】
なお、ステップＳ３２１により秘匿識別コードが配置されていると判断した場合には、例えば、ホストコンピュータＨＳＴに対して当該ＱＲコードＱには、秘匿識別コードが配置されている旨を通知するように構成してもよい。これにより、ホストコンピュータＨＳＴでは、終端識別コードよりも後方のデータコードが非公開データコードである旨を把握することが可能となる。また、本来、パディングコードしか配置されない終端識別コードの後のコード領域（コード領域の空き部分）に、パディングコード以外のもので非公開データコードではないもの（例えばデータ化けによりパディングコードに該当しなくなったもの）が配置されている場合には、非公開データコードである旨の情報がホストコンピュータＨＳＴに対して出力されないので、非公開データコード以外のものをデコードすることで生じ得る誤動作を防止することが可能となる。
【０２６５】
ここで、ステップＳ６００による所定の抽出処理を図３０を参照して説明する。なお、図３０に示す所定の抽出処理は、既に第５実施形態で説明した所定の加工処理（図２６）と情報処理の内容が類似しているので、所定の加工処理を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し以下での詳細な説明を省略する。
【０２６６】
図３０に示すように、所定の抽出処理では、ステップＳ５０１によりポインタｉをゼロクリアする処理、ステップＳ５０３により終端位置よりも後に存在する空き領域のビット数ｎ（図２７(A)〜(C)参照）を求める処理、ステップＳ５０５により暗号化データのビット数と復号キー検査データのビット数との和ｍ（図２７(D)，(E)参照）を求める処理、ステップＳ５０７により開示データコードと暗号化データとを２バイト単位で排他的論理和（ＥＸＯＲ）演算を行いその結果Ｓを求める処理、がそれぞれ順番に行われ、続くステップＳ５０９により疑似乱数のシード値にセットする処理が行われる。
【０２６７】
このステップＳ５０９によりセットされるシード値は、第５実施形態で説明したように、所定の演算により疑似乱数を発生させるための種であり、このシード値が同じであれば、発生する乱数はまったく同一のものとなる。このため、同一のＱＲコードＱであれば、所定の加工処理（図２６）のシード値と本抽出処理のシード値とは、同じ値となり、次のステップＳ５１３による疑似乱数の値およびその発生順も同じになる。
【０２６８】
ステップＳ５１３により疑似乱数Ｒを求める処理が行われ、ステップＳ５１５により既に発生した疑似乱数Ｒと同じ値であると判断されない場合には（Ｓ５１５；Ｎｏ）、続くステップＳ６１７により、空き領域のＲビット目の値を暗号化データバッファのｉビット目（ポインタｉが指し示すビットの位置）にセットする処理が行われる。
【０２６９】
即ち、第５実施形態の所定の加工処理では、ステップＳ５１７により、暗号化データのｉビット目（ポインタｉが指し示すビットの位置）の値を空き領域のＲビット目にセットする処理を行うことによって、例えば、１ビット目の値を空き領域のＲビット目にセットしたが、本抽出処理のステップＳ６１７では、これとは逆に、空き領域のＲビット目の値を暗号化データバッファのｉビット目（ポインタｉが指し示すビットの位置）にセットし、例えば、空き領域のＲビット目の値を暗号化データバッファの１ビット目にセットする。
【０２７０】
これにより、第５実施形態の所定の加工処理により空き領域のＲビット目にセットされた暗号化データのｉビット目の値は、本抽出処理によって、暗号化データバッファのｉビット目にセットされるので、ビット単位でバラバラに分解された非公開データコード片等を元通りに復元することができる。つまり、ステップＳ６１７等では集約復元処理ができる。
【０２７１】
そして、ステップＳ５１９により、ポインタｉと非公開データコードの全ビット数とが一致している場合には、非公開データコードの全てのビットが前述したステップＳ５０７〜５１７による集約復元処理が施されていることになるので（Ｓ５１９；Ｙｅｓ）、本加工処理を終了する。一方、ポインタｉと非公開データコードの全ビット数とが一致していない場合には、非公開データコードにはまだ復元処理が施されていないビットが残存することになるので（Ｓ５１９；Ｎｏ）、ステップＳ５１１によりポインタｉをカウントアップして再度ステップＳ５１３による疑似乱数発生処理を行う。
【０２７２】
ここで、図２９に戻ると、ステップＳ６００により所定の抽出処理が終了した後、ステップＳ３２５により文字数（ｊ）分だけデータコードを取得し、続くステップＳ３２９’によりｊ番目の復号キー検査データ（鍵特定情報）を取得する。
【０２７３】
そして、ステップＳ３２９’により取得した復号キー検査データに基づいて、先のステップＳ２０９によりホストコンピュータＨＳＴから受信した復号キーがこのｊ番目の非公開データコードの暗号化データを解読する鍵として適合しているか否かの判断をステップＳ３３１により行う。当該復号キーが適合していると判断した場合には（Ｓ３３１；Ｙｅｓ）、続くステップＳ３３３により暗号化データを解読する。
【０２７４】
一方、ステップＳ３３１に当該復号キーが適合していると判断できない場合には（Ｓ３３１；Ｎｏ）、当該ｎ番目の非公開データコードを解読することなく、本復号化処理を終了する。ステップＳ３３５により、非公開データコードを復号する処理が行われると、図２８に示すステップＳ３００”を終え、全ての二次元コードについて復号化処理を終了したか否かを判別する（Ｓ３５０）。その結果、全ての二次元コードについて復号化処理を終了した場合には、ステップＳ３００を終えてデコード処理を終了させる。一方、全ての二次元コードについて復号化処理を終了していない場合には、再度ステップＳ２０１に移行し、これ以降の処理動作を繰り返し実行する。てデコード処理を終了する。
【０２７５】
なお、本抽出処理では、このようなステップＳ５０７〜Ｓ６１７による集約復元処理に代えて、例えば、ビット位置を逆方向に変換可能なビット位置逆変換テーブルに基づくビットの並替えでもよい。具体的には、例えば、第５実施形態で説明したビット位置逆変換テーブルにおいては、１ビット目を３ビット目に、２ビット目を４ビット目に、３ビット目を８ビット目に、４ビット目を１ビット目に、５ビット目を１２ビット目に、６ビット目を１０ビット目に、７ビット目を１５ビット目に、８ビット目を７ビット目に、９ビット目を１３ビット目に、１０ビット目を９ビット目に、１１ビット目を６ビット目に、１２ビット目を１１ビット目に、１３ビット目を２ビット目に、１４ビット目を１６ビット目に、１５ビット目を５ビット目に、１６ビット目を１４ビット目に、それぞれ位置を変換するビット位置逆変換テーブルを設けその逆変換規則に従ってビット位置を変換する。これにより、例えば、１６ビット構成のデータ「０１０１１０１１０１１００００１」（５Ａ６１ｈ）は、元の「１００１０１１０１１０１０１１０」（９６Ｄ６ｈ）に変換される。
【０２７６】
また、このようなビット位置逆変換テーブルを通すことに代えて、非公開データコードを構成するビットにより特定されるデータ値を逆方向に変換可能なデータ値逆変換テーブルを用いても良い。例えば、第５実施形態で説明したデータ値変換テーブルの例においては、１６進表記のデータ「９６Ｄ６ｈ」が「５Ａ６１ｈ」に変換されることから、これを逆方向の、「５Ａ６１ｈ」を「９６Ｄ６ｈ」に逆変換可能な所定のデータ値逆変換テーブルに基づいて変換することで、復元処理を行うことができる。
【０２７７】
さらに、このようなビット位置逆変換テーブルを通すことに代えて、非公開データコードを構成するビットにより特定されるデータ値を逆方向に変換可能なデータ値逆変換式を用いても良い。例えば、第５実施形態で説明した所定のデータ値変換式の例においては、入力データＸを２倍にしてから１を減算して出力Ｙ（＝Ｘ×２−１）しているので、これとは逆に、入力データＸ’に１を加算した結果を２で除算して出力Ｙ’（＝（Ｘ’＋１）／２）することで、復元処理ができる。
【０２７８】
さらに、第５実施形態で説明した循環シフトレジスタを通す場合に対しては、所定の加工処理とは逆方向にシフトする循環シフトレジスタを復元処理に用いることで、復元処理ができる。例えば、先の１６ビット構成のデータ例では、所定の加工処理においてＬＳＢ側に４ビットシフトさせることで「１００１０１１０１１０１０１１０」（９６Ｄ６ｈ）を「０１１０１００１０１１０１１０１」（６９６Ｄｈ）に変換したので、これを、復元処理では、逆方向のＭＳＢ側に４ビットシフトさせることで、「１００１０１１０１１０１０１１０」（９６Ｄ６ｈ）というように元に戻すことができる。
【０２７９】
なお、ステップＳ５０９によりセットされる疑似乱数のシード値については、第５実施形態と同様に、当該ＱＲコードＱに付随する固有情報、例えば、誤り訂正レベル（Ｌ，Ｍ，Ｑ，Ｈ）や型番（１〜４０）を用いて暗号化データとを排他的論理和（ＥＸＯＲ）演算を行いその結果Ｓを求めてもよい。なお、誤り訂正レベルや型番の詳細や仕様は、例えば、日本工業規格（ＪＩＳ）の二次元コードシンボル−ＱＲコード−基本仕様（JIS X 0510:2004）に従う。
【０２８０】
なお、ステップＳ３０３〜Ｓ３１３では、終端位置の前方に配置されて元来デコードされる通常のデータコード（開示データコード）を取得してデコードする処理が行われる。
【０２８１】
また、ステップＳ３２１では、ステップＳ３１９により取得されたｎ番目のデータコードが、秘匿識別コードであるか否かを判断する処理が行われる。
【０２８２】
さらに、ステップＳ３１９，Ｓ３２３〜Ｓ３３５では、終端位置の後方に配置されて、本来はデコードされないデータコード（非公開データコード）を取得してデコードする処理が行われる。
【０２８３】
以上説明したように、本第６実施形態に係るリーダ２０によると、本来、データコードが配置されない終端識別コードの後のコード領域（コード領域の空き部分）等に、所定の加工が施された非公開データコードが配置されていても、この非公開データコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。
【０２８４】
また、上述したデコード処理では、ステップＳ３２９’によりｊ番目の復号キー検査データを取得するように構成したが、例えば、第５実施形態で述べたように、ステップＳ１１３の後に、開示データおよび非公開データを並び替える処理（図１５に示すＳ１１５相当）を介在させて、ステップＳ１１１により受信した「非公開データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと非公開データの集まりとに分ける処理を行った場合には、ステップＳ３２９’に代えて、非公開データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて非公開データコードを復号（デコード）した非公開データをコード化される前のデータレコード中の位置関係に配置するように構成してもよい。
【０２８５】
これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することが可能となる。この場合、「非公開データコードから「開始桁」を分離する」処理を実行する制御回路４０等は、「位置情報分離手段」に相当する。また、「この分離された「開始桁」に基づいて非公開データコードを復号（デコード）した非公開データをコード化される前のデータレコード中の位置関係に配置する」処理を実行する制御回路４０等は、「データ配置手段」に相当する。
【０２８６】
［第７実施形態］
次に、本発明の第７実施形態に係るリーダ２０によるＱＲコードＱのデコード処理を図３１および図３２を参照して説明する。なお、ここで説明するＱＲコードＱは、これまで第１実施形態〜第５実施形態において説明した各非公開データコードを含むＱＲコードを意味する。
【０２８７】
なお、本第７実施形態では、デコード処理のフローチャートは図示しないが、図１９、図２３や図２８に示されるステップＳ３００，Ｓ３００’，Ｓ３００”の各復号処理を図３１に示す復号処理に置き換えることで、これらのデコード処理を本第７実施形態に適用することが可能となる。また、図３１に示す復号化処理のフローチャートにおいて、既に説明した復号化処理（図２４）を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し以下での詳細な説明を省略する。
【０２８８】
図３１に示すように、復号化処理は、Ｓ３０５’により終端位置（開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの）でないと判断すると（Ｓ３０５’；Ｎｏ）、ステップＳ３０７，Ｓ３０９により文字数ｉ分のデータコードを取得した後、ステップＳ３１０により開示データコードをデコードするか否かを判断する。
【０２８９】
即ち、このステップＳ３１０では、後で図３２を参照して説明する「読取フラグＳ」の状態（(1) 開示データコードだけをデコードするフラグＳ＝１、(2) 非公開データコードだけをデコードするフラグＳ＝２、(3) 開示データコードと非公開データコードの双方をデータコードするフラグＳ＝０）に基づいて、開示データコードを復号する情報が当該読取フラグＳにセットされているか否かを判断する。この読取フラグＳは、例えば、リーダ２０を構成するメモリ３５の所定領域またはレジスタに設定されるもので、後述する読取フラグ設定処理（図３２参照）により設定される。
【０２９０】
そして、(1) 開示データコードだけをデコードするフラグＳ＝１、または(3) 開示データコードと非公開データコードの双方をデータコードするフラグＳ＝０が読取フラグにセットされている場合）には（Ｓ３１０；Ｙｅｓ）、続くステップＳ３１１により開示データコードを復号する処理を行い、(2) 非公開データコードだけをデコードするフラグＳ＝２が読取フラグにセットされている場合には（Ｓ３１０；Ｎｏ）、続くステップＳ３１１により開示データコードを復号する処理をスキップして、ステップＳ３１３，Ｓ３０３等により次のデータコードを取得する処理を行う。
【０２９１】
一方、ステップＳ３０１〜Ｓ３１３により終端位置（開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの）が見つかると（Ｓ３０５’；Ｙｅｓ）、ステップＳ３１４により非公開データコードをデコードするか否かを判断する。
【０２９２】
即ち、このステップＳ３１４は、前述したステップＳ３１０とは反対に、非公開データコードをデコードするか否かを読取フラグＳに基づいて判断する。つまり、(2) 非公開データコードだけをデコードするフラグＳ＝２、または(3) 開示データコードと非公開データコードの双方をデータコードするフラグＳ＝０が読取フラグにセットされている場合には（Ｓ３１４；Ｙｅｓ）、続くステップＳ３１５〜Ｓ３３５により非公開データコードを復号する処理を行い、(1) 開示データコードだけをデコードするフラグＳ＝１が読取フラグにセットされている場合には（Ｓ３１４；Ｎｏ）、本復号処理を終了する。
【０２９３】
ここで、読取フラグ設定処理を図３２を参照して説明する。なお、この読取フラグ設定処理は、例えば、当該リーダ２０を構成するハードウェアの各種設定状態（例えば、ビープ音のオンオフ、液晶表示器４６のバックライトのオンオフ等）を変更、解除または初期化する場合に起動されるメンテナンスプログラムに含まれるもので、通常のデコード処理（図１９、図２３や図２８）には含まれないものである。なおここでは、メンテナンスプログラムによるメンテナンス処理のフローチャートおよびその説明は省略する。
【０２９４】
図３２に示すように、読取フラグ設定処理では、まずステップＳ９０１により読取フラグＳに０（Ｓ＝０）をセットする等の所定の初期化処理を行った後、ステップＳ９０３によりタイマー値をクリアする処理が行われる。このタイマーは、次のステップＳ９０５により所定時間を経過したか否かを判断するためにカウントされるものである。
【０２９５】
そして、ステップＳ９０５により所定時間を経過していないと判断した場合には（Ｓ９０５；Ｎｏ）、続くステップＳ９０７によりコマンドを受信したか否かを判断する処理が行われる。このコマンドは、例えば、前述したメンテナンスプログラムにおいて、ホストコンピュータＨＳＴから受信したり、当該リーダ２０を構成する操作スイッチ４２から入力されたりするものである。
【０２９６】
ステップＳ９０７によりコマンドを受信したと判断しない（受信していないと判断した）場合には（Ｓ９０７；Ｎｏ）、ステップＳ９０５により再び所定時間を経過しているか否かを判断する。これに対し、コマンドを受信したと判断した場合には（Ｓ９０７；Ｙｅｓ）、続くステップＳ９０９により受信したコマンドの内容を判断する処理が行われることとなる。
【０２９７】
即ち、ステップＳ９０９により、当該コマンドが(1) 開示データコードだけをデコードするものである場合には、ステップＳ９１１により読取フラグＳに「１」をセットし（Ｓ＝１）、当該コマンドが(2) 非公開データコードだけをデコードするものである場合には、ステップＳ９１３により読取フラグＳに「２」をセットする（Ｓ＝２）。これに対し、当該コマンドがこれらのいずれでもない場合には、読取フラグＳを「０」のままにして、本読取フラグ設定処理を終了する。つまり、この場合には、前述したステップＳ９０１によりデフォルトで設定されている「０」をそのまま引き継ぐことで、(3) 開示データコードと非公開データコードの双方をデータコードする読取フラグＳを維持する。
【０２９８】
ステップＳ９１１，Ｓ９１３により読取フラグがセットされると、本読取フラグ設定処理を終了する。
【０２９９】
以上説明したように、本第７実施形態に係るリーダ２０によると、当該リーダ２０の使用者は、開示データコードをデコードするか、非公開データコードをデコードするか、の少なくとも一方を選択することができるので、例えば、非公開データコードは読んでも開示データコードを読みたくない場合や、それとは逆に、開示データコードは読んでも非公開データコードを読みたくない場合に、不要なデコード処理によるデコード時間を削減することができる。したがって、デコード時間を短縮することが可能となる。
【０３００】
なお、上述した実施形態のなかには、例えば、第１実施形態（図１５）や第３実施形態（図２１）で説明したように、コード生成処理のステップＳ１１９において誤り訂正コード語であるＲＳ符号を生成しているものがあるが、必ずしもこのステップＳ１１９で誤り訂正コード語であるＲＳ符号を生成する必要はなく、例えば、当該ステップＳ１１９に相当する処理（ＲＳ符号生成処理）を、誤り訂正コード語であるＲＳ符号を付加する処理（ステップＳ１３７）とともにまたはその前段階で実行するように、コード生成処理の流れを構成するようにしてもよい。
【０３０１】
以上、ＱＲコードを例にとり、第１実施形態〜第７実施形態について関連二次元コードを適用する例について説明をした。
【０３０２】
このようなかかる場合には、第１実施形態〜第７実施形態において説明したＱＲコードの生成方法と同様に、二次元コードとしてのＱＲコードを生成するが、これを複数回実行するその結果、複数の関連二次元コードが生成されることとなる。このとき、図３３（Ｄ）に示すように非公開データコードを配置する際に、上述した関連コード情報を当該非公開データコードに含ませる。
【０３０３】
関連コード情報が非公開データコードに含まれているため(つまり、関連コード情報が隠蔽されているため)、標準デコーダで関連ＱＲコードを読み込んだ際に、標準デコーダは当該ＱＲコードが関連ＱＲコードであることを把握することができない(言い換えれば、通常のＱＲコードと認識する)。そして、非公開データコードを取り扱うことができる拡張デコーダ７０で読み込むことにより、初めて当該ＱＲコードが関連ＱＲコードであることを認識することが可能となる。
【０３０４】
第１実施形態〜第７実施形態において説明したＱＲコードについて関連二次元コードを適用する場合には、二次元コードを評価する際も同様である。前記関連二次元コードから前記非公開データコードを抽出する方法は、上述の通りである。このとき前記非公開データコードから前記関連コード情報を取り出す。関連コード情報の取り出し方法も上述の通りである。このような関連コード情報取り出し処理を、読み取った前記複数の関連二次元コードの各々に対して実行する。
【０３０５】
関連二次元コードの生成は、複数回行えばよいことから３回以上にわたって行うことで３つの関連二次元コードの生成が可能となる。その結果、３枚以上の関連二次元コードを互いに関連付けられていることを確認するアプリケーションに適用することが可能となる。
【０３０６】
次に複数の関連二次元コードの各々から取得された前記関連コード情報に基づいて、前記複数の関連二次元コードが互いに関連付けられていることを評価する。この評価方法も上述の通りであるため以下での説明を省略する。
【０３０７】
また、図３３（Ｅ）に示すように関連コード情報は、終端子と秘匿識別子の間に配置してもよいし、秘匿識別子の中に配置してもよい。また、図３３（Ｆ）に示すように関連コード情報は、秘匿識別子とデータ長情報の間に配置してもよいし、データ長情報の中に配置してもよい。つまり、この関連コード情報を非公開データコードに含ませる代わりに前記秘匿識別コード内又はその前か後、或いはデータ長情報内又はその前か後に含ませるようにしてもよい。
【０３０８】
このとき、秘匿識別子は、必須であるが、データ長情報は省略するようにしてもよい。データ長情報を省略する場合には、図３３（Ｅ）に示すように、データ長情報自体を設けない構成となる。
【０３０９】
かかる場合も上述した処理動作を同様に実行することで上述した本発明所期の効果を得ることができることは勿論である。
【符号の説明】
【０３１０】
１  パソコン
１０  ＱＲコードプリンタ
１１  ＭＰＵ
１２、３５  メモリ
２０  ＱＲコードリーダ（二次元コードの読取装置）
４０  制御回路
【図１】
2020086893.tif 000003
【図２】
2020086893.tif 000004
【図３】
2020086893.tif 000005
【図４】
2020086893.tif 000006
【図５】
2020086893.tif 000007
【図６】
2020086893.tif 000008
【図７】
2020086893.tif 000009
【図８】
2020086893.tif 000010
【図９】
2020086893.tif 000011
【図１０】
2020086893.tif 000012
【図１１】
2020086893.tif 000013
【図１２】
2020086893.tif 000014
【図１３】
2020086893.tif 000015
【図１４】
2020086893.tif 000016
【図１５】
2020086893.tif 000017
【図１６】
2020086893.tif 000018
【図１７】
2020086893.tif 000019
【図１８】
2020086893.tif 000020
【図１９】
2020086893.tif 000021
【図２０】
2020086893.tif 000022
【図２１】
2020086893.tif 000023
【図２２】
2020086893.tif 000024
【図２３】
2020086893.tif 000025
【図２４】
2020086893.tif 000026
【図２５】
2020086893.tif 000027
【図２６】
2020086893.tif 000028
【図２７】
2020086893.tif 000029
【図２８】
2020086893.tif 000030
【図２９】
2020086893.tif 000031
【図３０】
2020086893.tif 000032
【図３１】
2020086893.tif 000033
【図３２】
2020086893.tif 000034
【図３３】
2020086893.tif 000035