JPH10134130A - バーコード読取方法およびバーコード読取装置 - Google Patents
バーコード読取方法およびバーコード読取装置Info
- Publication number
- JPH10134130A JPH10134130A JP8285648A JP28564896A JPH10134130A JP H10134130 A JPH10134130 A JP H10134130A JP 8285648 A JP8285648 A JP 8285648A JP 28564896 A JP28564896 A JP 28564896A JP H10134130 A JPH10134130 A JP H10134130A
- Authority
- JP
- Japan
- Prior art keywords
- data
- barcode
- bar code
- type
- bar
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1486—Setting the threshold-width for bar codes to be decoded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Electromagnetism (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Cash Registers Or Receiving Machines (AREA)
- Character Discrimination (AREA)
- Transmission And Conversion Of Sensor Element Output (AREA)
- Printers Characterized By Their Purpose (AREA)
Abstract
(57)【要約】
【目的】本発明は、特に複数種別のバーコードが混在し
ている場合に、それぞれの種別に応じたバーコードの復
調処理をより確実、より迅速に実行できるようにするこ
とを目的とする。 【構成】バーコードデータ検出部31でガードバーやセ
ンターバーなどの特徴点を抽出した後に、この情報を検
索部39aにより検索して読み取られた特徴点やバーコ
ードの種別を判別し、その結果に応じて対応する復調方
法にてバーコード復調部32でバーコードデータの復調
を行なう。
ている場合に、それぞれの種別に応じたバーコードの復
調処理をより確実、より迅速に実行できるようにするこ
とを目的とする。 【構成】バーコードデータ検出部31でガードバーやセ
ンターバーなどの特徴点を抽出した後に、この情報を検
索部39aにより検索して読み取られた特徴点やバーコ
ードの種別を判別し、その結果に応じて対応する復調方
法にてバーコード復調部32でバーコードデータの復調
を行なう。
Description
【0001】
【産業上の利用分野】本発明は、バーコード読取方法お
よびバーコード読取装置に関する。近年、店舗における
客が購入する商品の登録・精算処理や、倉庫・物流など
の商品・製品管理などにおいて、バーコードを用いた情
報入力が多く用いられている。
よびバーコード読取装置に関する。近年、店舗における
客が購入する商品の登録・精算処理や、倉庫・物流など
の商品・製品管理などにおいて、バーコードを用いた情
報入力が多く用いられている。
【0002】
【従来の技術】現在、その用途などに応じて様々な種類
のバーコードが使用されている。ここで、バーコード読
取装置がある特定種類のバーコード読取にしか対応して
いないと、店や倉庫などで複数種類のバーコードを読み
取る必要がある場合には、それぞれの種類に対応したバ
ーコード読取装置を設置しなければならないことになっ
てしまう。しかし、これでは設置するための費用も場所
も余分に必要となり、またバーコード読取の作業を行な
う上でも現実的ではない。
のバーコードが使用されている。ここで、バーコード読
取装置がある特定種類のバーコード読取にしか対応して
いないと、店や倉庫などで複数種類のバーコードを読み
取る必要がある場合には、それぞれの種類に対応したバ
ーコード読取装置を設置しなければならないことになっ
てしまう。しかし、これでは設置するための費用も場所
も余分に必要となり、またバーコード読取の作業を行な
う上でも現実的ではない。
【0003】そのため、複数種類のバーコード読取に対
応しているバーコード読取装置を用いて、商品・物品に
付されたバーコードに複数種類のものが混在していて
も、バーコードの読み取りができるようにすることが広
く望まれている。
応しているバーコード読取装置を用いて、商品・物品に
付されたバーコードに複数種類のものが混在していて
も、バーコードの読み取りができるようにすることが広
く望まれている。
【0004】
【発明が解決しようとする課題】各種のバーコードは、
数値・文字の記録の方法が異なっているため、バーコー
ドから数値などを再生する復調処理は、それぞれのバー
コード種別に対応した処理方法を選択しなければならな
い。ここで、そのバーコードがどの種類のものであるの
かを示す特徴点を、いずれの種類のバーコードでも見い
だすことができる。そのため、読み取られたバーコード
種別を知るためには、それぞれの種別に応じた特徴点を
探す必要がでてくる。しかし、バーコードの読み取られ
方によっては、aという種類のバーコードを読み取って
いるにも関わらず、たまたまbという種類の特徴点に類
似したバーコード構成が抽出されてしまうことが度々生
じる。この場合、復調処理はbのバーコードに対応した
ものが実行されるため、aというバーコードの復調処理
を行なうことができず、読取エラーとなっていた。
数値・文字の記録の方法が異なっているため、バーコー
ドから数値などを再生する復調処理は、それぞれのバー
コード種別に対応した処理方法を選択しなければならな
い。ここで、そのバーコードがどの種類のものであるの
かを示す特徴点を、いずれの種類のバーコードでも見い
だすことができる。そのため、読み取られたバーコード
種別を知るためには、それぞれの種別に応じた特徴点を
探す必要がでてくる。しかし、バーコードの読み取られ
方によっては、aという種類のバーコードを読み取って
いるにも関わらず、たまたまbという種類の特徴点に類
似したバーコード構成が抽出されてしまうことが度々生
じる。この場合、復調処理はbのバーコードに対応した
ものが実行されるため、aというバーコードの復調処理
を行なうことができず、読取エラーとなっていた。
【0005】そこで、本発明は、複数種類のバーコード
が混在している場合に、特定のバーコード種別を示す特
徴点をより確実な方法で抽出し、それぞれの種別に応じ
た復調処理を実行できるバーコード読取方法および読取
装置を実現することを目的とする。また、本発明はバー
コードの読取時の走査方向などの走査種別を判別し、特
徴点の抽出が難しくなる走査種別によりバーコードが読
み取られた場合には、特徴点の抽出をこれ以外の走査種
別の場合と変えることによって、特徴点抽出に誤りがで
にくくなるバーコード読取方法および読取装置を実現す
ることを目的とする。
が混在している場合に、特定のバーコード種別を示す特
徴点をより確実な方法で抽出し、それぞれの種別に応じ
た復調処理を実行できるバーコード読取方法および読取
装置を実現することを目的とする。また、本発明はバー
コードの読取時の走査方向などの走査種別を判別し、特
徴点の抽出が難しくなる走査種別によりバーコードが読
み取られた場合には、特徴点の抽出をこれ以外の走査種
別の場合と変えることによって、特徴点抽出に誤りがで
にくくなるバーコード読取方法および読取装置を実現す
ることを目的とする。
【0006】更に本発明は、特徴点の抽出が難しい種別
のバーコードが読み取られた場合には、その他の種別の
バーコードが読み取られた場合よりも読取結果のチェッ
クを厳しく行い、バーコードの誤読を防止することを可
能としたバーコード読取装置および読取方法を実現する
ことを目的とする。
のバーコードが読み取られた場合には、その他の種別の
バーコードが読み取られた場合よりも読取結果のチェッ
クを厳しく行い、バーコードの誤読を防止することを可
能としたバーコード読取装置および読取方法を実現する
ことを目的とする。
【0007】
【課題を解決するための手段】上記の課題を解決するた
めに、本発明はバーコードの特徴を示す特徴点に対応し
た構成を持つデータを抽出するとともに、データの抽出
結果に基づいてバーコードが走査された種別を判別し、
抽出されたデータが特徴点であるか否かのチェックを行
い、走査種別が予め決められた走査種別であると判別さ
れた場合特徴点チェックの度合いを、その他の走査種別
によりバーコードが走査された場合よりも厳しくするこ
とを特徴とする。
めに、本発明はバーコードの特徴を示す特徴点に対応し
た構成を持つデータを抽出するとともに、データの抽出
結果に基づいてバーコードが走査された種別を判別し、
抽出されたデータが特徴点であるか否かのチェックを行
い、走査種別が予め決められた走査種別であると判別さ
れた場合特徴点チェックの度合いを、その他の走査種別
によりバーコードが走査された場合よりも厳しくするこ
とを特徴とする。
【0008】このような構成によって、特に抽出・種別
の判別が難しくなるような特徴点のチェックの度合いが
厳しくなるため、特定種別の特徴点と同じ構成を持って
はいるがその他の特徴点を構成する可能性がある特徴点
データが得られたような場合にも、特徴点種別の判別を
より確実に行なうことができ、不確実な特徴点データは
例えば破棄することができる。
の判別が難しくなるような特徴点のチェックの度合いが
厳しくなるため、特定種別の特徴点と同じ構成を持って
はいるがその他の特徴点を構成する可能性がある特徴点
データが得られたような場合にも、特徴点種別の判別を
より確実に行なうことができ、不確実な特徴点データは
例えば破棄することができる。
【0009】特に、走査種別の判別は特徴点に対応した
構成を持つデータを検索し、データの前後に走査された
キャラクタとデータとのいずれか一方に、その走査され
た順序に応じて、両者の走査順を示すフラグを設定する
ことを、本発明は特徴とする。このような構成を採用す
ることで、後の復調処理などにおいて判定される特徴点
種別を反映させることができ、例えば特定の特徴点を備
える種別のバーコードを復調する場合にはバーコード種
別に応じた復調方法を選択可能となる。
構成を持つデータを検索し、データの前後に走査された
キャラクタとデータとのいずれか一方に、その走査され
た順序に応じて、両者の走査順を示すフラグを設定する
ことを、本発明は特徴とする。このような構成を採用す
ることで、後の復調処理などにおいて判定される特徴点
種別を反映させることができ、例えば特定の特徴点を備
える種別のバーコードを復調する場合にはバーコード種
別に応じた復調方法を選択可能となる。
【0010】又、フラグは、キャラクタあるいは特徴点
に対応した構成を持つデータを構成するバーのうち特定
の位置にあるバーに対して付され、特徴点チェックはフ
ラグ種別およびフラグが付されたバーの種類を判別し、
判別されたフラグ種別およびバー種類に基づいて特徴点
種別を判定することにより行なわれる。更に、種別が判
定された特徴点が予め定められた種別の特徴点である場
合、キャラクタが隣接している側と逆側にバーが存在す
るか否かを判定し、判定結果に基づいて判定された特徴
点種別が正しいか否かを判定するように構成してもよ
い。このような構成は、その両側にキャラクタが配列さ
れる特徴点と、その片側のみにキャラクタが配列される
特徴点とを選別する必要があるときなどに特に有利に働
く。
に対応した構成を持つデータを構成するバーのうち特定
の位置にあるバーに対して付され、特徴点チェックはフ
ラグ種別およびフラグが付されたバーの種類を判別し、
判別されたフラグ種別およびバー種類に基づいて特徴点
種別を判定することにより行なわれる。更に、種別が判
定された特徴点が予め定められた種別の特徴点である場
合、キャラクタが隣接している側と逆側にバーが存在す
るか否かを判定し、判定結果に基づいて判定された特徴
点種別が正しいか否かを判定するように構成してもよ
い。このような構成は、その両側にキャラクタが配列さ
れる特徴点と、その片側のみにキャラクタが配列される
特徴点とを選別する必要があるときなどに特に有利に働
く。
【0011】そして、互いに異なる走査順を示すフラグ
が同一のキャラクタあるいは特徴点を示すデータに対し
て付されていた場合、フラグが付されたデータに隣接す
るキャラクタを含む複数のキャラクタ同士でキャラクタ
の長さのチェックを行い、チェックの結果に基づいてい
ずれの種別のフラグを有効とすべきかを判断する。つま
り異なる種別のフラグが同一位置に付されているのは、
その前後の関係によってそれぞれ異なる特徴を見いだす
ことができてしまった状態であるため、それだけでは特
徴点の種別を確定することができない。そこで、有効と
すべきフラグを確定するために、そのフラグを含むバー
コード部分がどの条件を満たしているのかを判定するの
である。
が同一のキャラクタあるいは特徴点を示すデータに対し
て付されていた場合、フラグが付されたデータに隣接す
るキャラクタを含む複数のキャラクタ同士でキャラクタ
の長さのチェックを行い、チェックの結果に基づいてい
ずれの種別のフラグを有効とすべきかを判断する。つま
り異なる種別のフラグが同一位置に付されているのは、
その前後の関係によってそれぞれ異なる特徴を見いだす
ことができてしまった状態であるため、それだけでは特
徴点の種別を確定することができない。そこで、有効と
すべきフラグを確定するために、そのフラグを含むバー
コード部分がどの条件を満たしているのかを判定するの
である。
【0012】本発明はまた、特徴点を示すデータとこれ
に隣接するキャラクタとを検出した場合、特徴点データ
とキャラクタとによりキャラクタのキャラクタ長チェッ
クを行い、特徴点データとキャラクタとの一方に、特徴
点データとキャラクタとの読み取られた順序を示すフラ
グを設定することを特徴とする。この構成では、キャラ
クタ長チェックを行なうことによって、検出された特徴
点データとキャラクタとがバーコードの構成上必要な条
件を満たしているか否かを判定し、検出された特徴点デ
ータ・キャラクタがその他のノイズである可能性がない
かどうかを確認する。
に隣接するキャラクタとを検出した場合、特徴点データ
とキャラクタとによりキャラクタのキャラクタ長チェッ
クを行い、特徴点データとキャラクタとの一方に、特徴
点データとキャラクタとの読み取られた順序を示すフラ
グを設定することを特徴とする。この構成では、キャラ
クタ長チェックを行なうことによって、検出された特徴
点データとキャラクタとがバーコードの構成上必要な条
件を満たしているか否かを判定し、検出された特徴点デ
ータ・キャラクタがその他のノイズである可能性がない
かどうかを確認する。
【0013】そしてフラグは特徴点データとキャラクタ
のうち後から走査されたものに対して付す、またフラグ
は特徴点データあるいはキャラクタの特定の位置にある
バーこの場合も前記した構成と同様に、フラグのうち、
第一の読取順序を示すフラグと、前記第一の読取順序と
は異なる第二の読取順序を示すフラグとが同一のキャラ
クタあるいは特徴点データに対して付されていた場合、
フラグが付されたデータバーに隣接するキャラクタを含
む複数のキャラクタ間でキャラクタの長さのチェックを
行い、キャラクタ長チェックに基づいていずれのフラグ
が有効なものであるかを判別するようにしてもよいし、
更に走査されたバーコードを復調する際、フラグとフラ
グが付されたデータの種別に基づいてバーコードが走査
された種別を判別し、判別された走査種別に基づいて複
数の復調方法の中から走査種別(バーコード種別と言え
る)に対応した復調方法を選択して復調処理を実行する
ようにしてもよい。
のうち後から走査されたものに対して付す、またフラグ
は特徴点データあるいはキャラクタの特定の位置にある
バーこの場合も前記した構成と同様に、フラグのうち、
第一の読取順序を示すフラグと、前記第一の読取順序と
は異なる第二の読取順序を示すフラグとが同一のキャラ
クタあるいは特徴点データに対して付されていた場合、
フラグが付されたデータバーに隣接するキャラクタを含
む複数のキャラクタ間でキャラクタの長さのチェックを
行い、キャラクタ長チェックに基づいていずれのフラグ
が有効なものであるかを判別するようにしてもよいし、
更に走査されたバーコードを復調する際、フラグとフラ
グが付されたデータの種別に基づいてバーコードが走査
された種別を判別し、判別された走査種別に基づいて複
数の復調方法の中から走査種別(バーコード種別と言え
る)に対応した復調方法を選択して復調処理を実行する
ようにしてもよい。
【0014】後者の場合には特に、特徴点がバーコード
種別に対応したものである場合が多いことに着目したも
のである。また、本発明では、バーコード種別に応じた
特徴を示す特徴点の片側にキャラクタが配列される第一
のバーコードと、特徴点の両側にキャラクタが配置され
る第二のバーコードとを読み取り、特徴点か検出された
場合その前後方向にキャラクタが存在するか否かを判別
し、キャラクタが存在するか否かの判別結果に基づいて
第一のバーコードまたは第二のバーコードが読み取られ
たのかを判別するバーコード読取装置であることを特徴
とする。
種別に対応したものである場合が多いことに着目したも
のである。また、本発明では、バーコード種別に応じた
特徴を示す特徴点の片側にキャラクタが配列される第一
のバーコードと、特徴点の両側にキャラクタが配置され
る第二のバーコードとを読み取り、特徴点か検出された
場合その前後方向にキャラクタが存在するか否かを判別
し、キャラクタが存在するか否かの判別結果に基づいて
第一のバーコードまたは第二のバーコードが読み取られ
たのかを判別するバーコード読取装置であることを特徴
とする。
【0015】これは、バーコードの構成上の特徴と、特
徴点の構成とがバーコード種別によって固有なものが存
在する点に着目したものであり、また後の復調処理など
においてそれぞれのバーコード種別に対応した処理を実
行することも可能となる。そして、第一のバーコードに
おける特徴点と第二のバーコードにおける特徴点とのバ
ー構成が異なり、一方の特徴点の一部分が他方の特徴点
の部分あるいは全体と同一構成を持っているような場合
に、一方の特徴点の構成を持つ特徴点データが得られた
ら、得られた特徴点データの前後にキャラクタが存在す
るか否かを判定し、判定結果に基づいて前記得られた特
徴点データが一方の特徴点なのか他方の特徴点なのかを
判別し、その結果に基づいて読み取られたバーコード種
別を判定してその種別のバーコードに対応した復調方法
によって前記バーコードを復調することができる。
徴点の構成とがバーコード種別によって固有なものが存
在する点に着目したものであり、また後の復調処理など
においてそれぞれのバーコード種別に対応した処理を実
行することも可能となる。そして、第一のバーコードに
おける特徴点と第二のバーコードにおける特徴点とのバ
ー構成が異なり、一方の特徴点の一部分が他方の特徴点
の部分あるいは全体と同一構成を持っているような場合
に、一方の特徴点の構成を持つ特徴点データが得られた
ら、得られた特徴点データの前後にキャラクタが存在す
るか否かを判定し、判定結果に基づいて前記得られた特
徴点データが一方の特徴点なのか他方の特徴点なのかを
判別し、その結果に基づいて読み取られたバーコード種
別を判定してその種別のバーコードに対応した復調方法
によって前記バーコードを復調することができる。
【0016】このように、複数の特徴点に互いに類似す
る構成が含まれていると、特徴点種別の判別は難しくな
る。そのため、上記の構成を適用することによって特徴
点の種別を検出された特徴点の構成以外の手法も交えて
判別するようにしている。またこのような場合には、特
徴点データの一方の側に予め決められた値以上の余白部
分が存在するか否かを判定し、判定結果に基づいて得ら
れた特徴点の種別および読み取られたバーコード種別を
判定するようにしてもよい。この場合も同様な効果を得
ることが可能となる。
る構成が含まれていると、特徴点種別の判別は難しくな
る。そのため、上記の構成を適用することによって特徴
点の種別を検出された特徴点の構成以外の手法も交えて
判別するようにしている。またこのような場合には、特
徴点データの一方の側に予め決められた値以上の余白部
分が存在するか否かを判定し、判定結果に基づいて得ら
れた特徴点の種別および読み取られたバーコード種別を
判定するようにしてもよい。この場合も同様な効果を得
ることが可能となる。
【0017】更に、互いに隣接するキャラクタ同士でキ
ャラクタ長のチェックを行い、特徴点の両側のそれぞれ
についてキャラクタ長チェックが正しいと判別されたキ
ャラクタが連続する数を計数し、特徴点のそれぞれの側
についての計数結果に基づいて、バーコード種別が第一
のバーコードあるいは第二のバーコードのいずれである
かを判別することも可能である。
ャラクタ長のチェックを行い、特徴点の両側のそれぞれ
についてキャラクタ長チェックが正しいと判別されたキ
ャラクタが連続する数を計数し、特徴点のそれぞれの側
についての計数結果に基づいて、バーコード種別が第一
のバーコードあるいは第二のバーコードのいずれである
かを判別することも可能である。
【0018】キャラクタ長が正しくないキャラクタと思
われるデータは、実際にはキャラクタが読み取られたも
のではなくてその他のノイズを拾ったものあったり、あ
るいはバーコードを読み取るにはバーコードの寸法が歪
み過ぎたものである。このような判定を特徴点の判定・
バーコード種別の判定に組み合わせることで、特徴点ら
しきものが検出されたバーコードが復調などの後の処理
に適したものであるかどうかなどの判別をこの時点で行
なうことができる。バーコードではなかったり復調に適
したものではない場合には、この時点で得られたデータ
を破棄したりすればよく、時間が比較的かかる復調処理
などを省くことで、読取処理の効率化を実現できる。
われるデータは、実際にはキャラクタが読み取られたも
のではなくてその他のノイズを拾ったものあったり、あ
るいはバーコードを読み取るにはバーコードの寸法が歪
み過ぎたものである。このような判定を特徴点の判定・
バーコード種別の判定に組み合わせることで、特徴点ら
しきものが検出されたバーコードが復調などの後の処理
に適したものであるかどうかなどの判別をこの時点で行
なうことができる。バーコードではなかったり復調に適
したものではない場合には、この時点で得られたデータ
を破棄したりすればよく、時間が比較的かかる復調処理
などを省くことで、読取処理の効率化を実現できる。
【0019】また、第一の特徴点を示すデータと、第一
の特徴点とは異なった特徴を示す第二の特徴点とを示す
データが互いに近接して検出された場合、一方の特徴点
と見なされたデータに隣接するキャラクタと、隣接する
キャラクタに更に隣接するキャラクタとの間でキャラク
タ長のチェックを行い、キャラクタ長チェックの結果に
基づいて検出された第一の特徴点を示すデータと第二の
特徴点を示すデータのうち、いずれを有効なデータとす
べきかを判別するバーコード読取方法であることを、本
発明は特徴とする。
の特徴点とは異なった特徴を示す第二の特徴点とを示す
データが互いに近接して検出された場合、一方の特徴点
と見なされたデータに隣接するキャラクタと、隣接する
キャラクタに更に隣接するキャラクタとの間でキャラク
タ長のチェックを行い、キャラクタ長チェックの結果に
基づいて検出された第一の特徴点を示すデータと第二の
特徴点を示すデータのうち、いずれを有効なデータとす
べきかを判別するバーコード読取方法であることを、本
発明は特徴とする。
【0020】このような構成では、特徴点に隣接するキ
ャラクタの性質に基づいて、検出された特徴点がいずれ
の種別に対応するものであるのかを確認することが可能
となる。場合によっては、上記のような処理を行なって
もいずれの特徴点を示すデータであるかを確定できない
こともあるが、そのような場合にはデータを破棄して再
度バーコードを読み取らせるなどの対処方法も考えられ
る。
ャラクタの性質に基づいて、検出された特徴点がいずれ
の種別に対応するものであるのかを確認することが可能
となる。場合によっては、上記のような処理を行なって
もいずれの特徴点を示すデータであるかを確定できない
こともあるが、そのような場合にはデータを破棄して再
度バーコードを読み取らせるなどの対処方法も考えられ
る。
【0021】一方、読み取られたバーコードの中から、
バーコードの特徴を示す特徴点を抽出し、2つのバーコ
ード種別に共通する特徴点が抽出された場合特徴点に続
くキャラクタの構成を判別し、キャラクタ構成の判別結
果に基づいて読み取られたバーコードが第一の種別であ
るか第二の種別であるかを判別するバーコード読取装置
によっても、上記と同様な効果を実現することができ
る。
バーコードの特徴を示す特徴点を抽出し、2つのバーコ
ード種別に共通する特徴点が抽出された場合特徴点に続
くキャラクタの構成を判別し、キャラクタ構成の判別結
果に基づいて読み取られたバーコードが第一の種別であ
るか第二の種別であるかを判別するバーコード読取装置
によっても、上記と同様な効果を実現することができ
る。
【0022】また本発明はこの他に、読み取られたバー
コードの種別を判別し、合成処理の対象となる複数のバ
ーコードデータの中で互いに重複して走査されたデータ
の桁数を判別するとともに、読み取られたバーコード種
別が第一のバーコード種別である場合には合成対象とな
る複数のバーコードの重複桁数が第一の値以上であるこ
とを条件に合成処理を行い、読み取られたバーコード種
別が第二のバーコード種別である場合には、合成対象と
なる複数のバーコードの重複桁数が、前記第一の値より
も大きい第二の値以上であることを条件に合成処理を行
なうバーコード読取方法であることを特徴とする。
コードの種別を判別し、合成処理の対象となる複数のバ
ーコードデータの中で互いに重複して走査されたデータ
の桁数を判別するとともに、読み取られたバーコード種
別が第一のバーコード種別である場合には合成対象とな
る複数のバーコードの重複桁数が第一の値以上であるこ
とを条件に合成処理を行い、読み取られたバーコード種
別が第二のバーコード種別である場合には、合成対象と
なる複数のバーコードの重複桁数が、前記第一の値より
も大きい第二の値以上であることを条件に合成処理を行
なうバーコード読取方法であることを特徴とする。
【0023】この場合には、特に種別の判別が難しいよ
うなバーコード種別の場合に、その他の種別のバーコー
ドを読み取った場合などに発生する誤読の可能性をより
低減させることができるようになる。前記バーコード読
取方法は更に、それぞれのバーコードデータの重複デー
タ中に互いに同一であるデータが存在するか否かを判別
するとともに、読み取られたバーコード種別に関わらず
同一データが前記第一の値と同一の値である第三の値以
上であることを条件に合成処理を行なう。
うなバーコード種別の場合に、その他の種別のバーコー
ドを読み取った場合などに発生する誤読の可能性をより
低減させることができるようになる。前記バーコード読
取方法は更に、それぞれのバーコードデータの重複デー
タ中に互いに同一であるデータが存在するか否かを判別
するとともに、読み取られたバーコード種別に関わらず
同一データが前記第一の値と同一の値である第三の値以
上であることを条件に合成処理を行なう。
【0024】また、本発明では、読み取られたバーコー
ドの種別を判別し、読み取られたバーコード種別が第一
の種別であった場合、第一の種別とは異なる第二の種別
の場合に読取成功の条件となる同一合成データ個数より
も多い数の同一合成データが得られた場合に、読取成功
と判断する。これも上述の構成と同様な効果を狙ったも
のである。
ドの種別を判別し、読み取られたバーコード種別が第一
の種別であった場合、第一の種別とは異なる第二の種別
の場合に読取成功の条件となる同一合成データ個数より
も多い数の同一合成データが得られた場合に、読取成功
と判断する。これも上述の構成と同様な効果を狙ったも
のである。
【0025】一方、本発明は、光源を備え、光源から出
射される光線によりバーコードを照射し、バーコードか
らの反射光を受光手段により受光して、得られたバーコ
ードデータに対する復調処理を実行すると共に、受光手
段から出力される信号に基づいて読み取られたバーコー
ドを構成するバーの幅を計数するバー幅カウンタと、バ
ー幅カウンタから出力されるカウント値に基づいて特徴
的な構成を持つ特徴点データを検出する検出部と、検出
部により検出された特徴点データに基づいて判別される
バーコード種別に対応した復調方法によりバーコードデ
ータの復調処理を行なう復調部と、読み取られたバーコ
ードデータがバーコードの一部分にあたるものである場
合複数の部分バーコードデータを合成して一つのバーコ
ードデータを再生する合成部と、合成部による合成処理
が行なわれた場合合成処理の結果得られた同一の値を持
つ復調データが得られた回数をチェックする一致回数チ
ェック部とを備え、判別されるバーコード種別に応じ
て、必要とされる一致回数を変更するバーコード読取装
置であることを特徴とする。
射される光線によりバーコードを照射し、バーコードか
らの反射光を受光手段により受光して、得られたバーコ
ードデータに対する復調処理を実行すると共に、受光手
段から出力される信号に基づいて読み取られたバーコー
ドを構成するバーの幅を計数するバー幅カウンタと、バ
ー幅カウンタから出力されるカウント値に基づいて特徴
的な構成を持つ特徴点データを検出する検出部と、検出
部により検出された特徴点データに基づいて判別される
バーコード種別に対応した復調方法によりバーコードデ
ータの復調処理を行なう復調部と、読み取られたバーコ
ードデータがバーコードの一部分にあたるものである場
合複数の部分バーコードデータを合成して一つのバーコ
ードデータを再生する合成部と、合成部による合成処理
が行なわれた場合合成処理の結果得られた同一の値を持
つ復調データが得られた回数をチェックする一致回数チ
ェック部とを備え、判別されるバーコード種別に応じ
て、必要とされる一致回数を変更するバーコード読取装
置であることを特徴とする。
【0026】この構成では、読み取られるバーコード種
別によっては他の種別のバーコードとの誤読を生じる可
能性があるため、誤読の可能性があるバーコード種別の
場合には読取成功とする条件をより厳しくすることを狙
っている。また、本発明は光源を備え、光源から出射さ
れる光線によりバーコードを照射し、バーコードからの
反射光を受光手段により受光して、得られたバーコード
データに対する復調処理を実行すると共に、受光手段か
ら出力される信号に基づいて読み取られたバーコードを
構成するバーの幅を計数するバー幅カウンタと、バー幅
カウンタから出力されるカウント値に基づいて特徴的な
構成を持つ特徴点データを検出し、特徴点データに隣接
するキャラクタと前記特徴点との読み取られた順序に応
じてキャラクタあるいは特徴点データに対して読取順序
を示すフラグを付して出力する検出部と、カウント値と
フラグとを格納する第一のバッファと、バッファよりフ
ラグが付されたデータを検索してフラグに応じて特徴点
の種別を判別する検索部と、検索部により判別された特
徴点種別に対応するバーコード種別の復調方法に基づい
てバーコードデータの復調処理を行なう復調部と、を備
えたバーコード読取装置であることを特徴とする。
別によっては他の種別のバーコードとの誤読を生じる可
能性があるため、誤読の可能性があるバーコード種別の
場合には読取成功とする条件をより厳しくすることを狙
っている。また、本発明は光源を備え、光源から出射さ
れる光線によりバーコードを照射し、バーコードからの
反射光を受光手段により受光して、得られたバーコード
データに対する復調処理を実行すると共に、受光手段か
ら出力される信号に基づいて読み取られたバーコードを
構成するバーの幅を計数するバー幅カウンタと、バー幅
カウンタから出力されるカウント値に基づいて特徴的な
構成を持つ特徴点データを検出し、特徴点データに隣接
するキャラクタと前記特徴点との読み取られた順序に応
じてキャラクタあるいは特徴点データに対して読取順序
を示すフラグを付して出力する検出部と、カウント値と
フラグとを格納する第一のバッファと、バッファよりフ
ラグが付されたデータを検索してフラグに応じて特徴点
の種別を判別する検索部と、検索部により判別された特
徴点種別に対応するバーコード種別の復調方法に基づい
てバーコードデータの復調処理を行なう復調部と、を備
えたバーコード読取装置であることを特徴とする。
【0027】このような構成では、検索部による処理や
復調部による処理を行なう際に、既に得られた特徴点に
関する情報を用いることができ、後の処理の負荷を低減
することが可能となる。前記バーコード読取装置は更
に、検出部が読み取られた順序に応じて予め決められた
読取順にあたるキャラクタあるいは特徴点データに対し
てフラグを付すことを特徴とする。また、検出部がキャ
ラクタあるいは特徴点データを構成するバーのうち、特
定位置にあるバーに対してフラグを設定することを特徴
とする。
復調部による処理を行なう際に、既に得られた特徴点に
関する情報を用いることができ、後の処理の負荷を低減
することが可能となる。前記バーコード読取装置は更
に、検出部が読み取られた順序に応じて予め決められた
読取順にあたるキャラクタあるいは特徴点データに対し
てフラグを付すことを特徴とする。また、検出部がキャ
ラクタあるいは特徴点データを構成するバーのうち、特
定位置にあるバーに対してフラグを設定することを特徴
とする。
【0028】更に、検索部がフラグ種別とフラグが付さ
れたバーの種別とに基づいて、バーコードの読取種別お
よび前記特徴点データが示す特徴点の種別を判定するこ
とを特徴とする。そして、検索部が判定されたバーコー
ド読取種別が予め決められた読取種別である場合、検出
された特徴点データのキャラクタが隣接する側とは逆の
側にバーコードを構成するバーが存在するか否かを判定
し、判定結果に基づいて判定された特徴点種別が正しい
か否かを判定する機能を有する。
れたバーの種別とに基づいて、バーコードの読取種別お
よび前記特徴点データが示す特徴点の種別を判定するこ
とを特徴とする。そして、検索部が判定されたバーコー
ド読取種別が予め決められた読取種別である場合、検出
された特徴点データのキャラクタが隣接する側とは逆の
側にバーコードを構成するバーが存在するか否かを判定
し、判定結果に基づいて判定された特徴点種別が正しい
か否かを判定する機能を有する。
【0029】また、検索部が互いに異なる読取順序を示
すフラグが同一のバーに対して付されている場合、バー
が含まれる特徴点データに隣接するキャラクタを含む複
数のキャラクタ相互のキャラクタの長さをチェックし、
その結果に基づいて有効とすべきフラグ種別を判定する
機能を有することを特徴とする。以上の構成は、いずれ
も読み取られたバーコードの検出結果の正当性を高める
ことが可能となるものであり、特に特徴点抽出とバーコ
ード種別の判別に大きな効果がある。
すフラグが同一のバーに対して付されている場合、バー
が含まれる特徴点データに隣接するキャラクタを含む複
数のキャラクタ相互のキャラクタの長さをチェックし、
その結果に基づいて有効とすべきフラグ種別を判定する
機能を有することを特徴とする。以上の構成は、いずれ
も読み取られたバーコードの検出結果の正当性を高める
ことが可能となるものであり、特に特徴点抽出とバーコ
ード種別の判別に大きな効果がある。
【0030】また、本発明は光源を備え、光源から出射
される光線によりバーコードを照射し、バーコードから
の反射光を受光手段により受光して、得られたバーコー
ドデータに対する復調処理を実行すると共に、受光手段
から出力される信号に基づいて読み取られたバーコード
を構成するバーの幅を計数するバー幅カウンタと、バー
幅カウンタから出力されるカウント値に基づいて特徴的
な構成を持つ特徴点データを検出する検出部と、検出部
により検出された特徴点データに基づいて判別されるバ
ーコード種別に対応した復調方法によりバーコードデー
タの復調処理を行なう復調部と、読み取られたバーコー
ドデータが前記バーコードの一部分にあたるものである
場合複数の部分バーコードデータを合成して一つのバー
コードデータを再生する合成部とを備え、合成部は更
に、合成対象となる複数のバーコードデータのうち互い
に重複する桁数が予め定められた桁数以上であるか否か
を判定し、判定された桁数が予め定められた桁数以上で
ある場合に合成処理を実行するとともに、バーコードが
予め定められた種別のバーコードであると判別された場
合、合成処理を実行するために必要とされる重複桁数
が、その他の種別のバーコードに対する合成処理時に必
要とされる重複桁数よりも多い数存在した場合に合成処
理を実行する機能を有するバーコード読取装置であるこ
とを特徴とする。この構成は、特に誤読が生じやすいバ
ーコード種別について合成処理を行なうときに、合成結
果に誤りが生じる可能性を低減させることができるとい
う効果を有する。誤読の生じにくいバーコード種別の場
合には、重複桁数を特に多く取らなくても、読取結果が
正しい確率が非常に高いため、その分時間を要する一致
回数の判定回数を、誤読が生じやすい種別に比べて少な
くしてもよい。。
される光線によりバーコードを照射し、バーコードから
の反射光を受光手段により受光して、得られたバーコー
ドデータに対する復調処理を実行すると共に、受光手段
から出力される信号に基づいて読み取られたバーコード
を構成するバーの幅を計数するバー幅カウンタと、バー
幅カウンタから出力されるカウント値に基づいて特徴的
な構成を持つ特徴点データを検出する検出部と、検出部
により検出された特徴点データに基づいて判別されるバ
ーコード種別に対応した復調方法によりバーコードデー
タの復調処理を行なう復調部と、読み取られたバーコー
ドデータが前記バーコードの一部分にあたるものである
場合複数の部分バーコードデータを合成して一つのバー
コードデータを再生する合成部とを備え、合成部は更
に、合成対象となる複数のバーコードデータのうち互い
に重複する桁数が予め定められた桁数以上であるか否か
を判定し、判定された桁数が予め定められた桁数以上で
ある場合に合成処理を実行するとともに、バーコードが
予め定められた種別のバーコードであると判別された場
合、合成処理を実行するために必要とされる重複桁数
が、その他の種別のバーコードに対する合成処理時に必
要とされる重複桁数よりも多い数存在した場合に合成処
理を実行する機能を有するバーコード読取装置であるこ
とを特徴とする。この構成は、特に誤読が生じやすいバ
ーコード種別について合成処理を行なうときに、合成結
果に誤りが生じる可能性を低減させることができるとい
う効果を有する。誤読の生じにくいバーコード種別の場
合には、重複桁数を特に多く取らなくても、読取結果が
正しい確率が非常に高いため、その分時間を要する一致
回数の判定回数を、誤読が生じやすい種別に比べて少な
くしてもよい。。
【0031】そして本発明は、光源を備え、光源から出
射される光線によりバーコードを照射し、バーコードか
らの反射光を受光手段により受光して、得られたバーコ
ードデータに対する復調処理を実行すると共に、受光手
段から出力される信号の値が一方の値から他方の値に反
転したときに発生する第一の信号と、他方の値から一方
の値に反転するときとに発生する第二の信号との間隔を
計数することにより、バーコードを構成するバーの幅を
計数するとともに、信号のうち同じ種類の信号が連続し
て発生した場合にはそれを示す第三の信号を出力するバ
ー幅カウンタと、バー幅カウンタから出力されるカウン
ト値に基づいて特徴的な構成を持つ特徴点データを検出
する検出部と、検出部により検出された特徴点データに
基づいて判別されるバーコード種別に対応した復調方法
によりバーコードデータの復調処理を行なう復調部と、
復調部による復調結果が一致した回数を計数し一致回数
と予め定められた値とを比較して読取成功の可否を判定
する一致回数チェック部とを備え、バー幅カウンタより
第三の信号が出力されていた場合、一致回数チェック部
において必要とされる一致回数を第三の信号が出力され
ていない場合よりも多い回数に変更するバーコード読取
装置であることを特徴とする。
射される光線によりバーコードを照射し、バーコードか
らの反射光を受光手段により受光して、得られたバーコ
ードデータに対する復調処理を実行すると共に、受光手
段から出力される信号の値が一方の値から他方の値に反
転したときに発生する第一の信号と、他方の値から一方
の値に反転するときとに発生する第二の信号との間隔を
計数することにより、バーコードを構成するバーの幅を
計数するとともに、信号のうち同じ種類の信号が連続し
て発生した場合にはそれを示す第三の信号を出力するバ
ー幅カウンタと、バー幅カウンタから出力されるカウン
ト値に基づいて特徴的な構成を持つ特徴点データを検出
する検出部と、検出部により検出された特徴点データに
基づいて判別されるバーコード種別に対応した復調方法
によりバーコードデータの復調処理を行なう復調部と、
復調部による復調結果が一致した回数を計数し一致回数
と予め定められた値とを比較して読取成功の可否を判定
する一致回数チェック部とを備え、バー幅カウンタより
第三の信号が出力されていた場合、一致回数チェック部
において必要とされる一致回数を第三の信号が出力され
ていない場合よりも多い回数に変更するバーコード読取
装置であることを特徴とする。
【0032】このような構成では、何らかのエラーが生
じている場合には一致回数を多くとり、読取結果の正当
性確認の度合いをより高めている。
じている場合には一致回数を多くとり、読取結果の正当
性確認の度合いをより高めている。
【0033】
【実施の形態】図1は、現在用いられているバーコード
の中から、UPC(UNIVERSAL PRODUCTCORD)系のバーコ
ードを図示したものである。図1aはEAN−13また
はUPC/Aと呼ばれるバーコードである。図1bはE
AN−8と呼ばれるバーコードである。また、図1cは
UPC/Eと呼ばれるバーコードである。
の中から、UPC(UNIVERSAL PRODUCTCORD)系のバーコ
ードを図示したものである。図1aはEAN−13また
はUPC/Aと呼ばれるバーコードである。図1bはE
AN−8と呼ばれるバーコードである。また、図1cは
UPC/Eと呼ばれるバーコードである。
【0034】EAN−13は、その両端にスタートガー
ドバー(以下SGB)、エンドガードバー(以下EG
B)を、中央にセンターバー(以下CB)を備えてい
る。従って、EAN−13の場合にはCBを境に、SG
B側の左ブロックとEGB側の右ブロックとに分けるこ
とができる。EAN−13の左ブロックはC1〜C6の
6つのキャラクタで構成されており、同じく右ブロック
はC7〜12の6つのキャラクタから構成されている。
従って、EAN−13は計12桁により構成される。1
つのキャラクタは、各2本の白と黒のバー、つまり計4
本のバーが交互に配置されている。
ドバー(以下SGB)、エンドガードバー(以下EG
B)を、中央にセンターバー(以下CB)を備えてい
る。従って、EAN−13の場合にはCBを境に、SG
B側の左ブロックとEGB側の右ブロックとに分けるこ
とができる。EAN−13の左ブロックはC1〜C6の
6つのキャラクタで構成されており、同じく右ブロック
はC7〜12の6つのキャラクタから構成されている。
従って、EAN−13は計12桁により構成される。1
つのキャラクタは、各2本の白と黒のバー、つまり計4
本のバーが交互に配置されている。
【0035】SGB/EGB、CB、キャラクタのバー
構成は、モジュールと呼ばれる単位長さで表される。1
キャラクタは白バー/黒バーを合わせて合計7モジュー
ルで構成され、7モジュールとなる範囲内でそれぞれの
白バー/黒バーが組み合わされ、その組合せに応じて0
〜9の数字が記録される。SGB/EGBは3モジュー
ルの長さであり、それぞれ1モジュールの黒バー/白バ
ー/黒バーが交互に配置される。なお、バー構成はSG
BもEGBも同じであるため、特に区別する必要がない
場合には以下単にGB(ガードバー)と表記する。CB
は合計5モジュールの長さを持ち、それぞれ1モジュー
ルの白バー/黒バー/白バー/黒バー/白バーという構
成となっている。このような構成となっているため、G
BおよびCBはバーコード読取の際の基準バー幅を持つ
基準バーとして扱うことができる。
構成は、モジュールと呼ばれる単位長さで表される。1
キャラクタは白バー/黒バーを合わせて合計7モジュー
ルで構成され、7モジュールとなる範囲内でそれぞれの
白バー/黒バーが組み合わされ、その組合せに応じて0
〜9の数字が記録される。SGB/EGBは3モジュー
ルの長さであり、それぞれ1モジュールの黒バー/白バ
ー/黒バーが交互に配置される。なお、バー構成はSG
BもEGBも同じであるため、特に区別する必要がない
場合には以下単にGB(ガードバー)と表記する。CB
は合計5モジュールの長さを持ち、それぞれ1モジュー
ルの白バー/黒バー/白バー/黒バー/白バーという構
成となっている。このような構成となっているため、G
BおよびCBはバーコード読取の際の基準バー幅を持つ
基準バーとして扱うことができる。
【0036】EAN−8は、EAN−13と同様にSG
B/EGB、CBを備えており、それぞれ左右ブロック
を備える。EAN−8とEAN−13との相違点はバー
コードを構成するキャラクタ数にある。EAN−8の場
合には、左ブロックがC1〜C4の4つのキャラクタか
ら、右ブロックがC5からC8の4つのキャラクタか
ら、合計8つのキャラクタから構成される。キャラクタ
やCB等の構成自体は、EAN−13と全く同じであ
る。
B/EGB、CBを備えており、それぞれ左右ブロック
を備える。EAN−8とEAN−13との相違点はバー
コードを構成するキャラクタ数にある。EAN−8の場
合には、左ブロックがC1〜C4の4つのキャラクタか
ら、右ブロックがC5からC8の4つのキャラクタか
ら、合計8つのキャラクタから構成される。キャラクタ
やCB等の構成自体は、EAN−13と全く同じであ
る。
【0037】EAN−13では、右ブロックのキャラク
タと左ブロックのキャラクタとは異なっは構成のものを
用いている。1キャラクタは7モジュールであり黒バー
が2本必要であるため、キャラクタは黒バーの合計モジ
ュール数が偶数のもの(EVEN構成)と、奇数のもの
(ODD構成)との2通りが存在する。右ブロックの場
合には、全てのキャラクタは黒バーの合計モジュール数
が偶数であるキャラクタにより構成される。一方、左ブ
ロックの場合には、黒バーのモジュール数が奇数のキャ
ラクタと、偶数のキャラクタとが混在するように構成さ
れる(ODD/EVEN混合)。左ブロックのODD構
成とEVEN構成との組合せは、何桁目がODD/EV
ENとなるのかが規格で定められている。
タと左ブロックのキャラクタとは異なっは構成のものを
用いている。1キャラクタは7モジュールであり黒バー
が2本必要であるため、キャラクタは黒バーの合計モジ
ュール数が偶数のもの(EVEN構成)と、奇数のもの
(ODD構成)との2通りが存在する。右ブロックの場
合には、全てのキャラクタは黒バーの合計モジュール数
が偶数であるキャラクタにより構成される。一方、左ブ
ロックの場合には、黒バーのモジュール数が奇数のキャ
ラクタと、偶数のキャラクタとが混在するように構成さ
れる(ODD/EVEN混合)。左ブロックのODD構
成とEVEN構成との組合せは、何桁目がODD/EV
ENとなるのかが規格で定められている。
【0038】バーコードを走査・読取したときに、バー
コードを構成するキャラクタのバー構成を確認すること
によって、どちら側のブロックが走査されたのか、ある
いはどの方向にバーコードが走査されたのかを判定する
ことが可能となる。UPC/Eは、EAN−13・EA
N−8とは異なり、右ブロックに相当するブロックを備
えていない。UPC/Eは、SGBとスペシャルセンタ
ーバー(以下SCB)と呼ばれる、上記したEAN−1
3などのCBとは構成が異なるセンターバーとの間に、
キャラクタが挟まれるよう構成される。SCBは、それ
ぞれ1モジュールの白バーと黒バーが3本ずつ交互に配
置されており、合計6モジュールで構成される。UPC
/EはC1からC6の6キャラクタにより構成され、見
かけ上EAN−13の片側ブロックと同じ構成となって
いる。また、UPC/EはODD/EVEN混合の構成
となっており、この点でも見かけ上はEAN−13に類
似している。ここで、EAN−13、EAN−8は左右
ブロックを合わせて始めて一つのバーコードデータとし
て成立するため、片方のブロックが得られなければ読取
がNGであると判定することができる。しかし、UPC
/Eは6桁(EAN−13の片側ブロックと同じ)のキ
ャラクタで構成されているため、他方のブロックの有無
による読取結果の正当性を判断することができない。そ
のため、以下のような問題が発生する可能性がある。
コードを構成するキャラクタのバー構成を確認すること
によって、どちら側のブロックが走査されたのか、ある
いはどの方向にバーコードが走査されたのかを判定する
ことが可能となる。UPC/Eは、EAN−13・EA
N−8とは異なり、右ブロックに相当するブロックを備
えていない。UPC/Eは、SGBとスペシャルセンタ
ーバー(以下SCB)と呼ばれる、上記したEAN−1
3などのCBとは構成が異なるセンターバーとの間に、
キャラクタが挟まれるよう構成される。SCBは、それ
ぞれ1モジュールの白バーと黒バーが3本ずつ交互に配
置されており、合計6モジュールで構成される。UPC
/EはC1からC6の6キャラクタにより構成され、見
かけ上EAN−13の片側ブロックと同じ構成となって
いる。また、UPC/EはODD/EVEN混合の構成
となっており、この点でも見かけ上はEAN−13に類
似している。ここで、EAN−13、EAN−8は左右
ブロックを合わせて始めて一つのバーコードデータとし
て成立するため、片方のブロックが得られなければ読取
がNGであると判定することができる。しかし、UPC
/Eは6桁(EAN−13の片側ブロックと同じ)のキ
ャラクタで構成されているため、他方のブロックの有無
による読取結果の正当性を判断することができない。そ
のため、以下のような問題が発生する可能性がある。
【0039】EAN−13のCB付近を走査した場合に
は、CBに隣接するキャラクタの構成によっては、見か
け上UPC/EのSCBが走査されたものと見える場合
がある。CBの次のキャラクタ(C7)の一本目の黒バ
ーが1モジュールであり、走査線がC7の2本目の黒バ
ーを走査しなかった様な場合には、上記の問題が生じる
のである。
は、CBに隣接するキャラクタの構成によっては、見か
け上UPC/EのSCBが走査されたものと見える場合
がある。CBの次のキャラクタ(C7)の一本目の黒バ
ーが1モジュールであり、走査線がC7の2本目の黒バ
ーを走査しなかった様な場合には、上記の問題が生じる
のである。
【0040】UPC/EあるいはEAN−13の左ブロ
ックが通しで走査された場合には、それぞれのバーコー
ドの構成に相違点があるため(ODD/EVNE構成
等)、容易にどちらのバーコードを読み取ったのかを判
別できるが、分割読取を行なった場合には読み取られた
バーコード全体の特徴が不明であるため、読み取られた
範囲内に存在する特徴に基づいてしかバーコード種別を
判別することができない。そのため、特にCB付近のみ
走査されたような場合には、EAN−13の一部分(C
B)をUPC/Eの部分(SCB)と誤読してしまい、
そのまま処理が継続されてしまう可能性が充分にある。
ックが通しで走査された場合には、それぞれのバーコー
ドの構成に相違点があるため(ODD/EVNE構成
等)、容易にどちらのバーコードを読み取ったのかを判
別できるが、分割読取を行なった場合には読み取られた
バーコード全体の特徴が不明であるため、読み取られた
範囲内に存在する特徴に基づいてしかバーコード種別を
判別することができない。そのため、特にCB付近のみ
走査されたような場合には、EAN−13の一部分(C
B)をUPC/Eの部分(SCB)と誤読してしまい、
そのまま処理が継続されてしまう可能性が充分にある。
【0041】誤読されたデータはいわばゴミデータとな
るために、正常な復調処理を行なうことができず、読取
率向上のために分割読取を行なっているにも関わらずバ
ーコードの読取成功率を向上することができない。この
ような誤読を防止するためには、UPC/Eの場合には
分割読取を行なわず、SGBからSCBまで通しで走査
された場合のみ読取を行なうようにするという対策も考
えられるが、EAN−13よりも桁数が小さいとはい
え、UPC/Eが一本の走査線で貫通して走査される確
率は非常に低いと考えられるため、UPC/Eの読取成
功率は非常に低くなってしまう。
るために、正常な復調処理を行なうことができず、読取
率向上のために分割読取を行なっているにも関わらずバ
ーコードの読取成功率を向上することができない。この
ような誤読を防止するためには、UPC/Eの場合には
分割読取を行なわず、SGBからSCBまで通しで走査
された場合のみ読取を行なうようにするという対策も考
えられるが、EAN−13よりも桁数が小さいとはい
え、UPC/Eが一本の走査線で貫通して走査される確
率は非常に低いと考えられるため、UPC/Eの読取成
功率は非常に低くなってしまう。
【0042】このため、本実施形態ではEAN−13、
EAN−8と合わせて、UPC/Eの場合も分割読取を
行なうことができるようにするとともに、読み取られた
バーコードの種別をより確実に判別できるバーコード復
調方法・装置が後述されている。また、UPC/EはE
AN−13・EAN−8と比較して誤読されやすいた
め、バーコード読取の確認をするための各種チェック項
目を、UPC/Eの場合に他のものよりも厳しくするこ
とで、ゴミデータの混入を防止することも可能となって
いる。
EAN−8と合わせて、UPC/Eの場合も分割読取を
行なうことができるようにするとともに、読み取られた
バーコードの種別をより確実に判別できるバーコード復
調方法・装置が後述されている。また、UPC/EはE
AN−13・EAN−8と比較して誤読されやすいた
め、バーコード読取の確認をするための各種チェック項
目を、UPC/Eの場合に他のものよりも厳しくするこ
とで、ゴミデータの混入を防止することも可能となって
いる。
【0043】このようなバーコードを読み取るために、
バーコード読取装置の読取窓からレーザ光などの走査光
を出射し、バーコードを走査するタイプのバーコード読
取装置が広く用いられている。バーコード面に照射され
た走査光はバーコード面で反射され、反射光の一部がバ
ーコード読取装置に入射する。バーコード読取装置で
は、光検知器でこの反射光を検出し、バーコードの読取
・復調処理を行なった後に復調データを出力する。
バーコード読取装置の読取窓からレーザ光などの走査光
を出射し、バーコードを走査するタイプのバーコード読
取装置が広く用いられている。バーコード面に照射され
た走査光はバーコード面で反射され、反射光の一部がバ
ーコード読取装置に入射する。バーコード読取装置で
は、光検知器でこの反射光を検出し、バーコードの読取
・復調処理を行なった後に復調データを出力する。
【0044】図2はバーコード読取装置の構成を示すブ
ロック図である。図2において、1はバーコードであ
り、光学系2を用いて走査光を発生してバーコードを走
査し、バーコードからの反射光を検出してバーコードの
復調処理が実行される。光学系2には、例えば半導体レ
ーザからなるレーザ発光部3、回転多面鏡(ポリゴンミ
ラー)や様々な方向に走査される走査パターンを発生さ
せるためのパターンミラーからなる走査機構4、フォト
ダイオードなどからなりバーコードからの反射光を受光
する光電変換部5が備えられている。
ロック図である。図2において、1はバーコードであ
り、光学系2を用いて走査光を発生してバーコードを走
査し、バーコードからの反射光を検出してバーコードの
復調処理が実行される。光学系2には、例えば半導体レ
ーザからなるレーザ発光部3、回転多面鏡(ポリゴンミ
ラー)や様々な方向に走査される走査パターンを発生さ
せるためのパターンミラーからなる走査機構4、フォト
ダイオードなどからなりバーコードからの反射光を受光
する光電変換部5が備えられている。
【0045】レーザ発光部3の点灯はレーザ駆動部26
により制御される。また、回転多面鏡は図示しないモー
タに取り付けられており、モータの回転によって回転す
るようになっているが、そのモータはモータ駆動部25
により駆動される。光電変換部5はバーコード1からの
反射光を受光した際の受光光量に応じた信号を出力し、
この信号がアナログ/デジタル変換部(A/D変換部)
6に送られる。A/D変換部6は、バーコードの黒バー
/白バーのそれぞれに応じた値を持つ二値信号を出力す
る。
により制御される。また、回転多面鏡は図示しないモー
タに取り付けられており、モータの回転によって回転す
るようになっているが、そのモータはモータ駆動部25
により駆動される。光電変換部5はバーコード1からの
反射光を受光した際の受光光量に応じた信号を出力し、
この信号がアナログ/デジタル変換部(A/D変換部)
6に送られる。A/D変換部6は、バーコードの黒バー
/白バーのそれぞれに応じた値を持つ二値信号を出力す
る。
【0046】A/D変換部6によりデジタル値に変換さ
れた信号はバー幅カウンタ7に送られ、クロックジェネ
レータ8から発生するクロック信号をカウントして、バ
ーコードの黒バー/白バーのバー幅を求める。バー幅カ
ウンタ7により求められたバー幅値はバッファとなるメ
モリ9に一旦格納される。メモリ9に格納されたバー幅
値はCPU10に送られ、復調処理がCPU10で実行
される。また、復調されたデータは一旦RAM22に格
納される。ROM21には、バーコード読取装置を動作
するためのプログラムなどが格納されており、復調のた
めのプログラムもここに格納される。
れた信号はバー幅カウンタ7に送られ、クロックジェネ
レータ8から発生するクロック信号をカウントして、バ
ーコードの黒バー/白バーのバー幅を求める。バー幅カ
ウンタ7により求められたバー幅値はバッファとなるメ
モリ9に一旦格納される。メモリ9に格納されたバー幅
値はCPU10に送られ、復調処理がCPU10で実行
される。また、復調されたデータは一旦RAM22に格
納される。ROM21には、バーコード読取装置を動作
するためのプログラムなどが格納されており、復調のた
めのプログラムもここに格納される。
【0047】バーコード読取装置はPOS端末装置など
の上位装置とインターフェイス部23を介して接続され
る。復調されたバーコードデータは、インターフェイス
部23から上位装置に出力される。CPU10はまた、
バーコード読取装置の動作を制御しており、制御部回路
24を介してモータ駆動部25、レーザ駆動部26、L
ED27、スピーカ28などの動作を制御する。ここ
で、LED27はバーコードの読取が成功した際に点灯
するものであり、スピーカ28からはバーコードの読取
の成否を知らせるための報知音を発生するために用いら
れる。
の上位装置とインターフェイス部23を介して接続され
る。復調されたバーコードデータは、インターフェイス
部23から上位装置に出力される。CPU10はまた、
バーコード読取装置の動作を制御しており、制御部回路
24を介してモータ駆動部25、レーザ駆動部26、L
ED27、スピーカ28などの動作を制御する。ここ
で、LED27はバーコードの読取が成功した際に点灯
するものであり、スピーカ28からはバーコードの読取
の成否を知らせるための報知音を発生するために用いら
れる。
【0048】図3は、図2のCPU10並びにRAM2
2の内部をその動作・処理毎に特に詳細に示したブロッ
ク図である。メモリ9からCPU10に送られたバー幅
データはバーコードデータ検出部31に送られる。バー
コードデータ検出部31では、メモリ9から読みだされ
たバー幅データに基づいて、読み取られたデータがバー
コードのものであるかどうかを検出するものであり、こ
こでは更にバーコードの特徴点が抽出される。バーコー
ド検出部31によりバーコードであると判別されたデー
タは、一旦バッファ39aに格納された後検索部39b
に送られる。検索部39bは、バッファ39aに格納さ
れたデータの中から特徴点に関連するデータを検索し、
また読み取られたバーコードの種別を検索された特徴点
から判別する。検索部で検索されたデータは、次にバー
コード復調部(以下単に復調部)32に送られる。
2の内部をその動作・処理毎に特に詳細に示したブロッ
ク図である。メモリ9からCPU10に送られたバー幅
データはバーコードデータ検出部31に送られる。バー
コードデータ検出部31では、メモリ9から読みだされ
たバー幅データに基づいて、読み取られたデータがバー
コードのものであるかどうかを検出するものであり、こ
こでは更にバーコードの特徴点が抽出される。バーコー
ド検出部31によりバーコードであると判別されたデー
タは、一旦バッファ39aに格納された後検索部39b
に送られる。検索部39bは、バッファ39aに格納さ
れたデータの中から特徴点に関連するデータを検索し、
また読み取られたバーコードの種別を検索された特徴点
から判別する。検索部で検索されたデータは、次にバー
コード復調部(以下単に復調部)32に送られる。
【0049】なお、バーコードデータ検出部31でバー
幅データを確認した後、バーコードデータが含まれてい
なかったと判断された場合には、バーコード検出部31
は再読取を指示する。この場合、読取が出来なかった旨
の通知が、LEDやスピーカより操作者になされる。復
調部32では、バーコードに記録された数値データを再
生する処理が行なわれる。バーコードの復調処理は、検
索部39bで実行される検索処理により判別した、読み
取られたバーコードの種別に応じたものが実行される。
幅データを確認した後、バーコードデータが含まれてい
なかったと判断された場合には、バーコード検出部31
は再読取を指示する。この場合、読取が出来なかった旨
の通知が、LEDやスピーカより操作者になされる。復
調部32では、バーコードに記録された数値データを再
生する処理が行なわれる。バーコードの復調処理は、検
索部39bで実行される検索処理により判別した、読み
取られたバーコードの種別に応じたものが実行される。
【0050】バーコード復調部32から出力される復調
データは、RAM22内部に領域が設定された復調デー
タ格納部22Aに一旦格納される。バーコード部分のみ
が走査された場合には、複数の復調データを合成するこ
とによって一つのバーコードを再生する処理が実行され
る。バーコード合成部33はこのための処理を行なうも
のである。
データは、RAM22内部に領域が設定された復調デー
タ格納部22Aに一旦格納される。バーコード部分のみ
が走査された場合には、複数の復調データを合成するこ
とによって一つのバーコードを再生する処理が実行され
る。バーコード合成部33はこのための処理を行なうも
のである。
【0051】バーコード合成部33は、復調データ格納
部22Aより復調データを読みだして、これがバーコー
ドの一部分のみを走査したものであると判別された場合
には他の部分の復調データを得て、これらを合成する。
バーコード合成部33により合成された復調データは、
モジュラス10チェック部35によりモジュラス10チ
ェックが行なわれる。各種バーコードにおけるモジュラ
ス10チェックの手法は周知の技術であるため、ここで
は詳細は省略する。
部22Aより復調データを読みだして、これがバーコー
ドの一部分のみを走査したものであると判別された場合
には他の部分の復調データを得て、これらを合成する。
バーコード合成部33により合成された復調データは、
モジュラス10チェック部35によりモジュラス10チ
ェックが行なわれる。各種バーコードにおけるモジュラ
ス10チェックの手法は周知の技術であるため、ここで
は詳細は省略する。
【0052】モジュラス10チェックがOKとなった場
合には、正常なバーコードデータが得られたこととな
る。一方、モジュラス10チェックがNGとなった場合
には、読取結果がエラーであったこととなるため、再読
取指示を行なう必要がある。モジュラス10チェック結
果がOKとなった場合には、続いて一致回数チェック部
26により得られたバーコードデータと同一のバーコー
ドデータが得られた回数がチェックされる。モジュラス
10チェックはバーコードの構成としてそのデータが正
しいかどうかを判別するものであるが、読取・復調結果
が本当に正しいものであったのか、たまたまバーコード
の構成と一致する読取データが得られたのかどうかを判
別することができない。そこで、一致するバーコードデ
ータが複数個得られたかどうかが判別される。
合には、正常なバーコードデータが得られたこととな
る。一方、モジュラス10チェックがNGとなった場合
には、読取結果がエラーであったこととなるため、再読
取指示を行なう必要がある。モジュラス10チェック結
果がOKとなった場合には、続いて一致回数チェック部
26により得られたバーコードデータと同一のバーコー
ドデータが得られた回数がチェックされる。モジュラス
10チェックはバーコードの構成としてそのデータが正
しいかどうかを判別するものであるが、読取・復調結果
が本当に正しいものであったのか、たまたまバーコード
の構成と一致する読取データが得られたのかどうかを判
別することができない。そこで、一致するバーコードデ
ータが複数個得られたかどうかが判別される。
【0053】たまたまバーコードの構成に類似するデー
タが得られた場合には、このデータは再現性がなく、同
一データが読み取られる可能性は少ない。一方、正しい
バーコードデータが再生された場合には、バーコードが
何回も走査されていることからも、同一のデータが複数
個得られる可能性は高い。そこで、データの一致回数を
調べることで、読み取られたバーコードデータの正当性
を確認することができる。
タが得られた場合には、このデータは再現性がなく、同
一データが読み取られる可能性は少ない。一方、正しい
バーコードデータが再生された場合には、バーコードが
何回も走査されていることからも、同一のデータが複数
個得られる可能性は高い。そこで、データの一致回数を
調べることで、読み取られたバーコードデータの正当性
を確認することができる。
【0054】所定回数の一致するデータが得られなかっ
た場合には、読取エラーとして再読取の指示が行なわれ
る。一方、一致回数チェックがOKであった場合には、
バーコード読取完了通知部38を介して制御部回路2
4、インターフェイス部23に読取完了通知がなされ
る。制御部回路24では、完了通知に応じてLED27
の点灯・スピーカ28の鳴動処理を実行する。一方、イ
ンターフェイス部23では上位装置に復調されたバーコ
ードデータを出力する。
た場合には、読取エラーとして再読取の指示が行なわれ
る。一方、一致回数チェックがOKであった場合には、
バーコード読取完了通知部38を介して制御部回路2
4、インターフェイス部23に読取完了通知がなされ
る。制御部回路24では、完了通知に応じてLED27
の点灯・スピーカ28の鳴動処理を実行する。一方、イ
ンターフェイス部23では上位装置に復調されたバーコ
ードデータを出力する。
【0055】データ比較部34は、バーコードデータの
合成を行なう場合に、合成の対象となっている二つの復
調データなかで重複しているキャラクタ数のチェックを
行なうものである。復調データを合成する場合、本実施
形態によるバーコード読取装置では、所定数のキャラク
タが重複している必要かあるものとしている。重複キャ
ラクタ数が所定数に満たない場合には、その復調データ
同士は合成処理の対象とはならない。
合成を行なう場合に、合成の対象となっている二つの復
調データなかで重複しているキャラクタ数のチェックを
行なうものである。復調データを合成する場合、本実施
形態によるバーコード読取装置では、所定数のキャラク
タが重複している必要かあるものとしている。重複キャ
ラクタ数が所定数に満たない場合には、その復調データ
同士は合成処理の対象とはならない。
【0056】このようなタイプの読取装置では、バーコ
ードを読み取る場合には操作者がバーコードの付された
物品を持ち、読取窓の前を通過させる。この際、バーコ
ードの向きを一定にして読取動作を行なうとなると、操
作者の負担が増えるため、どのような向きでバーコード
が読取窓を通過してもバーコードを読み取ることができ
るようにしなければならない。
ードを読み取る場合には操作者がバーコードの付された
物品を持ち、読取窓の前を通過させる。この際、バーコ
ードの向きを一定にして読取動作を行なうとなると、操
作者の負担が増えるため、どのような向きでバーコード
が読取窓を通過してもバーコードを読み取ることができ
るようにしなければならない。
【0057】このための対策として、バーコード読取装
置から出射される走査線の走査方向は一方向のみではな
く、他方向に向けて走査されるようになっている。一例
としては、互いに交叉する複数本の走査線を出射させる
装置などが存在する。また、一本の走査線で、バーコー
ドを一方のGBから他方のGB(UPC/EではSGB
からSCB)まで通して走査できれば読取を確実に行な
うことができるが、走査線の走査方向と読取窓を通過す
るバーコードの角度との関係から、バーコードの一部し
か走査されないケースが多く、バーコードが通しで走査
されることは極めてまれである。
置から出射される走査線の走査方向は一方向のみではな
く、他方向に向けて走査されるようになっている。一例
としては、互いに交叉する複数本の走査線を出射させる
装置などが存在する。また、一本の走査線で、バーコー
ドを一方のGBから他方のGB(UPC/EではSGB
からSCB)まで通して走査できれば読取を確実に行な
うことができるが、走査線の走査方向と読取窓を通過す
るバーコードの角度との関係から、バーコードの一部し
か走査されないケースが多く、バーコードが通しで走査
されることは極めてまれである。
【0058】そのため、最近のバーコードリーダでは、
走査線がバーコードの一部のみを走査した場合でもその
読み取られたデータを有効とし、同様に一部しか走査さ
れなかった読取データと合成して一つのバーコードデー
タを再生する、所謂分割読取が行なわれている。バーコ
ードと走査方向の関係を図4に示す。ここでは、EAN
−13が走査される場合を説明している。バーコードの
走査方向は、SGB側からEGB(UPC/Eを考慮す
るならはSCB)方向に走査されるもの(1)と、EG
B(SCB)側からSGB方向に向けて走査されるもの
(2)との2種類に大別することができる。
走査線がバーコードの一部のみを走査した場合でもその
読み取られたデータを有効とし、同様に一部しか走査さ
れなかった読取データと合成して一つのバーコードデー
タを再生する、所謂分割読取が行なわれている。バーコ
ードと走査方向の関係を図4に示す。ここでは、EAN
−13が走査される場合を説明している。バーコードの
走査方向は、SGB側からEGB(UPC/Eを考慮す
るならはSCB)方向に走査されるもの(1)と、EG
B(SCB)側からSGB方向に向けて走査されるもの
(2)との2種類に大別することができる。
【0059】一方、バーコードが走査される状態として
は、図5に図示されるように、一つのバーコードが通し
で走査される場合(1)、一方のGBとCBとが共に走
査されるが他方のGBが走査されない場合(片側ブロッ
クが通しで走査された状態)(2)、CB・GBのうち
一つのバーしか通過しなかった場合(3)、キャラクタ
は走査されたがCB・GBは走査されなかった場合
(4)に大別することができる。
は、図5に図示されるように、一つのバーコードが通し
で走査される場合(1)、一方のGBとCBとが共に走
査されるが他方のGBが走査されない場合(片側ブロッ
クが通しで走査された状態)(2)、CB・GBのうち
一つのバーしか通過しなかった場合(3)、キャラクタ
は走査されたがCB・GBは走査されなかった場合
(4)に大別することができる。
【0060】このうち、バーコードが通しで走査された
場合には、分割読取を行なう必要はない。この他の場合
には、バーコードに対して走査光が斜めに通過している
が、通常のバーコード読取ではこのようなケースが圧倒
的に多い。バーコードが斜めに走査された場合には完全
なバーコードデータが得られていないため、何らかの形
で他のバーコードデータと合成する必要がある。なお、
本実施形態は、得られた読取データの正当性の確保など
の理由により、図4の(4)のように特徴点となるC
B、GBいずれも通過しなかった場合には、読み取られ
たデータを無効データとして扱う。(4)は、バーコー
ドの特徴的な構成となるバーを走査していないため、読
み取られたデータがバーコードであるのかどうかの判断
が難しく、得られた読取データがたまたまバーの構成と
同じパターンとなったノイズである可能性を捨てられな
いからである。
場合には、分割読取を行なう必要はない。この他の場合
には、バーコードに対して走査光が斜めに通過している
が、通常のバーコード読取ではこのようなケースが圧倒
的に多い。バーコードが斜めに走査された場合には完全
なバーコードデータが得られていないため、何らかの形
で他のバーコードデータと合成する必要がある。なお、
本実施形態は、得られた読取データの正当性の確保など
の理由により、図4の(4)のように特徴点となるC
B、GBいずれも通過しなかった場合には、読み取られ
たデータを無効データとして扱う。(4)は、バーコー
ドの特徴的な構成となるバーを走査していないため、読
み取られたデータがバーコードであるのかどうかの判断
が難しく、得られた読取データがたまたまバーの構成と
同じパターンとなったノイズである可能性を捨てられな
いからである。
【0061】このように、同じ系統のバーコードでもそ
の構成には相違が見られる。このようなバーコードが混
在する場合には、バーコード読取装置は読み取られたバ
ーコードの種別を判別して、種別に応じた復調・合成な
どの処理を行なわればならない。しかし、バーコード読
取装置が得る読取データは、バーコードが通しで読み取
られた場合を除いてバーコードの一部分をカバーしてい
るに過ぎない。従って、バーコードの種別を示す特徴的
な情報を抽出しにくい場合がある。
の構成には相違が見られる。このようなバーコードが混
在する場合には、バーコード読取装置は読み取られたバ
ーコードの種別を判別して、種別に応じた復調・合成な
どの処理を行なわればならない。しかし、バーコード読
取装置が得る読取データは、バーコードが通しで読み取
られた場合を除いてバーコードの一部分をカバーしてい
るに過ぎない。従って、バーコードの種別を示す特徴的
な情報を抽出しにくい場合がある。
【0062】本実施形態によるバーコード復調方法・装
置では、バーコード種別に応じた特徴的な情報を抽出
し、判別したバーコード種別に応じた復調処理を行なう
ことによって、複数種別のバーコードが混在した場合で
も、より確実にバーコード読取を成功させることを狙っ
ている。図6は、本実施形態によるバーコード復調処理
の概要を示すフローチャートである。図6ステップ1は
「ハードウェア簡易検出」処理であり、ハードウェアロ
ジックなどを用いて読み取られたデータのなかからバー
コードデータ(あるいはバーコードデータと思われる)
データを検出する処理を行なう。ここでは、詳細を後述
するchr−l、chr−fビットが検出結果に応じて
立てられる。検出されたバーコードデータは、バッファ
内に一時的に格納される。この処理には、バー幅カウン
トの処理などが含まれる。
置では、バーコード種別に応じた特徴的な情報を抽出
し、判別したバーコード種別に応じた復調処理を行なう
ことによって、複数種別のバーコードが混在した場合で
も、より確実にバーコード読取を成功させることを狙っ
ている。図6は、本実施形態によるバーコード復調処理
の概要を示すフローチャートである。図6ステップ1は
「ハードウェア簡易検出」処理であり、ハードウェアロ
ジックなどを用いて読み取られたデータのなかからバー
コードデータ(あるいはバーコードデータと思われる)
データを検出する処理を行なう。ここでは、詳細を後述
するchr−l、chr−fビットが検出結果に応じて
立てられる。検出されたバーコードデータは、バッファ
内に一時的に格納される。この処理には、バー幅カウン
トの処理などが含まれる。
【0063】ステップ2は「バーコード検索第一処理」
である。ここでは、バッファに格納されたバーコードデ
ータに基づいて、SGB、EGB、CB並びにSCBを
検出する。これらのバーの検出には、上述のchr−
l、chr−fフラグが用いられる。ステップ3は「バ
ーコード検索第二処理」である。ここでは、「第一処
理」により各種バーが検出されたバーコードデータに基
づいて、互いに隣接するキャラクタ長のチェックを行
い、この結果に応じて有効なキャラクタを算出する処理
を行なう。
である。ここでは、バッファに格納されたバーコードデ
ータに基づいて、SGB、EGB、CB並びにSCBを
検出する。これらのバーの検出には、上述のchr−
l、chr−fフラグが用いられる。ステップ3は「バ
ーコード検索第二処理」である。ここでは、「第一処
理」により各種バーが検出されたバーコードデータに基
づいて、互いに隣接するキャラクタ長のチェックを行
い、この結果に応じて有効なキャラクタを算出する処理
を行なう。
【0064】ステップ4は「バーコード復調処理」であ
り、「第二処理」で得られたバーコードデータに基づい
てバーコードの復調を行い、バーコードに記録されたデ
ータを再生する。この復調処理は、分割読取されたデー
タの場合には、それぞれ読み取られた部分単位毎に行な
われる。ステップ5は「格納・合成処理」である。ここ
では、復調されたバーコードデータをデータ格納用のバ
ッファに格納するとともに、分割読取されたバーコード
データを合成して一つのバーコードデータを再生する処
理を行なう。
り、「第二処理」で得られたバーコードデータに基づい
てバーコードの復調を行い、バーコードに記録されたデ
ータを再生する。この復調処理は、分割読取されたデー
タの場合には、それぞれ読み取られた部分単位毎に行な
われる。ステップ5は「格納・合成処理」である。ここ
では、復調されたバーコードデータをデータ格納用のバ
ッファに格納するとともに、分割読取されたバーコード
データを合成して一つのバーコードデータを再生する処
理を行なう。
【0065】ステップ6は「一致回数処理」である。読
み取られたバーコードデータは、それだけでは正しい読
取データであるかどうかは確認できない。そのため、一
連の読取処理で得られた複数の復調データを相互に比較
し、復調データの一致回数を計数してこれにより読取結
果の確からしさをチェックする。このような処理を経
て、一つのバーコードの復調処理が終了する。なお、そ
れぞれの処理の詳細については後述する。ハードウェア
簡易検出処理では、受光された信号に基づいて以下の処
理を行なう。
み取られたバーコードデータは、それだけでは正しい読
取データであるかどうかは確認できない。そのため、一
連の読取処理で得られた複数の復調データを相互に比較
し、復調データの一致回数を計数してこれにより読取結
果の確からしさをチェックする。このような処理を経
て、一つのバーコードの復調処理が終了する。なお、そ
れぞれの処理の詳細については後述する。ハードウェア
簡易検出処理では、受光された信号に基づいて以下の処
理を行なう。
【0066】第一に、受光された信号に基づいてバー幅
のカウントを行なう。バーコードからの受光信号は、バ
ーの白/黒に応じた受光レベルを持った信号となってい
る。この信号に基づいて、白バー/黒バーのエッジを第
一に検出する。図7は、走査光により走査されるバーと
エッジ検出信号との関係を示した図面である。図におい
て、上段はバーコードを構成するバーと走査光の軌跡を
図示しており、*BEGおよび*WEGはエッジ検出信
号である。このうち、*BEGは白バーから黒バーに変
わる部分のエッジが検出された場合に立ち下がる信号で
あり、*WEGは黒バーから白バーに変わる部分のエッ
ジが検出された場合に立ち下がる信号となっている。な
お、BCD信号は出力された*BEGと*WEGとの順
序に基づいて、バーの白黒を示す信号として出力される
ものである。BCDは黒バーに対応して低レベルとな
り、白バーに対応して高レベルとなる。
のカウントを行なう。バーコードからの受光信号は、バ
ーの白/黒に応じた受光レベルを持った信号となってい
る。この信号に基づいて、白バー/黒バーのエッジを第
一に検出する。図7は、走査光により走査されるバーと
エッジ検出信号との関係を示した図面である。図におい
て、上段はバーコードを構成するバーと走査光の軌跡を
図示しており、*BEGおよび*WEGはエッジ検出信
号である。このうち、*BEGは白バーから黒バーに変
わる部分のエッジが検出された場合に立ち下がる信号で
あり、*WEGは黒バーから白バーに変わる部分のエッ
ジが検出された場合に立ち下がる信号となっている。な
お、BCD信号は出力された*BEGと*WEGとの順
序に基づいて、バーの白黒を示す信号として出力される
ものである。BCDは黒バーに対応して低レベルとな
り、白バーに対応して高レベルとなる。
【0067】*BEGの立ち下がりから*WEGの立ち
下がりまでの幅(時間)は、黒バーの幅に相当してい
る。同様に、*WEGの立ち下がりから*BEGの立ち
下がりまでの幅(時間)は、白バーの幅に相当してい
る。これらのエッジ検出信号は、バー幅カウンタに入力
され、バーの幅がカウントされる。
下がりまでの幅(時間)は、黒バーの幅に相当してい
る。同様に、*WEGの立ち下がりから*BEGの立ち
下がりまでの幅(時間)は、白バーの幅に相当してい
る。これらのエッジ検出信号は、バー幅カウンタに入力
され、バーの幅がカウントされる。
【0068】バー幅カウンタは、入力する信号に基づい
てバー幅を連続的に測定し、そのカウント値を数列とし
て出力する機能を持っている。バー幅カウンタ内にはカ
ウントクロックを発生するクロック源が備えられてい
る。このクロック源は、例えば40MHzのクロックを
用いることができる。バー幅カウンタは、それぞれのエ
ッジ検出信号の立ち下がりを検出し、2つのエッジ検出
信号間のクロック数をカウントする。このクロックのカ
ウント数は、バー幅に相当したものであり、それぞれの
カウント値の比は、相対的なバー幅比に相当している。
てバー幅を連続的に測定し、そのカウント値を数列とし
て出力する機能を持っている。バー幅カウンタ内にはカ
ウントクロックを発生するクロック源が備えられてい
る。このクロック源は、例えば40MHzのクロックを
用いることができる。バー幅カウンタは、それぞれのエ
ッジ検出信号の立ち下がりを検出し、2つのエッジ検出
信号間のクロック数をカウントする。このクロックのカ
ウント数は、バー幅に相当したものであり、それぞれの
カウント値の比は、相対的なバー幅比に相当している。
【0069】バー幅カウンタでは、*BEGが立ち下が
ってから*WEGが立ち下がるまでのクロックを計測
し、そのカウント値を例えば11ビットのデータとして
出力する。同様に、*WEGが立ち下がってから*BE
Gが立ち下がるまでのクロックのカウント値を出力す
る。なお、バー幅カウンタでは、カウントできるカウン
ト値の上限が定められている。これは、例えばバーコー
ドを読み取っている場合に発生するはずがないような値
を上限値とすればよい。
ってから*WEGが立ち下がるまでのクロックを計測
し、そのカウント値を例えば11ビットのデータとして
出力する。同様に、*WEGが立ち下がってから*BE
Gが立ち下がるまでのクロックのカウント値を出力す
る。なお、バー幅カウンタでは、カウントできるカウン
ト値の上限が定められている。これは、例えばバーコー
ドを読み取っている場合に発生するはずがないような値
を上限値とすればよい。
【0070】ここで、通常のバーコード読取では、図7
のように*BEGの立ち下がりと*WEGの立ち下がり
とは交互に発生するはずである。しかし、ノイズの混入
やバーコードからの反射光の状態によっては、同じエッ
ジ検出信号が続けて発生する場合がある。その状態が図
8に図示されている。図8の場合には、*WEGが2回
続けて発生している。このようにエッジ検出信号が交互
に発生しないような状態を、ここでは便宜的にウェーブ
エラーと称する。*BEG、*WEGは、光検知器から
出力されるバーの明暗に応じた信号の変曲点を検出する
ことにより出力されるが、この波形にノイズが混入する
などの理由により見かけ上同一側の変曲点が2回検出さ
れる可能性があり、受光信号の波形にエラーが生じてい
るために発生することから、このように称してる。
のように*BEGの立ち下がりと*WEGの立ち下がり
とは交互に発生するはずである。しかし、ノイズの混入
やバーコードからの反射光の状態によっては、同じエッ
ジ検出信号が続けて発生する場合がある。その状態が図
8に図示されている。図8の場合には、*WEGが2回
続けて発生している。このようにエッジ検出信号が交互
に発生しないような状態を、ここでは便宜的にウェーブ
エラーと称する。*BEG、*WEGは、光検知器から
出力されるバーの明暗に応じた信号の変曲点を検出する
ことにより出力されるが、この波形にノイズが混入する
などの理由により見かけ上同一側の変曲点が2回検出さ
れる可能性があり、受光信号の波形にエラーが生じてい
るために発生することから、このように称してる。
【0071】同一側のエッジ検出信号が検出された場合
のクロックのカウントについては、始めに発生した方の
信号からカウントを開始した方を有効とし、そこから他
方のエッジ検出信号が立ち下がるまでのクロック数をカ
ウントするようにしている。図8の場合には、*BEG
から*一つ目の*WEGまでの時間は750nsecで
あり、これを30カウントとしている。一方、次のカウ
ント値は、一つ目の*WEGから次の*BEGまでと
し、1500nsec(60カウント)となっている。
また、同じエッジ検出信号(*WEG)が続けて発生し
たことはバー幅カウンタでは認識可能であるため、この
ような場合にはウェーブエラービットWEERがLから
Hに立ち上げられる。
のクロックのカウントについては、始めに発生した方の
信号からカウントを開始した方を有効とし、そこから他
方のエッジ検出信号が立ち下がるまでのクロック数をカ
ウントするようにしている。図8の場合には、*BEG
から*一つ目の*WEGまでの時間は750nsecで
あり、これを30カウントとしている。一方、次のカウ
ント値は、一つ目の*WEGから次の*BEGまでと
し、1500nsec(60カウント)となっている。
また、同じエッジ検出信号(*WEG)が続けて発生し
たことはバー幅カウンタでは認識可能であるため、この
ような場合にはウェーブエラービットWEERがLから
Hに立ち上げられる。
【0072】なお、図8に図示されたB/Wは黒/白を
示す符号であり、カウントしているバーが黒バーなのか
白バーなのかを示すビットである。B/WビットがLの
状態では黒バー幅が、Hの状態では白バー幅がカウント
されていることを示している。B/Wビットは、*BE
G、*WEGの検出に応じてその極性が変わり、図7の
BCD信号に対応するものである。
示す符号であり、カウントしているバーが黒バーなのか
白バーなのかを示すビットである。B/WビットがLの
状態では黒バー幅が、Hの状態では白バー幅がカウント
されていることを示している。B/Wビットは、*BE
G、*WEGの検出に応じてその極性が変わり、図7の
BCD信号に対応するものである。
【0073】また、図9はウェーブエラー発生と判断さ
れるその他の例を示す図面である。バー幅のカウント値
には、上限値に加えて下限値が設定されている。エッジ
検出信号間のカウント値が下限値(図示の場合10カウ
ント)に満たない場合には、その時点でカウントされた
カウント値は出力されない。この場合には9カウント後
に検出された*BEGはエラー(ノイズ等)と考えるこ
とができる。
れるその他の例を示す図面である。バー幅のカウント値
には、上限値に加えて下限値が設定されている。エッジ
検出信号間のカウント値が下限値(図示の場合10カウ
ント)に満たない場合には、その時点でカウントされた
カウント値は出力されない。この場合には9カウント後
に検出された*BEGはエラー(ノイズ等)と考えるこ
とができる。
【0074】図9の場合について説明すると、一つ目の
*BEGから一つ目の*WEGまでのカウント値は30
カウントである一方、一つ目の*WEGから二つ目の*
BEGまでのカウント値は9カウントである。従って、
この場合にはカウント値(9カウント)は出力されな
い。次に、二つ目の*BEGから二つ目の*WEGまで
は25カウントであり、10カウントを越える。そし
て、カウント値としては25カウントが出力され、WE
RRビットが低レベルから高レベルに立ち上げられる。
*BEGから一つ目の*WEGまでのカウント値は30
カウントである一方、一つ目の*WEGから二つ目の*
BEGまでのカウント値は9カウントである。従って、
この場合にはカウント値(9カウント)は出力されな
い。次に、二つ目の*BEGから二つ目の*WEGまで
は25カウントであり、10カウントを越える。そし
て、カウント値としては25カウントが出力され、WE
RRビットが低レベルから高レベルに立ち上げられる。
【0075】このように、10カウント未満のカウント
値が発生した後に10カウント以上のカウント値が発生
した場合には、その時点でWERRビットをLからHと
する。同様に、10カウント未満のカウント値が連続し
た場合には、次に10カウント以上のカウント値が発生
した段階でWERRビットをHとする。続いて、このよ
うにして得られたカウントデータに基づいて、UPCポ
インタ検出処理が行なわれる。ここでいうUPCポイン
タとは、GB、CBのようにUPC系バーコードで特徴
を持つバー、あるいは基準となるバーを指す。この検出
処理では、このようなCB、GBを検出する。
値が発生した後に10カウント以上のカウント値が発生
した場合には、その時点でWERRビットをLからHと
する。同様に、10カウント未満のカウント値が連続し
た場合には、次に10カウント以上のカウント値が発生
した段階でWERRビットをHとする。続いて、このよ
うにして得られたカウントデータに基づいて、UPCポ
インタ検出処理が行なわれる。ここでいうUPCポイン
タとは、GB、CBのようにUPC系バーコードで特徴
を持つバー、あるいは基準となるバーを指す。この検出
処理では、このようなCB、GBを検出する。
【0076】ここで、走査光が少なくともCB(UPC
/EのSCB含む)、GB(SGB及びEGB)の一本
を通過するとした場合、走査の種別としては以下の4種
類を想定することができる。図10はこれを図示したも
のである。なお、図示されているバーコードはUPC−
Eであるが、SCBをCBと捉えればEAN−13も同
様に考えることができる。
/EのSCB含む)、GB(SGB及びEGB)の一本
を通過するとした場合、走査の種別としては以下の4種
類を想定することができる。図10はこれを図示したも
のである。なお、図示されているバーコードはUPC−
Eであるが、SCBをCBと捉えればEAN−13も同
様に考えることができる。
【0077】1番目は、走査光がGB(バーコードの向
きと走査方向に応じてSGBあるいはEGBの一方とな
る)からGBに隣接する第一キャラクタ(1st CH
R)に向けて走査される場合(1)、2番目は走査光が
CBからこれに隣接する第一キャラクタに向けて走査さ
れる場合(4)、3番目はキャラクタからこれに隣接す
るGBに向けて走査される場合(2)、4番目はキャラ
クタからこれに隣接するCBに向けて走査される場合
(3)である。
きと走査方向に応じてSGBあるいはEGBの一方とな
る)からGBに隣接する第一キャラクタ(1st CH
R)に向けて走査される場合(1)、2番目は走査光が
CBからこれに隣接する第一キャラクタに向けて走査さ
れる場合(4)、3番目はキャラクタからこれに隣接す
るGBに向けて走査される場合(2)、4番目はキャラ
クタからこれに隣接するCBに向けて走査される場合
(3)である。
【0078】ここで、第一キャラクタ(1st cha
racter)とは、GB、CBに続けて走査されたキ
ャラクタを指し、エンドキャラクタ(last cha
racter)とはCB、GBの直前に走査されたキャ
ラクタを指すこととする。本実施形態では以下の処理を
行なう。GB、CBはそれぞれ1モジュール幅のバーを
計3本備えている。また、1キャラクタは7モジュール
のバーで構成されている。そこで、これを利用して、C
B・GBのキャラクタ長と第一・エンドキャラクタのキ
ャラクタ長とを比較し、第一キャラクタあるいはエンド
キャラクタのキャラクタ長をチェックする。
racter)とは、GB、CBに続けて走査されたキ
ャラクタを指し、エンドキャラクタ(last cha
racter)とはCB、GBの直前に走査されたキャ
ラクタを指すこととする。本実施形態では以下の処理を
行なう。GB、CBはそれぞれ1モジュール幅のバーを
計3本備えている。また、1キャラクタは7モジュール
のバーで構成されている。そこで、これを利用して、C
B・GBのキャラクタ長と第一・エンドキャラクタのキ
ャラクタ長とを比較し、第一キャラクタあるいはエンド
キャラクタのキャラクタ長をチェックする。
【0079】キャラクタチェックを行なう場合には、ま
ずバーの構成を調べる必要がある。CB、GBはバー幅
の等しいバーが三つ並んでいるという、特徴的な構成を
持つ。また、1キャラクタは2本ずつの黒バー/白バー
が隣接しており、かつ7モジュール幅で構成されている
ことは既に判っている。そこで、得られたバー幅データ
に基づいて、CB、GBの特徴を持つデータと1つのキ
ャラクタの特徴を持つデータとが互いに隣接している部
分を抽出する。その上で、CB/GBとキャラクタとの
対比に基づいてキャラクタ長チェックが行なわれる。
ずバーの構成を調べる必要がある。CB、GBはバー幅
の等しいバーが三つ並んでいるという、特徴的な構成を
持つ。また、1キャラクタは2本ずつの黒バー/白バー
が隣接しており、かつ7モジュール幅で構成されている
ことは既に判っている。そこで、得られたバー幅データ
に基づいて、CB、GBの特徴を持つデータと1つのキ
ャラクタの特徴を持つデータとが互いに隣接している部
分を抽出する。その上で、CB/GBとキャラクタとの
対比に基づいてキャラクタ長チェックが行なわれる。
【0080】(1)の場合を例にとると、GBの後端の
2本のバーを合わせたバー幅Tnは2モジュールとな
る。一方、第一キャラクタの幅Cn+2は7モジュール
である。そこで、第一キャラクタ長チェックを行なう。
第一キャラクタ長チェックではCn+2が3×Tnより
大きく、4×Tnよりも小さいか否かを判定する。実際
のモジュール数のみを比較すれば、Cn+2はTnの
3.5倍であるが、曲面に印刷されたことによるバーコ
ードの歪みによる誤差を考慮して、上記の範囲内にCn
+2が収まるならば、第一キャラクタ長チェックはOK
であると判断する。そして、第一キャラクタの後端のバ
ーに対してフラグchr−f=1を設定する。ここ
で、’f’はfirstの’f’でありり第一キャラク
タを示す。
2本のバーを合わせたバー幅Tnは2モジュールとな
る。一方、第一キャラクタの幅Cn+2は7モジュール
である。そこで、第一キャラクタ長チェックを行なう。
第一キャラクタ長チェックではCn+2が3×Tnより
大きく、4×Tnよりも小さいか否かを判定する。実際
のモジュール数のみを比較すれば、Cn+2はTnの
3.5倍であるが、曲面に印刷されたことによるバーコ
ードの歪みによる誤差を考慮して、上記の範囲内にCn
+2が収まるならば、第一キャラクタ長チェックはOK
であると判断する。そして、第一キャラクタの後端のバ
ーに対してフラグchr−f=1を設定する。ここ
で、’f’はfirstの’f’でありり第一キャラク
タを示す。
【0081】GBのバー幅として黒バーと白バーの2本
のバー幅を合わせた幅を採用した理由について説明す
る。本来ならば、GBを構成する黒バーと白バーの幅は
全く同一であるはずである。しかし、主に印刷上の理由
により、黒バーの幅がにじみによって太ったり、逆に細
りが生じるというように、バー幅に歪みが発生すること
がある。このようなバーを基準バーとして使用すると、
黒バーが本来の基準長よりも長いあるいは短いという事
態を招き、キャラクタ長チェックを正しく行なうことが
できない。
のバー幅を合わせた幅を採用した理由について説明す
る。本来ならば、GBを構成する黒バーと白バーの幅は
全く同一であるはずである。しかし、主に印刷上の理由
により、黒バーの幅がにじみによって太ったり、逆に細
りが生じるというように、バー幅に歪みが発生すること
がある。このようなバーを基準バーとして使用すると、
黒バーが本来の基準長よりも長いあるいは短いという事
態を招き、キャラクタ長チェックを正しく行なうことが
できない。
【0082】一つのバーコード上での黒バーのにじみ/
細りがすべての黒バーについて同程度あると考えた場合
には、黒バーの太り(細り)分はそのまま白バーの細り
(太り)分として反映される。従って、黒バーのバー幅
と白バーのバー幅とを足し合わせれば、両者の細り・太
りが相殺されることとなる。上記の例でも、バーの印刷
上の歪みの影響を排除するために、基準となるGBのバ
ー幅として黒バーと白バーの幅を足し合わせたものを採
用しているのである。以下、バー幅のチェックを行なう
場合には、同様に黒バーと白バーとを足し合わせた値を
用いる。
細りがすべての黒バーについて同程度あると考えた場合
には、黒バーの太り(細り)分はそのまま白バーの細り
(太り)分として反映される。従って、黒バーのバー幅
と白バーのバー幅とを足し合わせれば、両者の細り・太
りが相殺されることとなる。上記の例でも、バーの印刷
上の歪みの影響を排除するために、基準となるGBのバ
ー幅として黒バーと白バーの幅を足し合わせたものを採
用しているのである。以下、バー幅のチェックを行なう
場合には、同様に黒バーと白バーとを足し合わせた値を
用いる。
【0083】なお、当然のことながら、印刷上のにじみ
の影響を考慮する必要がない場合には、GBの一本の黒
バー幅に基づいて第一キャラクタのキャラクタ長チェッ
クを行なっても全く差し支えはない。(4)の場合も
(1)の場合と同様に、CB後端の2本のバー幅Tnと
第一キャラクタの幅Cn+2とを比較し、3×Tn<C
n+2<4×Tnを満たしている場合には第一キャラク
タの後端にあたるバー対してchr−f=1を設定す
る。
の影響を考慮する必要がない場合には、GBの一本の黒
バー幅に基づいて第一キャラクタのキャラクタ長チェッ
クを行なっても全く差し支えはない。(4)の場合も
(1)の場合と同様に、CB後端の2本のバー幅Tnと
第一キャラクタの幅Cn+2とを比較し、3×Tn<C
n+2<4×Tnを満たしている場合には第一キャラク
タの後端にあたるバー対してchr−f=1を設定す
る。
【0084】なお、chr−fフラグが設定されるバー
は(1)の場合と(4)の場合とでは異なっている。
(1)の場合には黒バーに対してchr−fが設定さ
れ、(4)の場合には白バーに対してchr−fが設定
される。これは、EAN−13の場合CBを中心にして
白バーと黒バーとの配列の順序が対称的になっているた
めである。この特徴を利用すれば、第一キャラクタがG
Bに続いて走査されたものなのか、CBに続いて走査さ
れたものなのかを把握することができる。
は(1)の場合と(4)の場合とでは異なっている。
(1)の場合には黒バーに対してchr−fが設定さ
れ、(4)の場合には白バーに対してchr−fが設定
される。これは、EAN−13の場合CBを中心にして
白バーと黒バーとの配列の順序が対称的になっているた
めである。この特徴を利用すれば、第一キャラクタがG
Bに続いて走査されたものなのか、CBに続いて走査さ
れたものなのかを把握することができる。
【0085】(2)は、エンドキャラクタからGBが走
査された場合である。この場合、エンドキャラクタ長チ
ェックが行なわれる。この処理では、エンドキャラクタ
のバー幅Cnと、GBの先頭の2本のバーの幅Tn+4
とが比較の対象となる。この場合には、Cnが3×Tn
+4<Cn<4×Tn+4を満たしているかどうかが判
定される。この条件が満たされた場合には、CBの一部
であるTn+4の後端のバーにchr−l=1がセット
される。’l’lastの’l’でありエンドキャラク
タを示す。
査された場合である。この場合、エンドキャラクタ長チ
ェックが行なわれる。この処理では、エンドキャラクタ
のバー幅Cnと、GBの先頭の2本のバーの幅Tn+4
とが比較の対象となる。この場合には、Cnが3×Tn
+4<Cn<4×Tn+4を満たしているかどうかが判
定される。この条件が満たされた場合には、CBの一部
であるTn+4の後端のバーにchr−l=1がセット
される。’l’lastの’l’でありエンドキャラク
タを示す。
【0086】(3)の場合には、エンドキャラクタ側か
らCB(SCB)が走査された場合にあたる。この場合
にも、(2)と同様の条件にCnが当てはまるかどうか
が確認され、この条件を満たすときTn+4の後端のバ
ーに対してchr−l=1がセットされる。(2)と
(3)とを比較すると、(2)の場合にはchr−lが
白バーに対して設定されるのに対し、(3)の場合には
chr−lは黒バーに対して設定される。これはGBと
CBの構成の相違によるものであるが、これによって、
(1)と(4)との例と同じように、chr−lが付さ
れたバーの色に応じて、エンドキャラクタがGBに隣接
するものなのか、CBに隣接するものなのかを把握する
ことができる。
らCB(SCB)が走査された場合にあたる。この場合
にも、(2)と同様の条件にCnが当てはまるかどうか
が確認され、この条件を満たすときTn+4の後端のバ
ーに対してchr−l=1がセットされる。(2)と
(3)とを比較すると、(2)の場合にはchr−lが
白バーに対して設定されるのに対し、(3)の場合には
chr−lは黒バーに対して設定される。これはGBと
CBの構成の相違によるものであるが、これによって、
(1)と(4)との例と同じように、chr−lが付さ
れたバーの色に応じて、エンドキャラクタがGBに隣接
するものなのか、CBに隣接するものなのかを把握する
ことができる。
【0087】このように、4種類の走査種別は、chr
−l、chr−fの値と、chr−l・chr−fが設
定されたバーの色により区別することが可能となり、バ
ーコードが走査された方向とバーの走査順を認識するこ
とが可能である。図11および図12は、バーコード検
索第1次処理の詳細処理を示したフローチャートであ
る。ここでは、読取データ(カウントデータ)が格納さ
れたバッファを検索して、バーコードデータを検索する
処理が実行される。
−l、chr−fの値と、chr−l・chr−fが設
定されたバーの色により区別することが可能となり、バ
ーコードが走査された方向とバーの走査順を認識するこ
とが可能である。図11および図12は、バーコード検
索第1次処理の詳細処理を示したフローチャートであ
る。ここでは、読取データ(カウントデータ)が格納さ
れたバッファを検索して、バーコードデータを検索する
処理が実行される。
【0088】図13は、カウントデータが格納されたバ
ッファを示す図面である。カウントデータバッファは1
6ビットの幅を持つものとする。このうち、11ビット
はバー幅カウント値を、1ビットはchr−lビット
を、1ビットはchr−fビットをそれぞれ格納する領
域となり、図示縦方向に各々のバー幅に相当するカウン
トデータが格納される。この他の情報としては、黒バー
/白バーの区別をつける情報、ウェーブエラー発生の有
無を示す情報などが空き領域に格納される。
ッファを示す図面である。カウントデータバッファは1
6ビットの幅を持つものとする。このうち、11ビット
はバー幅カウント値を、1ビットはchr−lビット
を、1ビットはchr−fビットをそれぞれ格納する領
域となり、図示縦方向に各々のバー幅に相当するカウン
トデータが格納される。この他の情報としては、黒バー
/白バーの区別をつける情報、ウェーブエラー発生の有
無を示す情報などが空き領域に格納される。
【0089】バーコード検索処理では、カウントデータ
バッファからカウント値を検索し、これに基づいてGB
やCBを検出する処理を実行する。なお、以下の説明に
おいては、特に区別を必要とする場合を除いてCBには
SCBが含まれ、GBはEGB・SGBのいずれの場合
も含むものとする。SGB・EGBとされている場合に
は、走査方向に対してキャラクタに先立って走査された
GBをSGB、キャラクタに続いて走査されたGBをE
GBとする場合もある。
バッファからカウント値を検索し、これに基づいてGB
やCBを検出する処理を実行する。なお、以下の説明に
おいては、特に区別を必要とする場合を除いてCBには
SCBが含まれ、GBはEGB・SGBのいずれの場合
も含むものとする。SGB・EGBとされている場合に
は、走査方向に対してキャラクタに先立って走査された
GBをSGB、キャラクタに続いて走査されたGBをE
GBとする場合もある。
【0090】図11のステップ1では、バッファを検索
して、読取データに対して「ハードウェア簡易検出処
理」の結果得られたchr−lビットあるいはchr−
fビットがオンとなっているかどうかを判断する。これ
らのビットがオンとなっていない場合には、ステップ2
において検索ポイントをインクリメントし、Aに戻り次
データを検索する。
して、読取データに対して「ハードウェア簡易検出処
理」の結果得られたchr−lビットあるいはchr−
fビットがオンとなっているかどうかを判断する。これ
らのビットがオンとなっていない場合には、ステップ2
において検索ポイントをインクリメントし、Aに戻り次
データを検索する。
【0091】一方、chr−lあるいはchr−fビッ
トがオンとなっていた場合には、ステップ3において対
象となっているバーが黒バーであるかどうかが判定され
る。この判定によってバーコードが走査された方向を区
別することができる。つまり、図10に図示されている
ように、GBからキャラクタに向けて走査された場合、
あるいキャラクタからCBに向けて走査された場合に
は、chr−l/chr−fビットがオンとなる対象の
バーは黒バーであり、他の場合は白バーとなるからであ
る。
トがオンとなっていた場合には、ステップ3において対
象となっているバーが黒バーであるかどうかが判定され
る。この判定によってバーコードが走査された方向を区
別することができる。つまり、図10に図示されている
ように、GBからキャラクタに向けて走査された場合、
あるいキャラクタからCBに向けて走査された場合に
は、chr−l/chr−fビットがオンとなる対象の
バーは黒バーであり、他の場合は白バーとなるからであ
る。
【0092】ビットオンの対象となっているバーが黒バ
ーの場合には、GBからキャラクタに向けて走査された
(図14(a)の状態)、あるいはキャラクタからCB
の方向に走査された(図14(b)の状態)ことがわか
り、逆に対象バーが白バーの場合にはキャラクタからG
B、あるいはCBからキャラクタのの方向に走査されて
いることがわかる。
ーの場合には、GBからキャラクタに向けて走査された
(図14(a)の状態)、あるいはキャラクタからCB
の方向に走査された(図14(b)の状態)ことがわか
り、逆に対象バーが白バーの場合にはキャラクタからG
B、あるいはCBからキャラクタのの方向に走査されて
いることがわかる。
【0093】ステップ3で黒バーであることが判定され
た場合には、続いてステップ4でchr−lビットがオ
ンとなっているかどうかが判別される。chr−lビッ
トがオンとなっている場合には、キャラクタからCBの
方向に走査されたことが判る(図示(2)の状態)。こ
のときには、続いてchr−lビットがオンとなってい
るバーがSCBであるかを判定するため、ステップ5で
SCBチェックがOKであるかどうかが判定される。
た場合には、続いてステップ4でchr−lビットがオ
ンとなっているかどうかが判別される。chr−lビッ
トがオンとなっている場合には、キャラクタからCBの
方向に走査されたことが判る(図示(2)の状態)。こ
のときには、続いてchr−lビットがオンとなってい
るバーがSCBであるかを判定するため、ステップ5で
SCBチェックがOKであるかどうかが判定される。
【0094】ここでは、SCBを構成するバー幅チェッ
クが行なわれる。既に述べた通り、SCBは1モジュー
ル長の白バーと黒バーが交互に3本づつ配列されてい
る。従って、バー幅チェックを行なうことによって、そ
のデータがSCBなのか、EAN−13等のCBなのか
を推測することができる。図15は、本実施形態による
SCBチェックの方法を示した図面である。
クが行なわれる。既に述べた通り、SCBは1モジュー
ル長の白バーと黒バーが交互に3本づつ配列されてい
る。従って、バー幅チェックを行なうことによって、そ
のデータがSCBなのか、EAN−13等のCBなのか
を推測することができる。図15は、本実施形態による
SCBチェックの方法を示した図面である。
【0095】SCBチェックの場合にも、バー印刷のに
じみや細りの影響を排除するため、互いに隣接する黒バ
ーと白バーの幅を合わせたバー幅に基づいてバー幅チェ
ックを行なう。図15において、T1〜T5はそれぞれ
隣接する白バーと黒バーの幅を合わせたバー幅となって
いる。単純にバー幅チェックを行なうためには、T1〜
T5の幅が全て同一であるかどうかを確認すればよい。
しかし、曲面に印刷されたバーコードの場合などには、
同一幅のバーであってもバーコード読取装置は、見かけ
上のバー幅が太くなったり細くなったりみえる。またバ
ーコードが歪んで印刷された場合も同様である。そのた
め、SCBのバー幅チェックでは互いに隣接するT1〜
T5のバー幅を比較する場合に、比較されるバー幅が所
定範囲内に収まっていれば同一バー幅を持っているもの
とみなすようにしている。
じみや細りの影響を排除するため、互いに隣接する黒バ
ーと白バーの幅を合わせたバー幅に基づいてバー幅チェ
ックを行なう。図15において、T1〜T5はそれぞれ
隣接する白バーと黒バーの幅を合わせたバー幅となって
いる。単純にバー幅チェックを行なうためには、T1〜
T5の幅が全て同一であるかどうかを確認すればよい。
しかし、曲面に印刷されたバーコードの場合などには、
同一幅のバーであってもバーコード読取装置は、見かけ
上のバー幅が太くなったり細くなったりみえる。またバ
ーコードが歪んで印刷された場合も同様である。そのた
め、SCBのバー幅チェックでは互いに隣接するT1〜
T5のバー幅を比較する場合に、比較されるバー幅が所
定範囲内に収まっていれば同一バー幅を持っているもの
とみなすようにしている。
【0096】本実施形態の場合には、チェック対象のバ
ー(図示左側)のバー幅が基準となるバー(図示右側)
のバー幅の+/−25%の範囲内に入っていることを条
件に、バー幅チェックを行なっている。従って、T1と
T2とを比較する場合には、図15に示されているよう
にT2のバー幅が1.25T1から0.75T1の範囲
に入っていればバーチェックをOKとしている。
ー(図示左側)のバー幅が基準となるバー(図示右側)
のバー幅の+/−25%の範囲内に入っていることを条
件に、バー幅チェックを行なっている。従って、T1と
T2とを比較する場合には、図15に示されているよう
にT2のバー幅が1.25T1から0.75T1の範囲
に入っていればバーチェックをOKとしている。
【0097】同様に、T2とT3、T3とT4、T4と
T5との比較を順次行い、いずれの場合も条件を満たし
ていれば、ステップ5のSCBチェックはOKであると
判断される。ちなみに、図15にはEAN−13などの
CBチェックの手法も図示されている(上段)。CBチ
ェックの場合には、CBを構成する計5本のバー同士の
比較を行なう。 図15の場合には、それぞれ隣接する
黒バーと白バーとのバー幅を合わせたT1〜T4を算出
し、T1とT2、T2とT3、T3とT4との関係を比
較する。
T5との比較を順次行い、いずれの場合も条件を満たし
ていれば、ステップ5のSCBチェックはOKであると
判断される。ちなみに、図15にはEAN−13などの
CBチェックの手法も図示されている(上段)。CBチ
ェックの場合には、CBを構成する計5本のバー同士の
比較を行なう。 図15の場合には、それぞれ隣接する
黒バーと白バーとのバー幅を合わせたT1〜T4を算出
し、T1とT2、T2とT3、T3とT4との関係を比
較する。
【0098】比較は、SCBチェックの場合と同様に一
方の幅が他方の幅の+/−25%以内に収まっているか
否かを判別することにより行なう。ステップ5において
SCBチェックがOKであると判別されることにより、
chr−lがセットされるバーの構成がSCBのものと
同じものであることが確認できたが、このバーが本当に
SCBであるのかどうかについては確認されていない。
例えば図11の(2)の状態では、chr−lが付され
たバーは黒バーであるが、同時に同じバーに対してch
r−fが付されている例が示される。ここには、SCB
と同じ白黒交番のパターンを見いだすことができる。
方の幅が他方の幅の+/−25%以内に収まっているか
否かを判別することにより行なう。ステップ5において
SCBチェックがOKであると判別されることにより、
chr−lがセットされるバーの構成がSCBのものと
同じものであることが確認できたが、このバーが本当に
SCBであるのかどうかについては確認されていない。
例えば図11の(2)の状態では、chr−lが付され
たバーは黒バーであるが、同時に同じバーに対してch
r−fが付されている例が示される。ここには、SCB
と同じ白黒交番のパターンを見いだすことができる。
【0099】図16は、同様に見かけ上SCBが存在す
ると判定される可能性があるバー構成を示す図面であ
る。図16(a)の場合には、白/黒交互に発生する計
6モジュールのパターンが確認されているため、このバ
ーはSCBであると推測することができる。しかし、仮
に図16(b)のように解釈すれば、このバーがEAN
−13などのCBであり、CBに隣接するキャラクタC
7の始めのバーが1モジュール長の黒バーである、と見
ることもできる。
ると判定される可能性があるバー構成を示す図面であ
る。図16(a)の場合には、白/黒交互に発生する計
6モジュールのパターンが確認されているため、このバ
ーはSCBであると推測することができる。しかし、仮
に図16(b)のように解釈すれば、このバーがEAN
−13などのCBであり、CBに隣接するキャラクタC
7の始めのバーが1モジュール長の黒バーである、と見
ることもできる。
【0100】従って、SCBチェックがOKとなっただ
けでは、このバーがSCBであるかどうかを確認するこ
とはできないのである。そのため、構成上はSCBであ
ると判断されたバーが本当にSBであるのかを確認する
必要がある。そこで、SCBチェックがOKとなった場
合には、続いてステップ6においてカウントバッファの
検索ポインタが+7(chr−f、chr−lが付され
たバーから数えた値)の位置に、chr−fビットがオ
ンとなっているかどうかが確認される(図11(3)の
状態)。
けでは、このバーがSCBであるかどうかを確認するこ
とはできないのである。そのため、構成上はSCBであ
ると判断されたバーが本当にSBであるのかを確認する
必要がある。そこで、SCBチェックがOKとなった場
合には、続いてステップ6においてカウントバッファの
検索ポインタが+7(chr−f、chr−lが付され
たバーから数えた値)の位置に、chr−fビットがオ
ンとなっているかどうかが確認される(図11(3)の
状態)。
【0101】この場合、キャラクタからCBに向けて走
査された場合を想定しているため、読み取られたバーが
SCBであるなら、走査方向に隣接するキャラクタは存
在しないはずである。そのため、検索ポインタ+7の位
置でchr−fビットがオンとなることはない。一方、
chr−fがオンとなっている場合には、読み取られた
バーの走査方向に隣接する位置に、キャラクタが存在す
ることになるため、CBの前後にキャラクタが存在する
ことになる。この構成を考えると、読み取られたバーは
UPC/EのSCBではなく、EAN−13等のCBで
ある可能性が高いと判断できる。
査された場合を想定しているため、読み取られたバーが
SCBであるなら、走査方向に隣接するキャラクタは存
在しないはずである。そのため、検索ポインタ+7の位
置でchr−fビットがオンとなることはない。一方、
chr−fがオンとなっている場合には、読み取られた
バーの走査方向に隣接する位置に、キャラクタが存在す
ることになるため、CBの前後にキャラクタが存在する
ことになる。この構成を考えると、読み取られたバーは
UPC/EのSCBではなく、EAN−13等のCBで
ある可能性が高いと判断できる。
【0102】ステップ6でchr−fビットがオンとな
っていない場合には、SCBが検出されたと判断し(ス
テップ7)、走査種類を示すレジスタdecdirec
に4をセットして、Cに移行、第1次検索処理が終了す
る。一方、chr−fビットがオンとなっている場合に
は、Aに処理が移行する。ステップ4でchr−lビッ
トがオンとなっていない場合、あるいはステップ5でS
CBチェックがNGとなった場合には、ステップ8でc
hr−fビットがオンとなっているか否かが判定され
る。
っていない場合には、SCBが検出されたと判断し(ス
テップ7)、走査種類を示すレジスタdecdirec
に4をセットして、Cに移行、第1次検索処理が終了す
る。一方、chr−fビットがオンとなっている場合に
は、Aに処理が移行する。ステップ4でchr−lビッ
トがオンとなっていない場合、あるいはステップ5でS
CBチェックがNGとなった場合には、ステップ8でc
hr−fビットがオンとなっているか否かが判定され
る。
【0103】ステップ8でchr−fビットがオンとな
っている場合(図11(1)の状態)には、読み取られ
たバーがSGBであると判断し(ステップ9)、dec
direcに1をセットした上でCに移行する。一方、
chr−fビットがオンではなかった場合にはエラーと
判断し、Aに移行、再び検索を行なう。ステップ3でビ
ット対象バーが黒バーではないと判定された場合には、
ステップ10(図12)でchr−fビットがオンとな
っているかどうかが判定される。chr−fビットがオ
ンの場合には、走査種別が図10の4のタイプである可
能性が高くなる。そのため、ビットがオンとなっている
キャラクタの前に走査されたデータがCB(EAN−1
3等)であるか否かをチェックするために、CBチェッ
クがOKであるかどうかを判断する(ステップ11)。
っている場合(図11(1)の状態)には、読み取られ
たバーがSGBであると判断し(ステップ9)、dec
direcに1をセットした上でCに移行する。一方、
chr−fビットがオンではなかった場合にはエラーと
判断し、Aに移行、再び検索を行なう。ステップ3でビ
ット対象バーが黒バーではないと判定された場合には、
ステップ10(図12)でchr−fビットがオンとな
っているかどうかが判定される。chr−fビットがオ
ンの場合には、走査種別が図10の4のタイプである可
能性が高くなる。そのため、ビットがオンとなっている
キャラクタの前に走査されたデータがCB(EAN−1
3等)であるか否かをチェックするために、CBチェッ
クがOKであるかどうかを判断する(ステップ11)。
【0104】ここでは、chr−fがオンとなったキャ
ラクタの前に隣接しているバーが5モジュールで構成さ
れているかどうかが判断される。そのための手順は図1
5に図示される方法を用いるが、詳細は既に述べた通り
である。CBチェックOKとされた場合(図12(1)
のものに相当)には、ステップ12でchkreg1=
0×01にセットする。chkregについては、詳細
は後述する。
ラクタの前に隣接しているバーが5モジュールで構成さ
れているかどうかが判断される。そのための手順は図1
5に図示される方法を用いるが、詳細は既に述べた通り
である。CBチェックOKとされた場合(図12(1)
のものに相当)には、ステップ12でchkreg1=
0×01にセットする。chkregについては、詳細
は後述する。
【0105】なお、ステップ10、ステップ11 で い
ずれもNOであった場合には、chkregは0×00
がセットされた状態となっている。ここで、CBチェッ
クがOKとなったとしても、前後の関係を判断しなけれ
ばこれが本当にCBであるかどうかを決定することはで
きないため、この時点ではCBが検出されたかどうかの
判断自体は行なわない。
ずれもNOであった場合には、chkregは0×00
がセットされた状態となっている。ここで、CBチェッ
クがOKとなったとしても、前後の関係を判断しなけれ
ばこれが本当にCBであるかどうかを決定することはで
きないため、この時点ではCBが検出されたかどうかの
判断自体は行なわない。
【0106】次に、ステップ13でchr−lビットが
オンとなっているかどうかが確認される。chr−lビ
ットがオンとなっている場合(図12の(2)に相当)
には走査種別が図10の2の可能性が高いため、chr
−lビットがオンとなったデータがEGBであるかどう
かを確認する必要がある。そこで、ステップ14でEG
Bチェックを行なう。EGBは3モジュールであるた
め、互いに黒バーと白バーとを組み合わせた長さに相当
するT1とT2とを比較し(図10と同様に考えればよ
い)、T2が1.25T1から0.75T2の範囲内に
あればチェックOKと判断する。
オンとなっているかどうかが確認される。chr−lビ
ットがオンとなっている場合(図12の(2)に相当)
には走査種別が図10の2の可能性が高いため、chr
−lビットがオンとなったデータがEGBであるかどう
かを確認する必要がある。そこで、ステップ14でEG
Bチェックを行なう。EGBは3モジュールであるた
め、互いに黒バーと白バーとを組み合わせた長さに相当
するT1とT2とを比較し(図10と同様に考えればよ
い)、T2が1.25T1から0.75T2の範囲内に
あればチェックOKと判断する。
【0107】EGBチェックがOKとなった場合には、
ステップ15chkreg1=0×02がセットされ
る。なお、ステップ12で0×01がセットされていた
場合には、chkreg1の内容は両者が足しあわされ
た0×03となる。EGBチェックがNGであった場合
には、chkreg1の値は保持されたままとなる。続
いて、ステップ16、18並びに20にてchkreg
の値が確認される。chkreg=0×01の場合に
は、CBが検出されたと判断し(ステップ17)、de
cdirecに3をセットしてCに移行する。
ステップ15chkreg1=0×02がセットされ
る。なお、ステップ12で0×01がセットされていた
場合には、chkreg1の内容は両者が足しあわされ
た0×03となる。EGBチェックがNGであった場合
には、chkreg1の値は保持されたままとなる。続
いて、ステップ16、18並びに20にてchkreg
の値が確認される。chkreg=0×01の場合に
は、CBが検出されたと判断し(ステップ17)、de
cdirecに3をセットしてCに移行する。
【0108】chkregの値が0×02の場合には、
EGBが検出されたと判断し(ステップ19)、dec
direcに2をセットしてCに移行する。いずれの条
件も満たしていない場合には、CB、EGBいずれも見
かけ上の構成が正しいが、実際にCB、EGBであるこ
とが確認されていない状態となっている。ここで、ch
kregに0×03がセットされている場合には、例え
ば図12の(3)・図17 のような状態となっている
ことが推測される。
EGBが検出されたと判断し(ステップ19)、dec
direcに2をセットしてCに移行する。いずれの条
件も満たしていない場合には、CB、EGBいずれも見
かけ上の構成が正しいが、実際にCB、EGBであるこ
とが確認されていない状態となっている。ここで、ch
kregに0×03がセットされている場合には、例え
ば図12の(3)・図17 のような状態となっている
ことが推測される。
【0109】図17の中で、(a)はステップ10〜1
2に基づいた仮の判断結果を、(b)はステップ13〜
15に基づいた仮の判断結果をそれぞれ示す。(a)の
場合について説明すると、判断された内容から見て、読
み取られたバーコードではCBにC7が隣接しており、
C7に隣接する1モジュールの黒バーはC8の先頭バー
であると考えることができる。
2に基づいた仮の判断結果を、(b)はステップ13〜
15に基づいた仮の判断結果をそれぞれ示す。(a)の
場合について説明すると、判断された内容から見て、読
み取られたバーコードではCBにC7が隣接しており、
C7に隣接する1モジュールの黒バーはC8の先頭バー
であると考えることができる。
【0110】一方、(b)の場合を考えると、EGBの
前にC12が読み取られていると考えることができる。
この場合、(a)でCBと認識されたバーは、(b)で
はキャラクタC11の一部を構成するバーと解釈でき
る。両者を比較すると、(a)のCB後端の2本のバー
とC7の先頭の2本のバーとが(b)のC12を構成し
ており、(a)のC7の後端の2本のバーとC8の先頭
の黒バーとが(b)のEGBを構成していると解釈でき
る。
前にC12が読み取られていると考えることができる。
この場合、(a)でCBと認識されたバーは、(b)で
はキャラクタC11の一部を構成するバーと解釈でき
る。両者を比較すると、(a)のCB後端の2本のバー
とC7の先頭の2本のバーとが(b)のC12を構成し
ており、(a)のC7の後端の2本のバーとC8の先頭
の黒バーとが(b)のEGBを構成していると解釈でき
る。
【0111】そのため、図17図示のバー(1)には、
chr−l、chr−fが共にオンとなってしまう。そ
こで、ステップ20にてchkreg=3と判定された
場合には、続いてステップ21において、C11とC1
2とのキャラクタ長がチェックされる。ここでは、図1
7(b)のキャラクタC11、C12がともに7モジュ
ールで構成されているかどうかが判断される。
chr−l、chr−fが共にオンとなってしまう。そ
こで、ステップ20にてchkreg=3と判定された
場合には、続いてステップ21において、C11とC1
2とのキャラクタ長がチェックされる。ここでは、図1
7(b)のキャラクタC11、C12がともに7モジュ
ールで構成されているかどうかが判断される。
【0112】ここで、キャラクタ長チェックがNGとな
った場合には、図17(b)ではEGBと判断されたバ
ーは、実は(a)のC8の一部であると判断できるた
め、CBが検出されたと判断して(ステップ12)de
cdirecを3にセットしてCに移行する。一方、キ
ャラクタ長チェックがOKとなった場合には、図17の
(a)とも(b)とも判断がつかないため、Aに移行し
て次データの検索を行なう。次データの検索を行なうこ
とによって、さらにこれに続くデータの構成を判断する
ことができるため、ステップ21で判断保留となってい
た図17 のバーが(a)のものなのか(b)のものな
のかを判断することは可能である。
った場合には、図17(b)ではEGBと判断されたバ
ーは、実は(a)のC8の一部であると判断できるた
め、CBが検出されたと判断して(ステップ12)de
cdirecを3にセットしてCに移行する。一方、キ
ャラクタ長チェックがOKとなった場合には、図17の
(a)とも(b)とも判断がつかないため、Aに移行し
て次データの検索を行なう。次データの検索を行なうこ
とによって、さらにこれに続くデータの構成を判断する
ことができるため、ステップ21で判断保留となってい
た図17 のバーが(a)のものなのか(b)のものな
のかを判断することは可能である。
【0113】これによって、バーコード検索第一次処理
が終了する。図18は、decdirecフラグについ
て説明する図面である。decdirecは1〜4の値
を取るものであり、図10に図示された走査種別を示す
と共に、どの特徴点(CB、GB等)が検出されたかを
示すものである。decdirec=1の場合には、S
GBが検出されたことを示す。同様にdecdirec
=2の場合にはEGBを、decdirec=3の場合
にはCBを、decdirec=4の場合にはSCBを
検出したことをそれぞれ示している。第一次検索処理の
結果、このdecdirecの値が出力されることにな
る。
が終了する。図18は、decdirecフラグについ
て説明する図面である。decdirecは1〜4の値
を取るものであり、図10に図示された走査種別を示す
と共に、どの特徴点(CB、GB等)が検出されたかを
示すものである。decdirec=1の場合には、S
GBが検出されたことを示す。同様にdecdirec
=2の場合にはEGBを、decdirec=3の場合
にはCBを、decdirec=4の場合にはSCBを
検出したことをそれぞれ示している。第一次検索処理の
結果、このdecdirecの値が出力されることにな
る。
【0114】図19乃至図22はバーコード検索第二次
処理の詳細を示すフローチャートである。ここでは、バ
ーコード検索第一次処理の結果を踏まえて、特に図10
の走査種別3の判断が正しいものであるのかどうかを確
認する処理が行なわれる。走査種別3の場合には、SC
Bと解釈されたデータが本当にSCBであるかどうかを
確認しなければならないからである。
処理の詳細を示すフローチャートである。ここでは、バ
ーコード検索第一次処理の結果を踏まえて、特に図10
の走査種別3の判断が正しいものであるのかどうかを確
認する処理が行なわれる。走査種別3の場合には、SC
Bと解釈されたデータが本当にSCBであるかどうかを
確認しなければならないからである。
【0115】ステップ1ではまず、decdirecの
値を判別し、SCBが検出されているかどうかが判断さ
れる(つまりdecdirec=4)。SCBが検出さ
れていないと判定された場合にはBに移行する。一方、
SCBが検出されていると判断された場合には、ステッ
プ2において、SCBの前に検出されたデータ(エンド
キャラクタ・図19(1)の場合C6に相当)のキャラ
クタ長がチェックされる。ここでは、C6が7モジュー
ル幅をもっているかどうかが確認される。
値を判別し、SCBが検出されているかどうかが判断さ
れる(つまりdecdirec=4)。SCBが検出さ
れていないと判定された場合にはBに移行する。一方、
SCBが検出されていると判断された場合には、ステッ
プ2において、SCBの前に検出されたデータ(エンド
キャラクタ・図19(1)の場合C6に相当)のキャラ
クタ長がチェックされる。ここでは、C6が7モジュー
ル幅をもっているかどうかが確認される。
【0116】ステップ2においてC6が7モジュールで
はないと判定された場合には、処理はEに移行する。一
方、ステップ2においてエンドキャラクタ長チェックが
OKと判断された場合には、ステップ3において有効キ
ャラクタ数カウンタがクリアされる(juncnt=
0)。有効キャラクタ数カウンタは、キャラクタ長チェ
ックがOKとなったキャラクタ数、特に連続して発生し
たキャラクタ長チェックOKのキャラクタ数をカウント
するものである。「jun」は順方向を示しており、走
査方向と同じ方向であることをを指す。この場合には、
juncntのカウント値は、SCBの前に走査された
有効キャラクタの数とする。
はないと判定された場合には、処理はEに移行する。一
方、ステップ2においてエンドキャラクタ長チェックが
OKと判断された場合には、ステップ3において有効キ
ャラクタ数カウンタがクリアされる(juncnt=
0)。有効キャラクタ数カウンタは、キャラクタ長チェ
ックがOKとなったキャラクタ数、特に連続して発生し
たキャラクタ長チェックOKのキャラクタ数をカウント
するものである。「jun」は順方向を示しており、走
査方向と同じ方向であることをを指す。この場合には、
juncntのカウント値は、SCBの前に走査された
有効キャラクタの数とする。
【0117】有効キャラクタ数カウンタがクリアされた
後、ステップ4にて次キャラクタのキャラクタ長、この
場合にはキャラクタC6の更に前に当たるC5のキャラ
クタ長が読みだされ、隣接キャラクタ長チェックが行な
われる(ステップ5)。ここでは、C6のキャラクタ長
とC5のキャラクタ長とが比較され、C6キャラクタ長
に対してC5のキャラクタ長が所定の範囲内、例えば+
/−25%内の入っていれば隣接キャラクタ長チェック
がOKであると判断すればよい。
後、ステップ4にて次キャラクタのキャラクタ長、この
場合にはキャラクタC6の更に前に当たるC5のキャラ
クタ長が読みだされ、隣接キャラクタ長チェックが行な
われる(ステップ5)。ここでは、C6のキャラクタ長
とC5のキャラクタ長とが比較され、C6キャラクタ長
に対してC5のキャラクタ長が所定の範囲内、例えば+
/−25%内の入っていれば隣接キャラクタ長チェック
がOKであると判断すればよい。
【0118】このような隣接キャラクタ長チェックがO
Kとなった場合には、ステップ7で有効キャラクタ数カ
ウンタ(juncnt)をインクリメントする。続い
て、UPC/Eの片側ブロックのキャラクタ数に相当す
る6キャラクタ分のキャラクタ長チェックが終了したか
どうかを、juncnt値に基づいて判断する(ステッ
プ8)。
Kとなった場合には、ステップ7で有効キャラクタ数カ
ウンタ(juncnt)をインクリメントする。続い
て、UPC/Eの片側ブロックのキャラクタ数に相当す
る6キャラクタ分のキャラクタ長チェックが終了したか
どうかを、juncnt値に基づいて判断する(ステッ
プ8)。
【0119】6キャラクタまでチェックが完了していな
いと判断された場合には、Aに処理を移行してステップ
4に戻り、順次キャラクタ長を読みだして隣接キャラク
タ長チェックを行なう。一方、6キャラクタ分のチェッ
クが完了した場合には、Dに移行する。また、ステップ
5で隣接キャラクタ長チェックがNGとなった場合に
は、それまでの有効キャラクタ数が3キャラクタ以上で
あるか否かを判定する(ステップ6)。ここでは、有効
キャラクタ数が3キャラクタ以上連続している必要があ
るものとする。3キャラクタ以上有効キャラクタ数が連
続していた場合には、読取OKと判断してDに移行す
る。一方、3キャラクタ以上の有効キャラクタ数が連続
していなかった場合には、読取NGと判断してEに移行
する。
いと判断された場合には、Aに処理を移行してステップ
4に戻り、順次キャラクタ長を読みだして隣接キャラク
タ長チェックを行なう。一方、6キャラクタ分のチェッ
クが完了した場合には、Dに移行する。また、ステップ
5で隣接キャラクタ長チェックがNGとなった場合に
は、それまでの有効キャラクタ数が3キャラクタ以上で
あるか否かを判定する(ステップ6)。ここでは、有効
キャラクタ数が3キャラクタ以上連続している必要があ
るものとする。3キャラクタ以上有効キャラクタ数が連
続していた場合には、読取OKと判断してDに移行す
る。一方、3キャラクタ以上の有効キャラクタ数が連続
していなかった場合には、読取NGと判断してEに移行
する。
【0120】ステップ1でSCBが検出されなかったと
判断された場合には、図20ステップ9でCB(EAN
−13)が検出されたか、つまりdecdirec=3
かどうかが判定される。ここで、CBが検出されていな
いと判定された場合には、SGBあるいはEGBが検出
されたかどうかを判断し、更に有効キャラクタ検出処理
が行なわれる。これは、これまでのバーコード処理に適
用されていた技術を流用することができる。
判断された場合には、図20ステップ9でCB(EAN
−13)が検出されたか、つまりdecdirec=3
かどうかが判定される。ここで、CBが検出されていな
いと判定された場合には、SGBあるいはEGBが検出
されたかどうかを判断し、更に有効キャラクタ検出処理
が行なわれる。これは、これまでのバーコード処理に適
用されていた技術を流用することができる。
【0121】一方、ステップ9でCBが検出された場合
でも、既に述べた通りバーコードの走査のされ方によっ
てはこれが見かけ上のものに過ぎず、例えばUPC/E
のSCBの2本の黒バーを走査しただけのものである可
能性も残る(図20(1))。そのため、検出されたバ
ーがEAN−13等のCBであることを確認するため
に、以下の処理を行なう。
でも、既に述べた通りバーコードの走査のされ方によっ
てはこれが見かけ上のものに過ぎず、例えばUPC/E
のSCBの2本の黒バーを走査しただけのものである可
能性も残る(図20(1))。そのため、検出されたバ
ーがEAN−13等のCBであることを確認するため
に、以下の処理を行なう。
【0122】ステップ10では、CB(あるいはSC
B)に続くキャラクタ長(第一キャラクタ長)のチェッ
クを行なう。ここでは、第一キャラクタが7モジュール
で構成されているかどうかを判定する。キャラクタ長チ
ェックがNGの場合にはEに移行する。キャラクタ長チ
ェックがOKであった場合には、順方向有効キャラクタ
数カウンタ(juncnt)にカウンタ値1をセットす
る(ステップ11)。続いて、CBとされたバーがSC
Bであるかどうかを確認するために、ステップ12でS
CBチェックOKか否かを確認する。ここでは、確認の
対象となっているバーがSCBと同じく6モジュールの
構成をもっているかどうかが確認される。SCBチェッ
クがOKとなった場合には、SCBチェックOKフラグ
(scbflg)に1をセットする(ステップ13)。
B)に続くキャラクタ長(第一キャラクタ長)のチェッ
クを行なう。ここでは、第一キャラクタが7モジュール
で構成されているかどうかを判定する。キャラクタ長チ
ェックがNGの場合にはEに移行する。キャラクタ長チ
ェックがOKであった場合には、順方向有効キャラクタ
数カウンタ(juncnt)にカウンタ値1をセットす
る(ステップ11)。続いて、CBとされたバーがSC
Bであるかどうかを確認するために、ステップ12でS
CBチェックOKか否かを確認する。ここでは、確認の
対象となっているバーがSCBと同じく6モジュールの
構成をもっているかどうかが確認される。SCBチェッ
クがOKとなった場合には、SCBチェックOKフラグ
(scbflg)に1をセットする(ステップ13)。
【0123】続いて、ステップ14で逆方向有効キャラ
クタ数カウンタをクリアする(gkucnt=0)。
「gku」は逆方向を示し、走査方向とは逆の方向を指
している。逆方向有効キャラクタ数カウンタは、CB/
SCBに続いて走査された有効キャラクタ数をカウント
するものである。ステップ14に続き、ステップ15で
エンドキャラクタ長(図 20(2)のキャラクタ長C
6に相当)のチェックが行なわれる。ここで、エンドキ
ャラクタ長がOKとされた場合には逆方向有効キャラク
タ数カウンタにカウント値1をセットする(ステップ1
6)。なお、順方向及び逆方向に有効キャラクタが検出
されたということは、CBとされたバーの前後にキャラ
クタが存在することを意味するため、このバーはUPC
/EのSCBである可能性よりもEAN−13のCBで
ある可能性の方が高いことが判る。
クタ数カウンタをクリアする(gkucnt=0)。
「gku」は逆方向を示し、走査方向とは逆の方向を指
している。逆方向有効キャラクタ数カウンタは、CB/
SCBに続いて走査された有効キャラクタ数をカウント
するものである。ステップ14に続き、ステップ15で
エンドキャラクタ長(図 20(2)のキャラクタ長C
6に相当)のチェックが行なわれる。ここで、エンドキ
ャラクタ長がOKとされた場合には逆方向有効キャラク
タ数カウンタにカウント値1をセットする(ステップ1
6)。なお、順方向及び逆方向に有効キャラクタが検出
されたということは、CBとされたバーの前後にキャラ
クタが存在することを意味するため、このバーはUPC
/EのSCBである可能性よりもEAN−13のCBで
ある可能性の方が高いことが判る。
【0124】次いでステップ17にて次キャラクタ長
(C6に隣接するC5に相当)を読みだし、隣接キャラ
クタ長チェックが行なわれる(ステップ18)。これ
は、順方向/逆方向の違いはあるもののと、ステップ5
で示したものと同じ処理である。隣接キャラクタ長がO
Kとなった場合には、逆方向有効キャラクタ数カウンタ
をインクリメントする(ステップ19)。こうして、連
続して6キャラクタの隣接キャラクタ長チェックが完了
するまで、あるいは途中で隣接キャラクタ長チェックが
NGとなるまで、順次キャラクタ長チェックが行なわれ
る。
(C6に隣接するC5に相当)を読みだし、隣接キャラ
クタ長チェックが行なわれる(ステップ18)。これ
は、順方向/逆方向の違いはあるもののと、ステップ5
で示したものと同じ処理である。隣接キャラクタ長がO
Kとなった場合には、逆方向有効キャラクタ数カウンタ
をインクリメントする(ステップ19)。こうして、連
続して6キャラクタの隣接キャラクタ長チェックが完了
するまで、あるいは途中で隣接キャラクタ長チェックが
NGとなるまで、順次キャラクタ長チェックが行なわれ
る。
【0125】一方、隣接キャラクタ長チェックがNGと
なった場合には、ステップ21で順方向の次キャラクタ
長を読みだして、隣接キャラクタ長チェックを行なう
(ステップ22)。そして、その結果に応じて順方向有
効キャラクタ数カウンタをインクリメントし(ステップ
23)、6キャラクタまで終了するまで、あるいは途中
で隣接キャラクタ長チェックがNGとなるまで、隣接キ
ャラクタ長チェックが行なわれる。
なった場合には、ステップ21で順方向の次キャラクタ
長を読みだして、隣接キャラクタ長チェックを行なう
(ステップ22)。そして、その結果に応じて順方向有
効キャラクタ数カウンタをインクリメントし(ステップ
23)、6キャラクタまで終了するまで、あるいは途中
で隣接キャラクタ長チェックがNGとなるまで、隣接キ
ャラクタ長チェックが行なわれる。
【0126】6キャラクタ分チェックが完了した場合、
あるいは途中で隣接キャラクタ長チェックがNGとなっ
た場合には、Cに移行する。図21ステップ25におい
て、juncnt=0で且つgkucnt<=2、ある
いはjuncnt<=2で且つgkucnt=0である
か否かが判定される。この条件を満たさない場合には、
Eに移行して、有効キャラクタが未検出であると判断
し、処理を終了する。
あるいは途中で隣接キャラクタ長チェックがNGとなっ
た場合には、Cに移行する。図21ステップ25におい
て、juncnt=0で且つgkucnt<=2、ある
いはjuncnt<=2で且つgkucnt=0である
か否かが判定される。この条件を満たさない場合には、
Eに移行して、有効キャラクタが未検出であると判断
し、処理を終了する。
【0127】一方、ステップ25の条件が満たされた場
合には、ステップ26において、逆方向に有効キャラク
タがあるかどうか(つまりgkucnt>0)が判定さ
れる。逆方向に有効キャラクタがない場合には、Fに移
行する。ステップ26の条件を満たした場合には、続い
て逆方向の有効キャラクタ数が6キャラクタか否かが判
定される(ステップ27)。逆方向の有効キャラクタ数
が6キャラクタ未満の場合にはFに移行する。
合には、ステップ26において、逆方向に有効キャラク
タがあるかどうか(つまりgkucnt>0)が判定さ
れる。逆方向に有効キャラクタがない場合には、Fに移
行する。ステップ26の条件を満たした場合には、続い
て逆方向の有効キャラクタ数が6キャラクタか否かが判
定される(ステップ27)。逆方向の有効キャラクタ数
が6キャラクタ未満の場合にはFに移行する。
【0128】逆方向の有効キャラクタ数が6キャラクタ
の場合には、続いて順方向の有効キャラクタ数が6キャ
ラクタか否かが判定される(ステップ28)。順方向の
キャラクタ数が6キャラクタの場合には、逆方向と合わ
せて12キャラクタ分の有効キャラクタが存在するた
め、UPC/Aが通しで(図中「一気通貫」と表現)読
み取られたことになる。そこで、ステップ29で一気通
貫データが検出されたと判断して、Dに移行する。
の場合には、続いて順方向の有効キャラクタ数が6キャ
ラクタか否かが判定される(ステップ28)。順方向の
キャラクタ数が6キャラクタの場合には、逆方向と合わ
せて12キャラクタ分の有効キャラクタが存在するた
め、UPC/Aが通しで(図中「一気通貫」と表現)読
み取られたことになる。そこで、ステップ29で一気通
貫データが検出されたと判断して、Dに移行する。
【0129】一方、逆方向の有効キャラクタ数が6キャ
ラクタではあるが、順方向の有効キャラクタ数が6キャ
ラクタに満たない場合には、EAN−13の6桁の片側
ブロック(逆方向側)が検出されたと判断して、Dに移
行する(ステップ30)。また、ステップ25あるいは
ステップ27での判断がNOと判定された場合には、順
方向の有効キャラクタ数が4かあるい6であるかどうか
を判定する(ステップ31)。続いて、順方向の有効キ
ャラクタ数が4/6の場合には、ステップ32でエンド
キャラクタ長がOKであるかどうかを判定する。エンド
キャラクタ長チェックがOKの場合には更に、ステップ
33でエンドキャラクタの外側にあるエンドマージンの
長さがOKであるかどうかを判定する。エンドマージン
の長さは規格に則った長さがあるかどうかを確認するこ
とでチェックされる。
ラクタではあるが、順方向の有効キャラクタ数が6キャ
ラクタに満たない場合には、EAN−13の6桁の片側
ブロック(逆方向側)が検出されたと判断して、Dに移
行する(ステップ30)。また、ステップ25あるいは
ステップ27での判断がNOと判定された場合には、順
方向の有効キャラクタ数が4かあるい6であるかどうか
を判定する(ステップ31)。続いて、順方向の有効キ
ャラクタ数が4/6の場合には、ステップ32でエンド
キャラクタ長がOKであるかどうかを判定する。エンド
キャラクタ長チェックがOKの場合には更に、ステップ
33でエンドキャラクタの外側にあるエンドマージンの
長さがOKであるかどうかを判定する。エンドマージン
の長さは規格に則った長さがあるかどうかを確認するこ
とでチェックされる。
【0130】この結果がOKであった場合には、EAN
−13、EAN−8あるいはUPC/EのEGB(走査
方向を基準に見た場合、走査方向の終端部分にあるGB
の意味)が検出されたと判断し(ステップ34)、EG
B検出フラグをオンとしてGに移行する。ステップ31
〜ステップ33の判定結果が全てNOであった場合にも
Gに移行する。
−13、EAN−8あるいはUPC/EのEGB(走査
方向を基準に見た場合、走査方向の終端部分にあるGB
の意味)が検出されたと判断し(ステップ34)、EG
B検出フラグをオンとしてGに移行する。ステップ31
〜ステップ33の判定結果が全てNOであった場合にも
Gに移行する。
【0131】これらの判断に続いて、図22ステップ3
5では逆方向の有効キャラクタ数が0であるか否かが判
定される。逆方向の有効キャラクタ数が1以上の場合に
はHに移行する。一方、逆方向の有効キャラクタ数が0
の場合には、順方向にはキャラクタがあるが逆方向には
キャラクタがないことため、そのバーコードはUPC/
Eである可能性がでてくる。そこで、ステップ36にて
ガードバー検出フラグ(ステップ34のもの)がオンと
なっているか否かが判定される。ガードバー検出フラグ
がオンとなっている場合には、このバーコードはEAN
−13等の片ブロックであると判断され、Dに移行して
有効キャラクタが検出されたと判断、処理を終了する。
5では逆方向の有効キャラクタ数が0であるか否かが判
定される。逆方向の有効キャラクタ数が1以上の場合に
はHに移行する。一方、逆方向の有効キャラクタ数が0
の場合には、順方向にはキャラクタがあるが逆方向には
キャラクタがないことため、そのバーコードはUPC/
Eである可能性がでてくる。そこで、ステップ36にて
ガードバー検出フラグ(ステップ34のもの)がオンと
なっているか否かが判定される。ガードバー検出フラグ
がオンとなっている場合には、このバーコードはEAN
−13等の片ブロックであると判断され、Dに移行して
有効キャラクタが検出されたと判断、処理を終了する。
【0132】一方、ガードバー検出フラグがオフの場合
には、続いてステップ37にてSCBチェックOKフラ
グがオンとなっているかどうかが判定される。SCBチ
ェックOKフラグがオンとなっている場合には、バーコ
ードがUPC/Eであると判断することができるが、デ
ータの正当性を判断するために、ステップ38で順方向
の有効キャラクタ数が3キャラクタ以上であるかどうか
が判定される。なお、この有効キャラクタ数は任意の数
字でよい。キャラクタ数が多ければ読取結果の正当性を
高めることができるが、読取成功となる確率は低くな
る。一方、キャラクタ数を減らせば、条件が低く設定さ
れるため読取成功と判断される確率は高くなるが、その
判断が誤りとされる可能性も高くなる。
には、続いてステップ37にてSCBチェックOKフラ
グがオンとなっているかどうかが判定される。SCBチ
ェックOKフラグがオンとなっている場合には、バーコ
ードがUPC/Eであると判断することができるが、デ
ータの正当性を判断するために、ステップ38で順方向
の有効キャラクタ数が3キャラクタ以上であるかどうか
が判定される。なお、この有効キャラクタ数は任意の数
字でよい。キャラクタ数が多ければ読取結果の正当性を
高めることができるが、読取成功となる確率は低くな
る。一方、キャラクタ数を減らせば、条件が低く設定さ
れるため読取成功と判断される確率は高くなるが、その
判断が誤りとされる可能性も高くなる。
【0133】逆方向の有効キャラクタ数が3キャラクタ
以上であった場合には、ステップ39で逆SCBが検出
されたと判断する。これはつまり、SCBが走査方向の
終端で検出されたことを意味する。そして、decdi
recに5を設定し、Dに移行する。また、ステップ3
5で逆方向有効キャラクタ数が0ではないと判定された
場合には、順方向の有効キャラクタ数が6であるかどう
かが判定される(ステップ40)。順方向の有効キャラ
クタ数が6である場合には、更にEGB検出フラグがオ
ンとなっているかどうかが確認される(ステップ4
1)。確認結果がNOの場合には、CBからEGBへ走
査されたEAN−13の片ブロックが検出されたと判断
し、Dに移行する(ステップ42)。
以上であった場合には、ステップ39で逆SCBが検出
されたと判断する。これはつまり、SCBが走査方向の
終端で検出されたことを意味する。そして、decdi
recに5を設定し、Dに移行する。また、ステップ3
5で逆方向有効キャラクタ数が0ではないと判定された
場合には、順方向の有効キャラクタ数が6であるかどう
かが判定される(ステップ40)。順方向の有効キャラ
クタ数が6である場合には、更にEGB検出フラグがオ
ンとなっているかどうかが確認される(ステップ4
1)。確認結果がNOの場合には、CBからEGBへ走
査されたEAN−13の片ブロックが検出されたと判断
し、Dに移行する(ステップ42)。
【0134】一方、ステップ40で順方向の有効キャラ
クタが6ではないと判定された場合には、ステップ31
の条件から考えて有効キャラクタ数は4である。そのた
め、検出されたバーコードはEAN−8の片ブロックで
あると判定される。また、ステップ41でEGB検出フ
ラグがオンとなっている場合には、CBは走査されたが
GBが走査されていない状態であるが、片ブロックを構
成するキャラクタは全て有効であると判定することがで
きる。
クタが6ではないと判定された場合には、ステップ31
の条件から考えて有効キャラクタ数は4である。そのた
め、検出されたバーコードはEAN−8の片ブロックで
あると判定される。また、ステップ41でEGB検出フ
ラグがオンとなっている場合には、CBは走査されたが
GBが走査されていない状態であるが、片ブロックを構
成するキャラクタは全て有効であると判定することがで
きる。
【0135】図23は、検索第二次処理の出力結果をま
とめた図面である。SGBを検出した後に有効キャラク
タが算出れさた場合には、decdirecフラグは1
(図中01)となり、juncntのカウンタ値は左ブ
ロックの有効キャラクタ数(3〜6)を、gkucnt
のカウント値は右ブロックの有効キャラクタ数(0〜
6)を、それぞれ示している。
とめた図面である。SGBを検出した後に有効キャラク
タが算出れさた場合には、decdirecフラグは1
(図中01)となり、juncntのカウンタ値は左ブ
ロックの有効キャラクタ数(3〜6)を、gkucnt
のカウント値は右ブロックの有効キャラクタ数(0〜
6)を、それぞれ示している。
【0136】EGBが検出された後に有効キャラクタが
算出された場合には、decdirecフラグは2(0
2)となり、juncntカウント値(有効キャラクタ
数)は3〜6となる。CBが検出さた後に有効キャラク
タが算出された場合には、decdirecフラグは3
(03)となり、juncntのカウント値は右ブロッ
クの有効キャラクタ数を、gkucntのカウント値は
左ブロックの有効キャラクタ数をそれぞれ示している。
算出された場合には、decdirecフラグは2(0
2)となり、juncntカウント値(有効キャラクタ
数)は3〜6となる。CBが検出さた後に有効キャラク
タが算出された場合には、decdirecフラグは3
(03)となり、juncntのカウント値は右ブロッ
クの有効キャラクタ数を、gkucntのカウント値は
左ブロックの有効キャラクタ数をそれぞれ示している。
【0137】順方向に走査された場合でSCBが検出さ
れた後に有効キャラクタが算出された場合には、dec
direcフラグは4(04)、juncntのカウン
ト値は有効キャラクタ数(3〜6)を示す。逆方向の走
査された場合で、SCBが検出された後に有効キャラク
タ数が算出された場合には、decdirecフラグは
5(05)となり、juncntは有効キャラクタ数
(3〜6)を示す。
れた後に有効キャラクタが算出された場合には、dec
direcフラグは4(04)、juncntのカウン
ト値は有効キャラクタ数(3〜6)を示す。逆方向の走
査された場合で、SCBが検出された後に有効キャラク
タ数が算出された場合には、decdirecフラグは
5(05)となり、juncntは有効キャラクタ数
(3〜6)を示す。
【0138】図24乃至図29は、復調処理の詳細を示
すフローチャートである。バーコードの復調処理は、第
二次検索処理の結果有効とされたバーコードデータに対
して行なわれるものであり、バーコードの一部分のみが
走査された場合であっても有効であると判定された限り
は復調処理が施される。復調処理を行なうことによっ
て、各キャラクタが表す数値情報を得ることができる。
すフローチャートである。バーコードの復調処理は、第
二次検索処理の結果有効とされたバーコードデータに対
して行なわれるものであり、バーコードの一部分のみが
走査された場合であっても有効であると判定された限り
は復調処理が施される。復調処理を行なうことによっ
て、各キャラクタが表す数値情報を得ることができる。
【0139】復調処理のステップ1では、それぞれのキ
ャラクタに対して復調処理が施される。UPC系のバー
コードでは、白バー/黒バーのモジュール数に応じて0
〜9の数値が割り当てられている。また、ODD構成
(黒バーの合計モジュール数が奇数)のキャラクタと、
EVEN構成(黒バーの合計モジュール数が偶数)のキ
ャラクタが混在しているため、キャラクタの組合せは2
0通りとなる。
ャラクタに対して復調処理が施される。UPC系のバー
コードでは、白バー/黒バーのモジュール数に応じて0
〜9の数値が割り当てられている。また、ODD構成
(黒バーの合計モジュール数が奇数)のキャラクタと、
EVEN構成(黒バーの合計モジュール数が偶数)のキ
ャラクタが混在しているため、キャラクタの組合せは2
0通りとなる。
【0140】バーコードの復調方法は各種のものが知ら
れているが、既に述べたバーコードの印刷上のにじみ・
細りの影響をできる限り排除するために、隣接する白バ
ー/黒バーのバー幅を合わせた長さ(δディスタンスと
呼ばれる)に基づいて復調を行なう方法が知られている
(図30)。この方法は、既に広く知られた方法であ
る。この場合には、δディスタンス・バー幅に基づいて
図31a、bに図示するテーブルを参照し、これにより
復調結果を得る。
れているが、既に述べたバーコードの印刷上のにじみ・
細りの影響をできる限り排除するために、隣接する白バ
ー/黒バーのバー幅を合わせた長さ(δディスタンスと
呼ばれる)に基づいて復調を行なう方法が知られている
(図30)。この方法は、既に広く知られた方法であ
る。この場合には、δディスタンス・バー幅に基づいて
図31a、bに図示するテーブルを参照し、これにより
復調結果を得る。
【0141】図31aの場合には、図30に図示される
1キャラクタのT01のモジュール数とT02のモジュ
ール数と、その場合のキャラクタの数値との関係を示し
たものである。ここで’E’はEVEN構成のキャラク
タを、’O’はODD構成のキャラクタを示している。
このテーブルを参照することで殆どのキャラクタの復調
を行なうことができるが、E2とE8のようにT01、
T02のモジュール数が一緒でも別の数値を示す場合が
ある。これは、数値が20通り設定されているのに対
し、T01、T02ともに2〜4モジュールという条件
があり、これらの組合せは16通りしかないために起こ
る。
1キャラクタのT01のモジュール数とT02のモジュ
ール数と、その場合のキャラクタの数値との関係を示し
たものである。ここで’E’はEVEN構成のキャラク
タを、’O’はODD構成のキャラクタを示している。
このテーブルを参照することで殆どのキャラクタの復調
を行なうことができるが、E2とE8のようにT01、
T02のモジュール数が一緒でも別の数値を示す場合が
ある。これは、数値が20通り設定されているのに対
し、T01、T02ともに2〜4モジュールという条件
があり、これらの組合せは16通りしかないために起こ
る。
【0142】従って、上記の図31aのテーブルからは
キャラクタを確定できない8種類のキャラクタについて
は、それぞれのキャラクタを構成する黒バーB1、B3
の幅に基づいて図31bのテーブルを参照する。図31
aのテーブルの条件と図31bのテーブルの条件とを合
わせて考えることによって、これら8種類のキャラクタ
の復調処理も行なうことができる。
キャラクタを確定できない8種類のキャラクタについて
は、それぞれのキャラクタを構成する黒バーB1、B3
の幅に基づいて図31bのテーブルを参照する。図31
aのテーブルの条件と図31bのテーブルの条件とを合
わせて考えることによって、これら8種類のキャラクタ
の復調処理も行なうことができる。
【0143】このようにキャラクタのバー幅に基づき、
そのキャラクタがどの数値を表すものなのかを判別す
る。復調処理(ステップ1)が終了すると、次に読み取
られたバーコードの種別の判断を行なう。この判断は、
後述するバーコードデータの合成処理に用いられる。
そのキャラクタがどの数値を表すものなのかを判別す
る。復調処理(ステップ1)が終了すると、次に読み取
られたバーコードの種別の判断を行なう。この判断は、
後述するバーコードデータの合成処理に用いられる。
【0144】ステップ2では、復調データがSGBを検
出した後のデータか否かを判定する。SGBを検出した
後のデータでない場合には、Dに移行する。一方、SG
Bを検出した後のデータであると判定された場合には、
そのデータがODD/EVEN構成であるかどうかが判
定される(ステップ3)。ODD/EVEN構成とは、
EAN−13の説明で述べたように、黒バーが奇数モジ
ュールとなっているキャラクタと、偶数モジュールとな
っているキャラクタとが混在した構成を表し、EAN−
13(EAN−8)の左ブロック、あるいはUPC/E
のバー構成に相当する。一方、ODD/EVEN構成で
ない場合には、そのバーコードデータはEAN−13
(EAN−8)の右ブロックデータであることになる。
出した後のデータか否かを判定する。SGBを検出した
後のデータでない場合には、Dに移行する。一方、SG
Bを検出した後のデータであると判定された場合には、
そのデータがODD/EVEN構成であるかどうかが判
定される(ステップ3)。ODD/EVEN構成とは、
EAN−13の説明で述べたように、黒バーが奇数モジ
ュールとなっているキャラクタと、偶数モジュールとな
っているキャラクタとが混在した構成を表し、EAN−
13(EAN−8)の左ブロック、あるいはUPC/E
のバー構成に相当する。一方、ODD/EVEN構成で
ない場合には、そのバーコードデータはEAN−13
(EAN−8)の右ブロックデータであることになる。
【0145】ステップ3において、復調データのもとと
なるバーコードデータがODD/EVEN構成ではない
と判定された場合には、Cに移行する。ステップ3にお
いてODD/EVEN構成であると判定された場合に
は、続いてCB(SCB)が検出されたか否かが判定さ
れる(ステップ4)。CBが検出されていない場合に
は、次に第一キャラクタ(SGBに隣接するキャラク
タ)がODD、つまり黒バーの合計モジュール数が奇数
であるかどうかが判定される(ステップ5)。
なるバーコードデータがODD/EVEN構成ではない
と判定された場合には、Cに移行する。ステップ3にお
いてODD/EVEN構成であると判定された場合に
は、続いてCB(SCB)が検出されたか否かが判定さ
れる(ステップ4)。CBが検出されていない場合に
は、次に第一キャラクタ(SGBに隣接するキャラク
タ)がODD、つまり黒バーの合計モジュール数が奇数
であるかどうかが判定される(ステップ5)。
【0146】図32に図示されるように、EAN−13
の第一キャラクタはODD構成、UPC/Eの第一キャ
ラクタはEVEN構成であると定められている。そのた
め、第一キャラクタの構成を調べることによって、その
バーコードがEAN−13なのかUPC/Eなのかを判
別することができる。ステップ5で第一キャラクタがO
DD構成であると判定された場合には、ステップ6でE
AN−13が復調完了したと判断し、フラグlabel
を1、フラグdirecを1にそれぞれセットする。こ
れらのラベルの意味については後述する。
の第一キャラクタはODD構成、UPC/Eの第一キャ
ラクタはEVEN構成であると定められている。そのた
め、第一キャラクタの構成を調べることによって、その
バーコードがEAN−13なのかUPC/Eなのかを判
別することができる。ステップ5で第一キャラクタがO
DD構成であると判定された場合には、ステップ6でE
AN−13が復調完了したと判断し、フラグlabel
を1、フラグdirecを1にそれぞれセットする。こ
れらのラベルの意味については後述する。
【0147】一方、第一キャラクタがODD構成ではな
い場合には、UPC/Eの復調が完了したものと判断
し、label=3、direc=1かセットされる
(ステップ7)。ステップ4でCBが検出されていると
判断された場合には、ステップ8において逆ブロック
(CBの反対側)に復調データがあるか否かが判定され
る。逆ブロックに復調データが存在する場合には、Bに
移行する。
い場合には、UPC/Eの復調が完了したものと判断
し、label=3、direc=1かセットされる
(ステップ7)。ステップ4でCBが検出されていると
判断された場合には、ステップ8において逆ブロック
(CBの反対側)に復調データがあるか否かが判定され
る。逆ブロックに復調データが存在する場合には、Bに
移行する。
【0148】逆ブロックに復調データが存在しない場合
には、ステップ9においてそのバーコードが6桁バーコ
ードであるか否かが判定される。6桁バーコードではな
いと判定された場合には、その復調データはEAN−1
3が分割読取されたデータかEAN−8(いずれも左ブ
ロック)であると判断できる。この場合にはAに移行す
る。
には、ステップ9においてそのバーコードが6桁バーコ
ードであるか否かが判定される。6桁バーコードではな
いと判定された場合には、その復調データはEAN−1
3が分割読取されたデータかEAN−8(いずれも左ブ
ロック)であると判断できる。この場合にはAに移行す
る。
【0149】一方、ステップ10で復調データが6桁バ
ーコードのものであると判断された場合には、UPC/
EかEAN−13の片側ブロックが通しで読み取られた
と判断できる。この場合には、UPC/EのODD/E
VEN構成をそのバーコードが備えているかどうか、構
成チェックが行なわれる(ステップ10)。この構成は
規格上定められた構成をバーコードデータが満たしてい
るかどうかを確認することでおこわなれる。
ーコードのものであると判断された場合には、UPC/
EかEAN−13の片側ブロックが通しで読み取られた
と判断できる。この場合には、UPC/EのODD/E
VEN構成をそのバーコードが備えているかどうか、構
成チェックが行なわれる(ステップ10)。この構成は
規格上定められた構成をバーコードデータが満たしてい
るかどうかを確認することでおこわなれる。
【0150】ステップ11で構成チェックがNGである
と判断された場合には、復調データはEAN−13であ
ると判断され、フラグlabel=1、direc=1
がセットされる(ステップ12)。一方、構成チェック
がOKであった場合には、UPC/Eの復調が完了した
と判定され、label=3、direc=1がセット
される(ステップ13)。
と判断された場合には、復調データはEAN−13であ
ると判断され、フラグlabel=1、direc=1
がセットされる(ステップ12)。一方、構成チェック
がOKであった場合には、UPC/Eの復調が完了した
と判定され、label=3、direc=1がセット
される(ステップ13)。
【0151】ステップ9で復調データが6桁バーコード
のものではない、と判定された場合には、復調データが
4桁バーコードのものであるか(あるいは4桁分の復調
データが存在するか)否かが図25ステップ14で判定
される。ステップ14にて復調データが4桁バーコード
のものであり、更にGB−CBが検出されている場合に
は、続いてバーコードの構成がODD構成となっている
かどうかが判定される(ステップ15)。全てのキャラ
クタがODD構成の場合には、それがEAN−8の復調
データ(左ブロック)であると判断され、フラグlab
el=2、direc=1がセットされる(ステップ1
6)。
のものではない、と判定された場合には、復調データが
4桁バーコードのものであるか(あるいは4桁分の復調
データが存在するか)否かが図25ステップ14で判定
される。ステップ14にて復調データが4桁バーコード
のものであり、更にGB−CBが検出されている場合に
は、続いてバーコードの構成がODD構成となっている
かどうかが判定される(ステップ15)。全てのキャラ
クタがODD構成の場合には、それがEAN−8の復調
データ(左ブロック)であると判断され、フラグlab
el=2、direc=1がセットされる(ステップ1
6)。
【0152】ステップ14、ステップ15がいずれもN
Oの場合には、復調されたデータはEAN−13(左ブ
ロック)であると判断され、フラグlabel=1、d
irec=1がセットされる(ステップ17)。いずれ
の復調データが得られた場合も、Jに移行する。ステッ
プ8でCBの逆ブロックに復調データが存在すると判定
された場合には、ステップ18で逆ブロックのキャラク
タが全てEVEN構成であるか否かが判定される。逆ブ
ロックのキャラクタが全てEVEN構成ではないときに
は、読取NGと判断され、Kに移行する。
Oの場合には、復調されたデータはEAN−13(左ブ
ロック)であると判断され、フラグlabel=1、d
irec=1がセットされる(ステップ17)。いずれ
の復調データが得られた場合も、Jに移行する。ステッ
プ8でCBの逆ブロックに復調データが存在すると判定
された場合には、ステップ18で逆ブロックのキャラク
タが全てEVEN構成であるか否かが判定される。逆ブ
ロックのキャラクタが全てEVEN構成ではないときに
は、読取NGと判断され、Kに移行する。
【0153】一方、逆ブロックのキャラクタが全てEV
EN構成であった場合には、ステップ19で4桁バーコ
ードであるかどうかが判定される。4桁バーコードの場
合には、ステップ20でブロック内のキャラクタが全て
ODD構成であるかどうかが判定される。ブロック内の
キャラクタが全てODD構成の場合には、復調データは
EAN−8の左ブロックであると判定され、フラグla
bel=2、direc=1がセットされる(ステップ
21)。
EN構成であった場合には、ステップ19で4桁バーコ
ードであるかどうかが判定される。4桁バーコードの場
合には、ステップ20でブロック内のキャラクタが全て
ODD構成であるかどうかが判定される。ブロック内の
キャラクタが全てODD構成の場合には、復調データは
EAN−8の左ブロックであると判定され、フラグla
bel=2、direc=1がセットされる(ステップ
21)。
【0154】ステップ19、ステップ20のいずれのN
Oの場合には、復調データはEAN−13の左ブロック
のものと判定され、フラグlabel=1、direc
=1がセットされる(ステップ22)。いずれの場合
も、Jに移行する。ステップ3でブロックデータがOD
D/EVEN構成ではなかった場合には、EAN−1
3、EAN−8の右ブロックデータである可能性があ
る。
Oの場合には、復調データはEAN−13の左ブロック
のものと判定され、フラグlabel=1、direc
=1がセットされる(ステップ22)。いずれの場合
も、Jに移行する。ステップ3でブロックデータがOD
D/EVEN構成ではなかった場合には、EAN−1
3、EAN−8の右ブロックデータである可能性があ
る。
【0155】そこでCに続いて、図26のステップ23
でCBが検出されているかどうかが判定される。CBが
検出されていない場合には、復調データはEAN−13
の右ブロックの分割読取データであると判定され、la
bel=1、direc=2がセットされる(24)。
一方、ステップ23でCBが検出された場合には、ステ
ップ25で逆ブロックに復調データが存在するか否かが
判定される。逆ブロックにデータが存在しない場合に
は、バーコードが4桁バーコードであるかどうかが判定
される(ステップ26)。4桁のバーコートであれば、
復調データはEAN−8のものであると判断され、la
bel=2、direc=2がセットされる(ステップ
27)。
でCBが検出されているかどうかが判定される。CBが
検出されていない場合には、復調データはEAN−13
の右ブロックの分割読取データであると判定され、la
bel=1、direc=2がセットされる(24)。
一方、ステップ23でCBが検出された場合には、ステ
ップ25で逆ブロックに復調データが存在するか否かが
判定される。逆ブロックにデータが存在しない場合に
は、バーコードが4桁バーコードであるかどうかが判定
される(ステップ26)。4桁のバーコートであれば、
復調データはEAN−8のものであると判断され、la
bel=2、direc=2がセットされる(ステップ
27)。
【0156】また、ステップ26の判断に基づいて復調
データが4桁バーコードのものではない場合には、復調
データはEAN−13のものである。この場合には、E
AN−13の右ブロックデータであると判定され、la
bel=1、direc=2がセットされる(ステップ
28)。いずれの場合にも、Jに処理が移行する。
データが4桁バーコードのものではない場合には、復調
データはEAN−13のものである。この場合には、E
AN−13の右ブロックデータであると判定され、la
bel=1、direc=2がセットされる(ステップ
28)。いずれの場合にも、Jに処理が移行する。
【0157】一方、ステップ25て逆ブロックに復調デ
ータが存在すると判定された場合には、逆ブロックのキ
ャラクタがすべてEVEN構成であるか否かが判定され
る(ステップ29)。逆ブロックがEVEN構成の場合
には、バーコードの構成上読取エラーであることが判る
ため、NGとしてKに移行する。逆ブロックがEVEN
構成ではない場合には、正常なバーコード読取が行なわ
れたことになる。この場合には続いて、復調データが4
桁バーコードのものであるかどうかが判定される(ステ
ップ30)。復調データが4桁バーコードのものである
場合には、続いて逆ブロックのキャラクタが全てODD
構成であるかどうかが判定される(ステップ31)。逆
ブロックのキャラクタがODD構成の場合には、復調デ
ータはEAN−8が通しで復調されたものと判定され、
label=2、direc=1がセットされる(ステ
ップ32)。
ータが存在すると判定された場合には、逆ブロックのキ
ャラクタがすべてEVEN構成であるか否かが判定され
る(ステップ29)。逆ブロックがEVEN構成の場合
には、バーコードの構成上読取エラーであることが判る
ため、NGとしてKに移行する。逆ブロックがEVEN
構成ではない場合には、正常なバーコード読取が行なわ
れたことになる。この場合には続いて、復調データが4
桁バーコードのものであるかどうかが判定される(ステ
ップ30)。復調データが4桁バーコードのものである
場合には、続いて逆ブロックのキャラクタが全てODD
構成であるかどうかが判定される(ステップ31)。逆
ブロックのキャラクタがODD構成の場合には、復調デ
ータはEAN−8が通しで復調されたものと判定され、
label=2、direc=1がセットされる(ステ
ップ32)。
【0158】一方、逆ブロックが4桁バーコードではな
い場合、あるいは逆ブロックのキャラクタが全てODD
構成ではない場合には、EAN−13の右ブロックを含
むデータの復調が完了したと判定し、label=1、
direc=2がセットされる(ステップ33)。いず
れの場合も、処理はJに移行する。ステップ2において
復調データがSGBを検出後の復調データではないと判
定された場合には、Dに続いて図27ステップ34にお
いて復調データがEGBを検出した後の復調データであ
るか否かが判定される。復調データがEGB検出後の復
調データではないと判定された場合には、処理はHに移
行する。
い場合、あるいは逆ブロックのキャラクタが全てODD
構成ではない場合には、EAN−13の右ブロックを含
むデータの復調が完了したと判定し、label=1、
direc=2がセットされる(ステップ33)。いず
れの場合も、処理はJに移行する。ステップ2において
復調データがSGBを検出後の復調データではないと判
定された場合には、Dに続いて図27ステップ34にお
いて復調データがEGBを検出した後の復調データであ
るか否かが判定される。復調データがEGB検出後の復
調データではないと判定された場合には、処理はHに移
行する。
【0159】一方、復調データがEGB検出後のもので
あると判定された場合には、続いてそのブロックがOD
D/EVEN構成のものであるかどうかが判定される
(ステップ35)。このブロックがODD/EVEN構
成ではないと判定された場合には、処理はGに移行す
る。一方、ブロックデータがODD/EVEN構成であ
ると判定された場合には、続いてCBを検出したかどう
かが判定される(ステップ36)。CBが検出された場
合には、処理はEに移行する。
あると判定された場合には、続いてそのブロックがOD
D/EVEN構成のものであるかどうかが判定される
(ステップ35)。このブロックがODD/EVEN構
成ではないと判定された場合には、処理はGに移行す
る。一方、ブロックデータがODD/EVEN構成であ
ると判定された場合には、続いてCBを検出したかどう
かが判定される(ステップ36)。CBが検出された場
合には、処理はEに移行する。
【0160】CBが検出されなかった場合には、復調デ
ータはEAN−13の左ブロックの部分データか、EP
C/Eの部分データであると判断することができる。そ
こで次に、第一キャラクタがODD構成であるか否かを
判定する(ステップ37)。第一キャラクタがODD構
成の場合には、そのブロックはEAN−13の左ブロッ
クデータであると判定し、label=1、direc
=1がセットされる(ステップ38)。
ータはEAN−13の左ブロックの部分データか、EP
C/Eの部分データであると判断することができる。そ
こで次に、第一キャラクタがODD構成であるか否かを
判定する(ステップ37)。第一キャラクタがODD構
成の場合には、そのブロックはEAN−13の左ブロッ
クデータであると判定し、label=1、direc
=1がセットされる(ステップ38)。
【0161】一方、第一キャラクタがODD構成ではな
い場合には、その復調されたブロックはUPC/Eの部
分データであることが判明する。そして、label=
3、direc=1がセットされる(ステップ39)。
いずれの場合も、Jに処理が移行する。ステップ36で
CBが検出された場合には、そのブロックが6桁バーコ
ードであるか否が判定される(ステップ40)。復調デ
ータが6桁バーコードではない場合には、処理はFに移
行する。一方、復調データが6桁バーコードの場合に
は、その復調データはEAN−13の左ブロックあるい
はUPC/Eが通しで読み取られたデータであることが
判る。
い場合には、その復調されたブロックはUPC/Eの部
分データであることが判明する。そして、label=
3、direc=1がセットされる(ステップ39)。
いずれの場合も、Jに処理が移行する。ステップ36で
CBが検出された場合には、そのブロックが6桁バーコ
ードであるか否が判定される(ステップ40)。復調デ
ータが6桁バーコードではない場合には、処理はFに移
行する。一方、復調データが6桁バーコードの場合に
は、その復調データはEAN−13の左ブロックあるい
はUPC/Eが通しで読み取られたデータであることが
判る。
【0162】ここで、復調データがUPC/Eのものか
EAN−13のものかを判別するために、ステップ41
でこの復調データがUPC/EのODD/EVEN構成
を持っているか否かが判定される。構成チェックがNG
の場合には、復調データはEAN−13であるため、フ
ラグlabel=1、direc=1がセットされる
(ステップ43)。
EAN−13のものかを判別するために、ステップ41
でこの復調データがUPC/EのODD/EVEN構成
を持っているか否かが判定される。構成チェックがNG
の場合には、復調データはEAN−13であるため、フ
ラグlabel=1、direc=1がセットされる
(ステップ43)。
【0163】一方、構成チェックOKの場合には復調デ
ータはUPC/Eのものであるため、フラグlabel
=3、direc=1がセットされる(ステップ4
4)。いずれの場合にも、処理はJに移行する。ステッ
プ40で復調データが6桁バーコードのものではないと
判定された場合には、図28ステップ45でそれが4桁
バーコードのものであるか否かが判定される。4桁バー
コードのものであると判定された場合には続いてそのブ
ロック内のキャラクタが全てODD構成であるか否かが
判定される(ステップ46)。全てのキャラクタがOD
D構成の場合には、復調データはEAN−8の左ブロッ
クを含む復調データであるため、フラグlabel=
2、direc=1がセットされる(ステップ47)。
ータはUPC/Eのものであるため、フラグlabel
=3、direc=1がセットされる(ステップ4
4)。いずれの場合にも、処理はJに移行する。ステッ
プ40で復調データが6桁バーコードのものではないと
判定された場合には、図28ステップ45でそれが4桁
バーコードのものであるか否かが判定される。4桁バー
コードのものであると判定された場合には続いてそのブ
ロック内のキャラクタが全てODD構成であるか否かが
判定される(ステップ46)。全てのキャラクタがOD
D構成の場合には、復調データはEAN−8の左ブロッ
クを含む復調データであるため、フラグlabel=
2、direc=1がセットされる(ステップ47)。
【0164】一方、復調データが4桁バーコードではな
い、あるいはキャラクタ構成が全てODDではない場合
には、復調データはEAN−13の左ブロックを含むも
のであり、label=1、direc=1がセットさ
れる(ステップ48)。いずれの場合にも、処理はJに
移行する。
い、あるいはキャラクタ構成が全てODDではない場合
には、復調データはEAN−13の左ブロックを含むも
のであり、label=1、direc=1がセットさ
れる(ステップ48)。いずれの場合にも、処理はJに
移行する。
【0165】ステップ35でキャラクタがODD/EV
EN混合の構成ではないと判定された場合には、ステッ
プ49にてバーコードが4桁バーコードのものか否かが
判定される。4桁バーコードの復調データであると判定
された場合には、つづいてステップ50でCBが検出さ
れたか否かが判定される。CBが検出された場合には、
復調データはEAN−8の右ブロックを含む復調データ
であり、label=2、direc=2がセットされ
る(ステップ51)。一方、4桁バーコードではなかっ
た場合、あるいはCBが検出されなかった場合には復調
データはEAN−13の右ブロックの部分データである
ため、label=1、direc=2がセットされる
(ステップ52)。
EN混合の構成ではないと判定された場合には、ステッ
プ49にてバーコードが4桁バーコードのものか否かが
判定される。4桁バーコードの復調データであると判定
された場合には、つづいてステップ50でCBが検出さ
れたか否かが判定される。CBが検出された場合には、
復調データはEAN−8の右ブロックを含む復調データ
であり、label=2、direc=2がセットされ
る(ステップ51)。一方、4桁バーコードではなかっ
た場合、あるいはCBが検出されなかった場合には復調
データはEAN−13の右ブロックの部分データである
ため、label=1、direc=2がセットされる
(ステップ52)。
【0166】いずれの場合にも、処理はJに移行する。
ステップ34でEGBが検出された後の復調データでは
ないと判定された場合には、図29ステップ53でSC
Bが検出された後の復調データであるか否かが判定され
る。SCBを検出した後の復調データである場合には、
復調データはUPC/Eのものであると判定され、la
bel=3、direc=2がセットされる(ステップ
54)。
ステップ34でEGBが検出された後の復調データでは
ないと判定された場合には、図29ステップ53でSC
Bが検出された後の復調データであるか否かが判定され
る。SCBを検出した後の復調データである場合には、
復調データはUPC/Eのものであると判定され、la
bel=3、direc=2がセットされる(ステップ
54)。
【0167】一方、SCBを検出した後の復調データで
はないと判定された場合には、CBを検出した後のEA
N−13の復調データであると判定され、label=
1、direc=3がセットされる(ステップ55)。
いずれの場合にもJに処理が移行する。Jに移行した場
合、復調OKと判断され、処理が完了する。一方、Kに
処理が移行した場合には、復調NGと判断され、処理が
完了する。
はないと判定された場合には、CBを検出した後のEA
N−13の復調データであると判定され、label=
1、direc=3がセットされる(ステップ55)。
いずれの場合にもJに処理が移行する。Jに移行した場
合、復調OKと判断され、処理が完了する。一方、Kに
処理が移行した場合には、復調NGと判断され、処理が
完了する。
【0168】図33は、バーコード復調処理結果の出力
を示した図面である。labelフラグは復調されたバ
ーコードの種別を示すものであり、1はEAN−13、
2はEAN−8、3はUPC/Eをそれぞれ示してい
る。また、direcフラグは走査された方向を示すフ
ラグであり、label=1の場合、1は一気通貫読取
あるいは左ブロックから走査された復調データ(左ブロ
ックを含むの意味)を示し、2は右ブロックからの復調
データを、3はCBのみを含む復調データであることを
示す。
を示した図面である。labelフラグは復調されたバ
ーコードの種別を示すものであり、1はEAN−13、
2はEAN−8、3はUPC/Eをそれぞれ示してい
る。また、direcフラグは走査された方向を示すフ
ラグであり、label=1の場合、1は一気通貫読取
あるいは左ブロックから走査された復調データ(左ブロ
ックを含むの意味)を示し、2は右ブロックからの復調
データを、3はCBのみを含む復調データであることを
示す。
【0169】label=2の場合には、1は一気通貫
読取あるいは左ブロックの復調データ(左ブロックを含
むの意味)であり、2は右ブロックの復調データ(右ブ
ロックを含むの意味)であることを示す。label=
3の場合には、1はブロック復調(分割復調)かSGB
を含む復調データであることを、2はEGBを含む復調
データ(SCBからSGB方向に走査されたもの)であ
ることをそれぞれ示す。
読取あるいは左ブロックの復調データ(左ブロックを含
むの意味)であり、2は右ブロックの復調データ(右ブ
ロックを含むの意味)であることを示す。label=
3の場合には、1はブロック復調(分割復調)かSGB
を含む復調データであることを、2はEGBを含む復調
データ(SCBからSGB方向に走査されたもの)であ
ることをそれぞれ示す。
【0170】図34は復調データバッファの内容を示
す。復調データバッファには、前述したlabelフラ
グ、direcフラグの他に、左ブロック内の復調デー
タ(キャラクタ)の個数、右ブロック内の復調データ
(キャラクタ)の個数、waveデータの復調データの
有無(ウェーブエラー発生の有無)、復調データが格納
されている。復調処理の結果得られた復調データ他は、
この復調データバッファ内に格納され、必要に応じて合
成処理に使用される。
す。復調データバッファには、前述したlabelフラ
グ、direcフラグの他に、左ブロック内の復調デー
タ(キャラクタ)の個数、右ブロック内の復調データ
(キャラクタ)の個数、waveデータの復調データの
有無(ウェーブエラー発生の有無)、復調データが格納
されている。復調処理の結果得られた復調データ他は、
この復調データバッファ内に格納され、必要に応じて合
成処理に使用される。
【0171】図35及び図36は、格納・合成処理の詳
細を示すフローチャートである。格納・合成処理を行な
う際には、復調データ他を復調データバッファから読み
出す。この処理では、読みだされたlabelフラグに
基づいて、復調されたデータがEAN−13のものか、
EAN−8のものか、UPC/Eのものかを判定し、そ
れぞれの種別に応じた格納・合成処理がおこなわれる。
細を示すフローチャートである。格納・合成処理を行な
う際には、復調データ他を復調データバッファから読み
出す。この処理では、読みだされたlabelフラグに
基づいて、復調されたデータがEAN−13のものか、
EAN−8のものか、UPC/Eのものかを判定し、そ
れぞれの種別に応じた格納・合成処理がおこなわれる。
【0172】復調データがUPC/Eのものであると判
定された場合には(ステップ1、ステップ3いずれも該
当しない場合)、ステップ5で復調データがSGBを検
出したデータか(direc=1か)が判定される。S
GBを検出した復調データの場合には、復調データをu
pcesxバッファに格納する(ステップ6)。また、
復調データがSGBを検出していないデータの場合に
は、復調データをupceexバッファに格納する(ス
テップ7)。
定された場合には(ステップ1、ステップ3いずれも該
当しない場合)、ステップ5で復調データがSGBを検
出したデータか(direc=1か)が判定される。S
GBを検出した復調データの場合には、復調データをu
pcesxバッファに格納する(ステップ6)。また、
復調データがSGBを検出していないデータの場合に
は、復調データをupceexバッファに格納する(ス
テップ7)。
【0173】upceexバッファ、upcesxバッ
ファは共に、バーコードデータ合成用に用いられるバッ
ファである。’s’はスタートを、’e’はエンドをそ
れぞれ示す。図37及び図38は、これらの合成用バッ
ファの内容を図示したものである。なお、図38はup
ceexバッファとupcesxバッファとが併記され
ている。
ファは共に、バーコードデータ合成用に用いられるバッ
ファである。’s’はスタートを、’e’はエンドをそ
れぞれ示す。図37及び図38は、これらの合成用バッ
ファの内容を図示したものである。なお、図38はup
ceexバッファとupcesxバッファとが併記され
ている。
【0174】合成用バッファは、格納されている情報を
示す格納情報欄、格納されているキャラクタの桁数を示
す桁数欄、復調データ格納領域、モジュラスキャラクタ
格納欄、ウェーブエラーデータが発生した復調データの
有無などが格納される。合成用バッファのうち、upc
eexバッファはSCB側から走査・復調された復調デ
ータが格納され、upcesxバッファはSGB側から
復調された復調データが格納される。図において、上側
はGB(SGB)側、下側はCB(SCB)側に対応し
ている。upcesxバッファの場合には復調データが
上から順に格納されていき、upceexバッファの場
合には復調データが下から順に格納されていく。バーコ
ード合成処理は、一旦合成用バッファに格納された復調
データを利用して実行される。
示す格納情報欄、格納されているキャラクタの桁数を示
す桁数欄、復調データ格納領域、モジュラスキャラクタ
格納欄、ウェーブエラーデータが発生した復調データの
有無などが格納される。合成用バッファのうち、upc
eexバッファはSCB側から走査・復調された復調デ
ータが格納され、upcesxバッファはSGB側から
復調された復調データが格納される。図において、上側
はGB(SGB)側、下側はCB(SCB)側に対応し
ている。upcesxバッファの場合には復調データが
上から順に格納されていき、upceexバッファの場
合には復調データが下から順に格納されていく。バーコ
ード合成処理は、一旦合成用バッファに格納された復調
データを利用して実行される。
【0175】なお、EAN−13用の合成バッファとし
てlgbfxx、rgbfxx、cbbfxxが、EA
N−8用の合成バッファとしてean8lx、ean8
rxがそれぞれある(図示省略)。lgbfxx、rg
bfxx、cbbfxxは、それぞれ左ブロック、右ブ
ロック、CBを含む復調データが格納されるものであ
る。また、ean8lx、ean8rxはそれぞれEA
N−8の左ブロック、右ブロックを含むデータが格納さ
れるものである。
てlgbfxx、rgbfxx、cbbfxxが、EA
N−8用の合成バッファとしてean8lx、ean8
rxがそれぞれある(図示省略)。lgbfxx、rg
bfxx、cbbfxxは、それぞれ左ブロック、右ブ
ロック、CBを含む復調データが格納されるものであ
る。また、ean8lx、ean8rxはそれぞれEA
N−8の左ブロック、右ブロックを含むデータが格納さ
れるものである。
【0176】合成バッファへの復調データの格納は、l
abelフラグとdirecフラグとの値に基づいて行
なわれる。図39はlabelフラグと格納処理との対
応を示す図面である。labelフラグに基づいて、ま
ずバーコード種別が判別される。label=1の場合
にはEAN−13用、label=2の場合にはEAN
−8用、label=3の場合にはUPC/E用の合成
バッファに格納すればよいことが判明する。
abelフラグとdirecフラグとの値に基づいて行
なわれる。図39はlabelフラグと格納処理との対
応を示す図面である。labelフラグに基づいて、ま
ずバーコード種別が判別される。label=1の場合
にはEAN−13用、label=2の場合にはEAN
−8用、label=3の場合にはUPC/E用の合成
バッファに格納すればよいことが判明する。
【0177】これに続いて、更にdirecフラグの値
を参照する。例えばlabel=1の場合、direc
=1であるならばこれは左ブロックを含んだ復調データ
であるため、合成バッファlgbfxxに格納する。同
様に、direc=2の場合には右ブロックを含んだ復
調データであるためfgbfxxに、direc=3の
場合にはCBを含んだ復調データであるためcbbfx
xに、それぞれ復調データを格納する。
を参照する。例えばlabel=1の場合、direc
=1であるならばこれは左ブロックを含んだ復調データ
であるため、合成バッファlgbfxxに格納する。同
様に、direc=2の場合には右ブロックを含んだ復
調データであるためfgbfxxに、direc=3の
場合にはCBを含んだ復調データであるためcbbfx
xに、それぞれ復調データを格納する。
【0178】同じように、EAN−8ではdirec=
1の場合ean8lxに、direc=2の場合ean
8rxに、UPC/Eではdirec=1の場合upc
esxに、direc=2の場合upceexに復調デ
ータを格納する。次に、分割読取された復調データの合
成処理について説明する。ここでは特にUPC/Eにつ
いて説明する。
1の場合ean8lxに、direc=2の場合ean
8rxに、UPC/Eではdirec=1の場合upc
esxに、direc=2の場合upceexに復調デ
ータを格納する。次に、分割読取された復調データの合
成処理について説明する。ここでは特にUPC/Eにつ
いて説明する。
【0179】合成処理に先立ち、図36ステップ8にお
いて、合成処理を開始する前にペアリング試行回数がセ
ットされる。この試行回数は合成処理がうまく行かなか
った場合に再試行する回数を示したものであり、本実施
形態の場合には試行回数は10回とするが、この回数は
任意のものでよい。続いて、合成バッファから復調デー
タを読みだして、ステップ9において復調データがSG
Bを検出したデータであるかどうかが判定される。復調
データがSGBを検出したデータである場合には、続い
てステップ10において復調データがブロックデータで
あるか否か、つまり通しで復調されたデータであるか否
かが判定される。復調データがブロックデータの場合に
は、Cに処理が移行、ステップ17でモジュラス10チ
ェックを行なった後、チェック結果がOKであれば読取
成功となる。なお、ステップ9で復調データがSGBを
検出したものではない場合、ステップ10はスキップさ
れる。
いて、合成処理を開始する前にペアリング試行回数がセ
ットされる。この試行回数は合成処理がうまく行かなか
った場合に再試行する回数を示したものであり、本実施
形態の場合には試行回数は10回とするが、この回数は
任意のものでよい。続いて、合成バッファから復調デー
タを読みだして、ステップ9において復調データがSG
Bを検出したデータであるかどうかが判定される。復調
データがSGBを検出したデータである場合には、続い
てステップ10において復調データがブロックデータで
あるか否か、つまり通しで復調されたデータであるか否
かが判定される。復調データがブロックデータの場合に
は、Cに処理が移行、ステップ17でモジュラス10チ
ェックを行なった後、チェック結果がOKであれば読取
成功となる。なお、ステップ9で復調データがSGBを
検出したものではない場合、ステップ10はスキップさ
れる。
【0180】続いて、ステップ11において、upce
xバッファおよびupcsxバッファに格納されている
復調データの桁数を読みだして、加算する。次にステッ
プ12で桁数チェックが行なわれる。ここで、UPC/
Eの合成処理を行なう場合には、図40に図示されるよ
うに、3桁以上の重複がなければならないとした場合、
桁数が8を越えているかどうかをステップ12で判定す
る。桁数が8桁を越えていない場合には、読取エラーと
する。
xバッファおよびupcsxバッファに格納されている
復調データの桁数を読みだして、加算する。次にステッ
プ12で桁数チェックが行なわれる。ここで、UPC/
Eの合成処理を行なう場合には、図40に図示されるよ
うに、3桁以上の重複がなければならないとした場合、
桁数が8を越えているかどうかをステップ12で判定す
る。桁数が8桁を越えていない場合には、読取エラーと
する。
【0181】桁数が8を越えている場合(9以上)なら
ば、UPC/Eは6キャラクタから構成されるため、重
複部分が3キャラクタ以上であることが判別できる。こ
の場合には、ステップ13で、重複桁の復調データが一
致するか否かが判定される。この同一性をチェックする
ことで、重複部分の復調データが同一なものであり、バ
ーコードの合成処理が可能かどうかが判定される。ステ
ップ14において重複結果がOK(この場合連続した2
キャラクタが同一である必要あり)の場合、続いてステ
ップ15においてモジュラスキャラクタを算出する。な
お、ステップ14で2キャラクタ以上同一キャラクタが
連続していない場合には、読取エラーとする。
ば、UPC/Eは6キャラクタから構成されるため、重
複部分が3キャラクタ以上であることが判別できる。こ
の場合には、ステップ13で、重複桁の復調データが一
致するか否かが判定される。この同一性をチェックする
ことで、重複部分の復調データが同一なものであり、バ
ーコードの合成処理が可能かどうかが判定される。ステ
ップ14において重複結果がOK(この場合連続した2
キャラクタが同一である必要あり)の場合、続いてステ
ップ15においてモジュラスキャラクタを算出する。な
お、ステップ14で2キャラクタ以上同一キャラクタが
連続していない場合には、読取エラーとする。
【0182】なお、ステップ12での重複桁数、ステッ
プ14での同一キャラクタの条件は、この他の条件をと
っても差し支えはない。この桁数は、合成されるバーコ
ードデータの正当性を保証するために必要なものであ
り、桁数が多くなればその分合成後のバーコードデータ
の正当性は高くなる。ステップ15を受けて、ステップ
16ではモジュラスキャラクタ算出がOKであったかど
うかが判断される。NGである場合には読取エラーと判
断する。
プ14での同一キャラクタの条件は、この他の条件をと
っても差し支えはない。この桁数は、合成されるバーコ
ードデータの正当性を保証するために必要なものであ
り、桁数が多くなればその分合成後のバーコードデータ
の正当性は高くなる。ステップ15を受けて、ステップ
16ではモジュラスキャラクタ算出がOKであったかど
うかが判断される。NGである場合には読取エラーと判
断する。
【0183】モジュラスキャラクタ算出結果がOKの場
合には、続いてモジュラス10チェックが行なわれる。
モジュラス10チェックがOKならば、合成されたバー
コードデータが正当なものとして、合成処理を終了す
る。一方、読取エラーとして判定された場合には、ステ
ップ18でペアリング回数がデクリメントされる。そし
て、ペアリング回数が0となったかどうかがステップ1
9で判定される。ペアリング回数が0となった場合に
は、合成処理を終了する。一方、ペアリング回数が0を
越えている場合には、ステップ9に戻り合成処理を行な
う。EAN−13、EAN−8の場合も、図36と同様
な手順によって合成処理が進められる。ここで、EAN
−13などの場合には、ステップ12に規定されている
桁数チェックにおいて、重複桁数が2キャラクタ以上で
あれば桁数チェックをOKとしている。つまり、EAN
−13の場合には12桁+重複2桁の14桁、EAN−
8の場合には8桁+重複2桁の10桁桁数があれば桁数
チェックをOKとしている。
合には、続いてモジュラス10チェックが行なわれる。
モジュラス10チェックがOKならば、合成されたバー
コードデータが正当なものとして、合成処理を終了す
る。一方、読取エラーとして判定された場合には、ステ
ップ18でペアリング回数がデクリメントされる。そし
て、ペアリング回数が0となったかどうかがステップ1
9で判定される。ペアリング回数が0となった場合に
は、合成処理を終了する。一方、ペアリング回数が0を
越えている場合には、ステップ9に戻り合成処理を行な
う。EAN−13、EAN−8の場合も、図36と同様
な手順によって合成処理が進められる。ここで、EAN
−13などの場合には、ステップ12に規定されている
桁数チェックにおいて、重複桁数が2キャラクタ以上で
あれば桁数チェックをOKとしている。つまり、EAN
−13の場合には12桁+重複2桁の14桁、EAN−
8の場合には8桁+重複2桁の10桁桁数があれば桁数
チェックをOKとしている。
【0184】ここで、バーコードの走査のされ方によっ
てはUPC/EのSCBとEAN−13のCBとの区別
が着きにくい場合がでてくる。ここで、EAN−13の
場合にはCBの両側にキャラクタがあるか否かなどの判
定を行なうことによってEAN−13の一部分が読み取
られたことを確認しやすいが、UPC/EのSCBの場
合には仮に6モジュール構成のバーが検出されたとして
も、既に述べた理由によってEAN−13のCBである
可能性も否定できない。
てはUPC/EのSCBとEAN−13のCBとの区別
が着きにくい場合がでてくる。ここで、EAN−13の
場合にはCBの両側にキャラクタがあるか否かなどの判
定を行なうことによってEAN−13の一部分が読み取
られたことを確認しやすいが、UPC/EのSCBの場
合には仮に6モジュール構成のバーが検出されたとして
も、既に述べた理由によってEAN−13のCBである
可能性も否定できない。
【0185】従って、読取の成功率を高めるようUPC
/Eの復調処理を行なう場合には、よりチェックの度合
いを高めて、読み取られたバーコードがUPC/Eであ
ることが充分確認された上で行なう必要がある。そこ
で、本実施形態ではEAN−13・EAN−8の桁数チ
ェックと、UPC/Eの桁数チェックとでは、重複すべ
きキャラクタを変えている。図41はペアリングバッフ
ァの構成を示した図面である。ペアリングバッファは、
ペアリングされた復調データを格納するものである。図
41の場合にはEAN−8のペアリング合成バッファと
UPC/Eの合成バッファとが図示されているが、EA
N−13用のペアリングバッファも同様の構成となって
いることはいうまでもない。
/Eの復調処理を行なう場合には、よりチェックの度合
いを高めて、読み取られたバーコードがUPC/Eであ
ることが充分確認された上で行なう必要がある。そこ
で、本実施形態ではEAN−13・EAN−8の桁数チ
ェックと、UPC/Eの桁数チェックとでは、重複すべ
きキャラクタを変えている。図41はペアリングバッフ
ァの構成を示した図面である。ペアリングバッファは、
ペアリングされた復調データを格納するものである。図
41の場合にはEAN−8のペアリング合成バッファと
UPC/Eの合成バッファとが図示されているが、EA
N−13用のペアリングバッファも同様の構成となって
いることはいうまでもない。
【0186】EAN−8用のペアリングバッファは、0
番地から24番地までの25の領域が設定されている。
また、分割データとしては左ブロックを含むデータとし
てはeanl1〜eanl5の5種類が、右ブロックを
含むデータとしてはean8f1〜ean8r5の5種
類が、それぞれ存在するものとする。EAN−8用合成
バッファには、これらそれぞれ5種類ずつの復調データ
が組み合わされた合計25個のデータが格納されてい
る。
番地から24番地までの25の領域が設定されている。
また、分割データとしては左ブロックを含むデータとし
てはeanl1〜eanl5の5種類が、右ブロックを
含むデータとしてはean8f1〜ean8r5の5種
類が、それぞれ存在するものとする。EAN−8用合成
バッファには、これらそれぞれ5種類ずつの復調データ
が組み合わされた合計25個のデータが格納されてい
る。
【0187】同様に、UPC/E用ペアリングバッファ
には、upces1〜upces10、upcee1〜
upcee10のそれぞれ10種類ずつのデータを組み
合わせた合計100個の復調データを格納するために、
25番地〜124番地の100個の領域が設定されてい
る。図42は、一致回数処理の詳細を示すフローチャー
トである。ここでは、復調済(合成済)データの一致回
数を計数し、これに応じて読取の成否を判断する処理が
行なわれる。
には、upces1〜upces10、upcee1〜
upcee10のそれぞれ10種類ずつのデータを組み
合わせた合計100個の復調データを格納するために、
25番地〜124番地の100個の領域が設定されてい
る。図42は、一致回数処理の詳細を示すフローチャー
トである。ここでは、復調済(合成済)データの一致回
数を計数し、これに応じて読取の成否を判断する処理が
行なわれる。
【0188】まずステップ1において、M−10(モジ
ュラス10チェック)OKのデータはUPC/Eのもの
かどうかが判定される。このデータがUPC/Eのもの
でない場合にはEAN−13あるいはEAN−8のもの
であるため、ステップ2においてEAN−13、EAN
−8用の一致回数分同一復調データが存在するかどうか
を確認し、処理を終了する。
ュラス10チェック)OKのデータはUPC/Eのもの
かどうかが判定される。このデータがUPC/Eのもの
でない場合にはEAN−13あるいはEAN−8のもの
であるため、ステップ2においてEAN−13、EAN
−8用の一致回数分同一復調データが存在するかどうか
を確認し、処理を終了する。
【0189】一方、M10OKデータがUPC/Eのも
のである場合には、ステップ3においてこれがブロック
読取されたデータかどうか(SGB−SCBを通過した
データ)を判定する。ブロック読取されたデータである
場合には、続いてステップ4にてグレーゾーン・ウェー
ブデータがないかどうかが判定される。これは、例えば
既述したウェーブエラーや確かではないデータが含まれ
ているかどうかを確認する処理を行なう。これらのデー
タがなければ読取OKと判断する。
のである場合には、ステップ3においてこれがブロック
読取されたデータかどうか(SGB−SCBを通過した
データ)を判定する。ブロック読取されたデータである
場合には、続いてステップ4にてグレーゾーン・ウェー
ブデータがないかどうかが判定される。これは、例えば
既述したウェーブエラーや確かではないデータが含まれ
ているかどうかを確認する処理を行なう。これらのデー
タがなければ読取OKと判断する。
【0190】一方、ステップ4でこれらのデータが存在
すると判定された場合には、ステップ5で復調データが
二回一致したかどうかが確認される。ここでは、同一復
調データの有無が判定される。二回一致したデータが存
在すれば、読取OKと判断する。一方、二回一致データ
が存在しない場合には、M10チェックOKの数が2個
以上あるかどうかが判定される(ステップ6)。M10
OKの数が2個以上であれば、一致回数OKと判断す
る。一方、ステップ6の条件に合わない場合には、読取
エラー(一致回数NG)と判断する。
すると判定された場合には、ステップ5で復調データが
二回一致したかどうかが確認される。ここでは、同一復
調データの有無が判定される。二回一致したデータが存
在すれば、読取OKと判断する。一方、二回一致データ
が存在しない場合には、M10チェックOKの数が2個
以上あるかどうかが判定される(ステップ6)。M10
OKの数が2個以上であれば、一致回数OKと判断す
る。一方、ステップ6の条件に合わない場合には、読取
エラー(一致回数NG)と判断する。
【0191】また、ステップ3においてブロック読取で
はない、つまり分割読取データであると判定された場合
には、ステップ7で6桁のブロックが検出されたかどう
かが判定される。6桁ブロックが検出されなければ、一
致回数NGと判定される。6桁ブロックが検出された場
合には、ステップ8においてグレーゾーン・ウェーブデ
ータがあるかどうか判定される。これらのデータが存在
する場合には、ステップ9においてSGB・SCBを含
むデータが3個ずつあるかどうかが判定される。これら
のデータが3個ずつあれば、一致回数OKと判定し、3
個ずつなければ一致回数NGと判定する。
はない、つまり分割読取データであると判定された場合
には、ステップ7で6桁のブロックが検出されたかどう
かが判定される。6桁ブロックが検出されなければ、一
致回数NGと判定される。6桁ブロックが検出された場
合には、ステップ8においてグレーゾーン・ウェーブデ
ータがあるかどうか判定される。これらのデータが存在
する場合には、ステップ9においてSGB・SCBを含
むデータが3個ずつあるかどうかが判定される。これら
のデータが3個ずつあれば、一致回数OKと判定し、3
個ずつなければ一致回数NGと判定する。
【0192】ステップ8においてグレーゾーン等がない
と判定された場合には、ステップ10においてSGB・
SCBを含むデータが1−2、2−1以上かどうかが判
定される。これは、図43に示されるように、SGBを
含むデータが1個の場合にはSCBを含むデータが2個
以上存在しているか、逆にSCBを含むデータが一個の
場合にはSGBを含むデータが2個以上存在しているか
を判定するものである。
と判定された場合には、ステップ10においてSGB・
SCBを含むデータが1−2、2−1以上かどうかが判
定される。これは、図43に示されるように、SGBを
含むデータが1個の場合にはSCBを含むデータが2個
以上存在しているか、逆にSCBを含むデータが一個の
場合にはSGBを含むデータが2個以上存在しているか
を判定するものである。
【0193】この条件に当てはまる場合には一致回数O
K、当てはまらない場合には一致回数NGと判定する。
ここでは、UPC/Eバーコードの誤読を防止するため
に、ウェーブデータの存在する復調データやグレーゾー
ンのある復調データを使用したモジュラス10チェック
を行なう場合には、通常時の場合の一致回数(データ取
り込み回数)を偏光する処理を行なっている。
K、当てはまらない場合には一致回数NGと判定する。
ここでは、UPC/Eバーコードの誤読を防止するため
に、ウェーブデータの存在する復調データやグレーゾー
ンのある復調データを使用したモジュラス10チェック
を行なう場合には、通常時の場合の一致回数(データ取
り込み回数)を偏光する処理を行なっている。
【0194】ウェーブデータ等が存在する復調データは
ゴミデータ(ノイズ等)を復調したものである可能性が
高くなる。そのため、このような場合にはモジュラス1
0チェックがOKとなったデータの一致回数チェックを
厳しくしているのである。なお、SCBチェックの場合
とCBチェックの場合共に、一方のバー幅が他方の+/
−25%以内である場合にチェックOKとしていたが、
既に述べているようにSCBはCBとの区別が付きにく
い。そのため、SCBのチェックはCBのチェックより
も厳しくすることが望ましい場合がある。
ゴミデータ(ノイズ等)を復調したものである可能性が
高くなる。そのため、このような場合にはモジュラス1
0チェックがOKとなったデータの一致回数チェックを
厳しくしているのである。なお、SCBチェックの場合
とCBチェックの場合共に、一方のバー幅が他方の+/
−25%以内である場合にチェックOKとしていたが、
既に述べているようにSCBはCBとの区別が付きにく
い。そのため、SCBのチェックはCBのチェックより
も厳しくすることが望ましい場合がある。
【0195】図44は、そのための手段を図示したもの
である。CBチェックの場合には+/−25%以内をチ
ェックOKの条件としているが、SCBチェックの場合
には+/−20%以内をチェックOKの条件としてい
る。これによって、SCBチェックの方がよりチェック
の度合いが厳しくなるため、少しでもSCBの特徴とは
異なる構成を持ったデータを取り除くことができる。
である。CBチェックの場合には+/−25%以内をチ
ェックOKの条件としているが、SCBチェックの場合
には+/−20%以内をチェックOKの条件としてい
る。これによって、SCBチェックの方がよりチェック
の度合いが厳しくなるため、少しでもSCBの特徴とは
異なる構成を持ったデータを取り除くことができる。
【0196】更に、SCBチェックの精度をあげるため
に、SCB(CB)に続く白バーの幅のチェックを行な
う。ここでは2×T5<4×X(Xは図45図示のCB
に隣接する白バーの幅)というチェックが行なわれる。
この条件を満たしている場合には、XはEAN−13の
CBに隣接するキャラクタC7の始めの白バーであるこ
とが判る。一方、この条件を満たしていない場合には、
XはUPC/EのSCBに続くマージン部であると判定
することができる。このような白バー長チェックを行な
うことにより、より確実にSCB/CBの検出を行なう
ことができる。なお、このチェックを行なった後には、
Yのバーのchr−fのビットがオンになっていないこ
とをチェックする。
に、SCB(CB)に続く白バーの幅のチェックを行な
う。ここでは2×T5<4×X(Xは図45図示のCB
に隣接する白バーの幅)というチェックが行なわれる。
この条件を満たしている場合には、XはEAN−13の
CBに隣接するキャラクタC7の始めの白バーであるこ
とが判る。一方、この条件を満たしていない場合には、
XはUPC/EのSCBに続くマージン部であると判定
することができる。このような白バー長チェックを行な
うことにより、より確実にSCB/CBの検出を行なう
ことができる。なお、このチェックを行なった後には、
Yのバーのchr−fのビットがオンになっていないこ
とをチェックする。
【0197】
【発明の効果】以上述べたとおり、本発明によれば、バ
ーコードの特徴点の抽出の際に、より特徴点の抽出が難
しい種別のバーコードが読み取られたような場合、読み
取られたデータに含まれる特徴点と思われる情報が本当
に特徴点であるかどうかのチェックを、他の種別のバー
コードに対するチェックの場合よりもより厳しく行なう
ため、いずれの種別のバーコードであってもより確実に
特徴点を抽出可能とすることができ、複数種別のバーコ
ードが混在しているような場合でも、どの種別のバーコ
ードも同じように読取・復調することができるようにな
る。
ーコードの特徴点の抽出の際に、より特徴点の抽出が難
しい種別のバーコードが読み取られたような場合、読み
取られたデータに含まれる特徴点と思われる情報が本当
に特徴点であるかどうかのチェックを、他の種別のバー
コードに対するチェックの場合よりもより厳しく行なう
ため、いずれの種別のバーコードであってもより確実に
特徴点を抽出可能とすることができ、複数種別のバーコ
ードが混在しているような場合でも、どの種別のバーコ
ードも同じように読取・復調することができるようにな
る。
【0198】また、特徴点の抽出の方法として、走査順
等を示すフラグを設定することによって、後の復調等の
処理自に特徴点に対応するデータを検索しやすくなり、
復調処理がより効率的に行なえる。また、フラグ種別お
よびフラグが付されたバーの種類に応じて特徴点チェッ
クを行なうことで、読み取られた特徴点の種別を判定で
きるようにし、更には読み取られたバーコード種別の判
別にも利用できるようにすることができる。
等を示すフラグを設定することによって、後の復調等の
処理自に特徴点に対応するデータを検索しやすくなり、
復調処理がより効率的に行なえる。また、フラグ種別お
よびフラグが付されたバーの種類に応じて特徴点チェッ
クを行なうことで、読み取られた特徴点の種別を判定で
きるようにし、更には読み取られたバーコード種別の判
別にも利用できるようにすることができる。
【0199】一方、特徴点の前後にキャラクタが隣接し
ているかどうかを、特徴点の抽出に合わせて行なうこと
によって、判別された特徴点種別が正しいものであるの
かどうかをより確実に判別できる。一方、前記した走査
種別を示すフラグが、同一キャラクタに、異なった複数
種類のものが付されていた場合、隣接するキャラクタ長
のチェックを行なうが、これによってどのフラグを有効
とすべきかを判別して、読み取られた特徴点の種別やバ
ーコードの種別などを判別することが可能となる。
ているかどうかを、特徴点の抽出に合わせて行なうこと
によって、判別された特徴点種別が正しいものであるの
かどうかをより確実に判別できる。一方、前記した走査
種別を示すフラグが、同一キャラクタに、異なった複数
種類のものが付されていた場合、隣接するキャラクタ長
のチェックを行なうが、これによってどのフラグを有効
とすべきかを判別して、読み取られた特徴点の種別やバ
ーコードの種別などを判別することが可能となる。
【0200】また、このように判別されたバーコード種
別に応じて対応する復調方法等を選択することができる
ため、より確実に、より迅速に読み取られたバーコード
種別に応じた復調処理を実行することができる。また、
特徴点か検出された場合、その前後方向にキャラクタが
存在するか否かを判別し、キャラクタが存在するか否か
の判別結果に基づいて、読み取られたバーコード種別を
判定することによって、より確実にバーコード種別を判
定することが可能となる。
別に応じて対応する復調方法等を選択することができる
ため、より確実に、より迅速に読み取られたバーコード
種別に応じた復調処理を実行することができる。また、
特徴点か検出された場合、その前後方向にキャラクタが
存在するか否かを判別し、キャラクタが存在するか否か
の判別結果に基づいて、読み取られたバーコード種別を
判定することによって、より確実にバーコード種別を判
定することが可能となる。
【0201】また、特徴点の両側でキャラクタ長チェッ
クが有効となるキャラクタ数を計数することで、この計
数結果に基づいて読み取られた特徴点とバーコードの種
別を判別することができるようになる。一方、複数のバ
ーコード種別に共通する特徴点が抽出された場合、特徴
点に続くキャラクタの構成を判別することで、読み取ら
れたバーコードの種別がどの種別であるのかを容易に判
別することができるようになる。
クが有効となるキャラクタ数を計数することで、この計
数結果に基づいて読み取られた特徴点とバーコードの種
別を判別することができるようになる。一方、複数のバ
ーコード種別に共通する特徴点が抽出された場合、特徴
点に続くキャラクタの構成を判別することで、読み取ら
れたバーコードの種別がどの種別であるのかを容易に判
別することができるようになる。
【0202】また、バーコードの種別に応じて、合成処
理を行なう際に必要となる合成対象となるデータ同士の
重複桁数を変える。これによって、合成処理等を行なう
際に誤読が生じやすい種別のバーコードについては重複
桁数を多くしてチェックの度合いを厳しくすることで、
問題となる可能性がある誤読の発生確率を低減させるこ
とが可能となる。
理を行なう際に必要となる合成対象となるデータ同士の
重複桁数を変える。これによって、合成処理等を行なう
際に誤読が生じやすい種別のバーコードについては重複
桁数を多くしてチェックの度合いを厳しくすることで、
問題となる可能性がある誤読の発生確率を低減させるこ
とが可能となる。
【0203】一方、必要となる重複桁内に存在する同一
データは、バーコード種別に関わらず同じ桁数とするこ
とも可能である。同様に、読取成功と判断するために必
要となる、同一バーコードデータの個数を、バーコード
の種別に応じて変えることで、誤読を生じやすいバーコ
ードについてはよりチェックの度合いを厳しくすること
も可能となり、誤読の発生可能性を低下させることが可
能となる。
データは、バーコード種別に関わらず同じ桁数とするこ
とも可能である。同様に、読取成功と判断するために必
要となる、同一バーコードデータの個数を、バーコード
の種別に応じて変えることで、誤読を生じやすいバーコ
ードについてはよりチェックの度合いを厳しくすること
も可能となり、誤読の発生可能性を低下させることが可
能となる。
【図1】EAN−13、EAN−8、UPC/Eの構成
を示す図面である。
を示す図面である。
【図2】一実施形態によるバーコード読取装置の構成を
示す図面である。
示す図面である。
【図3】図2に図示されたCPUの内部構成を示す図面
である。
である。
【図4】バーコードの走査方向種別を示す図面である。
【図5】バーコードの走査のされ方を示す図面である。
【図6】一実施形態によるバーコード復調の概要を示す
フローチャートである。
フローチャートである。
【図7】バーコードの走査の状態とエッジ検出信号との
関係を示す図面である。
関係を示す図面である。
【図8】ウエーブエラー発生時のエッジ検出信号の状態
を示す図面である。
を示す図面である。
【図9】その他のウエーブエラー発生の状態を示す図面
である。
である。
【図10】バーコードの走査種別とその判別方法を示し
た図面である。
た図面である。
【図11】バーコード検索第一次処理を示すフローチャ
ートである。
ートである。
【図12】バーコード検索第一次処理を示すフローチャ
ートである。
ートである。
【図13】バー幅バッファの構成を示す図面である。
【図14】同一構成のバーコードに対して異なった解釈
が生じる可能性を示す図面である。
が生じる可能性を示す図面である。
【図15】センタバー、スペシャルセンターバーのキャ
ラクタチェックを示す図面である。
ラクタチェックを示す図面である。
【図16】センターバーとスペシャルセンターバーとの
見分けがつかない例を示す図面である。
見分けがつかない例を示す図面である。
【図17】同一バーにchr−fフラグとchr−lフ
ラグとが設定された状態を示す図面である。
ラグとが設定された状態を示す図面である。
【図18】第一検索処理の出力結果を示す図面である。
【図19】バーコード検索第二次処理を示すフローチャ
ートである。
ートである。
【図20】バーコード検索第二次処理を示すフローチャ
ートである。
ートである。
【図21】バーコード検索第二次処理を示すフローチャ
ートである。
ートである。
【図22】バーコード検索第二次処理を示すフローチャ
ートである。
ートである。
【図23】検索第二次処理結果を示す図面である。
【図24】バーコード復調処理を示すフローチャートで
ある。
ある。
【図25】バーコード復調処理を示すフローチャートで
ある。
ある。
【図26】バーコード復調処理を示すフローチャートで
ある。
ある。
【図27】バーコード復調処理を示すフローチャートで
ある。
ある。
【図28】バーコード復調処理を示すフローチャートで
ある。
ある。
【図29】バーコード復調処理を示すフローチャートで
ある。
ある。
【図30】δディスタンスを示す図面である。
【図31】δディスタンスを用いたバーコード復調時に
用いられるテーブルの構成を示す図面である。
用いられるテーブルの構成を示す図面である。
【図32】EAN−13とUPC/Eの先頭キャラクタ
のの構成の相違を示す図面である。
のの構成の相違を示す図面である。
【図33】バーコード復調処理の出力を示す図面であ
る。
る。
【図34】復調データバッファの構成を示す図面であ
る。
る。
【図35】格納合成処理を示すフローチャートである。
【図36】格納合成処理を示すフローチャートである。
【図37】合成バッファの構成を示す図面である。
【図38】合成バッファの構成を示す図面である。
【図39】復調データの格納処理と合成処理との関係を
示す図面である。
示す図面である。
【図40】UPC/Eを復調する際の重複桁を示す図面
である。
である。
【図41】ペアリングバッフアの構成を示す図面であ
る。
る。
【図42】一致回数処理を示すフローチャートである。
【図43】走査方向に応じて必要となる有効データ数を
示す図面である。
示す図面である。
【図44】EAN−13とUPC/Eとでキャラクタ長
チェックの度合いを変更することを説明する図面であ
る。
チェックの度合いを変更することを説明する図面であ
る。
【図45】白バー長チェックを示す図面である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI G06K 7/10 G06K 7/10 R (72)発明者 佐藤 伸一 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 川合 弘晃 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 岩口 功 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内
Claims (29)
- 【請求項1】 バーコードを走査して、前記走査された
バーコードから得られるバーコードデータの復調処理を
行なうバーコード読取方法において、 バーコードの特徴を示す特徴点に対応した構成を持つデ
ータを抽出するとともに、 前記データの抽出結果に基づいて、前記バーコードが走
査された種別を判別し、 前記抽出されたデータが特徴点であるか否かのチェック
を行い、 走査種別が予め決められた走査種別であると判別された
場合、前記特徴点チェックの度合いを、その他の走査種
別によりバーコードが走査された場合よりも厳しくする
ことを特徴とする、バーコード読取方法。 - 【請求項2】 前記バーコード読取方法において、 前記走査種別の判別は、 前記特徴点に対応した構成を持つデータを検索し、 前記データの前あるいは後に走査されたキャラクタと前
記データとのいずれか一方に、その走査された順序に応
じて、両者の走査順を示すフラグを設定するよう構成さ
れたことを特徴とする、請求項1記載のバーコード読取
方法。 - 【請求項3】 前記バーコード読取方法において、 前記フラグは、前記キャラクタあるいは前記特徴点に対
応した構成を持つデータを構成するバーのうち、特定の
位置にあるバーに対して付されることを特徴とする、請
求項1記載のバーコード読取方法。 - 【請求項4】 前記バーコード読取方法において、 前記特徴点チェックは、 前記フラグ種別および前記フラグが付されたバーの種類
を判別し、 前記判別されたフラグ種別およびバー種類に基づいて、
前記特徴点種別を判定するよう構成されたことを特徴と
する、請求項3記載のバーコード読取方法。 - 【請求項5】 前記バーコード読取方法において、 種別が判定された特徴点が予め定められた種別の特徴点
である場合、前記キャラクタが隣接している側と逆側に
バーが存在するか否かを判定し、 前記判定結果に基づいて前記判定された特徴点種別が正
しいか否かを判定するように構成されたことを特徴とす
る、請求項4記載のバーコード読取方法。 - 【請求項6】 前記バーコード読取方法において、 互いに異なる走査順を示すフラグが同一のキャラクタあ
るいは特徴点を示すデータに対して付されていた場合、
前記フラグが付されたデータに隣接するキャラクタを含
む複数のキャラクタ同士でキャラクタの長さのチェック
を行い、 前記チェックの結果に基づいていずれの種別のフラグを
有効とすべきかを判断することを特徴とする、請求項2
または3記載のバーコード読取方法。 - 【請求項7】 バーコードを走査し、走査されたバーコ
ードからバーコードの種別に応じた特徴を示すデータを
抽出し、これに基づいてバーコードの復調処理を行なう
バーコード読取方法において、 前記特徴点を示すデータとこれに隣接するキャラクタと
を検出した場合、前記特徴点データと前記キャラクタと
により前記キャラクタのキャラクタ長チェックを行い、 前記特徴点データと前記キャラクタとの一方に、前記特
徴点データと前記キャラクタとの読み取られた順序を示
すフラグを設定することを特徴とする、バーコード読取
方法。 - 【請求項8】 前記バーコード読取方法において、 前記フラグは、前記特徴点データと前記キャラクタのう
ち後から走査されたものに対して付されることを特徴と
する、請求項7記載のバーコード読取方法。 - 【請求項9】 前記バーコード読取方法において、 前記フラグは、前記特徴点データあるいは前記キャラク
タの特定の位置にあるバーに対して付されることを特徴
とする、請求項7または8記載のバーコード読取方法。 - 【請求項10】前記バーコード読取方法において、 前記フラグのうち、第一の読取順序を示すフラグと、前
記第一の読取順序とは異なる第二の読取順序を示すフラ
グとが同一のキャラクタあるいは特徴点データに対して
付されていた場合、前記フラグが付されたデータバーに
隣接するキャラクタを含む複数のキャラクタ間でキャラ
クタの長さのチェックを行い、 前記キャラクタ長チェックに基づいていずれのフラグが
有効なものであるかを判別することを特徴とする、請求
項7乃至9記載のバーコード読取方法。 - 【請求項11】前記バーコード読取方法において、 前記走査されたバーコードを復調する際、前記フラグ
と、前記フラグが付されたデータの種別に基づいてバー
コードが走査された種別を判別し、 前記判別された走査種別に基づいて、複数の復調方法の
中から前記走査種別に対応した復調方法を選択し、 前記バーコードの復調を行なうことを特徴とする、請求
項7乃至10記載のバーコード復調方法。 - 【請求項12】バーコード種別に応じた特徴を示す特徴
点の片側にキャラクタが配列される第一のバーコード
と、特徴点の両側にキャラクタが配置される第二のバー
コードとを読み取り、これらのバーコードの復調処理を
実行するバーコード読取方法であって、 前記特徴点か検出された場合、その前後方向にキャラク
タが存在するか否かを判別し、 前記キャラクタが存在するか否かの判別結果に基づい
て、前記第一のバーコードまたは前記第二のバーコード
が読み取られたのかを判別することを特徴とする、バー
コード読取方法。 - 【請求項13】前記バーコード読取方法において、 前記第一のバーコードにおける特徴点と、前記第二のバ
ーコードにおける特徴点とはそのバー構成が異なり、且
つ一方の特徴点の一部分が他方の特徴点の部分あるいは
全体と同一構成を持っており、前記一方の特徴点の構成
を持つ特徴点データが得られた場合、 前記得られた特徴点データの前後にキャラクタが存在す
るか否かを判定し、 前記判定結果に基づいて前記得られた特徴点データが前
記一方の特徴点なのか前記他方の特徴点なのかを判別
し、 その結果に基づいて読み取られたバーコード種別を判定
し、判定された種別のバーコードに対応した復調方法に
よって前記バーコードを復調することを特徴とする、請
求項12記載のバーコード読取方法。 - 【請求項14】前記バーコード読取方法において、 前記第一のバーコードにおける特徴点と、前記第二のバ
ーコードにおける特徴点とはそのバー構成が異なり、且
つ一方の特徴点の一部分が他方の特徴点の部分あるいは
全体と同一構成を持っており、前記一方の特徴点の構成
を持つ特徴点データが得られた場合、 前記特徴点データの一方の側に、予め決められた値以上
の余白部分が存在するか否かを判定し、 前記判定結果に基づいて前記得られた特徴点の種別およ
び読み取られたバーコード種別を判定し、 判定されたバーコード種別に対応した復調方法により読
み取られたバーコードの復調を行なうことを特徴とす
る、請求項12記載のバーコード読取方法。 - 【請求項15】前記バーコード読取方法において、 互いに隣接するキャラクタ同士でキャラクタ長のチェッ
クを行い、 前記特徴点の両側のそれぞれについて、キャラクタ長チ
ェックが正しいと判別されたキャラクタが連続する数を
計数し、 前記特徴点のそれぞれの側についての前記計数結果に基
づいて、バーコード種別が前記第一のバーコードあるい
は前記第二のバーコードのいずれであるかを判別するこ
とを特徴とする請求項12乃至14記載のバーコード読
取方法。 - 【請求項16】バーコードの特徴を示す特徴点を抽出
し、その結果に基づいてバーコードの復調処理を実行す
るバーコード読取方法において、 第一の特徴点を示すデータと、前記第一の特徴点とは異
なった特徴を示す第二の特徴点とを示すデータが互いに
近接して検出された場合、一方の特徴点と見なされたデ
ータに隣接するキャラクタと、前記隣接するキャラクタ
に更に隣接するキャラクタとの間でキャラクタ長のチェ
ックを行い、 前記キャラクタ長チェックの結果に基づいて、前記検出
された第一の特徴点を示すデータと前記第二の特徴点を
示すデータのうち、いずれを有効なデータとすべきかを
判別することを特徴とするバーコード読取方法。 - 【請求項17】第一の種別のバーコードと、前記第一の
種別とは異なる第二の種別のバーコードとを読み取り、
それぞれのバーコードの復調処理を実行するバーコード
読取方法において、 前記読み取られたバーコードの中から、バーコードの特
徴を示す特徴点を抽出し、 前記2つのバーコード種別に共通する特徴点が抽出され
た場合、前記特徴点に続くキャラクタの構成を判別し、 前記キャラクタ構成の判別結果に基づいて、読み取られ
たバーコードが前記第一の種別であるか第二の種別であ
るかを判別することを特徴とする、バーコード読取装
置。 - 【請求項18】バーコードの部分が走査された読取デー
タを複数組み合わせて合成し、元のバーコードデータを
再生するバーコード読取方法において、 読み取られたバーコードの種別を判別し、 合成処理の対象となる複数のバーコードデータの中で、
互いに重複して走査されたデータの桁数を判別するとと
もに、 読み取られたバーコード種別が第一のバーコード種別で
ある場合には、合成対象となる複数のバーコードの重複
桁数が第一の値以上であることを条件に合成処理を行
い、 読み取られたバーコード種別が第二のバーコード種別で
ある場合には、合成対象となる複数のバーコードの重複
桁数が、前記第一の値よりも大きい第二の値以上である
ことを条件に合成処理を行なうことを特徴とする、バー
コード読取方法。 - 【請求項19】前記バーコード読取方法は更に、 それぞれのバーコードデータの重複データ中に、互いに
同一であるデータが存在するか否かを判別するととも
に、 読み取られたバーコード種別に関わらず、前記同一デー
タが前記第一の値と同一の値である第三の値以上である
ことを条件に合成処理を行なうことを特徴とする、請求
項18記載のバーコード読取方法。 - 【請求項20】バーコードの部分が走査された読取デー
タを複数組み合わせて合成し、元のバーコードデータを
再生するとともに、合成されたデータを比較して、同一
の合成データが予め定められた個数得られた場合に読取
成功と判断するバーコード読取方法において、 読み取られたバーコードの種別を判別し、 読み取られたバーコード種別が第一の種別であった場
合、前記第一の種別とは異なる第二の種別の場合に読取
成功の条件となる同一合成データ個数よりも多い数の同
一合成データが得られた場合に、読取成功と判断するこ
とを特徴とするバーコード読取方法。 - 【請求項21】光源を備え、光源から出射される光線に
よりバーコードを照射し、バーコードからの反射光を受
光手段により受光して、得られたバーコードデータに対
する復調処理を実行するバーコード読取装置において、 前記受光手段から出力される信号に基づいて、読み取ら
れたバーコードを構成するバーの幅を計数するバー幅カ
ウンタと、 前記バー幅カウンタから出力されるカウント値に基づい
て、特徴的な構成を持つ特徴点データを検出する検出部
と、 前記検出部により検出された特徴点データに基づいて判
別されるバーコード種別に対応した復調方法により、前
記バーコードデータの復調処理を行なう復調部と、 前記読み取られたバーコードデータが前記バーコードの
一部分にあたるものである場合、複数の部分バーコード
データを合成して一つのバーコードデータを再生する合
成部と、 前記合成部による合成処理が行なわれた場合、合成処理
の結果得られた同一の値を持つ復調データが得られた回
数をチェックする一致回数チェック部と、を備え、 前記判別されるバーコード種別に応じて、必要とされる
一致回数を変更することを特徴とするバーコード読取装
置。 - 【請求項22】光源を備え、光源から出射される光線に
よりバーコードを照射し、バーコードからの反射光を受
光手段により受光して、得られたバーコードデータに対
する復調処理を実行するバーコード読取装置において、 前記受光手段から出力される信号に基づいて、読み取ら
れたバーコードを構成するバーの幅を計数するバー幅カ
ウンタと、 前記バー幅カウンタから出力されるカウント値に基づい
て、特徴的な構成を持つ特徴点データを検出し、前記特
徴点データに隣接するキャラクタと前記特徴点との読み
取られた順序に応じて、前記キャラクタあるいは前記特
徴点データに対して読取順序を示すフラグを付して出力
する検出部と、 前記カウント値と前記フラグとを格納する第一のバッフ
ァと、 前記バッファより前記フラグが付されたデータを検索
し、前記フラグに応じて前記特徴点の種別を判別する検
索部と、 前記検索部により判別された特徴点種別に対応するバー
コード種別の復調方法に基づいて、バーコードデータの
復調処理を行なう復調部と、を備えたことを特徴とする
バーコード読取装置。 - 【請求項23】前記バーコード読取装置において、 前記検出部は、読み取られた順序に応じて、予め決めら
れた読取順にあたるキャラクタあるいは特徴点データに
対してフラグを付すことを特徴とする、請求項22記載
のバーコード読取装置。 - 【請求項24】前記バーコード読取装置において、 前記検出部は、前記キャラクタあるいは特徴点データを
構成するバーのうち、特定位置にあるバーに対してフラ
グを設定することを特徴とする、請求項22または23
記載のバーコード読取装置。 - 【請求項25】前記バーコード読取装置において、 前記検索部は、前記フラグ種別と、前記フラグが付され
たバーの種別とに基づいて、バーコードの読取種別およ
び前記特徴点データが示す特徴点の種別を判定すること
を特徴とする、請求項24記載のバーコード読取装置。 - 【請求項26】前記バーコード読取装置において、 前記検索部は、前記判定されたバーコード読取種別が予
め決められた読取種別である場合、検出された特徴点デ
ータの前記キャラクタが隣接する側とは逆の側にバーコ
ードを構成するバーが存在するか否かを判定し、 前記判定結果に基づいて前記判定された特徴点種別が正
しいか否かを判定する機能を有することを特徴とする請
求項25記載のバーコード読取装置。 - 【請求項27】前記バーコード読取装置において、 前記検索部は、互いに異なる読取順序を示すフラグが同
一のバーに対して付されている場合、前記バーが含まれ
る特徴点データに隣接するキャラクタを含む複数のキャ
ラクタ相互のキャラクタの長さをチェックし、その結果
に基づいて有効とすべきフラグ種別を判定する機能を有
することを特徴とする請求項25記載のバーコード読取
装置。 - 【請求項28】光源を備え、光源から出射される光線に
よりバーコードを照射し、バーコードからの反射光を受
光手段により受光して、得られたバーコードデータに対
する復調処理を実行するバーコード読取装置において、 前記受光手段から出力される信号に基づいて、読み取ら
れたバーコードを構成するバーの幅を計数するバー幅カ
ウンタと、 前記バー幅カウンタから出力されるカウント値に基づい
て、特徴的な構成を持つ特徴点データを検出する検出部
と、 前記検出部により検出された特徴点データに基づいて判
別されるバーコード種別に対応した復調方法により、前
記バーコードデータの復調処理を行なう復調部と、 前記読み取られたバーコードデータが前記バーコードの
一部分にあたるものである場合、複数の部分バーコード
データを合成して一つのバーコードデータを再生する合
成部と、を備え、 前記合成部は更に、合成対象となる複数のバーコードデ
ータのうち、互いに重複する桁数が予め定められた桁数
以上であるか否かを判定し、 前記判定された桁数が前記予め定められた桁数以上であ
る場合合成処理を実行するとともに、 前記バーコードが予め定められた種別のバーコードであ
ると判別された場合、合成処理を実行するために必要と
される重複桁数が、その他の種別のバーコードに対する
合成処理時に必要とされる重複桁数よりも多い数存在し
た場合に、合成処理を実行する機能を有することを特徴
とする、バーコード読取装置。 - 【請求項29】光源を備え、光源から出射される光線に
よりバーコードを照射し、バーコードからの反射光を受
光手段により受光して、得られたバーコードデータに対
する復調処理を実行するバーコード読取装置において、 前記受光手段から出力される信号の値が一方の値から他
方の値に反転したときに発生する第一の信号と、前記他
方の値から前記一方の値に反転するときとに発生する第
二の信号との間隔を計数することにより、バーコードを
構成するバーの幅を計数するとともに、前記信号のうち
同じ種類の信号が連続して発生した場合には、それを示
す第三の信号を出力するバー幅カウンタと、 前記バー幅カウンタから出力されるカウント値に基づい
て、特徴的な構成を持つ特徴点データを検出する検出部
と、 前記検出部により検出された特徴点データに基づいて判
別されるバーコード種別に対応した復調方法により、前
記バーコードデータの復調処理を行なう復調部と、 前記復調部による復調結果が一致した回数を計数し、一
致回数と予め定められた値とを比較して読取成功の可否
を判定する一致回数チェック部と、を備え、 前記バー幅カウンタより前記第三の信号が出力されてい
た場合、前記一致回数チェック部において必要とされる
一致回数を、前記第三の信号が出力されていない場合よ
りも多い回数に変更することを特徴とする、バーコード
読取装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8285648A JPH10134130A (ja) | 1996-10-28 | 1996-10-28 | バーコード読取方法およびバーコード読取装置 |
US08/873,719 US5942740A (en) | 1996-10-28 | 1997-06-12 | Method and apparatus for reading bar codes |
EP97304819A EP0838775B1 (en) | 1996-10-28 | 1997-07-02 | A method of reading a bar code |
DE69733300T DE69733300T2 (de) | 1996-10-28 | 1997-07-02 | Verfahren zum Lesen eines Strichkodes |
KR1019970031643A KR100242731B1 (ko) | 1996-10-28 | 1997-07-09 | 바코드 판독 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8285648A JPH10134130A (ja) | 1996-10-28 | 1996-10-28 | バーコード読取方法およびバーコード読取装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10134130A true JPH10134130A (ja) | 1998-05-22 |
Family
ID=17694262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8285648A Pending JPH10134130A (ja) | 1996-10-28 | 1996-10-28 | バーコード読取方法およびバーコード読取装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5942740A (ja) |
EP (1) | EP0838775B1 (ja) |
JP (1) | JPH10134130A (ja) |
KR (1) | KR100242731B1 (ja) |
DE (1) | DE69733300T2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012048486A (ja) * | 2010-08-26 | 2012-03-08 | Toshiba Tec Corp | コード読取装置およびプログラム |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7387253B1 (en) | 1996-09-03 | 2008-06-17 | Hand Held Products, Inc. | Optical reader system comprising local host processor and optical reader |
US6543691B1 (en) * | 1995-01-03 | 2003-04-08 | Jerome H. Lemelson | Method and apparatus for encoding and decoding bar codes with primary and secondary information and method of using such bar codes |
US20040004128A1 (en) * | 1996-09-03 | 2004-01-08 | Hand Held Products, Inc. | Optical reader system comprising digital conversion circuit |
US6243618B1 (en) * | 1997-10-30 | 2001-06-05 | Honda Giken Kogyo Kabushiki Kaisha | Method of marking number or the like and apparatus for marking the same |
US6454168B1 (en) | 1998-09-14 | 2002-09-24 | Psc Scanning, Inc. | Correlation and stitching techniques in a bar code scanning system |
US6585157B2 (en) * | 1998-09-14 | 2003-07-01 | Psc Scanning, Inc. | Symbology determination to aid decoding in a bar code scanning system |
US6513714B1 (en) | 1998-09-14 | 2003-02-04 | Psc Scanning, Inc. | Character reconstruction and element level processing in bar code scanning system |
JP3994595B2 (ja) * | 1998-11-16 | 2007-10-24 | 株式会社デンソー | バーコード読取方法及び記録媒体 |
JP3548025B2 (ja) * | 1998-12-17 | 2004-07-28 | 富士通株式会社 | バーコード読取装置および方法 |
JP3640573B2 (ja) * | 1999-07-27 | 2005-04-20 | 日立コンピュータ機器株式会社 | バーコード読取り方法及びバーコード読取りシステム |
US7044382B2 (en) * | 2002-06-28 | 2006-05-16 | Fujitsu Limited | Bar-code reader and computer product |
JP4254724B2 (ja) * | 2005-02-16 | 2009-04-15 | 株式会社デンソーウェーブ | バーコード読取り方法及びコンピュータプログラム |
US20080205553A1 (en) * | 2007-02-27 | 2008-08-28 | Continental Automotive Systems Us, Inc. | Reconstruction of tire pressure monitoring signals |
EP1975849B1 (en) * | 2007-03-27 | 2011-04-27 | Casio Computer Co., Ltd. | Bar-code reading apparatus and computer-readable medium |
US8668149B2 (en) * | 2009-09-16 | 2014-03-11 | Metrologic Instruments, Inc. | Bar code reader terminal and methods for operating the same having misread detection apparatus |
CN102034073B (zh) * | 2009-09-25 | 2013-11-06 | 神基科技股份有限公司 | 条形码辨识方法及条形码辨识装置 |
JP5515012B2 (ja) * | 2010-03-13 | 2014-06-11 | 日本電産サンキョー株式会社 | バーコード情報読取方法及びバーコード情報読取装置 |
CN110059519B (zh) * | 2019-04-23 | 2022-10-11 | 福州符号信息科技有限公司 | 一种带有安全等级处理的条码识读方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4717818A (en) * | 1986-06-26 | 1988-01-05 | International Business Machines Corporation | Bar code label identification circuit |
JPH07101437B2 (ja) * | 1988-06-21 | 1995-11-01 | アルプス電気株式会社 | 符号読取装置 |
DE69022533T2 (de) * | 1989-05-17 | 1996-02-01 | Fujitsu Ltd | Strichcode-leseverfahren und -vorrichtungen. |
EP0498678B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | High speed scan bar code reader which can read more than one type of bar code |
EP0502440B1 (en) * | 1991-03-04 | 2003-12-10 | Fujitsu Limited | Bar-code reading apparatus and method |
US5457308A (en) * | 1993-09-14 | 1995-10-10 | Symbol Technologies, Inc. | Bar code scan stitching |
JPH09161001A (ja) * | 1995-12-05 | 1997-06-20 | Fujitsu Ltd | バーコード読取装置 |
-
1996
- 1996-10-28 JP JP8285648A patent/JPH10134130A/ja active Pending
-
1997
- 1997-06-12 US US08/873,719 patent/US5942740A/en not_active Expired - Lifetime
- 1997-07-02 EP EP97304819A patent/EP0838775B1/en not_active Expired - Lifetime
- 1997-07-02 DE DE69733300T patent/DE69733300T2/de not_active Expired - Lifetime
- 1997-07-09 KR KR1019970031643A patent/KR100242731B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012048486A (ja) * | 2010-08-26 | 2012-03-08 | Toshiba Tec Corp | コード読取装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP0838775A3 (en) | 2000-08-09 |
US5942740A (en) | 1999-08-24 |
KR100242731B1 (ko) | 2000-02-01 |
EP0838775A2 (en) | 1998-04-29 |
DE69733300D1 (de) | 2005-06-23 |
KR19980032216A (ko) | 1998-07-25 |
EP0838775B1 (en) | 2005-05-18 |
DE69733300T2 (de) | 2006-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10134130A (ja) | バーコード読取方法およびバーコード読取装置 | |
US5128527A (en) | Apparatus for reading a bar code | |
US4748317A (en) | Optical reader | |
US4988852A (en) | Bar code reader | |
EP1086439B1 (en) | Techniques for reading postal codes | |
CA2267892C (en) | Method and apparatus for decoding bar code symbols using ratio analysis of module size | |
EP0322920A2 (en) | Optical character reader | |
US6729603B1 (en) | Add-on capture rate in a barcode scanning system | |
JPS6156552B2 (ja) | ||
US20040004124A1 (en) | Add-on capture rate in a barcode scanning system | |
JPH0512487A (ja) | バーコード文字の光学的認識システム及び認識方法 | |
EP0576220B1 (en) | Bar-code reader device | |
US5189289A (en) | Distinguishing bar code types by comparing bar block sizes | |
KR100308415B1 (ko) | 바코드판독장치,바코드판독방법및컴퓨터판독가능매체 | |
JP3448404B2 (ja) | バーコード読取装置及びバーコード読取方法 | |
EP0144202A2 (en) | Optical reader | |
JP2836773B2 (ja) | バーコードデータ検出方法及び装置 | |
JP3560477B2 (ja) | バーコード読取装置及びバーコード読取方法 | |
JP3404887B2 (ja) | バーコード読取装置 | |
JP2730273B2 (ja) | バーコード読取装置およびバーコード読取方法 | |
JPH09128477A (ja) | バーコード読み取り方法及び装置 | |
JP3606228B2 (ja) | バーコード読取装置 | |
JPH08180126A (ja) | バーコード読取方法およびバーコード読取装置 | |
JP2953143B2 (ja) | バーコード読取装置およびバーコード読取方法 | |
JP2839836B2 (ja) | バーコード読取装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20020903 |