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