説明

光学的情報読取装置

【課題】読取精度の低下を抑制し得る光学的情報読取装置を提供する。
【解決手段】各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各バーの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、失敗キャラクタに対してその読取方向に隣接する一組のバーb4およびスペースs4を加えた欠損キャラクタが生成される。そして、生成された欠損キャラクタに対して、当該欠損キャラクタを構成する各スペースのいずれか1つとこのスペースの両側にそれぞれ隣接する両バーとを1つのバーとする仮補正キャラクタが、当該スペースごとに設定される。そして、バーコードC(各キャラクタ)のデコードが失敗した場合に、この失敗キャラクタについて生成された欠損キャラクタに対して仮補正した各仮補正キャラクタを、それぞれデコードする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バーコードの読み取りを行う光学的情報読取装置に関するものである。
【背景技術】
【0002】
従来、バーコードの読み取りを行う光学的情報読取装置として、下記特許文献1に示すバーコード読み取り装置が知られている。このバーコード読み取り装置は、モジュール値識別部がバーコードシンボルの各モジュールの値の信頼度を求めた後、キャラクタ生成部が各キャラクタの値の信頼度を求め、その信頼度に基づいて、キャラクタ消失判定部が各キャラクタが誤りであるかどうかを判定する。この判定結果に応じて、キャラクタ系列における消失誤りの場所を特定し、消失誤りを考慮した誤り訂正を行うことによって、汚れやかすれ等のあるバーコードシンボルの読み取りを可能にしている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−111904号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、例えば、バーコードが印字されるバーコードラベルを作成する場合、印刷機の不良などによりバーコードラベルに印字されるバーコードにドット欠けが生じる場合がある。このようにバーコードにドット欠けが生じると、このドット欠け部分を含む走査線に対して読取処理が実施される場合に、当該読取処理が失敗する確率が高くなることから、読取精度が低下するという問題がある。
【0005】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、読取精度の低下を抑制し得る光学的情報読取装置を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、特許請求の範囲に記載の請求項1の光学的情報読取装置では、1または2以上の単位モジュールからなる暗色モジュールおよび明色モジュールが所定数配列されて構成されるキャラクタを複数有するバーコードを読み取り可能な光学的情報読取装置であって、前記バーコードからの反射光を受光する受光手段と、前記受光手段から出力される受光信号に基づいて前記各暗色モジュールおよび各明色モジュールの幅値をそれぞれ演算するとともに前記単位モジュールの幅値であるモジュール幅値を演算する幅値演算手段と、前記各暗色モジュールおよび各明色モジュールの幅値に基づいて前記各キャラクタをデコードするデコード手段と、前記デコード手段により前記各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各暗色モジュールの1つのうち両端部を除く内部が前記モジュール幅値の半分だけ欠損することを前提に、前記失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタを生成する生成手段と、前記生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか1つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを1つの暗色モジュールとする仮補正キャラクタを、当該明色モジュールごとに設定する仮補正手段と、を備え、前記デコード手段は、前記キャラクタのデコードが失敗した場合に、この失敗キャラクタについて前記生成手段により生成されたキャラクタに対して前記仮補正手段により仮補正した前記各仮補正キャラクタを、それぞれデコードすることを特徴とする。
【0007】
請求項2の発明は、請求項1に記載の光学的情報読取装置において、前記生成手段により生成されたキャラクタの幅値と、前記デコード手段によりデコードが成功したキャラクタの幅値から求められる基準幅値との差を比較する比較手段を備え、前記仮補正手段は、前記比較手段の比較結果により前記基準幅値との差が小さいキャラクタに対してのみ前記各仮補正キャラクタを設定することを特徴とする。
【発明の効果】
【0008】
請求項1の発明では、デコード手段により各キャラクタのいずれかのデコードが失敗した場合に、生成手段により、この失敗キャラクタを構成する各暗色モジュールの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタが生成される。そして、仮補正手段により、生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか1つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを1つの暗色モジュールとする仮補正キャラクタが、当該明色モジュールごとに設定される。そして、デコード手段は、キャラクタのデコードが失敗した場合に、この失敗キャラクタについて生成手段により生成されたキャラクタに対して仮補正手段により仮補正した各仮補正キャラクタを、それぞれデコードする。
【0009】
このため、例えばドット欠けが生じたバーコードを読み取る際に、このドット欠けに起因して各暗色モジュールの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損したことによりキャラクタのデコード処理が失敗した場合でも、この失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加え、このキャラクタのいずれかの暗色モジュールの欠損を仮定してその欠損をなくすように仮補正手段により仮補正した各仮補正キャラクタのいずれか1つのみが欠損のない本来のキャラクタに一致するので、この仮補正キャラクタを含むバーコードではデコード処理が成功することとなる。
したがって、暗色モジュールの欠損に起因する読取精度の低下を抑制することができる。
【0010】
なお、各単位モジュールが3つ以上のドット列で構成されており暗色モジュールの欠損がモジュール幅値の半分未満であれば、この欠損した暗色モジュールや隣接する明色モジュールの幅値に対応してデコードされた値が欠損しない場合の値と変化しないため、この暗色モジュールの欠損に起因してデコード処理が失敗することもない。
【0011】
請求項2の発明では、生成手段により生成されたキャラクタの幅値と、デコードが成功したキャラクタの幅値から求められる基準幅値との差が小さいキャラクタに対してのみ、各仮補正キャラクタが設定される。
【0012】
上述のようなドット欠けと異なる要因にてデコードが失敗している場合に、失敗キャラクタの読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えると、上述のような仮補正キャラクタを複数設定してもデコード処理は成功しない。そこで、失敗キャラクタの読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタの幅値と基準幅値との差が大きくなる場合には、生成されたキャラクタの幅値が本来のキャラクタの幅値に一致するとみなされないとして仮補正キャラクタを設定しないことで、不要な処理を無くすことができる。
【図面の簡単な説明】
【0013】
【図1】本実施形態に係る光学的情報読取装置の電気的構成を示すブロック図である。
【図2】正常キャラクタおよび各欠損キャラクタを例示する概念図である。
【図3】図2の各キャラクタにおけるバーおよびスペースの幅値を例示する図表である。
【図4】図2の各キャラクタにおける各隣接モジュールの幅値を例示する図表である。
【図5】キャラクタの幅値と閾値との関係を例示する図表である。
【図6】制御回路による読取処理の流れを例示するフローチャートの一部である。
【図7】制御回路による読取処理の流れを例示するフローチャートの一部である。
【図8】図7の仮補正処理のサブルーチンを例示するフローチャートである。
【図9】図9(A)は、欠損キャラクタ1を例示する概念図であり、図9(B)は、図9(A)の欠損キャラクタ1におけるバーおよびスペースの幅値を例示する図表であり、図9(C)は、欠損キャラクタ1を仮補正した各仮補正キャラクタを例示する概念図であり、図9(D)は、図9(C)の各仮補正キャラクタにおける隣接モジュールの幅値を例示する図表である。
【発明を実施するための形態】
【0014】
以下、本発明の光学的情報読取装置を具現化した一実施形態について図を参照して説明する。図1は、本実施形態に係る光学的情報読取装置10の電気的構成を示すブロック図である。
【0015】
図1に示すように、光学的情報読取装置10は、物品に付されたバーコード(図1では物品Rに付されたバーコードCを例示)を読み取る装置として構成されている。この光学的情報読取装置10は、図示しないケースの内部に回路部20が収容されてなるものであり、回路部20は、主に、照明光源21、受光センサ28、結像レンズ27等の光学系と、メモリ35、制御回路40、トリガースイッチ42等のマイクロコンピュータ(以下「マイコン」という)系と、から構成されている。
【0016】
光学系は、投光光学系と、受光光学系とに分かれている。投光光学系を構成する照明光源21は、照明光Lfを発光可能な照明光源として機能するもので、例えば、赤色のLEDとこのLEDの出射側に設けられるレンズとから構成されている。なお、図1では、バーコードCが付された物品Rに向けて照明光Lfを照射する例を概念的に示している。
【0017】
受光光学系は、受光センサ28、結像レンズ27、反射鏡(図示略)などによって構成されている。受光センサ28は、CCDエリアセンサとして構成されるものであり、バーコードCに照射されて反射した反射光Lrを受光可能に構成されている。この受光センサ28は、結像レンズ27を介して入射する入射光を受光可能にプリント配線板(図示略)に実装されている。なお、受光センサ28は、特許請求の範囲に記載の「受光手段」に相当し得るものである。
【0018】
結像レンズ27は、外部から読取口(図示略)を介して入射する入射光を集光して受光センサ28の受光面28aに像を結像可能な結像光学系として機能するものである。本第1実施形態では、照明光源21から照射された照明光LfがバーコードCにて反射した後、この反射光Lrを結像レンズ27で集光し、受光センサ28の受光面28aにコード像を結像させている。
【0019】
マイコン系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、トリガースイッチ42、発光部43、ブザー44、バイブレータ45、液晶表示器46、通信インタフェース48等から構成されている。
【0020】
光学系の受光センサ28から出力される画像信号(アナログ信号)は、増幅回路31に入力されることで所定ゲインで増幅された後、A/D変換回路33に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ(画像情報)は、生成されてメモリ35に入力されると、所定のコード画像情報格納領域に蓄積される。なお、同期信号発生回路38は、受光センサ28およびアドレス発生回路36に対する同期信号を発生可能に構成されており、またアドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像データの格納アドレスを発生可能に構成されている。
【0021】
制御回路40は、光学的情報読取装置10全体を制御可能なマイコンによって構成されており、CPU、システムバス、入出力インタフェース等を有すると共に、情報処理機能を備えており、メモリ35とともに情報処理装置を構成している。本第1実施形態では、制御回路40に対し、トリガースイッチ42、発光部43、ブザー44、バイブレータ45、液晶表示器46、通信インタフェース48等が接続されている。
【0022】
これにより、制御回路40は、例えば、トリガースイッチ42の監視や管理、バーコードCの読み取りに関する情報を報知するインジケータとして機能する発光部43の点灯・消灯、ビープ音やアラーム音を発生可能なブザー44の鳴動のオンオフ、当該光学的情報読取装置10の使用者に伝達し得る振動を発生可能なバイブレータ45の駆動制御、液晶表示器46の表示制御や外部装置とのシリアル通信を可能にする通信インタフェース48の通信制御等を可能にしている。
【0023】
次に、本実施形態における光学的情報読取装置10の制御回路40にて実行される読取処理について説明する。図2は、正常キャラクタおよび各欠損キャラクタを例示する概念図である。図3は、図2の各キャラクタにおけるバーおよびスペースの幅値を例示する図表である。図4は、図2の各キャラクタにおける各隣接モジュールの幅値を例示する図表である。図5は、キャラクタの幅値と閾値との関係を例示する図表である。図6および図7は、制御回路40による読取処理の流れを例示するフローチャートである。図8は、図7の仮補正処理のサブルーチンを例示するフローチャートである。なお、図3および図4の図表では、バーのドット欠けが影響する値を太枠で囲っている。
【0024】
本実施形態における読取処理では、通常のデコード処理が失敗した場合に、バーコードCを構成する各キャラクタの少なくともいずれか1つのキャラクタのバーにドット欠け(欠損)が生じており、かつ、各キャラクタの単位モジュールが2つのドット列により構成されているためデコード処理が失敗したものと仮定する。そして、この失敗キャラクタを構成する各バーの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、このドット欠けをなくすように失敗キャラクタを仮補正することで、ドット欠けに起因するデコード処理の失敗をなくし、読取精度の低下を抑制する。なお、各単位モジュールが3つ以上のドット列で構成されておりバーのドット欠けが単位モジュールの幅値の半分未満であれば、このドット欠けが生じたバーや隣接するスペースの各幅値に対応してデコードされた値が欠損しない場合の値と変化しないため、このバーのドット欠けに起因してデコード処理が失敗することもない。なお、バーおよびスペースは、特許請求の範囲に記載の「暗色モジュール」および「明色モジュール」の一例に相当する。
【0025】
具体的には、本実施形態では、読取対象のバーコードCの規格として、例えば、バーとこのバーに隣接するスペースとを一組とする隣接モジュールの幅値と所定の閾値とに応じてデコード処理がなされるコード128が想定されており、各キャラクタは、3本のバーと3本のスペースとが4種類のモジュールサイズ(幅)でそれぞれ構成されている。以下、ドット欠けが生じていない本来の1キャラクタを構成する読取方向1〜3番目のバーをB1〜B3、読取方向1〜3番目のスペースをS1〜S3とし、バーB1およびスペースS1の組合せを読取方向1番目の隣接モジュールK1、スペースS1およびバーB2の組合せを読取方向2番目の隣接モジュールK2、バーB2およびスペースS2の組合せを読取方向3番目の隣接モジュールK3、スペースS2およびバーB3の組合せを読取方向4番目の隣接モジュールK4と定義する。
【0026】
実際の受光時におけるバーコードCの読み取りライン上において、バーの内部にドット欠けが生じていると、1つのバーが1つのスペースとこのスペースの両側にそれぞれ隣接する両バーとに分離されるために、本来の1キャラクタが占める領域に4本のバーと4本のスペースとが存在することとなる。この場合に、これら4本のバーおよび4本のスペースのうち読取方向1〜3番目までの3本のバーおよび3本のスペースが1つのキャラクタを構成するものとしてデコードされてしまうため、デコードが失敗してしまう。
【0027】
そこで、本来のキャラクタの全てのバーのうちいずれか1つのバーの両端部を除く内部にドット欠けが1箇所生じている場合を仮定し、それぞれ図2に例示するように、複数の欠損キャラクタ(図2では6つ欠損キャラクタ1〜6)を想定する。すなわち、失敗キャラクタを構成する3本のバーb1〜b3および3本のスペースs1〜s3に、この失敗キャラクタの読取方向側(図2にて右側)に位置する1本のバーb4および1本のスペースs4を加えて、図2に示す4本のバーb1〜b4と4本のスペースs1〜s4とからなる欠損キャラクタをそれぞれ生成する。
【0028】
このように生成された各欠損キャラクタにおいて、仮定されたドット欠けに相当するスペースとこのスペースの両側にそれぞれ隣接する両バーとを1つのバーとして仮補正される仮補正キャラクタを、各欠損キャラクタごとに設定する。そして、このようにそれぞれ仮補正した各仮補正キャラクタのうち、コード128の規格を満たすキャラクタに一致する仮補正キャラクタを、ドット欠けをなくした本来のキャラクタとして設定する。なお、図2の最上段のキャラクタは、ドット欠けが生じていない本来のキャラクタを示す。また、図2の例では、バーB2が単位モジュールであり2つのドット列により構成されると仮定されているため、バーB2では内部のドット欠けが生じない。
【0029】
上述のような補正方法について、図2〜図5を用いてより詳細に説明する。
各バーおよび各スペースを構成する単位モジュールの幅値を100とする場合に、上述のように生成された各キャラクタにおける各バーb1〜b4および各スペースs1〜s4の幅値は、理論上、図3に示す幅値となる。ここで、図3の左から7列目の1charは、本来のキャラクタの幅値または失敗キャラクタの幅値を示しており、図3の最右列の1charは、失敗キャラクタにバーb4およびスペースs4を加えて生成された欠損キャラクタの幅値を示している。
【0030】
このため、図2に示すようにドット欠けが生じていると、各隣接モジュールの幅値は、理論上、図4に示す幅値となり、ドット欠けの影響を受けた値となる。なお、各隣接モジュールは、ドット欠けの影響を受けているため、k1〜k4を用いて表示している。このとき、バーおよびスペースのモジュールサイズ(幅)を判定するための閾値は、バーb1〜b3およびスペースs1〜s3にて構成されるキャラクタ(失敗キャラクタ)の全長を単位モジュールによる構成数(本実施形態では11)で除算して求められるため、図5に示す値となる。例えば、欠損キャラクタ1にて幅値が95以上159未満であれば、モジュールサイズが2に設定され、欠損キャラクタ6にて幅値が216以上302未満であれば、モジュールサイズが3に設定される。
【0031】
このため、読取方向1番目のバーB1の内部にドット欠けが1箇所生じていることを前提にする場合、バーb1からスペースs2までの組合せを隣接モジュールK1、スペースs2およびバーb3の組合せを隣接モジュールK2、バーb3およびスペースs3の組合せを隣接モジュールK3、スペースs3およびバーb4の組合せを隣接モジュールK4として、仮補正して第1仮補正キャラクタを設定する。
【0032】
また、読取方向2番目のバーB2の内部にドット欠けが1箇所生じていることを前提にする場合、バーb1およびスペースs1の組合せを隣接モジュールK1、スペースs1からバーb3までの組合せを隣接モジュールK2、バーb2からスペースs3までの組合せを隣接モジュールK3、スペースs3およびバーb4の組合せを隣接モジュールK4として、仮補正して第2仮補正キャラクタを設定する。
【0033】
また、読取方向3番目のバーB3の内部にドット欠けが1箇所生じていることを前提にする場合、バーb1およびスペースs1の組合せを隣接モジュールK1、スペースs1およびバーb2の組合せを隣接モジュールK2、バーb2およびスペースs2の組合せを隣接モジュールK3、スペースs2からバーb4までの組合せを隣接モジュールK4として、仮補正して第3仮補正キャラクタを設定する。
【0034】
上述のように複数のパターンで仮補正した各仮補正キャラクタがコード128の規格を満たすキャラクタに一致するか否かが順次判定され、規格に一致すると判定された仮補正キャラクタが、ドット欠けをなくした本来のキャラクタとして設定される。このような補正を各キャラクタごとに実施することにより、ドット欠けに起因するデコード処理の失敗をなくしている。
【0035】
以下、本実施形態における読取処理について、図6および図7に示すフローチャートを用いて詳細に説明する。
まず、制御回路40では、図6のステップS101において、画像データ取得処理がなされる。この処理では、トリガースイッチ42の操作に応じて照明光源21から照明光Lfが照射されてバーコードCにより反射された反射光Lrが受光センサ28に受光されることにより、バーコードCを含む画像データが取得される。
【0036】
次に、ステップS103にて幅値演算処理がなされ、上記画像データに含まれるバーコードCの各キャラクタを構成するバーおよびスペースの各幅値がそれぞれ演算される。なお、ステップS103を実行する制御回路40は、特許請求の範囲に記載の「幅値演算手段」の一例に相当する。
【0037】
次に、ステップS105にて上述したバーおよびスペースの各幅値から算出される各隣接モジュールの幅値に基づいてバーコードCに対して公知のデコード処理がなされる。このデコード処理が成功した場合には、ステップS107にてYesと判定されて、図7のステップS123にてデコード成功時の処理がなされて、当該読取処理が終了する。なお、ステップS105および後述するステップS119を実行する制御回路40は、特許請求の範囲に記載の「デコード手段」の一例に相当する。
【0038】
一方、デコード処理が失敗した場合には(S107でNo)、ステップS109にて上記画像データに基づいて当該バーコードCを構成するキャラクタの総数であるmが設定されるとともに、ステップS111にて当該バーコードCにおいて仮補正処理の対象となるキャラクタの読取方向における順番を示すmがm=1に設定される。なお、ステップS109にて上記画像データに基づいてキャラクタ総数mの設定ができない場合には、当該読取処理を終了するようにしてもよい。
【0039】
次に、図7のステップS113において、m番目のキャラクタがコード128の規格を満たすキャラクタに一致するか否かが判定される。現段階ではm=1であり、読取方向1番目のキャラクタがコード128の規格を満たすキャラクタに一致すると判定される場合には、当該キャラクタではバーのドット欠けが生じておらず、ステップS113にてYesと判定される。すなわち、読取方向m番目のキャラクタが規格を満たすキャラクタに一致しない場合のみ、当該m番目のキャラクタに対して後述する仮補正処理のサブルーチンが実行されることとなる。
【0040】
一方、読取方向m番目のキャラクタが規格を満たすキャラクタに一致しない場合には(S113でNo)、本来のキャラクタを構成していたいずれか1つのバーの両端部を除く内部にドット欠けが1箇所生じており、かつ、各キャラクタの単位モジュールが2つのドット列により構成されていることを前提に、ステップS200において、仮補正処理のサブルーチンが実行される。なお、ステップS200を実行する制御回路40は、特許請求の範囲に記載の「仮補正手段」の一例に相当する。
【0041】
この仮補正処理のサブルーチンでは、まず、図8のステップS201において、欠損キャラクタ生成処理がなされる。この処理では、ステップS113にてNoと判定された失敗キャラクタに対して読取方向側に位置する1本のバー(b4)および1本のスペース(s4)を加えて、欠損キャラクタが生成される。なお、ステップS201を実行する制御回路40は、特許請求の範囲に記載の「生成手段」の一例に相当する。
【0042】
続いて、ステップS203において、欠損キャラクタの幅値Xと基準幅値Xoとの差の絶対値が所定の閾値Xtよりも小さいか否かについて判定される。ここで、基準幅値Xoは、例えば、前回デコードが成功したキャラクタの幅値に設定され、閾値Xtは、欠損キャラクタの幅値Xが基準幅値Xoに一致する(ほぼ等しい)とみなされる値として、例えば、基準幅値Xoの10%に設定される。
【0043】
上述のようなドット欠けと異なる要因にてデコードが失敗している場合、失敗キャラクタの読取方向に隣接する一組のバーおよびスペースを加えた欠損キャラクタの幅値Xが基準幅値Xoの110%以上になることが想定される。また、本来のキャラクタのバーが2箇所以上欠損している場合や、読取対象のバーコードCに対して読取口が傾いているために画像データでの読取方向の一方の幅値が他方の幅値よりも長くなってしまう場合、読取対象のバーコードCが湾曲している場合などにも、欠損キャラクタの幅値Xと基準幅値Xoとの差の絶対値が所定の閾値Xt以上になることが想定される。このような場合には仮補正キャラクタを設定してもデコードが成功しないので、不要な処理をなくすために、欠損キャラクタの幅値Xと基準幅値Xoとの差の絶対値が所定の閾値Xtより小さくなることを要件としている。なお、ステップS203を実行する制御回路40は、特許請求の範囲に記載の「比較手段」の一例に相当する。
【0044】
ここで、欠損キャラクタの幅値Xと基準幅値Xoとの差の絶対値が所定の閾値Xt以上であると、ステップS203にてNoと判定される。この場合には、デコード失敗がドット欠けに起因していないと判断されるため、仮補正処理のサブルーチンを終了し、図7のステップS125にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【0045】
一方、欠損キャラクタの幅値Xと基準幅値Xoとの差の絶対値が所定の閾値Xtよりも小さい場合には(S203でYes)、ステップS205において、m番目のキャラクタ、現段階では配列方向において1番目のキャラクタを構成するバーの総数であるnが設定される。具体的には、図2から判るように、n=3が設定される。そして、ステップS207において、本来のキャラクタに対して、ドット欠けが仮定されるバーを示す番号であるnがn=1に設定される。
【0046】
次に、ステップS209において、仮補正キャラクタ設定処理がなされる。この処理では、本来のキャラクタに対して読取方向n番目のバーの内部にドット欠けが生じていることを前提に、ステップS201にて生成された欠損キャラクタに対して、仮定されたドット欠けに相当するスペースとこのスペースの両側にそれぞれ隣接する両バーとを1つのバーとして仮補正することで、仮補正キャラクタが設定される。
【0047】
現段階ではn=1であるため、読取方向1番目のバーB1の内部にドット欠けが生じていることを前提に、バーb1、スペースs1およびバーb2を1つのバーB1と仮補正し、スペースs2、バーb3、スペースs3、バーb4およびスペースs4を、それぞれ、スペースS1、バーB2、スペースS2、バーB3およびスペースS3とする第1仮補正キャラクタが設定される。この第1仮補正キャラクタおよび第2,3仮補正キャラクタは、特許請求の範囲に記載の「仮補正キャラクタ」の一例に相当する。
【0048】
続いて、ステップS211において、閾値算出処理がなされる。この処理では、上述のように設定された仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。
【0049】
そして、ステップS213において、ステップS209にて設定された仮補正キャラクタを構成する各バーおよびスペースとステップS211にて算出された閾値との比較により、仮補正キャラクタがコード128の規格を満たすキャラクタに一致するか否かについて判定される。具体的には、仮補正キャラクタのバーB1〜B3およびスペースS1〜S3のモジュールサイズを求めて、これらモジュールサイズの構成パターンから設定された上記各隣接モジュールK1〜K4の幅値がコード128の規格を満たすパターンに一致するか否かについて判定される。
【0050】
ここで、第1仮補正キャラクタにおける上記隣接モジュールK1〜K4がコード128の規格を満たすパターンと一致すると判定されない場合には、ステップS213にてNoと判定される。そして、ステップS215にてn=nでないことからNoと判定されて、ステップS217にてnに1が加算され、再び上記ステップS209からの処理がなされる。
【0051】
この段階ではn=2であることから、ステップS209では、読取方向2番目のバーB2の内部にドット欠けが生じていることを前提に、バーb2、スペースs2およびバーb3を1つのバーB2と仮補正し、バーb1、スペースs1、スペースs3、バーb4およびスペースs4を、それぞれ、バーB1、スペースS1、スペースS2、バーB3およびスペースS3とする第2仮補正キャラクタが設定される。
【0052】
続いて、ステップS211において、上記第2仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。そして、ステップS213にて、上記閾値との比較から第2仮補正キャラクタにおける上記隣接モジュールK1〜K4がコード128の規格を満たすパターンと一致すると判定されない場合には、ステップS213にてNoと判定される。そして、ステップS215にてn=nでないことからNoと判定されて、ステップS217にてnに1がさらに加算され、再び上記ステップS209からの処理がなされる。
【0053】
この段階ではn=3であることから、ステップS209では、読取方向3番目のバーB3の内部にドット欠けが生じていることを前提に、バーb3、スペースs3およびバーb4を1つのバーB3と仮補正し、バーb1、スペースs1、バーb2、スペースs2およびスペースs4を、それぞれ、バーB1、スペースS1、バーB2、スペースS2およびスペースS3とする第3仮補正キャラクタが設定される。
【0054】
続いて、ステップS211にて上記第3仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。そして、ステップS213にて、上記閾値との比較から第3仮補正キャラクタにおける上記隣接モジュールK1〜K4がコード128の規格を満たすパターンと一致すると判定されない場合には、ステップS213にてNoと判定される。そして、ステップS215にてn=nであることからYesと判定されて、仮補正処理のサブルーチンを終了し、図7のステップS125にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【0055】
一方、ステップS209にて仮補正されたいずれかの仮補正キャラクタにおける隣接モジュールK1〜K4がコード128の規格を満たすパターンに一致する場合には、ステップS213にてYesと判定される。そして、ステップS219にてキャラクタ置換処理がなされて、規格を満たす仮補正キャラクタに関するデータが補正後のキャラクタに関するデータに置換されてメモリ35等に記憶される。これにより、仮補正処理のサブルーチンが終了する。この場合、置換されたキャラクタの読取方向側に位置するキャラクタは、当該置換されたキャラクタの読取方向側に位置するバーを読取方向1番目のバーB1とするように構成される。
【0056】
ここで、仮補正キャラクタにおける隣接モジュールK1〜K4がコード128の規格を満たすパターンに一致する場合について、図9(A)〜(D)を用いて具体的に説明する。
図9(A)は、欠損キャラクタ1を例示する概念図であり、図9(B)は、図9(A)の欠損キャラクタ1におけるバーおよびスペースの幅値を例示する図表であり、図9(C)は、欠損キャラクタ1を仮補正した各仮補正キャラクタを例示する概念図であり、図9(D)は、図9(C)の各仮補正キャラクタにおける隣接モジュールの幅値を例示する図表である。
【0057】
例えば、図9(A)に例示するようにバーB1にドット欠けが生じていると、失敗キャラクタを構成する3本のバーb1〜b3および3本のスペースs1〜s3の幅値と、この失敗キャラクタの読取方向側に位置する1本のバーb4および1本のスペースs4の幅値とは、理論上、図9(B)に示す値となる。
【0058】
そして、上述のようなステップS209からの繰り返し処理において、仮に、上述した3つの仮補正キャラクタが、図9(C)に例示するように、それぞれ設定されたとすると、各仮補正キャラクタにおける各隣接モジュールK1〜K4の幅値は、理論上、図9(D)に例示する値となる。この場合、第1仮補正キャラクタにおける各隣接モジュールK1〜K4の幅値がコード128の規格を満たすパターンに一致し、第2,3仮補正キャラクタでは一致しないことから、当該第1仮補正キャラクタに関するデータがメモリ35等に記憶されて、仮補正処理のサブルーチンが終了する。
【0059】
上述のように仮補正後のキャラクタがコード128の規格を満たすキャラクタに一致することにより仮補正処理のサブルーチンが終了すると、図7のステップS115にてm=mであるか否かについて判定される。この段階では、m=1であることから(S115でNo)、ステップS117にてmに1が加算されて、2番目のキャラクタに対して上記ステップS113からの処理が繰り返される。
【0060】
そして、バーコードCを構成する全キャラクタのうちコード128の規格を満たすキャラクタに一致しない全ての対象キャラクタに対して仮補正がなされると、ステップS115にてYesと判定されて、ステップS119にて当該バーコードCに対して再度デコード処理がなされる。これにより、上記ステップS107におけるデコード失敗がドット欠けのみに起因するものである場合には、デコード処理が成功することからステップS121にてYesと判定されて、ステップS123にてデコード成功時の処理がなされて、当該読取処理が終了する。
【0061】
一方、ドット欠けとは異なる要因によりデコード失敗している場合には、ステップS121にてNoと判定されて、ステップS125にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【0062】
以上説明したように、本実施形態に係る光学的情報読取装置10では、各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各バーの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、失敗キャラクタに対してその読取方向に隣接する一組のバーb4およびスペースs4を加えた欠損キャラクタが生成される。そして、生成された欠損キャラクタに対して、当該欠損キャラクタを構成する各スペースのいずれか1つとこのスペースの両側にそれぞれ隣接する両バーとを1つのバーとする仮補正キャラクタが、当該スペースごとに設定される。そして、バーコードC(各キャラクタ)のデコードが失敗した場合に、この失敗キャラクタについて生成された欠損キャラクタに対して仮補正した各仮補正キャラクタを、それぞれデコードする。
【0063】
このため、ドット欠けが生じたバーコードCを読み取る際に、このドット欠けに起因して各バーの1つのうち両端部を除く内部がモジュール幅値の半分だけ欠損したことによりキャラクタのデコード処理が失敗した場合でも、この失敗キャラクタに対してその読取方向に隣接する一組のバーおよびスペースを加え、このキャラクタのいずれかのバーの欠損を仮定してその欠損をなくすように仮補正した各仮補正キャラクタのいずれか1つのみが欠損のない本来のキャラクタに一致するので、この仮補正キャラクタを含むバーコードではデコード処理が成功することとなる。
したがって、バーのドット欠け(欠損)に起因する読取精度の低下を抑制することができる。
【0064】
また、欠損キャラクタの幅値Xと、デコードが成功したキャラクタの幅値から求められる基準幅値Xoとの差が小さい欠損キャラクタに対してのみ、各仮補正キャラクタが設定される。
【0065】
このように、上述のようなドット欠けと異なる要因にてデコードが失敗しているために欠損キャラクタの幅値Xと基準幅値Xoとの差が閾値Xt以上になる場合などには、仮補正キャラクタを設定しないことで、不要な処理を無くすことができる。
【0066】
なお、本発明は上記実施形態に限定されるものではなく、以下のように具体化してもよい。
(1)読取対象のバーコードCの規格としてコード128が想定されることに限らず、上述のようにバーとスペースとを組み合わせてデコードする他の規格を想定してもよい。このとき、当該規格に応じた欠損キャラクタがそれぞれ想定される。
【0067】
(2)ステップS119におけるデコード処理は、ステップS115におけるYesとの判定に応じて実施されることに限らず、1のキャラクタについて仮補正処理がなされるごとに、実施されてもよい。
【符号の説明】
【0068】
10…光学的情報読取装置
28…受光センサ
40…制御回路(幅値演算手段,デコード手段,生成手段,仮補正手段,比較手段)
C…バーコード
B1〜B3、b1〜b4…バー(暗色モジュール)
S1〜S3、s1〜s4…スペース(明色モジュール)

