(57)【要約】【課題】キャラクタに生じている白ノイズ又は黒ノイズを検出することにより、そのキャラクタのデコードをエラーとして処理することが可能なバーコード読み取り装置を得る。【解決手段】バーコード読み取り装置１は、各キャラクタをデコードするデコード部１０と、各エレメントの幅を検出する幅検出部１１と、幅検出部１１による検出の結果に基づいて各エレメントの幅を比較し、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、第２のエレメントの幅が、第１のエレメント及び第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する判定部１２とを備え、デコード部１０は、判定部１２による判定の結果に基づいてデコードを実行する。【選択図】図２
2010176581.tif 000002
【特許請求の範囲】
【請求項１】
複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置であって、
前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、
各キャラクタをデコードするデコード手段と、
各エレメントの幅を検出する検出手段と、
前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する判定手段と
を備え、
前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行する、バーコード読み取り装置。
【請求項２】
前記第１のエレメント、前記第２のエレメント、及び前記第３のエレメントのうちの二つを単一のエレメントとみなして結合する結合手段
をさらに備え、
前記判定手段が、前記第２のエレメントの幅が前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く他方のものの幅よりも狭い関係となっていると判定した場合は、前記デコード手段は、前記結合手段による結合の結果に基づいてデコードを実行する、請求項１に記載のバーコード読み取り装置。
【請求項３】
前記結合手段は、
前記第１のエレメントの幅及び前記第２のエレメントの幅の合計の幅と、前記第３のエレメントの幅との比率が、所定範囲内に含まれる場合には、前記第１のエレメントと前記第２のエレメントとを結合し、
前記第２のエレメントの幅及び前記第３のエレメントの幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第２のエレメントと前記第３のエレメントとを結合する、請求項２に記載のバーコード読み取り装置。
【請求項４】
前記第１のエレメントの幅及び前記第２のエレメントの幅の合計の幅と、前記第３のエレメントの幅との比率が、前記所定範囲内に含まれず、かつ、前記第２のエレメントの幅及び前記第３のエレメントの幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれない場合には、
前記結合手段は、
前記第１のエレメントの幅、前記第２のエレメントの幅、及び前記第１のエレメントと前記第２のエレメントとの隙間の幅の合計の幅と、前記第３のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第１のエレメントと前記第２のエレメントと当該隙間とを結合し、
前記第２のエレメントの幅、前記第３のエレメントの幅、及び前記第２のエレメントと前記第３のエレメントとの隙間の幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第２のエレメントと前記第３のエレメントと当該隙間とを結合する、請求項３に記載のバーコード読み取り装置。
【請求項５】
前記デコード手段は、当該バーコードに含まれる他のキャラクタのうち少なくとも一つのキャラクタのデコードが成功していることを条件として、前記結合手段による結合の結果に基づくデコードを実行する、請求項２〜４のいずれか一つに記載のバーコード読み取
り装置。
【請求項６】
前記デコード手段が前記結合手段による結合の結果に基づくデコードに失敗した場合には、前記バーコードの再走査が実行され、
当該再走査においては、前回の走査方向とは逆の走査方向で当該バーコードの走査が実行される、請求項２〜５のいずれか一つに記載のバーコード読み取り装置。
【請求項７】
複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置に搭載されるコンピュータを動作させるプログラムであって、
前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、
前記コンピュータを、
各キャラクタをデコードするデコード手段と、
各エレメントの幅を検出する検出手段と、
前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する判定手段と
として機能させ、
前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行する、プログラム。
【請求項８】
複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置であって、
前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、
各キャラクタをデコードするデコード手段と、
各エレメントの幅を検出する検出手段と、
前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、連続する同色の第１のエレメントと第２のエレメントとに関して、前記第１のエレメントの幅と前記第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する判定手段と
を備え、
前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行する、バーコード読み取り装置。
【請求項９】
複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置に搭載されるコンピュータを動作させるプログラムであって、
前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、
前記コンピュータを、
各キャラクタをデコードするデコード手段と、
各エレメントの幅を検出する検出手段と、
前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、連続する同色の第１のエレメントと第２のエレメントとに関して、前記第１のエレメントの幅と前記第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する判定手段と
として機能させ、
前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード読み取り装置に関し、さらに、当該装置に搭載されるコンピュータを動作させるプログラムに関する。
【背景技術】
【０００２】
店舗での商品管理、倉庫での在庫管理、又は特定施設での来場者管理等においては、バーコードに記録されたデータを非接触で読み取るために、ハンディターミナル等のバーコード読み取り装置が広く使用されている。
【０００３】
下記特許文献１には、バーの幅に関するしきい値とスペースの幅に関するしきい値とをそれぞれ決定し、バーコードの各バーの幅とバーに関するしきい値とを比較することによって、各バーの幅がそのしきい値よりも広いか狭いかを分類し、また、バーコードの各スペースの幅とスペースに関するしきい値とを比較することにより、各スペースの幅がそのしきい値よりも広いか狭いかを分類し、これらの分類の結果に基づいてキャラクタをデコードするバーコード読み取り装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表平９−５１２９３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
解像度の低いドットインパクト方式のプリンタを用いて印刷されたバーコードにおいては、ドット間に隙間が生じるため、バー内に生じている隙間がいわゆる白ノイズとなり、この白ノイズに起因してキャラクタが誤ってデコードされる場合がある。また、バーコードを印刷する紙の粒子が粗い場合や、インクがかすれた場合、あるいは印刷後に紙が擦れて表面の一部が剥がれた場合にも、同様に白ノイズの問題が生じ得る。
【０００６】
一方、バーコードを印刷する紙に汚れが生じている場合には、スペース内に生じている汚れがいわゆる黒ノイズとなり、この黒ノイズに起因してキャラクタが誤ってデコードされる場合がある。
【０００７】
キャラクタが誤ってデコードされた場合には商品管理等を正しく遂行することができないため、このような白ノイズ又は黒ノイズが生じているキャラクタのデコードを正確にエラーとして処理することにより、再走査又は再デコード等の処理に導く必要がある。
【０００８】
本発明はかかる事情に鑑みて成されたものであり、キャラクタに生じている白ノイズ又は黒ノイズを検出することにより、そのキャラクタのデコードをエラーとして処理することが可能なバーコード読み取り装置、及び当該装置に搭載されるコンピュータを動作させるプログラムを得ることを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の態様に係るバーコード読み取り装置は、複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置であって、前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、各キャラクタをデコードするデコード手段と、各エレメントの幅を検出する検出手段と、前記検出手段による検出の結果に基づいて各エレメ
ントの幅を比較し、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する判定手段とを備え、前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行することを特徴とするものである。
【００１０】
第１の態様に係るバーコード読み取り装置によれば、判定手段は、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する。二値幅シンボル体系のバーコードにおいては、連続する同色の三つのエレメントに着目した場合に、各エレメントの幅が連続して広くなる又は連続して狭くなることはあり得ないため、判定手段による上記の判定処理によって、キャラクタに生じている白ノイズ又は黒ノイズを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗として扱うことにより、誤ったデコードがなされることを回避することができる。
【００１１】
本発明の第２の態様に係るバーコード読み取り装置は、第１の態様に係るバーコード読み取り装置において特に、前記第１のエレメント、前記第２のエレメント、及び前記第３のエレメントのうちの二つを単一のエレメントとみなして結合する結合手段をさらに備え、前記判定手段が、前記第２のエレメントの幅が前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く他方のものの幅よりも狭い関係となっていると判定した場合は、前記デコード手段は、前記結合手段による結合の結果に基づいてデコードを実行することを特徴とするものである。
【００１２】
第２の態様に係るバーコード読み取り装置によれば、結合手段は、第１のエレメント、第２のエレメント、及び第３のエレメントのうちの二つを単一のエレメントとみなして結合する。これにより、判定手段による判定によって白ノイズ又は黒ノイズが検出された場合には、結合によってその白ノイズ又は黒ノイズを補正した状態でデコード手段が再デコードを実行することができるため、再デコードが成功となる可能性を高めることができる。
【００１３】
なお、本明細書において「結合」とは、二つのエレメントの幅を合算する処理を意味し、二つのエレメントを物理的に繋げる意味ではない。
【００１４】
本発明の第３の態様に係るバーコード読み取り装置は、第２の態様に係るバーコード読み取り装置において特に、前記結合手段は、前記第１のエレメントの幅及び前記第２のエレメントの幅の合計の幅と、前記第３のエレメントの幅との比率が、所定範囲内に含まれる場合には、前記第１のエレメントと前記第２のエレメントとを結合し、前記第２のエレメントの幅及び前記第３のエレメントの幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第２のエレメントと前記第３のエレメントとを結合することを特徴とするものである。
【００１５】
第３の態様に係るバーコード読み取り装置によれば、結合手段は、第１のエレメントの幅及び第２のエレメントの幅の合計の幅と、第３のエレメントの幅との比率が、所定範囲内に含まれる場合には、第１のエレメントと第２のエレメントとを結合し、第２のエレメントの幅及び第３のエレメントの幅の合計の幅と、第１のエレメントの幅との比率が、所定範囲内に含まれる場合には、第２のエレメントと第３のエレメントとを結合する。第２のエレメントは、第１のエレメント又は第３のエレメントと結合することができるが、結
合したエレメントの合計の幅と、残りの一つのエレメントの幅との比率が、二値幅シンボル体系のバーコードにおける幅広のエレメントの幅と幅狭のエレメントの幅との比率の範囲である所定範囲内に含まれるか否かによって、第２のエレメントの結合対象を適切に選択することができる。
【００１６】
本発明の第４の態様に係るバーコード読み取り装置は、第３の態様に係るバーコード読み取り装置において特に、前記第１のエレメントの幅及び前記第２のエレメントの幅の合計の幅と、前記第３のエレメントの幅との比率が、前記所定範囲内に含まれず、かつ、前記第２のエレメントの幅及び前記第３のエレメントの幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれない場合には、前記結合手段は、前記第１のエレメントの幅、前記第２のエレメントの幅、及び前記第１のエレメントと前記第２のエレメントとの隙間の幅の合計の幅と、前記第３のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第１のエレメントと前記第２のエレメントと当該隙間とを結合し、前記第２のエレメントの幅、前記第３のエレメントの幅、及び前記第２のエレメントと前記第３のエレメントとの隙間の幅の合計の幅と、前記第１のエレメントの幅との比率が、前記所定範囲内に含まれる場合には、前記第２のエレメントと前記第３のエレメントと当該隙間とを結合することを特徴とするものである。
【００１７】
第４の態様に係るバーコード読み取り装置によれば、第３の態様における二通りの結合によっては結合後の幅の比率が所定範囲内に含まれないときには、結合手段は、第１のエレメントの幅、第２のエレメントの幅、及び第１のエレメントと第２のエレメントとの隙間の幅の合計の幅と、第３のエレメントの幅との比率が、所定範囲内に含まれる場合には、第１のエレメントと第２のエレメントと当該隙間とを結合し、第２のエレメントの幅、第３のエレメントの幅、及び第２のエレメントと第３のエレメントとの隙間の幅の合計の幅と、第１のエレメントの幅との比率が、所定範囲内に含まれる場合には、第２のエレメントと第３のエレメントと当該隙間とを結合する。このように、白ノイズ又は黒ノイズの幅をも含めて結合することにより、結合後の幅の比率が所定範囲内に含まれることとなる可能性を高めることができる。その結果、結合手段による結合処理が成功となる可能性を高めることが可能となる。
【００１８】
本発明の第５の態様に係るバーコード読み取り装置は、第２〜第４のいずれか一つの態様に係るバーコード読み取り装置において特に、当該バーコードに含まれる他のキャラクタのうち少なくとも一つのキャラクタのデコードが成功していることを条件として、前記結合手段による結合の結果に基づくデコードが実行されることを特徴とするものである。
【００１９】
第５の態様に係るバーコード読み取り装置によれば、当該バーコードに含まれる他のキャラクタのうち少なくとも一つのキャラクタのデコードが成功していることを条件として、結合手段による結合の結果に基づくデコード（つまり再デコード）が実行される。従って、一つのキャラクタのデコードも成功しないような規格外のバーコード等に対しては、再デコード及び結合処理が実行されることはないため、無駄な処理が実行されることを回避できる。
【００２０】
本発明の第６の態様に係るバーコード読み取り装置は、第２〜第５のいずれか一つの態様に係るバーコード読み取り装置において特に、前記デコード手段が前記結合手段による結合の結果に基づくデコードに失敗した場合には、前記バーコードの再走査が実行され、当該再走査においては、前回の走査方向とは逆の走査方向で当該バーコードの走査が実行されることを特徴とするものである。
【００２１】
第６の態様に係るバーコード読み取り装置によれば、バーコードの再走査においては、前回の走査方向とは逆の走査方向で当該バーコードの走査が実行される。バーコードの読
み取りに一度失敗しても、逆方向から走査することによって読み取りが成功する場合もあり得るため、再走査においては前回の走査方向とは逆の方向からバーコードを走査することにより、バーコードの読み取りが成功となる可能性が高まる。
【００２２】
本発明の第７の態様に係るプログラムは、複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置に搭載されるコンピュータを動作させるプログラムであって、前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、前記コンピュータを、各キャラクタをデコードするデコード手段と、各エレメントの幅を検出する検出手段と、前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する判定手段ととして機能させ、前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行することを特徴とするものである。
【００２３】
第７の態様に係るプログラムによれば、判定手段は、この順に連続する同色の第１のエレメント、第２のエレメント、及び第３のエレメントのそれぞれの幅の広狭関係において、前記第２のエレメントの幅が、前記第１のエレメント及び前記第３のエレメントのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっているか否かを判定する。二値幅シンボル体系のバーコードにおいては、連続する同色の三つのエレメントに着目した場合に、各エレメントの幅が連続して広くなる又は連続して狭くなることはあり得ないため、判定手段による上記の判定処理によって、キャラクタに生じている白ノイズ又は黒ノイズを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗として扱うことにより、誤ったデコードがなされることを回避することができる。
【００２４】
本発明の第８の態様に係るバーコード読み取り装置は、複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置であって、前記バーコードは、同色で幅が異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、各キャラクタをデコードするデコード手段と、各エレメントの幅を検出する検出手段と、前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、連続する同色の第１のエレメントと第２のエレメントとに関して、前記第１のエレメントの幅と前記第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する判定手段とを備え、前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行することを特徴とするものである。
【００２５】
第８の態様に係るバーコード読み取り装置によれば、判定手段は、連続する同色の第１のエレメントと第２のエレメントとに関して、第１のエレメントの幅と第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する。正常な二値幅シンボル体系のバーコードにおいては、幅広のエレメントの幅と幅狭のエレメントの幅との比率が所定範囲内に収まるはずであるため、第１のエレメントの幅と第２のエレメントの幅との比率が所定範囲内に収まらないと判定手段が判定したことを以て、そのキャラクタに白ノイズ又は黒ノイズが生じていることを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗として扱うことにより、誤ったデコードがなされることを回避することができる。
【００２６】
本発明の第９の態様に係るプログラムは、複数のエレメントで規定されるキャラクタを複数含むバーコードを走査して各キャラクタをデコードするバーコード読み取り装置に搭載されるコンピュータを動作させるプログラムであって、前記バーコードは、同色で幅が
異なる二種類のエレメントを含む二値幅シンボル体系のバーコードであり、前記コンピュータを、各キャラクタをデコードするデコード手段と、各エレメントの幅を検出する検出手段と、前記検出手段による検出の結果に基づいて各エレメントの幅を比較し、連続する同色の第１のエレメントと第２のエレメントとに関して、前記第１のエレメントの幅と前記第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する判定手段ととして機能させ、前記デコード手段は、前記判定手段による判定の結果に基づいてデコードを実行することを特徴とするものである。
【００２７】
第９の態様に係るプログラムによれば、判定手段は、連続する同色の第１のエレメントと第２のエレメントとに関して、第１のエレメントの幅と第２のエレメントの幅との比率が所定範囲内に含まれているか否かを判定する。正常な二値幅シンボル体系のバーコードにおいては、幅広のエレメントの幅と幅狭のエレメントの幅との比率が所定範囲内に収まるはずであるため、第１のエレメントの幅と第２のエレメントの幅との比率が所定範囲内に収まらないと判定手段が判定したことを以て、そのキャラクタに白ノイズ又は黒ノイズが生じていることを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗として扱うことにより、誤ったデコードがなされることを回避することができる。
【発明の効果】
【００２８】
本発明によれば、キャラクタに生じている白ノイズ又は黒ノイズを検出することができ、そのキャラクタのデコードをエラーとして処理することが可能となる。
【図面の簡単な説明】
【００２９】
【図１】バーコードを示す図である。
【図２】本発明の第１の実施の形態に係るバーコード読み取り装置の構成を示すブロック図である。
【図３】制御部における処理の流れを示すフローチャートである。
【図４】制御部によるデコード処理の流れを詳細に示すフローチャートである。
【図５】バーコードのうち一つのキャラクタを拡大して示す図である。
【図６】デコード処理の流れを詳細に示すフローチャートである。
【図７】白ノイズが生じている場合の結合処理の流れを示すフローチャートである。
【図８】白ノイズが生じている場合の結合処理の例を示す図である。
【図９】黒ノイズが生じている場合の結合処理の流れを示すフローチャートである。
【図１０】黒ノイズが生じている場合の結合処理の例を示す図である。
【図１１】制御部によるデコード処理の流れを詳細に示すフローチャートである。
【図１２】キャラクタ内で連続する２つのバーを拡大して示す図である。
【図１３】制御部によるデコード処理の流れを詳細に示すフローチャートである。
【図１４】キャラクタ内で連続する２つのスペースを拡大して示す図である。
【発明を実施するための形態】
【００３０】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００３１】
＜第１の実施の形態＞
図１は、バーコード１００を示す図である。図１の（Ａ）には、６個のキャラクタＣ１〜Ｃ６を含むバーコード１００の一例を示しており、図１の（Ｂ）には、図１の（Ａ）に示したバーコード１００のうちのキャラクタＣ１〜Ｃ３を拡大して示している。バーコード１００は、二値幅シンボル体系のバーコードの一種であるコード３９のバーコードであり、１個のキャラクタは合計９個のエレメントによって規定される。９個のエレメントは、５本のバーと４本のスペースとによって構成される。バーは、例えば黒色のエレメント
であり、スペースは、例えば白色のエレメントである。二値幅シンボル体系のバーコードにおいては、バーには幅広のバーＢＷと幅狭のバーＢＮとの二種類のバーが含まれ、同様にスペースには幅広のスペースＳＷと幅狭のスペースＳＮとの二種類のスペースが含まれる。バーＢＷの幅はバーＢＮの幅の２〜５倍程度の範囲内に設定されており、同様にスペースＳＷの幅はスペースＳＮの幅の２〜５倍程度の範囲内に設定されている。また、コード３９のバーコード１００においては、１個のキャラクタ内に、合計３本のバーＢＷ又はスペースＳＷと、合計６本のバーＢＮ又はスペースＳＮとが含まれる。なお、二値幅シンボル体系のバーコードには、コード３９のほかに、ＮＷ−７やＩＴＦ等がある。
【００３２】
図２は、本発明の第１の実施の形態に係るバーコード読み取り装置１の構成を示すブロック図である。図２に示すようにバーコード読み取り装置１は、光学装置２、二値化処理部３、制御部４、出力装置５、及び記憶部６を備えて構成されている。
【００３３】
光学装置２は、赤色半導体レーザ等の光源を用いてバーコード１００を走査し、バーコード１００からの反射光を受光素子によって受光する。バーＢＷ，ＢＮで反射された反射光の強度は低くなり、スペースＳＷ，ＳＮで反射された反射光の強度は高くなるため、受光素子においては、バーコード１００のバーＢＷ，ＢＮ及びスペースＳＷ，ＳＮの配列パターンに対応した反射光の強度分布が得られる。
【００３４】
二値化処理部３は、光学装置２の受光素子から入力されたアナログ信号を、所定のしきい値を用いて二値のディジタルデータに変換する。例えば、しきい値未満のアナログ信号をディジタルデータ“１”とし、しきい値以上のアナログ信号をディジタルデータ“０”とする。
【００３５】
制御部４はＣＰＵ等を備えるコンピュータであり、記憶部６に記憶されているプログラム１４を読み出して実行することによって、制御部４は、デコード部１０、幅検出部１１、判定部１２、及び結合部１３として機能する。換言すれば、プログラム１４は、コンピュータを、デコード部１０、幅検出部１１、判定部１２、及び結合部１３として機能させるためのプログラムである。デコード部１０、幅検出部１１、判定部１２、及び結合部１３における処理内容の詳細については後述する。
【００３６】
記憶部６はＲＯＭ又はＲＡＭ等の半導体メモリであり、上記のプログラム１４のほか、制御部４によるデコード結果と文字列との対応関係が記述されたデータテーブル１５が記憶されている。
【００３７】
出力装置５はＬＣＤ等の表示装置であり、制御部４によるバーコード１００のデコード結果（又はそれがデータテーブル１５によって変換された文字列）が、表示装置の表示画面に表示される。あるいは出力装置５は通信装置であり、制御部４によるバーコード１００のデコード結果が、通信装置からホストコンピュータ又はデータベース等の他のデータ管理装置に向けて送信される。
【００３８】
図３は、制御部４における処理の流れを示すフローチャートである。まずステップＳＰ１１において、バーコード１００における先頭のキャラクタのデコード処理が実行される。図１を参照して、光学装置２によるバーコード１００の走査方向は、紙面の左から右に向かう方向（以下この方向を「順方向」と称す）に設定されている。従って、バーコード１００における先頭のキャラクタはキャラクタＣ１となるため、ステップＳＰ１１において、制御部４はキャラクタＣ１のデコードを実行する。
【００３９】
図４は、制御部４によるデコード処理の流れを詳細に示すフローチャートである。まずステップＳＰ２１において幅検出部１１は、キャラクタＣ１内に含まれる各バーの幅を検
出する。
【００４０】
図５は、バーコード１００のうちキャラクタＣ１を拡大して示す図である。キャラクタＣ１においては、左から順に、バーＢＮ１、スペースＳＷ１、バーＢＮ２、スペースＳＮ１、バーＢＷ１、スペースＳＮ２、バーＢＷ２、スペースＳＮ３、及びバーＢＮ３が配列されている。幅検出部１１は、これらのうちバーＢＮ１，ＢＮ２，ＢＷ１，ＢＷ２，ＢＮ３の各幅を検出する。
【００４１】
次にステップＳＰ２２において判定部１２は、キャラクタＣ１内で連続する３つのバーを順に抽出して、それらの幅を比較する。抽出した３つのバーのうち左端のバーの幅をＷＢａとし、中央のバーの幅をＷＢｂとし、右端のバーの幅をＷＢｃとすると、初めにバーＢＮ１，ＢＮ２，ＢＷ１が抽出された場合には、比較結果は「ＷＢａ＝ＷＢｂ＜ＷＢｃ」となる。続いてバーＢＮ２，ＢＷ１，ＢＷ２が抽出された場合には、比較結果は「ＷＢａ＜ＷＢｂ＝ＷＢｃ」となる。続いてバーＢＷ１，ＢＷ２，ＢＮ３が抽出された場合には、比較結果は「ＷＢａ＝ＷＢｂ＞ＷＢｃ」となる。
【００４２】
次にステップＳＰ２３において判定部１２は、ステップＳＰ２２における複数の比較結果の中に、「ＷＢａ＞ＷＢｂ＞ＷＢｃ」なる関係が含まれているか否かを判定する。図５に示した例では「ＷＢａ＞ＷＢｂ＞ＷＢｃ」なる関係は含まれていないため、ステップＳＰ２３における判定の結果は「ＮＯ」となる。
【００４３】
次にステップＳＰ２４において判定部１２は、ステップＳＰ２２における複数の比較結果の中に、「ＷＢａ＜ＷＢｂ＜ＷＢｃ」なる関係が含まれているか否かを判定する。図５に示した例では「ＷＢａ＜ＷＢｂ＜ＷＢｃ」なる関係は含まれていないため、ステップＳＰ２４における判定の結果は「ＮＯ」となる。
【００４４】
ステップＳＰ２３，ＳＰ２４における判定の結果がいずれも「ＮＯ」である場合には、判定部１２は、キャラクタＣ１内には白ノイズが生じていないと判定する。この場合、次にステップＳＰ２５においてデコード部１０は、キャラクタＣ１をデコードし、そのデコード結果に対応する文字列がデータテーブル１５に含まれているか否かを判定する。対応する文字列が含まれている場合（つまりステップＳＰ２５における判定の結果が「ＹＥＳ」である場合）にはキャラクタＣ１のデコードが成功とされ、含まれていない場合（つまりステップＳＰ２５における判定の結果が「ＮＯ」である場合）には失敗とされる。なお、ステップＳＰ２３又はステップＳＰ２４における判定の結果が「ＹＥＳ」となる場合（つまり白ノイズが生じている場合）も、キャラクタＣ１のデコードは失敗とされる。
【００４５】
図４ではバーに着目した場合のキャラクタＣ１のデコード処理を示したが、スペースに関しても同様のデコード処理が実行される。図６は、デコード処理の流れを詳細に示すフローチャートである。まずステップＳＰ３１において幅検出部１１は、キャラクタＣ１内に含まれる各スペースの幅を検出する。図５を参照して、幅検出部１１は、スペースＳＷ１，ＳＮ１，ＳＮ２，ＳＮ３の各幅を検出する。
【００４６】
次にステップＳＰ３２において判定部１２は、キャラクタＣ１内で連続する３つのスペースを順に抽出して、それらの幅を比較する。抽出した３つのスペースのうち左端のスペースの幅をＷＳａとし、中央のスペースの幅をＷＳｂとし、右端のスペースの幅をＷＳｃとすると、初めにスペースＳＷ１，ＳＮ１，ＳＮ２が抽出された場合には、比較結果は「ＷＳａ＞ＷＳｂ＝ＷＳｃ」となり、続いてスペースＳＮ１，ＳＮ２，ＳＮ３が抽出された場合には、比較結果は「ＷＳａ＝ＷＳｂ＝ＷＳｃ」となる。
【００４７】
次にステップＳＰ３３において判定部１２は、ステップＳＰ３２における複数の比較結
果の中に、「ＷＳａ＞ＷＳｂ＞ＷＳｃ」なる関係が含まれているか否かを判定する。図５に示した例では「ＷＳａ＞ＷＳｂ＞ＷＳｃ」なる関係は含まれていないため、ステップＳＰ３３における判定の結果は「ＮＯ」となる。
【００４８】
次にステップＳＰ３４において判定部１２は、ステップＳＰ３２における複数の比較結果の中に、「ＷＳａ＜ＷＳｂ＜ＷＳｃ」なる関係が含まれているか否かを判定する。図５に示した例では「ＷＳａ＜ＷＳｂ＜ＷＳｃ」なる関係は含まれていないため、ステップＳＰ３４における判定の結果は「ＮＯ」となる。
【００４９】
ステップＳＰ３３，ＳＰ３４における判定の結果がいずれも「ＮＯ」である場合には、判定部１２は、キャラクタＣ１内には黒ノイズが生じていないと判定する。この場合、次にステップＳＰ３５（図４に示したステップＳＰ２５と同様）においてデコード部１０は、キャラクタＣ１をデコードし、そのデコード結果に対応する文字列がデータテーブル１５に含まれているか否かを判定する。対応する文字列が含まれている場合（つまりステップＳＰ３５における判定の結果が「ＹＥＳ」である場合）にはキャラクタＣ１のデコードが成功とされ、含まれていない場合（つまりステップＳＰ３５における判定の結果が「ＮＯ」である場合）には失敗とされる。なお、ステップＳＰ３３又はステップＳＰ３４における判定の結果が「ＹＥＳ」となる場合（つまり黒ノイズが生じている場合）も、キャラクタＣ１のデコードは失敗とされる。
【００５０】
図３に示したフローチャートに戻り、ステップＳＰ１１に続くステップＳＰ１２において、先頭のキャラクタＣ１のデコードが失敗であったか否かが判定される。キャラクタＣ１のデコードが失敗であった場合（つまりステップＳＰ１２における判定の結果が「ＹＥＳ」である場合）は、光学装置２によるバーコード１００の再走査が実行される。再走査において、光学装置２は、前回の走査方向とは逆の方向からバーコード１００の走査を行う。つまり、前回の走査方向が左から右に向かう順方向であったため、今回の再走査においては、右から左に向かう逆方向でバーコード１００の走査を実行する。但し、前回と同様に順方向で再走査を行っても良い。
【００５１】
一方、キャラクタＣ１のデコードが成功であった場合（つまりステップＳＰ１２における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ１３において、キャラクタＣ１の隣のキャラクタＣ２についてのデコード処理が実行される。キャラクタＣ２についてのデコード処理の詳細は、上述したキャラクタＣ１についてのデコード処理（図４，６）と同様である。次にステップＳＰ１４において、キャラクタＣ２のデコードが失敗であったか否かが判定される。キャラクタＣ２のデコードが成功であった場合（つまりステップＳＰ１４における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ１５において、次のキャラクタが存在するか否かが判定される。次のキャラクタが存在する場合（つまりステップＳＰ１５における判定の結果が「ＹＥＳ」である場合）には、ステップＳＰ１３においてそのキャラクタについてのデコード処理が実行される。一方、次のキャラクタが存在しない場合（つまりステップＳＰ１５における判定の結果が「ＮＯ」である場合）には、バーコード１００についてのデコード処理が正常に終了し、出力装置５においてデコード結果が出力される。
【００５２】
ステップＳＰ１３におけるキャラクタのデコードが失敗であった場合（つまりステップＳＰ１４における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ１６において、結合処理が実行される。
【００５３】
図７は、白ノイズが生じている場合の結合処理の流れを示すフローチャートである。また、図８は、白ノイズが生じている場合の結合処理の例を示す図である。図８の（Ａ）を参照して、バーＢａ，Ｂｂは本来は単一のバーであるところ、そのバー内に白ノイズ（ス
ペースＳａｂ）が生じていることに起因して、そのバーは幅検出部１１において２本のバーＢａ，Ｂｂとして認識されている。図８の（Ａ）に示した例では、中央のバーＢｂの幅ＷＢｂは左端のバーＢａの幅ＷＢａよりも広く、右端のバーＢｃの幅ＷＢｃは中央のバーＢｂの幅ＷＢｂよりも広い。つまり、判定部１２がこれら３つのバーＢａ，Ｂｂ，Ｂｃを抽出して各バーの幅を比較した場合には、その比較結果は「ＷＢａ＜ＷＢｂ＜ＷＢｃ」となる。その結果、図４のステップＳＰ２４における判定の結果が「ＹＥＳ」となって、そのキャラクタのデコードが失敗とされる。なお、図８の（Ａ）において、バーＢａとバーＢｂとの間のスペースＳａｂの幅はＷＳａｂであり、バーＢｂとバーＢｃとの間のスペースＳｂｃの幅はＷＳｂｃである。
【００５４】
図７のステップＳＰ４１において結合部１３は、幅の比較結果が「ＷＢａ＜ＷＢｂ＜ＷＢｃ」となっている箇所（つまり図８の（Ａ）に示したバーＢａ，Ｂｂ，Ｂｃ）に関して、「ＷＢｃ／（ＷＢａ＋ＷＢｂ）」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が、所定範囲（幅狭のバーＢＮに対する幅広のバーＢＷの比率である例えば「２〜５」）内に含まれているか否かを判定する。「ＷＢｃ／（ＷＢａ＋ＷＢｂ）」の値が所定範囲内に含まれている場合（つまりステップＳＰ４１における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ４２において結合部１３は、図８の（Ｂ）に示すように、バーＢａとバーＢｂとを幅ＷＢａ＋ＷＢｂの単一のバーＢａ＋Ｂｂとみなして結合する。ここで、「結合」とは、二つのバーの幅を合算する処理を意味し、二つのバーを物理的に繋げる意味ではない。
【００５５】
一方、「ＷＢｃ／（ＷＢａ＋ＷＢｂ）」の値が所定範囲内に含まれていない場合（つまりステップＳＰ４１における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ４３において結合部１３は、「（ＷＢｂ＋ＷＢｃ）／ＷＢａ」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「（ＷＢｂ＋ＷＢｃ）／ＷＢａ」の値が所定範囲内に含まれている場合（つまりステップＳＰ４３における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ４４において結合部１３は、バーＢｂとバーＢｃとを幅ＷＢｂ＋ＷＢｃの単一のバーとみなして結合する。
【００５６】
一方、「（ＷＢｂ＋ＷＢｃ）／ＷＢａ」の値が所定範囲内に含まれていない場合（つまりステップＳＰ４３における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ４５において結合部１３は、「ＷＢｃ／（ＷＢａ＋ＷＢｂ＋ＷＳａｂ）」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「ＷＢｃ／（ＷＢａ＋ＷＢｂ＋ＷＳａｂ）」の値が所定範囲内に含まれている場合（つまりステップＳＰ４５における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ４６において結合部１３は、図８の（Ｃ）に示すように、バーＢａとバーＢｂとスペースＳａｂとを幅ＷＢａ＋ＷＢｂ＋ＷＳａｂの単一のバーＢａ＋Ｂｂ＋Ｓａｂとみなして結合する。
【００５７】
一方、「ＷＢｃ／（ＷＢａ＋ＷＢｂ＋ＷＳａｂ）」の値が所定範囲内に含まれていない場合（つまりステップＳＰ４５における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ４７において結合部１３は、「（ＷＢｂ＋ＷＢｃ＋ＷＳｂｃ）／ＷＢａ」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「（ＷＢｂ＋ＷＢｃ＋ＷＳｂｃ）／ＷＢａ」の値が所定範囲内に含まれている場合（つまりステップＳＰ４７における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ４８において結合部１３は、バーＢｂとバーＢｃとスペースＳｂｃとを幅ＷＢｂ＋ＷＢｃ＋ＷＳｂｃの単一のバーとみなして結合する。
【００５８】
一方、「（ＷＢｂ＋ＷＢｃ＋ＷＳｂｃ）／ＷＢａ」の値が所定範囲内に含まれていない
場合（つまりステップＳＰ４７における判定の結果が「ＮＯ」である場合）は、結合処理は失敗とされる。
【００５９】
図３に示したフローチャートに戻り、ステップＳＰ１６に続くステップＳＰ１７において、ステップＳＰ１６の結合処理が失敗したか否かが判定される。結合処理が成功であった場合（つまりステップＳＰ１７における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ１３において、結合処理後のキャラクタについて再デコード処理が実行される。再デコード処理の内容は、上述したデコード処理（図４）と同様である。その後、ステップＳＰ１４以降の処理が実行される。
【００６０】
一方、結合処理が失敗であった場合（つまりステップＳＰ１７における判定の結果が「ＹＥＳ」である場合）は、光学装置２によるバーコード１００の再走査が実行される。再走査において、光学装置２は、前回の走査方向とは逆の方向からバーコード１００の走査を行う。つまり、前回の走査方向が左から右に向かう順方向であったため、今回の再走査においては、右から左に向かう逆方向でバーコード１００の走査を実行する。但し、前回と同様に順方向で再走査を行っても良い。その後、ステップＳＰ１１以降の処理が実行される。
【００６１】
図９は、黒ノイズが生じている場合の結合処理の流れを示すフローチャートである。また、図１０は、黒ノイズが生じている場合の結合処理の例を示す図である。図１０の（Ａ）を参照して、スペースＳｂ，Ｓｃは本来は単一のスペースであるところ、そのスペース内に黒ノイズ（バーＢｂｃ）が生じていることに起因して、そのスペースは幅検出部１１において２つのスペースＳｂ，Ｓｃとして認識されている。図１０の（Ａ）に示した例では、中央のスペースＳｂの幅ＷＳｂは左端のスペースＳａの幅ＷＳａよりも狭く、右端のスペースＳｃの幅ＷＳｃは中央のスペースＳｂの幅ＷＳｂよりも狭い。つまり、判定部１２がこれら３つのスペースＳａ，Ｓｂ，Ｓｃを抽出して各スペースの幅を比較した場合には、その比較結果は「ＷＳａ＞ＷＳｂ＞ＷＳｃ」となる。その結果、図６のステップＳＰ３３における判定の結果が「ＹＥＳ」となって、そのキャラクタのデコードが失敗とされる。なお、図１０の（Ａ）において、スペースＳａとスペースＳｂとの間のバーＢａｂの幅はＷＢａｂであり、スペースＳｂとスペースＳｃとの間のバーＢｂｃの幅はＷＢｂｃである。
【００６２】
図９のステップＳＰ５１において結合部１３は、幅の比較結果が「ＷＳａ＞ＷＳｂ＞ＷＳｃ」となっている箇所（つまり図１０の（Ａ）に示したスペースＳａ，Ｓｂ，Ｓｃ）に関して、「ＷＳａ／（ＷＳｂ＋ＷＳｃ）」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が、所定範囲（幅狭のスペースＳＮに対する幅広のスペースＳＷの比率である例えば「２〜５」）内に含まれているか否かを判定する。「ＷＳａ／（ＷＳｂ＋ＷＳｃ）」の値が所定範囲内に含まれている場合（つまりステップＳＰ５１における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ５２において結合部１３は、図１０の（Ｂ）に示すように、スペースＳｂとスペースＳｃとを幅ＷＳｂ＋ＷＳｃの単一のスペースＳｂ＋Ｓｃとみなして結合する。ここで、「結合」とは、二つのスペースの幅を合算する処理を意味し、二つのスペースを物理的に繋げる意味ではない。
【００６３】
一方、「ＷＳａ／（ＷＳｂ＋ＷＳｃ）」の値が所定範囲内に含まれていない場合（つまりステップＳＰ５１における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ５３において結合部１３は、「（ＷＳａ＋ＷＳｂ）／ＷＳｃ」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「（ＷＳａ＋ＷＳｂ）／ＷＳｃ」の値が所定範囲内に含まれている場合（つまりステップＳＰ５３における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ５４において結合部１３は、スペースＳａとスペースＳｂとを幅ＷＳａ＋ＷＳｂの単一
のスペースとみなして結合する。
【００６４】
一方、「（ＷＳａ＋ＷＳｂ）／ＷＳｃ」の値が所定範囲内に含まれていない場合（つまりステップＳＰ５３における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ５５において結合部１３は、「ＷＳａ／（ＷＳｂ＋ＷＳｃ＋ＷＢｂｃ）」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「ＷＳａ／（ＷＳｂ＋ＷＳｃ＋ＷＢｂｃ）」の値が所定範囲内に含まれている場合（つまりステップＳＰ５５における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ５６において結合部１３は、図１０の（Ｃ）に示すように、スペースＳｂとスペースＳｃとバーＢｂｃとを幅ＷＳｂ＋ＷＳｃ＋ＷＢｂｃの単一のスペースＳｂ＋Ｓｃ＋Ｂｂｃとみなして結合する。
【００６５】
一方、「ＷＳａ／（ＷＳｂ＋ＷＳｃ＋ＷＢｂｃ）」の値が所定範囲内に含まれていない場合（つまりステップＳＰ５５における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ５７において結合部１３は、「（ＷＳａ＋ＷＳｂ＋ＷＢａｂ）／ＷＳｃ」なる演算を行う。そして、結合部１３は、その演算の結果として得られる値が上記の所定範囲内に含まれているか否かを判定する。「（ＷＳａ＋ＷＳｂ＋ＷＢａｂ）／ＷＳｃ」の値が所定範囲内に含まれている場合（つまりステップＳＰ５７における判定の結果が「ＹＥＳ」である場合）は、次にステップＳＰ５８において結合部１３は、スペースＳａとスペースＳｂとバーＢａｂとを幅ＷＳａ＋ＷＳｂ＋ＷＢａｂの単一のスペースとみなして結合する。
【００６６】
一方、「（ＷＳａ＋ＷＳｂ＋ＷＢａｂ）／ＷＳｃ」の値が所定範囲内に含まれていない場合（つまりステップＳＰ５７における判定の結果が「ＮＯ」である場合）は、結合処理は失敗とされる。
【００６７】
図３に示したフローチャートに戻り、ステップＳＰ１６に続くステップＳＰ１７において、ステップＳＰ１６の結合処理が失敗したか否かが判定される。結合処理が成功であった場合（つまりステップＳＰ１７における判定の結果が「ＮＯ」である場合）は、次にステップＳＰ１３において、結合処理後のキャラクタについて再デコード処理が実行される。再デコード処理の内容は、上述したデコード処理（図６）と同様である。その後、ステップＳＰ１４以降の処理が実行される。
【００６８】
一方、結合処理が失敗であった場合（つまりステップＳＰ１７における判定の結果が「ＹＥＳ」である場合）は、光学装置２によるバーコード１００の再走査が実行される。上記と同様に、再走査において光学装置２は、前回の走査方向とは逆の方向からバーコード１００の走査を行う。但し、前回と同様に順方向で再走査を行っても良い。その後、ステップＳＰ１１以降の処理が実行される。
【００６９】
このように本実施の形態に係るバーコード読み取り装置１によれば、判定部１２は、この順に連続する第１のバーＢａ、第２のバーＢｂ、及び第３のバーＢｃのそれぞれの幅の広狭関係において、第２のバーＢｂの幅が、第１のバーＢａ及び第３のバーＢｃのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっている場合に、当該キャラクタのデコードを失敗と判定する。二値幅シンボル体系のバーコードにおいては、連続する三つのバーに着目した場合に、各バーの幅が連続して広くなる又は連続して狭くなることはあり得ないため、判定部１２による上記の判定処理によって、キャラクタに生じている白ノイズを検出することができる。また、判定部１２は、この順に連続する第１のスペースＳａ、第２のスペースＳｂ、及び第３のスペースＳｃのそれぞれの幅の広狭関係において、第２のスペースＳｂの幅が、第１のスペースＳａ及び第３のスペースＳｃのうちの一方のものの幅よりも広く、他方のものの幅よりも狭い関係となっている場合に、当
該キャラクタのデコードを失敗と判定する。二値幅シンボル体系のバーコードにおいては、連続する三つのスペースに着目した場合に、各スペースの幅が連続して広くなる又は連続して狭くなることはあり得ないため、判定部１２による上記の判定処理によって、キャラクタに生じている黒ノイズを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗と判定することにより、誤ったデコードがなされることを回避することができる。
【００７０】
また、本実施の形態に係るバーコード読み取り装置１によれば、結合部１３は、デコードが失敗と判定されたキャラクタの再デコードを実行するにあたって、第１のバーＢａ、第２のバーＢｂ、及び第３のバーＢｃのうちの二つを単一のバーとみなして結合する。また、結合部１３は、デコードが失敗と判定されたキャラクタの再デコードを実行するにあたって、第１のスペースＳａ、第２のスペースＳｂ、及び第３のスペースＳｃのうちの二つを単一のスペースとみなして結合する。これにより、結合によって白ノイズ又は黒ノイズを補正した状態で再デコードを実行することができるため、再デコードが成功となる可能性を高めることができる。
【００７１】
また、本実施の形態に係るバーコード読み取り装置１によれば、結合部１３は、第１のバーＢａの幅及び第２のバーＢｂの幅の合計の幅と、第３のバーＢｃの幅との比率が、所定範囲内に含まれる場合には、第１のバーＢａと第２のバーＢｂとを結合し、第２のバーＢｂの幅及び第３のバーＢｃの幅の合計の幅と、第１のバーＢａの幅との比率が、所定範囲内に含まれる場合には、第２のバーＢｂと第３のバーＢｃとを結合する。第２のバーＢｂは、第１のバーＢａ又は第３のバーＢｃと結合することができるが、結合した二つのバーの合計の幅と、残りの一つのバーの幅との比率が、二値幅シンボル体系のバーコードにおける幅広のバーＢＷの幅と幅狭のバーＢＮの幅との比率の範囲である所定範囲内に含まれるか否かによって、第２のバーＢｂの結合対象を適切に選択することができる。また、結合部１３は、第１のスペースＳａの幅及び第２のスペースＳｂの幅の合計の幅と、第３のスペースＳｃの幅との比率が、所定範囲内に含まれる場合には、第１のスペースＳａと第２のスペースＳｂとを結合し、第２のスペースＳｂの幅及び第３のスペースＳｃの幅の合計の幅と、第１のスペースＳａの幅との比率が、所定範囲内に含まれる場合には、第２のスペースＳｂと第３のスペースＳｃとを結合する。第２のスペースＳｂは、第１のスペースＳａ又は第３のスペースＳｃと結合することができるが、結合した二つのスペースの合計の幅と、残りの一つのスペースの幅との比率が、二値幅シンボル体系のバーコードにおける幅広のスペースＳＷの幅と幅狭のスペースＳＮの幅との比率の範囲である所定範囲内に含まれるか否かによって、第２のスペースＳｂの結合対象を適切に選択することができる。
【００７２】
また、本実施の形態に係るバーコード読み取り装置１によれば、上記した二通りの結合によっては結合後の幅の比率が所定範囲内に含まれないときには、結合部１３は、第１のバーＢａの幅、第２のバーＢｂの幅、及び第１のバーＢａと第２のバーＢｂとの隙間（スペースＳａｂ）の幅の合計の幅と、第３のバーＢｃの幅との比率が、所定範囲内に含まれる場合には、第１のバーＢａと第２のバーＢｂと当該隙間（スペースＳａｂ）とを結合し、第２のバーＢｂの幅、第３のバーＢｃの幅、及び第２のバーＢｂと第３のバーＢｃとの隙間（スペースＳｂｃ）の幅の合計の幅と、第１のバーＢａの幅との比率が、所定範囲内に含まれる場合には、第２のバーＢｂと第３のバーＢｃと当該隙間（スペースＳｂｃ）とを結合する。このように、白ノイズの幅をも含めて結合することにより、結合後の幅の比率が所定範囲内に含まれることとなる可能性を高めることができる。また、結合部１３は、第１のスペースＳａの幅、第２のスペースＳｂの幅、及び第１のスペースＳａと第２のスペースＳｂとの隙間（バーＢａｂ）の幅の合計の幅と、第３のスペースＳｃの幅との比率が、所定範囲内に含まれる場合には、第１のスペースＳａと第２のスペースＳｂと当該隙間（バーＢａｂ）とを結合し、第２のスペースＳｂの幅、第３のスペースＳｃの幅、及
び第２のスペースＳｂと第３のスペースＳｃとの隙間（バーＢｂｃ）の幅の合計の幅と、第１のスペースＳａの幅との比率が、所定範囲内に含まれる場合には、第２のスペースＳｂと第３のスペースＳｃと当該隙間（バーＢｂｃ）とを結合する。このように、黒ノイズの幅をも含めて結合することにより、結合後の幅の比率が所定範囲内に含まれることとなる可能性を高めることができる。その結果、結合部１３による結合処理が成功となる可能性を高めることが可能となる。
【００７３】
また、本実施の形態に係るバーコード読み取り装置１によれば、バーコード１００に含まれる他のキャラクタのうち少なくとも一つのキャラクタ（上記の例では先頭のキャラクタＣ１）のデコードが成功していることを条件として、再デコードが実行される。従って、一つのキャラクタのデコードも成功しないような規格外のバーコード等に対しては、再デコード及び結合処理が実行されることはないため、無駄な処理が実行されることを回避できる。
【００７４】
また、本実施の形態に係るバーコード読み取り装置１によれば、バーコード１００の再走査においては、前回の走査方向とは逆の走査方向で当該バーコード１００の走査が実行される。バーコード１００の読み取りに一度失敗しても、逆方向から走査することによって読み取りが成功する場合もあり得るため、再走査においては前回の走査方向とは逆の方向からバーコード１００を走査することにより、バーコード１００の読み取りが成功となる可能性が高まる。
【００７５】
＜第２の実施の形態＞
上記第１の実施の形態では、キャラクタ内で連続する３つのバーＢａ，Ｂｂ，Ｂｃを順に抽出してそれらの幅ＷＢａ，ＷＢｂ，ＷＢｃを比較し、比較結果の中に「ＷＢａ＞ＷＢｂ＞ＷＢｃ」又は「ＷＢａ＜ＷＢｂ＜ＷＢｃ」なる関係が含まれている場合に、そのキャラクタのデコードが失敗であると判定した。また、キャラクタ内で連続する３つのスペースＳａ，Ｓｂ，Ｓｃを順に抽出してそれらの幅ＷＳａ，ＷＳｂ，ＷＳｃを比較し、比較結果の中に「ＷＳａ＞ＷＳｂ＞ＷＳｃ」又は「ＷＳａ＜ＷＳｂ＜ＷＳｃ」なる関係が含まれている場合に、そのキャラクタのデコードが失敗であると判定した。第２の実施の形態では、第１の実施の形態とは異なる方法によってデコードの成功／失敗を判定する手法について説明する。第２の実施の形態に係るバーコード読み取り装置１の構成は、図２に示した構成と同様である。
【００７６】
図１１は、制御部４によるデコード処理の流れを詳細に示すフローチャートである。まずステップＳＰ６１において幅検出部１１は、キャラクタ内に含まれる各バーの幅を検出する。
【００７７】
図１２は、キャラクタ内で連続する２つのバーを拡大して示す図である。図１２の（Ａ）には白ノイズが生じていない２つのバーＢａ，Ｂｂを示しており、図１２の（Ｂ）には、図１２の（Ａ）に示したバーＢａ内に白ノイズ（スペースＳａｂ）が生じている状態を示している。図１２の（Ａ）に示すようにバーＢａは本来は単一のバーであるところ、そのバーＢａ内に白ノイズ（スペースＳａｂ）が生じていることに起因して、幅検出部１１は、図１２の（Ａ）に示したバーＢａを、図１２の（Ｂ）に示すように２本のバーＢａ，Ｂｂとして認識する。
【００７８】
次にステップＳＰ６２において判定部１２は、キャラクタ内で連続する２つのバーＢａ，Ｂｂを順に抽出して、それらの幅ＷＢａ，ＷＢｂを比較する。
【００７９】
次にステップＳＰ６３において判定部１２は、「ＷＢａ／ＷＢｂ」及び「ＷＢｂ／ＷＢａ」なる演算を行う。そして、判定部１２は、その演算の結果として得られる値の一方が
、所定範囲内に含まれているか否かを判定する。ここでの所定範囲は、幅狭のバーＢＮに対する幅広のバーＢＷの比率である例えば「２〜５」、又は、幅狭のバーＢＮ（若しくは幅広のバーＢＷ）に対する幅狭のバーＢＮ（若しくは幅広のバーＢＷ）の比率である約「１」に設定されている。つまり、所定範囲は「１，２〜５」に設定されている。但し、誤差を考慮してある程度の幅を持たせても良く、例えば「０．９〜１．１，２〜５」に設定しても良い。
【００８０】
そのキャラクタ内の全てのバーに関して「ＷＢａ／ＷＢｂ」又は「ＷＢｂ／ＷＢａ」の値が上記の所定範囲内に含まれている場合（つまりステップＳＰ６３における判定の結果が「ＹＥＳ」である場合は、判定部１２は、そのキャラクタのデコードが成功であると判定する。図１２の（Ａ）に示した例では、「ＷＢｂ／ＷＢａ」の値が上記の所定範囲内に含まれる。
【００８１】
一方、そのキャラクタ内のいずれかの２つのバーに関して「ＷＢａ／ＷＢｂ」及び「ＷＢｂ／ＷＢａ」の双方の値が上記の所定範囲内に含まれていない場合（つまりステップＳＰ６３における判定の結果が「ＮＯ」である場合は、判定部１２は、そのキャラクタのデコードが失敗であると判定する。図１２の（Ｂ）に示した例では、「ＷＢａ／ＷＢｂ」及び「ＷＢｂ／ＷＢａ」の各値はいずれも上記の所定範囲内に含まれないため、そのキャラクタのデコードは失敗と判定される。
【００８２】
図１１ではバーに着目した場合のキャラクタのデコード処理を示したが、スペースに関しても同様のデコード処理が実行される。図１３は、制御部４によるデコード処理の流れを詳細に示すフローチャートである。まずステップＳＰ７１において幅検出部１１は、キャラクタ内に含まれる各スペースの幅を検出する。
【００８３】
図１４は、キャラクタ内で連続する２つのスペースを拡大して示す図である。図１４の（Ａ）には黒ノイズが生じていない２つのスペースＳａ，Ｓｂを示しており、図１４の（Ｂ）には、図１４の（Ａ）に示したスペースＳａ内に黒ノイズ（バーＢｎ）が生じている状態を示している。図１４の（Ａ）に示したスペースＳａ内に黒ノイズ（バーＢｎ）が生じていることに起因して、図１４の（Ｂ）に示すように幅検出部１１は、スペースＳａの幅ＷＳａを、図１４の（Ａ）に示した本来の幅ＷＳａよりも狭い幅として認識する。
【００８４】
次にステップＳＰ７２において判定部１２は、キャラクタ内で連続する２つのスペースＳａ，Ｓｂを順に抽出して、それらの幅ＳＢａ，ＳＢｂを比較する。
【００８５】
次にステップＳＰ７３において判定部１２は、「ＷＳａ／ＷＳｂ」及び「ＷＳｂ／ＷＳａ」なる演算を行う。そして、判定部１２は、その演算の結果として得られる値の一方が、所定範囲内に含まれているか否かを判定する。ここでの所定範囲は、幅狭のスペースＳＮに対する幅広のスペースＳＷの比率である例えば「２〜５」、又は、幅狭のスペースＳＮ（若しくは幅広のスペースＳＷ）に対する幅狭のスペースＳＮ（若しくは幅広のスペースＳＷ）の比率である約「１」に設定されている。つまり、所定範囲は「１，２〜５」に設定されている。但し、誤差を考慮してある程度の幅を持たせても良く、例えば「０．９〜１．１，２〜５」に設定しても良い。
【００８６】
そのキャラクタ内の全てのスペースに関して「ＷＳａ／ＷＳｂ」又は「ＷＳｂ／ＷＳａ」の値が上記の所定範囲内に含まれている場合（つまりステップＳＰ７３における判定の結果が「ＹＥＳ」である場合は、判定部１２は、そのキャラクタのデコードが成功であると判定する。図１４の（Ａ）に示した例では、「ＷＳｂ／ＷＳａ」の値が上記の所定範囲内に含まれる。
【００８７】
一方、そのキャラクタ内のいずれかの２つのスペースに関して「ＷＳａ／ＷＳｂ」及び「ＷＳｂ／ＷＳａ」の双方の値が上記の所定範囲内に含まれていない場合（つまりステップＳＰ７３における判定の結果が「ＮＯ」である場合は、判定部１２は、そのキャラクタのデコードが失敗であると判定する。図１４の（Ｂ）に示した例では、「ＷＳａ／ＷＳｂ」及び「ＷＳｂ／ＷＳａ」の各値はいずれも上記の所定範囲内に含まれないため、そのキャラクタのデコードは失敗と判定される。
【００８８】
本実施の形態に係るバーコード読み取り装置１によれば、判定部１２は、連続する第１のバーＢａと第２のバーＢｂとに関して、第１のバーＢａの幅と第２のバーＢｂの幅との比率が所定範囲内に含まれない場合には、当該キャラクタのデコードを失敗と判定する。正常な二値幅シンボル体系のバーコードにおいては、幅広のバーＢＷの幅と幅狭のバーＢＮの幅との比率が所定範囲内に収まるはずであるため、判定部１２は、第１のバーＢａの幅と第２のバーＢｂの幅との比率が所定範囲内に収まらないことを以て、そのキャラクタに白ノイズが生じていることを検出することができる。また、判定部１２は、連続する第１のスペースＳａと第２のスペースＳｂとに関して、第１のスペースＳａの幅と第２のスペースＳｂの幅との比率が所定範囲内に含まれない場合には、当該キャラクタのデコードを失敗と判定する。正常な二値幅シンボル体系のバーコードにおいては、幅広のスペースＳＷの幅と幅狭のスペースＳＮの幅との比率が所定範囲内に収まるはずであるため、判定部１２は、第１のスペースＳａの幅と第２のスペースＳｂの幅との比率が所定範囲内に収まらないことを以て、そのキャラクタに黒ノイズが生じていることを検出することができる。そして、白ノイズ又は黒ノイズを検出したキャラクタのデコードについては、そのデコードを失敗と判定することにより、誤ったデコードがなされることを回避することができる。
【００８９】
なお、デコードが失敗であると判定されたキャラクタについては、上記第１の実施の形態と同様に、結合部１３による結合処理を行っても良い。
【００９０】
また、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【００９１】
１  バーコード読み取り装置
４  制御部
６  記憶部
１０  デコード部
１１  幅検出部
１２  判定部
１３  結合部
１４  プログラム
１００  バーコード
【図１】
2010176581.tif 000003
【図２】
2010176581.tif 000004
【図３】
2010176581.tif 000005
【図４】
2010176581.tif 000006
【図５】
2010176581.tif 000007
【図６】
2010176581.tif 000008
【図７】
2010176581.tif 000009
【図８】
2010176581.tif 000010
【図９】
2010176581.tif 000011
【図１０】
2010176581.tif 000012
【図１１】
2010176581.tif 000013
【図１２】
2010176581.tif 000014
【図１３】
2010176581.tif 000015
【図１４】
2010176581.tif 000016