(57)【特許請求の範囲】
【請求項１】
キャラクタを複数のバーにより表したバーコードを読み取って得られたバーコードデータより、前記キャラクタを復調するバーコード読取装置において、
復調済キャラクタにおけるバー幅基準となる基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅を補正する第１の補正手段と、
前記第１の補正手段により補正された被復調キャラクタを構成するバーのバー幅に基づいて、前記被復調キャラクタを復調する復調手段と、
前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率を求める比率算出手段と、
前記基準バーのバー幅を前記比率算出手段により算出された比率に基づいて補正する第２の補正手段と、
を備え、
前記比率算出手段により算出された比率が予め定められたしきい値以上である場合、前記第１の補正手段は前記第２の補正手段により補正された基準バーのバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とするバーコード読取装置。
【請求項２】
キャラクタを複数のバーにより表したバーコードを読み取って得られたバーコードデータより、前記キャラクタを復調するバーコード読取装置において、
復調済キャラクタにおけるバー幅基準となる基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅を補正する第１の補正手段と、
前記第１の補正手段により補正された被復調キャラクタを構成するバーのバー幅に基づいて、前記被復調キャラクタを復調する復調手段と、
前記バーコードにおける印刷精度を求める印刷精度算出手段と、
前記基準バーのバー幅を、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率に基づいて補正する第２の補正手段と、
を備え、
前記印刷精度算出手段により算出された当該バーコードの印刷精度が予め定められたしきい値以上に悪化している場合、前記第１の補正手段は、前記第２の補正手段により補正された基準バーのバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とするバーコード読取装置。
【請求項３】
前記印刷精度算出手段は、前記復調済キャラクタにおける少なくとも一つの基準バー幅と前記被復調キャラクタにおけるバー幅との対比において前記印刷精度を求めることを特徴とする請求項２に記載のバーコード読取装置。
【請求項４】
キャラクタを複数のバー幅により表したバーコードを読み取るバーコード読取方法において、
復調済キャラクタにおける少なくとも一つの基準バーのバー幅を基準にして、被復調キャラクタのバー幅を補正する第１の補正工程と、
前記第１の補正工程において補正された前記復調済キャラクタのバー幅に基づいて、前記被復調キャラクタを復調する復調工程と、
前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率を求める比率算出工程と、
前記基準バーの前記バー幅を前記比率に基づいて補正する第２の補正工程と、
を備え、
前記比率算出工程において算出された前記比率が予め定められたしきい値以上である場合、前記第２の補正工程により補正された基準バーのバー幅に基づいて前記第１の補正工程によるバー幅補正を行い、当該補正されたバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とするバーコード読取方法。
【請求項５】
キャラクタを複数のバー幅により表したバーコードを読み取るバーコード読取方法において、
復調済キャラクタにおける少なくとも一つの基準バーのバー幅を基準にして、被復調キャラクタのバー幅を補正する第１の補正工程と、
前記第１の補正工程において補正された前記復調済キャラクタのバー幅に基づいて、前記被復調キャラクタを復調する復調工程と、
前記バーコードにおける印刷精度を求める印刷精度算出工程と、
前記基準バーの前記バー幅を、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率に基づいて補正する第２の補正工程と、を備え、
前記印刷精度算出工程により算出された当該バーコードの印刷精度が予め定められたしきい値以上に悪化している場合、前記第２の補正工程により補正された基準バーのバー幅に基づいて、前記第１の補正工程によるバー幅補正を行い、当該補正されたバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とするバーコード読取方法。
【請求項６】
前記印刷精度算出工程では、前記復調済キャラクタにおける少なくとも一つの基準バー幅と前記被復調キャラクタにおけるバー幅との対比において前記印刷精度を求めることを特徴とする請求項５に記載のバーコード読取方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャラクタをバー幅により表したバーコードからの反射光に基づいて読み取られたバーコードデータからキャラクタを復調するバーコード読取装置および方法に関するものである。
【０００２】
近時、小売業においては、商品の売上内容の把握の迅速化、省力化等を目的として、特に、コンビニエンスストア、百貨店、スーパマーケット等では、ＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅｓ）システムが急速に普及している。このＰＯＳシステムにおいては、商品に付されキャラクタを表すバーコードを光学的に読み取り、この読み取り結果に基づいて、キャラクタを復調するバーコード読取装置が組み込まれている。
【０００３】
また、商品に付されたバーコードは、その印刷精度により、バー幅にばらつきが生じることがあるため、バーコード読取装置においては、上記ばらつきの影響を受けることなく、高精度でキャラクタの復調を行うことが要請されている。
【０００４】
【従来の技術】
バーコードは、図示しない商品に付されており、複数の黒バーと白バーとが交互に組み合わされてなり、後述するＥ（ＥＶＥＮ）０〜Ｅ９、Ｏ（ＯＤＤ）０〜Ｏ９という都合２０種類のキャラクタを表現するものである。
【０００５】
このバーコードとしては、たとえば、ＪＡＮ（Ｊａｐａｎ  Ａｒｔｉｃｌｅ  Ｎｕｍｂｅｒ）用として規定されているバーコードシンボル、世界共通のＷＰＣ（Ｗｏｒｌｄ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）、ヨーロッパで用いられているＥＡＮ（Ｅｕｒｏｐｅａｎ  Ａｒｔｉｃｌｅ  Ｎｕｍｂｅｒ  ）、アメリカで用いられているＵＰＣ（Ｕｎｉｖｅｒｓａｌ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）がある。
【０００６】
図６は、バーコード１０の具体例を示す平面図である。この図に示すバーコード１０は、一例として、交互に配設された黒バーＢＢ１  、白バーＷＢ１  、黒バーＢＢ２  および白バーＷＢ２  とを有している。また、バーコード１０は、商品メーカコードを表す左ブロック１１と、この左ブロック１１の右側にセンターバー１３を挟んで商品アイテムコードを表す右ブロック１２と、左右の左ブロック１１および右ブロック１２の左端および右端に設けられた左ガードバー１４および右ガードバー１５とから構成されている。
【０００７】
バーコード１０における一つのキャラクタは、図７（ａ）〜（ｄ）に示すように同図右側から左側へ向かって、１番目の黒バー、２番目の白バー、３番目の黒バーおよび４番目の白バーという４本のバー（エレメント）から構成されているとともに、そのキャラクタ長（幅）Ｃ（１番目の黒バーから４番目の白バーまでのエッジ間距離）は、７モジュール（単位の長さを「モジュール」と称する）とされている。
【０００８】
また、バーコード１０においては、１番目の黒バーの黒バー幅Ｂ１  、２番目の白バーの白バー幅Ｂ２  、３番目の黒バーの黒バー幅Ｂ３  および４番目の白バーの白バー幅Ｂ４  の組み合わせにより、基本的には、“０”から“９”までの１０種類の数字（キャラクタ）を表現しているが、図８に示すように同じ数字でも黒バーの合計モジュール数を奇数および偶数とする２種類の組み合わせを導入することにより、２０種類のキャラクタの表現が可能となる。
【０００９】
ここで、黒バーのモジュール数が奇数となるものをＯＤＤ（以下、Ｏと略称）と称し、一方、黒バーのモジュール数が偶数となるものをＥＶＥＮ（以下、Ｅと略称）と称する。図８に示す例では、キャラクタＯ０〜キャラクタＯ９という黒バーのモジュール数が奇数となる１０種類のキャラクタと、キャラクタＥ０〜キャラクタＥ９という黒バーのモジュール数が偶数となる１０種類のキャラクタという都合２０種類のキャラクタが図示されている。
【００１０】
たとえば、同図に示すキャラクタＯ０およびキャラクタＥ０を例にして説明すれば、キャラクタＯ０は、同図右側から左側へ向かって１番目の黒バー（モジュール数１）と、２番目の白バー（モジュール数１）と、３番目の黒バー（モジュール数２）と、４番目の白バー（モジュール数３）とから構成されている。また、キャラクタＯ０は、１番目の黒バーのモジュール数（＝１）と３番目の黒バーのモジュール数（＝２）との和が３モジュール、すなわち奇数とされている。
【００１１】
一方、キャラクタＥ０は、同図右側から左側へ向かって１番目の黒バー（モジュール数３）と、２番目の白バー（モジュール数２）と、３番目の黒バー（モジュール数１）と、４番目の白バー（モジュール数１）とから構成されている。また、キャラクタＥ０は、１番目の黒バーのモジュール数（＝３）と３番目の黒バーのモジュール数（＝１）との和が４モジュール、すなわち偶数とされている。
【００１２】
図７（ａ）に示すキャラクタＥ４は、同図右側から左側へ向かって、黒バー幅Ｂ１  が１モジュールの黒バーと、該黒バーに隣接し白バー幅Ｂ２  が１モジュールの白バーと、該白バーに隣接し黒バー幅Ｂ３  が３モジュールの黒バーと、該黒バーに隣接し白バー幅Ｂ４  が２モジュールの白バーから構成されている。
【００１３】
ここで、黒バー幅Ｂ１  と白バー幅Ｂ２  との和、すなわち１番目の黒バーと２番目の白バーとのエッジ間距離はデルタディスタンスＴ１  と称されており、同図に示す例では、このデルタディスタンスＴ１  は、２モジュールである。さらに、白バー幅Ｂ２  と黒バー幅Ｂ３  との和、すなわち２番目の白バーと３番目の黒バーとのエッジ間距離はデルタディスタンスＴ２  と称されており、同図に示す例では、このデルタディスタンスＴ２  は、４モジュールである。
【００１４】
また、上記デルタディスタンスＴ１  、デルタディスタンスＴ２  、黒バー幅Ｂ１  および黒バー幅Ｂ３  は、当該キャラクタが図８に示すキャラクタＯ０〜キャラクタＯ９、およびキャラクタＥ０〜キャラクタＥ９のうちいずれのキャラクタに該当するかの特定に用いられる重要なパラメータである。
【００１５】
すなわち、図８に示されるように、キャラクタＯ０〜キャラクタＯ９およびキャラクタＥ０〜キャラクタＥ９の各デルタディスタンスＴ１  およびデルタディスタンスＴ２  が異なるため、デルタディスタンスＴ１  およびデルタディスタンスＴ２  から当該キャラクタが特定される。この特定には、図１０に示すデルタディスタンスＴ１  とデルタディスタンスＴ２  の組み合わせパターンと、当該キャラクタとの関係を示す第１の復調テーブル１００が用いられる。
【００１６】
ただし、図１０に示すように、キャラクタＥ２とキャラクタＥ８、キャラクタＯ２とキャラクタＯ８、キャラクタＯ１とキャラクタＯ７、およびキャラクタＥ１とキャラクタＥ７においては、それぞれの組み合わせのデルタディスタンスＴ１  およびデルタディスタンスＴ２  が同値であることから、デルタディスタンスＴ１  およびデルタディスタンスＴ２  に基づいて当該キャラクタを特定することができない。
【００１７】
具体的には、キャラクタＥ２とキャラクタＥ８を例にとれば、いずれもデルタディスタンスＴ１  が３モジュール、デルタディスタンスＴ２  が３モジュールという具合に同値とされており、デルタディスタンスＴ１  およびデルタディスタンスＴ２  だけからでは、当該キャラクタがキャラクタＥ２であるのかキャラクタＥ８であるのかを特定することができない。
【００１８】
そこで、上記キャラクタＥ２とキャラクタＥ８、キャラクタＯ２とキャラクタＯ８、キャラクタＯ１とキャラクタＯ７、およびキャラクタＥ１とキャラクタＥ７においては、１番目の黒バーの黒バー幅と３番目の黒バーの黒バー幅とが異なることを利用して、両黒バー幅、あるいは一方の黒バー幅から当該キャラクタを特定することができる。
【００１９】
具体的には、図８に示すキャラクタＥ２とキャラクタＥ８を例にとれは、キャラクタＥ２においては、１番目の黒バーの黒バー幅が２モジュール、３番目の黒バーの黒バー幅が２モジュールである。一方、キャラクタＥ８においては、１番目の黒バーの黒バー幅が１モジュール、３番目の黒バーの黒バー幅が１モジュールであり、キャラクタＥ８のそれぞれの黒バー幅は、キャラクタＥ２の場合と相違する。従って、キャラクタＥ２とキャラクタＥ８とは、１番目の黒バーの黒バー幅と３番目の黒バーの黒バー幅とから判別可能となる。当然、一方の黒バー幅のみからもキャラクタの判別は可能である。
【００２０】
また、第１の復調テーブル１００（図１０参照）を用いても特定することができない、上述したキャラクタＯ１およびキャラクタＥ７、キャラクタＯ２およびキャラクタＯ８、キャラクタＥ１およびキャラクタＥ７、キャラクタＥ２およびキャラクタＥ８の特定には、図１１に示す１番目の黒バーの黒バー幅Ｂ１  と３番目の黒バーの黒バー幅Ｂ３  との組み合わせパターンと、当該キャラクタとの関係を示す第２の復調テーブル２００が用いられる。
【００２１】
ここで、従来においては、上述したバーコード１０を読み取りさらに復調する装置として、バーコード読取装置が用いられている。この種のバーコード読取装置は、バーコード１０を光学的に読み取る読取部と、該読取部の読取結果に基づいて、バーコード１０におけるキャラクタを復調するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）から概略構成されている。
【００２２】
以下、上述した従来のバーコード読取装置の動作を図１３に示すフローチャートを参照して説明する。ここで、バーコード１０の印刷精度が悪化した場合には、正規の黒バー幅に比して黒バー幅が狭くなる黒細りしたものと、これとは逆に正規の黒バー幅に比して黒バー幅が広くなる黒太りしたものとが存在する。
【００２３】
具体的には、図１２（ｂ）には、正規の黒バー幅Ｂ１  および黒バー幅Ｂ３  （図１２（ａ）参照）に比して狭い黒バー幅Ｂ１  ’および黒バー幅Ｂ３  ’とされた黒細りの様子が図示されており、図１２（ｃ）には、正規の黒バー幅Ｂ１  および黒バー幅Ｂ３  （図１２（ａ）参照）に比して広い黒バー幅Ｂ１  ’’および黒バー幅Ｂ３  ’’とされた黒太りの様子が図示されている。
【００２４】
このため、黒バー幅Ｂ１  ’、Ｂ３  ’、Ｂ１  ’’、Ｂ３  ’’等には、印刷上の誤差が含まれている。従って、正確なモジュール数を判別することが困難となる。そこで、従来よりモジュール数が判っている復調済キャラクタのバー幅を用いて被復調キャラクタの黒バー幅を補正し、復調を行う技術が提案されている。
【００２５】
以下、図１４に示す復調済キャラクタＥ１  に基づいて、被復調済キャラクタＥ７を復調する動作について説明する。まず、ＣＰＵ（図示略）は、図１３に示すステップＳＡ１へ進み、キャラクタＥ７におけるデルタディスタンスＴ１  およびデルタディスタンスＴ２  の各モジュール数を求める。図１４に示す例では、ＣＰＵは、つぎの（１）式および（２）式から、デルタディスタンスＴ１  のモジュール数Ｔ１ｍを「４」、デルタディスタンスＴ２  のモジュール数Ｔ２ｍを「４」として求めた後、ステップＳＡ２へ進む。
【００２６】
Ｔ１ｍ＝ＩＮＴ（Ｔ１  ／（Ｃｚ  ／７）＋０．５）    ・・・（１）
Ｔ２ｍ＝ＩＮＴ（Ｔ２  ／（Ｃｚ  ／７）＋０．５）    ・・・（２）
ここで、上記（１）式および（２）式において、Ｃｚ  は被復調キャラクタ長を意味し、ＩＮＴは、括弧内の「Ｔ１  ／（Ｃｚ  ／７）」を四捨五入するということを意味する。
【００２７】
すなわち、上記ＩＮＴは、図９に示すように、「（Ｔ１  ／（Ｃｚ  ／７）＋０．５）」、「（Ｔ２  ／（Ｃｚ  ／７）＋０．５）」の値が０．５〜１．５のときモジュール数を１とし、上記値が１．５〜２．５のときモジュール数を２とし、上記値が２．５〜３．５のときモジュール数を３とし、上記値が３．５〜４．５のときモジュール数を４とし、同様に上記値が４．５〜のときモジュールを数を５とする処理である。
【００２８】
ステップＳＡ２では、ＣＰＵは、図１０に示す第１の復調テーブル１００にアクセスすることにより、キャラクタ復調を行った後、ステップＳＡ３へ進む。この場合、デルタディスタンスＴ１  ＝４モジュール、デルタディスタンスＴ２  ＝４モジュールであるため、ＣＰＵは、復調結果をキャラクタＥ１またはキャラクタＥ７とする。すなわち、この場合には、復調キャラクタがキャラクタＥ１またはキャラクタＥ７のいずれか一方であるため、復調キャラクタの特定がされていない状態にある。
【００２９】
ここで、キャラクタがキャラクタＥ（Ｏ）１、Ｅ（Ｏ）７、Ｅ（Ｏ）２およびＥ（Ｏ）８であると判断されるときには、第１の復調テーブル１００のみからではキャラクタ復調を行うことができないため、第２の復調テーブル２００（図１１参照）を用いてキャラクタ復調を行う必要がある。
【００３０】
以下、上記キャラクタＥ（Ｏ）１、Ｅ（Ｏ）７、Ｅ（Ｏ）２およびＥ（Ｏ）８（図１３では単に１、７、２、８と図示）を、補正キャラクタと称する。この補正キャラクタは、前述したバーコード１０の黒細りまたは黒太りの影響を回避するために黒バーの黒バー幅の誤差を補正する必要があるキャラクタである。
【００３１】
ステップＳＡ３では、ＣＰＵは、ステップＳＡ２で復調されたキャラクタが補正キャラクタであるか否かを判断し、判断結果が「ＮＯ」の場合、ステップＳＡ７へ進む。ここで、ステップＳＡ３における判断結果が「ＮＯ」である場合には、第１の復調テーブル１００によりキャラクタ復調が完了したことを意味する。この場合、キャラクタが補正キャラクタ（キャラクタＥ１またはキャラクタＥ７のいずれか一方）であるため、ＣＰＵは、ステップＳＡ３の判断結果を「ＹＥＳ」として、ステップＳＡ４へ進む。
【００３２】
ステップＳＡ４では、ＣＰＵは、印刷精度の良否による前述したバーコード１０の黒細りまたは黒太りの影響を排除すべく、図１４に示す黒バー幅Ｂ１  の補正を基準黒バー幅Ｘを基準として行った後、ステップＳＡ５へ進む。
【００３３】
ステップＳＡ５では、ＣＰＵは、基準黒バー幅Ｘのモジュール数（以下、基準黒バー幅モジュール数Ｘｍ  という）を求めた後、この計算結果と図９に示す判別方法により、補正された黒バー幅Ｂ１  のモジュール数を求める。
【００３４】
すなわち、ＣＰＵは、上記基準黒バー幅モジュール数Ｘｍ  から幅差ΔＸ（基準黒バー幅Ｘのモジュール数と黒バー幅Ｂ１  のモジュール数との差）を減算した結果と、図９に示す判別方法とから、補正された黒バー幅Ｂ１  のモジュール数を求める。また、ＣＰＵは、黒バー幅Ｂ１  の場合と同様の手順にて、補正された黒バー幅Ｂ３  のモジュール数を求めた後、ステップＳＡ６へ進む。
【００３５】
ステップＳＡ６では、ＣＰＵは、ステップＳＡ５において算出された黒バー幅Ｂ１  および黒バー幅Ｂ３  を第２の復調テーブル２００（図１１参照）に適用した後、当該キャラクタを判断した後、ステップＳＡ７へ進む。ステップＳＡ７では、ＣＰＵは、つぎのキャラクタの復調用に黒バー幅Ｂ１  を基準黒バー幅Ｘとして、このモジュール数を求めた後、キャラクタ復調を完了させる。
【００３６】
【発明が解決しようとする課題】
ところで、従来のバーコード読取装置におけるバー幅補正方法は、バーコードの印刷誤差によるバーの太り／細りが一様に表れる場合には、有効である。しかしながら、バーコードにおいて各キャラクタ長（幅）が異なるなど、印刷精度によりバーの太り／細りが一様に表れない場合には、バー幅補正時に誤差が生じる。
【００３７】
従って、図１３に示すステップＳＡ６において、第２の復調テーブル２００（図１１参照）に上記黒バー幅Ｂ１  （＝１モジュール）および黒バー幅Ｂ３  （＝２モジュール）を適用すると、同図から明らかなように、該当するキャラクタが存在しえないため復調ができない状態となる。これは、従来のバーコード読取装置において、黒バー幅Ｂ１  および黒バー幅Ｂ３  に対して、バーコード１０の全体にわたって同一の比率で黒太りまたは黒細りが生じることを大前提とし、基準黒バー幅Ｘを基準として補正を行っていることに起因する。
【００３８】
すなわち、図１４に示す例では、復調済キャラクタ長（幅）Ｃｙ  （＝１９８カウント）と被復調キャラクタ長（幅）Ｃｚ  （＝２１１カウント）との間に差があり、この差、すなわちバーコード１０における各キャラクタ長（幅）のばらつきにより、上述した復調、特に被復調キャラクタのバー幅補正に誤差が生じる。
【００３９】
本発明はこのような背景の下になされたもので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができるバーコード読取装置および方法を提供することを目的とする。
【００４０】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載のバーコード読取装置は、キャラクタを複数のバーにより表したバーコードを読み取って得られたバーコードデータより、前記キャラクタを復調するバーコード読取装置において、復調済キャラクタにおけるバー幅基準となる基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅を補正する第１の補正手段（後述する実施の形態１のＣＰＵ７０に相当）と、前記第１の補正手段により補正された被復調キャラクタを構成するバーのバー幅に基づいて、前記被復調キャラクタを復調する復調手段と、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率を求める比率算出手段（後述する実施の形態１のＣＰＵ７０に相当）と、前記基準バーのバー幅を前記比率算出手段により算出された比率に基づいて補正する第２の補正手段（後述する実施の形態１のＣＰＵ７０に相当）と、を備え、前記比率算出手段により算出された比率が予め定められたしきい値以上である場合、前記第１の補正手段は前記第２の補正手段により補正された基準バーのバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とする。
【００４１】
この請求項１に記載の発明によれば、バーコードにおける各キャラクタの幅が同一比率で変化した場合には、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅とに差がでないため、比率算出手段により算出される比率は、しきい値以下となる。
【００４２】
従って、この場合には、第１の補正手段は、第２の補正手段により補正されない基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調手段により復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００４３】
一方、バーコードにおける各キャラクタの幅が異なる比率で変化した場合には、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅とに差がでるため、比率算出手段により算出される比率は、しきい値以上となる。
【００４４】
従って、この場合には、第１の補正手段は、第２の補正手段による基準バーのバー幅により補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調手段により復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００４５】
このように、請求項１に記載の発明によれば、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率をとり、この比率がしきい値以上である場合に、第１の補正手段が、第２の補正手段によって補正された基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができる。
【００４６】
請求項２に記載のバーコード読取装置は、キャラクタを複数のバーにより表したバーコードを読み取って得られたバーコードデータより、前記キャラクタを復調するバーコード読取装置において、復調済キャラクタにおけるバー幅基準となる基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅を補正する第１の補正手段（後述する実施の形態２のＣＰＵ７０に相当）と、前記第１の補正手段により補正された被復調キャラクタを構成するバーのバー幅に基づいて、前記被復調キャラクタを復調する復調手段（後述する実施の形態２のＣＰＵ７０に相当）と、前記バーコードにおける印刷精度を求める印刷精度算出手段と、前記基準バーのバー幅を、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率に基づいて補正する第２の補正手段（後述する実施の形態２のＣＰＵ７０に相当）と、を備え、前記印刷精度算出手段により算出された当該バーコードの印刷精度が予め定められたしきい値以上に悪化している場合、前記第１の補正手段は、前記第２の補正手段により補正された基準バーのバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とする。
【００４７】
この請求項２に記載の発明によれば、バーコードにおける印刷精度が悪化した場合（各キャラクタの幅が異なる値で変化した場合）には、第１の補正手段は、第２の補正手段により補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調手段により復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００４８】
このように、請求項２に記載の発明によれば、バーコードの印刷精度を求め、この印刷精度がしきい値以上に悪化した場合、第１の補正手段により、第２の補正手段によって補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができる。
【００４９】
請求項３に記載のバーコード読取装置は、請求項２に記載のバーコード読取装置において、前記印刷精度算出手段は、前記復調済キャラクタにおける少なくとも一つの基準バー幅と前記被復調キャラクタにおけるバー幅との対比において前記印刷精度を求めることを特徴とする。
【００５０】
この請求項３に記載の発明によれば、印刷精度算出手段においては、復調済キャラクタにおける少なくとも一つの基準バー幅と被復調キャラクタにおけるバー幅との対比において印刷精度を求めている。
【００５１】
このように請求項３に記載の発明によれば、印刷精度、すなわち復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率が異なる場合であっても請求項２に記載の発明と同様にして、バーコードにおける各キャラクタの幅のばらつきに影響を受けることなく正常にキャラクタ復調を行うことができる。
【００５２】
請求項４に記載のバーコード復調方法は、キャラクタを複数のバー幅により表したバーコードを読み取るバーコード読取装置において、復調済キャラクタにおける少なくとも一つの基準バーのバー幅を基準にして、被復調キャラクタのバー幅を補正する第１の補正工程（後述する実施の形態１のステップＳＢ８〜ステップＳＢ１２に相当）と、前記第１の補正工程において補正された前記復調済キャラクタのバー幅に基づいて、前記被復調キャラクタを復調する復調工程（後述する実施の形態１のステップＳＢ２１に相当）と、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率を求める比率算出工程（後述する実施の形態１のステップＳＢ４に相当）と、前記基準バーの前記バー幅を前記比率に基づいて補正する第２の補正工程（後述する実施の形態１のステップＳＢ６に相当）と、を備え、前記比率算出工程において算出された前記比率が予め定められたしきい値以上である場合、前記第２の補正工程により補正された基準バーのバー幅に基づいて前記第１の補正工程によるバー幅補正を行い、当該補正されたバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とする。
【００５３】
この請求項４に記載の発明によれば、バーコードにおける各キャラクタの幅が同一比率変化した場合には、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅とに差がでないため、比率算出工程において算出される比率は、しきい値以下となる。
【００５４】
従って、この場合には、第１の補正工程では、第２の補正工程により補正されない基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調工程により復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００５５】
一方、バーコードにおける各キャラクタの幅が異なる比率で変化した場合には、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅とに差がでるため、比率算出工程により算出される比率は、しきい値以上となる。
【００５６】
従って、この場合には、第１の補正工程では、第２の補正工程による基準バーのバー幅により補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調工程により復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００５７】
このように、請求項４に記載の発明によれば、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率をとり、この比率がしきい値以上である場合、第１の補正工程において、第２の補正工程によって補正された基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができる。
【００５８】
請求項５に記載のバーコード復調方法は、キャラクタを複数のバー幅により表したバーコードを読み取るバーコード読取方法において、復調済キャラクタにおける少なくとも一つの基準バーのバー幅を基準にして、被復調キャラクタのバー幅を補正する第１の補正工程（後述する実施の形態２のステップＳＢ８〜ステップＳＢ１２に相当）と、前記第１の補正工程において補正された前記復調済キャラクタのバー幅に基づいて、前記被復調キャラクタを復調する復調工程（後述する実施の形態２のステップＳＢ２１に相当）と、前記バーコードにおける印刷精度を求める印刷精度算出工程と、前記基準バーの前記バー幅を、前記復調済キャラクタの幅と前記被復調キャラクタの幅との比率に基づいて補正する第２の補正工程（後述する実施の形態２のステップＳＣ９に相当）と、を備え、前記印刷精度算出工程により算出された当該バーコードの印刷精度が予め定められたしきい値以上に悪化している場合、前記第２の補正工程により補正された基準バーのバー幅に基づいて、前記第１の補正工程によるバー幅補正を行い、当該補正されたバー幅に基づいて、前記被復調キャラクタを構成するバーのバー幅を補正することを特徴とする。
【００５９】
この請求項５に記載の発明によれば、バーコードにおける印刷精度が悪化した場合（各キャラクタの幅が異なる値で変化した場合）には、第１の補正工程では、第２の補正工程において補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対する補正が行われる。そして、復調工程においては、復調済キャラクタのバー幅に基づいて、被復調キャラクタの復調が行われる。
【００６０】
このように、請求項５に記載の発明によれば、バーコードの印刷精度を求め、この印刷精度がしきい値以上に悪化した場合に、第１の補正工程で、第２の補正工程において補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対して補正を行うようにしたので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができる。
【００６１】
請求項６に記載のバーコード復調方法は、請求項５に記載のバーコード復調方法において、前記印刷精度算出工程では、前記復調済キャラクタにおける少なくとも一つの基準バー幅と前記被復調キャラクタにおけるバー幅との対比において前記印刷精度を求めることを特徴とする。
【００６２】
この請求項６に記載の発明によれば、印刷精度算出工程においては、復調済キャラクタにおける少なくとも一つの基準バー幅と被復調キャラクタにおけるバー幅との対比において印刷精度を求めている。
【００６３】
このように請求項６に記載の発明によれば、印刷精度、すなわち復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率が異なる場合であっても請求項５に記載の発明と同様にして、バーコードにおける各キャラクタの幅のばらつきに影響を受けることなく正常にキャラクタ復調を行うことができる。
【００６４】
【発明の実施の形態】
以下、図面を参照して、本発明にかかるバーコード読取装置の実施の形態１および２について詳述する。
【００６５】
（実施の形態１）
図１は、本発明の実施の形態１によるバーコード読取装置の構成を示すブロック図である。この図において、バーコード１０（図６参照）は、図示しない商品に付されており、前述したように複数の黒バーと白バーとが交互に組み合わされてなり、Ｅ０〜Ｅ９、Ｏ０〜Ｏ９という都合２０種類のキャラクタを表現するためのものである。
【００６６】
読取部２０は、バーコード１０を光学的に読み取り、読み取り結果を読取信号Ｓｂ  として出力するものであり、レーザ光Ｌをバーコード１０に対して照射するレーザ発振器（図示略）、バーコード１０により反射されたレーザ光Ｌを受光した後、読取信号Ｓｂ  を生成する受光部（図示略）とから概略構成されている。
【００６７】
具体的には、読取部２０は、図２（ａ）に示すバーコード１０に照射されたレーザ光Ｌがバーコード１０により反射された反射光を受光して、図２（ｂ）に示す波形の読取信号Ｓｂ  を出力する。ここで、読取信号Ｓｂ  のレベルは、図２（ａ）に示す黒バーＢＢ１  、白バーＷＢ１  、黒バーＢＢ２  および白バーＷＢ２  に対応している。すなわち、黒バーＢＢ１  および黒バーＢＢ２  の光反射率が低いためこれらに対応する読取信号Ｓｂ  のレベルが低くなっており、一方、白バーＷＢ１  および白バーＷＢ２  の光反射率が高いためこれらに対応する読取信号Ｓｂ  のレベルが高くなっている。
【００６８】
図１に戻り、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ  ）変換部３０は、図２（ｂ）に示す読取信号Ｓｂ  としきい値とを比較することにより、読取信号Ｓｂ  を図２（ｃ）に示すように二値化（ディジタル化）する処理を行う。クロック信号発生部４０は、所定周期のクロック信号Ｓｃ  を発生する。バー幅カウンタ５０は、クロック信号発生部４０より供給されるクロック信号Ｓｃ  の周期に同期してカウントアップ動作を行い、Ａ／Ｄ変換部３０によりディジタル化された読取信号Ｓｂ  のうち、図２（ｃ）に示す黒バー幅Ｂ１  、白バー幅Ｂ２  、黒バー幅Ｂ３  および白バー幅Ｂ４  をカウント値として測定する。図２（ｃ）に示す例では、黒バー幅Ｂ１  が５０カウント、白バー幅Ｂ２  が５０カウント、黒バー幅Ｂ３  が１００カウント、白バー幅Ｂ４  が２００カウントとされている。
【００６９】
メモリ６０は、上記バー幅カウンタ５０のカウント値のデータを図２（ｄ）に示すように黒バー幅Ｂ１  、白バー幅Ｂ２  、・・・  に対応させて記憶する。ＣＰＵ７０は、メモリ６０に記憶されている各カウント値のデータ、上述した第１の復調テーブル１００（図１０参照）および第２の復調テーブル２００（図１１参照）に基づいて、バーコード１０におけるキャラクタを復調して、復調結果を復調データＤとして出力する。このＣＰＵ７０の動作の詳細については、後述する。ＲＯＭ８０は、第１の復調テーブル１００、第２の復調テーブル２００、ＣＰＵ７０において実行されるプログラムを記憶する。
【００７０】
次に、上述した実施の形態１によるバーコード読取装置の動作について図３に示すフローチャートを参照しつつ説明する。
図１において、バーコード読み取りを行うべく、読取部２０のレーザ発振器（図示略）からレーザ光Ｌがバーコード１０に照射されると、前述した動作を経て、読取部２０の受光部からは、読取信号Ｓｂ  がＡ／Ｄ変換部３０へ出力される。これにより、Ａ／Ｄ変換部３０では、入力された読取信号Ｓｂ  としきい値とが比較されることにより、読取信号Ｓｂ  が図１４に示すように二値化され、この二値化された読取信号Ｓｂ  がバー幅カウンタ５０によりカウントされる。
【００７１】
図１４には、前述したように、キャラクタＥ１のつぎにキャラクタＥ７が続いた例が図示されており、キャラクタＥ１は、既に復調済みのキャラクタであり、キャラクタＥ７は、復調される被復調キャラクタである。
【００７２】
また、メモリ６０には、図１４に示す復調済キャラクタＥ１にするカウント結果として、黒バー幅Ｂ１  ’＝５７カウント、白バー幅Ｂ２  ’＝５４カウント、黒バー幅Ｂ３  ’＝５６カウント、白バー幅Ｂ４  ’＝３１カウント、復調済キャラクタ長（幅）Ｃｙ  ＝１９８カウントが記憶されているものとする。ここで、復調済キャラクタＥ１において、黒バー幅Ｂ１  ’を基準黒バー幅Ｘと称する。一方、メモリ６０には、被復調キャラクタＥ７に関するカウント結果として、黒バー幅Ｂ１  ＝４０カウント、白バー幅Ｂ２  ＝７６カウント、黒バー幅Ｂ３  ＝４２カウント、白バー幅Ｂ４  ＝５３カウントおよび被復調キャラクタ長（幅）Ｃｚ  ＝２１１カウントが記憶されているものとする。
【００７３】
この状態において、ＣＰＵ７０（図１参照）は、図３に示すステップＳＢ１へ進み、キャラクタＥ７におけるデルタディスタンスＴ１  およびデルタディスタンスＴ２  の各モジュール数を求める。具体的には、ＣＰＵ７０は、まず、キャラクタＥ７の被復調キャラクタ長Ｃｚ  （＝２１１カウント）を７（モジュール）で除して、キャラクタＥ７における１モジュール長（＝Ｃｚ  ／７）を求める。
【００７４】
つぎに、ＣＰＵ７０は、デルタディスタンスＴ１  として、黒バー幅Ｂ１  （＝４０カウント）と白バー幅Ｂ２  （＝７６カウント）との和（＝１１６カウント）を求め、同様に、デルタディスタンスＴ２  として白バー幅Ｂ２  （＝７６カウント）と黒バー幅Ｂ３  （＝４２カウント）との和（＝１１８カウント）を求める。
【００７５】
つぎに、ＣＰＵ７０は、前述したつぎの（１）式および（２）式に、求められた被復調キャラクタＥ７のデルタディスタンスＴ１  、デルタディスタンスＴ２  、１モジュール長（＝Ｃｚ  ／７）をそれぞれ代入することにより、デルタディスタンスＴ１  およびデルタディスタンスＴ２  のモジュール数Ｔ１ｍおよびモジュール数Ｔ２ｍをそれぞれ求める。
【００７６】
Ｔ１ｍ＝ＩＮＴ（Ｔ１  ／（Ｃｚ  ／７）＋０．５）    ・・・（１）
Ｔ２ｍ＝ＩＮＴ（Ｔ２  ／（Ｃｚ／７）＋０．５）    ・・・（２）
【００７７】
図１４に示す例では、ＣＰＵ７０は、上述した（１）式および（２）式から、デルタディスタンスＴ１  のモジュール数を「４」、デルタディスタンスＴ２  のモジュール数を「４」として求めた後、ステップＳＢ２へ進む。ステップＳＢ２では、ＣＰＵ７０は、図１０に示す第１の復調テーブル１００にアクセスすることにより、キャラクタ復調を行った後、ステップＳＢ３へ進む。この場合、デルタディスタンスＴ１  ＝４モジュール、デルタディスタンスＴ２  ＝４モジュールであるため、ＣＰＵ７０は、復調結果をキャラクタＥ１またはキャラクタＥ７とする。
【００７８】
ここで、前述したように、キャラクタＥ（Ｏ）１、Ｅ（Ｏ）７、Ｅ（Ｏ）２およびＥ（Ｏ）８（図３では単に１、７、２、８と図示）は、補正キャラクタである。従って、上記キャラクタＥ１またはＥ７は補正キャラクタである。
【００７９】
ステップＳＢ３では、ＣＰＵ７０は、ステップＳＢ２により復調されたキャラクタが補正キャラクタであるか否かを判断し、判断結果が「ＮＯ」の場合、すなわち、復調されたキャラクタが上記補正キャラクタ以外のものである場合、復調されたキャラクタに関する復調データＤを図示しないホストコンピュータ等へ出力した後、キャラクタの復調動作を終了する。この場合、キャラクタが補正キャラクタ（キャラクタＥ１またはキャラクタＥ７のいずれか一方）であるため、ＣＰＵ７０は、ステップＳＢ３の判断結果を「ＹＥＳ」として、ステップＳＢ４へ進む。
【００８０】
ステップＳＢ４では、ＣＰＵ７０は、すでに復調済みのキャラクタのキャラクタ長と、復調すべきキャラクタのキャラクタ長との比率を求める。具体的には、ＣＰＵ７０は、図１４に示す復調済キャラクタＥ１の復調済キャラクタ長Ｃｙ  （＝１９８カウント）と、被復調キャラクタＥ７のキャラクタ長Ｃｚ  （＝２１１カウン）との比率（｜Ｃｙ  ／Ｃｚ  ｜）を求めた後、ステップＳＢ５へ進む。この場合、上記比率は、６．１６％（小数点第３位四捨五入）である。
【００８１】
ステップＳＢ５では、ＣＰＵ７０は、ステップＳＢ４において求められた比率がしきい値（たとえば、５％）以上であるか否かを判断する。ここで、上記しきい値は、図６に示すバーコード１０において、すべての黒バーが全体的に黒太り（または黒細り）しているか、または部分的な黒バーのみが黒太り（または黒細り）しているか否かの判断に用いられる。言い換えれば、上記しきい値は、キャラクタ間におけるキャラクタ長／バー幅の誤差の程度を判断するための値である。
【００８２】
すなわち、バーコード１０において、すべての黒バーが全体的に黒太り（または黒細り）している場合、各キャラクタ長Ｃは同値となり、一方、部分的な黒バーのみが黒太り（または黒細り）している場合、バーコード１０における各キャラクタ長Ｃにばらつきが生じている。
【００８３】
従って、ステップＳＢ５における比率の判断において、比率がしきい値以上である場合には、バーコード１０における各キャラクタ長Ｃにばらつきが生じているものとみなされる一方、比率がしきい値より小である場合には、誤差が軽微であり、バーコード１０において各キャラクタ長Ｃが等しいものとみなされる。この場合、ＣＰＵ７０は、比率が６．１６％（≧５％）であることから、復調済キャラクタ長Ｃｙ  と被復調キャラクタ長Ｃｚ  との間にばらつきがあるものとして、ステップＳＢ５の判断結果を「ＹＥＳ」として、ステップＳＢ６へ進む。
【００８４】
ステップＳＢ６では、ＣＰＵ７０は、図１４に示す基準黒バー幅Ｘを補正する。具体的には、ＣＰＵ７０は、つぎの（３）式に基準黒バー幅Ｘ（＝５７カウント）、復調済キャラクタ長Ｃｙ  （＝１９８カウント）および被復調キャラクタ長Ｃｚ  （＝２１１カウント）をそれぞれ代入して、補正された基準黒バー幅Ｘｈ  を算出した後、ステップＳＢ８へ進む。
Ｘｈ  ＝Ｘ・（Ｃｚ  ／Ｃｙ  ）    ・・・（３）
この場合、上記基準黒バー幅Ｘｈ  は、（５７・（２１１／１９８））より６０．７４（小数点第３位四捨五入）カウントである。
【００８５】
ステップＳＢ８では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）が黒バー幅Ｂ１  （＝４０カウント）より大きいか否かを判断する。この場合、Ｘｈ  ＞Ｂ１  なる関係にあるため、ＣＰＵ７０は、ステップＳＢ８の判断結果を「ＹＥＳ」として、ステップＳＢ９へ進む。ステップＳＢ９では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）から黒バー幅Ｂ１  （＝４０カウント）を減算した黒バー幅差ΔＸ１  （＝２０．７４カウント）を求めた後、ステップＳＢ１１へ進む。
【００８６】
一方、ステップＳＢ８において、基準黒バー幅Ｘｈ  が黒バー幅Ｂ１  以下である場合には、ＣＰＵ７０は、判断結果を「ＮＯ」としてステップＳＢ１０へ進む。ステップＳＢ１０では、ＣＰＵ７０は、黒バー幅Ｂ１  から基準黒バー幅Ｘｈ  を減算した黒バー幅差ΔＸ１  を求めた後、ステップＳＢ１１へ進む。ステップＳＢ１１では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）が黒バー幅Ｂ３  （＝４２カウント）より大きいか否かを判断する。この場合Ｘｈ  ＞Ｂ３  なる関係にあるため、ＣＰＵ７０は、ステップＳＢ１１の判断結果を「ＹＥＳ」として、ステップＳＢ１２へ進む。
【００８７】
ステップＳＢ１２では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）から黒バー幅Ｂ３  （＝４２カウント）を減算した黒バー幅差ΔＸ３  （＝１８．７４カウント）を求めた後、ステップＳＢ１４へ進む。一方、ステップＳＢ１１において、基準黒バー幅Ｘｈ  が黒バー幅Ｂ３  以下である場合には、ＣＰＵ７０は、判断結果を「ＮＯ」としてステップＳＢ１３へ進む。ステップＳＢ１３では、ＣＰＵ７０は、黒バー幅Ｂ３  から基準黒バー幅Ｘｈ  を減算した黒バー幅差ΔＸ３  を求めた後、ステップＳＢ１４へ進む。
【００８８】
ステップＳＢ１４では、ＣＰＵ７０は、ステップＳＢ９（またはステップＳＢ１０）およびステップＳＢ１２（またはステップＳＢ１３）で求めた黒バー幅差ΔＸ１  （＝２０．７４カウント）および黒バー幅差ΔＸ３  （＝１８．７４カウント）の黒バー幅差モジュール数ΔＸ１ｍおよび黒バー幅差モジュール数ΔＸ３ｍを求める。具体的には、ＣＰＵ７０は、黒バー幅差ΔＸ１  （＝２０．７４カウント）を被復調キャラクタＥ７における１モジュールのカウント数（＝（Ｃｚ  ／７）＝（２１１／７）＝３０．１４カウント（小数点第３位四捨五入））で除算した結果を、黒バー幅差モジュール数ΔＸ１ｍとして求める。この場合、この黒バー幅差モジュール数ΔＸ１ｍは、０．６９（小数点以下第３位四捨五入）である。
【００８９】
同様にして、ＣＰＵ７０は、黒バー幅差ΔＸ３  （＝１８．７４カウント）を被復調キャラクタＥ７における１モジュールのカウント数（＝（Ｃｚ  ／７）＝３０．１４カウント）で除算した結果を、黒バー幅差モジュール数ΔＸ３ｍとして求めた後、ステップＳＢ１５へ進む。この場合、この黒バー幅差モジュール数ΔＸ３ｍは、０．６２（小数点以下第３位四捨五入）である。
【００９０】
ステップＳＢ１５では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）が黒バー幅Ｂ１  （＝４０カウント）より大きいか否かを判断する。この場合Ｘｈ  ＞Ｂ１  なる関係にあるため、ＣＰＵ７０は、ステップＳＢ１５の判断結果を「ＹＥＳ」として、ステップＳＢ１６へ進む。ステップＳＢ１６では、ＣＰＵ７０は、まず、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）の基準黒バー幅モジュール数Ｘｍ  を求める。具体的には、ＣＰＵ７０は、基準黒バー幅Ｘｈ  （＝６０．７４カウント）を復調済キャラクタＥ１における１モジュールのカウント数（＝（Ｃｙ  ／７）＝（１９８／７）＝２８．２８カウント（小数点第３位四捨五入））で除算した結果と、前述した図９に示す判別方法とから基準黒バー幅モジュール数Ｘｍ  として求める。
【００９１】
この場合、上記除算結果（＝６０．７４／２８．２８）が２．１５（小数点第３位四捨五入）であることから、図９に示す判別方法を適用すれば、基準黒バー幅モジュール数Ｘｍ  は、２として求められる。
【００９２】
つぎに、ＣＰＵ７０は、上記基準黒バー幅モジュール数Ｘｍ  （＝２モジュール）から黒バー幅差モジュール数ΔＸ１ｍ（＝０．６９モジュール）を減算した結果、および図９に示す判別方法とから黒バー幅Ｂ１  の黒バー幅モジュール数Ｂ１ｍを求める。この場合、上記減算結果（２−０．６９）が１．３１であり、かつ図９に示す０．５〜１．５までの間であることから、上記黒バー幅モジュール数Ｂ１ｍは、１モジュールとして求められる。
【００９３】
一方、ステップＳＢ１５において、基準黒バー幅Ｘｈ  が黒バー幅Ｂ１  以下である場合には、ＣＰＵ７０は、判断結果を「ＮＯ」として、ステップＳＢ１７へ進む。ステップＳＢ１７では、ＣＰＵ７０は、まず、ステップＳＢ１６とは逆に、黒バー幅差モジュール数ΔＸ１ｍから基準黒バー幅モジュール数Ｘｍ  を減算した結果に基づいて、黒バー幅モジュール数Ｂ１ｍを求めた後、ステップＳＢ１８へ進む。
【００９４】
ステップＳＢ１８では、ＣＰＵ７０は、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）が黒バー幅Ｂ３  （＝４２カウント）より大きいか否かを判断する。この場合Ｘｈ  ＞Ｂ３  なる関係にあるため、ＣＰＵ７０は、ステップＳＢ１８の判断結果を「ＹＥＳ」として、ステップＳＢ１９へ進む。
【００９５】
ステップＳＢ１９では、ＣＰＵ７０は、まず、補正された基準黒バー幅Ｘｈ  （＝６０．７４カウント）の基準黒バー幅モジュール数Ｘｍ  を、ステップＳＢ１６で説明した手法により２として求めた後、上記基準黒バー幅モジュール数Ｘｍ  （＝２モジュール）から黒バー幅差モジュール数ΔＸ３ｍ（０．６２モジュール）を減算した結果、および図９に示す判別方法とから黒バー幅Ｂ３  の黒バー幅モジュール数Ｂ３ｍを求める。
【００９６】
この場合、上記減算結果（２−０．６２）が１．３８であり、かつ図９に示す０．５〜１．５までの間であることから、上記黒バー幅モジュール数Ｂ３ｍは、１モジュールとして求められる。一方、ステップＳＢ１８において、基準黒バー幅Ｘｈ  が黒バー幅Ｂ３  以下である場合には、ＣＰＵ７０は、判断結果を「ＮＯ」として、ステップＳＢ２０へ進む。ステップＳＢ２０では、ＣＰＵ７０は、ステップＳＢ１９とは逆に、黒バー幅差モジュール数ΔＸ３ｍから基準黒バー幅モジュール数Ｘｍ  を減算した結果に基づいて、黒バー幅モジュール数Ｂ３ｍを求めた後、ステップＳＢ２１へ進む。
【００９７】
ステップＳＢ２１では、ＣＰＵ７０は、ステップＳＢ１６（またはステップＳＢ１７）において求められた黒バー幅モジュール数Ｂ１ｍ（＝１モジュール）、ステップＳＢ１９（またはステップＳＢ２０）において求められた黒バー幅モジュール数Ｂ３ｍ（＝１モジュール）を、図１１に示す第２の復調テーブル２００に適用することにより、キャラクタ復調を行う。
【００９８】
この場合、ＣＰＵ７０は、図１１に示す第２の復調テーブル２００における黒バー幅Ｂ１  として、黒バー幅モジュール数Ｂ１ｍ（＝１モジュール）を、また黒バー幅Ｂ３  として、黒バー幅モジュール数Ｂ３ｍ（＝１モジュール）を適用することにより、キャラクタＥ７を復調して、このキャラクタＥ７に関する復調データＤを図示しないホストコンピュータ等へ出力した後、ステップＳＢ２２へ進む。
【００９９】
すなわち、この場合には、図１４に示すようにキャラクタＥ７のキャラクタ長Ｃｚ  とキャラクタＥ１の復調済キャラクタ長Ｃｙ  との間に差がある、言い換えればバーコード１０における各キャラクタ長にばらつきがあるにもかかわらず、キャラクタＥ７が正しく復調されたのである。
【０１００】
ステップＳＢ２２では、ＣＰＵ７０は、キャラクタ復調ができたか否かを判断し、この場合、判断結果を「ＹＥＳ」として、キャラクタの復調動作を終了（ＯＫ）する。一方、キャラクタ復調ができなかった場合には、ＣＰＵ７０は、ステップＳＢ２２の判断結果を「ＮＯ」としてキャラクタ復調動作を終了（ＮＧ）する。
【０１０１】
なお、上述したステップＳＢ５において、比率がしきい値（＝５％）以下である場合、ＣＰＵ７０は、復調済キャラクタ長Ｃｙ  と被復調キャラクタ長Ｃｚ  との間にばらつきがないものとして、判断結果を「ＮＯ」として、ステップＳＢ７へ進む。ステップＳＢ７では、ＣＰＵ７０は、基準黒バー幅Ｘを基準黒バー幅Ｘｈ  とした後、ステップＳＢ８へ進み、上述した工程を実行する。すなわち、ステップＳＢ７においては、基準黒バー幅Ｘは補正されることなく、基準黒バー幅Ｘｈ  として以後の算出でそのまま用いられるのである。
【０１０２】
ここで、上述した実施の形態１によるバーコード読取装置と、前述した従来のバーコード読取装置との差違を明確にすべく、従来のバーコード読取装置により図１４に示す被復調キャラクタＥ７を復調した場合について、具体的数値を挙げて図１３に示すフローチャートを参照しつつ対比説明する。つまり、以下の説明は、上述した実施の形態１において、キャラクタ間比率に基づいて基準黒バー幅の補正を行わない場合についてのものである。
【０１０３】
まず、ＣＰＵ７０（図１参照）は、図１３に示すステップＳＡ１へ進み、キャラクタＥ７におけるデルタディスタンスＴ１  およびデルタディスタンスＴ２  の各モジュール数を求める。具体的には、ＣＰＵ７０は、まず、キャラクタＥ７の被復調キャラクタ長Ｃｚ  （＝２１１カウント）を７（モジュール）で除して、キャラクタＥ７における１モジュール長（＝Ｃｚ  ／７）を求める。
【０１０４】
つぎに、ＣＰＵ７０は、デルタディスタンスＴ１  として、黒バー幅Ｂ１  （＝４０カウント）と白バー幅Ｂ２  （＝７６カウント）との和（＝１１６カウント）を求めた後、デルタディスタンスＴ２  として白バー幅Ｂ２  （＝７６カウント）と黒バー幅Ｂ３  （＝４２カウント）との和（＝１１８カウント）を求める。
【０１０５】
つぎに、ＣＰＵ７０は、前述した（１）式および（２）式に、求められたキャラクタＥ７のデルタディスタンスＴ１  、デルタディスタンスＴ２  、１モジュール長（＝Ｃｚ  ／７）および１モジュール長（＝Ｃｙ  ／７）をそれぞれ代入することにより、デルタディスタンスＴ１  およびデルタディスタンスＴ２  のモジュール数Ｔ１ｍおよびモジュール数Ｔ２ｍを「４」および「４」としてそれぞれ求めた後、ステップＳＡ２へ進む。
【０１０６】
ステップＳＡ２では、ＣＰＵは、図１０に示す第１の復調テーブル１００にアクセスすることにより、キャラクタ復調を行った後、ステップＳＡ３へ進む。この場合、モジュール数Ｔ１ｍ＝４モジュール、モジュール数Ｔ２ｍ＝４モジュールであるため、ＣＰＵは、復調結果をキャラクタＥ１またはキャラクタＥ７とした後、ステップＳＡ３へ進む。
【０１０７】
ステップＳＡ３では、ＣＰＵ７０は、ステップＳＡ２で復調されたキャラクタが補正キャラクタであるか否かを判断し、この場合、キャラクタが補正キャラクタ（キャラクタＥ１またはキャラクタＥ７のいずれか一方）であるため、ＣＰＵ７０は、ステップＳＡ３の判断結果を「ＹＥＳ」として、ステップＳＡ４へ進む。
【０１０８】
ステップＳＡ４では、ＣＰＵ７０は、図１４に示す黒バー幅Ｂ１  の補正を基準黒バー幅Ｘを基準として行う。
具体的には、ＣＰＵ７０は、つぎの（４）式に、図１４に示す基準黒バー幅Ｘ（＝５７カウント）、黒バー幅Ｂ１  （＝４０カウント）、被復調キャラクタＥ７における被復調キャラクタ長Ｃｚ  （＝２１１カウント）を代入することにより、基準黒バー幅Ｘと黒バー幅Ｂ１  との差である幅差ΔＸを求めた後、ステップＳＡ５へ進む。
ΔＸ＝（Ｘ−Ｂ１  ）／（Ｃｚ  ／７）    ・・・（４）
上記幅差ΔＸは、０．５６（小数点第３位四捨五入）として求められる。
【０１０９】
ステップＳＡ５では、ＣＰＵ７０は、基準黒バー幅Ｘのモジュール数（以下、基準黒バー幅モジュール数Ｘｍ  という）として、基準黒バー幅Ｘ／（Ｃｙ  ／７）の計算式から基準黒バー幅Ｘのモジュール数を求めた後、この計算結果（＝２．０２（小数点第３位四捨五入））と図９に示す判別方法により、２を求める。
【０１１０】
つぎに、ＣＰＵ７０は、上記基準黒バー幅モジュール数Ｘｍ  （＝２モジュール）から上述した幅差ΔＸ（＝０．５６）を減算した結果（＝１．４４）と、図９に示す判別方法とから、補正された黒バー幅Ｂ１  のモジュール数を１として求める。また、ＣＰＵ７０は、黒バー幅Ｂ１  の場合と同様の手順にて、補正された黒バー幅Ｂ３  のモジュール数を２として求めた後、ステップＳＡ６へ進む。
【０１１１】
ステップＳＡ６では、ＣＰＵ７０は、ステップＳＡ５において算出された黒バー幅Ｂ１  （＝１モジュール）および黒バー幅Ｂ３  （＝２モジュール）を第２の復調テーブル２００（図１１参照）に適用する。
【０１１２】
しかしながら、上記ステップＳＡ６において、第２の復調テーブル２００（図１１参照）に上記黒バー幅Ｂ１  （＝１モジュール）および黒バー幅Ｂ３  （＝２モジュール）を適用すると、同図から明らかなように、該当するキャラクタが存在しえないため復調ができない状態となる。これは、従来のバーコード読取装置において、黒バー幅Ｂ１  および黒バー幅Ｂ３  に対して、バーコード１０の全体にわたって同一の比率で黒太りまたは黒細りが生じることを大前提として、基準黒バー幅Ｘを基準として補正を行っていることに起因する。
【０１１３】
これに対して、上述した実施の形態１によるバーコード読取装置によれば、被復調キャラクタ長Ｃｚ  と復調済キャラクタ長Ｃｙ  との比率としきい値とを比較して、この比較結果に基づいて、基準黒バー幅Ｘに対して補正をかけるように構成したので、バーコード１０における各キャラクタ長Ｃのばらつきの影響を受けることなく、正常にキャラクタ復調動作を行うことができる。
【０１１４】
なお、上述した実施の形態１によるバーコード読取装置においては、図１４に示す復調済キャラクタＥ１の各バーのモジュール数が既知であるため、例えば、復調済キャラクタＥ１の基準黒バー幅モジュール数Ｘｍ  （＝２モジュール（理論値））を用いて、図３に示すステップＳＢ１５〜ステップＳＢ２０の処理を行ってもよい。
【０１１５】
（実施の形態２）
図４は、本発明の実施の形態２によるバーコード読取装置の動作を示すフローチャート図である。この実施の形態２によるバーコード読取装置のハードウェア構成は、上述した実施の形態１によるバーコード読取装置のハードウェア構成と同一であるためその説明を省略する。ただし、実施の形態２によるバーコード読取装置においては、図１に示すＣＰＵ７０の動作の一部が実施の形態１によるバーコード読取装置と異なる。
【０１１６】
具体的には、実施の形態１によるバーコード読取装置においては、図３に示すステップＳＢ５で比率に基づいて基準黒バー幅Ｘに対して補正をかけるか否かが判断されたが、以下に説明する実施の形態２によるバーコード読取装置においては、図４に示すステップＳＣ８でバーコード１０の印刷精度に基づいて基準黒バー幅Ｘに対して補正をかけるか否かが判断される点が実施の形態１と大きく相違する点である。
【０１１７】
つぎに、上述した実施の形態２によるバーコード読取装置の動作について、図４に示すフローチャートを参照しつつ説明する。ここで、図１に示すメモリ６０には、図１４に示す復調済キャラクタＥ１に関するカウント結果として、基準黒バー幅Ｘ（黒バー幅Ｂ１  ’）＝５７カウント、白バー幅Ｂ２  ’＝５４カウント、黒バー幅Ｂ３  ’＝５６カウント、白バー幅Ｂ４  ’＝３１カウント、復調済キャラクタ長Ｃｙ  ＝１９８カウントが記憶されているものとする。
【０１１８】
同様にして、メモリ６０には、被復調キャラクタＥ７に関するカウント結果として、黒バー幅Ｂ１  ＝４０カウント、白バー幅Ｂ２  ＝７６カウント、黒バー幅Ｂ３  ＝４２カウント、白バー幅Ｂ４  ＝５３カウントおよび被復調キャラクタ長Ｃｚ  ＝２１１カウントが記憶されているものとする。
【０１１９】
この状態において、ＣＰＵ７０（図１参照）は、図４に示すステップＳＣ１へ進み、前述したステップＳＢ１（図３参照）と同様にして、図１４に示すキャラクタＥ７におけるデルタディスタンスＴ１  のモジュール数を「４」、デルタディスタンスＴ２  のモジュール数を「４」として求めた後、ステップＳＣ２へ進む。ステップＳＣ２では、ＣＰＵ７０は、図１０に示す第１の復調テーブル１００にアクセスすることにより、キャラクタ復調を行った後、ステップＳＣ３へ進む。この場合、デルタディスタンスＴ１  ＝４モジュール、デルタディスタンスＴ２  ＝４モジュールであるため、ＣＰＵ７０は、復調結果をキャラクタＥ１またはキャラクタＥ７とする。
【０１２０】
ステップＳＣ３では、ＣＰＵ７０は、ステップＳＣ２により復調されたキャラクタが補正キャラクタであるか否かを判断し、判断結果が「ＮＯ」の場合、すなわち、復調されたキャラクタが上記補正キャラクタ以外のものである場合、復調されたキャラクタに関する復調データＤを図示しないホストコンピュータ等へ出力した後、図３に示すＥＮＤ（ＯＫ）へ進み、キャラクタの復調動作を終了する。
【０１２１】
この場合、キャラクタが補正キャラクタ（キャラクタＥ１またはキャラクタＥ７のいずれか一方）であるため、ＣＰＵ７０は、ステップＳＣ３の判断結果を「ＹＥＳ」として、ステップＳＣ４へ進む。ここで、以下の説明においては、図１４に示す基準黒バー幅Ｘを有する黒バーをＸバー、黒バー幅Ｂ１  を有する黒バーをＢ１  バー、黒バー幅Ｂ３  を有する黒バーをＢ３  バーと称する。
【０１２２】
ステップＳＣ４では、ＣＰＵ７０は、基準黒バー幅Ｘ（＝５７カウント）をキャラクタＥ７における１モジュールのカウント値（Ｃｚ  ／７＝２１１／７＝３０．１４（小数点第３位四捨五入））で除算した結果をＸバーの印刷精度Ｘｓ  （＝１．８９モジュール（小数点第３位四捨五入））として求めた後、ステップＳＣ５へ進む。ステップＳＣ５では、ＣＰＵ７０は、黒バー幅Ｂ１  （＝４０カウント）を上記カウント値（Ｃｚ  ／７＝３０．１４）で除算した結果をＢ１  バーの印刷精度Ｂ１Ｓ（＝１．３３モジュール（小数点第３位四捨五入））として求めた後、ステップＳＣ６へ進む。
【０１２３】
ステップＳＣ６では、ＣＰＵ７０は、黒バー幅Ｂ３  （＝４２カウント）を上記カウント値（Ｃｚ  ／７＝３０．１４）で除算した結果をＢ３  バーの印刷精度Ｂ３Ｓ（＝１．３９モジュール（小数点第３位四捨五入））として求めた後、ステップＳＣ７へ進む。ステップＳＣ７では、ＣＰＵ７０は、ステップＳＣ４〜ステップＳＣ６でそれぞれ求めた印刷精度Ｘｓ  、印刷精度Ｂ１Ｓおよび印刷精度Ｂ３Ｓをチェックする。具体的には、ＣＰＵ７０は、印刷精度Ｘｓ  （＝１．８９モジュール）と印刷精度Ｂ１Ｓ（＝１．３３モジュール）との差の絶対値（＝０．５６モジュール：以下、第１の印刷精度と称する）、および印刷精度Ｘｓ  （＝１．８９モジュール）と印刷精度Ｂ３Ｓ（＝１．３９モジュール）との差の絶対値（＝０．５モジュール：以下、第２の印刷精度と称する）をそれぞれ求めた後、ステップＳＣ８へ進む。
【０１２４】
ステップＳＣ８では、ＣＰＵ７０は、ステップＳＣ７において求められた第１の印刷精度および（または）第２の印刷精度がしきい値（たとえば、０．３モジュール）以上に悪化しているか否かを判断する。ここで、上記しきい値は、図６に示すバーコード１０において、すべての黒バーが全体的に黒太り（または黒細り）しているか、または部分的な黒バーのみが黒太り（または黒細り）しているか否かの判断に用いられる。
【０１２５】
すなわち、バーコード１０において、すべての黒バーが全体的に黒太り（または黒細り）している場合、各キャラクタ長Ｃは同値となり、一方、部分的な黒バーのみが黒太り（または黒細り）している場合、バーコード１０における各キャラクタ長Ｃにばらつきが生じている。
【０１２６】
この場合、ＣＰＵ７０は、第１の印刷精度（＝０．５６モジュール）および第２の印刷精度（＝０．５モジュール）の双方がしきい値（＝０．３モジュール）以上に悪化していることから、復調済キャラクタ長Ｃｙ  と被復調キャラクタ長Ｃｚ  との間にばらつきがあるものとして、ステップＳＣ８の判断結果を「ＹＥＳ」として、ステップＳＣ９へ進む。
【０１２７】
ステップＳＣ９では、ＣＰＵ７０は、図１４に示す基準黒バー幅Ｘを補正する。具体的には、ＣＰＵ７０は、前述したつぎの（３）式に基準黒バー幅Ｘ（＝５７カウント）、復調済キャラクタ長Ｃｙ  （＝１９８カウント）および被復調キャラクタ長Ｃｚ  （＝２１１カウント）をそれぞれ代入して、補正された基準黒バー幅Ｘｈ  を算出した後、図３に示すステップＳＢ８へ進み、以後、前述した工程を実行する。
Ｘｈ  ＝Ｘ・（Ｃｚ  ／Ｃｙ  ）    ・・・（３）
【０１２８】
一方、ステップＳＣ８において、第１の印刷精度および（または）第２の印刷精度がしきい値（＝０．３モジュール）より小である場合、ＣＰＵ７０は、判断結果を「ＮＯ」として、ステップＳＣ１０へ進む。ステップＳＣ１０では、ＣＰＵ７０は、基準黒バー幅Ｘを基準黒バー幅Ｘｈ  とした後、図３に示すステップＳＢ８へ進み、上述した工程を実行する。すなわち、ステップＳＣ７においては、基準黒バー幅Ｘは補正されることなく、基準黒バー幅Ｘｈ  として以後の算出でそのまま用いられるのである。
【０１２９】
なお、上述した実施の形態２によるバーコード読取装置においては、図５に示す印刷精度テーブルを用いて、上述した第１および第２の印刷精度を求めてもよい。
【０１３０】
すなわち、この図５に示す印刷精度テーブルを用いる場合には、図４に示すステップＳＣ７において、ＣＰＵ７０は、ステップＳＣ４〜ステップＳＣ６でそれぞれ求められた印刷精度Ｘｓ  （＝１．８９モジュール）、印刷精度Ｂ１Ｓ（＝１．３３モジュール）および印刷精度Ｂ３Ｓ（＝１．３９モジュール）から、モジュールレジスタＭｒｅｇ  を求める。
【０１３１】
このモジュールレジスタＭｒｅｇ  は、印刷精度をモジュール値で表したものであり、印刷精度が１．５〜１．６である場合には、モジュールレジスタＭｒｅｇ  が１であり、同様にして印刷精度が１．６〜１．７である場合には、モジュールレジスタＭｒｅｇ  が２である。以下、同様にして印刷精度が２．４〜２．５である場合には、モジュールレジスタＭｒｅｇ  が１０である。なお、印刷精度が１．５より小である場合には、モジュールレジスタＭｒｅｇ  は、０である。
【０１３２】
具体的には、ＣＰＵ７０は、図５に示す印刷精度テーブルから、印刷精度Ｘｓ  （＝１．８９）のモジュールレジスタＭｒｅｇ  として４、印刷精度Ｂ１Ｓ（＝１．３３）のモジュールレジスタＭｒｅｇ  として０、同様にして印刷精度Ｂ３Ｓ（＝１．３９）のモジュールレジスタＭｒｅｇ  として０を求める。
【０１３３】
つぎに、ＣＰＵ７０は、上記印刷精度Ｘｓ  のモジュールレジスタＭｒｅｇ  （＝４）と印刷精度Ｂ１ＳのモジュールレジスタＭｒｅｇ  （＝０）との差の絶対値（＝４モジュール：第１の印刷精度）、および印刷精度Ｘｓ  のモジュールレジスタＭｒｅｇ  （＝４）と印刷精度Ｂ３ＳのモジュールレジスタＭｒｅｇ  （＝０）との差の絶対値（＝４モジュール：第２の印刷精度）をそれぞれ求めた後、ステップＳＣ８へ進む。ステップＳＣ８では、ＣＰＵ７０は、上記第１の印刷精度および（または）第２の印刷精度がしきい値（ここでは、０．３モジュールに代えて３モジュール）以上であるか否かを判断する。ここで、上記しきい値（＝３モジュール）は、前述したように図６に示すバーコード１０において、すべての黒バーが全体的に黒太り（または黒細り）しているか、または部分的な黒バーのみが黒太り（または黒細り）しているか否かの判断に用いられる。
【０１３４】
この場合、ＣＰＵ７０は、第１の印刷精度（＝４モジュール）および第２の印刷精度（＝４モジュール）の双方がしきい値（＝３モジュール）以上であることから、復調済キャラクタ長Ｃｙ  と被復調キャラクタ長Ｃｚ  との間にばらつきがあるものとして、ステップＳＣ８の判断結果を「ＹＥＳ」として、ステップＳＣ９へ進み、前述した工程を実行する。
【０１３５】
以上説明したように、上述した実施の形態２によるバーコード読取装置によれば、バーコード１０における第１および第２の印刷精度としきい値とを比較して、この比較結果に基づいて、基準黒バー幅Ｘに対して補正をかけるように構成したので、前述した実施の形態１によるバーコード読取装置と同様にして、バーコード１０における各キャラクタ長Ｃのばらつきの影響を受けることなく、正常にキャラクタ復調動作を行うことができる。
【０１３６】
【発明の効果】
以上説明したように、請求項１に記載の発明によれば、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率をとり、この比率がしきい値以上である場合に、第１の補正手段が、第２の補正手段によって補正された基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【０１３７】
また、請求項２に記載の発明によれば、バーコードの印刷精度を求め、この印刷精度がしきい値以上に悪化した場合、第１の補正手段により、第２の補正手段によって補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【０１３８】
また、請求項３に記載の発明によれば、印刷精度、すなわち復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率が異なる場合であっても請求項２に記載の発明と同様にして、バーコードにおける各キャラクタの幅のばらつきに影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【０１３９】
また、請求項４に記載の発明によれば、復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率をとり、この比率がしきい値以上である場合、第１の補正工程において、第２の補正工程によって補正された基準バーのバー幅を基準として、被復調キャラクタを構成するバーのバー幅に対して補正を行うように構成したので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【０１４０】
さらに、請求項５に記載の発明によれば、バーコードの印刷精度を求め、この印刷精度がしきい値以上に悪化した場合に、第１の補正工程で、第２の補正工程において補正された基準バーのバー幅に基づいて、被復調キャラクタを構成するバーのバー幅に対して補正を行うようにしたので、バーコードにおける各キャラクタの幅のばらつきの影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【０１４１】
加えて、請求項６に記載の発明によれば、印刷精度、すなわち復調済キャラクタのキャラクタの幅と被復調キャラクタのキャラクタの幅との比率が異なる場合であっても請求項５に記載の発明と同様にして、バーコードにおける各キャラクタの幅のばらつきに影響を受けることなく正常にキャラクタ復調を行うことができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施の形態１によるバーコード読取装置の構成を示すブロック図である。
【図２】同実施の形態１によるバーコード読取装置の動作を説明する図である。
【図３】同実施の形態１によるバーコード読取装置の動作を説明するフローチャートである。
【図４】同実施の形態２によるバーコード読取装置の動作を説明するフローチャートである。
【図５】印刷精度テーブルを示す図である。
【図６】バーコード１０を示す平面図である。
【図７】キャラクタＥ４、Ｅ６、Ｅ２およびＥ８を示す図である。
【図８】キャラクタＯ０〜Ｏ９およびキャラクタＥ０〜Ｅ９を示す図である。
【図９】モジュール数の判別方法を説明する図である。
【図１０】第１の復調テーブル１００を示す図である。
【図１１】第２の復調テーブル２００を示す図である。
【図１２】キャラクタが全体的に黒細りおよび黒太りした場合の様子を説明する図である。
【図１３】従来におけるバーコード読取装置の動作を説明するフローチャートである。
【図１４】復調済キャラクタＥ１および被復調キャラクタＥ７を示す図である。
【符号の説明】
１０  バーコード
２０  読取部
５０  バー幅カウンタ
７０  ＣＰＵ
Ｘ    基準黒バー幅
Ｂ１    黒バー幅
Ｃｚ    被復調キャラクタ長
Ｃｙ    復調済キャラクタ長
【図１】
0003548025.tif 000002
【図２】
0003548025.tif 000003
【図３】
0003548025.tif 000004
【図４】
0003548025.tif 000005
【図５】
0003548025.tif 000006
【図６】
0003548025.tif 000007
【図７】
0003548025.tif 000008
【図８】
0003548025.tif 000009
【図９】
0003548025.tif 000010
【図１０】
0003548025.tif 000011
【図１１】
0003548025.tif 000012
【図１２】
0003548025.tif 000013
【図１３】
0003548025.tif 000014
【図１４】
0003548025.tif 000015