(57)【特許請求の範囲】
【請求項１】
１または２以上の単位モジュールからなる暗色モジュールおよび明色モジュールが所定数配列されて構成されるキャラクタを複数有するバーコードを読み取り可能な光学的情報読取装置であって、
前記バーコードからの反射光を受光する受光手段と、
前記受光手段から出力される受光信号に基づいて前記各暗色モジュールおよび各明色モジュールの幅値をそれぞれ演算するとともに前記単位モジュールの幅値であるモジュール幅値を演算する幅値演算手段と、
前記各暗色モジュールおよび各明色モジュールの幅値に基づいて前記各キャラクタをデコードするデコード手段と、
前記デコード手段により前記各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各暗色モジュールの１つのうち両端部を除く内部が前記モジュール幅値の半分だけ欠損することを前提に、前記失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタを生成する生成手段と、
前記生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか１つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを１つの暗色モジュールとする仮補正キャラクタを、当該明色モジュールごとに設定する仮補正手段と、
を備え、
前記デコード手段は、前記キャラクタのデコードが失敗した場合に、この失敗キャラクタについて前記生成手段により生成されたキャラクタに対して前記仮補正手段により仮補正した前記各仮補正キャラクタを、それぞれデコードすることを特徴とする光学的情報読取装置。
【請求項２】
前記生成手段により生成されたキャラクタの幅値と、前記デコード手段によりデコードが成功したキャラクタの幅値から求められる基準幅値との差を比較する比較手段を備え、
前記仮補正手段は、前記比較手段の比較結果により前記基準幅値との差が小さいキャラクタに対してのみ前記各仮補正キャラクタを設定することを特徴とする請求項１に記載の光学的情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコードの読み取りを行う光学的情報読取装置に関するものである。
【背景技術】
【０００２】
従来、バーコードの読み取りを行う光学的情報読取装置として、下記特許文献１に示すバーコード読み取り装置が知られている。このバーコード読み取り装置は、モジュール値識別部がバーコードシンボルの各モジュールの値の信頼度を求めた後、キャラクタ生成部が各キャラクタの値の信頼度を求め、その信頼度に基づいて、キャラクタ消失判定部が各キャラクタが誤りであるかどうかを判定する。この判定結果に応じて、キャラクタ系列における消失誤りの場所を特定し、消失誤りを考慮した誤り訂正を行うことによって、汚れやかすれ等のあるバーコードシンボルの読み取りを可能にしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１１１９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、例えば、バーコードが印字されるバーコードラベルを作成する場合、印刷機の不良などによりバーコードラベルに印字されるバーコードにドット欠けが生じる場合がある。このようにバーコードにドット欠けが生じると、このドット欠け部分を含む走査線に対して読取処理が実施される場合に、当該読取処理が失敗する確率が高くなることから、読取精度が低下するという問題がある。
【０００５】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、読取精度の低下を抑制し得る光学的情報読取装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、特許請求の範囲に記載の請求項１の光学的情報読取装置では、１または２以上の単位モジュールからなる暗色モジュールおよび明色モジュールが所定数配列されて構成されるキャラクタを複数有するバーコードを読み取り可能な光学的情報読取装置であって、前記バーコードからの反射光を受光する受光手段と、前記受光手段から出力される受光信号に基づいて前記各暗色モジュールおよび各明色モジュールの幅値をそれぞれ演算するとともに前記単位モジュールの幅値であるモジュール幅値を演算する幅値演算手段と、前記各暗色モジュールおよび各明色モジュールの幅値に基づいて前記各キャラクタをデコードするデコード手段と、前記デコード手段により前記各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各暗色モジュールの１つのうち両端部を除く内部が前記モジュール幅値の半分だけ欠損することを前提に、前記失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタを生成する生成手段と、前記生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか１つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを１つの暗色モジュールとする仮補正キャラクタを、当該明色モジュールごとに設定する仮補正手段と、を備え、前記デコード手段は、前記キャラクタのデコードが失敗した場合に、この失敗キャラクタについて前記生成手段により生成されたキャラクタに対して前記仮補正手段により仮補正した前記各仮補正キャラクタを、それぞれデコードすることを特徴とする。
【０００７】
請求項２の発明は、請求項１に記載の光学的情報読取装置において、前記生成手段により生成されたキャラクタの幅値と、前記デコード手段によりデコードが成功したキャラクタの幅値から求められる基準幅値との差を比較する比較手段を備え、前記仮補正手段は、前記比較手段の比較結果により前記基準幅値との差が小さいキャラクタに対してのみ前記各仮補正キャラクタを設定することを特徴とする。
【発明の効果】
【０００８】
請求項１の発明では、デコード手段により各キャラクタのいずれかのデコードが失敗した場合に、生成手段により、この失敗キャラクタを構成する各暗色モジュールの１つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタが生成される。そして、仮補正手段により、生成手段により生成されたキャラクタに対して、当該キャラクタを構成する各明色モジュールのいずれか１つとこの明色モジュールの両側にそれぞれ隣接する両暗色モジュールとを１つの暗色モジュールとする仮補正キャラクタが、当該明色モジュールごとに設定される。そして、デコード手段は、キャラクタのデコードが失敗した場合に、この失敗キャラクタについて生成手段により生成されたキャラクタに対して仮補正手段により仮補正した各仮補正キャラクタを、それぞれデコードする。
【０００９】
このため、例えばドット欠けが生じたバーコードを読み取る際に、このドット欠けに起因して各暗色モジュールの１つのうち両端部を除く内部がモジュール幅値の半分だけ欠損したことによりキャラクタのデコード処理が失敗した場合でも、この失敗キャラクタに対してその読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加え、このキャラクタのいずれかの暗色モジュールの欠損を仮定してその欠損をなくすように仮補正手段により仮補正した各仮補正キャラクタのいずれか１つのみが欠損のない本来のキャラクタに一致するので、この仮補正キャラクタを含むバーコードではデコード処理が成功することとなる。
したがって、暗色モジュールの欠損に起因する読取精度の低下を抑制することができる。
【００１０】
なお、各単位モジュールが３つ以上のドット列で構成されており暗色モジュールの欠損がモジュール幅値の半分未満であれば、この欠損した暗色モジュールや隣接する明色モジュールの幅値に対応してデコードされた値が欠損しない場合の値と変化しないため、この暗色モジュールの欠損に起因してデコード処理が失敗することもない。
【００１１】
請求項２の発明では、生成手段により生成されたキャラクタの幅値と、デコードが成功したキャラクタの幅値から求められる基準幅値との差が小さいキャラクタに対してのみ、各仮補正キャラクタが設定される。
【００１２】
上述のようなドット欠けと異なる要因にてデコードが失敗している場合に、失敗キャラクタの読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えると、上述のような仮補正キャラクタを複数設定してもデコード処理は成功しない。そこで、失敗キャラクタの読取方向に隣接する一組の暗色モジュールおよび明色モジュールを加えたキャラクタの幅値と基準幅値との差が大きくなる場合には、生成されたキャラクタの幅値が本来のキャラクタの幅値に一致するとみなされないとして仮補正キャラクタを設定しないことで、不要な処理を無くすことができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係る光学的情報読取装置の電気的構成を示すブロック図である。
【図２】正常キャラクタおよび各欠損キャラクタを例示する概念図である。
【図３】図２の各キャラクタにおけるバーおよびスペースの幅値を例示する図表である。
【図４】図２の各キャラクタにおける各隣接モジュールの幅値を例示する図表である。
【図５】キャラクタの幅値と閾値との関係を例示する図表である。
【図６】制御回路による読取処理の流れを例示するフローチャートの一部である。
【図７】制御回路による読取処理の流れを例示するフローチャートの一部である。
【図８】図７の仮補正処理のサブルーチンを例示するフローチャートである。
【図９】図９（Ａ）は、欠損キャラクタ１を例示する概念図であり、図９（Ｂ）は、図９（Ａ）の欠損キャラクタ１におけるバーおよびスペースの幅値を例示する図表であり、図９（Ｃ）は、欠損キャラクタ１を仮補正した各仮補正キャラクタを例示する概念図であり、図９（Ｄ）は、図９（Ｃ）の各仮補正キャラクタにおける隣接モジュールの幅値を例示する図表である。
【発明を実施するための形態】
【００１４】
以下、本発明の光学的情報読取装置を具現化した一実施形態について図を参照して説明する。図１は、本実施形態に係る光学的情報読取装置１０の電気的構成を示すブロック図である。
【００１５】
図１に示すように、光学的情報読取装置１０は、物品に付されたバーコード（図１では物品Ｒに付されたバーコードＣを例示）を読み取る装置として構成されている。この光学的情報読取装置１０は、図示しないケースの内部に回路部２０が収容されてなるものであり、回路部２０は、主に、照明光源２１、受光センサ２８、結像レンズ２７等の光学系と、メモリ３５、制御回路４０、トリガースイッチ４２等のマイクロコンピュータ（以下「マイコン」という）系と、から構成されている。
【００１６】
光学系は、投光光学系と、受光光学系とに分かれている。投光光学系を構成する照明光源２１は、照明光Ｌｆを発光可能な照明光源として機能するもので、例えば、赤色のＬＥＤとこのＬＥＤの出射側に設けられるレンズとから構成されている。なお、図１では、バーコードＣが付された物品Ｒに向けて照明光Ｌｆを照射する例を概念的に示している。
【００１７】
受光光学系は、受光センサ２８、結像レンズ２７、反射鏡（図示略）などによって構成されている。受光センサ２８は、ＣＣＤエリアセンサとして構成されるものであり、バーコードＣに照射されて反射した反射光Ｌｒを受光可能に構成されている。この受光センサ２８は、結像レンズ２７を介して入射する入射光を受光可能にプリント配線板（図示略）に実装されている。なお、受光センサ２８は、特許請求の範囲に記載の「受光手段」に相当し得るものである。
【００１８】
結像レンズ２７は、外部から読取口（図示略）を介して入射する入射光を集光して受光センサ２８の受光面２８ａに像を結像可能な結像光学系として機能するものである。本第１実施形態では、照明光源２１から照射された照明光ＬｆがバーコードＣにて反射した後、この反射光Ｌｒを結像レンズ２７で集光し、受光センサ２８の受光面２８ａにコード像を結像させている。
【００１９】
マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、トリガースイッチ４２、発光部４３、ブザー４４、バイブレータ４５、液晶表示器４６、通信インタフェース４８等から構成されている。
【００２０】
光学系の受光センサ２８から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ（画像情報）は、生成されてメモリ３５に入力されると、所定のコード画像情報格納領域に蓄積される。なお、同期信号発生回路３８は、受光センサ２８およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００２１】
制御回路４０は、光学的情報読取装置１０全体を制御可能なマイコンによって構成されており、ＣＰＵ、システムバス、入出力インタフェース等を有すると共に、情報処理機能を備えており、メモリ３５とともに情報処理装置を構成している。本第１実施形態では、制御回路４０に対し、トリガースイッチ４２、発光部４３、ブザー４４、バイブレータ４５、液晶表示器４６、通信インタフェース４８等が接続されている。
【００２２】
これにより、制御回路４０は、例えば、トリガースイッチ４２の監視や管理、バーコードＣの読み取りに関する情報を報知するインジケータとして機能する発光部４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、当該光学的情報読取装置１０の使用者に伝達し得る振動を発生可能なバイブレータ４５の駆動制御、液晶表示器４６の表示制御や外部装置とのシリアル通信を可能にする通信インタフェース４８の通信制御等を可能にしている。
【００２３】
次に、本実施形態における光学的情報読取装置１０の制御回路４０にて実行される読取処理について説明する。図２は、正常キャラクタおよび各欠損キャラクタを例示する概念図である。図３は、図２の各キャラクタにおけるバーおよびスペースの幅値を例示する図表である。図４は、図２の各キャラクタにおける各隣接モジュールの幅値を例示する図表である。図５は、キャラクタの幅値と閾値との関係を例示する図表である。図６および図７は、制御回路４０による読取処理の流れを例示するフローチャートである。図８は、図７の仮補正処理のサブルーチンを例示するフローチャートである。なお、図３および図４の図表では、バーのドット欠けが影響する値を太枠で囲っている。
【００２４】
本実施形態における読取処理では、通常のデコード処理が失敗した場合に、バーコードＣを構成する各キャラクタの少なくともいずれか１つのキャラクタのバーにドット欠け（欠損）が生じており、かつ、各キャラクタの単位モジュールが２つのドット列により構成されているためデコード処理が失敗したものと仮定する。そして、この失敗キャラクタを構成する各バーの１つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、このドット欠けをなくすように失敗キャラクタを仮補正することで、ドット欠けに起因するデコード処理の失敗をなくし、読取精度の低下を抑制する。なお、各単位モジュールが３つ以上のドット列で構成されておりバーのドット欠けが単位モジュールの幅値の半分未満であれば、このドット欠けが生じたバーや隣接するスペースの各幅値に対応してデコードされた値が欠損しない場合の値と変化しないため、このバーのドット欠けに起因してデコード処理が失敗することもない。なお、バーおよびスペースは、特許請求の範囲に記載の「暗色モジュール」および「明色モジュール」の一例に相当する。
【００２５】
具体的には、本実施形態では、読取対象のバーコードＣの規格として、例えば、バーとこのバーに隣接するスペースとを一組とする隣接モジュールの幅値と所定の閾値とに応じてデコード処理がなされるコード１２８が想定されており、各キャラクタは、３本のバーと３本のスペースとが４種類のモジュールサイズ（幅）でそれぞれ構成されている。以下、ドット欠けが生じていない本来の１キャラクタを構成する読取方向１〜３番目のバーをＢ１〜Ｂ３、読取方向１〜３番目のスペースをＳ１〜Ｓ３とし、バーＢ１およびスペースＳ１の組合せを読取方向１番目の隣接モジュールＫ１、スペースＳ１およびバーＢ２の組合せを読取方向２番目の隣接モジュールＫ２、バーＢ２およびスペースＳ２の組合せを読取方向３番目の隣接モジュールＫ３、スペースＳ２およびバーＢ３の組合せを読取方向４番目の隣接モジュールＫ４と定義する。
【００２６】
実際の受光時におけるバーコードＣの読み取りライン上において、バーの内部にドット欠けが生じていると、１つのバーが１つのスペースとこのスペースの両側にそれぞれ隣接する両バーとに分離されるために、本来の１キャラクタが占める領域に４本のバーと４本のスペースとが存在することとなる。この場合に、これら４本のバーおよび４本のスペースのうち読取方向１〜３番目までの３本のバーおよび３本のスペースが１つのキャラクタを構成するものとしてデコードされてしまうため、デコードが失敗してしまう。
【００２７】
そこで、本来のキャラクタの全てのバーのうちいずれか１つのバーの両端部を除く内部にドット欠けが１箇所生じている場合を仮定し、それぞれ図２に例示するように、複数の欠損キャラクタ（図２では６つ欠損キャラクタ１〜６）を想定する。すなわち、失敗キャラクタを構成する３本のバーｂ１〜ｂ３および３本のスペースｓ１〜ｓ３に、この失敗キャラクタの読取方向側（図２にて右側）に位置する１本のバーｂ４および１本のスペースｓ４を加えて、図２に示す４本のバーｂ１〜ｂ４と４本のスペースｓ１〜ｓ４とからなる欠損キャラクタをそれぞれ生成する。
【００２８】
このように生成された各欠損キャラクタにおいて、仮定されたドット欠けに相当するスペースとこのスペースの両側にそれぞれ隣接する両バーとを１つのバーとして仮補正される仮補正キャラクタを、各欠損キャラクタごとに設定する。そして、このようにそれぞれ仮補正した各仮補正キャラクタのうち、コード１２８の規格を満たすキャラクタに一致する仮補正キャラクタを、ドット欠けをなくした本来のキャラクタとして設定する。なお、図２の最上段のキャラクタは、ドット欠けが生じていない本来のキャラクタを示す。また、図２の例では、バーＢ２が単位モジュールであり２つのドット列により構成されると仮定されているため、バーＢ２では内部のドット欠けが生じない。
【００２９】
上述のような補正方法について、図２〜図５を用いてより詳細に説明する。
各バーおよび各スペースを構成する単位モジュールの幅値を１００とする場合に、上述のように生成された各キャラクタにおける各バーｂ１〜ｂ４および各スペースｓ１〜ｓ４の幅値は、理論上、図３に示す幅値となる。ここで、図３の左から７列目の１ｃｈａｒは、本来のキャラクタの幅値または失敗キャラクタの幅値を示しており、図３の最右列の１ｃｈａｒは、失敗キャラクタにバーｂ４およびスペースｓ４を加えて生成された欠損キャラクタの幅値を示している。
【００３０】
このため、図２に示すようにドット欠けが生じていると、各隣接モジュールの幅値は、理論上、図４に示す幅値となり、ドット欠けの影響を受けた値となる。なお、各隣接モジュールは、ドット欠けの影響を受けているため、ｋ１〜ｋ４を用いて表示している。このとき、バーおよびスペースのモジュールサイズ（幅）を判定するための閾値は、バーｂ１〜ｂ３およびスペースｓ１〜ｓ３にて構成されるキャラクタ（失敗キャラクタ）の全長を単位モジュールによる構成数（本実施形態では１１）で除算して求められるため、図５に示す値となる。例えば、欠損キャラクタ１にて幅値が９５以上１５９未満であれば、モジュールサイズが２に設定され、欠損キャラクタ６にて幅値が２１６以上３０２未満であれば、モジュールサイズが３に設定される。
【００３１】
このため、読取方向１番目のバーＢ１の内部にドット欠けが１箇所生じていることを前提にする場合、バーｂ１からスペースｓ２までの組合せを隣接モジュールＫ１、スペースｓ２およびバーｂ３の組合せを隣接モジュールＫ２、バーｂ３およびスペースｓ３の組合せを隣接モジュールＫ３、スペースｓ３およびバーｂ４の組合せを隣接モジュールＫ４として、仮補正して第１仮補正キャラクタを設定する。
【００３２】
また、読取方向２番目のバーＢ２の内部にドット欠けが１箇所生じていることを前提にする場合、バーｂ１およびスペースｓ１の組合せを隣接モジュールＫ１、スペースｓ１からバーｂ３までの組合せを隣接モジュールＫ２、バーｂ２からスペースｓ３までの組合せを隣接モジュールＫ３、スペースｓ３およびバーｂ４の組合せを隣接モジュールＫ４として、仮補正して第２仮補正キャラクタを設定する。
【００３３】
また、読取方向３番目のバーＢ３の内部にドット欠けが１箇所生じていることを前提にする場合、バーｂ１およびスペースｓ１の組合せを隣接モジュールＫ１、スペースｓ１およびバーｂ２の組合せを隣接モジュールＫ２、バーｂ２およびスペースｓ２の組合せを隣接モジュールＫ３、スペースｓ２からバーｂ４までの組合せを隣接モジュールＫ４として、仮補正して第３仮補正キャラクタを設定する。
【００３４】
上述のように複数のパターンで仮補正した各仮補正キャラクタがコード１２８の規格を満たすキャラクタに一致するか否かが順次判定され、規格に一致すると判定された仮補正キャラクタが、ドット欠けをなくした本来のキャラクタとして設定される。このような補正を各キャラクタごとに実施することにより、ドット欠けに起因するデコード処理の失敗をなくしている。
【００３５】
以下、本実施形態における読取処理について、図６および図７に示すフローチャートを用いて詳細に説明する。
まず、制御回路４０では、図６のステップＳ１０１において、画像データ取得処理がなされる。この処理では、トリガースイッチ４２の操作に応じて照明光源２１から照明光Ｌｆが照射されてバーコードＣにより反射された反射光Ｌｒが受光センサ２８に受光されることにより、バーコードＣを含む画像データが取得される。
【００３６】
次に、ステップＳ１０３にて幅値演算処理がなされ、上記画像データに含まれるバーコードＣの各キャラクタを構成するバーおよびスペースの各幅値がそれぞれ演算される。なお、ステップＳ１０３を実行する制御回路４０は、特許請求の範囲に記載の「幅値演算手段」の一例に相当する。
【００３７】
次に、ステップＳ１０５にて上述したバーおよびスペースの各幅値から算出される各隣接モジュールの幅値に基づいてバーコードＣに対して公知のデコード処理がなされる。このデコード処理が成功した場合には、ステップＳ１０７にてＹｅｓと判定されて、図７のステップＳ１２３にてデコード成功時の処理がなされて、当該読取処理が終了する。なお、ステップＳ１０５および後述するステップＳ１１９を実行する制御回路４０は、特許請求の範囲に記載の「デコード手段」の一例に相当する。
【００３８】
一方、デコード処理が失敗した場合には（Ｓ１０７でＮｏ）、ステップＳ１０９にて上記画像データに基づいて当該バーコードＣを構成するキャラクタの総数であるｍｔが設定されるとともに、ステップＳ１１１にて当該バーコードＣにおいて仮補正処理の対象となるキャラクタの読取方向における順番を示すｍがｍ＝１に設定される。なお、ステップＳ１０９にて上記画像データに基づいてキャラクタ総数ｍｔの設定ができない場合には、当該読取処理を終了するようにしてもよい。
【００３９】
次に、図７のステップＳ１１３において、ｍ番目のキャラクタがコード１２８の規格を満たすキャラクタに一致するか否かが判定される。現段階ではｍ＝１であり、読取方向１番目のキャラクタがコード１２８の規格を満たすキャラクタに一致すると判定される場合には、当該キャラクタではバーのドット欠けが生じておらず、ステップＳ１１３にてＹｅｓと判定される。すなわち、読取方向ｍ番目のキャラクタが規格を満たすキャラクタに一致しない場合のみ、当該ｍ番目のキャラクタに対して後述する仮補正処理のサブルーチンが実行されることとなる。
【００４０】
一方、読取方向ｍ番目のキャラクタが規格を満たすキャラクタに一致しない場合には（Ｓ１１３でＮｏ）、本来のキャラクタを構成していたいずれか１つのバーの両端部を除く内部にドット欠けが１箇所生じており、かつ、各キャラクタの単位モジュールが２つのドット列により構成されていることを前提に、ステップＳ２００において、仮補正処理のサブルーチンが実行される。なお、ステップＳ２００を実行する制御回路４０は、特許請求の範囲に記載の「仮補正手段」の一例に相当する。
【００４１】
この仮補正処理のサブルーチンでは、まず、図８のステップＳ２０１において、欠損キャラクタ生成処理がなされる。この処理では、ステップＳ１１３にてＮｏと判定された失敗キャラクタに対して読取方向側に位置する１本のバー（ｂ４）および１本のスペース（ｓ４）を加えて、欠損キャラクタが生成される。なお、ステップＳ２０１を実行する制御回路４０は、特許請求の範囲に記載の「生成手段」の一例に相当する。
【００４２】
続いて、ステップＳ２０３において、欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差の絶対値が所定の閾値Ｘｔよりも小さいか否かについて判定される。ここで、基準幅値Ｘｏは、例えば、前回デコードが成功したキャラクタの幅値に設定され、閾値Ｘｔは、欠損キャラクタの幅値Ｘが基準幅値Ｘｏに一致する（ほぼ等しい）とみなされる値として、例えば、基準幅値Ｘｏの１０％に設定される。
【００４３】
上述のようなドット欠けと異なる要因にてデコードが失敗している場合、失敗キャラクタの読取方向に隣接する一組のバーおよびスペースを加えた欠損キャラクタの幅値Ｘが基準幅値Ｘｏの１１０％以上になることが想定される。また、本来のキャラクタのバーが２箇所以上欠損している場合や、読取対象のバーコードＣに対して読取口が傾いているために画像データでの読取方向の一方の幅値が他方の幅値よりも長くなってしまう場合、読取対象のバーコードＣが湾曲している場合などにも、欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差の絶対値が所定の閾値Ｘｔ以上になることが想定される。このような場合には仮補正キャラクタを設定してもデコードが成功しないので、不要な処理をなくすために、欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差の絶対値が所定の閾値Ｘｔより小さくなることを要件としている。なお、ステップＳ２０３を実行する制御回路４０は、特許請求の範囲に記載の「比較手段」の一例に相当する。
【００４４】
ここで、欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差の絶対値が所定の閾値Ｘｔ以上であると、ステップＳ２０３にてＮｏと判定される。この場合には、デコード失敗がドット欠けに起因していないと判断されるため、仮補正処理のサブルーチンを終了し、図７のステップＳ１２５にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【００４５】
一方、欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差の絶対値が所定の閾値Ｘｔよりも小さい場合には（Ｓ２０３でＹｅｓ）、ステップＳ２０５において、ｍ番目のキャラクタ、現段階では配列方向において１番目のキャラクタを構成するバーの総数であるｎｔが設定される。具体的には、図２から判るように、ｎｔ＝３が設定される。そして、ステップＳ２０７において、本来のキャラクタに対して、ドット欠けが仮定されるバーを示す番号であるｎがｎ＝１に設定される。
【００４６】
次に、ステップＳ２０９において、仮補正キャラクタ設定処理がなされる。この処理では、本来のキャラクタに対して読取方向ｎ番目のバーの内部にドット欠けが生じていることを前提に、ステップＳ２０１にて生成された欠損キャラクタに対して、仮定されたドット欠けに相当するスペースとこのスペースの両側にそれぞれ隣接する両バーとを１つのバーとして仮補正することで、仮補正キャラクタが設定される。
【００４７】
現段階ではｎ＝１であるため、読取方向１番目のバーＢ１の内部にドット欠けが生じていることを前提に、バーｂ１、スペースｓ１およびバーｂ２を１つのバーＢ１と仮補正し、スペースｓ２、バーｂ３、スペースｓ３、バーｂ４およびスペースｓ４を、それぞれ、スペースＳ１、バーＢ２、スペースＳ２、バーＢ３およびスペースＳ３とする第１仮補正キャラクタが設定される。この第１仮補正キャラクタおよび第２，３仮補正キャラクタは、特許請求の範囲に記載の「仮補正キャラクタ」の一例に相当する。
【００４８】
続いて、ステップＳ２１１において、閾値算出処理がなされる。この処理では、上述のように設定された仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。
【００４９】
そして、ステップＳ２１３において、ステップＳ２０９にて設定された仮補正キャラクタを構成する各バーおよびスペースとステップＳ２１１にて算出された閾値との比較により、仮補正キャラクタがコード１２８の規格を満たすキャラクタに一致するか否かについて判定される。具体的には、仮補正キャラクタのバーＢ１〜Ｂ３およびスペースＳ１〜Ｓ３のモジュールサイズを求めて、これらモジュールサイズの構成パターンから設定された上記各隣接モジュールＫ１〜Ｋ４の幅値がコード１２８の規格を満たすパターンに一致するか否かについて判定される。
【００５０】
ここで、第１仮補正キャラクタにおける上記隣接モジュールＫ１〜Ｋ４がコード１２８の規格を満たすパターンと一致すると判定されない場合には、ステップＳ２１３にてＮｏと判定される。そして、ステップＳ２１５にてｎ＝ｎｔでないことからＮｏと判定されて、ステップＳ２１７にてｎに１が加算され、再び上記ステップＳ２０９からの処理がなされる。
【００５１】
この段階ではｎ＝２であることから、ステップＳ２０９では、読取方向２番目のバーＢ２の内部にドット欠けが生じていることを前提に、バーｂ２、スペースｓ２およびバーｂ３を１つのバーＢ２と仮補正し、バーｂ１、スペースｓ１、スペースｓ３、バーｂ４およびスペースｓ４を、それぞれ、バーＢ１、スペースＳ１、スペースＳ２、バーＢ３およびスペースＳ３とする第２仮補正キャラクタが設定される。
【００５２】
続いて、ステップＳ２１１において、上記第２仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。そして、ステップＳ２１３にて、上記閾値との比較から第２仮補正キャラクタにおける上記隣接モジュールＫ１〜Ｋ４がコード１２８の規格を満たすパターンと一致すると判定されない場合には、ステップＳ２１３にてＮｏと判定される。そして、ステップＳ２１５にてｎ＝ｎｔでないことからＮｏと判定されて、ステップＳ２１７にてｎに１がさらに加算され、再び上記ステップＳ２０９からの処理がなされる。
【００５３】
この段階ではｎ＝３であることから、ステップＳ２０９では、読取方向３番目のバーＢ３の内部にドット欠けが生じていることを前提に、バーｂ３、スペースｓ３およびバーｂ４を１つのバーＢ３と仮補正し、バーｂ１、スペースｓ１、バーｂ２、スペースｓ２およびスペースｓ４を、それぞれ、バーＢ１、スペースＳ１、バーＢ２、スペースＳ２およびスペースＳ３とする第３仮補正キャラクタが設定される。
【００５４】
続いて、ステップＳ２１１にて上記第３仮補正キャラクタの全幅値から、バーおよびスペースのモジュールサイズを判定するための閾値が算出される。そして、ステップＳ２１３にて、上記閾値との比較から第３仮補正キャラクタにおける上記隣接モジュールＫ１〜Ｋ４がコード１２８の規格を満たすパターンと一致すると判定されない場合には、ステップＳ２１３にてＮｏと判定される。そして、ステップＳ２１５にてｎ＝ｎｔであることからＹｅｓと判定されて、仮補正処理のサブルーチンを終了し、図７のステップＳ１２５にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【００５５】
一方、ステップＳ２０９にて仮補正されたいずれかの仮補正キャラクタにおける隣接モジュールＫ１〜Ｋ４がコード１２８の規格を満たすパターンに一致する場合には、ステップＳ２１３にてＹｅｓと判定される。そして、ステップＳ２１９にてキャラクタ置換処理がなされて、規格を満たす仮補正キャラクタに関するデータが補正後のキャラクタに関するデータに置換されてメモリ３５等に記憶される。これにより、仮補正処理のサブルーチンが終了する。この場合、置換されたキャラクタの読取方向側に位置するキャラクタは、当該置換されたキャラクタの読取方向側に位置するバーを読取方向１番目のバーＢ１とするように構成される。
【００５６】
ここで、仮補正キャラクタにおける隣接モジュールＫ１〜Ｋ４がコード１２８の規格を満たすパターンに一致する場合について、図９（Ａ）〜（Ｄ）を用いて具体的に説明する。
図９（Ａ）は、欠損キャラクタ１を例示する概念図であり、図９（Ｂ）は、図９（Ａ）の欠損キャラクタ１におけるバーおよびスペースの幅値を例示する図表であり、図９（Ｃ）は、欠損キャラクタ１を仮補正した各仮補正キャラクタを例示する概念図であり、図９（Ｄ）は、図９（Ｃ）の各仮補正キャラクタにおける隣接モジュールの幅値を例示する図表である。
【００５７】
例えば、図９（Ａ）に例示するようにバーＢ１にドット欠けが生じていると、失敗キャラクタを構成する３本のバーｂ１〜ｂ３および３本のスペースｓ１〜ｓ３の幅値と、この失敗キャラクタの読取方向側に位置する１本のバーｂ４および１本のスペースｓ４の幅値とは、理論上、図９（Ｂ）に示す値となる。
【００５８】
そして、上述のようなステップＳ２０９からの繰り返し処理において、仮に、上述した３つの仮補正キャラクタが、図９（Ｃ）に例示するように、それぞれ設定されたとすると、各仮補正キャラクタにおける各隣接モジュールＫ１〜Ｋ４の幅値は、理論上、図９（Ｄ）に例示する値となる。この場合、第１仮補正キャラクタにおける各隣接モジュールＫ１〜Ｋ４の幅値がコード１２８の規格を満たすパターンに一致し、第２，３仮補正キャラクタでは一致しないことから、当該第１仮補正キャラクタに関するデータがメモリ３５等に記憶されて、仮補正処理のサブルーチンが終了する。
【００５９】
上述のように仮補正後のキャラクタがコード１２８の規格を満たすキャラクタに一致することにより仮補正処理のサブルーチンが終了すると、図７のステップＳ１１５にてｍ＝ｍｔであるか否かについて判定される。この段階では、ｍ＝１であることから（Ｓ１１５でＮｏ）、ステップＳ１１７にてｍに１が加算されて、２番目のキャラクタに対して上記ステップＳ１１３からの処理が繰り返される。
【００６０】
そして、バーコードＣを構成する全キャラクタのうちコード１２８の規格を満たすキャラクタに一致しない全ての対象キャラクタに対して仮補正がなされると、ステップＳ１１５にてＹｅｓと判定されて、ステップＳ１１９にて当該バーコードＣに対して再度デコード処理がなされる。これにより、上記ステップＳ１０７におけるデコード失敗がドット欠けのみに起因するものである場合には、デコード処理が成功することからステップＳ１２１にてＹｅｓと判定されて、ステップＳ１２３にてデコード成功時の処理がなされて、当該読取処理が終了する。
【００６１】
一方、ドット欠けとは異なる要因によりデコード失敗している場合には、ステップＳ１２１にてＮｏと判定されて、ステップＳ１２５にてデコード失敗時の処理がなされて、当該読取処理が終了する。
【００６２】
以上説明したように、本実施形態に係る光学的情報読取装置１０では、各キャラクタのいずれかのデコードが失敗した場合に、この失敗キャラクタを構成する各バーの１つのうち両端部を除く内部がモジュール幅値の半分だけ欠損することを前提に、失敗キャラクタに対してその読取方向に隣接する一組のバーｂ４およびスペースｓ４を加えた欠損キャラクタが生成される。そして、生成された欠損キャラクタに対して、当該欠損キャラクタを構成する各スペースのいずれか１つとこのスペースの両側にそれぞれ隣接する両バーとを１つのバーとする仮補正キャラクタが、当該スペースごとに設定される。そして、バーコードＣ（各キャラクタ）のデコードが失敗した場合に、この失敗キャラクタについて生成された欠損キャラクタに対して仮補正した各仮補正キャラクタを、それぞれデコードする。
【００６３】
このため、ドット欠けが生じたバーコードＣを読み取る際に、このドット欠けに起因して各バーの１つのうち両端部を除く内部がモジュール幅値の半分だけ欠損したことによりキャラクタのデコード処理が失敗した場合でも、この失敗キャラクタに対してその読取方向に隣接する一組のバーおよびスペースを加え、このキャラクタのいずれかのバーの欠損を仮定してその欠損をなくすように仮補正した各仮補正キャラクタのいずれか１つのみが欠損のない本来のキャラクタに一致するので、この仮補正キャラクタを含むバーコードではデコード処理が成功することとなる。
したがって、バーのドット欠け（欠損）に起因する読取精度の低下を抑制することができる。
【００６４】
また、欠損キャラクタの幅値Ｘと、デコードが成功したキャラクタの幅値から求められる基準幅値Ｘｏとの差が小さい欠損キャラクタに対してのみ、各仮補正キャラクタが設定される。
【００６５】
このように、上述のようなドット欠けと異なる要因にてデコードが失敗しているために欠損キャラクタの幅値Ｘと基準幅値Ｘｏとの差が閾値Ｘｔ以上になる場合などには、仮補正キャラクタを設定しないことで、不要な処理を無くすことができる。
【００６６】
なお、本発明は上記実施形態に限定されるものではなく、以下のように具体化してもよい。
（１）読取対象のバーコードＣの規格としてコード１２８が想定されることに限らず、上述のようにバーとスペースとを組み合わせてデコードする他の規格を想定してもよい。このとき、当該規格に応じた欠損キャラクタがそれぞれ想定される。
【００６７】
（２）ステップＳ１１９におけるデコード処理は、ステップＳ１１５におけるＹｅｓとの判定に応じて実施されることに限らず、１のキャラクタについて仮補正処理がなされるごとに、実施されてもよい。
【符号の説明】
【００６８】
１０…光学的情報読取装置
２８…受光センサ
４０…制御回路（幅値演算手段，デコード手段，生成手段，仮補正手段，比較手段）
Ｃ…バーコード
Ｂ１〜Ｂ３、ｂ１〜ｂ４…バー（暗色モジュール）
Ｓ１〜Ｓ３、ｓ１〜ｓ４…スペース（明色モジュール）
【図１】
0005585400.tif 000002
【図２】
0005585400.tif 000003
【図３】
0005585400.tif 000004
【図４】
0005585400.tif 000005
【図５】
0005585400.tif 000006
【図６】
0005585400.tif 000007
【図７】
0005585400.tif 000008
【図８】
0005585400.tif 000009
【図９】
0005585400.tif 000010