バーコード読取り方法及びバーコード読取り装置並びにコンピュータプログラム
【課題】 複数種類の類似したパターンのバーコードが混在する場合でも、夫々をより確実に判別することができるバーコード読取方法を提供する。
【解決手段】 バーコード読取装置の制御回路は、RSS_Limitedのデコードが正常に終了した場合は(ステップA15)、そのコードパターンがPOSコードの一部であると仮定した場合に存在し得るバーの最大幅(4モジュール)に対し、明暗パターン列の両端側の少なくとも一方に、5モジュール以上の白バーが存在するかどうかを判定する(ステップA16,A17)。そして、前記白バーが存在すれば読取ったバーコードをRSS_Limitedとして確定する。
【解決手段】 バーコード読取装置の制御回路は、RSS_Limitedのデコードが正常に終了した場合は(ステップA15)、そのコードパターンがPOSコードの一部であると仮定した場合に存在し得るバーの最大幅(4モジュール)に対し、明暗パターン列の両端側の少なくとも一方に、5モジュール以上の白バーが存在するかどうかを判定する(ステップA16,A17)。そして、前記白バーが存在すれば読取ったバーコードをRSS_Limitedとして確定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするためのバーコード読取方法、及びバーコード読取り装置、並びに前記装置を制御するコンピュータによって実行されるプログラムに関する。
【背景技術】
【0002】
近年、バーコードについても多くの種類が開発されて実際に運用されている。そのため、所定のバーコードの一部分が他の種類のバーコードを構成しているという場合も存在する。従って、複数種類のバーコードの読取りに対応するようにリーダを構成する際には、そのような事態においてもバーコードの種類を明確に峻別することができなければ、読取り間違いが起きる可能性がある。
例えば、特許文献1には、複数種類のバーコードの読取りに対応可能な装置の一構成例が開示されている。
【特許文献1】特開平6−295352号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に開示されている技術は、複数種類のバーコードの読み取りについて共通して行なわれる処理を冒頭に実行することで、読取り処理に要する時間を短縮することを目的としてなされたものである。従って、上記のように、類似したパターンのバーコードが存在する場合に、夫々をどのようにして判別するかという技術課題の解決に資するものではない。
本発明は上記事情に鑑みてなされたものであり、その目的は、複数種類の類似したパターンのバーコードが混在する場合でも、夫々をより確実に判別することができるバーコード読取方法、及びバーコード読取り装置、並びにコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0004】
請求項1記載のバーコード読取方法によれば、複数種類の内、第1バーコードの一部のコードパターンが第2バーコードとして読取れる可能性がある場合に、読取ったバーコードの明暗パターン列について、第2規格の読取りアルゴリズムを適用して読み取りを行う。前記読取りが正常終了した場合は、明暗パターン列が第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する。ここでのバーは、白バー,黒バーの何れの幅であっても良い。
そして、明暗パターン列の両端側の少なくとも一方に最大幅を超えるバーが存在すれば、前記明暗パターン列を第2バーコードの読取りデータとして確定する。即ち、読取ったバーコードの少なくとも一方の端に、第1バーコードについて存在し得る最大幅を超えるバーがあれば、そのバーの部分が第1バーコードを構成することはあり得ない。従って、読取ったバーコードを第2バーコードとして確定することができ、第1バーコードとの誤読を防止することができる。
【0005】
請求項2記載のバーコード読取方法によれば、第2過程において最大幅を超えるバーが存在するか否かの判定は最初白バーについて行い、白バーが存在しなければ次に黒バーについて同様の判定を行う。即ち、バーコードはその両端に黒バーが位置するものが一般的であるため、その黒バーの外側に位置するマージンは白バーとなる。従って、最初に白バーについて判定を行えば殆どのバーコードに対応することになるので、判定をより迅速に行うことができる。
【0006】
請求項3記載のバーコード読取方法によれば、エリアセンサを用いてバーコードの読取りを2次元的に行う場合、第2過程で明暗パターン列の少なくとも一端から外方にバー高さ方向の異なる位置に複数の検査線を設定する。そして、複数の検査線上の夫々につき最大幅を超えるバーが存在するかを判定する。従って、読取りが、バーコードが印刷されている平面に対して傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、前記バーの存否をより確実に判定することができる。
【0007】
請求項4記載のバーコード読取方法によれば、複数の検査線を3本以上設定し、これらの検査線について最大幅を超えるバーが存在するかを多数決原理で決定するので、前記バーの存否を妥当に判定することができる。
請求項5記載のバーコード読取方法によれば、複数の検査線の全てについて最大幅を超えるバーが存在する場合にのみそのバーの存在を確定するので、前記バーの存否を一層確実に判定することができる。
【0008】
請求項6記載のバーコード読取方法によれば、第2過程において、両端に位置するバーの配置が不平行である場合に複数の検査線を設定する。即ち、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定されるので、読取りをより迅速に行うことができる。
【0009】
請求項7記載のバーコード読取方法によれば、検査線上で検出されたバーの高さを測定して当該バーの高さを読取り済みバーコードのバーの高さと比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定する。即ちバーコードがラベルの枠内に、規定されたマージンが確保されていない状態で印刷されているような場合は、ラベルの枠部分をバーとして認識するおそれがある。その場合に、請求項7の方法を適用すれば、バーコードの一部であるバーとラベルの枠とを確実に判別することができる。
【0010】
請求項8記載のバーコード読取方法によれば、第2バーコードが第1バーコードの一部と一致するパターンを予め記憶しておくようにする。そして、第1過程における読取りが正常終了すると、明暗パターン列が予め記憶したパターンの1つに一致するかを照合し、一致した場合に第2過程を実施する。即ち、予め記憶させたパターンは2種類のバーコードを読み間違える可能性があるものだから、そのパターンに一致する場合だけ第2過程を実施すれば、読取りをより効率的に行うことができる。
【0011】
請求項9記載のバーコード読取方法によれば、第1バーコードをPOSコードの内の何れか1種類とし、第2バーコードはRSS_Limitedとする。ここで、「POSコード」とは、UPC−A,UPC−E,EAN−13,EAN−8の総称である。これらの間では、実際にその一部のパターンがRSS_Limitedに一致するものが存在するので、本発明を有効に適用することができる。
【0012】
請求項10記載のバーコード読取方法によれば、POSコードの内の少なくとも何れか1種類と、RSS_Limitedとの読取りが何れも許可されるように設定されている場合に第2過程を実施する。即ち、実際にこれらのバーコードが混在する状態で読取りが行われることを前提とする場合にだけ本発明を適用するので、読取り効率を向上させることができる。
【0013】
請求項11記載のバーコード読取方法によれば、第2過程において明暗パターン列が第1バーコードの一部と仮定した場合の最小単位(モジュール)幅を検出し、最大幅を4モジュール幅として決定する。即ち、POSコードを構成する最大のバーは4モジュールであるから、読取り対象に応じて最大幅を適切に設定することができる。
【0014】
請求項12記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、明暗パターン列の両端の少なくとも一方に第1バーコードのキャラクタパターン,スタート又はストップパターンが存在すれば読取り失敗と判定する。即ち、読取ったバーコードの少なくとも一方の端に、第1バーコードのパターンが存在すれば、その明暗パターンは第1バーコードである可能性がある。従って、その場合に読取り失敗と判定することで読取り誤りを防止することができる。
【0015】
請求項13記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、明暗パターン列の両端の少なくとも一方に第1バーコードのキャラクタパターンが存在すれば読取り失敗と判定する。即ち、読取り視野のぎりぎりで読取ったバーコードがマージンの設定がない第2バーコードであれば、実際はその外側に読み取れなかったバーが存在する可能性がある。従って、その場合に読取り失敗と判定することで読取り誤りを防止することができる。
【0016】
請求項14記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、そのバーコードの両端と読取り視野の両端との間に所定の距離がない場合は当該バーコードの読取りを失敗と判定する。
即ち、バーコードが読取り視野のぎりぎり収まっている場合には、請求項12で述べた場合と同様の状態が想定される。また、読取ったバーコードが実際に第2バーコードであることも想定されるが、視野の両端はどうしても読取り用照明の照度が低くなりがちであり、正確な2値化ができないおそれがある。従って、斯様な場合に読取りを失敗と判定することで、読取り誤りを防止することができる。
【0017】
請求項15記載のバーコード読取方法によれば、エリアセンサを用いてバーコードの読取りを2次元的に行う場合、第2過程で明暗パターン列の少なくとも一端から外方にバー高さ方向の異なる位置に複数の検査線を設定する。そして、複数の検査線上の夫々につきマージンが確保されているかを判定する。従って、読取りが、バーコードが印刷されている平面に対して傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、マージンが存在するか否かを確実に判定することができる。
【0018】
請求項16記載のバーコード読取方法によれば、複数の検査線を3本以上設定し、これらの検査線についてマージンが確保されているかを多数決原理で決定するので、マージンの存否を妥当に判定することができる。
請求項17記載のバーコード読取方法によれば、複数の検査線の全てについてマージンが確保されている場合にのみマージンの存在を確定するので、マージンの存否を一層確実に判定することができる。
【0019】
請求項18記載のバーコード読取方法によれば、第2過程において、両端に位置するバーの配置が不平行である場合に複数の検査線を設定する。即ち、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定されるので、読取りをより迅速に行うことができる。
【0020】
請求項19記載のバーコード読取方法によれば、検査線上で検出されたバーの高さを測定して当該バーの高さを読取り済みバーコードのバーの高さと比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定する。即ちバーコードがラベルの枠内に、規定されたマージンが確保されていない状態で印刷されているような場合は、ラベルの枠部分をバーとして認識するおそれがある。その場合に、請求項18の方法を適用すれば、バーコードの一部であるバーとラベルの枠とを確実に判別することができる。
【0021】
請求項21記載のバーコード読取装置によれば、請求項1乃至19の何れかに記載のバーコード読取方法を実行可能に構成されている場合に、夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能に構成される。従って、例えば、マージンが規定されていないバーコードだけを読取るような場合には、不要な判定処理を行うことなく読み取りを迅速に行うことができる。
【発明を実施するための最良の形態】
【0022】
(第1実施例)
以下、本発明の第1実施例について図1乃至図3を参照して説明する。図3は、バーコード読取装置の電気的構成を概略的に示している。このバーコード読取装置1は、読取対象Aに印字されたバーコードを光学的に読取るためのもので、電源回路2,制御回路(コンピュータ)3,メモリ4,操作部5,照明駆動回路6,照射部7,結像手段8,センサ駆動回路9,光学的センサ10,クロック制御回路11,波形整形部12および外部インタフェイス部13を備えている。
電源回路2は、例えばAC/DC変換器により構成されるもので、外部から供給された交流電源を直流に変換し読取装置1の全構成に直流電源供給するようになっている。尚、電源回路2は必要に応じて設ければ良く、例えばハンディタイプのバーコード読取装置の場合には、内蔵している電池を電源として駆動される構成でも良い。
【0023】
制御回路3は、例えばマイクロコンピュータにより構成されており、制御用プログラムに基づいて読取装置1の全体を制御するようになっているが詳細は後述する。操作部5は、例えばトリガーキーや数字キー等の各種操作設定用キーが設けられて構成されており、ユーザ等によりトリガーキーが操作されると、制御回路3の制御に基づいて読取装置1が処理動作を開始する。照明駆動回路6は、制御回路3の制御に基づいて照射部7に駆動信号を与える。また、メモリ4には、制御回路3の制御プログラム(コンピュータプログラム)14が記憶されている。照射部7は、例えばLED等により構成されており、照明駆動回路6から駆動信号が与えられると読取対象Aに光を照射する。
【0024】
結像手段8は、例えばレンズにより構成されており、照射部7から読取対象Aに照射され反射した光を結像し光学的センサ10に与える。光学的センサ10は例えばエリアセンサとも称されており、例えばCCD等の受光素子が二次元平面状に配列され、対応する受光素子やその範囲(取込対象エリア)を設定することで全画素信号を独立に取込むことができるように構成されているもので、読取対象Aに反射した反射光を光電変換する。この光学的センサ10で露光するための露光時間は、制御回路3により設定可能に構成されている。
【0025】
制御回路3がセンサ駆動回路9を介して光学的センサ10を駆動制御すると、光学的センサ10は取込モードに基づいて光電変換した信号を波形整形部12に与えるようになっている。センサ駆動回路9は、光学的センサ10の受光素子から画素信号を出力させるためのクロックを光学的センサ10に与える。波形整形部12は、光学的センサ10により光電変換された信号を増幅し輝度レベルの信号を制御回路3に与えるようになっている。波形整形部12の増幅率は、制御回路3により設定可能に構成されている。外部インタフェイス部13は、制御回路3と外部装置(図示せず)との間でデータを入出力可能にしている。
【0026】
次に、本実施例の作用について図1及び図2も参照して説明する。図1は、制御回路3が制御プログラム14を実行した場合の処理内容を示すフローチャートであり、本発明の要旨に係る部分のみを示すものである。尚、ステップA1〜A14までの処理は、一般的な構成のバーコード読取装置と変わるところはない。
制御回路3は、先ず、ユーザにより読取り対象として指定された複数種類のバーコードから、読取り可能な最小バー本数Xを設定する(ステップA1)。それから、光学的センサ10により光学的に読取られ、波形整形部12を介して与えられるバーコードの輝度レベル信号を二値化、即ち明暗パターン化してからコード領域を切り出す。続いて、明暗パターンよりバーの本数nとバーを検出する(ステップA2,A3)。
【0027】
次に、制御回路3は、バー本数nと最小バー本数Xとを比較し、n≧Xの場合は(ステップA4,「YES」)、バー本数nに応じてデコード対象とするバーコードを決定する(ステップA5)。そして、明暗パターンの最初の白バー(通常はマージン領域に相当)とその次(内側)に位置する黒バーとの間、又は最初のキャラクタパターンより、バーコードの種類に応じてマージンチェックを行う(ステップA6)。また、ステップA4においてバー本数nが最小バー本数X未満であれば(「NO」)、その時点で読取りは失敗、「NG」と判定される(ステップA14)。
【0028】
ステップA6において、規定されているマージンが存在すれば(「OK」)、明暗パターン列にバーコードの種類に応じた読取りアルゴリズムを適用してデコードを行う(ステップA7,第1過程)。一方、規定されているマージンが存在しない場合は(「NG」)、パターン列両端のバーを1本ずつ減らして(n=n−2,ステップA10)ステップA4に戻り、再度最小バー本数Xとの比較を行う。ステップA7におけるデコード結果が問題なく「OK」であれば(ステップA8,「YES」)、パターン列最後の黒バー又はキャラクタパターンを基準としてマージンチェックを行う(ステップA9)。
【0029】
また、ステップA7におけるデコードが失敗し「NG」であれば(ステップA8,「NO」)、ステップA7でデコード対象として評価したバーの本数mをバー本数nより減じ(n=n−m,ステップA11)、ステップA4に戻り、再度最小バー本数Xとの比較を行う。ステップA9におけるマージンチェックが「OK」であれば、読取りは成功「OK」となり(ステップA13)、マージンチェックが「NG」である場合はステップA11に移行する。
【0030】
以下のステップA15〜A17における処理内容が、本発明の特徴的な部分である。即ち、ステップA13において一旦読み取りが「OK」となった場合、制御回路3は、そのバーコードがRSS_Limited(第2バーコード)であるか否かを判定し(ステップA15,第2過程)、RSS_Limitedでなければ(「NO」)そのまま処理を終了する。一方、バーコードがRSS_Limitedである場合は(「YES」)、ステップA7におけるデコード結果より、バーの最小単位幅であるモジュールを検出する(ステップA16)。そして、そのバーコードパターン両端外側の少なくとも一方に、5モジュール以上の白バーが存在するか否かを判定する(ステップA17)。
【0031】
ここで、図2を参照する。図2は、RSS_Limitedのバーコードパターンの一例と、POSコードの1種であるUPC−Aのバーコードパターンの一例であり、前者のパターンが後者のパターンの一部と一致するものを上下に配列して示している。RSS_Limitedは、コードサイズがUPC−Aよりも小さく(即ち、バーの構成本数がより少なく)、また、マージンを設けることが規定されていない仕様である。そのため、UPC−A/EAN−13のパターンを読もうとした場合に、読取り状態によってはRSS_Limitedと間違って読んでしまう可能性がある。
【0032】
そこで、ステップA17では、バーコードの少なくとも一方に5モジュール以上のマージンが存在する場合に、RSS_Limitedとしての読取り結果を「OK」とするようにしている。即ち、UPC−A/EAN−13を構成するバーは1〜4モジュールであるから、幅が5モジュール以上のバーはUPC−A/EAN−13の一部を構成するものではない。従って、RSS_Limited少なくとも一方に上記白バーが存在すれば、そのバーコードをRSS_Limitedとして読取ることに問題がないと確定することができる。
一方、ステップA17において1〜4モジュール幅のバーが存在する場合は(「NO」)、デコードしたコードパターンはUPC−A/EAN−13の一部である可能性がある。従って、その場合はステップA14に移行して読取りを「NG」として処理する。
【0033】
以上のように本実施例によれば、バーコード読取装置1の制御回路3は、RSS_Limitedのデコードが正常に終了した場合は、そのコードパターンがPOSコードの一部であると仮定した場合に存在し得るバーの最大幅(4モジュール)に対し、明暗パターン列の両端側の少なくとも一方に、5モジュール以上の白バーが存在するかどうかを判定する。そして、前記白バーが存在すれば、読取ったバーコードをRSS_Limitedとして確定するので、実際にそのコードパターンが部分的に一致するPOSコードとの誤読を防止することができる。
【0034】
(第2実施例)
図4及び図5は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。尚、バーコード読取装置1の構成は基本的に第1実施例と同様であり、制御回路3によるソフトウエア的な読取り処理が異なっている。
図4は図1相当図であるが、制御回路3は、ステップA15において「YES」と判断すると、RSS_Limitedのコードパターン両端部の少なくとも一方に、UPC−A/EAN−13のキャラクタコードが存在するか否かを判定する(ステップA18)。そして、前記キャラクタコードが存在しなければ(「NO」)読取ったコードパターンをRSS_Limitedとして確定し、そのまま処理を終了するが、前記キャラクタコードが存在すると(「YES」)読取りを「NG」とする(ステップA14)。
【0035】
即ち、図5に示すように、本来はUPC−A/EAN−13であるにもかかわらず、そのバーコードの全体が読取装置1の読取り視野に収まらず、一部のコードパターンを読取った結果がRSS_Limitedのコードパターンに一致する場合がある。斯様な場合において、読取ったコードパターン両端部の少なくとも一方にUPC−A/EAN−13のキャラクタコードが存在したとすれば、前記コードパターンはUPC−A/EAN−13の可能性があると推定できる。従って、その場合に読取りを「NG」とすることで、読取り誤りを防止することができる。
【0036】
(第3実施例)
図6及び図7は本発明の第3実施例を示すものであり、第2実施例と異なる部分についてのみ説明する。第3実施例では、制御回路3は、ステップA17に替わるステップA19において、読取ったコードパターン両端と読取り視野の両端との間に所定の距離が存在するか否かを判定する。そして、所定の距離が存在すれば(「YES」)読取ったコードパターンをRSS_Limitedとして確定し、そのまま処理を終了するが、所定の距離なければ(「NO」)読取りを「NG」とする(ステップA14)。
【0037】
即ち、図7に示すように、第3実施例と同様に本来はUPC−A/EAN−13のコードパターンであるがその全体が読取装置1の読取り視野に収まらず、視野のぎりぎりで読取れた部分がRSS_Limitedのコードパターンに一致する場合がある。従って、その場合に読取りを「NG」とすることで、UPC−A/EAN−13の読取り誤りを防止することができる。
また、図7の状態とは異なり、実際にバーコードがRSS_Limitedであることも想定されるが、視野の両端はどうしても照射部7による照明の照度が低くなりがちであり、正確な2値化ができないことも想定される。従って、斯様な場合に読取りを失敗と判定することで、読取り誤りを防止することができる。
【0038】
(第4実施例)
図8乃至図11は本発明の第4実施例を示すものである。第4実施例は、バーコード読取装置1の制御回路3が、バーコードのマージンチェックを行う場合の処理に関するものである。尚、第4実施例のマージンチェックは、例えば、第1実施例におけるステップA6やステップA9において行うものである。先ず、読取ったバーコードのマージンチェックを行う場合の現状の問題について図9乃至図11を参照して説明する。
【0039】
2次元センサによってバーコードを読取る場合、上述したように、読取った画像の全体からバーコードが位置するエリアを抽出し、そのエリアに対して1本の走査線を引き、当該走査線に沿って読み取りを行う。この走査線上において、例えば図10に示すように鏡面反射により黒バーが飽和して白くなっていたり、或いは、ラベルの印刷が粗悪なため黒バーに擦れやボイドがあったりすると、その部分をマージン領域と間違えて処理してしまうことがある。その場合、バーコードの桁落ちや読み間違いが発生する。
また、360度全ての角度で読み取りが可能であり、バーコードが2次元的に傾いた状態で読取った場合には、図11に示すように走査線が途中からバーコードより外れてしまうことがある。このような事態を防止するには、走査線に最初に当たった黒バーが延びている方向を追跡し、当該黒バーが読取り基準の水平に対してなす角度を求め、当該黒バーに対する垂線を算出し、その垂線に沿って走査線を引き直し読み取りを行うようにしている。
【0040】
ところが、2次元センサでバーコードを読取る場合、バーコードが印刷されている平面に対して仰角、俯角が付いた状態で読み取りを行うと、図9に示すようにバーコードの画像が台形状に歪んでしまうことがある。このように、画像が歪んだ場合には、上記のように最初に当たった黒バーに対する垂線に沿って走査線を引き直しても、その走査線が途中からバーコードより外れてしまうおそれがある。
【0041】
そこで、第4実施例では、図8に示すフローチャートに従ってマージンチェックを行う。制御回路3は、先ず、走査線を設定する(ステップB0)。それから、読取ったバーコードの両端に位置する黒バーについて追跡を行い(ステップB1)、それら2本の黒バーが平行であるか否かを判断する(ステップB2)。両者が平行であれば(「YES」)、従来通りで問題なく、走査線に沿ってマージンチェックを行うことが可能である(ステップB3)。そして、バーコードの種類に応じたマージンが存在すれば(ステップB4,「YES」)処理は終了する。
【0042】
一方、ステップB2において、両端のバーコードが平行でなければ(「NO」)、走査線に沿ってバーコードの外形ABCDを求める(ステップB6,図9(b)参照)。次に、バーコードの種類に応じて規定されているマージンの量を外形ABCDから計算し、マージン領域ABA’B’,CDC’D’を求めて外形ABCDの両側に設定する(ステップB7)。
続いて、マージン領域ABA’B’,CDC’D’に対し、図9(c)に示すように、外形ABCDの両端から外方に向けて複数の検査線を設定すると(ステップB8)、それらの各検査線について規定されたマージンが確保されているか否かを判断する(ステップB9)。例えば、検査線を3本以上設定し、それらの内でマージンが確保されているものが多数を占めた場合は「OK」と判断し(「YES」)処理を終了する。マージンが確保されているものが少数であれば(「NO」)読取りは「NG」とする(ステップB5)。
【0043】
以上のように第4実施例によれば、エリアセンサである光学的センサ10によりバーコードの読取りを2次元的に行う場合、バーコードパターンの少なくとも一端において、バー高さ方向の異なる位置に複数の検査線を設定して、それら検査線上の夫々につきマージンが確保されているかを判定するようにした。従って、読取装置1による読取りが、バーコードが印刷されている平面に対し仰角または俯角が付くように傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、マージンが存在するか否かを確実に判定することができる。
【0044】
また、複数の検査線を3本以上設定し、これらの検査線についてマージンが確保されているかを多数決原理で決定するので、マージンの存否を妥当に判定することができる。そして、両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行である場合に複数の検査線を設定し、両者が平行である場合は従来と同様にマージンチェックを行うようにした。従って、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定することで、読取りをより迅速に行うことができる。
【0045】
(第5実施例)
図12及び図13は本発明の第5実施例を示すものである。例えば、表などのスペースが限られている所にバーコードを付す場合、ラベル15の枠線に対して、規定されたマージンを確保することなくバーコードを印刷するようなことがある(図13参照)。第5実施例は、斯様な場合にも対応して確実にマージンチェックを行うものである。
図12において、制御回路3は、バーコード両端外側の規定されたマージン領域中に検査線を設定し、黒バーが存在するか否かを判断する(ステップC1)。即ち、図13に示すような状態では、ラベル15の枠線自体を黒バーとして検出する場合がある。黒バーがなければ(「NO」)従来通りで問題はないので、ステップC5に移行して規定されたマージンがあるか否かを判断する。ステップC5で規定されたマージンがない場合は(「NO」)読取り「NG」とする(ステップC6)。
【0046】
一方、マージン領域中に、黒バーが存在した場合は(「YES」)、その黒バーを追跡して高さH2を検出する(ステップC2)。それから、検出した高さH2を、既に読取ったバーコードのバーの高さH1と比較する(ステップC3)。「H1<H2」であれば(「YES」)、ステップC1で検出した黒バーは、バーコードパターンを構成するバーではなくラベル15の枠線であると推定することができる。従って、ステップC1で検出した黒バーは無視して、当該黒バーが位置する部分はマージン領域の一部であると判別し(ステップC4)、ステップC5に移行する。また、ステップC3において、「H1≧H2」であれば(「NO」)、ステップC1で検出した黒バーはバーコードパターンを構成するバーの可能性があるので、当該黒バーをコードパターンに加えて再度デコードを行う(ステップC7)。
【0047】
以上のように第5実施例によれば、バーコードパターンの両端外側に検査線上で検出されたバーの高さH2を測定して当該バーの高さを読取り済みバーコードのバーの高さH1と比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定するようにした。従って、バーコードがラベル15の枠内に規定されたマージンが確保されていない状態で印刷されているような場合でも、バーコードの一部であるバーとラベル15の枠線とを確実に判別することができる。
【0048】
(第6実施例)
図14は本発明の第6実施例を示すものであり、第1実施例と異なる部分について説明する。第6実施例では、第1実施例の図2で示したように、RSS_Limitedのコードパターンの内、UPC−A/EAN−13のコードパターンの一部に一致するものを全て、予めメモリ4に記憶させておく。そして、制御回路3は、ステップA15で「YES」と判断すると、メモリ4に記憶させたRSS_Limitedのコードパターンを検索する(ステップA20)。それから、ステップA7でデコードしたRSS_Limitedのコードパターンが、メモリ4に記憶させたパターンに一致するか否かを判断する(ステップA21)。
【0049】
ステップA21において、一致するパターンが存在しなければ(「NO」)、その時点で、デコードしたRSS_LimitedがUPC−A/EAN−13のコードパターンの一部でないことが確定するので処理を終了する。一方、一致するパターンが存在すれば(「YES」)ステップA16に移行して第1実施例と同様に処理を行なう。
以上のように第6実施例によれば、RSS_LimitedがUPC−A/EAN−13のコードパターンの一部と一致するため両者を読み間違える可能性がある場合にだけ、第1実施例と同様の処理を行うので、読取りをより効率的に行うことができる。
【0050】
(第7実施例)
図15は本発明の第7実施例を示すものであり、第1実施例と異なる部分について説明する。第7実施例では、制御回路3は、ステップA13の実行後に、ユーザによってRSS_LimitedとPOSコードの少なくとも1種類とが双方とも読取り対象に設定されているか否かを判断する(ステップA22)。そして、双方とも読取り対象に設定されていれば(「YES」)ステップA15に移行し、双方とも読取り対象に設定されていない場合は(「NO」,この場合、何れか一方だけが対象の場合も含む)そのまま処理を終了する。
即ち、双方が読取り対象に設定されていない場合は、読み取り対象のバーコードは何れか一方のみであることが前提であるから、POSコードを誤ってRSS_Limitedと読取る可能性はない。従って、双方が読取り対象に設定されている場合にだけステップA15〜A17を実行することで読取り効率を向上させることができる。
【0051】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
第1乃至第3実施例で行うバーコードの読み取りは、ラインセンサによって1次元的に行っても良い。
第1バーコードを構成するバーの最大幅の決定は、ステップA3でバー幅を検出した段階で行っても良い。また、必ずしも実際に読取ったパターンに基づいて決定する必要はなく、読取り対象として想定されるバーコードの種類に応じてバーの最大幅を予めデータとして保持しておき、そのデータに基づいて決定しても良い。
第2実施例において、UPC−A/EAN−13のキャラクタコードが存在するかどうかに替えて、バーコードの両端が全て1〜4モジュールのバーで構成されている場合に、読み取りを「NG」としても良い。
また、第2実施例においてステップA15を削除し、「読み取りOK」となったバーコードがRSS_Limitedであるか否かに係らず、ステップA18で第1バーコードのキャラクタコードについて存否を判定するようにしても良い。そして、この時ステップA18では、第1バーコードのキャラクタコードのみならず、スタートパターン又はストップパターンが存在するか否かについても判定するようにしても良い。
【0052】
第4実施例において、複数の検査線の全てについてマージンが確保されている場合にのみマージンの存在を確定しても良く、この場合、マージンの存否を一層確実に判定することができる。
また、第4実施例において、ステップB2を省略し、両端のバーが平行であるか否かにかかわらず以降の処理を実施しても良い。
第4又は第5実施例のマージンチェック方法を、例えば第1実施例のステップA17に対して適用しても良い。
第2過程における最大幅を超えるバーは、黒バーを対象としても良い。
バーコード読取装置1を、夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能となるように構成しても良い。斯様に構成すれば、例えばRSS_Limitedのようにマージンが規定されていないバーコードだけを読取るような場合には、不要な判定処理を行うことなく読み取りを迅速に行うことができる。
第1,第2バーコードは、夫々POSコード,RSS_Limitedに限ることはなく、要は、第1バーコードの一部のコードパターンが、第2バーコードのコードパターンに一致又は類似するような関係にあるものに適用することができる。
【図面の簡単な説明】
【0053】
【図1】本発明の第1実施例であり、バーコード読取装置の制御回路が制御プログラムを実行した場合の処理内容を示すフローチャート
【図2】RSS_Limitedと、UPC−Aのバーコードパターンの一部とが一致するものを上下に配列して示す図
【図3】バーコード読取装置の電気的構成を概略的に示す機能ブロック図
【図4】本発明の第2実施例を示す図1相当図
【図5】読取り対象のバーコードと、バーコード読取装置の読取り視野との位置関係の一例を示す図
【図6】本発明の第3実施例を示す図1相当図
【図7】図5相当図
【図8】本発明の第4実施例であり、制御回路がマージンチェックを行う場合の処理内容を示すフローチャート
【図9】図8の処理内容を、読取ったバーコードパターンに即して説明する図
【図10】従来の走査線の設定状態を示す図(その1)
【図11】従来の走査線の設定状態を示す図(その2)
【図12】本発明の第5実施例を示す図1相当図
【図13】ラベルの枠に対して、規定されたマージンを確保せずバーコードを印刷した状態を示す図
【図14】本発明の第6実施例を示す図1相当図
【図15】本発明の第7実施例を示す図1相当図
【符号の説明】
【0054】
図面中、1はバーコード読取装置、3は制御回路(コンピュータ)、4はメモリ、10は光学的センサ(エリアセンサ)、14は制御プログラム(コンピュータプログラム)を示す。
【技術分野】
【0001】
本発明は、複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするためのバーコード読取方法、及びバーコード読取り装置、並びに前記装置を制御するコンピュータによって実行されるプログラムに関する。
【背景技術】
【0002】
近年、バーコードについても多くの種類が開発されて実際に運用されている。そのため、所定のバーコードの一部分が他の種類のバーコードを構成しているという場合も存在する。従って、複数種類のバーコードの読取りに対応するようにリーダを構成する際には、そのような事態においてもバーコードの種類を明確に峻別することができなければ、読取り間違いが起きる可能性がある。
例えば、特許文献1には、複数種類のバーコードの読取りに対応可能な装置の一構成例が開示されている。
【特許文献1】特開平6−295352号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に開示されている技術は、複数種類のバーコードの読み取りについて共通して行なわれる処理を冒頭に実行することで、読取り処理に要する時間を短縮することを目的としてなされたものである。従って、上記のように、類似したパターンのバーコードが存在する場合に、夫々をどのようにして判別するかという技術課題の解決に資するものではない。
本発明は上記事情に鑑みてなされたものであり、その目的は、複数種類の類似したパターンのバーコードが混在する場合でも、夫々をより確実に判別することができるバーコード読取方法、及びバーコード読取り装置、並びにコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0004】
請求項1記載のバーコード読取方法によれば、複数種類の内、第1バーコードの一部のコードパターンが第2バーコードとして読取れる可能性がある場合に、読取ったバーコードの明暗パターン列について、第2規格の読取りアルゴリズムを適用して読み取りを行う。前記読取りが正常終了した場合は、明暗パターン列が第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する。ここでのバーは、白バー,黒バーの何れの幅であっても良い。
そして、明暗パターン列の両端側の少なくとも一方に最大幅を超えるバーが存在すれば、前記明暗パターン列を第2バーコードの読取りデータとして確定する。即ち、読取ったバーコードの少なくとも一方の端に、第1バーコードについて存在し得る最大幅を超えるバーがあれば、そのバーの部分が第1バーコードを構成することはあり得ない。従って、読取ったバーコードを第2バーコードとして確定することができ、第1バーコードとの誤読を防止することができる。
【0005】
請求項2記載のバーコード読取方法によれば、第2過程において最大幅を超えるバーが存在するか否かの判定は最初白バーについて行い、白バーが存在しなければ次に黒バーについて同様の判定を行う。即ち、バーコードはその両端に黒バーが位置するものが一般的であるため、その黒バーの外側に位置するマージンは白バーとなる。従って、最初に白バーについて判定を行えば殆どのバーコードに対応することになるので、判定をより迅速に行うことができる。
【0006】
請求項3記載のバーコード読取方法によれば、エリアセンサを用いてバーコードの読取りを2次元的に行う場合、第2過程で明暗パターン列の少なくとも一端から外方にバー高さ方向の異なる位置に複数の検査線を設定する。そして、複数の検査線上の夫々につき最大幅を超えるバーが存在するかを判定する。従って、読取りが、バーコードが印刷されている平面に対して傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、前記バーの存否をより確実に判定することができる。
【0007】
請求項4記載のバーコード読取方法によれば、複数の検査線を3本以上設定し、これらの検査線について最大幅を超えるバーが存在するかを多数決原理で決定するので、前記バーの存否を妥当に判定することができる。
請求項5記載のバーコード読取方法によれば、複数の検査線の全てについて最大幅を超えるバーが存在する場合にのみそのバーの存在を確定するので、前記バーの存否を一層確実に判定することができる。
【0008】
請求項6記載のバーコード読取方法によれば、第2過程において、両端に位置するバーの配置が不平行である場合に複数の検査線を設定する。即ち、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定されるので、読取りをより迅速に行うことができる。
【0009】
請求項7記載のバーコード読取方法によれば、検査線上で検出されたバーの高さを測定して当該バーの高さを読取り済みバーコードのバーの高さと比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定する。即ちバーコードがラベルの枠内に、規定されたマージンが確保されていない状態で印刷されているような場合は、ラベルの枠部分をバーとして認識するおそれがある。その場合に、請求項7の方法を適用すれば、バーコードの一部であるバーとラベルの枠とを確実に判別することができる。
【0010】
請求項8記載のバーコード読取方法によれば、第2バーコードが第1バーコードの一部と一致するパターンを予め記憶しておくようにする。そして、第1過程における読取りが正常終了すると、明暗パターン列が予め記憶したパターンの1つに一致するかを照合し、一致した場合に第2過程を実施する。即ち、予め記憶させたパターンは2種類のバーコードを読み間違える可能性があるものだから、そのパターンに一致する場合だけ第2過程を実施すれば、読取りをより効率的に行うことができる。
【0011】
請求項9記載のバーコード読取方法によれば、第1バーコードをPOSコードの内の何れか1種類とし、第2バーコードはRSS_Limitedとする。ここで、「POSコード」とは、UPC−A,UPC−E,EAN−13,EAN−8の総称である。これらの間では、実際にその一部のパターンがRSS_Limitedに一致するものが存在するので、本発明を有効に適用することができる。
【0012】
請求項10記載のバーコード読取方法によれば、POSコードの内の少なくとも何れか1種類と、RSS_Limitedとの読取りが何れも許可されるように設定されている場合に第2過程を実施する。即ち、実際にこれらのバーコードが混在する状態で読取りが行われることを前提とする場合にだけ本発明を適用するので、読取り効率を向上させることができる。
【0013】
請求項11記載のバーコード読取方法によれば、第2過程において明暗パターン列が第1バーコードの一部と仮定した場合の最小単位(モジュール)幅を検出し、最大幅を4モジュール幅として決定する。即ち、POSコードを構成する最大のバーは4モジュールであるから、読取り対象に応じて最大幅を適切に設定することができる。
【0014】
請求項12記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、明暗パターン列の両端の少なくとも一方に第1バーコードのキャラクタパターン,スタート又はストップパターンが存在すれば読取り失敗と判定する。即ち、読取ったバーコードの少なくとも一方の端に、第1バーコードのパターンが存在すれば、その明暗パターンは第1バーコードである可能性がある。従って、その場合に読取り失敗と判定することで読取り誤りを防止することができる。
【0015】
請求項13記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、明暗パターン列の両端の少なくとも一方に第1バーコードのキャラクタパターンが存在すれば読取り失敗と判定する。即ち、読取り視野のぎりぎりで読取ったバーコードがマージンの設定がない第2バーコードであれば、実際はその外側に読み取れなかったバーが存在する可能性がある。従って、その場合に読取り失敗と判定することで読取り誤りを防止することができる。
【0016】
請求項14記載のバーコード読取方法によれば、読取ったバーコードを2値化処理して得られた明暗パターン列について第2規格の読取りアルゴリズムを適用して読み取りを行い、その読取りが正常終了した場合でも、そのバーコードの両端と読取り視野の両端との間に所定の距離がない場合は当該バーコードの読取りを失敗と判定する。
即ち、バーコードが読取り視野のぎりぎり収まっている場合には、請求項12で述べた場合と同様の状態が想定される。また、読取ったバーコードが実際に第2バーコードであることも想定されるが、視野の両端はどうしても読取り用照明の照度が低くなりがちであり、正確な2値化ができないおそれがある。従って、斯様な場合に読取りを失敗と判定することで、読取り誤りを防止することができる。
【0017】
請求項15記載のバーコード読取方法によれば、エリアセンサを用いてバーコードの読取りを2次元的に行う場合、第2過程で明暗パターン列の少なくとも一端から外方にバー高さ方向の異なる位置に複数の検査線を設定する。そして、複数の検査線上の夫々につきマージンが確保されているかを判定する。従って、読取りが、バーコードが印刷されている平面に対して傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、マージンが存在するか否かを確実に判定することができる。
【0018】
請求項16記載のバーコード読取方法によれば、複数の検査線を3本以上設定し、これらの検査線についてマージンが確保されているかを多数決原理で決定するので、マージンの存否を妥当に判定することができる。
請求項17記載のバーコード読取方法によれば、複数の検査線の全てについてマージンが確保されている場合にのみマージンの存在を確定するので、マージンの存否を一層確実に判定することができる。
【0019】
請求項18記載のバーコード読取方法によれば、第2過程において、両端に位置するバーの配置が不平行である場合に複数の検査線を設定する。即ち、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定されるので、読取りをより迅速に行うことができる。
【0020】
請求項19記載のバーコード読取方法によれば、検査線上で検出されたバーの高さを測定して当該バーの高さを読取り済みバーコードのバーの高さと比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定する。即ちバーコードがラベルの枠内に、規定されたマージンが確保されていない状態で印刷されているような場合は、ラベルの枠部分をバーとして認識するおそれがある。その場合に、請求項18の方法を適用すれば、バーコードの一部であるバーとラベルの枠とを確実に判別することができる。
【0021】
請求項21記載のバーコード読取装置によれば、請求項1乃至19の何れかに記載のバーコード読取方法を実行可能に構成されている場合に、夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能に構成される。従って、例えば、マージンが規定されていないバーコードだけを読取るような場合には、不要な判定処理を行うことなく読み取りを迅速に行うことができる。
【発明を実施するための最良の形態】
【0022】
(第1実施例)
以下、本発明の第1実施例について図1乃至図3を参照して説明する。図3は、バーコード読取装置の電気的構成を概略的に示している。このバーコード読取装置1は、読取対象Aに印字されたバーコードを光学的に読取るためのもので、電源回路2,制御回路(コンピュータ)3,メモリ4,操作部5,照明駆動回路6,照射部7,結像手段8,センサ駆動回路9,光学的センサ10,クロック制御回路11,波形整形部12および外部インタフェイス部13を備えている。
電源回路2は、例えばAC/DC変換器により構成されるもので、外部から供給された交流電源を直流に変換し読取装置1の全構成に直流電源供給するようになっている。尚、電源回路2は必要に応じて設ければ良く、例えばハンディタイプのバーコード読取装置の場合には、内蔵している電池を電源として駆動される構成でも良い。
【0023】
制御回路3は、例えばマイクロコンピュータにより構成されており、制御用プログラムに基づいて読取装置1の全体を制御するようになっているが詳細は後述する。操作部5は、例えばトリガーキーや数字キー等の各種操作設定用キーが設けられて構成されており、ユーザ等によりトリガーキーが操作されると、制御回路3の制御に基づいて読取装置1が処理動作を開始する。照明駆動回路6は、制御回路3の制御に基づいて照射部7に駆動信号を与える。また、メモリ4には、制御回路3の制御プログラム(コンピュータプログラム)14が記憶されている。照射部7は、例えばLED等により構成されており、照明駆動回路6から駆動信号が与えられると読取対象Aに光を照射する。
【0024】
結像手段8は、例えばレンズにより構成されており、照射部7から読取対象Aに照射され反射した光を結像し光学的センサ10に与える。光学的センサ10は例えばエリアセンサとも称されており、例えばCCD等の受光素子が二次元平面状に配列され、対応する受光素子やその範囲(取込対象エリア)を設定することで全画素信号を独立に取込むことができるように構成されているもので、読取対象Aに反射した反射光を光電変換する。この光学的センサ10で露光するための露光時間は、制御回路3により設定可能に構成されている。
【0025】
制御回路3がセンサ駆動回路9を介して光学的センサ10を駆動制御すると、光学的センサ10は取込モードに基づいて光電変換した信号を波形整形部12に与えるようになっている。センサ駆動回路9は、光学的センサ10の受光素子から画素信号を出力させるためのクロックを光学的センサ10に与える。波形整形部12は、光学的センサ10により光電変換された信号を増幅し輝度レベルの信号を制御回路3に与えるようになっている。波形整形部12の増幅率は、制御回路3により設定可能に構成されている。外部インタフェイス部13は、制御回路3と外部装置(図示せず)との間でデータを入出力可能にしている。
【0026】
次に、本実施例の作用について図1及び図2も参照して説明する。図1は、制御回路3が制御プログラム14を実行した場合の処理内容を示すフローチャートであり、本発明の要旨に係る部分のみを示すものである。尚、ステップA1〜A14までの処理は、一般的な構成のバーコード読取装置と変わるところはない。
制御回路3は、先ず、ユーザにより読取り対象として指定された複数種類のバーコードから、読取り可能な最小バー本数Xを設定する(ステップA1)。それから、光学的センサ10により光学的に読取られ、波形整形部12を介して与えられるバーコードの輝度レベル信号を二値化、即ち明暗パターン化してからコード領域を切り出す。続いて、明暗パターンよりバーの本数nとバーを検出する(ステップA2,A3)。
【0027】
次に、制御回路3は、バー本数nと最小バー本数Xとを比較し、n≧Xの場合は(ステップA4,「YES」)、バー本数nに応じてデコード対象とするバーコードを決定する(ステップA5)。そして、明暗パターンの最初の白バー(通常はマージン領域に相当)とその次(内側)に位置する黒バーとの間、又は最初のキャラクタパターンより、バーコードの種類に応じてマージンチェックを行う(ステップA6)。また、ステップA4においてバー本数nが最小バー本数X未満であれば(「NO」)、その時点で読取りは失敗、「NG」と判定される(ステップA14)。
【0028】
ステップA6において、規定されているマージンが存在すれば(「OK」)、明暗パターン列にバーコードの種類に応じた読取りアルゴリズムを適用してデコードを行う(ステップA7,第1過程)。一方、規定されているマージンが存在しない場合は(「NG」)、パターン列両端のバーを1本ずつ減らして(n=n−2,ステップA10)ステップA4に戻り、再度最小バー本数Xとの比較を行う。ステップA7におけるデコード結果が問題なく「OK」であれば(ステップA8,「YES」)、パターン列最後の黒バー又はキャラクタパターンを基準としてマージンチェックを行う(ステップA9)。
【0029】
また、ステップA7におけるデコードが失敗し「NG」であれば(ステップA8,「NO」)、ステップA7でデコード対象として評価したバーの本数mをバー本数nより減じ(n=n−m,ステップA11)、ステップA4に戻り、再度最小バー本数Xとの比較を行う。ステップA9におけるマージンチェックが「OK」であれば、読取りは成功「OK」となり(ステップA13)、マージンチェックが「NG」である場合はステップA11に移行する。
【0030】
以下のステップA15〜A17における処理内容が、本発明の特徴的な部分である。即ち、ステップA13において一旦読み取りが「OK」となった場合、制御回路3は、そのバーコードがRSS_Limited(第2バーコード)であるか否かを判定し(ステップA15,第2過程)、RSS_Limitedでなければ(「NO」)そのまま処理を終了する。一方、バーコードがRSS_Limitedである場合は(「YES」)、ステップA7におけるデコード結果より、バーの最小単位幅であるモジュールを検出する(ステップA16)。そして、そのバーコードパターン両端外側の少なくとも一方に、5モジュール以上の白バーが存在するか否かを判定する(ステップA17)。
【0031】
ここで、図2を参照する。図2は、RSS_Limitedのバーコードパターンの一例と、POSコードの1種であるUPC−Aのバーコードパターンの一例であり、前者のパターンが後者のパターンの一部と一致するものを上下に配列して示している。RSS_Limitedは、コードサイズがUPC−Aよりも小さく(即ち、バーの構成本数がより少なく)、また、マージンを設けることが規定されていない仕様である。そのため、UPC−A/EAN−13のパターンを読もうとした場合に、読取り状態によってはRSS_Limitedと間違って読んでしまう可能性がある。
【0032】
そこで、ステップA17では、バーコードの少なくとも一方に5モジュール以上のマージンが存在する場合に、RSS_Limitedとしての読取り結果を「OK」とするようにしている。即ち、UPC−A/EAN−13を構成するバーは1〜4モジュールであるから、幅が5モジュール以上のバーはUPC−A/EAN−13の一部を構成するものではない。従って、RSS_Limited少なくとも一方に上記白バーが存在すれば、そのバーコードをRSS_Limitedとして読取ることに問題がないと確定することができる。
一方、ステップA17において1〜4モジュール幅のバーが存在する場合は(「NO」)、デコードしたコードパターンはUPC−A/EAN−13の一部である可能性がある。従って、その場合はステップA14に移行して読取りを「NG」として処理する。
【0033】
以上のように本実施例によれば、バーコード読取装置1の制御回路3は、RSS_Limitedのデコードが正常に終了した場合は、そのコードパターンがPOSコードの一部であると仮定した場合に存在し得るバーの最大幅(4モジュール)に対し、明暗パターン列の両端側の少なくとも一方に、5モジュール以上の白バーが存在するかどうかを判定する。そして、前記白バーが存在すれば、読取ったバーコードをRSS_Limitedとして確定するので、実際にそのコードパターンが部分的に一致するPOSコードとの誤読を防止することができる。
【0034】
(第2実施例)
図4及び図5は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。尚、バーコード読取装置1の構成は基本的に第1実施例と同様であり、制御回路3によるソフトウエア的な読取り処理が異なっている。
図4は図1相当図であるが、制御回路3は、ステップA15において「YES」と判断すると、RSS_Limitedのコードパターン両端部の少なくとも一方に、UPC−A/EAN−13のキャラクタコードが存在するか否かを判定する(ステップA18)。そして、前記キャラクタコードが存在しなければ(「NO」)読取ったコードパターンをRSS_Limitedとして確定し、そのまま処理を終了するが、前記キャラクタコードが存在すると(「YES」)読取りを「NG」とする(ステップA14)。
【0035】
即ち、図5に示すように、本来はUPC−A/EAN−13であるにもかかわらず、そのバーコードの全体が読取装置1の読取り視野に収まらず、一部のコードパターンを読取った結果がRSS_Limitedのコードパターンに一致する場合がある。斯様な場合において、読取ったコードパターン両端部の少なくとも一方にUPC−A/EAN−13のキャラクタコードが存在したとすれば、前記コードパターンはUPC−A/EAN−13の可能性があると推定できる。従って、その場合に読取りを「NG」とすることで、読取り誤りを防止することができる。
【0036】
(第3実施例)
図6及び図7は本発明の第3実施例を示すものであり、第2実施例と異なる部分についてのみ説明する。第3実施例では、制御回路3は、ステップA17に替わるステップA19において、読取ったコードパターン両端と読取り視野の両端との間に所定の距離が存在するか否かを判定する。そして、所定の距離が存在すれば(「YES」)読取ったコードパターンをRSS_Limitedとして確定し、そのまま処理を終了するが、所定の距離なければ(「NO」)読取りを「NG」とする(ステップA14)。
【0037】
即ち、図7に示すように、第3実施例と同様に本来はUPC−A/EAN−13のコードパターンであるがその全体が読取装置1の読取り視野に収まらず、視野のぎりぎりで読取れた部分がRSS_Limitedのコードパターンに一致する場合がある。従って、その場合に読取りを「NG」とすることで、UPC−A/EAN−13の読取り誤りを防止することができる。
また、図7の状態とは異なり、実際にバーコードがRSS_Limitedであることも想定されるが、視野の両端はどうしても照射部7による照明の照度が低くなりがちであり、正確な2値化ができないことも想定される。従って、斯様な場合に読取りを失敗と判定することで、読取り誤りを防止することができる。
【0038】
(第4実施例)
図8乃至図11は本発明の第4実施例を示すものである。第4実施例は、バーコード読取装置1の制御回路3が、バーコードのマージンチェックを行う場合の処理に関するものである。尚、第4実施例のマージンチェックは、例えば、第1実施例におけるステップA6やステップA9において行うものである。先ず、読取ったバーコードのマージンチェックを行う場合の現状の問題について図9乃至図11を参照して説明する。
【0039】
2次元センサによってバーコードを読取る場合、上述したように、読取った画像の全体からバーコードが位置するエリアを抽出し、そのエリアに対して1本の走査線を引き、当該走査線に沿って読み取りを行う。この走査線上において、例えば図10に示すように鏡面反射により黒バーが飽和して白くなっていたり、或いは、ラベルの印刷が粗悪なため黒バーに擦れやボイドがあったりすると、その部分をマージン領域と間違えて処理してしまうことがある。その場合、バーコードの桁落ちや読み間違いが発生する。
また、360度全ての角度で読み取りが可能であり、バーコードが2次元的に傾いた状態で読取った場合には、図11に示すように走査線が途中からバーコードより外れてしまうことがある。このような事態を防止するには、走査線に最初に当たった黒バーが延びている方向を追跡し、当該黒バーが読取り基準の水平に対してなす角度を求め、当該黒バーに対する垂線を算出し、その垂線に沿って走査線を引き直し読み取りを行うようにしている。
【0040】
ところが、2次元センサでバーコードを読取る場合、バーコードが印刷されている平面に対して仰角、俯角が付いた状態で読み取りを行うと、図9に示すようにバーコードの画像が台形状に歪んでしまうことがある。このように、画像が歪んだ場合には、上記のように最初に当たった黒バーに対する垂線に沿って走査線を引き直しても、その走査線が途中からバーコードより外れてしまうおそれがある。
【0041】
そこで、第4実施例では、図8に示すフローチャートに従ってマージンチェックを行う。制御回路3は、先ず、走査線を設定する(ステップB0)。それから、読取ったバーコードの両端に位置する黒バーについて追跡を行い(ステップB1)、それら2本の黒バーが平行であるか否かを判断する(ステップB2)。両者が平行であれば(「YES」)、従来通りで問題なく、走査線に沿ってマージンチェックを行うことが可能である(ステップB3)。そして、バーコードの種類に応じたマージンが存在すれば(ステップB4,「YES」)処理は終了する。
【0042】
一方、ステップB2において、両端のバーコードが平行でなければ(「NO」)、走査線に沿ってバーコードの外形ABCDを求める(ステップB6,図9(b)参照)。次に、バーコードの種類に応じて規定されているマージンの量を外形ABCDから計算し、マージン領域ABA’B’,CDC’D’を求めて外形ABCDの両側に設定する(ステップB7)。
続いて、マージン領域ABA’B’,CDC’D’に対し、図9(c)に示すように、外形ABCDの両端から外方に向けて複数の検査線を設定すると(ステップB8)、それらの各検査線について規定されたマージンが確保されているか否かを判断する(ステップB9)。例えば、検査線を3本以上設定し、それらの内でマージンが確保されているものが多数を占めた場合は「OK」と判断し(「YES」)処理を終了する。マージンが確保されているものが少数であれば(「NO」)読取りは「NG」とする(ステップB5)。
【0043】
以上のように第4実施例によれば、エリアセンサである光学的センサ10によりバーコードの読取りを2次元的に行う場合、バーコードパターンの少なくとも一端において、バー高さ方向の異なる位置に複数の検査線を設定して、それら検査線上の夫々につきマージンが確保されているかを判定するようにした。従って、読取装置1による読取りが、バーコードが印刷されている平面に対し仰角または俯角が付くように傾いた状態で行われた結果、バーコードの画像が両端側で傾いてしまったような場合やバーコードの印字品質が良くない場合でも、マージンが存在するか否かを確実に判定することができる。
【0044】
また、複数の検査線を3本以上設定し、これらの検査線についてマージンが確保されているかを多数決原理で決定するので、マージンの存否を妥当に判定することができる。そして、両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行である場合に複数の検査線を設定し、両者が平行である場合は従来と同様にマージンチェックを行うようにした。従って、バーコードの読取りが傾いた状態で行われたものと推定される場合にだけ複数の検査線が設定することで、読取りをより迅速に行うことができる。
【0045】
(第5実施例)
図12及び図13は本発明の第5実施例を示すものである。例えば、表などのスペースが限られている所にバーコードを付す場合、ラベル15の枠線に対して、規定されたマージンを確保することなくバーコードを印刷するようなことがある(図13参照)。第5実施例は、斯様な場合にも対応して確実にマージンチェックを行うものである。
図12において、制御回路3は、バーコード両端外側の規定されたマージン領域中に検査線を設定し、黒バーが存在するか否かを判断する(ステップC1)。即ち、図13に示すような状態では、ラベル15の枠線自体を黒バーとして検出する場合がある。黒バーがなければ(「NO」)従来通りで問題はないので、ステップC5に移行して規定されたマージンがあるか否かを判断する。ステップC5で規定されたマージンがない場合は(「NO」)読取り「NG」とする(ステップC6)。
【0046】
一方、マージン領域中に、黒バーが存在した場合は(「YES」)、その黒バーを追跡して高さH2を検出する(ステップC2)。それから、検出した高さH2を、既に読取ったバーコードのバーの高さH1と比較する(ステップC3)。「H1<H2」であれば(「YES」)、ステップC1で検出した黒バーは、バーコードパターンを構成するバーではなくラベル15の枠線であると推定することができる。従って、ステップC1で検出した黒バーは無視して、当該黒バーが位置する部分はマージン領域の一部であると判別し(ステップC4)、ステップC5に移行する。また、ステップC3において、「H1≧H2」であれば(「NO」)、ステップC1で検出した黒バーはバーコードパターンを構成するバーの可能性があるので、当該黒バーをコードパターンに加えて再度デコードを行う(ステップC7)。
【0047】
以上のように第5実施例によれば、バーコードパターンの両端外側に検査線上で検出されたバーの高さH2を測定して当該バーの高さを読取り済みバーコードのバーの高さH1と比較し、両者の高さが異なる場合は検査線上で検出されたバーをマージンと判定するようにした。従って、バーコードがラベル15の枠内に規定されたマージンが確保されていない状態で印刷されているような場合でも、バーコードの一部であるバーとラベル15の枠線とを確実に判別することができる。
【0048】
(第6実施例)
図14は本発明の第6実施例を示すものであり、第1実施例と異なる部分について説明する。第6実施例では、第1実施例の図2で示したように、RSS_Limitedのコードパターンの内、UPC−A/EAN−13のコードパターンの一部に一致するものを全て、予めメモリ4に記憶させておく。そして、制御回路3は、ステップA15で「YES」と判断すると、メモリ4に記憶させたRSS_Limitedのコードパターンを検索する(ステップA20)。それから、ステップA7でデコードしたRSS_Limitedのコードパターンが、メモリ4に記憶させたパターンに一致するか否かを判断する(ステップA21)。
【0049】
ステップA21において、一致するパターンが存在しなければ(「NO」)、その時点で、デコードしたRSS_LimitedがUPC−A/EAN−13のコードパターンの一部でないことが確定するので処理を終了する。一方、一致するパターンが存在すれば(「YES」)ステップA16に移行して第1実施例と同様に処理を行なう。
以上のように第6実施例によれば、RSS_LimitedがUPC−A/EAN−13のコードパターンの一部と一致するため両者を読み間違える可能性がある場合にだけ、第1実施例と同様の処理を行うので、読取りをより効率的に行うことができる。
【0050】
(第7実施例)
図15は本発明の第7実施例を示すものであり、第1実施例と異なる部分について説明する。第7実施例では、制御回路3は、ステップA13の実行後に、ユーザによってRSS_LimitedとPOSコードの少なくとも1種類とが双方とも読取り対象に設定されているか否かを判断する(ステップA22)。そして、双方とも読取り対象に設定されていれば(「YES」)ステップA15に移行し、双方とも読取り対象に設定されていない場合は(「NO」,この場合、何れか一方だけが対象の場合も含む)そのまま処理を終了する。
即ち、双方が読取り対象に設定されていない場合は、読み取り対象のバーコードは何れか一方のみであることが前提であるから、POSコードを誤ってRSS_Limitedと読取る可能性はない。従って、双方が読取り対象に設定されている場合にだけステップA15〜A17を実行することで読取り効率を向上させることができる。
【0051】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
第1乃至第3実施例で行うバーコードの読み取りは、ラインセンサによって1次元的に行っても良い。
第1バーコードを構成するバーの最大幅の決定は、ステップA3でバー幅を検出した段階で行っても良い。また、必ずしも実際に読取ったパターンに基づいて決定する必要はなく、読取り対象として想定されるバーコードの種類に応じてバーの最大幅を予めデータとして保持しておき、そのデータに基づいて決定しても良い。
第2実施例において、UPC−A/EAN−13のキャラクタコードが存在するかどうかに替えて、バーコードの両端が全て1〜4モジュールのバーで構成されている場合に、読み取りを「NG」としても良い。
また、第2実施例においてステップA15を削除し、「読み取りOK」となったバーコードがRSS_Limitedであるか否かに係らず、ステップA18で第1バーコードのキャラクタコードについて存否を判定するようにしても良い。そして、この時ステップA18では、第1バーコードのキャラクタコードのみならず、スタートパターン又はストップパターンが存在するか否かについても判定するようにしても良い。
【0052】
第4実施例において、複数の検査線の全てについてマージンが確保されている場合にのみマージンの存在を確定しても良く、この場合、マージンの存否を一層確実に判定することができる。
また、第4実施例において、ステップB2を省略し、両端のバーが平行であるか否かにかかわらず以降の処理を実施しても良い。
第4又は第5実施例のマージンチェック方法を、例えば第1実施例のステップA17に対して適用しても良い。
第2過程における最大幅を超えるバーは、黒バーを対象としても良い。
バーコード読取装置1を、夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能となるように構成しても良い。斯様に構成すれば、例えばRSS_Limitedのようにマージンが規定されていないバーコードだけを読取るような場合には、不要な判定処理を行うことなく読み取りを迅速に行うことができる。
第1,第2バーコードは、夫々POSコード,RSS_Limitedに限ることはなく、要は、第1バーコードの一部のコードパターンが、第2バーコードのコードパターンに一致又は類似するような関係にあるものに適用することができる。
【図面の簡単な説明】
【0053】
【図1】本発明の第1実施例であり、バーコード読取装置の制御回路が制御プログラムを実行した場合の処理内容を示すフローチャート
【図2】RSS_Limitedと、UPC−Aのバーコードパターンの一部とが一致するものを上下に配列して示す図
【図3】バーコード読取装置の電気的構成を概略的に示す機能ブロック図
【図4】本発明の第2実施例を示す図1相当図
【図5】読取り対象のバーコードと、バーコード読取装置の読取り視野との位置関係の一例を示す図
【図6】本発明の第3実施例を示す図1相当図
【図7】図5相当図
【図8】本発明の第4実施例であり、制御回路がマージンチェックを行う場合の処理内容を示すフローチャート
【図9】図8の処理内容を、読取ったバーコードパターンに即して説明する図
【図10】従来の走査線の設定状態を示す図(その1)
【図11】従来の走査線の設定状態を示す図(その2)
【図12】本発明の第5実施例を示す図1相当図
【図13】ラベルの枠に対して、規定されたマージンを確保せずバーコードを印刷した状態を示す図
【図14】本発明の第6実施例を示す図1相当図
【図15】本発明の第7実施例を示す図1相当図
【符号の説明】
【0054】
図面中、1はバーコード読取装置、3は制御回路(コンピュータ)、4はメモリ、10は光学的センサ(エリアセンサ)、14は制御プログラム(コンピュータプログラム)を示す。
【特許請求の範囲】
【請求項1】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程と、
前記読取りが正常終了した場合は、前記明暗パターン列に含まれているバーの幅に基づき、当該明暗パターン列が前記第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、前記明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する第2過程とからなり、
前記第2過程において前記バーが存在すると判定した場合は、前記明暗パターン列を前記第2バーコードの読取りデータとして確定することを特徴とするバーコード読取方法。
【請求項2】
前記第2過程において、前記最大幅を超えるバーが存在するか否かの判定は最初に白バーについて行い、前記白バーが存在しなかった場合は、次に黒バーについて同様の判定を行うことを特徴とする請求項1記載のバーコード読取方法。
【請求項3】
エリアセンサを用いてバーコードの読取りを2次元的に行う場合に、
前記第2過程において、前記明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定し、これら複数の検査線上の夫々について前記最大幅を超えるバーが存在するかどうかを判定することを特徴とする請求項1又は2記載のバーコード読取方法。
【請求項4】
前記複数の検査線を3本以上設定し、これらの検査線について前記最大幅を超えるバーが存在するか否かを、多数決原理に基づいて決定することを特徴とする請求項3記載のバーコード読取方法。
【請求項5】
前記複数の検査線の全てについて前記最大幅を超えるバーが存在する場合にのみ、前記バーの存在を確定することを特徴とする請求項3記載のバーコード読取方法。
【請求項6】
前記第2過程において、両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行であると判定すると、前記複数の検査線を設定することを特徴とする請求項3乃至5の何れかに記載のバーコード読取装置。
【請求項7】
前記検査線上において検出されたバーの高さを測定し、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較し、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定することを特徴とする請求項3乃至6の何れかに記載のバーコード読取方法。
【請求項8】
前記第2バーコードが前記第1バーコードの一部と一致するパターンを予め記憶しておき、
前記第1過程における読取りが正常終了した場合は、前記明暗パターン列が予め記憶した前記パターンの1つに一致するかを照合し、一致した場合は前記第2過程を実施することを特徴とする請求項1乃至7の何れかに記載のバーコード読取方法。
【請求項9】
前記第1バーコードは、POSコードの内の何れか1種類であり、
前記第2バーコードは、RSS_Limitedであることを特徴とする請求項1乃至8の何れかに記載のバーコード読取方法。
【請求項10】
前記POSコードの内の少なくとも何れか1種類と、前記RSS_Limitedとの読取りが何れも許可されるように設定されている場合に、前記第2過程を実施することを特徴とする請求項9記載のバーコード読取方法。
【請求項11】
前記第2過程において、バー幅の最小単位(モジュール)に対して、前記最大幅を4モジュール相当の幅に設定することを特徴とする請求項9又は10記載のバーコード読取方法。
【請求項12】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程と、
前記読取りが正常終了した場合は、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターン,スタート又はストップパターンが存在するかどうかを判定する第2過程とからなり、
前記第2過程において前記第1バーコードのパターンが存在すると判定した場合は、読み取り失敗と判定することを特徴とするバーコード読取方法。
【請求項13】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行い、
前記読取りが正常終了した場合において、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターンが存在する場合は、読取り失敗と判定することを特徴とするバーコード読取方法。
【請求項14】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行い、
前記読取りが正常終了した場合において、前記バーコードの両端と読取り視野の両端との間に所定の距離があるか否かを判断し、前記所定の距離がない場合は当該バーコードの読取りを失敗と判定することを特徴とするバーコード読取方法。
【請求項15】
エリアセンサを用いてバーコードの読取りを2次元的に行う場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定し、これら複数の検査線上の夫々について前記所定のマージンが確保されているか否かを判定することを特徴とするバーコード読取方法。
【請求項16】
前記複数の検査線を3本以上設定し、これらの検査線について前記所定のマージンが確保されているか否かを、多数決原理に基づいて決定することを特徴とする請求項15記載のバーコード読取方法。
【請求項17】
前記複数の検査線の全てについて前記所定のマージンが存在する場合にのみ、当該マージンの存在を確定することを特徴とする請求項15記載のバーコード読取方法。
【請求項18】
明暗パターン列の両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行であると判定すると、前記複数の検査線を設定することを特徴とする請求項15乃至17の何れかに記載のバーコード読取方法。
【請求項19】
前記検査線上において検出されたバーの高さを測定し、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較し、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定することを特徴とする請求項14乃至17の何れかに記載のバーコード読取方法。
【請求項20】
請求項1乃至19の何れかに記載のバーコード読取方法を実行可能に構成されていることを特徴とするバーコード読取装置。
【請求項21】
夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能に構成されていることを特徴とする請求項20記載のバーコード読取装置。
【請求項22】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程を実行させ、
前記読取りが正常終了した場合は、前記明暗パターン列に含まれているバーの幅に基づき、当該明暗パターン列が前記第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、前記明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する第2過程を実行させると共に、
前記第2過程において前記バーが存在すると判定した場合は、前記明暗パターン列を前記第2バーコードの読取りデータとして確定させることを特徴とするコンピュータプログラム。
【請求項23】
前記第2過程において、前記最大幅を超えるバーが存在するか否かの判定は最初に白バーについて行わせ、前記白バーが存在しなかった場合は、次に黒バーについて同様の判定を行わせることを特徴とする請求項22記載のコンピュータプログラム。
【請求項24】
バーコードの読取りが2次元的に行われる場合に、
前記第2過程において、前記明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定させ、これら複数の検査線上の夫々について前記最大幅を超えるバーが存在するかどうかを判定させることを特徴とする請求項22又は23記載のコンピュータプログラム。
【請求項25】
前記複数の検査線を3本以上設定させ、これらの検査線について前記最大幅を超えるバーが存在するか否かを、多数決原理に基づいて決定させることを特徴とする請求項24記載のコンピュータプログラム。
【請求項26】
前記複数の検査線の全てについて前記最大幅を超えるバーが存在する場合にのみ、前記バーの存在を確定させることを特徴とする請求項24記載のコンピュータプログラム。
【請求項27】
前記第2過程において、両端に位置するバーの配置が平行であるか否かを判定させ、両者が不平行であると判定した場合に、前記複数の検査線を設定させることを特徴とする請求項22乃至26の何れかに記載のコンピュータプログラム。
【請求項28】
前記検査線上において検出されたバーの高さを測定させ、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較させ、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定させることを特徴とする請求項22乃至27の何れかに記載のコンピュータプログラム。
【請求項29】
前記第2バーコードが前記第1バーコードの一部と一致するパターンが予め記憶されている場合に、
前記第1過程における読取りが正常終了した場合は、前記明暗パターン列が予め記憶した前記パターンの1つに一致するかを照合させ、一致した場合は前記第2過程を実施させることを特徴とする請求項22乃至28の何れかに記載のコンピュータプログラム。
【請求項30】
前記第1バーコードは、POSコードの内の何れか1種類であり、
前記第2バーコードは、RSS_Limitedであることを特徴とする請求項22乃至29の何れかに記載のコンピュータプログラム。
【請求項31】
前記POSコードの内の少なくとも何れか1種類と、前記RSS_Limitedとの読取りが何れも許可されるように設定されている場合に、前記第2過程を実施させることを特徴とする請求項30記載のコンピュータプログラム。
【請求項32】
前記第2過程において、バー幅の最小単位(モジュール)に対して、前記最大幅を4モジュール相当の幅に設定させることを特徴とする請求項30又は31記載のコンピュータプログラム。
【請求項33】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程を実行させ、
前記読取りが正常終了した場合は、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターン,スタート又はストップパターンが存在するかどうかを判定する第2過程を実行させると共に、
前記第2過程において前記第1バーコードのパターンが存在すると判定した場合は、読み取り失敗と判定させることを特徴とするコンピュータプログラム。
【請求項34】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行わせ、
前記読取りが正常終了した場合において、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターンが存在する場合は、読取り失敗と判定させることを特徴とするコンピュータプログラム。
【請求項35】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行わせ、
前記読取りが正常終了した場合において、前記バーコードの両端と読取り視野の両端との間に所定の距離があるか否かを判断させ、前記所定の距離がない場合は当該バーコードの読取りを失敗と判定させることを特徴とするコンピュータプログラム。
【請求項36】
光学的方式により2次元的に読み取られたバーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
読取ったバーコードを2値化処理して得られた明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定させ、これら複数の検査線上の夫々について前記所定のマージンが確保されているか否かを判定させることを特徴とするコンピュータプログラム。
【請求項37】
前記複数の検査線を3本以上設定させ、これらの検査線について前記所定のマージンが確保されているか否かを、多数決原理に基づいて決定させることを特徴とする請求項36記載のコンピュータプログラム。
【請求項38】
前記複数の検査線の全てについて前記所定のマージンが存在する場合にのみ、当該マージンの存在を確定させることを特徴とする請求項36記載のコンピュータプログラム。
【請求項39】
明暗パターン列の両端に位置するバーの配置が平行であるか否かを判定させ、両者が不平行であると判定すると、前記複数の検査線を設定させることを特徴とする請求項36乃至38の何れかに記載のコンピュータプログラム。
【請求項40】
前記検査線上において検出されたバーの高さを測定させ、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較させ、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定させることを特徴とする請求項36乃至39の何れかに記載のコンピュータプログラム。
【請求項1】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程と、
前記読取りが正常終了した場合は、前記明暗パターン列に含まれているバーの幅に基づき、当該明暗パターン列が前記第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、前記明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する第2過程とからなり、
前記第2過程において前記バーが存在すると判定した場合は、前記明暗パターン列を前記第2バーコードの読取りデータとして確定することを特徴とするバーコード読取方法。
【請求項2】
前記第2過程において、前記最大幅を超えるバーが存在するか否かの判定は最初に白バーについて行い、前記白バーが存在しなかった場合は、次に黒バーについて同様の判定を行うことを特徴とする請求項1記載のバーコード読取方法。
【請求項3】
エリアセンサを用いてバーコードの読取りを2次元的に行う場合に、
前記第2過程において、前記明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定し、これら複数の検査線上の夫々について前記最大幅を超えるバーが存在するかどうかを判定することを特徴とする請求項1又は2記載のバーコード読取方法。
【請求項4】
前記複数の検査線を3本以上設定し、これらの検査線について前記最大幅を超えるバーが存在するか否かを、多数決原理に基づいて決定することを特徴とする請求項3記載のバーコード読取方法。
【請求項5】
前記複数の検査線の全てについて前記最大幅を超えるバーが存在する場合にのみ、前記バーの存在を確定することを特徴とする請求項3記載のバーコード読取方法。
【請求項6】
前記第2過程において、両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行であると判定すると、前記複数の検査線を設定することを特徴とする請求項3乃至5の何れかに記載のバーコード読取装置。
【請求項7】
前記検査線上において検出されたバーの高さを測定し、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較し、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定することを特徴とする請求項3乃至6の何れかに記載のバーコード読取方法。
【請求項8】
前記第2バーコードが前記第1バーコードの一部と一致するパターンを予め記憶しておき、
前記第1過程における読取りが正常終了した場合は、前記明暗パターン列が予め記憶した前記パターンの1つに一致するかを照合し、一致した場合は前記第2過程を実施することを特徴とする請求項1乃至7の何れかに記載のバーコード読取方法。
【請求項9】
前記第1バーコードは、POSコードの内の何れか1種類であり、
前記第2バーコードは、RSS_Limitedであることを特徴とする請求項1乃至8の何れかに記載のバーコード読取方法。
【請求項10】
前記POSコードの内の少なくとも何れか1種類と、前記RSS_Limitedとの読取りが何れも許可されるように設定されている場合に、前記第2過程を実施することを特徴とする請求項9記載のバーコード読取方法。
【請求項11】
前記第2過程において、バー幅の最小単位(モジュール)に対して、前記最大幅を4モジュール相当の幅に設定することを特徴とする請求項9又は10記載のバーコード読取方法。
【請求項12】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程と、
前記読取りが正常終了した場合は、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターン,スタート又はストップパターンが存在するかどうかを判定する第2過程とからなり、
前記第2過程において前記第1バーコードのパターンが存在すると判定した場合は、読み取り失敗と判定することを特徴とするバーコード読取方法。
【請求項13】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行い、
前記読取りが正常終了した場合において、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターンが存在する場合は、読取り失敗と判定することを特徴とするバーコード読取方法。
【請求項14】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取方法において、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行い、
前記読取りが正常終了した場合において、前記バーコードの両端と読取り視野の両端との間に所定の距離があるか否かを判断し、前記所定の距離がない場合は当該バーコードの読取りを失敗と判定することを特徴とするバーコード読取方法。
【請求項15】
エリアセンサを用いてバーコードの読取りを2次元的に行う場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定し、これら複数の検査線上の夫々について前記所定のマージンが確保されているか否かを判定することを特徴とするバーコード読取方法。
【請求項16】
前記複数の検査線を3本以上設定し、これらの検査線について前記所定のマージンが確保されているか否かを、多数決原理に基づいて決定することを特徴とする請求項15記載のバーコード読取方法。
【請求項17】
前記複数の検査線の全てについて前記所定のマージンが存在する場合にのみ、当該マージンの存在を確定することを特徴とする請求項15記載のバーコード読取方法。
【請求項18】
明暗パターン列の両端に位置するバーの配置が平行であるか否かを判定し、両者が不平行であると判定すると、前記複数の検査線を設定することを特徴とする請求項15乃至17の何れかに記載のバーコード読取方法。
【請求項19】
前記検査線上において検出されたバーの高さを測定し、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較し、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定することを特徴とする請求項14乃至17の何れかに記載のバーコード読取方法。
【請求項20】
請求項1乃至19の何れかに記載のバーコード読取方法を実行可能に構成されていることを特徴とするバーコード読取装置。
【請求項21】
夫々のバーコードにマージンが適切に設定されているか否かを判別する手段を、バーコードの種類毎に設定可能に構成されていることを特徴とする請求項20記載のバーコード読取装置。
【請求項22】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程を実行させ、
前記読取りが正常終了した場合は、前記明暗パターン列に含まれているバーの幅に基づき、当該明暗パターン列が前記第1バーコードの一部であると仮定した場合に存在し得る最大幅のバーについて、前記明暗パターン列の両端側の少なくとも一方に、前記最大幅を超えるバーが存在するかどうかを判定する第2過程を実行させると共に、
前記第2過程において前記バーが存在すると判定した場合は、前記明暗パターン列を前記第2バーコードの読取りデータとして確定させることを特徴とするコンピュータプログラム。
【請求項23】
前記第2過程において、前記最大幅を超えるバーが存在するか否かの判定は最初に白バーについて行わせ、前記白バーが存在しなかった場合は、次に黒バーについて同様の判定を行わせることを特徴とする請求項22記載のコンピュータプログラム。
【請求項24】
バーコードの読取りが2次元的に行われる場合に、
前記第2過程において、前記明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定させ、これら複数の検査線上の夫々について前記最大幅を超えるバーが存在するかどうかを判定させることを特徴とする請求項22又は23記載のコンピュータプログラム。
【請求項25】
前記複数の検査線を3本以上設定させ、これらの検査線について前記最大幅を超えるバーが存在するか否かを、多数決原理に基づいて決定させることを特徴とする請求項24記載のコンピュータプログラム。
【請求項26】
前記複数の検査線の全てについて前記最大幅を超えるバーが存在する場合にのみ、前記バーの存在を確定させることを特徴とする請求項24記載のコンピュータプログラム。
【請求項27】
前記第2過程において、両端に位置するバーの配置が平行であるか否かを判定させ、両者が不平行であると判定した場合に、前記複数の検査線を設定させることを特徴とする請求項22乃至26の何れかに記載のコンピュータプログラム。
【請求項28】
前記検査線上において検出されたバーの高さを測定させ、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較させ、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定させることを特徴とする請求項22乃至27の何れかに記載のコンピュータプログラム。
【請求項29】
前記第2バーコードが前記第1バーコードの一部と一致するパターンが予め記憶されている場合に、
前記第1過程における読取りが正常終了した場合は、前記明暗パターン列が予め記憶した前記パターンの1つに一致するかを照合させ、一致した場合は前記第2過程を実施させることを特徴とする請求項22乃至28の何れかに記載のコンピュータプログラム。
【請求項30】
前記第1バーコードは、POSコードの内の何れか1種類であり、
前記第2バーコードは、RSS_Limitedであることを特徴とする請求項22乃至29の何れかに記載のコンピュータプログラム。
【請求項31】
前記POSコードの内の少なくとも何れか1種類と、前記RSS_Limitedとの読取りが何れも許可されるように設定されている場合に、前記第2過程を実施させることを特徴とする請求項30記載のコンピュータプログラム。
【請求項32】
前記第2過程において、バー幅の最小単位(モジュール)に対して、前記最大幅を4モジュール相当の幅に設定させることを特徴とする請求項30又は31記載のコンピュータプログラム。
【請求項33】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されている第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行う第1過程を実行させ、
前記読取りが正常終了した場合は、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターン,スタート又はストップパターンが存在するかどうかを判定する第2過程を実行させると共に、
前記第2過程において前記第1バーコードのパターンが存在すると判定した場合は、読み取り失敗と判定させることを特徴とするコンピュータプログラム。
【請求項34】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行わせ、
前記読取りが正常終了した場合において、前記明暗パターン列の両端の少なくとも一方に前記第1バーコードのキャラクタパターンが存在する場合は、読取り失敗と判定させることを特徴とするコンピュータプログラム。
【請求項35】
複数種類の規格に基づいて作成されたバーコードを光学的に読み取り、当該バーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
前記複数種類の内、第1規格に基づく第1バーコードの一部のコードパターンが、前記第1規格よりもバーの構成本数が少なく設定されており、且つ両端にマージンの設定がない第2規格に基づく第2バーコードとして読取れる可能性がある場合に、
読取ったバーコードを2値化処理して得られた明暗パターン列について、前記第2規格の読取りアルゴリズムを適用して読み取りを行わせ、
前記読取りが正常終了した場合において、前記バーコードの両端と読取り視野の両端との間に所定の距離があるか否かを判断させ、前記所定の距離がない場合は当該バーコードの読取りを失敗と判定させることを特徴とするコンピュータプログラム。
【請求項36】
光学的方式により2次元的に読み取られたバーコードに記録されているデータをデコードするバーコード読取装置を制御するコンピュータによって実行されるプログラムにおいて、
読取ったバーコードを2値化処理して得られた明暗パターン列の少なくとも一端から外方に、バーの高さ方向における異なる位置に複数の検査線を設定させ、これら複数の検査線上の夫々について前記所定のマージンが確保されているか否かを判定させることを特徴とするコンピュータプログラム。
【請求項37】
前記複数の検査線を3本以上設定させ、これらの検査線について前記所定のマージンが確保されているか否かを、多数決原理に基づいて決定させることを特徴とする請求項36記載のコンピュータプログラム。
【請求項38】
前記複数の検査線の全てについて前記所定のマージンが存在する場合にのみ、当該マージンの存在を確定させることを特徴とする請求項36記載のコンピュータプログラム。
【請求項39】
明暗パターン列の両端に位置するバーの配置が平行であるか否かを判定させ、両者が不平行であると判定すると、前記複数の検査線を設定させることを特徴とする請求項36乃至38の何れかに記載のコンピュータプログラム。
【請求項40】
前記検査線上において検出されたバーの高さを測定させ、当該バーの高さを読取り済みのバーコードについてのバーの高さと比較させ、両者の高さが異なる場合は、前記検査線上において検出されたバーはマージンであると判定させることを特徴とする請求項36乃至39の何れかに記載のコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2006−227796(P2006−227796A)
【公開日】平成18年8月31日(2006.8.31)
【国際特許分類】
【出願番号】特願2005−39129(P2005−39129)
【出願日】平成17年2月16日(2005.2.16)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
【公開日】平成18年8月31日(2006.8.31)
【国際特許分類】
【出願日】平成17年2月16日(2005.2.16)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
[ Back to top ]