(57)【特許請求の範囲】
【請求項１】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
前記誤り検出手段は、
前記閾値を設定変更する設定変更手段と、
前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、
を有し、
前記設定変更手段により前記閾値を設定変更すると共に、
その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、
前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項２】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
前記誤り検出手段は、
前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、
前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、
前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、
を備え、
前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項３】
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、
を備え、
前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする請求項２に記載の光学的情報読取装置。
【請求項４】
前記復元手段は、
前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、
前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項１から請求項３のいずれか一項に記載の光学的情報読取装置。
【請求項５】
前記復元手段は、
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項１から請求項３のいずれか一項に記載の光学的情報読取装置。
【請求項６】
前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする請求項５に記載の光学的情報読取装置。
【請求項７】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、
前記二値化手段は、
前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第１配列データを生成する第１二値化手段と、
前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第２配列データを生成する第２二値化手段と、
を備え、
前記デコード手段は、少なくとも前記第１配列データを前記配列データとしてデコードする構成をなし、
前記誤り検出手段は、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第２配列データに基づいて前記第１配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第１配列データを再生成し、
前記誤り検出手段は、
前記第１配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、
前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項８】
前記復元手段は、
前記第１配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第１暗色領域の幅情報と、前記第１暗色領域の終端側に隣接する第１明色領域の幅情報と、をそれぞれ記憶する第１幅情報記憶手段と、
前記第２配列データの最終の前記明色領域の隣に位置する第２暗色領域の幅情報と、前記第２暗色領域の始端側に隣接する第２明色領域の幅情報と、をそれぞれ記憶する第２幅情報記憶手段と、
を備え、
前記第２暗色領域と前記第２明色領域との幅比率に基づいて、前記第１配列データにおける前記第１暗色領域と前記第１明色領域との幅比率を、正規の幅比率に復元することを特徴とする請求項７に記載の光学的情報読取装置。
【請求項９】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、
前記二値化手段は、
前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第１配列データを生成する第１二値化手段と、
前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第２配列データを生成する第２二値化手段と、
を備え、
前記デコード手段は、少なくとも前記第１配列データを前記配列データとしてデコードする構成をなし、
前記誤り検出手段は、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第２配列データに基づいて前記第１配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第１配列データを再生成し、
前記復元手段は、
前記第１配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第１暗色領域の幅情報と、前記第１暗色領域の終端側に隣接する第１明色領域の幅情報と、をそれぞれ記憶する第１幅情報記憶手段と、
前記第２配列データの最終の前記明色領域の隣に位置する第２暗色領域の幅情報と、前記第２暗色領域の始端側に隣接する第２明色領域の幅情報と、をそれぞれ記憶する第２幅情報記憶手段と、
を備え、
前記第２暗色領域と前記第２明色領域との幅比率に基づいて、前記第１配列データにおける前記第１暗色領域と前記第１明色領域との幅比率を、正規の幅比率に復元し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項１０】
前記第２配列データの所定位置が前記第１配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、
前記復元手段は、前記第２配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第１配列データの誤った前記暗色領域の位置を特定し、前記第２配列データの最終の前記暗色領域のパターンに基づいて前記第１配列データの前記マージン対応領域の前記誤りを修正し、前記第１配列データを再生成することを特徴とする請求項７から請求項９のいずれか一項に記載の光学的情報読取装置。
【請求項１１】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、
前記二値化手段は、
前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第１配列データを生成する第１二値化手段と、
前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第２配列データを生成する第２二値化手段と、
を備え、
前記デコード手段は、少なくとも前記第１配列データを前記配列データとしてデコードする構成をなし、
前記誤り検出手段は、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第２配列データに基づいて前記第１配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第１配列データを再生成し、
前記第２配列データの所定位置が前記第１配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、
前記復元手段は、前記第２配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第１配列データの誤った前記暗色領域の位置を特定し、前記第２配列データの最終の前記暗色領域のパターンに基づいて前記第１配列データの前記マージン対応領域の前記誤りを修正し、前記第１配列データを再生成し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項１２】
第１の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第１の測定結果と、第２の測定対象に対して前記照明光が他方向に走査されたときの第２の測定結果と、を記録する測定結果記録手段を備え、
前記対応情報記憶手段は、前記第１の測定結果と前記第２の測定結果とを前記対応情報として記憶し、
前記復元手段は、前記第１の測定結果と前記第２の測定結果とに基づいて前記第１配列データと前記第２配列データとを位置的に対応付けることを特徴とする請求項１０又は請求項１１に記載の光学的情報読取装置。
【請求項１３】
前記復元手段は、
前記第２配列データの最終の暗色端部パターンに基づき、前記第１配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第１配列データを再生成することを特徴とする請求項７から請求項１２のいずれか一項に記載の光学的情報読取装置。
【請求項１４】
前記誤り検出手段は、前記第２配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第１配列データに基づいて前記第２配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第２配列データを再生成する構成をなしており、
前記デコード手段は、前記復元手段により再生成された前記第１配列データをデコードし、その再生成された前記第１配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第２配列データをデコードすることを特徴とする請求項７から請求項１３のいずれか一項に記載の光学的情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学的情報読取装置に関するものである。
【背景技術】
【０００２】
光学的情報読取装置の分野では、白色パターンと黒色パターンとからなる情報コードにレーザ光等を照射し、その反射光を受光、解析することでコード情報を読み取る構成のものが広く提供されている。この種の光学的情報読取装置は、情報コードをより精度高く読み取ることが要望されており、そのような課題を解決しようとする技術としては例えば特許文献１、２のようなものがある。
【特許文献１】特開２０００−３５７２０５公報
【特許文献２】特開２００５−３８３６９公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、上記のような光学的情報読取装置で読み取ろうとする情報コードは様々な対象物に付されるものであり、情報コードを形成する対象物の素材や色によっては誤った認識がなされる懸念がある。
【０００４】
例えば、図１７（Ａ）のように、バーコードが印刷された領域が灰色の背景であり、その外側に白色の領域が構成されるような場合、本来ならば、図１７（Ｂ）のように白色パターン及び黒色パターンが認識されるべきであるところ、図１７（Ｃ）のように、白色のマージン領域として認識されるべき部分が黒色パターンと認識されてしまう場合がある。このような誤検出は、図１７（Ａ）のようなバーコードを読み取った場合に図１７（Ｄ）のような波形が生じることに起因するものである。即ち、図１７（Ｄ）のような波形に対して図１７（Ｄ）のように閾値を設定してしまうと、図１７（Ｃ）のような誤検出が生じ、閾値を変化させても図１７（Ｅ）のような誤検出が生じてしまう虞がある。
【０００５】
本発明は、上述した課題を解決するためになされたものであり、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取る場合に、マージンとして認識されるべき領域が黒色パターンとして認識される誤りを検出すると共に、当該誤りを復元し、情報コードを正確にデコードし得る構成を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、前記誤り検出手段は、前記閾値を設定変更する設定変更手段と、前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、を有し、前記設定変更手段により前記閾値を設定変更すると共に、その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
なお、本発明の「明色」の例として白色が挙げられ、暗色の例として暗色が挙げられるがこれに限定されない。即ち、「明色」としては様々な色を採用でき、「暗色」は、この「明色」よりも明度の低い色であれば様々な色を採用できる。
たとえば、「明色パターン」の例としては、白色パターンが挙げられ、暗色パターンの例としては黒色パターンが挙げられるが、これに限定されず、「明色パターン」としては様々な色のパターンを採用でき、「暗色パターン」この「明色パターン」よりも明度の低い色で構成されるパターンであればよい。
【０００８】
請求項２の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、前記誤り検出手段は、前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、を備え、前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
【０００９】
請求項３の発明は、請求項２に記載の光学的情報読取装置において、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、を備え、前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする。
【００１０】
請求項４の発明は、請求項１から請求項３のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【００１１】
請求項５の発明は、請求項１から請求項３のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【００１２】
請求項６の発明は、請求項５に記載の光学的情報読取装置において、前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする。
【００１３】
請求項７の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、前記二値化手段は、前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第１配列データを生成する第１二値化手段と、前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第２配列データを生成する第２二値化手段と、を備え、前記デコード手段は、少なくとも前記第１配列データを前記配列データとしてデコードする構成をなし、前記誤り検出手段は、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第２配列データに基づいて前記第１配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第１配列データを再生成し、前記誤り検出手段は、前記第１配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
【００１４】
請求項１３の発明は、請求項７から請求項１２のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記第２配列データの最終の暗色端部パターンに基づき、前記第１配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第１配列データを再生成することを特徴とする。
【００１６】
請求項８の発明は、請求項７に記載の光学的情報読取装置において、前記復元手段は、前記第１配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第１暗色領域の幅情報と、前記第１暗色領域の終端側に隣接する第１明色領域の幅情報と、をそれぞれ記憶する第１幅情報記憶手段と、前記第２配列データの最終の前記明色領域の隣に位置する第２暗色領域の幅情報と、前記第２暗色領域の始端側に隣接する第２明色領域の幅情報と、をそれぞれ記憶する第２幅情報記憶手段と、を備え、前記第２暗色領域と前記第２明色領域との幅比率に基づいて、前記第１配列データにおける前記第１暗色領域と前記第１明色領域との幅比率を、正規の幅比率に復元することを特徴とする。
また、請求項９の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、前記二値化手段は、前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第１配列データを生成する第１二値化手段と、前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第２配列データを生成する第２二値化手段と、を備え、前記デコード手段は、少なくとも前記第１配列データを前記配列データとしてデコードする構成をなし、前記誤り検出手段は、前記第１配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第２配列データに基づいて前記第１配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第１配列データを再生成し、前記復元手段は、前記第１配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第１暗色領域の幅情報と、前記第１暗色領域の終端側に隣接する第１明色領域の幅情報と、をそれぞれ記憶する第１幅情報記憶手段と、前記第２配列データの最終の前記明色領域の隣に位置する第２暗色領域の幅情報と、前記第２暗色領域の始端側に隣接する第２明色領域の幅情報と、をそれぞれ記憶する第２幅情報記憶手段と、を備え、前記第２暗色領域と前記第２明色領域との幅比率に基づいて、前記第１配列データにおける前記第１暗色領域と前記第１明色領域との幅比率を、正規の幅比率に復元し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
【００１７】
請求項１４の発明は、請求項７から請求項１３のいずれか一項に記載の光学的情報読取装置において、前記誤り検出手段は、前記第２配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第１配列データに基づいて前記第２配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第２配列データを再生成する構成をなしており、前記デコード手段は、前記復元手段により再生成された前記第１配列データをデコードし、その再生成された前記第１配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第２配列データをデコードすることを特徴とする。
【００１８】
請求項１０の発明は、請求項７から請求項９のいずれか一項に記載の光学的情報読取装置において、前記第２配列データの所定位置が前記第１配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、前記復元手段は、前記第２配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第１配列データの誤った前記暗色領域の位置を特定し、前記第２配列データの最終の前記暗色領域のパターンに基づいて前記第１配列データの前記マージン対応領域の前記誤りを修正し、前記第１配列データを再生成することを特徴とする。
【００１９】
請求項１２の発明は、請求項１０又は請求項１１に記載の光学的情報読取装置において、第１の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第１の測定結果と、第２の測定対象に対して前記照明光が他方向に走査されたときの第２の測定結果と、を記録する測定結果記録手段を備え、前記対応情報記憶手段は、前記第１の測定結果と前記第２の測定結果とを前記対応情報として記憶し、前記復元手段は、前記第１の測定結果と前記第２の測定結果とに基づいて前記第１配列データと前記第２配列データとを位置的に対応付けることを特徴とする。
【発明の効果】
【００２０】
請求項１の発明のように、配列データにおいて、マージンとして認識されるべき領域（マージン対応領域）に暗色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が暗色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
また、閾値を設定変更し得るように構成し、設定変更前後の暗色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域（マージン対応領域）に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【００２２】
請求項２の発明のように、明色領域の最大幅の、暗色領域の最大幅に対する比が基準値未満であるか否かを判断し、この比が基準値未満であると判断された場合に、マージンとして認識されるべき領域（マージン対応領域）に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。
【００２３】
請求項３の発明のように、種別特定手段によって特定された種別に基づいて基準値を設定し、この基準値と、明色領域の最大幅の暗色領域の最大幅に対する比とを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【００２４】
請求項４の発明のように、暗色領域及び明色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域（マージン対応領域）を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【００２５】
請求項５の発明のように、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域（マージン対応領域）を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【００２６】
請求項６の発明のように、誤りが検出されたマージン対応領域以外の暗色領域及び明色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【００２７】
請求項７の発明は、照明光が一方向に走査されたときの信号波形に基づいて第１配列データを生成し、少なくともこの第１配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第２配列データを生成する構成をなしており、第１配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第２配列データに基づいて第１配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第１配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ（第１配列データ）においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第２配列データに基づいて適切に修正でき、ひいては第１配列データのデコードを精度高く行うことができる。
また、第１配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コードの種別を特定するように構成されている。このように情報コードの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第１配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【００２８】
請求項１３の発明では、第２配列データの最終の暗色端部パターンに基づき、第１配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第２配列データの最終の暗色端部パターンは、第１配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第２配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第１配列データに生じた誤りを適切に解消でき、その結果、第１配列データのデコードをより正確に行うことができるようになる。
【００３０】
請求項８、９の発明では、第１配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第１暗色領域の幅情報と、第１暗色領域の終端側に隣接する第１明色領域の幅情報と、をそれぞれ記憶している。そして、第２配列データの最終の明色領域の隣に位置する第２暗色領域の幅情報と、第２暗色領域の始端側に隣接する第２明色領域の幅情報と、の幅比率に基づいて、第１配列データにおける第１暗色領域と第１明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第２配列データの終端側の部分が第１配列データの始端側のどの位置に相当するかを幅情報（特に明色領域の幅情報）を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【００３１】
請求項１４の発明は、復元手段により再生成された第１配列データをデコードし、その再生成された第１配列データのデコードが失敗した場合には、復元手段により再生成された第２配列データをデコードするように構成されている。このようにすれば、仮に第１配列データの復元・デコードが失敗したとしても、第２配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第２配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第１配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【００３２】
請求項１０、１１の発明では、第２配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和と、対応情報とに基づいて第１配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第２配列データの最終の暗色領域のパターンに基づいて第１配列データのマージン対応領域の誤りを適切に修正できる。
【００３３】
請求項１２の発明では、第１の測定対象に対して投光手段により照明光が一方向に走査されたときの第１の測定結果と、第２の測定対象に対して照明光が他方向に走査されたときの第２の測定結果と、を記録し、復元処理を行う際に、第１の測定結果と第２の測定結果とに基づいて第１配列データと第２配列データとを位置的に対応付けるようにしている。このように予め測定された第１の測定結果及び第２の測定結果に基づき、復元処理において第１配列データと第２配列データとを対応付けるようにすれば、第２配列データを利用しての第１配列データの復元を精度高くスムーズに行うことができる。
【発明を実施するための最良の形態】
【００３４】
[第１実施形態]
以下、本発明の光学的情報読取装置を具現化した第１実施形態について、図面を参照して説明する。図１は、本発明の第１実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。図２は、読取対象のバーコードを例示する説明図である。
【００３５】
図１に示すバーコードリーダ１０は、バーコード（「バーコード」は情報コードの一例に相当する）Ｂを読み取り可能な装置であり、図示しないケースの内部に回路部２０が収容されてなるものである。バーコードＢは、例えば図２に示すような構成をなしており、黒色パターンＰ１と、黒色パターンＰ１の間に配される白色パターンＰ２とからなる情報領域を有すると共に、両端部に白色パターンとして認識されるべきマージンＭが設けられている。なお、図２では、黒色パターン及び白色パターンの一部について符号を付している。なお、本実施形態では、「明色」の一例として「白色」を用い、「暗色」の一例として「黒色」を用いている。また、「明色パターン」の一例として「白色パターン」を用い、「暗色パターン」の一例として黒色パターンを用いている。また、「明色領域」の一例として「白色領域」を用い、「暗色領域」の一例として「黒色領域」を用いている。
【００３６】
回路部２０は、主に、照明光源２１、受光センサ２８、結像レンズ２７等の光学系と、メモリ３５、制御回路４０、トリガースイッチ５０等のマイクロコンピュータ（以下「マイコン」という）系と、から構成されている。
【００３７】
光学系は、投光光学系と、受光光学系とに分かれている。投光光学系を構成する照明光源２１は、照明光Ｌｆを発光可能な照明光源として機能するもので、例えば、赤色のＬＥＤとこのＬＥＤの出射側に設けられるレンズとから構成されている。なお、図１では、バーコードＢが付された読取対象物Ｒに向けて照明光Ｌｆを照射する例を概念的に示している。
【００３８】
受光光学系は、受光センサ２８、結像レンズ２７、反射鏡（図示略）などによって構成されている。受光センサ２８は、読取対象物ＲやバーコードＢに照射されて反射した反射光Ｌｒを受光可能に構成されるものである。この受光センサ２８は、結像レンズ２７を介して入射する入射光を受光可能にプリント配線板（図示略）に実装されている。
【００３９】
結像レンズ２７は、外部から読取口（図示略）を介して入射する入射光を集光して受光センサ２８の受光面２８ａに像を結像可能な結像光学系として機能するものである。本実施形態では、照明光源２１から照射された照明光Ｌｆが、バーコードＢにて反射した後、この反射光Ｌｒを結像レンズ２７で集光し、受光センサ２８の受光面２８ａにコード像を結像させている。
【００４０】
マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、トリガースイッチ５０、表示ＬＥＤ（以下、単にＬＥＤとも称する）４５、ブザー４４、液晶表示器４６、通信インタフェース４８等から構成されている。
【００４１】
光学系の受光センサ２８から出力される画像信号（アナログ信号）は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ（画像情報）は、メモリ３５に入力されると、所定のコード像画像情報格納領域に蓄積される。なお、同期信号発生回路３８は、受光センサ２８およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、メモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００４２】
制御回路４０は、バーコードリーダ１０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなるもので、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路４０は、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本実施形態の場合、トリガースイッチ５０、ＬＥＤ４５、ブザー４４、液晶表示器４６、通信インタフェース４８等を接続されている。これにより、例えば、トリガースイッチ５０の監視や管理、ＬＥＤ４５の点灯、非点灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、液晶表示器４６の表示制御、通信インターフェース４８の制御等を可能にしている。
【００４３】
次に、バーコードリーダ１０の読取処理について説明する。
この読取処理では、図１のようにまずバーコードＢからの反射光を受光センサ２８（受光センサ２８は「受光手段」の一例に相当する）にて受光し、この受光センサ２８によりバーコードＢの各パターンごとに反射光の強度に応じた受光信号を出力する。さらに、受光センサ２８により出力される受光信号の信号波形を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。そして、区分けされた白色領域及び黒色領域の配列データをデコードする。なお、制御回路４０及び図３のプログラムが「二値化手段」「デコード手段」の一例に相当する。
【００４４】
さらに、本実施形態に係るバーコードリーダ１０は、マージン対応領域（配列データにおけるマージンとして認識されるべき領域）に黒色領域が含まれる誤りを検出するように構成されており、誤りがあった場合にはその誤りを修正してマージン対応領域を復元するように配列データを再生成する構成となっている。そして、このようにマージン対応領域が復元された再生成後の配列データがデコード処理されることとなる。
なお、制御回路４０及び図４のプログラムが「誤り検出手段」の一例に相当し、制御回路４０及び図５のプログラムが「復元手段」の一例に相当する。
【００４５】
以下、読取処理の具体的な流れについて説明する。なお、図３は読取処理の流れを例示するフローチャートであり、図４は、その読取処理の一部を構成する誤り検出処理を例示するフローチャートである。図５は、受光信号の信号波形と閾値との関係を例示する説明図である。図６（Ａ）は、図５の閾値のときの配列データの構成を概念的に示す説明図であり、図６（Ｂ）は復元後の配列データの構成を概念的に示す説明図である。図７（Ａ）は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図７（Ｂ）はそのときの配列データの構成を概念的に示す説明図である。また、図８は、読取処理の一部を構成する復元処理を例示するフローチャートである。
【００４６】
図３に示す読取処理は例えば図１に示すトリガスイッチ５０の操作等によって開始される。当該処理が開始されると、まず、受光センサ２８にバーコードＢのコード情報を読み取らせる処理（即ち、受光センサ２８にバーコードＢからの反射光を受光させ、画像情報を取得させる処理）が行われ（Ｓ１）、さらにこの受光センサ２８に受光信号の信号波形（パターン波形）を出力させる処理が行われる（Ｓ２）。例えば、図２のようなバーコードＢの画像情報を取得すると、図５のようなパターン波形が出力されメモリ３５に記憶されることになる。
【００４７】
その後、二値化処理が行われる（Ｓ３）。この二値化処理では、受光センサ２８により出力される受光信号の信号波形（即ち、図５に示すパターン波形）を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。この閾値は、予め定められた一定の値であってもよく、パターン波形に基づいて定められる値であってもよい。
【００４８】
図５の例では、得られたパターン波形の最大値と最小値とを求め、それら最大値と最小値との中間値を閾値として設定しており、パターン波形において受光信号のレベルが閾値より大きくなる領域を白色領域とし、受光信号のレベルが閾値よりも小さくなる領域を黒色領域として区分けする。このような二値化を行うことで、図６（Ａ）にて概念的に示すような黒色領域Ｘと白色領域Ｗ１との配列データが得られる。この配列データは、バーコードＢ（図２）における黒色パターンＰ１及び白色パターンＰ２の配列に対応するものであり、各黒色パターンの位置（所定の基準位置に対する相対位置）及び幅を特定でき、各白色パターンの位置（所定の基準位置に対する相対位置）及び幅を特定できるようになっている。
【００４９】
図３に戻り、Ｓ３にて二値化処理が行われた後、Ｓ４にて各黒色領域の領域幅を算出する処理が行われる。即ち、上述の二値化処理により、図６（Ａ）にて概念的に示すような複数の黒色領域Ｘが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ３５に記憶する。
【００５０】
その後、マージン対応領域の誤りを検出する処理が行われる（Ｓ５）。この処理は、配列データにおけるマージンとして認識されるべき領域（マージン対応領域）に誤りが生じているか否かを検出する処理であり、まず、図４のＳ１０に示すように閾値を設定変更する処理が行われる。この処理は、図３の二値化処理で設定した閾値を設定変更する処理であり、例えば図５のように設定されていた閾値を、これよりも大きい閾値に設定変更する（図７（Ａ）参照）。
【００５１】
そして、その設定変更された閾値に基づいて再度二値化処理を行う（Ｓ２０）。この二値化処理はＳ３と同様であり、Ｓ２で得られた受光信号の信号波形（パターン波形）において受光信号のレベルが閾値（Ｓ１０での設定変更後の閾値）より大きくなる領域を白色領域とし、受光信号のレベルが閾値（Ｓ１０での設定変更後の閾値）よりも小さくなる領域を黒色領域として区分けする。なお、図７（Ｂ）では、設定変更後の配列データの構成を概念的に示している。
【００５２】
さらに、設定変更後の各黒色領域の幅を算出する処理を行う（Ｓ３０）。即ち、上記Ｓ２０の二値化処理によって図７（Ｂ）に示すような複数の黒色領域Ｙが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ３５に記憶する。
【００５３】
その後、閾値変更前後の黒色領域の幅を比較する処理を行う（Ｓ４０）。即ち、設定変更前の各黒色領域Ｘの幅と、設定変更後の各黒色領域Ｙの幅とを対応する位置毎に比較し、各黒色領域Ｘの幅がどの程度変化したかを算出する。本実施形態では、設定変更前の左端の黒色領域Ｘ１が設定変更によって２つの黒色領域Ｙ０、Ｙ１に変化しており、設定変更前の各黒色領域Ｘ２，Ｘ３，Ｘ４・・・が、設定変更によって各黒色領域Ｙ２，Ｙ３，Ｙ４・・・に変化している。
【００５４】
そして、各黒色領域Ｘについて基準を超える変化があったか否か（具体的には、各黒色領域の設定変更前後の幅の変化量が予め定められた基準値を超えるか否か）を判断し（Ｓ５０）、基準を超える変化があった場合にはＳ５０にてＹｅｓに進み、Ｓ７０にてマージン対応領域に誤りがあったことをメモリ３５に記憶し（具体的には誤りがあったことを示す誤りフラグを「１」に設定）、さらに基準を超える変化があった黒色領域を特定しうる情報をメモリ３５に記憶する。一方、いずれの黒色領域Ｘについても基準を超える変化がなかった場合にはＳ５０にてＮｏに進み、Ｓ６０にてマージン対応領域に誤りがなかったことをメモリ３５に記憶する（具体的には誤りフラグを「０」に設定する）。
【００５５】
図６（Ａ）、図７（Ｂ）の例では、左端の黒色領域Ｘ１の幅が設定変更前後で大きく変化しており、その変化量が予め定められた基準値を超えている。それ以外の黒色領域Ｘ２，Ｘ３，Ｘ４・・・は変化が小さく、各変化量は基準値を下回っている。従って、基準を超える変化があったものとしてＳ５０にてＹｅｓに進み、Ｓ７０にて誤りフラグが「１」に設定されると共に、基準を超える変化があった左端の黒色領域Ｘ１を特定しうる情報がメモリ３５に記憶される。なお、図６（Ａ）の左端の黒色領域Ｘ１のように、設定変更後に複数の黒色領域（図７（Ｂ）のＹ１，Ｙ２参照）に変化するような場合、その複数の黒色領域のうちの最も幅の大きい黒色領域の幅を設定変更後の黒色領域の幅として扱ってもよく、それら複数の黒色領域の幅の合計値を設定変更後の黒色領域の幅と扱ってもよい。
【００５６】
このように、本実施形態では、閾値を設定変更すると共に、その設定変更前後において、黒色領域を抽出し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合に、マージン対応領域に誤りが生じたことを検出している。なお、制御回路４０及び図４のプログラムは「設定変更手段」「変化判断手段」の一例に相当する。
【００５７】
図３に戻り、誤り検出処理（Ｓ５）の終了後、マージン対応領域に誤りがあったか否かの判断処理が行われ（Ｓ６）、マージン対応領域に誤りがあった場合、即ち、誤りフラグが「１」に設定されている場合には、Ｓ６にてＹｅｓに進み、後述する復元処理が行われる（Ｓ７）。一方、マージン対応領域に誤りがない場合、即ち、誤りフラグが「０」に設定されている場合にはＳ６にてＮｏに進むことになる。
【００５８】
次に、Ｓ７の復元処理について説明する。
この復元処理では、まず、読取対象となるバーコードＢの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定する。そして、配列データにおける誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成する。
なお、制御回路４０及び図８のプログラムが「種別特定手段」、「境界パターン推定手段」の一例に相当する。
【００５９】
以下、復元処理について具体的に説明する。なお、図８は、復元処理を例示するフローチャートであり、図９は種別特定処理を例示するフローチャートである。また、図１０は個別判断処理の一例を示すフローチャートである。さらに、図１１（Ａ）は、ＣＯＤＥ３９のバーコード構成を説明する説明図であり、図１１（Ｂ）は、ＣＯＤＥ３９のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示している。図１１（Ｃ）は、図１１（Ｂ）とは異なるタイプの誤りが生じた配列データを概念的に示している。図１２は、図１０とは異なる個別判断処理を例示するフローチャートである。
【００６０】
図８に示すように、まず、読取対象のバーコードＢの種別を特定する処理（種別特定処理）を行う（Ｓ１００）。この種別特定処理は、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいてバーコードＢの種別を特定する処理であり、具体的には、バーコードＢが登録されている複数種別のいずれかに該当するかを順番に確認する。図９は、その一例を示すものであり、まず、Ｓ２００にてｎを１に設定し、次いでｎ番目の個別判断処理を行う（Ｓ２１０）。個別判断処理は、バーコードＢが各種別に該当するかを個別に判断する処理であり、本実施形態では登録される複数種別にそれぞれ対応するように複数の個別判断処理が用意され、各個別判断処理に固有の番号が付されている。
【００６１】
図１０は、初回（即ちｎ＝１の場合）の個別判断処理を例示しており、この処理では、読取対象のバーコードＢがＣＯＤＥ３９のバーコードであるか否かを判断している。ＣＯＤＥ３９のバーコードは、例えば図１１（Ａ）のような構成をなし、両マージンに隣接してスタートキャラクタ及びストップキャラクタを構成する白黒バーが配されてなるものである。図１０の処理では、このようなＣＯＤＥ３９の特徴を利用してバーコードＢがＣＯＤＥ３９に該当するか否かを判断する。
【００６２】
図１０に示すように、まず配列データにおいて、誤ったマージン対応領域の反対側のマージン対応領域を特定する（Ｓ３００）。具体的には、バーの配列方向において、誤ったマージン対応領域の反対側の端部に配される白色領域を反対側のマージンとして認識する。そして、その反対側のマージン対応領域（白色領域）に隣接してＣＯＤＥ３９のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する（Ｓ３１０）。ＣＯＤＥ３９のスタートキャラクタ又はストップキャラクタが存在しない場合には、Ｓ３１０にてＮｏに進み当該処理を終了する。
【００６３】
一方、反対側のマージン対応領域に隣接してＣＯＤＥ３９のスタートキャラクタ又はストップキャラクタが存在すると判断した場合にはＳ３１０にてＹｅｓに進み、誤ったマージン対応領域以外の配列データを用いてＣＯＤＥ３９としてデコードできるか否かを判断する。
【００６４】
配列データにおけるマージン対応領域の誤り（即ち誤った黒色領域）は、例えば図１１（Ｂ）のように境界パターンの黒色領域ＰＡの外側に連続して構成されたり、図１１（Ｃ）のように、境界パターンの黒色領域ＰＡの外側に離れて構成されるため、Ｓ３２０の処理では、誤った黒色領域の内側端部をＣＯＤＥ３９の境界パターンの黒色領域ＰＡ（即ち、スタートキャラクタ或いはストップキャラクタの端部を構成する黒色領域）に置換してＣＯＤＥ３９としてデコードを試行したり、或いは誤った黒色領域全部を白色領域に置換してＣＯＤＥ３９としてデコードを試行し、デコードできるか否かを判断する。デコードが可能な場合にはＳ３２０にてＹｅｓに進み、読取対象のバーコードＢの種別がＣＯＤＥ３９である旨の情報をメモリ３５に記憶する。
【００６５】
このようにして個別判断処理が行われた後、図９のＳ２２０において、読取対象のバーコードＢの種別が特定されたか否かを判断する。図１０のＳ３３０のように、特定種別である旨が記憶された場合にはＳ２２０てＹｅｓに進み、図９に示す種別特定処理を終了する。一方、種別が特定されていない場合にはＳ２２０にてＮｏに進んでｎをインクリメントし（Ｓ２３０）、Ｓ２１０に戻って次の種別に関する個別判断処理を行う。
【００６６】
図１２は、２番目の個別判断処理を例示しており、この処理では、ＥＡＮ−８の特徴を利用して、読取対象のバーコードＢの種別がＥＡＮ−８であるか否かを判断している。この処理では、まず、配列データにおける誤ったマージン対応領域の反対側のマージン対応領域を特定する処理を行う（Ｓ４００）。具体的には、配列データにおいて、マージン対応領域の誤り（誤った黒色領域）から４５個のパターン分だけ移動した位置を反対側のマージン対応領域とする。さらに、配列データにおいて、反対側のマージン対応領域に隣接してＥＡＮ−８のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する。存在しない場合にはＳ４１０にてＮｏに進み、当該処理を終了する。
【００６７】
Ｓ４１０において反対側のマージン対応領域に隣接してＥＡＮ−８のスタートキャラクタ又はストップキャラクタが存在すると判断される場合には、Ｓ４１０にてＹｅｓに進み、センターガードパターンが確認できるか判断する処理を行う（Ｓ４２０）。具体的には、配列データにおいて、スタートキャラクタ又はストップキャラクタを構成する白色領域及び黒色領域から誤ったマージン対応領域側に１６パターン分移動した位置に、センターガードパターンを構成する白色領域及び黒色領域が存在するか否かを判断する。存在しない場合にはＳ４２０にてＮｏに進み、当該処理を終了する。
【００６８】
センターガードパターンが確認できる場合には、Ｓ４２０にてＹｅｓに進み、配列データにおける、スタートキャラクタ又はストップキャラクタと、センターガードパターンとの間のデータを用いてＥＡＮ−８としてデコードできるか否かを判断する（Ｓ４３０）。デコードできない場合にはＳ４３０にてＮｏに進み、当該処理を終了する。デコードできる場合には、バーコードＢの種別がＥＡＮ−８である旨の情報をメモリ３５に記憶し（Ｓ４４０）、当該処理を終了する。
【００６９】
以上のように、個別判断処理を順次行い、読取対象のバーコードＢの種別を特定する。そして、種別が特定された場合には、図９のＳ２２０にてＹｅｓに進んで種別特定処理を終了する。種別特定処理の終了後は、図８のＳ１１０にて境界パターン及びマージンの特定処理が行われる。具体的には、種別特定処理にて特定されたバーコードの種別に対応する境界パターンのデータをメモリ３５から読み出して、境界パターンを特定する。なお、本実施形態では、メモリ３５において、バーコードの各種別と、境界パターンのデータとが対応付けられて記憶されており、バーコードの種別が特定されれば境界パターンのデータが読み出せるようになっている。
【００７０】
そして、特定された境界パターン及びその外側の白色パターンに基づいて、配列データにおける誤った黒色領域を置換する（Ｓ１２０）。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、図８のＳ１１０にて特定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換するように処理を行う。例えば、ＥＡＮ−８コードの場合には、マージンは１１モジュール、マージンに隣接する黒バー（即ち境界パターン）は１モジュールと規定されているため、このような規定に合うように修正する。
【００７１】
置換後には、図６（Ａ）のように構成されていた配列データ（マージン対応領域に誤りが生じていた元の配列データ）が、図６（Ｂ）のように置換されることとなる。なお、図６（Ｂ）では、置換対象の領域を破線で囲んで示している。Ｓ１２０が終わると、復元処理は終了する。そして、復元処理（Ｓ７、図８）の終了後には、置換後の配列データ（図６（Ｂ）参照）に基づいて、図３のＳ８に示すデコード処理が行われる。なお、Ｓ６にてマージン対応領域に誤りがないと判断される場合にはＳ６にてＮｏに進み、そのままＳ８のデコード処理が行われる。
【００７２】
なお、上記の例では、誤った黒色領域の内側端部領域を特定された境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンから離れて形成される可能性もある（図１１（Ｃ）参照）。そこで、上記デコード処理において正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換するように配列データを修正して再びデコード処理を試行するようにしてもよい。
【００７３】
本実施形態のように、配列データ（二値化手段により区分けされた白色領域及び黒色領域を配列したデータ）において、マージンとして認識されるべき領域（マージン対応領域）に黒色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が黒色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
【００７４】
また、本実施形態のように、閾値を設定変更し得るように構成し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域（マージン対応領域）に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【００７５】
さらに、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域（マージン対応領域）を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【００７６】
また、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【００７７】
［第２実施形態]
次に第２実施形態について説明する。図１３は、本発明の第２実施形態に係るバーコードリーダにて行われる誤り検出処理の流れを例示するフローチャートである。なお、第２実施形態は、Ｓ５の誤り検出処理（図３）の具体的内容のみが第１実施形態と異なり、それ以外は第１実施形態と同様である。よって、Ｓ５の誤り検出処理については、図４、図７に代えて図１３を用いて説明する。また、それ以外については図１〜図１２（但し、図４、図７以外）と同様であるので適宜これらを参照し、詳細な説明は省略する。
【００７８】
本実施形態では、二値化処理（図３のＳ３）によって抽出される複数の黒色領域の最大幅と、その二値化処理によって抽出される複数の白色領域の最大幅とを検出し、白色領域の最大幅の、黒色領域の最大幅に対する比が基準値未満であるか否かを判断するようにしている。そして、その比が基準値未満であると判断された場合に、マージン対応領域に誤りが生じたことが検出されるようになっている。
なお、本実施形態では、制御回路４０及び図１３のプログラムが、「誤り検出手段」「暗色最大幅検出手段」「明色最大幅検出手段」「比較手段」の一例に相当する。また、「二値化手段」「デコード手段」「復元手段」「境界パターン推定手段」「種別特定手段」については第１実施形態と同様である。
【００７９】
具体的には、図１３のように誤り検出処理が行われる。まず、二値化処理（図３のＳ３）によって抽出される複数の黒色領域の最大幅Ｍｂと、その二値化処理によって抽出される複数の白色領域の最大幅Ｍｈとを検出する処理を行う（Ｓ５００）。そして、白色領域の最大幅Ｍｈの黒色領域の最大幅Ｍｂに対する比Ｍｈ／Ｍｂを算出する（Ｓ５１０）。
【００８０】
その後、読取対象のバーコードＢの種別特定処理を行う（Ｓ５２０）。種別特定処理はバーコードＢの種別を特定し得る方法であればよく、本実施形態では例えば第１実施形態のＳ１００の種別特定処理（図８）と同様の方法、即ち、図９〜図１２のように行われる。なお、制御回路４０及び図１３のプログラムは、「種別特定手段」の一例に相当する。
【００８１】
そして、Ｓ５２０にて特定された種別に基づいて基準値を設定する処理（基準値設定処理）を行う（Ｓ５３０）。この基準値は、マージン対応領域に誤りが生じているか否かを判断する基準となる値（具体的には、比Ｍｈ／Ｍｂが正常値（マージン対応領域に誤りがないときの値）か否かを判断する上での基準となる値）である。本実施形態では、マージン幅の黒色バー幅最大値に対する比を各種別毎に予め求めておき、この各種別毎の基準値をメモリ３５に記憶している。例えば、種別Ａのバーコードにおいて、マージン幅がＭｈＡで、黒色バー幅の最大値がＭｂＡであれば、種別Ａの基準値はＭｈＡ／ＭｂＡとして定められ、メモリ３５に記憶されることになる。Ｓ５３０の処理では、このように記憶される基準値のリストの中からＳ５２０にて特定された種別に対応するものを読み出す。なお、制御回路４０及び図１３のプログラムが「基準値設定手段」の一例に相当する。
【００８２】
そして、Ｓ５１０にて算出された比Ｍｈ／Ｍｂが、Ｓ５３０にて設定された基準値未満であるか否かを判断する（Ｓ５４０）。比Ｍｈ／Ｍｂが基準値未満であれば、Ｓ５４０にてＹｅｓに進み、Ｓ５６０にてマージン対応領域に誤りがあったことをメモリ３５に記憶する。一方、比Ｍｈ／Ｍｂが基準値未満でない場合にはＳ５４０にてＮｏに進み、Ｓ５５０にてマージン対応領域に誤りがなかったことをメモリ３５に記憶する。このようにして誤り検出処理を行った後は、第１実施形態と同様に、Ｓ６〜Ｓ８（図３）の処理が行われることとなる。なお、比Ｍｈ／Ｍｂが基準値未満である場合には、黒色領域の最大幅Ｍｂの位置を「誤った黒色領域」と考えることができ、この「誤った黒色領域」に対して第１実施形態と同様の復元処理が行われることになる。
【００８３】
本実施形態のように、白色領域の最大幅Ｍｈの黒色領域の最大幅Ｍｂに対する比が基準値未満であるか否かを判断し、この比Ｍｈ／Ｍｂが基準値未満であると判断された場合に、マージンとして認識されるべき領域（マージン対応領域）に誤りが生じたことを検出するようにすれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。また、特定された種別に基づいて基準値を設定し、この基準値と、比Ｍｈ／Ｍｂとを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【００８４】
［第３実施形態]
次に第３実施形態について説明する。図１４は、本発明の第３実施形態に係るバーコードリーダに用いる復元処理を例示するフローチャートである。図１５は、度数分布情報を概念的に例示するものであり、配列データに含まれる各黒色領域について、幅値毎の度数を表したグラフ（ヒストグラム）である。図１６は、Ｓ６１０の推定処理に用いる配列データを概念的に説明する説明図である。
第３実施形態では、Ｓ７の復元処理（図３）の具体的内容のみが第１実施形態と異なり、それ以外は第１実施形態と同様である。よって、Ｓ７の復元処理の具体的内容については、図８〜図１２に代えて図１４、図１５を用いて説明する。また、それ以外については図１〜図７と同様であるので適宜これらを参照し、詳細な説明は省略する。
【００８５】
本実施形態では、図３の二値化処理によって得られた黒色領域の幅値を集計すると共に、幅値毎の度数分布情報を生成し、その生成される度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにしている。そして、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成している。なお、制御回路４０及び図１４のプログラムは「復元手段」「度数分布情報生成手段」「境界パターン推定手段」の一例に相当する。また、「二値化手段」、「デコード手段」、「誤り検出手段」、「設定変更手段」、「変化判断手段」は第１実施形態と同様である。
【００８６】
具体的には、図１４のように誤り検出処理が行われる。
まず、Ｓ４の処理（図３）において算出された各黒色領域の幅値を集計し、度数分布情報を生成する（Ｓ６００）。図１５は、その度数分布情報をグラフ化した例を示している。その後、マージン対応領域に隣接する端部の黒色領域（即ち、マージンと情報領域との境界部に設けられる黒色の境界パターンの黒色領域）を推定する処理を行う（Ｓ６１０）。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、候補となるべき黒色領域にそれぞれ置換してデコード処理を行う。例えば、図１５のように、度数分布情報の生成により、黒色領域の幅値として、Ｗａ、Ｗｂ、Ｗｃ、Ｗｄ、Ｗｅが得られた場合には、これらのいずれかが境界パターンの黒色領域の幅値であると考えられるため、図１６（Ｂ）〜（Ｅ）のように、Ｗａ、Ｗｂ、Ｗｃ、Ｗｄ、Ｗｅの各幅の黒色領域をそれぞれ誤った黒色領域の内側端部領域に配するように配列データを置換し（このとき、各幅の黒色領域の外側は白色領域とする）、デコードを試行する。なお、本実施形態では、誤り検出処理によって誤った黒色領域とされた幅値（図１５ではＷｅ）を除いた上でデコードを試行するようにしている。
【００８７】
図１６（Ａ）は、図３の二値化処理（Ｓ３）直後の配列データを示しており、図１６（Ｂ）は、誤った黒色領域の内側端部領域を幅Ｗａの黒色領域に置換した配列データを示し、図１６（Ｃ）は、誤った黒色領域の内側端部領域を幅Ｗｂの黒色領域に置換した配列データを示し、図１６（Ｄ）は、誤った黒色領域の内側端部領域を幅Ｗｃの黒色領域に置換した配列データを示し、図１６（Ｅ）は、誤った黒色領域の内側端部領域を幅Ｗｄの黒色領域に置換した配列データを示している。このように配列データをそれぞれ生成すると共に、各配列データをデコードし、デコードが正常に行われた配列データを正規の配列データと推定する。例えば、図１６（Ｂ）の配列データについてデコードが正常に行われた場合には、これを正規の配列データとし、そのときの内側端部領域の幅Ｗａが境界パターンの黒色領域と推定される。
【００８８】
そして、図１４に示すように、誤った黒色領域を推定される境界パターンの黒色領域及びその外側の白色領域に置換するように置換処理を行い（Ｓ６２０）、配列データを再生成する。置換処理後は、第１実施形態と同様に、図６（Ａ）のように構成されていた配列データ（マージン対応領域に誤りが生じていた元の配列データ）が、図６（Ｂ）のように置換され、その置換後の配列データ（図６（Ｂ）参照）に基づいて、図３のＳ８に示すデコード処理が行われる。
【００８９】
なお、上記例では、誤った黒色領域の内側端部領域をＳ６１０にて推定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンの黒色領域から離れて形成される可能性もある。従って、Ｓ６１０の処理では、誤った黒色領域の内側端部領域を、度数分布情報の生成によって得られた各幅値の黒色領域に置換しても正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換してデコード処理を試行するようにしてもよい。このような試行によってデコードが正常に行われた場合、Ｓ６２０では、誤った黒色領域の全部を白色領域に置換するように配列データを再生成することとなる。
【００９０】
本実施形態に例示されるように、黒色領域及び白色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域（マージン対応領域）を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【００９１】
［第４実施形態]
次に第４実施形態について説明する。図１８は、本発明の第４実施形態に係るバーコードリーダ４００を概略的に例示する説明図である。図１９は、図１８のバーコードリーダ４００の電気的構成を概略的に例示するブロック図である。
【００９２】
１．全体構成
本実施形態に係るバーコードリーダ４００も「光学的情報読取装置」の一例に相当するものであり、情報コードとしてのバーコードＢを読取可能に構成されるものである。なお、バーコードＢは明色パターン（図１８等では白色パターン）と暗色パターン（図１８等では黒色パターン）とからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンＭが設けられたものである。
【００９３】
本実施形態のバーコードリーダ４００は、いわゆるレーザスキャン方式として構成されており、レーザ光Ｌ１を出射するレーザ光源４０２と、レーザ光源４０２から出射されたレーザ光Ｌ１をバーコードＢに向けて反射する反射ミラー４０３と、バーコードＢからの反射光Ｌ２を受光する受光センサ４０４とを備える。受光センサ４０４は、受光素子からなると共に光電変換する機能を有し、受光した反射光Ｌ２の受光強度に対応したアナログの電気信号を出力する。反射ミラー４０３は、揺動装置（図１９において符号４０５で示す）の作用によって揺動自在に構成されている。この実施形態では、レーザ光源４０２としてレーザダイオードを用いる。
【００９４】
なお、本実施形態では、レーザ光源４０２が「光源」の一例に相当し、指向性を有する照明光（レーザ光Ｌ１）を出射するように機能する。また、受光センサ４０４は、「受光手段」の一例に相当し、バーコードＢ（情報コード）からの反射光Ｌ２を受光し、バーコードＢの各パターンごとに反射光の強度に応じた受光信号を出力するように機能する。また、揺動装置４０５が、「揺動手段」の一例に相当し、光源から出射される照明光を揺動させるように機能する。また、これらレーザ光源４０２及び揺動装置４０５が「投光手段」の一例に相当し、照明光（レーザ光Ｌ１）を二方向（走査線Ｔに沿った往復方向）に走査するように機能する。
【００９５】
揺動装置４０５としては公知の種々の装置を用いることができる。例えば、反射ミラー４０３をステップモータの回転軸に取付け、そのステップモータを低周波正逆転駆動する装置を用いることができる（特許第３２２５６２１号公報）。また、反射ミラー４０３の一端にコイルを取付け、そのコイルにマグネットを挿入し、コイルに交流電流を通電することにより、反射ミラー４０３を周期的に揺動させる装置を用いることもできる（特許第２６０３８８３号公報）。さらに、磁歪素子、電歪素子、または表面弾性波素子などのいわゆる表面振動素子で反射ミラー４０３を構成し、該素子の表面を振動させる装置を用いることもできる。
【００９６】
レーザ光源４０２から出射されたレーザ光Ｌ１は、揺動装置４０５によって揺動する反射ミラー４０３にて反射され、バーコードＢ上を往復走査する。図１８において符号Ｔで示す線は、レーザ光Ｌ１による走査線を概念的に示すものである。バーコードＢにて反射したレーザ光Ｌ１は、反射光Ｌ２となって受光センサ４０４に取込まれる。なお、図示しないが、バーコードリーダ４００には、バーコードＢの読取り範囲を照明するためのマーカ光を照射するマーカ光照射装置などが設けられている。
【００９７】
次に、バーコードリーダ４００の主な電気的構成について、それをブロックで示す図１９を参照して説明する。
バーコードリーダ４００は、信号処理部４１１と、二値化処理部４１０と、計測処理部４０９と、デコード部４０８と、制御部４０７と、格納部４０６とを備える。
【００９８】
信号処理部４１１は、受光センサ４０４から出力された電気信号のノイズを除去するローパスフィルタと、このローパスフィルタから出力された信号を所定のゲイン（増幅率）で増幅する増幅回路と、この増幅回路から出力された信号をパルス信号に変換する微分回路と、この微分回路から出力されたパルス信号を絶対値を取ったパルス列に変換する絶対値回路とを備える。
【００９９】
二値化処理部４１０は、信号処理部４１１から出力された上記パルス列の各パルスを所定の基準値と比較することにより明暗（スペースかバーか）を判定し、その判定結果に対応する二値データを生成する。計測処理部４０９は、二値化処理部４１０により生成された二値データを計数し、バー幅値およびスペース幅値を算出する。
【０１００】
なお、上記信号処理部４１１、二値化処理部４１０、計測処理部４０９、デコード部４０８、制御部４０７は、それぞれが別々の回路で構成されていてもよく、いくつかの機能を共通の制御回路（例えばＣＰＵ等）によって実現してもよい。
【０１０１】
格納部４０６は、計測処理部４０９により算出されたバー幅値およびスペース幅値、さらには後述するデコード部４０８に備えられたＣＰＵの処理結果などを格納するＲＡＭと、ＣＰＵが実行するシステムプログラムや各種の制御プログラムなどが格納されたＲＯＭと、ＲＯＭから読出したシステムプログラムなどをワークエリアに格納するフラッシュメモリとを備える。
【０１０２】
デコード部４０８は、図示しないが、デコード処理および各処理部の制御などを実行するＣＰＵを備えており、そのＣＰＵは、格納部６に格納されたバー幅値およびスペース幅値を、予め格納されている明暗パターンと比較することにより、明暗パターンを抽出し、読取対象のバーコードＢにエンコード（符号化）されている光学的情報をデコード（復号）する。さらに、デコード部４０８は、クロック信号発生回路と、各回路との間でデータの入出力を行う入出力回路とを備える。
【０１０３】
制御部４０７は、ＣＰＵを備えてなるものであり、信号処理部４１１に備えられたローパスフィルタの帯域幅の変更、増幅回路のゲインの増減などを必要に応じて実行する。また、制御部４０７は、レーザ光源４０２および揺動装置４０５の制御、バーコードＢのデコードが成功したときに「ピッ」などの音を発生するブザーの制御、デコードしたデータなどを外部装置（図示せず）へ出力する制御などを実行する。
なお、図示しないが、バーコードリーダ４００には、格納部４０６、制御部４０７、デコード部４０８、計測処理部４０９、二値化処理部４１０および信号処理部４１１へ電源を供給する電源回路が備えられている。
【０１０４】
２．特徴的構成
次に本実施形態の特徴的構成について図２０〜図２６を参照しつつ説明する。図２０は、図１８、図１９に示すバーコードリーダ４００での読取処理の流れを例示するフローチャートである。また、図２１は、図２０の読取処理におけるデコード処理を例示するフローチャートである。図２２は、復元データのデコード処理を例示するフローチャートである。図２３（Ａ）は、正常な配列データを例示する説明図であり、（Ｂ）（Ｃ）は、配列データにおけるマージンとして認識されるべき領域（マージン対応領域）に暗色領域が含まれた例を示す説明図である。また、（Ｄ）は、（Ｃ）のデータの明色領域を拡張した後の第１配列データを例示するものである。図２４は、デコードが成功した配列データを例示する説明図あり、（Ａ）はマージン対応領域が正常である例を示すものであり、（Ｂ）はマージン対応領域に暗色領域が含まれた例を示すものである。（Ｃ）は、（Ｂ）のデータの明色領域を拡張した後の第１配列データを例示するものである。図２５（Ａ）（Ｂ）は、デコードが失敗した配列データを例示する説明図であり、（Ａ）は、データ端暗色領域が異常である場合を示すものであり、（Ｂ）は、マージン対応領域が異常である場合を示すものである。（Ｃ）は、（Ｂ）のデータの明色領域を拡張した後の第１配列データを例示するものである。図２６は、配列データの復元を説明する説明図である。
【０１０５】
図２０に示す読取処理は電源投入や所定操作（例えばトリガスイッチの押圧操作等）をトリガとして開始される。当該処理が開始されると、まず、レーザ光Ｌ１の一方向の走査に基づいて明暗配列データを取得する処理が行われる（Ｓ７０１）。レーザスキャン方式における明暗配列データを取得する方法は周知であるので詳細は省略するが、概要を述べると、レーザ光Ｌ１が一方向に走査されたときに受光センサ４０４から出力される信号波形を閾値と比較して明色領域（明色パターン（本実施形態では白色パターン）を示す領域）と暗色領域（暗色パターン（本実施形態では黒色パターン）を示す領域）とに区別する二値化処理を行い、バーコードＢの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードＢの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ（明暗配列データ）を取得する。
【０１０６】
なお、本実施形態では、Ｓ７０１の処理によって得られた明暗配列データが「第１配列データ」の一例に相当する。また、二値化処理部４１０が「二値化手段」の一例に相当するものであり、受光センサ４０４（受光手段）により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けするように機能する。また、二値化処理部４１０は、「第１二値化手段」の一例に相当し、レーザ光源４０２及び揺動装置４０５により照明光（レーザ光Ｌ１）が一方向に走査されたときに受光センサ４０４（受光手段）から出力される受光信号により得られる信号波形を明色領域と暗色領域とに区分けして第１配列データ（一方向に走査されたときに得られる明暗配列データ）を生成するように機能する。
【０１０７】
次に、この第１配列データに基づいてデコード処理が行われる（Ｓ７０２）。このデコード処理は、例えば図２１のような流れで行われる。なお、本実施形態では、デコード部４０８が「デコード手段」の一例に相当し、上記二値化処理部４１０により区分けされた明色領域及び暗色領域の配列データ（Ｓ７０２では、第１配列データ）をデコードするように機能する。
【０１０８】
Ｓ７０２のデコード処理では、図２１に示すように、まず、第１配列データがどの程度デコードが可能かを解析する処理が行われる（Ｓ８０１）。この処理では、Ｓ７０１にて取得した第１配列データの最後（終端側）から最初（始端側）に向けて順次デコードを行い、デコードが不能となる位置まで解析（デコード可能か否かの解析）を続ける。その後、Ｓ８０１での解析に基づいて第１配列データに係るバーコードＢのコード種別を特定する処理（種別特定処理）を行う（Ｓ８０２）。この種別特定処理は、例えば第１実施形態と同様の方法（即ち、図９〜図１２の方法）で行ってもよく、コード種別を特定し得る方法であれば他の方法でもよい。
【０１０９】
そして、特定されたコード種別における終端側のデータ端の暗色パターンから始端側のデータ端の暗色パターン手前までの必要本数を算出し、Ｓ８０１のデコード解析処理においてデコード可能とされた本数が必要本数以上であるかを判断する（Ｓ８０３）。このとき、デコード可能とされた本数が必要本数未満の場合にはＳ８０３にてＮｏに進む。デコード可能な本数が必要本数未満の場合とは、即ち、少なくとも始端側のマージン対応領域以外に誤りが含まれることを意味するため、「マージン対応領域の誤りが不明」、かつ「デコード失敗」と判定し（Ｓ８０４）、当該デコード処理を終了する。
【０１１０】
一方、Ｓ８０３において、デコード可能な本数が必要本数以上と判断された場合、Ｓ８０３にてＹｅｓに進み、Ｓ７０１にて生成された第１配列データにおける最初の明色領域の幅Ｗ１を取得する（Ｓ８０５）。さらに、Ｓ８０２にて特定されたコード種別に基づき、当該コード種別に必要なマージン幅Ｗ２を算出する（Ｓ８０６）。そして、第１配列データの最初の明色領域の幅Ｗ１が必要マージン幅Ｗ２よりも大きいかを判断する（Ｓ８０７）。図２３（Ｂ）（Ｃ）のように、最初の明色領域の幅Ｗ１よりも必要マージン幅Ｗ２のほうが大きい場合、Ｓ８０７にてＮｏに進む。Ｓ８０７にてＮｏに進むには、現在の最初の明色領域の次の明色領域をマージンと仮定し、最初の明色領域を拡張する処理を行う（Ｓ８１８）。例えば、図２３（Ｃ）のような第１配列データが得られた場合、現在の最初の明色領域ＷＨ１の次の明色領域ＷＨ２をマージンと仮定し、始端から前記次の明色領域ＷＨ２までの領域全体を明色領域に変換し、図２３（Ｄ）のような新たな配列データを生成する。その後、この新たな配列データを「第１配列データ」として、Ｓ８０５以降の処理を再度行う。
【０１１１】
一方、図２３（Ａ）のように、必要マージン幅Ｗ２よりも最初の明色領域の幅Ｗ１のほうが大きい場合にはＳ８０７にてＹｅｓに進み、Ｓ７０１にて取得した第１配列データ全体をデコードする（Ｓ８０８）。なお、Ｓ８０８では、公知の処理方法でデコードが行われる。
【０１１２】
Ｓ８０８においてデコードが成功した場合には、Ｓ８０９にてＹｅｓに進み、Ｓ８０８にてデコードしたコード種別に基づいて当該コード種別における必要マージン幅Ｗ３を算出する（Ｓ８１０）。さらに、始端側のデータ端暗色領域ＢＲ１に隣接する明色領域の幅Ｗ４を取得し、必要マージン幅Ｗ３よりも隣接明色領域の幅Ｗ４のほうが大きいかを判断する。図２４（Ａ）のように必要マージン幅Ｗ３よりも隣接明色領域（図２４（Ａ）では明色領域ＷＨ０）の幅Ｗ４のほうが大きい場合には、Ｓ８１２にてＹｅｓに進む。この場合の第１配列データはマージンが正常に確保された正常な明暗配列データであるといえるため、「マージン対応領域の誤りなし」かつ「デコード成功」と判定し（Ｓ８１３）、当該処理を終了する。なお、Ｓ８１３では、判定と共にデコード結果の出力も行われる。
【０１１３】
一方、図２４（Ｂ）のように、隣接明色領域（図２４（Ｂ）では明色領域ＷＨ４）の幅Ｗ４よりも必要マージン幅Ｗ３のほうが大きい場合、始端側のデータ端暗色領域ＢＲ１の外側隣に必要なマージンが確保されていないといえるため、Ｓ８１２にてＮｏに進み、上述した拡張処理を行い（Ｓ８１８）、図２４（Ｃ）のような新たな配列データを取得する。この場合、この新たな配列データを「第１配列データ」として、Ｓ８０３以降の処理を再度行うこととなる。
【０１１４】
一方、Ｓ８０８においてデコードが失敗した場合にはＳ８０９にてＮｏに進み、Ｓ８０２にて特定されたコード種別に基づいて正規のデータ端暗色領域の幅Ｗ５を算出する。さらに、第１配列データにおけるデータ端暗色領域ＢＲ１の幅Ｗ６を取得する。そして、正規のデータ端暗色領域の幅Ｗ５よりも第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ６のほうが大きいかを判断し（Ｓ８１６）、幅Ｗ５よりも幅Ｗ６のほうが大きい場合にはＳ８１６にてＹｅｓに進む。Ｓ８１６にてＹｅｓに進む場合とは、即ち、終端側からデータ端暗色領域ＢＲ１の手前まではデコード可能と判断され、かつデータ端暗色領域ＢＲ１の幅が正規のものより広いと判断される場合（つまり、図２５（Ａ）のようにデータ端暗色領域ＢＲ１が、マージンとして認識されるべき領域ＡＲ１（マージン対応領域）まで広がってしまっている場合）である。このような場合には、「マージン対応領域の誤りあり」かつ「デコード失敗」と判断し、その後、当該処理を終了する。
【０１１５】
一方、Ｓ８１６において、第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ５が正規のデータ端暗色領域の幅Ｗ６以下の場合、Ｓ８１６にてＮｏに進む。Ｓ８１６にてＮｏに進む場合とは、即ち、終端側からデータ端暗色領域ＢＲ１の手前まではデコード可能と判断され、かつ、図２５（Ｂ）のようにデータ端暗色領域ＢＲ１の幅が正規の幅Ｗ５と同じであり、マージンとして認識されるべき領域ＡＲ１（マージン対応領域）におけるデータ端暗色領域ＢＲ１から離れた位置に誤った暗色領域が配される場合といえる。このような場合には、Ｓ８１６にてＮｏに進み、上述した拡張処理（図２５（Ｂ）の例では明色領域ＷＨ５〜ＷＨ６まで明色領域とする拡張処理）を行い（Ｓ８１８）、図２５（Ｃ）のような新たな配列データを取得する。この場合、この新たな配列データを「第１配列データ」として、Ｓ８０３以降の処理を再度行うこととなる。
【０１１６】
なお、Ｓ８１６では、第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ６が正規のデータ端暗色領域の幅Ｗ５よりも大きいか否かを判断しているが、これに代え、Ｓ８１６において第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ６が必要なマージン幅Ｗ３（上述）よりも大きいかを判断するようにし、大きい場合にＳ８１６にてＹｅｓに進むようにしてもよい。
【０１１７】
なお、本実施形態では、制御部４０７を構成するＣＰＵによって図２０〜図２２に示す処理が実行されるようになっており、制御部４０７が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。具体的には、Ｓ７０１で取得した第１配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する構成をなしている。また、制御部４０７は、「種別特定手段」の一例にも相当し、Ｓ８０２に示すように第１配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コード（バーコードＢ）の種別を特定するように機能する。また、制御部４０７は、上記のように特定されるバーコードＢの種別に基づいて、第１配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する一方で、誤りが検出された場合、後述する方法を用いてマージン対応領域を復元するように機能する（即ち「復元手段」としての機能も果たす）。なお、その復元後の配列データ（再生成された配列データ）は、後述する処理においてデコード部４０８（デコード手段）によってデコードされる。
【０１１８】
次に、図２０におけるＳ７０３以降の処理を説明する。Ｓ７０２の処理が終了すると、Ｓ７０３においてデコードが成功したか否かを判断する。図２１の処理のＳ８１３においてデコード成功と判定されている場合にはＳ７０３にてＹｅｓに進み、当該処理を終了する。Ｓ７０２のデコード処理においてデコードが成功しなかった場合（Ｓ８０４又はＳ８１７の判定がなされた場合）、Ｓ７０３にてＮｏに進み、「マージン対応領域の誤りあり」と判定されているかを判断する（Ｓ７０４）。Ｓ７０２の処理のＳ８１７において「マージン対応領域の誤りあり」と判定されている場合にはＳ７０４にてＹｅｓに進み、そうでない場合にはＮｏに進む。
【０１１９】
Ｓ７０４にてＹｅｓに進む場合には、図２６（Ａ）に示すように第１配列データにおける最終の暗色領域ＢＲ６（終端側のデータ端暗色領域と予想される領域）の幅Ｗ８と、その始端側に隣接する明色領域ＷＨ１２の幅Ｗ９とをそれぞれ記憶する（Ｓ７０５）。また、上記デコード処理において検出された第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ６と、その終端側に隣接する明色領域ＷＨ８の幅Ｗ７とをそれぞれ記憶する（Ｓ７０６）。その後、両方向の配列データ（第１配列データ及び第２配列データ）でマージン対応領域の誤りが検出されているかを判断する。両方向でマージン対応領域の誤りが検出されている場合にはＳ７０７にてＹｅｓに進み、Ｓ７０８にて復元データのデコード処理を行う。なお、復元データのデコード処理については後述する。
【０１２０】
本実施形態では、制御部４０７が「第１幅情報記憶手段」の一例に相当し、第１配列データの始端側においてマージン対応領域と情報領域とに跨って配置される、誤ったデータ端暗色領域（第１暗色領域：図２６（Ａ）の例では暗色領域ＢＲ１）の幅情報と、この第１暗色領域の終端側に隣接する明色領域（第１明色領域：図２６（Ａ）の例では明色領域ＷＨ８）の幅情報と、をそれぞれ格納部４０６に記憶するように機能する。
【０１２１】
Ｓ７０７において、両方向の配列データ（第１配列データ及び第２配列データ）でマージン対応領域の誤りが検出されていないと判断される場合には、Ｓ７０７にてＮｏに進み、他方向（上記一方向とは反対方向）走査時の明暗配列データ（第２配列データ）を取得する（Ｓ７１０）。Ｓ７１０の第２配列データ取得処理は、基本的にＳ７０１の第１配列データ取得処理と同様であり、Ｓ７１０では、レーザ光Ｌ１が他方向に走査されたときに受光センサ４０４から出力される信号波形を閾値と比較して明色領域（明色パターン（本実施形態では白色パターン）を示す領域）と暗色領域（暗色パターン（本実施形態では黒色パターン）を示す領域）とに区別する二値化処理を行い、バーコードＢの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードＢの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ（第２配列データ）を取得する。
【０１２２】
その後、Ｓ７１０にて取得された第２配列データに基づいてデコード処理を行う（Ｓ７１１）。Ｓ７１１のデコード処理は、基本的にＳ７０２のデコード処理と同様であり、図２１において第１配列データに対して行っていた処理を同様に第２配列データに対して行うこととなる。そして、第２配列データに対するデコード処理（Ｓ７１１）が成功したか否かを判断し（Ｓ７１２）、成功した場合にはＳ７１２にてＹｅｓに進み、当該処理を終了する。第２配列データに対するデコード処理が失敗した場合にはＳ７１２にてＮｏに進み、第２配列データのマージン対応領域に誤りあるかを判断する（Ｓ７１３）。第２配列データに対して行われたＳ７１１のデコード処理においてＳ８０４の判定がなされた場合にはＳ７１３にてＮｏに進む。一方、第２配列データに対して行われたＳ７１１のデコード処理においてＳ８１７の判定がなされた場合にはＳ７１３にてＹｅｓに進む。
【０１２３】
Ｓ７１３にてＹｅｓに進む場合には、図２６（Ｂ）に示す第２配列データにおける最終の暗色領域ＢＲ３（終端側のデータ端暗色領域と予想される領域）の幅Ｗ１０と、その始端側に隣接する明色領域ＷＨ９の幅Ｗ１１とをそれぞれ記憶する（Ｓ７１４）。また、上記デコード処理（Ｓ７１１）において検出された第２配列データのデータ端暗色領域ＢＲ４の幅Ｗ１２と、その終端側に隣接する明色領域ＷＨ１１の幅Ｗ１３とをそれぞれ記憶する（Ｓ７１５）。その後、両方向の配列データ（第１配列データ及び第２配列データ）でマージン対応領域の誤りが検出されているかを判断する（Ｓ７１６）。両方向の配列データについてマージン対応領域の誤りが検出されている場合にはＳ７１６にてＹｅｓに進み、そうでない場合にはＳ７１６にてＮｏに進む。
【０１２４】
本実施形態では、制御部４０７が「第２幅情報記憶手段」の一例に相当し、第２配列データの最終の明色領域（図２６（Ｂ）では明色領域ＷＨ１０）の隣に位置する最終の暗色領域（第２暗色領域：図２６（Ｂ）では、暗色領域ＢＲ３）の幅情報と、最終の暗色領域（暗色領域ＢＲ３）の始端側に隣接する明色領域（第２明色領域：図２６（Ｂ）では、明色領域ＷＨ９）の幅情報と、をそれぞれ格納部４０６に記憶するように機能する。
【０１２５】
次に、Ｓ７０８、Ｓ７１７における復元データのデコード処理について説明する。これら復元データのデコード処理は、いずれも図２２のような流れで行われる。
まず、Ｓ７０６の処理によって記憶されている第１配列データのデータ端暗色領域ＢＲ１の幅Ｗ６及びそのデータ端暗色領域ＢＲ１の終端側に隣接する明色領域ＷＨ８の幅Ｗ７（図２６（Ａ）参照）を読み出すとともに、Ｓ７１４の処理によって記憶されている第２配列データの最終の暗色領域ＢＲ３の幅Ｗ１０及びその最終の暗色領域ＢＲ３の始端側に隣接する明色領域ＷＨ９の幅Ｗ１１（図２６（Ｂ）参照）を読み出す。そして、Ｗ１０、Ｗ１１の幅比率（即ち、第２暗色領域と第２明色領域との幅比率）に基づいて、第１配列データにおける幅Ｗ６、Ｗ７の幅比率（即ち、第１暗色領域と第１明色領域との幅比率）を、図２６（Ｃ）に示すような正規の幅比率に復元する。なお、第２配列データの最終の暗色領域ＢＲ３のパターンが「第２配列データの最終の暗色端部パターン」に相当する。また、第１配列データのデータ端暗色領域ＢＲ１についての正規のパターンが「第１配列データの最初に配置されるべき正規の暗色端部パターン」に相当する。
【０１２６】
図２１のＳ８１７で判定される場合、図２６（Ａ）に示すデータ端暗色領域ＢＲ１よりも後の明色領域及び暗色領域は正しいと考えられるため、データ端暗色領域ＢＲ１に隣接する明色領域ＷＨ８も正しいと考えることができる。この明色領域ＷＨ８は、図２６（Ｂ）に示す第２配列データにおける最終の暗色領域ＢＲ３の始端側に隣接する明色領域ＷＨ９と同一の明色パターンを反映するものである。従って、Ｗ７／Ｗ６’（第１暗色領域と第１明色領域との幅比率）＝Ｗ１１／Ｗ１０（第２暗色領域と第２明色領域との幅比率）となるような値Ｗ６’を求め、データ端暗色領域の幅がこの値Ｗ６’となるように第１配列データを再生成することでマージン対応領域の誤りが精度高く復元されることとなる（図２６（Ｃ）参照）。なお、図２６（Ｃ）は、復元後の第１配列データを示すものであり、図２６（Ａ）のデータ端暗色領域ＢＲ１を変換した後のデータ端暗色領域をＢＲ１’にて示しており、そのデータ端暗色領域ＢＲ１’よりも始端側の領域を全て明色領域とするように変換している。
【０１２７】
なお、本実施形態では、制御部４０７が「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成する機能を有している。具体的には、第２配列データに基づいて第１配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第１配列データを再生成している。
【０１２８】
また、制御部４０７は、「正規パターン推定手段」の一例に相当し、第２配列データの最終の暗色領域ＢＲ３のパターン（暗色端部パターン）に基づき、第１配列データの最初に配置されるべき正規の暗色端部パターン（データ端暗色領域の正規のパターン）を推定するように機能する。復元手段として機能する制御部７は、誤りが検出されたマージン対応領域の誤った暗色領域（図２６（Ａ）ではデータ端暗色領域ＢＲ１）を、その推定される正規の暗色端部パターン及び暗色端部パターンの外側に配される明色パターンに置換することでマージン対応領域を復元し、第１配列データを再生成するように機能している。
【０１２９】
その後、Ｓ９０１にて再生成された復元後の第１配列データを用いて公知のデコードを行う（Ｓ９０２）。復元後の第１配列データについてデコードが成功した場合にはＳ９０３にてＹｅｓに進み、デコード成功の旨を記録する（Ｓ９０８）。なお、この記録と共にデコード結果の出力処理も行われる。
【０１３０】
一方、Ｓ９０１にて復元された第１配列データについてデコードが失敗した場合にはＳ９０３にてＮｏに進み、第２配列データの復元処理を行う。本実施形態では、「誤り検出手段」「復元手段」として機能する制御部４０７により、１配列データの場合と同様に、第２配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを検出するように構成されており、さらに、第１配列データの復元と同様に、第２配列データについても、第１配列データに基づいてマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第２配列データを再生成している。そして、Ｓ９０２において再生成された第１配列データのデコードが失敗した場合には、この再生成された第２配列データをデコードするように構成されている。
【０１３１】
具体的には、Ｓ９０１と同様の方法で復元が行われる。即ち、Ｓ７１５の処理によって記憶されている第２配列データのデータ端暗色領域ＢＲ４の幅Ｗ１２及びそのデータ端暗色領域ＢＲ４の終端側に隣接する明色領域ＷＨ１１の幅Ｗ１３（図２６（Ｂ）参照）を読み出すとともに、Ｓ７０５の処理によって記憶されている第１配列データの最終の暗色領域ＢＲ６の幅Ｗ８及びその最終の暗色領域ＢＲ６の始端側に隣接する明色領域ＷＨ１２の幅Ｗ９（図２６（Ａ）参照）を読み出す。そして、Ｗ８、Ｗ９の幅比率に基づいて、第２配列データにおける幅Ｗ１２、Ｗ１３の幅比率を、図２６（Ｄ）に示すような正規の幅比率に復元する。
【０１３２】
Ｓ９０４の処理では、Ｗ１３／Ｗ１２’＝Ｗ９／Ｗ８となるような値Ｗ１２’を求め、データ端暗色領域の幅がこの値Ｗ１２’となるようにマージン対応領域の誤りを復元し、第２配列データを再生成する（図２６（Ｄ）参照）。なお、図２６（Ｄ）は、復元後の第２配列データを示すものであり、図２６（Ｂ）のデータ端暗色領域ＢＲ４を変換した後のデータ端暗色領域をＢＲ４’にて示しており、そのデータ端暗色領域ＢＲ４’よりも始端側の領域を全て明色領域とするように変換している。
【０１３３】
その後、Ｓ９０４にて復元された第２配列データを用いて公知のデコードを行い（Ｓ９０５）、デコードが成功した場合にはＳ９０６にてＹｅｓに進み、デコード成功を記録すると共にデコード結果を出力する（Ｓ９０８）。第２配列データのデコードも失敗した場合にはＳ９０６にてＮｏに進み、デコード失敗を記録して（Ｓ９０７）当該復元データのデコード処理を終了する。
【０１３４】
図２２で示した復元データのデコード処理が図２０のＳ７０８である場合、図２０のＳ７０９において、デコードが成功したか否かを判断する。デコードが成功した場合にはＳ７０９にてＹｅｓに進み、当該処理を終了する。デコードが失敗した場合にはＳ７０９にてＮｏに進み、Ｓ７１０以降の処理を続けることとなる。同様に、Ｓ７１７にて復元データのデコード処理が終了した場合、そのＳ７１７にてデコードが成功したか否かを判断する（Ｓ７１８）。デコードが成功した場合にはＳ７１８にてＹｅｓに進み、当該処理を終了する。デコードが失敗した場合にはＳ７１８にてＮｏに進み、Ｓ７０１以降の処理を続けることとなる。  
【０１３５】
以上説明した本実施形態の構成によれば、以下のような効果を奏する。
本実施形態の光学的情報読取装置（バーコードリーダ４００）では、照明光（レーザ光Ｌ１）が一方向に走査されたときの信号波形に基づいて第１配列データ（図２６（Ａ）等）を生成し、少なくともこの第１配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第２配列データ（図２６（Ｂ）等）を生成する構成をなしており、第１配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第２配列データに基づいて第１配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第１配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ（第１配列データ）においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第２配列データに基づいて適切に修正でき、ひいては第１配列データのデコードを精度高く行うことができる。
【０１３６】
また、本実施形態では、図２６（Ｂ）に示す第２配列データの最終の暗色端部パターンに基づき、図２６（Ａ）に示す第１配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第２配列データの最終の暗色端部パターンは、第１配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第２配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第１配列データに生じた誤りを適切に解消でき、その結果、第１配列データのデコードをより正確に行うことができるようになる。
【０１３７】
また、第１配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいてバーコードＢ（情報コード）の種別を特定するように構成されている。このようにバーコードＢの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第１配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【０１３８】
また、第１配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第１暗色領域（図２６（Ａ）の暗色領域ＢＲ１）の幅情報と、第１暗色領域の終端側に隣接する第１明色領域（図２６（Ａ）の明色領域ＷＨ８）の幅情報と、をそれぞれ記憶している。そして、第２配列データの最終の明色領域（図２６（Ｂ）の明色領域ＷＨ１０）の隣に位置する第２暗色領域（図２６（Ｂ）の暗色領域ＢＲ３）の幅情報と、第２暗色領域の始端側に隣接する第２明色領域（図２６（Ｂ）の明色領域ＷＨ９）の幅情報と、の幅比率に基づいて、第１配列データにおける第１暗色領域と第１明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第２配列データの終端側の部分が第１配列データの始端側のどの位置に相当するかを幅情報（特に明色領域の幅情報）を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【０１３９】
また、復元手段により再生成された第１配列データをデコードし、その再生成された第１配列データのデコードが失敗した場合には、復元手段により再生成された第２配列データをデコードするように構成されている。このようにすれば、仮に第１配列データの復元・デコードが失敗したとしても、第２配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第２配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第１配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【０１４０】
[第５実施形態]
次に、第５実施形態について説明する。図２７は、第５実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。図２８は、図２７の読取処理における復元処理の一例を示すフローチャートである。図２９（Ａ）は第１配列データを例示する説明図であり、（Ｂ）は第２配列データを例示する説明図である。図２９（Ｃ）は第１配列データの復元を説明する説明図であり、（Ｄ）は第２配列データの復元を説明する説明図である。また、図３０は、第１配列データと第２配列データの対応関係を記憶する工程を説明する説明図である。なお、本実施形態は、読取処理のみが第４実施形態と異なり、図１８、図１９に示す構成は第４実施形態と同一である。よって異なる部分について重点的に説明することとし、同様の構成については適宜図１８、図１９を参照して説明する。
【０１４１】
本実施形態に係るバーコードリーダ４００も、基本的に第４実施形態と同様の構成をなしており、図１８のようにバーコードＢ（明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンＭが設けられた情報コード）を読み取り可能に構成され、受光センサ４０４（受光手段）により、バーコードＢの各パターンごとに反射光の強度に応じた受光信号を出力する構成をなしている。また、図１９に示す二値化処理部４１０（二値化手段）により、受光センサ４０４により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けしており、さらに、二値化処理部４１０によって区分けされた明色領域及び暗色領域の配列データをデコード部４０８（デコード手段）によりデコードする構成をなしている。
【０１４２】
また、本実施形態でも図１８、図１９に示すレーザ光源４０２が、「光源」の一例に相当し、指向性を有する照明光（レーザ光Ｌ１）を出射する。また、揺動装置４０５が、「揺動手段」の一例に相当し、光源から出射される照明光（レーザ光Ｌ１）を揺動させるように機能する。また、これらレーザ光源４０２及び揺動装置４０５が「投光手段」の一例に相当し、照明光（レーザ光Ｌ１）を二方向（走査線Ｔに沿った往復方向）に走査するように機能する。
【０１４３】
次に、本実施形態の特徴的構成について説明する。
本実施形態の読取処理では、まず第４実施形態と同様の第１配列データ取得処理が行われる（Ｓ１００１）。Ｓ１００１の処理は、図２０のＳ７０１と同一なので詳細は省略する。次いで、他方向の明暗配列データ（第２配列データ）について既にマージン対応領域の誤りが検出されているかを判断する。後述する、Ｓ１０１４において第２配列データのマージン対応領域に誤りがあると判断されている場合にはＳ１００２にてＹｅｓに進み、後述の復元処理が行われる（Ｓ１００３）。第２配列データのマージン対応領域に誤りが検出されていない場合にはＳ１００２にてＮｏに進み、第１配列データのデコード処理を行う（Ｓ１００４）。なお、このデコード処理は、公知のデコード処理であってもよく、第４実施形態の図２１に示す処理と同様の処理であってもよい。
【０１４４】
Ｓ１００４のデコード処理において第１配列データのデコードが成功した場合には、Ｓ１００５にてＹｅｓに進み当該処理を終了する。デコードが失敗した場合にはＳ１００５にてＮｏに進み、第１配列データのマージン対応領域において誤りが検出されるかを判断する。マージン対応領域の誤りが検出される場合にはＳ１００６にてＹｅｓに進み、そうでない場合にはＮｏに進む。なお、Ｓ１００４において第４実施形態と同様のデコード処理を行う場合には、図２１のＳ８１７においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。Ｓ１００４において公知のデコード処理を行う場合には、第１〜第３実施形態のような各種誤り検出処理（図４等）を行うことでマージン対応領域の誤りを判断できる。
【０１４５】
Ｓ１００６にてＹｅｓに進む場合には、図２９（Ａ）に示すように、第１配列データにおけるマージン対応領域の誤った暗色領域（即ち、データ端暗色領域ＢＲ１）までに位置する明色領域及び暗色領域の幅の総和Ｗ２１を算出し、格納部４０６に記録する（Ｓ１００７）。また、第１配列データにおける最終の明色領域ＷＨ１３の手前（即ち最後の暗色領域ＢＲ６）までに位置する暗色領域及び明色領域の幅の総和Ｗ２２を算出し、格納部４０６に記録する（Ｓ１００８）。なお、本実施形態では、制御部４０７が「記録手段」の一例に相当し、第２配列データの始端位置Ｐ４から最終の暗色領域ＢＲ３までの明色領域及び暗色領域の幅値の総和Ｗ２４を位置情報として記録するように機能する。
【０１４６】
その後、第２配列データを取得する処理を行う（Ｓ１００９）。この第２配列データ取得処理は、第４実施形態のＳ７１０（図２０）と同様である。そして、一方向の明暗配列データ（第１配列データ）でマージン対応領域の誤りが検出されているかを判断する（Ｓ１０１０）。Ｓ１００６の処理において第１配列データのマージン対応領域に誤りありと判断されている場合、Ｓ１０１０にてＹｅｓに進み、後述の復元処理を行う（Ｓ１０１１）。第１配列データにおいてマージン対応領域の誤りが検出されていない場合にはＳ１０１０にてＮｏに進み、第２配列データについてのデコード処理を行う（Ｓ１０１２）。このデコード処理も公知のデコード処理であってもよく、第４実施形態の図２１と同様であってもよい。第２配列データのデコード処理（Ｓ１０１２）においてデコードが成功した場合にはＳ１０１３にてＹｅｓに進み当該処理を終了する。第２配列データのデコード処理（Ｓ１０１２）においてデコードが失敗した場合にはＳ１０１３にてＮｏに進み、第２配列データのマージン対応領域において誤りが検出されるかを判断する。第２配列データのマージン対応領域に誤りが検出される場合にはＳ１０１４にてＹｅｓに進み、そうでない場合にはＮｏに進む。なお、Ｓ１０１２において第４実施形態と同様のデコード処理を行う場合には、図２１のＳ８１７においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。また、Ｓ１０１２において公知のデコード処理を行う場合には、第１〜第３実施形態のような各種誤り検出処理（図４等）を行うことでマージン対応領域の誤りを判断できる。
【０１４７】
Ｓ１０１４にてＹｅｓに進む場合には、図２９（Ｂ）に示すように、第２配列データにおけるマージン対応領域の誤った暗色領域（即ち、データ端暗色領域ＢＲ４）までに位置する明色領域及び暗色領域の幅の総和Ｗ２３を算出し、格納部４０６に記録する（Ｓ１０１５）。また、第２配列データにおける最終の明色領域ＷＨ１０の手前（即ち最後の暗色領域ＢＲ３）までに位置する暗色領域及び明色領域の幅の総和Ｗ２４を算出し、格納部４０６に記録する（Ｓ１０１６）。
【０１４８】
なお、本実施形態でも二値化処理部４１０が、第１二値化手段、第２二値化手段として第４実施形態と同様に機能する。また、本実施形態でも制御部４０７が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。また、制御部４０７は、「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成するように機能する。また、本実施形態に係るバーコードリーダ４００でも、上記「誤り検出手段」によってマージン対応領域の誤りが検出された場合、上記「復元手段」によりマージン対応領域を復元し、その再生成後の配列データをデコード部４０８（デコード手段）によってデコードするように構成されている。
【０１４９】
次に、Ｓ１００３、Ｓ１０１１の復元処理について説明する。なお、いずれの処理も図２８に示すフローチャートの流れで行われる。復元処理が開始されると、まず、第１配列データ、第２配列データのいずれを復元するかを判断する。第１配列データを復元する場合（即ち、Ｓ１００３の場合）にはＳ１１０１にてＹｅｓに進む。逆に、第２配列データを復元する場合（即ち、Ｓ１０１１の場合）にはＳ１１０１にてＮｏに進む。
【０１５０】
第１配列データについて復元する場合、まず、格納部４０６から位置Ｐ６（第２配列データにおける最後の暗色領域ＢＲ３と最後の明色領域ＷＨ１０の境界位置）の情報を読み出すと共に、第１配列データにおける位置Ｐ６に対応する位置Ｐ６’を算出する。即ち、本実施形態では、第１配列データと第２配列データとを位置的に対応付ける対応情報が格納部４０６に記録されており、この対応情報に基づいて位置Ｐ６’を算出するようにしている。具体的には、第１配列データにおける第２配列データの先頭位置Ｐ４に対応する位置Ｐ４’の情報、および第２配列データにおける第１配列データの先頭位置Ｐ１に対応する位置Ｐ１’の情報が格納部４０６に記録されており、位置Ｐ４’の情報を読み出せば、この位置Ｐ４’の情報とＷ２４の情報により対応位置Ｐ６’が特定されることとなる。Ｓ１１０２では、この位置Ｐ６’を跨いで配置される暗色領域（図２９（Ａ）ではデータ端暗色領域ＢＲ１）が誤った暗色領域として特定される。なお、格納部４０６は、「対応情報記憶手段」の一例に相当し、第２配列データの所定位置が第１配列データのどの位置に対応するかを特定する対応情報を記憶するように機能する。
【０１５１】
このように、位置情報（位置Ｐ６の情報）と対応情報（先頭位置Ｐ４と位置Ｐ４’とを対応付ける情報）とに基づいて第１配列データの誤った暗色領域ＢＲ１の位置を特定した後、Ｓ１１０３において復元を行う。Ｓ１１０３では、第２配列データの最終の暗色領域ＢＲ３のパターンに基づいて第１配列データのマージン対応領域の誤りを修正し、図２９（Ｃ）のように第１配列データを再生成する。Ｓ１１０３の具体的な復元方法は、図２２のＳ９０１と同様である。
【０１５２】
一方、図２８の処理が第２配列データを復元するものである場合、Ｓ１１０１にてＮｏに進み、格納部４０６から位置Ｐ３（第１配列データにおける最後の暗色領域ＢＲ６と最後の明色領域ＷＨ１３の境界位置）の情報を読み出すと共に、第２配列データにおける位置Ｐ３に対応する位置Ｐ３’を算出する。なお、本実施形態では、対応情報として、第２配列データにおける第１配列データの先頭位置Ｐ１に対応する位置Ｐ１’の情報が格納部４０６に記録されているため、位置Ｐ１’の情報を読み出せば、この位置Ｐ１’の情報とＷ２２の情報により対応位置Ｐ３’が特定されることとなる。Ｓ１１０４では、この位置Ｐ３’を跨いで配置される暗色領域（図２９（Ｂ）ではデータ端暗色領域ＢＲ４）が誤った暗色領域として特定される。
【０１５３】
このように、位置Ｐ３の情報と対応情報（先頭位置Ｐ１と位置Ｐ１’とを対応付ける情報）とに基づいて第２配列データの誤った暗色領域ＢＲ４の位置を特定した後、Ｓ１１０５において復元を行う。Ｓ１１０５では、第１配列データの最終の暗色領域ＢＲ６のパターンに基づいて第２配列データのマージン対応領域の誤りを修正し、図２９（Ｄ）のように第２配列データを再生成する。Ｓ１１０５の具体的な復元方法は、図２２のＳ９０４と同様である。
【０１５４】
本実施形態の対応情報は例えば以下のように生成され記憶される。図３０は、製品出荷前における対応情報記録工程を説明するものである。本実施形態では、第１の測定対象Ｒ１に対して投光手段により照明光が一方向に走査されたときの第１の測定結果と、第２の測定対象Ｒ２に対して照明光が他方向に走査されたときの第２の測定結果と、を記録するようにしている。なお、制御部４０７が「測定結果記録手段」の一例に相当し、第１の測定結果及び第２の測定結果を格納部４０６に記録するように機能する。格納部４０６は、第１の測定結果と第２の測定結果とを対応情報として記憶するように構成されており、復元手段として機能する制御部４０７は、第１の測定結果と第２の測定結果とに基づいて第１配列データと第２配列データとを位置的に対応付けるように構成されている。
【０１５５】
例えば、所定の図形が描かれた対象Ｒ１及びバーコードリーダ４００を所定の位置関係を固定した上で第１配列データを取得した場合、第１配列データにおける先頭から位置Ｐａまでの距離Ｗ３０（第１の測定結果）が判明する。さらに、対象Ｒ１とは左右対称の図形が描かれた対象Ｒ２を上記所定の位置関係（即ち、第１配列データを取得するときの対象Ｒ１及びバーコードリーダ４００の位置関係と同一の位置関係）とした上で第２配列データを取得した場合、第２配列データにおける先頭から位置Ｐａ’までの距離Ｗ３１（第２の測定結果）を得ることができる。これら距離Ｗ３０，Ｗ３１が判明すれば、同位置に維持されるバーコードについて第１配列データ及び第２配列データを取得した場合に第２配列データの先頭位置が第１配列データのどの位置に対応するか特定でき、逆に、第１配列データの先頭位置が第２配列データのどの位置に対応するか特定できるようになる。
【０１５６】
以上説明した本実施形態の構成によれば以下のような効果を奏する。
本実施形態では、第２配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和Ｗ２４と、対応情報とに基づいて第１配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第２配列データの最終の暗色領域のパターンに基づいて第１配列データのマージン対応領域の誤りを適切に修正できる。
【０１５７】
また、第１の測定対象に対して投光手段により照明光が一方向に走査されたときの第１の測定結果と、第２の測定対象に対して照明光が他方向に走査されたときの第２の測定結果と、を記録し、復元処理を行う際に、第１の測定結果と第２の測定結果とに基づいて第１配列データと第２配列データとを位置的に対応付けるようにしている。このように予め測定された第１の測定結果及び第２の測定結果に基づき、復元処理において第１配列データと第２配列データとを対応付けるようにすれば、第２配列データを利用しての第１配列データの復元を精度高くスムーズに行うことができる。
【０１５８】
［他の実施形態]
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
【０１５９】
第３実施形態では、第１実施形態の一部処理を変更した構成（復元処理のみを第１実施形態と異ならせた構成）を例示したが、第２実施形態の復元処理を第３実施形態のようにしてもよい。
【０１６０】
第１実施形態では、閾値を設定変更する誤り検出処理を用い、かつこの誤り検出処理によって検出された、誤った黒色領域を、図８等に示す方法によって復元していたが、このような復元処理に代え、図７（Ｂ）のように閾値の設定変更によって複数の黒色領域に分割された場合、その分割された外側の黒色領域（例えば図７（Ｂ）のＹ０）を白色領域に置換するような復元処理を用いてもよい。
【図面の簡単な説明】
【０１６１】
【図１】図１は、本発明の第１実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図２】図２は、読取対象のバーコードを例示する説明図である。
【図３】図３は、読取処理の流れを例示するフローチャートである。
【図４】図４は、図３の読取処理の一部を構成する誤り検出処理を例示するフローチャートである。
【図５】図５は、受光信号の信号波形と閾値との関係を例示する説明図である。
【図６】図６（Ａ）は、図５の閾値のときの配列データの構成を概念的に示す説明図であり、図６（Ｂ）は復元後の配列データの構成を概念的に示す説明図である。
【図７】図７（Ａ）は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図７（Ｂ）はそのときの配列データの構成を概念的に示す説明図である。
【図８】図８は、図３の読取処理の一部を構成する復元処理を例示するフローチャートである。
【図９】図９は、図８の復元処理の一部を構成する種別特定処理を例示するフローチャートである。
【図１０】図１０は、図９の種別特定処理の一部を構成する個別判断処理の一例を示すフローチャートである。
【図１１】図１１（Ａ）は、ＣＯＤＥ３９のバーコード構成を説明する説明図であり、図１１（Ｂ）は、ＣＯＤＥ３９のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示すものである。図１１（Ｃ）は、図１１（Ｂ）とは異なるタイプの誤りが生じた配列データを概念的に示すものである。
【図１２】図１２は、図１０とは異なる個別判断処理を例示するフローチャートである。
【図１３】図１３は、本発明の第２実施形態に係るバーコードリーダにて行われる誤り検出処理を例示するフローチャートである。
【図１４】図１４は、本発明の第３実施形態に係るバーコードリーダにて行われる復元処理を例示するフローチャートである。
【図１５】図１５は、度数分布情報を概念的に例示するものであり、配列データに含まれる複数の黒色領域について、幅値毎の度数を表したグラフ（ヒストグラム）である。
【図１６】図１６は、Ｓ６１０の推定処理に用いる配列データを概念的に説明する説明図である。
【図１７】図１７は、従来例を説明する説明図である。
【図１８】図１８は、本発明の第４実施形態に係るバーコードリーダを概略的に例示する説明図である。
【図１９】図１９は、図１８のバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図２０】図２０は、図１８のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図２１】図２１は、図２０の読取処理におけるデコード処理を例示するフローチャートである。
【図２２】図２２は、復元データのデコード処理を例示するフローチャートである。
【図２３】図２３（Ａ）は、正常な配列データを例示する説明図であり、（Ｂ）（Ｃ）は、配列データにおけるマージンとして認識されるべき領域（マージン対応領域）に暗色領域が含まれた例を示す説明図である。また、（Ｄ）は、（Ｃ）のデータの明色領域を拡張した後の第１配列データを例示するものである。
【図２４】図２４は、デコードが成功した配列データを例示する説明図であり、（Ａ）はマージン対応領域が正常である例を示すものであり、（Ｂ）はマージン対応領域に暗色領域が含まれた例を示すものである。（Ｃ）は、（Ｂ）のデータの明色領域を拡張した後の第１配列データを例示するものである。
【図２５】図２５（Ａ）（Ｂ）は、デコードが失敗した配列データを例示する説明図であり、（Ａ）は、データ端暗色領域が異常である場合を示すものであり、（Ｂ）は、マージン対応領域が異常である場合を示すものである。（Ｃ）は、（Ｂ）のデータの明色領域を拡張した後の第１配列データを例示するものである。
【図２６】図２６は、配列データの復元を説明する説明図である。
【図２７】図２７は、第５実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図２８】図２８は、図２７の読取処理における復元処理の一例を示すフローチャートである。
【図２９】図２９（Ａ）は第１配列データを例示する説明図であり、（Ｂ）は第２配列データを例示する説明図である。（Ｃ）は第１配列データの復元を説明する説明図であり、（Ｄ）は第２配列データの復元を説明する説明図である。
【図３０】図３０は、第１配列データと第２配列データの対応関係を記憶する工程を説明する説明図である。
【符号の説明】
【０１６２】
１０、４００…バーコードリーダ（光学的情報読取装置）
２８、４０４…受光センサ（受光手段）
４０…制御回路（第１〜第３実施形態における、二値化手段、デコード手段、誤り検出手段、復元手段、設定変更手段、変化判断手段、度数分布情報生成手段、境界パターン推定手段、種別特定手段、暗色最大幅検出手段、明色最大幅検出手段、比較手段）
４０２…レーザ光源（投光手段）
４０５…揺動装置（投光手段、揺動手段）
４０６…格納部（対応情報記憶手段）
４０７…制御部（第４又は第５実施形態の、誤り検出手段、復元手段、第１幅情報記憶手段、第２幅情報記憶手段、正規パターン推定手段、種別特定手段、測定結果記録手段）
４０８…デコード部（第４又は第５実施形態のデコード手段）
４１１…二値化処理部（第４又は第５実施形態の二値化手段、第１二値化手段、第２二値化手段）
Ｐ１…黒色パターン（暗色パターン）
Ｐ２…白色パターン（明色パターン）
Ｍ…マージン
【図１】
0005035042.tif 000002
【図２】
0005035042.tif 000003
【図３】
0005035042.tif 000004
【図４】
0005035042.tif 000005
【図５】
0005035042.tif 000006
【図６】
0005035042.tif 000007
【図７】
0005035042.tif 000008
【図８】
0005035042.tif 000009
【図９】
0005035042.tif 000010
【図１０】
0005035042.tif 000011
【図１１】
0005035042.tif 000012
【図１２】
0005035042.tif 000013
【図１３】
0005035042.tif 000014
【図１４】
0005035042.tif 000015
【図１５】
0005035042.tif 000016
【図１６】
0005035042.tif 000017
【図１７】
0005035042.tif 000018
【図１８】
0005035042.tif 000019
【図１９】
0005035042.tif 000020
【図２０】
0005035042.tif 000021
【図２１】
0005035042.tif 000022
【図２２】
0005035042.tif 000023
【図２３】
0005035042.tif 000024
【図２４】
0005035042.tif 000025
【図２５】
0005035042.tif 000026
【図２６】
0005035042.tif 000027
【図２７】
0005035042.tif 000028
【図２８】
0005035042.tif 000029
【図２９】
0005035042.tif 000030
【図３０】
0005035042.tif 000031