説明

コード読取装置及びプログラム

【課題】バーコードの誤読を防止する技術を提供すること。
【解決手段】スキャナ部16により出力された読取データをデコードするCPU11と、デコード時に使用される複数のデコードパラメータ毎に、デコードパラメータの点数を記憶するフラッシュメモリ17と、複数のデコードパラメータが組合された組合せ情報を記憶するフラッシュメモリ17と、複数のデコードパラメータの組合せを生成するCPU11と、生成された組合せに基づいて、デコードパラメータの点数を取得し、取得されたデコードパラメータ点数の合計を算出するCPU11と、生成された組合せに対応する組合せ情報を取得し、取得された組合せ情報と算出された合計とに基づいて、読取データをデコードするか否かを判断するための判断情報を算出するCPU11と、判断情報に基づいて、デコードを実行させるか否かを制御するCPU11と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はコード読取装置及びプログラムに関する
【背景技術】
【0002】
従来から、バーコード又は2次元コードを示すデータコードを読取るコード読取装置(以下、バーコードリーダという)が知られている。
【0003】
バーコードリーダにより読取られるバーコードは、黒バーと白スペースで構成され、それぞれの幅の組合せによって数値・文字が表現されている。印刷品質の良くないバーコード(以下、ダメージバーコード)は、これらの幅が規定値からかけ離れ、バーイメージの欠損、又は汚れ等によりゴミ(ノイズ)が含まれている。
【0004】
そこで、バーコードリーダにより読取られたバーコードの読取データに対し、黒バー又は白スペースの幅を変化させてデコードを行う技術や、幅を判定する基準を変化させてデコードを行う技術などが知られている。
また、バーコードリーダからバーコードまでの距離が離れている場合、バーコードが読取可能範囲内に含まれるように、光ビームの走査幅を広げる技術も知られている(例えば、特許文献1参照)。
【特許文献1】特開2005−63142号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記技術では、相反して誤読の発生する可能性も高くなってしまう。例えば、読取データの黒バー又は白スペースの幅を変化させた場合、読取データを変化させた状態でデコードを実行することとなり、バーコードを誤読する可能性も高くなってしまう。
【0006】
バーコードの誤読を防止するためには、照合やチェックデジット計算を行う技術が知られている。ここで、照合とは、バーコードを読取り、文字や数値に変換したデータと以前(前回)読取ったバーコードを文字や数値に変換したデータとを照合することをいう。チェックデジット計算とは、読取ったバーコードを文字や数値に変換したデータの正確性を保つために使用される計算方法である。
しかし、照合を行う場合、連続して誤読するようなバーコードに対しては、照合を行っても効果はない。また、チェックデジット計算についても、チェックデジットに対応していない規格のバーコードが存在することや、チェックデジット自体を誤読してしまい、チェックデジット計算がたまたま一致してしまう可能性もある。このため、バーコードの誤読を防止できないという問題があった。
【0007】
本発明の課題は、バーコードの誤読を防止する技術を提供することである。
【課題を解決するための手段】
【0008】
以上の課題を解決するため、請求項1に記載の発明のコード読取装置は、
バーコード又は2次元コードを示すデータコードを読取り、読取られた読取データを出力する読取手段と、
前記読取手段により出力された読取データをデコードするデコード手段と、
前記デコード手段によるデコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する信頼性情報記憶手段と、
前記複数のデコードパラメータが組合された組合せ情報を記憶する組合せ記憶手段と、
前記複数のデコードパラメータの組合せを生成する生成手段と、
前記生成手段により生成された組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記信頼性情報記憶手段から取得し、当該取得された信頼性情報の合計を算出する算出手段と、
前記生成手段により生成された組合せに対応する前記組合せ情報を前記組合せ記憶手段から取得し、当該取得された組合せ情報と前記算出手段により算出された合計とに基づいて、前記読取手段により読取られた読取データをデコードするか否かを判断するための判断情報を算出する判断情報算出手段と、
前記判断情報算出手段により算出された判断情報に基づいて、前記デコード手段にデコードを実行させるか否かを制御する第1のデコード制御手段と、
を備える。
【0009】
請求項2に記載の発明は、請求項1に記載のコード読取装置において、
前記第1のデコード制御手段は、
前記判断情報が予め決められた許容値を超える場合は、前記デコード手段にデコードを実行させず、前記判断情報が予め決められた許容値内の場合は、前記生成手段により生成された組合せに基づいて、前記デコード手段にデコードを実行させる。
【0010】
請求項3に記載の発明は、請求項1又は2に記載のコード読取装置において、
前記信頼性情報記憶手段は、
前記デコードパラメータ毎に、複数のパラメータ設定段階を設け、当該各パラメータ設定段階に対応して前記信頼性情報を記憶する。
【0011】
請求項4に記載の発明は、請求項1から3のいずれか一項に記載のコード読取装置において、
前記組合せ情報は、
前記複数のデコードパラメータの組合せ毎に設定された倍率情報を含み、
前記判断情報算出手段は、
前記倍率情報と前記合計とを積算して前記判断情報を算出する。
【0012】
請求項5に記載の発明は、請求項1から4のいずれか一項に記載のコード読取装置において、
前記判断情報算出手段により算出された前記判断情報が予め決められた許容値を超える場合、前記デコード手段によりデコードされたデコード結果を出力する出力手段と、
前記出力手段により出力されたデコード結果に基づいて、前記信頼性情報及び前記組合せ情報を調整する第1の調整手段と、
前記第1の調整手段により調整された信頼性情報を前記信頼性情報記憶手段に記憶させ、前記第1の調整手段により調整された組合せ情報を前記組合せ情報記憶手段に記憶させる第1の記憶制御手段と、
を備える。
【0013】
請求項6に記載の発明は、請求項1から4のいずれか一項に記載のコード読取装置において、
前記生成手段により生成された組合せに基づいて、前記デコード手段にデコードを実行させるか否かを制御する第2のデコード制御手段と、
前記第2のデコード制御手段により前記デコード手段のデコードが実行された場合、当該デコードされたデコード結果とデータコードが正当にデコードされたデコード結果とが一致するか否かを比較し、当該比較結果に基づいて、前記信頼性情報及び前記組合せ情報を調整する第2の調整手段と、
前記第2の調整手段により調整された信頼性情報を前記信頼性情報記憶手段に記憶させ、前記第2の調整手段により調整された組合せ情報を前記組合せ情報記憶手段に記憶させる第2の記憶制御手段と、
を備えた請求項1から4のいずれか一項に記載のコード読取装置。
【0014】
請求項7に記載の発明のプログラムは、
コンピュータを、
バーコード又は2次元コードを示すデータコードを読取り、読取られた読取データを出力する読取手段、
前記読取手段により出力された読取データをデコードするデコード手段、
前記デコード手段によるデコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する信頼性情報記憶手段、
前記複数のデコードパラメータが組合された組合せ情報を記憶する組合せ記憶手段、
前記複数のデコードパラメータの組合せを生成する生成手段、
前記生成手段により生成された組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記信頼性情報記憶手段から取得し、当該取得された信頼性情報の合計を算出する算出手段、
前記生成手段により生成された組合せに対応する前記組合せ情報を前記組合せ記憶手段から取得し、当該取得された組合せ情報と前記算出手段により算出された合計とに基づいて、前記読取手段により読取られた読取データをデコードするか否かを判断するための判断情報を算出する判断情報算出手段、
前記判断情報算出手段により算出された判断情報に基づいて、前記デコード手段にデコードを実行させるか否かを制御する第1のデコード制御手段、
として機能させる。
【発明の効果】
【0015】
本発明によれば、バーコードの誤読を防止する技術を提供することができる。
【発明を実施するための最良の形態】
【0016】
以下、添付図面を参照して本発明に係る実施の形態の一例を詳細に説明する。ただし、発明の範囲は、図示例に限定されない。
【0017】
(第1の実施の形態)
図1〜図14を参照して、本発明に係る第1の実施の形態を説明する。以下、データコードとしてバーコードを読取るコード読取装置(以下、バーコードリーダ)を用いて説明する。先ず、図1を参照して、バーコードリーダ1がバーコードAを読取る際の動作について説明する。バーコードAは、黒バーと白スペースで構成され、それぞれの幅の組合せによって数値・文字が表現されたデータコードである。バーコードリーダ1は、バーコードAに対して、レーザー光を照射し、当該照射したレーザー光の反射光を受光する。そして、受光した反射光に基づいて、バーコードAの読取データ(2値データ)を取得し、取得した読取データに対してデコードを行い、バーコードAで表現された数値・文字を取得する。
【0018】
次に、図2を参照して、バーコードリーダ1の内部構成を説明する。図2に示すように、バーコードリーダ1は、デコード手段、生成手段、算出手段、判断情報算出手段、第1のデコード手段としてのCPU(Central Processing Unit)11と、入力部12と、RAM13(Random Access Memory)と、表示部14と、ROM(Read Only Memory)15と、読取手段としてのスキャナ部16と、信頼性情報記憶手段、組合わせ記憶手段としてのフラッシュメモリ17と、を備え、各部はバス19を介して接続されている。また、各部は、電源部18からの電力供給を受けている。
【0019】
CPU11は、バーコードリーダ1の各部を中央制御する。CPU11は、ROM15に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをRAM13に展開し、RAM13に展開されたプログラムとの協働で、各種処理を実行する。
【0020】
CPU11は、ROM15に記憶された第1のプログラムとの協働により、複数のデコードパラメータの組合せを生成し、生成された組合せに基づいて、デコードパラメータ毎に対応する信頼性情報をパラメータ点数テーブル90が記憶されているフラッシュメモリ17から取得し、当該取得された信頼性情報の合計を算出し、生成された組合せに対応する組合せ情報を組合せ点数テーブル91が記憶されているフラッシュメモリ17から取得し、当該取得された組合せ情報と算出された信頼性情報の合計とに基づいて、スキャナ部16により読取られた読取データをデコードするか否かを判断するための判断情報を算出し、算出された判断情報に基づいて、読取データのデコードを制御する。
【0021】
デコードパラメータとは、スキャナ部16により読取られたバーコードの読取データのデコード時に使用するパラメータのことをいう。デコードパラメータは、後述するparam−1〜param−10に該当する。
デコードパラメータの組合せを生成するとは、デコードパラメータ毎に、デコードパラメータの設定段階数を設定し、各デコードパラメータで設定された設定段階数の中から規則にしたがって1つの段階を選択し、全デコードパラメータ(param−1〜param−10)で選択する段階数の組合せを生成することをいう。デコードパラメータの設定段階数とは、デコードパラメータの内容に応じて設けられた段階数のことをいう。デコードパラメータ設定段階数は、後述する「set1」等に該当する。デコードパラメータの組合せの生成は、例えば、param−1は「set−1」、param−2は「set−2」・・・param−10は「set−1」というように、各デコードパラメータで設定された設定段階数の中から1つの段階を選択し、全デコードパラメータ(param−1〜param−10)で選択する段階数の組合せを生成することにより実行される。
信頼性情報とは、デコードの信頼性を表す情報であり、後述するデコードパラメータの点数に該当する。信頼性情報の合計とは、デコードパラメータの点数の合計である。
組合せ情報とは、各デコードパラメータを組合せた情報であり、後述する組合せ点数テーブル91の組合せNo、各デコードパラメータの設定段階数の組合せ、及び点数倍率のことをいう。
生成された組合せに対応する組合せ情報を取得するとは、生成されたデコードパラメータの組合せと一致する組合せ情報を組合せ点数テーブル91から検索し、検索された組合せ情報を取得することをいう。具体的には、組合せ点数テーブル91を参照し、生成された組合せ(各デコードパラメータで選択された設定段階数の組合せ)に一致する各デコードパラメータの設定段階数の組合せを組合せ点数テーブル91から検索し、検索された組合せに対応する点数倍率を取得することをいう。
判断情報とは、スキャナ部16により読取られた読取データをデコードするか否かを判断するための情報であり、取得された点数倍率と算出されたデコードパラメータの点数の合計とを積算した情報のことをいう。判断情報は、後述する合計値に該当する。
【0022】
入力部12は、バーコード読取を指示するためのトリガキー、数字・文字入力キー、各種機能キー等の各種キーを含み、操作者から押下入力された各キーのキー入力信号をCPU11に出力する。また、入力部12は、表示部14と一体的にタッチパネルが構成されることとしてもよい。
【0023】
RAM13は、情報を一時的に格納する揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納する複数のワークエリアを有する。
【0024】
表示部14は、LCD(Liquid Crystal Display)、ELD(ElectroLuminescent Display)等で構成され、CPU11からの表示信号に従って各種表示を行う。
【0025】
ROM15は、各種プログラム、各種データが予め読み出し専用に記憶される記憶部である。ROM15は、後述する第1のプログラムを記憶する。
【0026】
スキャナ部16は、CPU11の制御信号に従い、バーコードを読取り、読取った読取データ(二値データ)をCPU11に出力する。
【0027】
フラッシュメモリ17は、各種データ等の情報が読み出し及び書き込み可能な記憶部である。フラッシュメモリ17は、後述するパラメータテーブル30、パラメータ点数テーブル90、組合せ点数テーブル91を記憶する。
【0028】
次に、図3を参照して、パラメータテーブル30について説明する。パラメータテーブル30は、デコードパラメータ毎に、設定段階数に応じたデコードパラメータの設定内容を定めたテーブルである。param−1〜param−10は、読取データのデコード時に使用する各デコードパラメータを示す。set−1〜set−8は、各デコードパラメータの設定段階数を示す。デコードパラメータの設定段階数に応じて、各デコードパラメータ(param−1〜param−10)が設定される。また、設定段階数は、設定段階数値が大きくなるほど、誤読の可能性が高くなることを示す。
【0029】
param−1(マージンチェックパラメータ)は、読取られた読取データ(バーコードを構成する黒バー及び白スペースの幅、及び左右のマージン幅の2値化されたデータ)の左右マージン幅について、どこまで小さくても読取りOKと判定するか、その最小値を倍率で表すデコードパラメータである。左右マージン幅が小さいバーコードを読取り可能とするためには、倍率も小さくする必要がある。例えば、「set−1」の場合、マージンチェックパラメータは「6倍」、「set−2」の場合、マージンチェックパラメータは「4倍」に設定される。
【0030】
param−2(キャラクタ間ギャップパラメータ)は、キャラクタ(数本の黒バー及び白スペースで構成されるグループ)間のギャップ(スペース)の大きさのチェックによる読取りOK(成功)かNG(失敗)の判定を有効又は無効に設定するデコードパラメータである。例えば、「set−1」の場合、キャラクタ間ギャップパラメータは「有効」に設定される。この場合、予め定められたキャラクタ間ギャップに基づいて、バーコードの読取データの読取りがOKかNGかについて判定される。例えば、読取られた読取データのキャラクタ間ギャップが予め定められたキャラクタ間ギャップよりも大きい場合、読取りはNGと判定される。
また、「set−2」の場合、キャラクタ間ギャップパラメータは「無効」に設定される。この場合、キャラクタ間ギャップに基づいて、読取りOKかNGかについての判定は実行されない。
【0031】
param−3(デリネータパラメータ)は、デリネータ及びガードバーを構成する黒バー幅と白スペース幅の比率のチェックによる読取りOKかNGの判定を有効又は無効に設定するデコードパラメータである。ここで、図4及び図5を参照して、デリネータについて説明する。図4(A)は、アドオンを示す図である。アドオンとは、EANコードなどの後ろに付加される2桁又は5桁の補足コードのことをいう。図4(A)は、5桁のアドオンを示している。図4(B)は、デリネータを示す図である。デリネータとは、図4(B)に示すように、アドオン内においてキャラクタとキャラクタとの間に存在する1本の白スペース、1本の黒バーにより構成されるバーのグループのことをいう。白スペースと黒バーの比率はほぼ1:1となる。チェックを行うときは、例えば、白スペースの大きさに対して、黒バーの大きさが±25%の範囲内なら読取りOK、範囲外なら読取りNGという判定を行う。図5(A)(B)は、ガードバーを示す図である。ガードバーとは、EANコード、JANコード、UPC−Aコード、UPC−Eにおいて、バーコードの左端と右端に存在するバーのグループのことをいう。コードの種類によりガードバーを構成するバーの本数が異なる。例えば、EANコード、JANコード、UPC−Aコードの場合、図5(A)に示すように、黒バー2本と白スペース1本により構成される。これらのバーの比率は、ほぼ1:1:1となる。また、UPC−Eコードの場合、図5(B)に示すように、左端のガードバーは、黒バー2本と白スペース1本により構成される。これらのバーの比率はほぼ1:1:1となる。また、右端のガードバーは、黒バー3本と白スペース2本により構成される。これらのバーの比率は、ほぼ1:1:1:1:1となる。チェックを行うときは、例えば、白スペースの大きさに対して、黒バーの大きさが±25%の範囲内なら読取りOK、範囲外なら読取りNGという判定を行う。
例えば、「set−1」の場合、デリネータパラメータは「有効」に設定される。この場合、アドオンの中に含まれているデリネータを構成する黒バー幅と白スペース幅の比率がチェックされ、読取りがOKかNGかについて判定される。さらに、この場合、ガードバーの左右の比率が予め定められた比率よりも大きいか否かが判別される。例えば、デリネータを構成する黒バーと白スペースについて、白スペース幅に対して黒バー幅が予め定められた許容比率の範囲を超える場合、読取りはNGと判定される。また、ガードバーの比率が予め定められた閾値よりも大きい場合、読取りはNGと判定される。
また、「set−2」の場合、デリネータパラメータは「無効」に設定される。この場合、デリネータ及びガードバーに基づいて、読取りがOKかNGかの判定は実行されない。
【0032】
param−4(閾値(倍率)パラメータ)は、黒バー及び白スペースの幅が太いか細いかを識別するための閾値を変化させるデコードパラメータである。例えば、「set―1」の場合、閾値(倍率)パラメータは、「黒×1.5 白×1.5」に設定される。この場合、黒バーの閾値(倍率)は、「1.5」、白スペースの閾値(倍率)は、「1.5」に設定される。
【0033】
param−5(閾値(基準位置)パラメータ)は、バーコード全体における黒バーと白スペースの幅の太り細り傾向を算出するために、黒バーの基準となる幅と白スペースの基準となる幅を取得する際に参照する基準位置を切り替えるためのデコードパラメータである。黒バーの基準幅と白スペースの基準幅を比較し、黒白の太り細り傾向を算出し、その傾向に基づいた補正を行ってデコードを行う。図6〜図8に各コードと基準位置との関係を示す。先ず、図6に各バーコードにおける基準位置を図示する。図6(A)は、EAN、JAN、UPC−Aコードの基準位置(レフトガードバー、センターバー)を示す図である。図6(B)は、UPC−Eコードの基準位置(レフトガードバー、ライトガードバー)を示す図である。図6(C)は、アドオンコードの基準位置(スタートパターン)を示す図である。次に、図7及び図8に、バーコード(解析コード)と基準位置との関係を示す。図7(A)は、閾値(基準位置)パラメータが「set−1」(LeftGB:(白+黒)/2 StartPattern)におけるバーコードと基準位置との関係を示している。図7(B)は、閾値(基準位置)パラメータが「set−2」(CenterGB StartPattern)におけるバーコードと基準位置との関係を示している。図7(C)は、閾値(基準位置)パラメータが「set−3」(LeftGB:(白+黒) StartPattern)におけるバーコードと基準位置との関係を示している。図8(A)は、閾値(基準位置)パラメータが「set−4」(LeftGB:(白+黒)/2 WPC部)におけるバーコードと基準位置との関係を示している。図8(B)は、閾値(基準位置)パラメータが「set−5」(CenterGB: WPC部)におけるバーコードと基準位置との関係を示している。図8(C)は、閾値(基準位置)パラメータが「set−6」(LeftGB:(白+黒):WPC部)におけるバーコードと基準位置との関係を示している。
例えば、「set−1」の場合、閾値(基準位置)パラメータは、「LeftGB:(白+黒)/2StartPattern」に設定される。この場合、EAN、JAN、UPC−A、UPC−Eコードの解析において、黒バー・白スペースの太り細り傾向を算出するため基準位置はレフトガードバーとなり、さらに光学的特性に対する補正を行って傾向の算出を行う。また、アドオンコードの解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はスタートパターンとなる。
また、「set−2」の場合、閾値(基準位置)パラメータは、「(CenterGB StartPattern)」に設定される。この場合、EAN、JAN、UPC−A,UPC−Eコードの解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はセンターバーとなる。また、アドオンコード解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はスタートパターンとなる。
【0034】
param−6(閾値(白黒)パラメータ)は、黒バーと白スペースとの2値化(または4値化)をまとめて行うか否かを設定するデコードパラメータである。例えば、「set−1」の場合、閾値(白黒)パラメータは、「白黒混合計算」に設定される。この場合、黒バーと白スペースとはまとめて2値化(又は4値化)が実行される。また、「set−2」の場合、閾値(白黒)パラメータは、「白黒分離計算」に設定される。この場合、黒バーと白スペースとは別々に2値化(又は4値化)が実行される。
【0035】
param−7(太り細り補正パラメータ)は、黒バー又は白スペースの幅を太くするか細くするか否かを設定するデコードパラメータである。例えば、「set−1」の場合、太り細り補正パラメータは「補正なし」に設定される。この場合、黒バー又は白スペースの太り細り補正は実行されない。また、「set−2」の場合、太り細り補正パラメータは「白太0.6module」に設定される。この場合、白スペースの幅が0.6モジュール補正される。モジュールとは、バーコード内の全ての黒バーと白スペースの中で、最も小さなバー、またはスペース幅の単位である。
【0036】
param−8(ノイズパラメータ)は、ノイズ除去を行う際に、ノイズとみなすバーの幅を設定するデコードパラメータである。例えば、「set−1」の場合、ノイズパラメータは「無効」に設定される。この場合、ノイズ除去は実行されない。また、「set−2」の場合、ノイズパラメータは「40Count」に設定される。この場合、ノイズ除去を行う際にノイズとみなすバーの幅は40カウントに設定される。カウントとは、クロックカウント数である。
【0037】
param−9(キャラクタ間差異パラメータ)は、連続するキャラクタ幅の差の判定を有効又は無効にするデコードパラメータである。例えば、「set−1」の場合、キャラクタ間差異パラメータは、「有効」に設定される。この場合、連続するキャラクタ幅の差分値に基づいて、読取りがOKかNGかについての判定が行われる。また、「set−2」の場合、キャラクタ間差異パラメータは「無効」に設定される。この場合、キャラクタ間幅の差分値に基づいて、読取りがOKかNGかの判定は実行されない。
【0038】
param−10(最大最小チェックパラメータ)は、キャラクタ内において、幅が最小である最小バーと幅が最大である最大バーとの比率の判定を有効又は無効にするデコードパラメータである。例えば、「set−1」の場合、最大最小チェックパラメータは「有効」に設定される。この場合、キャラクタ内において、最小バーと最大バーとの比率に基づいて、読取りがOKかNGかについての判定が行われる。また、「set−2」の場合、最大最小チェックパラメータは「無効」に設定される。この場合、最小バーと最大バーとの比率に基づいて、読取りがOKかNGかの判定は実行されない。
【0039】
次に図9を参照して、パラメータ点数テーブル90について説明する。パラメータ点数テーブル90の各数値は、各デコードパラメータ(param1〜param10)におけるパラメータ設定段階数に応じたパラメータの点数を示す。例えば、param1(マージンチェックパラメータ)の「set−1」におけるデコードパラメータの点数は「0」、「set−2」におけるデコードパラメータの点数は「2」、「set−3」におけるデコードパラメータの点数は「4」であることを示している。
【0040】
次に図10を参照して、組合せ点数テーブル91について説明する。
組合せ点数テーブル91は、組合せNo、各デコードパラメータ(「param−1」〜「param−10」)の設定段階数、「ratio」(点数倍率)により構成される。組合せNoは、各デコードパラメータの組合せの識別番号である。各デコードパラメータの設定段階数は、各デコードパラメータ「param−1」〜「param−10」で選択された1つの設定段階数である。例えば、組合せNo.1における各デコードパラメータの設定段階数は、「param−1」(マージンチェックパラメータ):「set2」、「param−2」(キャラクタ間ギャップパラメータ):「set2」、「param−3」(デリネータパラメータ):「set1」、「param−4」(閾値(倍率)パラメータ):「set1」、「param−5」(閾値(基準位置)パラメータ):「set1」、「param−6」(閾値(白黒)パラメータ):「set1」、「param−7」(太り細り補正パラメータ):「set1」、「param−8」(ノイズパラメータ):「set1」、「param−9」(キャラクタ間差異パラメータ):「set1」、「param−10」(最大最小パラメータ):「set1」となる。すなわち、組合せNo.1には、マージンチェックパラメータ「6倍」、キャラクタ間ギャップパラメータ「無効」、デリネータ「有効」、閾値(倍率)パラメータ「黒*1、5、白*1.5」、閾値(基準位置)パラメータ「LeftGB(白+黒)/2 StartPattern」、閾値(白黒)パラメータ「白黒混合計算」、太り細り補正パラメータ「補正なし」、ノイズパラメータ「無効」、キャラクタ間差異パラメータ「有効」、最大最小チェックパラメータ「有効」であり、これら各デコードパラメータが組み合わされることを示している。
「ratio」は、点数倍率を示す。点数倍率とは、デコードパラメータの組合せに応じて割り当てられた倍率値である。点数倍率の倍率値が高くなるほど、その組合せに対応する各デコードパラメータを使用してバーコードの読取りを行った時に誤読の可能性が高くなることを示している。
また、パラメータ点数テーブル90における各デコードパラメータの点数及び組合せ倍率テーブル91における点数倍率は、様々なダメージバーコードに対して、各デコードパラメータをカスタマイズさせながら読取評価を行い、誤読の発生傾向を調査した結果に基づき、予め設定された値であることを示している。
【0041】
次に、バーコードリーダ1の動作を説明する。
先ず、図11〜図14を参照して、バーコードリーダ1で実行される第1の処理を説明する。図11に示す第1の処理は、各デコードパラメータの設定段階に対応するデコードパラメータの点数を取得し、取得したデコードパラメータの点数の合計点数と点数倍率とを積算し、算出された積算値に基づいてデコードを実行するか否かを制御する処理である。
【0042】
例えば、入力部12を介して第1の処理の実行指示が入力されたことをトリガとして、ROM15から読み出されて適宜RAM13に展開された第1のプログラムとCPU11との協働で、図11に示す第1の処理が実行される。
【0043】
予め、RAM13の任意のワークエリア(作業領域)に、各デコードパラメータに対する設定段階数の上限値(パラメータテーブル30における各デコードパラメータの一番右端の設定段階数)が記憶されているものとする。具体的には、param−1(マージンチェックパラメータ)は、「set−3」、param−2(キャラクタ間ギャップパラメータ)は、「set−2」、・・・param−10(キャラクタ間ギャップパラメータ)は、「set−2」がRAM13の作業領域に記憶されているものとする。
【0044】
先ず、スキャナ部16を介して読取られた読取データが取得される(ステップS11)。そして、現在のデコードパラメータ(パラメータ)の組合せが初期化される(ステップS12)。初期化とは、現在のデコードパラメータの設定段階数を「set−1」に設定することをいう。このとき、初期化された設定段階数は、RAM13の任意の作業領域に記憶される。そして、ステップS11において初期化された現在のデコードパラメータ(パラメータ)の組合せを反映してデコードが実行される(ステップS13)。デコードとは、ステップS11において取得された読取データを文字や数値等のデータに変換することをいう。
【0045】
そして、デコード結果がOKか否かが判別される(ステップS14)。具体的には、ステップS13において実行されたデコード結果を解析し、なんらかの文字や数値への変換が完了したか否かに基づいて、デコード結果がOKか否かが判別される。デコード結果がOKと判別された場合(ステップS14;YES)、第1の処理は終了される。デコード結果がNGと判別された場合(ステップS14;NO)、パラメータカスタマイズ処理が実行される(ステップS15)。
【0046】
ここで、図12及び図13を参照して、パラメータカスタマイズ処理について説明する。先ず、第1の処理のステップS14の実行後、param−1(マージンチェックパラメータ)の設定段階数が+1される(ステップS151)。設定段階数が+1されると、ステップS12においてRAM13に記憶された設定段階数が更新記憶される。例えば、param−1(マージンチェックパラメータ)の設定段階数が「set−1」から「set−2」に更新記憶される。
【0047】
そして、param−1(マージンチェックパラメータ)の設定段階数がset−3を超えているか否かが判別される(ステップS152)。本ステップの判別は、予め、RAM13に記憶されている各デコードパラメータの設定段階数の上限値と、ステップS151においてRAM13に更新記憶された各デコードパラメータの設定段階数とが比較されることにより行われる。ステップS155、S157、S159、S161、S163、S165、S167、S169、S171においても同様の処理が行われる。例えば、本ステップにおいては、予めRAM13に記憶されているparam−1(マージンチェックパラメータ)の設定段階数の上限値(「set−3」)と、ステップS152においてRAM13に更新記憶された設定段階数「set−2」とが比較される。この場合、「set−2」は「set−3」を超えないので、判別結果は「NO」となり、以降の処理が行われる。そして、パラメータカスタマイズ処理が繰り返し実行され(例えば、後述するステップS19;NO又はステップS21;NOの場合は、パラメータカスタマイズ処理が繰り返し実行される)、param−1(マージンチェックパラメータ)の設定段階数が「set−4」となると、判別結果は「YES」となり、ステップS154に移行することとなる。
【0048】
param−1(マージンチェックパラメータ)の設定段階数がset−3を超えていないと判別された場合(ステップS152;NO)、パラメータカスタマイズは成功と設定される(ステップS153)。ステップS153の実行後、第1の処理のステップS16に移行される。param−1(マージンチェックパラメータ)の設定段階数がset−3を超えていると判別された場合(ステップS152;YES)、param−2(キャラクタ間ギャップパラメータ)の設定段階数が+1され、param−1(マージンチェックパラメータ)がset−1にセット(設定)される(ステップS154)。
【0049】
ステップS154の実行後、param−2(キャラクタ間ギャップパラメータ)の設定段階数がset−2を超えているか否かが判別される(ステップS155)。param−2(キャラクタ間ギャップパラメータ)の設定段階数がset−2を超えていないと判別された場合(ステップS155;NO)、ステップS153に移行される。param−2(キャラクタ間ギャップパラメータ)の設定段階数がset−2を超えていると判別された場合(ステップS155;YES)、param−3(デリネータパラメータ)の設定段階数が+1され、param−2(キャラクタ間ギャップパラメータ)がset−1に設定される(ステップS156)。
【0050】
ステップS156の実行後、param−3(デリネータパラメータ)の設定段階数がset−2を超えているか否かが判別される(ステップS157)。param−3(デリネータパラメータ)の設定段階数がset−2を超えていないと判別された場合(ステップS157;NO)、ステップS153に移行される。param−3(デリネータパラメータ)の設定段階数がset−2を超えていると判別された場合(ステップS157;YES)、param−4(閾値(倍率)パラメータ)の設定段階数が+1され、param−3(デリネータパラメータ)がset−1に設定される(ステップS158)。
【0051】
ステップS158の実行後、param−4(閾値(倍率)パラメータ)の設定段階数がset−8を超えているか否かが判別される(ステップS159)。param−4(閾値(倍率)パラメータ)の設定段階数がset−8を超えていないと判別された場合(ステップS159;NO)、ステップS153に移行される。param−4(閾値(倍率)パラメータ)の設定段階数がset−8を超えていると判別された場合(ステップS159;YES)、param−5(閾値(基準位置)パラメータ)の設定段階数が+1され、param−4(閾値(倍率)パラメータ)がset−1に設定される(ステップS160)。
【0052】
ステップS160の実行後、param−5(閾値(基準位置)パラメータ)の設定段階数がset−6を超えているか否かが判別される(ステップS161)。param−5(閾値(基準位置)パラメータ)の設定段階数がset−6を超えていないと判別された場合(ステップS161;NO)、ステップS153に移行される。param−5(閾値(基準位置)パラメータ)の設定段階数がset−6を超えていると判別された場合(ステップS161;YES)、param−6(閾値(白黒)パラメータ)の設定段階数が+1され、param−5(閾値(基準位置)パラメータ)がset−1に設定される(ステップS162)。
【0053】
ステップS162の実行後、param−6(閾値(白黒)パラメータ)の設定段階数がset−2を超えているか否かが判別される(ステップS163)。param−6(閾値(白黒)パラメータ)の設定段階数がset−2を超えていないと判別された場合(ステップS163;NO)、ステップS153に移行される。param−6(閾値(白黒)パラメータ)の設定段階数がset−2を超えていると判別された場合(ステップS163;YES)、param−7(太り細り補正パラメータ)の設定段階数が+1され、param−6(閾値(白黒)パラメータ)がset−1に設定される(ステップS164)。
【0054】
ステップS164の実行後、param−7(太り細り補正パラメータ)の設定段階数がset−5を超えているか否かが判別される(ステップS165)。param−7(太り細り補正パラメータ)の設定段階数がset−5を超えていないと判別された場合(ステップS165;NO)、ステップS153に移行される。param−7(太り細り補正パラメータ)の設定段階数がset−5を超えていると判別された場合(ステップS165;YES)、param−8(ノイズパラメータ)の設定段階数が+1され、param−7(太り細り補正パラメータ)がset−1に設定される(ステップS166)。
【0055】
ステップS166の実行後、param−8(ノイズパラメータ)の設定段階数がset−5を超えているか否かが判別される(ステップS167)。param−8(ノイズパラメータ)の設定段階数がset−5を超えていないと判別された場合(ステップS167;NO)、ステップS153に移行される。param−8(ノイズパラメータ)の設定段階数がset−5を超えていると判別された場合(ステップS167;YES)、param−9(キャラクタ間差異パラメータ)の設定段階数が+1され、param−8(ノイズパラメータ)がset−1に設定される(ステップS168)。
【0056】
ステップS168の実行後、param−9(キャラクタ間差異パラメータ)の設定段階数がset−2を超えているか否かが判別される(ステップS169)。param−9(キャラクタ間差異パラメータ)の設定段階数がset−2を超えていないと判別された場合(ステップS169;NO)、ステップS153に移行される。param−9(キャラクタ間差異パラメータ)の設定段階数がset−2を超えていると判別された場合(ステップS169;YES)、param−10(最大最小チェックパラメータ)の設定段階数が+1され、param−9(キャラクタ間差異パラメータ)がset−1に設定される(ステップS170)。
【0057】
ステップS170の実行後、param−10(最大最小チェックパラメータ)の設定段階数がset−2を超えているか否かが判別される(ステップS171)。param−10(最大最小チェックパラメータ)の設定段階数がset−2を超えていないと判別された場合(ステップS171;NO)、ステップS153に移行される。param−10(最大最小チェック)の設定段階数がset−2を超えていると判別された場合(ステップS171;YES)、パラメータカスタマイズが失敗したと判断される(ステップS172)。ステップS172の実行後、第1の処理のステップS16に移行される。
【0058】
そして、ステップS15で実行されたパラメータカスタマイズ処理の結果に基づいて、パラメータ組合せのカスタマイズが失敗したか否かが判別される(ステップS16)。パラメータ組合せのカスタマイズが失敗したと判別された場合(ステップS16;YES)、読取はNGであると判断される(ステップS17)。パラメータ組合せのカスタマイズが成功したと判別された場合(ステップS16;NO)、合計値算出処理が実行される(ステップS18)。
【0059】
次に、図14を参照して、合計値算出処理について説明する。
先ず、パラメータカスタマイズ処理において設定された各デコードパラメータの設定段階数がRAM13から取得される。そして、パラメータ点数テーブル90が検索され、param−1(マージンチェックパラメータ)の現在の設定段階数(設定数)に対応する点数が取得される(ステップS181)。そして、パラメータ点数テーブル90が検索され、param−2(キャラクタ間ギャップパラメータ)の現在の設定数に対応する点数が取得される(ステップS182)。そして、パラメータ点数テーブル90が検索され、param−3(デリネータパラメータ)の現在の設定数に対応する点数が取得される(ステップS183)。そして、パラメータ点数テーブル90が検索され、param−4(閾値(倍率)パラメータ)の現在の設定数に対応する点数が取得される(ステップS184)。そして、パラメータ点数テーブル90が検索され、param−5(閾値(基準位置)パラメータ)の現在の設定数に対応する点数が取得される(ステップS185)。そして、パラメータ点数テーブル90が検索され、param−6(閾値(白黒パラメータ)の現在の設定数に対応する点数が取得される(ステップS186)。そして、パラメータ点数テーブル90が検索され、param−7(太り細り補正パラメータ)の現在の設定数に対応する点数が取得される(ステップS187)。そして、パラメータ点数テーブル90が検索され、param−8(ノイズパラメータ)の現在の設定数に対応する点数が取得される(ステップS188)。そして、パラメータ点数テーブル90が検索され、param−9(キャラクタ間ギャップパラメータ)の現在の設定数に対応する点数が取得される(ステップS189)。そして、パラメータ点数テーブル90が検索され、param−10(最大最小チェックパラメータ)の現在の設定数に対応する点数が取得される(ステップS190)。
【0060】
ステップS190の実行後、ステップS181〜ステップS190において取得された点数が合計される(ステップS191)。そして、組合せ点数テーブル91が検索され、param−1〜param−10の各設定段階数の組合せに対応する点数倍率が取得される(ステップS192)。具体的には、設定された各デコードパラメータの設定段階数と一致する組合せNo.が組合せ点数テーブル91の中から検索され、検索された組合せNo.に対応する点数倍率が取得される。そして、ステップS191において合計された合計点数に対し、ステップS192において取得された点数倍率の積算が行われる(ステップS193)。ステップS193の実行後、図11に示す第1の処理のステップS19に移行される。
【0061】
そして、ステップS18の合計値算出処理により算出された合計値(合計点数と点数倍率との積算値)が許容値よりも小さいか否かが判別される(ステップS19)。ここで、許容値とは、カスタマイズパラメータの設定段階数でデコードを行うか否かを判別するための閾値であり、フラッシュメモリ17に予め記憶されている値である。例えば、許容値が10であり、合計値算出処理のステップS192において、組合せ点数テーブル91の組合せNo.2が検索されたとする。この場合、param−1(マージンチェックパラメータ)は「set−2」(点数2)、param−2(キャラクタ間ギャップパラメータ)は「set−1」(点数0)、param−3(デリネータパラメータ)は、「set−2」(点数2)、param−4(閾値(倍率)パラメータ)は、「set−1」(点数0)、param−5(閾値(基準位置)パラメータ)は、「set−1」(点数0)、param−6(閾値(白黒)パラメータ)は、「set−1」(点数0)、param−7(太り細り補正パラメータ)は、「set−1」(点数0)、param−8(ノイズパラメータ)は、「set−1」(点数0)、param−9(キャラクタ間差異パラメータ)は、「set−1」(点数0)、param−10(最大最小チェックパラメータ)は、「set−1」(点数0)となる。したがって、合計点数は、「4」となる。また、組合せNo.2における点数倍率は、1.0であるので、合計値=4×1.0=4となる。この場合、許容値「10」よりも合計値「4」は、小さい値であるので、信頼できるデコードパラメータの組合せと判断され、デコード可能と判断される。
【0062】
また、例えば、合計値算出処理のステップS192において、組合せ点数テーブル91の組合せNo.26が検索されたとする。この場合、param−1(マージンチェックパラメータ)は「set−3」(点数4)、param−2(キャラクタ間ギャップパラメータ)は「set−2」(点数3)、param−3(デリネータパラメータ)は、「set−1」(点数0)、param−4(閾値(倍率)パラメータ)は、「set−1」(点数0)、param−5(閾値(基準位置)パラメータ)は、「set−1」(点数0)、param−6(閾値(白黒)パラメータ)は、「set−1」(点数0)、param−7(太り細り補正パラメータ)は、「set−1」(点数0)、param−8(ノイズパラメータ)は、「set−1」(点数0)、param−9(キャラクタ間差異パラメータ)は、「set−1」(点数0)、param−10(最大最小チェックパラメータ)は、「set−1」(点数0)となる。したがって、合計点数は、「7」となる。また、組合せNo.26における点数倍率は、2.0であるので、合計値=7×2.0=14となる。この場合、許容値「10」よりも合計値「14」は、大きい値であるので、誤読のリスクが高いデコードパラメータの組合せと判断され、デコード不可と判断される。
【0063】
ステップS19の実行後、カスタマイズされたパラメータを反映してデコードが実行される(ステップS20)。具体的には、各デコードパラメータで選択された設定段階数に対応する設定内容に応じてデコードが実行される。例えば、各デコードパラメータの組合せが組合せ点数テーブル91における組合せNo.2に該当したとする。この場合、param−1(マージンチェックパラメータ)の設定内容は「set−2」より「4倍」、param−2(キャラクタ間ギャップパラメータ)の設定内容は「set−1」より「無効」、param−3(デリネータパラメータ)の設定内容は、「set−2」より「無効」、param−4(閾値(倍率)パラメータ)の設定内容は、「set−1」より「黒*1.5 白*1.5」、param−5(閾値(基準位置)パラメータ)の設定内容は、「set−1」より「LeftGB:(白+黒)/2」、param−6(閾値(白黒)パラメータ)の設定内容は、「set−1」より「白黒混合計算」、param−7(太り細り補正パラメータ)の設定内容は、「set−1」より「補正なし」、param−8(ノイズパラメータ)の設定内容は、「set−1」より「無効」、param−9(キャラクタ間差異パラメータ)の設定内容は、「set−1」より「有効」、param−10(最大最小チェックパラメータ)の設定内容は、「set−1」より「有効」となる。この各デコードパラメータの設定内容で本ステップのデコードが実行される。
【0064】
そして、デコード結果がOKか否かが判別される(ステップS21)。具体的には、ステップS20において実行されたデコードが完了したか否か(すなわち、なんらかの文字や数値への変換が完了したか否か)に基づいて、デコード結果がOKか否かが判別される。デコード結果がOKでないと判別された場合(ステップS21;NO)、ステップS15に移行される。デコード結果がOKであると判別された場合(ステップS21;YES)、読取OKであると判断される(ステップS22)。ステップS22の実行後、第1の処理は終了される。
【0065】
以上、本実施の形態によれば、デコードパラメータの合計点数と点数倍率との積算値に基づいて、スキャナ部16により読取データのデコードを実行する。これにより、例えば、印刷品質が悪いバーコードであっても、デコードパラメータの合計点数と点数倍率との積算値に基づいて読取データのデコードが実行されるので、デコードの信頼性を向上させることができ、バーコードの誤読を防止することができる。また、バーコードの誤読を防止することができるので、より多くのバーコードの読取りを行うことが可能となる。
【0066】
また、デコードパラメータの合計点数と点数倍率との積算値が許容値を超える場合は、デコードを実行せず、デコードパラメータの合計点数と点数倍率との積算値が予め決められた許容値内の場合は、生成された組合せに基づいてデコードを実行する。これにより、デコードの信頼性の低いバーコード(すなわち、誤読の可能性の高いバーコード)のデコードは実行されないので、デコードの信頼性を向上させることができ、バーコードの誤読を防止することができる。
【0067】
また、各デコードパラメータ設定段階に対応してデコードパラメータの点数をフラッシュメモリ17に記憶する。これにより、設定段階に応じて、各デコードパラメータの点数を設定しているので、各デコードパラメータに応じたデコードの信頼性を合計値(合計点数と点数倍率との積算値)に反映することができる。その結果、デコードの信頼性を保持しつつ、デコードパラメータをカスタマイズする(デコードパラメータを組合せる)自由度を向上させることができる。
【0068】
また、合計点数と点数倍率とを積算して合計値を算出する。これにより、デコードパラメータの組合せ毎に設定された点数倍率を用いて合計値を算出するので、正確な合計値の算出が可能となる。したがって、デコードの信頼性を向上させることができる。
【0069】
(第2の実施の形態)
図15〜図18を参照して、本発明に係る第2の実施の形態を説明する。以下、バーコードリーダ1と同様な部分には同一の符号を付し、その詳細な説明を援用し、異なる部分について説明する。
【0070】
バーコードリーダ1において、ROM15に第2のプログラムが記憶される。
【0071】
出力手段、第1の調整手段、第1の記憶制御手段としてのCPU11は、ROM15に記憶された第2のプログラムとの協働により、点数倍率とデコードパラメータの合計点数との積算値が許容値を超える場合に、デコードされたデコード結果を出力し、出力されたデコード結果に基づいて、デコードパラメータの点数及び点数倍率を調整し、調整されたデコードパラメータの点数をパラメータ点数テーブル90に記憶させ、調整された点数倍率を組合せ点数テーブル91に記憶させる。
デコード結果を出力するとは、読取データのデコード結果を表示部14に表示することをいう。出力されたデコード結果に基づいてデコードパラメータの点数及び点数倍率を調整するとは、具体的には、表示されたデコード結果が正常なデータである場合、表示されたデコード結果のデコード時におけるデコードパラメータの点数及び点数倍率を下げることをいう。
【0072】
図15及び図16に第2の処理の流れを示す。第2の処理は、デコード結果を表示部14に表示し、表示されたデータが正常なデータであるとの入力があった場合、デコードパラメータの点数及び点数倍率を調整する処理である。
【0073】
例えば、入力部12を介して第2の処理の実行指示が入力されたことをトリガとして、ROM15から読み出されて適宜RAM13に展開された第2のプログラムとCPU11との協働で、第2の処理が実行される。
【0074】
ステップS61〜S69は、第1の処理のステップS11〜S19と同様である。また、ステップS65において実行されるパラメータカスタマイズ処理は、第1の処理のステップS151〜S172で実行される処理と同様である。また、ステップS68において実行される合計値算出処理は、第1の処理のステップS181〜S193で実行される処理と同様である。
【0075】
ステップS69において、合計値が許容値よりも小さいと判別された場合(ステップS69;YES)、カスタマイズされたパラメータを反映してデコードが実行される(ステップS70)。そして、デコード結果がOKであるか否かが判別される(ステップS71)。デコード結果がOKでないと判別された場合(ステップS71;NO)、ステップS65に移行される。デコード結果がOKであると判別された場合(ステップS71;YES)、読取OKと判断される(ステップS72)。ステップS72の実行後、第2の処理は終了される。
【0076】
ステップS69において、合計値が許容値よりも大きい値であると判別された場合(ステップS69;NO)、カスタマイズされたパラメータを反映してデコードが実行される(ステップS73)。そして、デコード結果がOKか否かが判別される(ステップS74)。デコード結果がOKでないと判別された場合(ステップS74;NO)、ステップS65に移行される。デコード結果がOKであると判別された場合(ステップS74;YES)、デコードデータが表示部14に表示される(ステップS75)。例えば、デコードされた文字や数値等が表示部14に表示される。
【0077】
ステップS74の実行後、表示部14に表示された表示データに対して、正常なデータであるか、それとも間違ったデータであるか、ユーザによる入力を待機する待機状態となる(ステップS76)。そして、正常なデータであるとの入力があるか否かが判別される(ステップS77)。例えば、ユーザにより、ステップS76において表示部14に表示された表示データが参照され、正常な値であると判断された場合は、正常な結果であるとの入力が入力部12を介して受け付けられる。一方、ユーザにより表示データが正常な値でないと判断された場合は、正常な値でないとの入力が入力部12を介して受け付けられる。
【0078】
ステップS77において、正常な結果であるとの入力がないと判別された場合(ステップS77;NO)、ステップS65に移行される。ステップS77において、正常な結果であるとの入力の受付があると判別された場合(ステップS77;YES)、使用中のパラメータ組合せに対する点数及び点数倍率が下げられる(ステップS78)。例えば、ステップS68の合計値算出処理において、組合せNo.26の組合せが検索されたとする。この場合において、ステップS77で正常な結果であるとの入力があると判別されると、使用中のデコードパラメータの組合せに対する点数及び点数倍率が下げられる。例えば、デコード時において、図17(A)に示すように、パラメータ点数テーブル90のparam−1(マージンチェックパラメータ)の設定段階数set−3における点数が「4」、param−2(キャラクタ間ギャップパラメータ)の設定段階数set−2における点数が「3」であったとする。この場合、図17(B)に示すように、パラメータ点数テーブル90のparam−1(マージンチェックパラメータ)の設定段階数set−3における点数が「3」、param−2(キャラクタ間ギャップパラメータ)の設定段階数set−2における点数が「2」に調整される。また、図18に示すように、組合せ倍率テーブル91の組合せNo.26における点数倍率が2.0から1.9に調整される。調整されたデコードパラメータ点数はパラメータ点数テーブル90、点数倍率は組合せ点数テーブル91にそれぞれ反映され、更新記憶される。調整後のパラメータ点数テーブル90及び組合せ点数テーブル91は、以後のバーコードの読取り時に使用される。そして、ステップS78の実行後、ステップS65に移行される。
【0079】
以上、本実施の形態によれば、合計値が許容値を超える場合、デコード結果を表示部14に表示する。これにより、ユーザは、表示部14に表示されたデコード結果を確認し、デコードを行うか否かを判断することができる。したがって、ユーザの判断に応じてデコードを行うことができる。また、ユーザの判断に応じてデコードを行うことができるので、例えば、正常なデコード結果が得られているのに、算出された合計値が許容値を超えている場合の読取データに対してもデコードを行うことが可能となり、バーコードの読取り範囲を広げることが可能となる。
【0080】
また、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことができる。これにより、デコードパラメータの点数及び点数倍率の調整後は、ユーザの判断が反映されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことが可能となる。
【0081】
(第3の実施の形態)
図19を参照して、本発明に係る第3の実施の形態を説明する。以下、バーコードリーダ1と同様な部分には同一の符号を付し、その詳細な説明を援用し、異なる部分について説明する。
【0082】
バーコードリーダ1において、ROM15に第3のプログラムが記憶される。
【0083】
第2のデコード制御手段、第2の調整手段、第2の記憶制御手段としてのCPU11は、ROM15に記憶された第3のプログラムとの協働により、生成された組合せに基づいて、読取データのデコードを実行させるか否かを制御し、読取データのデコードが実行された場合、当該デコードされたデコード結果とバーコードが正当にデコードされたデコード結果とが一致するか否かを比較し、当該比較結果に基づいて、デコードパラメータの点数及び点数倍率を調整し、調整されたデコードパラメータの点数をパラメータ点数テーブル90に記憶させ、調整された点数倍率を組合せ点数テーブル91に記憶させる。
バーコードが正当にデコードされたデコード結果とは、ダメージバーコードのサンプルであるサンプルバーコードが正しく読めた時(デコードできた時)の正しいデコード結果のことをいう。
比較結果に基づいて、デコードパラメータの点数及び点数倍率を調整するとは、例えば、読取データがデコードされたデコード結果と、サンプルバーコードが正しく読めたときの正しいデコード結果とが一致する場合、読取データのデコード時におけるデコードパラメータの点数及び点数倍率を下げることをいう。また、読取データがデコードされたデコード結果と、サンプルバーコードが正しく読めたときの正しいデコード結果とが一致しない場合、読取データのデコード時におけるデコードパラメータの点数及び点数倍率を上げることをいう。
【0084】
図19に第3の処理の流れを示す。第3の処理は、デコードパラメータのカスタマイズ(組合せ)が成功したか否かに基づいて、デコード実行を制御し、デコードを実行した場合、デコード結果とサンプルコードのデコード結果とを比較してデコードパラメータの点数及び点数倍率を調整する処理である。
【0085】
例えば、入力部12を介して第3の処理の実行指示が入力されたことをトリガとして、ROM15から読み出されて適宜RAM13に展開された第3のプログラムとCPU11との協働で、第3の処理が実行される。
【0086】
先ず、ダメージバーコードのサンプルであるサンプルバーコードが正しく読めた時の正しいデコード結果(文字又は数値)をフラッシュメモリ17に記憶させる(ステップS81)。そして、ユーザから入力部12を介してバーコード読取りの開始キーが入力されることにより、バーコードの読取りが開始される(ステップS82)。そして、ステップS82により読取られた読取データが取得される(ステップS83)。そして、現在のカスタマイズパラメータの組合せが初期化される(ステップS84)。そして、パラメータカスタマイズ処理が実行される(ステップS85)。パラメータカスタマイズ処理は、第1の処理のステップS151〜S172で実行される処理と同様である。
【0087】
ステップS85の実行後、カスタマイズが失敗したか否かが判別される(ステップS86)。カスタマイズが失敗したと判別された場合(ステップS86;YES)、第3の処理は終了される。
【0088】
ステップS86において、カスタマイズが成功したと判別された場合(ステップS86;NO)、カスタマイズされたパラメータを反映してデコードが実行される(ステップS87)。そして、デコード結果がOKか否かが判別される(ステップS88)。デコード結果がOKでないと判別された場合(ステップS88;NO)、ステップS85に移行される。デコード結果がOKであると判別された場合(ステップS88;YES)、ステップS87においてデコードされたデコード結果がステップS81において記憶された正しいデコード結果と一致するか否かが判別される(ステップS89)。具体的には、ステップS87においてデコードされた結果(例えば、文字や数値のデータ)がステップS81においてフラッシュメモリ17に記憶された正しいデコード結果(例えば、文字や数値のデータ)と一致するか否かが判別される。
【0089】
ステップS89において、デコード結果が正しいデコード結果と一致すると判別された場合(ステップS89;YES)、使用中のパラメータ組合せに対する点数及び倍率が下げられる(ステップS90)。例えば、図17及び図18で説明したように、デコードパラメータの点数及び点数倍率が下げられる。ステップS90の実行後、ステップS85に移行される。ステップS89において、デコード結果が正しいデコード結果と一致しないと判別された場合(ステップS89;NO)、使用中のパラメータ組合せに対する点数及び倍率が上げられる(ステップS91)。すなわち、デコードパラメータの点数及び点数倍率が上げられる。デコードパラメータ点数及び点数倍率が調整(すなわち、デコードパラメータ点数及び点数倍率を上げたり下げたり)されると、調整後のデコードパラメータ点数はパラメータ点数テーブル90、点数倍率は組合せ点数テーブル91にそれぞれ反映され、更新記憶される。調整後のパラメータ点数テーブル90及び組合せ点数テーブル91は、以後のバーコードの読取り時に使用される。そして、ステップS91の実行後、ステップS85に移行される。
【0090】
以上、本実施の形態によれば、デコードされたデコード結果と予め読取られたバーコード(サンプルコード)の正しいデコード結果とが一致するか否かを比較して、デコードパラメータの点数及び組点数倍率を調整するので、正確なデコードを行うことができ、バーコードの誤読を防止することができる。また、バーコードの誤読を防止できるので、バーコードの読取り範囲を広げることができる。
【0091】
また、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことができる。これにより、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことが可能となる。
【0092】
なお、上記実施の形態における記述は、本発明に係るコード読取装置及びプログラムの一例であり、これに限定されるものではない。
【0093】
例えば、上記実施の形態では、デコードパラメータカスタマイズ処理において、設定段階数を変換させる際、設定段階数を「+1」(すなわち、デコードの判定を緩く)することとしたがこれに限定されるものではない。例えば、設定段階数を「−1」(すなわち、デコードの判定を厳しく)こととしてもよい。
具体的には、例えば、パラメータテーブル30のparam−1(マージンチェックパラメータ)における設定段階数に「set−2A」、「set−3A」を新たに設け、「set−2A」における左右マージン幅を「8倍」、「set−3A」における左右マージン幅を「10倍」とする。また、パラメータ点数テーブル90の「set−2A」における点数を「−2」、「set−3A」における点数を「−4」とする。この場合、デコードの判定を厳しくするように変化させると、「set−1」→「set−2A」→「set−3A」となる。したがって、左右マージン幅を表す倍率は6倍→8倍→10倍となり、判定はより厳しい方向にシフトする。また、デコードパラメータの点数は0→−2→−4となるので、結果として算出されるデコードパラメータの点数の合計値は減少する。このとき、デコードパラメータの合計点数が減少すると、他のデコードパラメータの設定段階数を上げる余裕が生まれるので、他のデコードパラメータを緩く設定できるようにしても良い。
【0094】
また、図9に示したパラメータ点数テーブル90における設定段階数は一例であり、これに限定されるものではない。例えば、デコードパラメータ毎に、設定段階数を増やしたり、減らしたりしてもよい。
【0095】
また、許容値を予め決められた値としたが、これに限定されるものではない。例えば、ユーザにより許容値の設定が可能となるようにしてもよい。
【0096】
また、各テーブルにおけるデコードパラメータの値は、一例でありこれに限定されるものではない。例えば、バーコードリーダ1の性能や読取り環境、バーコードの印字条件に応じて最適化した値を使用してもよい。
【0097】
また、パラメータの種類は、一例でありこれに限定されるものではない。例えば、読取り性能を向上させる可能性のあるデコードパラメータが他にある場合は、それらのデコードパラメータを追加してもよい。
【0098】
また、上記実施の形態では、バーコードリーダ1はバーコードを読取ることとしたが、これに限定されるものではない。例えば、2次元コードを読取ることとしてもよい。
【0099】
その他、上記の実施の形態におけるバーコードリーダ1の細部構成及び詳細動作に関しても、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【図面の簡単な説明】
【0100】
【図1】本発明に係るバーコードリーダがバーコードを読取る際の動作を説明する図である。
【図2】バーコードリーダの内部構成を示すブロック図である。
【図3】パラメータテーブルを示す図である。
【図4】(A)は、アドオンを示す図である。(B)は、デリネータを示す図である。
【図5】(A)は、EANコード、JANコード、UPC−Aコードの場合におけるガードバーを示す図である。(B)は、UPC−Eコードの場合におけるガードバーを示す図である。
【図6】(A)は、EAN、JAN、UPC−Aコードの基準位置(レフトガードバー、センターバー)を示す図である。(B)は、UPC−Eコードの基準位置(レフトガードバー、ライトガードバー)を示す図である。(C)は、アドオンコードの基準位置(スタートパターン)を示す図である。
【図7】(A)は、閾値(基準位置)パラメータが「set−1」(LeftGB:(白+黒)/2 StartPattern)におけるコードと基準位置との関係を示した図である。(B)は、閾値(基準位置)パラメータが「set−2」(CenterGB StartPattern)におけるコードと基準位置との関係を示した図である。(C)は、閾値(基準位置)パラメータが「set−3」(LeftGB:(白+黒) StartPattern)におけるコードと基準位置との関係を示した図である。
【図8】(A)は、閾値(基準位置)パラメータが「set−4」(LeftGB:(白+黒)/2 WPC部)におけるコードと基準位置との関係を示した図である。(B)は、閾値(基準位置)パラメータが「set−5」(CenterGB: WPC部)におけるコードと基準位置との関係を示した図である。(C)は、閾値(基準位置)パラメータが「set−6」(LeftGB:(白+黒):WPC部)におけるコードと基準位置との関係を示した図である。
【図9】パラメータ点数テーブルを示す図である。
【図10】組合せ点数テーブルを示す図である。
【図11】第1の処理を示すフローチャートである。
【図12】パラメータカスタマイズ処理を示すフローチャートである。
【図13】パラメータカスタマイズ処理を示すフローチャートである。
【図14】合計値算出処理を示すフローチャートである。
【図15】第2の処理を示すフローチャートである。
【図16】第2の処理を示すフローチャートである。
【図17】(A)は、パラメータ調整前のパラメータ点数テーブルを示す図である。(B)は、パラメータ調整後のパラメータ点数テーブルを示す図である。
【図18】点数倍率が調整されたことを示す図である。
【図19】第3の処理を示すフローチャートである。
【符号の説明】
【0101】
1 バーコードリーダ
11 CPU
12 入力部
13 RAM
14 表示部
15 ROM
16 スキャナ部
17 フラッシュメモリ
18 電源部
19 バス

【特許請求の範囲】
【請求項1】
バーコード又は2次元コードを示すデータコードを読取り、読取られた読取データを出力する読取手段と、
前記読取手段により出力された読取データをデコードするデコード手段と、
前記デコード手段によるデコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する信頼性情報記憶手段と、
前記複数のデコードパラメータが組合された組合せ情報を記憶する組合せ記憶手段と、
前記複数のデコードパラメータの組合せを生成する生成手段と、
前記生成手段により生成された組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記信頼性情報記憶手段から取得し、当該取得された信頼性情報の合計を算出する算出手段と、
前記生成手段により生成された組合せに対応する前記組合せ情報を前記組合せ記憶手段から取得し、当該取得された組合せ情報と前記算出手段により算出された合計とに基づいて、前記読取手段により読取られた読取データをデコードするか否かを判断するための判断情報を算出する判断情報算出手段と、
前記判断情報算出手段により算出された判断情報に基づいて、前記デコード手段にデコードを実行させるか否かを制御する第1のデコード制御手段と、
を備えたコード読取装置。
【請求項2】
前記第1のデコード制御手段は、
前記判断情報が予め決められた許容値を超える場合は、前記デコード手段にデコードを実行させず、前記判断情報が予め決められた許容値内の場合は、前記生成手段により生成された組合せに基づいて、前記デコード手段にデコードを実行させる請求項1に記載のコード読取装置。
【請求項3】
前記信頼性情報記憶手段は、
前記デコードパラメータ毎に、複数のパラメータ設定段階を設け、当該各パラメータ設定段階に対応して前記信頼性情報を記憶する請求項1又は2に記載のコード読取装置。
【請求項4】
前記組合せ情報は、
前記複数のデコードパラメータの組合せ毎に設定された倍率情報を含み、
前記判断情報算出手段は、
前記倍率情報と前記合計とを積算して前記判断情報を算出する請求項1から3のいずれか一項に記載のコード読取装置。
【請求項5】
前記判断情報算出手段により算出された前記判断情報が予め決められた許容値を超える場合、前記デコード手段によりデコードされたデコード結果を出力する出力手段と、
前記出力手段により出力されたデコード結果に基づいて、前記信頼性情報及び前記組合せ情報を調整する第1の調整手段と、
前記第1の調整手段により調整された信頼性情報を前記信頼性情報記憶手段に記憶させ、前記第1の調整手段により調整された組合せ情報を前記組合せ情報記憶手段に記憶させる第1の記憶制御手段と、
を備える請求項1から4のいずれか一項に記載のコード読取装置。
【請求項6】
前記生成手段により生成された組合せに基づいて、前記デコード手段にデコードを実行させるか否かを制御する第2のデコード制御手段と、
前記第2のデコード制御手段により前記デコード手段のデコードが実行された場合、当該デコードされたデコード結果とデータコードが正当にデコードされたデコード結果とが一致するか否かを比較し、当該比較結果に基づいて、前記信頼性情報及び前記組合せ情報を調整する第2の調整手段と、
前記第2の調整手段により調整された信頼性情報を前記信頼性情報記憶手段に記憶させ、前記第2の調整手段により調整された組合せ情報を前記組合せ情報記憶手段に記憶させる第2の記憶制御手段と、
を備えた請求項1から4のいずれか一項に記載のコード読取装置。
【請求項7】
コンピュータを、
バーコード又は2次元コードを示すデータコードを読取り、読取られた読取データを出力する読取手段、
前記読取手段により出力された読取データをデコードするデコード手段、
前記デコード手段によるデコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する信頼性情報記憶手段、
前記複数のデコードパラメータが組合された組合せ情報を記憶する組合せ記憶手段、
前記複数のデコードパラメータの組合せを生成する生成手段、
前記生成手段により生成された組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記信頼性情報記憶手段から取得し、当該取得された信頼性情報の合計を算出する算出手段、
前記生成手段により生成された組合せに対応する前記組合せ情報を前記組合せ記憶手段から取得し、当該取得された組合せ情報と前記算出手段により算出された合計とに基づいて、前記読取手段により読取られた読取データをデコードするか否かを判断するための判断情報を算出する判断情報算出手段、
前記判断情報算出手段により算出された判断情報に基づいて、前記デコード手段にデコードを実行させるか否かを制御する第1のデコード制御手段、
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2009−276947(P2009−276947A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−126572(P2008−126572)
【出願日】平成20年5月14日(2008.5.14)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】