説明

コードリーダ

【課題】ユーザによるデータの誤認を適切に抑制することができるコードリーダを提供する。
【解決手段】コードリーダであって、読取範囲内に存在する対象物の光学的特性分布を検出する手段と、光学的特性分布に基づいて情報コードの位置を検出する手段と、光学的特性分布に基づいて読取範囲内の情報コードをデコードし、得られたデータを出力するデコード手段と、デコード条件の記憶手段を有している。デコード手段は、読取範囲の中の第1の範囲内にある情報コードに対して第1のデコード条件を用いてデコードし、読取範囲の中の第2の範囲内にある情報コードに対してより厳しい第2のデコード条件を用いてデコードし、第1の範囲内の情報コードをデコードできたときには、第1の範囲内の情報コードのデータを出力して第2の範囲内の情報コードのデータを出力しない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報コードからデータを読み取るコードリーダに関する。
【背景技術】
【0002】
バーコードや2次元コード等の情報コードからデータを読み取るコードリーダが知られている。このようなコードリーダは、情報コードを読み取るための読取範囲を有している。この読取範囲内に情報コードが含まれるようにコードリーダを配置し、所定の操作を行うことで、情報コードの読み取りが実行される。この読取動作では、コードリーダは、読取範囲内に存在する対象物(情報コードが印刷されている用紙等)の光学的特性分布(例えば、白い部分と黒い部分の分布)を検出する。そして、検出した光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、デコードしたデータを出力する。
【0003】
近年では、読取範囲が広いコードリーダが一般的になっている。読取範囲が広いと、情報コードに対するコードリーダの位置合わせが容易となるため、よりコードリーダが使い易くなる。しかしながら、このようなコードリーダを用いる際には、複数の情報コードが印字されている対象物からデータを読み取る場合に、問題が生じることがある。すなわち、対象物に複数の情報コードが印字されている場合には、読取範囲内に複数の情報コードが含まれることがある。この場合、ユーザが読み取ろうとしている情報コードとは別の情報コードからデータが読み取られることがある。その結果、ユーザが情報コードの内容を誤認してしまうおそれがある。
【0004】
このような問題に対し、特許文献1には、読取範囲内に存在する情報コードの位置を検出し、読取範囲の中心に近い位置にある情報コードからデータを読み取るコードリーダが開示されている。このコードリーダによれば、読取範囲内に複数の情報コードがある場合でも、中心に近い位置にある情報コードからデータが読み取られるので、ユーザに誤認を生じさせることを抑制することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−263584号
【発明の概要】
【発明が解決しようとする課題】
【0006】
コードリーダにより情報コードを読み取る際には、情報コードの印字品質(すなわち、鮮明に印字されているか否か)、外来光、読取角度(読み取るときのコードリーダと情報コードが印字されている面との間の角度)等の読み取り条件によって、情報コードの読み取り易さが変化する。読取範囲内に複数の情報コードが含まれている場合には、上述した読み取り条件が情報コード毎に異なる場合があり、これによって、読取範囲内の情報コードの読み取り易さに差が生じることがある。すなわち、読取範囲内に、読み取り易い情報コードと、読み取り難い情報コードが存在することがある。
【0007】
上述した特許文献1の技術では、読取範囲内の中心に近い位置にある情報コードを読み取ることで、ユーザによる誤認を防止する。しかしながら、上述した読み取り条件によっては、中心に近い位置の情報コードを読み取ることができず、中心から遠い位置の情報コードが読み取られる場合がある。この場合には、ユーザによる誤認の問題が生じてしまう。
【0008】
したがって、本明細書では、ユーザによる誤認の問題をより適切に抑制することができるコードリーダを提供する。
【課題を解決するための手段】
【0009】
本明細書が開示するコードリーダは、情報コードからデータを読み取る。このコードリーダは、読取範囲内に存在する対象物の光学的特性分布を検出する光学的特性分布検出手段と、光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードの位置を検出する位置検出手段と、光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、得られたデータを出力するデコード手段と、デコード手段がデコードするときの条件であるデコード条件を記憶する記憶手段であって、第1のデコード条件と、第1のデコード条件よりも厳しい第2のデコード条件を記憶する記憶手段を有している。デコード手段は、位置検出手段で検出された位置が読取範囲の中の第1の範囲内にある情報コードに対して第1のデコード条件を用いてデコードし、位置検出手段で検出された位置が読取範囲の中の第2の範囲内にある情報コードに対して第2のデコード条件を用いてデコードし、第1の範囲内の情報コードをデコードできたときには、第1の範囲内の情報コードのデータを出力するとともに第2の範囲内の情報コードのデータを出力しない。
【0010】
なお、デコード条件とは、デコード手段がデコードできたと認識するための条件を意味する。デコード条件が厳しいとは、デコード手段がデコードできたと認識し難い条件を意味する。したがって、デコード条件が厳しいと、デコード手段は、情報コードをデコードできないと判断し易くなる。また、データを出力するとは、コードリーダの内部の機器や、コードリーダの外部の機器にデータを送ることを意味する。例えば、コードリーダが有する表示装置にデータを送れば、表示機器にデータが表示される。また、データを外部のPCに送信すれば、PCでデータを表示したり、データを蓄積したり、データを加工したり、データを印刷したりすることができる。これらの動作は、上記の出力に含まれる。また、情報コードは、1次元コード(例えば、バーコード)であってもよいし、2次元コード(例えば、QRコード)であってもよい。また、上記の対象物とは、情報コードが印字されている物体を意味する。また、印字されているとは、情報コードの光学的特性分布を検出できる状態にされていることを意味し、紙に情報コードが印刷されていること、及び、表示画面に情報コードが表示されていることを含む。したがって、上記の対象物には、情報コードが印刷された物体(例えば、紙)や、情報コードが表示された物体(例えば、液晶画面)が含まれる。また、第2の範囲内の情報コードのデータを出力しないとは、第2の範囲内の情報コードをデコードしない態様と、第2の範囲内の情報コードをデコードはするが出力はしない態様とが含まれる。
【0011】
上記のコードリーダは、第1の範囲内の情報コードがデコードされたときには、第1の範囲内の情報コードのデータを出力し、第2の範囲内の情報コードのデータを出力しない。すなわち、第1の範囲内の情報コードが優先して読み取られる。したがって、対象物に複数の情報コードが印字されている場合に、第1の範囲が目標の情報コードと重なるようにコードリーダを使用することで、その目標の情報コードを優先して読み取ることができる。また、このコードリーダは、第1の範囲内にある情報コードをデコードするときに、第2の範囲内にある情報コードをデコードするときよりも緩いデコード条件を適用する。したがって、第1の範囲内の情報コードは、第2の範囲内の情報コードよりもデコードされ易い。このため、第1の範囲内の情報コードの読み取り条件が悪く(読み取り難い条件にある)、第2の範囲内の情報コードの読み取り条件が良い(読み取り易い条件にある)場合でも、第2の範囲内の情報コードだけが読み取られ、第1の範囲内の情報コードが読み取られないという事態が生じることが抑制される。これによって、ユーザが第1の範囲内の情報コードを読み取ろうとしているにも係わらず、コードリーダが第2の範囲内の情報コードを読み取ってしまうという事態が生じることが抑制される。したがって、ユーザが情報コードの内容を誤認することが抑制される。
【0012】
上記のコードリーダにおいては、デコード条件に、読取一致回数、記録幅補正値、記録部欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無の少なくとも1つが含まれることが好ましい。
【0013】
読取一致回数とは、コードリーダに情報コードの読取を複数回実行させて同一のデータが得られる回数をカウントし、同一のデータが基準回数以上得られた場合に始めてデータをデコードできたと判断する方式を採用する場合における上記の基準回数を意味する。読取一致回数が多いほど、厳しいデコード条件となる。
記録幅補正値とは、情報コード内の記録部分の幅(例えば、バーコード内のバーの幅)を光学的特性分布から検出してその幅に対応するデータを特定するときに、そのデータを示すものとして予め決められた幅と検出された幅との許容誤差を意味する。例えば、データD1を表す幅として幅H1が定められており、記録幅補正値が値C1である場合には、検出されたバーの幅H2がH1―C1<H2<H1+C1であるときに、そのバーがデータD1を表すものとして特定される。記録幅補正値が小さいほど、厳しいデコード条件となる。
記録部欠け補正とは、情報コード内の一部の記録部分において対応するデータを特定できなかったとき(例えば、記録部分に欠けがある等の印字不良があったとき)に、その他の記録部分から特定されたデータに基づいて、特定できなかった記録部分のデータを予測して特定することを意味する。記録部欠け補正が無い方が、厳しいデコード条件となる。
絶対マージンの大きさとは、情報コードの周囲に設けられた余白部分の幅の許容値を意味する。情報コードの周囲の余白部分の幅が絶対マージンよりも小さいと、デコード手段はデコードできないと判断する。絶対マージンが大きいほど、厳しいデコード条件となる。
読取交互モードとは、情報コードを一方向にスキャンして情報コードを読み取り、次に、前回とは逆方向に情報コードをスキャンして情報コードを読み取り、これらの読み取り動作で得られたデータが一致したときにデータをデコードできたと判断するモードを意味する。読取交互モード有り(読取交互モードを実行すること)の方が、厳しいデコード条件となる。
【0014】
上述したコードリーダは、読取範囲が一方向に長い範囲であり、第1の範囲が前記一方向における読取範囲の中央点を少なくとも含んでおり、第2の範囲が第1の範囲の両脇に存在していることが好ましい。
【0015】
一般に、ユーザは、読取範囲の中央で情報コードを読み取ろうとする。したがって、このように第1の範囲が読取範囲の中央点を含んでいると、ユーザが違和感なくコードリーダを使用することができる。
【図面の簡単な説明】
【0016】
【図1】実施例のバーコードリーダ10の概略斜視図。
【図2】実施例のバーコードリーダ10を裏側から見た平面図。
【図3】実施例のバーコードリーダ10のブロック図。
【図4】CCDラインセンサ20で検出される輝度分布の一例を示す図。
【図5】デコード条件を示す図。
【図6】バーコードの読取動作を示すフローチャート。
【図7】図6のステップS2の詳細を示すフローチャート。
【図8】変形例のバーコードリーダの読取範囲と優先範囲を示す図。
【発明を実施するための形態】
【実施例】
【0017】
図1に示す実施例のバーコードリーダ10は、直線状に伸びる読取範囲80内のバーコードからデータを読み取る。バーコードリーダ10は、ユーザにより把持される把持部12を有している。把持部12の表面には、プッシュボタン等の多数の操作スイッチが設置されている。また、図2に示すように、バーコードリーダ10の裏側の面及び側面には、トリガスイッチ52、54、56が設置されている。図1〜3に示すように、バーコードリーダ10は、CCDラインセンサ20と、演算装置30と、記憶装置40と、入力装置50と、LCD60を有している。
【0018】
CCDラインセンサ20は、バーコードリーダ10の先端部に設置されている。CCDラインセンサ20は、一列に並べられた多数(n個)の撮像素子を有している。CCDラインセンサ20は、これらの多数の撮像素子によって、読取範囲80を撮影する。すなわち、CCDラインセンサ20は、読取範囲80内に存在する対象物の表面における輝度分布を検出する。これによって、読取範囲80内のバーコードのバーの分布(すなわち、明部と暗部の分布)が検出される。例えば、図1に示すように用紙98に印刷された3つのバーコード90a〜90cをCCDラインセンサ20の読取範囲80内に配置してCCDラインセンサ20を動作させると、図4に示すように、読取範囲80内の用紙98の表面の輝度分布が検出される。なお、図4では、図の見易さを考慮して、実際に得られる輝度分布よりも簡略化した輝度分布を示している。また、図4の左側は図1の読取範囲80の左側(ユーザから見て左側)に対応し、図4の右側は図1の読取範囲80の右側(ユーザから見て右側)に対応する。図4に示すように、バーコードが印刷されている部分では、明部と暗部が短い間隔で交互に存在する輝度分布が得られる。以下では、CCDラインセンサ20が出力する輝度分布のうちのバーコードに対応する部分(明部と暗部が短い間隔で交互に存在する部分)をバーコード波形という。図4では、バーコード90a〜90cに対応するバーコード波形92a〜92cが検出されている。上述したように、CCDラインセンサ20は、n個の撮像素子を有している。以下では、説明のため、左端からk番目の撮像素子を撮像素子dkという。すなわち、図1、4の読取範囲80の左端の位置で検出を行う撮像素子を撮像素子d1といい、撮像素子d1の右隣の撮像素子を撮像素子d2といい、読取範囲80の右端の位置で検出を行う撮像素子を撮像素子dnとい、撮像素子dnの左隣の撮像素子を撮像素子dn−1という。つまり、n個の撮像素子を左側から順に、d1、d2、d3・・・dn−2、dn−1、dnという。CCDラインセンサ20は、通常時は、撮像素子d1から順に輝度の検出を行う。すなわち、最初に撮像素子d1で検出を行い、次に撮像素子d2で検出を行い、以下、撮像素子dnまで配列された順番に検出を行う。このように順番に検出された輝度を撮像素子の位置に従って並べることで、図4に示す輝度分布が得られる。撮像素子d1から撮像素子dnに向かう順番(すなわち、d1、d2、d3・・・dn−2、dn−1、dnの順)で輝度を検出するモードを、以下では通常スキャンモードという。一方、CCDラインセンサ20は、撮像素子dnから撮像素子d1に向かう順番(すなわち、dn、dn−1、dn−2・・・d3、d2、d1の順)で輝度を検出することもできる。以下では、このモードをリバーススキャンモードという。原理的にはリバーススキャンモードで得られる輝度分布は通常スキャンモードと同一となるはずであるが、ハードウェアの要因によってリバーススキャンモードで得られる輝度分布が通常スキャンモードと若干異なる場合がある。
【0019】
記憶装置40は、バーコードリーダ10の内部に設置されている。記憶装置40は、演算装置30がデコードを行うときのデコード条件として、図5に示す厳しいデコード条件と緩いデコード条件を記憶している。デコード条件については後に詳述する。
【0020】
演算装置30は、バーコードリーダ10の内部に設置されている。演算装置30は、CPU等により構成されている。演算装置30は、CCDラインセンサ20、記憶装置40、入力装置50、及び、LCD60と電気的に接続されている。演算装置30には、CCDラインセンサ20が検出する輝度分布が入力される。演算装置30は、入力される輝度分布から、CCDラインセンサ20で撮影されたバーコードに記述されているデータをデコードする。演算装置30は、データをデコードすると、デコードしたデータをLCD60に入力する。
【0021】
LCD60は、把持部12とCCDラインセンサ20の間に設置されている。LCD60は、種々の情報を表示する。LCD60は、演算装置30からデコードされたデータが入力されると、そのデータを表示する。
【0022】
入力装置50は、上述した多数の操作スイッチ(トリガスイッチ52、54、56を含む)を有している。入力装置50は、操作スイッチからの信号を、演算装置30に入力する。
【0023】
図1の読取範囲80は、中央の範囲84と、その両脇の範囲82、86に区別されている。中央の範囲84は、バーコードを優先して読み取るための優先範囲であり、両脇の範囲82、86は非優先範囲である。演算装置30は、優先範囲84内のバーコードからデータをデコードする際には記憶装置40が記憶している緩いデコード条件を適用し、非優先範囲82、86内のバーコードからデータをデコードする際には記憶装置40が記憶している厳しいデコード条件を適用する。
【0024】
デコード条件の詳細について説明する。デコード条件は、演算装置30がデコードできたことを認識するための条件を意味する。デコード条件が厳しいと、デコードされたデータの信頼性が高まる一方で、デコードを失敗する確率が高くなる。図5に示すように、記憶装置40が記憶する各デコード条件では、読取一致回数、バー幅補正値、バー欠け補正、絶対マージン、及び、読取交互モードが規定されている。
【0025】
読取一致回数は、演算装置30がデコードできたと判定するために必要な同一データの読取回数を意味する。すなわち、演算装置30は、読取動作において、データの読み取りを複数回試行する。これらの試行において、同一のデータが得られた回数が読取一致回数に達したときに初めて、演算装置30はデコードができたと判定する。読取り一致回数が多いと、演算装置30がデコードできたと判定し難くなるため、デコード条件としては厳しくなる。図5に示すように、緩いデコード条件では読取一致回数が2回であり、厳しいデコード条件では読取一致回数が4回である。つまり、緩いデコード条件では、同一のデータが2回得られた段階でデコード成功と判定されるのに対し、厳しいデコード条件では、同一のデータが4回得られて初めてデコード成功と判定される。
【0026】
バー幅補正値は、バーコード波形から検出されるバーコード内のバーの幅(暗部の幅または明部の幅)から、そのバーに対応するデータを特定する際の許容誤差を示す。例えば、バーコード全体の長さに対して1%の幅のバーがデータA1を示すものとして予め定められているとする。この場合に、バー幅補正値が0.05%(厳しいデコード条件)である場合には、演算装置30は、バーコード全体の長さに対してバー幅が0.95%〜1.05%であるバーをデータA1として認識する。一方、バー幅補正値が0.1%(緩いデコード条件)である場合には、演算装置30は、バーコード全体の長さに対してバー幅が0.9%〜1.1%であるバーをデータA1として認識する。このように、バー幅補正値が小さいほうが、演算装置30がバーに対してデータを特定し難くなるので、デコード条件としては厳しくなる。
【0027】
バー欠け補正は、バーコード内の一部のバーのデータを特定できなかった場合に、それ以外のバーのバー幅に基づいて、データを特定できなかったバーのデータを予測することを意味する。例えば、図4において、バーコード波形92bの中の暗部110に対応するバーのデータを特定できなかったが、その他のバーについてはデータを特定できたとする。この場合に、その他のバーのデータから暗部110に対応するバーのデータを予測することができる場合がある。暗部110に対応するバーのデータを予測できれば、バーコード波形92bに相当するバーコード90b全体のデータを特定できる。バー欠け補正有り(緩いデコード条件)では、このような場合に、特定できなかったバーのデータを補完して、バーコード全体のデータを得る。バー欠け補正無し(厳しいデコード条件)では、このような場合を、エラー(読み取り失敗)として扱う。バー欠け補正無しの方が、エラーが生じ易くなるので、デコード条件としては厳しくなる。
【0028】
絶対マージンは、バーコードの両端部に存在する余白部分(明部)の幅の許容値を意味する。演算装置30は、バーコード波形からデータをデコードするときに、バーコード波形の両脇に一定幅以上の明部を必要とする。例えば、図3のバーコード波形92bをデコードするためには、その両脇の明部120が一定幅以上であることが必要である。絶対マージンは、バーコード波形の両脇の明部の幅の最低必要量を意味する。演算装置30は、バーコード波形の両脇の明部の幅が絶対マージンより小さいときは、そのバーコード波形をデコードできないと判断する。絶対マージンが大きいほど、演算装置30がデコードできないと判断し易くなるので、デコード条件としては厳しくなる。
【0029】
読取り交互モードは、上述した通常スキャンモードによる読み取りと、リバーススキャンモードによる読み取りを行って、両モードで同一のデータが得られたときに、演算装置30がデコードできたと判定することを意味する。読取交互モード有りの方が、デコード条件としては厳しくなる。
【0030】
次に、バーコードリーダ10でバーコードを読み取る際の動作について説明する。図6は、読取動作において演算装置30が実行する処理を示している。ユーザがバーコードリーダ10のトリガスイッチ54を押すと、図6に示す動作が実行される。図6のステップS2では、演算装置30は、バーコードの読み取りを試行する。図7は、ステップS2の詳細を示している。すなわち、ステップS2では、図7に示す処理が実行される。
【0031】
図7のステップS22では、演算装置30は、CCDラインセンサ20を動作させて、読取範囲80内の対象物の輝度分布を検出する。検出された輝度分布は、演算装置30に入力される。例えば、図1に示すように3つのバーコード90a〜90cが読取範囲80内に存在する場合には、図4に示す輝度分布が得られる。なお、最初のステップS22では、CCDラインセンサ20を通常スキャンモードで動作させる。後に詳述するが、2回目以降のステップS22では、前回のステップS22とスキャン方向を反転させたモードでCCDラインセンサ20を動作させる。
【0032】
ステップS24では、演算装置30は、得られた輝度分布から各明部及び各暗部の幅を算出する。そして、算出した各幅に基づいて、輝度分布の中からバーコード波形を特定する。例えば、図4の例では、バーコード90a〜90cに対応するバーコード波形92a〜92cが特定される。
【0033】
ステップS26では、演算装置30は、ステップS24で特定したバーコード波形の中から1つのバーコード波形を選択する。最初のステップS26では、演算装置30は、最も右側のバーコード波形を選択する。2回目以降のステップS26では、前回のステップS26で選択したバーコード波形の1つ左側のバーコード波形を選択する。
【0034】
ステップS28では、演算装置30は、ステップS26で選択したバーコード波形の位置を特定する。バーコード波形の位置の特定は、以下のようにして行う。すなわち、最初にステップS24で算出した各明部及び各暗部の幅を用いて、ステップS26で選択したバーコード波形の右端の位置と左端の位置を算出する。次に、算出した右端の位置と左端の位置を平均して、選択したバーコード波形の中央の位置を算出する。なお、バーコード波形の位置を特定することは、読取範囲80内におけるバーコードの位置を特定するのに等しい。
【0035】
ステップS30では、ステップS28で算出したバーコード波形の位置(選択したバーコード波形の中央の位置)から、ステップS26で選択したバーコード波形が優先範囲84内にあるか、非優先範囲82、86内にあるかを判定する。すなわち、演算装置30は、図4に示すように、CCDラインセンサ20の読取範囲80を、優先範囲84と非優先範囲82、86とに区別して認識している。なお、図4の優先範囲84及び非優先範囲82、86は、図1の優先範囲84及び非優先範囲82、86と対応している。優先範囲84は読取範囲80の中央に位置しており、優先範囲84の幅は読取範囲80の幅の約40%である。演算装置30は、ステップS28で算出したバーコード波形の位置から、バーコード波形が優先範囲84内にあるか否かを判定する。なお、バーコード波形の位置が優先範囲84内にあるか否かを判定することは、バーコードが優先範囲84内にあるか否かを判定するのに等しい。
なお、他の実施例においては、選択したバーコード波形が優先範囲84内に存在するか否かの判定方法は本実施例と異なっていてもよい。例えば、バーコード波形の全体が優先範囲84内に入っているときにバーコード波形が優先範囲84内に存在していると判定してもよいし、バーコード波形の少なくとも一部が優先範囲84内に入っていればバーコード波形が優先範囲84内に存在していると判定してもよい。
【0036】
ステップS32では、演算装置30は、ステップS30の判定結果に基づいて、記憶装置40が記憶しているデコード条件の中から1つのデコード条件を選択する。具体的には、演算装置30は、選択したバーコード波形が優先範囲84内に存在すると判定した場合には、緩いデコード条件を選択する。また、演算装置30は、選択したバーコード波形が優先範囲84内に存在しないと判定した場合には、厳しいデコード条件を選択する。
【0037】
ステップS34では、演算装置30は、ステップS32で選択したデコード条件に基づいて、ステップS26で選択したバーコード波形のデコードを試みる。すなわち、そのバーコード波形に対応するバーコードに記述されているデータを復元することを試みる。具体的には、演算装置30は、最初に、選択したバーコード波形の両脇の明部(例えば、図4の明部120)が、ステップS32で選択したデコード条件において規定された絶対マージンより大きいか否かを判定する。この判定は、バーコードの両端部に所定幅以上の余白が存在するか否かを判定しているのに等しい。選択したバーコード波形の両脇の明部の幅が絶対マージンより小さいときは、演算装置30は、デコードに失敗したと判定する。選択したバーコード波形の両脇の明部の幅が絶対マージンより大きいときは、演算装置30は、そのバーコード波形内の各明部及び各暗部の幅(ステップS24で算出済み)から、各明部及び各暗部が示すデータを特定する。これによって、バーコード波形に対応するバーコード全体のデータを特定する。なお、緩いデコード条件を用いる場合には、バー幅補正値として0.1%が適用され、バー欠け補正が有りとなる。一方、厳しいデコード条件を用いる場合には、バー幅補正値として0.05%が適用され、バー欠け補正が無しとなる。ステップS34でデコードに成功した場合には、演算装置30は、デコードにより得られたデータを所定の記憶領域に記憶する。なお、ステップS34におけるデコードの成功とは、1度のデコード処理についてのデコードの成功を意味している。後に詳述するが、最終的にデコードに成功したか否かは、デコード処理を複数回繰り返し実行し、各デコード処理の結果に基づいて判断される。
【0038】
ステップS36では、ステップS34の結果に応じて、デコード成功回数がカウントされる。ステップS34でデコードに成功した場合には、デコード成功回数に1が加算され、ステップS34でデコードに失敗した場合には、デコード成功回数は変化しない。なお、デコード成功回数は、バーコード波形毎に区別してカウントされる。例えば、図4に示すように3つのバーコード波形92a〜92cが特定されている場合には、バーコード波形92a〜92cのそれぞれについてデコード成功回数がカウントされる。
【0039】
ステップS38では、ステップS24で特定されたバーコード波形の全てに対してデコードを試みたか否かが判定される。デコードを試みていないバーコード波形が残っている場合には、残っているバーコード波形に対してステップS26からの処理が実行される。全てのバーコード波形に対してデコードを試みた場合には、図7の処理(すなわち、図6のステップS2)は終了する。
【0040】
図7のフローチャートについて、図1に示すように3つのバーコード90a〜90cを読み取る場合を例として、より詳細に説明する。ステップS22では、バーコード90a〜90cが印刷されている用紙98の輝度分布として、図4に示す輝度分布が検出される。ステップS24では、各明部及び各暗部の幅が算出され、バーコード波形92a〜92cが特定される。最初のステップS26では、右側のバーコード波形92cが選択される。そして、引き続き行われるステップS28でバーコード波形92cの位置が特定され、ステップS30でバーコード波形92cが非優先範囲86内に存在していると判定される。このため、その後のステップS32で厳しいデコード条件が選択され、ステップS34で厳しいデコード条件に従ってバーコード波形92cのデコードが試みられる。ステップS36では、ステップS34の結果に応じて、バーコード波形92cに対するデコード成功回数Ccが計算される。ステップS34でデコードに成功した場合には、デコード成功回数Ccが0から1に増加する。ステップS34でデコードに失敗した場合には、デコード成功回数Ccは0のまま変化しない。ステップS38では、バーコード波形92a、92bに対してデコードを試みていないので、NOと判定される。したがって、再度ステップS26が行われる。2回目のステップS26では、中央のバーコード波形92bが選択される。そして、引き続き行われるステップS28でバーコード波形92bの位置が特定され、ステップS30でバーコード波形92bが優先範囲84内に存在していると判定される。このため、その後のステップS32で緩いデコード条件が選択され、ステップS34で緩いデコード条件に従ってバーコード波形92bのデコードが試みられる。ステップS36では、ステップS34の結果に応じて、バーコード波形92bに対するデコード成功回数Cbが計算される。次のステップS38では、バーコード波形92aに対してデコードを試みていないので、NOと判定される。したがって、再度ステップS26が行われる。3回目のステップS26では、左側のバーコード波形92aが選択される。そして、引き続き行われるステップS28でバーコード波形92aの位置が特定され、ステップS30でバーコード波形92aが非優先範囲82内に存在していると判定される。このため、その後のステップS32で厳しいデコード条件が選択され、ステップS34で厳しいデコード条件に従ってバーコード波形92aのデコードが試みられる。ステップS36では、ステップS34の結果に応じて、バーコード波形92aに対するデコード成功回数Caが計算される。次のステップS38では、図4の輝度分布内の全てのバーコード波形に対してデコードの試行が終了したので、YESと判定される。したがって、図7の処理(すなわち、図6のステップS2)は終了する。このように、図7を実行すると、各バーコード波形に対して1回ずつデコードが試行され、その結果に応じてデコード成功回数がカウントされる。
【0041】
図6のステップS4では、演算装置30は、優先範囲84内のバーコード波形に対するデコード成功回数が、読取一致回数に達したか否かを判定する。なお、ここでいう読取一致回数は、図7のステップS32において選択したデコード条件の中で規定されている読取一致回数である。優先範囲84内のバーコード波形に対しては緩いデコード条件が選択されるので、ここでは読取一致回数は2回である(図5参照)。したがって、ステップS4では、優先範囲84内のバーコード波形のデコード成功回数が2回に達したか否かが判定される。
【0042】
ステップS4でNOと判定した場合には、演算装置30は、ステップS6で、ステップS2の実行回数が6回に達したか否かを判定する。ステップS2の実行回数が6回に達していなければ、演算装置30はステップS8を実行する。
【0043】
ステップS8では、演算装置30は、CCDラインセンサ20のスキャン方向を反転させる。すなわち、CCDラインセンサ20の動作モードを、前回のステップS2におけるCCDラインセンサ20の動作モードと反対の動作モードに切り換える。より詳細には、前回のステップS2でCCDラインセンサ20を通常スキャンモードで動作させた場合には、ステップS8でCCDラインセンサ20をリバーススキャンモードに切り換える。また、前回のステップS2でCCDラインセンサ20をリバーススキャンモードで動作させた場合には、ステップS8でCCDラインセンサ20を通常スキャンモードに切り換える。したがって、ステップS8の後のステップS2では、前回のステップS2とは反対の動作モードでCCDラインセンサ20が動作する。ステップS8が終了すると、演算装置30は、再度、ステップS2を実行する。
【0044】
ステップS6でYESと判定した場合には、演算装置30は、ステップS10を行う。ステップS10では、演算装置30は、非優先範囲82、86内のバーコード波形に対するデコード成功回数が、読み取り一致回数に達したか否かを判定する。なお、ここでいう読取一致回数は、図7のステップS32において選択したデコード条件の中で規定されている読取一致回数である。非優先範囲82、86内のバーコード波形に対しては厳しいデコード条件が選択されるので、ここでは読取一致回数は4回である(図5参照)。したがって、ステップS10では、非優先範囲82、86内のバーコード波形に対するデコード成功回数が4回に達したか否かが判定される。さらに、厳しいデコード条件では読取交互モードが有りに設定されている。したがって、ステップS10では、演算装置30は、非優先領域82、86内のバーコード波形に対して、読取交互モードで同一データが得られたか否かを判定する。上記の通り、ステップS2は、繰り返し行われる。また、ステップS2におけるCCDラインセンサ20の動作モードは、1回毎に通常スキャンモードとリバーススキャンモードの間で切り換えられる。通常モードのステップS2で少なくとも1回デコードに成功しており、リバースモードのステップS2で少なくとも1回デコードに成功しており、これらのデータが同一である場合には、演算装置30は、読取交互モードで同一データが得られたと判定する。ステップS10では、非優先範囲82、86内のバーコード波形に対するデコード成功回数が読取一致回数に達し、かつ、そのバーコード波形に対して読取交互モードで同一データが得られているときにYESと判定される。
【0045】
ステップS4でYESまたはステップS10でYESと判定した場合には、演算装置30は、そのYESと判定した対象のバーコード波形に対応するバーコードをデコードできたと認識する。したがって、演算装置30は、ステップS12において、最終的にデコードできたと認識したデータをLCD60に出力する。したがって、LCD60でデコードされたデータが表示される。
【0046】
ステップS10でNOと判定した場合には、演算装置30は、ステップS14でLCD60にエラーを表示させる。
【0047】
図6のフローチャートについて、図1に示すように3つのバーコード90a〜90cを読み取る場合を例として、詳細に説明する。最初のステップS2では、通常スキャンモードでCCDラインセンサ20が動作して図4の輝度分布が検出される。ステップS2では、上述したように、バーコード波形92a〜92cの位置に応じたデコード条件で各バーコード波形に対するデコードが試行され、各バーコード波形のデコード成功回数Ca〜Ccがカウントされる。最初のステップS4では、優先範囲84内のバーコード波形92bのカウント値Cbが読取一致回数(2回)に達していることは無いので、NOと判定される。また、最初のステップS6では、ステップS2の実行回数が1回なので、NOと判定される。したがって、ステップS8でCCDラインセンサ20のスキャン方向が反転される。このため、2回目のステップS2では、リバーススキャンモードでCCDラインセンサ20が動作する。そして、得られた輝度分布に基づいて、対応するデコード条件でバーコード波形92a〜92cに対するデコードが試行される。2回目以降のステップS2では、以前にデコードしたデータと同じデータをデコードできたときに、デコード成功回数Ca〜Ccがカウントアップされる。2回目以降のステップS4では、バーコード波形92bのデコード成功回数Cbが読取一致回数(2回)に達していれば、YESと判定される。この場合、優先範囲84内のバーコード波形をデコードできたと認識できるので、ステップS12でLCD60にバーコード波形92b(すなわち、バーコード90b)をデコードしたデータが表示される。ステップS2の実行回数が6回に達しない間は、ステップS4でYESと判定されない限り、ステップS2〜ステップS8が繰り返し実行される。6回目のステップS4でNOと判定されると、ステップS6でYESと判定される。すると、ステップS10が実行される。すなわち、ステップS2を6回実行しても優先範囲84内のバーコード波形92bをデコードできたと判定することができない場合には、バーコード波形92bのデコードを中止し、ステップS10を実行する。ステップS10では、非優先範囲82、86内のバーコード90a、90cのカウント値Ca、Ccが読取一致回数(4回)に達しており、かつ、読み取り交互モードで同一データが得られているときには、ステップS10でYESと判定される。この場合には、非優先範囲82、86内のバーコード波形をデコードできたと認識できるので、ステップS10の判定対象となったバーコード波形のデータがステップS12でLCD60に表示される。なお、バーコード波形92aとバーコード波形92cが同時にステップS10の条件を満たしたときには、何れかのデータをLCD60に表示してもよいし、両方のデータをLCD60に表示してもよい。ステップS10でNOと判定された場合には、何れのバーコード波形に対してもデコードに失敗したので、ステップS14でLCD60にエラー表示がされる。
【0048】
以上に説明したように、実施例のバーコードリーダ10は、ステップS4で優先範囲84内のバーコードをデコードできたと判定したときには、優先範囲84内のバーコードのデータをLCD60に出力し、非優先範囲82、86内のバーコードのデータをLCD60に出力しない。したがって、このバーコードリーダ10では、優先範囲84内のバーコードが優先して読み取られる。したがって、対象物に複数のバーコードが印字されている場合に、優先範囲84が目標のバーコードと重なるようにバーコードリーダ10を使用することで、その目標のバーコードを優先して読み取ることができる。また、このバーコードリーダ10は、優先範囲84内にあるバーコードをデコードするときに、非優先範囲82、86内にあるバーコードをデコードするときよりも緩いデコード条件を適用する。したがって、優先範囲84内のバーコードの読み取り条件が悪く(例えば、印字状態が悪い等)、非優先範囲82、86内のバーコードの読み取り条件が良い場合でも、非優先範囲82、86内のバーコードだけが読み取られ、優先範囲84内のバーコードが読み取られないという事態が生じることが抑制される。これによって、ユーザが優先範囲84内のバーコードの内容を誤認することが抑制される。
【0049】
また、実施例のバーコードリーダ10では、読取範囲80の中央に優先範囲84が設定されている。したがって、ユーザは違和感無くバーコードリーダ10を使用することができる。
【0050】
なお、実施例のバーコードリーダ10において、優先範囲の位置を変更可能としてもよい。例えば、入力装置50で所定の操作をした後に、図2のトリガスイッチ56(ユーザから見て左側に位置するトリガスイッチ)を押すと左側の範囲82が優先範囲となり(中央の範囲84と右側の範囲86が非優先範囲となる)、トリガスイッチ52(ユーザから見て右側に位置するトリガスイッチ)を押すと右側の範囲86が優先範囲となり(左側の範囲82と中央の範囲84が非優先範囲となる)、中央のトリガスイッチ54を押すと中央の範囲84が優先範囲となる(左側の範囲82と右側の範囲86が非優先範囲となる)ようにしてもよい。また、把持部12に設置されている上下左右を示すキー58a〜58dにより、優先範囲を変更するようにしてもよい。例えば、入力装置50で所定の操作をした後に、左キー58aを押すと左側の範囲82が優先範囲となり、右キー58dを押すと右側の範囲86が優先範囲となり、上キー58bまたは下キー58cを押すと中央の範囲84が優先範囲となるようにしてもよい。
【0051】
また、実施例のバーコードリーダ10では、デコード条件として、読取一致回数、バー幅補正値、バー欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無が規定されていたが、デコード条件としてはこれらのうちの少なくとも1つが規定されていればよい。また、上記の他の条件を用いてもよい。また、複数のデコード条件を用いる場合には、全てのデコード条件が、優先範囲よりも非優先範囲で厳しいことが好ましい。
【0052】
また、上述した実施例では、線状(1次元)の読取範囲80を有するバーコードリーダについて説明したが、面状(2次元)の読取範囲を有するバーコードリーダに本明細書に開示の技術を適用してもよい。例えば、図8に示すように面状の読取範囲180を有するバーコードリーダにおいて、読取範囲180の中央に優先範囲182が設けられていてもよい。また、中央以外の位置に優先範囲182が設けられていてもよい。
【0053】
また、上述した実施例では、CCD方式で光学的特性分布を検出するバーコードリーダについて説明したが、レーザスキャン方式で光学的特性分布を検出するバーコードリーダに本明細書に開示の技術を適用してもよい。
【0054】
また、上述した実施例ではバーコードリーダについて説明したが、本明細書に開示の技術を2次元コード等の他の情報コードを読み取るリーダに適用してもよい。
【0055】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0056】
10:バーコードリーダ
12:把持部
20:CCDラインセンサ
30:演算装置
40:記憶装置
50:入力装置
60:LCD
80:読取範囲
82、86:非優先範囲
84:優先範囲

【特許請求の範囲】
【請求項1】
情報コードからデータを読み取るコードリーダであって、
読取範囲内に存在する対象物の光学的特性分布を検出する光学的特性分布検出手段と、
光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードの位置を検出する位置検出手段と、
光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、得られたデータを出力するデコード手段と、
デコード手段がデコードするときの条件であるデコード条件を記憶する記憶手段であって、第1のデコード条件と、第1のデコード条件よりも厳しい第2のデコード条件を記憶する記憶手段、
を有しており、
デコード手段は、位置検出手段で検出された位置が読取範囲の中の第1の範囲内にある情報コードに対して第1のデコード条件を用いてデコードし、位置検出手段で検出された位置が読取範囲の中の第2の範囲内にある情報コードに対して第2のデコード条件を用いてデコードし、第1の範囲内の情報コードをデコードできたときには、第1の範囲内の情報コードのデータを出力するとともに第2の範囲内の情報コードのデータを出力しない、
ことを特徴とするコードリーダ。
【請求項2】
デコード条件に、読取一致回数、記録幅補正値、記録部欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無の少なくとも1つが含まれることを特徴とする請求項1に記載のコードリーダ。
【請求項3】
読取範囲が一方向に長い範囲であり、第1の範囲が前記一方向における読取範囲の中央点を少なくとも含んでおり、第2の範囲が第1の範囲の両脇に存在していることを特徴とする請求項1または2に記載のコードリーダ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−198763(P2012−198763A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2011−62439(P2011−62439)
【出願日】平成23年3月22日(2011.3.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】