JP3510496B2 - バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法 - Google Patents

バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法

Info

Publication number
JP3510496B2
JP3510496B2 JP27324998A JP27324998A JP3510496B2 JP 3510496 B2 JP3510496 B2 JP 3510496B2 JP 27324998 A JP27324998 A JP 27324998A JP 27324998 A JP27324998 A JP 27324998A JP 3510496 B2 JP3510496 B2 JP 3510496B2
Authority
JP
Japan
Prior art keywords
bar
width
correction
character
value
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 - Fee Related
Application number
JP27324998A
Other languages
English (en)
Other versions
JP2000099622A (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 JP27324998A priority Critical patent/JP3510496B2/ja
Priority to PCT/JP1999/000483 priority patent/WO2000019355A1/ja
Priority to EP99901941A priority patent/EP1120736A4/en
Publication of JP2000099622A publication Critical patent/JP2000099622A/ja
Priority to US09/815,007 priority patent/US6299064B2/en
Application granted granted Critical
Publication of JP3510496B2 publication Critical patent/JP3510496B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1473Methods for optical code recognition the method including quality enhancement steps error correction
    • 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
    • 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
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1486Setting the threshold-width for bar codes to be decoded

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Toxicology (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Character Discrimination (AREA)
  • Printers Characterized By Their Purpose (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、バー幅補正装置,
バー幅補正方法,バーコード読取装置及びそのバーコー
ド復調方法に関する。
【0002】
【従来の技術】近年、流通業等におけるPOSシステム
に代表されるように、商品等の管理をバーコードによっ
て行うことが一般化している。例えば、商店のPOSシ
ステムでは、商品の種類や販売価格等の情報をバーコー
ドのフォーマットにコード化して商品に印刷しておく。
その後、レジにてこのバーコードを読み取ることによっ
て、精算を行うとともに、商品の売り上げ数をリアルタ
イムで集計し、在庫管理や仕入れ管理に役立てている。
【0003】読み取られたバーコードが正確に読み取ら
れるためには、読み取り対象のバーコードの各バーのバ
ー幅が正確に把握される必要がある。このため、読み取
られたバーコードのバー幅を補正する方式が幾つか提案
されている。このバー幅補正における問題の一つには、
バーコードの印字品質の低下によるバーコードの太り/
細りがある。
【0004】従来におけるバー幅補正の方式は、バーコ
ードが一様に太ったり細ったりした場合に有効なもので
あるが、バーコードが曲面に貼付された場合等、バーコ
ードが湾曲等して局部的に太ったり細ったりしている場
合には、バー幅の補正が有効に行われず、バーコードが
誤読される場合があった。以下に、バー幅補正が有効に
行われない例を示す。
【0005】印字品質の低いバーコードの一つには、バ
ーコードの黒バーの幅が太ったり細ったりしたものがあ
る。この黒バーの太り細りによる誤読を防止するため、
デルタディスタンスを用いてバーコードの印刷による黒
バーの均一な太り細りの影響を除く手法がある。
【0006】即ち、図11に示すように、正常な黒バー
を持つバーコード(図11(A)参照)に対し、黒バーが太
ったバーコード(図11(B)参照)や黒バーが細ったバー
コード(図11(C)参照)がある場合に、バーコードの黒
バーの部分と白バーの部分とを連続した値で読み取るこ
とにより、デルタディスタンスT1,T2を検出する。
即ち、図11に示す各バーコードのdバーからcバーに
わたる幅をデルタディスタンスT1として検出するとと
もに、cバーからbバーにわたる幅をデルタディスタン
スT2として検出する。その後、各デルタディスタンス
T1,T2におけるモジュール数が検出される。
【0007】そして、図12に示すように、各デルタデ
ィスタンスT1,T2のモジュール数に対応づけてキャ
ラクタ値を格納した第1復調テーブル61が用意され、
この第1復調テーブル61からデルタディスタンスT
1,T2に対応するキャラクタ値を検出することによっ
て、バーコードのキャラクタを判別する。
【0008】但し、各デルタディスタンスT1,T2の
モジュール数によりキャラクタを判別する場合には、図
12(A)から明らかなように、オッドの“1”(O1)と
オッドの“7”(O7)とは、ともに、T1=3,T2=
4であるため、区別がつかない。同様に、イーブンの
“2”(E2)とイーブンの“8”(E8)とは、ともにT
1=3,T2=3であるため、区別がつかない。
【0009】このため、キャラクタの値がO1とO7,
又はE2とE8との場合には、デルタディスタンスT1
中に存する黒バーのモジュール数を求めることによっ
て、キャラクタが区別されている。即ち、図11に示す
dバーのモジュール数が求められる。そして、図13に
示す第2復調テーブル62が用意され、dバーのモジュ
ール数に対応するキャラクタ値が第2復調テーブル62
から検出される。これによって、キャラクタが特定され
る。
【0010】これによると、例えば、デルタディスタン
スがT1=3,T2=4である場合において、dバーの
モジュール数が1のときは、キャラクタ値が“O1”と
なり、dバーのモジュール数が2のときは、キャラクタ
値が“O7”となる。同様に、デルタディスタンスがT
1=3,T2=3である場合において、dバーのモジュ
ール数が2のときは、キャラクタ値が“E2”となり、
dバーのモジュール数が1のときは、キャラクタ値が
“E8”となる。
【0011】ところで、上記したように、黒バーの幅
は、印刷状態によって太ったり細ったりする。このた
め、太ったり細ったりしている黒バーのモジュール数を
そのまま求めると、誤ったモジュール数が求められる可
能性がある。このため、従来では、バーコードの黒バー
が均一に太ったり細ったりしていることを前提として、
復調が完了している直前のキャラクタ(又は各ガードバ
ー,センターバーの何れか)の黒バー(「Xバー」と称す
る)のバー幅データを用い、dバーの幅を補正していた
(「補正復調処理」と称する:特開平6−36065号
公報参照)。
【0012】即ち、例えば、図14に示すキャラクタの
補正復調を順方向(スタートガードバーからエンドガー
ドバーへ向かう方向)で行う場合には、復調対象のキャ
ラクタの各黒バー(bバー,dバー)の幅(バー幅カウント
値)を、夫々b1,b3とし、Xバーのバー幅データ(バー
幅カウント値)をbvとする。また、各バー幅の理想的な
値をBv,B1,B3とし、実際のバー幅との差をΔv,Δ1,
Δ3とすると、 Bv =bv +Δv ・・・・(1)式 B1 =b1 +Δ1 ・・・・(2)式 B3 =b3 +Δ3 ・・・・(3)式 Δx ≒Δ1 ≒Δ3 ・・・・(4)式 (前提) となる。ここで、BvとB1との差分,及びBvとB3との
差分を夫々求めると、(1)式及び(2)式より、 となる。同様に、(1)式及び(3)式より Bv −B3 ≒bv −b3 ・・・・(6)式 となる。上記(5)式及び(6)式は、隣同士のバー幅の差
分をとることによって印刷等による誤差を除去できるこ
とを示している。ここで、(5)式のモジュール数を算出
すると、次のようになる。但し、モジュール数を示す記
号として、MOD(バー幅カウント値)とする。
【0013】 MOD(Bv −B1)=MOD(bv −b1) ・・・・(5)’式 ここで、BvとB1とは理想的なバー幅を示しているの
で、 MOD(Bv −B1)=MOD(Bv)−MOD(B1) と分割できる。従って、(5)’式は次のようになる。
【0014】 MOD(Bv)−MOD(B1)=MOD(bv−b1) ∴MOD(B1)=MOD(Bv)−MOD(bv−b1) ・・・(5)″式 となる。(5)″式は、MOD(bv−b1)を算出し、Xバ
ーの理想的なモジュール数MOD(Bv)からMOD(bv
−b1)を減算すれば、dバーの理想的なモジュール数M
OD(B1)を算出することができることを示している。
同様に、 MOD(B3)=MOD(Bv)−MOD(b−bv) として、bバーの理想的なモジュール数MOD(B3)を
算出することができる。そして、得られた理想的なdバ
ーのモジュール数MOD(B1)に対応するキャラクタ値
が第2復調テーブル62から読み出され、このキャラク
タ値が復調対象キャラクタのキャラクタ値とされる。
【0015】ところが、上記した補正復調は、バーコー
ドの黒バーが均一に太ったり細ったりしていることを前
提としているので、バーコードが曲面に貼付された場合
等,バーコードの黒バーが局部的に太ったり細ったりし
た場合には、dバーのモジュール数が誤って求められ、
キャラクタが誤って特定される場合があった。
【0016】
【発明が解決しようとする課題】このように、従来にお
けるバー幅補正は、バー幅の太り方や細り方が一様では
ない場合に適正にバー幅を補正できないことがあった。
【0017】本発明は、上記問題に鑑みなされたもので
あり、バーコードのバー幅の太り方や細り方が一様でな
い場合でも適正にバー幅を補正することができるバー幅
補正装置及びバー幅補正方法を提供することを課題とす
る。
【0018】また、本発明は、補正復調処理の際におけ
るキャラクタの復調ミスを抑え、これによって、バーコ
ードの誤読を防止することができるバーコード読取装置
及びそのバーコード復調方法を提供することを課題とす
る。
【0019】
【課題を解決するための手段】本発明は、上述した課題
を解決するために以下の構成を採用する。すなわち、請
求項1の発明は、バー幅補正装置である。このバー幅補
正装置は、バー幅の基準となる基準バー幅を求める基準
バー幅検出手段と、前記基準バー幅検出手段によって求
められた複数の基準バー幅の平均値を求める平均値算出
手段と、補正対象バーのバー幅と、前記基準バー幅との
誤差を算出する誤差算出手段と、前記誤差算出手段によ
って求められた誤差値が予め定められた値以上である場
合には、前記平均値算出手段によって求められた複数の
基準バー幅の平均値を用いて前記補正対象バーのバー幅
を補正するとともに、前記誤差値が前記予め定められた
値未満である場合には、前記基準バー幅によって前記補
正対象バーのバー幅を補正する補正手段とを備えたこと
を特徴とする。
【0020】請求項1の発明によると、誤差値が予め定
められた値以上となった場合には、平均値を用いて補正
対象バーのバー幅が補正されるので、バー幅の太り方や
細り方が一様でない場合でも有効にバー幅を補正するこ
とができる。
【0021】請求項2の発明は、復調対象キャラクタを
構成するバーのバー幅を、復調済みキャラクタを構成す
るバーのバー幅を基準バーとして補正するバー幅補正方
法である。この補正方法は、前記基準バー幅を算出し、
複数の基準バー幅の平均値を算出し、前記復調対象キャ
ラクタを構成する補正対象バーのバー幅と、前記基準バ
ー幅との誤差を算出し、前記算出された誤差が予め設定
された値以上である場合、前記基準バー幅の平均値に基
づいて前記補正対象バーのバー幅を補正することを特徴
とする。
【0022】請求項3の発明は、複数のキャラクタを含
むバーコードを走査してバーコードデータを検出するバ
ーコードデータ検出手段と、バーコードデータ検出手段
によって検出されたバーコードデータをキャラクタ毎に
復調する復調手段とを備えるバーコード読取装置であ
る。この読取装置は、復調手段が、各キャラクタの復調
に際し、復調対象のキャラクタ中に含まれこのキャラク
タの判別に使用される補正対象バーの幅の基準となる基
準バー幅を求める基準バー幅検出手段と、前記基準バー
幅検出手段によって求められた複数の基準バー幅の平均
値を求める平均値検出手段と、基準バー幅と補正対象バ
ーのバー幅との精度差を求める精度差検出手段と、前記
精度差検出手段によって求められた精度差が所定値以上
である場合に、前記平均値検出手段によって求められた
平均値を用いて前記補正対象バーのバー幅を補正する補
正手段とを含むことを特徴とする。
【0023】請求項3の発明によると、基準バー幅と補
正対象バーの幅との精度差が所定値以上である場合に
は、平均値を用いて補正対象バーの補正処理が行われ
る。このため、従来に比べて補正復調の精度を上げるこ
とができ、キャラクタの復調ミスによるバーコードの誤
読を防止することができる。
【0024】本発明に使用されるバーコードは、例え
ば、WPCコード(EANコード,JANコード等)であ
る。請求項4の発明は、請求項3記載の復調手段が、補
正対象バーのモジュール数に対応するキャラクタ値を記
憶した補正復調テーブルをさらに含み、前記補正手段
が、補正後の補正対象バーのモジュール数を求め、この
モジュール数に対応するキャラクタ値を前記補正復調テ
ーブルから読み出すことで特定したものである。
【0025】請求項5の発明は、請求項4記載の復調手
段が、復調対象のキャラクタ中の第1黒バーからその隣
に存する白バーまでの幅たる第1デルタディスタンスに
おけるモジュール数と、前記白バーからその隣に存する
第2黒バーまでの幅たる第2デルタディスタンスにおけ
るモジュール数とを算出するデルタディスタンス算出部
と、第1デルタディスタンス及び第2デルタディスタン
スにおける各モジュール数に対応するキャラクタ値を記
憶した復調テーブルと、前記デルタディスタンス算出部
によって算出された各モジュール数に対応する2つのキ
ャラクタ値が前記復調テーブルに記憶されている場合
に、前記第1黒バーを前記補正対象バーとし、この補正
対象バーのバー幅を前記基準バー幅データを用いて補正
するとともに、補正後の補正対象バーのモジュール数を
求める第2補正手段とをさらに含み、前記精度差検出手
段が、前記第2補正手段によって補正された補正対象バ
ーのバー幅と基準バー幅との精度差を求めることで特定
したものである。
【0026】請求項6の発明は、請求項5記載の第2補
正手段が、前記第2黒バーのバー幅を前記基準バー幅を
用いて補正し、復調手段が、前記第2補正手段によって
補正された第1黒バーのバー幅と第2黒バーのバー幅と
の精度差を求める黒バー精度差検出手段をさらに含み、
黒バー精度差検出手段が、前記黒バー精度差検出手段に
よって得られた精度差が所定値未満である場合に処理を
開始することで特定したものである。
【0027】請求項7の発明は、複数のキャラクタを含
むバーコードを走査してバーコードデータを検出するバ
ーコードデータ検出手段と、バーコードデータ検出手段
によって検出されたバーコードデータをキャラクタ毎に
復調する復調手段とを備えたバーコード読取装置のバー
コード復調方法である。この復調方法は、各キャラクタ
の復調に際し、復調対象のキャラクタ中に含まれこのキ
ャラクタの判別に使用される補正対象バーの幅の基準と
なる基準バー幅を求める基準バー幅検出ステップと、前
記基準バー幅検出ステップにて求められた複数の基準バ
ー幅の平均値を求める平均値検出ステップと、基準バー
幅と補正対象バーの幅との精度差を求める精度差検出ス
テップと、前記精度差検出ステップにて求められた精度
差が所定値以上である場合に、前記平均値検出ステップ
にて求めた平均値を用いて前記補正対象バーのバー幅を
補正する補正ステップとを含むことを特徴とする。
【0028】請求項8の発明は、請求項7記載の補正ス
テップが、補正後の補正対象バーのモジュール数を求
め、補正対象バーのモジュール数とキャラクタ値とを対
応づけて記憶した補正復調テーブルから、このモジュー
ル数に対応するキャラクタ値を読み出すことで特定した
ものである。
【0029】請求項9の発明は、請求項8記載の復調方
法が、復調対象のキャラクタ中の第1黒バーからその隣
に存する白バーまでの幅たる第1デルタディスタンスに
おけるモジュール数と、前記白バーからその隣に存する
第2黒バーまでの幅たる第2デルタディスタンスにおけ
るモジュール数とを算出するデルタディスタンス算出ス
テップと、前記デルタディスタンス算出ステップにて算
出された各モジュール数に対応するキャラクタ値が2つ
存する場合に、前記第1黒バーを前記補正対象バーと
し、この補正対象バーのバー幅を前記基準バー幅データ
を用いて補正するとともに、補正後の補正対象バーのモ
ジュール数を求める第2補正ステップとをさらに含み、
精度差検出ステップは、前記第2補正ステップにて補正
された補正対象バーのバー幅と基準バー幅との精度差を
求めることで特定したものである。
【0030】請求項10の発明は、請求項9記載の第2
補正ステップが、前記第2黒バーのバー幅を前記基準バ
ー幅を用いて補正し、前記第2補正ステップにて補正さ
れた第1黒バーのバー幅と第2黒バーのバー幅との精度
差を求める黒バー精度差検出ステップをさらに含み、前
記精度差検出ステップが、前記黒バー精度差検出手段に
よって得られた精度差が所定値未満である場合に処理を
開始することで特定したものである。
【0031】
【発明の実施の形態】以下、本発明の実施形態を図面を
参照して説明する。 〈バーコード読取装置の構成〉図1は、本発明の実施形
態によるバー幅補正装置を含むバーコード読取装置の概
略構成を示すブロック図である。バーコード読取装置
は、例えば、WPCコードのUPC/A,EAN-13
に従ったバーコード21を読み取る。図2は、図1に示
したバーコード21の例を示す図である。図2におい
て、バーコード21は、レフトガードバー(スタートガ
ードバー)及びライトガードバー(エンドガードバー)の
各ガードバーと、センターバーとを有し、各ガードバー
とセンターバーとの間に夫々挟まれた6キャラクタから
なるデータブロック(左側データブロック,右側データ
ブロック)を有している。各キャラクタは、7モジュー
ルからなり、2本の白バー(aバー,cバー)と2本の黒
バー(bバー,dバー)とからなる。各黒バーは、キャラ
クタの値に応じて1〜4モジュールで構成される。
【0032】図1において、バーコード読取装置は、互
いにバスBによって接続されたCPU1,バー幅データ
群格納バッファ2,制御部回路3,インタフェース回路
4,ROM5及びRAM6,バー幅データ群格納バッフ
ァ2に接続されたバー幅カウンタ16,バー幅カウンタ
16に接続されたクロック19及びA/D変換器15,
A/D変換器15に接続された受光素子18,制御部回
路3に接続されたモータ駆動回路8,レーザ駆動回路
9,スピーカ10及びLED11,モータ駆動回路8に
接続されたモータ12,モータ12によって駆動される
走査光学系14,並びに、レーザ駆動回路9に接続され
た半導体レーザ13からなる。
【0033】ROM5は、バーコード認識/復調処理プ
ログラムを格納している読み出し専用メモリである。C
PU1は、ROM5内に格納されているバーコード認識
プログラム及び復調処理プログラムを実行することによ
り、バーコード読取装置全体の制御を行うとともに、バ
ーコード21を読み取って得られたバー幅データ群を夫
々復調し、バーコード21全体に対応するデータを再現
する。
【0034】インタフェース回路4は、バスBのステー
タスを制御したり、上位機(上位コンピュータ)201へ
のデータ送信等を制御したりする。制御部回路3は、モ
ータ駆動回路8,レーザ駆動回路9,スピーカ10,及
び発光ダイオード(LED)11を制御する。モータ駆動
回路8は、モータ12を駆動して、走査光学系14を構
成する図示せぬポリゴンミラーを回転させる。レーザ駆
動回路9は、半導体レーザ13を駆動して、レーザビー
ムLを出射させる。スピーカ10は、バーコードの読取
完了を示す音声を発する。発光ダイオード11は、バー
コード21の復調の結果得られた情報(例えば、商品の
販売価格等)の情報を表示する表示素子である。
【0035】半導体レーザ13から出射されたレーザビ
ームLは、走査光学系14に入射され、この走査光学系
14によって偏向される。即ち、この走査光学系14
は、モータ12によって回転する図示せぬポリゴンミラ
ーによってレーザビームLを一方向に偏向する。このポ
リゴンミラーの反射側には、複数の固定ミラーが固定さ
れている。従って、ポリゴンミラーによって偏向された
レーザビームLは、各固定ミラーによって再度反射さ
れ、その偏向方向(走査方向)が様々な方向に変えられ
る。この走査光学系14によると、ポリゴンミラーの一
反射面による偏向周期内で、複数の方向へのレーザビー
ム走査が連続的に高速で行われる。このポリゴンミラー
の一反射面による偏向周期内でなされる複数のレーザビ
ーム走査の夫々を、以下、「一走査」という。
【0036】このようにして走査されたレーザビームL
がバーコード21に当たると、この表面においてレーザ
ビームLが乱反射され、その反射光Rの一部が受光素子
(ホトダイオード)18に受光される。A/D変換器15
は、この受光素子18によって受光された反射光Rの明
暗を示す電流値を、所定のしきい値と比較して、二値化
信号に変換する。この二値化信号は、反射光Rの強度が
バーコード21中の黒バーの反射率に対応する場合には
“H”を示し、反射光Rの強度がバーコード21中の白
バーの反射率に対応する場合には“L”を示す。
【0037】バー幅カウンタ16は、A/D変換器15
から入力された二値化信号に基づいて、二値化信号の立
ち上がりタイミングから立ち下がりタイミングまでの時
間(バーコード21中の黒バーの幅に対応するものと期
待される),及び、二値化信号の立ち下がりタイミング
から立ち上がりタイミングまでの時間(バーコード21
中の白バーの幅に対応するものと期待される)を測定す
る。
【0038】なお、バー幅カウンタ16は、これらバー
幅に対応する時間を計測するためにクロック19からの
クロック数をカウントする。バー幅カウンタ16から出
力される各バーの読取データ(バーコードデータ)は、こ
のカウント値と白又は黒を示す色識別信号とを組み合わ
せた形態であり、レーザービームの一走査毎に、このよ
うな読取データが連続的に出力される。このように連続
的に出力される一走査毎の読取データを「バー幅データ
群」という。
【0039】バー幅データ群は、バー幅データ群格納バ
ッファ2に一時的に格納される。このバー幅データ群格
納バッファ2は、バー幅カウンタ16から入力されたバ
ー幅データ群を順次格納するとともに、CPU1からの
求めに応じて、格納した順に一個づつこのバー幅データ
群をCPU1に渡す。
【0040】RAM6には、CPU1によるバーコード
認識処理,バーコード復調処理のための作業領域が展開
される。RAM4は、バー幅データ群格納バッファ2か
ら読み出されたバーコードデータを格納する。また、R
AM4は、CPU1によるバーコード復調処理によって
得られた復調バーコードデータを保持する。また、RA
M4には、後述するバーコード復調処理に際し使用され
るデータを格納する領域として、Xバー基本カウンタ
(base-bar:平均値格納領域)31,平均値計算
用カウンタ(total-bar)32,Xバーデータ格
納領域33,黒バー精度レジスタ34,第1復調テーブ
ル61(図12参照),第2復調テーブル62(図13参
照)等を有している。
【0041】なお、上述した制御部回路3,モータ駆動
回路8,レーザ駆動回路9,モータ12,半導体レーザ
13,走査光学系14,A/D変換器15,バー幅カウ
ンタ16,受光素子18,クロック19,バー幅データ
格納バッファ2が、本発明のバーコードデータ検出手段
に相当する。また、CPU1が、本発明の復調手段とし
て機能し、基準バー幅検出(算出)手段,平均値検出(算
出)手段,誤差算出手段,精度差検出手段,補正手段,
デルタディスタンス算出手段,第2補正手段,及び黒バ
ー精度検出手段を実現する。また、第1復調テーブル6
1が本発明の復調テーブルに相当し、第2復調テーブル
62が本発明の補正復調テーブルに相当する。
【0042】〈バーコード復調処理〉次に、ROM5に
格納されCPU1によって実行されるバーコード復調処
理プログラムの具体的内容を、図3〜図7に示すフロー
チャートに基づいて説明する。図3は、バーコード復調
処理(以下、単に「復調処理」という)のメインルーチン
が示されている。このメインルーチンは、以下の処理を
前提として開始される。 即ち、バーコード読取装置に
主電源が投入されると、CPU1がバーコード認識処理
を行う。これによって、バーコード21が走査され、バ
ー幅データ群がバー幅データ群格納バッファ2に格納さ
れる。その後、CPU1が、バー幅データ群格納バッフ
ァ2からバー幅データ群を読み出し、RAM6の所定領
域に格納する。続いて、CPU1は、バー幅データ群中
のスタートガードバー,センターバー,又はエンドガー
ドバーのバー幅カウンタ値とモジュール数を求め、求め
たバー幅カウンタ値及びモジュール数をXバーのカウン
タ値及びモジュール数として、RAM6中のXバーデー
タ格納領域に格納する。なお、各ガードバー又はセンタ
ーバーのモジュール数は1である。その後、CPU1
が、メインルーチンの実行を開始する。
【0043】最初に、CPU1は、図1に示すRAM6
中のXバー基本カウンタ(base-bar)31の値を
クリアする(ステップS1)。次に、CPU1は、RAM
6中の黒バー精度レジスタ(blead−mod)34を
イニシャルする(ステップS2)。次に、CPU1は、1
キャラクタ復調処理用のデータを作業領域に読み出す。
1キャラクタ復調処理用のデータは、復調対象のキャラ
クタ(図2参照)をなすa〜dの各バーのバー幅カウンタ
値,キャラクタ長,Xバーのバー幅カウント値,及びX
バーのモジュール数からなる。
【0044】続いて、CPU1は、図4に示される1キ
ャラクタ復調処理のサブルーチンを実行する(ステップ
S4)。このサブルーチンにおいて、CPU1は、最初
に、ステップS001〜S007の処理において、Xバ
ーデータ格納領域33に格納されたXバーのモジュール
数を求める。続いて、CPU1は、求めたモジュール数
に応じてXバーデータ格納領域33に格納されたXバー
幅カウンタ値を12モジュール分に増加した値を求め、
求めた値をRAM6中の平均値計算用レジスタ(tot
al-bar)32に格納する。
【0045】ここで、12モジュール分のXバーのバー
幅カウンタ値を求めるのは、12がXバーのモジュール
数(1〜4)の最大公倍数であり、12モジュール分のX
バー幅カウンタ値から1モジュールあたりのバー幅カウ
ンタ値を求めることによって、Xバーのモジュール数の
相違による誤差の発生を抑えるためである。
【0046】ステップS001〜S007の処理が終了
すると、CPU1は、Xバー基本カウンタ31がクリア
となっているかを判定する(ステップS008)。このと
き、Xバー基本カウンタ31がクリアとなっている場合
(S008;Y)には、CPU1は、ステップS009に
処理が進め、そうでない場合(S008;N)には、CP
U1は、ステップS010に処理を進める。
【0047】ステップS009に処理が進んだ場合、C
PU1は、Xバー基本レジスタ31に平均値計算用レジ
スタ32の値をコピーする。これに対し、ステップS0
10に処理が進んだ場合には、CPU1は、Xバー基本
レジスタ31に現在格納されている値と平均値計算用レ
ジスタ32に格納されている値とを加算した後、その加
算結果の2分の1を求め、求めた値をXバー基本レジス
タ32に格納する。このステップS010の処理によっ
て、後述するBlead補正復調に際し用いられる基準
バー幅データが生成される。
【0048】ステップS09又はステップS10の処理
が終了すると、CPU1は、復調対象のキャラクタのc
バー及びdバーについてのデルタディスタンスT1及び
T2(図2参照)を夫々求める(ステップS11)。
【0049】続いて、CPU1は、各デルタディスタン
スT1,T2におけるモジュール数を求めた後、RAM
4中の第1復調テーブル61(図12参照)を参照する。
このとき、CPU1は、デルタディスタンスT1のモジ
ュール数が3又は4であり、且つデルタディスタンスT
2のモジュール数が3又は4であるかを判定する。これ
によって、CPU1は、復調対象キャラクタが補正復調
を必要とするキャラクタ(補正キャラクタ)かを判定する
(ステップS012)。このとき、復調対象のキャラクタ
が補正キャラクタである場合(S012;Y)には、CP
U1は、処理をステップS013へ進め、そうでない場
合(S012;N)には、CPU1は、各デルタディスタ
ンスT1,T2に対応するキャラクタ値を第1復調テー
ブル61から読み出した後、処理をステップS021へ
進める。
【0050】ステップS013に処理が進んだ場合に
は、CPU1は、Xバーデータ格納領域33に保持され
たXバーに係るデータを用い、従来技術にて説明した補
正復調を行う。これによって、復調対象キャラクタのb
バー及びdバーのモジュール数が補正される。そして、
CPU1は、RAM4中の第2復調テーブル62(図1
3参照)を参照し、補正後のdバーのモジュール数に対
応するキャラクタ値を第2復調テーブル62から読み出
す。これによって、復調対象キャラクタの値が特定され
る(復調対象キャラクタが復調される)。
【0051】ステップS013の処理が終了すると、C
PU1は、図5に示す黒バー精度チェック処理のサブル
ーチンを実行する(ステップS014)。図5に示すサブ
ルーチンにおいて、CPU1は、最初に、ステップS0
13の処理によって得られたbバーのモジュール数を読
み込む(ステップS101)。続いて、CPU1は、図6
に示すモジュール精度(誤差)チェック処理を実行する
(ステップS102)。
【0052】図6に示すサブルーチンにおいて、CPU
1は、bバーのモジュール数(dec-mod),モジュ
ール精度チェックを行うバー(ここでは、bバー)のバー
幅データ(chk-bar),及び復調対象キャラクタの
キャラクタ長(C)を、引数として用意する。
【0053】なお、図8に示すように、本実施形態で
は、キャラクタ長の14分の1以上で14分の3以下の
長さが1モジュールと判定され、キャラクタ長の14分
の3を上回り且つ14分の5以下の長さが2モジュール
と判定され、キャラクタ長の14分の5を上回り且つ1
4分の7以下の長さが3モジュールと判定され、キャラ
クタ長の14分の7を上回り且つ14分の9以下の長さ
が4モジュールと判定される。但し、モジュール精度チ
ェック処理では、後述するように、チェック精度を高め
るため、モジュール数を10倍した値を用いて処理が行
われる。
【0054】図6において、CPU1は、復調対象キャ
ラクタのキャラクタ長を5倍する(ステップS201)。
続いて、CPU1は、復調対象キャラクタのキャラクタ
長を10倍する(ステップS202)。
【0055】次に、CPU1は、引数dec-mod
(bバーのモジュール数)が零かを判定する(ステップS
203)。このとき、引数dec-modが零である場合
(S203;Y)には、ステップS206へ処理が進み、
引数dec-modが零でない場合(S203;N)に
は、処理がステップS204へ進む。
【0056】ステップS204へ処理が進んだ場合、C
PU1は、ステップS201で得た値とステップS20
2で得た値とを加算する。そして、CPU1は、引数d
ec-modの値を1デクリメントし(ステップS20
5)、処理をステップS203へ戻す。このステップS
201〜S205の処理において、CPU1は、復調対
象キャラクタのキャラクタ長をbバーのモジュール数に
応じて乗じた値(比較値)を求める。即ち、CPU1は、
bバーのモジュール数が1のとき、キャラクタ長を15
倍した値を求め、モジュール数が2のとき、キャラクタ
長を25倍した値を求め、モジュール数が3のとき、キ
ャラクタ長を35倍した値を求め、モジュール数が4の
とき、キャラクタ長を45倍した値を求める。
【0057】ステップS206へ処理が進むと、CPU
1は、図9に示す精度カウンタiの値を11にセットす
る。図9に示す精度カウンタiは、モジュール数が1の
場合に用いられるものであり、Xバーの1モジュールを
1.0(基準)とする0.5モジュールから1.5モジュ
ールまでのスケール(1モジュールと判定される範囲)に
応じて1〜10の値を採るようになっている。例えば、
0.5モジュール(キャラクタ長の70分の5)から0.
6モジュールの間では、精度カウンタiはi=1とな
り、1.0モジュール(キャラクタ長の70分の10)か
ら1.1モジュールの間では、精度カウンタiはi=6
となり、1.4モジュールから1.5モジュール(キャ
ラクタ長の70分の15)の間では、精度カウンタiは
i=10となる。これに対し、モジュール数が2の場合
には、精度カウンタiは、1.5モジュールから2.5
モジュールまでのスケールにおいて1〜10の値を採
る。また、モジュール数が3の場合には、精度カウンタ
iは、2.5モジュールから3.5モジュールまでのス
ケールにおいて1〜10の値を採る。また、モジュール
数が4の場合には、精度カウンタiは、3.5モジュー
ルから4.5モジュールまでのスケールにおいて1〜1
0の値を採る。
【0058】次に、CPU1は、引数chk-bar(b
バーのバー幅カウンタ値)を70倍した値(barcn
t)を求める(ステップS207)。続いて、CPU1
は、ステップS201〜S205の処理において求めた
比較値がステップS207にて求めたbarcntの値
を上回っているかを判定する(ステップS208)。この
とき、比較値がbarcntの値を上回っている場合
(S208;Y)には、CPU1は、精度カウンタiの値
に応じたbバーのモジュール精度を求め、モジュール精
度チェック処理のサブルーチンを終了する。
【0059】これに対し、比較値がbarcntの値以
下である場合(S208;N)には、CPU1は、比較値
からキャラクタ長を減算し(ステップS209)、精度カ
ウンタiの値を1デクリメントする(ステップS21
0)。そして、CPU1は、精度カウンタiの値が零か
を判定する(ステップS211)。精度カウンタiが零で
ある場合(S211;Y)には、CPU1は、モジュール
精度チェック処理のサブルーチンを終了し、精度カウン
タiが零でない場合(S211;N)には、処理をステッ
プS208へ戻す。
【0060】このように、ステップS206〜S211
の処理によって、CPU1は、精度カウンタiの値を求
めることにより、bバーのモジュール精度を求める。例
えば、ステップS013の補正復調処理の結果、復調対
象キャラクタがオッドの“1”(0011001)であ
り、bバーのモジュール数が2であったとする。また、
例えば、bバーのバー幅データ(カウンタ値)が210で
あり、復調対象キャラクタのキャラクタ長(カウント値)
が700であったとする。
【0061】この場合、ステップS201〜S205の
処理によって、比較値としてキャラクタ長を25倍した
値=17500が求められる。また、ステップS207
の処理によって、barcntの値=14700が求め
られる。そして、ステップ208〜S211のループ処
理によって、精度カウンタi=7が求められる。この例
では、精度カウンタiが7のとき、bバーのモジュール
数は2.1モジュールとなる。従って、CPU1は、b
バーのモジュール数から小数点以下を抽出した値,即ち
0.1モジュールをbバーのモジュール精度(b−mo
d)として求め、モジュール精度チェック処理を終了
し、処理を図5に示す黒バー精度チェックに戻す。な
お、モジュール精度チェック処理では、チェック対象の
バー(ここではbバー)のモジュール数に関わらず、精度
カウンタに対応するモジュール数の小数点以下の部分
が、モジュール精度として求められる。
【0062】その後、CPU1は、図5に示すステップ
S103に処理を移す。ステップS103では、CPU
1は、ステップS013の処理によって得られたdバー
のモジュール数を読み込む。続いて、CPU1は、dバ
ーについて、図6に示したモジュール数チェック処理を
行い、dバーのモジュール精度(d−mod)を求める
(ステップS104)。
【0063】次に、CPU1は、b-modがd-mod
を上回っているかを判定する(ステップS105)。この
とき、b-modがd-modを上回っている場合(S1
05;Y)には、CPU1は、b-modからd-mod
を減算した値をmod-sabunとして求め、処理を
ステップS108へ進める。これに対し、b-modが
d-mod未満の場合(S105;N)には、CPU1
は、d-modからb-modを減算した値をmod-s
abunとして求め、処理をステップS108へ進め
る。
【0064】ステップS108へ処理が進むと、CPU
1は、黒バー精度レジスタ(blead-mod)34が
イニシャルかを判定する。このとき、黒バー精度レジス
タ34がイニシャルである場合(S108;Y)には、C
PU1は、処理をステップS110へ進める。黒バー精
度レジスタ34がイニシャルでない場合(S108;N)
には、CPU1は、ステップS106又はS107にて
求めたmod-sabunの値をもって黒バー精度レジ
スタ34の内容を更新し(ステップS109)、黒バー精
度チェック結果がOKであると決定し、黒バー精度チェ
ック処理を終了する。
【0065】一方、ステップS110へ処理が進んだ場
合には、CPU1は、黒バー精度レジスタ(blead-
mod)34の値がmod-sabunの値を上回ってい
るかを判定する(ステップS110)。このとき、ble
ad-modがmod-sabunを上回っている場合
(S110;Y)には、CPU1は、blead-mod
からmod-sabunを減算した値をblead-sa
bunとして求め、処理をステップS113へ進める。
これに対し、blead-modがmod-sabun未
満である場合(S110;N)には、CPU1は、mod
-sabunからblead-modを減算した値をbl
ead-sabunとして求め、処理をステップS11
3へ進める。
【0066】ステップS113へ処理が進むと、CPU
1は、bバーのモジュール精度b-modとdバーのモ
ジュール精度d-modとの差分が0.3モジュール以
上かを判定する。即ち、blead-modの値が0.
3モジュール以上かを判定する。このとき、blead
-modの値が0.3モジュール以上である場合(S11
3;Y)には、CPU1は、黒バー精度チェック結果が
NGであると決定し、黒バー精度チェック処理を終了す
る。これに対し、blead-modの値が0.3モジ
ュール未満の場合(S113;N)には、CPU1は、ス
テップS106又はS107にて求めたmod-sab
unの値をもって黒バー精度レジスタを更新し(ステッ
プS114)、黒バー精度チェック結果がOKであると
決定し、黒バー精度チェック処理を終了する。このよう
に、CPU1は、bバーとdバーの精度差が±0.3モ
ジュール以上である場合には、黒バー精度がNGと判定
し、±0.3モジュール未満である場合には、黒バー精
度がOKと判定する。その後、CPU1は、図4に示す
ステップS015に処理を移す。
【0067】ステップS015へ処理が進むと、CPU
1は、黒バー精度チェック結果がNGか否かを判定す
る。このとき、チェック結果がNGである場合(S11
5;Y)、CPU1は、復調対象キャラクタの復調処理
がNGであると判定し、1キャラクタ復調処理を終了す
る。これに対し、チェック結果がOKである場合(S1
15;N)、CPU1は、ステップS116へ処理を進
める。
【0068】ステップS116では、CPU1は、図7
に示すdバー精度チェック処理のサブルーチンを実行す
る。図7において、CPU1は、最初に、dバーのモジ
ュール数(dlmod:0〜4)を算出する(ステップS
301)。次のステップS302〜S306では、CP
U1は、図6に示したモジュール精度チェック処理にお
けるステップS201〜S205と同様の処理を行い、
dバーのモジュール数に応じた比較値を得る。
【0069】即ち、dバーのモジュール数が1のとき、
復調対象キャラクタのキャラクタ長を15倍した比較値
が求められ、dバーのモジュール数が2のとき、復調キ
ャラクタのキャラクタ長を25倍した比較値が求めら
れ、dバーのモジュール数が3のとき、復調キャラクタ
のキャラクタ長を35倍した比較値が求められ、dバー
のモジュール数が4のとき、復調キャラクタのキャラク
タ長を45倍した比較値が求められ、図示せぬchrカ
ウンタにセットされる。
【0070】次に、CPU1は、図10に示す精度カウ
ンタx-bar-modの値を9に設定する(ステップS
307)。図10に示すように、精度カウンタx-bar
-modは、例えば、dバーのモジュール数が1の場合
には、Xバーの1モジュールを1.0(基準)とする0.
5モジュールから1.5モジュールまでのスケールに応
じて0〜9の値を採る。例えば、精度カウンタx-ba
r-modのカウンタ値が1のとき、モジュール数は
0.6モジュールであり、カウンタ値が9のとき、モジ
ュール数は1.4モジュールである。
【0071】次に、CPU1は、dバーのバー幅カウン
タ値を70倍した値をbarcntとして求める(ステ
ップS308)。次に、CPU1は、barcntの値
がステップS302〜S306にて求めた比較値を上回
るか否かを判定する(ステップS309)。このとき、b
arcntの値が比較値を上回る場合(S309;Y)に
は、CPU1は、このときの精度カウンタx-bar-m
odのカウンタ値に対応するdバーのモジュール精度を
求め、dバー精度チェック処理を終了する。これに対
し、barcntの値が比較値未満の場合(S309;
N)の場合には、CPU1は、chrカウンタの値(比較
値)からキャラクタ長を減算し(ステップS310)、精
度カウンタx-bar-modの値を1デクリメントする
(ステップS311)。
【0072】その後、CPU1は、精度カウンタx-b
ar-modのカウンタ値が零かを判定する(ステップS
312)。このとき、カウンタ値が零の場合(S312;
Y)には、CPU1は、dバー精度チェック処理を終了
する。これに対し、カウンタ値が零でない場合(S31
2;N)には、CPU1は、処理をステップS309へ
戻す。このように、ステップS307〜S312にて、
CPU1は、精度カウンタx-bar-modの値に応じ
たdバーのモジュール精度を得る。その後、CPU1
は、dバー精度チェック処理を終了し、処理を図4に示
す1キャラクタ復調処理のステップS017に戻す。
【0073】ステップS017に処理が進むと、CPU
1は、dバー精度チェック処理にて得たdバーのモジュ
ール精度が0.4モジュール以上かを判定する(ステッ
プS017)。このとき、モジュール精度が0.4未満
である場合(S017;N)、CPU1は、ステップS0
13における復調結果がOKと判定し、1キャラクタ復
調処理を終了する。これに対し、モジュール精度が0.
4以上である場合(S017;Y)、CPU1は、処理を
ステップS018へ進める。
【0074】ステップS018へ処理が進むと、CPU
1は、補正復調に際して用いる基準バー幅データ(図1
4に示すbv)を、Xバーのバー幅から、Xバー基本カウ
ンタ(base-bar)31の値(Xバーの平均値)に変
更する。このため、CPU1は、base-barの値
の12分の1の値を求める。その後、CPU1は、ba
se-barの値の12分の1の値を基準バー幅として
用いた補正復調処理(Blead補正復調処理)を行う
(ステップS019)。これによって、補正後のdバーの
モジュール数に対応するキャラクタ値が第2復調テーブ
ル62から読み出され、このキャラクタ値をもって復調
対象キャラクタが復調される。
【0075】その後、CPU1は、ステップS019の
復調処理の結果がOKか否かを判定する(ステップS0
20)。このとき、復調結果がOKの場合(S020;
Y)には、CPU1は、復調結果がOKであるとの処理
結果をもって1キャラクタ復調処理を終了する。これに
対し、復調結果がNGの場合(S020;N)には、CP
U1は、復調結果がNGであるとの処理結果をもって1
キャラクタ復調処理を終了する。
【0076】このように、CPU1は、補正キャラクタ
に対し、まずXバーを用いた補正復調処理を施し、この
場合におけるXバーとdバーとの精度差が0.4モジュ
ール以上であった場合には、base-barの値の1
/12の値を基準バー幅(bv)として補正復調処理を行
う。これによって、バーコード21の黒バーが局部的に
太ったり細ったりしている場合でもキャラクタの復調を
適正に行うことができる。
【0077】ところで、ステップS021に処理が進ん
だ場合には、CPU1は、ステップS021〜S024
において、上述したステップS014〜S017の処理
と同様の処理を行う。そして、ステップS024にてN
Oの判定がなされた場合には、CPU1は、本処理にて
復調したdバーのカウンタ値及びモジュール数をもって
Xバーデータ格納領域33の内容を更新する(ステップ
S025)。これによって、dバーのデータが、次の復
調対象キャラクタの補正復調処理に用いられるXバーの
データとなる。
【0078】1キャラクタ復調処理が終了すると、CP
U1は、処理を図3に示すメインルーチンのステップS
5に移す。ステップS5では、CPU1は、1キャラク
タ復調処理による復調結果がOKか否かを判定する。こ
のとき、復調結果がNGである場合(S5;N)には、C
PU1は、有効な復調データが得られなかったものと
し、このバーコード復調処理を終了する。この場合、C
PU1は、他の走査軌跡におけるバーコードデータをR
AM4又はバー幅データ群格納バッファ2から読み出
し、上記したバーコード復調処理を行う。
【0079】これに対し、復調結果がOKである場合
(S5;Y)には、CPU1は、今回のバーコード復調処
理において処理対象となったバーコードデータに含まれ
ている全ての有効キャラクタについて復調処理が終了し
たかを判定する(ステップS6)。このとき、全ての有効
キャラクタについて復調処理が終了していない場合(S
6;N)には、CPU1は、ステップS3に処理を戻
し、次のキャラクタについての1キャラクタ復調処理を
行い、ステップS6にてYESの判定がなされるまで、
ステップS3〜S6のループ処理を行う。そして、全て
の有効キャラクタについて復調処理が終了した場合(S
6;Y)には、有効な復調データが得られたものとし、
このバーコード復調処理を終了する。
【0080】この場合、復調されたバーコードデータ
は、RAM4に格納される。このとき、復調バーコード
データが、バーコード21の一部についての復調データ
である場合(いわゆる分割読取,ブロック読取である場
合)には、CPU1は、残りの部分に係るバーコードデ
ータについて上記したバーコード復調処理を実行し、得
られた復調バーコードデータ同士を合成(結合)し、バー
コード21全体,即ち、バーコード21に含まれる全て
のキャラクタの復調データを得る。
【0081】バーコード21全体の復調データが得られ
た場合には、CPU1は、モジュラスチェック処理(モ
ジュラス10チェック)を実行する。その後、モジュラ
スチェック処理の結果がOKであった場合には、バーコ
ード21の復調が終了したことを示す音声をスピーカ1
0に出力させるための指示を制御部回路3に与えるとと
もに、バーコード21のキャラクタ値に基づく情報をL
ED11に表示させるための指示を制御部回路3に与え
る。さらに、CPU1は、復調バーコードデータの内容
(又はこれに対応する情報)を、インターフェイス回路4
を通じて上位機(POS)201に転送する。一方、CP
U1は、バーコード21全体の復調データが得られない
場合には、エラー表示を行うための指示を制御部回路3
に与える。これによって、スピーカ10が読取エラーを
示す音声を出力し、LED11が読取エラーを表示す
る。
【0082】〈実施形態の作用〉実施形態によるバーコ
ード読取装置によると、1キャラクタ復調処理(図4参
照)において、Xバーとdバーとの精度差(誤差)が0.
4モジュール以上であった場合には、Xバーの平均値を
用いて補正復調対象バーの補正復調(バー幅補正)が行わ
れ、誤差が0.4モジュール未満の場合には、Xバーの
バー幅を用いて補正復調対象バーの補正復調(バー幅補
正)が行われる。このため、バーコード21の黒バーが
局部的に太ったり細ったりしている場合でも、適正に補
正復調を行うことができるので、バーコード21の誤読
を防止することができる。
【0083】なお、本実施形態は、本発明のバー幅補正
装置及びバー幅補正方法を補正復調処理について適用し
た例を示している。従って、本発明のバー幅補正装置及
びバー幅補正方法は、本実施形態に限定されず、バーコ
ードのバー幅補正について広く実施可能である。
【0084】なお、本実施形態では、バーコード21
は、WPCコードのUPC/A,EAN-13に従った
ものを用いたが、本発明によるバー幅補正装置及びバー
コード読取装置は、WPCコード全般について広く用い
ることができる。また、図4に示したステップS017
におけるしきい値を0.4モジュールとしたが、このし
きい値は適宜変更可能である。
【0085】
【発明の効果】本発明によるバー幅補正装置及びバー幅
補正方法によれば、補正対象バーのバー幅と基準バー幅
との誤差が予め定められた値以上である場合には、基準
バー幅の平均値を用いて補正対象バーのバー幅が補正さ
れる。このため、バーコードのバー幅の太り方や細り方
が一様でない場合でも適正にバー幅を補正することがで
き、バーコードの誤読を防止することができる。
【0086】また、本発明によるバーコード読取装置及
びそのバーコード復調方法によると、キャラクタの復調
処理において、基準バーの精度と補正復調対象の黒バー
の精度との差が所定値以上となった場合には、基準バー
のバー幅の平均値を用いて補正復調処理が行われる。こ
のため、バーコードの黒バーが局部的に太ったり細った
りした場合でも、従来における補正復調に比べて適正に
キャラクタを復調することができる。従って、従来に比
べ、補正復調の際におけるキャラクタの復調ミスを抑え
ることができ、バーコードの誤読を防止することができ
る。
【図面の簡単な説明】
【図1】本発明の実施形態によるバーコード読取装置の
構成図
【図2】図1に示したバーコードの例を示す図
【図3】図1に示したCPUによるバーコード復調処理
を示すフローチャート
【図4】図3に示した1キャラクタ復調処理を示すフロ
ーチャート
【図5】図4に示した黒バー精度チェック処理を示すフ
ローチャート
【図6】図5に示したモジュール精度チェック処理を示
すフローチャート
【図7】図4に示したdバー精度チェック処理を示すフ
ローチャート
【図8】本実施形態におけるキャラクタ長とモジュール
数との関係を示す図
【図9】図6に示したモジュール精度チェック処理にお
ける精度カウンタの説明図
【図10】図7に示したdバー精度チェック処理におけ
る精度カウンタの説明図
【図11】黒バーの太り細りによるデルタディスタンス
の説明図
【図12】第1復調テーブルの説明図
【図13】第2復調テーブルの説明図
【図14】従来における補正復調処理の説明図
【符号の説明】
1 CPU 2 バー幅データ格納バッファ 3 制御部回路 5 ROM 6 RAM 8 モータ駆動回路 9 レーザ駆動回路 12 モータ 13 半導体レーザ 14 走査光学系 15 A/D変換器 16 バー幅カウンタ 18 受光素子 19 クロック 21 バーコード 31 Xバー基本カウンタ 32 平均値計算用カウンタ 33 Xバーデータ格納領域 34 黒バー精度レジスタ 61 第1復調テーブル 62 第2復調テーブル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川合 弘晃 神奈川県川崎市中原区上小田中4丁目1 番1号 富士通株式会社内 (72)発明者 岩口 功 神奈川県川崎市中原区上小田中4丁目1 番1号 富士通株式会社内 (56)参考文献 特開 平4−165484(JP,A) 特開 平6−337954(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06K 7/10 G06K 7/00

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】バー幅の基準となる基準バー幅を求める基
    準バー幅算出手段と、 前記基準バー幅算出手段によって求められた複数の基準
    バー幅の平均値を求める平均値算出手段と、 補正対象バーのバー幅と、前記基準バー幅との誤差を算
    出する誤差算出手段と、 前記誤差算出手段によって求められた誤差値が予め定め
    られた値以上である場合には、前記平均値算出手段によ
    って求められた複数の基準バー幅の平均値を用いて前記
    補正対象バーのバー幅を補正するとともに、前記誤差値
    が前記予め定められた値未満である場合には、前記基準
    バー幅によって前記補正対象バーのバー幅を補正する補
    正手段とを備えたことを特徴とするバー幅補正装置。
  2. 【請求項2】復調対象キャラクタを構成するバーのバー
    幅を、復調済みキャラクタを構成するバーのバー幅を基
    準バーとして補正するバー幅補正方法であって、 前記基準バー幅を算出し、 複数の基準バー幅の平均値を算出し、 前記復調対象キャラクタを構成する補正対象バーのバー
    幅と前記基準バー幅との誤差を算出し、 前記算出された誤差が予め設定された値以上である場
    合、前記基準バー幅の平均値に基づいて前記補正対象バ
    ーのバー幅を補正することを特徴とするバー幅補正方
    法。
  3. 【請求項3】複数のキャラクタを含むバーコードを走査
    してバーコードデータを検出するバーコードデータ検出
    手段と、バーコードデータ検出手段によって検出された
    バーコードデータをキャラクタ毎に復調する復調手段と
    を備え、 前記復調手段が、 各キャラクタの復調に際し、復調対象のキャラクタ中に
    含まれこのキャラクタの判別に使用される補正対象バー
    の幅の基準となる基準バー幅を求める基準バー幅検出手
    段と、 前記基準バー幅検出手段によって求められた複数の基準
    バー幅の平均値を求める平均値検出手段と、 基準バー幅と補正対象バーのバー幅との精度差を求める
    精度差検出手段と、 前記精度差検出手段によって求められた精度差が所定値
    以上である場合に、前記平均値検出手段によって求めら
    れた平均値を用いて前記補正対象バーのバー幅を補正す
    る補正手段とを含むことを特徴とするバーコード読取装
    置。
  4. 【請求項4】前記復調手段が、補正対象バーのモジュー
    ル数に対応するキャラクタ値を記憶した補正復調テーブ
    ルをさらに含み、 前記補正手段が、補正後の補正対象バーのモジュール数
    を求め、このモジュール数に対応するキャラクタ値を前
    記補正復調テーブルから読み出すことを特徴とする請求
    項3記載のバーコード読取装置。
  5. 【請求項5】前記復調手段が、 復調対象のキャラクタ中の第1黒バーからその隣に存す
    る白バーまでの幅たる第1デルタディスタンスにおける
    モジュール数と、前記白バーからその隣に存する第2黒
    バーまでの幅たる第2デルタディスタンスにおけるモジ
    ュール数とを算出するデルタディスタンス算出手段と、 第1デルタディスタンス及び第2デルタディスタンスに
    おける各モジュール数に対応するキャラクタ値を記憶し
    た復調テーブルと、 前記デルタディスタンス算出部によって算出された各モ
    ジュール数に対応する2つのキャラクタ値が前記復調テ
    ーブルに記憶されている場合に、前記第1黒バーを前記
    補正対象バーとし、この補正対象バーのバー幅を前記基
    準バー幅データを用いて補正するとともに、補正後の補
    正対象バーのモジュール数を求める第2補正手段とをさ
    らに含み、 前記精度差検出手段が、前記第2補正手段によって補正
    された補正対象バーのバー幅と基準バー幅との精度差を
    求めることを特徴とする請求項4記載のバーコード読取
    装置。
  6. 【請求項6】前記第2補正手段が、前記第2黒バーのバ
    ー幅を前記基準バー幅を用いて補正し、 前記復調手段が、前記第2補正手段によって補正された
    第1黒バーのバー幅と第2黒バーのバー幅との精度差を
    求める黒バー精度差検出手段をさらに含み、 前記精度差検出手段が、前記黒バー精度差検出手段によ
    って得られた精度差が所定値未満である場合に処理を開
    始することを特徴とする請求項5記載のバーコード読取
    装置。
  7. 【請求項7】複数のキャラクタを含むバーコードを走査
    してバーコードデータを検出するバーコードデータ検出
    手段と、バーコードデータ検出手段によって検出された
    バーコードデータをキャラクタ毎に復調する復調手段と
    を備えたバーコード読取装置のバーコード復調方法であ
    って、 各キャラクタの復調に際し、復調対象のキャラクタ中に
    含まれこのキャラクタの判別に使用される補正対象バー
    の幅の基準となる基準バー幅を求める基準バー幅検出ス
    テップと、 前記基準バー幅検出ステップにて求められた複数の基準
    バー幅の平均値を求める平均値検出ステップと、 基準バー幅と補正対象バーの幅との精度差を求める精度
    差検出ステップと、 前記精度差検出ステップにて求められた精度差が所定値
    以上である場合に、前記平均値検出ステップにて求めた
    平均値を用いて前記補正対象バーのバー幅を補正する補
    正ステップとを含むことを特徴とするバーコード読取装
    置のバーコード復調方法。
  8. 【請求項8】前記補正ステップは、補正後の補正対象バ
    ーのモジュール数を求め、補正対象バーのモジュール数
    とキャラクタ値とを対応づけて記憶した補正復調テーブ
    ルから、このモジュール数に対応するキャラクタ値を読
    み出すことを特徴とする請求項7記載のバーコード読取
    装置のバーコード復調方法。
  9. 【請求項9】復調対象のキャラクタ中の第1黒バーから
    その隣に存する白バーまでの幅たる第1デルタディスタ
    ンスにおけるモジュール数と、前記白バーからその隣に
    存する第2黒バーまでの幅たる第2デルタディスタンス
    におけるモジュール数とを算出するデルタディスタンス
    算出ステップと、 前記デルタディスタンス算出ステップにて算出された各
    モジュール数に対応するキャラクタ値が2つ存する場合
    に、前記第1黒バーを前記補正対象バーとし、この補正
    対象バーのバー幅を前記基準バー幅データを用いて補正
    するとともに、補正後の補正対象バーのモジュール数を
    求める第2補正ステップとをさらに含み、 前記精度差検出ステップは、前記第2補正ステップにて
    補正された補正対象バーのバー幅と基準バー幅との精度
    差を求めることを特徴とする請求項8記載のバーコード
    読取装置のバーコード復調方法。
  10. 【請求項10】前記第2補正ステップは、前記第2黒バ
    ーのバー幅を前記基準バー幅を用いて補正し、 前記第2補正ステップにて補正された第1黒バーのバー
    幅と第2黒バーのバー幅との精度差を求める黒バー精度
    差検出ステップをさらに含み、 前記精度差検出ステップが、前記黒バー精度差検出手段
    によって得られた精度差が所定値未満である場合に処理
    を開始することを特徴とする請求項9記載のバーコード
    読取装置のバーコード復調方法。
JP27324998A 1998-09-28 1998-09-28 バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法 Expired - Fee Related JP3510496B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP27324998A JP3510496B2 (ja) 1998-09-28 1998-09-28 バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法
PCT/JP1999/000483 WO2000019355A1 (fr) 1998-09-28 1999-02-04 Dispositif et procede de correction de la largeur de barre, lecteur de code a barres et procede de decodage de code a barres
EP99901941A EP1120736A4 (en) 1998-09-28 1999-02-04 STRIP WIDTH CONTROL DEVICE, STRIP WIDTH CONTROL METHOD, STRIP CODE READER, AND STRIP CODE DETECTING METHOD
US09/815,007 US6299064B2 (en) 1998-09-28 2001-03-23 Apparatus and method for correcting bar width, bar code reader, and method for decoding bar code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27324998A JP3510496B2 (ja) 1998-09-28 1998-09-28 バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法

Publications (2)

Publication Number Publication Date
JP2000099622A JP2000099622A (ja) 2000-04-07
JP3510496B2 true JP3510496B2 (ja) 2004-03-29

Family

ID=17525209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27324998A Expired - Fee Related JP3510496B2 (ja) 1998-09-28 1998-09-28 バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法

Country Status (4)

Country Link
US (1) US6299064B2 (ja)
EP (1) EP1120736A4 (ja)
JP (1) JP3510496B2 (ja)
WO (1) WO2000019355A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3548025B2 (ja) * 1998-12-17 2004-07-28 富士通株式会社 バーコード読取装置および方法
JP4416980B2 (ja) * 1999-10-25 2010-02-17 富士通株式会社 バーコード読取装置およびバーコード読取方法
US8682077B1 (en) 2000-11-28 2014-03-25 Hand Held Products, Inc. Method for omnidirectional processing of 2D images including recognizable characters
US7044382B2 (en) * 2002-06-28 2006-05-16 Fujitsu Limited Bar-code reader and computer product
JP4070631B2 (ja) * 2003-02-21 2008-04-02 富士通株式会社 バーコード読取装置およびバーコード読取方法
JP4257132B2 (ja) * 2003-02-21 2009-04-22 富士通株式会社 バーコード読取装置およびバーコード読取方法
US7416125B2 (en) * 2005-03-24 2008-08-26 Hand Held Products, Inc. Synthesis decoding and methods of use thereof
US20090078774A1 (en) * 2007-09-21 2009-03-26 Symbol Technologies, Inc. Graphical User Interface for Use in Programming a Barcode Reader
JP4539701B2 (ja) 2007-09-26 2010-09-08 富士ゼロックス株式会社 コード読取装置、及びコード読取プログラム
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
CN102722686B (zh) * 2012-05-25 2014-10-08 福建联迪商用设备有限公司 磁卡解码方法
US10146978B2 (en) * 2015-07-14 2018-12-04 Afero, Inc. Apparatus and method for accurate barcode scanning using dynamic timing feedback

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01156886A (ja) 1987-12-15 1989-06-20 Matsushita Electric Ind Co Ltd バーコード読取装置
JPH04165484A (ja) * 1990-10-29 1992-06-11 Matsushita Electric Ind Co Ltd カードリーダ
JP2740418B2 (ja) 1992-07-14 1998-04-15 富士通株式会社 バーコード読取復調方法
JP2766768B2 (ja) * 1993-05-31 1998-06-18 株式会社テック バーコードデコーダのデコード方法
JP2718442B2 (ja) * 1993-12-20 1998-02-25 富士通株式会社 バーコード復調方法及び装置
JP3550807B2 (ja) 1995-06-16 2004-08-04 株式会社デンソー バーコード復号方式
JP3324374B2 (ja) * 1995-12-25 2002-09-17 富士通株式会社 バーコード復調方法並びにバーコード読取装置
US5767497A (en) * 1996-12-04 1998-06-16 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code symbols using ratio analysis of module size
JP3472691B2 (ja) * 1997-11-26 2003-12-02 富士通株式会社 バーコード読取装置及びバーコード読取方法

Also Published As

Publication number Publication date
US20010015378A1 (en) 2001-08-23
WO2000019355A1 (fr) 2000-04-06
JP2000099622A (ja) 2000-04-07
US6299064B2 (en) 2001-10-09
EP1120736A1 (en) 2001-08-01
EP1120736A4 (en) 2002-08-14

Similar Documents

Publication Publication Date Title
JP3510496B2 (ja) バー幅補正装置,バー幅補正方法,バーコード読取装置及びそのバーコード復調方法
EP0067414A2 (en) Method and apparatus for reading a bar code
US6095419A (en) Bar code reading apparatus for reading plural code systems
US7422153B2 (en) Decoding with data from multiple scans
EP0943132B1 (en) Method and apparatus for decoding bar code symbols using ratio analysis of module size
EP2507741B1 (en) Imaging-based scanner including border searching for image acquisition
JP2000357205A (ja) バーコード読取装置及びバーコード読取方法
JP2000099620A (ja) バーコード読取装置及びバーコード読取方法
US6206286B1 (en) Bar code reader
JPH10222600A (ja) バーコード読取方法
JP3550807B2 (ja) バーコード復号方式
JP3372111B2 (ja) ワットアワーメータ文字認識装置
US5798510A (en) Apparatus for and method of reading a bar code
JPH06274674A (ja) バーコード読取方法およびバーコード読取装置
JP4154871B2 (ja) バーコード読取方法およびバーコード読取装置
US6283370B1 (en) Bar code reader, bar code reading method and computer readable medium
JP7386446B2 (ja) 情報処理システム
EP0029943A1 (en) Character reading apparatus with manually movable scanner
JP3472691B2 (ja) バーコード読取装置及びバーコード読取方法
JP6890849B2 (ja) 情報処理システム
JP3560477B2 (ja) バーコード読取装置及びバーコード読取方法
EP0895175A1 (en) Process for scanning a bar-code
US20070221734A1 (en) System and method for bar code detection
JP2903792B2 (ja) バーコード読取装置
JP2953143B2 (ja) バーコード読取装置およびバーコード読取方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031225

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

Free format text: PAYMENT UNTIL: 20080109

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100109

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110109

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110109

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140109

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees