(57)【特許請求の範囲】
【請求項１】
媒体の表面を光学的に読み取ってバーコードの少なくとも１キャラクタのデータを生成する読取部と、
前記データを記憶するメモリと、
該メモリに記憶された前記データに対して、複数の走査線を設定する走査線設定部と、
前記走査線に対応する前記データから、それぞれ前記バーコードを復号する復号処理部と、
前記走査線に対応する前記データから、前記バーコードの復号誤りの発生し難さを示す読み取り信頼度を演算し、該読み取り信頼度を用いて最も信頼性が高い前記走査線を判定する判定部と、
を備え、
前記判定部は、
前記走査線設定部で設定された複数の走査線のそれぞれについて、キャラクタ単位で前記読み取り信頼度を算出する読み取り信頼度算出部と、
該読み取り信頼度算出部で算出した読み取り信頼度の中で最も良い値を判定する読み取り信頼度判定部と、
前記最も良い値の読み取り信頼度に対応する走査線を判定する走査線判定部と、
を備え、
前記読み取り信頼度算出部は、
前記複数の走査線のそれぞれについて、前記バーコードのエレメントの幅に基づき算出されるエレメントデータごとに、読み取り誤りの発生し難さを示す余裕幅を算出する余裕幅算出部と、
それぞれの前記走査線ごとに、対応する前記余裕幅のうち最も小さいものを選択して、該走査線の前記読み取り信頼度に決定する読み取り信頼度決定部と、
を備え、
前記復号処理部は、
前記走査線の各々に対応する前記データから少なくとも１キャラクタを抽出する手段と、
それぞれの前記走査線ごとに、前記１キャラクタのエレメントデータの計測値ｅ（ｉ）を算出するともに、前記１キャラクタの全長の計測値Ｓを算出する手段と、
それぞれの前記走査線ごとに、抽出した前記１キャラクタの全長の単位モジュール数ｍと前記全長の計測値Ｓとの比ｍ／Ｓを算出する手段と、
ｔ（ｉ）＝ｅ（ｉ）×ｍ／Ｓを算出して、該ｔ（ｉ）の小数点第１位を四捨五入することにより、エレメントデータの正規化値Ｅ（ｉ）を算出する手段と
該エレメントデータの正規化値Ｅ（ｉ）に基づいてキャラクタ復号を実行する手段と、
を備え、
前記余裕幅算出部は、
前記エレメントデータの正規化値Ｅ（ｉ）を得ることができるｔ（ｉ）の下限境界値を‘Ｅ（ｉ）−０．５’、上限境界値を‘Ｅ（ｉ）＋０．５’として、ｔ（ｉ）と下限境界値との乖離の絶対値およびｔ（ｉ）と上限境界値との乖離の絶対値のうちいずれか小さい方を、ｔ（ｉ）の余裕幅として算出する手段と、
を備えることを特徴とするバーコード読取装置。
【請求項２】
前記エレメントデータは前記バーコードのエッジ対類似エッジ間距離であることを特徴とする請求項１に記載のバーコード読取装置。
【請求項３】
媒体の表面を光学的に読み取ってバーコードの少なくとも１キャラクタのデータを生成する第１ステップと、
前記データをメモリに記憶させる第２ステップと、
前記メモリに記憶された前記データに対して、複数の走査線を設定する第３ステップと、
前記走査線に対応する前記データから、それぞれ前記バーコードを復号する第４ステップと、
前記走査線に対応する前記データから、前記バーコードの復号誤りの発生し難さを示す読み取り信頼度を演算し、該読み取り信頼度を用いて最も信頼性が高い前記走査線を判定する第５ステップと、
を備え、
前記第５ステップは、
前記第３ステップで設定された複数の走査線のそれぞれについて、キャラクタ単位で前記読み取り信頼度を算出する読み取り信頼度算出ステップと、
該読み取り信頼度ステップで算出した読み取り信頼度の中で最も良い値を判定する読み取り信頼度判定ステップと、
前記最も良い値の読み取り信頼度に対応する走査線を判定する走査線判定ステップと、
を備え、
前記読み取り信頼度算出ステップは、
前記複数の走査線のそれぞれについて、前記バーコードのエレメントの幅に基づき算出されるエレメントデータごとに、読み取り誤りの発生し難さを示す余裕幅を算出する余裕幅算出ステップと、
それぞれの前記走査線ごとに、対応する前記余裕幅のうち最も小さいものを選択して、該走査線の前記読み取り信頼度に決定する読み取り信頼度決定ステップと、
を備え、
前記第４ステップは、
前記走査線に対応する前記データから少なくとも１キャラクタを抽出するステップと、
それぞれの前記走査線ごとに、前記１キャラクタのエレメントデータの計測値ｅ（ｉ）を算出するとともに、前記１キャラクタの全長の計測値Ｓを算出するステップと、
それぞれの前記走査線ごとに、抽出した前記１キャラクタの全長の単位モジュール数ｍと前記全長の計測値Ｓとの比ｍ／Ｓを算出するステップと、
ｔ（ｉ）＝ｅ（ｉ）×ｍ／Ｓを算出して、該ｔ（ｉ）の小数点第１位を四捨五入することにより、エレメントデータの正規化値Ｅ（ｉ）を算出するステップと、
該エレメントデータの正規化値Ｅ（ｉ）に基づいてキャラクタ復号を実行するステップと、
を備え、
前記余裕幅算出ステップは、
前記エレメントデータの正規化値Ｅ（ｉ）を得ることができるｔ（ｉ）の下限境界値を‘Ｅ（ｉ）−０．５’、上限境界値を‘Ｅ（ｉ）＋０．５’として、ｔ（ｉ）と下限境界値との乖離の絶対値およびｔ（ｉ）と上限境界値との乖離の絶対値のうちいずれか小さい方を、ｔ（ｉ）の余裕幅として算出する、
ことを特徴とするバーコード読取方法。
【請求項４】
前記エレメントデータは前記バーコードのエッジ対類似エッジ間距離であることを特徴とする請求項３に記載のバーコード読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコードを光学的に読み取って復号するバーコード読取装置およびバーコード読取方法に関する。
【背景技術】
【０００２】
一般に、一次元のバーコードは、複数のバーおよびスペース（または黒バーおよび白バー）をエレメントとして交互に配置してなるもので、各バーおよび各スペースの幅方向の情報（例えば、幅の大小やその配列など）に基づいて数字，アルファベット，記号等からなるキャラクタ情報を表すことができる。バーコードを読取装置で読み取ることによって、ＰＯＳシステム等の端末への所要情報の入力を、簡単に行うことができる。
【０００３】
例えば、商品管理や物流管理等では、各商品の識別情報が、バーコード化されて、その商品或いは包装等に付加される。そして、このバーコードを、レーザスキャナやＣＣＤ(Charge Coupled Device) センサ、ＣＭＯＳ(Complementary Metal Oxide Semiconductor) センサ等の光学読取装置で光学的に読み取り、さらに復号することで、識別情報が自動認識される。
【０００４】
近年、例えば個人情報をカードに記録する手段としても、バーコードを利用する場合がある。このような場合に、カードの同一面に、文字情報等およびバーコードの両方を付加することがある。このため、光学読取装置として、カードの全面をスキャンして画像データに変換した後で、この画像データからバーコードが表示された領域を判定するタイプのものも、登場している。
【０００５】
バーコードは光学的に読み取られるため、表示面の汚れやかすれ等が、読み取り誤りの原因になるおそれがある。このような読み取り誤りを低減する技術として、例えば、下記特許文献１、２の技術が知られている。
【０００６】
特許文献１には、バーコードに複数の走査線を設定し、正誤判定で正しいと判定されるまで走査線を変えながら読み取りを繰り返し、さらに、すべての走査線について読み取りが誤りであった場合はバーコードの下に印字された文字を文字認識部で認識する技術が開示されている（特許文献１の例えば段落［００３３］〜［００３７］参照）。
【０００７】
特許文献２には、バーコードに複数の走査線を設定してそれぞれを複数のブロックに分割し、正誤判定で正しいと判定されたブロックを組み合わせることによって、汚れやかすれ等の影響が無い走査線を得る技術が開示されている（特許文献２の例えば段落［００１６］参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平９−２３７３１２号公報
【特許文献２】特開２００１−４３３００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の特許文献１、２に記載されているように、バーコードの読み取りの正誤判定は、各バー、各スペースの幅やこれらの配列がバーコード規格に適合しているか否かによって行われる（特許文献１の段落［００２２］、特許文献２の段落［００１４］参照）。しかし、このような判定方法で、読み取り結果が正しいとの判定結果を得た場合でも、実際には読み取り誤りが発生している可能性がある。正誤判定結果の信頼性は、例えば、バーコードの表示面に汚れやかすれ等がある場合に低くなる。そして、正誤判定の信頼性が低いほど、読み取り結果に対する信頼性も低くなる。このため、特許文献１、２の技術では、バーコードの復号結果に対して十分な信頼性を確保することが難しいという問題がある。
【００１０】
また、特許文献１の技術では、正しい読み取り結果が得られなかったときにバーコードの下に印字された文字を認識するが、一般に、文字認識はバーコードの復号に比べて処理負荷が大きい。このため、特許文献１の技術には、処理時間が長くなったり、高性能のプロセッサ等が必要になって高価格化を招いたりするという欠点がある。
【００１１】
さらに、特許文献２の技術にも、正誤判定で正しいと判定されたブロックを組み合わせる処理が必要となるため、処理負荷が増大して、処理時間の増大や装置の高価格化を招くという欠点がある。
【００１２】
本発明の課題は、処理負荷や処理時間を増大させることなく、バーコードの復号結果に対する信頼性を向上させることができる、バーコード読取装置およびバーコード読取方法を提供することにある。
【課題を解決するための手段】
【００１３】
請求項１に係るバーコード読取装置は、媒体の表面を光学的に読み取ってバーコードの少なくとも１キャラクタのデータを生成する読取部と、前記データを記憶するメモリと、該メモリに記憶された前記データに対して、複数の走査線を設定する走査線設定部と、前記走査線に対応する前記データから、それぞれ前記バーコードを復号する復号処理部と、前記走査線に対応する前記データから、前記バーコードの復号誤りの発生し難さを示す読み取り信頼度を演算し、該読み取り信頼度を用いて最も信頼性が高い前記走査線を判定する判定部とを備え、前記判定部は、前記走査線設定部で設定された複数の走査線のそれぞれについて、キャラクタ単位で前記読み取り信頼度を算出する読み取り信頼度算出部と、該読み取り信頼度算出部で算出した読み取り信頼度の中で最も良い値を判定する読み取り信頼度判定部と、前記最も良い値の読み取り信頼度に対応する走査線を判定する走査線判定部と、を備え、前記読み取り信頼度算出部は、前記複数の走査線のそれぞれについて、前記バーコードのエレメントの幅に基づき算出されるエレメントデータごとに、読み取り誤りの発生し難さを示す余裕幅を算出する余裕幅算出部と、それぞれの前記走査線ごとに、対応する前記余裕幅のうち最も小さいものを選択して、該走査線の前記読み取り信頼度に決定する読み取り信頼度決定部と、を備え、前記復号処理部は、前記走査線の各々に対応する前記データから少なくとも１キャラクタを抽出する手段と、それぞれの前記走査線ごとに、前記１キャラクタのエレメントデータの計測値ｅ（ｉ）を算出するともに、前記１キャラクタの全長の計測値Ｓを算出する手段と、それぞれの前記走査線ごとに、抽出した前記１キャラクタの全長の単位モジュール数ｍと前記全長の計測値Ｓとの比ｍ／Ｓを算出する手段と、ｔ（ｉ）＝ｅ（ｉ）×ｍ／Ｓを算出して、該ｔ（ｉ）の小数点第１位を四捨五入することにより、エレメントデータの正規化値Ｅ（ｉ）を算出する手段と、該エレメントデータの正規化値Ｅ（ｉ）に基づいてキャラクタ復号を実行する手段とを備え、前記余裕幅算出部は、前記エレメントデータの正規化値Ｅ（ｉ）を得ることができるｔ（ｉ）の下限境界値を‘Ｅ（ｉ）−０．５’、上限境界値を‘Ｅ（ｉ）＋０．５’として、ｔ（ｉ）と下限境界値との乖離の絶対値およびｔ（ｉ）と上限境界値との乖離の絶対値のうちいずれか小さい方を、ｔ（ｉ）の余裕幅として算出する手段を備える、ことを特徴とする。
【００１７】
請求項２に係るバーコード読取装置は、請求項１の構成に加え、前記エレメントデータは前記バーコードのエッジ対類似エッジ間距離であることを特徴とする。
【００１８】
請求項３に係るバーコード読取方法は、媒体の表面を光学的に読み取ってバーの少なくとも１キャラクタのデータを生成する第１ステップと、前記データをメモリに記憶させる第２ステップと、前記メモリに記憶された前記データに対して、複数の走査線を設定する第３ステップと、前記走査線に対応する前記データから、それぞれ前記バーコードを復号する第４ステップと、前記走査線に対応する前記データから前記バーコードの復号誤りの発生し難さを示す読み取り信頼度を演算し、該読み取り信頼度を用いて最も信頼性が高い前記走査線を判定する第５ステップとを備え、前記第５ステップは、前記第３ステップで設定された複数の走査線のそれぞれについて、キャラクタ単位で前記読み取り信頼度を算出する読み取り信頼度算出ステップと、該読み取り信頼度算出ステップで算出した読み取り信頼度の中で最も良い値を判定する読み取り信頼度判定ステップと、前記最も良い値の読み取り信頼度に対応する走査線を判定する走査線判定ステップとを備え、前記読み取り信頼度算出ステップは、前記複数の走査線のそれぞれについて、前記バーコードのエレメントの幅に基づき算出されるエレメントデータごとに、読み取り誤りの発生し難さを示す余裕幅を算出する余裕幅算出ステップと、それぞれの前記走査線ごとに、対応する前記余裕幅のうち最も小さいものを選択して、該走査線の前記読み取り信頼度に決定する読み取り信頼度決定ステップと、を備え、前記第４ステップは、前記走査線に対応する前記データから少なくとも１キャラクタを抽出するステップと、それぞれの前記走査線ごとに、前記１キャラクタのエレメントデータの計測値ｅ（ｉ）を算出するとともに、前記１キャラクタの全長の計測値Ｓを算出するステップと、それぞれの前記走査線ごとに、抽出した前記１キャラクタの全長の単位モジュール数ｍと前記全長の計測値Ｓとの比ｍ／Ｓを算出するステップと、ｔ（ｉ）＝ｅ（ｉ）×ｍ／Ｓを算出して、該ｔ（ｉ）の小数点第１位を四捨五入することにより、エレメントデータの正規化値Ｅ（ｉ）を算出するステップと、該エレメントデータの正規化値Ｅ（ｉ）に基づいてキャラクタ復号を実行するステップと、を備え、前記余裕幅算出ステップは、前記エレメントデータの正規化値Ｅ（ｉ）を得ることができるｔ（ｉ）の下限境界値を‘Ｅ（ｉ）−０．５’、上限境界値を‘Ｅ（ｉ）＋０．５’として、ｔ（ｉ）と下限境界値との乖離の絶対値およびｔ（ｉ）と上限境界値との乖離の絶対値のうちいずれか小さい方を、ｔ（ｉ）の余裕幅として算出する、ことを特徴とする。
【００２２】
請求項４に係るバーコード読取方法は、請求項３の構成に加え、前記エレメントデータは前記バーコードのエッジ対類似エッジ間距離であることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、処理負荷や処理時間を増大させることなく、バーコードの復号結果に対する信頼性を向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態に係るバーコード読取装置の構成を示す概念図である。
【図２】実施の形態でバーコードに複数の走査線を設定する処理を説明するための概念図である。
【図３】実施の形態に係る読取処理部の動作を説明するための概略フローチャートである。
【図４】実施の形態に係る復号処理部の動作を説明するための概略フローチャートである。
【図５】（Ａ）、（Ｂ）ともに実施の形態に係る復号処理部の動作を説明するための概念的波形図である。
【図６】実施の形態に係る復号処理部の動作を説明するための概略フローチャートである。
【図７】実施の形態に係る復号処理部がデータコードワードを取得する方法を説明するための概念図である。
【発明を実施するための形態】
【００２５】
本発明の一実施形態について、図面を用いて説明する。
［バーコードおよびバーコード読取装置の構成］
【００２６】
図１は、本実施形態に係るバーコード読取装置の構成を示す概念図である。図２は、バーコードの一種であるＣＯＤＥ１２８と呼ばれるバーコードの一例を示す概念図である。
（バーコード）
【００２７】
まず、本実施形態で使用するバーコードを、図１および図２を用いて説明する。
図１および２において、符号１５１はバーコードであり、本実施形態では、バーコード規格ＣＯＤＥ１２８に基づくバーコード（以下、バーコード１５１という）である。バーコード１５１は、記録媒体１５０の表面の所定位置に印刷などにより形成されている。
【００２８】
バーコード１５１は、図２に示すように、エレメントである各バー２０１および各スペース２０２の幅方向の配列によって情報が記録され、各エレメントの幅方向の情報（例えば、エレメントの幅の大小やその配列など）に基づいて、数字，アルファベット，記号等のキャラクタ情報を表すもので、一次元バーコードである。換言すれば、一次元バーコードは、連続する複数のバー２０１およびスペース２０２の幅方向にバーコードを付与しており、各バー２０１およびスペース２０２の高さ方向には情報を付与していない。
【００２９】
さらに、図２に示すように、バーコード１５１は、スタートマーク（スタートキャラクタ）と、データ（‘８６'、データキャラクタ）と、チェックデジット（‘ＣＨＫ'、チェックキャラクタ）と、ストップマーク（ストップキャラクタ）と、で構成されている。これらは、それぞれがバーコードの最小の情報単位である１キャラクタを構成している。具体的には、スタートマーク、データキャラクタおよびチェックデジットは、３本のバー２０１と３本のスペース２０２とを交互に配置することで１キャラクタとして構成されている。また、ストップマークは４本のバー２０１と３本のスペース２０２とを交互に配置することで１キャラクタとして構成されている。
【００３０】
また、各バーおよび各スペース(すなわち、各エレメント)の幅は、「単位モジュール」と呼ばれる基本幅を最小単位として、その整数倍となっている。本実施形態では、バーコード１５１の各バーおよび各スペースの幅は、基本幅の１、２、３、４倍（すなわち、１乃至４モジュール）のいずれかである。そして、最小の情報単位である１キャラクタの全長（１キャラクタにおける各バーおよび各スペースの幅の和）は、基本幅（単位モジュール）の整数倍で構成されている。
【００３１】
具体的には、ストップマーク以外のストップマーク、データキャラクタ、チェックデジット（３本のバーと３本のスペース）の全長は基本幅（単位モジュール）の１１倍（１１モジュール）で構成され、ストップマーク（４本のバーと３本のスペース）の全長は基本幅（単位モジュール）の１３倍（１３モジュール）で構成されている。
【００３２】
なお、図２に示すバーコード１５１（ＣＯＤＥ１２８）では、データキャラクタ（‘１２'）は１キャラクタ（１情報単位）のみとなっているが、説明を簡単にするためであり、バーコード１５１の情報データとしてデータキャラクタが格納される領域は可変長であり、スタートマークの後には複数のデータキャラクタを格納することができる。
（バーコード読取装置）
【００３３】
次にこのバーコード１５１を読み取るバーコード読取装置１００について説明する。
【００３４】
図１に示したように、本実施形態のバーコード読取装置１００は、媒体搬送機構１１０と、読取部としての撮像部１２０と、メモリとしての画像メモリ１３０と、読取処理部１４０とを備えている。媒体搬送機構１１０は、搬送路１１１と、搬送ガイド１１２、１１３とを備えている。記録媒体１５０の画像データを読み取る際には、記録媒体１５０が、図示しない搬送ローラ等の搬送手段により、矢印１１４で示す搬送方向に、所定速度で移動する。その際同時に、記録媒体１５０の表面に形成されているバーコード１５１が撮像部１２０によって読み取られるようになっている。
【００３５】
撮像部１２０は、記録媒体１５０の表面を光学的に読み取って、バーコード１５１のデータを生成する読取部である。撮像部１２０は、媒体搬送機構１１０に固定されており、搬送方向１１４と直角な方向に配列された光電変換素子列１２１を有している。この撮像部１２０は、記録媒体１５０の表面反射光を受光してアナログ電気信号に変換し、さらに、このアナログ電気信号の値（輝度を示す値）をデジタル多値情報の画像データに変換する。例えば、アナログ電気信号を８ビットのデジタル多値情報の画像データに変換する場合、かかるアナログ電気信号が示す輝度は、２５６階調のデジタル輝度値（すなわち、０〜２５５の整数値で表される輝度値）に変換される。記録媒体１５０を一定速度で搬送しながら、このような動作を各光電変換素子が一定周期で繰り返すことにより、２次元配列の画素からなるデジタル多値情報の画像データ（以下、多値画像データという）を得ることができる。この多値画像データには、バーコード１５１の多値画像データが含まれる。なお、撮像部１２０としては、例えば一次元の密着型イメージセンサ等を採用することができる。
【００３６】
画像メモリ１３０は、バーコード１５１を含む多値画像データを一時的に記憶するメモリである。本実施形態では、画像データを有限個の画素の行列とみなし、撮像部１２０により生成された多値画像データを画素ごとに記憶する。なお、画像メモリ１３０としては、例えばＲＡＭ(Random Access Memory)、ＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)、ＤＤＲ  ＳＤＲＡＭ(Double-Data-Rate Synchronous Dynamic Random Access Memory)、ＲＤＲＡＭ(Rambus Dynamic Random Access Memory)等、画像データを記憶できるものなら何でも使用することができる。
【００３７】
読取処理部１４０は、多値画像データのバーコード１５１を構成する複数のエレメントの配列および各エレメントの幅寸法等のエレメントの幅方向の情報を算出し、このエレメントの幅方向の情報に基づいて、数字，アルファベット，記号等からなるキャラクタ情報に復号する機能を有している。読取処理部１４０は、位置決定部１４１と、走査線設定部１４２と、復号処理部１４３と、判定部１４４とを備えている。
【００３８】
位置決定部１４１は、画像メモリ１３０の多値画像データから、バーコード１５１の多値画像データを特定し、バーコード１５１が表示された領域を決定する。
【００３９】
走査線設定部１４２は、バーコード１５１が表示された領域に対して、複数の走査線を設定する。図２に、この走査線を概念的に示す。図２に示したバーコード１５１においては、５本の走査線２１１，２１２，・・・，２１５が、バー２０１およびスペース２０２の高さ方向に沿ってほぼ等間隔に設定されている。なお、走査線の本数や間隔は、特に限定されないが、バーコード１５１の全範囲に亘って均等に設定することが望ましい。
【００４０】
復号処理部１４３は、画像メモリ１３０に格納された多値画像データのうち、各走査線２１１〜２１５が設定された位置に対応する多値画像データを用いて、エレメントの幅方向の情報として、エレメントデータおよびエレメントデータの配列を求め、そのエレメントデータおよびエレメントデータの配列を用いて、バーコード１５１を復号する。そして、復号処理部１４３は、判定部１４４が選択した走査線に対応する復号結果を、最終的な復号結果として出力する。
【００４１】
ここで、エレメントデータとは、エレメントの幅方向の情報のうち、エレメントの幅寸法に基づき算出される値をいう。エレメントデータは、各バーや各スペースの幅の値で示す場合や、隣接するバーとスペースの幅の和を表すエッジ対類似エッジ間距離で示す場合などがある。本実施形態では、バーコード１５１はＣＯＤＥ１２８であり、エレメントデータとしてエッジ対類似エッジ間距離を用いている。
【００４２】
本実施形態の復号処理部１４３は、エレメント幅算出部１４３ａ、正規化値算出部１４３ｂおよびキャラク復号部１４３ｃを有している。
【００４３】
エレメント幅算出部１４３ａは、上述したようなエレメントデータを画素数として算出する。具体的には、各走査線２１１〜２１５が設定された位置に対応する多値画像データを計測し、各エレメント幅の画素数を求める。この計測により求めた画素数に基づきエレメントデータの画素数を算出する。さらに、１キャラクタの全長の画素数を算出する。
【００４４】
正規化値算出部１４３ｂは、単位モジュールに基づき正規化されたエレメントデータを算出する。ここで、本願における「正規化」とは、各バーおよび各スペースの幅、エレメントデータや１キャラクタの全長を画素数単位からモジュールの整数比（単位モジュール）に変換することを言う。
【００４５】
キャラクタ復号部１４３ｃは、エレメントの幅方向の情報をキャラクタ情報に変換するための復号参照テーブル（図示せず）を備えている。そして、キャラクタ復号部１４３ｃは、正規化値算出部１４３ｂで正規化されたエレメントデータに基づくエレメントデータの配列を求め、復号参照テーブルと比較することにより、該当するキャラクタを復号する。なお、キャラクタ復号部１４３ｃによる復号処理結果の最終的な出力は、後述する判定部１４４の走査線判定部１４４ｂにより決定される走査線に対する復号結果として実行される。
【００４６】
判定部１４４は、走査線２１１〜２１５に対応する多値画像データから読み取り信頼度をそれぞれ算出し、算出された読み取り信頼度が最も良い走査線を判定する。本実施形態では、判定部１４４は、読み取り信頼度算出部１４４ａと、読み取り信頼度判定部１４４ｂと、走査線判定部１４４ｃとを有している。
【００４７】
読み取り信頼度算出部１４４ａは、走査線設定部１４２によって設定された走査線２１１〜２１５のそれぞれについて、読み取り信頼度を算出する。なお、読み取り信頼度は、バーコードを構成するキャラクタ全てについて算出しても良いが、１つのデータキャラクタのみについて算出しても良い。
【００４８】
また、本実施形態では、読み取り信頼度として余裕幅を算出する。ここで、余裕幅とは、正規化されたエレメントデータが正しい値となるために許容される読み取り誤差であり、バーコードの復号誤りの発生し難さ（誤りの発生する可能性の低さ）の度合いを表す指標である。
【００４９】
読み取り信頼度判定部１４４ｂは、読み取り信頼度算出部１４４ａが走査線２１１〜２１５毎に算出した読み取り信頼度から、最も大きい読み取り信頼度を判定する。
【００５０】
走査線判定部１４４ｃは、読み取り信頼度判定部１４４ｂで判定された読み取り信頼度、すなわち最も大きな読み取り信頼度に対応する走査線を決定する。決定した走査線の情報は、復号処理部１４３のキャラクタ複号部１４３ｃに出力される。
［バーコード読み取り処理の概要］
【００５１】
このように構成されたバーコード１５１の動作を説明すると、まず、媒体搬送機構１１０が記録媒体１５０の搬送を開始するとともに、撮像部１２０が記録媒体１５０の撮像を開始する。撮像部１２０は、上述のようにして多値画像データ（２５６階調のデジタル輝度値）を生成し、画像メモリ１３０を構成する各記憶素子に記憶させる。続いて、読取処理部１４０が、画像メモリ１３０に記憶された多値画像データを用いて、バーコード１５１を復号する。
【００５２】
以下、読取処理部１４０によるバーコード読取処理について、図３を用いて説明する。図３は、読取処理部１４０の動作を説明するためのフローチャートである。
【００５３】
読取処理部１４０は、画像メモリ１３０から多値画像データを読み出し、処理を開始する。この多値画像データは、位置決定部１４１に入力される。
【００５４】
位置決定部１４１は、この多値画像データから、バーコード１５１が表示された領域の位置を検出する（ステップＳ３０１）。バーコード１５１の位置の検出には、公知の技術を使用することができる。例えば、垂直射影と水平射影とを演算することによって、バーコードの位置を検出することが可能である。また、例えば特開２００９−２６６１９０号に記載された方法を用いても良い。位置決定部１４１は、図１、２において、バーコード１５１の左側の境界位置、右側の境界位置、上側の境界位置および下側の境界位置の位置情報等を、それぞれ生成する。
【００５５】
次に、走査線設定部１４２が、このバーコード１５１に対する走査線の設定を行う（ステップＳ３０２）。上述したように、本実施形態では、５本の走査線２１１〜２１５を、望ましくは均等に設定する（図２参照）。
【００５６】
その後、復号処理部１４３が、多値画像データのうちこれら走査線２１１〜２１５に対応する位置の画素列を用い、各走査線についてバーコード１５１の復号を行う（ステップＳ３０３）。この復号処理については、後述する。
【００５７】
続いて、判定部１４４が、復号処理部１４３の演算結果を用いて、走査線の判定処理を行う（ステップＳ３０４）。本実施形態では、同一のバーコード１５１に対して５本の走査線２１１〜２１５を設定しているので、読み取り誤りが発生しなかった場合は、これら走査線２１１〜２１５の復号結果は全て一致する。しかしながら、例えばバーコード１５１の汚れやかすれ等のために読み取り誤りが発生して、走査線２１１〜２１５の復号結果が一致しない場合がある。また、これら復号結果が一致したとしても、復号結果の信頼性が低い場合もある。信頼性が低い場合には、復号結果を受け取るアプリケーションに対して、信頼性の度合いを通知することが有用な場合がある。そこで、本実施形態では、各走査線２１１〜２１５の読み取り信頼度を計算し、この計算結果を用いて、走査線２１１〜２１５の復号結果に対する信頼性を判定し、最も信頼性の高い走査線に対する復号結果を最終的に採用している。
（復号処理）
【００５８】
図４は、ステップＳ３０３の復号処理部１４３における復号処理の具体的動作の一例を説明するためのフローチャートである。
【００５９】
復号処理部１４３では、各走査線ごとに、エレメント幅算出部１４３ａがバーコード１５１を構成する各エレメント（バー２０１およびスペース２０２）の幅を画素数で計測（カウント）し、この計測により求めた画素数に基づきエレメントデータの画素数および１キャラクタの全長の画素数を算出する。（ステップＳ４０１）。
【００６０】
具体的には、エレメント幅算出部１４３ａは、まず、図２に示す最初の走査線２１１に対応する画素列、すなわち走査線２１１に沿って並ぶ一連の画素配列について、各画素のデジタル輝度値を読み出す。そして、これら画素の輝度値から、各エレメント２０１，２０２のエッジ（始点と終点）を計測し、各エレメント２０１，２０２の幅寸法を画素数で計測（カウント）する。
【００６１】
次に、このようにして得られたバー幅およびスペース幅（エレメントの幅寸法）に基づいて、エレメントデータおよびその配列（以下「エレメントデータ列」という）を求め、バーコード１５１の復号処理（すなわち、コード変換）が行われる（ステップＳ４０２）。本実施形態では、エレメントデータは、隣接するバーおよびスペースの幅の和を示すエッジ対類似エッジ間距離であるので、１キャラクタを構成する３本（または４本）のバーおよび３本のスペースから４個のエッジ対類似エッジ間距離を求め、エレメントデータ列を算出し、これを正規化してコードワードを求め復号処理すなわちコード変換する。コード変換の詳細は後述する。
【００６２】
次に、復号処理部１４３は、ステップＳ４０１、Ｓ４０２の処理が、ステップＳ３０２で設定された全ての走査線２１１，２１２，・・・，２１５について実行されたか否かを、チェックする（ステップＳ４０３）。ここでは、走査線２１１に対する処理しか実行されていないので、復号処理部１４３は、残りの走査線２１２〜２１５に対してステップＳ４０１、Ｓ４０２の処理を行う。走査線２１５に対するステップＳ４０１、Ｓ４０２の処理が終了したと判断されると、復号処理部１４３は、ステップＳ３０３（図３参照）の処理を終了する。そして、Ｓ３０４の走査線判定に進む。
【００６３】
以下では、エレメント幅の計測（Ｓ４０１）から復号処理すなわちコード変換（Ｓ４０２）について、詳しく説明する。
（エレメント幅の計測方法）Ｓ４０１
【００６４】
まず、図５により、本実施形態におけるバーコードのエレメントのエッジを決定し、エレメントの幅を計測する方法を説明する。図５（Ａ）は、本実施形態に係るデジタル輝度波形の一例を示す概念図であり、図５（Ｂ）は、（Ａ）のデジタル輝度波形から得られるバーコードのエレメント配列を示す矩形波形である。
【００６５】
具体的には、まず、解析対象の走査線に対応する画素列の輝度値を計測して図５（Ａ）のデジタル輝度波形を得る。この波形において、横軸は位置（バーコード１５１の始点からの距離）を、縦軸は計測した位置における画素のデジタル輝度値（値は０〜２５５）を示している。バー２０１は黒色であり反射率が低くデジタル輝度値が小さくなる、一方、スペース２０２は白色であり反射率が高いため、スペース２０２ではデジタル輝度値が大きくなる。したがって、図５（Ａ）で示す輝度値波形は、バー２０１に対応する位置に極小値Ｍｉｎ１，Ｍｉｎ２，・・・を有し、且つ、スペース２０２に対応する位置に極大値Ｍａｘ１，Ｍａｘ２，・・・を有する。
【００６６】
なお、計測に使用する画素列は、走査線（ここでは走査線２１１）に対応する１本の画素列のみを使用してもよいが、当該走査線近傍の複数画素列を使用することも可能である。複数の画素列を使用する場合、縦軸は、当該位置に対応する複数画素のデジタル輝度値の平均値或いは総和等とすることができる。また、エッジ計測方法としては、本実施形態では、上述したような各画素のデジタル輝度値を使用したが、これに代えて、例えば走査反射率波形を用いる方法でもよい。走査反射率波形とは、バーコード１５１のバー２０１およびスペース２０２を幅方向に沿って反射率を打点することにより得られる波形であり、例えばＪＩＳのＸ０５２０等に定義されている。
【００６７】
次に、本実施形態では、極小値が現れる位置と極大値が現れる位置との中央位置を閾値、すなわちバー２０１とスペース２０２とのエッジであると判断する局所閾値方式によって、図５（Ｂ）に示す矩形波形を得る。図５（Ｂ）において、横軸は図５（Ａ）と同様に、バーコードにおける位置を示す一方、縦軸はバー２０１およびスペース２０２の区別を示し、縦軸の値が‘０’の区間はバー２０１に対応し、縦軸の値が‘１’の区間はスペース２０２に対応する。
【００６８】
なお、局所閾値方式に代えて、例えば、走査線に対応する全画素のデジタル輝度値の平均値を求め、縦軸の値がこの平均値となる位置を閾値、すなわちバー２０１とスペース２０２とのエッジであると判定する固定閾値方式方法）を使用してもよい。
【００６９】
その後、エレメント幅の計測は、図５（Ｂ）の縦軸値が０の区間Ｔ１，Ｔ３，・・・をバー２０１の区間として、および縦軸値が１の区間Ｔ２，Ｔ４，・・・をスペース２０２の区間として、各エレメントの幅に対応する画素の個数（横軸方向の画素数）を数えることによって行う。
（コード変換）：Ｓ４０２
【００７０】
図６は、上述のＳ４０２におけるコード変換（復号処理）の具体的動作の一例を説明するためのフローチャートである。
【００７１】
コード変換に際しては、最初に、バーコード１５１の判別が行われ、バーコード規格の種類が特定される（ステップＳ６０１）。バーコード１５１は、バーコード規格の種類によって、スタートマークの開始部分およびストップマークの終了部分を構成するバーおよびスペースの幅およびその配列が異なる。例えば、本実施形態のＣＯＤＥ１２８では、スタートマーク開始部分はバー、スペース、バーの幅の比が２：１：１であり、ストップマーク終了部分は、バー、スペース、バーの幅の比が１：１：２である。したがって、開始部分および終了部分のバーおよびスペースの幅およびその配列を解析することで、バーコード１５１の種別を判別することができる。なお、本実施形態はＣＯＤＥ１２８の規格に基づくものであるので、ここでは他のバーコード規格の種類が特定される方法についての詳細な説明は省略する。
（スタートマークおよびストップマークの検出）
【００７２】
次に、バーコード規格の種類がＣＯＤＥ１２８の規格に基づくものであると特定された場合は、スタートマークおよびストップマークの検出が行われる（ステップＳ６０２）。
【００７３】
バーコード１５１は、スタートマークとストップマークとの間に可変長のデータキャラクタを格納している。このため、本実施形態のバーコード読取装置１００は、まず、これらのスタートマークおよびストップマークを検出することで、バーコード１５１のデータ記録方向、データキャラクタの開始位置およびチェックデジットの終了位置を確定するとともに、バーコードがＣＯＤＥ１２８であることを確定する。特に、スタートマークの検出では、ＣＯＤＥ１２８の規格におけるキャラクタセットがコードA、コードBまたはコードCのいずれかであるかを特定する。
【００７４】
具体的には、スタートマークの検出では、スタートマークを構成する（バーコードの最初の）３本のバーおよび３本のスペースの幅をデジタル多値情報の画像データの画素数（計測値）を上述のエレメント幅計測（ステップＳ４０１）の結果として得て、エレメントデータの計測値を算出する。本実施形態では、エッジ類似エッジ間の幅をエレメントデータとして取得する。しかし、バーコードの規格は、エレメントの基本幅である単位モジュールを基準としており、また、計測したエレメントデータ画素数（計測値）には計測の誤差が含まれている。そこで、復号処理部１４３は、画素による計測値を単位モジュールに基づき正規化されたエレメントデータおよびその配列（エレメントデータ列）を求める。以下では、正規化したエレメントデータ列をコードワードという。
【００７５】
復号処理部１４３は、スタートマークを示すコードワードと一致するキャラクタ情報を復号参照テーブルから求め、かかるキャラクタ情報を出力した後、ストップマークの検出に移る。一方、一致するコードワードが復号参照テーブルにない場合には、復号処理にエラーが発生した旨を出力する。
【００７６】
ストップマークは、４本のバー２０１と３本のスペース２０２とを交互に配置することで１キャラクタとして構成されているが、スタートマーク同様に、復号処理部１４３は、ストップマークを示すコードワードを求め、これと一致するキャラクタ情報を，復号参照テーブルから求めて、かかるキャラクタ情報を出力した後、データキャラクタのコードワードを得るための解析処理（Ｓ６０３）に移る。一方、一致するコードワードが復号参照テーブルにない場合には，復号処理にエラーが発生した旨を出力する。
（データキャラクタの解析）
【００７７】
以降では、データキャラクタのエレメントデータ列を単位モジュールで正規化しデータコードワードを取得するための処理（ステップＳ６０３。データコードワードの取得という。）について説明する。ここで、データコードワードとは、キャラクタ情報を表す一連の数列であり、データキャラクタに対応するエレメントデータ列を単位モジュールによって正規化した数列である。１個のキャラクタ情報を表すデータキャラクタは、上述したスタートマークと同様、３本のバー２０１と３本のスペース２０２との合計６本のエレメントの一連配列であって、全長１１モジュール（基本幅の１１倍）で構成されている。また、データキャラクタ、データコードワードおよびキャラクタ情報は、各々が一対一の対応関係であり、復号参照テーブルは、データコードワードとキャラクタ情報の対応表である。
【００７８】
図７によって、データキャラクタのエレメントデータ列を単位モジュールで正規化したデータコードワードを取得するための処理（ステップＳ６０３）を具体的に説明する。図７は、データコードワードの取得方法を説明するための概念図である。
【００７９】
図７において、コードワード取得の対象となるデータキャラクタは、３本のバーＢ３１、Ｂ３２、Ｂ３３と３本のスペースＳ３１、Ｓ３２、Ｓ３３との合計６本のエレメントにより構成されている。復号処理部１４３は、かかるデータキャラクタから、エレメントデータとして４個のエッジ対類似エッジ間距離ｅ（１），ｅ（２），ｅ（３），ｅ（４）を画素数で算出する。上述のように、エッジ対類似エッジ間距離とは、隣接するバーおよびスペースの幅の和を示しており、あるバー（またはスペース）の先端から次のスペース（またはバー）の末端までの距離である。したがって、エッジ対類似エッジ間距離は、隣接する２本のバーＢ３１，３２，３３とスペースＳ３１，３２，３３の幅の計測値を加えた値である。このように、エッジ対類似エッジ間距離を用いることによって、バーコード１５１の印刷誤差等の影響を受けにくくしている。
【００８０】
先頭から、バーＢ３１の幅の画素数の計測値(すなわち、「計測幅」)は‘２０画素’、スペースＳ３１の計測幅は‘４画素’、バーＢ３２の計測幅は‘６画素’、スペースＳ３２の計測幅は‘１０画素’、バーＢ３３の計測幅は‘６画素’、スペースＳ３３の計測幅は‘１０画素’である。一方、上述のように、本実施形態のＣＯＤＥ１２８では、バーコード１５１のデータキャラクタ（１キャラクタ）の全長（３本のバーＢ３１，３２，３３と３本のスペースＳ３１，３２，３３の幅の和）は、１１モジュールと規定されている。そこで、次のように基本幅（単位モジュール）あたりの画素数を求める。
【００８１】
ここで、データキャラクタの全長の計測値をＳ、データキャラクタの全長の単位モジュール値（規格値）をｍ、単位モジュール（基本幅）あたりの画素数をｗとすると；
Ｓは、３本のバー計測幅と３本のスペース計測幅の和（画素数の合計）であるので、
【００８２】
Ｓ＝２０＋４＋６＋１０＋６＋１０＝５６（すなわち、５６画素）
ｍ＝１１モジュール
ｗ＝Ｓ／ｍ＝５６／１１である。
【００８３】
一方、エレメントデータの計測値をｅ（ｉ）（ただし、ｉ＝１，２，３，４）とすると；ｅ（１）はバーＢ３１および隣接するスペースＳ３１の幅の和、ｅ（２）はスペースＳ３１および隣接するバーＳ３２の幅の和、ｅ（３）はバーＢ３２および隣接するスペースＳ３２の幅の和、ｅ（４）はスペースＳ３２および隣接するバーＢ３３の幅の和であるので、
【００８４】
ｅ（１）＝２０＋４＝２４
ｅ（２）＝４＋６＝１０
ｅ（３）＝６＋１０＝１６
ｅ（４）＝１０＋６＝１６である。
【００８５】
次に、復号処理部１４３は、エレメントデータとしてのエッジ対類似エッジ間距離の計測値ｅ（ｉ）にｍ／Ｓを掛け合わせて、正規化前のエレメントデータの単位モジュールの計算値ｔ（ｉ）を算出する。すなわち；
【００８６】
ｔ（ｉ）＝ｅ（ｉ）／ｗ＝ｅ（ｉ）×（ｍ／Ｓ）
具体的に、図７の例では、
ｔ（１）＝ｅ（１）／ｗ＝２４×（１１／５６）＝4.714
ｔ（２）＝ｅ（２）／ｗ＝１０×（１１／５６）＝1.964
ｔ（３）＝ｅ（３）／ｗ＝１６×（１１／５６）＝3.143
ｔ（４）＝ｅ（４）／ｗ＝１６×（１１／５６）＝3.143となる。
【００８７】
そして、ｔ（ｉ）を正規化する。すなわち、ｔ（ｉ）の値の小数点第１を四捨五入する。本実施形態では、ｔ（ｉ）に０．５を加えた後で小数点以下を切り捨てることにより、この四捨五入を実現する。すなわち、正規化されたエレメントデータＥ（ｉ）は；
【００８８】
Ｅ（ｉ）＝ＩＮＴ（ｔ（ｉ）＋０．５）
＝ＩＮＴ（ｅ（ｉ）×ｍ／Ｓ＋０．５）
ただし，ｉ＝１，２，３，４  ・・・式（３）
（なお、ＩＮＴ（ｘ）は、パラメータｘを超えない最大の整数を返す関数。）
したがって、  Ｅ（１）＝ＩＮＴ（２４×（１１／５６）＋０．５）＝５
【００８９】
Ｅ（２）＝ＩＮＴ（１０×（１１／５６）＋０．５）＝２
Ｅ（３）＝ＩＮＴ（１６×（１１／５６）＋０．５）＝３
Ｅ（４）＝ＩＮＴ（１６×（１１／５６）＋０．５）＝３である。
【００９０】
これにより、正規化されたエレメントデータ列［Ｅ（１），Ｅ（２），Ｅ（３），Ｅ（４）］に対応するデータコードワード［５２３３］が得られる。
【００９１】
このように、エレメントデータの正規化は、エレメント幅算出部１４３ａから入力した１キャラクタの全長の画素数（Ｓ）を、１キャラクタの全長に相当するモジュール数（ｍ）で除算することによって、バーコード１５１を構成する単位モジュールあたりの画素数（基本幅値）を算出して、各エレメント（バーおよびスペース）の幅の画素数をこの基本幅値で除して、単位モジュール数に変換し、エレメントデータおよび１キャラクタの全長のモジュール数を算出し、各エレメントの幅が基本幅の１倍、２倍、３倍、４倍のいずれかとなるように、読み取り（計測）の誤差を調整して変換して、コードワードを取得するようにしている。
【００９２】
なお、ＣＯＤＥ１２８のバーコードパターンの規格では、バーの幅およびスペースの幅は基本幅の１倍、２倍、３倍、４倍のいずれかになるが、隣接するバーおよびスペースの幅が両方同時に４倍となることは無いので、正規化されたエレメントデータ（エッジ対類似エッジ間距離）の各モジュール数であるＥ（ｉ）は、２から７までの整数値となる。
【００９３】
以上のようにコードワードを取得した後、復号処理部１４３は、このコードワードに対応するキャラクタ値を復号参照テーブル（図示せず）から取得して、コードワードをキャラクタに変換することにより、データ復号を行う（ステップＳ６０４）。復号参照テーブルは、例えばＪＩＳＸ０５０４等の、ＣＯＤＥ１２８規約にしたがって作成する。
【００９４】
図７の例では、データコードワードは、正規化されたエレメントデータＥ（ｉ）の配列［５２３３］なので、キャラクタ値として‘８６’が復号参照テーブルより取得される。
【００９５】
なお、本実施形態では、データは‘８６’と１キャラクタとなっているが、バーコード１５１ではデータとして格納される領域は可変長であるので、複数のキャラクタが格納されている場合がある。このようなデータコードワード取得は、バーコード１５１に含まれる全てのデータキャラクタについて行われる。
【００９６】
このようなデータ復号取得処理は、上述のステップＳ６０３で取得された全てのデータキャラクタについて行われる。
【００９７】
その後、バーコード１５１に含まれる誤り訂正符号を用いて、データ復号結果の誤り訂正を行う。誤り訂正の方法は、ＣＯＤＥ１２８に規定された通りでよいので、ここでの説明を省略する。これにより、ステップＳ６０４のデータ復号処理が終了する。
【００９８】
以上により、ステップＳ４０２（図４参照）の復号処理が終了する。
（読み取り信頼性判定）
【００９９】
上述のとおり、本実施形態では、各走査線２１１〜２１５の読み取り信頼度を計算し、この計算結果を用いて、走査線２１１〜２１５の復号結果に対する信頼性を判定する。また、この「読み取り信頼度」は、バーコードを読み取る際の余裕幅を用いて算出される。以下、読み取り信頼度の計算方法について説明する。
【０１００】
上述のとおり、余裕幅とは、正規化されたエレメントデータが正しい値となるために許容される読み取り誤差の幅（範囲）であり、バーコードの復号誤りの発生し難さ（誤りの発生する可能性の低さ）の度合いを表す指標である。具体的には、実際の計測に基づくエレメントデータの値（画像メモリ１３０に格納された多値画像のバーコード１５１データから実際に計測し求めた値）と正しい正規化値を得ることができる計測値の範囲を示す境界値との乖離が大きいほど許容される読み取り誤差が大きく、その乖離が小さいほど許容される読み取り誤差は小さい。そこで、次のように余裕幅を定義する。
【０１０１】
まず、バーコード１５１の復号処理では、データコードワードを取得するに際して、エレメントデータＥ（ｉ）を得るため、上式（３）のとおり、画素数の計数により求めたエッジ対類似エッジ間距離の実際の計測値ｅ（ｉ）について、単位モジュールにより変換計算した計算値ｔ（ｉ）を四捨五入し正規化している。したがって、ｔ（ｉ）の取り得る値の範囲は；Ｅ（ｉ）−０．５≦ｔ（ｉ）＜Ｅ（ｉ）＋０．５である。すなわち、正規化値Ｅ（ｉ）を得ることができる計算値ｔ（ｉ）の下限は‘Ｅ（ｉ）−０．５’であり、計算値ｔ（ｉ）の上限は‘Ｅ（ｉ）＋０．５’を超えない値である。
【０１０２】
ここで、‘Ｅ（ｉ）−０．５’を下限境界値、‘Ｅ（ｉ）＋０．５’を上限境界値とすると計算値ｔ（ｉ）が実際の計測に基づくエレメントデータの値に相当する。そこで、ｔ（ｉ）と下限境界値との乖離およびｔ（ｉ）と上限境界値との乖離のうちいずれか小さい方の乖離を、ｔ（ｉ）の余裕幅と定義する。換言すると、ｔ（ｉ）と（Ｅ（ｉ）−０．５）との差の絶対値およびｔ（ｉ）と（Ｅ（ｉ）＋０．５）との差の絶対値の小さい方をｔ（ｉ）の余裕幅として算出することができる。つまり、読み取り誤差が、ｔ（ｉ）を中心にして正負方向に小さい方の乖離範囲のであれば、Ｅ（ｉ）は必ず誤りのない正規化値となる。
【０１０３】
例えば、エレメントデータとしてエッジ対類似エッジ間距離ｅ（ｉ）の正規化値Ｅ（ｉ）が４の場合、境界値は３．５および４．５である。したがって、例えば、実際の計測に基づく計算値ｔ（ｉ）が４．０の場合、余裕幅は０．５である。また、計算値ｔ（ｉ）が３．６の場合や４．４の場合、余裕幅は０．１である。余裕幅が小さい場合ほど、境界値に近い値となり読み取り誤りが発生し易いので、正規化演算結果Ｅ（ｉ）の信頼性が低いことになる。
【０１０４】
上述のように、バーコード１５１では、１個のデータコードワードについて、４個のエレメントデータＥ（ｉ）が使用される。本実施形態では、これら４個のＥ（ｉ）全てについて、余裕幅を演算し、これらのうちで最も小さい余裕幅を、そのデータコードワードの余裕幅とする。さらに、１本の走査線に対応するデータコードワードの余裕幅のうちで最も小さいものを、その走査線の読み取り信頼度と定義する。すなわち、各走査線１２１〜１２５の読み取り信頼度は、その走査線に対応する全ての余裕幅の中で最小の余裕幅となる。したがって、最小の余裕幅が、最も良い読み取り信頼度を表している。
【０１０５】
図７の実施例では、Ｅ（１）＝５（その取り得る計算値の範囲は４．５以上５．５未満）に対して、計算値ｔ（１）＝２４×１１／５６＝４．７・・・であるため、余裕幅は計算値ｔ（１）と４．５との差であり、約０．２となる。Ｅ（２）＝２（同上１．５以上２．５未満）に対して、計算値ｔ（２）＝１０×１１／５６＝１．９・・・であるため、余裕幅は、計算値ｔ（２）と１．５との差であり、約０．４となる。また、Ｅ（３）＝３（同上２．５以上３．５未満）に対して、計算値ｔ（３）＝１６×１１／５６＝３．１・・・であるため、余裕幅は、計算値ｔ（３）と３．５との差であり、約０．４となる。同様に、Ｅ（４）はＥ（３）と同一の結果となる。したがって、この正規化したエレメントデータ列すなわちデータコードワード［５２３３］の余裕幅は、Ｅ（１）の余裕幅すなわち約０．２である。
【０１０６】
全ての走査線２１１〜２１５に対する読み取り信頼度が演算されると、走査線判定部１４４ｃは、読み取り信頼度が最も大きい走査線を選択する。そして、走査線判定部１４４ｓは、選択した走査線に対応する復号結果（図３のステップＳ３０３参照）を、そのバーコード１５１の復号結果として出力する。
【０１０７】
加えて、走査線判定部１４４は、その復号結果に対応する読み取り信頼度を、復号結果の信頼性を示すデータとして出力してもよい。また、読み取り信頼度が所定値よりも低い（悪い）場合に、信頼性が不十分であることを示す参考情報を出力することとしてもよい。
（本実施形態の主な効果）
【０１０８】
以上説明したように、本実施形態によれば、バーコードに対し複数の走査線を設定し、各走査線に対応するバーコードのデータからバーコードの復号誤りの発生し難さを示す読み取り信頼度を演算し、この読み取り信頼度用いて、走査線ごとに読み取り信頼性を評価することができる。さらに、この走査線ごとの読み取り信頼性の評価に基づき、最も信頼性が高い走査線に対応する復号結果をバーコードの復号結果として採用するので、バーコードの復号結果に対する信頼性を、向上させることができる。
【０１０９】
特に、読み取り信頼度算出部を用いて各走査線の読み取り信頼度を算出し、読み取り信頼度判定部を用いて該算出結果から最も良い読み取り信頼度を判定し、さらに、走査線判定部を用いて該判定結果に対応する走査線を判定することにより、最も信頼性が高い走査線およびその信頼性の評価値を得ることができる。
【０１１０】
また、読み取り信頼度として、バーコードに含まれるエレメントデータごとに算出する余裕幅を用いるので、簡単な演算処理で信頼性の評価を行うことができる。
【０１１１】
加えて、本実施形態によれば、読み取り信頼度を、エレメントデータすなわちエッジ対類似エッジ間距離についての計測値と正規化値とを用いて演算するので、簡単な演算処理で信頼性の評価を行うことができる。
【０１１２】
さらに、本実施形態によれば、エレメントデータすなわちエッジ対類似エッジ間距離を正規化する演算の途中結果を用いて余裕幅を算出することができるので、この点でも演算処理がさらに簡単になる。
【０１１３】
また、本実施形態によれば、エレメントデータとしてエッジ対類似エッジ間距離を用いているので、バーコード１５１の印刷誤差等の影響を受けにく、バーコードの復号結果に対する信頼性を、一層向上させることができる。
［他の実施形態］
【０１１４】
本実施形態では、全ての走査線２１１〜２１５に対する復号処理を行った後で、これら走査線２１１〜２１５に対する読み取り信頼度演算を行うこととしたが（図３のステップＳ３０３、Ｓ３０４参照）、最初の走査線２１１に対して復号処理および読み取り信頼度演算を行った後で二番目の走査線２１２に対する復号処理および判定処理を行うというような順序で処理を行うこととしてもよい。
【０１１５】
また、本実施形態では、データキャラクタ１個の例で説明したが、バーコードが複数のデータキャラクタを持つ場合には、１つの走査線にある全てのデータキャラクタについて計測値および正規化値を求め、余裕幅を演算し、これらのうちで最も小さい余裕幅を、そのデータコードワードの余裕幅とすることができる。さらには、１本の走査線に対応するデータコードワードの余裕幅のうちで最も小さいものを、その走査線の読み取り信頼度とすることができる。
【０１１６】
本実施形態では、エレメントデータとしてエッジ対類似エッジ間距離を用いたが、これに限定するものではない。たとえば、エレメントデータとして、各バーや各スペースの幅をそのまま使用してもよい。
【０１１７】
また、本実施形態は、搬送機構と一次元イメージセンサとを用いたバーコード読取装置に本発明を適用した場合を例に採って説明したが、搬送機構を持たないハンディタイプの読取装置や、エリアセンサ（例えば二次元ＣＣＤやＣＭＯＳイメージャ等）を用いた読取装置等にも本発明を適用することが可能である。
【０１１８】
また、ＣＣＤ等のカメラによってバーコードを撮影し、その映像データに画像処理を施すことで、バーコード部分を抽出するとともに当該バーコードを検出し解読してもよい。さらに、バーコード上をレーザ光線で走査し、その反射光を光学式１次元センサで検出することで、バーコードのキャラクタを取得するレーザスキャン方式であってもよい。
【符号の説明】
【０１１９】
１００  バーコード読取装置
１１０  媒体搬送機構
１１１  底板
１１２，１１３  搬送ガイド
１２０  撮像部
１２１  光電変換素子列
１３０  画像メモリ
１４０  読取処理部
１４１  位置決定部
１４２  走査線設定部
１４３  復号処理部
１４３ａ  エレメント幅算出部
１４３ｂ  正規化値算出部
１４３ｃ  キャラクタ復号部
１４４  走査線判定部
１４４ａ  読み取り信頼度算出部
１４４ｂ  読み取り信頼度判定部
１４４ｃ  走査線判定部
１５０  記録担体
１５１  バーコード
２０１  バー
２０２  スペース
２１１，２１２，２１３，２１４，２１５  走査線
【図１】
0005676183.tif 000002
【図２】
0005676183.tif 000003
【図３】
0005676183.tif 000004
【図４】
0005676183.tif 000005
【図５】
0005676183.tif 000006
【図６】
0005676183.tif 000007
【図７】
0005676183.tif 000008