(57)【要約】【課題】  二次元コードの誤り訂正能力を維持したまま、二次元コードの読取時に出力すべきデータ以外に、より多くの量のデータを、二次元コード内に記述できるようにする。【解決手段】  第１規格に従って有効な情報である出力データ（第１情報）３１０をコードする第１コード記号と、上記第１規格に従って有効な情報の終端を示す終端パターン３２０と、上記第１規格に従って有効な情報を配置可能な領域内で終端パターン３２０よりも後ろに配置され、上記第１規格と異なる第２規格に従って有効な情報である非出力データ（第２情報）３３０をコードする第２コード記号とを含む二次元コードを提供する。【選択図】        図１
2019148929.tif 000002
【特許請求の範囲】
【請求項１】
第１規格に従って有効な情報をコードする第１コード記号と、
前記第１規格に従って有効な情報の終端を示す終端パターンと、
前記第１規格に従って有効な情報を配置可能な領域内で前記終端パターンよりも後ろに配置され、前記第１規格と異なる第２規格に従って有効な情報をコードする第２コード記号とを含むことを特徴とする二次元コード。
【請求項２】
請求項１に記載の二次元コードであって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記第２規格は、前記終端パターンより後ろの所定範囲に配置する情報が、前記無効な情報と一致しないように、情報の符号化規則を規定することを特徴とする二次元コード。
【請求項３】
請求項１に記載の二次元コードであって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記二次元コードにおいて、前記終端パターンより後ろの所定範囲に配置された情報が、前記無効な情報と一致しないことを特徴とする二次元コード。
【請求項４】
請求項２又は３に記載の二次元コードであって、
前記所定範囲は、前記終端パターンの直後の所定数のビットであることを特徴とする二次元コード。
【請求項５】
請求項１乃至４のいずれか一項に記載の二次元コードであって、
前記第１コード記号及び前記第２コード記号の誤りを訂正するための、前記第１規格に従った誤り訂正データをコードする第３コード記号を含むことを特徴とする二次元コード。
【請求項６】
入力手段により第１情報及び第２情報の入力を受け付ける手段と、
第１規格に従って前記第１情報を有効な情報としてコードする第１コード記号と、前記第１規格に従って有効な情報の終端を示す終端パターンと、前記第１規格に従って有効な情報を配置可能な領域内で前記終端パターンよりも後ろに配置され、前記第１規格と異なる第２規格に従って前記第２情報をコードする第２コード記号とを含む二次元コードを出力する手段とを備える二次元コード出力システム。
【請求項７】
請求項６に記載の二次元コード出力システムであって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記第２規格は、前記終端パターンより後ろの所定範囲に配置する情報が、前記無効な情報と一致しないように、情報の符号化規則を規定することを特徴とする二次元コード出力システム。
【請求項８】
請求項６に記載の二次元コード出力システムであって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
出力する前記二次元コードは、前記終端パターンより後ろの所定範囲に配置された情報が、前記無効な情報と一致しないことを特徴とする二次元コード出力システム。
【請求項９】
請求項７又は８に記載の二次元コード出力システムであって、
前記所定範囲は、前記終端パターンの直後の所定数のビットであることを特徴とする二次元コード出力システム。
【請求項１０】
請求項６至９のいずれか一項に記載の二次元コード出力システムであって、
出力する前記二次元コードが、前記第１コード記号及び前記第２コード記号の誤りを訂正するための、前記第１規格に従った誤り訂正データをコードする第３コード記号を含むことを特徴とする二次元コード出力システム。
【請求項１１】
入力手段により第１情報及び第２情報の入力を受け付ける手順と、
第１規格に従って前記第１情報を有効な情報としてコードする第１コード記号と、前記第１規格に従って有効な情報の終端を示す終端パターンと、前記第１規格に従って有効な情報を配置可能な領域内で前記終端パターンよりも後ろに配置され、前記第１規格と異なる第２規格に従って前記第２情報をコードする第２コード記号とを含む二次元コードを出力する手順とを備える二次元コード出力方法。
【請求項１２】
請求項１１に記載の二次元コード出力方法であって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記第２規格は、前記終端パターンより後ろの所定範囲に配置する情報が、前記無効な情報と一致しないように、情報の符号化規則を規定することを特徴とする二次元コード出力方法。
【請求項１３】
請求項１１に記載の二次元コード出力方法であって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
出力する前記二次元コードは、前記終端パターンより後ろの所定範囲に配置された情報が、前記無効な情報と一致しないことを特徴とする二次元コード出力方法。
【請求項１４】
請求項１２又は１３に記載の二次元コード出力方法であって、
前記所定範囲は、前記終端パターンの直後の所定数のビットであることを特徴とする二次元コード出力方法。
【請求項１５】
請求項１１至１４のいずれか一項に記載の二次元コード出力方法であって、
出力する前記二次元コードが、前記第１コード記号及び前記第２コード記号の誤りを訂正するための、前記第１規格に従った誤り訂正データをコードする第３コード記号を含むことを特徴とする二次元コード出力方法。
【請求項１６】
１のコンピュータに、あるいは複数のコンピュータを協働させて、請求項１１乃至１５のいずれか一項に記載の二次元コード出力方法を実行させるためのプログラム。
【請求項１７】
読取手段により二次元コードを読み取って、有効な情報の終端を示す終端パターンの規定を含む第１規格に従ってデコードするデコード手段と、
前記デコード手段によるデコード結果のうち前記第１規格に従った有効な情報を第１情報として取得する第１取得手段と、
前記デコード手段によるデコード結果のうち前記終端パターンより後ろの情報を、前記第１規格と異なる第２規格に従って解析し、該第２規格に従った有効な情報を第２情報として取得する第２取得手段とを備えることを特徴とする二次元コード読取システム。
【請求項１８】
請求項１７に記載の二次元コード読取システムであって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記第２取得手段は、前記終端パターンより後ろの所定範囲に配置された情報が、前記無効な情報と一致するか否か判断し、一致しない場合に、前記第２規格に従った有効な情報を第２情報として取得することを特徴とする二次元コード読取システム。
【請求項１９】
請求項１８に記載の二次元コード読取システムであって、
前記所定範囲は、前記終端パターンの直後の所定数のビットであることを特徴とする二次元コード読取システム。
【請求項２０】
請求項１７乃至１９のいずれか一項に記載の二次元コード読取システムであって、
前記第１情報と前記第２情報のうち、前記第１情報のみを外部へ出力することを特徴とする二次元コード読取システム。
【請求項２１】
請求項１７乃至２０のいずれか一項に記載の二次元コード読取システムであって、
前記デコード手段によるデコード結果に含まれる誤り訂正データを用いて、該デコード結果の、少なくとも前記第１情報を記述する領域と前記第２情報を記述する領域とを含む領域に対する誤り訂正を行う誤り訂正手段を備え、
前記第１取得手段は、該誤り訂正後のデコード結果から前記第１情報を取得し、
前記第２取得手段は、該誤り訂正後のデコード結果から前記第２情報を取得することを特徴とする二次元コード読取システム。
【請求項２２】
読取手段により二次元コードを読み取って、有効な情報の終端を示す終端パターンの規定を含む第１規格に従ってデコードするデコード手順と、
前記デコード手順によるデコード結果のうち前記第１規格に従った有効な情報を第１情報として取得する第１取得手順と、
前記デコード手順によるデコード結果のうち前記終端パターンより後ろの情報を、前記第１規格と異なる第２規格に従って解析し、該第２規格に従った有効な情報を第２情報として取得する第２取得手順とを備えることを特徴とする二次元コード読取方法。
【請求項２３】
請求項２２に記載の二次元コード読取方法であって、
前記第１規格は、前記終端パターンの後ろに配置する無効な情報のパターンを規定し、
前記第２取得手順は、前記終端パターンより後ろの所定範囲に配置された情報が、前記無効な情報と一致するか否か判断し、一致しない場合に、前記第２規格に従った有効な情報を第２情報として取得する手順であることを特徴とする二次元コード読取方法。
【請求項２４】
請求項２３に記載の二次元コード読取方法であって、
前記所定範囲は、前記終端パターンの直後の所定数のビットであることを特徴とする二次元コード読取方法。
【請求項２５】
請求項２２乃至２４のいずれか一項に記載の二次元コード読取方法であって、
前記第１情報と前記第２情報のうち、前記第１情報のみを外部へ出力する手順をさらに備えることを特徴とする二次元コード読取方法。
【請求項２６】
請求項２２乃至２５のいずれか一項に記載の二次元コード読取方法であって、
前記デコード手順によるデコード結果に含まれる誤り訂正データを用いて、該デコード結果の、少なくとも前記第１情報を記述する領域と前記第２情報を記述する領域とを含む領域に対する誤り訂正を行う誤り訂正手順を備え、
前記第１取得手順は、該誤り訂正後のデコード結果から前記第１情報を取得する手順であり、
前記第２取得手順は、該誤り訂正後のデコード結果から前記第２情報を取得する手順であることを特徴とする二次元コード読取方法。
【請求項２７】
１のコンピュータに、あるいは複数のコンピュータを協働させて、請求項２２乃至２６のいずれか一項に記載の二次元コード読取方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報をコード記号により表した二次元コード、二次元コードを出力するための二次元コード出力システム及び二次元コード出力方法、二次元コードを読み取るための二次元コード読取システム及び二次元コード読取方法、および、１のコンピュータに、あるいは複数のコンピュータを協働させて、上記の二次元コード出力方法又は二次元コード読取方法を実行させるためのプログラムに関する。
【背景技術】
【０００２】
従来から、種々の情報をコード記号により表現した、図１４に示すような二次元コードが知られている。この二次元コードは、二値のビット列を光反射率の異なる白モジュールと黒モジュールの配列により表現したものであり、そのビット列は、例えば図１５に示す形式で情報を表現するものである。
【０００３】
図１５に示すビット列（符号化データ）５００は、出力データ５１０、終端パターン５２０、埋め草データ５３０、誤り訂正データ５４０を含む。
これらのうち出力データ５１０は、二次元コードの読取結果として出力される有効な情報であり、複数のセグメントを備える。各セグメントは、二次元コードの規格において定義され、セグメントのモード（当該セグメントに記述されるデータの種類及びフォーマット）を指定する指示子と、セグメントのデータ本体を含む。
【０００４】
図１６に、二次元コードにおいて使用されるモードの種類の例を示す。図１６に示すように、モードにはデータが固定長のものと可変長のものがあり、可変長のモードにおいては、図１７に示すように、セグメント内にデータ長を示すデータも含まれる。データなしのセグメントは、指示子のみからなる。
【０００５】
終端パターン５２０は、有効な情報の終端を示すビット列であり、この終端パターン５２０よりも後ろのデータは、二次元コードの読取結果として出力されない。
埋め草データ５３０は、余分なスペースを埋めるための無効なデータとして、二次元コードの規格において定義されたパターンである。図１５の例では、埋め草データ５３０は、０付加部の後ろに「11101100」「00010001」の繰り返し部を設けたパターンである。二次元コードに変換するためのビット列は、規格によって定められた特定の長さである必要があるため、出力データ５１０が短い場合には、余分なスペースを埋める必要がある。
【０００６】
誤り訂正データ５４０は、リードソロモン符号等の、二次元コード読取時の誤り訂正に用いるデータである。
ビット列５００においては、誤り訂正データ５４０以外の領域全てに有効な情報を配置可能であるが、図１５の例では出力データ５１０の量がその領域のサイズより小さいため、終端パターン５２０を配置した上で残りを埋め草データ５３０で埋めている。
【０００７】
また、特許文献１には、二次元コードのコード仕様でコード化された暗号化データの解読に用いる鍵データを、その暗号化データ及び誤り訂正データの少なくとも一方に上書きした構成で重複して記録した二次元コードが開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５０２３９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載の手法によれば、ある二次元コードの読取時に出力すべきデータ以外のデータを、視覚的に認識しづらい形で同じ二次元コード内に記述することができる（特許文献１の段落００３９参照）。
しかしながら、特許文献１の方式では、暗号化データや誤り訂正データの一部に他のデータを重複して記録するため、十分な誤り訂正能力を維持することを考えると、重複して記録可能なデータ量に制約が大きいという問題があった。
【００１０】
この発明は、このような問題を解決し、二次元コードに十分な誤り訂正能力を維持しつつ、二次元コードの読取時に出力すべきデータ以外に、より多くの量のデータを、二次元コード内に記述できるようにすることを目的とする。また、このような二次元コードを出力し、あるいは読み取れるようにすることも目的とする。
【課題を解決するための手段】
【００１１】
以上の目的を達成するため、本発明の二次元コードは、第１規格に従って有効な情報をコードする第１コード記号と、上記第１規格に従って有効な情報の終端を示す終端パターンと、上記第１規格に従って有効な情報を配置可能な領域内で上記終端パターンよりも後ろに配置され、上記第１規格と異なる第２規格に従って有効な情報をコードする第２コード記号とを含むものである。
【００１２】
また、この発明の二次元コード出力システムは、入力手段により第１情報及び第２情報の入力を受け付ける手段と、第１規格に従って上記第１情報を有効な情報としてコードする第１コード記号と、上記第１規格に従って有効な情報の終端を示す終端パターンと、上記第１規格に従って有効な情報を配置可能な領域内で上記終端パターンよりも後ろに配置され、上記第１規格と異なる第２規格に従って上記第２情報をコードする第２コード記号とを含む二次元コードを出力する手段とを備えるものである。
【００１３】
これらの二次元コードあるいは二次元コード出力システムにおいて、上記第１規格が、上記終端パターンの後ろに配置する無効な情報のパターンを規定し、上記第２規格が、上記終端パターンより後ろの所定範囲に配置する情報が、上記無効な情報と一致しないように、情報の符号化規則を規定するとよい。
あるいは、上記第１規格が、上記終端パターンの後ろに配置する無効な情報のパターンを規定し、上記二次元コードにおいて、上記終端パターンより後ろの所定範囲に配置された情報が、上記無効な情報と一致しないものであるとよい。
さらに、上記所定範囲が、上記終端パターンの直後の所定数のビットであるとよい。
さらに、上記の二次元コード及び二次元コード出力システムにおいて、上記二次元コードが、上記第１コード記号及び上記第２コード記号の誤りを訂正するための、上記第１規格に従った誤り訂正データをコードする第３コード記号を含むとよい。
【００１４】
また、この発明の二次元コード読取システムは、読取手段により二次元コードを読み取って、有効な情報の終端を示す終端パターンの規定を含む第１規格に従ってデコードするデコード手段と、上記デコード手段によるデコード結果のうち上記第１規格に従った有効な情報を第１情報として取得する第１取得手段と、上記デコード手段によるデコード結果のうち上記終端パターンより後ろの情報を、上記第１規格と異なる第２規格に従って解析し、その第２規格に従った有効な情報を第２情報として取得する第２取得手段とを設けたものである。
【００１５】
このような二次元コード読取システムにおいて、上記第１規格が、上記終端パターンの後ろに配置する無効な情報のパターンを規定し、上記第２取得手段は、上記終端パターンより後ろの所定範囲に配置された情報が、上記無効な情報と一致するか否か判断し、一致しない場合に、上記第２規格に従った有効な情報を第２情報として取得するとよい。
さらに、上記所定範囲が、上記終端パターンの直後の所定数のビットであるとよい。
さらにまた、上記第１情報と上記第２情報のうち、上記第１情報のみを外部へ出力するとよい。
さらに、上記デコード手段によるデコード結果に含まれる誤り訂正データを用いて、該デコード結果の、少なくとも上記第１情報を記述する領域と上記第２情報を記述する領域とを含む領域に対する誤り訂正を行う誤り訂正手段を備え、上記第１取得手段が、その誤り訂正後のデコード結果から上記第１情報を取得し、上記第２取得手段が、その誤り訂正後のデコード結果から上記第２情報を取得するとよい。
【００１６】
また、この発明は、二次元コードあるいはシステムとして実現する他、装置、方法、プログラム、プログラムを記録した記録媒体等、任意の態様で実施することができる。
【発明の効果】
【００１７】
以上のような本発明の構成によれば、二次元コードの誤り訂正能力を維持したまま、二次元コードの読取時に出力すべきデータ以外に、より多くの量のデータを、二次元コード内に記述できるようにすることができる。また、このような二次元コードを出力し、あるいは読み取れるようにすることができる。
【図面の簡単な説明】
【００１８】
【図１】この発明の一実施形態である二次元コードが含む情報の構成の一例を示す図である。
【図２】図１に示す情報中の非出力データのフォーマットの規格の例を示す図である。
【図３】第１規格のみに従った二次元コードが含む情報の構成の例を示す図である。
【図４】この発明の一実施形態である二次元コードを取り扱う二次元コード出力装置及び二次元コード読取装置の使用態様について説明するための図である。
【図５】この発明の一実施形態である二次元コード出力装置のハードウェア構成を示す図である。
【図６】図５に示した二次元コード出力装置の機能構成を示す図である。
【図７】この発明の一実施形態である二次元コード読取装置のハードウェア構成を示す図である。
【図８】図７に示した二次元コード読取装置の機能構成を示す図である。
【図９】図５に示した二次元コード出力装置のＣＰＵが実行する二次元コード生成処理のフローチャートである。
【図１０】図９に示した出力データの符号化処理のフローチャートである。
【図１１】図９に示した非出力データの符号化処理のフローチャートである。
【図１２】図９に示した埋め草データの付加処理のフローチャートである。
【図１３】図７に示した二次元コード読取装置のＣＰＵが実行する二次元コード読取処理のフローチャートである。
【図１４】従来の二次元コードの例を示す図である。
【図１５】従来の二次元コードが含む情報の構成の一例を示す図である。
【図１６】図１５に示す情報中の出力データのフォーマットの規格の例を示す図である。
【図１７】図１５のセグメントのうちデータ長が可変長のセグメントの構成を示す図である。
【発明を実施するための形態】
【００１９】
この発明の実施形態について、図面を参照しながら説明する。
まず、この発明の一実施形態である二次元コードは、二値のビット列を光反射率の異なる白モジュールと黒モジュールの配列により表現したものであり、そのビット列は、例えば図１５に示したものと同様な形式で情報を表現するものである。すなわち、表現するビット列の内容によってモジュールの配列は異なるものの、一見すると、従来から知られている二次元コードと区別がつきづらいものである。
【００２０】
図１に、この発明の一実施形態である二次元コードが含む情報の構成の一例を示す。
この実施形態の二次元コードが表すビット列（符号化データ）３００は、出力データ３１０、終端パターン３２０、非出力データ３３０、終端パターン３４０、埋め草データ３５０、誤り訂正データ３６０を含む。
【００２１】
これらのうち出力データ３１０、終端パターン３２０及び誤り訂正データ３６０は、第１規格に従ったデータであり、ここでは第１規格として、図１４乃至図１７を用いて説明した規格を用いている。すなわち、出力データ３１０は、複数のセグメントを備える、二次元コードの読取結果として出力される有効な情報を第１規格に従ってビット列に変換したデータであり、終端パターン３２０は、第１規格において定義された、有効な情報の終端を示すビット列である。誤り訂正データ３６０は、リードソロモン符号等の、二次元コード読取時の誤り訂正に用いるデータである。誤り訂正データ３６０より前のビット全てが、誤り訂正の対象となる。
【００２２】
一方、ビット列３００においては、図１５のビット列５００と異なり、終端パターン３２０より後ろの、第１規格に従えば有効な情報を配置可能であるが埋め草データで埋められる領域に、非出力データ３３０及び終端パターン３４０が配置されている。
非出力データ３３０は、二次元コードの読取結果としては出力しない任意のデータを、第１規格と異なる第２規格に従って別途列に変換したデータである。非出力データ３３０は、その用途も任意である。この例では、非出力データ３３０も、出力データ３１０と同様に複数のセグメントを備える。各セグメントは、第２規格において定義され、セグメントのモード（当該セグメントに記述されるデータの種類及びフォーマット）を指定する指示子と、セグメントのデータ本体を含む。
【００２３】
図２に、第２規格において使用されるモードの種類の例を示す。モードにはデータが固定長のものと可変長のものがあり、可変長のモードにおいてはセグメント内にデータ長を示すデータも含まれる点は、第１規格の場合と同様である。なお、第２規格においては、非出力データ３３０を第１規格に従った埋め草データと見分けるために、非出力データ３３０の終端を示す終端パターンＡの他に、終端パターンＢが規定されている。この終端パターンＢについては後に詳述する。
【００２４】
終端パターン３４０は、第２規格において定義された、非出力データ３３０の終端を示すビット列（終端パターンＡ）である。ここでは、終端パターンＡは第１規格における終端パターンと同じ「0000」であるが、異なるパターンであってもよい。
埋め草データ３５０は、余分なスペースを埋めるための無効なデータとして、第２規格において定義されたパターンである。図１の例では、データのビット数が８の倍数になるまで「０」を付加する０付加部の後ろに「11101100」「00010001」の繰り返し部を設けた、第１規格で規定されたものと同じ規則のパターンを用いているが、第１規格と異なる規則のパターンを用いても問題ない。
【００２５】
以上の構成を有するビット列３００は、本来第１規格に従った埋め草データがあるはずの領域に非出力データ３３０、終端パターン３４０及び埋め草データ３５０がある点で第１規格には従っていない。しかし、単にビット列の内容が異なるのみであるので、第１規格に従って各ビットの値に基づき適宜のモジュールからなるコード記号を生成して二次元コードを生成することは可能である。このようにビット列３００を第１規格に従った二次元コードに変換したものが、この発明の一実施形態である二次元コードである。なお、第２規格には、非出力データ３３０、終端パターン３４０、および埋め草データ３５０に基づきコード記号を生成する規則については、第１規格と同じものを採用することが規定されており、上記第１規格に従った二次元コードの生成は、非出力データ３３０、終端パターン３４０、および埋め草データ３５０の部分については、第２規格にも従ったものであると言える。
【００２６】
以上により生成される二次元コードは、第１規格に従って有効な情報をコードする第１コード記号（出力データ３１０と対応するコード記号）と、第１規格に従って有効な情報の終端を示す終端パターン（終端パターン３２０と対応するコード記号）と、その終端パターンよりも後ろに配置され、第２規格に従って有効な情報をコードする第２コード記号（非出力データ３３０と対応するコード記号）と、第１コード記号及び第２コード記号の誤りを訂正するための誤り訂正データをコードする第３コード記号（誤り訂正データ３６０と対応するコード記号）とを含む。
以上の二次元コードは、第１規格にのみ対応する読取装置で読み取った場合、出力データ３１０の部分のみが有効なデータとして取り出され、出力される。この場合、終端パターン３２０以降の部分は、厳密には第１規格に従っていないが、有効なデータが格納される領域ではなく、単に無視されるため、読取処理に特に影響はない。
【００２７】
一方、後述する二次元コード読取装置２００のように、第２規格にも対応する読取装置で読み取ると、出力データ３１０の他、非出力データ３３０も、有効なデータとして取り出し、種々の処理に用いることができる。この非出力データ３３０の用途は任意であるが、一例としては、出力データ３１０の作成者や改ざんがないことを確認するための認証処理、出力データ３１０の加工（暗号化された出力データ３１０の復号化など）、光や音やメッセージの表示等による読取装置のユーザへの通知など、種々考えられる。
【００２８】
また、上述のように、非出力データ３３０を含む二次元コードは、第１規格のみに従った、非出力データ３３０を含まない二次元コードと、肉眼で見分けるのは困難である。従って、第１規格として、ＪＩＳ（Japanese Industrial Standards）に準拠した規格など、世の中に広く用いられている規格を採用することにより、人には見えにくい形で、二次元コードに、通常の読取装置では読み取れずに第２規格にも対応した特別な読取装置を持つ者のみが取得可能な情報を埋め込むことができる。従って、二次元コード自体は広く人の目に触れる環境に置きつつ、二次元コードの読み取りを通じて、特定の人にだけ他の人と異なる情報を伝達することが期待できる。
【００２９】
また、ここで説明した方式によれば、特許文献１に記載の方式に比べ、二次元コード内により多くの非出力データ３３０を記述できると考えられる。
例えば、ＱＲコード（登録商標）のバージョン１の例で考えると、最も誤り訂正能力の高い規格では、１つの二次元コード内に、有効な出力データを７２ビット、誤り訂正データを１３６ビット記述すべきことが規定されている。また、最も誤り訂正能力の低い規格では、有効な出力データを１５２ビット、誤り訂正データを５６ビット記述すべきことが規定されている。
【００３０】
特許文献１に記載の方式では、１ビットのデータを出力データ５１０あるいは誤り訂正データ５４０に上書きして記録すると、誤り訂正データ２ビット分の訂正能力が失われる。従って、バージョン１の規格に従った最低限の誤り訂正能力を保持しつつ最大限の情報を上書き記録しようとすると、最も誤り訂正能力の高い規格を用いつつ、最も誤り訂正能力の低い規格の訂正能力との差分を犠牲にして、（１３６−５６）／２＝４０ビット分のデータを記録することができる。このとき、出力データ５１０は、７２ビット記述できる。
【００３１】
一方、本実施形態の方式の場合、出力データを記述する領域を犠牲にして非出力データ３３０を記述することになる。最低限の誤り訂正能力を保持すればよいのであれば、出力データは１５２ビット記述可能であるが、上記特許文献１に記載の方式と同様な７２ビットを記述できればよいとすると、差分の１５２−７２＝８０ビットを、非出力データ３３０の記述に用いることができる。ただし、出力データの記述領域全体に出力データ３１０を記述するのであれば終端パターン３２０が不要であるところ、非出力データ３３０を記述する場合には、出力データ３１０の後ろに４ビットの終端パターン３２０が必要となるため、実際に記述できる非出力データ３３０の最大量は８０−４＝７６ビットである。
【００３２】
ここではバージョン１の数値を用いて説明したが、他のバージョンの数値を用いても、同様な結果となる。他の、誤り訂正機能を持つ二次元コードについて考えた場合にも、同様なことが言える。
従って、この実施形態の方式では、二次元コードに（広く用いられている規格に従っているという意味で）十分な誤り訂正能力を維持しつつ、特許文献１に記載の方式よりも、大きいサイズの非出力データ３３０を記述することができると言える。
【００３３】
また、特許文献１に記載の方式では、出力データ５１０あるいは誤り訂正データ５４０に上書きして記録するデータは、誤り訂正データ５４０による誤り訂正の対象となっておらず、コード記号の擦れ等により読み取り誤りが生じても訂正できない。一方、この実施形態の方式では、出力データ３１０だけでなく非出力データ３３０も誤り訂正データ３６０による誤り訂正の対象となるため、読み取り誤りが生じても一定の誤り量までは訂正が可能である。従って、第１規格に従っていない非出力データ３３０の部分まで、信頼性を保つことができる。
【００３４】
ところで、図１に示したビット列３００は、二次元コードを読み取って第１規格に従ってデコードし、コード記号と対応するビット列を得た読取装置が、そこに非出力データ３３０が含まれるか否かを容易に判別できるように構成している。次に、この点について説明する。
【００３５】
図３に、第１規格のみに従い、非出力データ３３０を含まない二次元コードが含む情報の構成の例を示す。
図３に示すビット列５００は、図１５に示したものと同じであるが、ここでは終端パターン５２０の直後の、埋め草データ５３０の先頭４ビットの領域５３１に注目するために別途図示した。
【００３６】
埋め草データ５３０の規則は既に説明した通りであるが、先頭４ビットは、０付加部で付加する「０」のビット数に応じて、０ビットであれば「1110」、１ビットであれば「0111」、２ビットであれば「0011」、３ビットであれば「0001」、４ビット以上であれば「0000」と、５通りに絞られる。
【００３７】
そこで、図１のビット列３００に非出力データ３３０を配置するに当たり、先頭の４ビット（領域３３１）が上記５通りのいずれとも一致しないようにすれば、二次元コードの読み取り時には、終端パターン３２０の直後の４ビットが上記５通りのいずれとも一致しないことをもって、非出力データ３３０が配置されていると判断できる。この判断を可能とするため、図２に示す規則では、上記５通りを終端パターンＢとして定義し、第２規格におけるモードの指定には使用しないようにしている。従って、終端パターン３２０の直後の４ビットが、終端パターンＢのいずれかであるか否かに基づき、非出力データ３３０の有無を判断することができる。
【００３８】
なお、この判断の際に用いるデータは、必ずしも非出力データ３３０の先頭になくてもよいし、終端パターン３２０の直後でなくてもよい。データのサイズが４ビットでなくてもよい。いずれにせよ、非出力データ３３０がある場合には、終端パターン３２０より後ろの所定範囲に配置する情報が、埋め草データ３５０と一致しないように第２規格を定め、読取装置に、どの範囲のデータを判断に用いるかを設定しておけば、同様な判断が可能である。スペースに無駄は生じるが、終端パターン３２０の直後から非出力データ３３０が開始することも必須ではない。
【００３９】
次に、以上説明してきた二次元コードを取り扱う、この発明の二次元コード出力システム、二次元コード読取システム及びこれらの対応する方法の実施形態について説明する。
図４は、二次元コード出力システムの一実施形態である二次元コード出力装置及び二次元コード読取システムの一実施形態である二次元コード読取装置の使用態様を示す図である。なお、図４の例では、二次元コード出力装置及び二次元コード読取装置を、それぞれ必要な機能を全て備える１台の装置からなるシステムとして構成しているが、必要な機能を分散して設けた複数の装置を連携させて同様なシステムを構成してもよいことはもちろんである。
【００４０】
図４に示す二次元コード出力装置１００は、図１に示した出力データ３１０及び非出力データ３３０として二次元コードに記述すべき情報の入力を受け付け、その情報に基づき、図１に示したような情報をコードする二次元コード１０を生成して出力する機能を備える。この出力は、ディスプレイによる表示、スクリーンへの投影、プリンタによる対象物への印刷、露光による対象物の変性、ネットワーク等の通信路を介した画像データの送信など、任意の態様で行うことができる。
【００４１】
一方、二次元コード読取装置２００は、二次元コード出力装置１００が出力した二次元コード１０を読み取る機能を備える。ここでは、表示、投影、印刷など、何らかの手法で読取対象物上に提示された二次元コードを光学的に読み取るものとするが、画像データとして供給されたコード記号を、画像データの解析により読み取る等、光学的なもの以外の手法で読み取りを行うことも妨げられない。
【００４２】
二次元コード読取装置２００は、読み取った二次元コード１０をデコードして、出力データ３１０及び非出力データ３３０を取得する機能を備える。また、これらのうち出力データ３１０を所定の出力先に出力すると共に、非出力データ３３０は、外部へ出力せずに内部処理に用いる機能を有する。実行する内部処理の内容は、非出力データ３３０の用途により異なる。また、出力データ３１０の出力も、ネットワーク等の通信路を介した送信、ディスプレイによる表示、スクリーンへの投影、プリンタによる対象物への印刷、露光による対象物の変性、スピーカによる音声出力など、任意の手法で行うことができる。
【００４３】
非出力データ３３０は、第１規格に従ったデータではないため、二次元コード読取装置２００の出力を第１規格に従ったものとするためには、出力は第１規格に従ったデータである出力データ３１０のみとすることが望ましい。しかし、第１規格に従った出力とする必要がないのであれば、非出力データ３３０を、出力データ３１０と共に、または出力データ３１０と別に、外部に出力する構成も妨げられない。この場合、非出力データ３３０と出力データ３１０とで、出力先や出力方法が異なっていてもよい。
【００４４】
次に、二次元コード出力装置１００の構成についてより詳細に説明する。図５はそのハードウェア構成を示す図、図６はその機能構成を示す図である。
図５に示すように、二次元コード出力装置１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ストレージ１０４、通信Ｉ／Ｆ（インタフェース）１０５、操作部１０６、表示部１０７を備え、これらをシステムバス１０８により接続した構成としている。
【００４５】
そして、ＣＰＵ１０１が、ＲＡＭ１０３をワークエリアとしてＲＯＭ１０２あるいはストレージ１０４に記憶された所要のプログラムを実行することにより、二次元コード出力装置１００全体を制御し、図６に示すものをはじめとする種々の機能を実現する。
通信Ｉ／Ｆ１０５は、ネットワーク等の適宜な通信路を介して、情報入力装置や情報出力装置等の他の装置と通信するためのインタフェースである。使用する通信路の規格に応じた物を設ければよい。
【００４６】
操作部１０６は、ユーザからの操作を受け付けるための操作手段であり、各種のキー、スイッチ、タッチパネル等により構成することができる。
表示部１０７は、二次元コード出力装置１００の動作状態や設定内容、メッセージ等をユーザに提示するための提示手段であり、液晶ディスプレイやランプ等を備える。
【００４７】
なお、操作部１０６及び表示部１０７は外付けであってもよい。また、二次元コード出力装置１００がユーザからの操作を直接受ける必要がない（通信Ｉ／Ｆ１０５を介して接続された外部装置により操作を受け付けたり情報の提示を行ったりすればよい）場合には、操作部１０６や表示部１０７を設けなくてよい。
このような二次元コード出力装置１００は、ハードウェアとしては汎用コンピュータを用いることもできる。
【００４８】
また、図６に示すように、二次元コード出力装置１００は、二次元コードの生成に関連する機能として、出力データ受付部１１１、非出力データ受付部１１２、第１符号化部１１３、第２符号化部１１４、誤り訂正データ付加部１１５、二次元コード生成部１１６、二次元コード出力部１１７の機能を備える。
【００４９】
これらのうち出力データ受付部１１１は、出力データ３１０として二次元コード１０に記述すべき情報（第１情報）の入力を受け付ける機能を備える。非出力データ受付部１１２は、非出力データ３３０として二次元コード１０に記述すべき情報（第２情報）の入力を受け付ける機能を備える。これらの情報は、ユーザに入力させてもよいし、通信により他の装置から受信してもよい。また、予め二次元コード出力装置１００あるいは他の装置に保存された情報のうちユーザが選択したものや、何らかの条件により自動的に選択したものを読み出してもよい。また、ユーザが選択したり自動的に定められたりした何らかのパラメータに基づき自動的に生成してもよい。その他、任意の手法で入力を受け付けることができるし、何らかの条件によって、入力の受付方法が変わってもよい。出力データ受付部１１１と非出力データ受付部１１２とで、異なる方法で情報の入力を受け付けてもよい。
【００５０】
第１符号化部１１３は、出力データ受付部１１１が入力を受け付けた情報を、第１規格に従って符号化し、図１に示した出力データ３１０のビット列に変換すると共に、データの最大量まで余裕があれば、終端パターン３２０を付加する機能を備える。
第２符号化部１１４は、非出力データ受付部１１２が入力を受け付けた情報を、第２規格に従って符号化し、図１に示した非出力データ３３０のビット列に変換して第１符号化部１１３が生成したビット列に連結すると共に、データの最大量まで余裕があれば、終端パターン３４０及び埋め草データ３５０をさらに付加する機能を備える。
【００５１】
誤り訂正データ付加部１１５は、第２符号化部１１４が生成したビット列に基づき、その読み取り時の誤りを訂正するための誤り訂正データ３６０を生成して当該ビット列に付加する機能を備える。以上により、図１に示したビット列３００が生成される。
二次元コード生成部１１６は、ビット列３００を第１規格に従ってコード記号に変換して二次元コード１０を生成する機能を備える
二次元コード出力部１１７は、二次元コード生成部１１６が生成した二次元コード１０を、適当な手法で出力する機能を備える。
【００５２】
二次元コード出力装置１００は、これらの各部の機能により、図１を用いて説明した構成のデータを記述する二次元コード１０を、生成して出力することができる。なお、非出力データ３３０の記述が不要である場合、すなわち、非出力データ受付部１１２が情報の入力を受け付けない場合、第２符号化部１１４は、図３に示した埋め草データ５３０の付加のみを行えばよい。このことにより、二次元コード出力装置１００は、図３を用いて説明した構成のデータを記述する、非出力データ３３０を含まない二次元コード１０を、生成して出力することができる。
【００５３】
次に、二次元コード読取装置２００の構成についてより詳細に説明する。図７はそのハードウェア構成を示す図、図８はその機能構成を示す図である。
図７に示すように、この二次元コード読取装置２００は、光学部２１０、デコーダ２２０、操作部２３１及び通知部２３２を備え、光学部２１０を読取対象物２０に対向させることにより、読取対象物２０上で光反射率が周囲と異なる記号により示される二次元コード１０を読み取るための装置である。
【００５４】
これらのうち光学部２１０は、撮像センサ２１１、レンズ２１２、パルスＬＥＤ（発光ダイオード）２１３を備え、二次元コード１０を光学的に読み取るための読取手段である。
撮像センサ２１１は、読取対象物２０の画像を撮像するための撮像手段であり、例えばＣＭＯＳ（相補性金属酸化膜半導体）イメージセンサにより構成することができる。また、撮像センサ２１１は、撮像によりイメージセンサの各画素に蓄積した電荷に基づき、各画素の階調値を示す画像データを生成し、デコーダ２２０へ出力することができる。この撮像センサ２１１において、画素は二次元的に配置されている。
【００５５】
レンズ２１２は、撮像センサ２１１上に二次元コード１０を含む読取対象物２０からの反射光を結像させるための光学系である。
パルスＬＥＤ２１３は、撮像対象である読取対象物２０へ照明光を照射するための照明手段である。
【００５６】
次に、デコーダ２２０は、ＣＰＵ２２１と、ＣＰＵ２２１が実行するプログラムや各種テーブル等のデータを記憶したＲＯＭ２２２と、ＣＰＵ２２１が各種の処理を実行する際の作業領域として使用するＲＡＭ２２３と、外部装置と通信を行うための通信Ｉ／Ｆ２２４とを備えている。
上記ＣＰＵ２２１，ＲＯＭ２２２，ＲＡＭ２２３としては、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit），フラッシュロム（ＦＲＯＭ），ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等を用いることができる。
【００５７】
ＣＰＵ２２１は、ＲＡＭ２２３を作業領域としてＲＯＭ２２２に記憶されたプログラムを実行することにより、光学部２１０、操作部２３１及び通知部２３２を含む二次元コード読取装置２００全体の動作を制御する。また、撮像センサ２１１が撮像した画像の画像データに含まれる二次元コード１０の検出及びデコード、そのデコード結果の外部への出力あるいは蓄積、パルスＬＥＤ２１３による照明光量（又は時間）の調整などの処理も行う。
【００５８】
通信Ｉ／Ｆ２２４は、デコーダ２２０によるデコード結果を処理するＰＣ（パーソナルコンピュータ）等のデータ処理装置と通信するためのインタフェースであり、有線無線を問わず任意の規格を採用可能である。また、通信Ｉ／Ｆ２２４から読み込んだデータに基づきデコーダ２２０に制御用パラメータの設定を行うことができるようにしてもよい。
【００５９】
操作部２３１は、ユーザの操作を受け付けるためのボタンやトリガ等の操作手段である。
通知部２３２は、ユーザへの各種通知を行うための通知手段である。具体的な通知の方法としては、ディスプレイによるメッセージやデータの表示、ランプの点灯や点滅、スピーカによる音の出力等が考えられるが、これに限られることはない。
【００６０】
また、図８に示すように、二次元コード読取装置２００は、二次元コードの読み取りに関連する機能として、コード記号読取部２４１、第１デコード部２４２、誤り訂正部２４３、有効データ取得部２４４、非出力データ取得部２４５、出力データ処理部２４６、情報出力部２４７、その他処理部２４８を備える。
これらのうち、コード記号読取部２４１は、光学部２１０により二次元コード１０を読み取って、二次元コード１０の画像を取得する機能を備える。
【００６１】
第１デコード部２４２は、コード記号読取部２４１が取得したコード記号の画像を第１規格に従ってデコードし、ビット列に変換するデコード手段の機能を備える。誤り訂正部２４３は、第１デコード部２４２から得たビット列に対し、そこに含まれる誤り訂正データを用いて誤り訂正処理を行う誤り訂正手段の機能を備える。誤り訂正の対象は、誤り訂正データよりも前のビット列全てであり、出力データ（図１の３１０又は図３の５１０）のみならず、非出力データ（図１の３３０）が含まれていれば、これも誤り訂正の対象となる。二次元コード読取装置２００は、これらのデコードあるいは誤り訂正が失敗した場合、今回の読み取りは失敗したと判断し、次の読み取りを行う。
【００６２】
有効データ取得部２４４は、誤り訂正部２４３による誤り訂正後のビット列から、出力データ（図１の３１０又は図３の５１０）を取得して、第１規格に従ってデコードして各セグメントのビット列を符号化前の情報に戻し、第１規格に従った有効な情報である第１情報として取得する、第１取得手段の機能を備える。また、もしあれば、第１規格に従った終端パターン（図１の３２０又は図３の５２０）よりも後ろのビット列を、非出力データ取得部２４５に渡す機能も備える。
【００６３】
非出力データ取得部２４５は、有効データ取得部２４４から渡されたビット列から、もしあれば非出力データ（図１の３３０）を取得して、第２規格に従ってデコードして各セグメントのビット列を符号化前の情報に戻し、第２規格に従った有効な情報である第２情報として取得する、第２取得手段の機能を備える。
【００６４】
また、非出力データ取得部２４５は、第２情報を取得した場合、その情報に基づく処理を実行すべく、二次元コード読取装置２００になされた設定や、第２情報に含まれる処理の種類の指定等に基づき、必要な処理を行う機能部に対し、第２情報を渡す機能も備える。図８の例では、非出力データ取得部２４５は、必要な処理が第１情報に対する処理である場合、出力データ処理部２４６に第２情報を渡し、それ以外の場合には、該当の処理を担当するその他処理部２４８に第２情報を渡す。なお、ビット列に非出力データ３３０が含まれない場合には、非出力データ取得部２４５は第２情報がない旨の情報を出力データ処理部２４６に渡す。
【００６５】
出力データ処理部２４６は、非出力データ取得部２４５から渡される第２情報に基づき、有効データ取得部２４４から渡される第１情報に対する処理を行う機能を備える。処理のアルゴリズムは、予め定められた固定のものであっても、第２情報の特定の項目の値に基づき選択又は自動生成されるものであっても、その他のものであってもよい。何も処理を行わない、という選択肢もあり得る。第２情報がない場合には、出力データ処理部２４６は単に第１情報をスルーして情報出力部２４７に渡す。
情報出力部２４７は、出力データ処理部２４８による処理後の第１情報を、適当な手法で出力する機能を備える。
【００６６】
二次元コード読取装置２００は、これらの各部の機能により、図１を用いて説明した構成のデータを記述する二次元コード１０を読み取り、そこに含まれる非出力データ３３０に従った処理を実行した上で、出力データ３１０をデコードした第１情報を出力することができる。また、図３を用いて説明した構成のデータを記述する二次元コード１０を読み取った場合も、そこに含まれる出力データ５１０をデコードした第１情報を出力することができる。
【００６７】
次に、二次元コード出力装置１００又は二次元コード読取装置２００が実行する、図６及び図８に示した機能と対応する処理について説明する。これらの処理は、この発明の二次元コード出力方法又は二次元コード読取方法の実施形態に係る処理である。また、以下の各フローチャートに示す処理は、二次元コード出力装置１００のＣＰＵ１０１又は二次元コード読取装置２００のＣＰＵ２２１が所要のプログラムを実行することにより行うものであるが、説明を簡単にするため、二次元コード出力装置１００又は二次元コード読取装置２００が実行するものとして説明する。
【００６８】
まず図９に、二次元コード出力装置１００が実行する、非出力データを含む二次元コードの生成処理のフローチャートを示す。
二次元コード出力装置１００は、所定のユーザ操作あるいはコマンド等により、非出力データを含む二次元コードの生成を指示されると、図９に示す処理を開始する。
この処理において、二次元コード出力装置１００はまず、図１の出力データ３１０として記述する情報及び図１の非出力データ３３０として記述する情報の入力を、それぞれ受け付ける（Ｓ１１，Ｓ１２）。この処理は、出力データ受付部１１１及び非出力データ受付部１１２の機能と対応する。
【００６９】
次に、二次元コード出力装置１００は、図１０の出力データの符号化処理により、ステップＳ１１で受け付けた情報を符号化して出力データ３１０及び終端パターン３２０のビット列を生成する（Ｓ１３）。この処理は、第１符号化部１１３の機能と対応する。
より具体的には、二次元コード出力装置１００は、ステップＳ１１で受け付けた情報から１セグメント分の情報を取り出し、第１規格に従ってそのセグメントのビット列を生成し（Ｓ２１）、それまでに生成したビット列に繋げる（Ｓ２２）処理を、全てのセグメントについて繰り返し実行する（Ｓ２３）。セグメントの区切りは、情報の項目や文字の種別によって定まるものであり、第１規格により定義される基準を採用すればよい。
【００７０】
第１規格を二次元コード出力装置１００の提供者あるいは利用者が定めるのであれば、ステップＳ１１で受け付けた情報が複数項目の情報からなる場合には、少なくとも項目の区切りをセグメントの区切りとすることが考えられる。また、文字の種類が数字から漢字に変わるなど、文字の種類の変わり目も、セグメントの区切りとすることが考えられる。
【００７１】
そして、二次元コード出力装置１００は、ステップＳ２３までで生成したビット列が、出力データ３１０の最大サイズより４ビット以上短い場合、すなわち終端パターン３２０を付加する余裕がある場合には（Ｓ２４）、終端パターン３２０を連結により付加して（Ｓ２５）、図９の処理に戻る。ステップＳ２４で余裕がなければ、終端パターン３２０を連結せずに図９の処理に戻る。
【００７２】
次に、二次元コード出力装置１００は、図１１の非出力データの符号化処理により、ステップＳ１２で受け付けた情報を符号化して非出力データ３３０及び終端パターン３４０のビット列を生成して、ステップＳ１３で生成したビット列に連結する（Ｓ１４）。この処理は、第２符号化部１１４の機能と対応する。
【００７３】
より具体的には、二次元コード出力装置１００は、ステップＳ１２で受け付けた情報から１セグメント分のデータを取り出し、第２規格に従ってそのセグメントのビット列を生成し（Ｓ３１）、それまでに生成したビット列に繋げる（Ｓ３２）処理を、全てのセグメントについて繰り返し実行する（Ｓ３３）。セグメントの区切りは、情報の項目や文字の種別によって定まるものであり、第２規格により定義される基準を採用すればよい。第２規格を二次元コード出力装置１００の提供者あるいは利用者が定めるのであれば、図１０の説明で述べた第１規格の場合と同様に考えることができる。
【００７４】
そして、二次元コード出力装置１００は、ステップＳ３３までで生成したビット列が、誤り訂正データ３６０を除いて二次元コードに記述可能な最大サイズより４ビット以上短い場合、すなわち終端パターン３４０を付加する余裕がある場合には（Ｓ３４）、終端パターン３４０を連結により付加して（Ｓ３５）、図９の処理に戻る。ステップＳ３４で余裕がなければ、終端パターン３４０を連結せずに図９の処理に戻る。
なお、これまでの処理において、いずれかの時点で、生成したビット列が誤り訂正データ３６０を除いて二次元コードに記述可能な最大サイズより長くなった場合には、二次元コードの生成は失敗したものとしてエラー処理を行う。
【００７５】
次に、二次元コード出力装置１００は、図１２の埋め草データ付加処理により、埋め草データ３５０のビット列を生成して、ステップＳ１４までで生成したビット列に連結する（Ｓ１５）。この処理も、第２符号化部１１４の機能と対応する。
より具体的には、二次元コード出力装置１００は、これまでに生成したビット列のビット数が８の倍数でなければ（Ｓ４１）、８の倍数になるまで生成済みのビット列に「０」のビットを付加する（Ｓ４２）。その後、二次元コードに記述できる最大サイズになるまで、ビット列に所定の繰り返しパターンを付加して（Ｓ４３）、図９の処理に戻る。
【００７６】
次に、二次元コード出力装置１００は、これまでの処理で生成したビット列に基づき誤り訂正データ３６０を生成し、当該ビット列に付加する（Ｓ１６）。この処理は誤り訂正データ付加部１１５の機能と対応する。
以上でビット列３００が完成し、二次元コード出力装置１００は、第１規格に従って、ここまでに生成したビット列をコードする二次元コード１０を生成し（Ｓ１７）、適当な出力先に出力して（Ｓ１８）、図９の処理を終了する。これらの処理は、二次元コード生成部１１６及び二次元コード出力部１１７の機能と対応する。
【００７７】
二次元コード出力装置１００は、以上の処理により、図１を用いて説明した構成のデータを記述する二次元コード１０を、生成して出力することができる。なお、非出力データを含まない二次元コードを生成する場合には、単にステップＳ１２及びＳ１４をスキップすればよい。
【００７８】
次に、図１３に、二次元コード読取装置２００が実行する、二次元コードの読取処理のフローチャートを示す。
二次元コード読取装置２００は、所定のユーザ操作あるいはコマンド等により、二次元コードの読み取りを指示されると、図１３に示す処理を開始する。この時点では読み取り対象の二次元コードに非出力データ３３０が含まれているか否かは考慮しなくてよい。
【００７９】
図１３の処理において、二次元コード読取装置２００はまず、読み取り対象の二次元コード１０の画像を取得し、第１規格に従ってデコード及び誤り訂正を行って、ビット列３００（又はビット列５００）を得る（Ｓ５１）。この処理は、二次元コード１０がフレームに収まっていなかったり、撮像時の明るさやフォーカスが適切でなかったりすると失敗するため、適宜に条件を変えつつ成功するまで繰り返す（Ｓ５２）。この処理は、デコード手順及び誤り訂正手順の処理であり、コード記号読取部２４１、第１デコード部２４２及び誤り訂正部２４３の機能と対応する。
【００８０】
次に、二次元コード読取装置２００は、ステップＳ５１でのデコード結果のビット列から、出力データ３１０（又は５１０）の部分を取得して、第１規格に従い符号化前の情報に変換する（Ｓ５３）。この処理は、第１取得手順の処理であり、有効データ取得部２４４の機能と対応する。
【００８１】
次に、二次元コード読取装置２００は、デコード結果の終端パターン３２０（又は５２０）の直後の４ビットが、第２規格における終端パターンＢのいずれかであるか否かを判断する（Ｓ５４）。この結果がＮｏ（いずれでもない）であれば、二次元コード読取装置２００は、デコード結果には非出力データ３３０が含まれていると判断し、ステップＳ５５以下に進む。
【００８２】
そして、二次元コード読取装置２００は、デコード結果のうち終端パターン３２０よりも後ろのビット列を、第２規格に従って解析し、非出力データ３３０の部分を符号化前の情報に変換する（Ｓ５５）。ステップＳ５４及びＳ５５の処理は、第２取得手順の処理であり、非出力データ取得部２４５の機能と対応する。
【００８３】
次に、二次元コード読取装置２００は、ステップＳ５５で取得した非出力データに従った処理を実行した上で（Ｓ５６）、ステップＳ５３で取得した符号化前の出力データを、所定の出力先へ出力して（Ｓ５７）、図１３の処理を終了する。これらの処理は、出力データ処理部２４６及び情報出力部２４７の機能と対応する。ステップＳ５６の処理は、非出力データの用途に応じて任意に定めることができる。
【００８４】
また、ステップＳ５４でＹｅｓ（いずれかである）であれば、二次元コード読取装置２００は、デコード結果には非出力データが含まれていないと判断し、ステップＳ５５及びステップＳ５６をスキップしてステップＳ５７に進み、符号化前の出力データの出力を行う。
【００８５】
二次元コード読取装置２００は、以上の処理により、図１又は図３を用いて説明した構成のデータを記述する二次元コード１０を読み取り、符号化前の出力データを出力すると共に、非出力データが含まれている場合には、非出力データに従った種々の処理を実行することができる。
【００８６】
以上で実施形態の説明を終了するが、この発明において、コード記号やシステム及び装置の具体的な構成、具体的な処理の手順、データの形式、具体的なデータの内容、採用する規格等は、実施形態で説明したものに限るものではない。
例えば、上述した実施形態では、正方形状の白（高反射率）モジュールと黒（低反射率）モジュールを配列してデータを表現する規格の二次元コードを用いたが、これに限られるものではない。バーモジュールを二次元的に配列するものや、六角形のモジュールを配列するものを用いてもよい。
また、埋め草データのパターンが規格において定められていることは必須ではなく、終端パターンより後ろのデータは任意であってもよい。
【００８７】
また、この発明のプログラムの実施形態は、１のコンピュータに、あるいは複数のコンピュータを協働させて、所要のハードウェアを制御させ、上述した実施形態における二次元コード出力装置１００あるいは二次元コード読取装置２００の機能を実現させ、あるいは上述した実施形態にて説明した処理を実行させるためのプログラムである。
【００８８】
このようなプログラムは、はじめからコンピュータに備えるＲＯＭや他の不揮発性記憶媒体（フラッシュメモリ，ＥＥＰＲＯＭ等）などに格納しておいてもよい。メモリカード、ＣＤ、ＤＶＤ、ブルーレイディスク等の任意の不揮発性記録媒体に記録して提供することもできる。さらに、ネットワークに接続された外部装置からダウンロードし、コンピュータにインストールして実行させることも可能である。
【００８９】
また、以上説明してきた実施形態及び変形例の構成が、相互に矛盾しない限り任意に組み合わせて実施可能であり、また、一部のみを取り出して実施することができることは、勿論である。
【符号の説明】
【００９０】
１０…二次元コード、２０…読取対象物、１００…二次元コード出力装置、２００…二次元コード読取装置、２１０…光学部、２２０…デコーダ、３００，５００…ビット列、３１０，５１０…出力データ、３２０，３４０，５２０…終端パターン、３３０…非出力データ、３５０，５３０…埋め草データ、３６０，５４０…誤り訂正データ
【図１】
2019148929.tif 000003
【図２】
2019148929.tif 000004
【図３】
2019148929.tif 000005
【図４】
2019148929.tif 000006
【図５】
2019148929.tif 000007
【図６】
2019148929.tif 000008
【図７】
2019148929.tif 000009
【図８】
2019148929.tif 000010
【図９】
2019148929.tif 000011
【図１０】
2019148929.tif 000012
【図１１】
2019148929.tif 000013
【図１２】
2019148929.tif 000014
【図１３】
2019148929.tif 000015
【図１４】
2019148929.tif 000016
【図１５】
2019148929.tif 000017
【図１６】
2019148929.tif 000018
【図１７】
2019148929.tif 000019
【手続補正書】
【提出日】平成31年4月9日(2019.4.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
一方、ビット列３００においては、図１５のビット列５００と異なり、終端パターン３２０より後ろの、第１規格に従えば有効な情報を配置可能であるが埋め草データで埋められる領域に、非出力データ３３０及び終端パターン３４０が配置されている。
非出力データ３３０は、二次元コードの読取結果としては出力しない任意のデータを、第１規格と異なる第２規格に従ってビット列に変換したデータである。非出力データ３３０は、その用途も任意である。この例では、非出力データ３３０も、出力データ３１０と同様に複数のセグメントを備える。各セグメントは、第２規格において定義され、セグメントのモード（当該セグメントに記述されるデータの種類及びフォーマット）を指定する指示子と、セグメントのデータ本体を含む。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
出力データ処理部２４６は、非出力データ取得部２４５から渡される第２情報に基づき、有効データ取得部２４４から渡される第１情報に対する処理を行う機能を備える。処理のアルゴリズムは、予め定められた固定のものであっても、第２情報の特定の項目の値に基づき選択又は自動生成されるものであっても、その他のものであってもよい。何も処理を行わない、という選択肢もあり得る。第２情報がない場合には、出力データ処理部２４６は単に第１情報をスルーして情報出力部２４７に渡す。
情報出力部２４７は、出力データ処理部２４６による処理後の第１情報を、適当な手法で出力する機能を備える。