(57)【特許請求の範囲】
【請求項１】
デコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する記憶手段と、
複数のデコードパラメータの組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記記憶手段から取得し、複数のデコードパラメータの組合せに対応する信頼性情報の合計値を算出する算出手段と、
前記算出手段により算出された信頼性情報の合計値に基づいて、読取手段により読み取られたデータコードのデコードを実行させるか否かを制御する制御手段と、
を備えたコード読取装置。
【請求項２】
前記制御手段は、前記信頼性情報の合計値が予め決められた許容値を超える場合は、デコードを実行させず、前記信頼性情報の合計値が予め決められた許容値内の場合は、デコードを実行させる請求項１に記載のコード読取装置。
【請求項３】
前記記憶手段は、前記デコードパラメータ毎に、複数のパラメータ設定段階を設け、当該各パラメータ設定段階に対応して前記信頼性情報を記憶する請求項１又は２に記載のコード読取装置。
【請求項４】
前記複数のデコードパラメータの組合せ毎に設定された倍率情報を記憶し、
前記算出手段は、前記倍率情報と前記信頼性情報とを積算して前記信頼性情報の合計値を算出する請求項１から３のいずれか一項に記載のコード読取装置。
【請求項５】
前記算出手段により算出された前記信頼性情報の合計値が予め決められた許容値を超える場合、前記デコード手段によりデコードされたデコード結果を出力する出力手段と、
前記出力手段により出力されたデコード結果に基づいて、前記信頼性情報を調整する調整手段と、
前記調整手段により調整された信頼性情報を前記記憶手段に記憶させせる記憶制御手段と、
を備える請求項１から４のいずれか一項に記載のコード読取装置。
【請求項６】
コンピュータを、
デコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する記憶手段、
複数のデコードパラメータの組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記記憶手段から取得し、複数のデコードパラメータの組合せに対応する信頼性情報の合計値を算出する算出手段、
前記算出手段により算出された信頼性情報の合計値に基づいて、読取手段により読み取られたデータコードのデコードを実行させるか否かを制御する制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコード読取装置及びプログラムに関する。
【背景技術】
【０００２】
従来から、バーコード又は２次元コードを示すデータコードを読取るコード読取装置（以下、バーコードリーダという）が知られている。
【０００３】
バーコードリーダにより読取られるバーコードは、黒バーと白スペースで構成され、それぞれの幅の組合せによって数値・文字が表現されている。印刷品質の良くないバーコード（以下、ダメージバーコード）は、これらの幅が規定値からかけ離れ、バーイメージの欠損、又は汚れ等によりゴミ（ノイズ）が含まれている。
【０００４】
そこで、バーコードリーダにより読取られたバーコードの読取データに対し、黒バー又は白スペースの幅を変化させてデコードを行う技術や、幅を判定する基準を変化させてデコードを行う技術などが知られている。
また、バーコードリーダからバーコードまでの距離が離れている場合、バーコードが読取可能範囲内に含まれるように、光ビームの走査幅を広げる技術も知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−６３１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記技術では、相反して誤読の発生する可能性も高くなってしまう。例えば、読取データの黒バー又は白スペースの幅を変化させた場合、読取データを変化させた状態でデコードを実行することとなり、バーコードを誤読する可能性も高くなってしまう。
【０００７】
バーコードの誤読を防止するためには、照合やチェックデジット計算を行う技術が知られている。ここで、照合とは、バーコードを読取り、文字や数値に変換したデータと以前（前回）読取ったバーコードを文字や数値に変換したデータとを照合することをいう。チェックデジット計算とは、読取ったバーコードを文字や数値に変換したデータの正確性を保つために使用される計算方法である。
しかし、照合を行う場合、連続して誤読するようなバーコードに対しては、照合を行っても効果はない。また、チェックデジット計算についても、チェックデジットに対応していない規格のバーコードが存在することや、チェックデジット自体を誤読してしまい、チェックデジット計算がたまたま一致してしまう可能性もある。このため、バーコードの誤読を防止できないという問題があった。
【０００８】
本発明の課題は、データコードの誤読を防止する技術を提供することである。
【課題を解決するための手段】
【０００９】
以上の課題を解決するため、請求項１に記載のコード読取装置は、
デコード時に使用される複数のデコードパラメータ毎に、デコードの信頼性を表す信頼性情報を記憶する記憶手段と、
複数のデコードパラメータの組合せに基づいて、前記デコードパラメータ毎に対応する前記信頼性情報を前記記憶手段から取得し、複数のデコードパラメータの組合せに対応する信頼性情報の合計値を算出する算出手段と、
前記算出手段により算出された信頼性情報の合計値に基づいて、読取手段により読み取られたデータコードのデコードを実行させるか否かを制御する制御手段と、
を備える。
【発明の効果】
【００１６】
本発明によれば、データコードの誤読を防止する技術を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係るバーコードリーダがバーコードを読取る際の動作を説明する図である。
【図２】バーコードリーダの内部構成を示すブロック図である。
【図３】パラメータテーブルを示す図である。
【図４】（Ａ）は、アドオンを示す図である。（Ｂ）は、デリネータを示す図である。
【図５】（Ａ）は、ＥＡＮコード、ＪＡＮコード、ＵＰＣ−Ａコードの場合におけるガードバーを示す図である。（Ｂ）は、ＵＰＣ−Ｅコードの場合におけるガードバーを示す図である。
【図６】（Ａ）は、ＥＡＮ、ＪＡＮ、ＵＰＣ−Ａコードの基準位置（レフトガードバー、センターバー）を示す図である。（Ｂ）は、ＵＰＣ−Ｅコードの基準位置（レフトガードバー、ライトガードバー）を示す図である。（Ｃ）は、アドオンコードの基準位置（スタートパターン）を示す図である。
【図７】（Ａ）は、閾値（基準位置）パラメータが「ｓｅｔ−１」（ＬｅｆｔＧＢ：（白＋黒）／２ ＳｔａｒｔＰａｔｔｅｒｎ）におけるコードと基準位置との関係を示した図である。（Ｂ）は、閾値（基準位置）パラメータが「ｓｅｔ−２」（ＣｅｎｔｅｒＧＢ ＳｔａｒｔＰａｔｔｅｒｎ）におけるコードと基準位置との関係を示した図である。（Ｃ）は、閾値（基準位置）パラメータが「ｓｅｔ−３」（ＬｅｆｔＧＢ：（白＋黒） ＳｔａｒｔＰａｔｔｅｒｎ）におけるコードと基準位置との関係を示した図である。
【図８】（Ａ）は、閾値（基準位置）パラメータが「ｓｅｔ−４」（ＬｅｆｔＧＢ：（白＋黒）／２ ＷＰＣ部）におけるコードと基準位置との関係を示した図である。（Ｂ）は、閾値（基準位置）パラメータが「ｓｅｔ−５」（ＣｅｎｔｅｒＧＢ： ＷＰＣ部）におけるコードと基準位置との関係を示した図である。（Ｃ）は、閾値（基準位置）パラメータが「ｓｅｔ−６」（ＬｅｆｔＧＢ：（白＋黒）：ＷＰＣ部）におけるコードと基準位置との関係を示した図である。
【図９】パラメータ点数テーブルを示す図である。
【図１０】組合せ点数テーブルを示す図である。
【図１１】第１の処理を示すフローチャートである。
【図１２】パラメータカスタマイズ処理を示すフローチャートである。
【図１３】パラメータカスタマイズ処理を示すフローチャートである。
【図１４】合計値算出処理を示すフローチャートである。
【図１５】第２の処理を示すフローチャートである。
【図１６】第２の処理を示すフローチャートである。
【図１７】（Ａ）は、パラメータ調整前のパラメータ点数テーブルを示す図である。（Ｂ）は、パラメータ調整後のパラメータ点数テーブルを示す図である。
【図１８】点数倍率が調整されたことを示す図である。
【図１９】第３の処理を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照して本発明に係る実施の形態の一例を詳細に説明する。ただし、発明の範囲は、図示例に限定されない。
【００１９】
（第１の実施の形態）
図１〜図１４を参照して、本発明に係る第１の実施の形態を説明する。以下、データコードとしてバーコードを読取るコード読取装置（以下、バーコードリーダ）を用いて説明する。先ず、図１を参照して、バーコードリーダ１がバーコードＡを読取る際の動作について説明する。バーコードＡは、黒バーと白スペースで構成され、それぞれの幅の組合せによって数値・文字が表現されたデータコードである。バーコードリーダ１は、バーコードＡに対して、レーザー光を照射し、当該照射したレーザー光の反射光を受光する。そして、受光した反射光に基づいて、バーコードＡの読取データ（２値データ）を取得し、取得した読取データに対してデコードを行い、バーコードＡで表現された数値・文字を取得する。
【００２０】
次に、図２を参照して、バーコードリーダ１の内部構成を説明する。図２に示すように、バーコードリーダ１は、デコード手段、生成手段、算出手段、判断情報算出手段、第１のデコード手段としてのＣＰＵ（Central Processing Unit）１１と、入力部１２と、ＲＡＭ１３（Random Access Memory）と、表示部１４と、ＲＯＭ（Read Only Memory）１５と、読取手段としてのスキャナ部１６と、信頼性情報記憶手段、組合わせ記憶手段としてのフラッシュメモリ１７と、を備え、各部はバス１９を介して接続されている。また、各部は、電源部１８からの電力供給を受けている。
【００２１】
ＣＰＵ１１は、バーコードリーダ１の各部を中央制御する。ＣＰＵ１１は、ＲＯＭ１５に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをＲＡＭ１３に展開し、ＲＡＭ１３に展開されたプログラムとの協働で、各種処理を実行する。
【００２２】
ＣＰＵ１１は、ＲＯＭ１５に記憶された第１のプログラムとの協働により、複数のデコードパラメータの組合せを生成し、生成された組合せに基づいて、デコードパラメータ毎に対応する信頼性情報をパラメータ点数テーブル９０が記憶されているフラッシュメモリ１７から取得し、当該取得された信頼性情報の合計を算出し、生成された組合せに対応する組合せ情報を組合せ点数テーブル９１が記憶されているフラッシュメモリ１７から取得し、当該取得された組合せ情報と算出された信頼性情報の合計とに基づいて、スキャナ部１６により読取られた読取データをデコードするか否かを判断するための判断情報を算出し、算出された判断情報に基づいて、読取データのデコードを制御する。
【００２３】
デコードパラメータとは、スキャナ部１６により読取られたバーコードの読取データのデコード時に使用するパラメータのことをいう。デコードパラメータは、後述するｐａｒａｍ−１〜ｐａｒａｍ−１０に該当する。
デコードパラメータの組合せを生成するとは、デコードパラメータ毎に、デコードパラメータの設定段階数を設定し、各デコードパラメータで設定された設定段階数の中から規則にしたがって１つの段階を選択し、全デコードパラメータ（ｐａｒａｍ−１〜ｐａｒａｍ−１０）で選択する段階数の組合せを生成することをいう。デコードパラメータの設定段階数とは、デコードパラメータの内容に応じて設けられた段階数のことをいう。デコードパラメータ設定段階数は、後述する「ｓｅｔ１」等に該当する。デコードパラメータの組合せの生成は、例えば、ｐａｒａｍ−１は「ｓｅｔ−１」、ｐａｒａｍ−２は「ｓｅｔ−２」・・・ｐａｒａｍ−１０は「ｓｅｔ−１」というように、各デコードパラメータで設定された設定段階数の中から１つの段階を選択し、全デコードパラメータ（ｐａｒａｍ−１〜ｐａｒａｍ−１０）で選択する段階数の組合せを生成することにより実行される。
信頼性情報とは、デコードの信頼性を表す情報であり、後述するデコードパラメータの点数に該当する。信頼性情報の合計とは、デコードパラメータの点数の合計である。
組合せ情報とは、各デコードパラメータを組合せた情報であり、後述する組合せ点数テーブル９１の組合せＮｏ、各デコードパラメータの設定段階数の組合せ、及び点数倍率のことをいう。
生成された組合せに対応する組合せ情報を取得するとは、生成されたデコードパラメータの組合せと一致する組合せ情報を組合せ点数テーブル９１から検索し、検索された組合せ情報を取得することをいう。具体的には、組合せ点数テーブル９１を参照し、生成された組合せ（各デコードパラメータで選択された設定段階数の組合せ）に一致する各デコードパラメータの設定段階数の組合せを組合せ点数テーブル９１から検索し、検索された組合せに対応する点数倍率を取得することをいう。
判断情報とは、スキャナ部１６により読取られた読取データをデコードするか否かを判断するための情報であり、取得された点数倍率と算出されたデコードパラメータの点数の合計とを積算した情報のことをいう。判断情報は、後述する合計値に該当する。
【００２４】
入力部１２は、バーコード読取を指示するためのトリガキー、数字・文字入力キー、各種機能キー等の各種キーを含み、操作者から押下入力された各キーのキー入力信号をＣＰＵ１１に出力する。また、入力部１２は、表示部１４と一体的にタッチパネルが構成されることとしてもよい。
【００２５】
ＲＡＭ１３は、情報を一時的に格納する揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納する複数のワークエリアを有する。
【００２６】
表示部１４は、ＬＣＤ（Liquid Crystal Display）、ＥＬＤ（ElectroLuminescent Display）等で構成され、ＣＰＵ１１からの表示信号に従って各種表示を行う。
【００２７】
ＲＯＭ１５は、各種プログラム、各種データが予め読み出し専用に記憶される記憶部である。ＲＯＭ１５は、後述する第１のプログラムを記憶する。
【００２８】
スキャナ部１６は、ＣＰＵ１１の制御信号に従い、バーコードを読取り、読取った読取データ（二値データ）をＣＰＵ１１に出力する。
【００２９】
フラッシュメモリ１７は、各種データ等の情報が読み出し及び書き込み可能な記憶部である。フラッシュメモリ１７は、後述するパラメータテーブル３０、パラメータ点数テーブル９０、組合せ点数テーブル９１を記憶する。
【００３０】
次に、図３を参照して、パラメータテーブル３０について説明する。パラメータテーブル３０は、デコードパラメータ毎に、設定段階数に応じたデコードパラメータの設定内容を定めたテーブルである。ｐａｒａｍ−１〜ｐａｒａｍ−１０は、読取データのデコード時に使用する各デコードパラメータを示す。ｓｅｔ−１〜ｓｅｔ−８は、各デコードパラメータの設定段階数を示す。デコードパラメータの設定段階数に応じて、各デコードパラメータ（ｐａｒａｍ−１〜ｐａｒａｍ−１０）が設定される。また、設定段階数は、設定段階数値が大きくなるほど、誤読の可能性が高くなることを示す。
【００３１】
ｐａｒａｍ−１（マージンチェックパラメータ）は、読取られた読取データ（バーコードを構成する黒バー及び白スペースの幅、及び左右のマージン幅の２値化されたデータ）の左右マージン幅について、どこまで小さくても読取りＯＫと判定するか、その最小値を倍率で表すデコードパラメータである。左右マージン幅が小さいバーコードを読取り可能とするためには、倍率も小さくする必要がある。例えば、「ｓｅｔ−１」の場合、マージンチェックパラメータは「６倍」、「ｓｅｔ−２」の場合、マージンチェックパラメータは「４倍」に設定される。
【００３２】
ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）は、キャラクタ（数本の黒バー及び白スペースで構成されるグループ）間のギャップ（スペース）の大きさのチェックによる読取りＯＫ（成功）かＮＧ（失敗）の判定を有効又は無効に設定するデコードパラメータである。例えば、「ｓｅｔ−１」の場合、キャラクタ間ギャップパラメータは「有効」に設定される。この場合、予め定められたキャラクタ間ギャップに基づいて、バーコードの読取データの読取りがＯＫかＮＧかについて判定される。例えば、読取られた読取データのキャラクタ間ギャップが予め定められたキャラクタ間ギャップよりも大きい場合、読取りはＮＧと判定される。
また、「ｓｅｔ−２」の場合、キャラクタ間ギャップパラメータは「無効」に設定される。この場合、キャラクタ間ギャップに基づいて、読取りＯＫかＮＧかについての判定は実行されない。
【００３３】
ｐａｒａｍ−３（デリネータパラメータ）は、デリネータ及びガードバーを構成する黒バー幅と白スペース幅の比率のチェックによる読取りＯＫかＮＧの判定を有効又は無効に設定するデコードパラメータである。ここで、図４及び図５を参照して、デリネータについて説明する。図４（Ａ）は、アドオンを示す図である。アドオンとは、ＥＡＮコードなどの後ろに付加される２桁又は５桁の補足コードのことをいう。図４（Ａ）は、５桁のアドオンを示している。図４（Ｂ）は、デリネータを示す図である。デリネータとは、図４（Ｂ）に示すように、アドオン内においてキャラクタとキャラクタとの間に存在する１本の白スペース、１本の黒バーにより構成されるバーのグループのことをいう。白スペースと黒バーの比率はほぼ１：１となる。チェックを行うときは、例えば、白スペースの大きさに対して、黒バーの大きさが±２５％の範囲内なら読取りＯＫ、範囲外なら読取りＮＧという判定を行う。図５（Ａ）（Ｂ）は、ガードバーを示す図である。ガードバーとは、ＥＡＮコード、ＪＡＮコード、ＵＰＣ−Ａコード、ＵＰＣ−Ｅにおいて、バーコードの左端と右端に存在するバーのグループのことをいう。コードの種類によりガードバーを構成するバーの本数が異なる。例えば、ＥＡＮコード、ＪＡＮコード、ＵＰＣ−Ａコードの場合、図５（Ａ）に示すように、黒バー２本と白スペース１本により構成される。これらのバーの比率は、ほぼ１：１：１となる。また、ＵＰＣ−Ｅコードの場合、図５（Ｂ）に示すように、左端のガードバーは、黒バー２本と白スペース１本により構成される。これらのバーの比率はほぼ１：１：１となる。また、右端のガードバーは、黒バー３本と白スペース２本により構成される。これらのバーの比率は、ほぼ１：１：１：１：１となる。チェックを行うときは、例えば、白スペースの大きさに対して、黒バーの大きさが±２５％の範囲内なら読取りＯＫ、範囲外なら読取りＮＧという判定を行う。
例えば、「ｓｅｔ−１」の場合、デリネータパラメータは「有効」に設定される。この場合、アドオンの中に含まれているデリネータを構成する黒バー幅と白スペース幅の比率がチェックされ、読取りがＯＫかＮＧかについて判定される。さらに、この場合、ガードバーの左右の比率が予め定められた比率よりも大きいか否かが判別される。例えば、デリネータを構成する黒バーと白スペースについて、白スペース幅に対して黒バー幅が予め定められた許容比率の範囲を超える場合、読取りはＮＧと判定される。また、ガードバーの比率が予め定められた閾値よりも大きい場合、読取りはＮＧと判定される。
また、「ｓｅｔ−２」の場合、デリネータパラメータは「無効」に設定される。この場合、デリネータ及びガードバーに基づいて、読取りがＯＫかＮＧかの判定は実行されない。
【００３４】
ｐａｒａｍ−４（閾値（倍率）パラメータ）は、黒バー及び白スペースの幅が太いか細いかを識別するための閾値を変化させるデコードパラメータである。例えば、「ｓｅｔ―１」の場合、閾値（倍率）パラメータは、「黒×１．５ 白×１．５」に設定される。この場合、黒バーの閾値（倍率）は、「１．５」、白スペースの閾値（倍率）は、「１．５」に設定される。
【００３５】
ｐａｒａｍ−５（閾値（基準位置）パラメータ）は、バーコード全体における黒バーと白スペースの幅の太り細り傾向を算出するために、黒バーの基準となる幅と白スペースの基準となる幅を取得する際に参照する基準位置を切り替えるためのデコードパラメータである。黒バーの基準幅と白スペースの基準幅を比較し、黒白の太り細り傾向を算出し、その傾向に基づいた補正を行ってデコードを行う。図６〜図８に各コードと基準位置との関係を示す。先ず、図６に各バーコードにおける基準位置を図示する。図６（Ａ）は、ＥＡＮ、ＪＡＮ、ＵＰＣ−Ａコードの基準位置（レフトガードバー、センターバー）を示す図である。図６（Ｂ）は、ＵＰＣ−Ｅコードの基準位置（レフトガードバー、ライトガードバー）を示す図である。図６（Ｃ）は、アドオンコードの基準位置（スタートパターン）を示す図である。次に、図７及び図８に、バーコード（解析コード）と基準位置との関係を示す。図７（Ａ）は、閾値（基準位置）パラメータが「ｓｅｔ−１」（ＬｅｆｔＧＢ：（白＋黒）／２ ＳｔａｒｔＰａｔｔｅｒｎ）におけるバーコードと基準位置との関係を示している。図７（Ｂ）は、閾値（基準位置）パラメータが「ｓｅｔ−２」（ＣｅｎｔｅｒＧＢ ＳｔａｒｔＰａｔｔｅｒｎ）におけるバーコードと基準位置との関係を示している。図７（Ｃ）は、閾値（基準位置）パラメータが「ｓｅｔ−３」（ＬｅｆｔＧＢ：（白＋黒） ＳｔａｒｔＰａｔｔｅｒｎ）におけるバーコードと基準位置との関係を示している。図８（Ａ）は、閾値（基準位置）パラメータが「ｓｅｔ−４」（ＬｅｆｔＧＢ：（白＋黒）／２ ＷＰＣ部）におけるバーコードと基準位置との関係を示している。図８（Ｂ）は、閾値（基準位置）パラメータが「ｓｅｔ−５」（ＣｅｎｔｅｒＧＢ： ＷＰＣ部）におけるバーコードと基準位置との関係を示している。図８（Ｃ）は、閾値（基準位置）パラメータが「ｓｅｔ−６」（ＬｅｆｔＧＢ：（白＋黒）：ＷＰＣ部）におけるバーコードと基準位置との関係を示している。
例えば、「ｓｅｔ−１」の場合、閾値（基準位置）パラメータは、「ＬｅｆｔＧＢ：（白＋黒）／２ＳｔａｒｔＰａｔｔｅｒｎ」に設定される。この場合、ＥＡＮ、ＪＡＮ、ＵＰＣ−Ａ、ＵＰＣ−Ｅコードの解析において、黒バー・白スペースの太り細り傾向を算出するため基準位置はレフトガードバーとなり、さらに光学的特性に対する補正を行って傾向の算出を行う。また、アドオンコードの解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はスタートパターンとなる。
また、「ｓｅｔ−２」の場合、閾値（基準位置）パラメータは、「（ＣｅｎｔｅｒＧＢ ＳｔａｒｔＰａｔｔｅｒｎ）」に設定される。この場合、ＥＡＮ、ＪＡＮ、ＵＰＣ−Ａ，ＵＰＣ−Ｅコードの解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はセンターバーとなる。また、アドオンコード解析において、黒バー・白スペースの太り細り傾向を算出するための基準位置はスタートパターンとなる。
【００３６】
ｐａｒａｍ−６（閾値（白黒）パラメータ）は、黒バーと白スペースとの２値化（または４値化）をまとめて行うか否かを設定するデコードパラメータである。例えば、「ｓｅｔ−１」の場合、閾値（白黒）パラメータは、「白黒混合計算」に設定される。この場合、黒バーと白スペースとはまとめて２値化（又は４値化）が実行される。また、「ｓｅｔ−２」の場合、閾値（白黒）パラメータは、「白黒分離計算」に設定される。この場合、黒バーと白スペースとは別々に２値化（又は４値化）が実行される。
【００３７】
ｐａｒａｍ−７（太り細り補正パラメータ）は、黒バー又は白スペースの幅を太くするか細くするか否かを設定するデコードパラメータである。例えば、「ｓｅｔ−１」の場合、太り細り補正パラメータは「補正なし」に設定される。この場合、黒バー又は白スペースの太り細り補正は実行されない。また、「ｓｅｔ−２」の場合、太り細り補正パラメータは「白太０．６ｍｏｄｕｌｅ」に設定される。この場合、白スペースの幅が０．６モジュール補正される。モジュールとは、バーコード内の全ての黒バーと白スペースの中で、最も小さなバー、またはスペース幅の単位である。
【００３８】
ｐａｒａｍ−８（ノイズパラメータ）は、ノイズ除去を行う際に、ノイズとみなすバーの幅を設定するデコードパラメータである。例えば、「ｓｅｔ−１」の場合、ノイズパラメータは「無効」に設定される。この場合、ノイズ除去は実行されない。また、「ｓｅｔ−２」の場合、ノイズパラメータは「４０Ｃｏｕｎｔ」に設定される。この場合、ノイズ除去を行う際にノイズとみなすバーの幅は４０カウントに設定される。カウントとは、クロックカウント数である。
【００３９】
ｐａｒａｍ−９（キャラクタ間差異パラメータ）は、連続するキャラクタ幅の差の判定を有効又は無効にするデコードパラメータである。例えば、「ｓｅｔ−１」の場合、キャラクタ間差異パラメータは、「有効」に設定される。この場合、連続するキャラクタ幅の差分値に基づいて、読取りがＯＫかＮＧかについての判定が行われる。また、「ｓｅｔ−２」の場合、キャラクタ間差異パラメータは「無効」に設定される。この場合、キャラクタ間幅の差分値に基づいて、読取りがＯＫかＮＧかの判定は実行されない。
【００４０】
ｐａｒａｍ−１０（最大最小チェックパラメータ）は、キャラクタ内において、幅が最小である最小バーと幅が最大である最大バーとの比率の判定を有効又は無効にするデコードパラメータである。例えば、「ｓｅｔ−１」の場合、最大最小チェックパラメータは「有効」に設定される。この場合、キャラクタ内において、最小バーと最大バーとの比率に基づいて、読取りがＯＫかＮＧかについての判定が行われる。また、「ｓｅｔ−２」の場合、最大最小チェックパラメータは「無効」に設定される。この場合、最小バーと最大バーとの比率に基づいて、読取りがＯＫかＮＧかの判定は実行されない。
【００４１】
次に図９を参照して、パラメータ点数テーブル９０について説明する。パラメータ点数テーブル９０の各数値は、各デコードパラメータ（ｐａｒａｍ１〜ｐａｒａｍ１０）におけるパラメータ設定段階数に応じたパラメータの点数を示す。例えば、ｐａｒａｍ１（マージンチェックパラメータ）の「ｓｅｔ−１」におけるデコードパラメータの点数は「０」、「ｓｅｔ−２」におけるデコードパラメータの点数は「２」、「ｓｅｔ−３」におけるデコードパラメータの点数は「４」であることを示している。
【００４２】
次に図１０を参照して、組合せ点数テーブル９１について説明する。
組合せ点数テーブル９１は、組合せＮｏ、各デコードパラメータ（「ｐａｒａｍ−１」〜「ｐａｒａｍ−１０」）の設定段階数、「ｒａｔｉｏ」（点数倍率）により構成される。組合せＮｏは、各デコードパラメータの組合せの識別番号である。各デコードパラメータの設定段階数は、各デコードパラメータ「ｐａｒａｍ−１」〜「ｐａｒａｍ−１０」で選択された１つの設定段階数である。例えば、組合せＮｏ．１における各デコードパラメータの設定段階数は、「ｐａｒａｍ−１」（マージンチェックパラメータ）：「ｓｅｔ２」、「ｐａｒａｍ−２」（キャラクタ間ギャップパラメータ）：「ｓｅｔ２」、「ｐａｒａｍ−３」（デリネータパラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−４」（閾値（倍率）パラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−５」（閾値（基準位置）パラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−６」（閾値（白黒）パラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−７」（太り細り補正パラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−８」（ノイズパラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−９」（キャラクタ間差異パラメータ）：「ｓｅｔ１」、「ｐａｒａｍ−１０」（最大最小パラメータ）：「ｓｅｔ１」となる。すなわち、組合せＮｏ．１には、マージンチェックパラメータ「６倍」、キャラクタ間ギャップパラメータ「無効」、デリネータ「有効」、閾値（倍率）パラメータ「黒＊１、５、白＊１．５」、閾値（基準位置）パラメータ「ＬｅｆｔＧＢ（白＋黒）／２ ＳｔａｒｔＰａｔｔｅｒｎ」、閾値（白黒）パラメータ「白黒混合計算」、太り細り補正パラメータ「補正なし」、ノイズパラメータ「無効」、キャラクタ間差異パラメータ「有効」、最大最小チェックパラメータ「有効」であり、これら各デコードパラメータが組み合わされることを示している。
「ｒａｔｉｏ」は、点数倍率を示す。点数倍率とは、デコードパラメータの組合せに応じて割り当てられた倍率値である。点数倍率の倍率値が高くなるほど、その組合せに対応する各デコードパラメータを使用してバーコードの読取りを行った時に誤読の可能性が高くなることを示している。
また、パラメータ点数テーブル９０における各デコードパラメータの点数及び組合せ倍率テーブル９１における点数倍率は、様々なダメージバーコードに対して、各デコードパラメータをカスタマイズさせながら読取評価を行い、誤読の発生傾向を調査した結果に基づき、予め設定された値であることを示している。
【００４３】
次に、バーコードリーダ１の動作を説明する。
先ず、図１１〜図１４を参照して、バーコードリーダ１で実行される第１の処理を説明する。図１１に示す第１の処理は、各デコードパラメータの設定段階に対応するデコードパラメータの点数を取得し、取得したデコードパラメータの点数の合計点数と点数倍率とを積算し、算出された積算値に基づいてデコードを実行するか否かを制御する処理である。
【００４４】
例えば、入力部１２を介して第１の処理の実行指示が入力されたことをトリガとして、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第１のプログラムとＣＰＵ１１との協働で、図１１に示す第１の処理が実行される。
【００４５】
予め、ＲＡＭ１３の任意のワークエリア（作業領域）に、各デコードパラメータに対する設定段階数の上限値（パラメータテーブル３０における各デコードパラメータの一番右端の設定段階数）が記憶されているものとする。具体的には、ｐａｒａｍ−１（マージンチェックパラメータ）は、「ｓｅｔ−３」、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）は、「ｓｅｔ−２」、・・・ｐａｒａｍ−１０（キャラクタ間ギャップパラメータ）は、「ｓｅｔ−２」がＲＡＭ１３の作業領域に記憶されているものとする。
【００４６】
先ず、スキャナ部１６を介して読取られた読取データが取得される（ステップＳ１１）。そして、現在のデコードパラメータ（パラメータ）の組合せが初期化される（ステップＳ１２）。初期化とは、現在のデコードパラメータの設定段階数を「ｓｅｔ−１」に設定することをいう。このとき、初期化された設定段階数は、ＲＡＭ１３の任意の作業領域に記憶される。そして、ステップＳ１１において初期化された現在のデコードパラメータ（パラメータ）の組合せを反映してデコードが実行される（ステップＳ１３）。デコードとは、ステップＳ１１において取得された読取データを文字や数値等のデータに変換することをいう。
【００４７】
そして、デコード結果がＯＫか否かが判別される（ステップＳ１４）。具体的には、ステップＳ１３において実行されたデコード結果を解析し、なんらかの文字や数値への変換が完了したか否かに基づいて、デコード結果がＯＫか否かが判別される。デコード結果がＯＫと判別された場合（ステップＳ１４；ＹＥＳ）、第１の処理は終了される。デコード結果がＮＧと判別された場合（ステップＳ１４；ＮＯ）、パラメータカスタマイズ処理が実行される（ステップＳ１５）。
【００４８】
ここで、図１２及び図１３を参照して、パラメータカスタマイズ処理について説明する。先ず、第１の処理のステップＳ１４の実行後、ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数が＋１される（ステップＳ１５１）。設定段階数が＋１されると、ステップＳ１２においてＲＡＭ１３に記憶された設定段階数が更新記憶される。例えば、ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数が「ｓｅｔ−１」から「ｓｅｔ−２」に更新記憶される。
【００４９】
そして、ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数がｓｅｔ−３を超えているか否かが判別される（ステップＳ１５２）。本ステップの判別は、予め、ＲＡＭ１３に記憶されている各デコードパラメータの設定段階数の上限値と、ステップＳ１５１においてＲＡＭ１３に更新記憶された各デコードパラメータの設定段階数とが比較されることにより行われる。ステップＳ１５５、Ｓ１５７、Ｓ１５９、Ｓ１６１、Ｓ１６３、Ｓ１６５、Ｓ１６７、Ｓ１６９、Ｓ１７１においても同様の処理が行われる。例えば、本ステップにおいては、予めＲＡＭ１３に記憶されているｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数の上限値（「ｓｅｔ−３」）と、ステップＳ１５２においてＲＡＭ１３に更新記憶された設定段階数「ｓｅｔ−２」とが比較される。この場合、「ｓｅｔ−２」は「ｓｅｔ−３」を超えないので、判別結果は「ＮＯ」となり、以降の処理が行われる。そして、パラメータカスタマイズ処理が繰り返し実行され（例えば、後述するステップＳ１９；ＮＯ又はステップＳ２１；ＮＯの場合は、パラメータカスタマイズ処理が繰り返し実行される）、ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数が「ｓｅｔ−４」となると、判別結果は「ＹＥＳ」となり、ステップＳ１５４に移行することとなる。
【００５０】
ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数がｓｅｔ−３を超えていないと判別された場合（ステップＳ１５２；ＮＯ）、パラメータカスタマイズは成功と設定される（ステップＳ１５３）。ステップＳ１５３の実行後、第１の処理のステップＳ１６に移行される。ｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数がｓｅｔ−３を超えていると判別された場合（ステップＳ１５２；ＹＥＳ）、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数が＋１され、ｐａｒａｍ−１（マージンチェックパラメータ）がｓｅｔ−１にセット（設定）される（ステップＳ１５４）。
【００５１】
ステップＳ１５４の実行後、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数がｓｅｔ−２を超えているか否かが判別される（ステップＳ１５５）。ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数がｓｅｔ−２を超えていないと判別された場合（ステップＳ１５５；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数がｓｅｔ−２を超えていると判別された場合（ステップＳ１５５；ＹＥＳ）、ｐａｒａｍ−３（デリネータパラメータ）の設定段階数が＋１され、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）がｓｅｔ−１に設定される（ステップＳ１５６）。
【００５２】
ステップＳ１５６の実行後、ｐａｒａｍ−３（デリネータパラメータ）の設定段階数がｓｅｔ−２を超えているか否かが判別される（ステップＳ１５７）。ｐａｒａｍ−３（デリネータパラメータ）の設定段階数がｓｅｔ−２を超えていないと判別された場合（ステップＳ１５７；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−３（デリネータパラメータ）の設定段階数がｓｅｔ−２を超えていると判別された場合（ステップＳ１５７；ＹＥＳ）、ｐａｒａｍ−４（閾値（倍率）パラメータ）の設定段階数が＋１され、ｐａｒａｍ−３（デリネータパラメータ）がｓｅｔ−１に設定される（ステップＳ１５８）。
【００５３】
ステップＳ１５８の実行後、ｐａｒａｍ−４（閾値（倍率）パラメータ）の設定段階数がｓｅｔ−８を超えているか否かが判別される（ステップＳ１５９）。ｐａｒａｍ−４（閾値（倍率）パラメータ）の設定段階数がｓｅｔ−８を超えていないと判別された場合（ステップＳ１５９；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−４（閾値（倍率）パラメータ）の設定段階数がｓｅｔ−８を超えていると判別された場合（ステップＳ１５９；ＹＥＳ）、ｐａｒａｍ−５（閾値（基準位置）パラメータ）の設定段階数が＋１され、ｐａｒａｍ−４（閾値（倍率）パラメータ）がｓｅｔ−１に設定される（ステップＳ１６０）。
【００５４】
ステップＳ１６０の実行後、ｐａｒａｍ−５（閾値（基準位置）パラメータ）の設定段階数がｓｅｔ−６を超えているか否かが判別される（ステップＳ１６１）。ｐａｒａｍ−５（閾値（基準位置）パラメータ）の設定段階数がｓｅｔ−６を超えていないと判別された場合（ステップＳ１６１；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−５（閾値（基準位置）パラメータ）の設定段階数がｓｅｔ−６を超えていると判別された場合（ステップＳ１６１；ＹＥＳ）、ｐａｒａｍ−６（閾値（白黒）パラメータ）の設定段階数が＋１され、ｐａｒａｍ−５（閾値（基準位置）パラメータ）がｓｅｔ−１に設定される（ステップＳ１６２）。
【００５５】
ステップＳ１６２の実行後、ｐａｒａｍ−６（閾値（白黒）パラメータ）の設定段階数がｓｅｔ−２を超えているか否かが判別される（ステップＳ１６３）。ｐａｒａｍ−６（閾値（白黒）パラメータ）の設定段階数がｓｅｔ−２を超えていないと判別された場合（ステップＳ１６３；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−６（閾値（白黒）パラメータ）の設定段階数がｓｅｔ−２を超えていると判別された場合（ステップＳ１６３；ＹＥＳ）、ｐａｒａｍ−７（太り細り補正パラメータ）の設定段階数が＋１され、ｐａｒａｍ−６（閾値（白黒）パラメータ）がｓｅｔ−１に設定される（ステップＳ１６４）。
【００５６】
ステップＳ１６４の実行後、ｐａｒａｍ−７（太り細り補正パラメータ）の設定段階数がｓｅｔ−５を超えているか否かが判別される（ステップＳ１６５）。ｐａｒａｍ−７（太り細り補正パラメータ）の設定段階数がｓｅｔ−５を超えていないと判別された場合（ステップＳ１６５；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−７（太り細り補正パラメータ）の設定段階数がｓｅｔ−５を超えていると判別された場合（ステップＳ１６５；ＹＥＳ）、ｐａｒａｍ−８（ノイズパラメータ）の設定段階数が＋１され、ｐａｒａｍ−７（太り細り補正パラメータ）がｓｅｔ−１に設定される（ステップＳ１６６）。
【００５７】
ステップＳ１６６の実行後、ｐａｒａｍ−８（ノイズパラメータ）の設定段階数がｓｅｔ−５を超えているか否かが判別される（ステップＳ１６７）。ｐａｒａｍ−８（ノイズパラメータ）の設定段階数がｓｅｔ−５を超えていないと判別された場合（ステップＳ１６７；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−８（ノイズパラメータ）の設定段階数がｓｅｔ−５を超えていると判別された場合（ステップＳ１６７；ＹＥＳ）、ｐａｒａｍ−９（キャラクタ間差異パラメータ）の設定段階数が＋１され、ｐａｒａｍ−８（ノイズパラメータ）がｓｅｔ−１に設定される（ステップＳ１６８）。
【００５８】
ステップＳ１６８の実行後、ｐａｒａｍ−９（キャラクタ間差異パラメータ）の設定段階数がｓｅｔ−２を超えているか否かが判別される（ステップＳ１６９）。ｐａｒａｍ−９（キャラクタ間差異パラメータ）の設定段階数がｓｅｔ−２を超えていないと判別された場合（ステップＳ１６９；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−９（キャラクタ間差異パラメータ）の設定段階数がｓｅｔ−２を超えていると判別された場合（ステップＳ１６９；ＹＥＳ）、ｐａｒａｍ−１０（最大最小チェックパラメータ）の設定段階数が＋１され、ｐａｒａｍ−９（キャラクタ間差異パラメータ）がｓｅｔ−１に設定される（ステップＳ１７０）。
【００５９】
ステップＳ１７０の実行後、ｐａｒａｍ−１０（最大最小チェックパラメータ）の設定段階数がｓｅｔ−２を超えているか否かが判別される（ステップＳ１７１）。ｐａｒａｍ−１０（最大最小チェックパラメータ）の設定段階数がｓｅｔ−２を超えていないと判別された場合（ステップＳ１７１；ＮＯ）、ステップＳ１５３に移行される。ｐａｒａｍ−１０（最大最小チェック）の設定段階数がｓｅｔ−２を超えていると判別された場合（ステップＳ１７１；ＹＥＳ）、パラメータカスタマイズが失敗したと判断される（ステップＳ１７２）。ステップＳ１７２の実行後、第１の処理のステップＳ１６に移行される。
【００６０】
そして、ステップＳ１５で実行されたパラメータカスタマイズ処理の結果に基づいて、パラメータ組合せのカスタマイズが失敗したか否かが判別される（ステップＳ１６）。パラメータ組合せのカスタマイズが失敗したと判別された場合（ステップＳ１６；ＹＥＳ）、読取はＮＧであると判断される（ステップＳ１７）。パラメータ組合せのカスタマイズが成功したと判別された場合（ステップＳ１６；ＮＯ）、合計値算出処理が実行される（ステップＳ１８）。
【００６１】
次に、図１４を参照して、合計値算出処理について説明する。
先ず、パラメータカスタマイズ処理において設定された各デコードパラメータの設定段階数がＲＡＭ１３から取得される。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−１（マージンチェックパラメータ）の現在の設定段階数（設定数）に対応する点数が取得される（ステップＳ１８１）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８２）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−３（デリネータパラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８３）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−４（閾値（倍率）パラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８４）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−５（閾値（基準位置）パラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８５）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−６（閾値（白黒パラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８６）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−７（太り細り補正パラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８７）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−８（ノイズパラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８８）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−９（キャラクタ間ギャップパラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１８９）。そして、パラメータ点数テーブル９０が検索され、ｐａｒａｍ−１０（最大最小チェックパラメータ）の現在の設定数に対応する点数が取得される（ステップＳ１９０）。
【００６２】
ステップＳ１９０の実行後、ステップＳ１８１〜ステップＳ１９０において取得された点数が合計される（ステップＳ１９１）。そして、組合せ点数テーブル９１が検索され、ｐａｒａｍ−１〜ｐａｒａｍ−１０の各設定段階数の組合せに対応する点数倍率が取得される（ステップＳ１９２）。具体的には、設定された各デコードパラメータの設定段階数と一致する組合せＮｏ．が組合せ点数テーブル９１の中から検索され、検索された組合せＮｏ．に対応する点数倍率が取得される。そして、ステップＳ１９１において合計された合計点数に対し、ステップＳ１９２において取得された点数倍率の積算が行われる（ステップＳ１９３）。ステップＳ１９３の実行後、図１１に示す第１の処理のステップＳ１９に移行される。
【００６３】
そして、ステップＳ１８の合計値算出処理により算出された合計値（合計点数と点数倍率との積算値）が許容値よりも小さいか否かが判別される（ステップＳ１９）。ここで、許容値とは、カスタマイズパラメータの設定段階数でデコードを行うか否かを判別するための閾値であり、フラッシュメモリ１７に予め記憶されている値である。例えば、許容値が１０であり、合計値算出処理のステップＳ１９２において、組合せ点数テーブル９１の組合せＮｏ．２が検索されたとする。この場合、ｐａｒａｍ−１（マージンチェックパラメータ）は「ｓｅｔ−２」（点数２）、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）は「ｓｅｔ−１」（点数０）、ｐａｒａｍ−３（デリネータパラメータ）は、「ｓｅｔ−２」（点数２）、ｐａｒａｍ−４（閾値（倍率）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−５（閾値（基準位置）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−６（閾値（白黒）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−７（太り細り補正パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−８（ノイズパラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−９（キャラクタ間差異パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−１０（最大最小チェックパラメータ）は、「ｓｅｔ−１」（点数０）となる。したがって、合計点数は、「４」となる。また、組合せＮｏ．２における点数倍率は、１．０であるので、合計値＝４×１．０＝４となる。この場合、許容値「１０」よりも合計値「４」は、小さい値であるので、信頼できるデコードパラメータの組合せと判断され、デコード可能と判断される。
【００６４】
また、例えば、合計値算出処理のステップＳ１９２において、組合せ点数テーブル９１の組合せＮｏ．２６が検索されたとする。この場合、ｐａｒａｍ−１（マージンチェックパラメータ）は「ｓｅｔ−３」（点数４）、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）は「ｓｅｔ−２」（点数３）、ｐａｒａｍ−３（デリネータパラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−４（閾値（倍率）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−５（閾値（基準位置）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−６（閾値（白黒）パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−７（太り細り補正パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−８（ノイズパラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−９（キャラクタ間差異パラメータ）は、「ｓｅｔ−１」（点数０）、ｐａｒａｍ−１０（最大最小チェックパラメータ）は、「ｓｅｔ−１」（点数０）となる。したがって、合計点数は、「７」となる。また、組合せＮｏ．２６における点数倍率は、２．０であるので、合計値＝７×２．０＝１４となる。この場合、許容値「１０」よりも合計値「１４」は、大きい値であるので、誤読のリスクが高いデコードパラメータの組合せと判断され、デコード不可と判断される。
【００６５】
ステップＳ１９の実行後、カスタマイズされたパラメータを反映してデコードが実行される（ステップＳ２０）。具体的には、各デコードパラメータで選択された設定段階数に対応する設定内容に応じてデコードが実行される。例えば、各デコードパラメータの組合せが組合せ点数テーブル９１における組合せＮｏ．２に該当したとする。この場合、ｐａｒａｍ−１（マージンチェックパラメータ）の設定内容は「ｓｅｔ−２」より「４倍」、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定内容は「ｓｅｔ−１」より「無効」、ｐａｒａｍ−３（デリネータパラメータ）の設定内容は、「ｓｅｔ−２」より「無効」、ｐａｒａｍ−４（閾値（倍率）パラメータ）の設定内容は、「ｓｅｔ−１」より「黒＊１．５ 白＊１．５」、ｐａｒａｍ−５（閾値（基準位置）パラメータ）の設定内容は、「ｓｅｔ−１」より「ＬｅｆｔＧＢ：（白＋黒）／２」、ｐａｒａｍ−６（閾値（白黒）パラメータ）の設定内容は、「ｓｅｔ−１」より「白黒混合計算」、ｐａｒａｍ−７（太り細り補正パラメータ）の設定内容は、「ｓｅｔ−１」より「補正なし」、ｐａｒａｍ−８（ノイズパラメータ）の設定内容は、「ｓｅｔ−１」より「無効」、ｐａｒａｍ−９（キャラクタ間差異パラメータ）の設定内容は、「ｓｅｔ−１」より「有効」、ｐａｒａｍ−１０（最大最小チェックパラメータ）の設定内容は、「ｓｅｔ−１」より「有効」となる。この各デコードパラメータの設定内容で本ステップのデコードが実行される。
【００６６】
そして、デコード結果がＯＫか否かが判別される（ステップＳ２１）。具体的には、ステップＳ２０において実行されたデコードが完了したか否か（すなわち、なんらかの文字や数値への変換が完了したか否か）に基づいて、デコード結果がＯＫか否かが判別される。デコード結果がＯＫでないと判別された場合（ステップＳ２１；ＮＯ）、ステップＳ１５に移行される。デコード結果がＯＫであると判別された場合（ステップＳ２１；ＹＥＳ）、読取ＯＫであると判断される（ステップＳ２２）。ステップＳ２２の実行後、第１の処理は終了される。
【００６７】
以上、本実施の形態によれば、デコードパラメータの合計点数と点数倍率との積算値に基づいて、スキャナ部１６により読取データのデコードを実行する。これにより、例えば、印刷品質が悪いバーコードであっても、デコードパラメータの合計点数と点数倍率との積算値に基づいて読取データのデコードが実行されるので、デコードの信頼性を向上させることができ、バーコードの誤読を防止することができる。また、バーコードの誤読を防止することができるので、より多くのバーコードの読取りを行うことが可能となる。
【００６８】
また、デコードパラメータの合計点数と点数倍率との積算値が許容値を超える場合は、デコードを実行せず、デコードパラメータの合計点数と点数倍率との積算値が予め決められた許容値内の場合は、生成された組合せに基づいてデコードを実行する。これにより、デコードの信頼性の低いバーコード（すなわち、誤読の可能性の高いバーコード）のデコードは実行されないので、デコードの信頼性を向上させることができ、バーコードの誤読を防止することができる。
【００６９】
また、各デコードパラメータ設定段階に対応してデコードパラメータの点数をフラッシュメモリ１７に記憶する。これにより、設定段階に応じて、各デコードパラメータの点数を設定しているので、各デコードパラメータに応じたデコードの信頼性を合計値（合計点数と点数倍率との積算値）に反映することができる。その結果、デコードの信頼性を保持しつつ、デコードパラメータをカスタマイズする（デコードパラメータを組合せる）自由度を向上させることができる。
【００７０】
また、合計点数と点数倍率とを積算して合計値を算出する。これにより、デコードパラメータの組合せ毎に設定された点数倍率を用いて合計値を算出するので、正確な合計値の算出が可能となる。したがって、デコードの信頼性を向上させることができる。
【００７１】
（第２の実施の形態）
図１５〜図１８を参照して、本発明に係る第２の実施の形態を説明する。以下、バーコードリーダ１と同様な部分には同一の符号を付し、その詳細な説明を援用し、異なる部分について説明する。
【００７２】
バーコードリーダ１において、ＲＯＭ１５に第２のプログラムが記憶される。
【００７３】
出力手段、第１の調整手段、第１の記憶制御手段としてのＣＰＵ１１は、ＲＯＭ１５に記憶された第２のプログラムとの協働により、点数倍率とデコードパラメータの合計点数との積算値が許容値を超える場合に、デコードされたデコード結果を出力し、出力されたデコード結果に基づいて、デコードパラメータの点数及び点数倍率を調整し、調整されたデコードパラメータの点数をパラメータ点数テーブル９０に記憶させ、調整された点数倍率を組合せ点数テーブル９１に記憶させる。
デコード結果を出力するとは、読取データのデコード結果を表示部１４に表示することをいう。出力されたデコード結果に基づいてデコードパラメータの点数及び点数倍率を調整するとは、具体的には、表示されたデコード結果が正常なデータである場合、表示されたデコード結果のデコード時におけるデコードパラメータの点数及び点数倍率を下げることをいう。 
【００７４】
図１５及び図１６に第２の処理の流れを示す。第２の処理は、デコード結果を表示部１４に表示し、表示されたデータが正常なデータであるとの入力があった場合、デコードパラメータの点数及び点数倍率を調整する処理である。
【００７５】
例えば、入力部１２を介して第２の処理の実行指示が入力されたことをトリガとして、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第２のプログラムとＣＰＵ１１との協働で、第２の処理が実行される。
【００７６】
ステップＳ６１〜Ｓ６９は、第１の処理のステップＳ１１〜Ｓ１９と同様である。また、ステップＳ６５において実行されるパラメータカスタマイズ処理は、第１の処理のステップＳ１５１〜Ｓ１７２で実行される処理と同様である。また、ステップＳ６８において実行される合計値算出処理は、第１の処理のステップＳ１８１〜Ｓ１９３で実行される処理と同様である。
【００７７】
ステップＳ６９において、合計値が許容値よりも小さいと判別された場合（ステップＳ６９；ＹＥＳ）、カスタマイズされたパラメータを反映してデコードが実行される（ステップＳ７０）。そして、デコード結果がＯＫであるか否かが判別される（ステップＳ７１）。デコード結果がＯＫでないと判別された場合（ステップＳ７１；ＮＯ）、ステップＳ６５に移行される。デコード結果がＯＫであると判別された場合（ステップＳ７１；ＹＥＳ）、読取ＯＫと判断される（ステップＳ７２）。ステップＳ７２の実行後、第２の処理は終了される。
【００７８】
ステップＳ６９において、合計値が許容値よりも大きい値であると判別された場合（ステップＳ６９；ＮＯ）、カスタマイズされたパラメータを反映してデコードが実行される（ステップＳ７３）。そして、デコード結果がＯＫか否かが判別される（ステップＳ７４）。デコード結果がＯＫでないと判別された場合（ステップＳ７４；ＮＯ）、ステップＳ６５に移行される。デコード結果がＯＫであると判別された場合（ステップＳ７４；ＹＥＳ）、デコードデータが表示部１４に表示される（ステップＳ７５）。例えば、デコードされた文字や数値等が表示部１４に表示される。
【００７９】
ステップＳ７４の実行後、表示部１４に表示された表示データに対して、正常なデータであるか、それとも間違ったデータであるか、ユーザによる入力を待機する待機状態となる（ステップＳ７６）。そして、正常なデータであるとの入力があるか否かが判別される（ステップＳ７７）。例えば、ユーザにより、ステップＳ７６において表示部１４に表示された表示データが参照され、正常な値であると判断された場合は、正常な結果であるとの入力が入力部１２を介して受け付けられる。一方、ユーザにより表示データが正常な値でないと判断された場合は、正常な値でないとの入力が入力部１２を介して受け付けられる。
【００８０】
ステップＳ７７において、正常な結果であるとの入力がないと判別された場合（ステップＳ７７；ＮＯ）、ステップＳ６５に移行される。ステップＳ７７において、正常な結果であるとの入力の受付があると判別された場合（ステップＳ７７；ＹＥＳ）、使用中のパラメータ組合せに対する点数及び点数倍率が下げられる（ステップＳ７８）。例えば、ステップＳ６８の合計値算出処理において、組合せＮｏ．２６の組合せが検索されたとする。この場合において、ステップＳ７７で正常な結果であるとの入力があると判別されると、使用中のデコードパラメータの組合せに対する点数及び点数倍率が下げられる。例えば、デコード時において、図１７（Ａ）に示すように、パラメータ点数テーブル９０のｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数ｓｅｔ−３における点数が「４」、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数ｓｅｔ−２における点数が「３」であったとする。この場合、図１７（Ｂ）に示すように、パラメータ点数テーブル９０のｐａｒａｍ−１（マージンチェックパラメータ）の設定段階数ｓｅｔ−３における点数が「３」、ｐａｒａｍ−２（キャラクタ間ギャップパラメータ）の設定段階数ｓｅｔ−２における点数が「２」に調整される。また、図１８に示すように、組合せ倍率テーブル９１の組合せＮｏ．２６における点数倍率が２．０から１．９に調整される。調整されたデコードパラメータ点数はパラメータ点数テーブル９０、点数倍率は組合せ点数テーブル９１にそれぞれ反映され、更新記憶される。調整後のパラメータ点数テーブル９０及び組合せ点数テーブル９１は、以後のバーコードの読取り時に使用される。そして、ステップＳ７８の実行後、ステップＳ６５に移行される。
【００８１】
以上、本実施の形態によれば、合計値が許容値を超える場合、デコード結果を表示部１４に表示する。これにより、ユーザは、表示部１４に表示されたデコード結果を確認し、デコードを行うか否かを判断することができる。したがって、ユーザの判断に応じてデコードを行うことができる。また、ユーザの判断に応じてデコードを行うことができるので、例えば、正常なデコード結果が得られているのに、算出された合計値が許容値を超えている場合の読取データに対してもデコードを行うことが可能となり、バーコードの読取り範囲を広げることが可能となる。
【００８２】
また、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことができる。これにより、デコードパラメータの点数及び点数倍率の調整後は、ユーザの判断が反映されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことが可能となる。
【００８３】
（第３の実施の形態）
図１９を参照して、本発明に係る第３の実施の形態を説明する。以下、バーコードリーダ１と同様な部分には同一の符号を付し、その詳細な説明を援用し、異なる部分について説明する。
【００８４】
バーコードリーダ１において、ＲＯＭ１５に第３のプログラムが記憶される。
【００８５】
第２のデコード制御手段、第２の調整手段、第２の記憶制御手段としてのＣＰＵ１１は、ＲＯＭ１５に記憶された第３のプログラムとの協働により、生成された組合せに基づいて、読取データのデコードを実行させるか否かを制御し、読取データのデコードが実行された場合、当該デコードされたデコード結果とバーコードが正当にデコードされたデコード結果とが一致するか否かを比較し、当該比較結果に基づいて、デコードパラメータの点数及び点数倍率を調整し、調整されたデコードパラメータの点数をパラメータ点数テーブル９０に記憶させ、調整された点数倍率を組合せ点数テーブル９１に記憶させる。
バーコードが正当にデコードされたデコード結果とは、ダメージバーコードのサンプルであるサンプルバーコードが正しく読めた時（デコードできた時）の正しいデコード結果のことをいう。
比較結果に基づいて、デコードパラメータの点数及び点数倍率を調整するとは、例えば、読取データがデコードされたデコード結果と、サンプルバーコードが正しく読めたときの正しいデコード結果とが一致する場合、読取データのデコード時におけるデコードパラメータの点数及び点数倍率を下げることをいう。また、読取データがデコードされたデコード結果と、サンプルバーコードが正しく読めたときの正しいデコード結果とが一致しない場合、読取データのデコード時におけるデコードパラメータの点数及び点数倍率を上げることをいう。
【００８６】
図１９に第３の処理の流れを示す。第３の処理は、デコードパラメータのカスタマイズ（組合せ）が成功したか否かに基づいて、デコード実行を制御し、デコードを実行した場合、デコード結果とサンプルコードのデコード結果とを比較してデコードパラメータの点数及び点数倍率を調整する処理である。
【００８７】
例えば、入力部１２を介して第３の処理の実行指示が入力されたことをトリガとして、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開された第３のプログラムとＣＰＵ１１との協働で、第３の処理が実行される。
【００８８】
先ず、ダメージバーコードのサンプルであるサンプルバーコードが正しく読めた時の正しいデコード結果（文字又は数値）をフラッシュメモリ１７に記憶させる（ステップＳ８１）。そして、ユーザから入力部１２を介してバーコード読取りの開始キーが入力されることにより、バーコードの読取りが開始される（ステップＳ８２）。そして、ステップＳ８２により読取られた読取データが取得される（ステップＳ８３）。そして、現在のカスタマイズパラメータの組合せが初期化される（ステップＳ８４）。そして、パラメータカスタマイズ処理が実行される（ステップＳ８５）。パラメータカスタマイズ処理は、第１の処理のステップＳ１５１〜Ｓ１７２で実行される処理と同様である。
【００８９】
ステップＳ８５の実行後、カスタマイズが失敗したか否かが判別される（ステップＳ８６）。カスタマイズが失敗したと判別された場合（ステップＳ８６；ＹＥＳ）、第３の処理は終了される。
【００９０】
ステップＳ８６において、カスタマイズが成功したと判別された場合（ステップＳ８６；ＮＯ）、カスタマイズされたパラメータを反映してデコードが実行される（ステップＳ８７）。そして、デコード結果がＯＫか否かが判別される（ステップＳ８８）。デコード結果がＯＫでないと判別された場合（ステップＳ８８；ＮＯ）、ステップＳ８５に移行される。デコード結果がＯＫであると判別された場合（ステップＳ８８；ＹＥＳ）、ステップＳ８７においてデコードされたデコード結果がステップＳ８１において記憶された正しいデコード結果と一致するか否かが判別される（ステップＳ８９）。具体的には、ステップＳ８７においてデコードされた結果（例えば、文字や数値のデータ）がステップＳ８１においてフラッシュメモリ１７に記憶された正しいデコード結果（例えば、文字や数値のデータ）と一致するか否かが判別される。
【００９１】
ステップＳ８９において、デコード結果が正しいデコード結果と一致すると判別された場合（ステップＳ８９；ＹＥＳ）、使用中のパラメータ組合せに対する点数及び倍率が下げられる（ステップＳ９０）。例えば、図１７及び図１８で説明したように、デコードパラメータの点数及び点数倍率が下げられる。ステップＳ９０の実行後、ステップＳ８５に移行される。ステップＳ８９において、デコード結果が正しいデコード結果と一致しないと判別された場合（ステップＳ８９；ＮＯ）、使用中のパラメータ組合せに対する点数及び倍率が上げられる（ステップＳ９１）。すなわち、デコードパラメータの点数及び点数倍率が上げられる。デコードパラメータ点数及び点数倍率が調整（すなわち、デコードパラメータ点数及び点数倍率を上げたり下げたり）されると、調整後のデコードパラメータ点数はパラメータ点数テーブル９０、点数倍率は組合せ点数テーブル９１にそれぞれ反映され、更新記憶される。調整後のパラメータ点数テーブル９０及び組合せ点数テーブル９１は、以後のバーコードの読取り時に使用される。そして、ステップＳ９１の実行後、ステップＳ８５に移行される。
【００９２】
以上、本実施の形態によれば、デコードされたデコード結果と予め読取られたバーコード（サンプルコード）の正しいデコード結果とが一致するか否かを比較して、デコードパラメータの点数及び組点数倍率を調整するので、正確なデコードを行うことができ、バーコードの誤読を防止することができる。また、バーコードの誤読を防止できるので、バーコードの読取り範囲を広げることができる。
【００９３】
また、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことができる。これにより、デコードパラメータの点数及び点数倍率の調整後は、調整されたデコードパラメータの点数及び点数倍率を用いてデコードを行うことが可能となる。
【００９４】
なお、上記実施の形態における記述は、本発明に係るコード読取装置及びプログラムの一例であり、これに限定されるものではない。 
【００９５】
例えば、上記実施の形態では、デコードパラメータカスタマイズ処理において、設定段階数を変換させる際、設定段階数を「＋１」（すなわち、デコードの判定を緩く）することとしたがこれに限定されるものではない。例えば、設定段階数を「−１」（すなわち、デコードの判定を厳しく）こととしてもよい。
具体的には、例えば、パラメータテーブル３０のｐａｒａｍ−１（マージンチェックパラメータ）における設定段階数に「ｓｅｔ−２Ａ」、「ｓｅｔ−３Ａ」を新たに設け、「ｓｅｔ−２Ａ」における左右マージン幅を「８倍」、「ｓｅｔ−３Ａ」における左右マージン幅を「１０倍」とする。また、パラメータ点数テーブル９０の「ｓｅｔ−２Ａ」における点数を「−２」、「ｓｅｔ−３Ａ」における点数を「−４」とする。この場合、デコードの判定を厳しくするように変化させると、「ｓｅｔ−１」→「ｓｅｔ−２Ａ」→「ｓｅｔ−３Ａ」となる。したがって、左右マージン幅を表す倍率は６倍→８倍→１０倍となり、判定はより厳しい方向にシフトする。また、デコードパラメータの点数は０→−２→−４となるので、結果として算出されるデコードパラメータの点数の合計値は減少する。このとき、デコードパラメータの合計点数が減少すると、他のデコードパラメータの設定段階数を上げる余裕が生まれるので、他のデコードパラメータを緩く設定できるようにしても良い。
【００９６】
また、図９に示したパラメータ点数テーブル９０における設定段階数は一例であり、これに限定されるものではない。例えば、デコードパラメータ毎に、設定段階数を増やしたり、減らしたりしてもよい。
【００９７】
また、許容値を予め決められた値としたが、これに限定されるものではない。例えば、ユーザにより許容値の設定が可能となるようにしてもよい。
【００９８】
また、各テーブルにおけるデコードパラメータの値は、一例でありこれに限定されるものではない。例えば、バーコードリーダ１の性能や読取り環境、バーコードの印字条件に応じて最適化した値を使用してもよい。
【００９９】
また、パラメータの種類は、一例でありこれに限定されるものではない。例えば、読取り性能を向上させる可能性のあるデコードパラメータが他にある場合は、それらのデコードパラメータを追加してもよい。
【０１００】
また、上記実施の形態では、バーコードリーダ１はバーコードを読取ることとしたが、これに限定されるものではない。例えば、２次元コードを読取ることとしてもよい。
【０１０１】
その他、上記の実施の形態におけるバーコードリーダ１の細部構成及び詳細動作に関しても、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【符号の説明】
【０１０２】
１    バーコードリーダ
１１  ＣＰＵ
１２  入力部
１３  ＲＡＭ
１４  表示部
１５  ＲＯＭ
１６  スキャナ部
１７  フラッシュメモリ
１８  電源部
１９  バス
【図１】
0005534053.tif 000002
【図２】
0005534053.tif 000003
【図３】
0005534053.tif 000004
【図７】
0005534053.tif 000005
【図８】
0005534053.tif 000006
【図９】
0005534053.tif 000007
【図１０】
0005534053.tif 000008
【図１１】
0005534053.tif 000009
【図１２】
0005534053.tif 000010
【図１３】
0005534053.tif 000011
【図１４】
0005534053.tif 000012
【図１５】
0005534053.tif 000013
【図１６】
0005534053.tif 000014
【図１７】
0005534053.tif 000015
【図１８】
0005534053.tif 000016
【図１９】
0005534053.tif 000017
【図４】
0005534053.tif 000018
【図５】
0005534053.tif 000019
【図６】
0005534053.tif 000020