JP3576356B2 - バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 - Google Patents

バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 Download PDF

Info

Publication number
JP3576356B2
JP3576356B2 JP21474397A JP21474397A JP3576356B2 JP 3576356 B2 JP3576356 B2 JP 3576356B2 JP 21474397 A JP21474397 A JP 21474397A JP 21474397 A JP21474397 A JP 21474397A JP 3576356 B2 JP3576356 B2 JP 3576356B2
Authority
JP
Japan
Prior art keywords
data
demodulated data
demodulated
bar
cpu
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.)
Expired - Lifetime
Application number
JP21474397A
Other languages
English (en)
Other versions
JPH1153464A (ja
Inventor
光雄 渡辺
功 岩口
伸一 佐藤
弘晃 川合
元彦 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Fujitsu Frontech Ltd
Original Assignee
Fujitsu Ltd
Fujitsu Frontech Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd, Fujitsu Frontech Ltd filed Critical Fujitsu Ltd
Priority to JP21474397A priority Critical patent/JP3576356B2/ja
Priority to US09/046,577 priority patent/US6070801A/en
Priority to EP98302709A priority patent/EP0896292A3/en
Publication of JPH1153464A publication Critical patent/JPH1153464A/ja
Priority to US09/513,467 priority patent/US6283370B1/en
Application granted granted Critical
Publication of JP3576356B2 publication Critical patent/JP3576356B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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

Description

【0001】
【発明の属する技術分野】
本発明は、UPCコード,EANコード,JANコードのように、両端及び中央に識別バーが配置されるとともに、各識別バーの間に2ブロックのデータキャラクタが挟まれてなるバーコードを読み取る読取装置及び読取方法,並びに、そのような読取のためのプログラムを格納するコンピュータ可読媒体に関し、特に、バーコードを部分的に読み取って得られた複数の復調データを合成してバーコード全体による復調データを再現することができる読取装置及び読取方法,並びに、そのような読取のためのプログラムを格納するコンピュータ可読媒体に関する。
【0002】
【従来の技術】
近年、流通業等におけるPOSシステムに代表されるように、商品等の管理をバーコードによって行うことが一般化している。例えば、商店のPOSシステムでは、商品の種類や販売価格等の情報をバーコードのフォーマットにコード化して商品に印刷しておく。そして、レジにてこのバーコードを読み取ることによって、精算を行うとともに、商品の売り上げ数をリアルタイムで集計し、在庫管理や仕入れ管理に役立てるようにしている。
【0003】
このようなバーコードは、JANコード,UPCコード,EANコード等の固定長コードと、可変長のセカンドコードに大別される。この固定長コードは、左端に付加されるスタートガードバー(SGB),中間部に挿入されるセンターバー(CB),及び、右端に付加されるエンドガードバー(EGB)を有し、スタートガードバーとセンターバーとの間に6キャラクタ又は4キャラクタのデータキャラクタからなる左データブロックを格納し、センターバーとエンドガードバーとの間に6キャラクタ又は4キャラクタのデータキャラクタからなる右データブロックを格納している。これら各ガードバー及びセンターバーは、予め規格によってそのパターンが定められているので、バーコードの読取装置は、これらガードバー及びセンターバーを検知することができる。
【0004】
また、バーコード読取装置は、これらガードバー及びセンターバーを手掛かりに、バーコードのデータキャラクタ(コード化した数値又は記号の最小単位)を読み取ることができる。この読み取りの方式としては、連続読み取り,ブロック読み取り,及び、分割読み取りの3通りの方式がある。この連続読み取りとは、一回のバーコード走査によって両ガードバー及びセンターバーを検出した場合に、各バーに挟まれたデータキャラクタを、バーコードとして認識して復調する方式である。また、ブロック読み取りとは、一方のガードバーとセンターバーに囲まれたデータキャラクタのブロックのみをバーコードとして認識し、2つのブロックを夫々別個に復調した後でこれら各ブロックの復調データを合成(結合)し、一個のバーコードに対応する復調データとして再現する方式である。また、分割読み取りとは、最小限1個のガードバー又はセンターバーに連接するデータキャラクタ列であってもバーコードとして認識し、夫々別個に読み出したこれらデータキャラクタの復調データの断片を合成し、一個のバーコード全体に対応する復調データを再現する方式である。
【0005】
上記したブロック読み取りは、バーコードの各ガードバーとセンターバーとに挟まれたデータキャラクタのみを有効とみなして周囲のデータから抽出するので、バーコード以外の部分に基づくデータ等のノイズは効率よく除去される。よって、ブロックデータの誤読の可能性が少なく、それ故、バーコード復調処理時間も短くて済む。従って、従来、ソースマーキングが困難な生鮮食料品等に対して小売店等内で付されるインストアマーキングのバーコードに関しては、誤読防止のために、連続読み取り又はブロック読み取りに基づいて同一の復調データが2回以上再現された場合にのみ、データ復調が完了したものと取り扱っていた。
【0006】
【発明が解決しようとする課題】
しなしながら、インストアマーキングは、バーコードを印刷した紙製ラベルを商品の表面又は商品の包装に貼り付けることによって行われるので、バーコード読み取り時において商品又は商品の包装の皺等に因りバーコードが歪んでしまう場合が多い。従って、1度のバーコード走査でブロックデータを復調できる可能性は少ない。その結果、ブロック読み取りに基づいて同一の復調データが2回以上再現され終わるまでには、長時間を要してしまっていた。
【0007】
この問題を解決するために、単純に、ブロック読み取りによってバーコード全体に対応する復調データが1回再現された場合に直ちにデータ復調が完了したものと取り扱うことも、考えられる。しかしながら、そのような解決方法では、以下に説明するような右ブロックの逆読みに因る誤読を排除できない。
【0008】
つまり、上述の固定長コードでは、図15に示すように、センターバー(CB)が白黒白黒白の5モジュールで構成される一方、エンドガードバー(EGB)は黒白黒の3モジュールで構成される。そのため、図15に示すように、エンドマージンが1モジュール分しか無い場合に、走査ビームが左ブロックの第6キャラクタ(C6)に掛かることなくセンターバー(CB)からバーコードを走査し始める(若しくは、センターバー(CB)にてバーコードを走査し終わる)と、エンドマージン〔白〕+エンドガードバー〔黒白黒〕+第12キャラクタの7モジュール目(白)がセンターバー〔白黒白黒白〕と同じパターンとなり、センターバーの2モジュール目乃至4モジュール目〔黒白黒〕がエンドガードバー〔黒白黒〕と同じパターンとなってしまう。しかも、図16又は図17に示す場合のように、第7モジュールが1モジュールのみで白バーを構成する様なデータキャラクタ(E−0,E−1,E−5)のみから右ブロックが構成されている場合には、各データキャラクタ間の境を6モジュール目と7モジュール目との間にずらして逆から読んでも、見かけ上、1ブロック分のデータキャラクタ列を構成してしまう(但し、E−0とE−5とが互いに入れ替わってしまう)。従って、復調装置は、バー幅データの外見に基づいて走査のなされた方向を区別することができないので、ある方向に走査がなされたことによって生じたバー幅データ群を、その走査がなされた方向とは逆の方向に走査がなされたことによって生じたバー幅データとして復調してしまう可能性がある。この場合、上述したように、E−0とE−5とが入れ替わるので、復調された復調データは本来のものとは全く違ったものとなってしまう。これが、右ブロックの逆読みに因る誤読である。なお、センターバー(CB)とガードバー(SGB)との入れ替わりは左ブロックでも生じうるが、左ブロックにおいては、右ブロックが偶数パリティのデータキャラクタから構成されているのと異なり、奇数パリティのデータキャラクタも含まれ、しかも、偶数パリティのデータキャラクタと奇数パリティのデータキャラクタとの配列が規約により所定の配列に制限されているので、逆読みに因る誤読は生じない。
【0009】
本発明は、以上のような問題に鑑みてなされたものであり、一旦ブロック読み取り又は分割読み取りによって得られた復調データに基づいてバーコード全体に対応する復調データが再現された際には、右ブロックについてのみ、複数の復調データが重複しているかどうかをチェックすることにより、右ブロックの逆読みに因る誤読を生じることなく短時間で復調を完了させることができるバーコード読取装置及びバーコード読取方法,並びに、そのような読取のためのプログラムを格納するコンピュータ可読媒体の提供を、課題とする。
【0010】
【課題を解決するための手段】
本発明は、上記課題を解決するため、下記の手段を採用した。
即ち、請求項1記載の発明は、図1の原理図に示した通り、固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードBを走査して、その走査軌跡における明暗パターンを検出するとともに、この明暗パターンに基づいて前記バーコードBにコード化されているデータを復調するバーコード読取装置であって、前記3本の識別バーのうち少なくとも1本を通過する各走査軌跡における明暗パターンを夫々復調することによって複数の復調データを得る復調手段100と、前記復調手段100によって得られた複数の復調データを合成して、前記バーコードB全体に対応する復調データを再現する復調データ合成手段101と、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを前記復調手段100が夫々復調することによって得られた複数の復調データが、そのブロック内において少なくとも部分的に重複しているか否かを判定する重複判定手段103と、前記重複判定手段103によって重複していると判定された前記複数の復調データにおける重複部分が、互いに一致しているか否かを判定する一致判定手段104と、前記一致判定手段104によって前記重複部分が互いに一致していると判定された場合にのみ、前記復調データ合成手段101によって再現された復調データを有効化する復調データ有効化手段102とを備えたことを特徴とする。
【0011】
以上のように構成されると、復調手段は、前記3本の識別バーのうち少なくとも1本を通過する各走査軌跡における明暗パターンを夫々復調することによって、複数の復調データを得る。復調データ合成手段は、これら複数の復調データを合成することによって、前記バーコード全体に対応する復調データを再現する。一方、重複判定手段は、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンに基づいて得られた複数の復調データが、そのブロック内において少なくとも部分的に重複しているか否かを、判定する。この判定の結果、互いに重複していると判定された場合には、一致判定手段は、各復調データにおける重複部分が互いに一致しているか否かを、判定する。この判定の結果、各復調データにおける復調部分が互いに一致していると判定された場合にのみ、復調データ有効化手段は、復調データ合成手段によって再現された復調データを有効化する。このようにバーコード全体に対応する復調データが複数回にわたって再現されなくても、特定のブロックを読み取って得られた複数の復調データが少なくとも部分的に互いに一致していさえすれば、一旦合成された復調データが有効化される。従って、バーコード全体に対応する復調データの再現が、再現結果の信頼度を落とすことなく、短時間で完了する。
【0012】
本発明のバーコード読取装置によって読み取られるバーコードとしては、例えば、UPCコード,JANコード,EANコード,等の固定長コードが、例示される。
【0013】
重複判定手段は、復調データ合成手段がバーコード全体に対応する復調データを再現するために合成した複数の復調データに関して、前記ブロック内において重複しているかどうかの判定を行っても良いし、復調データ合成手段がバーコード全体に対応する復調データを再現するために合成した復調データの何れか一つ,及び、その合成後に得られた復調データに関して、前記ブロック内において重複しているかどうかの判定を行っても良い。また、重複判定手段は、重複部分が1キャラクタ以上あった全ての場合において重複しているとの判定を行っても良いし、重複部分が複数個あった場合のみ重複しているとの判定を行っても良い。
【0014】
請求項2記載の発明は、請求項1のバーコードがUPCコード,JANコード又はEANコードであり、前記各識別バーが夫々スタートガードバー,センターバー及びエンドガードバーであることで、特定したものである。
【0015】
請求項3記載の発明は、請求項2における何れか一方のブロックが、前記センターバー及びエンドガードバーに挟まれているブロックであることで、特定したものである。
【0016】
請求項4記載の発明は、請求項1の重複判定手段が、前記復調データ合成手段が前記復調データを合成した後において前記復調手段が得た復調データ,及び、前記復調データ合成手段によって合成された何れかの復調データが前記何れか一方のブロック内において少なくとも部分的に重複しているか否かを判定することで、特定したものである。
【0017】
請求項5記載の発明は、請求項1の重複判定手段が、前記復調データ合成手段によって合成された複数の復調データが、前記何れか一方のブロック内において少なくとも部分的に重複しているか否かを判定することで、特定したものである。
【0018】
請求項6記載の発明は、請求項1の重複判定手段が、前記複数の復調データが3キャラクタ以上重複している場合に、重複しているものとして判定することで、特定したものである。
【0019】
請求項7記載の発明は、固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードを走査して、その走査軌跡における明暗パターンを検出するとともに、この明暗パターンに基づいて前記バーコードにコード化されているデータ群を復調するバーコード読取方法であって、前記3本の識別バーのうち少なくとも1本の識別バーを通過する各走査軌跡における明暗パターンを夫々復調し、前記明暗パターンを復調することによって得られた複数の復調データを合成して、前記バーコード全体に対応する復調データを再現し、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを復調することによって得られた複数の復調データがそのブロック内において少なくとも部分的に重複しているとともに、各復調データにおける重複部分が互いに一致している場合に限り、前記バーコード全体に対応する復調データを有効化することを特徴とする。
【0020】
請求項8記載の発明は、固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードを走査することによって得られた明暗パターンデータが入力されるコンピュータに対して、前記3本の識別バーのうち少なくとも1本の識別バーを通過する各走査軌跡における明暗パターンデータを夫々復調させ、前記明暗パターンを復調することによって得られた複数の復調データを合成して、前記バーコード全体に対応する復調データを再現させ、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを復調することによって得られた複数の復調データがそのブロック内において少なくとも部分的に重複しているか否かを判定させ、前記複数の復調データが前記ブロック内において少なくとも部分的に重複していると判定された場合に、その重複部分が互いに一致しているか否かを判定させ、前記重複部分が互いに一致していると判定された場合にのみ、前記バーコード全体に対応する復調データを有効化させるプログラムを格納したコンピュータ可読媒体である。
【0021】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施の態様の説明を行う。
図2は、本発明によるバーコード読取装置の実施の形態の概略構成を示すブロック図である。本実施形態によるバーコード読取装置は、UPCコードのフォーマットに従って商品20に関するデータをコード化したバーコード21(即ち、固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコード)を読み取る装置である。
(全体構成)
図2において、バーコード読取装置は、互いにバスBによって接続されたCPU1,バー幅データ群格納バッファ2,制御部回路3,インタフェース回路4,ROM5,復調データ一時待避バッファ6,及び復調データ格納バッファ7,バー幅データ群格納バッファ2に接続されたバー幅カウンタ16及びレーザービームの開始終了検出器17,バー幅カウンタ16に接続されたクロック19及びA/D変換器15,このA/D変換器15に接続された受光素子18,制御部回路3に夫々接続されたモータ駆動回路8,レーザ駆動回路9,スピーカ10及びLED11,モータ駆動回路8に接続されたモータ12,このモータ12によって駆動される走査光学系14,並びに、レーザ駆動回路9に接続された半導体レーザ13から、構成されている。
【0022】
ROM5は、バーコード認識/復調処理プログラムを格納しているコンピュータ可読媒体としての読み出し専用メモリである。
コンピュータであるCPU1は、ROM5内に格納されているバーコード認識/復調処理プログラムを実行することにより、バーコード読取装置全体の制御を行うとともに、復調手段,復調データ合成手段,重複判定手段,一致判定手段,及び復調データ有効化手段として機能して、バーコード21を読み取って得られたバー幅データ群を復調する。
【0023】
インタフェース回路4は、バスBのステータスを制御したり、外部装置へのデータ送信等を制御する回路である。
制御部回路3は、モータ駆動回路8,レーザ駆動回路9,スピーカ10,及び発光ダイオード(LED)11を制御する回路である。このモータ駆動回路8は、モータ12を駆動して、走査光学系14を構成する図示せぬポリゴンミラーを回転させる。また、レーザ駆動回路9は、半導体レーザ13を駆動して、レーザビームLを出射させる。また、スピーカ10は、バーコードの読取(復調)完了を示す音声を発する。また、発光ダイオード11は、バーコードの復調の結果得られた商品20の販売価格等の情報を表示する表示素子である。
【0024】
半導体レーザ13から出射されたレーザビームLは、走査光学系14に入射されて、この走査光学系14によって偏向される。即ち、この走査光学系14は、モータ12によって回転される図示せぬポリゴンミラーによってレーザビームLを一方向に偏向する。このポリゴンミラーの反射側には、複数の固定ミラーが固定されている。従って、ポリゴンミラーによって偏向されたレーザビームLは、各固定ミラーによって再度反射され、その偏向方向(走査方向)が様々な方向に変えられる。この走査光学系14によると、ポリゴンミラーの一反射面による偏向周期内で、複数の方向へのレーザビーム走査が連続的に高速で行われる。このポリゴンミラーの一反射面による偏向周期内でなされる複数のレーザビーム走査の夫々を、以下、「一走査」という。
【0025】
このようにして走査されたレーザビームLが商品20の表面(バーコード21を含む)に当たると、この表面においてレーザビームLが乱反射され、その反射光Rの一部が受光素子(ホトダイオード)18に受光される。A/D変換器15は、この受光素子18によって受光された反射光Rの明暗を示す電流値を、所定のしきい値と比較して、二値化信号に変換する。この二値化信号は、反射光Rの強度がバーコード21中の黒バーの反射率に対応する場合には“H”を示し、反射光Rの強度がバーコード21中の白バーの反射率に対応する場合には“L”を示す。
【0026】
バー幅カウンタ16は、A/D変換器15から入力された二値化信号に基づいて、二値化信号の立ち上がりタイミングから立ち下がりタイミングまでの時間(バーコード21中の黒バーの幅に対応するものと期待される),及び、二値化信号の立ち下がりタイミングから立ち上がりタイミングまでの時間(バーコード21中の白バーの幅に対応するものと期待される)を測定する。なお、バー幅カウンタ16は、これらバー幅に対応する時間を計測するためにクロック19からのクロック数をカウントする。バー幅カウンタ16から出力される各バーの読取データは、このカウント値と白又は黒を示す色識別信号とを組み合わせた形態であり、レーザービームの一走査毎に、このような読取データが連続的に出力される。このように連続的に出力される一走査毎の読取データを「バー幅データ群」という。
【0027】
バー幅カウンタ16から出力されたバー幅データ群は、レーザビーム開始終了検出回路17に入力される。このレーザビーム開始終了検出回路17は、バー幅データ群の状態を検査し、一走査中におけるレーザビームの走査開始時点及び走査終了時点を検出して、これら開始時点及び終了時点を示す情報をバー幅データ群に付加する。
【0028】
レーザビームの走査開始時点及び走査終了時点を示す情報が付加されたバー幅データ群は、バー幅データ群格納バッファ2に一時格納される。このバー幅データ群格納バッファ2は、バー幅カウンタ16から入力されたバー幅データ群を順次格納するとともに、CPU1からの求めに応じて、格納した順に一個づつこのバー幅データ群をCPU1に渡す。
【0029】
復調データ一時待避バッファ6は、バー幅データ群に対する復調処理の結果得られた復調データを一時的に格納するメモリである。また、復調データ格納バッファ7は、合成の完了したバーコードに対応する復調データを格納するメモリである。なお、この復調データ格納バッファ7内に格納されている復調データには、後述するモジュラス10チェックの結果がOKとなった復調データ(モジュラス10−OKデータ)であるか否かを示すモジュラス10−OKフラグが付される。
(バー幅データ群)
次に、バー幅データ群格納バッファ2に格納されるバー幅データ群を、図11乃至図14を参照して説明する。図11乃至図14に示す各横線は、レーザビームLの走査軌跡を示す。
【0030】
これら矢印のうち、図11のA及びC,図12のA及びC,並びに、図14のAは、識別バーとしてのスタートガードバー(SGB),センターバー(CB),及びエンドガードバー(RGB)のうちの一つのみを通過する軌跡であるので、これら軌跡に沿ったレーザビームLの走査によって読み出されたバー幅データ群は、識別バーを1本通過する走査軌跡における明暗パターンであり、分割読み取りによるバー幅データ群となる。
【0031】
また、図13のAは、スタートガードバー(SGB)及びセンターバー(CB)を含め左ブロックの全キャラクタを通過する軌跡であり、図11のB,図12のB,図13のB,及び図14のCは、センターバー(CB)及びエンドガードバー(EGB)を含め右ブロックの全キャラクタを通過する軌跡である。従って、読み出されたバー幅データ群は、識別バーを2本通過する走査軌跡における明暗パターンであり、ブロック読み取りによるバー幅データ群となる。
【0032】
また、図示はしていないが、スタートガードバー(SGB),センターバー(CB),及びエンドガードバー(EGB)の全てを通過する軌跡によれば、読み出されたバー幅データ群は、全てのデータキャラクタを連続的に読み取ったものとなる。即ち、このようなバー幅データ群は、識別バーを3本通過する走査軌跡における明暗パターンであり、連続読み取りによるバー幅データ群となる。
(復調アルゴリズム)
次に、UPCコードを復調するための一般的アルゴリズムの概略を説明する。UPCコードの各データキャラクタは、図8に示すように、7個のモジュール(各モジュールは単位長を有する)の夫々を適宜白又は黒に割り振って2本の白バーと2本の黒バーの組み合わせとして構成したものである。CPU1の復調部は、各キャラクタの末尾の黒バー(B1)とその直前の白バー(B2)とを合わせた長さ(T1モジュール)と、この白バー(B2)とその直前の黒バー(B3)とを合わせた長さ(T2モジュール)とを、算出する。これらT1モジュール及びT2モジュールは、「δディスタンス」と呼ばれる。なお、以上の各バーの配列は、左ブロック中のデータキャラクタにおけるものであり、右ブロック中のデータキャラクタにおいては、白バーと黒バーの配列が全く逆となる。
【0033】
CPU1の復調部は、これらT1モジュールびT2モジュールの各々のモジュール数に基づいて、図9に示す距離復調テーブルを参照し、対応するコードデータを読み出すのである。なお、図9に示す各コードデータの「E−」は偶数パリティのキャラクタであることを示し、「O−」は奇数パリティのキャラクタであることを示す。
【0034】
なお、図9に示す距離復調テーブルでは、T1モジュール及びT2モジュールのモジュール数が3又は4である場合には、対応するコードデータが2種類づつあり、これらのうちの何れであるかを特定することができない。その場合には、最も右側のバー(B1)のモジュール数と2番目のバー(B3)のモジュール数とに基づいて図10に示すバー幅復調テーブルを参照して、何れのコードデータに対応するかを特定するのである。例えば、図8に示すキャラクタA及びキャラクタBは、図9に示す距離復調テーブルを参照することによって、何れも“O2”又は“O8”に対応すると判断されるが、さらに、図10に示すバー幅復調テーブルを参照することによって、キャラクタAが“O2”に対応してキャラクタBが“O8”に対応すると特定される。
(バーコード認識/復調処理)
次に、CPU1において実際に実行されるバーコード認識/復調処理プログラムの具体的内容を、図3乃至図7のフローチャートに基づいて説明する。このバーコード認識/復調処理は、連続読み取り(一回の走査によって両ガードバー間の全データキャラクタを連続的に読み出すこと)によってバーコード全体に対応する復調データが得られた時,若しくは、ブロック読み取り又は分割読み取りによって読み取られたバー幅データ群に基づいてバーコード全体に対応する復調データが得られたとともに各バー幅データ群が右ブロックにおいて3キャラクタ以上重複した時に、読み取りが成功したとするものである。
【0035】
このバーコード認識/復調処理のメインルーチンである図3のフローは、バーコード読取装置に主電源が投入され、バー幅データ群格納バッファ2にバー幅データ群が格納されることによりスタートする。そして、最初のS001において、CPU1は、データ復調処理を実行する(復調手段に相当)。図4乃至図6は、このS001にて実行されるデータ復調処理サブルーチンを示すフローチャートである。このサブルーチンに入って最初のS101では、CPU1は、バー幅データ群格納バッファ2から最も古いバー幅データ群を取り出し、このバー幅データ群がスタートガードバー(SGB)を含んでいるかどうかをチェックする。そして、スタートガードバーを含んでいる場合には、処理をS102に進める。S102乃至S135の処理は、スタートガードバーを起点に、復調できる箇所までキャラクタを復調するための処理である。
【0036】
S102では、CPU1は、第1キャラクタ(スタートバーのセンターバー側に隣接するキャラクタ)の長さをチェックする。即ち、第1キャラクタを構成する4個のバーのバー幅カウント値の総計が一定値近傍内にあるかどうかをチェックする。そして、第1キャラクタ長が一定値近傍内にない場合には(S103)、処理対象のバー幅データ群がバーコード以外の模様に基づくデータ群であるとみなして、S136において「復調完了フラグ」をリセットし、このサブルーチンを終了する。これに対して、第1キャラクタ長が一定値近傍内にある場合には(S103)、処理をS104に進める。
【0037】
S104では、CPU1は、隣接キャラクタ(初期においては第1キャラクタに隣接する第2キャラクタ)の長さをチェックする。そして、このキャラクタの長さが一定値近傍内にない場合には(S105)、これまでにキャラクタ長が一定値近傍内であったとチェックされた第1ブロックのキャラクタに対する復調を行うべく、処理をS109に進める。これに対して、このキャラクタの長さが一定値近傍内にある場合には(S105)、CPU1は、S106において、歪み量が大か否かをチェックする。そして、歪み量が小である場合には、CPU1は、処理をそのままS108に進めるが、歪み量が大である場合(即ち、各キャラクタ相互の比が一定範囲を超えた場合,及び、各モジュール相互の比が一定範囲を超えた場合)には、S107において「歪みありフラグ」をセットしてから処理をS108に進める。S108では、CPU1は、第6キャラクタ(センターバーのスタートバー側に隣接するキャラクタ)までキャラクタ長のチェックを終了したかどうかをチェックする。そして、第6キャラクタまでキャラクタ長のチェックを終了した場合には、第1ブロックをなす6個のキャラクタの復調をすべく、処理をS109に進める。これに対して、未だ第6キャラクタまでのキャラクタ長のチェックを終了していない場合には、CPU1は、隣接する次のキャラクタのキャラクタ長をチェックすべく、処理をS104に戻す。
【0038】
S109では、CPU1は、S103及びS105において一定値近傍内にあると判定されたキャラクタのうちから最もスタートガードバーに近いものを取り出して、このキャラクタに対して復調処理を実行する。即ち、取り出したキャラクタに対して上述した復調アルゴリズムを実施し、対応するコードデータを特定し、特定したコードデータを順次復調データ一次待避バッファ6に書き込む。
【0039】
次のS110では、CPU1は、S109での復調処理が成功したかどうかをチェックする。そして、復調処理が成功しなかった場合には、このサブルーチンを終了すべく処理をS135に進め、復調処理が成功した場合には処理をS111に進める。S111では、CPU1は、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS113に進めるが、歪み量が大である場合には、S112において「歪みありフラグ」をセットしてから処理をS113に進める。S113では、CPU1は、S103及びS105のキャラクタ長チェックにおいて一定値近傍内にあると判定された全キャラクタの個数分の復調処理が完了したか否かをチェックする。そして、未だ全個数分の復調処理が完了していない場合には、隣接する次のキャラクタに対する復調処理を実行すべく、処理をS109に戻す。これに対して、全個数分の復調処理が完了している場合には、CPU1は、処理をS114に進める。
【0040】
S114では、S109での復調処理によって復調できたキャラクタ数が6キャラクタであるかどうかをチェックする。そして、6キャラクタ未満である場合には、処理対象のバー幅データ群が分割読み取りのデータ群でしかありえないので、このサブルーチンを終了すべく、処理をS135に進める。これに対して、復調できたキャラクタ数が6キャラクタである場合には、処理をS115に進める。
【0041】
S115では、第6キャラクタの長さを改めてチェックする。そして、この第6キャラクタの長さが一定値近傍内にない場合には(S116)、処理をS135に進め、このキャラクタの長さが一定値近傍内にある場合には(S116)、S117においてセンターバーのチェックを行う。このセンターバーのチェックとは、第6キャラクタの次の隣接するキャラクタがセンターバーとして定められている所定のパターンと一致しているか否かのチェックである。そして、センターバーのチェック結果が良好である場合には(S118)、CPU1は、処理をS119に進める。これに対して、チェック結果が良好でない場合には(S118)、CPU1は、処理対象のバー幅データ群が分割読み取りのデータ群であるとして、このサブルーチンを終了すべく処理をS135に進める。
【0042】
S119では、CPU1は、第7キャラクタ(センターバーのエンドバー側に隣接するキャラクタ)の長さをチェックする。そして、第7キャラクタの長さが一定値近傍内にない場合には(S120)、処理対象のバー幅データ群が連続読み取りのデータ群ではないため、このサブルーチンを終了すべく処理をS135に進める。これに対して、第7キャラクタの長さが一定値近傍内にある場合には(S120)、CPU1は、処理をS121に進める。
【0043】
S121では、CPU1は、隣接キャラクタ(初期においては第7キャラクタに隣接する第8キャラクタ)の長さをチェックする。そして、このキャラクタの長さが一定値近傍内にない場合には(S122)、処理対象のバー幅データ群が連続読み取りのデータ群ではないため、このサブルーチンを終了すべく処理をS135に進める。これに対して、このキャラクタの長さが一定値近傍内にある場合には(S122)、CPU1は、S123において、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS125に進めるが、歪み量が大である場合には、S124において「歪みありフラグ」をセットしてから処理をS125に進める。S125では、CPU1は、第12キャラクタ(エンドガードバーのセンターバー側に隣接するキャラクタ)までキャラクタ長のチェックを終了したかどうかをチェックする。そして、第12キャラクタまでキャラクタ長のチェックを終了した場合には、第2ブロックをなす6個のキャラクタの復調をすべく、処理をS126に進める。これに対して、未だ第12キャラクタまでのキャラクタ長のチェックを終了していない場合には、CPU1は、隣接する次のキャラクタのキャラクタ長をチェックすべく、処理をS121に戻す。
【0044】
S126では、CPU1は、S120及びS122において一定値近傍内にあると判定されたキャラクタのうちから最もセンターバーに近いものを取り出して、このキャラクタに対する復調処理を、S109と同様に実行する。次のS127では、CPU1は、S126での復調処理が成功したかどうかをチェックする。そして、復調処理が成功しなかった場合には、CPU1は、このサブルーチンを終了すべく処理をS135に進め、復調処理が成功した場合には処理をS128に進める。S128では、CPU1は、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS130に進めるが、歪み量が大である場合には、S129において「歪みありフラグ」をセットしてから処理をS130に進める。S130では、CPU1は、S120及びS122のキャラクタ長チェックにおいてその長さが一定値近傍内にあると判定されたキャラクタの個数分の復調処理が完了したか否かをチェックする。そして、未だ全個数分の復調処理が完了していない場合には、次の隣接するキャラクタに対する復調処理を実行すべく、処理をS126に戻す。これに対して、全個数分の復調処理が完了している場合には、CPU1は、処理をS131に進める。
S131では、CPU1は、第12キャラクタの長さを改めてチェックする。そして、この第12キャラクタの長さが一定値近傍内にない場合には(S132)、処理をS135に進め、このキャラクタの長さが一定値近傍内にある場合には(S132)、S133においてエンドガードバーのチェックを行う。このエンドガードバーのチェックとは、第12キャラクタの次の隣接するキャラクタがエンドガードバーとして定められている所定のパターンと一致しているか否かのチェックである。そして、エンドガードバーのチェック結果が良好である場合には(S134)、CPU1は、処理対象のバー幅データ群が連続読み取りのデータ群であるとして、処理をS135に進める。これに対して、チェック結果が良好でない場合には(S134)、処理対象のバー幅データ群が少なくともブロック読みのデータ群であるとして、このサブルーチンを終了すべく処理をS135に進める。
【0045】
S135では、CPU1は、S109及びS126にて復調完了したデータがスタートガードバー及び3個以上のキャラクタを含んでいるか否かを、チェックする。そして、スタートガードバー及び3個以上のキャラクタを含んでいる場合には、処理対象のバー幅データ群が少なくとも分割読み取りのデータ群であると認められるので、CPU1は、S137にて「復調完了フラグ」をセットして、このサブルーチンを終了する。これに対して、スタートガードバー及び3個以上のキャラクタを含んでいない場合には、データの信頼性が低いので、CPU1は、S136にて「復調完了フラグ」をリセットして、このサブルーチンを終了する。
【0046】
一方、S001にて処理対象のバー幅データ群がスタートガードバーを含んでいないと判定した場合には、処理対象のバー幅データ群が連続読み取りのデータ群である可能性はないので、CPU1は、処理をS138に進める。このS138では、このバー幅データ群がセンターバーを含んでいるかどうかをチェックする。そして、センターバーを含んでいる場合には、CPU1は、処理をS139に進める。S139乃至S169の処理は、センターバーを中心として両側方向に、復調できる箇所までキャラクタを復調するための処理である。
【0047】
S139では、CPU1は、第6キャラクタ及び第7キャラクタの長さをチェックする。そして、第6キャラクタの長さ及び第7キャラクタの長さの何れもが一定値近傍内にない場合には(S140)、CPU1は、処理対象のバー幅データ群がバーコード以外の模様に基づくデータ群であるとみなして、S136において「復調完了フラグ」をリセットし、このサブルーチンを終了する。これに対して、第6キャラクタの長さ及び第7キャラクタの長さの何れかが一定値近傍内にある場合には(S140)、CPU1は、処理をS141に進める。
【0048】
S141では、CPU1は、エンドガードバー側の隣接キャラクタ(初期においては第7キャラクタ)の長さをチェックする。そして、このキャラクタの長さが一定値近傍内にない場合には(S142)、CPU1は、これまでにキャラクタ長が一定値近傍内であったとチェックされた第2データブロックのキャラクタに対する復調を行うべく、処理をS146に進める。これに対して、このキャラクタの長さが一定値近傍内にある場合には(S142)、CPU1は、S143において、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS145に進めるが、歪み量が大である場合には、S144において「歪みありフラグ」をセットしてから処理をS145に進める。S145では、CPU1は、第2データブロックをなす6キャラクタ分のキャラクタ長のチェックを終了したかどうかをチェックする。そして、6キャラクタ分のキャラクタ長のチェックを終了した場合には、これら6個のキャラクタの復調をすべく、処理をS146に進める。これに対して、未だ6キャラクタ分のキャラクタ長のチェックを終了していない場合には、隣接する次のキャラクタのキャラクタ長をチェックすべく、処理をS141に戻す。
【0049】
S146では、CPU1は、S142において一定値近傍内にあると判定されたキャラクタのうちから最もセンターバーに近いものを取り出して、このキャラクタに対する復調処理を、S109と同様に実行する。次のS147では、CPU1は、S146での復調処理が成功したかどうかをチェックする。そして、復調処理が成功しなかった場合には、そのまま処理をS151に進め、復調処理が成功した場合には処理をS148に進める。S148では、CPU1は、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS150に進めるが、歪み量が大である場合には、S149において「歪みありフラグ」をセットしてから処理をS150に進める。S150では、CPU1は、S142のキャラクタ長チェックにおいて一定値近傍内にあると判定されたキャラクタの個数分の復調処理が完了したか否かをチェックする。そして、未だ全個数分の復調処理が完了していない場合には、CPU1は、隣接する次のキャラクタに対する復調処理を実行すべく、処理をS146に戻す。これに対して、全個数分の復調処理が完了している場合には、CPU1は、処理をS151に進める。
【0050】
S151では、CPU1は、S146での復調処理によって復調できたキャラクタ数が6キャラクタであるかどうかをチェックする。そして、6キャラクタ未満である場合には、CPU1は、第1データブロックに含まれるキャラクタの復調をすべく、処理をS154に進める。これに対して、復調できたキャラクタ数が6キャラクタである場合には、CPU1は、処理をS152に進める。
【0051】
S152では、CPU1は、第12キャラクタの長さを改めてチェックするとともに、エンドガードバーのチェックを行う。そして、何れの場合であっても(S153)、CPU1は、第1データブロックに含まれるキャラクタを復調すべく、処理をS154に進める。
【0052】
S154では、CPU1は、スタートガードバー側の隣接キャラクタ(初期においては第6キャラクタ)の長さをチェックする。そして、このキャラクタの長さが一定値近傍内にない場合には(S155)、CPU1は、これまでにキャラクタ長が一定値近傍内であったとチェックされた第1データブロックのキャラクタに対する復調を行うべく、処理をS159に進める。これに対して、このキャラクタの長さが一定値近傍内にある場合には(S155)、CPU1は、S156において、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS158に進めるが、歪み量が大である場合には、S157において「歪みありフラグ」をセットしてから処理をS158に進める。S158では、CPU1は、第1データブロックをなす6キャラクタ分のキャラクタ長のチェックを終了したかどうかをチェックする。そして、6キャラクタ分のキャラクタ長のチェックを終了した場合には、CPU1は、これら6個のキャラクタの復調をすべく、処理をS159に進める。これに対して、未だ6キャラクタ分のキャラクタ長のチェックを終了していない場合には、CPU1は、隣接する次のキャラクタのキャラクタ長をチェックすべく、処理をS154に戻す。
【0053】
S159では、CPU1は、S155において一定値近傍内にあると判定されたキャラクタのうちから最もセンターバーに近いものを取り出して、このキャラクタに対する復調処理を、S109と同様に実行する。次のS160では、CPU1は、S159での復調処理が成功したかどうかをチェックする。そして、復調処理が成功しなかった場合には、そのまま処理をS164に進め、復調処理が成功した場合には処理をS161に進める。S161では、CPU1は、歪み量が大か否かをチェックする。そして、歪み量が小である場合には、処理をそのままS163に進めるが、歪み量が大である場合には、S162において「歪みありフラグ」をセットしてから処理をS163に進める。S163では、CPU1は、S155のキャラクタ長チェックにおいて一定値近傍内にあると判定されたキャラクタの個数分の復調処理が完了したか否かをチェックする。そして、未だ全個数分の復調処理が完了していない場合には、次のキャラクタに対する復調処理を実行すべく、処理をS159に戻す。これに対して、全個数分の復調処理が完了している場合には、処理をS164に進める。
【0054】
S164では、CPU1は、S159での復調処理によって復調できたキャラクタ数が6キャラクタであるかどうかをチェックする。そして、6キャラクタである場合には、処理をS169に進め、6キャラクタ未満である場合には、処理をS165に進める。
【0055】
S165では、CPU1は、第1キャラクタの長さをチェックする。そして、この第1キャラクタの長さが一定値近傍内にない場合(第1キャラクタが欠落している場合を含む)には(S166)、CPU1は、処理をS169に進める。これに対して、この第1キャラクタの長さが一定値近傍内にある場合には(S166)、CPU1は、S167においてスタートガードバーのチェックを行う。そして、スタートガードバーを検出した場合には(S168)、CPU1は、S101の判定と矛盾するとして、S136において「復調完了フラグ」をリセットしてこのサブルーチンを終了する。これに対して、スタートガードバーを検出できなかった場合には(S168)、CPU1は、処理をS169に進める。
【0056】
S169では、CPU1は、復調完了したデータ群がセンターバーを挟んで両側に連続するデータ群であるかをチェックする。そして、センターバーを挟んで両側に連続している場合には、CPU1は、S137において「復調完了フラグ」をセットしてこのサブルーチンを終了する。これに対してセンターバーを挟んで両側に連続していない場合には、ほとんどあり得ない状況であってデータの信頼性が低いので、CPU1は、S136において「復調完了フラグ」をリセットしてこのサブルーチンを終了する。
【0057】
一方、S138にて処理対象のバー幅データ群がセンターバーを含んでいないと判定した場合には、処理対象のバー幅データ群がブロック読み取りのデータ群でもありえないので、CPU1は、処理をS170に進める。このS170では、CPU1は、このバー幅データ群がエンドガードバーを含んでいるかどうかをチェックする。そして、エンドガードバーを含んでいない場合には、処理対象のバー幅データ群がバーコード以外の模様に基づくデータ群であるとみなして、CPU1は、S136において「復調完了フラグ」をリセットし、このサブルーチンを終了する。これに対して、エンドガードバーを含んでいる場合は、CPU1は、処理をS171に進める。S171乃至S187の処理は、エンドガードバーを起点としてセンターバー側に、復調できる箇所までキャラクタを復調するための処理である。
【0058】
S171では、CPU1は、第12キャラクタの長さをチェックする。そして、第12キャラクタの長さが一定値近傍内にない場合には(S172)、CPU1は、処理対象のバー幅データ群がバーコード以外の模様に基づくデータ群であるとみなして、S136において「復調完了フラグ」をリセットし、このサブルーチンを終了する。これに対して、第12キャラクタの長さが一定値近傍内にある場合には(S172)、CPU1は、処理をS173に進める。
【0059】
S173では、CPU1は、センターバー側の隣接キャラクタ(初期においては第11キャラクタ)の長さをチェックする。そして、このキャラクタの長さが一定値近傍内にない場合には(S174)、CPU1は、これまでにキャラクタ長が一定値近傍内であったとチェックされた第2データブロックのキャラクタに対する復調を行うべく、処理をS178に進める。これに対して、このキャラクタの長さが一定値近傍内にある場合には(S174)、CPUは、S175において、歪み量が大か否かをチェックする。そして、歪み量が小である場合には、CPU1は、処理をそのままS177に進めるが、歪み量が大である場合には、S176において「歪みありフラグ」をセットしてから処理をS177に進める。S177では、CPU1は、第2データブロックをなす6キャラクタ分のキャラクタ長のチェックを終了したかどうかをチェックする。そして、6キャラクタ分のキャラクタ長のチェックを終了した場合には、これら6個のキャラクタの復調をすべく、処理をS178に進める。これに対して、未だ6キャラクタ分のキャラクタ長のチェックを終了していない場合には、隣接する次のキャラクタのキャラクタ長をチェックすべく、処理をS173に戻す。
【0060】
S178では、CPU1は、S172又はS174において一定値近傍内にあると判定されたキャラクタのうちから最もエンドガードバーに近いものを取り出して、このキャラクタに対する復調処理を、S109と同様に実行する。次のS179では、CPU1は、S178での復調処理が成功したかどうかをチェックする。そして、復調処理が成功しなかった場合には、そのまま処理をS183に進め、復調処理が成功した場合には処理をS180に進める。S180では、CPU1は、歪み量が大か否かをチェックする。そして、歪み量が小である場合には処理をそのままS182に進めるが、歪み量が大である場合には、S181において「歪みありフラグ」をセットしてから処理をS182に進める。S182では、CPU1は、S172又はS174のキャラクタ長チェックにおいてその長さが一定値近傍内にあると判定されたキャラクタの個数分の復調処理が完了したか否かをチェックする。そして、未だ全個数分の復調処理が完了していない場合には、CPU1は、隣接する次のキャラクタに対する復調処理を実行すべく、処理をS178に戻す。これに対して、全個数分の復調処理が完了している場合には、CPU1は、処理をS183に進める。
【0061】
S183では、CPU1は、第7キャラクタの長さをチェックする。そして、この第7キャラクタの長さが一定値近傍内にない場合(第7キャラクタが欠落している場合を含む)には(S184)、処理をS187に進め、この第7キャラクタの長さが一定値近傍内にある場合には(S184)、S185においてセンターバー及び第6キャラクタの長さのチェックを行う。そして、センターバーを検出した場合又は第6キャラクタの長さが一定値近傍内に入っている場合には(S186)、CPU1は、S138の判定に矛盾するとして、S136において「復調完了フラグ」をリセットしてこのサブルーチンを終了する。これに対して、センターバーを検出できなかった場合には(S186)、CPU1は、処理をS187に進める。
【0062】
S187では、CPU1は、S178にて復調完了したデータがエンドガードバー及び3個以上のキャラクタを含んでいるか否かを、チェックする。そして、エンドガードバー及び3個以上のキャラクタを含んでいる場合には、処理対象のバー幅データ群が少なくとも分割読み取りのデータ群であると認められるので、CPU1は、S137にて「復調完了フラグ」をセットしてこのサブルーチンを終了する。これに対して、エンドガードバー及び3個以上のキャラクタを含んでいない場合には、データの信頼性が低いので、CPU1は、S136にて「復調完了フラグ」をリセットしてこのデータ復調処理サブルーチンを終了する。
【0063】
データ復調処理の終了後、CPU1は、図3のメインルーチンに処理を戻し、S002において、CPU43内のRAM領域内に「復調完了フラグ」がセットされているかどうかをチェックする。この「復調完了フラグ」は、S001のデータ復調処理によってバー幅データ群の復調がなされたことを示すフラグである。この「復調完了フラグ」がセットされていない場合には、今回処理対象のバー幅データ群を破棄するとともに、新たにバー幅データ群格納バッファ2から取り出したバー幅データ群に対する復調処理を実行すべく、処理をS001に戻す。
【0064】
これに対して、「復調完了フラグ」がセットされている場合には、CPU1は、S003において、復調データ格納バッファ7内にモジュラス10−OKフラグが付された復調データが格納されているかどうかをチェックする。このモジュラス10−OKフラグは、S005のモジュラス10チェック処理にてセットされる。そして、復調データ格納バッファ7内にモジュラス10−OKフラグが付された復調データが格納されていない場合には、CPU1は、処理をS004に進める。
【0065】
S004では、CPU1は、データ格納及び合成処理を実行する(合成手段に相当)。このデータ格納及び合成処理は、S001でのデータ復調処理の結果復調データ一時待避バッファ6に書き込まれた復調データを復調データ格納バッファ7に書き写すことによって、バーコード全体に対応する復調データを合成する。この合成は、復調データに必ず含まれる何れかのガードバー又は/及びセンターバー(CB)を手掛かりに、復調データ格納バッファ7上に定義されたUPCフォーマットに各復調データを当て填めることによって、なされる。
【0066】
図7は、S004にて実行されるデータ格納及び合成処理サブルーチンを示すフローチャートである。このサブルーチンに入って最初のS201では、CPU1は、復調データ一時待避バッファ6に書き込まれている復調データにスタートガードバーが含まれているかどうかをチェックする。そして、復調データにスタートガードバーが含まれている場合には、CPU1は、処理をS203に進める。これに対して、復調データにスタートガードバーが含まれていない場合には、CPU1は、S202において、復調データ一時待避バッファ6に書き込まれている復調データにセンターバー及び第4〜6キャラクタが含まれているかどうかをチェックする。そして、CPU1は、復調データにセンターバー及び第4〜6キャラクタが含まれている場合には、処理をS203に進め、復調データにセンターバー及び第4〜6キャラクタが含まれていない場合には、処理をS208に進める。
【0067】
S203では、CPU1は、復調データ格納バッファ7上に規定されたUPCコードの左ブロックの全部又は一部に、対応する復調データが書き込まれているかどうかを、チェックする。そして、左ブロックに対応する復調データが全く書き込まれていない場合には、CPU1は、処理S207に進める。
【0068】
一方、復調データ格納バッファ7上に規定されたUPCコードの左ブロックの全部又は一部に、対応する復調データが書き込まれている場合には、CPU1は、S204において、復調データ格納バッファ7上に既に書き込まれている復調データと復調データ一時待避バッファ6に書き込まれている復調データとが2キャラクタ以上重複しているかをチェックする(ここでは、重複部のコードデータが相互に一致しているか否かを問わない)。そして、2キャラクタ以上重複していない場合には、仮に合成しても合成後における復調データの信頼性が保証できないとして、処理をS001に戻す(この場合、復調データ一時待避バッファ6に格納されている復調データは、次のデータ復調処理によって得られた復調データによってオーバーライトされる)。
【0069】
これに対して、復調データ格納バッファ7上に既に書き込まれている復調データと復調データ一時待避バッファ6に書き込まれている復調データとが2キャラクタ以上重複している場合には、CPU1は、S205において、重複部における両復調データのコードデータが互いに一致しているか否かをチェックする。そして、両復調データのコードデータが互いに一致していない場合には、両復調データの何れも信頼できないとして、S206にて復調データ格納バッファ6をクリアした後に、処理をS001に戻す。一方、重複部における両復調データのコードデータが互いに一致しているとS205にて判定した場合には、CPU1は、処理をS207に進める。
【0070】
S207では、CPU1は、復調データ一時待避バッファ6に書き込まれている復調データの左ブロックを、スタートガ−ドバー又はセンターバーを手がかりに、復調データ格納バッファ7に規定されたUPCコードのファーマットにはめ込む様に書き込む(合成手段に相当)。S207の実行完了後、CPU1は、処理をS208に進める。
【0071】
S208では、CPU1は、復調データ一時待避バッファ6に書き込まれている復調データにセンターバー及び第7〜9キャラクタが含まれているかどうかをチェックする。そして、復調データにセンターバー及び第7〜9キャラクタが含まれている場合には、CPU1は、処理をS210に進める。これに対して、復調データにセンターバー及び第7〜9キャラクタが含まれていない場合には、CPU1は、S209において、復調データ一時待避バッファ6に書き込まれている復調データにエンドガードバーが含まれているかどうかをチェックする。そして、CPU1は、復調データにエンドガードバーが含まれている場合には、処理をS210に進め、復調データにエンドガードバーが含まれていない場合には、このデータ格納及び合成サブルーチンを終了する。
【0072】
S210では、CPU1は、復調データ格納バッファ7上に規定されたUPCコードの右ブロックの全部又は一部に、対応する復調データが書き込まれているかどうかを、チェックする。そして、右ブロックに対応する復調データが全く書き込まれていない場合には、CPU1は、処理S216に進める。
【0073】
一方、復調データ格納バッファ7上に規定されたUPCコードの右ブロックの全部又は一部に、対応する復調データが書き込まれている場合には、CPU1は、S211において、復調データ格納バッファ7上に既に書き込まれている復調データと復調データ一時待避バッファ6に書き込まれている復調データとが2キャラクタ以上重複しているかをチェックする(ここでは、重複部のコードデータが相互に一致しているか否かを問わない)。そして、2キャラクタ以上重複していない場合には、仮に合成しても合成後における復調データの信頼性が保証できないとして、処理をS001に戻す(この場合、復調データ一時待避バッファ6に格納されている復調データは、次のデータ復調処理によって得られた復調データによってオーバーライトされる)。
【0074】
これに対して、復調データ格納バッファ7上に既に書き込まれている復調データと復調データ一時待避バッファ6に書き込まれている復調データとが2キャラクタ以上重複している場合には、CPU1は、S212において、復調データ格納バッファ7上に既に書き込まれている復調データと復調データ一時待避バッファ6に書き込まれている復調データとが3キャラクタ以上重複しているかをチェックする(ここでは、重複部のコードデータが相互に一致しているか否かを問わない)(重複判定手段に相当)。そして、CPU1は、3キャラクタ以上重複していない場合には、処理をそのままS214に進め、3キャラクタ以上重複している場合には、S213にてCPU1のRAM領域にデータ一致フラグをセットした後に処理をS214に進める。
【0075】
S214では、CPU1は、重複部における両復調データのコードデータが互いに一致しているか否かをチェックする(一致判定手段に相当)。そして、両復調データのコードデータが互いに一致していない場合には、両復調データの何れも信頼できないとして、S215にて復調データ格納バッファ6をクリアしてデータ一致フラグをリセットした後に、処理をS001に戻す。一方、重複部における両復調データのコードデータが互いに一致しているとS214にて判定した場合には、CPU1は、処理をS216に進める。
【0076】
S216では、CPU1は、復調データ一時待避バッファ6に書き込まれている復調データの右ブロックを、センターバー又はエンドガードバーを手がかりに、復調データ格納バッファ7に規定されたUPCコードのファーマットにはめ込む様に書き込む(合成手段に相当)。S216の実行完了後、CPU1は、このデータ格納及び合成サブルーチンを終了する。
【0077】
データ格納及び合成処理の終了後、CPU1は、図3のメインルーチンに処理を戻し、S005において、復調データ格納バッファ7に格納されている復調データに対してモジュラス10チェック処理を実行する。このモジュラス10チェックとは、S004の合成処理によってバーコード全体に対応する復調データが得られたかどうかを判定するチェックである。具体的には、CPU1は、復調データ格納バッファ7に格納されている復調データ中の最も右側を奇数位置として、この復調データに含まれる全てのコードデータを奇数位置と偶数位置に分類する。そして、奇数位置にあるコードデータの値の総和の3倍と偶数位置にあるコードデータの値の総和との和を、算出する。そして、算出された値が10の倍数であれば、バーコード全体に対応する復調データが合成されたものと判断して、この復調データにモジュラス10−OKフラグを付す。
【0078】
次のS006では、CPU1は、S005でのモジュラス10チェックの結果、復調データ格納バッファ7内に格納されている復調データにモジュラス10−OKフラグが付されたかどうかをチェックする。そして、未だモジュラス10−OKフラグが付されていなければ、復調データが全部揃っていない場合であると判断して、新たにバー幅データ群格納バッファ2から取り出したバー幅データ群に対する復調処理を実行すべく、処理をS001に戻す。
【0079】
これに対して、以上のS001〜S006のループ処理を繰り返した結果、復調データ格納バッファ7内に格納されている復調データにモジュラス10−OKフラグが付された時には、CPU1は、連続読みによって復調データが得られたかS004の結果データ合成が完了したのであると判断して、処理をS006からS007へ進める。このS007では、CPU1は、モジュラス10−OKフラグが付された復調データ(以下、「モジュラス10−OKデータ」という)が特定バーコードであるかどうかをチェックする。即ち、例えば、02/20バーコード等のインストアマーキングバーコードであるかどうかをチェックする。そして、CPU1は、モジュラス10−OKデータが特定バーコードでなければ、CPU1は、処理をそのままS017に進め、モジュラス10−OKデータが特定バーコードであれば、処理をS008に進める。
【0080】
S008では、CPU1は、モジュラス10−OKデータが連続読み取りに基づいて得られた復調データであるか否かをチェックする。そして、CPU1は、モジュラス10−OKデータが連続読み取りに基づいて得られた復調データであれば、処理をそのままS017に進め、モジュラス10−OKデータがブロック読み取り又は分割読み取りに基づいて得られた復調データであれば、処理をS009に進める。
【0081】
S009では、CPU1は、CPU1のRAM領域にデータ一致フラグがセットされているか否かをチェックする。そして、データ一致フラグがセットされている場合には、右ブロックにおいて3キャラクタ以上同じコードデータが重複しているので、処理をS015に進める。これに対して、データ一致フラグがセットされていない場合には、右ブロックにおいて3キャラクタ以上同じコードデータが重複していないので、処理をS001に戻す。
【0082】
S009からS001に処理が戻された後において実行されるS003では、CPU1は、CPU1は、復調データ格納バッファ7内に格納されている復調データにモジュラス10−OKフラグが付されていると判定して、処理をS010に進める。このS010では、CPU1は、最新の復調データが右ブロックのコードデータを3キャラクタ以上含んでいるか否かをチェックする(重複判定手段に相当)。そして、CPU1は、最新の復調データが右ブロックのコードデータを3キャラクタ以上含んでいない場合には、処理をS001に戻し、最新の復調データが右ブロックのコードデータを3キャラクタ以上含んでいる場合には、処理をS011に進める。
【0083】
S011では、CPU1は、モジュラス10−OKデータと最新の復調データとを、最新の復調データに含まれているセンターバー又はエンドガードバーをモジュラス10−OKデータにおける同じバーに対して揃えた状態で、比較する。
【0084】
次のS012では、CPU1は、S011での比較結果に基づいて、モジュラス10−OKデータと最新の復調データとが右ブロックにおいて3キャラクタ以上一致しているかどうかをチェックする(一致判定手段に相当)。そして、両データが右ブロックにおいて3キャラクタ以上一致している場合には、CPU1は、処理をS015に進める。
【0085】
S015では、CPU1は、モジュラス10−OKデータの右ブロックに対して3キャラクタ以上一致する復調データの個数をソフト的に計数する同一キャラクタカウンタ(初期値は0)を、インクリメントする。
【0086】
次のS016では、CPU1は、同一キャラクタカウンタのカウント値が所定値(例えば、2)以上であるかどうかをチェックする。そして、カウント値が未だ所定値に達していない場合には、処理をS001に戻す。
【0087】
一方、以上のS001〜S003,S010〜S012,S015,S016のループ処理を実行している間に、モジュラス10−OKデータと最新の復調データとが右ブロックにおいて3キャラクタ以上一致していないとS012にて判定した場合には、CPU1は、モジュラス10−OKデータの右ブロック及び最新の復調データのうち何れか一方が右ブロックの逆読みによって得られた可能性があると判断し、S013において復調データ格納バッファ7内に格納されているモジュラス10−OKデータを消去し、S014において同一キャラクタカウンタをリセットした後に、処理をS001に戻す。
【0088】
また、以上のS001〜S003,S010〜S012,S015,S016のループ処理を繰り返した結果、同一キャラクタカウンタのカウント値が所定値に達したとS016にて判定した場合には、CPU1は、処理をS017に進める。
【0089】
S017では、CPU1は、「読み取りOK」の処理を実行する。この「読み取りOK」の処理では、CPU1は、復調データ格納バッファ7に格納されているモジュラス10−OKデータをバーコード全体に対応する復調データとして有効化し(復調データ有効化手段に相当)、バーコードの読取(復調)完了を示す音声をスピーカ10から出し、モジュラス10−OKデータ(バーコード全体に対応する復調データ)に対応する商品20の販売価格等の情報を発光ダイオード11によって表示する。これらの「読み取りOK」の処理を完了すると、CPU1は、このバーコード認識/復調処理プログラムを終了する。
(第1の実施形態の実施例)
本第1実施形態による実施例を、図11乃至図14を用いて説明する。
【0090】
【実施例1】
図11は、分割読み取りによるモジュラス10−OKデータが得られた後にエンドガードバーを含む復調データを復調した場合における実施例である。具体的に述べると、最初にスタートガードバーを含む分割読み取りに基づく復調データAが得られた後に、右ブロックの全部及び左ブロックの一部を含む復調データBが得られたとする。この場合、両復調データA,Bが2キャラクタ以上一致していれば、復調データ格納バッファ7内にて合成が行われ(S004,S207)、モジュラス10チェックにおける条件を満たしていれば、モジュラス10−OKフラグがセットされる(S005)。但し、この時点においては、右ブロックにおいてコードデータが重複していないので、データ一致フラグはセットされていない(S009)。従って、同一キャラクタカウンタのカウンタ値は初期値のままである。
【0091】
その後で、エンドガードバー及び3キャラクタのコードデータを含む復調データCを得ると、CPU1は、復調データA及び復調データBから合成されたモジュラス10−OKデータと復調データCとを、エンドガードバーを手掛かりにして揃え、両データの第10キャラクタ乃至第12キャラクタ(のコードデータ)同士を比較する(S011)。この比較の結果、両データの第10キャラクタ乃至第12キャラクタ(のコードデータ)同士が一致していた場合には、CPU11は、モジュラス10−OKデータの元になった復調データBと復調データCとがバーコードの右ブロックを正しく読んで得られたものである蓋然性が高いと判断し、同一キャラクタカウンタをインクリメントする(S012,S015)。この同一キャラクタカウンタのカウント値が所定値(例えば、2)に達すると、CPU1は、「読み取りOK」の処理を実行する(S016,S017)。
【0092】
【実施例2】
図12は、分割読み取りによるモジュラス10−OKデータが得られた後にセンターバーを含む復調データを復調した場合における実施例である。具体的に述べると、最初にスタートガードバーを含む分割読み取りに基づく復調データAが得られた後に、右ブロックの全部及び左ブロックの一部を含む復調データBが得られたとする。この場合、両復調データA,Bが2キャラクタ以上一致していれば、復調データ格納バッファ7内にて合成が行われ(S004,S207)、モジュラス10チェックにおける条件を満たしていれば、モジュラス10−OKフラグがセットされる(S005)。但し、この時点においては、右ブロックにおいてコードデータが重複していないので、データ一致フラグはセットされていない(S009)。従って、同一キャラクタカウンタのカウンタ値は初期値のままである。
【0093】
その後で、センターバー及び3キャラクタのコードデータを含む復調データCを得ると、CPU1は、復調データA及び復調データBから合成されたモジュラス10−OKデータと復調データCとを、センターバーを手掛かりにして揃え、両データの第7キャラクタ乃至第9キャラクタ(のコードデータ)同士を比較する(S011)。この比較の結果、両データの第7キャラクタ乃至第9キャラクタ(のコードデータ)同士が一致していた場合には、CPU11は、モジュラス10−OKデータの元になった復調データBと復調データCとがバーコードの右ブロックを正しく読んで得られたものである蓋然性が高いと判断し、同一キャラクタカウンタをインクリメントする(S012,S015)。この同一キャラクタカウンタのカウント値が所定値(例えば、2)に達すると、CPU1は、「読み取りOK」の処理を実行する(S016,S017)。
【0094】
【実施例3】
図13は、ブロック読み取りによるモジュラス10−OKデータが得られた際に、各復調データが右ブロックにおいて3キャラクタ以上重複していた場合における実施例である。具体的に述べると、最初に左ブロックの全部及び右ブロックの一部を含むブロック読み取りに基づく復調データAが得られた後に、右ブロックの全部を含む復調データBが得られたとする。この場合、復調データAの第7キャラクタ乃至第9キャラクタに対して復調データBの第7キャラクタ乃至第9キャラクタが夫々一致していれば、データ一致フラグがセットされ(S009)、モジュラス10チェック結果がOKであることを条件に(S005,S006)、同一キャラクタカウンタがインクリメントされる(S009,S015)。この同一キャラクタカウンタのカウント値が所定値(例えば、2)に達すると、CPU1は、「読み取りOK」の処理を実行する(S016,S017)。
【0095】
なお、両復調データA,Bの第7キャラクタ乃至第9キャラクタ(のコードデータ)同士が不一致の場合、復調データCがバーコードの右ブロックを逆読みして得られたものである可能性が生じる。従って、その場合には、CPU1は、復調データ格納バッファ6内の全データを消去し(S215)、最初からバーコード認識/復調処理をやり直す。
【0096】
【実施例4】
図14は、分割読み取りによって夫々得られた2個の復調データ及びブロック読み取りによって得られた1個の復調データに基づいてモジュラス10−OKデータが得られた際に、2個の復調データが右ブロックにおいて3キャラクタ以上重複していた場合における実施例である。具体的に述べると、最初にスタートガードバーを含む分割読み取りに基づく復調データAが得られた後に、センターバーを含んで右ブロックの一部及び左ブロックの一部を含む復調データBが得られ、最後に、右ブロックの全部を含む復調データCが得られたとする。この場合、復調データAと復調データBとが2キャラクタ以上一致しているとともに復調データBの第7キャラクタ乃至第9キャラクタに対して復調データCの第7キャラクタ乃至第9キャラクタが夫々一致していれば、データ一致フラグがセットされ(S009)、モジュラス10チェック結果がOKであることを条件に(S005,S006)、同一キャラクタカウンタがインクリメントされる(S009,S015)。この同一キャラクタカウンタのカウント値が所定値(例えば、2)に達すると、CPU1は、「読み取りOK」の処理を実行する(S016,S017)。
【0097】
なお、各復調データB,Cの第7キャラクタ乃至第9キャラクタ(のコードデータ)同士が不一致の場合、復調データCがバーコードの右ブロックを逆読みして得られたものである可能性が生じる。従って、その場合には、CPU1は、復調データ格納バッファ6内の全データを消去し(S215)、最初からバーコード認識/復調処理をやり直す。
【0098】
【実施例5】
図示を省略したが、連続読み取りによる復調データに基づいてモジュラス10−OKデータが得られた場合には(S008)、無条件に「読み取りOK」の処理がなされる(S017)。
【0099】
【実施例6】
図示を省略したが、特定バーコード以外のバーコードを読み取って得られた復調データに基づいてモジュラス10−OKデータが得られた場合には(S007)、無条件に「読み取りOK」の処理がなされる(S017)。
【0100】
以上説明したように、本実施形態のバーコード復調装置によれば、モジュラス10−OKデータが一旦得られた後においては、このモジュラス10−OKデータの元になった復調データがバーコードの右ブロックを逆読みして得られたもので無いことを確認するための最低限の復調データ獲得の他には、復調データの獲得は行われない。即ち、モジュラス10−OKデータの複数回にわたる獲得は、「読み取りOK」の条件とはされない。従って、復調データの信頼性を維持しつつ、短時間でバーコード認識/復調を完了させることができる。
【0101】
【発明の効果】
以上のように構成された本発明のバーコード読取装置及びバーコード読取方法によると、一旦、ブロック読み取り又は分割読み取りによって得られた復調データに基づいてバーコード全体に対応する復調データが再現された際には、右ブロックについてのみ、複数の復調データが互いに重複しているかどうかをチェックする。その結果、右ブロックの逆読みに因る誤読を生じることなく短時間で復調を完了させることができる。
【図面の簡単な説明】
【図1】本発明の原理を示す原理図
【図2】本発明の実施の形態によるバーコード読取装置のブロック図
【図3】図2のCPUで実行されるバーコード認識/復調処理プログラムの内容を示すフローチャート
【図4】図3のS002で実行されるデータ復調処理の内容を示すフローチャート
【図5】図3のS002で実行されるデータ復調処理の内容を示すフローチャート
【図6】図3のS002で実行されるデータ復調処理の内容を示すフローチャート
【図7】図2のS004で実行されるデータ格納及び合成処理の内容を示すフローチャート
【図8】UPCコードのキャラクタの構成図
【図9】距離復調テーブル
【図10】バー幅復調テーブル
【図11】第1実施例の説明図
【図12】第2実施例の説明図
【図13】第3実施例の説明図
【図14】第4実施例の説明図
【図15】UPCコードの右ブロックの逆読みの説明図
【図16】UPCコードの右ブロックの逆読みの説明図
【図17】UPCコードの右ブロックの逆読みの説明図
【符号の説明】
1 CPU
2 バー幅データ群格納バッファ
6 復調データ一時退避バッファ
13 半導体レーザー
14 走査光学系
15 A/D変換器
16 バー幅カウンタ
18 受光素子
21 バーコード

Claims (8)

  1. 固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードであって、左ブロックは奇数パリティと偶数パリティのデータキャラクタを含み、右ブロックは偶数パリティのデータキャラクタを含むバーコードを走査して、その走査軌跡における明暗パターンを検出するとともに、この明暗パターンに基づいて前記バーコードにコード化されているデータを復調するバーコード読取装置であって、
    前記3本の識別バーのうち少なくとも1本を通過する各走査軌跡における明暗パターンを夫々復調することによって複数の復調データを得る復調手段と、
    前記復調手段が夫々復調することによって得られた複数の復調データを合成して、前記バーコード全体に対応する復調データを再現する復調データ合成手段と、
    何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを前記復調手段が夫々復調することによって得られた複数の復調データが、前記右ブロックにおいて少なくとも部分的に重複しているか否かを判定する重複判定手段と、前記重複判定手段によって重複していると判定された前記複数の復調データにおける重複部分が、互いに一致しているか否かを判定する一致判定手段と、前記一致判定手段によって前記重複部分が互いに一致していると判定された場合にのみ、前記復調データ合成手段によって再現された復調データを有効化する復調データ有効化手段とを備えたことを特徴とするバーコード読取装置。
  2. 前記バーコードはUPCコード,JANコード又はEANコードであり、前記各識別バーは夫々スタートガードバー,センターバー及びエンドガードバーであることを特徴とする請求項1記載のバーコード読取装置。
  3. 前記何れか一方のブロックは、前記センターバー及びエンドガードバーに挟まれているブロックであることを特徴とする請求項2記載のバーコード読取装置。
  4. 前記重複判定手段は、前記復調データ合成手段が前記復調データを合成した後で前記復調手段が得た復調データ,及び、前記復調データ合成手段によって合成された何れかの復調データが、前記何れか一方のブロック内において少なくとも部分的に重複しているか否かを判定することを特徴とする請求項1記載のバーコード読取装置。
  5. 前記重複判定手段は、前記復調データ合成手段によって合成された複数の復調データが、前記何れか一方のブロック内において少なくとも部分的に重複しているか否かを判定することを特徴とする請求項1記載のバーコード読取装置。
  6. 前記重複判定手段は、前記複数の復調データが3キャラクタ以上重複している場合に、重複しているものとして判定することを特徴とする請求項1記載のバーコード読取装置。
  7. 固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードであって、左ブロックは奇数パリティと偶数パリティのデータキャラクタを含み、右ブロックは偶数パリティのデータキャラクタを含むバーコードを走査して、その走査軌跡における明暗パターンを検出するとともに、この明暗パターンに基づいて前記バーコードにコード化されているデータ群を復調するバーコード読取方法であって、前記3本の識別バーのうち少なくとも1本の識別バーを通過する各走査軌跡における明暗パターンを夫々復調し、前記明暗パターンを復調することによって得られた複数の復調データを合成して、前記バーコード全体に対応する復調データを再現し、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを復調することによって得られた複数の復調データが前記右ブロックにおいて少なくとも部分的に重複しているとともに、各復調データにおける重複部分が互いに一致している場合に限り、前記バーコード全体に対応する復調データを有効化することを特徴とするバーコード読取方法。
  8. 固定パターンを夫々有する3本の識別バー及び各識別バーに挟まれた2ブロックのデータキャラクタから構成されるバーコードであって、左ブロックは奇数パリティと偶数パリティのデータキャラクタを含み、右ブロックは偶数パリティのデータキャラクタを含むバーコードを走査することによって得られた明暗パターンデータが入力されるコンピュータに対して、前記3本の識別バーのうち少なくとも1本の識別バーを通過する各走査軌跡における明暗パターンデータを夫々復調させ、前記明暗パターンを復調することによって得られた複数の復調データを合成して、前記バーコード全体に対応する復調データを再現させ、何れか一方の前記ブロックを夫々通過する各走査軌跡における明暗パターンを復調することによって得られた複数の復調データが前記右ブロックにおいて少なくとも部分的に重複しているか否かを判定させ、前記複数の復調データが前記ブロック内において少なくとも部分的に重複していると判定された場合に、その重複部分が互いに一致しているか否かを判定させ、 前記重複部分が互いに一致していると判定された場合にのみ、前記バーコード全体に対応する復調データを有効化させるプログラムを格納したコンピュータ可読媒体。
JP21474397A 1997-08-08 1997-08-08 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 Expired - Lifetime JP3576356B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP21474397A JP3576356B2 (ja) 1997-08-08 1997-08-08 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体
US09/046,577 US6070801A (en) 1997-08-08 1998-03-24 Bar code reader, bar code reading method and computer readable medium
EP98302709A EP0896292A3 (en) 1997-08-08 1998-04-07 Bar code reader, bar code reading method and computer readable medium
US09/513,467 US6283370B1 (en) 1997-08-08 2000-02-25 Bar code reader, bar code reading method and computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21474397A JP3576356B2 (ja) 1997-08-08 1997-08-08 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体

Publications (2)

Publication Number Publication Date
JPH1153464A JPH1153464A (ja) 1999-02-26
JP3576356B2 true JP3576356B2 (ja) 2004-10-13

Family

ID=16660863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21474397A Expired - Lifetime JP3576356B2 (ja) 1997-08-08 1997-08-08 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体

Country Status (3)

Country Link
US (2) US6070801A (ja)
EP (1) EP0896292A3 (ja)
JP (1) JP3576356B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
US20040004128A1 (en) * 1996-09-03 2004-01-08 Hand Held Products, Inc. Optical reader system comprising digital conversion circuit
JP3576356B2 (ja) * 1997-08-08 2004-10-13 富士通株式会社 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体
JP3560477B2 (ja) * 1998-08-24 2004-09-02 富士通株式会社 バーコード読取装置及びバーコード読取方法
US7108184B2 (en) * 2001-03-30 2006-09-19 Baxter International, Inc. Coding symbology and a method for printing same
US6672510B2 (en) 2001-12-20 2004-01-06 Scannabar (3193519 Canada Inc.) Bar code arrangement for identifying positions along an axis
US6801245B2 (en) 2002-01-18 2004-10-05 Imageid Ltd. Method for automatic identification and data capture
US20080237436A1 (en) * 2007-03-26 2008-10-02 Runbeck Election Services, Inc. Election ballot printing system and method
US9111163B2 (en) * 2013-07-31 2015-08-18 Symbol Technologies, Llc Apparatus for and method of electro-optically reading a selected target by image capture from a picklist of targets

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414468A (en) * 1981-05-18 1983-11-08 International Business Machines Corporation Systematic error correction in bar code scanner
DE69231012T2 (de) * 1991-02-08 2000-09-28 Fujitsu Ltd Strichkodeleser mit hoher Abtastgeschwindigkeit, der mehr als einen Typ Strichkode lesen kann
EP0502440B1 (en) * 1991-03-04 2003-12-10 Fujitsu Limited Bar-code reading apparatus and method
JP2740418B2 (ja) * 1992-07-14 1998-04-15 富士通株式会社 バーコード読取復調方法
US5343028A (en) * 1992-08-10 1994-08-30 United Parcel Service Of America, Inc. Method and apparatus for detecting and decoding bar code symbols using two-dimensional digital pixel images
US5493108A (en) * 1992-10-14 1996-02-20 Spectra-Physics Scanning Systems, Inc. Method and apparatus for recognizing and assembling optical code information from partially scanned segments
AU681421B2 (en) * 1993-09-14 1997-08-28 Symbol Technologies, Inc. Bar code scan stitching
US5457308A (en) * 1993-09-14 1995-10-10 Symbol Technologies, Inc. Bar code scan stitching
JP2836773B2 (ja) * 1993-12-20 1998-12-14 富士通株式会社 バーコードデータ検出方法及び装置
JP2835275B2 (ja) * 1994-03-07 1998-12-14 株式会社テック バーコード読取装置
US5438188A (en) * 1994-04-01 1995-08-01 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code images using information from previous scan lines
JP3470738B2 (ja) * 1995-09-14 2003-11-25 富士通株式会社 バーコード読取装置及びバーコード読取方法
US5777310A (en) * 1995-11-06 1998-07-07 Intermec Corporation Problem reduction with low level information integration in bar code decoding
JPH09161001A (ja) * 1995-12-05 1997-06-20 Fujitsu Ltd バーコード読取装置
JP3576356B2 (ja) * 1997-08-08 2004-10-13 富士通株式会社 バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体

Also Published As

Publication number Publication date
EP0896292A2 (en) 1999-02-10
EP0896292A3 (en) 2001-03-14
US6070801A (en) 2000-06-06
JPH1153464A (ja) 1999-02-26
US6283370B1 (en) 2001-09-04

Similar Documents

Publication Publication Date Title
US6095419A (en) Bar code reading apparatus for reading plural code systems
JP3576356B2 (ja) バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体
JP3541731B2 (ja) 偽造判定方法、偽造判定装置及び記録媒体
JPH07200719A (ja) バーコード走査のステッチ
JP2001014418A (ja) 2次元バーコード読み取り方法
US5780832A (en) Bar code reading apparatus
KR100319414B1 (ko) 바코드판독방법
KR100308415B1 (ko) 바코드판독장치,바코드판독방법및컴퓨터판독가능매체
US5979765A (en) Bar-code reader and bar-code reading method for detecting various possible reproducible bar code combinations and synthesizing information therefrom
JP3448404B2 (ja) バーコード読取装置及びバーコード読取方法
JPH076187A (ja) 情報キャリアー分析装置
JP2500859B2 (ja) バ−コ−ド読取装置
JP2004252895A (ja) バーコード読取装置
JP3560477B2 (ja) バーコード読取装置及びバーコード読取方法
CN112163439A (zh) 一种处理图像的方法、装置及扫描识别装置
JP3404887B2 (ja) バーコード読取装置
JPH0954809A (ja) バーコード検出装置及び検出方法
JP2953143B2 (ja) バーコード読取装置およびバーコード読取方法
JP3606228B2 (ja) バーコード読取装置
JPH04276880A (ja) バーコード復調方式
JPS6215677A (ja) バ−コ−ド読取装置
JP2641991B2 (ja) バーコード読取装置のデータ処理方法
JP2750244B2 (ja) バーコードデコーダのデコード方法
JP2817025B2 (ja) バーコード読取装置
JPH07334609A (ja) バーコード読取装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20030218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040707

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080716

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090716

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100716

Year of fee payment: 6