(57)【特許請求の範囲】
【請求項１】
所定のモジュール幅の整数倍の複数のバー及びスペースから成るバーコードの走査方法であって、
前記バーコードを走査するステップと、
前記走査によって得られた信号から前記モジュール幅の倍数として前記バーコードを構成するバー及びスペースの夫々の幅を測定するステップと、
前記測定において、隣接しているバー及びスペースが前記モジュール幅の所定の分数値の幅を夫々有しているか否かを検出するステップと、
前記隣接しているバー及びスペースが前記分数値の幅を夫々有している場合には、当該所定の分数値の幅を有するスペースをバーとするステップと、
の各ステップを有するバーコード走査方法。
【請求項２】
所定のモジュール幅の整数倍の複数のバー及びスペースから成るバーコードを読み取る装置であって、
前記バーコードを走査するバーコード読取手段と、
前記走査によって得られた信号から前記モジュール幅の倍数として前記バーコードを構成するバー及びスペースの夫々の幅を測定する測定手段と、
前記測定において、隣接しているバー及びスペースが前記モジュール幅の所定の分数値の幅を夫々有しているか否かを検出する検出手段と、
の各手段を有し、
前記隣接しているバー及びスペースが前記分数値の幅を夫々有している場合には、当該所定の分数値の幅を有するスペースをバーとしてバーコードを認識するバーコードスキャナ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概して、バーコード・スキャナに関し、特に印刷エラーによる欠陥のあるバーコードの走査に関する。
【０００２】
【従来の技術、及び、発明が解決しようとする課題】
従来のバーコードは、ラベル上に適当に印刷された幅が種々に変化するバーとスペースを含む。このようなバーコードは、一つまたはそれ以上の次元で従来の任意の形をとることができ、例えば、通常の一次元のＵＰＣ形式を含む。ＵＰＣ記号は、オハイオ州、デイトン所在のユニフォーム・プロダクト・コード。カウンセル社が指定した仕様に基づいている。通常のＵＰＣバーコードは、一連または一続きの交互に配置された幅がいろいろに変化する黒いバーとスペースを含む。上記バーおよびスペースは、個々の文字を表すグループの形に配置されている。バーコードは、左端の文字で始まり、右端の文字で終わり、中央に参照文字を持ち、その間に必要な任意のデータを表す文字が配置されている。
【０００３】
ＵＰＣ記号のバーおよびスペースの最小の幅は、単位幅を表す一つのモジュールとして定義されている。ＵＰＣ記号を使用してコード化された一つの文字の幅は、７モジュールである。７モジュールのＵＰＣ文字一つは、それぞれの文字を区別するための種々の幅を持つ二つのバーと二つのスペースを有する。
【０００４】
レーザー・スキャナのような従来のバーコード・スキャナは、バーおよびスペース全体にわたってバーコードを走査ビームで掃引し、そこからの散乱光をスキャナの光検出装置により適当に検出する。上記の散乱光は、信号の強度が最大から最小に変化し、持続時間も変化する特有の特徴を持つ。最大の信号強度は、何もないスペースの検出に対応し、最小の信号強度は、黒いバーの検出に対応する。走査ビームの掃引速度は正確に分かっているので、交互に起こる最大信号および最小信号の強度の相対的持続時間は、バーおよびスペースの変化する幅に対応する。本発明のスキャナは、幅モジュールに基づいて検出したバーおよびスペースの変化する幅を識別する従来のデコーダを含み、それによりコード化された対応するデータの特徴を供給する。
【０００５】
従って、それによりコード化されたデータを正しく解読するには、バーおよびスペースの相対的な幅が正確であることが極めて重要である。バーおよびスペースの幅が広すぎたり、狭すぎたりした場合には、デコーダは、バーコードが有効であることを認識できずに、バーコードを読むことができない。
【０００６】
現在一般に認められているバーコード・ラベルの印刷方法は数種類ある。ある実施形態の場合には、感熱プリンタのようなリニヤ・プリントヘッドは、単一の制御により加熱することができる数百の感熱印刷素子のリニヤ・アレイを含む。ラベルは、感熱性の何も印刷されていない紙のラベルを、リニヤ感熱素子アレイに接触させた状態で並進させることにより印刷される。この紙は熱に感応して、熱が加えられた点が黒くなり、熱が加えられない部分がほぼ白いままで残る。このようにして、紙の上にテキスト、数字および特殊なバーコードの像を生成するために、プリンタ素子を個々に制御することができる。
【０００７】
リニヤ・プリンタの共通の故障は、個々の印刷素子が故障することである。この場合、プリンタは、故障を起こしている素子の場所には印刷することができず、その結果、対応する黒いスペースを印刷しようとするところに白いスペースができてしまう。バーコード・ラベルの場合、黒いバーを印刷しなければならない場所に故障した素子があると、印刷が行われないバーの全長に沿って目で見ることができる狭いギャップができる。印刷の際にこのようなギャップができると、容易にバーコードがダメになり欠陥を生じる。何故なら、ギャップは個々のバーの全長にわたって生じ、そのためその幅が本来あるべき幅と異なってしまうからである。印刷エラーは、個々のバーの二つの境界に生じる場合もあるし、個々のバーの内部で生じる場合もあるが、いずれの場合でも、対応する幅に変化が生じ、その結果、解読エラーが起こる。何故なら、そのバーコードはもはや適用できるバーコード記号の必要な仕様に適合しないからである。
【０００８】
本発明の目的は、現在のスキャナより、印刷エラーによって影響を受けにくいバーコード・スキャナを提供することである。
【０００９】
【課題を解決するための手段】
本発明は、所定のモジュール幅の整数倍の複数のバー及びスペースから成るバーコードの走査方法であって、前記バーコードを走査するステップと、前記走査によって得られた信号から前記モジュール幅の倍数として前記バーコードを構成するバー及びスペースの夫々の幅を測定するステップと、前記測定において、隣接しているバー及びスペースが前記モジュール幅の所定の分数値の幅を夫々有しているか否かを検出するステップと、前記隣接しているバー及びスペースが前記分数値の幅を夫々有している場合には、当該所定の分数値の幅を有するスペースをバーとするステップと、の各ステップを有するバーコード走査方法を提供するものである。
【００１０】
また、本発明は、所定のモジュール幅の整数倍の複数のバー及びスペースから成るバーコードを読み取る装置であって、前記バーコードを走査するバーコード読取手段と、前記走査によって得られた信号から前記モジュール幅の倍数として前記バーコードを構成するバー及びスペースの夫々の幅を測定する測定手段と、前記測定において、隣接しているバー及びスペースが前記モジュール幅の所定の分数値の幅を夫々有しているか否かを検出する検出手段と、の各手段を有し、前記隣接しているバー及びスペースが前記分数値の幅を夫々有している場合には、当該所定の分数値の幅を有するスペースをバーとしてバーコードを認識するバーコードスキャナを提供するものである。
【００１１】
添付の図面を参照しながら以下に本発明を説明するが、これは単に例示としてのものに過ぎない。
【００１２】
【発明の実施の形態】
図１は、適当なラベル１４上に印刷された従来のバーコード１２を走査および解読するためのレーザー・バーコード・スキャナ１０の略図である。このバーコード１２は、図示の従来の一次元ＵＰＣ記号を含めて、一つまたはそれ以上の次元の任意の従来の形をとることができる。
【００１３】
図１の例示としてのバーコード１２は、直線状で、相互に平行なシーケンシャルまたは交互の黒いバー１２ａおよび白いスペース１２ｂを含み、対応する種々に変化する幅ＷｂおよびＷｓを持つ。上記バーおよびスペースは、同じ幅のそれぞれの文字を示す複数のシーケンシャルなグループで配置されている。バーおよびスペースの最小の幅は、最小の幅のモジュールとして定義されていて、ＵＰＣ記号法においては、仕様により９ミルを超えてはならない。一つのＵＰＣモジュールは、二つのバー１２ａと二つのスペース１２ｂを持つものと規定されている。またＵＰＣ記号法を使用してコード化された一つの文字の仕様により規定された幅は、７モジュールである。さらに、ＵＰＣ記号法は、最大バー幅を４モジュールでなければならないと指定している。
【００１４】
図１の例示としてのバーコード１２の場合には、バーコードは従来通り、左端の文字１２ｃから始まり、右端の文字１２ｄで終わり、中央の参照文字１２ｅを持ち、その間に、必要なデータ文字を指定する残りのバーおよびスペースを含む。すでに説明したように、各データ文字の全体の幅は７モジュールであり、二つのバーと二つのスペースとを含む。
【００１５】
図１の例示としてのスキャナ１０は、左端の文字１２ｃから右端の文字１２ｄまでのバーコード１２の全長にわたって、バーおよびスペース１２ａ、ｂを横切って、シーケンシャルにバーコード１２を光学的に走査するための従来の手段を含む。図示の好適な実施形態の場合には、走査は、回転多重面ミラーの形をとることができる従来の掃引ゼネレータ１８により、バーコード１２の面を横切って、適当に走査する適当なレーザー・ビーム１６ａを放射する従来のレーザー１６を使用することによって行われる。レーザー・ビーム１６ａは、バーコード１２を横切って走査方向に横向きに走査し、その結果、反射光１６ｂはバーおよびスペースから反射してスキャナに入る。バー１２ａは黒いので、そこから反射する散乱光は非常に少ないが、一方、スペース１２ｂはほぼ白であるので、光はスキャナに対してもっと効果的に反射する。
【００１６】
従来の光検出装置２０は、スキャナ１０に内蔵されていて、その内部で反射光１６ｂを受信し、スペース１２ｂおよびバー１２ａからそれぞれ反射した光１６ｂの対応する、最大強度および最低強度の間で強度が交互に変化する電気バーコードの特徴２０ｓを発生するために、光学的に整合が行われている。特徴２０ｓの最大および最小強度部分の持続時間は、バーおよびスペースの種々に変化する幅に対応する。走査ビーム１６ａは、既知または一定の速度でバーコード１２を横切って走査するので、バーコードの特徴２０ｓはバーコード１２それ自身を表し、ラベル１４上に印刷された対応するバーコード記号法に対して特に構成された従来のデコーダ２２で解読することができる。
【００１７】
デコーダ２２は、任意の従来の形式をとることができ、通常は、バーコードの特徴２０ｓを分析し、その中に含まれているデータを解読するための適当なソフトウェアを含む、ディジタル的にプログラムすることができるマイクロプロセッサである。スキャナ１０は、それによって表される消費者物資の値段のような、バーコードでコード化された、ある種の情報を表示するために使用することができる、適当なディスプレイ２４に電気的に接続している。バーコード１２が正確に走査され、解読されると、データがディスプレイ２４に表示され、スキャナ１０に動作できるように接続している小型のスピーカ２６が、ビープ音を鳴らして、バーコード１２の解読が成功したことを知らせる。
【００１８】
しかし、スキャナ１０がバーコード１２を解読できない場合には、スピーカ２６はビープを発生しないし、ディスプレイ２４には何も表示しないままである。ラベルを正しく読むために、スキャナ１０上をバーコード１２を何回か往復させることができる。またバーコード１２に欠陥がある場合には、ラベルを読むことができない。
【００１９】
発明の背景のところですでに説明したように、、図１のバーコード１２は、通常、従来のリニヤ・プリンタ２８により印刷される。その中の三つを図１に略図で示す。複数のプリンタ２８を図示したのは、スキャナ１０は、通常、小売店で様々な商品上に表示されている種々のバーコードを解読するために使用されるからである。上記バーコードは、異なるプリンタを表す番号上に印刷することができる。これらのプリンタの中のどれかが、使用中に故障し、バーおよびスペースを正しく印刷しない場合がでてくる。この場合、いくつかの個々のバーおよびスペースのサイズが大きくなったり小さくなったりして、スキャナ１０がバーコードを識別できなくなったり、また正常な動作中にバーコードを解読できないような大きさになったりする。
【００２０】
例えば、ＵＰＣ記号法を使用してバーコードを従来の方法で解読するという基本的な動作は、バーおよびスペースを規定している最小幅のモジュールを使用するので、本発明は、バーコード１２のある種の印刷エラーを検出する際に、それを有利に使用することができる。図２は、バーコードのエラーを検出するための、図１に示す他の従来のスキャナ１０に内蔵することができる、本発明の一実施形態による例示としての方法のフローチャートである。
【００２１】
上記方法は、バーコードの特徴２０ｓを入手するために、従来の方法で走査される任意のタイプのバーコード１２からスタートする。上記  特徴２０ｓのバーおよびスペースの幅は、最小幅モジュールの倍数である。その後、バーコード１２の印刷エラーを発見するために、そのバーおよびスペースに隣接しているバーおよびスペースのシーケンシャルな分数値の幅が検出される。ＵＰＣ記号法の定義により、各バー１２ａおよび各スペース１２ｂは、その幅を定義しているモジュールの整数倍でなければならないので、分数値の幅、すなわち、整数でない幅はバーコード・エラーを示し、このエラーは、そうしたい場合には、本発明により検出し、修正することができる。
【００２２】
より詳細に説明すると、図３は、例示としてのバーコード１２がその上に印刷されている、図１のバーコード・ラベル１４の左端の部分を示す。この図は、従来の方法によりバー１２ａを印刷するために、ラベル１４に隣接した場所に位置しているリニヤ・プリンタの略図である。プリンタ２８は、例示としての実施形態の場合には、感熱印刷素子である個々の印刷素子２８ａの列を含むリニヤ・プリントヘッドを含む。リニヤ感熱プリンタは周知のもので、各印刷素子２８ａは、個々の制御の下で加熱され、ラベル１４を形成している感熱紙と共に使用される。図３に示すラベル１４が、この図に示すように、下方に向かって並進すると、必要なバー１２ａを形成する目的で、対応する素子２８ａの下に位置しているラベル１４を熱により黒く変化させるために、印刷素子２８ａを加熱する。この場合、スペース１２ｂは、上記バーの間に形成される。何故なら、その部分の印刷素子２８ａは加熱されないからである。
【００２３】
代表的な感熱プリントヘッドは、１インチ当たり１３７の印刷素子を持つ解像度、すなわち、１素子当たり７．３ミルの解像度を持つ。ＵＰＣの最小モジュールは９ミル以上でなければならないので、二つの印刷素子２８ａの最小幅は、最小のバーの幅サイズをカバーするために使用しなければならない。従って、ラベルを印刷する場合、適用可能なバーコード記号法が、最小モジュールの幅を決定し、感熱プリンタのリニヤ解像度が、最小モジュール幅に適合するために使用しなければならない印刷素子の数を決定する。
【００２４】
バーコード・ラベルを印刷するために使用される従来のリニヤ・プリントヘッドの大多数は、各バーコード・モジュールに対して二つまたは三つの印刷素子２８ａを使用する。図３は１モジュール当たり二つの印刷素子２８ａを使用するケースを示す。図３に示す最初の三本のバーは、それぞれ二つの隣接印刷素子２８ａを使用して印刷した一つのモジュールの幅を持つ。四番目のバー１２ａは、二つのモジュール分の幅を持ち、四つの隣接印刷素子２８ａにより印刷される。隣接バー１２ａの間の対応するスペース１２ｂは、この記号法による一つまたはそれ以上のモジュールの幅を持たなければならない。このスペースは、このスペースの上に位置する対応する印刷素子２８ａを加熱しないことにより形成される。
【００２５】
＜エラー・タイプ＞
印刷素子２８ａが故障すると、印刷することができなくなる。その結果、印刷したバーコード・ラベル１４に二つの異なるタイプのエラーが起こる。図４は、第一のエラー・タイプＩである。図４の場合には、故障した印刷素子２８ｂが、バーとスペースの間の垂直な境界上に位置している。故障した印刷素子２８ｂは、この境界内で点線で示すように移動し、その結果、印刷しようとした記号のコード化が失敗することになる。印刷したラベルがバーコード・リーダーにより読み取られる場合、走査装置は不正確に印刷された記号しか走査しない。タイプＩエラーは、不正確なスペース幅Ｗｓを広げ、隣接バーの幅Ｗbを縮める。
【００２６】
図５は、第二のエラー・タイプＩＩである。図５の場合には、故障した印刷素子２８ｂは、点線で示す目的とするバー内に位置している。故障した印刷素子２８ｂは、隣接しているバーの部分を、不正確なバー／スペース／バーのパターンで表示することになる。その印刷したラベルをバーコード・スキャナで読むと、不正確な記号が読み取られるだけである。不正確なコード化は有効なコード化ではないので、標準的な方法では解読することはできない。
【００２７】
＜タイプＩエラーの検出＞
原則的には、タイプＩのエラーの検出は、隣接しているスペース／バーの組およびバー／スペースの組の間の境界のずれを検出することによって行われる。広く使用されているバーコード記号法の場合には、文字はバーおよびスペース・モジュールの整数を使用してコード化される。通常のリニヤ・プリントヘッド２８は、一つのモジュール当たり一つ以上の印刷素子２８ａを使用しなければならないので、印刷素子が一つ故障するとある分数量だけ境界がずれる。例えば、一つのモジュール当たり二つの印刷素子が使用されている場合には、一つの印刷素子２８ｂが故障すると、境界は一つのモジュールの１／２だけずれる。同様に、一つのモジュール当たり三つの印刷素子が使用されている場合には（図示せず）、一つの印刷素子故障すると、境界は一つのモジュールの１／３だけずれる。
【００２８】
タイプＩエラーは、隣接しているスペース／バーの組、またはバ−／スペースの組の１／２またはそれ以下の境界のずれを、チェックすることによって検出される。境界のずれは、あるスペース１２ｂの幅が広がっていて、それと同時に隣接するバーが同じだけ縮小していることを意味する。再び、図４について説明すると、隣接するスペースの幅は、一つの印刷が行われなかった部分３０により２．５モジュールに拡大し、影響を受けたバー１２ａの幅は、１．５モジュールに縮小している。すべての他の隣接するバーおよびスペースの幅はモジュールの整数倍である。
【００２９】
＜タイプＩＩエラーの検出＞
原則的には、タイプＩＩのエラーの検出は、故障したプリントヘッドにより、正常なバーが異常なバー／スペース／バーのパターンに分割されたことを検出することによって行われる。この場合も、通常のリニヤ・プリントヘッド２８は、一つのモジュール当たり二つまたはそれ以上の印刷素子２８ａを使用しなければならないので、図５に示すバーの内部に生じたスペース３０の幅は、１／２モジュールまたはそれ以下になる。このスペースの幅が二つの隣接するバーの幅に加算された場合、全部の幅はモジュールの整数倍でなければならない。バー／スペース／バーの組み合わせの幅が、その特定の文字の残りのバーおよびスペースに追加された場合には、合計の幅はその特定の記号法のその文字の幅と同じでなければならない。本当のタイプＩＩエラーの場合には、バー／スペース／バーの組み合わせの全体の幅は、特定の記号法に対して定義されたバーの最大幅、例えば、ＵＰＣ記号法の場合には４モジュールより狭くなくてはならない。
【００３０】
一例として、図５で使用されているＵＰＣ記号法を考えてみよう。ＵＰＣ記号法によりコード化された一つの文字の幅は、仕様によると、７モジュールでなければならない。７モジュール幅のＵＰＣ文字は、二本のバーと二つのスペースを持つ。正確なＵＰＣ文字を、タイプＩＩエラーにより崩れたＵＰＣ文字と比較すると、正確な文字の四本のバーとスペースの合計は７モジュールになるが、崩れた文字の六本のバーとスペースの合計も７モジュールになることがわかる。図５に示すタイプＩＩエラーを見れば、このことがハッキリと分かる。
【００３１】
上記の第一および第二のエラー・タイプは、一つの故障した印刷素子２８ｂが、対応するバー１２ａの必要な部分を印刷しなかったという点で類似している。しかし、故障を起こした印刷素子２８ｂが印刷できなかったために、意図するスペース１２ｂ内にエラーが発生した訳ではない。何故なら、印刷は必要ないからである。これらのエラー・タイプは、また別の点でも類似している。何故なら、これらのエラー・タイプは、結果として、整数倍でない、分数値の幅を持つ隣接バーおよびスペースの組み合わせを生じるからである。定義により、幅が種々に変化する個々のバー１２ａを印刷するために、複数の個々の印刷素子２８ａが使用されるが、この場合、対応する数の個々の印刷素子２８ａが加熱されるれだけである。例示としての故障を起こした素子２８ｂのような、任意の一つの印刷素子が故障すると、個々の印刷素子２８ａの幅によって表されるモジュールの一部を印刷することができない。一つのモジュール当たり二つの印刷素子が使用されている場合には、欠陥３０は１／２モジュールの幅を持ち、一つのモジュール当たり三つの印刷素子が使用されている場合には、欠陥は１／３モジュールの幅を持つ。
【００３２】
図４のタイプＩエラーの場合、欠陥３０に隣接する影響を受けたスペース１２ｂは、隣接するバー１２ａの幅の減少分だけ幅が増大する。図５のタイプＩＩエラーの場合、影響を受けたバー１２ａは、分数値の幅を持つ内部の部分だけ狭くなり、バーの左の残りの部分も分数の幅を持つ。
【００３３】
図４および図５に示す二つのタイプのエラーの場合の欠陥３０は、必ず他の整数のモジュールのスペースに分数値の成分を生じるので、両方のタイプのエラーは、単に走査した特徴のスペース部分内の分数値の幅を、チェックすることによって検出することができる。
【００３４】
さらに、すでに説明したように、バーコード１２は、バーコードを解読する際にデコーダ２２が使用する特定のデータ・グループを指定する、特定の記号法に基づいてコード化される。それ故、バーおよびスペースは、例示としてのＵＰＣ記号法に対する７モジュールのように、同じ数のモジュールを持つ等しい幅の各文字を指定する複数のシーケンシャルなグループの形で配置される。上記の第二のエラー・タイプは、影響を受けた文字グループの全部のモジュール幅を変えないので、これらのエラーは固有の文字幅を持ち、また分数値の幅のスペースを持つグループの一つを検出することにより検出することができる。
【００３５】
すでに説明したように、第一および第二のエラー・タイプは、影響を受けたスペース内の分数値の幅が第二のエラー・タイプ、または第一のエラー・タイプにそれぞれ対応する一つのモジュールより長いか短いかを検出することにより、相互に区別することができる。
【００３６】
図４に示す第一のエラー・タイプの場合には、影響を受けたバー１２ａの境界のところの欠陥３０は、何時でもその幅が隣接するスペース１２ｂの幅の増大分だけ減少する。定義によって、任意の一つのスペース１２ｂは少なくとも一つのモジュールの幅を持たなければならないので、欠陥３０により影響を受けたスペースに分数値の幅を追加すると、スペース１２ｂの幅は一つのモジュールより長くなる。スペース１２ｂの分数値の幅が一つのモジュールより長いことを検出することにより、隣接するバー１２ａの一方の側の除去された境界部分により指定される第一のエラー・タイプが表示される。図４の場合には、影響を受けたスペース１２ｂは、２．５モジュールに拡大した幅を持ち、影響を受けたバー１２ｂは１．５モジュールに短縮された幅を持つ。
【００３７】
図５に示す影響を受けたバー１２ａで起きる第二のエラー・タイプは、何時でも、一つのモジュールより短い分数値の幅を持つ一つのスペースを生成する。従って、一つのスペースの分数値の幅が一つのモジュールより短いことを検出することにより、二つの隣接するバー部分の除去された内部部分により指定される第二のエラー・タイプが表示される。正常な動作中に、図５の欠陥バーが走査されると、バーコードの特徴によりそのバーは一つのバーではなく、バー／スペース／バーとして識別される。欠陥３０により作られた二つのバー部分は、スキャナによりバーとして読み取られ、左側のバー部分は、一つのモジュール幅より狭いので、上記バー部分は対応する記号法に適合することができず、バーコードの解読は通常できない。
【００３８】
すでに説明したように、図１のデコーダ２２は、通常、ディジタル的にプログラムすることができるプロセッサ内の適当なソフトウェアにより実行される。デコーダ２２は、従来のように解読用のバーおよびスペースの相対的な幅を効果的に決定する。上記相対的な幅が特定の記号法の仕様に適合しない場合、または個々のバー、スペースまたはそのグループが、記号法の仕様に適合しない場合には、解読は失敗する。
【００３９】
本発明の場合には、以降の評価を行うため、またオペレータが使用するために、上記の第一および第二のエラー・タイプを特に識別する目的で、プロセッサまたはデコーダ２２に、追加のソフトウェアを内蔵させることができる。それ故、図１のスキャナ１０は、好適には、同様にプロセッサのエラー検出装置２２ａの適当なソフトウェアで、従来と同じように実行することができる上記エラーを検出するために特定に構成された手段を含むことが好ましい。すでに説明したように、分数値の幅を検出することによって、一つのモジュールよい長い分数値の幅に対する第一のエラー・タイプを識別することができ、一つのモジュールより短い分数値の幅を持つ第二のエラー・タイプを識別することができる。その後、エラー検出は、ディスプレイ２４または任意の他の適当な手段により、適当にオペレータに報告され、オペレータは対応する故障したプリンタ２８を識別する際にそれ以降の評価を行う。
【００４０】
上記の第一および第二のエラー・タイプは検出することができ、隣接するバーおよびスペースに周知の影響を持っているので、必要な場合には、上記のエラー・タイプは自動的に修正される。
【００４１】
＜エラーの修正＞
タイプＩまたはタイプＩＩエラ−により崩れている、印刷したバーコード・ラベル１４は、標準解読方法では、スキャナによって正しく読むことができない。しかし、以下に説明するエラー修正方法を適用して、すでに検出したタイプＩ、またはタイプＩＩエラーをうまく修正することができる。
【００４２】
エラー修正を行うために、好適には、エラー検出の結果を蓄積しておくことが好ましい。これらデータを蓄積しておくのは、エラー修正の品質を改善するためである。バーコード・ラベル１４を一回走査することによって得られたデータに基づいて、修正を行うことができるが、この方法を使用した場合、通常欠陥のあるラベルの修正は正確には行われない。タイプＩおよびタイプＩＩエラーを、一つのラベルまたは複数のラベルを複数回走査して蓄積した場合には、エラー修正の潜在的な品質は向上する。それ故、プリントヘッド・エラー・ログ（ＰＥＬ）２２ｂは、エラー修正方法最も重要なものである。上記ログ２２ｂは、タイプＩ、またはタイプＩＩエラー検出の蓄積を含む。
【００４３】
＜プリントヘッド・エラ・ログ＞
プリントヘッド・エラ・ログ（ＰＥＬ）２２ｂは、バーコード・ラベルを印刷するために使用したリニヤ・プリントヘッドのモデルをコード化し、表示する。しかし、ＰＥＬは、実際のプリントヘッド機構からの抜粋である。何故なら、ＰＥＬは個々のプリントヘッド素子を直接モデル化しようとしないからである。それどころか、ＰＥＬは、プリントヘッドをバーコードの幅全体にまたがるモジュールの直線シーケンスとしてモデル化する。ＰＥＬは、１／ｎモジュールの解像度を使用する。この場合、ｎは１より大きいか、１と等しい整数である。このパラメータｎは、タイプＩ、またはタイプＩＩエラーを通常の一次元バーコード符号法に対して適当に表示することができるように選ばれる。ＰＥＬ内の実際のデータは、バーコードの幅全体を横切る正常なプリントヘッドおよび故障を起こしているプリントヘッドの位置を示す。１／ｎモジュールの解像度を使用して、ＰＥＬはバーコード・ラベル上のプリントヘッドの欠陥の効果を正確に捕らえ、モデル化する。
【００４４】
図１に示すように、ログ２２ｂは、プロセッサのそのために供給された適当なメモリで従来どおりに実行することができる。図６は、図５の例示としてのバーコード・ラベル１４である。この図においては、バー内部の欠陥３０は関連走査データおよびログ１．．．ｎで示す複数の例示としてのプリントヘッド・エラー・ログ２２ｂと一緒に略図で示されている。個々のログは、バーコードラベル１２、およびそのバーを形成する任意のタイプのプリンタ２８の両方に対応する位置に設置されている一連のメモリ・レジスタとして、メモリに適当に記憶されている単なるリニヤ・アレイに過ぎない。図６の例示としての実施形態の場合には、各モジュールに対応する二つのプリンタ素子２８ａに対応する各モジュールに対して、二つのレジスタ位置が用意されている。（図示せず）一つのモジュール形成当たり三つのプリンタ素子が使用されている場合には、三つのレジスタが各モジュールに関連する。このようにして、ログは、プリンタ２８の予想解像度に対応する適当な解像度を持つ全バーコード・ラベル１２に沿って、各サブ゛モジュールの増分の状態または条件を表すのに使用することができる。
【００４５】
ある実施形態の場合には、ログ内の各位置は三つ数値を持つことができる。数値「正常」は、バーコード・ラベルのその特定の１／ｎモジュール幅を印刷するためのプリントヘッド素子２８ａが、良好に作動することができることを示す。数値「異常」は、バーコード・ラベルのその特定の１／ｎモジュール幅を印刷するためのプリントヘッド素子が故障していることを示す。異常なプリントヘッド素子は、黒い（バー）要素を印刷するように命令されても、上記バーを印刷することができない。しかし、明るい（スペース）要素が、その場所に印刷されても何の影響も持たない。数値「異常の疑い」ありは、バーコード・ラベルのその特定の１／ｎモジュール幅を印刷するためのプリントヘッド素子が故障しているかもしれないことを示す。
【００４６】
今までの説明で、故障しているプリントヘッド素子が、必ずしもその装置により印刷されたすべてのバーコード・ラベルをダメにしてしまわないことは明らかである。より詳細に説明すると、故障したプリントヘッド素子または壊れたプリントヘッド素子は、白いバー（スペース）をプリントヘッドの欠陥位置に形成したい場合には、何の障害にもならない。
【００４７】
＜プリントヘッド・エラー・ログの更新＞
ラベルの走査が行われる前に、各ログ位置を「正常」という数値にセットすることができる。種々のラベルを走査すると、タイプＩ、またはタイプＩＩエラーが上記のように検出される。どちらのタイプのエラーのログ位置も、デコーダ２２で、バーコードの左側の最初の正常なバー・モジュ−ルから、１／ｎモジュール幅のある数として容易に計算することができる。図６は、ＵＰＣ記号法を使用する位置計算である。ｎ＝２は特定の例である。ログは、好適には、それに関連するすべての後続の位置に対する参照点、すなわち、索引点を供給するバーコード１２の左側で最初に検出したバー１２ａからスタートする。
【００４８】
図６の例は、記号の左端からＰＥＬ索引インデックスの位置にあるタイプＩＩエラーと一緒に印刷されたＵＰＣ記号を示す。プリントヘッドがこの位置で故障を起こした状態でいる限り、その装置で印刷したそれ以降のラベルは、すべてログ位置１８にエラー・タイプＩおよびＩＩを含む。ログ位置１８である問題を最初に検出したとき、ログ値は「正常」から「異常の疑いあり」に変化する。位置１８でエラーの検出が行われている場合には、位置１８のところにエラーを起こすプリントヘッドの故障が実際に起こっている証拠が強くなる。追加エラーが位置１８のところで蓄積されると、「異常の疑いあり」の数値がそれにつれて増大する。適当な量のエラー、例えば、４−１２が位置１８で検出されると、その数値が「異常」に変わる。「異常」の数値を持つ位置だけが、エラー修正を行うために使用される。
【００４９】
＜ＰＥＬを使用するエラー修正＞
ＰＥＬが、すでに概略説明したＰＥＬ更新方法により「異常」とマークされた少なくとも一つの位置を含むまで、エラー修正は試みられない。ＰＥＬがこの条件を満足し、タイプＩ、またはタイプＩＩエラーが現在の走査で検出されたときだけ、エラー修正が行われる。現在の走査の際のエラーの位置が、前に「異常」とマークされたＰＥＬ内の一つの位置と一致した場合には、故障を起こしている印刷素子によりエラーが起きていると判断される。その後、エラー修正法により、故障している印刷素子により影響を受けた走査データの調整が行われる。この修正方法の一番重要なことは、故障を起こしている一つまたは複数の印刷素子により印刷されずに残った白いスペースを埋めることである。より詳細に説明すると、影響を受けたバーおよびスペース・モジュールにより発生した走査データは、故障領域の位置に従って１／ｎモジュール幅により修正され、生のデータがデコーダ２２で、標準バーコード解読方法により再処理される。再処理された走査データは、その後正しいバーコードを作成する。
【００５０】
従って、タイプＩまたはタイプＩＩエラーが検出されると、ほぼ整数倍のモジュールを得るために、それぞれ増減を行うことにより、影響を受けた隣接するバーおよびスペースの検出した分数値の幅を修正することにより、上記エラーを自動的に修正することができる。修正は、図１のエラー修正装置２２ｃと表示されているデコーダ２２の専用部分内のプロセッサにより、従来と同じようにプログラムすることができる。欠陥のあるバーコードの特徴２０ｓが検出されると、バーの部分を表示する代わりに、対応する分数値の幅の上で、検出された欠陥３０の濃度を有効に高めるために、その局部的な濃度を調整することによって、上記特徴自身を修正することができる。このようにして、上記の特徴２０ｓは、図４および５の第一および第二のエラー・タイプの欠陥３０を修正し、効果的に黒く塗ることにより修正され、欠陥バー１２ａは完全なバーになる。その後、修正された特徴は、デコーダ２２により従来の方法で処理され、上記デコーダは、修正されたバーコードをうまく解読することができる。必要な場合には、スキャナ１０は、例えば、ディスプレイ２４により、エラーが検出され、修正されたことをユーザに報告する。
【００５１】
＜複数のプリントヘッドを使用する場合＞
原則的には、上記エラー修正方法をこの場合にも適用することができるが、一つのスキャナで走査されるバーコード化されたラベルを、多くの異なるプリントヘッドが印刷できるようにするするためには、好適には追加を行うことが好ましい。より詳細に説明すると、各ＰＥＬは、一つのプリントヘッドの特徴をモデル化するためのものである。それ故、複数のプリントヘッドが使用されている場合でも、多くのＰＥＬを同時に管理し、更新することができる。また、どのＰＥＬが現在の走査データに関連しているのかを決定する方法も必要である。
【００５２】
＜ＰＥＬと走査データとの関連付け＞
この節では、現在の走査データを、特定のＰＥＬ２２ｂに関連づけるために使用する一つの方法について説明する。この方法は、データと現在の走査データで検出されたエラーとが一致しているＰＥＬを発見するためのものである。この方法の目的は、もしあった場合、どのＰＥＬが現在の走査データを発生することができるかを決定することである。このような比較を容易に行うことができるように、各ＰＥＬの位置は四つの状態、すなわち、「正常」、「異常」、「不明」および「異常の疑いあり」の中の任意の状態を持つことができる。さらに、走査データ内の対応する各位置は、三つの状態、すなわち、「正常」、「不明」および「異常の疑いあり」の中の任意の一つの状態を特徴としている。これら状態の割当および操作については以下に説明する。
【００５３】
＜走査データの分類＞
バーコード・ラベルの走査により、ラベル上のコード化された記号の特有のデータが発生する。このデータは、バーコード化したラベルの走査されたバーおよびスペースを表す。それ故、実際の印刷されたバーに直接対応する走査データの位置を識別することができる。バー要素の印刷結果が、その関連するプリントヘッド素子が正常に機能していることを示しているので、「正常」とマークすることができる。走査データが、スペース（すなわち、バーが存在していないこと）を示している場合には、関連印刷素子が完全に機能するかどうか不明である。それ故、走査データに一つのスペース要素があると、その関連位置が不明状態にセットされる。上記のエラー検出方法で、タイプＩまたはタイプＩＩエラーが発見された場合には、影響を受けた位置に「異常の疑いあり」がマークされる。走査データのすべてのＰＥＬの位置の分類が行われた後で、それら位置は現在のＰＥＬと比較される。
【００５４】
＜分類された走査データとＰＥＬとの比較＞
現在の走査で、一つまたはそれ以上のタイプＩまたはタイプＩＩエラーが検出された場合には、それらのエラーを現存のＰＥＬと比較することができる。ＰＥＬが存在しない場合には、現在の走査データに基づいて、新しいＰＥＬが生成される。現在の走査のエラー位置は、上記のように１／ｎモジュールの解像度により計算される。一つまたはそれ以上のＰＥＬがすでに存在する場合には、現在のデータが現存のＰＥＬのどれと一致するかを確認するために、現在の走査データがすべてのＰＥＬと比較される。現在の走査のエラーをすべてのＰＥＬと比較する目的は、現在の走査に含まれる特定のエラー・パターンを発生することができないＰＥＬを除去することである。現在の走査データはその位置毎にＰＥＬと比較される。
【００５５】
表１は、現在の走査データと、現存のＰＥＬとの比較の際に行われた決定のロジックを示す。上記比較プロセス中に、任意の位置で「不一致」の決定が行われた場合には、考慮対象になっているＰＥＬは、現在の走査データを作り出すことはできなかった。すべてのＰＥＬに対して「不一致」の決定が行われた場合には、新しいＰＥＬが生成され、現在の走査データに従って初期化される。
【００５６】
【表１】
0004162279.tif 000002
図６は、ラベル１４、例示としてのロジックおよび分類走査データによる一致判断プロセスである。ロジック１−ｎは、前の節で説明した方法で発生する。それ故、現在の走査データ内の、例えば、位置１８のエラーは、ログ１へのハッキリとした「不一致」を示す。この「不一致」の決定が行われたのは、ログ１がこの走査データが疑わしいとする位置１８で正常と予測しているからである。それ故、図６のバーコード・ラベルは、ログ１内に現在ログされているエラーを起こしたのと同じプリントヘッドで印刷したものであってはならない。この状態で、ログｎを前の節で説明した「異常の疑いあり」の状態でスタートさせることができる。適当な回数走査を行った後、ログｎによりモデル化されたプリントヘッドのエラーは、図６に示す「異常」状態になり、エラー修正の間使用することができるようになる。
【００５７】
すでに説明したように、少なくとも一つの位置が「異常」になっているＰＥＬだけが、エラー修正に参加することができる。図６の例のように、新しく生成されたＰＥＬは、その「異常の疑いあり」の位置が異常状態になるまで、エラー修正に参加しない。上記の「異常の疑いあり」の状態から「異常」状態への変化は、同じエラー場所が適当な回数の追加の走査中に検出された場合にだけ起こる。ＰＥＬ内の「異常の疑いあり」の位置は、この後で説明する更新手順により「異常」状態になる。
【００５８】
＜ＰＥＬ更新手順＞
上記の比較プロセスを行った後で、一致がゼロまたはそれ以上のＰＥＬのリストは、走査データと一致すると識別される。一致がゼロの場合には、すでに説明したように新しいＰＥＬが生成される。一致が一つまたはそれ以上の場合には、一致ＰＥＬを更新するために走査データが使用される。さらに、少なくとも一つの「正確な一致」を発生するこれらＰＥＬだけが、表１に示すように方法で更新される。表２にこの更新手順の要約を示す。
【００５９】
【表２】
0004162279.tif 000003
表２の「異常の疑いあり＋」は、ＰＥＬ内の異常の疑いありの位置の状態が、更新手順によりさらに「疑い」の程度が大きくなることを示す。通常、カウンタを任意の疑いのある位置と関連付け、その位置で「正確な一致」が観察される度に増分だけカウントを増やすことができる。上記カウンタの計数が適当な数値を超えた場合には、その位置の状態は「異常」にセットされる。
【００６０】
更新は、図１に示し、図２のフローチャートに概略示したエラー修正装置２２ｃの適当なソフトウェアにより容易に行うことができる。バーコードが走査される度に、その特徴に対応する走査データが評価される。一本のバーが検出されると、対応するレジスタ位置に対する最初の「不明」が、表２に示すように、「正常」の表示に変化する。あるプリンタ２８により印刷された種々のバーコードを適当な回数走査した後で、そのプリンタの性能特徴がその対応するログにより表示される。表２に示すように、特定のレジスタ位置が「異常の疑いあり」の場合には、プラス（＋）符号は、走査データ中の異常の疑いありの位置が対応するログ・レジスタに一致する度に、計数が増える適当なカウンタが使用されていることを示す。十分な数の「異常の疑いあり」の一致があった場合には、「異常」位置を反映するためにレジスタ位置が更新される。
【００６１】
「異常」レジスタ位置は、対応するレジスタ位置で連続して「異常の疑いあり」の決定が行われている、故障を起こしているプリンタ素子２８ｂの異常の可能性を示す。表２において、第一の列は、「異常＋」も「異常の疑いあり」の判断が対応するログ内の「異常」の表示と一致する度に、適当なカウンタにより増分だけ計数が増える。このようにして、あるプリンタ２８によって印刷された欠陥のあるバーコードが走査されると、累計の全計数のカウントが一つ増える。スキャナ１０で使用することができるメモリは限定されているので、このカウンタは、「異常＋」カウンタによる指定の数のログを維持するために使用することができる。この場合、相対的に高いカウントのログが維持され、最も低いカウントのログは、必要に応じて新しいログにより置き換えられる。
【００６２】
＜複数のプリントヘッドが使用されている場合のエラー修正＞
現在の走査データのエラーは、１）ＰＥＬに対して比較プロセスが行われ、上記のように「一致なし」が表示された場合、２）ＰＥＬが、現在の走査データの「異常の疑いあり」状態の位置と同じ位置において、「異常」状態がＰＥＬ内でログされた場合だけ修正される。すでに説明したように、本発明の修正方法の最も重要な概念は、一つまたは複数の欠陥印刷素子が残した白いままのスペースを黒く埋めることである。より詳細に説明すると、影響を受けたバーおよびスペース・モジュールによって発生した走査データは、「異常」領域の位置により１／ｎモジュール幅により調整され、生のデータはデコーダ２２で標準バーコード解読方法により再度処理される。その後、再度処理された走査データにより修正されたバーコードが作られる。
【００６３】
＜ユーザへのエラーの通知＞
エラーの修正が成功すると、修正されたバーコードがユーザ（ターミナル）に送られる。遭遇したエラーのタイプの表示もユーザに送られる。その後、恐らく、ユーザは欠陥プリントヘッドを修理するか、交換するための処置を行うことができる。
【００６４】
図２に示すように、第一および第二のエラー・タイプは、必要な場合には、直ちに修正し、解読することができる。しかし、好適には、個々のバーコードおよび後続のバーコードを複数回走査する間に、エラー・ログの中の対応するログ内に、バーコード・エラーを蓄積することが好ましい。このようにして、ログは、各プリンタ２８の状態を正確に反映する。その後、後続の走査中に、バーコード・エラーが検出され、一致するかどうかチェックするために、いくつかのログのそれぞれと比較される。適当な一致が発見された場合には、上記のように、バーコード・エラーの自動修正を行うことができる。
【００６５】
図６に概略を示す各エラー・ログは、好適には、バーコード１２の幅全体に沿って存在する各位置に対応する、図示のような、直線状に配置されたレジスタからなることが好ましい。この場合、各レジスタはそれと関連する位置にあるバーコード・エラーを示す。レジスタは、最初「不明」にセットされる。適当な回数走査した後、レジスタは最終的には、「異常」なプリンタ素子２８ｂの存在を確認した後で、「異常」表示に変更する。種々のバーコード１２自身および対応するプリンタ２８の正確な解像度は、バーコード１２を指定している各モジュールに対応する複数のレジスタを供給することによって容易に知ることができる。好適な実施形態の場合には、一つのモジュール当たりのレジスタの数は、１対１の対応で、一つのモジュール当たりのプリンタ素子２８ａの数と等しい。
【００６６】
複数のエラー・ログを供給することによって、対応する数の個々のプリンタ２８を、欠陥プリンタ２８を識別する際に、その性能を連続的に識別するためにモデル化することができる。図１のスキャナ１０は、バーコード・エラーを検出することができ、それをオペレータに知らせることができるので、オペレータは、数台のプリンタ２８の中のどのプリンタが欠陥があるのかを、チェックするための調査を行うことができ、欠陥プリンタ２８を修正することができる。
【００６７】
さらに、欠陥バーコードの上記の検出および修正方法は、すでに説明したように、デコーダ２２の専用部分内の適当なソフトウェアに、容易に内蔵させることができるので、上記方法は、適当なプログラミングを変更することにより、既存のスキャナを改装することができる。既存のスキャナおよびデコーダは、通常のバーコード内のバーおよびスペースの相対的の幅を決定することができ、バー１２ａの必要な場所に印刷するための一つのプリンタ素子２８ａの欠陥による、上記の分数値の幅を識別できるように適当に修正することができる。
【図面の簡単な説明】
【図１】本発明の例示としての実施形態による、欠陥のあるバーコードを検出し、解読できるようにその中のエラーを修正することができるバーコード・スキャナの略図である。
【図２】図１のバーコード・スキャナで実行される、欠陥のあるバーコードを検出し、修正し、解読する方法の例示としてのフローチャートである。
【図３】例示としてのＵＰＣバーコード・レベルの左の端の部分の拡大図と、その上にバーを印刷するためのリニヤ・プリンタである。
【図４】バーの境界のところにある欠陥のある印刷素子を示す、図３のバーコード・ラベルのコピーである。
【図５】バーの内部に欠陥のあるプリンタ素子を持つ、図３のバーコード・ラベルのコピーである。
【図６】対応するバーコード特徴の走査データおよび関連プリンタ・エラー・ログの略図と、図５のバーコードの写しである。
【図１】
0004162279.tif 000004
【図２】
0004162279.tif 000005
【図３】
0004162279.tif 000006
【図４】
0004162279.tif 000007
【図５】
0004162279.tif 000008
【図６】
0004162279.tif 000009