【特許請求の範囲】
【請求項1】
1または2以上の単位モジュールからなる暗色モジュールおよび明色モジュールが所定数配列されて構成されるキャラクタを複数有するバーコードを読み取り可能な光学的情報読取装置であって、
前記バーコードからの反射光を受光する受光手段と、
前記受光手段から出力される受光信号に基づいて前記各暗色モジュールおよび各明色モジュールの幅値をそれぞれ演算するとともに前記単位モジュールの幅値であるモジュール幅値を演算する幅値演算手段と、
前記各暗色モジュールおよび各明色モジュールの幅値に基づいて前記各キャラクタをデコードするデコード手段と、
前記デコード手段により前記各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各暗色モジュールの1つのうち両端部を除く内部が前記モジュール幅値の半分だけ欠損することを前提に、前記失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタを生成する生成手段と、
前記生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか1つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを1つの暗色モジュールとする仮補正キャラクタを、当該明色モジュールごとに設定する仮補正手段と、
を備え、
前記デコード手段は、前記キャラクタのデコードが失敗した場合に、この失敗キャラクタについて前記生成手段により生成されたキャラクタに対して前記仮補正手段により仮補正した前記各仮補正キャラクタを、それぞれデコードすることを特徴とする光学的情報読取装置。
【請求項2】
前記生成手段により生成されたキャラクタの幅値と、前記デコード手段によりデコードが成功したキャラクタの幅値から求められる基準幅値との差を比較する比較手段を備え、
前記仮補正手段は、前記比較手段の比較結果により前記基準幅値との差が小さいキャラクタに対してのみ前記各仮補正キャラクタを設定することを特徴とする請求項1に記載の光学的情報読取装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−103825(P2012−103825A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2010−250489(P2010−250489)
【出願日】平成22年11月9日(2010.11.9)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】