(57)【特許請求の範囲】
【請求項１】
暗色パターンおよび明色パターンが複数配列されて構成されるメインバーコードとこのメインバーコードの近傍に付加されたアドオンバーコードとを１つの一次元コードとして光学的に読み取る光学的情報読取装置であって、
一次元コードからの反射光を所定の読取ラインに沿い受光する受光手段と、
前記受光手段から出力される受光信号に基づいて一次元コードのデコード処理を行うデコード手段と、
前記受光信号に２つの一次元コードが含まれる場合に、読取方向１番目に位置する一次元コードを第１コード、読取方向２番目に位置する一次元コードを第２コードとするとき、前記第１コードの配列方向と前記読取ラインとの角度を、距離センサを利用して測定される前記受光手段から前記第１コードまでの離間距離と前記受光信号から求められる当該第１コードの幅値とから算出する算出手段と、
前記第１コードと前記第２コードとの前記読取ラインに沿う方向における間隔が前記第２コードを前記アドオンバーコードとみなし得る閾値以上であって、前記算出手段による算出値が前記第２コードを前記アドオンバーコードとみなし得る閾値以下である場合に、前記第２コードが前記アドオンバーコードであると判定する判定手段と、
を備え、
前記デコード手段は、前記判定手段により前記第２コードが前記アドオンバーコードであると判定される場合に、前記第１コードが前記メインバーコードであり、前記第２コードを前記アドオンバーコードとしてデコード処理を行うことを特徴とする光学的情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコードなどの一次元コードを光学的に読み取る光学的情報読取装置に関し、特にアドオンバーコードをメインバーコードに付加した一次元コードを読み取り可能な光学的情報読取装置に関するものである。
【背景技術】
【０００２】
例えば、小売店のチェックアウト業務、在庫管理、生産ラインにおける工程管理など、各種の用途にバーコード認識技術が利用されている。通常、小売店で販売される商品には、一次元コードとして、ＥＡＮ−１３、ＥＡＮ−８、ＵＰＣ−Ａ、ＵＰＣ−ＥなどのＷＰＣ（ワールド・プロダクト・コード）系バーコードを適用する場合が多い。これらのＷＰＣ系のバーコードには、メインバーコードの右側にアドオン（Add-On）バーコードを付加したバーコードが表示されることがある。このようなアドオンバーコード付きのバーコードをデコードするためには、通常のバーコードをデコードする機能に加えてアドオンバーコードをデコードする機能が必要となる。
【０００３】
ＷＰＣバーコードは、その規格上、アドオンバーコードが付加されているか否かに拘らず、常に同じバーコード構造を取るため、メイン側のバーコードをデコードしただけでは、アドオンバーコードが付加されているか否かの判別をすることができない。そこで、従来のバーコード読取装置では、メイン側のバーコードをデコードした後、常に一定時間、アドオン側のバーコードの検出を実行していた。しかしながら、メイン側のバーコードをデコードした後、常に一定時間、アドオン側のバーコードの検出を実行する方法では、アドオンバーコードが付加されていない場合でも、必要のないアドオンバーコードの検出を行うため、読取処理に時間がかかる。
【０００４】
このため、下記特許文献１に開示されるバーコード読取装置では、メインバーコードのデコードが可能になったときに、当該メインバーコードとともにアドオンバーコードの一部が撮像された場合に、アドオンバーコードが読み取れるまで待機する。これにより、アドオンバーコードの読み落しを無くし、アドオンバーコードが付加されていないバーコードは直ちに読み取り結果が出力される。これにより、読取処理にかかる時間を短縮している。
【０００５】
また、下記特許文献２に開示されるバーコード読取装置では、アドオンバーコードがメインバーコードに付加されているか否かを判断し、読み取った画像にアドオンバーコードが付加されている場合には、メインバーコードおよびアドオンバーコードのデコード結果が出力される。そして、読み取った画像にアドオンバーコードが付加されていない場合には、バーコード読取装置をバーコードに対して近づける操作を行っているか否かを判断し、バーコード読取装置を近づける操作を行っていない場合には、メインバーコードのデコード結果のみが出力される。そして、バーコード読取装置を近づける操作を行っている限り、アドオンバーコードが付加されているかの判断が続けられる。これにより、バーコード読取装置の操作に起因するアドオンバーコードの読み落としを防止している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−０２２４１６号公報
【特許文献２】特開２００９−１９３３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、一次元コードからの反射光は読取口を介して受光センサにて受光されるため、受光センサとして受光素子を一次元に配列したラインセンサが採用される場合に、読取口がバーコードの配列方向に対して傾いた状態で当該バーコードが読み取られると、受光センサによる読取ラインとバーコードの配列方向との角度が大きくなる場合がある。この場合、アドオンバーコードと異なるバーコードや模様等が、最初に読み取ったバーコードに対して本来アドオンバーコードが配置される位置からずれていても上記読取ライン上に表示されていると、この異なるバーコード等に基づいて、アドオンバーコードが存在すると誤判定してしまうという問題がある。
【０００８】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、アドオンバーコードの存在有無に関する判定の正確性を向上させ得る光学的情報読取装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、特許請求の範囲に記載の請求項１の光学的情報読取装置では、暗色パターンおよび明色パターンが複数配列されて構成されるメインバーコードとこのメインバーコードの近傍に付加されたアドオンバーコードとを１つの一次元コードとして光学的に読み取る光学的情報読取装置であって、一次元コードからの反射光を所定の読取ラインに沿い受光する受光手段と、前記受光手段から出力される受光信号に基づいて一次元コードのデコード処理を行うデコード手段と、前記受光信号に２つの一次元コードが含まれる場合に、読取方向１番目に位置する一次元コードを第１コード、読取方向２番目に位置する一次元コードを第２コードとするとき、前記第１コードの配列方向と前記読取ラインとの角度を、距離センサを利用して測定される前記受光手段から前記第１コードまでの離間距離と前記受光信号から求められる当該第１コードの幅値とから算出する算出手段と、前記第１コードと前記第２コードとの前記読取ラインに沿う方向における間隔が前記第２コードを前記アドオンバーコードとみなし得る閾値以上であって、前記算出手段による算出値が前記第２コードを前記アドオンバーコードとみなし得る閾値以下である場合に、前記第２コードが前記アドオンバーコードであると判定する判定手段と、を備え、前記デコード手段は、前記判定手段により前記第２コードが前記アドオンバーコードであると判定される場合に、前記第１コードが前記メインバーコードであり、前記第２コードを前記アドオンバーコードとしてデコード処理を行うことを特徴とする。
【発明の効果】
【００１４】
請求項１の発明では、受光信号に２つの一次元コードが含まれる場合に、算出手段により、第１コードの配列方向と読取ラインとの角度が、距離センサを利用して測定される受光手段から第１コードまでの離間距離と受光信号から求められる当該第１コードの幅値とから算出される。そして、第１コードと第２コードとの読取ラインに沿う方向における間隔が第２コードをアドオンバーコードとみなし得る閾値以上であって、算出手段による算出値が第２コードをアドオンバーコードとみなし得る閾値以下である場合に、判定手段により、第２コードがアドオンバーコードであると判定される。そして、判定手段により第２コードがアドオンバーコードであると判定される場合に、デコード手段により、第１コードがメインバーコードであり、第２コードをアドオンバーコードとしてデコード処理が行われる。
【００１５】
第１コード等からの反射光が取り込まれる当該装置の読取口が第１コードの配列方向に対して傾いた状態で第１コード等が光学的に読み取られる場合には、第１コードの配列方向と読取ラインとの角度が比較的大きくなる。そこで、第１コードの配列方向と読取ラインとの角度に応じて、第２コードがアドオンバーコードであるか否かについて判定することで、当該装置の読取口が第１コードの配列方向に対して傾いた状態で第１コード等が読み取られる場合でも、アドオンバーコードがあると誤判断する確率を低くすることができる。
したがって、読取口が第１コードの配列方向に対して傾いた状態で読み取る場合でも、アドオンバーコードの存在有無に関する判定の正確性を向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る光学的情報読取装置の構成を示す断面図である。
【図２】図１の光学的情報読取装置の電気的構成を示すブロック図である。
【図３】アドオンバーコード付きＷＰＣ系バーコードの一例を示す図である。
【図４】光学的情報読取装置の操作中に生じ得るアドオンバーコードの読み落しを例示する説明図である。
【図５】ラインセンサによる読取ラインとバーコードの配列方向との傾斜角度を例示する説明図である。
【図６】図６（Ａ）は、図５（Ａ）の傾斜角度に対応する受光波形を示す説明図であり、図６（Ｂ）は、傾斜角度が０°であるときの受光波形を示す説明図である。
【図７】図２の制御回路にて実施される読取処理の流れを例示するフローチャートの一部である。
【図８】図２の制御回路にて実施される読取処理の流れを例示するフローチャートの一部である。
【図９】図２の制御回路にて実施される読取処理の流れを例示するフローチャートの一部である。
【図１０】深度で操作中の判断処理（１）でのサブルーチン処理を示すフローチャートである。
【図１１】位置で操作中の判断処理（２）でのサブルーチン処理を示すフローチャートである。
【図１２】アドオンバーコード有無判断処理でのサブルーチン処理を示すフローチャートである。
【図１３】ガードバーパターンの一例を示す図である。
【図１４】ガードバーパターンの他の例を示す図である。
【図１５】深度で操作中の判断処理（１）の説明図である。
【図１６】位置で操作中の判断処理（２）の説明図である。
【図１７】図１７（Ａ）は、角度閾値を説明するための説明図であり、図１７（Ｂ）は、垂線長閾値を説明するための説明図である。
【図１８】図１８（Ａ）は、傾斜角度が角度閾値以下である状態を説明するための説明図であり、図１８（Ｂ）は、垂線長が所定の垂線長閾値以下である状態を説明するための説明図である。
【図１９】傾斜角度が角度閾値以下でなくかつ垂線長が所定の垂線長閾値以下でない状態を説明するための説明図である。
【図２０】図２０（Ａ）は、アドオンバーコードの一部が読取口から外れた状態を示す図であり、図２０（Ｂ）は、第２コードの左端のバーが異常に太い状態を示す図であり、図２０（Ｃ）は、第１コードと第２コードとが離れ過ぎている状態を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の光学的情報読取装置を具現化した一実施形態について図を参照して説明する。図１は、本実施形態に係る光学的情報読取装置１０の構成を示す断面図である。
図１に示すように、光学的情報読取装置１０は、黒バー（暗色パターン）および白バー（明色パターン）が複数配列されて構成されるバーコード等の一次元コードを光学的に読み取る読取装置であって、握り部を兼用する操作部１２、例えば液晶からなる液晶表示器１４などを備えている。操作部１２には、例えば複数のキースイッチ１６が設けられ、これらキースイッチ１６により、動作内容を指示するようになっている。この操作部１２には、キースイッチ１６に加えて、読取り開始を指示するためのトリガースイッチ１８が設けられている。
【００２２】
光学的情報読取装置１０の筐体６０内には、プリント配線基板２０が固定されており、そのプリント配線基板２０の一方の面にキースイッチ１６がマトリクス状に搭載されている。また、プリント配線基板２０の他方の面には、受光素子であるＣＣＤを直線的に配列して構成される受光手段としてラインセンサ３２が立設して実装されている。
【００２３】
筐体６０の前端に形成された開口部（以下、読取口６２という）には光学系ユニット３０が配設されており、筐体６０内において光学系ユニット３０の光軸上となる位置に反射鏡３４が配設されていると共に、反射鏡３４により折曲げられた光軸上にラインセンサ３２が位置している。検出対象物からの反射光は、読取口６２を通して取り込まれ光学系ユニット３０及び反射鏡３４を介して、ラインセンサ３２に結像されて受光されるようになっている。
【００２４】
読取口６２近傍のプリント配線基板２２の中央には孔２２ａが形成されており、その孔２２ａの周囲に複数の照明用ＬＥＤ３８が搭載されている。プリント配線基板２２に形成された孔２２ａにはレンズユニット３６が装着されている。このレンズユニット３６は、検出対象物からの反射光を集光する結像レンズ３６ａと、照明用ＬＥＤ３８からの光を正面に投光するための集光レンズ３６ｂとを一体にして形成されている。
【００２５】
次に、光学的情報読取装置１０の回路構成を図２のブロック図を参照して説明する。
図２に示すように、光学的情報読取装置１０には、メモリ３５、制御回路４０、キースイッチ１６、トリガースイッチ１８、液晶表示器１４等のマイクロコンピュータ（以下「マイコン」という）系が収容されている。
【００２６】
マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、制御回路４０、キースイッチ１６、トリガースイッチ１８、ＬＥＤ４３、ブザー４４、液晶表示器１４、通信インタフェース４８等から構成されている。このマイコン系は、その名の通り、マイコン（情報処理装置）として機能し得る制御回路４０およびメモリ３５を中心に構成されるもので、光学系からの受光信号（画像信号）をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路４０は、当該光学的情報読取装置１０の全体システムに関する制御も行っている。
【００２７】
光学系のラインセンサ３２から出力される受光信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された受光信号、つまり受光データは、制御回路４０へ入力される。
【００２８】
制御回路４０は、光学的情報読取装置１０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなるもので、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路４０には、内蔵された入出力インタフェースを介して種々の入出力装置（周辺装置）と接続可能に構成されており、本実施形態の場合、キースイッチ１６、トリガースイッチ１８、ＬＥＤ４３、ブザー４４、液晶表示器１４、通信インタフェース４８等が接続されている。制御回路４０は、バーコードを読み取った結果を、通信インタフェース４８を介して図示しない上位機器（例えばコンピュータ）側へ出力するよう構成されている。
【００２９】
次に、本実施形態での読み取りの対象となるバーコードの構成について図３を用いて説明する。図３は、アドオンバーコード付きＷＰＣ系バーコードの一例を示す図である。
図３において、読取方向１番目（図３の左側）に位置するバーコードをメインバーコードＢｍといい、読取方向２番目（図３の右側）に位置するようにメインバーコードＢｍの近傍（図３にて右側）に付加されるバーコードをアドオンバーコードＢａという。メインバーコードＢｍは、その左右両側にガードバーパターンが存在するように構成され、アドオンバーコードＢａは、その左側にだけガードバーパターンが存在するように構成される。
【００３０】
図３の例では、ガードバーパターンは、メインバーコードＢｍについては左右両側に存在し、左右両側に下の方に長く突出した２本の黒バーと、これらに挟まれた１本の白バーの合計３本のバーによって構成されている。アドオンバーコードＢａについては、ガードバーパターンは、左側にだけ存在し、左側２本の黒バーと、これらに挟まれた１本の白バーの合計３本のバーによって構成されている。なお、本実施形態では、黒バー間の空白部分（スペース）を白バーとし、１本のバーとして数える。
【００３１】
そして、図３のメインバーコードＢｍにおいて、右側のガードバーパターンに対して右側から隣接する白バーを含めて当該白バーから左に向かって４本目の黒バーまでが最終キャラクタである。また、アドオンバーコードＢａにおいて、左側のガードバーパターンに対して左側から隣接する白バーを含めて当該白バーから右に向かって４本目の黒バーまでが第１キャラクタである。
【００３２】
本実施形態では、所定のバーコードをデコードした後、このバーコードを第１コードとしてその右端から左に向かって一定本数のバーの幅を求めて予め設定された式により基準値を演算すると共に、アドオン側のバーコード（以下、第２コードという）の左端から右に向かって一定本数のバーの幅を求めて予め設定された式により比較値を演算する。そして、比較値が基準値に対して所定の範囲内にあるとき、第１コードがメインバーコードＢｍでありこのメインバーコードＢｍに第２コードであるアドオンバーコードＢａが付加されていると判断する。このため、偶然にアドオンバーコードの第１キャラクタが存在する位置に、第１コードの最終キャラクタに似た縞模様が存在していた場合、これをアドオンバーコードと判断する確率が低くなるので、アドオンバーコードが存在していない場合に、デコードデータを転送するまでに要する時間を短縮できる。
【００３３】
更に本実施形態では、上記基準値を求めるために定められたバー本数と上記比較値を求めるために定められたバー本数とは、メインバーコードＢｍおよびアドオンバーコードＢａの並び構成（配列構成）を基に、第１コードの一定本数のバーの幅を式に当てはめて求めた基準値と、第２コードの一定本数のバーの幅を式に当てはめて求めた比較値との差が、最小幅（１モジュール）のバーの幅以下となる本数に定められている。この基準値および比較値を求めるためのバーの一定本数について、以下に具体的に記載する。
【００３４】
Ａ．ガードバーパターンが黒、白、黒の３本のバーによって構成されるＥＡＮ−８、ＥＡＮ−１３、ＵＰＣ−Ａであり、アドオンバーコードＢａが２桁である場合と５桁である場合について、以下に例示する。
（１）アドオンバーコード２桁の場合
(i)メインバーコードＢｍとアドオンバーコードＢａの双方共に３本目（ガードバー部分と１キャラクタとの境目）まで
(ii)メインバーコードＢｍとアドオンバーコードＢａの双方共に７本目（１キャラクタと２キャラクタとの境目）まで
（２）アドオンバーコード５桁の場合
(i)メインバーコードＢｍとアドオンバーコードＢａの双方共に３本目（ガードバー部分と１キャラクタとの境目）まで
(ii)メインバーコードＢｍとアドオンバーコードＢａの双方共に７本目（１キャラクタと２キャラクタとの境目）まで
(iii)メインバーコードＢｍが１９本目までとアドオンバーコードＢａが２１本目まで
【００３５】
Ｂ．ガードバーパターンが黒、白、黒、白、黒、白の６本のバーによって構成されるＵＰＣ−Ｅであり、アドオンバーコードＢａが２桁である場合と５桁である場合について、以下に例示する。
（１）アドオンバーコード２桁の場合
(i)メインバーコードＢｍが３〜５本目までとアドオンバーコードＢａが３本目（ガードバー部分と１キャラクタとの境目）まで。特にメインバーコードＢｍが４本目までを採用すると、規格上の合計幅がアドオンバーコードＢａと同幅になる。
(ii)メインバーコードＢｍが９本目までとアドオンバーコードＢａが７本目（１キャラクタと２キャラクタとの境目）まで
（２）アドオンバーコード５桁の場合
(i)メインバーコードＢｍが３〜５本目までとアドオンバーコードＢａが３本目（ガードバー部分と１キャラクタとの境目）まで
(ii)メインバーコードＢｍが９本目までとアドオンバーコードＢａが７本目（１キャラクタと２キャラクタとの境目）まで
(iii)メインバーコードＢｍとアドオンバーコードＢａの双方共に１３本目（ガードバー部分と１キャラクタとの境目）まで
(iv)メインバーコードＢｍが１７本目までとアドオンバーコードＢａが１５本目、ただし、アドオンバーコードＢａの１５本目は減算する。
【００３６】
このように基準値および比較値を求めるためのバーの本数を設定すれば、第１コードから求められる基準値と第２コードから求められる比較値とが、バーの最小幅（１モジュール）以下の差でほぼ一致し、高い精度で基準値および比較値を比較することができる。
【００３７】
そして、本実施形態では、第２コードの左端から右に向かって一定本数未満の数のバーの幅を加算した値に応じて求められる比較値が、基準値に対して所定の範囲を越えたとき、アドオンバーコードは付加されていないと判断する。この構成によれば、アドオン側のバーコード（に似たもの）の一部分しか光学的情報読取装置１０の読取口６２に入っていない場合、その一部分に異常に幅の広いバー（に似た部分）が存在するようなときには、アドオンバーコードではないと判断するので、アドオンバーコードでないものを、早くアドオンバーコードでないと判断することができる。
【００３８】
図４は、光学的情報読取装置１０の操作中に生じ得るアドオンバーコードＢａの読み落しを例示する説明図であり、図４（Ａ）は、読取口６２をバーコードに近づける操作中の状態を示し、図４（Ｂ）は、読取口６２をバーコードに沿って水平方向へ移動させる操作中の状態を示す。
本実施形態では、アドオンバーコードが無いと判断した際も、更に、アドオンバーコードの読み落しが無いかの判断を行う。即ち、図４（Ａ）に示すように、離れた位置から光学的情報読取装置１０の読取口６２をバーコードに近づけていく操作を行っている最中において、バーコードのメインバーコードＢｍのみがデコードされ、この時点でアドオンバーコードＢａがメインバーコードＢｍからの反射光の受光に応じた受光信号に含まれていない場合がある。この場合、上述した処理のみでは、アドオンバーコードＢａの読み落しが発生する。また、図４（Ｂ）に示すように、光学的情報読取装置１０の操作に慣れない操作者が、読取口６２をバーコードに沿って水平方向（各バーの配列方向）へ移動させながらバーコードの読み取りを試みた場合、読取口６２にメインバーコードＢｍのみが入ってしまう場合がある。この場合、上述した処理のみでは、アドオンバーコードＢａの読み落しが発生する。そこで、上述のようなアドオンバーコードの読み落しを防止するため、メインバーコードＢｍをデコードするための受光信号からアドオンバーコードＢａが無いと判断した際も、更に、光学的情報読取装置１０の近接方向、水平方向への操作によって、アドオンバーコードを読み落していないかの判断を行う。
【００３９】
図５は、ラインセンサ３２による読取ラインＬ１とバーコードの配列方向Ｌ２との傾斜角度θを例示する説明図であり、図５（Ａ）は、アドオンバーコードＢａが付加される状態を示し、図５（Ｂ）は、アドオンバーコードＢａが付加されない状態を示す。図６（Ａ）は、図５（Ａ）の傾斜角度θに対応する受光波形を示す説明図であり、図６（Ｂ）は、傾斜角度θが０°であるときの受光波形を示す説明図である。
【００４０】
さらに、本実施形態では、アドオンバーコードがあると想定（判断）した際も、その想定が誤っているか否かについての判断をさらに行う。通常、作業者は、読取口６２をバーコードに沿わせて読み取るため、図５（Ａ）に例示するように、ラインセンサ３２により一次元的に受光されるラインである読取ラインＬ１とバーコードの配列方向Ｌ２との角度（以下、傾斜角度θという）は小さくなる。このとき、ラインセンサ３２から、図６（Ａ）に例示するような受光波形の受光信号が出力される。ここで、傾斜角度θが０°となる場合には、ラインセンサ３２から、図６（Ｂ）に例示するような受光波形の受光信号が出力される。なお、図６（Ａ）および図６（Ｂ）からわかるように、傾斜角度θが長くなるほど受光波形に占める第１コードおよび第２コードの幅が長くなる。
【００４１】
しかしながら、読取口６２がバーコードの配列方向Ｌ２に対して傾いた状態で当該バーコードが読み取られると、ラインセンサ３２による読取ラインＬ１とバーコードの配列方向Ｌ２との傾斜角度θが大きくなる場合がある。この場合、図５（Ｂ）に例示するように、アドオンバーコードと異なるバーコードや模様等が、最初に読み取ったバーコードに対して本来アドオンバーコードが配置される位置からずれていても上記読取ラインＬ１上に表示されていると、この異なるバーコード等に基づいて、アドオンバーコードが存在すると誤判定する可能性があるからである。
【００４２】
そこで、上述のようなアドオンバーコードの誤判断を防止するため、メインバーコードＢｍをデコードするための受光信号からアドオンバーコードＢａがあることが想定される場合でも、第１コードの配列方向に対する読取口６２の傾きを考慮して、アドオンバーコードがあるか否かについての詳細に判断を行う。このように、アドオンバーコードがあると誤判断する確率を低くすることで、アドオンバーコードが存在していない場合に、デコードデータを転送するまでに要する時間を短縮できる。
【００４３】
次に、バーコードを読み取る場合の制御回路４０における読取処理について、図７〜図１２に示すフローチャートを参照しながら説明する。図７〜図９は、図２の制御回路４０にて実施される読取処理の流れを例示するフローチャートである。図１０は、深度で操作中の判断処理（１）でのサブルーチン処理を示すフローチャートである。図１１は、位置で操作中の判断処理（２）でのサブルーチン処理を示すフローチャートである。図１２は、アドオンバーコード有無判断処理でのサブルーチン処理を示すフローチャートである。なお、以下の説明では、読取対象となるメイン側に位置するバーコードである第１コードは、ＷＰＣ系バーコードで、ＥＡＮ−１３、ＥＡＮ−８、ＵＰＣ−Ａ、ＵＰＣ−Ｅの４種類のいずれかであるとする。
【００４４】
読み取るべきバーコードに読取口６２を当ててトリガースイッチ１８により読取動作をスタートさせる。すると、照明用ＬＥＤ３８が点灯してバーコード（ラベル）に投光され、その反射光が結像レンズ３６ａによってラインセンサ３２に結像される（図７に示すＳ１２）。そして、制御回路４０は、ラインセンサ３２が受光したバーコードからの受光信号を２値化してメモリ３５のＲＡＭに記憶させ（Ｓ１４）、その後、２値化データに基づいてメイン側に位置するバーコードである第１コードをデコードしてメモリ３５内のＲＡＭに記憶する（Ｓ１６）。なお、Ｓ１６および後述するＳ６８を実行する制御回路４０は、特許請求の範囲に記載の「デコード手段」の一例に相当し得る。
【００４５】
次に、制御回路４０は、デコードした第１コードの種類を判別し（Ｓ１８）、ガードバーの本数が３本であるもの、すなわちＵＰＣ−Ａ、ＥＡＮ−８、ＥＡＮ−１３のいずれかである場合には、右端から７本目までの各バーの幅Ｂ１〜Ｂ７を求め、基準値Ｘを予め設定された次の（１）式によって求める（Ｓ２０）。また、ガードバーの本数が６本であるもの、すなわちＵＰＣ−Ｅである場合には、右端から１０本目までの各バーの幅Ｂ１〜Ｂ１０を求め、基準値Ｘを予め定められた次の（２）式によって求める（Ｓ２２）。
【００４６】
Ｘ＝Ｂ７＋Ｂ６＋Ｂ５＋Ｂ４＋Ｂ３＋Ｂ２＋Ｂ２＋Ｂ１                …（１）
Ｘ＝Ｂ１０＋Ｂ９＋Ｂ８＋Ｂ７＋Ｂ６＋Ｂ５＋Ｂ４＋Ｂ３＋Ｂ２−Ｂ１  …（２）
なお、上記（１）式、（２）式において、Ｂに付した添字の数字は右端からの並び順を示すもので、１が右端のバー、以下、２、３、……が右端から２番目、３番目、……のバーを示す。
【００４７】
これら（１）式および（２）式の意味は次の通りである。まず、この実施形態では、アドオンバーコードが付加されているか否かの判断を、第１コードの一定本数のバーの幅を求めてこれを予め設定された式に当てはめて基準値Ｘを演算すると共に、アドオン側のバーコードである第２コードの一定本数のバーの幅を求めてこれを予め設定された式に当てはめて比較値Ｚを演算する。そして、比較値Ｚが基準値Ｘに対して一定範囲、例えば基準値Ｘの８０％〜１２０％の範囲内にあるか否かによって、アドオンバーコードが付加されているか否かの判断がなされる。
【００４８】
図１３は、ガードバーパターンの一例を示す図である。図１４は、ガードバーパターンの他の例を示す図である。
バーコードにおいては、幅の異なる複数種のバーが使用されており、そのうちの最小の幅を１モジュールと呼ぶ。図１３および図１４に例示するように、アドオンバーコードＢａでは、左端から右に向かって７本目まで（ガードバー部分および第１キャラクタ部分）のバーの幅の合計値は１１モジュールに定められている。
【００４９】
一方、メインバーコードＢｍのガードバーパターンが３本のバーから構成されているＵＰＣ−Ａ、ＥＡＮ−８およびＥＡＮ−１３のいずれかでは、図１３に示すように、ガードバーパターンおよび最終キャラクタは合計７本のバーで構成され、その７本のバーの合計幅は１０モジュールに定められ、且つガードバーパターンの各バーの幅は１モジュールに定められている。このため、上記（１）式のように、７本のバーの幅を合計し、更に１モジュール幅である１本のガードバー（例えば、右端から２番目のバー）の幅を加算することによって、基準値Ｘとして１１モジュールの幅を得ることができる。
【００５０】
また、メインバーコードＢｍのガードバーパターンが６本のバーから構成されているＵＰＣ−Ｅでは、図１４に示すように、ガードバーパターンおよび最終キャラクタは合計１０本のバーで構成され、その１０本のバーの合計幅は１３モジュールに定められ、且つガードバーパターン各バーの幅は１モジュールに定められている。このため、上記（２）式のように、１０本のバーの幅を合計し、１モジュール幅である１本のガードバー（例えば、右端のバー）の幅の２倍を減算することによって、基準値Ｘとして１１モジュールの幅を得ることができる。
【００５１】
以上のことから、第２コードの左端から７本目までのバーの幅の加算値である比較値Ｚを基準値Ｘと比較することによって、アドオンバーコードＢａの付加の有無を判断できるものである。
【００５２】
上述のようにＸの値を演算した後、制御回路４０は、第１コードと第２コードとの間に存在するギャップ幅Ｇを算出し（Ｓ２４）、そのギャップ幅Ｇと基準値Ｘとを比較し、ギャップ幅Ｇが基準値Ｘに対してその１２０％（ほぼ１３．２モジュール）以内と定められた許容範囲に入っているか否かを判断する（Ｓ２６）。
【００５３】
なお、アドオンバーコードが付加されていない場合、ラインセンサ３２は第１コードの右側を白として読み取るので、制御回路４０は第１コードの右側の広い白部分（読取口６２の右端まで）をギャップと判断してその幅を演算する。
【００５４】
ギャップ幅Ｇが許容範囲から外れている場合には、制御回路４０は、Ｓ２６：Ｎｏと判断してアドオンバーコードは付加されていないと判断する（図９に示すＳ７６）。そして、後述するＳ７８以降の光学的情報読取装置１０を操作中かの判断を経て、操作中でないと判断される場合に、第１コードのデコードデータを上位機器に転送し（Ｓ８６）、エンドとなる。
【００５５】
ギャップ幅Ｇが許容範囲内にある場合には、制御回路４０は、Ｓ２６:Ｙｅｓと判断し、次にアドオン側に１本目のバーが存在するか否かを判断する（Ｓ３２）。１本目のバーが存在しない場合には、制御回路４０は、Ｓ３２：Ｎｏとなって、上記Ｓ７６以降を順に実行しエンドとなる。
【００５６】
１本目のバーが存在する場合には、制御回路４０は、Ｓ３２:Ｙｅｓとなり、アドオン側のバー幅の加算値Ｙを０にセットし（Ｓ３４）、Ｙに１本目のバーの幅ｂ１を加算する（Ｓ３６）。次いで、制御回路４０は、アドオン側に２本目のバーが存在するか否かを判断し（図８に示すＳ３８）、存在する場合には、バー幅の加算値Ｙに２本目のバーの幅ｂ２を加算する（Ｓ４０）。以下、３本目以降、７本目までのバーの存在を逐次判断し（Ｓ４２、４６、５２、５６、６０）、いずれのバーも存在する場合、順次バーの幅を累計する（Ｓ４４、５０、５４、５８、６２）。そして、７本目までのバーの幅の加算値Ｙ（比較値Ｚ）と基準値Ｘとを比較し、加算値Ｙが基準値Ｘの８０％〜１２０％と定められた許容範囲に入っているか否かを判断する（図９に示すＳ６４）。
【００５７】
７本のバーの幅の加算値Ｙが上記許容範囲から外れていた場合には（Ｓ６４：Ｎｏ）、制御回路４０は、アドオンバーコードではないと判定する（Ｓ７６）。そして、後述するＳ７８以降での光学的情報読取装置１０を操作中かの判断処理を経て、操作中でないと判断される場合に、第１コードのデコードデータを上位機器に転送し（Ｓ８６）、エンドとなる。
【００５８】
一方、２本目以降のバーが存在するか否かを判断するステップにおいて、存在していないと判断した場合（Ｓ３８、Ｓ４２、Ｓ４６、Ｓ５２、Ｓ５６、Ｓ６０の各ステップ：Ｎｏ）、図９のＳ７２に移行する。続いて、制御回路４０は、加算値Ｙが基準値Ｘの１２０％以下であるか否かを判断し、Ｘの１２０％を越えている場合（Ｓ７２：Ｎｏ）には、前述のＳ７６に移行してアドオンバーコードではないと判定する。そして、後述するＳ７８以降での光学的情報読取装置１０を操作中かの判断処理を経て、操作中でないと判断される場合に、第１コードのデコードデータを転送し（Ｓ８６）、エンドとなる。
【００５９】
また、バーの幅の加算値Ｙが、基準値Ｘの１２０％以内にある場合には（Ｓ７２:Ｙｅｓ）、制御回路４０は、Ｓ７４に移行し、ここでブザー４４を鳴動させて、エンドとなる。
【００６０】
引き続き、Ｓ７６でアドオンバーコード無しと判断した後、更に、図４（Ａ）を参照して上述したように読取口６２をバーコードに近接させる最中にメインバーコードＢｍのみをデコードしたのでは無いかの判断を行う。この判断のため、先ず、ラインセンサ３２の読取ライン１mmのバー幅値を算出する（Ｓ７８）。ここでは、図１５（Ａ）中に示すＷ：第１コードを構成するバー幅の測定値、Ｗｏ：寸法１．０倍と想定したラベル幅とし、（３）式により算出する。
読取ライン１mmのバー幅値＝Ｗ／Ｗｏ                    …（３）
【００６１】
ここで、寸法１．０倍とは、規格値を縮小拡大せずに使用している場合を意味し、０．８倍まで縮小している場合には、寸法０．８倍と呼ぶ。例えばＥＡＮ−１３／ＵＰＣ−Ａで寸法１．０倍の場合には３４．１mmで（４）式になる。なお、ＥＡＮ−８では２２．１mm、ＵＰＣ−Ｅでは１８．０mmになる。
読取ライン１mmのバー幅値＝Ｗ／３４．１mm            …（４）
【００６２】
なお、本実施形態では、予め読み取り深度（読取口６２からバーコードまでの距離）と、読取ライン１mmのバー幅値との例えば下記のような対応関係が深度データ[深度とバー幅の関係表Ｗ１００＿？]としてメモリ３５に保持されている。
距離００mm：読取ライン１mmのバー幅値：５１１（センサの出力波形を測定した値）
距離１０mm：読取ライン１mmのバー幅値：４５６（センサの出力波形を測定した値）
距離２０mm：読取ライン１mmのバー幅値：４２１（センサの出力波形を測定した値）
【００６３】
上述のように読取ライン１mmのバー幅値が算出されるとこの算出値に基づき、光学的情報読取装置１０をバーコードに向けて近接させる操作を行っているかを判断する（Ｓ１００）。このＳ１００の深度で操作中の判断処理（１）での処理について、当該処理のサブルーチンを示す図１０を参照して説明する。なお、読み取り深度は、ラインセンサ３２から第１コードまでの離間距離として設定されてもよい。
【００６４】
先ず、Ｓ７８で算出した読取ライン１mmのバー幅値から、メモリ３５に保持されている読取ライン１mmのバー幅値と取り深度との深度データ[深度とバー幅の関係表Ｗ１００＿？]から深度[Ｈ？]を求める（Ｓ１０２）。そして、操作を開始したところであるか（第１コードのデコードの１回目）を判断する（Ｓ１０４）。深度Ｈを１回しか求めていない場合には（Ｓ１０４：Ｙｅｓ）、近接方向への操作中かの判断が不可能であるため、操作開始の登録を行い（Ｓ１１４）、上記Ｓ１０２で求めた距離[Ｈ？]をメモリに距離[Ｈ＿Ｂ]としてバックアップし（Ｓ１１６）、現在の時間、デコードを行った回数を初期化し（Ｓ１１８）、１回目のデコードは、操作中か否か不明であるため操作中であると仮に判断し、図９のＳ７６でのアドオンバーコード無しの判定を無効にする（Ｓ１２０）。
【００６５】
ここで、２回目以降のデコードの場合には（Ｓ１０４：Ｎｏ）、前回の比較から一定時間（或いはデコードの一定回数）経過したかを判断する（Ｓ１０６）。即ち、デコードは短い周期で繰り返されているため、デコード毎に深度[Ｈ？]を比較すると正確な判断が行えないため、一定時間経過するまでは（Ｓ１０６：Ｎｏ）、Ｓ１２０へ移行し、アドオンバーコード無しの判定を無効にする。他方、前回の比較から一定時間が経過（或いは一定回数のデコードの繰り返し）したら（Ｓ１０６：Ｙｅｓ）、今回の深度[Ｈ？]から前回の深度[Ｈ＿Ｂ]を減算し、移動距離を求める（Ｓ１０８）。そして、移動距離（絶対値）が所定閾値ＺＺよりも小さいかを判断する（Ｓ１１０）。ここで、移動距離として絶対値を用いるのは、光学的情報読取装置１０をバーコードへ近づける場合と共に遠ざける場合も操作中と判断するためである。ここで、移動距離（絶対値）が所定閾値ＺＺよりも大きい場合は（Ｓ１１０：Ｎｏ）、光学的情報読取装置１０をバーコードに向けて、或いは、離れる方向へ操作中であるため、Ｓ１１６へ移行し、Ｓ１１６、Ｓ１１８の処理を経て、アドオンバーコード無しの判定を無効にする（Ｓ１２０）。他方、移動距離（絶対値）が所定閾値ＺＺよりも小さい場合は（Ｓ１１０：Ｙｅｓ）、光学的情報読取装置１０に対する上下方向の操作が終了（または操作していない）と判断する（Ｓ１１２）。
【００６６】
ここで、深度で操作中の判断処理（１）での処理について、更に、図１５（Ｂ）を参照して具体的に説明する。
図１５（Ｂ）に示す深度Ｐ１は、光学的情報読取装置１０をバーコードに近づけて行き、メインバーコードのデコードが成功した位置（深度）を示している。深度Ｐ２は、上述したＳ１０６での一定時間経過後に、メインバーコードのデコードが成功した位置（深度）を示している。ここで、深度Ｐ１と深度Ｐ２との差が、所定閾値ＺＺよりも大きくなる場合には、アドオンバーコード無しの判定が無効となり、例えば、深度Ｐ３で、メインバーコードとアドオンバーコードとのデコードが成功するまで、デコード結果のコンピュータへの出力が待機されることになる。
【００６７】
Ｓ１００での深度（近接、離れ方向）で操作中の判断処理（１）後、図９のＳ８０での操作中かの判断がなされる。ここで、深度方向への操作中と判断されると（Ｓ８０：Ｙｅｓ）、操作中であることをブザー４４の鳴動、ＬＥＤ４３の点灯により操作者に告知し、アドオンバーコードの読み取りができるまで待機していることを知らしめる（Ｓ８４）。
【００６８】
他方、深度方向への操作中でないと判断される場合は（Ｓ８０：Ｎｏ）、図４（Ｂ）を参照して上述した、水平方向に読取口６２を移動させることでアドオンバーコードを読み落していないかの判断を行う（位置で操作中の判定処理（２）：Ｓ２００）。
【００６９】
Ｓ２００の位置で操作中の判断処理（２）での処理について、当該処理のサブルーチンを示す図１１を参照して説明する。先ず、Ｓ７８で算出した読取ライン１mmのバー幅値から、上記Ｓ１０２で求めた深度[Ｈ？]に基づき、読み取り位置として、読み取り操作ラインの端からバーコードまでの距離[Ｗ？]を算出する（Ｓ２０２）。そして、操作を開始したところであるか（第１コードのデコードの１回目）を判断する（Ｓ２０４）。距離[Ｗ？]を１回しか求めていない場合には（Ｓ２０４：Ｙｅｓ）、水平方向への操作中かの判断が不可能であるため、操作開始の登録を行い（Ｓ２１４）、上記Ｓ２０２で求めた距離[Ｗ？]をメモリに距離[Ｗ＿Ｂ]としてバックアップし（Ｓ２１６）、現在の時間、デコードを行った回数を初期化し（Ｓ２１８）、１回目のデコードは、操作中か否か不明であるため操作中であると仮に判断し、図９のＳ７６でのアドオンバーコード無しの判定を無効にする（Ｓ２２０）。
【００７０】
ここで、２回目以降のデコードの場合には（Ｓ２０４：Ｎｏ）、前回の比較から一定時間（或いはデコードの一定回数）経過したかを判断する（Ｓ２０６）。即ち、デコードは短い周期で繰り返されているため、デコード毎に移動距離[Ｗ？]を比較すると正確な判断が行えないため、一定時間経過するまでは（Ｓ２０６：Ｎｏ）、Ｓ２２０へ移行し、アドオンバーコード無しの判定を無効にする。他方、前回の比較から一定時間が経過（或いは一定回数のデコードの繰り返し）したら（Ｓ２０６：Ｙｅｓ）、今回の距離[Ｗ？]から前回の距離[Ｗ＿Ｂ]を減算し、移動距離を求める（Ｓ２０８）。そして、移動距離（絶対値）が所定閾値ＹＹよりも小さいかを判断する（Ｓ２１０）。ここで、移動距離として絶対値を用いるのは、バーコードに沿って、光学的情報読取装置１０を左右方向のいずれから近づける場合にも操作中と判断するためである。ここで、移動距離（絶対値）が所定閾値ＹＹよりも大きい場合は（Ｓ２１０：Ｎｏ）、光学的情報読取装置１０を水平方向へ操作中であるため、Ｓ２１６へ移行し、Ｓ２１６、Ｓ２１８の処理を経て、アドオンバーコード無しの判定を無効にする（Ｓ２２０）。他方、移動距離（絶対値）が所定閾値ＹＹよりも小さい場合は（Ｓ２１０：Ｙｅｓ）、光学的情報読取装置１０に対する左右方向の操作が終了（または操作していない）と判断する（Ｓ２１２）。
【００７１】
ここで、位置で操作中の判断処理（２）での処理について、更に、図１６（Ａ）〜（Ｃ）を参照して具体的に説明する。
図１６（Ａ）に示す位置Ｐ４は、光学的情報読取装置１０を図左方向からバーコードへ水平に近づけて行き、第１コードのデコードが成功した位置を表している。図１６（Ｂ）に示す位置Ｐ５は、上述したＳ２０６での一定時間経過後に、第１コードのデコードが成功した位置を表している。ここで、位置Ｐ４と位置Ｐ５との差が、所定閾値ＹＹよりも大きくなる場合には、アドオンバーコード無しの判定が無効となり、例えば、図１６（Ｃ）に示す位置Ｐ６で、第１コードと第２コードとのデコードが成功するまで、デコード結果のコンピュータへの出力が待機されることになる。
【００７２】
当該位置で操作中の判断処理（２）の処理後、図９に示すＳ８２で更に水平方向への操作中かの判断がなされる。ここで、水平方向への操作中と判断されると（Ｓ８２：Ｙｅｓ）、操作中であることをブザー４４の鳴動、ＬＥＤ４３の点灯により操作者に告知し、アドオンバーコードの読み取りができるまで待機していることを知らしめる（Ｓ８４）。一方、水平方向への操作中でない場合には（Ｓ８２：Ｎｏ）、Ｓ７６でのアドオンバーコードでないとの判断を生かし、第１コードのデコード結果をコンピュータ側へ出力する（Ｓ８６）。
【００７３】
上述した図９のＳ６４で、７本のバーの幅の加算値Ｙが上記許容範囲内にある場合には（Ｓ６４:Ｙｅｓ）、アドオンバーコードがあると想定（判断）し、その想定が誤っているか否かについて、第１コードの配列方向に対する読取口６２の傾きを考慮して、アドオンバーコードがあるか否か（上記想定の正誤）について判断する（Ｓ３００）。Ｓ３００のアドオンバーコード有無判断処理について、当該処理のサブルーチンを示す図１２と図１７〜図１９を参照して説明する。図１７（Ａ）は、角度閾値θｔを説明するための説明図であり、図１７（Ｂ）は、垂線長閾値Ｄｔを説明するための説明図である。図１８（Ａ）は、傾斜角度θが角度閾値θｔ以下である状態を説明するための説明図であり、図１８（Ｂ）は、垂線長Ｄが所定の垂線長閾値Ｄｔ以下である状態を説明するための説明図である。図１９は、傾斜角度θが角度閾値θｔ以下でなくかつ垂線長Ｄが所定の垂線長閾値Ｄｔ以下でない状態を説明するための説明図である。
【００７４】
まず、第１コードを構成する各バーの幅を合計して当該第１コードの幅値を実測幅値Ａ１として算出する（Ｓ３０２）。次に、読取ラインＬ１とバーコードの配列方向Ｌ２との傾斜角度θを算出する（Ｓ３０４）。具体的には、まず、別途設けた距離センサを利用してラインセンサ３２から第１コードまでの離間距離を実測し、この実測した距離から第１コードの規定上の幅値を想定することができるため、この想定される第１コードの幅値を想定幅値Ａ２として求める。この想定幅値Ａ２は、傾斜角度θが０°のときの実測幅値Ａ１に相当するため、傾斜角度θは、以下の式（５）により算出することができる。
θ＝ｃｏｓ−１（Ａ２／Ａ１）                              …（５）
なお、傾斜角度θは、特許請求の範囲に記載の「第１コードの配列方向と読取ラインとの角度」の一例に相当し得る。なお、Ｓ３０４を実行する制御回路４０は、特許請求の範囲に記載の「算出手段」の一例に相当し得る。
【００７５】
続いて、上述のように算出された傾斜角度θが所定の角度閾値θｔ以下であるか否かを判断する（Ｓ３０６）。ここで、角度閾値θｔは、図１７（Ａ）に示すように、メインバーコードＢｍの配列方向Ｌ２に沿う配列線Ｌ２’を当該メインバーコードＢｍの中央に通すとき、この配列線Ｌ２’とメインバーコードＢｍの中央左端（図１７（Ａ）で符号Ｐａにて示す）にて交差する読取ラインＬ１がアドオンバーコードＢａの右隅を通る場合の、読取ラインＬ１と配列線Ｌ２’との傾斜角度に等しくなるように設定されている。
【００７６】
このため、図１８（Ａ）に例示するように、傾斜角度θが所定の角度閾値θｔ以下であるならば（Ｓ３０６：Ｙｅｓ）、読取口６２が配列方向Ｌ２に対して大きく傾いていない状態でバーコードが読み取られており、アドオンバーコードＢａが存在するとして、Ｓ３００のアドオンバーコード有無判断処理を終了する。なお、Ｓ３０６および後述するＳ３１０を実行する制御回路４０は、特許請求の範囲に記載の「判定手段」の一例に相当し得る。
【００７７】
一方、傾斜角度θが所定の角度閾値θｔ以下でない場合には（Ｓ３０６：Ｎｏ）、Ｓ３０８へ移行し、アドオンバーコードＢａが存在する場合のその左端と読取ラインＬ１とが交差する点から配列方向Ｌ２に沿う配列線Ｌ２''に下ろした垂線の長さである垂線長Ｄを、ギャップ幅Ｇおよび傾斜角度θから算出する。この垂線長Ｄは、第２コードと第１コードとの配列方向に直交する方向における距離に相当する。
【００７８】
そして、上述のように算出された垂線長Ｄが所定の垂線長閾値Ｄｔ以下であるか否かを判断する（Ｓ３１０）。ここで、垂線長閾値Ｄｔは、図１７（Ｂ）に示すように、配列線Ｌ２''をメインバーコードＢｍの下端に通すとき、この配列線Ｌ２''とメインバーコードＢｍの下方左端（図１７（Ｂ）で符号Ｐｂにて示す）にて交差する読取ラインＬ１がアドオンバーコードＢａの右隅を通る場合の、アドオンバーコードＢａの左端と読取ラインＬ１とが交差する点から配列線Ｌ２''に下ろした垂線の長さに等しくなるように設定されている。
【００７９】
このため、図１８（Ｂ）に例示するように、垂線長Ｄが所定の垂線長閾値Ｄｔ以下であるならば（Ｓ３１０：Ｙｅｓ）、読取口６２が配列方向Ｌ２に対して大きく傾いていない状態でバーコードが読み取られており、アドオンバーコードＢａが存在するとして、Ｓ３００のアドオンバーコード有無判断処理を終了する。
【００８０】
上述のようにＳ３０６にてＹｅｓと判定されるかＳ３１０にてＹｅｓと判定されてＳ３００のアドオンバーコード有無判断処理が終了すると、制御回路４０は、第２コードがアドオンバーコードＢａであると判定し（Ｓ６６）、そして、第２コードをデコードしてメモリ３５のＲＡＭに記憶する（Ｓ６８）。次いで、第１コードおよび第２コードのデコードデータをメインバーコードＢｍおよびアドオンバーコードＢａのデコードデータとして上位機器（コンピュータ）に転送し（Ｓ７０）、エンドとなる。
【００８１】
一方、図１９に例示するように、傾斜角度θが所定の角度閾値θｔ以下でなく（Ｓ３０６：Ｎｏ）かつ垂線長Ｄが所定の垂線長閾値Ｄｔ以下でない場合には（Ｓ３１０：Ｎｏ）、アドオンバーコードと異なるバーコードや模様等が読取ラインＬ１上に表示されているとして、Ｓ３００のアドオンバーコード有無判断処理を終了し、Ｓ８６に移行して、第１コードのデコードデータを上位機器に転送し、エンドとなる。
【００８２】
図２０（Ａ）は、アドオンバーコードＢａの一部が読取口６２から外れた状態を示す図であり、図２０（Ｂ）は、第２コードの左端のバーが異常に太い状態を示す図であり、図２０（Ｃ）は第１コードと第２コードとが離れ過ぎている状態を示す図である。
なお、本実施形態では、図２０（Ａ）に示すように、アドオンバーコードＢａがメインバーコードＢｍに付加されていたが、そのアドオンバーコードＢａが読取口６２内に完全に入っておらず、右側部分のバーを光学的に読み取ることができなかった場合には、Ｓ３８、Ｓ４２、Ｓ４６、Ｓ５２、Ｓ５６、Ｓ６０のいずれか：Ｎｏと判断される可能性がある。そこで、上記のようにブザー４４を鳴動させれば、使用者は、ブザー音をバーコードが読取口６２から外れていることの注意報と理解し、読取口６２の中にメインバーコードとアドオンバーコードとが入るように光学的情報読取装置１０を動かし、そしてトリガースイッチ１８により読取動作を再スタートさせるようになる。これにより、上述のようにして第１コードおよび第２コードをメインバーコードＢａおよびアドオンバーコードＢａとを上位機器（コンピュータ）に転送することができる。
【００８３】
また、図２０（Ｂ）に示すように、アドオン側のバーコードである第２コードは、左端のバーの幅が極端に幅広く、このようなものはアドオンバーコードではない。ところが、第１コードの最終キャラクタの幅と第２コードの第１キャラクタの幅とを比較する従来方法では、左端の幅広のバーの幅は考慮しないので、図２０（Ｂ）の場合、右側の縞模様をアドオンバーコードと誤判断してしまう。
【００８４】
これに対し、本実施形態では、第２コードの左端から７本目までのバーの幅の加算値Ｙを基準値Ｘと比較するので、第１コードの右側は、縞模様等でありアドオンバーコードではないと正しく判断し、無駄なデコード処理のために多くの時間を費やすことを防止できる。
【００８５】
また、図２０（Ｃ）のように、メイン側のバーコードと、その右側に存在するバーコードとの間には大きなギャップが存在しており、このような大きなギャップを存しているバーコードはアドオンバーコードではない。本実施形態では、メイン側のバーコードとアドオン側のバーコードとの間のギャップ幅ＧがＸと比較して広過ぎる場合、アドオンバーコードではないと判断するので、無駄なデコード処理のために多くの時間を費やすことを防止できる。
【００８６】
以上説明したように、本実施形態に係る光学的情報読取装置１０では、受光信号に第１コードと第２コードの２つの一次元コードが含まれる場合に、第１コードの配列方向Ｌ２と読取ラインＬ１との傾斜角度θか、第２コードと第１コードとの配列方向Ｌ２に直交する方向における距離である垂線長Ｄが算出される。そして、第１コードと第２コードとの読取ラインＬ１に沿う方向における間隔であるギャップ幅Ｇが第２コードをアドオンバーコードとみなし得る閾値である基準値Ｘの１２０％以上でありＳ６４にてＹｅｓと判定され、傾斜角度θが角度閾値θｔ以下か垂線長Ｄが垂線長閾値Ｄｔ以下である場合に、第２コードがアドオンバーコードＢａであると判定される。そして、第２コードがアドオンバーコードＢａであると判定される場合に、第１コードがメインバーコードＢｍであり、第２コードをアドオンバーコードＢａとしてデコード処理が行われる。
【００８７】
このように、傾斜角度θと垂線長Ｄとのいずれかに応じて、第２コードがアドオンバーコードであるか否かについて判定されるため、当該装置の読取口６２が第１コードの配列方向Ｌ２に対して傾いた状態で第１コード等が読み取られる場合でも、アドオンバーコードがあると誤判断する確率を低くすることができる。
したがって、読取口６２が第１コードの配列方向Ｌ２に対して傾いた状態で読み取る場合でも、アドオンバーコードの存在有無に関する判定の正確性を向上させることができる。
【００８８】
さらに、傾斜角度θと垂線長Ｄの双方を用いて第２コードがアドオンバーコードであるか否かについて判定するため、アドオンバーコードの存在有無に関する判定の正確性をさらに向上させることができる。
【００８９】
特に、角度閾値θｔは、メインバーコードＢｍ（第１コード）の中央を通る配列線Ｌ２'に基づいて設定され、垂線長閾値Ｄｔは、メインバーコードＢｍの下端を通る配列線Ｌ２''に基づいて設定されている。このため、傾斜角度θが角度閾値θｔ以下となる第１コードと第２コードとの位置関係では、常に、垂線長Ｄが垂線長閾値Ｄｔ以下となるので、傾斜角度θを用いて第２コードがアドオンバーコードＢａであると判定される場合には、常に、垂線長Ｄを用いて第２コードがアドオンバーコードＢａであると判定される。したがって、２つの観点である傾斜角度θおよび垂線長Ｄを用いてアドオンバーコードの存在有無を判定する構成でも、傾斜角度θが角度閾値θｔ以下となれば垂線長Ｄの算出が不要となるので、常に傾斜角度θおよび垂線長Ｄを算出する場合と比較して処理負荷や処理時間を軽減することができる。
【００９０】
また、本実施形態では、傾斜角度θは、Ｓ１０２にて算出した深度[Ｈ？]と受光信号から求められる当該第１コードの幅値である実測幅値Ａ１とから算出されるため（Ｓ３０４）、新たな測定手段を別途用意することなく上記角度を容易に算出することができる。なお、Ｓ１０２にて算出した深度[Ｈ？]は、ラインセンサ３２から第１コードまでの離間距離としてみなすことができる。
【００９２】
なお、本発明は上記実施形態に限定されるものではなく、以下のように具体化してもよい。
（１）バーコード読取専用の光学的情報読取装置に本発明の構成を適用した例を挙げたが、バーコード等の一次元コードと共に二次元コードも読み取り可能な光学情報読取装置に本願発明の構成を適用してもよい。
【００９３】
（２）Ｓ３０４において、距離センサから想定幅値Ａ２を求めることに限らず、別途深度[Ｈ？]に相当する距離を実測するなど他の測定方法により想定幅値Ａ２または傾斜角度θを求めてもよい。
【００９４】
（３）Ｓ３００のアドオンバーコード有無判断処理において、Ｓ３０８，Ｓ３１０を廃止して、傾斜角度θのみに基づいて第２コードがアドオンバーコードがあるか否かについて判断してもよいし、Ｓ３０４，Ｓ３０６を廃止して、垂線長Ｄのみに基づいて第２コードがアドオンバーコードがあるか否かについて判断してもよい。
【００９５】
（４）Ｓ３００のアドオンバーコード有無判断処理において、Ｓ３０８，Ｓ３１０の処理を実施した後にＳ３０４，Ｓ３０６の処理を実施してもよい。この場合、垂線長閾値Ｄｔは、例えば、メインバーコードＢｍ（第１コード）の中央を通る配列線Ｌ２'に基づいて設定され、例えば、角度閾値θｔは、メインバーコードＢｍの下端を通る配列線Ｌ２''に基づいて設定される。このため、垂線長Ｄが垂線長閾値Ｄｔ以下となる第１コードと第２コードとの位置関係では、常に、傾斜角度θが角度閾値θｔ以下となるので、垂線長Ｄを用いて第２コードがアドオンバーコードＢａであると判定される場合には、常に、傾斜角度θを用いて第２コードがアドオンバーコードＢａであると判定される。このようにしても、２つの観点である傾斜角度θおよび垂線長Ｄを用いてアドオンバーコードの存在有無を判定する構成でも、垂線長Ｄが垂線長閾値Ｄｔ以下となれば傾斜角度θの算出が不要となるので、常に傾斜角度θおよび垂線長Ｄを算出する場合と比較して処理負荷や処理時間を軽減することができる。
【符号の説明】
【００９６】
１０…光学的情報読取装置
３２…ラインセンサ（受光手段）
３５…メモリ
４０…制御回路（デコード手段，算出手段，判定手段）
６２…読取口
Ｄ…垂線長
Ｄｔ…垂線長閾値
Ｇ…ギャップ幅
Ｌ１…読取ライン
Ｌ２…配列方向
θ…傾斜角度
θｔ…角度閾値
【図１】
0005644538.tif 000002
【図２】
0005644538.tif 000003
【図３】
0005644538.tif 000004
【図４】
0005644538.tif 000005
【図５】
0005644538.tif 000006
【図６】
0005644538.tif 000007
【図７】
0005644538.tif 000008
【図８】
0005644538.tif 000009
【図９】
0005644538.tif 000010
【図１０】
0005644538.tif 000011
【図１１】
0005644538.tif 000012
【図１２】
0005644538.tif 000013
【図１３】
0005644538.tif 000014
【図１４】
0005644538.tif 000015
【図１５】
0005644538.tif 000016
【図１６】
0005644538.tif 000017
【図１７】
0005644538.tif 000018
【図１８】
0005644538.tif 000019
【図１９】
0005644538.tif 000020
【図２０】
0005644538.tif 000021