(57)【要約】【課題】読み取られたバーコードの各バーに部分的な太りや細りがある場合にも、できるだけデコードができる可能性を高める。【解決手段】バーコード画像に対して複数の走査ラインを設定し、それら各走査ラインに沿ってデコードを行う。そして、そのデコード結果について、キャラクタごとに多数決を取る。最も多いデコート結果の値を、当該キャラクタのデコード結果として採用する。多数決で決まらないキャラクタがある場合、走査ラインを追加し、その追加した走査ラインに沿ってそのキャラクタをデコードし、そのデコード結果を加えて再度多数決を取る。多数決でデコード結果が決まるまで、走査ラインを追加する。【選択図】図４
2008021009.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードするデコード部と、
前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する決定部と、
を備えるバーコード認識装置。
【請求項２】
前記決定部は、前記複数の走査ラインにおいて、あるキャラクタ位置のコード部分についての各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合のキャラクタが複数存在する場合、そのキャラクタ位置について、最大割合を占めるキャラクタが１つになるまで、前記複数の走査ラインとは前記バーの長手方向について異なる位置に更なる１以上の走査ラインを追加して、追加した走査ラインについて前記コード部分のデコードを前記デコード部に行わせる、
ことを特徴とする請求項１記載のバーコード認識装置。
【請求項３】
前記決定部は、前記デコード部による前記複数の走査ラインの各々についてのデコード結果のキャラクタ数をそれぞれ求め、前記各走査ラインについてのキャラクタ数のうちの最大頻度のキャラクタ数に対応する走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定する、
ことを特徴とする請求項１記載のバーコード認識装置。
【請求項４】
複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードし、
前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する、
バーコード認識方法。
【請求項５】
複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードし、
前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１次元バーコードの認識のための装置に関する。
【背景技術】
【０００２】
１次元バーコード（以下、単に「バーコード」と呼ぶ）を認識しやすくするため、バーコード読取結果を最適な閾値で二値化する手法は数多く提案されている。しかし近年、大量の紙文書の電子化が進むにつれ、データ量を小さくするために、帳票などの画像は二値・低解像度でスキャンされる場合が多い。このように二値化されて入ってくる画像の場合、文字や写真などに最適化される場合が多く、バーコードに適した閾値で二値化をされているとは限らない。その場合、個々のバーが部分的に太ったり細ったりしていることが多い。
【０００３】
二値化されている場合に限ることではないが、このように部分的に太りや細りのあるバーコードの認識では、認識精度を上げるために多数決の手法を採る従来技術が知られている。
【０００４】
例えば、特許文献１に示される装置は、二値で入力されたバーコード画像において、バー長さ方向の各ラインを、それぞれそのライン上の所定画素数のうち予め設定した割合以上の画素が黒画素なら黒ラインとし、それに満たない場合は白ラインとしている。黒ラインがバー配列方向に連続する数によりその黒バーの太さが判定され、同様にして白バーの太さが判定される。これは、多数決により各ラインの白黒を判定するものである。
【０００５】
また特許文献２に示される手法では、複数個の同一のバーコードを読み取った後、バーコード認識手段にて前記読み取ったバーコードから文字コードを認識する。その後、文字コード正否判断手段において認識された複数の文字コードを比較し、過半数の文字コードが同一であるとき、その同一の文字コードを正しいと判断する。
【０００６】
また特許文献３に示される装置は、バーの配列方向に延びる走査ラインを複数設定し、各走査ラインに沿ってバーコードをデコードし、各走査ラインのデコード結果の多数決を採る。また、走査ライン単位でチェックディジットによるバーコード検査し、バーコードの成立条件が満たされない場合、２つの走査ラインを組み合わせ、バーコード規格の成立条件によって検査し、２つの走査ラインの対応するブロックの間で、成立条件を満たしていない不成立ブロックを満たしている成立ブロックに置き換えてバーコードイメージを合成し、バーコード成立条件による検査を施す。
【０００７】
特許文献４には、バーコード・シンボルのバーとスペースに実質的に平行な第１の走査線を選択するステップと、上記第１の走査線に沿って上記シンボルを走査して第１の値を発生するステップと、バーコード・シンボルのバーとスペースに実質的に平行で、且つ上記第１の走査線との距離がイメージのピクセルの幅よりも小さい第２の走査線を選択するステップと、上記第２の走査線に沿って上記シンボルを走査して第２の値を発生するステップと、上記第１の値と第２の値に従って上記シンボルをデコードするステップと、からなるピクセル・イメージのバーコード・シンボルを読み取る方法、が記載されている。
【０００８】
特許文献５には、バーコード読取り装置と関連部品が、異なる光反射率の一連の直線要素から成るバーコード記号を走査し、前記バーコード記号の表現を生成し、前記バーコード記号の表現を復号して復号可能な合法文字（復号不能な文字は全て非合法）を含む合法文字メッセージを作ろうと試みるためにバーコード記号を復号する方法であって、前記記号を横切る第１走査経路に対応するバーコード記号の第１表現を保存すること、前記記号を横切る第２走査経路に対応するバーコード記号の第２表現を保存すること、および前記第１表現の非合法文字の少なくとも１個の要素を前記第２表現の対応する文字の少なくとも１個の要素で置換することにより、改善された表現を作ること、の諸ステップから成る方法、が開示されている。
【０００９】
【特許文献１】特開２００５−１６５９４８号公報
【特許文献２】特開２０００−２５１０１１号公報
【特許文献３】特開２００１−０４３３００号公報
【特許文献４】特開平１０−１８７８７６号公報
【特許文献５】特開平０３−１８９７８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１の方式では、図１のバー１００のようにバーの長手方向に沿った大半の部分でバーが細っている場合（あるいは過半数で太っている場合）、その影響を受けてバーの太さが誤判定されてしまい、これがデコードの失敗に繋がる。特に、バーコード画像が低解像度である場合、このような太りや細りの悪影響を受けやすい。
【００１１】
また、特許文献２のように文字コードごとの多数決を採る方式では、各バーの太り、細りにより、走査ラインをどのようにとってもバーコード全体をデコードできない場合がある。例えば、図２に示すバーコードでは、例えばバー１００とバー１０２とは、それぞれバーの長手方向における異なる位置で細っているため、走査ラインをＡ，Ｂいずれのラインにとっても、走査ラインに沿ってバーコード全体をデコードすることはできない。例えばラインＡでは左から４つ目のキャラクタがデコード不可となっており、ラインＢでは左端のキャラクタがデコード不可となっている。各バーの太りや細りの組合せが悪いと、走査ラインをどのようにとってもバーコード全体をデコードできなくなる。特に、低解像度の画像ほど、そのような不具合が顕著になる。
【００１２】
また、特許文献３の技術では、成立ブロックは、同文献の段落（０００２）や（００１５）、（００１６）の記載からすれば、バー（黒バー）及びスペース（白バー）の幅が適切か否かにより判別している。そして、段落（００１４）によれば、不成立ブロックを成立ブロックに入れ換えた後、更にチェックディジットによりバーコード全体での成立性を判定している。結局、特許文献３の技術は、チェックディジットが含まれるバーコードでないと、最終的に適切なコード認識ができない。
【００１３】
特許文献４及び５の方法では、２つの走査ラインにおいて同じ文字がそれぞれ異なる値にデコードされた場合に、どちらが適切かを決定することができない。
【００１４】
本発明は、チェックディジット等の付加的な情報が含まれていないバーコードについても、デコードできる可能性を高めることを目的とする。
【課題を解決するための手段】
【００１５】
（１）本発明の１つの側面では、複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードするデコード部と、前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する決定部と、を備えるバーコード認識装置を提供する。
【００１６】
（２）１つの態様では、上記構成（１）において、前記決定部は、前記複数の走査ラインにおいて、あるキャラクタ位置のコード部分についての各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合のキャラクタが複数存在する場合、そのキャラクタ位置について、最大割合を占めるキャラクタが１つになるまで、前記複数の走査ラインとは前記バーの長手方向について異なる位置に更なる１以上の走査ラインを追加して、追加した走査ラインについて前記コード部分のデコードを前記デコード部に行わせる。
【００１７】
（３）別の態様では、上記構成（１）において、前記決定部は、前記デコード部による前記複数の走査ラインの各々についてのデコード結果のキャラクタ数をそれぞれ求め、前記各走査ラインについてのキャラクタ数のうちの最大頻度のキャラクタ数に対応する走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定する。
【００１８】
（４）本発明の別の側面では、複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードし、前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する、バーコード認識方法を提供する。
【００１９】
（５）本発明の更に別の側面では、複数のキャラクタを含んだバーコードの画像を、バーの長手方向について異なる位置に設定された複数の走査ラインの各々に沿ってそれぞれデコードし、前記バーコードの画像のキャラクタ位置ごとに、そのキャラクタ位置のコード部分について前記デコード部が求めた各走査ラインのデコード結果において、デコードが成功したキャラクタのうち最大割合を占めるキャラクタに基づきそのコード部分のキャラクタを決定することで、前記バーコードが表すキャラクタの列を決定する、処理をコンピュータに実行させるためのプログラムを提供する。
【発明の効果】
【００２０】
上記構成（１）、（４）及び（５）によれば、チェックディジット等の付加的な情報が含まれていないバーコードについても、デコードできる可能性を高めることができる。
【００２１】
上記構成（２）によれば、最初に用いた走査ラインだけではデコード結果を決定できないコード部分に対しても、デコード結果の決定が可能になる。
【００２２】
上記構成（３）によれば、例えばバーコードの画像が走査ラインに対して傾いている場合でも、適切なデコードが可能になる。
【発明を実施するための最良の形態】
【００２３】
以下、バーコード認識のための本実施形態の処理手順を、図３を参照して説明する。
【００２４】
まず、本実施形態のバーコード認識装置に対してバーコードを含む画像が入力される（Ｓ１）。バーコード認識装置は、バーコードを含む領域を切り出す（Ｓ２）。バーコードを含む領域の切り出しは、公知の手法を含む様々な手法を用いて行うことができる。例えば、画像全体の中でバーコードを含む領域をユーザがあらかじめ指定しておいてもよい。また、一方向に白黒が所定の周波数範囲で繰り返されている領域を、バーコードを含む領域として切り出してもよい。また、特開平５−３２４８９６号公報又は特開平８−９６０５９号公報などに示される手法を用いてもよい。
【００２５】
次にバーコード認識装置は、あらかじめ設定された複数の走査ラインから１つを選び、その走査ラインに沿ってバーコード領域の画像をデコードする（Ｓ３）。ここでバーコード認識装置には、バーコード領域の縦方向に沿って異なる所定数（例えば８個）の位置が、走査ラインの位置として登録されている。走査ラインは、そのように登録された各位置から、それぞれ横方向に延びるラインである。
【００２６】
なお、ここでいう縦方向は、原理的にはバーコードを構成するバーの長手方向であり、横方向は原理的にはそれらバーが配列する方向（バー配列方向と呼ぶ）である。ただし、現実には、バーコードが印刷された紙を読み取る際の紙の傾きなどによる誤差があるので、縦方向、横方向は、バーの長手方向、バー配列方向に厳密に等しくなるとは限らず、その誤差の分だけ異なった方向になることもある。
【００２７】
ステップＳ３で用いる、各走査ラインの縦方向についての位置は、隣り合う走査ライン同士の距離を所定値以上になるようにあらかじめ定めておく。走査ライン同士があまり近いと、後述する多数決の際に偏りが生じる可能性が高くなるからである。走査ラインは、例えば、バーコード領域の縦方向について均等な間隔で分布するようにする。
【００２８】
バーコード認識装置は、あらかじめ設定された複数の走査ラインのすべてについて、Ｓ３のデコード処理を繰り返す（Ｓ４）。
【００２９】
デコード処理の具体例を、図４に示す。図４の例では、(a)に示すように、Ｓ３及びＳ４で５つの走査ラインについてデコードを行っている。それら５ラインについてのデコード結果は、(b)に示すようなものとなる。ここで、“*”はスタートコード及びストップコードを示し、“?”はデコード不可能であることを示す。キャラクタがデコード不可能であるとは、バーコード画像のうちそのキャラクタの位置に該当する部分において、太いバーと細いバーの配列パターンが、バーコードで用いるどのキャラクタ（例えば「1,2,3,4,5,6,7,8,9,0,*」）にも対応しないことである。
【００３０】
また図４の例では、バーコードが走査ラインの方向に対して少し傾いているので、縦方向についての上端近傍に設定された１番目の走査ラインでは、５キャラクタ目（スタートコードを含む）までしかデコードされていない。これに対し、残りの２〜５番目の走査ラインについては、１１キャラクタ（スタートコード及びストップコードを含む）がデコードされている。
【００３１】
バーコード認識装置は、Ｓ３及びＳ４で求めた所定数の走査ラインのデコード結果において、最大頻度のキャラクタ数を求め、これを入力されたバーコードのキャラクタ数であると判定する（Ｓ５）。図４の例では、１１が最大頻度である。バーコード認識装置は、この最大頻度のキャラクタ数に対応する走査ラインを抽出し（Ｓ６）、それら抽出した走査ラインのデコード結果の間で、キャラクタごとにデコード結果の多数決を取る（Ｓ７）。Ｓ７の多数決では、デコード不可能（“?”）となったものは除き、デコードできたキャラクタ値の中で、最大数となるキャラクタ値を最終的に当該キャラクタのデコード結果とする。図４の例では、２〜４番目の走査ラインのデコード結果について、キャラクタごとの多数決を取ることになる。左から１〜５番目、７〜１１番目のキャラクタについては、多数決でデコード結果が１つに確定できる。例えば左から５番目のキャラクタは、“4”が３回、“2”が１回なので、デコード結果は“4”に決定される。
【００３２】
これに対し左から６番目のキャラクタは、“5”が１回、“8”が１回と同数なので、多数決ではデコード結果を決定することができない。
【００３３】
バーコード認識装置は、Ｓ７におけるキャラクタごとの多数決の結果において、すべてのキャラクタがデコードできたかどうかを判定する（Ｓ８）。そして、デコードできなかったキャラクタが存在する場合は、そのような未解決のキャラクタに対し、走査ラインを追加して多数決によるデコードを試みる（Ｓ９）。追加する走査ラインは、Ｓ３及びＳ４で用いた走査ライン同士の間に追加してもよいし、図４の(a)に「追加ライン」として示したようにそれら走査ラインの分布域の外側に設定してもよい。Ｓ９で追加する走査ラインの数は、１本でも、あらかじめ定められた複数本でもよい。走査ラインを追加する位置（縦方向についての位置）は、あらかじめバーコード認識装置に設定されている。走査ラインを追加する位置は、例えば既存の走査ラインに対してあらかじめ定められた距離以上離れた位置となるように定めておく。
【００３４】
図４の例では、追加ラインに沿った６番目のキャラクタのデコード結果は５となる。したがって、既存の各走査ラインに沿った６番目のキャラクタのデコード結果も合わせて、デコードできたキャラクタ値の多数決を取ると（Ｓ７）、“5”が６番目のキャラクタの最終的なデコード結果として決定される。図４の例では、これで全１１個のキャラクタがデコードできたのでＳ８の判定結果が肯定(Yes)となり、バーコードのデコードを終了する。
【００３５】
Ｓ９で走査ラインを追加してデコードを行っても、未解決のキャラクタがデコードできなかった場合は、再度Ｓ９で更に走査ラインを追加して、その未解決キャラクタのデコードを試みる。未解決のすべてのキャラクタのデコードが完了するまで、Ｓ７〜Ｓ９の処理を繰り返す。
【００３６】
以上の例では、各走査ラインでのキャラクタのデコード結果のうち最も多いキャラクタ値をそのキャラクタの最終的なデコード結果に採用したが、単に最大数となるものを採用するのではなく、その最大数がデコードできたものの中で所定割合（例えば過半数）以上である場合にのみ、その最大数のキャラクタ値をデコード結果として採用してもよい。
【００３７】
以上に説明したバーコード認識の処理は、典型的には、コンピュータにて上述の各ステップの処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、ＣＰＵ（中央演算装置）、メモリ（一次記憶）、各種Ｉ／Ｏ（入出力）インタフェース等がバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ハードディスクドライブや、ＣＤやＤＶＤ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブが接続される。このようなドライブは、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク経由で、ハードディスクドライブ又は他の方式の不揮発性記憶装置などの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されＣＰＵにより実行されることにより、上記実施形態の処理が実現される。
【００３８】
本実施形態のバーコード認識装置は、例えば、そのようなプログラムがインストールされたコンピュータとして実現することができる。この装置は、スキャナからスキャンされた画像を受け取り、この画像に対して図３に示したような処理を行えばよい。また、デジタル複写機又はデジタル複合機等のように、スキャナ機能とプリンタ機能とを兼ね備えた装置に対し、上述のようなプログラムをインストールして実行させてもよい。
【００３９】
実施形態のバーコード認識装置の機能ブロック図は、例えば、図５に示すようなものとなる。このバーコード認識装置２０は、スキャナ１０が読み取った画像を受け取り、バーコード抽出部２１が、その画像に対しＳ２の処理を施す。走査ライン設定部２２は、Ｓ３及びＳ４で用いる初期の複数の走査ラインと、Ｓ９で追加する走査ラインの位置を決めるための情報（例えば位置そのもの、又は位置を決めるためのルールの情報）を持っている。デコード部２３は、Ｓ３〜Ｓ９までのデコード処理を行う。このデコード処理において、デコード部２３は、走査ライン設定部２２を参照して、Ｓ３、Ｓ９での走査ラインを設定する。バーコード認識装置２０の各部は、プログラムにより実現することができる。
【図面の簡単な説明】
【００４０】
【図１】部分的な太りや細りのあるバーコードを説明するための図である。
【図２】部分的な太りや細りのあるバーコードが、１つの走査ラインではデコードできないことを説明するための図である。
【図３】実施形態のバーコード認識の処理手順の一例を示すフローチャートである。
【図４】実施形態の処理手順によるバーコード認識の様子を具体例を用いて示す図である。
【図５】バーコード認識装置の機能ブロック図である。
【符号の説明】
【００４１】
１０  スキャナ、２０  バーコード認識装置、２１  バーコード抽出部、２２  走査ライン設定部、２３  デコード部。
【図１】
2008021009.tif 000003
【図２】
2008021009.tif 000004
【図３】
2008021009.tif 000005
【図４】
2008021009.tif 000006
【図５】
2008021009.tif 000007