(57)【要約】【課題】マージン領域を設定している場合であっても読取精度を高く維持することができる携帯型光学式読取装置、該携帯型光学式読取装置を用いる光学式読取方法、及びコンピュータプログラムを提供する。【解決手段】読取対象となる文字列を撮像し、撮像された画像に基づいて文字列を認識する。撮像された画像から境界線を検出し、認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する。判断結果に基づいて、境界線を含まないように領域の幅又は形状を調整してマージン領域として設定し、設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する。【選択図】図４
2015210543.tif 000002
【特許請求の範囲】
【請求項１】
読取対象となる文字列を撮像する撮像手段と、
該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段と、
撮像された画像から境界線を検出する検出手段と、
前記文字列認識手段において認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する判断手段と、
該判断手段における判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定するマージン領域設定手段と、
設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する結果出力手段と
を備えることを特徴とする携帯型光学式読取装置。
【請求項２】
前記マージン領域設定手段は、
前記判断手段で所定幅の領域内に境界線が存在しないと判断された場合、所定幅の領域をマージン領域として設定し、
前記判断手段で所定幅の領域内に境界線が存在すると判断された場合、境界線を含まない、所定幅よりも狭い幅の領域をマージン領域として設定することを特徴とする請求項１に記載の携帯型光学式読取装置。
【請求項３】
認識した文字列が境界線により囲まれている場合、矩形枠を検出することを特徴とする請求項１に記載の携帯型光学式読取装置。
【請求項４】
認識した文字列がワーク境界の近傍に存在する場合、ワークの境界を検出することを特徴とする請求項１乃至３のいずれか一項に記載の携帯型光学式読取装置。
【請求項５】
読取対象となる文字列を撮像する撮像手段と、
該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段と
を備える携帯型光学式読取装置で実行することが可能な光学式読取方法であって、
前記携帯型光学式読取装置は、
撮像された画像から境界線を検出する第１の工程と、
認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する第２の工程と、
判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定する第３の工程と、
設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する第４の工程と
を含むことを特徴とする光学式読取方法。
【請求項６】
読取対象となる文字列を撮像する撮像手段と、
該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段と
を備える携帯型光学式読取装置で実行することが可能なコンピュータプログラムであって、
前記携帯型光学式読取装置を、
撮像された画像から境界線を検出する検出手段、
前記文字列認識手段において認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する判断手段、
該判断手段における判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定するマージン領域設定手段、及び
設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する結果出力手段
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤って読み取る確率を減じることが可能な携帯型光学式読取装置、該携帯型光学式読取装置を用いる光学式読取方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、ＯＣＲ等を用いて、記載された文字（列）を認識してデータ処理する技術が多々開発されている。文字認識技術としては、例えば照合辞書（マスターデータ）に事前に登録されている文字の画像と、撮像された画像との一致度を算出し、一致度が最も高い文字を認識文字として出力している。
【０００３】
そして、認識された文字列が、ユーザによって所望の文字列として認識されているか、特に文字列の両端まで正しく文字認識されているか否かをチェックする。正しく文字認識されているか否かをチェックする方法としては、例えば文字列の左右（両端）に所定幅の空白領域（マージン領域）を設け、撮像された画像上で空白領域内の階調に変動が生じていないことをチェックするマージンチェック方式が良く知られている。
【０００４】
例えば特許文献１では、バーコードを読み取る場合にマージンチェックを行うので、バーコードのスタートパターン、ストップパターンを正しく検出することができるバーコード読取装置が開示されている。なお、バーコード規格では、バーコードの両端には必ずマージン領域を設けなければならない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２２７７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
品番、日付等、英数字や記号で構成された文字列は、バーコードではないので必ずしもマージン領域を設ける必要はない。しかし、例えばワークの境界の近傍に文字列が付されている場合、あるいはワーク上に設けた矩形枠の内側に文字列が付されている場合等には、マージン領域に線分境界が含まれてしまうおそれがある。この場合、マージン領域内において階調に変動が生じていると判断され、読み取りに失敗したと判断されるという問題点があった。
【０００７】
一方、ワークの境界の近傍に文字列が付されている場合、あるいはワーク上に設けた矩形枠の内側に文字列が付されている場合等には、マージン領域を設けることなく読取を行うよう設定することも考えられる。しかし、読取設定の切り替えという煩雑な作業をユーザに強いることになる。逆に、一切マージン領域を設定しない（設けない）ようにすることもできるが、読取精度を高く維持することが困難になる。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、マージン領域を設定している場合であっても読取精度を高く維持することができる携帯型光学式読取装置、該携帯型光学式読取装置を用いる光学式読取方法、及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係る携帯型光学式読取装置は、読取対象となる文字列を撮像する撮像手段と、該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段と、撮像された画像から境界線を検出する検出手段と、前記文字列認識手段において認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する判断手段と、該判断手段における判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定するマージン領域設定手段と、設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する結果出力手段とを備えることを特徴とする。
【００１０】
また、第２発明に係る携帯型光学式読取装置は、第１発明において、前記マージン領域設定手段は、前記判断手段で所定幅の領域内に境界線が存在しないと判断された場合、所定幅の領域をマージン領域として設定し、前記判断手段で所定幅の領域内に境界線が存在すると判断された場合、境界線を含まない、所定幅よりも狭い幅の領域をマージン領域として設定することを特徴とする。
【００１１】
また、第３発明に係る携帯型光学式読取装置は、第１発明において、認識した文字列が境界線により囲まれている場合、矩形枠を検出することを特徴とする。
【００１２】
また、第４発明に係る携帯型光学式読取装置は、第１乃至第３発明のいずれか１つにおいて、認識した文字列がワーク境界の近傍に存在する場合、ワークの境界を検出することを特徴とする。
【００１３】
次に、上記目的を達成するために第５発明に係る光学式読取方法は、読取対象となる文字列を撮像する撮像手段と、該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段とを備える携帯型光学式読取装置で実行することが可能な光学式読取方法であって、前記携帯型光学式読取装置は、撮像された画像から境界線を検出する第１の工程と、認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する第２の工程と、判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定する第３の工程と、設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する第４の工程とを含むことを特徴とする。
【００１４】
次に、上記目的を達成するために第６発明に係るコンピュータプログラムは、読取対象となる文字列を撮像する撮像手段と、該撮像手段で撮像された画像に基づいて文字列を認識する文字列認識手段とを備える携帯型光学式読取装置で実行することが可能なコンピュータプログラムであって、前記携帯型光学式読取装置を、撮像された画像から境界線を検出する検出手段、前記文字列認識手段において認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する判断手段、該判断手段における判断結果に基づいて、前記境界線を含まないように領域の幅又は形状を調整してマージン領域として設定するマージン領域設定手段、及び設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する結果出力手段として機能させることを特徴とする。
【００１５】
第１発明、第５発明及び第６発明では、読取対象となる文字列を撮像し、撮像された画像に基づいて文字列を認識する。撮像された画像から境界線を検出し、認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する。判断結果に基づいて、境界線を含まないように領域の幅又は形状を調整してマージン領域として設定し、設定されたマージン領域内で階調の変動量が所定の閾値以下である場合、認識された文字列を読取結果として出力する。これにより、マージン領域を設けることにより誤って読み取る確率を減じることができ、しかもマージン領域内に高いコントラスト（階調の変動）を有する部分が存在する場合には読取に失敗したと判断、あるいは読取に失敗した可能性を警告として通知することができ、読取精度を高く維持することが可能となる。また、領域を区切る枠に相当する線分境界、あるいはワークの境界等がマージン領域内に含まれている場合には、マージン領域の幅又は形状を調整することで線分境界等が検出されないようにすることができ、読取に成功したと判断することが可能となる。
【００１６】
第２発明では、所定幅の領域内に境界線が存在しないと判断された場合、所定幅の領域をマージン領域として設定し、所定幅の領域内に境界線が存在すると判断された場合、境界線を含まない、所定幅よりも狭い幅の領域をマージン領域として設定する。これにより、マージン領域内に例えば線分境界のような境界線が存在する場合には、境界線を含まない幅まで領域の幅を小さくすることで境界線を含まないマージン領域として設定することができるので、マージン領域内において階調に変動が生じることなく正しく読み取られたと判断することが可能となる。
【００１７】
第３発明では、認識した文字列が境界線により囲まれている場合、矩形枠を検出することにより、矩形枠を文字であると誤って読み取ることを未然に防止することが可能となる。
【００１８】
第４発明では、認識した文字列がワーク境界の近傍に存在する場合、ワークの境界を検出することにより、ワークの境界を文字であると誤って読み取ることを未然に防止することが可能となる。
【発明の効果】
【００１９】
本発明によれば、マージン領域を設けることにより誤って読み取る確率を減じることができ、しかもマージン領域内に高いコントラスト（階調の変動）を有する部分が存在する場合には読取に失敗したと判断、あるいは読取に失敗した可能性を警告として通知することができ、読取精度を高く維持することが可能となる。また、領域を区切る枠に相当する線分境界、あるいはワークの境界等がマージン領域内に含まれている場合には、マージン領域の幅又は形状を調整することで線分境界等が検出されないようにすることができ、読取に成功したと判断することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態に係るハンディターミナルの外観構成を示す模式図である。
【図２】本発明の実施の形態に係るハンディターミナルの、ＣＰＵ等の制御部を用いた場合の構成を示すブロック図である。
【図３】本発明の実施の形態に係るハンディターミナル１００の読取処理の手順を示すフローチャートである。
【図４】本発明の実施の形態に係るハンディターミナルの機能ブロック図である。
【図５】桁落ちによって誤って読み取る可能性がある場合の例示図である。
【図６】文字列の周囲に枠線が存在する場合の例示図である。
【図７】マージン領域を設定した場合の例示図である。
【図８】誤って読み取る可能性がある場合のマージン領域の設定例である。
【図９】線分境界として枠を検出する場合の例示図である。
【図１０】線分境界としてワークの境界を検出する場合の例示図である。
【図１１】線分境界に応じてマージン領域の幅を調整する場合の例示図である。
【図１２】線分境界に応じてマージン領域の幅を調整する場合の例示図である。
【図１３】本発明の実施の形態に係るハンディターミナルのＣＰＵの処理手順を示すフローチャートである。
【図１４】警告通知の画面の例示図である。
【図１５】本発明の実施の形態に係るハンディターミナルでの読取の特徴を説明するための、文字列の例示図である。
【図１６】本発明の実施の形態に係るハンディターミナルの境界線が楕円枠である場合のマージン領域の例示図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態に係る携帯型光学式読取装置について、図面に基づいて具体的に説明する。本実施の形態では、携帯型光学式読取装置として、ＣＰＵを内蔵したハンディターミナルを採用する場合を例に挙げて説明する。
【００２２】
図１は、本発明の実施の形態に係るハンディターミナルの外観構成を示す模式図である。図１に示すように、ハンディターミナル１００は、略方形である筐体１０の外形を一方向に延長した板状である。筐体１０の先端部分又は背面部分には、読取対象であるシンボルの光学的読取を行うための読取部（図示せず）が設けられている。読取部は、バーコードを読み取るスキャンモジュール、二次元コードを読み取るカメラモジュール等で構成される。
【００２３】
筐体１０の上面には、ディスプレイ部（表示部）３０と、キー配置部４０とが設けられている。筐体１０の一端側にディスプレイ部３０が、ディスプレイ部３０と反対側の他端側にキー配置部４０が、それぞれ設けられている。
【００２４】
筐体１０は、ディスプレイ部３０を備える表示部分ＤＡと、キー配置部４０を備える把持部分ＨＡとで構成されており、ユーザは、把持部分ＨＡを手で把持して、表示部分ＤＡに設けられたディスプレイ部３０の表示内容を参照しながら、把持部分ＨＡの表面側に配置されたキー配置部４０の各操作キー４６を操作する。筐体１０は、平面視において表示部分ＤＡを幅広とし、把持部分ＨＡを幅狭とする一方、側面視においては、把持部分ＨＡが厚くなるようにしてある。これにより、把持部分ＨＡを持ちやすくしている。
【００２５】
ディスプレイ部３０は、筐体１０の一面側に設けられており、読取対象のシンボルをカメラ部で撮像した画像、シンボルを復号化した情報、その他の設定情報といった各種の情報を表示する。ディスプレイ部３０は、例えば液晶ディスプレイ（ＬＣＤ）、有機ＥＬ等で構成されている。また、ディスプレイ部３０は、タッチパネルとして構成されていても良い。
【００２６】
キー配置部４０には、各種の操作を行うテンキーや電源キー４４、ファンクションキー４５といった複数の操作キー４６が並べられている。キー配置部４０に配置された各入力デバイスは、各種の入力操作を受け付けるキー入力部を構成している。また、ディスプレイ部３０のタッチパネルも、キー入力部として機能している。
【００２７】
ハンディターミナル１００は、携帯性を担保するべく、駆動電力を供給するためのバッテリ（図示せず）を備えている。また、撮像する位置を特定するための照準光を照射する照準光照射部、及び撮像部は、筐体１０の背面側に設けられている。
【００２８】
図２は、本発明の実施の形態に係るハンディターミナル１００の、ＣＰＵ等の制御部を用いた場合の構成を示すブロック図である。図２に示すように、本実施の形態に係るハンディターミナル１００は、少なくとも動作を制御する制御プログラムを実行するＣＰＵ（制御部）１０１、ＲＡＭ２０、ＲＯＭ２１、表示部（ディスプレイ部）３０、操作部（キー配置部）４０、通信インタフェース５０、撮像部６０を備えている。
【００２９】
ＣＰＵ１０１は、内部バス等を介してハンディターミナル１００の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、ＲＯＭ２１に記憶されているコンピュータプログラム２００に従って、種々のソフトウェア的機能を実行する。ＲＡＭ２０は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム２００の実行時にロードモジュールが展開され、コンピュータプログラム２００の実行時に発生する一時的なデータ等を記憶する。
【００３０】
ＲＯＭ２１には、ファームウェア２１１、デコーダ２１２、文字認識辞書２１３も記憶されている。ファームウェア２１１は、接続されている各ハードウェアの動作を制御するドライバソフトウェア等のプログラム群である。デコーダ２１２は、例えばＱＲコード（登録商標）やバーコードをデコードする。文字認識辞書２１３は、撮像された画像を、テキストデータに変換するための辞書である。
【００３１】
通信インタフェース５０は内部バスに接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ等とデータ送受信を行うことが可能となっている。操作部（キー配置部）４０は、各種の入力操作を受け付けるキー入力部として機能し、キー入力により操作のための入力を受け付ける。
【００３２】
撮像部６０は、カメラ６１と照準光照射部６２とで構成されている。カメラ６１は、ＶＶＤカメラ等、撮像対象を撮像できる撮像手段であれば特に限定されるものではない。また、照準光照射部６２は、撮像位置を視認できるよう撮像された画像の水平方向に延伸する直線状の光、あるいは水平方向と垂直方向の十字を形成する光等を照射する。
【００３３】
本実施の形態に係るハンディターミナル１００の読取処理の手順は以下のとおりである。図３は、本発明の実施の形態に係るハンディターミナル１００の読取処理の手順を示すフローチャートである。
【００３４】
図３において、本実施の形態に係るハンディターミナル１００のＣＰＵ１０１は、文字列の読取が成功したか否かを判断する（ステップＳ３０１）。「読取が成功する」とは、何らかの文字列を認識したと判定できる状態を意味する。読取が成功した後、認識した文字列をそのまま記憶する、認識した文字列にマスターデータとの照合処理を実施する等の追加処理が考えられる。ＣＰＵ１０１が、文字列の読取に失敗したと判断した場合（ステップＳ３０１：ＮＯ）、ＣＰＵ１０１は、読取に失敗した旨を通知する（ステップＳ３０２）。
【００３５】
ＣＰＵ１０１が、文字列の読取に成功したと判断した場合（ステップＳ３０１：ＹＥＳ）、ＣＰＵ１０１は、読取文字列のマスターデータと照合して（ステップＳ３０３）、照合に成功したか否かを判断する（ステップＳ３０４）。「照合に成功する」とは、マスターデータに一致する文字が存在することを意味する。
【００３６】
ＣＰＵ１０１が、照合に失敗したと判断した場合（ステップＳ３０４：ＮＯ）、ＣＰＵ１０１は、照合に失敗した旨を通知する（ステップＳ３０５）。ＣＰＵ１０１が、照合に成功したと判断した場合（ステップＳ３０４：ＹＥＳ）、ＣＰＵ１０１は、照合に成功した旨を通知する（ステップＳ３０６）。この状態で、ハンディターミナル１００による読取が正常に終了したことになる。
【００３７】
照合処理としては、様々なバリエーションが考えられる。例えば文字列が一致しているか否かを照合する場合、マスターデータとして文字列を記憶しておき、読み取った文字列と一致する文字列がマスターデータに存在すれば、照合に成功したと判断することができる。
【００３８】
また、マスターデータとして日付情報、例えば「２０１４／０２／２０」等を記憶しておき、読取文字列が日付として一致しているか否かを照合しても良い。この場合、単なる文字列としてではなく、日付情報として解釈しているので、例えば読取文字列が「１４．２．２０」であっても、日付として「２０１４／０２／２０」であると解釈するように設定しておくことで、マスターデータと一致するとして照合に成功したと判断することができる。
【００３９】
さらに、マスターデータとして日付情報の範囲、例えば「２０１４／０２／２０〜２０１４／０３／２０」等を記憶しておき、読取文字列が、この範囲の日付として一致しているか否かを照合しても良い。この場合、読取文字列が「１４．２．２５」であっても、日付としてはマスターデータに記憶してある範囲内であることから、照合に成功したと判断することができる。
【００４０】
図４は、本発明の実施の形態に係るハンディターミナル１００の機能ブロック図である。本実施の形態に係るハンディターミナル１００の撮像手段４０１は、読取対象となる文字列、あるいはＱＲコード（登録商標）、バーコード等を撮像する。
【００４１】
文字列認識手段４０２は、撮像された画像に基づいて文字列を認識する。検出手段４０３は、撮像手段４０１により撮像された画像から境界線、例えば線分境界を検出する。
【００４２】
従来の文字列認識では、以下のような問題が生じていた。図５は、桁落ちによって誤って読み取る可能性がある場合の例示図である。
【００４３】
図５（ａ）に示すように、文字列「１２３４５６」の左端の文字「１」の印刷品質が悪い、あるいは用紙に汚れ等が有った場合、図５（ｂ）に示すように左端の文字「１」を読み取ることができず、「２３４５６」と誤って読み取る可能性があった。
【００４４】
図６は、文字列の周囲に枠線が存在する場合の例示図である。図６に示すように、枠線６０１に対しては、文字列と重なる部分が存在しないことから、文字列の前後の枠線６０１の線分を文字として認識することがない。したがって、正しい文字列「１２３４５６」を読み取ることができる。一方、枠線６０２に対しては、文字列と重なる部分が存在することから、文字列の前後の枠線６０２の線分を文字、例えば「１」、「Ｉ」と誤って読み取る可能性が高くなる。
【００４５】
そこで、本実施の形態に係るハンディターミナル１００では、マージン領域を設けて、マージン領域内の階調の変動量に基づいて、誤って読み取ったか否かを判断している。
【００４６】
図４に戻って、判断手段４０４は、文字列認識手段４０２により認識された文字列の前後の少なくとも一方に設けられた所定幅の領域内に、検出された境界線が存在するか否かを判断する。つまり、認識された文字列の前後の少なくとも一方に設けられた所定幅の領域をマージン領域として設定し、マージン領域内に境界線が存在するか否かを判断する。
【００４７】
図７は、マージン領域を設定した場合の例示図である。図７の例では、読取対象である文字列「１２３４５６」の前後に、所定幅を有するマージン領域７０１を設けている。そして、マージン領域７０１内において、階調の変動量が所定の閾値を超えている場合に、誤って読み取ったと判断して、読取に失敗した旨の表示、あるいは警告を通知する。
【００４８】
マージン領域７０１内における階調の変動量は、例えばマージン領域７０１内における階調の最大値と最小値との差として算出しても良い。この場合、階調の最大値と最小値との差が所定の閾値を超えている場合に、誤って読み取ったと判断する。
【００４９】
図８は、誤って読み取る可能性がある場合のマージン領域の設定例である。図８の例では、読取対象である文字列「１２３４５６」の左端の文字「１」に印刷品質が悪い、あるいは用紙に汚れがあり、文字列の前側のマージン領域８０１内において階調の変動量が所定の閾値を超えることから、誤って読み取ったと判断して、読取に失敗した旨の表示、あるいは警告を通知する。
【００５０】
このように、認識された文字列の前後の少なくとも一方に設けられた所定幅の領域としてマージン領域を設けることにより、たとえ文字列の一部分に正しく読み取ることができない文字が有った場合であっても、桁落ちにより誤って読み取ることを未然に防止することができる。
【００５１】
ただし、文字列は、バーコードと違ってマージン領域を設けることが必須ではなく、マージン領域を設けることができないワークも存在する。特に文字列が矩形枠の枠線の一端、ワーク境界に近接しているワークである場合には、正しく読み取ったものと判断される必要がある。
【００５２】
そこで、本実施の形態では、枠、その他の境界に属する部分を線分境界（境界線）として検出して、それらを含まないようにマージン領域の幅を再調整して設定する。図４に戻って、マージン領域設定手段４０５は、判断手段４０４における判断結果に基づいて、境界線を含まないように領域の幅又は形状を調整してマージン領域として設定する。具体的には、判断手段４０４で所定幅の領域内に境界線が存在しないと判断された場合、既に設定されている所定幅の領域をマージン領域として設定し、判断手段４０４で所定幅の領域内に境界線が存在すると判断された場合、境界線を含まない、所定幅よりも狭い幅の領域を、新たにマージン領域として設定する。もちろん、幅の調整だけではなく、例えば境界線が斜めに傾いている場合に矩形領域を台形領域に調整する等、領域の形状を調整しても良い。
【００５３】
図９は、線分境界として枠を検出する場合の例示図である。図９（ａ）に示すように、読取対象となる文字列「１２３４５６」を囲むように枠９０１が存在する場合、図９（ｂ）に示すように、線分境界として枠９０１を検出する。
【００５４】
また、図１０は、線分境界としてワークの境界を検出する場合の例示図である。図１０（ａ）に示すように、読取対象となる文字列「１２３４５６」がワークの左端（ワーク境界の近傍）に存在する場合、図１０（ｂ）に示すように、線分境界としてワークの境界１００１を検出する。つまり、文字列がワーク境界の近傍に存在する場合には、ワークの境界１００１を線分境界として検出する。
【００５５】
いずれの場合も、線分境界を検出する方法は特に限定されるものではない。例えばソーベルフィルタを用いることで枠９０１又はワークの境界１００１のエッジ画像を生成し、近接するエッジを接続するといった周知の方法で足りる。
【００５６】
そして、マージン領域の幅を、所定幅の領域内で検出した線分境界を含まないよう設定することで、線分境界を誤って何らかの文字として読み取ることを回避することができる。図１１及び図１２は、線分境界に応じてマージン領域の幅を調整する場合の例示図である。
【００５７】
図１１（ａ）の例では、文字列「１２３４５６」を囲む枠９０１に重なるようにマージン領域９０２が設けられている。この状態では、マージン領域内において枠９０１を文字「１」又は「Ｉ」と誤って読み取る可能性が高い。
【００５８】
そこで、図１１（ｂ）に示すように、枠９０１に重ならないように、枠９０１の内側に収まるようマージン領域９０３を設定する。これにより、マージン領域９０３内では、線分境界が検出されることがないので、階調の変動量は大きくならず、認識された文字列が正しく読み取られていると判断することができる。
【００５９】
図１２（ａ）の例では、文字列「１２３４５６」がワークの左端（ワーク境界の近傍）に存在し、ワークの境界１００１を含むようにマージン領域１００２が設けられている。この状態では、マージン領域内においてワークの境界１００１を文字「１」又は「Ｉ」と誤って読み取る可能性が高い。
【００６０】
そこで、図１２（ｂ）に示すように、ワークの境界１００１に重ならないように、マージン領域１００３を設定する。これにより、マージン領域１００３内では、線分境界が検出されることがないので、階調の変動量は大きくならず、認識された文字列が正しく読み取られていると判断することができる。
【００６１】
図４に戻って、結果出力手段４０６は、設定されたマージン領域内で階調の変動量が所定の閾値以下であるか否かを判断し、所定の閾値以下であると判断した場合、認識された文字列が正しく読み取られていると判断して、読取結果として出力する。
【００６２】
図１３は、本発明の実施の形態に係るハンディターミナル１００のＣＰＵ１０１の処理手順を示すフローチャートである。ハンディターミナル１００のＣＰＵ１０１は、撮像された画像を取得する（ステップＳ１３０１）。ＣＰＵ１０１は、画像の中から線分境界（境界線）を検出し（ステップＳ１３０２）、線分境界で区切られた領域ごとに文字列を検出する（ステップＳ１３０３）。
【００６３】
ＣＰＵ１０１は、所定幅の領域（マージン領域）内に線分境界が存在するか否かを判断する（ステップＳ１３０４）。ＣＰＵ１０１が、線分境界が存在すると判断した場合（ステップＳ１３０４：ＹＥＳ）、ＣＰＵ１０１は、マージン領域を線分境界まで狭める（ステップＳ１３０５）。ＣＰＵ１０１が、線分境界が存在しないと判断した場合（ステップＳ１３０４：ＮＯ）、ＣＰＵ１０１は、ステップＳ１３０５をスキップし、文字列の前後のマージン領域内において階調の変動量が所定の閾値以下であるか否かを判断する（ステップＳ１３０６）。
【００６４】
ＣＰＵ１０１が、階調の変動量が所定の閾値を超えていると判断した場合（ステップＳ１３０６：ＮＯ）、ＣＰＵ１０１は、他の文字列候補があるか否かを判断する（ステップＳ１３０７）。ＣＰＵ１０１が、他の文字列候補があると判断した場合（ステップＳ１３０７：ＹＥＳ）、ＣＰＵ１０１は、処理をステップＳ１３０４へ戻し、上述した処理を繰り返す。
【００６５】
ＣＰＵ１０１が、他の文字列候補がないと判断した場合（ステップＳ１３０７：ＮＯ）、ＣＰＵ１０１は、読取に失敗した旨を通知し（ステップＳ１３０８）、処理を終了する。ＣＰＵ１０１が、階調の変動量が所定の閾値以下であると判断した場合（ステップＳ１３０６：ＹＥＳ）、ＣＰＵ１０１は、読取に成功した旨を通知し（ステップＳ１３０９）、処理を終了する。
【００６６】
なお、読み取りに失敗した旨の通知の代わりに、読み取りに失敗した旨の警告を通知しても良いことは言うまでもない。図１４は、警告通知の画面の例示図である。図１４に示すように、画像表示領域１４１には、読取対象である文字列の撮像された画像を、文字列表示領域１４２には、読み取った文字列を、そして警告表示領域１４３には、読取に失敗した理由を警告（アラート情報）として表示している。
【００６７】
図１５は、本発明の実施の形態に係るハンディターミナル１００での読取の特徴を説明するための、文字列の例示図である。まず、読み取るべき文字列「０１２３４５６７８９」の前後にマージン領域が存在しない場合、マージン領域内における階調の変動量が所定の閾値以下であるか否かに関わらず、文字列「０１２３４５６７８９」を読み取ることができる。
【００６８】
それに対して、マージン領域を設けることなく文字列「特許０１２３４５６７８９」を読み取る場合、マージン領域内における階調の変動量をチェックしない場合には読み取ることもできるが、チェックした場合には階調の変動量が所定の閾値を超えることから、正しく読み取ることができない。文字列「特許    ０１２３４５６７８９」のように、文字列「０１２３４５６７８９」の前側にマージン領域を設けている場合には、マージン領域内における階調の変動量が所定の閾値以下となるので、文字列「０１２３４５６７８９」を読み取ることができる。
【００６９】
また、文字列「０１２３４５６７８９」が矩形枠で囲まれている場合、マージン領域の有無にかかわらず、枠内の文字列「０１２３４５６７８９」を正しく読み取ることができる。
【００７０】
以上のように本実施の形態によれば、マージン領域を設けることにより誤って読み取る確率を減じることができ、しかもマージン領域に高いコントラスト（階調の変動）を有する部分が存在する場合には読取に失敗したと判断、あるいは読取に失敗した可能性を警告として通知することができ、読取精度を高く維持することが可能となる。また、領域を区切る枠に相当する線分境界、あるいはワークの境界等がマージン領域に含まれている場合には、読取に成功したと判断することが可能となる。
【００７１】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えば上述した実施例では、認識した文字列が境界線により囲まれている場合、矩形枠として検出しているが、例えば楕円枠であっても良い。図１６は、本発明の実施の形態に係るハンディターミナル１００の境界線が楕円枠である場合のマージン領域の例示図である。
【００７２】
図１６（ａ）の例では、文字列「１２３４５６」を囲む楕円枠１６１に重なるようにマージン領域１６２が設けられている。この状態では、マージン領域１６２内において楕円枠１６１をカッコ“（“又は”）“と誤って読み取る可能性が高い。
【００７３】
そこで、図１６（ｂ）に示すように、楕円枠１６１に重ならないように、楕円枠１６１の内側に収まるようマージン領域１６３を設定する。これにより、マージン領域１６３内では、線分境界が検出されることがないので、階調の変動量は所定の閾値を超えることはなく、認識された文字列が正しく読み取られていると判断することができる。
【００７４】
また、上記実施例では、撮像された画像から文字列を読み取る場合について説明しているが、バーコードやＱＲコード（登録商標）などの各種コード読取装置にも適用することが可能であることは言うまでもない。
【符号の説明】
【００７５】
２０  ＲＡＭ
２１  ＲＯＭ
３０  表示部（ディスプレイ部）
４０  操作部（キー配置部）
６０  撮像部
６１  カメラ
６２  照準光照射部
１００  ハンディターミナル
１０１  ＣＰＵ
【図２】
2015210543.tif 000003
【図３】
2015210543.tif 000004
【図４】
2015210543.tif 000005
【図１３】
2015210543.tif 000006
【図１５】
2015210543.tif 000007
【図１】
2015210543.tif 000008
【図５】
2015210543.tif 000009
【図６】
2015210543.tif 000010
【図７】
2015210543.tif 000011
【図８】
2015210543.tif 000012
【図９】
2015210543.tif 000013
【図１０】
2015210543.tif 000014
【図１１】
2015210543.tif 000015
【図１２】
2015210543.tif 000016
【図１４】
2015210543.tif 000017
【図１６】
2015210543.tif 000018