(57)【特許請求の範囲】
【請求項１】
セルの分布パターンにより情報を表現する２次元コード内の所定位置に配置され、２次元コードの位置を特定する位置決め用シンボルと、各データセル位置の指標となる基準パターンであるタイミングセルと、を備え、その位置決め用シンボルを構成するセルと同じセルサイズのセルを用いて表現された第１の情報と、その位置決め用シンボルを構成するセルより小さなセルサイズのセルを用いて表現された第２の情報とが、それぞれ２次元コード内の所定位置に配置されている２次元コードの読取方法であって、
前記２次元コードの画像を得るとともに、前記画像中での前記位置決め用シンボルの位置を検出する２次元コード位置決め処理を行い、
次に、前記２次元コード内の前記第１の情報あるいは第２の情報の少なくともいずれか一方の前記データセルの位置を、前記位置決め用シンボルの位置及び各情報のセルサイズに基づいて検出するセル位置決め処理を行い、
次に、前記位置が検出されたデータセルに基づいて、前記第１の情報あるいは第２の情報の内の少なくともいずれか一方のコード情報を読み取るデコード処理を行うことを特徴とする２次元コードの読取方法。
【請求項２】
請求項１記載の２次元コードの読取方法において、
前記デコード処理は、前記第１の情報あるいは第２の情報のいずれか一方のみのコード情報を選択して読み取ること、
を特徴とする２次元コードの読取方法。
【請求項３】
請求項１記載の２次元コードの読取方法において、
前記第２の情報は、さらに複数種類の情報が、それぞれ異なるセルサイズのセルを用いて表現されており、
前記セル位置決め処理は、前記２次元コード内の前記第１の情報あるいは第２の情報を構成する複数のセルサイズの各情報の少なくともいずれか一つの前記データセルの位置を、前記位置決め用シンボルの位置及び各情報のセルサイズに基づいて検出し、
前記デコード処理は、前記位置が検出されたデータセルに基づいて、前記第１の情報及び第２の情報を構成する複数のセルサイズの各情報の内の少なくともいずれか一つのコード情報を読み取ること、
を特徴とする２次元コードの読取方法。
【請求項４】
請求項１〜３のいずれか記載の２次元コードの読取方法において、
読取対象の２次元コード中の前記第１の情報は、前記位置決め用シンボルに対応するコード種類を用いたコードにて表現され、前記第２の情報は、前記第１の情報と異なるコード種類を用いたコードにて表現されたものであり、
前記デコード処理は、デコード対象の情報に用いられているコード種類に対応する解読アルゴリズムを用いてコード情報を読み取ること、
を特徴とする２次元コードの読取方法。
【請求項５】
請求項４記載の２次元コードの読取方法において、
読取対象の２次元コード中の前記第２の情報は、異なるセルサイズのセルを用いた複数種類の情報で構成され、当該第２の情報を構成する各情報は、前記第１の情報と異なるコード種類を用いたコードと異なるコード種類を用いたコードにて表現されていると共に、当該各情報同士においてもさらに、それぞれ異なるコード種類を用いたコードにて表現されたものであり、
前記デコード処理は、デコード対象の情報に用いられているコード種類に対応する解読アルゴリズムを用いてコード情報を読み取ること、
を特徴とする２次元コードの読取方法。
【請求項６】
請求項１〜５いずれか記載の２次元コードの読取方法において、
前記２次元コードは、更に、前記位置決め用シンボルに対する所定位置に配置されて、２次元コード中の前記各情報の各々についての存在領域及びセルサイズを特定可能なフォーマットコードを備えており、
前記２次元コード位置決め処理を行った後、検出された前記位置決め用シンボルの位置に基づいて前記フォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行い、
前記セル位置決め処理は、取得された前記２次元コードのフォーマットに基づいて、前記データセルの位置を検出すること、
を特徴とする２次元コードの読取方法。
【請求項７】
請求項４又は５記載の２次元コードの読取方法において、
前記２次元コードは、更に、前記位置決め用シンボルに対する所定位置に配置されて、２次元コード中の前記各情報の各々についての存在領域、セルサイズ及び使用コード種類を特定可能なフォーマットコードを備えており、
前記２次元コード位置決め処理を行った後、検出された前記位置決め用シンボルの位置に基づいて前記フォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行い、
前記セル位置決め処理は、取得された前記２次元コードのフォーマットに基づいて、前記データセルの位置を検出し、
前記デコード処理は、取得された前記２次元コードのフォーマットに基づいてコード種類に対応する解読アルゴリズムを特定し、その特定した解読アルゴリズムを用いてコード情報を読み取ること、
を特徴とする２次元コードの読取方法。
【請求項８】
請求項１〜７のいずれか記載の２次元コードの読取方法において、
前記２次元コードが、２次元コード内にて前記位置決め用シンボルとは異なる位置に配置され、前記位置決め用シンボルの位置と自身のパターンとに基づいて位置検出される補助シンボルを備えているものであり、
前記２次元コード位置決め処理を行った後、検出された前記位置決め用シンボルの位置と前記補助シンボルのパターンとに基づいて、前記画像中での前記補助シンボルの位置を検出する補助シンボル位置決め処理を行い、
前記セル位置決め処理は、前記補助シンボルにも基づいて前記データセルの位置を検出すること、
を特徴とする２次元コードの読取方法。
【請求項９】
セルの分布パターンにより情報を表現する２次元コード内の所定位置に配置され、２次元コードの位置を特定する位置決め用シンボルと、各データセル位置の指標となる基準パターンであるタイミングセルと、を備え、その位置決め用シンボルに対応するコード種類を用いた２次元コードの読取方法にて表現された第１の情報と、バーコードにて表現された第２の情報とが、それぞれ２次元コード内の所定位置に配置されている２次元コードの読取方法であって、
前記２次元コードの画像を得るとともに、前記画像中での前記位置決め用シンボルの位置を検出する２次元コード位置決め処理を行い、
次に、前記２次元コード内の前記第１の情報を表現するためのデータセルあるいは第２の情報を表現するためのバーの少なくともいずれか一方の位置を、前記位置決め用シンボルの位置に基づいて検出するセル等位置決め処理を行い、
次に、前記位置が検出されたデータセルに基づく前記第１の情報のコード情報の読取あるいは前記位置が検出されたバーに基づく第２の情報のコード情報の読取の少なくともいずれか一方のデコード処理を行うことを特徴とする２次元コードの読取方法。
【請求項１０】
請求項９記載の２次元コードの読取方法において、
前記２次元コードは、更に、前記位置決め用シンボルに対する所定位置に配置されて、２次元コード中の前記各情報の各々についての存在領域及び使用コード種類を特定可能なフォーマットコードを備えており、
前記２次元コード位置決め処理を行った後、検出された前記位置決め用シンボルの位置に基づいて前記フォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行い、
前記セル等位置決め処理は、取得された前記２次元コードのフォーマットに基づいて、前記第１の情報を表現するためのデータセルあるいは第２の情報を表現するためのバーの少なくともいずれか一方の位置を検出し、
前記デコード処理は、取得された前記２次元コードのフォーマットに基づいてコード種類に対応する解読アルゴリズムを特定し、その特定した解読アルゴリズムを用いてコード情報を読み取ること、
を特徴とする２次元コードの読取方法。
【請求項１１】
請求項１〜１０のいずれか記載の２次元コードの読取方法が、コンピュータシステムにて実行するプログラムとして記録されたことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２次元コードの読取方法に関する。
【０００２】
【従来の技術】
従来、提案されている２次元コードとしては、例えば特開平７−２５４０３７号公報記載のものがある。この２次元コードは、図１５（ｂ）に一例を示すごとく情報が２次元的な広がりを持ち、図１５（ａ）に示すバーコードに比べて格段に大量の情報を記録できるが、構造は複雑なものとなっている。
【０００３】
すなわち、図１６に示すごとく、２次元コード５００の存在位置の確定を容易にするために、例えば、特定寸法比率の正方形を組み合わせた位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃを３個持っている。また、３個の位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃ相互の間には白と黒とが交互に組み合わせられた各データセル位置の指標となる基準パターンであるタイミングセル５２０ａ，５２０ｂがある。
【０００４】
２次元コード５００の内部は、ｎ×ｎの正方形の升目（以下、これをセルという）に区切られており、位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃは、例えば、一辺の長さが７セルに相当する黒い正方形５１２、一辺の長さが５セルに相当する白い正方形５１４、一辺の長さが３セルに相当する黒い正方形５１６を同心状に重ね合わせた時にできる図形である。
【０００５】
この位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃの中心付近を直線的に横切ると、黒、白、黒、白、黒のパターンが１：１：３：１：１の比率で検出されるので、この性質を利用して、前記比率で黒と白が交互に検出された場合、そのパターンを位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃの有力な候補と判断し、２次元コード５００の存在位置を確定するために優先的に検査する。
【０００６】
そして、２次元コード５００の形状は、３個の位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃで一義的に決まる平行四辺形の範囲であると推定できる。なお、データは、位置決め用シンボルや基準パターンなどを除外した領域５３０のセル（すなわち、データセル）で表され、各データセルを白あるいは黒に色分けすることにより、各データセルを１ビットのデータに対応させている。ただし、図１６ではデータセルの白黒のパターンは判り易くするために省略されている。
【０００７】
各データセルの位置は、３個の位置決め用シンボル５１０ａ，５１０ｂ，５１０ｃの中心と２つのタイミングセル５２０ａ，５２０ｂを、それぞれ縦方向と横方向の座標の指標として、簡単な計算により求めることができる。
このように位置が決定した、各データセルの中心付近が黒であるか白であるかを判定して、黒を例えば１，白を例えば０に対応させることにより、２値データとして認識でき、解読することができる。
【０００８】
なお、図１６ではデータセル３３０の白黒のパターンは省略しているが、そのデータセル３３０におけるセルサイズは位置決め用シンボル３１０ａ，３１０ｂ，３１０ｃのセルサイズと同じである。
【０００９】
【発明が解決しようとする課題】
このような２次元コードにおける１セルのサイズは、その用途に応じて適宜変更することが要求される。例えば２次元コードを印刷したラベルが物品に付されている場合、その物品が高速移動している状態でラベルから２次元コードの読取を行う必要があれば、セルサイズをある程度大きくしなくてはならないが、その物品が停止あるいは低速移動している状態でラベルから２次元コードの読取を行うのであれば、セルサイズを相対的に小さくしても構わないからである。
【００１０】
例えば、物品の仕分け段階などには、大量の物品を処理する関係から、高速移動させながら２次元コードを読み取ることが好ましい。一方、仕分けされた物品について作業者が手作業で何らかの処理をする場合には、例えば手持ちの読取装置で２次元コードを読み取ることとなるが、この場合には、読取可能なより小さなセルサイズで２次元コードを構成した方が、２次元コード自体を小さくできるため、好ましい。
【００１１】
しかしながら、これを実現するためには、例えば高速移動時読取用には相対的に大きなセルサイズの２次元コードを印刷したラベル、手持ちの読取装置用には相対的に小さなセルサイズの２次元コードを印刷したラベル、というように２種類のラベルを用意し、それぞれ物品に付さなくてはならない。そのため、ラベル作成やラベル添付の作業増大につながってしまう。
【００１２】
もちろん、１つのラベル内に、高速移動時に読み取る対象のデータと手持ちの読取装置にて読み取る対象のデータとを含めた２次元コードを構成することもできる。但し、この場合のセルサイズは、高速移動時読取用のセルサイズにしなくてはならないため、手持ちの読取装置にて読み取る対象のデータについては、本来はそのような大きなセルサイズにしなくてもよいにもかかわらず、必要以上に大きなセルサイズにて構成してしまうこととなる。つまり、２次元コード自体が大きくなってしまう。読取処理では、予め決められた一定の範囲のみの読み取りであるため、２次元コードが大きくなると、その大きな２次元コードに対処するため読取装置のハードやソフトの構成もそれに対応したものにする必要がある。
【００１３】
このような観点から、用途に合わせて適切なセルサイズにてコードを形成できる上、それら複数の用途に応じたコードを混在させることのできる２次元コードを発明したため、本発明は、その２次元コードを読み取る方法を提供することを目的とする。
【００１４】
【課題を解決するための手段及び発明の効果】
請求項１記載の２次元コードの読取方法は、次のような２次元コードを読み取ることを前提としている。つまり、セルの分布パターンにより情報を表現する２次元コード内の所定位置に配置され、２次元コードの位置を特定する位置決め用シンボルと、各データセル位置の指標となる基準パターンであるタイミングセルと、を備え、その位置決め用シンボルを構成するセルと同じセルサイズのセルを用いて表現された第１の情報と、その位置決め用シンボルを構成するセルより小さなセルサイズのセルを用いて表現された第２の情報とが、それぞれ２次元コード内の所定位置に配置されている２次元コードである。この２次元コードによれば、用途に合わせて適切なセルサイズにてコードを形成できる上、それら複数の用途に応じたコードを混在させることができる。
【００１５】
そして、本発明の２次元コードの読取方法は、まず、２次元コードの走査等により２次元コードの画像を得るとともに、画像中での位置決め用シンボルの位置を検出する２次元コード位置決め処理を行う。次に、２次元コード内の第１の情報あるいは第２の情報の少なくともいずれか一方のデータセルの位置を、位置決め用シンボルの位置及び各情報のセルサイズに基づいて検出するセル位置決め処理を行う。次に、位置が検出されたデータセルに基づいて、第１の情報あるいは第２の情報の内の少なくともいずれか一方のコード情報を読み取るデコード処理を行う。
【００１６】
このように、２次元コード内に含まれている複数のコード情報について、それらを区別していずれか一方を読み取ったり、あるいは両方を読み取ったりすることができる。したがって、例えば、この２次元コードを印刷したラベルの付された物品が高速移動する状態で読み取る場合には、位置決め用シンボルを構成するセルと同じセルサイズのセルを用いて表現された第１の情報のみを読み取り、物品が低速移動あるいは停止した状態で読み取る場合には、位置決め用シンボルを構成するセルよりも小さなセルサイズのセルを用いて表現された第２の情報のみを読み取る、といったこともできる。
【００１７】
なお、読取対象の２次元コード中の第２の情報が、さらに複数種類の情報が、それぞれ異なるセルサイズのセルを用いて表現されているものである場合には、次のような２次元コード読取方法を採用してもよい。
すなわち、請求項３に示すように、セル位置決め処理において、２次元コード内の第１の情報あるいは第２の情報を構成する複数のセルサイズの各情報の少なくともいずれか一つのデータセルの位置を、位置決め用シンボルの位置及び各情報のセルサイズに基づいて検出する。そして、デコード処理としては、位置が検出されたデータセルに基づいて、第１の情報及び第２の情報を構成する複数のセルサイズの各情報の内の少なくともいずれか一つのコード情報を読み取るのである。
【００１８】
例えば、第１の情報のセルサイズよりも小さなセルサイズを用いて表現された情報Ａと、その情報Ａのセルサイズよりも小さなセルサイズを用いて表現された情報Ｂとで第２の情報を構成した場合、第１の情報は高速移動時に読み取り、第２の情報の内の情報Ａは中速移動時に読み取り、情報Ｂは低速あるいは停止時に読み取る、といった用途別に選択読み取りが可能となる。もちろん、情報Ｂのセルサイズよりもさらに小さなセルサイズを用いて表現された情報Ｃ、情報Ｃのセルサイズよりもさらに小さなセルサイズを用いて表現された情報Ｄ……というように、３種類以上の情報で第２の情報を構成した場合でも同様である。つまり、３種類以上の情報について、任意のものだけ読み取ることができる。
【００１９】
なお、第２の情報に対応するセルサイズは、位置決め用シンボルに対応するセルサイズを基準とした比率で設定されていてもよい。例えば、１／２，１／３，１／４……というように１／ｎ（ｎは自然数）で設定することが考えられる。もちろん、ｎ／ｍ（ｍ，ｎは自然数、但しｍ＞ｎ）というような比率でもよい。また、分数倍でなく小数倍であっても構わない。位置決め用シンボルは最初にその位置や形状が決定されるので、セル位置決め処理において、この位置決め用シンボルの形状を基準として、比率で第１の情報及び第２の情報のセルサイズを迅速・容易に特定できる。
【００２０】
なお、位置決め用シンボルは、複数の異なる方向または複数の異なる位置において走査した場合に特定の周波数成分比が得られるパターンであれば、走査により迅速に位置決め用シンボルが検出できるので、２次元コード位置決め処理を迅速に行うことがき、結果的に２次元コードの読取処理が迅速に行える。
【００２１】
また、読取対象の２次元コード中の第１の情報が、位置決め用シンボルに対応するコード種類を用いたコードにて表現され、第２の情報は、第１の情報と異なるコード種類を用いたコードにて表現されたものである場合には、次のような２次元コード読取方法を採用してもよい。
【００２２】
すなわち、請求項４に示すように、デコード処理において、デコード対象の情報に用いられているコード種類に対応する解読アルゴリズムを用いてコード情報を読み取るのである。例えば、同じマトリックス式の２次元コードであっても「ＱＲコード」、「ＣＰコード」、「カルラコード」あるいは「ベリコード」（これらは何れも登録商標）など複数のコード種類が存在し、それぞれを解読するためのアルゴリズムは当然異なる。したがって、第１の情報、第２の情報それぞれに使用されているコード種類に応じた解読アルゴリズムを用いれば、各コード情報を読み取れる。
【００２３】
なお、第２の情報が、異なるセルサイズのセルを用いた複数種類の情報で構成され、その第２の情報を構成する各情報は、第１の情報と異なるコード種類を用いたコードと異なるコード種類を用いたコードにて表現されていると共に、それら各情報同士においてもさらに、それぞれ異なるコード種類を用いたコードにて表現された２次元コードである場合にも同様に適用できる。すなわち、デコード処理において、第１の情報、第２の情報を構成する各情報の内のデコード対象の情報に用いられているコード種類に対応する解読アルゴリズムを用いてコード情報を読み取るのである。
【００２４】
また、読取対象の２次元コードが、更に、位置決め用シンボルに対する所定位置に配置されて、２次元コード中の各情報の各々についての存在領域及びセルサイズを特定可能なフォーマットコードを備えている場合には、次のような２次元コード読取方法を採用してもよい。
【００２５】
すなわち、請求項６に示すように、２次元コード位置決め処理を行った後、検出された位置決め用シンボルの位置に基づいてフォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行う。そして、セル位置決め処理としては、取得された２次元コードのフォーマットに基づいてデータセルの位置を検出するのである。つまり、フォーマットコードは、２次元コード中の各情報の各々についての存在領域及びセルサイズを特定可能であるため、第１の情報を構成するデータセルの位置、第２の情報を構成するデータセルの位置を個別に検出することができる。そのため、第１に情報のみデコードしたり、第２の情報のみデコードしたり、もちろん、両方ともデコードすることができる。
【００２６】
なお、このフォーマットコードは、例えば、２次元コードの情報を表しているデータセルと同じ様式のセルの分布パターンで表すことが考えられる。このように表せば、容易にフォーマットコードを検出することができる。
ところで、このような２次元コードのフォーマットについては、同一のフォーマットの２次元コードしか読取対象としない場合には、必ずしも必要ではない。つまり、その特定のフォーマットの２次元コードを読み取るための専用の解読アルゴリズムのみを準備すれば足りるからである。しかし、複数のフォーマットで表現される２次元コードが読取対象である場合には、読取対象の２次元コードのフォーマット自体をその時点で２次元コードから直接取得することが好ましい。したがって、本読取方法においては、２次元コードの読み取り時に、２次元コード中からフォーマットコードを読み取り、解読対象の２次元コード中における第１の情報及び第２の情報の存在領域及びセルサイズを把握し、それに基づいて解読する。
【００２７】
また、第１の情報に使用されているコード種類と第２の情報に使用されているコード種類が異なり、フォーマットコードが、前記各情報の各々についての存在領域及びセルサイズに加えて、使用コード種類も特定可能にされている２次元コードを読取対象とする場合には、次のような２次元コード読取方法を採用してもよい。
【００２８】
すなわち、請求項７に示すように、２次元コード位置決め処理を行った後、検出された位置決め用シンボルの位置に基づいてフォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行い、セル位置決め処理として、取得された２次元コードのフォーマットに基づいて、データセルの位置を検出する。そして、デコード処理としては、取得された２次元コードのフォーマットに基づいてコード種類に対応する解読アルゴリズムを特定し、その特定した解読アルゴリズムを用いてコード情報を読み取るのである。
【００２９】
なお、フォーマットコードとしては、第１及び第２の情報の存在領域やセルサイズ、あるいは使用コード種類を直接示していてもよいし、あるいは間接的に示すものであってもよい。つまり、存在領域、セルサイズ、使用コード種類などの違いによって例えばデータ種別分類をし、その分類を示す情報のみをフォーマットコードとし、分類情報と存在領域、使用コード種類、セルサイズなどとの対応関係自体は本読取方法を実現する読取装置側が保持する。
【００３０】
また、２次元コードが、２次元コード内にて位置決め用シンボルとは異なる位置に配置され、位置決め用シンボルの位置と自身のパターンとに基づいて位置検出される補助シンボルを備えているものである場合には、請求項８に示すような読取方法を採用してもよい。すなわち、２次元コード位置決め処理を行った後、検出された位置決め用シンボルの位置と補助シンボルのパターンとに基づいて、画像中での補助シンボルの位置を検出する補助シンボル位置決め処理を行う。そして、セル位置決め処理においては、補助シンボルにも基づいてデータセルの位置を検出するのである。
【００３１】
このように、セル位置決め処理において、位置決め用シンボルのみでなく、補助シンボルも加えて、データセル近傍の位置決め用シンボルまたは補助シンボルの位置を用いているので、２次元コードが歪んでいても、位置決め用シンボルのみを基準としてデータセルを位置決めする場合に比較して、データセルが正確に位置決めされる。例えば、セル位置決め処理においては、各位置決め用シンボルおよび各補助シンボルの形状に基づいて、位置決め用シンボルまたは補助シンボルの周辺のデータセルの位置を検出することとすれば、２次元コードの歪みは、位置決め用シンボルおよび補助シンボルの形状に反映されているので、データセルの位置決めにも、２次元コードの歪みが反映され、正確にデータセルの位置決めができる。
【００３２】
また、補助シンボルは、位置決め用シンボルのごとく、最初に２次元コードを位置決めするための基準としては用いられないので、２次元コード位置決め処理自体は、その処理量が徒に増加することなく迅速に行うことができる。なお、補助シンボルが、位置決め用シンボルよりも小さく形成されていれば、データセルの領域がそれだけ大きく確保できるので好ましい。補助シンボルは、２次元コードの位置決めを行う位置決め用シンボルほど大きなパターンを用いなくても、既に位置決め用シンボルにより２次元コードの位置は確定されているので、位置決め用シンボルよりも小さくても正確に位置が決定できる。
【００３３】
さらに、位置決め用シンボルは、複数の異なる方向または複数の異なる位置において走査した場合に特定の周波数成分比が得られるパターンであれば好ましいことは上述したが、同様に、補助シンボルも、複数の異なる方向または複数の異なる位置において走査した場合に特定の周波数成分比が得られるパターンであっても良く、位置決め用シンボルの検出の後、補助シンボル検出処理が迅速に行えるので、２次元コードの迅速な読み取りのために好ましい。
【００３４】
ところで、これまでの説明では、情報を表現するために用いるセルサイズが異なることを前提としていたが、第１の情報及び第２の情報の両者ともセルの分布パターンにより情報を表現する２次元コードであった。これに対して、セルの分布パターンにより情報を表現する２次元コード内の所定位置に配置され、２次元コードの位置を特定する位置決め用シンボルを備え、その位置決め用シンボルに対応するコード種類を用いた２次元コードにて表現された第１の情報と、バーコードにて表現された第２の情報とが、それぞれ２次元コード内の所定位置に配置された２次元コードを読対象とする場合には、次のような２次元コード読取方法を採用してもよい。
【００３５】
すなわち、請求項９に示すように、まず、２次元コードの画像を得るとともに、画像中での位置決め用シンボルの位置を検出する２次元コード位置決め処理を行う。次に、２次元コード内の前記第１の情報を表現するためのデータセルあるいは第２の情報を表現するためのバーの少なくともいずれか一方の位置を、位置決め用シンボルの位置に基づいて検出するセル等位置決め処理を行う。次に、位置が検出されたデータセルに基づく第１の情報のコード情報の読取あるいは位置が検出されたバーに基づく第２の情報のコード情報の読取の少なくともいずれか一方のデコード処理を行う。
【００３６】
このようにすれば、セルを２次元状に配置した「２次元コード」からなる第１の情報と、バーを１次元状に配置した「バーコード」からなる第２の情報とが混在していても、やはり第１の情報のみ読み取ったり、第２の情報のみ読み取ったり、あるいは両方とも読み取ったりすることが自由に行える。なお、当然であるが、第１に情報と第２の情報とでは解読アルゴリズムが異なる。
【００３７】
そして、この場合も、同一のフォーマットの２次元コードしか読取対象としない場合には、その特定のフォーマットの２次元コードを読み取るための専用の解読アルゴリズムのみを準備すれば足りるが、複数のフォーマットで表現される２次元コードが読取対象である場合には、やはり、読取対象の２次元コードのフォーマット自体をその時点で２次元コードから直接取得することが好ましい。したがって請求項１０に示すように、２次元コードが、更に、位置決め用シンボルに対する所定位置に配置されて、２次元コード中の各情報の各々についての存在領域及び使用コード種類を特定可能なフォーマットコードを備えている場合には、次のような読取方法を採用すればよい・
すなわち、２次元コード位置決め処理を行った後、検出された位置決め用シンボルの位置に基づいてフォーマットコードを検出し、そのフォーマットコードが表す２次元コードのフォーマットを取得するフォーマット取得処理を行う。そして、前記セル等位置決め処理としては、取得された２次元コードのフォーマットに基づいて、第１の情報を表現するためのデータセルあるいは第２の情報を表現するためのバーの少なくともいずれか一方の位置を検出する。また、デコード処理としては、取得された２次元コードのフォーマットに基づいてコード種類に対応する解読アルゴリズムを特定し、その特定した解読アルゴリズムを用いてコード情報を読み取る。
【００３８】
なお、このような２次元コードの読取方法を実行する機能は、例えば、デジタル回路やコンピュータシステム側で起動するプログラムとして備えられる。プログラムで実現する場合、例えば、フレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ハードディスク等の機械読み取り可能な記録媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ＲＯＭやバックアップＲＡＭを機械読み取り可能な記録媒体として前記プログラムを記憶しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータシステムに組み込んで用いても良い。
【００３９】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り、種々の形態を採り得ることは言うまでもない。
【００４０】
図１のブロック図に、上述した発明が適用された２次元コード読取装置２の概略構成を示す。
２次元コード読取装置２は、ＣＣＤ４、２値化回路６、画像メモリ８、クロック信号出力回路１４、アドレス発生回路１６、変化点検出回路１８、比検出回路２０、アドレス記憶メモリ２２および制御回路２８から構成されている。
【００４１】
制御回路２８は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を備えたコンピュータシステムとして構成され、ＲＯＭに記憶されているプログラムに従って、後述する２次元コード読み取り処理等を実行し、２次元コード読取装置２の各構成を制御している。
【００４２】
ここで、２次元コード読取装置２にて検出される２次元コードの一例の概略図を図２に示す。この２次元コード５２は、白色の台紙５３の上に印刷されており、３個の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ、データ領域５６、１個の補助シンボル６０、タイミングセル２０ａ，２０ｂ及びフォーマットコード７０などから構成されている。
【００４３】
本実施例では、データ領域５６が第１データ領域Ａａ及び第２データ領域Ａｂに分割されており、両データ領域Ａａ，Ａｂで用いられているデータセルのセルサイズとが異なっている。具体的には、第１データ領域Ａａで用いられているデータセルのセルサイズは、第２データ領域Ａｂに用いられているデータセルのセルサイズの縦横それぞれ２倍したいわゆる「４倍角セル」とされている。なお、図２では、第１データ領域Ａａ及び第２データ領域Ａｂそれぞれにおいて、２セル×４セルの計８個で構成されるセルグループ単位で区切って示している。これは、１セルを１ビットと考えた場合に、１セルグループで１バイトを示すことができるため、このような単位で設定することにより読み取った後のデータ処理に都合がよいからである。
【００４４】
したがって、実際には、第１データ領域Ａａの１セルグループを示した図２（ｂ）中の１つの正方形の升目が、第１データ領域Ａａで用いられているデータセルのセルサイズを示している。同様に、第２データ領域Ａｂの１セルグループを示した図２（ｃ）中の１つの正方形の升目が、第２データ領域Ａｂで用いられているデータセルのセルサイズを示している。そして、第１データ領域Ａａのデータセルで表現されるものが「第１の情報」であり、第２データ領域Ａｂのデータセルで表現されるものが「第２の情報」である。
【００４５】
また、２次元コード５２全体のサイズは、第１データ領域Ａａで用いられているデータセルを基準として、２９セル×２９セルの正方形状とされている。もちろん、第２データ領域Ａｂで用いられているデータセルを基準とすれば５８セル×５８セルと表されるが、本実施例では、特に必要がない限り、第１データ領域Ａａで用いられているデータセルを基準として説明することとする。
【００４６】
データ領域５６中の各セルは、光学的に異なった２種類のセルから選ばれており、図および説明上では白（明）・黒（暗）で区別して表す。なお、図２では便宜上、データ領域５６のデータセルの白黒のパターンは省略している。もちろん、第１データ領域Ａａ及び第２データ領域Ａｂそれぞれにおいて、各データ領域Ａａ，Ａｂで用いられているデータセルの単位（図２（ｂ），（ｃ）参照）で明暗が区別して表されている。
【００４７】
３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃは、２次元コード５２の４つの頂点の内、３つに配置されており、第１データ領域Ａａで用いられているのと同じセルサイズのデータセルにて構成されている。なお、技術思想的には、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃを構成するセルと同じセルサイズのデータセルを第１データ領域Ａａで用いたと考える方が適切である。したがって、第２データ領域Ａｂでは、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃを構成するセルの４分の１のセルサイズのデータセルを用いたこととなる。
【００４８】
この位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのセルの明暗配置は、図３（Ａ）に示すごとく、１セル幅の黒部からなる枠状正方形５５ａ内の中心部分に、１セル幅の白部からなる縮小した枠状正方形５５ｂが形成され、その内側の中心部分に黒部からなる３セル×３セルの大きさの正方形５５ｃが形成されているパターンである。
【００４９】
なお、図２からも判るように、第１データ領域Ａａは位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置され、一方、第２データ領域Ａｂは、それ以外の部分（図２（ａ）では右下部分）に配置されることとなる。
また、補助シンボル６０は、図２に示すごとく、第２データ領域Ａｂの内部に配置されているが、やはり第１データ領域Ａａで用いられているのと同じセルサイズのデータセルにて構成されている。この補助シンボル６０のセルの明暗配置は、図３（Ｃ）に示すごとく、１セル幅の黒部からなる枠状正方形６１ａ内の中心部分に、１セル幅の白部からなる縮小した枠状正方形６１ｂが形成され、その内側の中心部分に１セルの黒部からなる正方形６１ｃが形成されているパターンである。
【００５０】
一方、タイミングセル２０ａ，２０ｂは、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置されており、第１データ領域Ａａで用いられているのと同じセルサイズのデータセルにて構成されている。このタイミングセル２０ａ，２０ｂは、白と黒とが交互に組み合わせられた各データセル位置の指標となる基準パターンとして用いられる。
【００５１】
また、フォーマットコード７０は、位置決め用シンボル５４Ａの近傍に配置されており、第１データ領域Ａａで用いられているのと同じセルサイズのデータセルにて構成されている。このフォーマットコード７０は、第１及び第２の情報の各々についての存在領域、使用しているコード種類、セルサイズの内の少なくとも１つを特定可能な内容となっている。
【００５２】
なお、この場合のフォーマットコード７０は、第１及び第２の情報の各々についての存在領域、使用コード種類、セルサイズを直接示していてもよいし、あるいは間接的に示すものであってもよい。つまり、存在領域、使用コード種類、セルサイズなどの違いによって例えばデータ種別分類をし、その分類を示す情報（例えば数字など）のみをフォーマットコードとして有するものであってもよい。この場合には、２次元コード読取装置２の例えば制御回路２８内のＲＡＭ等に、分類情報と、存在領域、使用コード種類、セルサイズなどとの対応関係を例えばテーブル化して格納しておけば対処できる。
【００５３】
制御回路２８は、以下に述べるごとくの読み取り制御を行う。
まず制御回路２８の指示により、ＣＣＤ４にて２次元コード５２が通過する場所の２次元画像を検出する。ＣＣＤ４は、２次元画像を検出すると、図４（ａ）に示すごとくの多段階のレベルからなる信号にて２次元画像データを出力する。この２次元画像データを、２値化回路６が制御回路２８から指示された閾値にて２値化して、図４（ｂ）に示すごとくの１（ハイ）／０（ロー）の２つのレベルからなる信号に変換する。
【００５４】
一方、ＣＣＤ４から出力される同期パルスに応じて、クロック信号出力回路１４がＣＣＤ４から出力される２次元画像データのパルスより十分に細かいクロックパルスを出力する。アドレス発生回路１６はこのクロックパルスをカウントして、画像メモリ８に対するアドレスを発生させる。２値化された２次元画像データは、このアドレス毎に８ビット単位で書き込まれる。
【００５５】
一方、２値化回路６からの信号における「１」から「０」への変化あるいは「０」から「１」への変化時に、変化点検出回路１８は、比検出回路２０にパルス信号を出力する。比検出回路２０は、変化点検出回路１８からのパルス信号入力から次のパルス信号入力までに、クロック信号出力回路１４から出力されたクロックパルスをカウントすることにより、２次元画像中の明（１）の連続する長さおよび暗（０）の連続する長さを求める。この長さの比から、２次元コード５２の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃに該当するパターンを検出する。
【００５６】
図３（Ａ）に示したごとく、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのほぼ中心を代表的な角度で横切るＣＣＤ４の走査線（ａ），（ｂ），（ｃ）での明暗パターンは、図３（Ｂ）に示すごとく、すべて同じ明暗成分比を持つ構造になっている。すなわち、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの中心を横切るそれぞれの走査線（ａ），（ｂ），（ｃ）の明暗成分比は暗：明：暗：明：暗＝１：１：３：１：１となっている。勿論、走査線（ａ），（ｂ），（ｃ）の中間の角度の走査線においても比率は１：１：３：１：１である。また、図３（Ａ）の図形が、ＣＣＤ４側から見て斜めの面に配置されていたとしても、前記走査線（ａ），（ｂ），（ｃ）の明暗成分比は暗：明：暗：明：暗＝１：１：３：１：１を維持する。なお、図３（Ｂ）は、２値化回路６からの２値化された信号に該当する。
このことにより、比検出回路２０は、この「１：１：３：１：１」なる明暗成分比を検出し、検出した場合は、そのタイミングにアドレス発生回路１６にて発生されている画像メモリ８のアドレスをアドレス記憶メモリ２２に記憶する。
【００５７】
したがって、ＣＣＤ４が１フレーム分の２次元画像データを検出すると、画像メモリ８には、２値化された２次元画像データが記憶され、アドレス記憶メモリ２２には、検出された分の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのアドレスが記憶されている。
【００５８】
なお、最初の２次元画像の１フレーム分の画像が得られると、制御回路２８は、画像メモリ８およびアドレス記憶メモリ２２のデータに基づいて後述する２次元コード読み取り処理を行い、この処理が終了すれば、制御回路２８は、続けて、ＣＣＤ４に次の１フレームの２次元画像の検出を指示する。したがって、ＣＣＤ４からは、再度、２次元画像が２値化回路６に出力され、上述したごとくの処理が繰り返される。
【００５９】
次に、１フレーム分の２次元コード５２の画像とその位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのアドレスが、画像メモリ８とアドレス記憶メモリ２２とにそれぞれ記憶された後に、制御回路２８は、２次元コード読み取り処理を実行する。この２次元コード読み取り処理を図５，６のフローチャートに示す。
【００６０】
処理が開始されると、まず、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの検出処理が行われる（Ｓ１００）。
この処理では、画像メモリ８およびアドレス記憶メモリ２２に対してアクセスし、その記憶内容から位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃが適切な位置に、３つ存在しているか否かの判断と位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの画像上での正確な形状と中心位置とを決定する。
【００６１】
この処理は、まずアドレス記憶メモリ２２に多数検出された位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのアドレスが、位置的に３つのグループに分けられるかを、そのアドレス値と画像メモリ８の画像とを参照しつつ判断する。更に、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの形状と中心位置とを、画像メモリ８の画像の１（白）／０（黒）のパターンから決定し、その３つが図２に示したごとく３つの頂点に存在する配置状態になっているかを判断する。
【００６２】
次に、ステップＳ１００にて適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃが検出されたか否かが判定され（Ｓ１２０）、検出されていなければ（Ｓ１１０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（図６のＳ２８０）、処理を終了する。
【００６３】
適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃが検出されると（Ｓ１１０で「ＹＥＳ」）、次に新しい２次元コード５２か否かが判定される（Ｓ１２０）。この処理は、前回以前に検出された２次元コード５２がいまだＣＣＤ４により検出され続けている場合に、別の２次元コードとして解読するのを防止するためである。例えば、前回または所定回数前の本処理にて、適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃが検出され、更にそのコード内容も既に適切に読み取られていた場合には、同一の２次元コード５２を検出しているものとして（Ｓ１２０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（Ｓ２８０）、処理を終了する。
【００６４】
新しい２次元コード５２であると判定すると（Ｓ１２０で「ＹＥＳ」）、次に位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの形状に応じて、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃを構成する各セルの形状と中心位置が計算される（Ｓ１３０）。
【００６５】
すなわち、まず、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃについては、図２，図３（Ａ）に示すように、黒の枠状正方形５５ａの幅が１セル分、白の枠状正方形５５ｂの幅が１セル分、および黒の正方形５５ｃの幅が３セル分の形状であることから、画像メモリ８内の各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ全体の高さと幅とから、その高さと幅とをそれぞれ７で割ることにより、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの位置におけるセルの高さと幅の値、すなわちセルの形状を各３つ得る。
【００６６】
次に、このようにして求められた各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃにおけるセルの高さと幅に基づいて、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃにおける各セル位置を決定する。
次に、位置決め用シンボル５４Ａに基づいてフォーマットコード７０の検出処理を行う（Ｓ１４０）。このフォーマットコード７０は、位置決め用シンボル５４Ａの最外周の枠状正方形５５ａ（図３（Ａ）参照）を構成する４辺の内、位置決め用シンボル５４Ｂに対向する辺に対して、１セル分だけ離れて平行に配置されている。したがって、この関係に基づけばフォーマットコード７０の位置が判り、コード検出することができる。
【００６７】
次に、第１の情報をデコードするかどうかを判断し（Ｓ１５０）、デコードするのであれば（Ｓ１５０で「ＹＥＳ」）、第１の情報のコードをデコードする（Ｓ１６０）。
ここで、Ｓ１６０における第１の情報のコードのデコード処理の詳細について、図７のフローチャートを参照して説明する。
【００６８】
本処理ルーチンが開始すると、まず、図５のＳ１４０にて検出したフォーマットコード７０に基づき、２次元コード５２中の第１データ領域Ａａの存在位置とその中に含まれているデータセルのセルサイズを特定する（Ｓ１６１）。この場合のフォーマットコード７０は、各データ領域の存在位置（存在領域）及びそのデータ領域中に含まれているデータセルのセルサイズなどの違いによってデータ種別分類された場合の、その分類を示す情報（例えば数字など）がコード化されたものである。つまり、この場合には、２次元コード読取装置２の例えば制御回路２８中のＲＡＭ内に、分類情報と、存在領域・セルサイズとの対応関係がテーブル化されて格納されている。したがって、このＳ１６１においては、その対応関係テーブルを参照して、存在領域及びセルサイズを特定する。
【００６９】
次に、Ｓ１６１にて特定された存在領域及びセルサイズと図５のＳ１３０にて検出された位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの形状及び中心位置に基づいて、第１で領域Ａａ内の各データセルの中心位置を決定する（Ｓ１６２）。
そして、各データセルの中心位置の画素から２値を読み取り、各セルの種類を決定しコード内容を得る（Ｓ１６３）。すなわちデコード処理を行う。このＳ１６３のデコードの際には、必要に応じてフォーマットコード７０から得たフォーマット情報に基づいた処理を実行する。例えば、第１データ領域Ａａにおいて２セル×４セルで区切って示されたセルグループの配置パターンは必ずしも整列している訳ではなく、例えば、位置決め用シンボル５４Ａ，５４Ｂ間のセルグループは縦長のものと横長のものが混在しており、位置決め用シンボル５４Ａ，５４Ｃ間のセルグループは縦長のものだけである。したがって、このようなセルグループの配置パターンなどを特定するためのフォーマット情報をフォーマットコード７０から得て、それに基づいてデコードすればよい。
【００７０】
こうして、第１の情報のコードが表している情報が得られ、本処理ルーチンを終了してメインルーチンに復帰し、図６のＳ１７０へ移行する。
Ｓ１７０では、このコード内容が正常なものか否かが判定される。例えば、白と黒とのセル数が予め決められている特定の数になっているか否か、あるいは表されているデータを所定の計算方法で計算した結果が２次元コード５２内の所定範囲に表示されているチェック用データと一致しているか否か等により、正常にコードが読み取られているか否かが判定される。
【００７１】
正常なコードであれば（Ｓ１７０で「ＹＥＳ」）、その第１の情報を出力するかどうかを判断し（Ｓ１８０）、出力するのであれば（Ｓ１８０で「ＹＥＳ」）、そのコード内容をホストコンピュータ等の他の装置へ出力したり、そのコード内容を特定のメモリに記憶したり、そのコード内容に対応した処理を実行したり、あるいはそのコード内容に対応した指示を出力したりする処理（以下、コード内容出力等処理」と称す）が行われる（Ｓ２６０）。その後、次の画像の検出をＣＣＤ４に指示して（Ｓ２８０）、処理を終了する。
【００７２】
一方、第１の情報をデコードした結果、正常なコードでなければ（Ｓ１７０で「ＮＯ」）、Ｓ１９０へ移行する。なお、上述のＳ１５０にて否定判断、つまり第１の情報をデコードしないと判断された場合もこのＳ１９０へ移行する。Ｓ１９０では、第２の情報をデコードするかどうか判断し、第２の情報をデコードしない場合には（Ｓ１９０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（Ｓ２８０）、処理を終了する。
【００７３】
これに対して、第２の情報をデコードする場合には（Ｓ１９０で「ＹＥＳ」）、Ｓ２００へ移行して、第２の情報のコードをデコードする。なお、Ｓ１８０にて否定判断、つまり第１の情報を出力しないと判断された場合もこのＳ２００へ移行し、第２の情報のコードをデコードする。
【００７４】
ここで、Ｓ２００における第２の情報のコードのデコード処理の詳細について、図８のフローチャートを参照して説明する。
本処理ルーチンが開始すると、まず、図５のＳ１４０にて検出したフォーマットコード７０に基づき、２次元コード５２中の第２データ領域Ａｂの存在位置とその中に含まれているデータセルのセルサイズを特定する（Ｓ２０１）。この内容については、上述した図７のＳ１６１の場合と同様であるので繰り返さない。
【００７５】
次に、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃに対して所定の位置に配置されている補助シンボル６０の中心位置を、前述のごとく（図５のＳ１３０）得られている位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃを構成しているセルの形状と中心位置とに基づいて計算で求め、更に計算位置周辺にて画像を精査して正確に形状と位置とを決定する（Ｓ２０２）。
【００７６】
なお、図３（Ｄ）に示すごとく、補助シンボル６０の中心を横切るそれぞれの直線（ａ），（ｂ），（ｃ）の明暗成分比は暗：明：暗：明：暗＝１：１：１：１：１となる性質は本質的に図３（Ａ），（Ｂ）に示した位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃと同じである。
【００７７】
そして、このように正確な形状と正確な中心位置とが決定された補助シンボル６０に対して、補助シンボル６０を構成する各セルの形状と中心位置とを決定する（Ｓ２０３）。
次に、Ｓ２０１にて特定された存在領域及びセルサイズ、図５のＳ１３０にて検出された位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃの形状及び中心位置、さらに補助シンボル６０のデータに基づいて、第２データ領域Ａｂ内の各データセルの中心位置を決定する（Ｓ２０４）。
【００７８】
そして、各データセルの中心位置の画素から２値を読み取り、各セルの種類を決定しコード内容を得る（Ｓ２０５）。こうして、第２の情報のコードが表している情報が得られ、本処理ルーチンを終了してメインルーチンに復帰し、図６のＳ２１０へ移行する。
【００７９】
Ｓ２１０では、このコード内容が正常なものか否かが判定される。これは上述したＳ１７０での判定と同様である。
正常なコードであれば（Ｓ２１０で「ＹＥＳ」）、デコードされた第１の情報のデータがあるかどうかを判断し（Ｓ２２０）、第１の情報のデータがあれば（Ｓ２２０で「ＹＥＳ」）、さらに第２の情報のみデコード出力するかかどうかを判断する（Ｓ２３０）。そして、第２の情報のみデコード出力するのでない場合には（Ｓ２３０で「ＮＯ」）、デコードされた第１及び第２の情報についてコード内容出力等処理が行われる（Ｓ２４０）。一方、Ｓ２２０で否定判断、つまり第１の情報のデコードがない場合、あるいはＳ２３０で否定判断、つまり第２の情報のみデータ出力する場合には、Ｓ２７０へ移行して、デコードされた第２の情報のみについてコード内容出力等処理が行われる。
【００８０】
また、Ｓ２１０にて否定判断、つまりデコードした第２の情報のコード内容が正常でなければ、第１の情報のデータがあるかどうかを判断する（Ｓ２５０）。第１の情報のデータがあれば（Ｓ２５０で「ＹＥＳ」）、デコードされた第１の情報のみについてコード内容出力等処理が行われ（Ｓ２６０）、一方、第１の情報のデータがなければ（Ｓ２５０で「ＮＯ」）、コード内容出力等処理は行わずにＳ２８０へ移行する。
【００８１】
このように、本実施例の２次元コード読取装置２においては、２次元コード５２のデータ領域５６を構成する第１データ領域Ａａに含まれている「第１の情報」及び第２データ領域Ａｂ内に含まれている「第２の情報」について、それらを区別していずれか一方を読み取ったり、あるいは両方を読み取ったりすることができる。したがって、例えば、この２次元コード５２を印刷したラベルの付された物品が高速移動する状態で読み取る場合には、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃを構成するセルと同じセルサイズのセルを用いて表現された第１データ領域Ａａの第１の情報のみを読み取り、物品が低速移動あるいは停止した状態で読み取る場合には、その４分の１のセルサイズのセルを用いて表現された第２データ領域Ａｂの第２の情報のみを読み取る、といったこともできる。
【００８２】
このような２次元コード読取装置２を実現することで、読取対象となる２次元コード５２については、用途に合わせて適切なセルサイズにてコードを形成できる上、それら複数の用途に応じたコードを混在させることができる。そのため、従来のように、高速移動時読取用には相対的に大きなセルサイズの２次元コードを印刷したラベル、手持ちの読取装置用には相対的に小さなセルサイズの２次元コードを印刷したラベル、というように２種類のラベルを用意してそれぞれ物品に付す必要がなく、１つのラベルで済む。そして、高速移動時に読み取る対象のデータと手持ちの読取装置にて読み取る対象のデータとを同一コード内に混在させても、従来のように必要以上に２次元コードが大きくなってしまうことを防止できる。なぜなら、高速移動時読取用のデータを示す場合のセルサイズについては、その高速移動時に読み取りができる最小限の大きさにすればよく、一方、手持ちの読取装置にて読み取るデータを示す場合のセルサイズについては、停止した状態で読み取ることができる最小限の大きさにすることができるからである。つまり、セルサイズの大きな方に合わせる必要がなく、用途に合わせて極力小さなセルサイズにてコードを形成できるので、２次元コード５２自体を極力小さくできる。
【００８３】
また、第２データ領域Ａｂ内のコードのデコードに際しては、補助シンボル６０も用いている。これによって、２次元コード５２の画像が歪んでいても、データセルの位置決めが、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのみ用いた場合よりも正確に行われる。したがって、そのデータセルが表している情報も正確に読み取ることができる。また、補助シンボル６０は、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのごとく、最初に２次元コード５２を位置決めするための基準としては用いられないので、２次元コード５２の位置決め自体も処理量が徒に増加することなく迅速に行うことができる。
【００８４】
なお、読取対象の２次元コード５２としては、図２（ａ）に示すように、第１データ領域Ａａに用いるデータセルを基準とした場合に２９セル×２９セルのサイズを持つ２次元コード５２として説明したが、全体のセルサイズが異なるバージョンの２次元コード５２について対象としても実現できる。例えば図９（ａ）に示す２次元コードは、２１セル×２１セル（第２データ領域Ａｂに用いるデータセルを基準とした場合には４２セル×４２セル）であり、図９（ｂ）に示す２次元コードは、２５セル×２５セル（第２データ領域Ａｂに用いるデータセルを基準とした場合には５０セル×５０セル）である。このいずれの場合であっても、第１データ領域Ａａが位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置され、第２データ領域Ａｂは、それ以外の部分（図９では右下部分）に配置されている点は同じである。したがって、「第１の情報」を表現するための第１データ領域Ａａのデータセルの総数及び「第２の情報」を表現するための第２データ領域Ａｂのデータセルの総数は、図２（ａ）に示す場合、図９（ｂ）に示す場合、図９（ａ）に示す場合の順番に少なくなっている。
【００８５】
また、図９（ｂ）に示す場合には補助シンボル６０は付加されているが、図９（ａ）に示す場合には補助シンボル６０は付加されていない。この程度のサイズであれば、歪みの影響による読取誤差が少ないので特に補助シンボル６０を付加しなくても正確に読み取りができる。もちろん、図９（ｂ）に示す場合や図２（ａ）に示す場合に補助シンボル６０がなくてもよい。なお、図９においては図２（ａ）に示した場合よりも全体のサイズが小さいものを示したが、逆に大きなサイズのものも実現できる。そして、このように全体サイズが異なる場合には、第１データ領域Ａａにおいて２セル×４セルで区切って示されたセルグループの配置も多少異なっている。したがって、これらの違いについて区別するため、どのバージョンであるかを示すバージョン情報８０が、位置決め用シンボル５４Ａ，５４Ｂ間の第１データ領域Ａａのデータセルに隣接して配置されている。したがって、図６のＳ１６０にて実行する第１の情報のコードのデコード処理においては、まずこのバージョン情報８０を解読し、第１データ領域Ａａ内におけるセルグループの配置パターンを知った上で、デコードを行えばよい。
【００８６】
本実施例において、ＣＣＤ４、２値化回路６、クロック信号出力回路１４、タイミングにアドレス発生回路１６、変化点検出回路１８および比検出回路２０が行う処理と制御回路２８が行うステップＳ１００，Ｓ１２１とが２次元コード位置決め処理に該当し、ステップＳ１４０がフォーマット取得処理に該当する。また、ステップＳ２０２が補助シンボル位置決め処理に該当し、図７の場合であればステップＳ１６２、図８の場合であればステップＳ２０３，Ｓ２０４がセル位置決め処理に該当する。また、図７の場合であればステップＳ１６３、図８の場合であればステップＳ２０５がデコード処理に該当する。
【００８７】
［別実施例］
上記実施例での読取対象の２次元コード５２は、図２に示すように、第１データ領域Ａａは位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置され、一方、第２データ領域Ａｂは、それ以外の部分に配置されていた。つまり、データ領域５６を分割し、それぞれが２次元的に連続する領域として設定されていた。これに対して、例えば図１０に示すように、データ領域１５６内の全体にわたって第１データ領域Ａａを散点的に配置し、それ以外の領域を第２データ領域Ａｂとして設定した２次元コード１５２を読取対象とすることもできる。例えば図５のＳ１６０にて示した第１の情報のコードのデコード処理に際しては、散点的に配置されている第１のデータ領域Ａａに対応するデータセルの中心位置における２値（０か１）を判断すればよいため、このような散点的な配置であっても同様のデータ処理が可能である。
【００８８】
また、図２の場合と同様に領域を区切って設定する場合であっても、必ずしも第１データ領域Ａａが位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置される必要はない。例えば、位置決め用シンボル５４Ａと位置決め用シンボル５４Ｂの間にだけ第１データ領域Ａａを設定してもよいし、あるいは、第２データ領域Ａｂを位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃ間に配置してもよい。
【００８９】
また、これまでの説明では、「第２の情報」は位置決め用シンボル５４Ａ，５４Ｂ，５４Ｃのセルサイズの４分の１のセルサイズのデータセルを用いて表現されているとした。つまり、「第２の情報」を示すためのデータセルのサイズは全て等しいことを前提としたが、この「第２の情報」がさらに複数種類の情報の集まりであってそれぞれ異なるセルサイズのセルを用いて表現されていてもよい。例えば、図１１に示すように「第２の情報」が４種類の情報が構成されるようにして、全部で５種類のセルサイズが存在するような２次元コード２５２を読取対象としてもよい。
【００９０】
図１１の例では、２次元コード２５２の４つの頂点に位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄを配置し、位置決め用シンボル２５４Ａ，２５４Ｂ間の第１のデータ領域Ａａには、上述例と同じく位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄと同じセルサイズ、つまり（１／１）のデータセルを配置する。また、位置決め用シンボル２５４Ａ，２５４Ｃ間の第２のデータ領域Ａｂには、位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄの（１／２）のセルサイズのデータセルを配置し、位置決め用シンボル２５４Ｃ，２５４Ｄ間の第３のデータ領域Ａｃには、位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄの（１／３）のセルサイズのデータセルを配置する。そして、位置決め用シンボル２５４Ｂ，２５４Ｄ間の第４のデータ領域Ａｄには、位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄの（１／４）のセルサイズのデータセルを配置し、それ以外の第５のデータ領域Ａｅ（２次元コード２５２の中央部分の所定領域）には、位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄの（１／５）のセルサイズのデータセルを配置するのである。
【００９１】
なお、この図１１の場合には、位置決め用シンボル２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄに対応するセルサイズを基準として１／２，１／３，１／４……というように１／ｎ（ｎは自然数）で設定したが、もちろん、ｎ／ｍ（ｍ，ｎは自然数、但しｍ＞ｎ）というような比率でもよい。但し、ｎを自然数として（１／２n ）という比率で設定すれば、読み取ったデータをコンピュータシステムにて処理する上では好ましい。なお、分数倍でなく小数倍であっても構わない。
【００９２】
そして、このような２次元コード２５２を読み取る場合であっても、基本的な処理内容は図５〜８で示したものと同様である。図５〜８の場合には、データ領域が２種類しかない２次元コード５２を前提としたが、図１１に示す２次元コード２５２であれば５種類あるので、それぞれについてデコードするかどうかを判断し、デコードする場合には、同じようにそのデータ領域に対応するセルサイズを考慮して、データ領域内の各データセルの中心位置を決定し、その中心位置に画素から２値を読み取ってセルの種類を決定してコード内容を得ればよい。
【００９３】
このように、種々の領域設定やデータ配置が考えられるので、上述したフォーマットコード７０（図２参照）にこれらを特定できる情報を設定しておけば、図５のＳ１４０にてフォーマットコード７０を読み取り、そのフォーマットコード７０に基づいてデコード処理を実行することで、種々のバリエーションにも対応できる。但し、このフォーマットコード７０はある限定された状況では必ずしも必要ではない。つまり、同一のフォーマットの２次元コードしか用いない場合には、不要である。その特定のフォーマットの２次元コードを読み取るための専用のプログラムを準備すればよいからである。しかし、複数のフォーマットで表現される２次元コードを読み取る場合には、読取対象の２次元コードのフォーマット自体をその時点で２次元コードから直接取得できることが好ましい。したがって、図２に示すように、２次元コード５２中にフォーマットコード７０を含めておくことが好ましい。
【００９４】
なお、上述したバージョン情報８０は、ある意味ではフォーマットコード７０の一部として捉えても良い。つまり、第１データ領域Ａａ及び第２データ領域Ａｂの大きさの違いによって、上述した例では第１データ領域Ａａ中のデータセルのセルグループ配置パターンが異なっていた。したがって、この点だけを区別するのに用いるバージョン情報ではあるが、大きな意味ではフォーマットに関わる情報である。
【００９５】
ところで、これまでの説明では、第１の情報と第２の情報は同じコード種類のものを用いることを前提とした２次元コードを読み取る場合について説明した。つまり、図２の場合であればいわゆる「ＱＲコード」というコード種類の２次元コードである。しかし、必ずしも同じコード種類のものを使用しなくてはならないのではない。例えば図１２に示すように、第１データ領域ＡａにおいてはＱＲコードにて「第１の情報」を表現し、第２データ領域Ａｂにおいては、例えば同じマトリックス式の２次元コードであっても「ＣＰコード」、「カルラコード」あるいは「ベリコード」（これらは何れも登録商標）などの、ＱＲコードと異なるコード種類を用いたコードにて「第２の情報」を表現するようにしてもよい。また、図１１に示すように５つの領域Ａａ〜Ａｅを持つ場合であれば、それぞれに異なる５つのコード種類のものを配置することも可能である。
【００９６】
この場合には、例えばフォーマットコード７０を参照すれば、どのデータ領域にどのコード種類のコード情報が含まれているのかが判るようにしておく。一方２次元コード読取装置２は、読取対象の２次元コードに含まれているコード種類に対応する解読アルゴリズムによるデコード処理のプログラムを備えておく。そして、各データ領域のコードをデコードする際、該当する解読アルゴリズムを用いてデコード処理を実行すればよい。
【００９７】
ところで、これまでの説明においては、表現するために用いるセルサイズが異なることを前提とし、第１の情報及び第２の情報の両者ともセルの分布パターンにより情報を表現する２次元コードであった。これに対して、例えば図１３に示すように、第１データ領域Ａａにおいては、ＱＲコードにて「第１の情報」を表現し、第２データ領域Ａｂにおいては、例えばバーコードにて「第２の情報」を表現するようにしてもよい。なお、図１３においては、位置決め用シンボル５４Ａ〜５４Ｂ間を第２データ領域Ａｂとして、その領域にバーコードを配置している。この場合には、例えば位置決め用シンボル５４Ａ〜５４Ｂの中心同士を結ぶ直線の内で第２データ領域Ａｂに含まれる部分における明暗判断をすることにより、バーコードをデコードできる。もちろん、これ以外に手法であってもよい。
【００９８】
このようにすれば、例えばバーコードで示した第２の情報は店舗（店頭）管理用として用い、ＱＲコードで示した第１の情報はバックヤード管理用として用いることが考えられる。また、第１の情報と第２の情報において用いるコード体系が異なる場合には、上述したフォーマットコード７０においてそれが区別できるような情報を入れ込んでおけばよい。
【００９９】
［その他］
前記各実施例で読取対象として説明した２次元コード５２，１５２，２５２，３５２，４５２においては、例えば図２に示すように、位置決め用シンボル５４Ａ〜５４Ｃを二重の正方形で、中心を横切る周波数成分比が黒：白：黒：白：黒＝１：１：３：１：１の図形で表し、補助シンボル６０は位置決め用シンボル５４Ａ〜５４Ｃよりもサイズの小さい類似の図形で表していたが、図１４（ａ）のように円形でもよく、図１４（ｂ）のように六角形でもよく、また他の正多角形でも良い。即ち、同心状に相似形の図形が重なり合う形に形成したものであればよく、図５のＳ１００にて行う位置決め用シンボル検出処理の内容はなんら変わらない。さらに、中心を横切る周波数成分比があらゆる角度で同じならば、図１４（ｃ）に示すごとく、図形を何重にしても良い。この場合には、対応する周波数成分比を検出する処理が、図５のＳ１００にて行う位置決め用シンボル検出処理となるだけである。
【０１００】
さらに、前記各実施例では、例えば図２に示すように、読取対象の２次元コード５２の外形を正方形で示したが、長方形でも良い。また、例えば図１に示すように、位置決め用シンボル５４Ａ〜５４Ｃは、２次元コード５２の４つの頂点の内、３つに配置されていたが、２次元コード５２内での配置は任意である。また１つの２次元コード５２に４つ以上の位置決め用シンボルを設けても良い。
【０１０１】
また位置決め用シンボルは２つでも良い。この場合に対角の２頂点に位置決め用シンボルを配置すれば２次元コード５２の配置は決定する。また、対角以外の２頂点に、あるいは頂点以外に位置決め用シンボルを配置した場合にも、補助シンボル６０のパターンを検出することで、データ領域５６の配置を検出することができる。このように補助シンボル６０のパターンの検出を利用すれば、位置決め用シンボルは１つでも良く、例えば、２次元コード５２の中心に位置決め用シンボルが１つ存在し、その周囲に補助シンボルが配置されているようにしても良く、２次元コード５２内の何れの位置に位置決め用シンボルを配置してもデータセルの位置を求めることができる。
【０１０２】
また、前記実施例では、位置決め用シンボル５４Ａ〜５４Ｃは比検出回路２０によりハード的に検出し、補助シンボル６０についてはソフト的に検出していたが、補助シンボル６０についても比検出回路を設けてハード的に検出しても良く、処理が一層迅速となる。もちろん、位置決め用シンボル５４Ａ〜５４Ｃ及び補助シンボル６０の両方ともソフト的に検出することも可能である。
【図面の簡単な説明】
【図１】  実施例における２次元コード読取装置の概略構成を表すブロック図である。
【図２】  実施例における２次元コードの概略構成説明図である。
【図３】  実施例における位置決め用シンボルおよび補助シンボルを走査した場合の明暗検出の説明図である。
【図４】  実施例におけるＣＣＤと２値化回路との出力信号の説明図である。
【図５】  実施例における２次元コード読み取り処理の前半を示すフローチャートである。
【図６】  実施例における２次元コード読み取り処理の後半を示すフローチャートである。
【図７】  実施例における２次元コード読み取り処理内で実行される第１の情報のコードのデコード処理ルーチンを示すフローチャートである。
【図８】  実施例における２次元コード読み取り処理内で実行される第２の情報のコードのデコード処理ルーチンを示すフローチャートである。
【図９】  実施例における別バージョンの２次元コードの概略構成説明図である。
【図１０】  別実施例における２次元コードの概略構成説明図である。
【図１１】  別実施例における２次元コードの概略構成説明図である。
【図１２】  別実施例における２次元コードの概略構成説明図である。
【図１３】  別実施例における２次元コードの概略構成説明図である。
【図１４】  位置決め用シンボルの他の形状の例を示す説明図である。
【図１５】  従来のバーコードおよび２次元コードの説明図である。
【図１６】  従来の２次元コードの概略構成説明図である。
【符号の説明】
２…２次元コード読取装置        ４…ＣＣＤ
６…２値化回路                  ８…画像メモリ
１４…クロック信号出力回路      １６…アドレス発生回路
１８…変化点検出回路            ２０…比検出回路
２０ａ，２０ｂ，１２０ａ，１２０ｂ，２２０ａ，２２０ｂ，３２０ａ，３２０ｂ，４２０ａ，４２０ｂ，５２０ａ，５２０ｂ…タイミングセル
２２…アドレス記憶メモリ        ２８…制御回路
５２，１５２，２５２，３５２，４５２，５００…２次元コード
５４Ａ，５４Ｂ，５４Ｃ，１５４Ａ，１５４Ｂ，１５４Ｃ，２５４Ａ，２５４Ｂ，２５４Ｃ，２５４Ｄ，３５４Ａ，３５４Ｂ，３５４Ｃ，４５４Ａ，４５４Ｂ，４５４Ｃ，５１０ａ，５１０ｂ，５１０ｃ…位置決め用シンボル
５６，１５６，２５６，３５６，４５６，５３０…データ領域
６０…補助シンボル
７０…フォーマットコード        ８０…バージョン情報
【図１】
0003887947.tif 000002
【図２】
0003887947.tif 000003
【図３】
0003887947.tif 000004
【図４】
0003887947.tif 000005
【図５】
0003887947.tif 000006
【図６】
0003887947.tif 000007
【図７】
0003887947.tif 000008
【図８】
0003887947.tif 000009
【図９】
0003887947.tif 000010
【図１０】
0003887947.tif 000011
【図１１】
0003887947.tif 000012
【図１２】
0003887947.tif 000013
【図１３】
0003887947.tif 000014
【図１４】
0003887947.tif 000015
【図１５】
0003887947.tif 000016
【図１６】
0003887947.tif 000017