JPH0922437A - バーコード認識装置 - Google Patents

バーコード認識装置

Info

Publication number
JPH0922437A
JPH0922437A JP7170823A JP17082395A JPH0922437A JP H0922437 A JPH0922437 A JP H0922437A JP 7170823 A JP7170823 A JP 7170823A JP 17082395 A JP17082395 A JP 17082395A JP H0922437 A JPH0922437 A JP H0922437A
Authority
JP
Japan
Prior art keywords
bar
barcode
code
character
extracted
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.)
Granted
Application number
JP7170823A
Other languages
English (en)
Other versions
JP3376175B2 (ja
Inventor
Satoshi Naoi
聡 直井
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
Original Assignee
Fujitsu 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 filed Critical Fujitsu Ltd
Priority to JP17082395A priority Critical patent/JP3376175B2/ja
Publication of JPH0922437A publication Critical patent/JPH0922437A/ja
Application granted granted Critical
Publication of JP3376175B2 publication Critical patent/JP3376175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 本発明はバーコード認識装置に関し、低品質
な画像データでも信頼性の高いバーコードの抽出、及び
認識ができるようにすることを目的とする。 【構成】 画像データから複雑領域をバーコード領域の
候補として抽出する複雑領域抽出部11と、複雑領域抽
出部11が抽出した複雑領域からセンターバー/エンド
バー/スタートバーを抽出するセンターバー/エンドバ
ー/スタートバー抽出部12と、センターバー/エンド
バー/スタートバーが抽出できた場合に、その複雑領域
からキャラクタコード領域を抽出して、キャラクタコー
ドの認識を行うキャラクタコード認識部17と、キャラ
クタコード認識部17の認識結果を基にセキュリティチ
ェックを行い、その結果に矛盾がなければバーコードと
断定してバーコード情報を出力するセキュリティチェッ
ク部15を備えた。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、画像データの任意の位
置にあるバーコードを抽出して認識するバーコード認識
装置に関し、特に、低品質なバーコード画像でも真のバ
ーコードのみを確実に抽出して認識することが可能なバ
ーコード認識装置に関する。
【0002】近年、レーザー光によるバーコードの認識
処理は精度の高い自動入力装置としてPOS端末装置に
広く用いられている。前記POS端末装置では、商品に
貼られたバーコードラベルにレーザー光で様々な角度か
ら照射し、レーザー光線の反射光を受光してその強弱か
らバーコードを構成するバーの線幅を読み取りバーコー
ドを認識していた。また、スキャナで読み取った画像を
認識するOCR装置も自動入力装置として会計処理等に
幅広く使用されている。
【0003】ところで最近では、税、公金伝票のような
OCR帳票をコンビニエンスストアや、中小スーパーマ
ーケットでも処理できるように、OCR帳票にバーコー
ドが印刷されている。そこで、コンビニエンスストア等
では、顧客のOCR帳票のバーコード部分をレーザー光
によるバーコードリーダを用いて処理している。
【0004】前記のように、中小スーパーマーケット
や、コンビニエンスストアでもPOS端末装置の導入が
進み、バーコードによる金額精算、商品管理が主流とな
った。そして、電話料金、電気料金、ガス料金といった
公共料金の振込用紙にもバーコード(JANコード)を
印刷することで、従来、銀行か郵便局でしか支払いがで
きなかった前記公共料金も、今では中小スーパーマーケ
ットや、コンビニエンスストアでも支払いできるように
なった。
【0005】しかし、バーコードが印刷された公共料金
の振込用紙を、使用者が銀行に持ち込んだ場合、銀行で
は前記振込用紙上のバーコードを読み取って自動的に処
理する手段が無いため、手作業で金額集計を行う必要が
あり、行員への負担が増加しているのが現状である。
【0006】特に、法人企業の場合は一度に多量(例え
ば、100枚/1顧客)の振込用紙を持ち込むことが多
く、また、持ち込み時期も集中(例えば、毎月25日が
ピーク)する場合が多いため、銀行における公共料金等
の自動処理装置の開発が要求されている(例えば、或る
銀行では、公共料金だけで、40万枚/月処理してい
る)。
【0007】このため、公共料金の振込用紙の多くはバ
ーコードが印刷されていることに注目し、例えば、帳票
類の読み取りを一度に大量処理できる一括読み取り型O
CR装置を利用してこのバーコードを認識することも考
えられている。しかし、バーコードが帳票イメージデー
タの何処の場所にあるのか不明であるため、バーコード
認識の前にバーコードの存在する領域を抽出する必要が
あるが、この技術は未だに開発されていないのが現状で
ある。
【0008】従って、前記バーコードの存在する領域を
抽出する技術が開発されないと、OCR装置にバーコー
ドの読み取り位置等を指示するための定義体を、帳票毎
に作成してOCR装置に入力する必要があり、極めて手
間と時間のかかる作業が必要になる。このため、前記O
CR装置をそのまま使用することはできず、この点の改
善が要望されていた。
【0009】
【従来の技術】以下、図21〜図26に基づいて従来例
を説明する。 §1:従来例1の説明・・・図21参照 図21は従来のPOS端末装置によるバーコード認識処
理の説明図であり、A図はPOS端末装置の説明図、B
図はバーコードの読み取り方法説明図である。なお、B
図の、、はレーザー光によるスキャン方向を示
す。
【0010】従来例1は、POS端末装置によりバーコ
ードの認識処理を行う例である。従来、バーコードを認
識処理する装置として、POS端末装置が知られてい
た。POS端末装置51は、バーコードリーダ52を備
えており、このバーコードリーダ52により商品53に
貼られたバーコードラベルのバーコード54を読み取る
ものである。
【0011】この場合、バーコードリーダ52からのレ
ーザー光を商品53に貼られたバーコードラベルに照射
してスキャンし、その反射光を受光して電気信号に変換
した後、バーコードの認識処理が行われていた。前記の
ようにしてバーコードを読み取る際、B図の、、
のようにバーコードラベル上を色々な角度からスキャン
することによりバーコードの読み取りを行っていた。
【0012】また、前記バーコードリーダ52がハンド
スキャン型バーコードリーダの場合には、このハンドス
キャン型バーコードリーダを手に持ってバーコードラベ
ル上をなぞることでバーコードの読み取り、その後、バ
ーコードの認識処理を行っていた。
【0013】§2:従来例2の説明・・・図22参照 図22は従来のOCR装置によるバーコード認識処理の
説明図である。従来例2は、OCR装置を使用してバー
コードの認識処理を行う例である。
【0014】従来、OCR装置を使用してバーコードの
認識処理を行うことが知られていた。前記OCR装置は
イメージスキャナで帳票等から情報を読み取り、そのイ
メージデータを取り込んで文字認識処理等を行う装置で
ある。前記OCR装置のように、イメージデータ処理の
世界では、ソフト的に文字等を認識しており、バーコー
ドも同様に認識している。
【0015】しかし、従来の技術では、バーコードを認
識する際認識処理速度を向上させる必要から、事前にバ
ーコードの存在する領域を定義体により上位システムか
ら指示していた。例えば、図示のように、OCR装置5
5に上位システム56を接続した状態で帳票57上のバ
ーコードの認識処理を行う場合、次のようにしていた。
【0016】先ず、帳票57(読み取り対象の帳票を帳
票Aとする)の各種情報を定義体58で指定し、この定
義体58を上位システム56に入力した後、上位システ
ム56からOCR装置55に対し前記定義体58の内容
をダウンロードする。そして、OCR装置55では前記
定義体58の情報に従って帳票上からバーコードの読み
取りを行い、バーコード認識処理を行う。なお、前記定
義体は帳票上にあるバーコードの種類や位置情報(座
標)等を指定するものであり、各帳票毎に作成する。
【0017】ところで、前記従来例1、従来例2では次
のような問題があった。すなわち、前記従来例1の場
合、バーコードラベルをレーザー光でスキャンすること
でバーコードの読み取りを行うので、イメージデータか
らバーコードを抽出するといった必要がなかった。しか
し、このようなバーコード認識処理ではバーコードリー
ダにより1つ1つの商品等に貼られたバーコードラベル
を手作業でスキャンする必要があり手間と時間がかかっ
ていた。
【0018】また、従来例2の場合、読み取り対象の帳
票毎に定義体を作成する必要があり、作成した定義体を
上位システムに入力し、上位システムからOCR装置へ
定義体をダウンロードする必要があった。すなわち、帳
票の種類が変わる都度、オペレータ等はその帳票に合っ
た定義体を作成し、上位システムからOCR装置へダウ
ンロードする必要があった。
【0019】従って、手間と時間がかかりバーコード認
識処理の作業効率が低かった。特に、帳票の種類が多
く、大量の帳票をあつかう場合には、定義体を作成して
OCR装置へダウンロードする手間と時間が膨大なもの
になってしまい、実用的な方法ではなかった。
【0020】そこで、従来、前記の定義体を作成するこ
となく、かつ、手作業を必要とすることなく、入力した
画像データからバーコードを自動的に抽出するバーコー
ド抽出装置が提案されている(本出願人により既に出願
済みの平成7年特許願第163376号参照)以下、前
記提案された技術を従来例3として説明する。
【0021】§3:従来例3の説明・・・図23〜図2
5参照 以下、図23〜図25に基づき、バーコード抽出装置を
OCR装置で実現した従来例3について説明する。
【0022】(1) :OCR装置の構成の説明・・・図2
3参照 図23は従来例3の装置構成図である。図示のように、
OCR装置55にはイメージ読取部60、イメージメモ
リ61、バーコード抽出部62、パターン辞書格納部6
3、バーコード位置座標格納部64、RAM72等が設
けてある。
【0023】また、前記バーコード抽出部62には、黒
/白パターン抽出部65、バーコード判定部66、バー
コード矩形範囲探索部67、レフトガードバー比較部6
8、センターバー比較部69、ライトガードバー比較部
70、バーコード領域比較部71等が設けてある。
【0024】(2) :バーコードの説明・・・図24参照 図24はバーコードの説明図である。図示のように、バ
ーコードにはバーコード特有のレフトガードバー(又
は、スタートバー)、センターバー、ライトガードバー
(又は、エンドバー)がある。
【0025】この場合、レフトガードバーはバーコード
の開始点SP側(左側)に設けてあり、黒バーと白バー
が交互に並んだパターンで構成され、バーコードの開始
情報として「101」の情報(モジュール表現)を設定
したパターンである。
【0026】前記センターバーはバーコードの中央位置
に設けてあり、黒バーと白バーが交互に並んだパターン
で構成され、バーコードの中心情報として「0101
0」の情報(モジュール表現)を設定したパターンであ
る。
【0027】前記ライトガードバーはバーコードの終了
点EP側に設けてあり、黒バーと白バーが交互に並んだ
パターンで構成され、バーコードの終了情報として「1
01」の情報(モジュール表現)を設定したパターンで
ある。
【0028】(3) :従来例3の処理の説明・・・図25
参照 図25は従来例3の処理フローチャートである。以下、
図25に基づいて従来例3の処理を説明する。なお、S
1〜S8は各処理ステップを示す。
【0029】先ず、イメージ読取部60により読み取ら
れた帳票イメージデータ(2値のイメージデータ)がイ
メージメモリ61に格納されているとする。この状態で
黒/白パターン抽出部65は、イメージメモリ61に格
納されている帳票イメージデータを主走査方向(横方
向)にスキャンし、黒パターン(例えば、1情報)と白
パターン(例えば、0情報)が、予め設定された閾値以
下の間隔で交互に現れる範囲をバーコード領域と仮定し
て(仮バーコード領域として)抽出しRAM72に格納
する(S1)。
【0030】次にバーコード判定部66は、前記抽出し
たRAM72内の仮バーコード領域が本当にバーコード
なのかどうかを見極めるために、前記仮バーコード領域
にバーコード特有のレフトガードバー(スタートバ
ー)、センターバー、ライトガードバー(エンドバー)
が存在するか否かを判定する(S2)。
【0031】この場合、バーコード判定部66はレフト
ガードバー比較部68、センターバー比較部69、及び
ライトガードバー比較部70に対し、前記抽出した仮バ
ーコード領域のパターン情報と、パターン辞書格納部6
3に格納されているパターン辞書内のパターン情報との
比較処理を依頼する。
【0032】そして、バーコード判定部66はレフトガ
ードバー比較部68、センターバー比較部69、及びラ
イトガードバー比較部70からの比較結果の情報を基
に、前記抽出した仮バーコード領域にバーコード特有の
レフトガードバー、センターバー、ライトガードバーが
存在するか否かを判定する。
【0033】その結果、前記抽出した仮バーコード領域
にレフトガードバー、センターバー、ライトガードバー
が存在していたら、その領域は真のバーコード領域であ
ると判定しその領域を抽出する。しかし、前記抽出した
仮バーコード領域にレフトガードバー、センターバー、
ライトガードバーが存在していなかったら、その領域は
バーコードではないと判定しその領域は破棄する。
【0034】次に前記S2の処理で、仮バーコード領域
が真のバーコード領域であると判定した場合、バーコー
ド矩形範囲探索部67はそのバーコードの範囲を探索し
てバーコードを囲む矩形領域(バーコード矩形領域)の
位置(座標)を決定し、そのバーコード矩形領域を抽出
しRAM72に格納する(S3)。
【0035】この場合真のバーコード領域であれば、副
走査方向(縦方向)に黒バーが延びているため、前記バ
ーコードと判定した領域の中央を上下方向にスキャン
(サーチ)しバーコードの縦バーが途切れる位置を副走
査方向の範囲とし、バーコード矩形領域(矩形位置の座
標)を決定する。
【0036】その後、帳票全面のイメージデータ上を細
かくスキャンして行くため同じバーコードが何度も抽出
されることが考えられる。これを防止するためバーコー
ド領域比較部71は、前記RAM72内のバーコード矩
形領域の位置情報と、バーコード位置座標格納部64内
の位置情報(座標情報)を比較することにより、今回新
たに抽出されたバーコード矩形領域が既に抽出されたバ
ーコードとオーバーラップしているか否かを判定する
(S4)。
【0037】その結果、オーバーラップしてなく、新規
に抽出されたものであれば、バーコード領域比較部71
は、前記新たに抽出されたバーコード矩形領域の位置情
報(座標情報)をバーコード位置座標格納部64に新規
に登録する(S5)。しかし、既に抽出されたバーコー
ド矩形領域とオーバーラップしていれば、既に抽出され
たバーコード領域を残し、新たに抽出されたバーコード
領域は破棄する(S6)。
【0038】前記のようにして帳票全面をサーチするま
で(S7)、副走査方向にサーチするラインを進めて
(S8)、前記S1の処理から繰り返して行う。そし
て、帳票全面をサーチしたら処理を終了する。以上のよ
うにして、帳票のイメージデータからバーコード矩形領
域を自動的に抽出することができる。
【0039】§4:低解像度のスキャナで読み取った場
合の説明・・・図26参照 図26は従来例3の処理説明図であり、A図は高解像度
の場合、B図は低解像度の場合を示す。前記従来例3で
は、画像メモリの画像データを順次スキャンして黒パタ
ーンと白パターンが交互に出現する複雑パターン領域を
仮バーコード領域として抽出し、前記抽出した仮バーコ
ード領域の中にバーコード特有のレフトガードバー(ス
タートバー)、センターバー、ライトガードバー(エン
ドバー)が存在するか否かを判定し、前記各バーが存在
する場合にのみ、真のバーコード領域と判定していた。
【0040】前記処理において、バーコードを含む画像
の解像度が高い場合には、図26のA図に示したように
バーの線幅を精度良く算出でき、前記レフトガードバー
(スタートバー)、センターバー、ライトガードバー
(エンドバー)の抽出が容易にできる。
【0041】しかし、図26のB図に示したように画像
の解像度が低い場合、バーのかすれ、或いはつぶれ等が
あってバーの線幅が安定に抽出できなくなり、そのため
バーコード領域の抽出が困難になることがある。
【0042】すなわち、レフトガードバーの場合モジュ
ール表現では「101」の情報を表しているが、例え
ば、200dpiの解像度を有するスキャナでバーコー
ドを読み取ると、画像にかすれ、つぶれ等が生じ、バー
の線幅が安定に抽出できなくなる。このため、バーコー
ドの抽出が困難になることがある。
【0043】
【発明が解決しようとする課題】前記のような従来のも
のにおいては、次のような課題があった。 (1) :前記従来例1の場合、バーコードラベルをレーザ
ー光でスキャンすることでバーコードの読み取りを行う
ので、イメージデータからバーコードを抽出するといっ
た必要がなかった。しかし、このようなバーコード認識
処理では、バーコードリーダにより、1つ1つの商品等
に貼られたバーコードラベルを手作業でスキャンする必
要があり手間と時間がかかっていた。
【0044】(2) :前記従来例2の場合、読み取り対象
の帳票毎に定義体を作成する必要があり、作成した定義
体を上位システムに入力し、上位システムからOCR装
置へ定義体をダウンロードする必要があった。すなわ
ち、帳票の種類が変わる都度、オペレータ等はその帳票
に合った定義体を作成し、上位システムからOCR装置
へダウンロードする必要があった。
【0045】従って、手間と時間がかかりバーコード認
識処理の作業効率が低かった。特に、帳票の種類が多
く、大量の帳票をあつかう場合には、定義体を作成して
OCR装置へダウンロードする手間と時間が膨大なもの
になってしまい、実用的な方法ではなかった。
【0046】(3) :前記従来例3では、画像メモリの画
像データを順次スキャンして、黒パターンと白パターン
が予め設定された閾値以下の間隔で交互に出現する複雑
パターン領域を仮バーコード領域として抽出し、前記抽
出した仮バーコード領域の中にバーコード特有のレフト
ガードバー(スタートバー)、センターバー、ライトガ
ードバー(エンドバー)が存在するか否かを判定し、前
記各バーが存在する場合にのみ、真のバーコード領域と
判定していた。
【0047】前記処理において、バーコードを含む画像
の解像度が高い場合にはバーの線幅を精度良く算出で
き、前記レフトガードバー、センターバー、ライトガー
ドバーの抽出が容易にできる。しかし、画像の解像度が
低い場合バーの線幅が安定に抽出できなくなり、そのた
めバーコード領域の抽出が困難になることがある。
【0048】例えば前記のように、200dpiのスキ
ャナでバーコードを読み取ると、画像にかすれ、或いは
つぶれ等が生じバーの線幅が安定に抽出できなくなる。
このためバーコードの抽出が困難になることがある。
【0049】本発明は、このような従来の課題を解決
し、低品質なバーコード画像でも信頼性の高いバーコー
ドの抽出、及び認識ができるようにすることを目的とす
る。
【0050】
【課題を解決するための手段】図1は本発明の原理説明
図である。本発明は前記の目的を達成するため、次のよ
うに構成した。
【0051】(1) :図1に示したように、バーコード認
識装置には、画像メモリ4Aと、複雑領域抽出部11
と、センターバー/エンドバー/スタートバー抽出部1
2と、キャラクタコード認識部17と、セキュリティチ
ェック部15を設けた。また、前記キャラクタコード認
識部17には、キャラクタ数の認識部13と、キャラク
タの値/信頼性の認識部14を設けた。
【0052】また、バーコード認識装置を次のように構
成した。 (2) :画像データの任意の位置にあるバーコードを抽出
して認識するバーコード認識装置であって、前記画像デ
ータから予め設定された閾値以内の間隔で黒領域と白領
域が交互に現れる複雑領域をバーコードの候補領域とし
て抽出する複雑領域抽出部11と、複雑領域抽出部11
が抽出した複雑領域からバーコード特有のセンターバー
/エンドバー/スタートバーを抽出するセンターバー/
エンドバー/スタートバー抽出部12と、センターバー
/エンドバー/スタートバーが抽出できた場合にその複
雑領域からキャラクタコード領域を抽出して、キャラク
タコードの認識を行うキャラクタコード認識部17と、
キャラクタコード認識部17の認識結果を基にセキュリ
ティチェックを行い、その結果に矛盾がなければバーコ
ードと断定してバーコード情報を出力するセキュリティ
チェック部15を備えている。
【0053】(3) :前記バーコード認識装置において、
センターバー/エンドバー/スタートバー抽出部12
は、前記複雑領域からセンターバー/エンドバー/スタ
ートバーを抽出する際、先ずセンターバーを抽出し、そ
の後スタートバーとエンドバーを抽出するように構成し
た。
【0054】(4) :前記バーコード認識装置において、
キャラクタコード認識部17は、前記複雑領域からキャ
ラクタコード領域を抽出し、その領域からキャラクタ数
を認識するキャラクタ数の認識部13と、前記抽出した
キャラクタコード領域の各キャラクタの値を認識し、か
つ、その認識の信頼度を求めるキャラクタの値/信頼性
の認識部14を備えている。
【0055】(5) :前記バーコード認識装置において、
セキュリティチェック部15は、バーコードのパリティ
チェックを利用してセキュリティチェックを行うように
構成した。
【0056】(6) :前記バーコード認識装置において、
セキュリティチェック部15は、バーコードのプリフィ
クスキャラクタのチェックによりセキュリティチェック
を行うように構成した。
【0057】(7) :前記バーコード認識装置において、
セキュリティチェック部15は、バーコードのモジュラ
ス10を利用してセキュリティチェックを行うように構
成した。
【0058】(8) :前記バーコード認識装置において、
セキュリティチェック部15のセキュリティチェックで
矛盾があった場合、前記キャラクタコード認識部17
は、信頼性の低いキャラクタコードについて再度キャラ
クタコードの認識を行い、その認識結果に基づきセキュ
リティチェック部15が再度セキュリティチェックを行
うことにより、低品質なバーコードの抽出を行うように
構成した。
【0059】(9) :前記バーコード認識装置において、
キャラクタコード認識部17は、キャラクタコードの値
を認識する際、キャラクタコードを構成する特定バーの
線幅が予め設定された閾値以下の値をとっている箇所を
記憶すると共に、その箇所を含むキャラクタコードを信
頼性の低いキャラクタコードとして記憶しておき、前記
セキュリティチェック結果で矛盾があった場合、前記キ
ャラクタコード認識部17は、記憶しておいた前記信頼
度の低いキャラクタコードの特定バーだけに着目し、前
記複雑領域を抽出した注目行の前後(特定バーの上下方
向)を探索して前記特定バーの線幅を再度算出し、他の
キャラクタの可能性を確認しながらセキュリティチェッ
クによる矛盾のないキャラクタコード列を求めるように
構成した。
【0060】(10):前記バーコード認識装置において、
センターバー/エンドバー/スタートバー抽出部12
は、センターバー/エンドバー/スタートバーが抽出で
きなかった場合、信頼性の低い特定バーに着目し前記複
雑領域を抽出した注目行の前後(特定バーの上下方向)
を探索して前記特定バーの線幅を再度算出することによ
り、センターバー/エンドバー/スタートバーの抽出を
行うように構成した。
【0061】(11):前記バーコード認識装置において、
セキュリティチェック部15のセキュリティチェック機
能を使い、前記各部にフィードバックしながらバーコー
ドの抽出、及び認識を行うように構成した。
【0062】(12):前記バーコード認識装置において、
複雑領域抽出部11は、画像データ全体をラベリング処
理して画像の連結部分を算出する手段と、前記画像の連
結部分から縦長の連結成分を抽出する手段と、前記抽出
した連結成分の中から隣接する連結成分間の間隔が予め
設定された閾値以下の連結部分群を抽出する手段を備え
ている。
【0063】
【作用】前記構成に基づく本発明の作用を説明する。図
1において、バーコード認識装置では画像メモリ4Aに
格納されている画像データからバーコードの抽出を行う
が、この場合、単に、センターバー/エンドバー/スタ
ートバーを抽出するだけでなく、キャラクタコードを認
識してバーコードの位置を特定する処理を行う。
【0064】また、低解像度のバーコードに備えてセキ
ュリティチェックを行い、このセキュリティチェックで
矛盾が生じた場合は、フィードバックをかけて信頼性の
低い特定バーを見つけ、再度バーコードの認識を行う。
【0065】先ず、複雑領域抽出部11は、画像メモリ
4Aに格納されている画像データから、予め設定された
閾値以下の間隔で黒領域(例えば、情報1)と白領域
(例えば、情報0)が交互に現れる複雑領域(連続する
複数のパターンが密集する領域)をバーコードの候補領
域として抽出する。
【0066】次にセンターバー/エンドバー/スタート
バー抽出部12は、前記抽出された複雑領域の中からセ
ンターバー/エンドバー/スタートバーの抽出を行う。
この処理では、先ずセンターバーを抽出し、その後、エ
ンドバーとスタートバーを抽出する。
【0067】そして、前記複雑領域の中からセンターバ
ー/エンドバー/スタートバーが見つからない場合は、
センターバー/エンドバー/スタートバー抽出部12か
ら複雑領域抽出部11へフィードバックをかけ、複雑領
域抽出部11が別の複雑領域を見に行く。
【0068】なお、センターバー/エンドバー/スター
トバー抽出部12は、センターバー/エンドバー/スタ
ートバーが抽出できなかった場合、信頼性の低い特定バ
ーに着目し、前記複雑領域を抽出した注目行の前後(特
定バーの上下方向)を探索して前記特定バーの線幅を再
度算出することにより、センターバー/エンドバー/ス
タートバーの抽出を行う。
【0069】このようにして別の複雑領域に対してセン
ターバー/エンドバー/スタートバーの抽出を行い、そ
の結果、センターバー/エンドバー/スタートバーが見
つかった場合は、キャラクタ数の認識部13がキャラク
タ数を認識し、種類の異なるバーコードでも対応できる
ようにする。例えば、JANコードでもキャラクタ数が
13桁と8桁のバーコードがあり、それらのパリティチ
ェックの仕方が異なるので、必ず種類を区別しておかな
ければならない。
【0070】次に、キャラクタの値/信頼性の認識部1
4は、キャラクタコードの値を認識するが、各キャラク
タコードの値を決定する時にバーの線幅が予め設定され
た閾値以下の値をとっている箇所を記憶しておき、更に
それが構成要素となっているキャラクタコードも信頼性
の低いキャラクタと記憶しておく。
【0071】そして、各キャラクタコードの値が求まる
と、セキュリティチェック部15で、パリティチェッ
ク、プリフィクスキャラクタチェック、モジュラス10
チェックの各セキュリティチェックを行う。そして前記
セキュリティチェックで矛盾がなければ、その領域をバ
ーコードと断定し、バーコードの位置と認識結果を出力
する。
【0072】しかし、前記セキュリティチェックで矛盾
がある場合は、キャラクタの値/信頼性の認識部14へ
フィードバックし、キャラクタの値/信頼性の認識部1
4が前記記憶しておいた信頼性の低いキャラクタコード
の特定バーに着目し、その特定バーの上下方向(複雑領
域を抽出する際の注目行の前後)を探索して真のキャラ
クタコードを見つける。
【0073】その後、再度セキュリティチェック部15
がセキュリティチェックを行い、どうしても矛盾が生じ
る場合には、複雑領域抽出部11へフィードバックし
て、複雑領域抽出部11が更に別の複雑領域を見に行
く。
【0074】なお、前記複雑領域抽出部11は、画像メ
モリ4Aに格納されている画像データ全体をラベリング
処理して画像の連結部分を算出し、前記画像の連結部分
から縦長の連結成分を抽出した後、前記抽出した連結成
分の中から隣接する連結成分間の間隔が予め設定された
閾値以下の連結部分群を複雑領域として抽出しても良
い。
【0075】以上のようにして、低品質なバーコード画
像でも信頼性の高いバーコードの抽出、及び認識ができ
る。
【0076】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。なお、以下に説明する実施例はOCR装置を用い
てバーコード認識装置を実現した例である。
【0077】(実施例1の説明)以下、図2〜図18に
基づいて実施例1を説明する。 §1:OCR装置の構成の説明・・・図2参照 図2は実施例1の装置構成図である。図示のようにOC
R装置2にはスキャナ3が接続されており、前記OCR
装置2には、イメージメモリ4、ワークメモリ5、出力
メモリ6、文字認識部7、バーコード認識部8、バーコ
ードテーブル9等が設けてある。前記各部の機能等は次
の通りである。
【0078】(1) :スキャナ3は画像を光学的に読み取
る装置であり、例えば、帳票の情報を読み取って帳票イ
メージデータ(多値の画像データ)を入力し、2値のイ
メージデータ(2値の画像データ)に変換してOCR装
置2へ出力するものである。なお、OCR装置2へ入力
したイメージデータは、OCR装置2内の制御部(図示
省略)によりイメージメモリ4に格納される。
【0079】(2) :イメージメモリ4は、スキャナ3か
ら出力されたイメージデータ(2値の画像データ)を格
納するものである。 (3) :ワークメモリ5は、OCR装置2内の各部がアク
セスするメモリであり、バーコードの読み取り(抽出、
認識等)をする際などにワーク用として使用するもので
ある。
【0080】(4) :出力メモリ6は、バーコード認識部
8が抽出したバーコードの出力情報等(バーコードの位
置、認識結果の情報等)を格納するものである。 (5) :文字認識部7は、イメージメモリ4に格納された
イメージデータ(画像データ)中の文字を認識するもの
である。
【0081】(6) :バーコード認識部8は、イメージメ
モリ4に格納されているイメージデータからバーコード
を読み取るものである。 (7) :バーコードテーブル9は、バーコードの抽出、及
び認識処理に必要な各種情報を格納したものである。
【0082】§2:OCR装置内各部の詳細な構成の説
明・・・図3参照 図3は図2の一部詳細図であり、A図はバーコード認識
部、B図はバーコードテーブルを示した図である。
【0083】前記OCR装置2内のバーコード認識部8
には、複雑領域抽出部11、センターバー/エンドバー
/スタートバー抽出部12、キャラクタ数の認識部1
3、キャラクタの値/信頼性の認識部14、セキュリテ
ィチェック部15等が設けてある。
【0084】また、前記OCR装置内のバーコードテー
ブル9には、複雑領域抽出用テーブル20、センターバ
ー/エンドバー/スタートバーの認識テーブル21、キ
ャラクタ認識テーブル22、パリティチェックテーブル
23、プリフィクスキャラクタチェックテーブル24、
モジュラスチェックテーブル25が設けてある。前記各
部の機能等は次の通りである。
【0085】(1) :複雑領域抽出部11は、イメージメ
モリ4に格納されているイメージデータ(2値の画像デ
ータ)から、予め設定された或る閾値以下の間隔で黒領
域(例えば、情報1)と白領域(例えば、情報0)が交
互に並んだ領域を複雑領域として抽出するものである。
なお、前記複雑領域はバーコードの候補領域となるもの
である。
【0086】(2) :センターバー/エンドバー/スター
トバー抽出部12は、前記複雑領域抽出部11が抽出し
た複雑領域から、バーコード特有の情報であるセンター
バー/エンドバー/スタートバーを抽出するものであ
る。
【0087】(3) :キャラクタ数の認識部13は、前記
センターバー/エンドバー/スタートバー抽出部12に
よりセンターバー/エンドバー/スタートバーが抽出さ
れた場合に、前記複雑領域からキャラクタコード領域を
抽出し、このキャラクタコード領域からキャラクタ数を
認識するものである。
【0088】(4) :キャラクタの値/信頼性の認識部1
4は、キャラクタコードの値を認識すると共に、前記認
識の信頼度(信頼性)を求めるものである。 (5) :セキュリティチェック部15は、前記キャラクタ
の値/信頼性の認識部14が認識したキャラクタコード
の値が正しいか否かを判断するために、セキュリティチ
ェック(パリティチェック、プリフィクスキャラクタチ
ェック、モジュラス10チェック)を行うものである。
【0089】(6) :複雑領域抽出用テーブル20は、複
雑領域抽出部11が複雑領域の抽出を行う際に必要な情
報(バーコードの各種情報、閾値等)を格納しておくも
のである。
【0090】(7) :センターバー/エンドバー/スター
トバーの認識テーブル21は、予めセンターバー/エン
ドバー/スタートバーの各情報を格納しておくものであ
る。なお、前記情報としては、センターバーのモジュー
ル表現である「0101010」のデータや、エンドバ
ー、スタートバーのモジュール表現である「101」の
データである。
【0091】(8) :キャラクタ認識テーブル22は、キ
ャラクタコードの認識に必要な情報を格納しておくもの
である。 (9) :パリティチェックテーブル23は、パリティチェ
ックに必要な情報を格納しておくものである。
【0092】(10):プリフィクスキャラクタチェックテ
ーブル24は、プリフィクスキャラクタチェックに必要
な情報を格納しておくものである。 (11):モジュラスチェックテーブル25は、モジュラス
10のチェックを行う際に必要な情報を格納しておくも
のである。
【0093】§3:バーコード認識部の処理概要説明・
・・図4参照 図4はバーコード認識部の処理概要説明図である。以
下、図4に基づいてバーコード認識部の処理概要を説明
する。なお、以下の説明ではイメージデータを画像デー
タとも記す。
【0094】バーコード認識部8ではイメージメモリ4
に格納されているイメージデータ(2値の画像データ)
からバーコードの抽出を行うが、この場合、単にセンタ
ーバー/エンドバー/スタートバーを抽出するだけでな
く、キャラクタコードを認識してバーコードの位置を特
定する処理を行う。また、低解像度のバーコードに備え
てセキュリティチェックを行い、このセキュリティチェ
ックで矛盾が生じた場合は、フィードバックをかけて信
頼性の低い特定バーを見つけ再度バーコードの認識を行
う。
【0095】先ず、バーコード認識部8内の複雑領域抽
出部11は、イメージメモリ4に格納されているイメー
ジデータ(画像データ)から、予め設定された閾値以下
の間隔で黒領域(例えば、情報1)と白領域(例えば、
情報0)が交互に現れる複雑領域(連続する複数のパタ
ーンが密集する領域)をバーコードの候補領域として抽
出する。
【0096】次にセンターバー/エンドバー/スタート
バー抽出部12は、前記抽出された複雑領域の中からセ
ンターバー/エンドバー/スタートバーの抽出を行う。
この処理では、先ずセンターバーを抽出し、その後エン
ドバーとスタートバーを抽出する。
【0097】そして、前記複雑領域の中からセンターバ
ー/エンドバー/スタートバーが見つからない場合は、
センターバー/エンドバー/スタートバー抽出部12か
ら複雑領域抽出部11へフィードバックをかけ、複雑領
域抽出部11が別の複雑領域を見に行く。
【0098】なお、センターバー/エンドバー/スター
トバー抽出部12は、センターバー/エンドバー/スタ
ートバーが抽出できなかった場合、信頼性の低い特定バ
ーに着目し、前記複雑領域を抽出した注目行の前後(特
定バーの上下方向)を探索して前記特定バーの線幅を再
度算出することにより、センターバー/エンドバー/ス
タートバーの抽出を行う。
【0099】このようにして別の複雑領域に対してセン
ターバー/エンドバー/スタートバーの抽出を行い、そ
の結果、センターバー/エンドバー/スタートバーが見
つかった場合は、キャラクタ数の認識部13がキャラク
タ数を認識し、種類の異なるバーコードでも対応できる
ようにする。例えば、JANコードでもキャラクタ数が
13桁と8桁のバーコードがあり、それらのパリティチ
ェックの仕方が異なるので、必ず種類を区別しておかな
ければならない。
【0100】次に、キャラクタの値/信頼性の認識部1
4は、キャラクタコードの値を認識するが、各キャラク
タコードの値を決定する時にバーの線幅が予め設定され
た閾値以下の値をとっている箇所をワークメモリ5に格
納しておき、更にそれが構成要素となっているキャラク
タコードも信頼性の低いキャラクタコードとしてワーク
メモリ5に格納しておく。
【0101】そして、各キャラクタコードの値が求まる
と、セキュリティチェック部15で、パリティチェッ
ク、プリフィクスキャラクタチェック、モジュラス10
チェックの各セキュリティチェックを行う。そして前記
セキュリティチェックで矛盾が無ければその領域をバー
コードと断定し、バーコードの位置と認識結果を出力メ
モリ6に出力する。
【0102】しかし、前記セキュリティチェックで矛盾
がある場合は、キャラクタの値/信頼性の認識部14へ
フィードバックし、キャラクタの値/信頼性の認識部1
4が前記ワークメモリ5に記憶しておいた信頼性の低い
キャラクタコードの特定バーに着目し、その特定バーの
上下方向(複雑領域を抽出する際の注目行の前後)を探
索して真のキャラクタコードを見つける。
【0103】その後、再度セキュリティチェック部15
がセキュリティチェックを行い、どうしても矛盾が生じ
る場合には、複雑領域抽出部11へフィードバックし
て、複雑領域抽出部11が更に別の複雑領域を見に行
く。以上のようにして、低品質なバーコード画像でも信
頼性の高いバーコードの抽出、及び認識ができる。
【0104】§4:帳票例の説明・・・図5参照 図5は帳票例を示した図である。本実施例では、前記ス
キャナ3により帳票を読み取ってイメージデータを入力
するが、この場合に使用する帳票例は図5に示した通り
である。
【0105】この帳票例は、公共料金の内、電気料金の
払込に使用する帳票であり、バーコード27が複数箇所
に設けてある。このような帳票をスキャナ3により読み
取り、その時入力したイメージデータを2値のイメージ
データ(2値の画像データ)に変換してイメージメモリ
4に格納した後、前記イメージメモリ4内のイメージデ
ータをスキャン(走査)してバーコードの抽出を行う。
【0106】この場合、イメージメモリ4内のイメージ
データ格納領域の最初の位置(格納開始アドレス)であ
るP点をx,y座標の原点(x,y=0,0)に設定す
る。そして、x,y座標のx軸方向(横方向)を主走査
方向とし、y軸方向(縦方向)を副走査方向としてスキ
ャンを行う。
【0107】前記スキャンを行う場合、図示のaライン
(a行)から主走査方向(x軸方向)のスキャンを開始
し、その後、副走査方向(y軸方向)へスキャンするラ
インを任意の間隔で進めながら順次スキャンを行い、以
降、eライン(e行)を通り、更にhライン(h行)へ
移動し、最後はnライン(n行)のスキャンを行って全
てのスキャンを終了する。
【0108】なお、主走査方向(x軸方向)のスキャン
開始点はX0 であり、スキャン終了点はXm である。ま
た、以下の説明では、x軸方向を横方向、x軸方向のラ
インを行とも示す。また、y軸方向を列方向、或いは縦
方向とも記す。
【0109】§5:フローチャートによるバーコード認
識部の処理説明・・・図6参照 図6は実施例1のバーコード認識部の処理フローチャー
トである。以下、図6に基づいてバーコード認識部の処
理を説明する。なお、S21〜S33は各処理ステップ
を示す。
【0110】先ず、複雑領域抽出部11はイメージメモ
リ4に格納されているイメージデータ(画像データ)を
順次スキャンして、或る行(x軸方向の或るライン)の
画像データの抽出を行う(S21)。
【0111】そして、複雑領域抽出部11は、前記抽出
した画像データから予め設定された閾値(複雑領域抽出
用テーブル20に設定された閾値)以下の間隔で黒領域
(例えば、情報1)と白領域(例えば、情報0)が交互
に現れる複雑領域(連続する複数のパターンが密集する
領域)をバーコードの候補領域として抽出する処理を行
う(S22)。
【0112】そして、複雑領域抽出部11は複雑領域が
抽出できたか否かを判定し(S23)、もし前記処理で
複雑領域が抽出できなかった場合は、スキャンする行
(x軸方向のライン)をy軸方向に所定間隔で変えて前
記S21の処理から繰り返す。しかし、複雑領域が抽出
できた場合、センターバー/エンドバー/スタートバー
抽出部12は、前記抽出された複雑領域の中から先ずセ
ンターバーの抽出を行い、センターバーの有無の判定を
行う(S24)。
【0113】その結果、センターバーが無い場合(抽出
できない場合)は、スキャンする行(x軸方向のライ
ン)をy軸方向に所定間隔で変えて前記S21の処理か
ら繰り返す。このようにして、複雑領域からセンターバ
ーが抽出できた場合は、次にセンターバー/エンドバー
/スタートバー抽出部12は、エンドバーの抽出を行
い、エンドバーの有無の判定を行う(S25)。
【0114】その結果、エンドバーが無い場合(抽出で
きない場合)は、スキャンする行(x軸方向のライン)
をy軸方向に所定間隔で変えて前記S21の処理から繰
り返す。このようにして、複雑領域からエンドバーが抽
出できた場合、センターバー/エンドバー/スタートバ
ー抽出部12はスタートバーの抽出を行い、スタートバ
ーの有無の判定を行う(S26)。
【0115】その結果、スタートバーが無い場合(抽出
できない場合)はスキャンする行(x軸方向のライン)
をy軸方向に所定間隔で変えて前記S21の処理から繰
り返す。なお、センターバー/エンドバー/スタートバ
ー抽出部12は、センターバー/エンドバー/スタート
バーが抽出できなかった場合、信頼性の低い特定バーに
着目し、前記複雑領域を抽出した注目行の前後(特定バ
ーの上下方向)を探索して前記特定バーの線幅を再度算
出することにより、センターバー/エンドバー/スター
トバーの抽出を行う。
【0116】前記のように、センターバー/エンドバー
/スタートバーが抽出できなかった場合、別の複雑領域
に対してセンターバー/エンドバー/スタートバーの抽
出を行い、その結果、センターバー/エンドバー/スタ
ートバーが見つかった場合は、キャラクタ数の認識部1
3がキャラクタコード領域の抽出を行う(S27)。そ
して、キャラクタコード領域が抽出できなかった場合
は、スキャンする行(x軸方向の或るライン)をy軸方
向に所定間隔で変えて前記S21の処理から繰り返す。
【0117】前記のようにして、キャラクタコード領域
が抽出できた場合、キャラクタ数の認識部13はキャラ
クタ数を認識し、種類の異なるバーコードでも対応でき
るようにする。例えば、JANコードでもキャラクタ数
が13桁と8桁のバーコードがあり、それらのパリティ
チェックの仕方が異なるので、必ず種類を区別しておか
なければならない。
【0118】次に、キャラクタの値/信頼性の認識部1
4は、キャラクタコードの値を認識し、その認識の信頼
度を算出する(S28)。この処理ではキャラクタの値
/信頼性の認識部14は、各キャラクタコードの値を決
定する時にバーの線幅が予め設定された閾値以下の値を
とっている箇所をワークメモリ5に格納しておき、更に
それが構成要素となっているキャラクタコードも信頼性
の低いキャラクタコードとしてワークメモリ5に格納し
ておく。
【0119】そして、各キャラクタコードの値が求まる
と、セキュリティチェック部15ではセキュリティチェ
ックを行うが、先ずパリティチェックを行い(S2
9)、次にプリフィクスキャラクタチェックを行い(S
31)、最後にモジュラス10チェックを行う(S3
2)。
【0120】その結果、前記セキュリティチェックで矛
盾がある場合は、セキュリティチェック部15からキャ
ラクタの値/信頼性の認識部14へフィードバックし、
キャラクタの値/信頼性の認識部14が、信頼度による
再キャラクタコードの認識を行う(S30)。
【0121】この処理では、キャラクタの値/信頼性の
認識部14は前記ワークメモリ5に記憶しておいた信頼
性の低いキャラクタコードの特定バーに着目し、その特
定バーの上下方向(複雑領域を抽出する際の注目行の前
後)を探索して真のキャラクタコードを見つける。
【0122】その後、再度セキュリティチェック部15
がセキュリティチェックを行い、どうしても矛盾が生じ
る場合には、複雑領域抽出部11へフィードバックし
て、前記S21の処理から繰り返す。
【0123】前記のようにして、セキュリティチェック
部15でのセキュリティチェックで矛盾がない場合には
その領域をバーコードと断定し、バーコードの位置と認
識結果を出力メモリ6に出力する。そして、イメージメ
モリ4に格納されたイメージデータ(画像データ)上の
バーコードの認識が全て終了していたら(S33)、全
ての処理を終了するが、全てのバーコードが抽出されて
いない場合は、前記S21の処理から繰り返す。以上の
ようにして、低品質なバーコード画像でも信頼性の高い
バーコードの抽出、及び認識ができる。
【0124】§6:バーコード認識部の各部の詳細な処
理の説明・・・図7〜図12参照 図7〜図12はバーコード認識部の処理説明図(その1
〜その6)である。以下、図7〜図12に基づいて、前
記図6に示したバーコード認識部の各処理(S21〜S
33)を詳細に説明する。
【0125】(1) :ある行の画像データの抽出処理の説
明・・・図7のA図参照 図7のA図は、或る行の画像データの抽出処理を示した
図である。S21の処理では、複雑領域抽出部11が、
イメージメモリ4に格納されている画像データから或る
行(x軸方向のライン)の画像データを抽出する。
【0126】この場合、或る行の画像データの抽出は、
図6ののループ処理によって、画像データの上から或
る行間隔で順番に抽出する。但し、バーコードらしい行
で、その行だけではバーコードのセンターバー/エンド
バー/スタートバーや、キャラクタコードの値が読めな
い場合には、のループ処理により注目行の前後の行
(y軸方向にずらした行)の画像データを抽出すること
になる。
【0127】抽出した行の画像データは、黒い部分を
1、白い部分を0とすると、例えば「00000011
101010・・・・001」のように0と1のビット
列で表現される。例えば、前記帳票例の注目行のバーコ
ード内の「4」のビット列は「00001111000
00000000011111111」となる。
【0128】(2) :複雑領域の抽出処理・・・図7のB
図参照 図7のB図は複雑領域の抽出処理を示した図である。S
22の処理では、複雑領域抽出部11は、前記S21の
処理で抽出したビット列から注目行でバーコードが存在
している候補領域を複雑領域として抽出する。これは、
取り出した1行からビットの並びが複雑で、その複雑状
態が或る程度連続している部分を取り出す。
【0129】具体的には、画像データが「1」から
「0」、または「0」から「1」に変わる所から「0」
から「1」、または「1」から「0」に変わる所までの
間隔が短く(予め設定した閾値以下の間隔)、その間隔
の短い所が連続的に現れる箇所を探す。
【0130】通常の背景部分は白(「0」情報)が続
き、文字や罫線では一時的に白から黒(「0」から
「1」)、または黒から白(「1」から「0」)に変わ
るが、継続的に現れないので、一部の文字列とバーコー
ド領域だけが抽出できる。
【0131】(3) :複雑領域の有無の判定処理の説明・
・・図7のB図参照 S23の処理では、複雑領域抽出部11は複雑領域が抽
出できたか否かを調べる。もし、複雑領域を抽出できな
い場合は、前記S21の処理に戻り行を変えて画像デー
タの抽出を行う。バーコードは縦方向(y軸方向)にも
幅を持っているので、行の変更は隣の行だけでなく、バ
ーコードの幅以内で行を飛ばして変更を行うのが処理時
間の点から望ましい。
【0132】(4) :センターバーの有無の判定処理の説
明・・・図8のA図参照 図8のA図はセンターバーの抽出処理を示した図であ
る。S24の処理では、センターバー/エンドバー/ス
タートバー抽出部12はセンターバーの有無の判定処理
を行う。この処理では、前記S23の処理で抽出できた
複雑領域からバーコード特有の情報であるセンターバー
を探す。
【0133】センターバーは、モジュールで表現する
と、「01010」の構成をとる。ここで、モジュール
とはバーコードのバーの基本長であり、1つのキャラク
タは7モジュールからなっている。例えば、「2」は
「0011011」の7つのモジュールからなる。な
お、前記「2」は厳密には、E2、すなわち偶数パリテ
ィの2である(E:EVEN)。
【0134】例えば、200dpiの解像度を有するス
キャナで帳票を読み取った場合は、1モジュール当たり
4画素で表現される。従って、「1」のモジュールは雑
音がない場合に画素値では「1111」となる。センタ
ーバーは白領域と黒領域が同間隔なパターンが白黒交互
に現れる。もし、ノイズの影響でセンターバーを抽出で
きない場合には、隣の行で前記S21に戻って処理をや
り直す。
【0135】ところで、センターバーの抽出をスタート
バーやエンドバーの抽出より先に行う理由は次の通りで
ある。すなわち、スタートバーやエンドバーでは、スタ
ートバーはその前に、エンドバーはその後に文字列や雑
音が存在する可能性があり、それらのバーの抽出が安定
にできないからである。なお、センターバーのモジュー
ル表現である「0101010」のデータは、予めセン
ターバー/エンドバー/スタートバーの認識テーブル2
1に格納しておく。
【0136】(5) :エンドバーの抽出処理の説明・・・
図8のB図参照 図8のB図はエンドバーの抽出処理を示した図である。
前記S24の処理終了後、S25の処理ではセンターバ
ー/エンドバー/スタートバー抽出部12はエンドバー
の有無の判定処理を行う。センターバー/エンドバー/
スタートバー抽出部12は、前記のように抽出できたセ
ンターバーの後方で複雑領域からエンドバーを探す。
【0137】エンドバーは、モジュールで表現すると
「101」の構成をとる。つまり、白領域と黒領域が同
間隔なパターンが白黒交互に現れる。もし、ノイズの影
響でセンターバーを抽出できない場合には、隣の行でS
21に戻って処理をやり直す。なお、エンドバーのモジ
ュール表現である「101」のデータは、予めセンター
バー/エンドバー/スタートバーの認識テーブル21に
格納しておく。
【0138】(6) :スタートバーの抽出処理の説明・・
・図9のA図参照 図9のA図はスタートバーの抽出処理を示した図であ
る。S26では、センターバー/エンドバー/スタート
バー抽出部12はスタートバーの抽出処理を行う。セン
ターバー/エンドバー/スタートバー抽出部12は、前
記S25の処理終了後スタートバーの抽出処理を行う。
この処理では抽出できたセンターバーの前方で複雑領域
からスタートバーを探す。
【0139】スタートバーは、モジュールで表現すると
「101」の構成をとる。つまり、白領域と黒領域が同
間隔なパターンが白黒交互に現れる。もし、ノイズの影
響でスタートバーを抽出できなかった場合は、隣の行で
S21の処理に戻ってやり直す。なお、スタートバーの
モジュール表現である「101」のデータは予めセンタ
ーバー/エンドバー/スタートバーの認識テーブル21
に格納しておく。
【0140】(7) :キャラクタコード領域抽出処理の説
明・・・図9のB図、図10のA図参照 図9のB図はキャラクタコード領域の抽出処理を示した
図、図10のA図は短縮コードの例である。S27で
は、キャラクタ数の認識部13はキャラクタコード領域
の抽出を行う。この処理ではキャラクタの幅、キャラク
タの数をチェックする。キャラクタの幅はスタートバー
とセンターバーの間の画素数、及びセンターバーとエン
ドバーの間の画素数より求める。
【0141】また、各キャラクタは、必ず白2本黒2本
で表現されているため、白と黒の本数を数えることによ
りキャラクタ数がわかる。図9のB図にキャラクタコー
ド領域の抽出例を示すが、キャラクタ数がわかることに
よりバーコードのタイプ(短縮コードかそうでないか)
もわかる。短縮コードとしては、例えば図10のA図に
示したようなものである。
【0142】(8) :各キャラクタコードの認識、及び信
頼度算出処理・・・図10のB図、図11参照 図10のB図はキャラクタコードの認識処理を示した
図、図11のA図は信頼度の算出処理を示した図であ
る。前記S27の処理でキャラクタコード領域が求まる
と、S28の処理ではキャラクタの値/信頼性の認識部
14は各キャラクタコードの認識、及び信頼度算出処理
を行う。
【0143】各キャラクタコードの認識は、各キャラク
タが構成されている白黒2本の幅の違いにより認識す
る。なお、前記キャラクタコードの認識処理について
は、従来技術(例えば、特開平4−263381号公報
に記載された「バーコード読取装置」を参照)を使用し
て処理を行えば良い。前記処理により、各キャラクタコ
ードは、例えば「E8」、「O2」というように、パリ
ティの偶数、奇数も認識される。
【0144】次に信頼度(信頼性)は、図11に示した
「E2」の末尾の「1」のモジュールの例をとると、例
えば、200dpiの解像度を有するスキャナを用いた
場合に1モジュール4画素で黒のバーはのように4画
素の幅になる。
【0145】この場合には信頼度が高いものとして捉え
るが、図11ので示した右例の場合には、欠けにより
2画素となるため信頼度は低くなる。この時「E2」の
末尾「1」のモジュールの信頼度が低いとして、その情
報をワークメモリ5に記憶しておく。
【0146】(9) :パリティチェックの説明 前記S28の終了後、セキュリティチェック部15はS
29の処理でパリティチェックを行う。この処理はキャ
ラクタ数が13桁と8桁(短縮バーコード)の場合とも
にセンターバーの右側のキャラクタコードが全て「EV
EN」になっていることを確認する。もし、「EVE
N」になっていなければ、キャラクタの値/信頼性の認
識部14はS30の処理で信頼度による再キャラクタコ
ードの認識処理を行う。
【0147】(10):プリフィクスキャラクタのチェック
の説明 前記S29の処理終了後、セキュリティチェック部15
はプリフィクスキャラクタのチェックを行う。この処理
では、キャラクタ数が13桁の場合、センターバーの左
側のキャラクタが「OOOOOO」、「OOEOE
E」、「OOEEOE」、「OOEEEO」、「OEO
OEE」、「OEEOOE」、「OEEEOO」、「O
EOEOE」、「OEOEEO」、「OEEOEO」の
いずれかになっていることを確認する。
【0148】また、8桁の場合には「0000」になっ
ていることを確認する。ここで、前記「O」はODD、
「E」はEVENである。なお、前記処理でもし、どれ
にも該当しなければ、信頼度による再キャラクタコード
の認識処理をS30の処理で行う。
【0149】(11):モジュラス10チェックの説明 前記S31の処理終了後、セキュリティチェック部15
はモジュラス10チェックを行う。このモジュラス10
チェック処理では、バーコードの一番右のキャラクタの
値と、キャラクタ値全てを用いて或る演算式で計算した
結果が一致することを確認する。その結果、もし一致し
なければ、信頼度による再キャラクタコードの認識をS
30の処理で行う。
【0150】(12):信頼度による再キャラクタコードの
認識処理・・・図12のA図参照 図12のA図は信頼度による再キャラクタコードの認識
処理を示した図である。前記(9) から(11)の処理(S2
9、S30、S31の処理)で値が正しくなかった場合
(矛盾が生じた場合)、キャラクタの値/信頼性の認識
部14は、信頼の低いキャラクタの上下を調べてキャラ
クタコードを再認識し、その後再び前記(9) 〜(11)の処
理を行う。
【0151】例えば、図12のA図では、S27の処理
で算出しておいた信頼度の低いキャラクタのある特定バ
ーに着目し、注目行より下の方向に探索することで正し
いバーの幅(4画素)が求まり、真のキャラクタコード
が認識できている。それでもだめなら、行を変えて画像
データを抽出し、再度S21の処理から繰り返す。
【0152】(13):バーコードの認識終了の説明・・・
図12のB図参照 図12のB図は一行取り出し処理を示した図である。前
記各処理が終了し、一番下の行まで処理が終了すると全
体の処理を終了するが、そうでない場合、図12のB図
のように、行を変えて前記一連の処理を繰り返す。 §7:実施例1の詳細な処理の説明・・・図13〜図1
8参照 図13はバーコードの名称説明図、図14は記号説明
図、図15〜図18は実施例1の詳細な処理フローチャ
ート(その1〜その4)である。以下、図13〜図18
に基づいて実施例1の詳細な処理を説明する。なお、S
41〜S62は各処理ステップを示す。
【0153】(1) :バーコードの名称の説明・・・図1
3参照 バーコードの各部の名称は図13に示した通りである。
バーコードは中央にセンターバーがあり、その左右が対
称に構成されている。前記センターバーの左側は図13
のA図のように構成されており、マージンに続いてガー
ドバー(スタートバー、或いはレフトガードバー)があ
り、このガードバーに続いて、第一キャラクタコード、
第二/六キャラクタコード(第二、第三、第四、第五、
第六キャラクタコード)が設けてある。
【0154】また、センターバーの右側には、センター
バーに続いて、第一キャラクタコード、第二/六キャラ
クタコード(第二、第三、第四、第五、第六キャラクタ
コード)、ガードバー(エンドバー、或いはライトガー
ドバー)が設けてあり、その後がマージンになってい
る。
【0155】(2) :記号の説明・・・図14参照 以下の説明で使用する記号は図14に示した通りであ
る。すなわち、「START_ADR」は最初に画像デ
ータを取り出すy座標を示す。「INTERVAL」は
画像データを取り出すy座標の間隔を示す。「WHIT
EMAX」は白バーの幅の最大を示す。「BRACKM
AX」は黒バーの幅の最大を示す。「BARLEN」は
バーコード全体の幅の最小を示す。「BAR_H」はバ
ーコードの高さの最大を示す。
【0156】「GAP_Y」はy方向のバーコードのず
れの最大を示す。「GAP_MAX」はバーコードの誤
差の最大を示す。「GAP_MIN」はバーコードの誤
差の最小を示す。「END_GAP_MAX」はエンド
バーの誤差の最大を示す。「START_GAP_MA
X」はスタートバーの誤差の最大を示す。
【0157】「CHARACTER_MAX」はキャラ
クタ長の誤差の最大を示す。「CHARACTER_M
IN」はキャラクタ長の誤差の最小を示す。「END_
CHAR_MAX」はエンドキャラクタ長の誤差の最大
を示す。「END_CHAR_MIN」はエンドキャラ
クタ長の誤差の最小を示す。「GAP_BAR_W」は
バーの幅の誤差の最大を示す。「GAP_BAR_TR
UE」は正しいバーの幅の誤差の最小を示す。
【0158】(3) :フローチャートによる処理の説明 先ず、バーコード認識部8は、バーコードテーブル9に
初期値を設定する(S41)。この初期設定では、ST
ART_ADR=,INTERVAL=,WHITEM
AX=,BRACKMAX=,BARLEN=,BAR
_H=,GAP_Y=,GAP_MAX=,GAP_M
IN=,END_GAP_MAX=,START_GA
P_MAX=,CHARACTER_MAX=,CHA
RACTER_MIN=,END_CHAR_MAX
=,END_CHAR_MIN=,GAP_BAR_W
=,GAP_BAR_TRUE=初期値とする。
【0159】次に、バーコード認識部8は、y座標=S
TART_ADRとし(S42)、y座標<画像データ
の高さの条件を満たしているか否かを判定する(S4
3)。その結果、前記条件を満たしていなければ処理を
終了するが、前記条件を満たしていた場合は、イメージ
メモリ4から前記y座標の画像データを取り出す(S4
4)。
【0160】そして、バーコード認識部8は、画像デー
タから以下の条件を満たす部分を取り出す(S45)。
この場合、前記条件としては、(黒い部分≦BRACK
MAX)AND(白い部分≦WHITEMAX)AND
(黒と白の連続した部分≧BARLEN)AND(黒と
白の数≧或る閾値)である。
【0161】次に、バーコード認識部8は、S45の処
理で取り出した部分に前記条件を満たす部分があるか否
かを判定する(S46)。その結果、前記条件を満たし
た部分がなければ、y座標=y座標+INTERVAL
として(S47)、前記S43の処理から繰り返す。
【0162】しかし、前記S46の処理で前記条件を満
たす部分があると判定した場合は、(GAP_MAX*
13>T12>GAP_MIN*T13)AND(GAP_
MAX*T14>T13>GAP_MIN*T14)AND
(GAP_MAX*T15>T14>GAP_MIN*
15)となる部分をセンターバーとする(S49)。
【0163】次に、バーコード認識部8は、センターバ
ーがあるか否かを判定し(S50)、センターバーがな
ければ、y座標を上下にずらして画像データを取り出し
(±BAR_Hまで)(S48)、S45の処理から繰
り返す。
【0164】しかし、前記S50の処理でセンターバー
が有ると判定した場合は、センターバーより左で、
{(T0 >END_GAP_MAX*T1 )AND(G
AP_MAX*T2 >T1 >GAP_MIN*T2 )}
OR{(T0 >END_GAP_MAX*T2 )AND
(GAP_MAX*T2 >T1 >GAP_MIN*
2 )}となる部分をエンドバーとする(S51)。
【0165】そして、バーコード認識部8はエンドバー
が有るか否かを判定し(S52)、エンドバーが無けれ
ば前記S48の処理から繰り返す。しかし、エンドバー
が有った場合は、センターバーより右で{(T27>ST
ART_GAP_MAX*T 20)AND(GAP_MA
X*T25>T26>GAP_MIN*T27)}OR{(T
27>START_GAP_MAX*T25)AND(GA
P_MAX*T25>T 26>GAP_MIN*T27)}と
なる部分をスタートバーとする(S53)。
【0166】そして、バーコード認識部8はスタートバ
ーが有るか否かを判定し(S54)、スタートバーがな
ければ前記S48の処理から繰り返す。しかし、スター
トバーが有った場合には、第一キャラクタおよびエンド
キャラクタが(END_CHAR_MAX*T25>C21
>END_CHAR_MIN*T25)OR(END_C
HAR_MAX*T26>C21>END_CHAR_MI
N*T26)の条件を満たしているか否かを判定する(S
55)。
【0167】その結果、前記条件を満たしていない場合
は前記S48の処理から繰り返す。しかし、前記条件を
満たしていた場合は、更に、第二〜第六キャラクタがC
HARACTER_MAX*C21>C17>CHARAC
TER_MIN*C21の条件を満たしているか否かを判
定する(S56)。
【0168】その結果、前記条件を満たしていない場合
は前記S48の処理から繰り返す。しかし、前記条件を
満たしていた場合は、バーコード認識部8はキャラクタ
の値を読む(S57)。そして、パリティの値が正しい
か否かを判定し(S58)、正しくない場合はモジュー
ル数の小数点以下が0.5−GAP_BAR_W以上、
かつ0.5+GAP_BAR_W以下のキャラクタを取
り出す(S61)。
【0169】その後、取り出したキャラクタだけ行を変
えて(±BAR_Hまで)キャラクタの左右のずれは±
GAP_Y以下、モジュール数の小数点以下が、0.5
−GAP_BAR_TRUE以下または0.5+GAP
_BAR_TRUE以上となるキャラクタを探し(S6
2)、前記S58の処理から繰り返す。
【0170】また、前記S58の処理で、パリティの値
が正しい場合はモジュラス10が正しいか否かを判定し
(S59)、正しくないと判定した場合は前記S61の
処理から繰り返す。しかし、前記S59の処理でモジュ
ラス10が正しいと判定した場合は、バーコードが正し
く読めたと判定し(S60)、前記S47の処理から繰
り返す。
【0171】(実施例2の説明)図19は実施例2の処
理説明図、図20は実施例2の処理フローチャートであ
る。以下、図19、図20に基づいて実施例2を説明す
る。なお、図20のS71〜S83は各処理ステップを
示す。また、前記実施例1で示した図2〜図5は実施例
2でも同じである。従って、以下の説明では図2〜図5
を参照しながら説明する。
【0172】§1:処理の概要 実施例2の処理は、前記実施例1の複雑領域抽出部11
が行う複雑領域抽出処理は異なるが、他の処理は実質的
に実施例1と同じである。すなわち実施例2では、実施
例1のように、画像データの行毎に黒白の反復パターン
を抽出するのではなく、バーコードの各バーコードの並
びを捉えて複雑領域の抽出を行う。
【0173】すなわち、複雑領域抽出部11は、画像デ
ータ全体をラベリング処理(ラベリング処理自体は従来
一般に知られた技術なので説明は省略する)して画像の
連結部分を算出し、前記画像の連結部分から縦長の連結
成分を抽出する。そして、前記抽出した連結成分の中か
ら隣接する連結成分間の間隔が予め設定された閾値以下
の連結部分群を抽出する。
【0174】先ず、前記イメージメモリ4に格納された
イメージデータ(画像データ)全体を対象としてラベリ
ングを行い、黒画素が連結した連結成分を抽出する。こ
の連結成分の抽出方法は、例えば、先に本出願人が提案
した「ラベリング方式」(特開平7−93539号公報
参照)を使用して行う。
【0175】前記連結成分の抽出により、文字や実線な
ど黒画素が繋がった連結成分の固まり毎に区別され抽出
できる。バーコードの各バーも、図19のA図に示した
ように、各バーがAからNまで1つずつ別々に抽出され
る。但し、図19のB図に示したように、0、1、2、
3の文字や罫線(例えば、表の罫線)にもラベルが0〜
Sまで付加されるので、それらを区別する必要がある。
【0176】前記の処理で抽出した各ラベルに対して、
複雑領域の抽出では、各ラベルを囲む外接矩形が縦長で
ある閾値よりも小さいサイズの外接矩形に注目し、外接
矩形と外接矩形の水平方向の間隔が小さい外接矩形が連
続的に複数個並ぶ領域を複雑領域として抽出する。
【0177】前記のラベリングによる複雑領域の抽出で
は、イメージデータ(画像データ)の全領域から全ての
複雑領域を抽出する。そして、前記抽出した複雑領域の
全てに対して、それぞれバーコードの領域であるか否か
を以降の処理で判定していく。従って、以降の処理で
は、前記ラベリングで抽出した複雑領域の範囲のみをサ
ーチしてバーコードか否かの判定を行えば良く、実施例
1のようにイメージデータ全体をサーチする必要はな
い。
【0178】§2:フローチャートによるバーコード認
識部の処理説明・・・図20参照 図20は実施例2の処理フローチャートである。以下、
図20に基づいてバーコード認識部の処理を説明する。
なお、S71〜S83は各処理ステップを示す。
【0179】先ず、複雑領域抽出部11は、イメージメ
モリ4に格納されているイメージデータ(画像データ)
全体を対象としてラベリングを行い(S71)、複雑領
域の抽出を行う(S72)。この処理により前記イメー
ジデータに存在する全ての複雑領域を抽出する。以降、
前記抽出した複雑領域の範囲内の情報を基に前記抽出し
た複雑領域が真のバーコードか否かを判定する。
【0180】前記のようにして複雑領域を抽出した後、
センターバー/エンドバー/スタートバー抽出部12
は、前記抽出された複雑領域の中から或る行の画像デー
タを抽出し(S73)、その画像データからセンターバ
ーを抽出し、センターバーの有無の判定を行う(S7
4)。
【0181】その結果、センターバーが無い場合(抽出
できない場合)は、スキャンする行(x軸方向のライ
ン)をy軸方向に所定間隔で変えて前記S73の処理か
ら繰り返す。このようにして複雑領域からセンターバー
が抽出できた場合は、次にセンターバー/エンドバー/
スタートバー抽出部12は、エンドバーの抽出を行い、
エンドバーの有無の判定を行う(S75)。
【0182】その結果、エンドバーが無い場合(抽出で
きない場合)は、スキャンする行(x軸方向のライン)
をy軸方向に所定間隔で変えて前記S73の処理から繰
り返す。このようにして複雑領域からエンドバーが抽出
できた場合、センターバー/エンドバー/スタートバー
抽出部12はスタートバーの抽出を行い、スタートバー
の有無の判定を行う(S76)。
【0183】その結果、スタートバーが無い場合(抽出
できない場合)は、スキャンする行(x軸方向のライ
ン)をy軸方向に所定間隔で変えて前記S73の処理か
ら繰り返す。なお、センターバー/エンドバー/スター
トバー抽出部12は、センターバー/エンドバー/スタ
ートバーが抽出できなかった場合、信頼性の低い特定バ
ーに着目し、前記複雑領域を抽出した注目行の前後(特
定バーの上下方向)を探索して前記特定バーの線幅を再
度算出することにより、センターバー/エンドバー/ス
タートバーの抽出を行う。
【0184】前記のように、センターバー/エンドバー
/スタートバーが抽出できなかった場合、別の複雑領域
に対してセンターバー/エンドバー/スタートバーの抽
出を行い、その結果、センターバー/エンドバー/スタ
ートバーが見つかった場合は、キャラクタ数の認識部1
3がキャラクタコード領域の抽出を行う(S77)。
【0185】その結果、キャラクタコード領域が抽出で
きなかった場合は、スキャンする行(x軸方向の或るラ
イン)をy軸方向に所定間隔で変えて前記S73の処理
から繰り返す。前記のようにして、キャラクタコード領
域が抽出できた場合、キャラクタ数の認識部13はキャ
ラクタ数を認識し、種類の異なるバーコードでも対応で
きるようにする。例えば、JANコードでもキャラクタ
数が13桁と8桁のバーコードがあり、それらのパリテ
ィチェックの仕方が異なるので、必ず種類を区別してお
かなければならない。
【0186】次に、キャラクタの値/信頼性の認識部1
4は、キャラクタコードの値を認識し、その認識の信頼
度を算出する(S78)。この処理では、キャラクタの
値/信頼性の認識部14は、各キャラクタコードの値を
決定する時にバーの線幅が予め設定された閾値以下の値
をとっている箇所をワークメモリ5に格納しておき、更
にそれが構成要素となっているキャラクタコードも信頼
性の低いキャラクタコードとしてワークメモリ5に格納
しておく。
【0187】そして、各キャラクタコードの値が求まる
と、セキュリティチェック部15ではセキュリティチェ
ックを行うが、先ずパリティチェックを行い(S7
9)、次にプリフィクスキャラクタチェックを行い(S
80)、最後にモジュラス10チェックを行う(S8
1)。
【0188】前記セキュリティチェックで矛盾がある場
合は、セキュリティチェック部15からキャラクタの値
/信頼性の認識部14へフィードバックし、キャラクタ
の値/信頼性の認識部14が信頼度による再キャラクタ
コードの認識を行う(S83)。
【0189】この処理では、キャラクタの値/信頼性の
認識部14は前記ワークメモリ5に記憶しておいた信頼
性の低いキャラクタコードの特定バーに着目し、その特
定バーの上下方向(複雑領域を抽出する際の注目行の前
後)を探索して真のキャラクタコードを見つける。
【0190】その後、再度セキュリティチェック部15
がセキュリティチェックを行い、どうしても矛盾が生じ
る場合には、複雑領域抽出部11へフィードバックし
て、前記S73の処理から繰り返す。
【0191】前記のようにして、セキュリティチェック
部15でのセキュリティチェックで矛盾がない場合には
その領域をバーコードと断定し、バーコードの位置と認
識結果を出力メモリ6に出力する。そして、イメージメ
モリ4に格納されたイメージデータ(画像データ)上の
バーコードの認識が全て終了していたら(S82)、全
ての処理を終了するが、全てのバーコードが抽出されて
いない場合は、前記S73の処理から繰り返す。以上の
ようにして、低品質なバーコード画像でも信頼性の高い
バーコードの抽出、及び認識ができる。
【0192】(他の実施例)以上実施例について説明し
たが、本発明は次のようにしても実施可能である。 (1) :抽出イメージデータ(画像データ)をスキャンす
る場合、副走査方向のスキャン開始ラインを帳票の最初
から最後までサーチしても良いが、帳票上に印刷されて
いるバーコードの位置は、ある程度規則性があるので
(最上端、最下端にはない)、スキャンする副走査方向
の幅を狭くしても良い。このようにすれば、スキャンす
る回数が少なくなるため、より高速にバーコードの抽出
を行うことができる。
【0193】(2) :バーコード認識装置は、前記実施例
のようにOCR装置で実現しても良いが、他の同様な装
置でも実現可能である。例えば、パーソナルコンピュー
タ、ワークステーション等のコンピュータにイメージス
キャナを接続し、このイメージスキャナで帳票の情報を
読み込んだ際の帳票イメージデータを2帳票のデータに
変換した後、イメージメモリに格納する。
【0194】そして、前記実施例と同様に、イメージメ
モリの帳票イメージデータからバーコードの抽出を行う
ようにしても良い。また、イメージデータは、ファクシ
ミリ装置等から入力したイメージデータでも同様に実施
可能である。
【0195】
【発明の効果】以上説明したように、本発明によれば次
のような効果がある。 (1) :入力した画像データから、画像データの任意の位
置にあるバーコードを自動的に抽出して認識することが
できる。しかも、低品質の画像データでも高信頼度でバ
ーコード抽出、及び認識処理ができる。
【0196】(2) :画像データの任意の位置にあるバー
コードを抽出する場合、画像データから複雑領域を抽出
した後、バーコード特有のセンターバー/エンドバー/
スタートバーを抽出するだけでなく、キャラクタコード
の認識、及びセキュリティチェックを行うので、例え低
品質の画像データであっても常に信頼性の高いバーコー
ドの抽出、及び認識ができる。
【0197】(3) :画像データの任意の位置にあるバー
コードを自動的に抽出して認識することができるので、
例えば、バーコードが印刷された電気料金、電話料金等
の公共料金の払込帳票をイメージスキャナで読み込め
ば、前記帳票のバーコードを自動的に抽出して認識する
ことができる。
【0198】このため、バーコードを利用した公共料金
の払込が自動的に、かつ簡単にできる。また、従来のよ
うに、バーコードリーダにより手作業で金額集計を行う
必要がなくなるから、行員への負担が軽くなる。
【0199】(4) :入力した画像データから、画像デー
タの任意の位置にあるバーコードを自動的に抽出して認
識することができるから、例えば、1つの帳票から読み
取った画像データに複数のバーコードがある場合でも、
複数のバーコードをそれぞれ独立して自動的に抽出する
ことができる。従って、複数のバーコードが印刷された
帳票に対し、前記複数のバーコードをそれぞれ認識して
処理を行うような場合には、特に処理速度の向上が期待
できる。
【0200】例えば、従来のPOS装置では、バーコー
ドリーダにより個々のバーコードをスキャンする必要が
あり手間と時間がかかるが、本発明のバーコード認識装
置では、前記のように画像データから自動的にバーコー
ドの抽出、及び認識ができるから、手間も時間もかから
ず、処理速度も速い。
【0201】前記効果の外、各請求項に対応して次のよ
うな効果がある。 (5) :請求項1では、複雑領域抽出部と、センターバー
/エンドバー/スタートバー抽出部と、キャラクタコー
ド認識部と、セキュリティチェック部を備えている。
【0202】従って、画像処理でバーコードを見つける
だけでなく、バーコードの値を認識し、かつバーコード
の値のセキュリティチェックを行って矛盾ないバーコー
ドを抽出している。このため、低品質な画像でも信頼性
の高いバーコード抽出が可能になる。
【0203】(6) :請求項2では、センターバー/エン
ドバー/スタートバー抽出部は、複雑領域からセンター
バー/エンドバー/スタートバーを抽出する際、先ずセ
ンターバーを抽出し、その後スタートバーとエンドバー
を抽出するように構成している。
【0204】従って、バーコードの左端や右端付近に罫
線や文字などの別の画像や雑音が存在する場合に、スタ
ートバーやエンドバーを誤って抽出してしまうことがあ
る。しかし、センターバーを最初に抽出するので、安
定、かつ無駄な処理なく効率的にバーコードの抽出を行
うことができる。
【0205】(7) :請求項3では、キャラクタコード認
識部は、前記複雑領域からキャラクタコード領域を抽出
し、その領域からキャラクタ数を認識するキャラクタ数
の認識部と、前記抽出したキャラクタコード領域の各キ
ャラクタコードの値を認識し、かつ、その認識の信頼度
を求めるキャラクタの値/信頼性の認識部を備えてい
る。
【0206】従って、画像データの任意の位置にあるバ
ーコードを抽出する場合、画像データから複雑領域を抽
出した後、バーコード特有のセンターバー/エンドバー
/スタートバーを抽出するだけでなく、キャラクタコー
ドの数を認識すると共に、キャラクタコードの値を認識
し、かつ認識の信頼度を求めているので、低品質の画像
データであっても常に信頼性の高いバーコードの抽出、
及び認識ができる。
【0207】(8) :請求項4では、セキュリティチェッ
ク部は、バーコードのパリティチェックを利用してセキ
ュリティチェックを行うように構成している。従って、
パリティチェックにより確実なセキュリティチェックを
行うことができる。その結果、低品質の画像データであ
っても常に信頼性の高いバーコードの抽出、及び認識が
できる。
【0208】(9) :請求項5では、セキュリティチェッ
ク部は、バーコードのプリフィクスキャラクタのチェッ
クによりセキュリティチェックを行うように構成してい
る。従って、プリフィクスキャラクタのチェックにより
確実なセキュリティチェックを行うことができる。その
結果、低品質の画像データであっても常に信頼性の高い
バーコードの抽出、及び認識ができる。
【0209】(10):請求項6では、セキュリティチェッ
ク部は、バーコードのモジュラス10を利用してセキュ
リティチェックを行うように構成している。従って、モ
ジュラス10のチェックにより確実なセキュリティチェ
ックを行うことができる。その結果、低品質の画像デー
タであっても常に信頼性の高いバーコードの抽出、及び
認識ができる。
【0210】(11):請求項7では、セキュリティチェッ
ク部でのセキュリティチェック結果で矛盾があり正しく
なかった場合、前記キャラクタコード認識部は、信頼性
の低いキャラクタコードについて再度キャラクタコード
の認識を行い、その認識結果に基づきセキュリティチェ
ック部が再度セキュリティチェックを行うことにより、
低品質なバーコードの抽出を行うように構成している。
【0211】従って、低解像度の画像でも常に信頼性の
高いバーコードの抽出、及び認識を行うことが可能にな
る。 (12):請求項8では、キャラクタコード認識部は、キャ
ラクタコードの値を認識する際、キャラクタコードを構
成するバーの線幅が予め設定された閾値以下の値をとっ
ている箇所を記憶すると共に、その箇所を含むキャラク
タを信頼性の低いキャラクタとして記憶しておき、前記
セキュリティチェック結果で矛盾があり正しくなかった
場合、前記キャラクタコード認識部は、記憶しておいた
前記信頼度の低いキャラクタコードの或る特定バーだけ
に着目し、前記複雑領域を抽出した注目行の前後(特定
バーの上下方向)を探索して前記バーの線幅を再度算出
し、他のキャラクタコードの可能性を確認しながらセキ
ュリティチェックによる矛盾のないキャラクタコード列
を求めるように構成している。
【0212】従って、セキュリティチェックで矛盾が生
じた際、信頼度の低い場所だけを再処理すれば良く、処
理効率が向上する。また、セキュリティチェックで矛盾
が生じた場合に、全キャラクタコードを複雑領域の別の
行で算出すると、信頼度の低い場所が別の列に移り、安
定にバーコードの抽出ができないこともあるが、信頼度
の低い列だけを再度算出することにより、その問題が解
消できる。
【0213】(13):請求項9では、センターバー/エン
ドバー/スタートバー抽出部は、センターバー/エンド
バー/スタートバーが抽出できなかった場合、信頼性の
低い特定のバーに着目し、前記複雑領域を抽出した注目
行の前後(特定バーの上下方向)を探索して前記特定バ
ーの線幅を再度算出することにより、センターバー/エ
ンドバー/スタートバーの抽出を行うように構成した。
【0214】従って、低品質な画像の場合、一度でセン
ターバー/エンドバー/スタートバーの抽出ができなく
ても、再度の処理により確実に抽出することができる。 (14):請求項10では、セキュリティチェック部でのセ
キュリティチェック機能を使い、前記各部にフィードバ
ックしながらバーコードの抽出、及び認識を行う。従っ
て、低品質な画像でも信頼性の高いバーコードの抽出が
できる。
【0215】(15):請求項11では、複雑領域抽出部
は、画像データ全体をラベリング処理して画像の連結部
分を算出する手段と、前記画像の連結部分から縦長の連
結成分を抽出する手段と、前記抽出した連結成分の中か
ら隣接する連結成分間の間隔が予め設定された閾値以下
の連結部分群を抽出する手段を備えている。
【0216】従って、罫線抽出等のレイアウト解析や文
字切り出し等を行うために処理するラベリングの処理結
果をそのまま流用してバーコードの候補領域である複雑
領域を抽出することができるから処理が効率的に行え
る。
【0217】また、ラベリングによる複雑領域の抽出で
は、画像データの全領域から全ての複雑領域を抽出し、
前記抽出した複雑領域の全てに対して、それぞれバーコ
ードの領域であるか否かを以降の処理で判定していく。
従って、以降の処理では、前記ラベリングで抽出した複
雑領域の範囲のみをサーチしてバーコードか否かの判定
を行えば良く、画像データ全体をサーチする必要はな
い。このため、処理速度の向上が実現する。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】実施例1の装置構成図である。
【図3】図2の一部詳細図である。
【図4】実施例1におけるバーコード認識部の処理概要
説明図である。
【図5】実施例1における帳票例を示した図である。
【図6】実施例1のバーコード認識部の処理フローチャ
ートである。
【図7】実施例1のバーコード認識部の処理説明図(そ
の1)である。
【図8】実施例1のバーコード認識部の処理説明図(そ
の2)である。
【図9】実施例1のバーコード認識部の処理説明図(そ
の3)である。
【図10】実施例1のバーコード認識部の処理説明図
(その4)である。
【図11】実施例1のバーコード認識部の処理説明図
(その5)である。
【図12】実施例1のバーコード認識部の処理説明図
(その6)である。
【図13】実施例1におけるバーコードの名称説明図で
ある。
【図14】実施例1における記号説明図である。
【図15】実施例1の詳細な処理フローチャート(その
1)である。
【図16】実施例1の詳細な処理フローチャート(その
2)である。
【図17】実施例1の詳細な処理フローチャート(その
3)である。
【図18】実施例1の詳細な処理フローチャート(その
4)である。
【図19】実施例2の処理説明図である。
【図20】実施例2の処理フローチャートである。
【図21】従来のPOS端末装置によるバーコード認識
処理の説明図である。
【図22】従来のOCR装置によるバーコード認識処理
の説明図である。
【図23】従来例3の装置構成図である。
【図24】従来例3におけるバーコードの説明図であ
る。
【図25】従来例3の処理フローチャートである。
【図26】従来例3の処理説明図である。
【符号の説明】
4A 画像メモリ 11 複雑領域抽出部 12 センターバー/エンドバー/スタートバー抽出部 13 キャラクタ数の認識部 14 キャラクタの値/信頼性の認識部 15 セキュリティチェック部 17 キャラクタコード認識部 20 複雑領域抽出用テーブル 21 センターバー/エンドバー/スタートバーの認識
テーブル 22 キャラクタ認識テーブル 23 パリティチェックテーブル 24 プリフィクスキャラクタチェックテーブル 25 モジュラスチェックテーブル

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 画像データの任意の位置にあるバーコー
    ドを抽出して認識するバーコード認識装置であって、 前記画像データから、予め設定された閾値以内の間隔で
    黒領域と白領域が交互に現れる複雑領域をバーコードの
    候補領域として抽出する複雑領域抽出部と、 前記複雑領域抽出部が抽出した複雑領域からバーコード
    特有のセンターバー/エンドバー/スタートバーを抽出
    するセンターバー/エンドバー/スタートバー抽出部
    と、 前記センターバー/エンドバー/スタートバーが抽出で
    きた場合に、その複雑領域からキャラクタコード領域を
    抽出してキャラクタコードの認識を行うキャラクタコー
    ド認識部と、 前記キャラクタコード認識部の認識結果を基にセキュリ
    ティチェックを行い、その結果に矛盾がなければバーコ
    ードと断定してバーコード情報を出力するセキュリティ
    チェック部を備えていることを特徴としたバーコード認
    識装置。
  2. 【請求項2】 前記センターバー/エンドバー/スター
    トバー抽出部は、前記複雑領域からセンターバー/エン
    ドバー/スタートバーを抽出する際、先ずセンターバー
    を抽出し、その後スタートバーとエンドバーを抽出する
    ことを特徴とした請求項1記載のバーコード認識装置。
  3. 【請求項3】 前記キャラクタコード認識部は、前記複
    雑領域からキャラクタコード領域を抽出し、その領域か
    らキャラクタ数を認識するキャラクタ数の認識部と、 前記抽出したキャラクタコード領域の各キャラクタの値
    を認識し、かつ、その認識の信頼度を求めるキャラクタ
    の値/信頼性の認識部を備えていることを特徴とする請
    求項1記載のバーコード認識装置。
  4. 【請求項4】 前記セキュリティチェック部は、バーコ
    ードのパリティチェックを利用してセキュリティチェッ
    クを行うことを特徴とする請求項1記載のバーコード認
    識装置。
  5. 【請求項5】 前記セキュリティチェック部は、バーコ
    ードのプリフィクスキャラクタのチェックによりセキュ
    リティチェックを行うことを特徴とする請求項1記載の
    バーコード認識装置。
  6. 【請求項6】 前記セキュリティチェック部は、バーコ
    ードのモジュラス10チェックを利用してセキュリティ
    チェックを行うことを特徴とする請求項1記載のバーコ
    ード認識装置。
  7. 【請求項7】 前記セキュリティチェック部のセキュリ
    ティチェックで矛盾があった場合、前記キャラクタコー
    ド認識部は信頼性の低いキャラクタコードについて再度
    キャラクタコードの認識を行い、その認識結果に基づき
    セキュリティチェック部が再度セキュリティチェックを
    行うことにより、低品質なバーコードの抽出を行うこと
    を特徴とした請求項1記載のバーコード認識装置。
  8. 【請求項8】 前記キャラクタコード認識部は、キャラ
    クタの値を認識する際、キャラクタコードを構成する特
    定バーの線幅が予め設定された閾値以下の値をとってい
    る箇所を記憶すると共に、その箇所を含むキャラクタコ
    ードを信頼性の低いキャラクタコードとして記憶してお
    き、 前記セキュリティチェックで矛盾があった場合、前記キ
    ャラクタコード認識部は、記憶しておいた前記信頼度の
    低いキャラクタコードの特定バーだけに着目し、前記複
    雑領域を抽出した注目行の前後(特定バーの上下方向)
    を探索して前記特定バーの線幅を再度算出し、他のキャ
    ラクタの可能性を確認しながらセキュリティチェックに
    よる矛盾のないキャラクタコード列を求めることを特徴
    とした請求項1記載のバーコード認識装置。
  9. 【請求項9】 前記センターバー/エンドバー/スター
    トバー抽出部は、センターバー/エンドバー/スタート
    バーが抽出できなかった場合、信頼性の低い特定バーに
    着目し、前記複雑領域を抽出した注目行の前後(特定バ
    ーの上下方向)を探索して前記特定バーの線幅を再度算
    出することにより、センターバー/エンドバー/スター
    トバーの抽出を行うことを特徴とした請求項1記載のバ
    ーコード認識装置。
  10. 【請求項10】 前記セキュリティチェック部のセキュ
    リティチェック機能を使い、前記各部にフィードバック
    しながらバーコードの抽出、及び認識を行うことを特徴
    とした請求項1記載のバーコード認識装置。
  11. 【請求項11】 前記複雑領域抽出部は、画像データ全
    体をラベリング処理して画像の連結部分を算出する手段
    と、前記画像の連結部分から縦長の連結成分を抽出する
    手段と、前記抽出した連結成分の中から隣接する連結成
    分間の間隔が予め設定された閾値以下の連結部分群を抽
    出する手段を備えていることを特徴とした請求項1記載
    のバーコード認識装置。
JP17082395A 1995-07-06 1995-07-06 バーコード認識装置 Expired - Fee Related JP3376175B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17082395A JP3376175B2 (ja) 1995-07-06 1995-07-06 バーコード認識装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17082395A JP3376175B2 (ja) 1995-07-06 1995-07-06 バーコード認識装置

Publications (2)

Publication Number Publication Date
JPH0922437A true JPH0922437A (ja) 1997-01-21
JP3376175B2 JP3376175B2 (ja) 2003-02-10

Family

ID=15911999

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17082395A Expired - Fee Related JP3376175B2 (ja) 1995-07-06 1995-07-06 バーコード認識装置

Country Status (1)

Country Link
JP (1) JP3376175B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002279196A (ja) * 2001-03-16 2002-09-27 Daiwa Securities Group Inc 帳票保存システム及び帳票保存期間表示用タグ
WO2004055713A1 (ja) * 2002-12-17 2004-07-01 Sharp Kabushiki Kaisha バーコード認識装置
KR100456628B1 (ko) * 2001-12-28 2004-11-10 한국전자통신연구원 물류 정보 자동식별 처리시스템 및 그 방법
CN100354144C (zh) * 2004-11-05 2007-12-12 中国印钞造币总公司 增值税票印码质量在线检测装置
KR100791705B1 (ko) * 2005-06-16 2008-01-03 샤프 가부시키가이샤 바코드 인식 장치
KR100791704B1 (ko) * 2007-10-16 2008-01-07 샤프 가부시키가이샤 바코드 인식 장치
JP2012018494A (ja) * 2010-07-07 2012-01-26 Keyence Corp バーコードシンボル読取装置、バーコードシンボル読取方法及びコンピュータプログラム
JP2019049516A (ja) * 2017-09-12 2019-03-28 富士フイルム株式会社 臨床検査装置及びシステム
US10726223B2 (en) 2016-10-24 2020-07-28 Alibaba Group Holding Limited Method and apparatus for barcode identifcation

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002279196A (ja) * 2001-03-16 2002-09-27 Daiwa Securities Group Inc 帳票保存システム及び帳票保存期間表示用タグ
KR100456628B1 (ko) * 2001-12-28 2004-11-10 한국전자통신연구원 물류 정보 자동식별 처리시스템 및 그 방법
WO2004055713A1 (ja) * 2002-12-17 2004-07-01 Sharp Kabushiki Kaisha バーコード認識装置
US7562820B2 (en) 2002-12-17 2009-07-21 Sharp Kabushiki Kaisha Barcode recognition apparatus
CN100354144C (zh) * 2004-11-05 2007-12-12 中国印钞造币总公司 增值税票印码质量在线检测装置
KR100791705B1 (ko) * 2005-06-16 2008-01-03 샤프 가부시키가이샤 바코드 인식 장치
KR100791704B1 (ko) * 2007-10-16 2008-01-07 샤프 가부시키가이샤 바코드 인식 장치
JP2012018494A (ja) * 2010-07-07 2012-01-26 Keyence Corp バーコードシンボル読取装置、バーコードシンボル読取方法及びコンピュータプログラム
US10726223B2 (en) 2016-10-24 2020-07-28 Alibaba Group Holding Limited Method and apparatus for barcode identifcation
JP2019049516A (ja) * 2017-09-12 2019-03-28 富士フイルム株式会社 臨床検査装置及びシステム

Also Published As

Publication number Publication date
JP3376175B2 (ja) 2003-02-10

Similar Documents

Publication Publication Date Title
US20020037097A1 (en) Coupon recognition system
US5101448A (en) Method and apparatus for processing a document by utilizing an image
EP2569930B1 (en) Segmentation of a word bitmap into individual characters or glyphs during an ocr process
US5164996A (en) Optical character recognition by detecting geo features
JPH07120385B2 (ja) 光学的読取り方法
JP3376175B2 (ja) バーコード認識装置
JPH08305796A (ja) パターン抽出装置、パターン再認識用テーブル作成装置及びパターン認識装置
JP3411472B2 (ja) パターン抽出装置
JP3936436B2 (ja) 表認識方法
JPH1031716A (ja) 文字行抽出方法および装置
JP3335265B2 (ja) バーコード抽出装置
JP4853313B2 (ja) 文字認識装置
JP3022459B2 (ja) 帳票識別登録装置
JP3673616B2 (ja) 商品券識別方法及び装置
JP3370402B2 (ja) 文字認識装置
CN109409370A (zh) 一种远程桌面字符识别方法和装置
JP3202402B2 (ja) イメージ入力されたバーコードの認識処理方法
JP3437296B2 (ja) 文字列高速抽出装置
JPH02138674A (ja) 文書処理方法及び装置
JPH10105641A (ja) 機械コード検出装置と機械コード検出方法
JP6544124B2 (ja) 帳票識別装置、帳票識別方法及びプログラム
JPH11316797A (ja) 文書画像の領域識別方法および装置
JP3199033B2 (ja) 光学式文字読取方法、及び光学式文字読取装置
JP2001357350A (ja) 一次元バーコードの位置検出方法および一次元バーコードの位置検出装置
JP2514660B2 (ja) 光学文字読取装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20020625

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20021112

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

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091129

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20111129

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20111129

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20121129

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20121129

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20131129

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees