(57)【要約】【課題】ユーザによるデータの誤認を適切に抑制することができるコードリーダを提供する。【解決手段】コードリーダであって、読取範囲内に存在する対象物の光学的特性分布を検出する手段と、光学的特性分布に基づいて情報コードの位置を検出する手段と、光学的特性分布に基づいて読取範囲内の情報コードをデコードし、得られたデータを出力するデコード手段と、デコード条件の記憶手段を有している。デコード手段は、読取範囲の中の第１の範囲内にある情報コードに対して第１のデコード条件を用いてデコードし、読取範囲の中の第２の範囲内にある情報コードに対してより厳しい第２のデコード条件を用いてデコードし、第１の範囲内の情報コードをデコードできたときには、第１の範囲内の情報コードのデータを出力して第２の範囲内の情報コードのデータを出力しない。【選択図】図１
2012198763.tif 000002
【特許請求の範囲】
【請求項１】
情報コードからデータを読み取るコードリーダであって、
読取範囲内に存在する対象物の光学的特性分布を検出する光学的特性分布検出手段と、
光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードの位置を検出する位置検出手段と、
光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、得られたデータを出力するデコード手段と、
デコード手段がデコードするときの条件であるデコード条件を記憶する記憶手段であって、第１のデコード条件と、第１のデコード条件よりも厳しい第２のデコード条件を記憶する記憶手段、
を有しており、
デコード手段は、位置検出手段で検出された位置が読取範囲の中の第１の範囲内にある情報コードに対して第１のデコード条件を用いてデコードし、位置検出手段で検出された位置が読取範囲の中の第２の範囲内にある情報コードに対して第２のデコード条件を用いてデコードし、第１の範囲内の情報コードをデコードできたときには、第１の範囲内の情報コードのデータを出力するとともに第２の範囲内の情報コードのデータを出力しない、
ことを特徴とするコードリーダ。
【請求項２】
デコード条件に、読取一致回数、記録幅補正値、記録部欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無の少なくとも１つが含まれることを特徴とする請求項１に記載のコードリーダ。
【請求項３】
読取範囲が一方向に長い範囲であり、第１の範囲が前記一方向における読取範囲の中央点を少なくとも含んでおり、第２の範囲が第１の範囲の両脇に存在していることを特徴とする請求項１または２に記載のコードリーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報コードからデータを読み取るコードリーダに関する。
【背景技術】
【０００２】
バーコードや２次元コード等の情報コードからデータを読み取るコードリーダが知られている。このようなコードリーダは、情報コードを読み取るための読取範囲を有している。この読取範囲内に情報コードが含まれるようにコードリーダを配置し、所定の操作を行うことで、情報コードの読み取りが実行される。この読取動作では、コードリーダは、読取範囲内に存在する対象物（情報コードが印刷されている用紙等）の光学的特性分布（例えば、白い部分と黒い部分の分布）を検出する。そして、検出した光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、デコードしたデータを出力する。
【０００３】
近年では、読取範囲が広いコードリーダが一般的になっている。読取範囲が広いと、情報コードに対するコードリーダの位置合わせが容易となるため、よりコードリーダが使い易くなる。しかしながら、このようなコードリーダを用いる際には、複数の情報コードが印字されている対象物からデータを読み取る場合に、問題が生じることがある。すなわち、対象物に複数の情報コードが印字されている場合には、読取範囲内に複数の情報コードが含まれることがある。この場合、ユーザが読み取ろうとしている情報コードとは別の情報コードからデータが読み取られることがある。その結果、ユーザが情報コードの内容を誤認してしまうおそれがある。
【０００４】
このような問題に対し、特許文献１には、読取範囲内に存在する情報コードの位置を検出し、読取範囲の中心に近い位置にある情報コードからデータを読み取るコードリーダが開示されている。このコードリーダによれば、読取範囲内に複数の情報コードがある場合でも、中心に近い位置にある情報コードからデータが読み取られるので、ユーザに誤認を生じさせることを抑制することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−２６３５８４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コードリーダにより情報コードを読み取る際には、情報コードの印字品質（すなわち、鮮明に印字されているか否か）、外来光、読取角度（読み取るときのコードリーダと情報コードが印字されている面との間の角度）等の読み取り条件によって、情報コードの読み取り易さが変化する。読取範囲内に複数の情報コードが含まれている場合には、上述した読み取り条件が情報コード毎に異なる場合があり、これによって、読取範囲内の情報コードの読み取り易さに差が生じることがある。すなわち、読取範囲内に、読み取り易い情報コードと、読み取り難い情報コードが存在することがある。
【０００７】
上述した特許文献１の技術では、読取範囲内の中心に近い位置にある情報コードを読み取ることで、ユーザによる誤認を防止する。しかしながら、上述した読み取り条件によっては、中心に近い位置の情報コードを読み取ることができず、中心から遠い位置の情報コードが読み取られる場合がある。この場合には、ユーザによる誤認の問題が生じてしまう。
【０００８】
したがって、本明細書では、ユーザによる誤認の問題をより適切に抑制することができるコードリーダを提供する。
【課題を解決するための手段】
【０００９】
本明細書が開示するコードリーダは、情報コードからデータを読み取る。このコードリーダは、読取範囲内に存在する対象物の光学的特性分布を検出する光学的特性分布検出手段と、光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードの位置を検出する位置検出手段と、光学的特性分布検出手段が検出する光学的特性分布に基づいて、読取範囲内に存在する情報コードをデコードし、得られたデータを出力するデコード手段と、デコード手段がデコードするときの条件であるデコード条件を記憶する記憶手段であって、第１のデコード条件と、第１のデコード条件よりも厳しい第２のデコード条件を記憶する記憶手段を有している。デコード手段は、位置検出手段で検出された位置が読取範囲の中の第１の範囲内にある情報コードに対して第１のデコード条件を用いてデコードし、位置検出手段で検出された位置が読取範囲の中の第２の範囲内にある情報コードに対して第２のデコード条件を用いてデコードし、第１の範囲内の情報コードをデコードできたときには、第１の範囲内の情報コードのデータを出力するとともに第２の範囲内の情報コードのデータを出力しない。
【００１０】
なお、デコード条件とは、デコード手段がデコードできたと認識するための条件を意味する。デコード条件が厳しいとは、デコード手段がデコードできたと認識し難い条件を意味する。したがって、デコード条件が厳しいと、デコード手段は、情報コードをデコードできないと判断し易くなる。また、データを出力するとは、コードリーダの内部の機器や、コードリーダの外部の機器にデータを送ることを意味する。例えば、コードリーダが有する表示装置にデータを送れば、表示機器にデータが表示される。また、データを外部のＰＣに送信すれば、ＰＣでデータを表示したり、データを蓄積したり、データを加工したり、データを印刷したりすることができる。これらの動作は、上記の出力に含まれる。また、情報コードは、１次元コード（例えば、バーコード）であってもよいし、２次元コード（例えば、ＱＲコード）であってもよい。また、上記の対象物とは、情報コードが印字されている物体を意味する。また、印字されているとは、情報コードの光学的特性分布を検出できる状態にされていることを意味し、紙に情報コードが印刷されていること、及び、表示画面に情報コードが表示されていることを含む。したがって、上記の対象物には、情報コードが印刷された物体（例えば、紙）や、情報コードが表示された物体（例えば、液晶画面）が含まれる。また、第２の範囲内の情報コードのデータを出力しないとは、第２の範囲内の情報コードをデコードしない態様と、第２の範囲内の情報コードをデコードはするが出力はしない態様とが含まれる。
【００１１】
上記のコードリーダは、第１の範囲内の情報コードがデコードされたときには、第１の範囲内の情報コードのデータを出力し、第２の範囲内の情報コードのデータを出力しない。すなわち、第１の範囲内の情報コードが優先して読み取られる。したがって、対象物に複数の情報コードが印字されている場合に、第１の範囲が目標の情報コードと重なるようにコードリーダを使用することで、その目標の情報コードを優先して読み取ることができる。また、このコードリーダは、第１の範囲内にある情報コードをデコードするときに、第２の範囲内にある情報コードをデコードするときよりも緩いデコード条件を適用する。したがって、第１の範囲内の情報コードは、第２の範囲内の情報コードよりもデコードされ易い。このため、第１の範囲内の情報コードの読み取り条件が悪く（読み取り難い条件にある）、第２の範囲内の情報コードの読み取り条件が良い（読み取り易い条件にある）場合でも、第２の範囲内の情報コードだけが読み取られ、第１の範囲内の情報コードが読み取られないという事態が生じることが抑制される。これによって、ユーザが第１の範囲内の情報コードを読み取ろうとしているにも係わらず、コードリーダが第２の範囲内の情報コードを読み取ってしまうという事態が生じることが抑制される。したがって、ユーザが情報コードの内容を誤認することが抑制される。
【００１２】
上記のコードリーダにおいては、デコード条件に、読取一致回数、記録幅補正値、記録部欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無の少なくとも１つが含まれることが好ましい。
【００１３】
読取一致回数とは、コードリーダに情報コードの読取を複数回実行させて同一のデータが得られる回数をカウントし、同一のデータが基準回数以上得られた場合に始めてデータをデコードできたと判断する方式を採用する場合における上記の基準回数を意味する。読取一致回数が多いほど、厳しいデコード条件となる。
記録幅補正値とは、情報コード内の記録部分の幅（例えば、バーコード内のバーの幅）を光学的特性分布から検出してその幅に対応するデータを特定するときに、そのデータを示すものとして予め決められた幅と検出された幅との許容誤差を意味する。例えば、データＤ１を表す幅として幅Ｈ１が定められており、記録幅補正値が値Ｃ１である場合には、検出されたバーの幅Ｈ２がＨ１―Ｃ１＜Ｈ２＜Ｈ１＋Ｃ１であるときに、そのバーがデータＤ１を表すものとして特定される。記録幅補正値が小さいほど、厳しいデコード条件となる。
記録部欠け補正とは、情報コード内の一部の記録部分において対応するデータを特定できなかったとき（例えば、記録部分に欠けがある等の印字不良があったとき）に、その他の記録部分から特定されたデータに基づいて、特定できなかった記録部分のデータを予測して特定することを意味する。記録部欠け補正が無い方が、厳しいデコード条件となる。
絶対マージンの大きさとは、情報コードの周囲に設けられた余白部分の幅の許容値を意味する。情報コードの周囲の余白部分の幅が絶対マージンよりも小さいと、デコード手段はデコードできないと判断する。絶対マージンが大きいほど、厳しいデコード条件となる。
読取交互モードとは、情報コードを一方向にスキャンして情報コードを読み取り、次に、前回とは逆方向に情報コードをスキャンして情報コードを読み取り、これらの読み取り動作で得られたデータが一致したときにデータをデコードできたと判断するモードを意味する。読取交互モード有り（読取交互モードを実行すること）の方が、厳しいデコード条件となる。
【００１４】
上述したコードリーダは、読取範囲が一方向に長い範囲であり、第１の範囲が前記一方向における読取範囲の中央点を少なくとも含んでおり、第２の範囲が第１の範囲の両脇に存在していることが好ましい。
【００１５】
一般に、ユーザは、読取範囲の中央で情報コードを読み取ろうとする。したがって、このように第１の範囲が読取範囲の中央点を含んでいると、ユーザが違和感なくコードリーダを使用することができる。
【図面の簡単な説明】
【００１６】
【図１】実施例のバーコードリーダ１０の概略斜視図。
【図２】実施例のバーコードリーダ１０を裏側から見た平面図。
【図３】実施例のバーコードリーダ１０のブロック図。
【図４】ＣＣＤラインセンサ２０で検出される輝度分布の一例を示す図。
【図５】デコード条件を示す図。
【図６】バーコードの読取動作を示すフローチャート。
【図７】図６のステップＳ２の詳細を示すフローチャート。
【図８】変形例のバーコードリーダの読取範囲と優先範囲を示す図。
【発明を実施するための形態】
【実施例】
【００１７】
図１に示す実施例のバーコードリーダ１０は、直線状に伸びる読取範囲８０内のバーコードからデータを読み取る。バーコードリーダ１０は、ユーザにより把持される把持部１２を有している。把持部１２の表面には、プッシュボタン等の多数の操作スイッチが設置されている。また、図２に示すように、バーコードリーダ１０の裏側の面及び側面には、トリガスイッチ５２、５４、５６が設置されている。図１〜３に示すように、バーコードリーダ１０は、ＣＣＤラインセンサ２０と、演算装置３０と、記憶装置４０と、入力装置５０と、ＬＣＤ６０を有している。
【００１８】
ＣＣＤラインセンサ２０は、バーコードリーダ１０の先端部に設置されている。ＣＣＤラインセンサ２０は、一列に並べられた多数（ｎ個）の撮像素子を有している。ＣＣＤラインセンサ２０は、これらの多数の撮像素子によって、読取範囲８０を撮影する。すなわち、ＣＣＤラインセンサ２０は、読取範囲８０内に存在する対象物の表面における輝度分布を検出する。これによって、読取範囲８０内のバーコードのバーの分布（すなわち、明部と暗部の分布）が検出される。例えば、図１に示すように用紙９８に印刷された３つのバーコード９０ａ〜９０ｃをＣＣＤラインセンサ２０の読取範囲８０内に配置してＣＣＤラインセンサ２０を動作させると、図４に示すように、読取範囲８０内の用紙９８の表面の輝度分布が検出される。なお、図４では、図の見易さを考慮して、実際に得られる輝度分布よりも簡略化した輝度分布を示している。また、図４の左側は図１の読取範囲８０の左側（ユーザから見て左側）に対応し、図４の右側は図１の読取範囲８０の右側（ユーザから見て右側）に対応する。図４に示すように、バーコードが印刷されている部分では、明部と暗部が短い間隔で交互に存在する輝度分布が得られる。以下では、ＣＣＤラインセンサ２０が出力する輝度分布のうちのバーコードに対応する部分（明部と暗部が短い間隔で交互に存在する部分）をバーコード波形という。図４では、バーコード９０ａ〜９０ｃに対応するバーコード波形９２ａ〜９２ｃが検出されている。上述したように、ＣＣＤラインセンサ２０は、ｎ個の撮像素子を有している。以下では、説明のため、左端からｋ番目の撮像素子を撮像素子ｄｋという。すなわち、図１、４の読取範囲８０の左端の位置で検出を行う撮像素子を撮像素子ｄ１といい、撮像素子ｄ１の右隣の撮像素子を撮像素子ｄ２といい、読取範囲８０の右端の位置で検出を行う撮像素子を撮像素子ｄｎとい、撮像素子ｄｎの左隣の撮像素子を撮像素子ｄｎ−１という。つまり、ｎ個の撮像素子を左側から順に、ｄ１、ｄ２、ｄ３・・・ｄｎ−２、ｄｎ−１、ｄｎという。ＣＣＤラインセンサ２０は、通常時は、撮像素子ｄ１から順に輝度の検出を行う。すなわち、最初に撮像素子ｄ１で検出を行い、次に撮像素子ｄ２で検出を行い、以下、撮像素子ｄｎまで配列された順番に検出を行う。このように順番に検出された輝度を撮像素子の位置に従って並べることで、図４に示す輝度分布が得られる。撮像素子ｄ１から撮像素子ｄｎに向かう順番（すなわち、ｄ１、ｄ２、ｄ３・・・ｄｎ−２、ｄｎ−１、ｄｎの順）で輝度を検出するモードを、以下では通常スキャンモードという。一方、ＣＣＤラインセンサ２０は、撮像素子ｄｎから撮像素子ｄ１に向かう順番（すなわち、ｄｎ、ｄｎ−１、ｄｎ−２・・・ｄ３、ｄ２、ｄ１の順）で輝度を検出することもできる。以下では、このモードをリバーススキャンモードという。原理的にはリバーススキャンモードで得られる輝度分布は通常スキャンモードと同一となるはずであるが、ハードウェアの要因によってリバーススキャンモードで得られる輝度分布が通常スキャンモードと若干異なる場合がある。
【００１９】
記憶装置４０は、バーコードリーダ１０の内部に設置されている。記憶装置４０は、演算装置３０がデコードを行うときのデコード条件として、図５に示す厳しいデコード条件と緩いデコード条件を記憶している。デコード条件については後に詳述する。
【００２０】
演算装置３０は、バーコードリーダ１０の内部に設置されている。演算装置３０は、ＣＰＵ等により構成されている。演算装置３０は、ＣＣＤラインセンサ２０、記憶装置４０、入力装置５０、及び、ＬＣＤ６０と電気的に接続されている。演算装置３０には、ＣＣＤラインセンサ２０が検出する輝度分布が入力される。演算装置３０は、入力される輝度分布から、ＣＣＤラインセンサ２０で撮影されたバーコードに記述されているデータをデコードする。演算装置３０は、データをデコードすると、デコードしたデータをＬＣＤ６０に入力する。
【００２１】
ＬＣＤ６０は、把持部１２とＣＣＤラインセンサ２０の間に設置されている。ＬＣＤ６０は、種々の情報を表示する。ＬＣＤ６０は、演算装置３０からデコードされたデータが入力されると、そのデータを表示する。
【００２２】
入力装置５０は、上述した多数の操作スイッチ（トリガスイッチ５２、５４、５６を含む）を有している。入力装置５０は、操作スイッチからの信号を、演算装置３０に入力する。
【００２３】
図１の読取範囲８０は、中央の範囲８４と、その両脇の範囲８２、８６に区別されている。中央の範囲８４は、バーコードを優先して読み取るための優先範囲であり、両脇の範囲８２、８６は非優先範囲である。演算装置３０は、優先範囲８４内のバーコードからデータをデコードする際には記憶装置４０が記憶している緩いデコード条件を適用し、非優先範囲８２、８６内のバーコードからデータをデコードする際には記憶装置４０が記憶している厳しいデコード条件を適用する。
【００２４】
デコード条件の詳細について説明する。デコード条件は、演算装置３０がデコードできたことを認識するための条件を意味する。デコード条件が厳しいと、デコードされたデータの信頼性が高まる一方で、デコードを失敗する確率が高くなる。図５に示すように、記憶装置４０が記憶する各デコード条件では、読取一致回数、バー幅補正値、バー欠け補正、絶対マージン、及び、読取交互モードが規定されている。
【００２５】
読取一致回数は、演算装置３０がデコードできたと判定するために必要な同一データの読取回数を意味する。すなわち、演算装置３０は、読取動作において、データの読み取りを複数回試行する。これらの試行において、同一のデータが得られた回数が読取一致回数に達したときに初めて、演算装置３０はデコードができたと判定する。読取り一致回数が多いと、演算装置３０がデコードできたと判定し難くなるため、デコード条件としては厳しくなる。図５に示すように、緩いデコード条件では読取一致回数が２回であり、厳しいデコード条件では読取一致回数が４回である。つまり、緩いデコード条件では、同一のデータが２回得られた段階でデコード成功と判定されるのに対し、厳しいデコード条件では、同一のデータが４回得られて初めてデコード成功と判定される。
【００２６】
バー幅補正値は、バーコード波形から検出されるバーコード内のバーの幅（暗部の幅または明部の幅）から、そのバーに対応するデータを特定する際の許容誤差を示す。例えば、バーコード全体の長さに対して１％の幅のバーがデータＡ１を示すものとして予め定められているとする。この場合に、バー幅補正値が０．０５％（厳しいデコード条件）である場合には、演算装置３０は、バーコード全体の長さに対してバー幅が０．９５％〜１．０５％であるバーをデータＡ１として認識する。一方、バー幅補正値が０．１％（緩いデコード条件）である場合には、演算装置３０は、バーコード全体の長さに対してバー幅が０．９％〜１．１％であるバーをデータＡ１として認識する。このように、バー幅補正値が小さいほうが、演算装置３０がバーに対してデータを特定し難くなるので、デコード条件としては厳しくなる。
【００２７】
バー欠け補正は、バーコード内の一部のバーのデータを特定できなかった場合に、それ以外のバーのバー幅に基づいて、データを特定できなかったバーのデータを予測することを意味する。例えば、図４において、バーコード波形９２ｂの中の暗部１１０に対応するバーのデータを特定できなかったが、その他のバーについてはデータを特定できたとする。この場合に、その他のバーのデータから暗部１１０に対応するバーのデータを予測することができる場合がある。暗部１１０に対応するバーのデータを予測できれば、バーコード波形９２ｂに相当するバーコード９０ｂ全体のデータを特定できる。バー欠け補正有り（緩いデコード条件）では、このような場合に、特定できなかったバーのデータを補完して、バーコード全体のデータを得る。バー欠け補正無し（厳しいデコード条件）では、このような場合を、エラー（読み取り失敗）として扱う。バー欠け補正無しの方が、エラーが生じ易くなるので、デコード条件としては厳しくなる。
【００２８】
絶対マージンは、バーコードの両端部に存在する余白部分（明部）の幅の許容値を意味する。演算装置３０は、バーコード波形からデータをデコードするときに、バーコード波形の両脇に一定幅以上の明部を必要とする。例えば、図３のバーコード波形９２ｂをデコードするためには、その両脇の明部１２０が一定幅以上であることが必要である。絶対マージンは、バーコード波形の両脇の明部の幅の最低必要量を意味する。演算装置３０は、バーコード波形の両脇の明部の幅が絶対マージンより小さいときは、そのバーコード波形をデコードできないと判断する。絶対マージンが大きいほど、演算装置３０がデコードできないと判断し易くなるので、デコード条件としては厳しくなる。
【００２９】
読取り交互モードは、上述した通常スキャンモードによる読み取りと、リバーススキャンモードによる読み取りを行って、両モードで同一のデータが得られたときに、演算装置３０がデコードできたと判定することを意味する。読取交互モード有りの方が、デコード条件としては厳しくなる。
【００３０】
次に、バーコードリーダ１０でバーコードを読み取る際の動作について説明する。図６は、読取動作において演算装置３０が実行する処理を示している。ユーザがバーコードリーダ１０のトリガスイッチ５４を押すと、図６に示す動作が実行される。図６のステップＳ２では、演算装置３０は、バーコードの読み取りを試行する。図７は、ステップＳ２の詳細を示している。すなわち、ステップＳ２では、図７に示す処理が実行される。
【００３１】
図７のステップＳ２２では、演算装置３０は、ＣＣＤラインセンサ２０を動作させて、読取範囲８０内の対象物の輝度分布を検出する。検出された輝度分布は、演算装置３０に入力される。例えば、図１に示すように３つのバーコード９０ａ〜９０ｃが読取範囲８０内に存在する場合には、図４に示す輝度分布が得られる。なお、最初のステップＳ２２では、ＣＣＤラインセンサ２０を通常スキャンモードで動作させる。後に詳述するが、２回目以降のステップＳ２２では、前回のステップＳ２２とスキャン方向を反転させたモードでＣＣＤラインセンサ２０を動作させる。
【００３２】
ステップＳ２４では、演算装置３０は、得られた輝度分布から各明部及び各暗部の幅を算出する。そして、算出した各幅に基づいて、輝度分布の中からバーコード波形を特定する。例えば、図４の例では、バーコード９０ａ〜９０ｃに対応するバーコード波形９２ａ〜９２ｃが特定される。
【００３３】
ステップＳ２６では、演算装置３０は、ステップＳ２４で特定したバーコード波形の中から１つのバーコード波形を選択する。最初のステップＳ２６では、演算装置３０は、最も右側のバーコード波形を選択する。２回目以降のステップＳ２６では、前回のステップＳ２６で選択したバーコード波形の１つ左側のバーコード波形を選択する。
【００３４】
ステップＳ２８では、演算装置３０は、ステップＳ２６で選択したバーコード波形の位置を特定する。バーコード波形の位置の特定は、以下のようにして行う。すなわち、最初にステップＳ２４で算出した各明部及び各暗部の幅を用いて、ステップＳ２６で選択したバーコード波形の右端の位置と左端の位置を算出する。次に、算出した右端の位置と左端の位置を平均して、選択したバーコード波形の中央の位置を算出する。なお、バーコード波形の位置を特定することは、読取範囲８０内におけるバーコードの位置を特定するのに等しい。
【００３５】
ステップＳ３０では、ステップＳ２８で算出したバーコード波形の位置（選択したバーコード波形の中央の位置）から、ステップＳ２６で選択したバーコード波形が優先範囲８４内にあるか、非優先範囲８２、８６内にあるかを判定する。すなわち、演算装置３０は、図４に示すように、ＣＣＤラインセンサ２０の読取範囲８０を、優先範囲８４と非優先範囲８２、８６とに区別して認識している。なお、図４の優先範囲８４及び非優先範囲８２、８６は、図１の優先範囲８４及び非優先範囲８２、８６と対応している。優先範囲８４は読取範囲８０の中央に位置しており、優先範囲８４の幅は読取範囲８０の幅の約４０％である。演算装置３０は、ステップＳ２８で算出したバーコード波形の位置から、バーコード波形が優先範囲８４内にあるか否かを判定する。なお、バーコード波形の位置が優先範囲８４内にあるか否かを判定することは、バーコードが優先範囲８４内にあるか否かを判定するのに等しい。
なお、他の実施例においては、選択したバーコード波形が優先範囲８４内に存在するか否かの判定方法は本実施例と異なっていてもよい。例えば、バーコード波形の全体が優先範囲８４内に入っているときにバーコード波形が優先範囲８４内に存在していると判定してもよいし、バーコード波形の少なくとも一部が優先範囲８４内に入っていればバーコード波形が優先範囲８４内に存在していると判定してもよい。
【００３６】
ステップＳ３２では、演算装置３０は、ステップＳ３０の判定結果に基づいて、記憶装置４０が記憶しているデコード条件の中から１つのデコード条件を選択する。具体的には、演算装置３０は、選択したバーコード波形が優先範囲８４内に存在すると判定した場合には、緩いデコード条件を選択する。また、演算装置３０は、選択したバーコード波形が優先範囲８４内に存在しないと判定した場合には、厳しいデコード条件を選択する。
【００３７】
ステップＳ３４では、演算装置３０は、ステップＳ３２で選択したデコード条件に基づいて、ステップＳ２６で選択したバーコード波形のデコードを試みる。すなわち、そのバーコード波形に対応するバーコードに記述されているデータを復元することを試みる。具体的には、演算装置３０は、最初に、選択したバーコード波形の両脇の明部（例えば、図４の明部１２０）が、ステップＳ３２で選択したデコード条件において規定された絶対マージンより大きいか否かを判定する。この判定は、バーコードの両端部に所定幅以上の余白が存在するか否かを判定しているのに等しい。選択したバーコード波形の両脇の明部の幅が絶対マージンより小さいときは、演算装置３０は、デコードに失敗したと判定する。選択したバーコード波形の両脇の明部の幅が絶対マージンより大きいときは、演算装置３０は、そのバーコード波形内の各明部及び各暗部の幅（ステップＳ２４で算出済み）から、各明部及び各暗部が示すデータを特定する。これによって、バーコード波形に対応するバーコード全体のデータを特定する。なお、緩いデコード条件を用いる場合には、バー幅補正値として０．１％が適用され、バー欠け補正が有りとなる。一方、厳しいデコード条件を用いる場合には、バー幅補正値として０．０５％が適用され、バー欠け補正が無しとなる。ステップＳ３４でデコードに成功した場合には、演算装置３０は、デコードにより得られたデータを所定の記憶領域に記憶する。なお、ステップＳ３４におけるデコードの成功とは、１度のデコード処理についてのデコードの成功を意味している。後に詳述するが、最終的にデコードに成功したか否かは、デコード処理を複数回繰り返し実行し、各デコード処理の結果に基づいて判断される。
【００３８】
ステップＳ３６では、ステップＳ３４の結果に応じて、デコード成功回数がカウントされる。ステップＳ３４でデコードに成功した場合には、デコード成功回数に１が加算され、ステップＳ３４でデコードに失敗した場合には、デコード成功回数は変化しない。なお、デコード成功回数は、バーコード波形毎に区別してカウントされる。例えば、図４に示すように３つのバーコード波形９２ａ〜９２ｃが特定されている場合には、バーコード波形９２ａ〜９２ｃのそれぞれについてデコード成功回数がカウントされる。
【００３９】
ステップＳ３８では、ステップＳ２４で特定されたバーコード波形の全てに対してデコードを試みたか否かが判定される。デコードを試みていないバーコード波形が残っている場合には、残っているバーコード波形に対してステップＳ２６からの処理が実行される。全てのバーコード波形に対してデコードを試みた場合には、図７の処理（すなわち、図６のステップＳ２）は終了する。
【００４０】
図７のフローチャートについて、図１に示すように３つのバーコード９０ａ〜９０ｃを読み取る場合を例として、より詳細に説明する。ステップＳ２２では、バーコード９０ａ〜９０ｃが印刷されている用紙９８の輝度分布として、図４に示す輝度分布が検出される。ステップＳ２４では、各明部及び各暗部の幅が算出され、バーコード波形９２ａ〜９２ｃが特定される。最初のステップＳ２６では、右側のバーコード波形９２ｃが選択される。そして、引き続き行われるステップＳ２８でバーコード波形９２ｃの位置が特定され、ステップＳ３０でバーコード波形９２ｃが非優先範囲８６内に存在していると判定される。このため、その後のステップＳ３２で厳しいデコード条件が選択され、ステップＳ３４で厳しいデコード条件に従ってバーコード波形９２ｃのデコードが試みられる。ステップＳ３６では、ステップＳ３４の結果に応じて、バーコード波形９２ｃに対するデコード成功回数Ｃｃが計算される。ステップＳ３４でデコードに成功した場合には、デコード成功回数Ｃｃが０から１に増加する。ステップＳ３４でデコードに失敗した場合には、デコード成功回数Ｃｃは０のまま変化しない。ステップＳ３８では、バーコード波形９２ａ、９２ｂに対してデコードを試みていないので、ＮＯと判定される。したがって、再度ステップＳ２６が行われる。２回目のステップＳ２６では、中央のバーコード波形９２ｂが選択される。そして、引き続き行われるステップＳ２８でバーコード波形９２ｂの位置が特定され、ステップＳ３０でバーコード波形９２ｂが優先範囲８４内に存在していると判定される。このため、その後のステップＳ３２で緩いデコード条件が選択され、ステップＳ３４で緩いデコード条件に従ってバーコード波形９２ｂのデコードが試みられる。ステップＳ３６では、ステップＳ３４の結果に応じて、バーコード波形９２ｂに対するデコード成功回数Ｃｂが計算される。次のステップＳ３８では、バーコード波形９２ａに対してデコードを試みていないので、ＮＯと判定される。したがって、再度ステップＳ２６が行われる。３回目のステップＳ２６では、左側のバーコード波形９２ａが選択される。そして、引き続き行われるステップＳ２８でバーコード波形９２ａの位置が特定され、ステップＳ３０でバーコード波形９２ａが非優先範囲８２内に存在していると判定される。このため、その後のステップＳ３２で厳しいデコード条件が選択され、ステップＳ３４で厳しいデコード条件に従ってバーコード波形９２ａのデコードが試みられる。ステップＳ３６では、ステップＳ３４の結果に応じて、バーコード波形９２ａに対するデコード成功回数Ｃａが計算される。次のステップＳ３８では、図４の輝度分布内の全てのバーコード波形に対してデコードの試行が終了したので、ＹＥＳと判定される。したがって、図７の処理（すなわち、図６のステップＳ２）は終了する。このように、図７を実行すると、各バーコード波形に対して１回ずつデコードが試行され、その結果に応じてデコード成功回数がカウントされる。
【００４１】
図６のステップＳ４では、演算装置３０は、優先範囲８４内のバーコード波形に対するデコード成功回数が、読取一致回数に達したか否かを判定する。なお、ここでいう読取一致回数は、図７のステップＳ３２において選択したデコード条件の中で規定されている読取一致回数である。優先範囲８４内のバーコード波形に対しては緩いデコード条件が選択されるので、ここでは読取一致回数は２回である（図５参照）。したがって、ステップＳ４では、優先範囲８４内のバーコード波形のデコード成功回数が２回に達したか否かが判定される。
【００４２】
ステップＳ４でＮＯと判定した場合には、演算装置３０は、ステップＳ６で、ステップＳ２の実行回数が６回に達したか否かを判定する。ステップＳ２の実行回数が６回に達していなければ、演算装置３０はステップＳ８を実行する。
【００４３】
ステップＳ８では、演算装置３０は、ＣＣＤラインセンサ２０のスキャン方向を反転させる。すなわち、ＣＣＤラインセンサ２０の動作モードを、前回のステップＳ２におけるＣＣＤラインセンサ２０の動作モードと反対の動作モードに切り換える。より詳細には、前回のステップＳ２でＣＣＤラインセンサ２０を通常スキャンモードで動作させた場合には、ステップＳ８でＣＣＤラインセンサ２０をリバーススキャンモードに切り換える。また、前回のステップＳ２でＣＣＤラインセンサ２０をリバーススキャンモードで動作させた場合には、ステップＳ８でＣＣＤラインセンサ２０を通常スキャンモードに切り換える。したがって、ステップＳ８の後のステップＳ２では、前回のステップＳ２とは反対の動作モードでＣＣＤラインセンサ２０が動作する。ステップＳ８が終了すると、演算装置３０は、再度、ステップＳ２を実行する。
【００４４】
ステップＳ６でＹＥＳと判定した場合には、演算装置３０は、ステップＳ１０を行う。ステップＳ１０では、演算装置３０は、非優先範囲８２、８６内のバーコード波形に対するデコード成功回数が、読み取り一致回数に達したか否かを判定する。なお、ここでいう読取一致回数は、図７のステップＳ３２において選択したデコード条件の中で規定されている読取一致回数である。非優先範囲８２、８６内のバーコード波形に対しては厳しいデコード条件が選択されるので、ここでは読取一致回数は４回である（図５参照）。したがって、ステップＳ１０では、非優先範囲８２、８６内のバーコード波形に対するデコード成功回数が４回に達したか否かが判定される。さらに、厳しいデコード条件では読取交互モードが有りに設定されている。したがって、ステップＳ１０では、演算装置３０は、非優先領域８２、８６内のバーコード波形に対して、読取交互モードで同一データが得られたか否かを判定する。上記の通り、ステップＳ２は、繰り返し行われる。また、ステップＳ２におけるＣＣＤラインセンサ２０の動作モードは、１回毎に通常スキャンモードとリバーススキャンモードの間で切り換えられる。通常モードのステップＳ２で少なくとも１回デコードに成功しており、リバースモードのステップＳ２で少なくとも１回デコードに成功しており、これらのデータが同一である場合には、演算装置３０は、読取交互モードで同一データが得られたと判定する。ステップＳ１０では、非優先範囲８２、８６内のバーコード波形に対するデコード成功回数が読取一致回数に達し、かつ、そのバーコード波形に対して読取交互モードで同一データが得られているときにＹＥＳと判定される。
【００４５】
ステップＳ４でＹＥＳまたはステップＳ１０でＹＥＳと判定した場合には、演算装置３０は、そのＹＥＳと判定した対象のバーコード波形に対応するバーコードをデコードできたと認識する。したがって、演算装置３０は、ステップＳ１２において、最終的にデコードできたと認識したデータをＬＣＤ６０に出力する。したがって、ＬＣＤ６０でデコードされたデータが表示される。
【００４６】
ステップＳ１０でＮＯと判定した場合には、演算装置３０は、ステップＳ１４でＬＣＤ６０にエラーを表示させる。
【００４７】
図６のフローチャートについて、図１に示すように３つのバーコード９０ａ〜９０ｃを読み取る場合を例として、詳細に説明する。最初のステップＳ２では、通常スキャンモードでＣＣＤラインセンサ２０が動作して図４の輝度分布が検出される。ステップＳ２では、上述したように、バーコード波形９２ａ〜９２ｃの位置に応じたデコード条件で各バーコード波形に対するデコードが試行され、各バーコード波形のデコード成功回数Ｃａ〜Ｃｃがカウントされる。最初のステップＳ４では、優先範囲８４内のバーコード波形９２ｂのカウント値Ｃｂが読取一致回数（２回）に達していることは無いので、ＮＯと判定される。また、最初のステップＳ６では、ステップＳ２の実行回数が１回なので、ＮＯと判定される。したがって、ステップＳ８でＣＣＤラインセンサ２０のスキャン方向が反転される。このため、２回目のステップＳ２では、リバーススキャンモードでＣＣＤラインセンサ２０が動作する。そして、得られた輝度分布に基づいて、対応するデコード条件でバーコード波形９２ａ〜９２ｃに対するデコードが試行される。２回目以降のステップＳ２では、以前にデコードしたデータと同じデータをデコードできたときに、デコード成功回数Ｃａ〜Ｃｃがカウントアップされる。２回目以降のステップＳ４では、バーコード波形９２ｂのデコード成功回数Ｃｂが読取一致回数（２回）に達していれば、ＹＥＳと判定される。この場合、優先範囲８４内のバーコード波形をデコードできたと認識できるので、ステップＳ１２でＬＣＤ６０にバーコード波形９２ｂ（すなわち、バーコード９０ｂ）をデコードしたデータが表示される。ステップＳ２の実行回数が６回に達しない間は、ステップＳ４でＹＥＳと判定されない限り、ステップＳ２〜ステップＳ８が繰り返し実行される。６回目のステップＳ４でＮＯと判定されると、ステップＳ６でＹＥＳと判定される。すると、ステップＳ１０が実行される。すなわち、ステップＳ２を６回実行しても優先範囲８４内のバーコード波形９２ｂをデコードできたと判定することができない場合には、バーコード波形９２ｂのデコードを中止し、ステップＳ１０を実行する。ステップＳ１０では、非優先範囲８２、８６内のバーコード９０ａ、９０ｃのカウント値Ｃａ、Ｃｃが読取一致回数（４回）に達しており、かつ、読み取り交互モードで同一データが得られているときには、ステップＳ１０でＹＥＳと判定される。この場合には、非優先範囲８２、８６内のバーコード波形をデコードできたと認識できるので、ステップＳ１０の判定対象となったバーコード波形のデータがステップＳ１２でＬＣＤ６０に表示される。なお、バーコード波形９２ａとバーコード波形９２ｃが同時にステップＳ１０の条件を満たしたときには、何れかのデータをＬＣＤ６０に表示してもよいし、両方のデータをＬＣＤ６０に表示してもよい。ステップＳ１０でＮＯと判定された場合には、何れのバーコード波形に対してもデコードに失敗したので、ステップＳ１４でＬＣＤ６０にエラー表示がされる。
【００４８】
以上に説明したように、実施例のバーコードリーダ１０は、ステップＳ４で優先範囲８４内のバーコードをデコードできたと判定したときには、優先範囲８４内のバーコードのデータをＬＣＤ６０に出力し、非優先範囲８２、８６内のバーコードのデータをＬＣＤ６０に出力しない。したがって、このバーコードリーダ１０では、優先範囲８４内のバーコードが優先して読み取られる。したがって、対象物に複数のバーコードが印字されている場合に、優先範囲８４が目標のバーコードと重なるようにバーコードリーダ１０を使用することで、その目標のバーコードを優先して読み取ることができる。また、このバーコードリーダ１０は、優先範囲８４内にあるバーコードをデコードするときに、非優先範囲８２、８６内にあるバーコードをデコードするときよりも緩いデコード条件を適用する。したがって、優先範囲８４内のバーコードの読み取り条件が悪く（例えば、印字状態が悪い等）、非優先範囲８２、８６内のバーコードの読み取り条件が良い場合でも、非優先範囲８２、８６内のバーコードだけが読み取られ、優先範囲８４内のバーコードが読み取られないという事態が生じることが抑制される。これによって、ユーザが優先範囲８４内のバーコードの内容を誤認することが抑制される。
【００４９】
また、実施例のバーコードリーダ１０では、読取範囲８０の中央に優先範囲８４が設定されている。したがって、ユーザは違和感無くバーコードリーダ１０を使用することができる。
【００５０】
なお、実施例のバーコードリーダ１０において、優先範囲の位置を変更可能としてもよい。例えば、入力装置５０で所定の操作をした後に、図２のトリガスイッチ５６（ユーザから見て左側に位置するトリガスイッチ）を押すと左側の範囲８２が優先範囲となり（中央の範囲８４と右側の範囲８６が非優先範囲となる）、トリガスイッチ５２（ユーザから見て右側に位置するトリガスイッチ）を押すと右側の範囲８６が優先範囲となり（左側の範囲８２と中央の範囲８４が非優先範囲となる）、中央のトリガスイッチ５４を押すと中央の範囲８４が優先範囲となる（左側の範囲８２と右側の範囲８６が非優先範囲となる）ようにしてもよい。また、把持部１２に設置されている上下左右を示すキー５８ａ〜５８ｄにより、優先範囲を変更するようにしてもよい。例えば、入力装置５０で所定の操作をした後に、左キー５８ａを押すと左側の範囲８２が優先範囲となり、右キー５８ｄを押すと右側の範囲８６が優先範囲となり、上キー５８ｂまたは下キー５８ｃを押すと中央の範囲８４が優先範囲となるようにしてもよい。
【００５１】
また、実施例のバーコードリーダ１０では、デコード条件として、読取一致回数、バー幅補正値、バー欠け補正の有無、絶対マージンの大きさ、読取交互モードの有無が規定されていたが、デコード条件としてはこれらのうちの少なくとも１つが規定されていればよい。また、上記の他の条件を用いてもよい。また、複数のデコード条件を用いる場合には、全てのデコード条件が、優先範囲よりも非優先範囲で厳しいことが好ましい。
【００５２】
また、上述した実施例では、線状（１次元）の読取範囲８０を有するバーコードリーダについて説明したが、面状（２次元）の読取範囲を有するバーコードリーダに本明細書に開示の技術を適用してもよい。例えば、図８に示すように面状の読取範囲１８０を有するバーコードリーダにおいて、読取範囲１８０の中央に優先範囲１８２が設けられていてもよい。また、中央以外の位置に優先範囲１８２が設けられていてもよい。
【００５３】
また、上述した実施例では、ＣＣＤ方式で光学的特性分布を検出するバーコードリーダについて説明したが、レーザスキャン方式で光学的特性分布を検出するバーコードリーダに本明細書に開示の技術を適用してもよい。
【００５４】
また、上述した実施例ではバーコードリーダについて説明したが、本明細書に開示の技術を２次元コード等の他の情報コードを読み取るリーダに適用してもよい。
【００５５】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００５６】
１０：バーコードリーダ
１２：把持部
２０：ＣＣＤラインセンサ
３０：演算装置
４０：記憶装置
５０：入力装置
６０：ＬＣＤ
８０：読取範囲
８２、８６：非優先範囲
８４：優先範囲
【図１】
2012198763.tif 000003
【図２】
2012198763.tif 000004
【図３】
2012198763.tif 000005
【図４】
2012198763.tif 000006
【図５】
2012198763.tif 000007
【図６】
2012198763.tif 000008
【図７】
2012198763.tif 000009
【図８】
2012198763.tif 000010