(57)【要約】【課題】情報コードからデータを読み取るまでの時間を短くすることができる技術を提供する。【解決手段】情報コード読取装置１０は、スキャン部１４と、制御部１２とを有する。スキャン部１４は、情報コードを撮影して情報コードのイメージを取得する。制御部１２は、イメージのバーコードを示す部分から、バーコードが表すデータ（文字列）全体のデコードに失敗する場合に、イメージの文字列を示す部分のうち、デコード失敗文字が配置されている領域に含まれる文字を文字認識して、文字列全体をデコードする。【選択図】図１
2014164462.tif 000002
【特許請求の範囲】
【請求項１】
特定のデータに対応するバーコードと特定のデータに対応する特定の文字列とを含む情報コードを読み取り可能な情報コード読取装置であって、
情報コードのイメージを取得する取得部と、
イメージ内のバーコードを示す部分から、特定のデータのうちの特定の部分のデータがデコードできない特定の場合に、イメージ内の文字列を示す部分のうち、特定の部分のデータに対応する位置に含まれる特定の文字から特定の部分のデータをデコードする制御部と、を有している
情報コード読取装置。
【請求項２】
特定の部分は、制御部が、イメージ内のバーコードを示す部分に設定された複数の走査線のそれぞれに沿ってデコード処理を行ってもデコードできない部分である、
請求項１に記載の情報コード読取装置。
【請求項３】
制御部は、
特定の場合に、イメージ内のバーコードを示す部分のうち、両端のバーの位置を特定し、特定された両端のバーの位置に基づいて、イメージ内の特定の文字列を示す部分のうち、特定の部分のデータに対応する位置を特定し、特定した位置に含まれる特定の文字から特定の部分のデータをデコードする、
請求項１又は２に記載の情報コード読取装置。
【請求項４】
制御部は、
特定の場合において、さらに、イメージ内のバーコードが、ガードバー及びセンターバーを有する場合には、ガードバーの位置及びセンターバーの位置を特定し、特定されたガードバーの位置及びセンターバーの位置に基づいて、イメージ内の特定の文字列を示す部分のうち、特定の部分のデータに対応する位置を特定する、
請求項３に記載の情報コード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、特定のデータに対応するバーコードと特定のデータに対応する特定の文字列とを含む情報コードを読み取り可能な情報コード読取装置に関する。
【背景技術】
【０００２】
特許文献１には、特定のデータに対応するバーコードと特定のデータに対応する特定の文字列とを含む情報コードを読み取り可能な情報コード読取装置が開示されている。この情報コード読取装置は、イメージ内のバーコードを示す部分から特定のデータをデコードできない場合に、イメージ内の文字列を示す部分全体を文字認識し、文字認識結果が示すデータを特定のデータとして処理する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２３７３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
文字列部分の文字認識処理は、バーコード部分のデコード処理に比べて処理負荷が高く、完了までに長時間を要する。特許文献１の技術では、イメージ内のバーコードを示す部分から特定のデータをデコードできない場合に、イメージ内の文字列を示す部分全体を文字認識する。そのため、イメージ内のバーコードを示す部分から特定のデータをデコードできないと、情報コードから特定のデータを読み取るまでに長時間を要する場合があり、利用者の利便性を損なうおそれがある。本明細書では、情報コードからデータを読み取るまでの時間を短くすることができる技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書で開示する情報コード読取装置は、特定のデータに対応するバーコードと特定のデータに対応する特定の文字列とを含む情報コードを読み取り可能な情報コード読取装置である。情報コード読取装置は、情報コードのイメージを取得する取得部と、イメージ内のバーコードを示す部分から、特定のデータのうちの特定の部分のデータがデコードできない特定の場合に、イメージ内の文字列を示す部分のうち、特定の部分のデータに対応する位置に含まれる特定の文字から特定の部分のデータをデコードする制御部とを有している。
【０００６】
上記の情報コード読取装置によると、イメージ内のバーコードを示す部分から、特定のデータのうちの特定の部分のデータがデコードできない特定の場合に、特定の部分のデータに対応する位置に含まれる特定の文字から特定の部分のデータをデコードする。そのため、イメージ内の文字列を示す部分全体を文字認識する従来の構成と比べて、文字認識する部分（文字）が少なく済む。そのため、上記の情報コード読取装置によると、従来の構成に比べて、情報コードから特定のデータを読み取るまでの時間を短くすることができる。
【図面の簡単な説明】
【０００７】
【図１】第１実施例の情報コード読取装置の構成を示すブロック図。
【図２】第１実施例の読取処理のフローチャート。
【図３】第１実施例のデコード手法を模式的に示す図。
【図４】第１実施例の特定処理のフローチャート。
【図５】デコード失敗キャラクタ位置の特定手法を模式的に示す図（１）。
【図６】デコード失敗キャラクタ位置の特定手法を模式的に示す図（２）。
【図７】デコード失敗キャラクタ位置の特定手法を模式的に示す図（３）。
【図８】第２実施例の読取処理のフローチャート。
【図９】第２実施例のデコード手法を模式的に示す図。
【発明を実施するための形態】
【０００８】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に示す技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。
【０００９】
（特徴１）特定の部分は、制御部が、イメージ内のバーコードを示す部分に設定された複数の走査線のそれぞれに沿ってデコード処理を行ってもデコードできない部分であってもよい。
【００１０】
この構成によると、情報コード読取装置は、イメージ内のバーコードを示す部分に設定された複数の走査線に沿ってデコード処理を行い、特定のデータがデコードできた場合には、文字認識を行わずに済む。そのため、文字認識を行う場合をより少なくすることができる。
【００１１】
（特徴２）制御部は、特定の場合に、イメージ内のバーコードを示す部分のうち、両端のバーの位置を特定し、特定された両端のバーの位置に基づいて、イメージ内の特定の文字列を示す部分のうち、特定の部分のデータに対応する位置を特定し、特定した位置に含まれる特定の部分のデータをデコードするようにしてもよい。
【００１２】
この構成によると、イメージ内から特定の部分のデータに対応する位置を適切に特定することができる。
【００１３】
（特徴３）制御部は、特定の場合において、さらに、イメージ内のバーコードが、ガードバー及びセンターバーを有する場合には、ガードバーの位置及びセンターバーの位置を特定し、特定されたガードバーの位置及びセンターバーの位置に基づいて、イメージ内の特定の文字列を示す部分のうち、特定の部分のデータに対応する位置を特定するようにしてもよい。
【００１４】
いわゆるＰＯＳコードは、両端にガードバーを有し、中央にセンターバーを有する。上記の構成によると、イメージ内のバーコードがガードバー及びセンターバーを有する場合（即ちイメージ内のバーコードがＰＯＳコードである場合）に、ガードバーの位置及びセンターバーの位置に基づいて、特定の部分のデータに対応する位置を適切に特定することができる。
【実施例】
【００１５】
（第１実施例）
（システム構成：図１）
図１に示す情報コード読取装置１０は、情報コード２０を読み取り可能な装置である。情報コード２０は、所定のデータに対応するバーコード２２と、当該所定のデータを表した文字列２４とを含む。即ち、バーコード２２には、上記の文字列２４が表すデータ（文字）が記録されている。バーコード２２は、文字列２４を表すための複数のモジュールを有している。複数のモジュールは、明色系のモジュール（いわゆる白バー）と暗色系のモジュール（いわゆる黒バー）を含む。複数のモジュールのそれぞれは、一列に並んで配置されている。
【００１６】
情報コード読取装置１０は、制御部１２と、スキャン部１４と、メモリ１６と、操作部１８と、表示部１９とを有する。
【００１７】
制御部１２は、メモリ１６内のプログラムに従って様々な処理を実行する。制御部１２が実行する処理の内容は後で詳しく説明する。
【００１８】
スキャン部１４は、情報コード２０を撮影（スキャン）することができる。スキャン部１４は、バーコードや２次元コード等の各種情報コードを撮影することができる。
【００１９】
メモリ１６は、不揮発性メモリであって、様々なプログラムを記憶している。また、メモリ１６は、様々な情報（例えば、後述の撮影データなど）を記憶する領域を有している。
【００２０】
操作部１８は、複数のキーを備える。情報コード読取装置１０の利用者は、操作部１８を操作して、情報コード読取装置１０に様々な情報を入力することができる。
【００２１】
表示部１９は、様々な情報を表示する。
【００２２】
続いて、図２〜図７を参照して、本実施例の情報コード読取装置１０の制御部１２が情報コード（例えば図１の情報コード２０）を読み取る場合に実行する処理について説明する。
【００２３】
（制御部１２が実行する読取処理：図２）
情報コード読取装置１０の利用者は、スキャン部１４を読取対象の情報コード２０（図１参照）に向けた状態で、操作部１８を操作して、所定の読取操作を入力することができる。読取操作が入力されると、制御部１２は、スキャン部１４に撮影を実行させる。スキャン部１４が情報コードを撮影すると、図２のＳ１０において、制御部１２は、撮影された情報コードのイメージを取得する。イメージには、情報コードのバーコード部分の画像、及び、文字列部分の画像が含まれる。制御部１２は、撮影されたイメージをメモリ１６に記憶させる。
【００２４】
次いで、Ｓ１２では、制御部１２は、情報コードのイメージから、バーコードに対応するデータをデコードするデコード処理を行う。デコードの手法について、図３を参照して具体的に説明する。まず、制御部１２は、情報コード２０のイメージのうち、バーコード２２を示す部分に、各モジュール（黒バー及び白バー）を横断する１本の走査線３０を設定する。次いで、制御部１２は、設定した走査線３０に沿って各モジュールの幅値を取得し、取得された各モジュールの幅値に基づいて、各モジュールの組み合わせが示す文字を特定する。Ｓ１２では、制御部１２は、以上の各処理を行う。
【００２５】
次いで、Ｓ１４では、制御部１２は、デコード処理が成功したか否か判断する。Ｓ１２のデコード処理の結果、バーコードに対応するデータ（文字列）がすべて特定された場合、制御部１２は、Ｓ１４でＹＥＳと判断する。Ｓ１４でＹＥＳの場合、制御部１２は、デコード処理の結果得られたデータ（文字列）を、読取結果として出力（例えば表示部１９に表示）する。一方、図３の例のように、バーコード２２の一部のモジュールが不鮮明である場合には、制御部１２は、その一部のモジュールの幅値を正確に取得できず、その一部のモジュールが示す文字を特定することができない。図３の例では、制御部１２は、文字列２４のうち、文字「２、３、４」を特定することができない。このような場合、制御部１２は、Ｓ１４でＮＯ（即ち、デコード処理が失敗した）と判断し、Ｓ１６に進む。
【００２６】
Ｓ１６では、制御部１２は、Ｓ１２のデコード処理によってデコードに成功した文字（デコード処理によって特定された文字）と、それらの文字の文字列全体における位置（順番）をメモリ１６に記憶させる。これにより、制御部１２は、デコードに失敗した文字の位置（順番）も同時にメモリ１６に記憶させることができる。なお、以下では、デコードに成功した文字のことを「デコード成功文字」、デコードに失敗した文字のことを「デコード失敗文字」とそれぞれ呼ぶ。例えば、図３の情報コード２０が読み取られていた場合には、制御部１２は、デコード成功文字とその順番、及び、デコード失敗文字の順番を「４９１？？？５６７８９０４」のようにメモリ１６に記憶させる。「？」で置き換えられた文字が、デコード失敗文字（即ち図３内の文字「２、３、４」）を表す。
【００２７】
次いで、制御部１２は、Ｓ１８の特定処理を実行する。特定処理は、メモリ１６内の情報コードのイメージの文字列を示す部分のうち、デコード失敗文字が配置されている領域を特定するための処理である。以下では、メモリ１６内の情報コードのイメージの文字列を示す部分のうち、デコード失敗文字が配置されている領域を「特定の領域」と呼ぶ。Ｓ１８の特定処理の内容は、図４を参照して説明する。図４のＳ３０では、制御部１２は、メモリ１６内の情報コードのイメージから、情報コードのコードタイプ（規格）がＰＯＳコードであるか否か判断する。ここで、情報コードのコードタイプについて説明する。本実施例における情報コードは、「ＰＯＳコード」と「物流コード」の２種類のうちのいずれかのタイプに分類される。
【００２８】
図３に示す情報コード２０のコードタイプは、ＰＯＳコードである。図３に示すように、ＰＯＳコードは、バーコード２２の両端に、それぞれ、他のモジュールよりも長さの長い複数のモジュール（２本の黒バー及び１本の白バー）が配置されている。この両端のモジュールは一般的に「ガードバー」と呼ばれる。また、ＰＯＳコードは、バーコード２２の中央にも、他のモジュールよりも長さの長い複数のモジュール（２本の黒バー及び１本の白バー）が配置されている。この中央のモジュールは一般的に「センターバー」と呼ばれる。ＰＯＳコードでは、文字列２４に含まれる各文字も、所定の規格に従って配置されている。即ち、左側ガードバーの突出部分の左側に１文字（「４」）が配置される。左側ガードバーの突出部分とセンターバーの突出部分との間には６文字（「９１２３４５」）が配置される。この６文字に含まれる各文字は等間隔で配置される。センターバーの突出部分と右側ガードバーの突出部分との間にも６文字（「６７８９０４」）が配置される。この６文字に含まれる各文字も等間隔で配置される。上記の通り、ＰＯＳコードでは、上記の各文字の配置位置及び間隔が予め定められている。
【００２９】
一方、図示しないが、物流コードは、各モジュールの長さが等しく、上記のガードバーやセンターバーを有さない。物流コードのバーコードの左端のモジュールは、一般に「スタートパターン」と呼ばれる。物流コードのバーコードの右端のモジュールは、一般に「ストップパターン」と呼ばれる。情報コードのコードタイプが物流コードである場合、文字列に含まれる各文字は、等間隔で配置されている。
【００３０】
即ち、図４のＳ３０では、制御部１２は、メモリ１６内の情報コードのイメージのバーコードを示す部分がセンターバー及びガードバーを含むか否かを判定することにより、情報コードのコードタイプ（規格）がＰＯＳコードであるか否か判断する。バーコード部分がセンターバー及びガードバーを含む場合、制御部１２は、Ｓ３０でＹＥＳと判断し、Ｓ３２に進む。一方、バーコード部分がセンターバー及びガードバーを含まない場合、制御部１２は、Ｓ３０でＮＯと判断し、Ｓ３６に進む。
【００３１】
（情報コードのコードタイプがＰＯＳコードである場合：Ｓ３２、Ｓ３４）
Ｓ３２では、制御部１２は、ガードバー及びセンターバーの位置に基づいて、特定の領域を特定するための基準位置を特定する。具体的には、まず、制御部１２は、図５に示すように、左側ガードバーの下端近傍の位置Ｐ１、センターバーの下端近傍の位置Ｐ２、右側ガードバーの下端近傍の位置Ｐ３をそれぞれ特定する。さらに、制御部１２は、左側ガードバーに隣接するモジュールの下端位置Ｐ４と、右側ガードバーに隣接するモジュールの下端位置Ｐ５とをそれぞれ特定する。さらに、制御部１２は、センターバーの両側にそれぞれ隣接するモジュールの下端位置Ｐ６、Ｐ７をそれぞれ特定する。この際、制御部１２は、図５のイメージの横方向をＸ軸方向、縦方向をＹ軸方向として、イメージの任意の点（例えばＰ１）の座標を原点とし、Ｐ１〜Ｐ７の各点のｘ座標及びｙ座標を特定する。
【００３２】
次いで、図４のＳ３４では、制御部１２は、特定の領域を特定する。具体的には、まず、制御部１２は、図６に示すように、文字列２４が配置されている領域をエリアＡ、Ｂ、Ｃの３つに区分し、各エリアＡ、Ｂ、Ｃの四隅の座標を算出する。図６に示すエリアＡは、左側ガードバーの突出部分とセンターバーの突出部分との間を含む領域である。エリアＡ内には６文字（「９１２３４５」）が配置されている。エリアＢは、センターバーの突出部分と右側ガードバーの突出部分との間を含む領域である。エリアＢ内にも６文字（「６７８９０４」）が配置されている。エリアＣは、左側ガードバーの突出部分の左側を含む領域である。エリアＣ内には１文字（「４」）が配置されている。各文字は、左から順に、１番目の文字がエリアＣに配置され、２番目〜７番目の文字がエリアＡに配置され、８番目〜１３番目の文字がエリアＢに配置される。
【００３３】
制御部１２は、図６のイメージの横方向をＸ軸方向、縦方向をＹ軸方向として、エリアＡの四隅の座標Ａ１（Ｘａ１、Ｙａ１）、Ａ２（Ｘａ２、Ｙａ２）、Ａ３（Ｘａ３、Ｙａ３）、Ａ４（Ｘａ４、Ｙａ４）を、以下のように特定する。なお、上記の通り、制御部１２は、イメージの任意の点（例えば図５のＰ１）の座標を原点とする。
Ｘａ１＝Ｐ４（図５参照）のｘ座標値、Ｙａ１＝Ｐ４のｙ座標値
Ｘａ２＝Ｐ４のｘ座標値、Ｙａ２＝Ｐ１のｙ座標値
Ｘａ３＝Ｐ６のｘ座標値、Ｙａ３＝Ｐ６のｙ座標値
Ｘａ４＝Ｐ６のｘ座標値、Ｙａ４＝Ｐ２のｙ座標値
【００３４】
同様に、制御部１２は、エリアＢの四隅の座標Ｂ１（Ｘｂ１、Ｙｂ１）、Ｂ２（Ｘｂ２、Ｙｂ２）、Ｂ３（Ｘｂ３、Ｙｂ３）、Ｂ４（Ｘｂ４、Ｙｂ４）を、以下のように特定する。
Ｘｂ１＝Ｐ７のｘ座標値、Ｙｂ１＝Ｐ７のｙ座標値
Ｘｂ２＝Ｐ７のｘ座標値、Ｙｂ２＝Ｐ２のｙ座標値
Ｘｂ３＝Ｐ５のｘ座標値、Ｙｂ３＝Ｐ５のｙ座標値
Ｘｂ４＝Ｐ５のｘ座標値、Ｙｂ４＝Ｐ３のｙ座標値
【００３５】
同様に、制御部１２は、エリアＣの四隅の座標Ｃ１（Ｘｃ１、Ｙｃ１）、Ｃ２（Ｘｃ２、Ｙｃ２）、Ａ１（Ｘａ１、Ｙａ１）、Ａ２（Ｘａ２、Ｙａ２）を、以下のように特定する。なお、Ａ１、Ａ２は、既にエリアＡの四隅の座標の一部として特定している。
Ｘｃ１＝Ｐ１のｘ座標−（Ｐ６のｘ座標−Ｐ４のｘ座標）／３、Ｙｃ１＝Ｐ４のｙ座標値（＝Ｙａ１）
Ｘｃ２＝Ｐ１のｘ座標−（Ｐ６のｘ座標−Ｐ４のｘ座標）／３、Ｙｃ２＝Ｐ１座標値（＝Ｙａ２）
【００３６】
次いで、制御部１２は、図７に示すように、メモリ１６内のデコード成功文字とその順番及びデコード失敗文字とその順番を参照し、デコード失敗文字の位置を特定する。例えば、上記の例では、デコード成功文字とその順番及びデコード失敗文字の順番が、「４９１？？？５６７８９０４」のようにメモリ１６に記憶されている（図２のＳ１６参照）。即ち、この例では、左から４番目、５番目、６番目の各文字が、デコード失敗文字である。この場合、デコード失敗文字は、いずれもエリアＡに含まれている。制御部１２は、特定済みのエリアＡの四隅の座標に基づいて、左から２番目〜７番目の各文字が配置されているエリアＡを６等分し、４番目、５番目、６番目の各文字が配置されている領域２６（即ち、特定の領域）を特定する。上記の各処理の結果、特定の領域が特定されると、図４の特定処理が終了する。
【００３７】
（情報コードのコードタイプが物流コードである場合：Ｓ３６、Ｓ３８）
一方、Ｓ３６でも、制御部１２は、スタートパターン及びストップパターンの位置に基づいて、特定の領域を特定するための基準位置を特定する。具体的には、制御部１２は、スタートパターン及びストップパターンの文字列寄りの端部の位置を特定する。
【００３８】
次いで、Ｓ３８では、制御部１２は、文字列が配置されているエリア（以下、「文字列エリア」と呼ぶ）の四隅の座標を特定する。ここでは、各座標の算出方法の詳しい説明は省略する。次いで、制御部１２は、メモリ１６内のデコード成功文字とその順番及びデコード失敗文字の順番を参照し、デコード失敗文字の位置を特定する。制御部１２は、特定済みの文字列エリアの四隅の座標に基づいて、文字列エリアをデコード成功文字とデコード失敗文字の合計文字数で等分し、デコード失敗文字が配置されている領域（即ち、特定の領域）を特定する。上記の各処理の結果、特定の領域が特定されると、図４の特定処理が終了する。
【００３９】
図４の特定処理（図２のＳ１８）が終了すると、図２のＳ２０に進む。Ｓ２０では、制御部１２は、特定された特定の領域内のみを文字認識する。文字認識により、制御部１２は、特定の領域に含まれているデコード失敗文字に対応する文字を取得し得る。例えば、図７のように、特定の領域２６が特定された例では、制御部１２は、文字認識により、デコード失敗文字が示す文字「２、３、４」を取得する。
【００４０】
次いで、Ｓ２２では、制御部１２は、文字列に含まれる全文字が完成したか否かを確認する。即ち、制御部１２は、メモリ１６内のデコード成功文字と、Ｓ２０の文字認識によって取得された文字とを組み合わせることにより、文字列が完成したか否かを判断する。Ｓ２０の文字認識によってデコード失敗文字に対応する文字がすべて取得されている場合、メモリ１６内のデコード成功文字と、Ｓ２０の文字認識によって取得された文字とを組み合わせることにより、文字列が完成する。この場合、制御部１２は、Ｓ２２でＹＥＳと判断する。Ｓ２２でＹＥＳの場合、図２の読取処理が終了する。この場合、制御部１２は、完成した文字列を、デコード結果として出力（例えば表示部１９に表示）する。
【００４１】
一方、Ｓ２０の文字認識によっても、デコード失敗文字が表す文字の少なくとも一部が取得できなかった場合、文字列が完成しない。この場合、制御部１２は、Ｓ２２でＮＯと判断する。Ｓ２２でＮＯの場合、図２の読取処理がエラー終了する。この場合、制御部１２は、表示部１９に所定のエラーメッセージを表示させる。
【００４２】
以上、本実施例の情報コード読取装置１０について説明した。本実施例では、イメージ内のバーコードを示す部分から、バーコードが表すデータ（文字列）全体のデコードに失敗する場合（図２のＳ１４でＮＯ）に、イメージ内の文字列を示す部分のうち、デコード失敗文字が配置されている特定の領域内を文字認識（Ｓ２０）することにより、デコード失敗文字が表すデータ（文字）を取得する。そのため、イメージ内の文字列を示す部分全体を文字認識する従来の構成と比べて、文字認識する部分（文字）が少なく済む。そのため、本実施例の情報コード読取装置１０によると、従来の構成に比べて、情報コードからデータ（文字列）を読み取るまでの時間を短くすることができる。
【００４３】
本実施例では、イメージ内のバーコードのコードタイプがＰＯＳコードである場合（図４のＳ３０でＹＥＳ）には、ガードバー及びセンターバーの位置に基づいて、特定の領域を特定している。従って、イメージ内のバーコードのコードタイプがＰＯＳコードである場合に、特定の領域を適切に特定することができる。
【００４４】
また、本実施例では、イメージ内のバーコードのコードタイプが物流コードである場合（図４のＳ３０でＮＯ）には、スタートパターン及びストップパターンの位置に基づいて、特定の領域を特定している。従って、イメージ内のバーコードのコードタイプが物流コードである場合にも、特定の領域を適切に特定することができる。
【００４５】
本実施例の構成と請求項の記載との対応関係を記載しておく。スキャン部１４が「取得部」の一例である。情報コードのイメージのバーコードを示す部分に記録されている文字列、及び、情報コードのイメージの文字列を示す部分が「特定のデータ」の一例である。図２のＳ１４でＮＯの場合が、「特定の場合」の一例である。デコード失敗文字が「特定の部分のデータ」の一例である。特定の領域が、「特定の部分のデータに対応する位置」の一例である。
【００４６】
（第２実施例）
第２実施例について、第１実施例と異なる点を中心に説明する。本実施例の情報コード読取装置１０も、その基本構成は第１実施例の情報コード読取装置１０（図１参照）と共通する。本実施例では、情報コードのイメージ内のバーコードを示す部分のデコードの手法が第１実施例とは異なる。
【００４７】
図８を参照して、本実施例の情報コード読取装置１０の制御部１２が実行する読取処理について説明する。Ｓ５０では、図２のＳ１０と同様に、制御部１２は、スキャン部１４によって撮影された情報コードのイメージを取得する。
【００４８】
次いで、Ｓ５２では、制御部１２は、イメージのうち、バーコードを示す部分に、複数の走査線を設定する。図９を参照して具体的に説明する。即ち、制御部１２は、情報コード２０のイメージのバーコード２２を示す部分に、各モジュール（黒バー及び白バー）を横断する複数の走査線３０、３２を設定する。
【００４９】
次いで、図８のＳ５４では、制御部１２は、Ｓ５２で設定された複数の走査線のうち１本を特定し、特定された走査線に沿ってデコード処理を行う。例えば、図９に示す例では、制御部１２は、走査線３０に沿って各モジュールの幅値を取得し、取得された各モジュールの幅値に基づいて、各モジュールの組み合わせが示す文字を特定する。
【００５０】
次いで、Ｓ５６では、制御部１２は、デコード処理が成功したか否か判断する。Ｓ５４のデコード処理の結果、バーコードに対応するデータ（文字列）がすべて特定できた場合、制御部１２は、Ｓ５６でＹＥＳと判断する。Ｓ５６でＹＥＳの場合、制御部１２は、デコード処理の結果得られたデータ（文字列）を、読取結果として出力（例えば表示部１９に表示）する。一方、図９の例のように、バーコードの一部のモジュールが不鮮明である場合には、制御部１２は、一部のモジュールの幅値を正確に取得できず、それらの一部のモジュールが示す文字を特定することができない。図９の例では、制御部１２は、走査線３０に沿ってデコード処理を行った場合、文字列２４のうち、「２、３、４、５、６」の各文字（４〜８番目の文字）を特定することができない。このような場合、制御部１２は、Ｓ５６でＮＯ（即ち、デコード処理が失敗した）と判断し、Ｓ５８に進む。
【００５１】
Ｓ５８では、図２のＳ１６と同様に、制御部１２は、デコード成功文字とその位置、及び、デコード失敗文字の位置をメモリ１６に記憶させる。上記の図９の例では、走査線３０に沿ってデコード処理を行った結果、文字列２４のうち、「２、３、４、５、６」の各文字（４〜８番目の文字）が特定できない。そのため、Ｓ５８では、制御部１２は、デコード成功文字とその順番、及び、デコード失敗文字の順番を「４９１？？？？？７８９０４」のようにメモリ１６に記憶させる。デコード失敗文字は「？」で置き換えられている。
【００５２】
次いで、Ｓ６０では、文字列に含まれる全文字が完成したか否かを確認する。即ち、制御部１２は、各走査線に沿ってデコード処理を行った結果取得されたデコード成功文字を組み合わせることにより、文字列が完成したか否かを判断する。Ｓ６０でＹＥＳの場合、図８の読取処理が終了する。この場合、制御部１２は、完成した文字列を、デコード結果として出力する。一方、Ｓ６０でＮＯの場合、Ｓ６２に進む。
【００５３】
Ｓ６２では、制御部１２は、Ｓ５２で設定した複数の走査線のすべてに沿ってデコード処理が行われたか否かを判断する。Ｓ６２の時点で、Ｓ５２で設定した複数の走査線（図９の走査線３０、３２）のすべてに沿ってデコード処理が完了している場合、制御部１２は、Ｓ６２でＹＥＳと判断し、Ｓ６４に進む。一方、Ｓ５２で設定した複数の走査線のすべてに沿ってデコード処理が完了していない場合、制御部１２は、Ｓ６２でＮＯと判断し、Ｓ５４に戻る。
【００５４】
戻った先のＳ５４では、制御部１２は、まだ特定されていない走査線のうちの１本を特定し、特定された走査線（例えば、図９の走査線３２）に沿ってデコード処理を行う。
【００５５】
続くＳ５６（２回目以降）では、制御部１２は、デコード処理が成功したか否か再度判断する。図９の例では、制御部１２は、走査線３２に沿ってデコード処理を行った場合、文字列２４のうち、「４、９、１、２、３、４」（１〜６番目の文字）を特定することができない。このような場合、制御部１２は、Ｓ５６でＮＯ（即ち、デコード処理が失敗した）と判断し、Ｓ５８に進む。
【００５６】
次いで、Ｓ５８（２回目以降）では、制御部１２は、デコード成功文字とその位置、及び、デコード失敗文字とその位置をメモリ１６に記憶させる。この際、制御部１２は、既にメモリ１６に記憶されているデコード失敗文字のうち、再度デコード処理が行われたことによって、デコードに成功した文字が存在する場合、そのデコード失敗文字を、デコード成功文字に置き換える。即ち、上記の図９の例では、１回目のデコード処理（走査線３０）では、文字列２４のうち、４〜８番目の文字（「２、３、４、５、６」）を特定することができない。また、２回目のデコード処理（走査線３２）では、１〜６番目の文字（「４、９、１、２、３、４」）を特定することができない。しかしながら、２回目のデコード処理により、文字列２４のうち、７、８番目の文字が「５、６」であることが特定された。従って、２回目のＳ５８の時点において、制御部１２は、４〜６番目の文字（図９の枠３６参照）のみがデコード失敗文字としてメモリ１６に記憶される。２回目のＳ５８では、制御部１２は、デコード成功文字とその順番、及び、デコード失敗文字とその順番を「４９１？？？５６７８９０４」のようにメモリ１６に記憶させる。Ｓ５８を終えると、Ｓ６０に進む。
【００５７】
このように、本実施例では、制御部１２は、Ｓ６０でＹＥＳと判断されない限り、Ｓ５２で設定された全走査線についてデコードを行う（Ｓ５４〜Ｓ６２の各処理を繰り返す）。Ｓ６０でＹＥＳと判断されることなく、Ｓ５２で設定した複数の走査線（例えば、図９の走査線３０、３２）のすべてに沿ってデコード処理が行われた場合、制御部１２は、Ｓ６２でＹＥＳと判断し、Ｓ６４に進む。
【００５８】
Ｓ６４以降の各処理は、図２のＳ１８以降の各処理と同様であるため、本実施例では詳しい説明を省略する。
【００５９】
以上のように、本実施例では、イメージ内のバーコードを示す部分に設定された複数の走査線（図９の走査線３０、３２）のそれぞれに沿ってデコード処理を行っても、文字列が完成しない場合（図８のＳ６０でＮＯ、Ｓ６２でＹＥＳ）に、特定の領域の文字認識を行う（Ｓ６６）。すなわち、本実施例の情報コード読取装置１０は、イメージ内のバーコードを示す部分に設定された複数の走査線に沿ってデコード処理を行い、文字列が完成した場合（Ｓ６０でＹＥＳ）には、文字認識を行わずに済む。そのため、文字認識を行う場合をより少なくすることができる。
【００６０】
以上、本発明の各実施例について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例を含んでもよい。
【００６１】
（変形例１）  特定の領域の特定手法は、上記の各実施例で説明したものに限られず、任意とすることができる。例えば、情報コードの規格に関わらず、文字列が配置されているエリアを予め文字数に相当する数の領域に等分しておき、デコード失敗文字の位置（順番）に基づいて、自動的に、その順番に対応する領域を特定の領域として特定してもよい。
【００６２】
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００６３】
１０：情報コード読取装置
１２：制御部
１４：スキャン部
１６：メモリ
１８：操作部
１９：表示部
２０：情報コード
２２：バーコード
２４：文字列
２６：特定の領域
３０、３２：走査線
３６：枠
【図１】
2014164462.tif 000003
【図２】
2014164462.tif 000004
【図３】
2014164462.tif 000005
【図４】
2014164462.tif 000006
【図５】
2014164462.tif 000007
【図６】
2014164462.tif 000008
【図７】
2014164462.tif 000009
【図８】
2014164462.tif 000010
【図９】
2014164462.tif 000011