JP4089807B2 - バーコード認識方法および装置並びにプログラム - Google Patents
バーコード認識方法および装置並びにプログラム Download PDFInfo
- Publication number
- JP4089807B2 JP4089807B2 JP2001065811A JP2001065811A JP4089807B2 JP 4089807 B2 JP4089807 B2 JP 4089807B2 JP 2001065811 A JP2001065811 A JP 2001065811A JP 2001065811 A JP2001065811 A JP 2001065811A JP 4089807 B2 JP4089807 B2 JP 4089807B2
- Authority
- JP
- Japan
- Prior art keywords
- barcode
- bar
- bar width
- line
- unit
- 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
Links
Images
Description
【発明の属する技術分野】
この発明は、バーコード認識方法および装置並びにプログラムに関し、特に、低品質の画像に含まれるバーコードを認識するバーコード認識方法および装置並びにプログラムに関する。
【0002】
【従来の技術】
近年、コンピュータおよびその周辺技術の発達に伴って、様々な文書が電子化されて、利用、保存されている。例えば、銀行等の金融機関においては、口座振替依頼書等の伝票や帳票を電子データ化し、その電子データに基づいて業務を行っている場合がある。
【0003】
帳票の電子データ化は、例えば、帳票をスキャナで読み取り、この読取画像に基づいて様々な処理を施すことによって行われるが、この読取画像自体もデータベース等に長期保存され、必要に応じて再利用されることがある。読取画像は、長期保存の際のデータベースの資源(ハードディスク等)の節約や処理速度の向上等を目的として当該帳票を視覚により認識可能な程度の解像度で読み取られるのが一般的である。
【0004】
一方、最近の帳票類には、バーコードが印刷されていることが多く、これを利用して業務の効率化が図られている。バーコードの利用は、通常、(紙の)帳票に対するものであるが、電子データ化した帳票を再利用する際にも、バーコードを利用することができれば、より効率的に業務を行うことが可能となる。
【0005】
しかしながら、電子データ化した帳票は、上述のように視覚により認識可能な程度の解像度で読み取られることが多いため、そのバーコード部分にノイズや欠落、つぶれ等が生じる等、バーコード自体が低品質なものとなってしまう。これに対してバーコードは、周知のようにバーの幅等を識別することによって、そのデータを認識しているものである。そのため、バーコードが低品質な場合、その認識時にエラーが多く発生してしまうことになる。
【0006】
【発明が解決しようとする課題】
上述のように、電子データ化された帳票等に含まれるバーコードは、低品質であることが多く、このバーコードを正確に認識して処理を行うことは困難であった。
【0007】
そこで、この発明は、低解像度の画像等に含まれる低品質なバーコードを正確に認識することのできるバーコード認識方法および装置並びにプログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
上述した目的を達成するため、請求項1の発明は、画像データ中に含まれるバーコードを認識するバーコード認識方法において、画像データからバーコードを含む複数のラインを抽出し、該抽出したラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定し、該基本ラインに対して前記ラインに含まれるバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを認識することを特徴とする。
【0009】
また、請求項2の発明は、請求項1の発明において、前記ラインの抽出は、前記画像データを所定のしきい値を用いて2値化してから行い、前記バーコードの認識に失敗した場合は、前記画像データを前記しきい値とは別のしきい値で2値化し、該2値化した画像データに基づいて、再度、前記バーコードの認識を行うことを特徴とする。
【0010】
また、請求項3の発明は、請求項1の発明において、前記集積したバー幅情報に基づいて、前記バーコードを構成するバーの基準幅を算出し、該算出した基準幅に基づいて前記バーコードを認識することを特徴とする。
【0011】
また、請求項4の発明は、請求項1の発明において、前記画像データは、バーコードが印刷された帳票を読み取ることにより得られることを特徴とする。
【0012】
また、請求項5の発明は、画像データ中に含まれるバーコードを認識するバーコード認識装置において、画像データからバーコードを含む複数のラインを抽出するライン抽出手段と、前記ライン抽出手段が抽出した複数のライン情報のそれぞれに含まれるバー幅情報を取得するバー幅情報取得手段と、前記ライン抽出手段が抽出したラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定する基本ライン設定手段と、前記基本ライン設定手段が設定した基本ラインに対して前記バー幅情報取得手段が取得したバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを構成する各バーの幅を特定するバー幅特定手段と、前記バー幅特定手段が特定したバー幅に基づいて前記バーコードを認識する認識手段とを具備することを特徴とする。
【0013】
また、請求項6の発明は、請求項5の発明において、画像データを2値化する2値化手段をさらに具備し、前記ライン抽出手段と前記バー幅情報取得手段、前記バー幅特定手段、前記認識手段は、前記2値化手段により所定のしきい値を用いて2値化された画像データに基づいて前記各処理を行い、前記認識手段が前記バーコードの認識に失敗した場合は、前記2値化手段が前記画像データを前記しきい値とは別のしきい値で2値化し、該2値化した画像データに基づいて、前記ライン抽出手段と前記バー幅情報取得手段、前記バー幅特定手段、前記認識手段が前記各処理を行うことを特徴とする。
【0014】
また、請求項7の発明は、請求項5の発明において、前記バー幅特定手段が特定したバー幅情報に基づいて、前記バーコードを構成するバーの基準幅を算出する基準幅算出手段をさらに具備し、前記認識手段は、前記基準幅算出手段が算出した基準幅に基づいて前記バーコードを認識することを特徴とする。
【0015】
また、請求項8の発明は、コンピュータを動作させ画像データ中に含まれるバーコードを認識するバーコード認識プログラムにおいて、画像データからバーコードを含む複数のラインを抽出するステップと、前記ラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定するステップと、前記基本ラインに対して前記ラインに含まれるバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを構成する各バーのバー幅を特定するステップと、前記バー幅に基づいて前記バーコードを認識するステップとを具備することを特徴とする。
【0023】
【発明の実施の形態】
以下、この発明に係るバーコード認識方法および装置並びにプログラムの一実施の形態について、添付図面を参照して詳細に説明する。
【0024】
図1は、この発明を適用したバーコード認識装置の構成を示すブロック図である。
【0025】
同図に示すように、バーコード認識装置は、帳票画像取得部1と帳票処理部2、バー幅特定部3、認識部4、バーコード辞書5を具備して構成される。また、バー幅特定部3は、2値化部31とバーコードライン抽出部32、対応付け部33、バー幅算出部34を具備して構成され、認識部4は、スタートキャラクタ検出部41とモジュール数算出部42、キャラクタ変換部43、文字コード出力部44を具備して構成される。なお、このバーコード認識装置は、コンピュータおよびスキャナ等の周辺装置をハードウェアとし、これらを動作させるソフトウェアにより構成することもできる。
【0026】
帳票画像取得部1は、スキャナ等により帳票を読み取って得た帳票画像を取得し、帳票処理部2は、帳票画像取得部1が取得した帳票画像の罫線情報等から帳票の種別を判定し、帳票画像内のバーコードが存在する位置を特定する。なお、帳票処理部2は、必ずしもバーコードの位置を特定する必要は無いが、バーコードの位置を特定した方が後の処理が効率的に行えることになる。
【0027】
バー幅特定部3は、2値化部31により帳票画像を2値化し、バーコードライン抽出部32でバーコード画像をライン毎に複数ライン抽出する。対応付け部33は、バーコードライン抽出部32が抽出した複数のラインから各バーの対応付けを行う。バー幅算出部34は、対応付け部33で対応付けされた各バーの幅を算出する。このバー幅特定部3で、バーコードを複数ラインで検出しているのは、帳票画像内の低解像度・低品質のバーコード画像は、バーの欠落やかすれ、つぶれ等により、各ライン毎にバー幅が異なって検出される可能性があるためである。なお、ここでの処理の詳細は後述する。
【0028】
認識部4は、バー幅特定部3が特定したバー幅に基づいて、バーコードを認識する。この際、スタートキャラクタ検出部41は、バーコードの開始位置を示すスタートキャラクタを検出し、モジュール数算出部42は、バーコードを構成する各バーのモジュール数を算出する。キャラクタ変換部43は、モジュール数算出部42が算出したモジュール数に基づいて、コードを特定し、バーコード辞書5を参照して特定したコードを文字コードに変換する。文字コード出力部44は、キャラクタ変換部43が変換した文字コードを出力する。なお、認識部4における処理についても、詳細は後述する。
【0029】
さて、帳票画像取得部1は、スキャナ等で読み取られた帳票画像を取得するが、ここで取得する帳票画像は、カラー画像、階調画像、2値画像のいずれであっても良い。帳票処理部2は、帳票画像取得部1が取得した帳票画像からバーコードの位置を特定する等の処理を行う。この処理は、例えば、帳票取得部1が図2に示すような帳票画像を取得した場合には、帳票内の各罫線の位置、形状等に基づいて帳票の種別を特定し、特定した帳票の種別に応じて記憶している位置をバーコードの存在位置とすることで行う。そして、帳票処理部2によりバーコードの位置が特定されると、バー幅特定部3でのバー幅の特定、認識部4でのバーコードの認識が行われる。なお、帳票処理部2でバーコードの位置が特定できない場合であっても、バー幅特定部3でバーコードを抽出することは可能である。
【0030】
次に、バー幅特定部3および認識部4での処理について説明するが、最初に処理全体の流れを説明し、続いて各処理の詳細について説明する。
【0031】
図3は、バーコード認識装置の処理の流れを示すフローチャートである。
【0032】
まず、帳票画像取得部1が取得した帳票画像から帳票処理部2で所定の処理を施してバーコード画像を取得する(ステップ101)、当該バーコード画像がカラー画像若しくは階調画像であった場合には(ステップ102でNO)、2値化部31が当該バーコード画像を2値化するためのしきい値を算出し(ステップ103)、算出したしきい値に基づいて2値画像を作成する(ステップ104)。一方、バーコード画像が2値画像であった場合には(ステップ102でYES)、2値化部31は、何も処理は行わない。
【0033】
次に、バーコードライン抽出部32がバーコードラインの抽出を行う(ステップ105)。バーコードラインの抽出は、2値のバーコード画像をライン(バーコードの走査方向)毎に処理を行い、バーコードを含んでいるラインを抽出する。
【0034】
続いて、対応付け部33が、バーコードライン抽出部32が抽出したバーコードラインから後の処理に利用するための基本ラインを検出し(ステップ106)、検出した基本ラインを利用してバーコードラインに含まれる各バーの対応付けを行う(ステップ107)。
【0035】
バーの対応付けが終了すると、バー幅算出部34が対応付けられた各バーの幅を算出し(ステップ108)、認識部4がバーコードの認識処理を行う(ステップ109)。
【0036】
認識処理の結果、バーコードの認識に成功すれば(ステップ110でYES)、そのまま処理を終了するが、認識に失敗した場合には(ステップ110でNO)、バーコード画像の2値化しきい値が変更可能であれば(ステップ111でYES)、ステップ103に戻り、新たな2値化しきい値を算出して、同様の処理を繰り返す。
【0037】
さて、2値化部31では、バーコード画像の2値化を行うが、この2値化を行う際のしきい値の算出(ステップ103)は、判別基準法を用いて行う。例えば、図4(a)に示す階調画像(同図では、ディザ処理を施した2値画像として表示している)をしきい値114(8ビット)で2値化した場合には、図4(b)に示すような2値画像が得られる。このしきい値114は、判別基準法により求めたものであるが、これを別のしきい値に変更する場合(ステップ111でYESの場合)には、クラス1(しきい値114よりも小さい値の画素)の平均濃度値としきい値の間を3つに区切り、この区切った値を新たなしきい値とする。ただし、最初に変更するのは、区切り値のうちの114に近いものと利用する。この場合、変更したしきい値は、90となり、図4(c)に示すような2値画像が得られることになる。また、さらにしきい値の変更が必要な場合には、もう1つの区切り値を用い、さらなる変更を行う場合には、クラス2(しきい値114よりも大きい値の画素)の平均濃度値としきい値の間を3つに区切る値を利用する。なお、しきい値の算出方法は、他のどの方法を用いても良い。
【0038】
次に、バーコードライン抽出部32によるバーコードライン抽出処理(ステップ105)の詳細について説明する。
図5および図6は、バーコードライン抽出処理の流れを示すフローチャートであり、図7は、2値化されたバーコード画像の例を示した図である。
【0039】
バーコードライン抽出部32は、まず、バーコード画像の各ラインの黒および白の塊数を算出する。算出する塊数は、黒および白の塊の数を示すもので、例えば、図7(a)に示すバーコード画像の1ライン目(図中最上位のライン)は3、2乃至13ライン目は17となる。
【0040】
次に、塊数が高頻度となるライン数(以下、高頻度値とする)が全ライン数に占める割合を算出する(ステップ202)。その結果、高頻度値が全ライン数に占める割合が90%以上であった場合には(ステップ203でYES)、「全ラインにバーコードが存在する」と判定するとともに(ステップ204)、当該バーコード画像には、「ノイズが含まれていない」と判定する(ステップ205)。
【0041】
一方、高頻度値が全ラインに占める割合が90%未満であった場合には(ステップ203でNO)、高頻度塊数±10の塊を有するラインを抽出する(ステップ206)。そして、高頻度値が抽出ライン数に占める割合を算出する(ステップ207)。その結果、高頻度値が抽出ライン数に占める割合が90%以上であった場合には(ステップ208でYES)、「高頻度塊数のラインにバーコードが存在する」と判定するとともに(ステップ209)、当該バーコード画像には、「ノイズが含まれていない」と判定する(ステップ205)。ただし、ステップ206で抽出するラインの範囲には、下限が存在し、必ずしも高頻度塊数±10となるとは限らない。これは、バーコードの性質上、バーの最低数が決まっている(バーコードの種類により異なる)ためであり、この数を下限として処理を行うことになる。
【0042】
また、高頻度値が抽出ラインに占める割合が90%未満であった場合には(ステップ208でNO)、高頻度塊数から高頻度塊数−10の範囲の塊を有する全てのラインの合計数が抽出ライン数に占める割合を算出し(ステップ210)、その割合が90%以上であった場合には(ステップ211でYES)、「高頻度塊数から高頻度塊数−10の範囲のラインにバーコードが存在する」と判定するとともに(ステップ212)、当該バーコード画像には、「ノイズが含まれている」と判定する(ステップ213)。ただし、この場合にも範囲(高頻度塊数−10)には下限がある。
【0043】
一方、高頻度塊数から高頻度塊数−10の範囲の塊を有する全てのラインの合計数が抽出ライン数に占める割合が90%未満であった場合には(ステップ211でNO)、高頻度塊数から高頻度塊数+10の範囲の塊を有する全てのラインの合計数が抽出ライン数に占める割合を算出し(ステップ214)、その割合が90%以上であった場合には(ステップ215でYES)、「高頻度塊数から高頻度塊数+10の範囲のラインにバーコードが存在する」と判定するとともに(ステップ216)、当該バーコード画像には、「ノイズが含まれている」と判定する(ステップ213)。また、高頻度塊数から高頻度塊数+10の範囲の塊を有する全てのラインの合計数が抽出ライン数に占める割合が90%未満であった場合には(ステップ215でNO)、「高頻度塊数±10のラインにバーコードが存在する」と判定するとともに(ステップ217)、当該バーコード画像には、「ノイズが含まれている」と判定する(ステップ213)。
【0044】
このような判定は、例えば、図7(a)に示すバーコード画像を対象とした場合、高頻度値は17であるが、その全ライン中に占める割合は、90%未満(12/14)であるので(ステップ203でNO)、7〜27の塊数を有するラインを抽出する(ステップ206)。ただし、上述した下限が存在する場合、例えば、下限が17であれば17〜27の塊数を有するラインを抽出することになる。ここで抽出したラインは、全て塊数が17のラインとなるので、高頻度値が抽出ラインに占める割合は100%となり(ステップ208でYES)、高頻度塊数のライン、つまり、塊数17の2乃至13ラインにバーコードが存在し(ステップ209)、ノイズがない(ステップ205)と判定される。
【0045】
また、図7(b)に示すバーコード画像を対象とした場合、高頻度値は17であるが、その全ライン中に占める割合は、90%未満(7/14)であるので(ステップ203でNO)、7〜27の塊数を有するラインを抽出する(ステップ206)。ただし、上述した下限が存在する場合、例えば、下限が17であれば17〜27の塊数を有するラインを抽出することになる。ここで抽出したラインは、2乃至13ライン目の12ラインとなるので、高頻度値が抽出ラインに占める割合は90%未満(7/12)となる(ステップ208でNO)。また、7〜17の塊数を有するライン数は7であり(ステップ211でNO)、17〜27の塊数を有するライン数は12、つまり、高頻度塊数から高頻度塊数+10の範囲の塊を有する全てのラインの合計数が抽出ライン数に占める割合が100%となるため(ステップ215でYES)、17〜27の塊数を有するラインである2乃至13ラインにバーコードが存在し(ステップ216)、ノイズがある(ステップ213)と判定される。
【0046】
ところで、バーコードライン抽出部32は、抽出した各バーコードラインの情報を図8に示すような波形として対応付け部33に出力する。出力する波形は、ノイズやバーの欠落、かすれ、つぶれ等が無かった場合の波形を図8(a)に示すようなものとすれば、正常な波形は、図8(b)に示すようなものとなる。この図8(b)に示す波形は、バーの幅を示す値(各波形)に多少の相違があるものの全体としては同様の傾向を示し、波形A乃至Jが各々図8(a)に示すものに対応する。
【0047】
また、バーコードラインにノイズが含まれる場合には、出力される波形は、図8(c)に示すようなものとなる。この波形には、ノイズの影響により、図8(a)に示すものとは対応しない波形Xが存在することになる。
【0048】
バーコードラインにバーの欠落が含まれる場合には、出力される波形は、図8(d)に示すようなものとなる。この波形には、バーの欠落の影響により、図8(a)の波形Dに相当するものが欠落し、結果として、波形C乃至Eに対応するはずの部分に、対応しない波形Xが存在することになる。
【0049】
バーコードラインにバーのつぶれが含まれる場合には、出力される波形は、図8(e)に示すようなものとなる。この波形には、バーのつぶれの影響により、図8(a)の波形Iに相当するものがつぶれ、結果として、波形H乃至Jに対応するはずの部分に、対応しない波形Xが存在することになる。
【0050】
また、元のバーコード画像が図9に示すように傾いていた場合であっても、出力される波形は、図8(f)に示すように、バーの幅を示す値や、バーの位置が異なるものの、全体としては同傾向の波形となる。この場合、図8(a)に示したものと対応しないものは、波形Yのみとなる(波形Yは、波形Aと比較して、その大きさが大きく異なるため)。
【0051】
次に、対応付け部33によるバーの対応付け処理について説明する。バーの対応付け処理では、図8に示したバーコードラインの情報に基づいて、波形A乃至Jをそれぞれ対応付ける。
【0052】
バーの対応付けは、DP(Dynamic Programing:動的計画法)マッチングにより行う。これにより、バーコードライン内に存在するノイズやバーの欠落、かすれ、つぶれ等を排除するとともに、バーコード画像自体の傾きによるバーの位置づれをも排除する。
【0053】
このバーの対応付け処理に際しては、まず、基本ラインの検出(図3のステップ106参照)を行う。
【0054】
基本ラインの検出は、上述したバーコードライン抽出部32によるバーコードラインの抽出時に、「ノイズなし」と判定された場合と、「ノイズあり」と判定された場合とで異なる。
【0055】
「ノイズなし」と判定された場合には、図10に示すように、高頻度塊数のラインの中心のラインであるライン61を基本ラインとする。
【0056】
また、「ノイズあり」と判定された場合には、図11に示すように、各塊数のラインの中心のラインであるライン63、64を基本ライン候補とする。また、同じ塊数のラインが複数箇所に分離して存在する場合は、そのラインの連続数が大きい方の中心ラインであるライン62を基本ライン候補とする。基本ライン候補が決定されると、この基本ライン候補からDPマッチングにより、基本ラインを検出する。
【0057】
図12は、基本ライン検出処理の流れを示すフローチャートである。
まず、先に決定した基本ライン候補の1つを基本情報に設定する(ステップ301)。続いて、基本ライン候補以外の未処理ラインの1つを入力情報に設定する(ステップ302)。未処理ラインとは、以降のステップ303およびステップ304の処理を実施していないラインである。基本情報と入力情報を設定すると、DPマッチングにより基本情報と入力情報の波形の合わせ込みを行い(ステップ303)、その際に算出した距離値を合計する(ステップ304)。なお、ステップ303およびステップ304での処理の詳細は後述する。そして、ステップ303およびステップ304の処理は、基本ライン候補以外の全てのラインを入力情報として処理するまで繰り返す(ステップ305でNO)。
【0058】
基本ライン候補以外の全てのラインを入力情報として処理すると(ステップ305でYES)、別の基本ライン候補を基本情報に設定し(ステップ306でNO、ステップ301)、全ての基本ライン候補を基本情報に設定して処理を行うと(ステップ306でYES)、これまでの処理で算出した距離値合計が最小の基本ライン候補を基本ラインとして検出する(ステップ307)。
【0059】
次に、ステップ303での基本情報と入力情報の波形の合わせ込み処理およびステップ304での距離値合計処理について説明する。
【0060】
ステップ303での基本情報と入力情報の波形の合わせ込み処理は、基本情報と入力情報の各波形の距離値(類似度)を算出するもので、ここで算出した各波形の距離値を波形全体の距離として合計したものがステップ304での距離値合計処理となる。
【0061】
ここで、図13を参照して距離値の算出方法について説明する。
図13は、距離値の算出方法を説明するための図である。
【0062】
まず、同図の横軸に基本情報の幅情報を設定する。この幅情報は、基本情報の各波形の幅を表すもので、−1,2,−2,2,−3,1...のような値を設定する。この値の絶対値は、画素数を示しており、正の数は黒画素を負の数は白画素を表している。また、同様に縦軸に入力情報の幅情報を設定する。なお、基本情報と入力情報の幅情報の数は、ノイズ等の影響があるため必ずしも一致しない。
【0063】
次に、入力情報の最初の波形と基本情報の各波形との距離値を求める。まず、入力情報の最初の波形と基本情報の最初の波形の距離値は、各幅情報の差の絶対値により求められる。例えば、入力情報の最初の波形の幅情報が「−5」で、基本情報の最初の波形の幅情報が「−1」であれば、両者の距離値は、その差の絶対値である「4」となる。
【0064】
続いて、入力情報の最初の波形と基本情報の2番目の波形との距離値を求める。この距離値は、入力情報の最初の波形と基本情報の最初の波形の距離値に、入力情報の最初の波形と基本情報の2番目の波形の幅情報の差の絶対値を加えた値となる。
【0065】
次に、入力情報の最初の波形と基本情報の3番目以降の波形との距離値を求めるが、これらの距離値は、入力情報の最初の波形と基本情報の2番目の波形の距離値と同様に、
により求められる。
【0066】
次に、基本情報の最初の波形と入力情報の各波形との距離値を求める。基本情報の最初の波形と入力情報の最初の波形の距離値は、各幅情報の差の絶対値により求められる。基本情報の最初の波形と入力情報の2番目以降の波形との距離値は、入力情報の最初の波形と基本情報の2番目以降の波形の距離値と同様に、
により求められる。
【0067】
次に、入力情報のn番目の波形と基本情報のm番目の波形の距離値を求める。ただし、ここでのnとmは、2以上の整数である。まず、入力情報のn番目の波形と基本情報のm番目の波形の幅情報の差の絶対値(以下、絶対値nmと称する)を求める。続いて、ユークリッド距離とシティ距離を求める。ユークリッド距離は、図14(a)に示すような距離であり、シティ距離は、図14(b)および図14(c)に示すような距離である。なお、以下では、図14(b)に示す距離をシティ距離1、図14(c)に示す距離をシティ距離2とする。
【0068】
これら各距離は、
で求められる。
【0069】
そして、ユークリッド距離、シティ距離1、シティ距離2のうちの最小のものを入力情報のn番目の波形と基本情報のm番目の波形の距離値とする。
【0070】
具体的に説明すると、図13の一部を拡大した図14(d)に示すように、基本情報の幅情報が順に−1,2,−2...、入力情報の幅情報が−5,3,−2...であれば、入力情報の2番目の波形と基本情報の2番目の波形の距離値(図中a点の位置)は、その幅情報の差の絶対値が1であるから、
ユークリッド距離=4+1+1=6
シティ距離1=8+1=9
シティ距離2=11+1=12
となり、最小の6となる。
【0071】
同様に、入力情報の2番目の波形と基本情報の3番目の波形の距離値(図中b点の位置)は、その幅情報の差の絶対値が5であるから、
ユークリッド距離=11+5+5=21
シティ距離1=6+5=11
シティ距離2=14+5=21
となり、最小の11となる。
【0072】
また、入力情報の3番目の波形と基本情報の2番目の波形の距離値(図中c点の位置)は、その幅情報の差の絶対値が4であるから、
ユークリッド距離=8+4+4=16
シティ距離1=9+4=13
シティ距離2=6+4=10
となり、最小の10となる。
【0073】
さらに、入力情報の3番目の波形と基本情報の3番目の波形の距離値(図中d点の位置)は、その幅情報の差の絶対値が0であるから、
ユークリッド距離=6+0+0=6
シティ距離1=10+0=10
シティ距離2=11+0=11
となり、最小の6となる。
【0074】
このようにして、順次、入力情報のn番目の波形と基本情報のm番目の波形の距離値を求め、入力情報の最後の波形と基本情報の最後の波形の距離値(図13中右上に×印で示す)まで求める処理が、ステップ303での基本情報と入力情報の波形の合わせ込み処理となる。また、ステップ304での距離値合計処理は、ここで求めた距離値を合計する処理となる。
【0075】
次に、対応付け部33によるバーの対応付け処理(図3のステップ107参照)について説明する。
【0076】
バーの対応付け処理においても、上述したノイズがある場合の基本ラインの検出と同様に、DPマッチングにより、基本情報と入力情報の波形の合わせ込みを行い、その結果から各波形の対応を取得する。
【0077】
図15は、バーの対応付け処理時のDPマッチング処理の流れを示すフローチャートである。
【0078】
バーの対応付け処理時のDPマッチング処理では、まず、基本ライン以外の未処理ラインの1つを入力情報に設定する(ステップ401)。未処理ラインとは、以降のステップ402の処理を実施していないラインである。次に、基本ラインを基本情報に設定して、基本情報と入力情報の波形の合わせ込みを行う(ステップ402)。そして、基本情報と入力情報の波形の合わせ込み処理を基本ライン以外の全てのラインを入力情報として処理するまで繰り返し(ステップ403でNO)、基本ライン以外の全てのラインを入力情報として処理すると(ステップ403でYES)、DPマッチング処理を終了する。
【0079】
さて、DPマッチング処理が終了すると、入力情報のn番目の波形と基本情報のm番目の波形の距離値がそれぞれ算出される。この結果を利用し、図16(a)に×印で示す入力情報の最後の波形と基本情報の最後の波形の距離値を示す位置から、図16(b)、図16(c)、図16(d)に示す各方向のうち、距離値が小さい方向に順次進んでいく。その結果、図16(b)に示した方向では、その位置が示す入力情報のn番目の波形と基本情報のm番目の波形が対応し、図16(c)、図16(d)に示す方向では、その位置が示す入力情報のn番目の波形と基本情報のm番目の波形は対応しない。
【0080】
図16(a)に示した例では、基本情報の1番目の波形と入力情報の1番目の波形が対応し、基本情報の2番目の波形と入力情報の2番目の波形が対応するが、基本情報の3番目および4番目に対応する入力情報の波形は存在しない。また、基本情報の5番目の波形と入力情報の3番目の波形、基本情報の6番目の波形と入力情報の4番目の波形等がそれぞれ対応する。
【0081】
次に、バー幅算出部34によるバー幅算出処理(図3のステップ108参照)について説明する。バー幅算出部34は、対応付け部33により対応付けられた各バーコードラインの各バー幅を集計し、最も頻度の高い幅を当該バーのバー幅として決定する。例えば、各バーコードラインのあるバー幅が図17に示すように、幅2のものが4ライン、幅3のものが7ライン、幅4のものが1ラインであったとすれば、最も頻度の高い幅3を当該バーのバー幅とする。
【0082】
次に、認識部4による認識処理(図3のステップ109参照)について説明する。図18は、認識部4による認識処理の流れを示すフローチャートである。
【0083】
認識部4では、まず、スタートキャラクタ検出部41が、予め設定したスタートキャラクタ検出範囲からバーコードの始まりを示すスタートキャラクタを検出する(ステップ501でYES、ステップ502)。スタートキャラクタ検出範囲は、例えば、図19に示すように、バーコード画像の左端からT[mm]に設定しておく、これを左端から順次走査してスタートキャラクタを検出する。ただし、実際には、画像を走査するのではなく、バー幅特定部3で特定された情報(上述の基本ラインの波形のバー幅を特定したバー幅に修正したもの)に基づいて行う。また、スタートキャラクタ検出範囲を越えた場合であっても、最初に走査された黒バーは、無条件にスタートキャラクタであるか否かをチェックする。
【0084】
スタートキャラクタ検出部41によりスタートキャラクタが検出されると(ステップ503でYES)、モジュール数算出部42が、モジュール化およびモジュール数の算出といったモジュール処理を行う(ステップ504)。モジュール化とは、バーコードを構成する各バーの太さを分別する処理であり、このバーの太さの段階を表す数値をモジュール数と呼ぶ。例えば、バーコードの規格の1つであるJAN(JIS X 0501)では、バーの太さを4段階で表し、1番細いバーを1モジュールと呼び、順次、太くなるに従って、2モジュール、3モジュール、4モジュールとなる。また、JANでは、図20に示すように1キャラクタを4本のバーで構成し、その合計モジュール数が7モジュールとなるように規定されている。したがって、バー幅特定部3で特定されたバー幅に1キャラクタの合計モジュール数(JANでは7モジュール)を乗じた値を1キャラクタの合計バー幅で除すことにより、モジュール数を算出することができる。
【0085】
モジュール処理が成功すると(ステップ505でYES)、、キャラクタ変換部43が1キャラクタ分のモジュール数の組み合わせをバーコード辞書と照らし合わせてキャラクタ(文字コード)に変換する(ステップ506)。
【0086】
キャラクタ変換が終了すると(ステップ507でYES)、文字コード出力部44がチェックデジットの計算を行い(ステップ509)、その計算結果とバーコードが表現する最後の値とが一致すると(ステップ509でYES)、バーコードの認識に成功したものとして文字コードを出力する。
【0087】
一方、上述したいずれかの処理で、処理の失敗があった場合には(ステップ503、505、507、509のいずれかでNO)、先に検出したスタートキャラクタ若しくは最初のバー以外のバーが、スタートキャラクタ検出範囲内にある限り、上述した各処理をもう一度行う。スタートキャラクタとして検出すべきバーがスタートキャラクタ検出範囲内に無い場合には(ステップ501でNO)、当該バーコードをリジェクトして(ステップ510)、認識処理を終了する。
【0088】
なお、ここでは、JANを例として説明したが、予め複数規格のバーコード辞書を備えておけば、他の規格のバーコードであっても同様に処理することが可能である。
【0089】
【発明の効果】
以上説明したように、この発明によれば、画像中に含まれるバーコードを認識する際に、バーコードを含む全てのラインの情報に基づいて、バーコードを構成する各バーの幅を特定するように構成したので、バーの欠落やかすれ、つぶれ等が存在したり、ノイズが混合している可能性の高い低解像度若しくは低品質の画像に含まれるバーコードを正確に認識することができ、バーコードを含む画像を有効に利用することが可能となる。
【図面の簡単な説明】
【図1】この発明を適用したバーコード認識装置の構成を示すブロック図である。
【図2】バーコードを含む帳票画像の例を示した図である。
【図3】バーコード認識装置の処理の流れを示すフローチャートである。
【図4】バーコード画像の例を示した図である。
【図5】バーコードライン抽出処理の流れを示すフローチャート(1)である。
【図6】バーコードライン抽出処理の流れを示すフローチャート(2)である。
【図7】2値化されたバーコード画像の例を示した図である。
【図8】バーコードライン抽出部32が抽出した各バーコードラインの情報を示した図である。
【図9】傾いたバーコード画像を示した図である。
【図10】基本ラインの検出を説明するための図(1)である。
【図11】基本ラインの検出を説明するための図(2)である。
【図12】基本ライン検出処理の流れを示すフローチャートである。
【図13】距離値の算出方法を説明するための図(1)である。
【図14】距離値の算出方法を説明するための図(2)である。
【図15】バーの対応付け処理時のDPマッチング処理の流れを示すフローチャートである。
【図16】バーの対応付け処理を説明するための図である。
【図17】バー幅の算出方法を説明するための図である。
【図18】認識部4による認識処理の流れを示すフローチャートである。
【図19】スタートキャラクタ検出範囲を説明するための図である。
【図20】モジュール処理を説明するための図である。
【符号の説明】
1 帳票画像取得部
2 帳票処理部
3 バー幅特定部
4 認識部
5 バーコード辞書
31 2値化部
32 バーコードライン抽出部
33 対応付け部
34 バー幅算出部
41 スタートキャラクタ検出部
42 モジュール数算出部
43 キャラクタ変換部
44 文字コード出力部
61 ライン
62 ライン
63 ライン
64 ライン
Claims (8)
- 画像データ中に含まれるバーコードを認識するバーコード認識方法において、
画像データからバーコードを含む複数のラインを抽出し、該抽出したラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定し、該基本ラインに対して前記ラインに含まれるバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを認識することを特徴とするバーコード認識方法。 - 前記ラインの抽出は、前記画像データを所定のしきい値を用いて2値化してから行い、前記バーコードの認識に失敗した場合は、前記画像データを前記しきい値とは別のしきい値で2値化し、該2値化した画像データに基づいて、再度、前記バーコードの認識を行うことを特徴とする請求項1記載のバーコード認識方法。
- 前記集積したバー幅情報に基づいて、前記バーコードを構成するバーの基準幅を算出し、該算出した基準幅に基づいて前記バーコードを認識することを特徴とする請求項1記載のバーコード認識方法。
- 前記画像データは、バーコードが印刷された帳票を読み取ることにより得られることを特徴とする請求項1記載のバーコード認識方法。
- 画像データ中に含まれるバーコードを認識するバーコード認識装置において、
画像データからバーコードを含む複数のラインを抽出するライン抽出手段と、
前記ライン抽出手段が抽出した複数のライン情報のそれぞれに含まれるバー幅情報を取得するバー幅情報取得手段と、
前記ライン抽出手段が抽出したラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定する基本ライン設定手段と、
前記基本ライン設定手段が設定した基本ラインに対して前記バー幅情報取得手段が取得したバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを構成する各バーの幅を特定するバー幅特定手段と、
前記バー幅特定手段が特定したバー幅に基づいて前記バーコードを認識する認識手段と
を具備することを特徴とするバーコード認識装置。 - 画像データを2値化する2値化手段をさらに具備し、
前記ライン抽出手段と前記バー幅情報取得手段、前記バー幅特定手段、前記認識手段は、前記2値化手段により所定のしきい値を用いて2値化された画像データに基づいて前記各処理を行い、
前記認識手段が前記バーコードの認識に失敗した場合は、前記2値化手段が前記画像データを前記しきい値とは別のしきい値で2値化し、該2値化した画像データに基づいて、前記ライン抽出手段と前記バー幅情報取得手段、前記バー幅特定手段、前記認識手段が前記各処理を行う
ことを特徴とする請求項5記載のバーコード認識装置。 - 前記バー幅特定手段が特定したバー幅情報に基づいて、前記バーコードを構成するバーの基準幅を算出する基準幅算出手段をさらに具備し、
前記認識手段は、前記基準幅算出手段が算出した基準幅に基づいて前記バーコードを認識する
ことを特徴とする請求項5記載のバーコード認識装置。 - コンピュータを動作させ画像データ中に含まれるバーコードを認識するバーコード認識プログラムにおいて、
画像データからバーコードを含む複数のラインを抽出するステップと、
前記ラインのいずれかをバー幅の対応付けの基準となる基本ラインに設定するステップと、
前記基本ラインに対して前記ラインに含まれるバー幅情報の対応付けをDPマッチング処理を用いて行い、該対応付けられたバー幅情報を集積し、該集積したバー幅情報に基づいて前記バーコードを構成する各バーのバー幅を特定するステップと、
前記バー幅に基づいて前記バーコードを認識するステップと
を具備することを特徴とするバーコード認識プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001065811A JP4089807B2 (ja) | 2001-03-08 | 2001-03-08 | バーコード認識方法および装置並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001065811A JP4089807B2 (ja) | 2001-03-08 | 2001-03-08 | バーコード認識方法および装置並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002269491A JP2002269491A (ja) | 2002-09-20 |
JP4089807B2 true JP4089807B2 (ja) | 2008-05-28 |
Family
ID=18924408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001065811A Expired - Fee Related JP4089807B2 (ja) | 2001-03-08 | 2001-03-08 | バーコード認識方法および装置並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4089807B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116629291B (zh) * | 2023-07-24 | 2024-02-06 | 深圳市驿格科技有限公司 | 基于计算机视觉的快递条码图像智能增强方法及系统 |
-
2001
- 2001-03-08 JP JP2001065811A patent/JP4089807B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002269491A (ja) | 2002-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5410611A (en) | Method for identifying word bounding boxes in text | |
JP3345350B2 (ja) | 文書画像認識装置、その方法、及び記録媒体 | |
JP3445394B2 (ja) | 少なくとも二つのイメージセクションの比較方法 | |
US7889926B2 (en) | Image dictionary creating apparatus, coding apparatus, image dictionary creating method | |
JP4031210B2 (ja) | 文字認識装置、文字認識方法、及び記録媒体 | |
JP2001092919A (ja) | 2次元バーコードのねじれ角決定法 | |
WO2014131339A1 (zh) | 字符识别方法和字符识别装置 | |
JP2007086954A (ja) | 文字認識処理装置、および文字認識処理方法、並びにコンピュータ・プログラム | |
JP2001358925A (ja) | 画像処理のための装置、方法及び記録媒体 | |
JP2000285190A (ja) | 帳票識別方法および帳票識別装置および記憶媒体 | |
JP4565396B2 (ja) | 画像処理装置および画像処理プログラム | |
JP5630689B2 (ja) | 文字認識方法及び文字認識装置 | |
JP4089807B2 (ja) | バーコード認識方法および装置並びにプログラム | |
JP2005301664A (ja) | 画像辞書作成装置、符号化装置、データファイル、画像辞書作成方法及びそのプログラム | |
Aparna et al. | A complete OCR system development of Tamil magazine documents | |
JP3090070B2 (ja) | 帳票識別方法及び装置 | |
Ramalingam et al. | Identification of Broken Characters in Degraded Documents | |
JP4221960B2 (ja) | 帳票識別装置及びその識別方法 | |
JP2001236467A (ja) | パターン認識方法、装置、およびパターン認識プログラムを記録した記録媒体 | |
JPH07230525A (ja) | 罫線認識方法及び表処理方法 | |
Jibril et al. | Recognition of Amharic braille documents | |
JP2643092B2 (ja) | 文書書式上の事前定義されたフィールドの外側に位置する標準外データを処理する方法およびシステム | |
Nagajyothi et al. | Recognition of Hand written Numerals on bank Cheques using Neural Networks | |
JP2004280530A (ja) | 帳票処理システム及び帳票処理方法 | |
JP2023034823A (ja) | 画像処理装置、画像処理装置の制御方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040609 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070410 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070606 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080220 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4089807 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120307 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120307 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130307 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130307 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140307 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140307 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |