(第1実施形態)
以下、第1実施形態について、図面を参照しつつ説明する。本実施形態は、工場での生産管理や倉庫での入出庫管理などに使用される二次元コードと、その生成装置及び読取装置を具体化している。
図1を参照して、従来の二次元コードと対比しつつ、本実施形態に係る二次元コードについて説明する。なお、図1は、二次元コードの概要を示す模式図である。
図1(a)は、従来の二次元コード100を示している。この二次元コード100は、いわゆるQRコード(登録商標、以下同様)の規格(JIS X 0510)を満たすものであり、白色の台紙の表面に印刷されている。二次元コード100は、3つの位置決め用シンボル104A,104B,104C、情報コード記録領域106、図示しない頂点検出用セル、タイミングセル及びフォーマットコードなどから構成されている。
情報コード記録領域106内の各セル(白黒パターンを省略)は、光学的特性の異なる2種類のセルから選ばれている。3つの位置決め用シンボル104A,104B,104Cは、矩形状をなす二次元コード100の4つの頂点のうち、3つの頂点にそれぞれ配置されている。
頂点検出用セルは、二次元コード100の4つの頂点のうち、3つの位置決め用シンボル104A,104B,104Cが配置されていない残りの頂点に配置されている。タイミングセルは、位置決め用シンボル104A,104B,104C間に、白と黒とが交互に組み合わせられた直線状の基準パターンとして配置されている。このタイミングセルは、各データセル位置の指標として用いられる。
フォーマットコードは、位置決め用シンボル104Aの近傍に配置されており、情報コード記録領域106内に記録された情報コードのフォーマットについて、予め規定されたバージョン情報を示すものである。二次元コード(QRコード)の規格におけるバージョン情報は、1〜8のバージョンと、各バージョンについて4つの誤り訂正レベルL,M,Q,H(LからHへと順に高くなる)との組み合わせで構成され、例えば「3−L」,「5−H」などと表される。
ここで、バージョン情報に対応して設定されている情報について説明する。まず、バージョン1〜8は、主に総コードワード数の違いに対応する。コードワードは8ビットで構成されており、情報コード記録領域106内の矩形状の各升目Dn(D1〜D8)及び各升目En(E1〜E14)が各コードワードに対応したセルパターンである。なお、図1では、一部の升目のみ番号を表示している。各升目は、コードワードの8ビットに対応した8つのセルで構成されている。升目D1〜D8に対応するコードワードはデータコードワードであり、升目E1〜E14に対応するコードワードは誤り訂正用コードワードである。本実施形態では、リードソロモン(RS)符号を用いて誤り訂正を行うため、誤り訂正用コードワードをRSコードワードと称す。
升目D1〜D8及び升目E1〜E14の各数字は、所定の規則(ここではその一例を示す)に基づいてデコードされる順番に対応しており、升目D1からデコード(ビット列の取り出し)を開始して升目D8までデコードすると続いて升目E1をデコードし、最後の升目E14で終了する。従来の二次元コード100では、図1(a)のように二次元コード100を配置した場合に、下から上へ縦の列を順番にデコードしながら、右から左へデコードする列を変更していく。換言すれば、情報コード記録領域106内において、右寄りの縦列ほどデコードされる順番が早い位置となっており、縦列内では下寄りの升目ほどデコードされる順番が早い位置となっている。
そして、データコードワードに対応する升目D1〜D8のセルパターン(幅狭のハッチングで表示)によって、品番符号(所定情報)をコード化した品番情報コードCd(所定情報コード)が構成されている。なお、品番符号は、対象物の品番情報を符号化したものである。また、RSコードワードに対応する升目E1〜E14のセルパターン(幅広のハッチングで表示)によって、RS符号(訂正用情報)をコード化したRSコードCe(訂正用情報コード)が構成されている。すなわち、品番情報コードCdとそれに対応するRSコードCeとのコード対が二次元コード100に含まれている。
デコードされる順番が最後となるRSコードCeの升目E14がデコードされると、情報コード記録領域106に含まれている情報コードの終わりを示す所定のビット列が得られる。なお、品番情報コードCd及びRSコードCeがそれぞれデコードされて得られる各符号では、その始まり部分と終わり部分とに各符号の始まりと終わりとを示す所定のビット列がそれぞれ含まれている。
バージョン1〜8は主に総コードワード数の違いに対応するが、誤り訂正レベル(L,M,Q,H)は、RSコードワード数などを規定する。誤り訂正レベルは、全コードワードのうち読取れないコードワードを許容する割合の高さ、すなわち許容欠損率の高さに対応している。それぞれのレベルの許容欠損率は、誤り訂正レベルHが約30%、誤り訂正レベルQが約25%、誤り訂正レベルMが約20%、誤り訂正レベルLが約10%である。このようなバージョン情報とその実質的な内容(総コードワード数、RSコードワード数、誤り訂正レベルなど)との対応関係が、二次元コードの読取装置の制御回路内にテーブル化されて格納されている。
なお、図1は、二次元コードの概要を模式的に表したものであり、コードワードに対応する升目の数や配置等は、同図に示したものに限られず、採用した規格に従って変更される。したがって、各情報コードを構成する各升目が、デコードされる順番に下から上へ縦の列に配置された後に右から左へ列を変更して配置されるコード配置規則に限らず、デコードされる順番に各升目が情報コード記録領域106内に分散するように配置されるコード配置規則等を採用することもできる。以下の説明では、便宜上、情報コード記録領域106内において、右寄りの縦列ほどデコードされる順番が早い位置となり、縦列内では下寄りの升目ほどデコードされる順番が早い位置となるコード配置規則を採用した場合を例として説明する。
次に、本実施形態に係る二次元コードの概要について説明する。なお、図1(a)に示す従来の二次元コード100と同一の部材については、同一の符号を付すことにより説明を省略する。
図1(b)は、単独の品番情報コードとそれに対応する単独のRSコードとのコード対を複数含む二次元コード11を示している。すなわち、二次元コード11は、第1品番情報コードCd1及び第1RSコードCe1からなる第1コード対と、第2品番情報コードCd2及び第2RSコードCe2からなる第2コード対とを含んでいる。また、二次元コード11は、区分情報コードCbを含んでいる。なお、ここでは、2つのコード対と1つの区分情報コードとを含む二次元コード11を例にして説明するが、3つ以上のコード対と、読取り順序がそれらの間になる位置に配置された区分情報コードとを二次元コード11が含むようにしてもよい。
品番情報コードCd1,Cd2は、それぞれの読取り結果として互いに同一の品番符号が得られるものである。RSコードCe1,Ce2は、それぞれの読取り結果として上記品番符号を訂正するためのRS符号が得られるものであり、これらのRS符号は互いに同一である。すなわち、第1コード対の読取り結果として品番符号(所定情報)とRS符号(訂正用情報)との符号対(情報対)が得られ、これと同一の符号対が第2コード対の読取り結果として得られる。区分情報コードCbは、これらの符号対を区分する区分符号(区分情報)が読取り結果として得られるものである。なお、工場での生産管理や倉庫での入出庫管理では、品番符号を直接利用したり、品番符号を復号化して得られる品番情報を利用したりすることができる。
第1品番情報コードCd1は、データコードワードに対応する升目D11〜D14のセルパターン(幅狭のハッチングで表示)によって構成されている。第1RSコードCe1は、RSコードワードに対応する升目E11〜E16のセルパターン(幅広のハッチングで表示)によって構成されている。また、区分情報コードCbは、区分コードワードに対応する升目Bのセルパターン(ドット状のハッチングで表示)によって構成されている。そして、第2品番情報コードCd2は、データコードワードに対応する升目D21〜D24のセルパターン(幅狭のハッチングで表示)によって構成されている。第2RSコードCe2は、RSコードワードに対応する升目E21〜E26のセルパターン(幅広のハッチングで表示)によって構成されている。
コード配置規則に対応した二次元コード11の読取処理では、升目D11からデコードが開始されて升目D14までデコードされると、続いて升目E11から升目E16までデコードされる。続いて、升目Bのデコードがされた後、升目D21から升目D24までデコードされると、続いて升目E21から升目E26までデコードされて終了する。すなわち、区分符号が得られる区分情報コードCb(升目Bのセルパターン)は、デコードされる順番が第1コード対(前のコード対)と第2コード対(後のコード対)との間になる位置に配置されている。詳しくは、デコードされる順番が、第1コード対の最後のコードワードに対応する升目E16と、第2コード対の最初のコードワードに対応する升目D21との間になる位置に、区分情報コードCbが配置されている。
区分情報コードCbは、第1コード対に加えて第2コード対が二次元コード11に含まれていること、すなわち複数のコード対が二次元コード11の情報コード記録領域106に含まれていることを示すものである。詳しくは、区分情報コードCbの升目Bがデコードされると、二次元コード11に第2コード対(次のコード対)が含まれていること、すなわちデコードにより得られた全符号中において、第1コード対から得られた符号対の後に、第2コード対から得られた同一の符号対が含まれていることを示す所定のビット列が得られる。また、第1コード対においてデコードされる順番が最後となる位置に配置された第1RSコードCe1の升目E16がデコードされても、情報コード記録領域106に含まれている情報コードの終わりを示す所定のビット列は得られない。なお、第2コード対においてデコードされる順番が最後となる第2RSコードCe2の升目E26がデコードされると、情報コード記録領域106に含まれている情報コードの終わりを示す所定のビット列が得られる。
図1(c)は、単独の品番情報コードとそれに対応する複数のRSコードとを含む二次元コード12を示している。すなわち、二次元コード12は、品番情報コードCd(升目D1〜D4)、第1RSコードCe1(升目E11〜E18)、区分情報コードCb(升目B)、及び第2RSコードCe2(升目E21〜E28)を含んでいる。なお、ここでは、2つのRSコードと1つの区分情報コードとを含む二次元コード12を例にして説明するが、3つ以上のRSコードと、読取り順序がそれらの間になる位置に配置された区分情報コードとを二次元コード12が含むようにしてもよい。以下、図1(b)の二次元コード11との相違点を中心に説明する。
品番情報コードCdは、読取り結果として品番符号が得られるものである。RSコードCe1,Ce2は、それぞれの読取り結果として上記品番符号を訂正するためのRS符号が得られるものであり、これらのRS符号は互いに同一である。区分情報コードCbは、これらのRS符号を区分する区分符号が読取り結果として得られるものである。図1(b)の二次元コード11と比較して、二次元コード12は品番情報コードCdの数が少ないため、RSコードCe1,Ce2のコードワード数が増やされており、それらの誤り訂正レベルが上げられている。すなわち、品番情報コードCdの数を増やす代わりに、情報コード記録領域106をRSコードCeに多く割り当てることができる。
二次元コード12の読取処理では、升目D1からデコードが開始されて升目D4までデコードされると、続いて升目E11から升目E18までデコードされる。続いて、升目Bデコードされた後、升目E21から升目E28までデコードされて終了する。すなわち、区分符号が得られる区分情報コードCb(升目Bのセルパターン)は、デコードされる順番が第1RSコードCe1(前のRSコード)と第2RSコードCe2(後のRSコード)との間になる位置に配置されている。詳しくは、デコードされる順番が、第1RSコードCe1の最後のコードワードに対応する升目E18と、第2RSコードCe2の最初のコードワードに対応する升目E21との間になる位置に、区分情報コードCbが配置されている。
区分情報コードCbは、第1RSコードCe1に加えて第2RSコードCe2が二次元コード12に含まれていること、すなわち複数のRSコードCeが二次元コード12の情報コード記録領域106に含まれていることを示すものである。詳しくは、区分情報コードCbの升目Bがデコードされると、二次元コード12に第2RSコードCe2(次のRSコード)が含まれていること、すなわちデコードにより得られた全符号中において、第1RSコードCe1から得られたRS符号の後に、第2RSコードCe2から得られた同一のRS符号が含まれていることを示す所定のビット列が得られる。また、品番情報コードCdに続く第1RSコードCe1において、デコードされる順番が最後となる位置に配置された升目E18がデコードされても、情報コード記録領域106に含まれている情報コードの終わりを示す所定のビット列は得られない。なお、第2RSコードCe2においてデコードされる順番が最後となる升目E28がデコードされると、情報コード記録領域106に含まれている情報コードの終わりを示す所定のビット列が得られる。
図1(d)は、複数の品番情報コードとそれらに対応する単独のRSコードとを含む二次元コード13を示している。すなわち、二次元コード13は、第1品番情報コードCd1(升目D11〜D16)、区分情報コードCb(升目B)、第2品番情報コードCd2(升目D21〜D26)、及びRSコードCe(升目E1〜E9)を含んでいる。なお、ここでは、2つの品番情報コードと1つの区分情報コードとを含む二次元コード13を例にして説明するが、3つ以上の品番情報コードと、読取り順序がそれらの間になる位置に配置された区分情報コードとを二次元コード13が含むようにしてもよい。以下、図1(b)の二次元コード11との相違点を中心に説明する。
品番情報コードCd1,Cd2は、それぞれの読取り結果として互いに同一の品番符号が得られるものである。区分情報コードCbは、これらの品番符号を区分する区分符号が読取り結果として得られるものである。RSコードCeは、読取り結果として上記品番符号を訂正するためのRS符号が得られるものである。図1(b)の二次元コード11と比較して、二次元コード13はRSコードCeの数が少ないため、品番情報コードCd1,Cd2のコードワード数が増やされており、より多くの情報量を持つ品番情報コードCd1,Cd2が含まれている。すなわち、RSコードCeの数を増やす代わりに、情報コード記録領域106を品番情報コードCdに多く割り当てることができる。また、一般にRSコードCeよりも情報量の少ない品番情報コードCdを複数含むため、情報量を抑えつつ二次元コード13の誤り訂正機能を強化することができる。
二次元コード13の読取処理では、升目D11からデコードが開始されて升目D16までデコードされると、次に升目Bがデコードされる。続いて升目D21から升目D26までデコードされた後、升目E1から升目E9までデコードされて終了する。すなわち、区分符号が得られる区分情報コードCb(升目Bのセルパターン)は、デコードされる順番が第1品番情報コードCd1(前の品番情報コード)と第2品番情報コードCd2(後の品番情報コード)との間になる位置に配置されている。詳しくは、デコードされる順番が、第1品番情報コードCd1の最後のコードワードに対応する升目D16と、第2品番情報コードCd2の最初のコードワードに対応する升目D21との間になる位置に、区分情報コードCbが配置されている。
区分情報コードCbは、第1品番情報コードCd1に加えて第2品番情報コードCd2が二次元コード13に含まれていること、すなわち複数の品番情報コードCdが二次元コード13の情報コード記録領域106に含まれていることを示すものである。詳しくは、区分情報コードCbの升目Bがデコードされると、二次元コード13に第2品番情報コードCd2(次の品番情報コード)が含まれていること、すなわちデコードにより得られた全符号中において、第1品番情報コードCd1から得られた品番符号の後に、第2品番情報コードCd2から得られた同一の品番符号が含まれていることを示す所定のビット列が得られる。
図1(e)は、単独の品番情報コードとそれに対応する単独のRSコードとのコード対を複数含む二次元コード14を示している。すなわち、二次元コード14は、第1品番情報コードCd1(升目D11〜D14)、第1RSコードCe1(升目E11〜E15)、区分情報コードCb(升目B)、第2品番情報コードCd2(升目D21〜D24)、及び第2RSコードCe2(升目E21〜E28)を含んでいる。二次元コード14では、第1RSコードCe1と第2RSコードCe2とのコードワード数、すなわち誤り訂正レベルが異なっており、その他の構成は図1(b)の二次元コード11に準じている。以下、図1(b)の二次元コード11との相違点を中心に説明する。
品番情報コードCd1,Cd2は、それぞれの読取り結果として互いに同一の品番符号が得られるものである。RSコードCe1,Ce2は、それぞれの読取り結果として上記品番符号を訂正するためのRS符号が得られるものであるが、これらのRS符号は互いに誤り訂正レベルの異なるものである。図1(b)の二次元コード11と比較して、二次元コード14は第1RSコードCe1のコードワード数が減らされており、代わりに第2RSコードCe2のコードワード数が増やされている。すなわち、一方のRS符号の誤り訂正レベルを下げることにより、他方のRS符号の誤り訂正レベルを上げることができる。
図1(b)に示す二次元コード11の区分情報コードCbと比較して、図1(e)に示す二次元コード14の区分情報コードCbは、略同一の情報が得られるものである。それらの相違点は、二次元コード14の区分情報コードCbでは、第1コード対から得られた符号対と第2コード対から得られた符号対が同一であるとの情報が除かれている点と、第2RSコードCe2の誤り訂正レベルの情報が加えられている点である。例えば、上述したフォーマットコードにより第1RSコードCe1の誤り訂正レベルが「Q」であることが示されている場合に、区分情報コードCbのデコード結果として得られる区分符号により、第2RSコードCe2の誤り訂正レベルが「H」であることが示される。
図1(f)は、単独の品番情報コードとそれに対応する複数のRSコードとを含む二次元コード15を示している。すなわち、二次元コード15は、品番情報コードCd(升目D1〜D5)、第1RSコードCe1(升目E11〜E16)、区分情報コードCb(升目B)、及び第2RSコードCe2(升目E21〜E30)を含んでいる。二次元コード15では、第1RSコードCe1と第2RSコードCe2とのコードワード数、すなわち誤り訂正レベルが異なっており、その他の構成は図1(c)の二次元コード12に準じている。以下、図1(c)の二次元コード11との相違点を中心に説明する。
品番情報コードCdは、読取り結果として品番符号が得られるものである。RSコードCe1,Ce2は、それぞれの読取り結果として上記品番符号を訂正するためのRS符号が得られるものであるが、これらのRS符号は互いに誤り訂正レベルの異なるものである。これらのRS符号の考え方は、図1(e)の二次元コード14と同様である。また、二次元コード15の区分情報コードCbも、第2RSコードCe2の誤り訂正レベルの情報が得られるものである。
なお、図1では、二次元コード100,11〜15において、情報コード記録領域106の範囲が同一である場合を例として説明した。しかしながら、二次元コード11〜15のように、品番情報コードCd及びRSコードCeの少なくとも一方を複数含む場合には、従来の二次元コード100と比較して情報コード全体の情報量が多くなる。このため、二次元コード11〜15のバージョンとして、情報コード記録領域106に記録することのできる情報量が二次元コード100よりも多いものを採用することが望ましい。
例えば、二次元コード100の品番情報コードCdと二次元コード11の第1品番情報コードCd1との情報量が同一であり、二次元コード11が品番情報コードCdとRSコードCeとのコード対を3つ含む場合には、二次元コード100,11の実際の印刷状態は図12に示すようになる。この場合に、二次元コード100と二次元コード11とで、情報コード記録領域106の面積は二次元コード11の方が大きいが、位置決め用シンボル104A,104B,104Cは互いに同一となっている。このため、二次元コード100を3箇所に設ける場合と比較して、二次元コード11の面積を小さくすることができるとともに、二次元コード11を1箇所に設けるだけでよい。
次に、図2を参照して、上述した二次元コード11〜15を生成する生成装置20について説明する。図2は、二次元コードの生成装置20の概要を示すブロック図である。
生成装置20は、情報入力部21、符号化部22、誤り検出符号生成部23、誤り訂正符号生成部24、重複数入力部25、全符号形成部26、及び二次元コード出力部27を備えている。これらの各部は、コンピュータシステムとその周辺機器によって実現されている。
情報入力部21及び重複数入力部25は、ユーザインタフェース処理を介して、キーボードやマウス等の操作部に対する作業者の入力操作を受け付ける。そして、情報入力部21は、操作部を通じて入力された数字や英文を、二次元コードにコード化するテキスト情報としてメモリ等に記憶する。具体的には、工場での生産管理や倉庫での入出庫管理などで利用される品番情報が作業者により入力される。重複数入力部25(情報コード数設定手段)では、品番情報コードやRSコードを二次元コードに重複させて含ませる数が上記操作部を通じて入力され、この重複数がメモリ等に記憶される。詳しくは、重複数入力部25では、品番情報コードとRSコードとのコード対の重複数、品番情報コードの重複数、及びRSコードの重複数をそれぞれ入力可能となっている。
符号化部22は、採用したQRコードの規格(JIS X 0510)に従って、情報入力部21で入力された品番情報を二値化して品番符号を生成する。
誤り検出符号生成部23は、符号化部22で生成された品番符号にCRC(誤り検出符号)を付加する。
誤り訂正符号生成部24は、CRCの付加された品番符号に対してRS符号を生成する。詳しくは、採用した規格に従って、リードソロモン多項式により所定の誤り訂正レベルのRS符号を生成する。
全符号形成部26(全情報形成手段)は、重複数入力部で入力された重複数の品番情報コードやRSコードを二次元コードに含ませるために、複数の品番符号やRS符号の間に区分符号を付加しつつ全符号を形成する。
二次元コード出力部27(分布パターン生成手段)は、全符号形成部26で形成された全符号を8ビット(コードワード)毎に区切り、これに対応した各升目のセルパターンを生成する。そして、二次元コード出力部27は、各升目のセルパターンをコード配置規則に従って配置した状態の画像データを生成する。二次元コード出力部27は、この画像データをプリンタ等の出力装置に送信することにより、白色の台紙の表面に二次元コードを印刷する。なお、二次元配置した出力データをマスク処理した後に印刷するようにしてもよい。
次に、図3を参照して、上述した二次元コードの生成装置20により実行される二次元コード11〜15の生成処理の手順について説明する。
まず、情報入力部21を通じて、作業者による品番情報の入力操作を受け付ける(S11)。
続いて、重複数入力部25を通じて、作業者による情報コードの重複数の入力操作を受け付ける(S12)。ここで、品番情報コードとRSコードとのコード対の重複数の入力操作を受け付けた場合には、図1(b),(e)に示すように、単独の品番情報コードとそれに対応する単独のRSコードとのコード対を複数含む二次元コード11,14が作成されるようになる。また、品番情報コードの重複数の入力操作を受け付けた場合には、図1(d)に示すように、複数の品番情報コードとそれらに対応する単独のRSコードとを含む二次元コード13が作成されるようになる。また、RSコードの重複数の入力操作を受け付けた場合には、図1(c),(f)に示すように、単独の品番情報コードとそれに対応する複数のRSコードとを含む二次元コード12,15が作成されるようになる。なお、各情報コードの重複数が「0」である場合には、その情報コードは重複なしで1つのみ生成されるようになり、各情報コードの重複数が「1」である場合には、その情報コードは2つ生成されるようになる。
その後、符号化部22により品番情報を二値化して品番符号を生成し(S13)、誤り検出符号生成部23により品番符号にCRCを付加する(S14)。
このCRCの付加された品番符号に対して、誤り訂正符号生成部24により所定の誤り訂正レベルのRS符号を生成する(S15)。ここで、誤り訂正符号生成部24は、上記重複数入力部25で受け付けたRSコードの重複数が「1」以上であり、且つ互いに誤り訂正レベルの異なるRSコードを二次元コードに含ませることが予めプログラムにより設定されている場合には、それぞれの誤り訂正レベルのRS符号を生成する。これにより、図1(e),(f)に示すように、互いに誤り訂正レベルの異なるRSコードを含む二次元コード14,15が作成されるようになる。
続いて、重複数入力部25で受け付けた重複数の品番符号及びRS符号に対して、全符号形成部26により区分符号を付加して全符号を形成する(S16)。ここで、全符号形成部26は、以下に説明する符号構成を含むように全符号を形成する。
図4を参照して、従来の二次元コードの符号構成と対比しつつ、本実施形態に係る二次元コードの符号構成について説明する。図4の各図では、各段の左端から右端へ符号が続いており、各段の右端とその下段の左端とで符号が連続している。図4(b)〜(f)では、重複する符号をそれぞれ下の段にずらして示している。なお、図4では、各符号の情報量を帯の長さで模式的に表している。
図4(a)は、従来の二次元コードの符号構成を示しており、単独の品番符号Sdの後に、単独のRS符号Seが続くように符号を形成する。また、RS符号Seの最後の部分に全符号の終わりを示す所定のビット列を形成する。なお、品番符号SdにはCRCが含まれており、品番符号Sd及びRS符号Seには、各符号の始まり部分と終わり部分とにそれら各符号の始まりと終わりとを示す所定のビット列がそれぞれ含まれている。この点は、本実施形態に係る二次元コードの符号構成でも同様である。
図4(b)は、品番情報コードとRSコードとのコード対の重複数が「2」である場合の符号構成を示している。この場合には、第1品番符号Sd1に第1RS符号Se1が付加された第1符号対(前の符号対)の後に、第1区分符号Sb1を挟んで、第2品番符号Sd2に第2RS符号Se2が付加された第2符号対(後の符号対)が続くように符号を形成する。ここで、第1符号対と第2符号対とは同一であり、第1区分符号Sb1は、第1符号対(前の符号対)の後にこれと同一の第2符号対(後の符号対)が続くことを示す所定のビット列である。また、第2符号対の後に、第1区分符号Sb1と同一の第2区分符号Sb2、その後に第1符号対と同一の第3符号対(第3品番符号Sd3及び第3RS符号Se3)が続くように符号を形成する。そして、第3RS符号Se3の最後の部分に全符号の終わりを示す所定のビット列を形成する。
図4(c)は、品番情報コードの重複数が「0」であり、RSコードの重複数が「2」である場合の符号構成を示している。この場合には、第1品番符号Sd1に付加された第1RS符号Se1(前のRS符号)の後に、第1区分符号Sb1を挟んで、第2RS符号Se2(後のRS符号)が続くように符号を形成する。ここで、第1RS符号Se1と第2RS符号Se2とは同一であり、第1区分符号Sb1は、第1RS符号Se1(前のRS符号)の後にこれと同一の第2RS符号Se2(後のRS符号)が続くことを示す所定のビット列である。また、第2RS符号Se2の後に、第1区分符号Sb1と同一の第2区分符号Sb2、その後に第1RS符号Se1と同一の第3RS符号Se3が続くように符号を形成する。そして、第3RS符号Se3の最後の部分に全符号の終わりを示す所定のビット列を形成する。
図4(d)は、品番情報コードの重複数が「2」であり、RSコードの重複数が「0」である場合の符号構成を示している。この場合には、第1品番符号Sd1(前の品番符号)の後に、第1区分符号Sb1を挟んで、第2品番符号Sd2(後の品番符号)が続くように符号を形成する。ここで、第1品番符号Sd1と第2品番符号Sd2とは同一であり、第1区分符号Sb1は、第1品番符号Sd1(前の品番符号)の後にこれと同一の第2品番符号Sd2(後の品番符号)が続くことを示す所定のビット列である。また、第2品番符号Sd2の後に、第1区分符号Sb1と同一の第2区分符号Sb2、その後に第1品番符号Sd1と同一の第3品番符号Sd3、更にRS符号Seが続くように符号を形成する。そして、RS符号Seの最後の部分に全符号の終わりを示す所定のビット列を形成する。
図4(e)は、図4(b)において、互いに誤り訂正レベルの異なるRS符号が含まれる場合の符号構成を示している。ここで、図3のS15のRS符号を生成する処理において、誤り訂正符号生成部24により、互いに誤り訂正レベルの異なるRS符号が生成されている。この場合には、第2符号対の第2RS符号Se2(後のRS符号)の誤り訂正レベルが、第1符号対の第1RS符号Se1(前のRS符号)の誤り訂正レベルよりも高くなるように符号を形成する。第1区分符号Sb1は、第1符号対の後に第2符号対が続くことを示す所定のビット列である。さらに、第1区分符号Sb1は、第2RS符号Se2(後のRS符号)の誤り訂正レベルを示す所定のビット列である。その他の符号構成は、図4(b)の符号構成と同様である。第3RS符号Se3は、第2RS符号Se2よりも誤り訂正レベルが高くなっている。すなわち、前側の符号対ほど、誤り訂正レベルの低いRS符号を含むように符号を形成する。
図4(f)は、図4(c)において、互いに誤り訂正レベルの異なるRS符号が含まれる場合の符号構成を示している。この場合のRS符号の考え方は、図4(e)の符号構成に準じている。すなわち、前側のRS符号ほど、誤り訂正レベルが低くなるように符号を形成する。第1区分符号Sb1は、第1RS符号Se1の後に第2RS符号Se2が続くことを示す所定のビット列である。ここでは、第1区分符号Sb1は、第1RS符号Se1(前のRS符号)と第2RS符号Se2(後のRS符号)とが同一であることは示していない。その他の区分符号の考え方は、図4(e)の符号構成に準じている。
図3に戻り、二次元コード出力部27により、上述したように全符号形成部26で形成された全符号を各升目のセルパターンに変換し、これをコード配置規則に基づいて配置して二次元コードとして印刷する(S17)。
次に、図5を参照して、上述のように生成された二次元コードを読取る読取装置30について説明する。
読取装置30は、CCD33、増幅回路34、二値化回路35、A/D変換回路36、特定比検出回路38、同期信号発生回路40、アドレス発生回路41、メモリ37、制御回路39、操作キー42、液晶表示器43、及び通信インタフェース44を備えている。
CCD33は、二次元的に配列された複数の受光素子を有しており、この受光素子により二次元画像(二次元コード11)を検出する。そして、CCD33は、検出した二次元画像を水平方向の走査線信号として増幅回路34に出力する。
増幅回路34は、CCD33から入力した走査線信号を増幅して、二値化回路35及びA/D変換回路36にそれぞれ出力する。
二値化回路35は、増幅回路34により増幅された走査線信号を閾値と比較することにより二値化して、メモリ37及び特定比検出回路38に出力する。
A/D変換回路36は、増幅回路34により増幅されたアナログの走査線信号をデジタルデータに変換して、メモリ37に出力する。
制御回路39は、CPU,ROM,RAM,I/O等を備えており、ROMに記憶されているプログラムに従って各種制御を実行する。具体的には、制御回路39は、増幅回路34の信号増幅率の制御、二値化回路35の閾値レベルの制御、A/D変換回路36及び特定比検出回路38の実行制御を行う。さらに、制御回路39は、同期信号発生回路40に対してクロック信号を出力する。
同期信号発生回路40は、制御回路39から入力されたクロック信号に基づいて、同期パルスを特定比検出回路38及びアドレス発生回路41に出力する。この同期パルスのパルス幅は、CCD33により出力される走査線信号のパルス幅よりも十分に狭くなっている。
アドレス発生回路41は、同期信号発生回路40から入力された同期パルスをカウントして、メモリ37の書き込みアドレスを生成し、これをメモリ37に出力する。メモリ37は、アドレス発生回路41から入力されたアドレスに、二値化回路35から入力された画像データを8ビット単位で記憶する。
特定比検出回路38は、二値化回路35から入力された信号における「1」から「0」への変化あるいは「0」から「1」への変化を検出する。そして、特定比検出回路38は、ある変化点から次の変化点までの間に同期信号発生回路40から入力された同期パルスをカウントすることにより、二次元画像の中の白(1)の連続する長さ及び黒(0)の連続する長さを求める。特定比検出回路38は、この長さの比に基づいて位置決め用シンボル104A,104B,104Cを検出して、その結果をメモリ37に出力する。メモリ37は、この位置決め用シンボルの検出時にアドレス発生回路41により生成されたアドレスを、所定の記憶領域に記憶する。
操作キー42は、作業者による読取処理の開始操作等を受け付けて、作業者による操作を示す信号を制御回路39に出力する。
液晶表示器43は、制御回路39から入力される表示信号に基づいて、表示部に情報を表示する。
通信インタフェース44は、制御回路39と外部装置との通信を仲介するものであり、メモリ37に記憶されたデータを外部装置に送信することや、外部装置からの信号を受信することを可能とする。
特に、本実施形態では、制御回路39は、品番情報コードやRSコードを複数含む二次元コード11〜15の読取り処理において、二次元コード11〜15のそれぞれの最終読取り結果として、単独の品番符号(又は品番符号が復号化された品番情報)を得るための処理を実行する。また、制御回路39は、複数の品番符号やRS符号から単独の品番符号を得る過程において、正しい品番符号の得られる可能性を高くするための処理を実行する。
次に、図6を参照して、上述した二次元コードの読取装置30の制御回路39により実行される二次元コード11〜15の読取処理の手順について説明する。本実施形態のコード読取処理では、複数の符号対のうち、符号欠損率の最も低い符号対を選択して、品番符号をRS符号によって訂正する。
まず、CCD33により例えば二次元コード11の画像を取り込み(S21)、この画像信号に基づいて情報コードを符号(ビット列)に変換する(S22)。このS22の処理が、上述したデコード処理に相当する。具体的には、CCD33から入力した画像信号を増幅回路34により増幅し、これを二値化回路35により二値化して、メモリ37に生成された二値データのアドレスに記憶する。特定比検出回路38により位置決め用シンボル104A,104B,104Cを検出して、そのアドレスを所定の記憶領域に記憶する。制御回路39は、メモリ37に記憶されたこれらのデータを用いて、上記位置決め用シンボルに基づいて画像中の二次元コード11の範囲を特定し、この範囲のうち情報コード記録領域106を特定する。そして、制御回路39は、情報コード記録領域106内の各データセルの中心位置付近の画素に対応する二値データをメモリ37から読込み、これらの二値データにより品番符号Sd等を含む全符号(ビット列)を生成する。これにより、図1(a)〜(f)に示す二次元コード100,11〜15から、図4(a)〜(f)に示す符号がそれぞれ得られる(各情報コードの重複数は図4で説明した場合のものとする)。
その後、制御回路39は、区分符号Sbに基づいて各品番符号Sd及び各RS符号Seを取得する(S23)。詳しくは、制御回路39は、全符号中から区分符号Sbを表すビット列を検索し、検索された区分符号Sbのビット列が示す種類の符号として、区分符号Sbに続く符号を取得する。なお、全符号中から区分符号Sbが検索されなかった場合には、従来の二次元コード100の読取り処理と同様にして、図4(a)に示すように、最初の符号を品番符号Sdとして取得し、続く符号をRS符号Seとして取得する。上述したように、品番符号Sd及びRS符号Seには、各符号の始まり部分と終わり部分とにそれら各符号の始まりと終わりとを示す所定のビット列がそれぞれ含まれている。このため、制御回路39は、これらのビット列に基づいて、品番符号Sd及びRS符号Seのそれぞれの始まりと終わりとを判定する。また、RS符号Seの最後の部分に全符号の終わりを示す所定のビット列が形成されているため、このビット列により全符号の終わりを判定する。
例えば、図4(b)に示す符号が得られた場合には、最初の符号を第1品番符号Sd1として取得し、続く符号を第1RS符号Se1として取得する。検索された区分符号Sb1は、第1符号対(前の符号対)の後にこれと同一の第2符号対(後の符号対)が続くことを示すものであるため、区分符号Sb1に続く符号を第2品番符号Sd2として取得し、続く符号を第2RS符号Se1として取得する。同様にして、区分符号Sb2に続く符号を第3品番符号Sd3として取得し、続く符号を第3RS符号Se1として取得する。制御回路39は、各符号の種類と対応付けて、取得した各符号をメモリ37に記憶する。
図4(d)に示す符号が得られた場合には、最初の符号を第1品番符号Sd1として取得する。検索された区分符号Sb1は、第1品番符号Sd1(前の品番符号)の後にこれと同一の第2品番符号Sd2(後の品番符号)が続くことを示すものであるため、区分符号Sb1に続く符号を第2品番符号Sd2として取得する。同様にして、区分符号Sb2に続く符号を第3品番符号Sd3として取得し、続く符号をRS符号Seとして取得する。
図4(f)に示す符号が得られた場合には、最初の符号を第1品番符号Sd1として取得し、続く符号を第1RS符号Se1として取得する。検索された区分符号Sb1は、第1RS符号Se1(前のRS符号)の後に第2RS符号Se2(後のRS符号)が続くことを示すものであるため、区分符号Sb1に続く符号を第2RS符号Se2として取得する。さらに、第1区分符号Sb1は、第2RS符号Se2(後のRS符号)の誤り訂正レベルを示すものである。同様にして、区分符号Sb2に続く符号を第3RS符号Se3として取得する。
制御回路39は、こうして取得された各符号に基づいて、品番符号SdとRS符号Seとの符号対を形成する(S24)。詳しくは、制御回路39は、品番符号Sd及びRS符号Seのうち重複数の多い一方に重複数の少ない他方のいずれかを対応させて、品番符号SdとRS符号Seとの符号対を形成する。ここでは、品番符号SdとRS符号Seとを結合した情報単位を形成する。そして、形成された各符号対をメモリ37に記憶させる。なお、図4(b),(e)に示すように、第1符号対(前の符号対)の後に第2符号対(後の符号対)が続く場合には、それに合わせて各符号を選択して符号対を形成し、各符号対をメモリ37に記憶させる。この場合には、各符号の順序通りに符号対を形成すればよいため、符号対を形成する処理を簡素化することができる。
例えば、図4(c),(f)に示す符号が得られた場合には、品番符号SdをRS符号Se1〜Se3にそれぞれ対応させて、第1符号対(品番符号Sd及び第1RS符号Se1)、第2符号対(品番符号Sd及び第2RS符号Se2)、及び第3符号対(品番符号Sd及び第3RS符号Se3)を形成する。
図4(d)に示す符号が得られた場合には、品番符号Sd1〜Sd3にRS符号Seをそれぞれ対応させて、第1符号対(第1品番符号Sd1及びRS符号Se)、第2符号対(第2品番符号Sd2及びRS符号Se)、及び第3符号対(第3品番符号Sd3及びRS符号Se)を形成する。
制御回路39は、こうして形成された各符号対について、RS符号による誤り検出を行い(S25)、各符号対の符号欠損率を算出する(S26)。詳しくは、制御回路39は、RS符号による誤り検出において、8ビット単位(コードワード単位)で誤り数とその位置とを検出する。このとき、品番符号とRS符号とについて、それぞれ8ビット単位での誤りの数とその位置とを検出する。そして、制御回路39は、各符号対について全体の単位数に対する誤りを含む単位数の比率を符号欠損率として算出する。そして、算出された各符号対の符号欠損率をメモリ37に記憶する。なお、符号対の符号欠損率が許容欠損率を超える場合には、その符号対の符号欠損率は不明となる。この場合には、その符号対の符号欠損率を許容欠損率よりも高いものとして扱う。
その後、制御回路39は、符号欠損率の最も低い符号対を選択し(S27)、選択された符号対により品番符号Sdを訂正する(S28)。そして、制御回路39は、RS符号による品番符号の訂正が可能であったか否か、すなわち訂正された品番符号Sdを得ることができたか否かを判定し(S29)、訂正が可能でなかったと判定した場合には(S29:NO)、本処理を終了する。すなわち、符号欠損率の最も低い符号対を選択しても品番符号の訂正が可能でなかったため、これ以上の訂正処理を行うことなく本処理を終了する。
一方、制御回路39は、RS符号による品番符号の訂正が可能であったと判定した場合には(S29:YES)、CRCによる誤り検出において誤りが検出されなかったか否か判定する(S30)。そして、制御回路39は、誤りが検出されたと判定した場合には(S30:NO)、本処理を終了する。すなわち、符号欠損率の最も低い符号対を選択して品番符号の訂正を行っても誤りが検出されたため、これ以上の訂正処理を行うことなく本処理を終了する。
一方、制御回路39は、CRCによる誤り検出において誤りが検出されなかったと判定した場合には(S30:YES)、品番符号を復号化して品番情報を生成し(S31)、液晶表示器43により品番情報を表示する(S32)。なお、品番符号又は品番情報を、通信インタフェース44を介して外部装置に送信してもよい。制御回路39は、こうして本処理を終了する。
なお、S21〜S23の処理が情報取得手段としての処理に相当し、S24の処理が情報対設定手段としての処理に相当し、S25〜S26の処理が欠損率算出手段としての処理に相当し、S27の処理が選択手段としての処理に相当し、S28の処理が訂正手段としての処理に相当する。
次に、図7を参照して、従来のコード読取処理と対比しつつ、上述したコード読取処理による品番符号の訂正態様について説明する。図7(a)〜(f)は、図4(a)〜(f)にそれぞれ対応しており、コード読取り処理において情報コードを符号に変換して各符号対の符号欠損率を算出した状態を模式的に示している。なお、図7では、RS符号による誤り検出において誤りが検出された部分、すなわち符号の欠損部分を白抜きで表している。また、符号欠損率が許容欠損率を超えている場合は、RS符号による誤り検出において誤りを検出することはできないが、その場合における実際の符号の欠損部分も同様に白抜きで表している。各符号対の符号欠損率及び訂正可否を、各符号対の右側に示している。ここでは基本的に、各二次元コードのRS符号の誤り訂正レベルは「H」であり、その許容欠損率は30%であるものとする。
図7(a)に示すように、従来の二次元コード100では、符号対の符号欠損率が40%(符号欠損率が許容欠損利率を超えているため、算出される符号欠損率は不明。以下同様。)であるため、品番符号SdをRS符号Seによって訂正することができない。このように、二次元コード100の汚れや欠損により、符号欠損率が許容欠損率を超えた場合には、品番符号SdをRS符号Seによって訂正することができない。なお、
図7(b)に示すように、二次元コード11では、第1符号対(第1品番符号Sd1及び第1RS符号Se1)の符号欠損率が30%であり、第2符号対(第2品番符号Sd2及び第2RS符号Se2)の符号欠損率が40%であり、第3符号対(第3品番符号Sd3及び第3RS符号Se3)の符号欠損率が10%である。このため、符号欠損率の最も低い第3符号対が選択され、第3品番符号Sd3が第3RS符号Se3によって訂正される。したがって、第2符号対の符号欠損率が許容欠損率を超えた場合であっても、符号欠損率が許容欠損率よりも低い第3符号対を選択して、品番符号Sd3の訂正を行うことができる。
図7(c)に示すように、二次元コード12では、品番符号Sd、第1RS符号Se1、第1区分符号Sb1、第2RS符号Se2、第2区分符号Sb2、及び第3RS符号Se3によって符号が構成されている。そして、図示はしないが、上述したように品番符号Sd及び第1RS符号Se1により第1符号対が形成され、品番符号Sd及び第2RS符号Se2により第2符号対が形成され、品番符号Sd及び第3RS符号Se3により第3符号対が形成されている。すなわち、各符号対において、品番符号Sdは共通となっている。第1符号対,第2符号対,第3符号対の符号欠損率は、それぞれ40%,20%,30%である。このため、符号欠損率の最も低い第2符号対が選択され、品番符号Sdが第2RS符号Se2によって訂正される。したがって、符号欠損率が許容欠損率よりも低い第2符号対を選択して、品番符号Sdの訂正を行うことができる。なお、第1RS符号Se1の符号欠損率が上限を超えた場合には、品番符号Sdの符号欠損率にかかわらず、品番符号Sdを第1RS符号Se1によって訂正することができなくなる。
図7(d)に示すように、二次元コード13では、第1品番符号Sd1、第1区分符号Sb1、第2品番符号Sd2、第2区分符号Sb2、第3品番符号Sd3、及びRS符号Seによって符号が構成されている。そして、第1品番符号Sd1及びRS符号Seにより第1符号対が形成され、第2品番符号Sd2及びRS符号Seにより第2符号対が形成され、第3品番符号Sd3及びRS符号Seにより第3符号対が形成されている。すなわち、各符号対において、RS符号Seは共通となっている。第1符号対,第2符号対,第3符号対の符号欠損率は、それぞれ40%,40%,20%である。このため、符号欠損率の最も低い第3符号対が選択され、品番符号Sd3がRS符号Seによって訂正される。したがって、符号欠損率が許容欠損率よりも低い第3符号対を選択して、品番符号Sd3の訂正を行うことができる。なお、第1品番符号Sd1,第2品番符号Sd2,第3品番符号Sd3,RS符号Seの符号欠損率は、それぞれ70%,70%,20%,20%である。第1品番符号Sd1(第2品番符号Sd2)の符号欠損率が上限を超えた場合には、RS符号Seの符号欠損率にかかわらず、第1品番符号Sd1(第2品番符号Sd2)をRS符号Seによって訂正することができなくなる。
図7(e)に示すように、二次元コード14では、RS符号Seの誤り訂正レベルが互いに異なっており、第1RS符号Se1の誤り訂正レベルは「Q」(許容欠損率25%)であり、第2RS符号Se2の誤り訂正レベルは「H」(許容欠損率30%)であり、第3RS符号Se3の誤り訂正レベルは「H」よりも高い所定レベル(許容欠損率35%)である。第1符号対,第2符号対,第3符号対の符号欠損率は、それぞれ20%,10%,30%である。このため、符号欠損率の最も低い第2符号対が選択され、第2品番符号Sd2が第2RS符号Se2によって訂正される。したがって、符号欠損率が許容欠損率よりも低く、且つ符号欠損率の最も低い第2符号対を選択して、品番符号Sd2の訂正を行うことができる。
図7(f)に示すように、二次元コード15では、図7(e)と同様にして、RS符号Seの誤り訂正レベルが互いに異なっている。そして、符号欠損率の最も低い第3符号対が選択され、品番符号Sdが第3RS符号Se3によって訂正される。したがって、符号欠損率が許容欠損率よりも低い第3符号対を選択して、品番符号Sdの訂正を行うことができる。なお、第1RS符号Se1,第2RS符号Se2,第3RS符号Se3では、欠損部分の長さ(誤りを含む単位数)が同一であるが、RS符号の長さ(RS符号の単位数)の違いにより、符号対の符号欠損率が互いに異なっている。
以上詳述した本実施形態は以下の利点を有する。
・二次元コード11,13,14では、品番情報コードCdが複数含まれている。このため、訂正可能な情報量を有する品番符号Sdが1つの品番情報コードCdから得られなかったとしても、訂正可能な情報量を有する品番符号Sdを他の品番情報コードCdから得ることができる。また、二次元コード11,12,14,15では、RSコードCeが複数含まれている。このため、訂正に必要な情報量を有するRS符号Seが1つのRSコードCeから得られなかったとしても、訂正に必要な情報量を有するRS符号Seを他のRSコードCeから得ることができる。したがって、二次元コード11〜15の誤り訂正機能を強化することができる。
また、複数の品番情報コードCdや複数のRSコードCeは、二次元コード11〜15の位置決め用シンボル104A〜104Cに対応して規定された情報コード記録領域106内に、セルの分布パターンとして配置されているため、一度の読取り動作でこれらの情報コードを読取ることができる。その結果、複数箇所に設けられた二次元コードに対して読取り動作をそれぞれ実施して正しい品番符号を得るようにする場合と比較して、二次元コード11〜15から正しい品番符号Sdを得るまでに要する時間が長くなることを抑制することができる。
・二次元コード11,14は、単独の品番情報コードCdとそれに対応する単独のRSコードCeとのコード対を複数含むため、各コード対の読取り結果として得られる情報対毎に、品番符号SdをRS符号Seによって訂正することができる。したがって、品番符号SdをRS符号Seによって訂正する処理が複雑化することを抑制しつつ、二次元コード11,14の誤り訂正機能を強化することができる。
そして、二次元コード11,14の区分情報コードCbは、複数のコード対から得られる複数の符号対を区分する区分符号Sbが読取り結果として得られるものである。このため、二次元コード11,14にコード対が複数含まれていても、上記区分符号Sbに基づいて複数の符号対を区分し、読取装置30による二次元コードの最終読取り結果として単独の品番符号Sd(又は品番符号Sdを復号化した品番情報)を得ることができる。
・二次元コード12,15は、RSコードCeを複数含むため、品番符号Sdの訂正に必要な情報量を有するRS符号Seが1つのRSコードCeから得られなかった場合であっても、品番符号Sdの訂正に必要な情報量を有するRS符号Seを他のRSコードCeから得て、それによって品番符号Sdを訂正することができる。したがって、二次元コード12,15の誤り訂正機能を強化することができる。
そして、二次元コード12,15の区分情報コードCbは、複数のRS符号Seを区分する区分符号Sbが読取り結果として得られるものである。このため、二次元コード12,15にRSコードCeが複数含まれていても、上記区分符号Sbに基づいて複数のRS符号Seを区分し、読取装置30による二次元コード12,15の最終読取り結果として単独の品番符号Sdを得ることができる。
・二次元コード14,15では、各RSコードCeは、互いに誤り訂正レベルの異なるRS符号Seが読取り結果として得られるものであるため、同一の品番符号Sdを誤り訂正レベルの異なるRS符号Seによって訂正することができる。したがって、RSコードCeを複数含む構成において、RSコードCeの情報量の合計が増加することを抑制しつつ、正しい品番符号Sdの得られる可能性を上げることができる。
・さらに、二次元コード14,15では、各RSコードCeは、誤り訂正レベルの低いRS符号Seが読取り結果として得られるRSコードCeほど、所定のコード配置規則(JIS X 0510)に基づくデコード順序が早くなる位置に配置されている。このため、所定のコード配置規則に従って二次元コード14,15の各情報をデコードすることにより、最も誤り訂正レベルの低いRS符号Seを最初に得ることができる。したがって、複数のRS符号Seによって品番符号Sdを訂正する際に、最も誤り訂正レベルの低い第1RS符号Se1を最初に用いることが容易となる。その結果、品番情報コードCdの汚れや欠損が少ない場合には、最初に用いられる最も誤り訂正レベルの低い第1RS符号Se1によって訂正が可能であるため、品番符号Sdの訂正に要する処理時間を短縮することができる。
・二次元コード13は、品番情報コードCdを複数含んでいる。このため、訂正可能な情報量を有する品番符号Sdが1つの品番情報コードCdから得られなかった場合であっても、他の品番情報コードCdから正しい品番符号Sdを得たり、訂正可能な情報量を有する品番符号Sdを他の品番情報コードCdから得てRS符号Seによって訂正したりすることができる。さらに、一般にRSコードCeよりも情報量の少ない品番情報コードCdを複数含むため、情報量を抑えつつ二次元コード13の誤り訂正機能を強化することができる。
そして、二次元コード13の区分情報コードCbは、複数の品番符号Sdを区分する区分符号Sbが読取り結果として得られるものである。このため、二次元コード13に品番情報コードCdが複数含まれていても、上記区分符号Sbに基づいて複数の品番符号Sdを区分し、読取装置による二次元コード13の最終読取り結果として単独の品番符号Sdを得ることができる。
・二次元コードの読取装置30によれば、品番情報コードCdとRSコードCeと区分情報コードCbとに基づいて、品番符号Sd及びRS符号Seが取得される。ここで、複数の品番符号Sdや複数のRS符号Seを区分する区分符号Sbが読取り結果として得られるため、この区分符号Sbに基づいて各品番符号Sd及び各RS符号Seを取得することができる。これらの取得された品番符号Sd及びRS符号Seに基づいて、単独の品番符号Sdとそれに対応する単独のRS符号Seとの符号対がそれぞれ形成される。
そして、本実施形態のコード読取処理によれば、各符号対の品番符号Sd及びRS符号Seに基づいて各符号対の情報欠損率が算出され、各符号対のうち情報欠損率の最も低い符号対が選択される。この情報欠損率の最も低い符号対を用いて、品番符号SdがRS符号Seによって訂正されるため、正しい品番符号Sdの得られる可能性を高くすることができる。また、一度の読取り動作で正しい品番符号Sdを得ることができるため、複数箇所に設けられた二次元コードに対して読取り動作をそれぞれ実施する場合と比較して、正しい品番符号Sdを得るまでに要する時間が長くなることを抑制することができる。
・二次元コードの生成装置20によれば、品番符号SdとRS符号Seと区分符号Sbとに基づいて全情報が形成され、この全情報が所定のコード配置規則(JIS X 0510)に基づいて配置されてセルの分布パターンが生成される。このように生成された二次元コード11〜15によれば、上述したように、二次元コード11〜15から正しい品番符号Sdを得るまでに要する時間が長くなることを抑制しつつ、二次元コード11〜15の誤り訂正機能を強化することができる。
・さらに、二次元コードの生成装置20は、二次元コード11〜15に含ませる品番情報コードCd及びRSコードCeの少なくとも一方の数を可変設定する重複数入力部25を備えるため、二次元コード11〜15の使用環境による汚れや欠損の生じ易さに応じて、品番符号SdやRS符号Seの数を変更することができる。したがって、二次元コード11〜15の使用環境に応じて、二次元コード11〜15の誤り訂正機能を変更することができる。
(第2実施形態)
以下、第2実施形態について、第1実施形態との相違点を中心に説明する。本実施形態のコード読取処理では、第1符号対を用いて品番符号をRS符号によって訂正し、品番符号を訂正できなかった場合に、第1符号対とは別の第2符号対を用いて品番符号をRS符号によって訂正する。その他の点については、第1実施形態と同様である。
図8を参照して、二次元コードの読取装置30により実行される二次元コード11〜15の読取処理の手順について説明する。本処理では、S41〜S45の処理が図6のコード読取処理と異なっており、その他の処理については同一のステップ番号を付すことにより、その説明を省略する。
制御回路39は、S21〜S24の処理により形成された各符号対のうち、最初の符号対(第1の情報対)を選択して(S41)、RS符号による誤り検出を行い(S42)、誤りが検出されたか否か判定する(S43)。そして、RS符号による誤り検出において誤りが検出されたと判定した場合には(S43:YES)、選択された符号対により品番符号を訂正する(S28)。その後、制御回路39は、RS符号による品番符号の訂正が可能であったか否か判定する(S29)。品番符号の訂正が可能であったと判定した場合(S29:YES)、又は上記のRS符号による誤り検出において誤りが検出されなかったと判定した場合には(S43:NO)、CRCによる誤り検出において誤りが検出されなかったか否か判定する(S30)。
そして、制御回路39は、上記のRS符号による品番符号の訂正が可能でなかったと判定した場合(S29:NO)、又はCRCによる誤り検出において誤りが検出されたと判定した場合には(S30:NO)、選択された符号対の後に次の符号対(第2の情報対)があるか否か判定する(S44)。詳しくは、制御回路39は、形成された符号対の総数と選択された符号対の番号とに基づいて次の符号対があるか否か判定したり、全符号中において、選択された符号対を形成する各符号のいずれかの後に区分符号がある場合に次の符号対があると判定したりする。この判定において、次の符号対がないと判定した場合には(S44:NO)、本処理を終了する。
一方、制御回路39は、選択された符号対の後に次の符号対があると判定した場合には(S44:YES)、次の符号対を選択した後(S45)、上記と同様にしてS42以降の処理を実行する。そして、CRCによる誤り検出において誤りが検出されなかったと判定した場合には(S30:YES)、品番符号を復号化して品番情報を生成し(S31)、液晶表示器43により品番情報を表示する(S32)。制御回路39は、こうして本処理を終了する。
なお、S28の処理が第1訂正手段としての処理に相当し、S29,S44,S45,S28の処理が第2訂正手段としての処理に相当する。
次に、図9を参照して、従来のコード読取処理と対比しつつ、上述したコード読取処理による品番符号の訂正態様について説明する。なお、図9では、図7と同様の符号構成及び符号欠損状態となっている。
図9(b)に示すように、二次元コード11では、まず第1符号対(第1品番符号Sd1及び第1RS符号Se1)が選択され、第1RS符号Se1による誤り検出が行われる。その結果、誤りが検出されたと判定され、第1品番符号Sd1が第1RS符号Se1によって訂正される。ここで、第1符号対の符号欠損率は許容欠損率以下であるため、第1RS符号Se1による訂正は可能である。なお、第3符号対を用いて第3品番符号Sd3を第3RS符号Se3によって訂正することも可能であるが、本実施形態によれば正しい品番符号の得られた時点で二次元コード11の読取り処理を終了することができる。すなわち、第2符号対及び第3符号対についてRS符号により誤り検出を行う処理や、第2符号対及び第3符号対の符号欠損率を算出する処理を省略することができる。したがって、二次元コード11から正しい品番符号(又は品番情報)を得るまでに要する時間を短縮することができる。
図9(c)に示すように、二次元コード12では、まず第1符号対(品番符号Sd及び第1RS符号Se1)が選択され、第1RS符号Se1による誤り検出が行われる。そして、品番符号Sdが第1RS符号Se1によって訂正されるが、第1符号対の符号欠損率は許容欠損率を超えているため、第1RS符号Se1による訂正は不可能である。続いて、第1符号対の後に次の符号対がある否か判定され、次の第2符号対が選択される。そして、第2RS符号Se2による誤り検出において誤りが検出されたと判定され、品番符号Sdが第2RS符号Se2によって訂正される。ここで、第2符号対の符号欠損率は許容欠損率以下であるため、第2RS符号Se2による訂正は可能である。
図9(d)〜(f)においても、第1符号対から品番符号の訂正が順次行われ、正しい品番符号の得られた時点で、二次元コードの読取り処理が終了される。
以上詳述した本実施形態は以下の利点を有する。なお、ここでは第1実施形態と異なる利点について述べる。
・本実施形態のコード読取処理によれば、各情報対のうち第1の情報対を用いて、品番符号SdがRS符号Seによって訂正される。この第1の情報対を用いて品番符号Sdを訂正できなかった場合には、第1の情報対とは別の第2の情報対が用いられ、品番符号SdがRS符号Seによって訂正される。このため、各情報対を順次用いて品番符号Sdを訂正することにより、二次元コード11〜15の誤り訂正機能を強化しつつ、正しい品番符号Sdの得られた時点で二次元コード11〜15の読取り処理を終了することができる。その結果、二次元コード11〜15から正しい品番符号Sdを得るのに要する時間を短縮することができる。
(第3実施形態)
以下、第3実施形態について、第1実施形態との相違点を中心に説明する。本実施形態のコード読取処理では、複数の品番符号及びRS符号のそれぞれについて符号欠損率を算出し、それらのうち符号欠損率の最も低い品番符号及びRS符号をそれぞれ選択して、品番符号をRS符号によって訂正する。その他の点については、第1実施形態と同様である。
図10を参照して、二次元コードの読取装置30により実行される二次元コード11〜15の読取処理の手順について説明する。本処理では、S51〜S55の処理が図6のコード読取処理と異なっており、その他の処理については同一のステップ番号を付すことにより、その説明を省略する。
制御回路39は、S21〜S24の処理により形成された各符号対について、RS符号による誤り検出を行い(S25)、各品番符号の符号欠損率を算出するとともに(S51)、各RS符号の符号欠損率を算出する(S52)。詳しくは、制御回路39は、各符号対でのRS符号による誤り検出において、品番符号とRS符号とについて、それぞれ8ビット単位での誤りの数とその位置とを検出する。そして、制御回路39は、各品番符号及び各RS符号について、全体の単位数に対する誤りを含む単位数の比率を符号欠損率として算出する。そして、算出された各符号の符号欠損率をメモリ37により記憶する。なお、符号対の符号欠損率が許容欠損率を超える場合には、その符号対の符号欠損率(品番符号及びRS符号の各符号欠損率)は不明となる。この場合には、その品番符号及びRS符号の符号欠損率を許容欠損率よりも高いものとして扱う。
その後、制御回路39は、符号欠損率の最も低い品番符号を選択するとともに(S53)、符号欠損率の最も低いRS符号を選択し(S54)、選択された品番符号を選択されたRS符号によって訂正する(S55)。ここで、符号欠損率が許容欠損率以下である品番符号及びRS符号が存在しない場合には、全ての品番符号及びRS符号の組み合わせについて、品番符号をRS符号によって訂正する。すなわち、各品番符号を順に選択するとともに、それに組み合わせる各RS符号を順に選択して、選択された品番符号を選択されたRS符号によって訂正する。そして、制御回路39は、RS符号による品番符号の訂正が可能であったか否か判定し(S29)、訂正が可能でなかったと判定した場合には(S29:NO)、本処理を終了する。
一方、制御回路39は、RS符号による品番符号の訂正が可能であったと判定した場合には(S29:YES)、CRCによる誤り検出において誤りが検出されなかったか否か判定する(S30)。そして、制御回路39は、誤りが検出されたと判定した場合には(S30:NO)、本処理を終了する。
一方、制御回路39は、CRCによる誤り検出において誤りが検出されなかったと判定した場合には(S30:YES)、品番符号を復号化して品番情報を生成し(S31)、液晶表示器43により品番情報を表示する(S32)。制御回路39は、こうして本処理を終了する。
なお、S25,S51,S52の処理が欠損率算出手段としての処理に相当し、S53,S54の処理が選択手段としての処理に相当し、S55の処理が訂正手段としての処理に相当する。
次に、図11を参照して、従来のコード読取処理と対比しつつ、上述したコード読取処理による品番符号の訂正態様について説明する。なお、図11では、符号構成は図7と同様であるが、符号欠損状態が図7と異なっている。すなわち、図11(b),(e)では、図7(b),(e)よりも符号欠損が多い状態となっている。また、図11では、選択された各符号を破線枠で囲んで示している。
図11(b)に示すように、二次元コード11では、符号欠損率の最も低い第1品番符号Sd1と、符号欠損率の最も低い第3RS符号Se3とが選択される。そして、第1品番符号Sd1が第3RS符号Se3によって訂正される。したがって、第1符号対を用いて第1品番符号Sd1を第1RS符号Se1によって訂正する場合、又は第3符号対を用いて第3品番符号Sd3を第3RS符号Se3によって訂正する場合よりも、正しい品番符号が得られる可能性を高くすることができる。
図11(c),(f)では、各符号対において品番符号Sdが共通であり、図11(d)では、各符号対においてRS符号Seが共通である。このため、符号欠損率の最も低い品番符号とRS符号との組み合わせは、符号欠損率の最も低い符号対を選択した場合と同一になる。なお、図11(f)において、第1RS符号Se1,第2RS符号Se2,第3RS符号Se3の符号欠損率は、それぞれ41%,36%,32%である。
図11(e)に示すように、二次元コード14では、第1符号対,第2符号対,第3符号対の符号欠損率は、それぞれ50%,40%,40%である。このため、各符号対の符号欠損率は許容欠損率を超えており、これらの各符号対における品番符号とRS符号との組み合わせでは、品番符号を訂正することができない。また、第2RS符号Se2の符号欠損率が上限を超えた場合には、第2品番符号Sd2の符号欠損率にかかわらず、第2品番符号Sd2を第2RS符号Se2によって訂正することができなくなる。同様にして、第3品番符号Sd3の符号欠損率が上限を超えた場合には、第3RS符号Se3の符号欠損率にかかわらず、第3品番符号Sd3を第3RS符号Se3によって訂正することができなくなる。ここで、符号欠損率の最も低い第2品番符号Sd2の符号欠損率は23%であり、符号欠損率の最も低い第3RS符号Se3の符号欠損率は17%である(符号対の符号欠損率が許容欠損利率を超えているため、算出される第2品番符号Sd2及び第3RS符号Se3の符号欠損率は不明)。そして、各品番符号が順に選択されるとともに、それに組み合わせる各RS符号が順に選択される際に、これらの第2品番符号Sd2と第3RS符号Se3とが選択され、第2品番符号Sd2が第3RS符号Se3によって訂正される。したがって、品番符号Sd2の訂正を可能とすることができる。
以上詳述した本実施形態は以下の利点を有する。なお、ここでは第1実施形態と異なる利点について述べる。
・本実施形態のコード読取処理によれば、複数の品番符号Sd及びRS符号Seに基づいて各品番符号Sd及び各RS符号Seの情報欠損率が算出され、これらの品番符号Sd及びRS符号Seのうち情報欠損率の最も低い品番符号Sd及びRS符号Seがそれぞれ選択される。この情報欠損率の最も低い品番符号Sdが、この情報欠損率の最も低いRS符号Seによって訂正されるため、正しい品番符号Sdの得られる可能性を最も高くすることができる。
・本実施形態のコード読取処理によれば、符号欠損率が許容欠損率以下である品番符号Sd及びRS符号Seが存在しない場合には、全ての品番符号Sd及びRS符号Seの組み合わせについて、品番符号SdがRS符号Seによって訂正される。すなわち、各品番符号Sdが順に選択されるとともに、それに組み合わせる各RS符号Seが順に選択され、選択された品番符号Sdが選択されたRS符号Seによって訂正される。このため、符号対(品番符号Sd及びRS符号Se)の符号欠損率が不明である場合にも、正しい品番符号Sdの得られる可能性を高くすることができる。
(他の実施形態)
上記各実施形態に限定されず、例えば次のように実施することもできる。
・二次元コードの生成装置20は、二次元コードの使用環境(汚れ易さ等)を指定する作業者による入力操作を受け付け、この指定された使用環境に基づいてプログラムにより各情報コードの重複数を可変設定するようにしてもよい。また、二次元コードの生成装置20は、予め設定された重複数の品番情報コード及びRSコードを、二次元コードに含ませるものであってもよい。
・二次元コードの生成装置20は、前側の符号対ほど誤り訂正レベルの低いRS符号を含むように符号を形成したが、この順序を変更してもよい。
・二次元コードの生成装置20は、品番情報の情報量や、品番情報コード及びRSコードの重複数に応じて、二次元コードのバージョンを変更したり、カラー二次元コードを採用したりしてもよい。例えば、品番情報の情報量や、品番情報コード及びRSコードの重複数が多くなるほど、総コードワード数の多いバージョンに変更することが有効である。また、カラー二次元コードは、白黒の二次元コードよりも多くの情報を持つことができるため、二次元コードのサイズが大きくなることを抑制しつつ、品番情報コード及びRSコードの重複数を増加させることができる。
・二次元コードの生成装置20の出力装置としてディスプレイを採用し、二次元コードをディスプレイに表示(出力)するようにしてよい。
・上記第2実施形態では、最初の符号対から品番符号を訂正し、訂正できなかった場合に次の符号対を訂正するようにした。しかしながら、RS符号による誤り検出をした段階で符号欠損率に基づいて訂正が可能であるか否かを判定し、訂正できないと判定した場合にはその符号の訂正を行うことなく、次の符号対を訂正するようにしてもよい。こうした構成によれば、品番符号を訂正することができない場合には、品番符号の訂正処理を実行することを避けることができる。その結果、二次元コードから正しい品番符号を得るまでに要する時間を短縮することができる。
・上記第1実施形態又は第2実施形態では、RS符号による品番符号の訂正が可能でなかったと判定した場合、又はCRCによる誤り検出において誤りが検出されたと判定した場合(第2実施形態では、更に次の符号対がないと判定した場合)には、コード読取り処理を終了するようにした。しかしながら、これらの場合に、第3実施形態のコード読取り処理に準じた処理を実行してもよい。すなわち、各品番符号及び各RS符号の符号欠損率を算出するとともに、符号欠損率の最も低い品番符号及びRS符号をそれぞれ選択する。そして、第1実施形態又は第2実施形態において形成された符号対によって品番符号を訂正できなかった場合に、それぞれ選択された符号欠損率の最も低い品番符号を、符号欠損率の最も低いRS符号によって訂正する。こうした構成によれば、一旦は品番符号を訂正できなかった場合であっても、正しい品番符号の得られる可能性を更に高くして再度訂正を行うことができる。
・上記第3実施形態では、符号欠損率が許容欠損率以下である品番符号Sd及びRS符号Seが存在しない場合には、全ての品番符号Sd及びRS符号Seの組み合わせについて、品番符号SdをRS符号Seによって訂正するようにした。しかしながら、RS符号による誤り検出において品番符号Sd及びRS符号Seの符号欠損率を算出できない場合に、チェックデジット等の他の誤り検出手段によって、品番符号Sd及びRS符号Seの符号欠損率を算出するようにしてもよい。そして、符号欠損率の最も低い品番符号Sdを選択するとともに、符号欠損率の最も低いRS符号Seを選択し、選択された品番符号Sdを選択されたRS符号Seによって訂正するようにしてもよい。
・二次元コードが品番情報コード及びRSコードをそれぞれ複数含み、それらの重複数が互いに異なるようにしてもよい。この場合であっても、複数の品番符号及びRS符号から適宜選択して、品番符号とRS符号との符号対を形成するようにすればよい。
・上記各実施形態のコード読取処理では、品番符号とRS符号との符号対を形成して、形成された各符号対をメモリ37に記憶させるようにした。しかしながら、各品番符号と各RS符号との対応付けのみを行い、以降の処理においてこの対応付けに従って品番符号とRS符号とを読込んで用いるようにしてもよい。
・リードソロモン符号に限定されず、BCH符号等の他の誤り訂正符号を採用してもよい。
・二次元コードの予め規定された読取り範囲として、二次元コードの位置決め用シンボル104A,104B,104Cに対応して規定された情報コード記録領域106を採用したが、1つの二次元コードを特定するためのその他のシンボルに対応して規定された情報コードの配置範囲を採用してもよい。