(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-05-13
(45)【発行日】2024-05-21
(54)【発明の名称】文字列読取方法、文字列読取装置及びプログラム
(51)【国際特許分類】
G06V 30/12 20220101AFI20240514BHJP
G06V 30/14 20220101ALI20240514BHJP
【FI】
G06V30/12 Z
G06V30/14 340K
(21)【出願番号】P 2023147753
(22)【出願日】2023-09-12
【審査請求日】2024-02-05
【早期審査対象出願】
(73)【特許権者】
【識別番号】391062872
【氏名又は名称】株式会社オプトエレクトロニクス
(74)【代理人】
【識別番号】100123881
【氏名又は名称】大澤 豊
(74)【代理人】
【識別番号】100134625
【氏名又は名称】大沼 加寿子
(72)【発明者】
【氏名】丑木 崇
【審査官】真木 健彦
(56)【参考文献】
【文献】特開2014-071698(JP,A)
【文献】特開平11-232381(JP,A)
【文献】特開2019-129167(JP,A)
【文献】特開2016-224602(JP,A)
【文献】国際公開第1996/027166(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 30/12
G06V 30/14
G06V 30/00
(57)【特許請求の範囲】
【請求項1】
文字列読取装置が実行する文字列読取方法であって、
画像取得部により読取対象物の画像を取得する画像取得手順と、
前記画像中から読み取って出力すべき文字列のフォーマットを取得するフォーマット取得手順と、
前記文字列読取装置が特定可能な文字のうち、取得した前記フォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定する文字認識条件設定手順と、
取得した前記画像中の文字列を、設定した前記文字認識条件に従って認識する文字列認識手順と、
前記認識で得た第1文字列のうち、取得した前記フォーマットに合致する箇所の第2文字列を出力用に取得する文字列取得手順とを備える文字列読取方法。
【請求項2】
請求項1に記載の文字列読取方法であって、
前記文字列認識手順は、
前記画像中に含まれる図形を認識する図形認識手順と、
認識した前記図形のうち1の図形又は複数の図形の組み合わせにより構成される文字候補を特定する文字候補特定手順と、
特定された前記文字候補の特徴を前記一群の文字の各々の特徴と対比して得た一致率に基づき該文字候補がどの文字かを特定し、どの文字とも特定されなかった文字候補を不定の文字と認識する文字特定手順とを備え、
概ね直線状に連続して配列されている、特定された前記文字及び前記不定の文字を、それらの文字で構成された文字列と認識する手順であることを特徴とする文字列読取方法。
【請求項3】
請求項1に記載の文字列読取方法であって、
前記文字列取得手順において、前記認識で得た第1文字列のうち前記取得したフォーマットに合致する箇所が複数あった場合、それらのうち、前記文字列認識手順における認識で文字の特徴との一致率が最も高かった箇所を前記第2文字列として取得することを特徴とする文字列読取方法。
【請求項4】
請求項3に記載の文字列読取方法であって、
前記文字列取得手順で前記フォーマットに合致する箇所が複数あった場合に、誤読の可能性がある旨を報知する報知手順を備えることを特徴とする文字列読取方法。
【請求項5】
請求項1に記載の文字列読取方法であって、
前記文字列取得手順において、前記認識で得た第1文字列のうち前記取得したフォーマットに合致する箇所が複数あった場合、それらのうち、前記第1文字列における文字の配列方向で見て、取得した前記画像の中央を含む箇所を前記第2文字列として取得することを特徴とする文字列読取方法。
【請求項6】
請求項5に記載の文字列読取方法であって、
前記文字列取得手順で前記フォーマットに合致する箇所が複数あった場合に、誤読の可能性がある旨を報知する報知手順を備えることを特徴とする文字列読取方法。
【請求項7】
請求項1に記載の文字列読取方法であって、
前記フォーマット取得手順において、出力すべき文字列のフォーマットを複数取得し、
前記文字認識条件設定手順において、取得した前記複数のフォーマットのいずれかで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定し、
前記文字列取得手順において、前記認識で得た第1文字列のうち、取得した前記複数のフォーマットの少なくとも1つに合致する箇所を、前記第2文字列の候補として取得することを特徴とする文字列読取方法。
【請求項8】
請求項7に記載の文字列読取方法であって、
前記文字列取得手順において、取得した前記候補の中で、前記取得に当たり最も長い文字数に亘り前記フォーマットとの合致が検出された候補を、前記第2文字列として取得することを特徴とする文字列読取方法。
【請求項9】
請求項1に記載の文字列読取方法であって、
前記フォーマットは、文字列の加工規則を含むことができ、
前記取得したフォーマットが前記加工規則を含む場合に、前記第2文字列を該加工規則に従って加工し、加工後の文字列を出力する出力手順を備えることを特徴とする文字列読取方法。
【請求項10】
文字列読取装置であって、
読取対象物の画像を取得する画像取得部と、
前記画像中から読み取って出力すべき文字列のフォーマットを取得するフォーマット取得部と、
当該文字列読取装置が認識可能な文字のうち、取得した前記フォーマットで規定される文字を全て含む一群の文字のみを認識すべきことを文字認識条件として設定する文字認識条件設定部と、
取得した前記画像中の文字列を、設定した前記文字認識条件に従って認識する文字列認識部と、
前記認識で得た第1文字列のうち、取得した前記フォーマットに合致する箇所の第2文字列を出力用に取得する文字列取得部とを備える文字列読取装置。
【請求項11】
請求項10に記載の文字列読取装置であって、
前記文字列認識部は、
前記画像中に含まれる図形を認識する図形認識部と、
認識した前記図形のうち1の図形又は複数の図形の組み合わせにより構成される文字候補を特定する文字候補特定部と、
特定された前記文字候補の特徴を前記一群の文字の各々の特徴と対比して得た一致率に基づき該文字候補がどの文字かを特定し、どの文字とも特定されなかった文字候補を不定の文字と認識する文字特定部とを備え、
概ね直線状に連続して配列されている、特定された前記文字及び前記不定の文字を、それらの文字で構成された文字列と認識することを特徴とする文字列読取装置。
【請求項12】
請求項10に記載の文字列読取装置であって、
前記文字列取得部は、前記認識で得た第1文字列のうち前記取得したフォーマットに合致する箇所を複数発見した場合、それらのうち、前記文字列認識部による認識で文字の特徴との一致率が最も高かった箇所を前記第2文字列として取得することを特徴とする文字列読取装置。
【請求項13】
請求項12に記載の文字列読取装置であって、
前記文字列取得部が前記フォーマットに合致する箇所を複数発見した場合に、誤読の可能性がある旨を報知する報知部を備えることを特徴とする文字列読取装置。
【請求項14】
請求項10に記載の文字列読取装置であって、
前記
文字列取得部は、前記認識で得た第1文字列のうち前記取得したフォーマットに合致する箇所を複数発見した場合、それらのうち、前記第1文字列における文字の配列方向で見て、取得した前記画像の中央を含む箇所を前記第2文字列として取得することを特徴とする文字列読取装置。
【請求項15】
請求項14に記載の文字列読取装置であって、
前記文字列取得部が前記フォーマットに合致する箇所を複数発見した場合に、誤読の可能性がある旨を報知する報知部を備えることを特徴とする文字列読取装置。
【請求項16】
請求項10に記載の文字列読取装置であって、
前記フォーマット取得部が、出力すべき文字列のフォーマットを複数取得し、
前記文字認識条件設定部が、取得した前記複数のフォーマットのいずれかで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定し、
前記文字列取得部が、前記認識で得た第1文字列のうち、取得した前記複数のフォーマットの少なくとも1つに合致する箇所を、前記第2文字列の候補として取得することを特徴とする文字列読取装置。
【請求項17】
請求項16に記載の文字列読取装置であって、
前記文字列取得部が、取得した前記候補の中で、前記取得に当たり最も長い文字数に亘り前記フォーマットとの合致が検出された候補を、前記第2文字列として取得することを特徴とする文字列読取装置。
【請求項18】
請求項10に記載の文字列読取装置であって、
前記フォーマットは、文字列の加工規則を含むことができ、
前記取得したフォーマットが前記加工規則を含む場合に、前記第2文字列を該加工規則に従って加工し、加工後の文字列を出力する出力部を備えることを特徴とする文字列読取装置。
【請求項19】
請求項1乃至9のいずれか一項に記載の文字列読取方法を、前記画像取得部を制御するプロセッサに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像取得部により読取対象物の画像を取得し、その取得した画像中の文字列を読み取る文字列読取方法、このような文字列の読み取りを行う文字列読取装置及びコンピュータに上記の文字列読取方法を実行させるためのプログラムに関する。
【背景技術】
【0002】
従来から、OCR(光学的文字認識:Optical Character Recognition)を用いて、撮像した画像中に含まれる文字列を読み取ることが行われている。また、この読み取りに際し、誤った読み取りが行われた可能性をオペレータに報知することも行われている。
例えば、特許文献1には、文字列の属性を定義づけた複数の読取フォーマットを記憶しておき、文字列認識において認識された文字列に合致する第1の読取フォーマットを検索すると共に、第1の読取フォーマットに合致する文字列が部分文字列として合致する第2の読取フォーマットも検索し、このような第2の読取フォーマットがあった場合には誤読の可能性を報知することが記載されている。
【0003】
特許文献2には、文字列が複数並んだ文字列群であって、異なる文字列に含まれる文字同士が、文字列内の文字の並び方向に直行する方向に沿って列をなすように配置された文字列群を読み取る場合に、上記列をなす文字の文字数の計算結果に応じて誤認識の有無を判定し誤認識した文字に関する情報を報知することが記載されている。
特許文献3には、文字認識における文字画像と文字テンプレートとの一致率が所定の範囲に入る場合に、その文字画像の認識結果を誤読の可能性がある文字として報知することが記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第6403417号公報
【文献】特開2020-24492号公報
【文献】特許第6524800号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特に可搬性のある読取装置を用いる場合、読取対象の文字列を撮像する環境は様々であり、このため画像を理想的な条件で撮像できないことも多く、正確な読み取りには限界がある。従って、誤読が生じた可能性がある場合にはオペレータにこれを通知できることが好ましい。誤読が生じる場合でも、オペレータが読取対象の文字列と読み取り結果とを目視で対比すれば、誤読の判別は容易であり、読取結果の修正も可能であるためである。
【0006】
一方で、正確な読み取りが行われている場合にも誤読の可能性を通知してしまうと、オペレータが通知を無視するようになってしまうことも考えられる。従って、適切な頻度で通知を行うことが求められる。
また、誤読自体の発生率もなるべく下げることが求められる。もちろん、読み取り自体に失敗する率も、下げることが求められる。
【0007】
この発明は、このような事情に鑑みてなされたものであり、簡便で負荷の小さい処理により、撮像画像中の文字を認識する文字認識の精度を向上させることを目的とする。
【課題を解決するための手段】
【0008】
以上の目的を達成するため、この発明の文字列読取方法は、文字列読取装置が実行する文字列読取方法に、画像取得部により読取対象物の画像を取得する画像取得手順と、上記画像中から読み取って出力すべき文字列のフォーマットを取得するフォーマット取得手順と、上記文字列読取装置が特定可能な文字のうち、取得した上記フォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定する文字認識条件設定手順と、取得した上記画像中の文字列を、設定した上記文字認識条件に従って認識する文字列認識手順と、上記認識で得た第1文字列のうち、取得した上記フォーマットに合致する箇所の第2文字列を出力用に取得する文字列取得手順とを設けたものである。
【0009】
このような文字列読取方法において、上記文字列認識手順が、上記画像中に含まれる図形を認識する図形認識手順と、認識した上記図形のうち1の図形又は複数の図形の組み合わせにより構成される文字候補を特定する文字候補特定手順と、特定された上記文字候補の特徴を上記一群の文字の各々の特徴と対比して得た一致率に基づき該文字候補がどの文字かを特定し、どの文字とも特定されなかった文字候補を不定の文字と認識する文字特定手順とを備え、概ね直線状に連続して配列されている、特定された上記文字及び上記不定の文字を、それらの文字で構成された文字列と認識する手順であるとよい。
【0010】
また、上記のいずれかの文字列読取方法において、上記文字列取得手順において、上記認識で得た第1文字列のうち上記取得したフォーマットに合致する箇所が複数あった場合、それらのうち、上記文字列認識手順における認識で文字の特徴との一致率が最も高かった箇所を上記第2文字列として取得するとよい。
さらに、上記文字列取得手順で上記フォーマットに合致する箇所が複数あった場合に、誤読の可能性がある旨を報知する報知手順を備えるとよい。
【0011】
あるいは、上記のいずれかの文字列読取方法において、上記認識で得た第1文字列のうち上記取得したフォーマットに合致する箇所が複数あった場合、それらのうち、上記第1文字列における文字の配列方向で見て、取得した上記画像の中央を含む箇所を上記第2文字列として取得するとよい。
さらに、上記文字列取得手順で上記フォーマットに合致する箇所が複数あった場合に、誤読の可能性がある旨を報知する報知手順を備えるとよい。
【0012】
また、上記のいずれかの文字列読取方法において、上記フォーマット取得手順で、出力すべき文字列のフォーマットを複数取得し、上記文字認識条件設定手順において、取得した上記複数のフォーマットのいずれかで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定し、上記文字列取得手順において、上記認識で得た第1文字列のうち、取得した上記複数のフォーマットの少なくとも1つに合致する箇所を、上記第2文字列の候補として取得するとよい。
【0013】
さらに、上記文字列取得手順において、取得した上記候補の中で、上記取得に当たり最も長い文字数に亘り上記フォーマットとの合致が検出された候補を、上記第2文字列として取得するとよい。
また、上記のいずれかの文字列読取方法において、上記フォーマットは、文字列の加工規則を含むことができ、上記取得したフォーマットが上記加工規則を含む場合に、上記第2文字列を該加工規則に従って加工し、加工後の文字列を出力する出力手順を備えるとよい。
【0014】
また、この発明は、簡便で負荷の小さい処理により、撮像画像中の文字を認識する文字認識において誤読の可能性をオペレータに適切に報知できるようにすることを目的とした、以下の文字列読取方法も提供する。
この文字列読取方法は、画像取得部により読取対象物の画像を取得する画像取得手順と、上記画像中から読み取って出力すべき文字列のフォーマットを1又は複数取得するフォーマット取得手順と、取得した上記画像中の文字列を認識する文字列認識手順と、上記認識で得た第1文字列のうち、取得した上記1又は複数のフォーマットの1つである第1フォーマットに合致する箇所の第2文字列を、出力用に取得する文字列取得手順と、上記文字列取得手順で報知基準文字数未満の文字数の第2文字列を取得した場合に、誤読の可能性がある旨を報知する報知手順とを備えるものである。
【0015】
このような文字列読取方法が、取得した上記1又は複数のフォーマットが規定する文字列の最大文字数に基づき上記報知基準文字数を定める設定手順を備えるとよい。
あるいは、取得した上記1又は複数のフォーマットが規定する文字列の最大文字数を上記報知基準文字数と定める設定手順を備えるとよい。
また、上記のいずれかの文字列読取方法において、取得した上記1又は複数のフォーマットの少なくとも1つが、複数の区間に区切られた文字列を規定し、上記報知基準文字数は該区間ごとに定められ、上記報知手順が、上記文字列取得手順で、少なくとも1つの区間において該区間の文字数が該区間の報知基準文字数未満となっている第2文字列を取得した場合に誤読の可能性がある旨を報知する手順であるとよい。
【0016】
さらに、取得した上記1又は複数のフォーマットが規定する文字列の、上記各区間における最大文字数に基づき、上記各区間の上記報知基準文字数を定める設定手順を備えるとよい。
あるいは、取得した上記1又は複数のフォーマットが規定する文字列の、上記区間における最大文字数をそれぞれ、上記各区間の上記報知基準文字数と定める設定手順を備えるとよい。
【0017】
また、上記のいずれかの文字列読取方法が、文字列読取装置が実行する文字列読取方法であって、上記文字列読取装置が特定可能な文字のうち、取得した上記1又は複数のフォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定する文字認識条件設定手順を備え、上記文字列認識手順において、上記取得した画像中の文字列を、設定した上記文字認識条件に従って認識するとよい。
【0018】
また、この発明は、撮像画像中の文字を認識する文字認識において誤読の可能性をオペレータに適切に報知できるようにすることを目的とした、以下の文字列読取方法も提供する。
この文字列読取方法は、画像取得部により読取対象物の画像を取得する画像取得手順と、取得した上記画像中に含まれる図形を認識する図形認識手順と、認識した上記図形の中から文字列を認識する文字列認識手順と、上記認識した文字列の内部又は近傍に文字を構成しない図形があると判断した場合に、誤読の可能性がある旨を報知する報知手順とを備えるものである。
【0019】
このような文字列読取方法が、上記文字列認識手順の上記認識で得た第1文字列のうち全部又は一部である第2文字列を、出力用に取得する文字列取得手順を備え、上記報知手順が、上記第2文字列の内部又は近傍に上記文字を構成しない図形があると判断した場合に、誤読の可能性がある旨を報知する手順であるとよい。
また、上記のいずれかの文字列読取方法において、上記文字列認識手順が、上記文字列を構成する文字の、配列方向と垂直な向きのサイズである高さを求める手順を備え、上記報知手順における上記判断において、上記高さ方向のサイズが、上記認識した文字列を構成する文字のサイズと比べて所定閾値以上小さい図形を無視するとよい。
【0020】
また、上記のいずれかの文字列読取方法において、上記文字列認識手順が、上記文字列を構成する文字の、配列方向と垂直な向きのサイズである高さを求める手順を備え、上記報知手順における上記判断において、上記高さ方向のサイズが、上記認識した文字列を構成する文字のサイズと比べて所定閾値以上大きい図形を無視するとよい。
また、上記のいずれかの文字列読取方法において、上記図形認識手順が、上記画像中に含まれる図形の、背景に対するコントラストを求める手順を備え、上記報知手順における上記判断において、上記認識した文字列を構成する図形と比べて背景に対するコントラストが所定閾値以上異なる図形を無視するとよい。
【0021】
また、上記のいずれかの文字列読取方法において、上記図形認識手順が、上記画像中に含まれる図形の、エッジのシャープさを求める手順を備え、上記報知手順における上記判断において、上記認識した文字列を構成する図形と比べてエッジのシャープさが所定閾値以上異なる図形を無視するとよい。
また、上記のいずれかの文字列読取方法において、上記文字列認識手順が、どの文字かを特定できた文字以外に、どの文字か特定できない文字候補も文字列を構成する文字として認識する手順であり、上記認識した文字列の端部から連続して並ぶ文字候補は上記文字を構成しない図形であるとして上記報知手順における上記判断を行うとよい。
【0022】
また、上記のいずれかの文字列読取方法が、文字列読取装置が実行する文字列読取方法であって、上記画像中から読み取って出力すべき文字列のフォーマットを取得するフォーマット取得手順と、上記文字列読取装置が特定可能な文字のうち、取得した上記フォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定する文字認識条件設定手順とを備え、上記文字列認識手順において、上記取得した画像中の文字列を、設定した上記文字認識条件に従って認識し、上記文字列取得手順において、上記第1文字列のうち取得した上記フォーマットに合致する箇所を上記第2文字列として取得するとよい。
【0023】
また、上記のいずれかの文字列読取方法が、上記画像中から読み取って出力すべき文字列のフォーマットを1又は複数取得するフォーマット取得手順を備え、上記文字列取得手順において、上記第1文字列のうち、取得した上記1又は複数のフォーマットの1つである第1フォーマットに合致する箇所を上記第2文字列として取得し、上記報知手順が、上記文字列取得手順で報知基準文字数未満の文字数の第2文字列を取得した場合にも、誤読の可能性がある旨を報知する手順であるとよい。
【0024】
さらに、文字列読取装置が実行する文字列読取方法であって、上記文字列読取装置が特定可能な文字のうち、取得した上記1又は複数のフォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として設定する文字認識条件設定手順を備え、上記文字列認識手順において、上記取得した画像中の文字列を、設定した上記文字認識条件に従って認識するとよい。
【0025】
また、この発明は、以上説明した方法の態様で実施する他、装置、システム、プログラム、プログラムを記録した記録媒体等、任意の態様で実施することができる。
【発明の効果】
【0026】
以上のような本発明の構成によれば、簡便で負荷の小さい処理により、撮像画像中の文字を認識する文字認識の精度を向上させることができる。
【図面の簡単な説明】
【0027】
【
図1】
図1は、この発明の文字列読取装置の第1実施形態である読取装置100のハードウェア構成を示すブロック図である。
【
図2】
図2は、
図1に示した読取装置100が備える機能の構成を示す機能ブロック図である。
【
図3】
図3は、
図1に示した読取装置が用いる出力フォーマットの例を示す図である。
【
図4】
図4は、読取装置100のCPU121が実行する、文字列の読み取りに関する処理のフローチャートである。
【
図5】
図5は、
図4に示した文字認識条件設定処理のフローチャートである。
【
図6】
図6は、
図4に示した文字列認識処理のフローチャートである。
【
図7】
図7は、
図4に示した出力文字列抽出処理のフローチャートである。
【
図8】
図8A乃至
図8Fは、
図6の文字列認識処理により行われる文字認識の効果について説明するための図である。
【
図9】
図9A乃至
図9Cは、
図7の出力文字列抽出処理により行われる出力文字列の抽出の効果について説明するための図である。
【
図10】
図10は、この発明の文字列読取装置の第2実施形態である読取装置100が備える機能の構成を示す、
図2と対応する機能ブロック図である。
【
図11】
図11は、第2実施形態の読取装置100のCPU121が実行する、
図4と対応する処理のフローチャートである。
【
図15】
図15は、この発明の文字列読取装置の第3実施形態である読取装置100が備える機能の構成を示す、
図2と対応する機能ブロック図である。
【
図17】
図17は、第3実施形態の読取装置100のCPU121が実行する、
図4と対応する処理のフローチャートである。
【
図20】
図20は、この発明の文字列読取装置の第4実施形態である読取装置100が備える機能の構成を示す、
図2と対応する機能ブロック図である。
【
図21】
図21は、第4実施形態の読取装置100のCPU121が実行する、
図4と対応する処理のフローチャートである。
【
図23】
図23は、この発明の文字列読取装置の第5実施形態である読取装置100が備える機能の構成を示す、
図2と対応する機能ブロック図である。
【
図24】
図24は、第5実施形態の読取装置100のCPU121が実行する、
図4と対応する処理のフローチャートである。
【発明を実施するための形態】
【0028】
この発明の実施形態について、図面を参照しながら説明する。
〔第1実施形態:
図1乃至
図9C〕
まず、この発明の第1実施形態について説明する。
図1は、文字列読取装置の第1実施形態である読取装置100のハードウェア構成を示すブロック図である。
【0029】
図1に示す読取装置100は、読取対象101上の、光反射率が周囲と異なる文字列102を光学的に読み取るための装置であって、その読み取りに際して、読取対象101を撮像する撮像装置でもある。また、読取装置100は、読取対象101上の、光反射率が周囲と異なる記号により示される1次元や2次元のコード記号を光学的に読み取るための光学的情報読取装置としての機能を備えていてもよい。
読取対象101は、静的に文字列102を担持する記録担体であってもよいし、動的にコード記号を表示する表示器であってもよい。
【0030】
図1に示すように、この読取装置100は、光学部110、制御部120、操作部131、通知部132及び表示部133を備える。
これらのうち光学部110は、撮像センサ111、レンズ112、パルスLED(発光ダイオード)113を備え、文字列102を含む読取対象101の画像を光学的に撮像するための撮像装置である。
【0031】
撮像センサ111は、読取対象101等の撮像対象の画像を撮像するための撮像部であり、例えばCMOS(相補性金属酸化膜半導体)イメージセンサにより構成することができる。また、撮像センサ111は、撮像によりイメージセンサの各画素に蓄積した電荷に基づき、各画素の階調値を示す画像データを生成し、制御部120へ出力することができる。この撮像センサ111において、画素は二次元的に配置されている。
【0032】
レンズ112は、撮像センサ111上に撮像対象からの反射光を結像させるための光学系である。
パルスLED113は、撮像センサ111による撮像対象へ照明光を照射するための照明部である。
【0033】
次に、制御部120は、CPU121と、CPU121が実行するプログラムや各種テーブル等のデータを記憶したROM122と、CPU121が各種の処理を実行する際の作業領域として使用するRAM123と、外部装置と通信を行うための通信I/F124とを備えている。
【0034】
CPU121は、RAM123を作業領域としてROM122に記憶されたプログラムを実行することにより、光学部110、操作部131、通知部132及び表示部133を含む読取装置100全体の動作を制御して、
図2を用いて後述するものを始めとする、種々の機能を実現する。この機能には、撮像センサ111が撮像した画像の画像データに含まれる文字列102の識別、表示、外部への出力あるいは蓄積、誤読の可能性の検出及び報知などの処理が含まれ得る。
通信I/F124は、文字列102の識別結果を利用するデータ処理装置など、種々の外部装置と通信するためのインタフェースである。
【0035】
操作部131は、オペレータの操作を受け付けるためのボタンやトリガ等の操作手段である。通知部132は、オペレータヘの各種通知を行うための通知手段である。具体的な通知の方法としては、ディスプレイによるメッセージやデータの表示、ランプの点灯や点滅、スピーカによる音の出力等が考えられるが、これに限られることはない。表示部133は、読取装置100が識別した文字列を表示するための表示手段であり、液晶ディスプレイ等により構成することができる。通知部132と表示部133とを共通のハードウェアとしてもよい。
【0036】
読取装置100を外部装置からの制御あるいは自律制御により自動で動作させる場合には、操作部131、通知部132及び表示部133を設けなくてもよい。
以上の読取装置100は、例えば手持ち型や据え置き型の、文字読取装置又は文字読取機能付きコード記号読取装置として構成することができるが、これらに限られることはない。ハードウェアの全部又は一部として、スマートフォンやパーソナルコンピュータのような、汎用のコンピュータを用いてもよい。
【0037】
以上の読取装置100において、特徴的な点の一つは、画像中に含まれる文字列を認識する手法である。次に、この点について説明する。
まず、読取装置100が備える文字列102の読み取りに関連する機能について説明する。
図2は、その機能の構成を示す機能ブロック図である。
【0038】
図2に示すように、読取装置100は、撮像部141、図形認識部142、文字列認識部143、文字抽出部144、文字加工部145、出力部146、出力フォーマット設定部147、文字認識条件設定部148の機能を備える。これらの各部の機能は、ここで説明する例では、CPU121がソフトウェアを実行することにより光学部110をはじめとする読取装置100の各部を制御することにより実現するが、その一部又は全部を専用の制御回路により実現してもよい。
【0039】
図2に示す撮像部141は、光学部110を制御して撮像を行わせ、撮像で得られた画像データを取得し、取得した画像データを図形認識部142に渡す画像取得部の機能を備える。撮像の条件は、適宜公知の手法に従って定めればよい。
【0040】
図形認識部142は、撮像部141から渡された画像データ中に存在する図形を認識し、その認識した図形の情報を文字列認識部143に渡す機能を備える。図形の認識は、例えば画像中で画素値が急激に変動するエッジの位置を検出し、閉ループを形成するエッジで囲まれた領域が図形であると認識することで、行うことができる。その他、画像を2値化した上で背景と異なる値の画素が連続する箇所をラベリングする等、任意の公知の手法を採用することもできる。図形を認識した際、その位置(存在領域)、サイズ、典型的な画素値、エッジのシャープさを算出して記憶しておくとよい。図形の周囲の背景の典型的な画素値も、合わせて記憶しておくとよい。
図形認識部142は、認識した各図形のデータを文字列認識部143に渡す。
【0041】
文字列認識部143は、図形認識部142から渡された図形のデータに基づき、撮像部141が撮像した画像中に存在する文字列を認識し、その認識した文字列を文字抽出部144に渡す機能を備える。
文字列の認識は、例えば以下のように行うことができる。
【0042】
まず、同程度の大きさの図形が一列に並んでいる領域を抽出する。読取対象の文字列が特定の方向、例えば水平方向に並んでいると期待できる場合には、概ねその方向に並ぶ領域のみ抽出してもよい。
そして、抽出した領域内の1の図形や、近くに存在する複数の図形の組み合わせを文字候補図形として認識し、文字候補図形と予め登録されている文字とで特徴量を比較して、その文字候補図形が、最も一致率の高かった文字であると認識する。
そして、抽出した領域内で認識できた文字を繋げた文字列を、抽出した領域内に存在する文字列であると認識する。
【0043】
この処理において認識可能な文字は、特徴量の比較に用いる文字のみである。そして、特徴量の比較には、読取装置100にデータが登録されている全ての文字を用いてもよい。しかし、読取装置100では、文字認識条件として、登録されている文字の中でどの文字を特徴量の比較に用いるかを設定できるようにしている。例えば、数字のみを特徴量の比較に用いれば、画像中に他の文字が存在したとしても、その中で数字のみを、特定の文字として認識することができる。この点が、この実施形態の特徴の1つである。
また、文字候補図形のうち、どの文字の特徴量とも一致率の低いものは、どの文字であるか不明な不定の文字として認識することができる。ただし、例えば幅や高さが同じ領域内で認識できた文字とある程度異なる文字候補図形は、文字でない図形と認識してもよい。
【0044】
文字認識条件設定部148が上記の文字認識条件の設定を行う。その詳細は後述する。
文字抽出部144は、文字列認識部143から渡された文字列から、出力すべき文字列を抽出して文字加工部145に渡す文字列取得部の機能を備える。
文字加工部145は、文字抽出部144から渡された出力すべき文字列を、必要に応じて加工して、出力部146に渡す機能を備える。
出力部146は、通信I/F124や通知部132を用いて、文字加工部145から渡された文字列のデータを、データ処理装置等の外部装置へ出力すると共に、読取成功をオペレータに報知する機能を備える。オペレータヘの報知の方法は、ブザーや振動など、任意の方法で行うことができるし、報知不要の場合には行わなくてもよい。また、出力部146は、文字加工部145から渡された文字列を、表示部133に表示させる機能を備えてもよい。
【0045】
文字抽出部144における文字列の抽出及び文字加工部145における文字列の加工は、出力フォーマットに従って行う。
出力フォーマット設定部147がフォーマット取得部として機能し、オペレータの操作に従い又は自動的に、予め登録されている出力フォーマットのうち、どの出力フォーマットを使用するかを選択して設定する。
【0046】
図3に、出力フォーマットの例を示す。
図3に示すように、出力フォーマットは、文字抽出部144において抽出する出力すべき文字列を規定する抽出文字列と、その抽出文字列を加工して生成する、最終的に出力部146から出力する文字列を規定する加工後出力文字列とを含む。IDは、個々の出力フォーマットを特定するための識別情報である。
読取装置100は、このような出力フォーマットを任意の数記憶しており、出力フォーマット設定部147は、この中から1又は複数の任意の出力フォーマットを選択して、使用する旨を設定できる。
【0047】
抽出文字列及び加工後出力文字列は、例えば文字の種類と文字数により規定することができる。また、加工後出力文字列は、抽出文字列に従って抽出された文字列をどのように加工して出力するかを示す加工規則を、例えば抽出文字列のうちどの部分を出力するかにより規定することができる。
例えば、ID=1の出力フォーマットでは、出力すべき文字列として数字4文字を抽出することが抽出文字列において規定され、また、この数字4文字を加工せずに出力することが加工後出力文字列において規定されている。抽出文字列と加工後出力文字列が同じであることは、文字加工部145における加工が不要であることを示す。
【0048】
文字の種類としては、数字や英字(英語アルファベット、大文字と小文字を分けてもよい)、記号といった、一般的に用いられる種類の他、上述の「不定の文字」も用いることができる。
例えば、ID=2の出力フォーマットでは、出力すべき文字列として不定の文字3文字と数字4文字とが連続する文字列を抽出することが抽出文字列において規定され、また、このうち数字4文字の箇所を取り出す加工をして出力することが加工後出力文字列において規定されている。
【0049】
また、任意の文字を組み合わせて構成した文字群を、文字の種類として用いることもできる。アルファベットの「A」、「B」、「C」の3文字を種類Xとして、抽出文字列を「種類Xが3文字」と規定する等である。さらに、ID=3及びID=4の出力フォーマットに見られるように、「ID:」といった固定の文字列が含まれる旨を規定することができる。ID=3の抽出文字列は、「ID:」の後ろに数字が4文字続く文字列を規定している。
加工後出力文字列として、抽出文字列に何らかの文字を追加して出力することを規定してもよい。ID=4の出力フォーマットでは、抽出文字列の数字4文字の前に、「ID:」の文字列を追加する加工をして出力することを規定している。
【0050】
また、1の出力フォーマットに、抽出文字列を複数規定してもよい。この場合、文字列認識部143から渡された文字列から、いずれかの抽出文字列に一致する箇所を抽出すべき旨を規定したことになる。さらに、抽出文字列の規定として、特殊な組み合わせで数字や記号等が並ぶことを規定できるようにしてもよい。例えば日付の書式を規定するフォーマットを作成する場合にこれを用いる。
【0051】
ID=8の出力フォーマットにおける抽出文字列では、「YYYY」及び「YY」がそれぞれ、西暦の年を4桁及び2桁で表す数字列を示し、「MM」は暦の月を2桁又は1桁で表す数字列を示し、「DD」は暦の日を2桁又は1桁で表す数字列を示す。「/」、「-」、「□(スペース)」は、年月日を区切る区切り文字を示す。この場合、MMやDDはどんな数字でもよいわけではなく、日付を表す組み合わせとして不適当な、例えばMM=02、DD=31といった組み合わせの場合には抽出文字列に合致しないと判断する。
【0052】
このような複雑な出力フォーマットも、文字抽出部144が文字列の抽出に用いるアルゴリズム次第では採用可能である。
なお、ID=8の加工後出力文字列では、抽出文字列のいずれに基づき文字列が抽出された場合でも、抽出された文字列を「YYYY-MM-DD」の書式に加工して出力すべきことが規定されている。
【0053】
また、後述の文字認識条件の設定に用いるため、抽出文字列と対応付けて、その抽出文字列の規定に従って特定の文字として抽出される可能性がある文字の情報を、出力フォーマットに含めておいてもよい。
例えば、抽出される可能性がある文字は、ID=1の出力フォーマットでは数字のみである。ID=5~7の出力フォーマットでは、英字と数字である。
【0054】
なお、不定の文字は、特定の文字ではないし、これを狙って検出することもできないので、「抽出される可能性がある文字」には含めない。従って、ID=2の出力フォーマットでも、抽出される可能性がある文字は数字のみである。
ID=3のように抽出文字列が固定の文字列を含む場合、その固定の文字列を構成する文字も、「抽出される可能性がある文字」になる。従って、ID=3の出力フォーマットでは、抽出される可能性がある文字は、数字に加え、「I」、「D」、「:」の3文字である。
【0055】
また、ID=8の出力フォーマットで抽出される可能性がある文字は、数字に加え、「/」、「-」、「□(スペース)」の3文字である。ここでは文字としてのどの文字であるかのみを考慮すればよいので、ID=8における「Y」や「M」や「D」も、単なる数字であると考えることができる。
【0056】
図2の説明に戻ると、文字認識条件設定部148は、出力フォーマット設定部147により設定されている出力フォーマットに基づき、文字列認識部143における文字列認識でどの文字を特定するかを規定する文字認識条件を設定する機能を備える。文字認識条件設定部148は、設定されている出力フォーマットが規定する抽出文字列に従って抽出される可能性がある文字を全て認識し得るように文字認識条件を設定する。
【0057】
例えば、抽出される可能性がある文字が数字のみであれば、少なくとも数字を全て認識し得るように文字認識条件を設定する。このためには、例えば、文字列認識において、少なくとも数字全てを文字候補図形と対比すべきことを設定する。このような設定を行うと、文字列認識において、画像中に含まれる数字は全て認識可能であるが、数字以外の文字は特定の文字として認識できないことになる(不定の文字として認識されることはあり得る)。一方、数字のみ認識できれば、文字抽出部144における、出力すべき文字列の抽出には支障がない。
【0058】
なお、数字に加え、数字以外の文字も文字候補図形と対比したとしても、数字の認識は可能と考えられ、このような設定も妨げられない。この場合でも、文字抽出部144における、出力すべき文字列の抽出には支障がない。
すなわち、読取装置100が文字候補図形と対比すべきデータを保持している文字(すなわち特定可能な文字)のうち、使用する出力フォーマット中の抽出文字列で規定される文字を全て含む一群の文字のみを特定することを、文字認識条件として設定すればよい。
【0059】
文字候補図形と対比すべき一群の文字は、数字や英字といった一般的に用いられる種類を用いて規定する他、1文字ずつ任意に文字を特定して設定可能である。「I」、「D」、「:」といった特定の文字を追加したり、逆に除外したりすることができる。英字の中でA~Cのみなど、範囲を用いて規定することもできる。
【0060】
また、使用する出力フォーマットが複数設定されている場合は、それらのいずれかに従って抽出される可能性がある文字を全て含むように、上記一群の文字の範囲を定める。
例えば、ID=3とID=5の出力フォーマットを用いる場合、ID=3の出力フォーマットに従って抽出され得る「I」、「D」、「:」、数字と、ID=5の出力フォーマットに従って抽出され得る英字及び数字との和集合である、英字と数字と「:」を全て含むように、上記一群の文字の範囲を定める。
【0061】
次に、
図4乃至
図7を用いて、以上説明してきた機能を実現するための処理について説明する。ここで説明する処理は、この発明の文字列読取方法の第1実施形態に係る処理である。
まず
図4に、読取装置100において文字読取モードがONになった場合にCPU121が実行する処理のフローチャートを示す。
【0062】
この処理において、CPU121はまず、使用する出力フォーマットが設定されているか否か判断する(S11)。過去の
図4の処理で出力フォーマットが設定されていれば、この判断はYesとなる。一方、設定されていなければ、CPU121は出力フォーマットの選択を受け付け、選択された出力フォーマットを取得して、その出力フォーマットを使用することを設定する(S12)。予め用意されている出力フォーマットだけでなく、新たに作成したものを設定できるようにしてもよい。
以上のステップS12の処理が、出力フォーマット取得手順の処理であり、出力フォーマット設定部147の機能と対応する。
【0063】
その後、CPU121は文字認識条件設定処理を実行し、使用する出力フォーマットに応じた文字認識条件を設定する(S13)。
この文字認識条件設定処理は、例えば
図5に示すものである。
【0064】
図5の処理ではCPU121はまず、使用する出力フォーマットのいずれかで抽出文字列に数字が規定されていれば(S31のYes)、特定すべき文字、すなわち文字列認識において文字候補図形と対比すべき文字に、数字を追加する(S32)。
図5の処理開始時点では、特定すべき文字は定められていないとする。
【0065】
以下、同様に、英字、記号、区切り文字のそれぞれについて、使用する出力フォーマットのいずれかで抽出文字列に規定されていれば、特定すべき文字にその文字種を追加する(S33~S38)。区切り文字は、ここでは「/」、「-」、スペースの3文字とするが、これに限られない。また、上述したように、文字の種類毎だけでなく1文字単位で、特定すべき文字に対する追加や削除を行えるようにしてもよい。
以上の後CPU121は、ステップS38までの処理により定められる、特定すべき文字を規定した文字認識条件を作成し、有効にして(S39)、元の処理に戻る。
以上の
図5の処理が、文字認識条件設定手順の処理であり、文字認識条件設定部148の機能と対応する。
【0066】
図4の説明に戻ると、ステップS13の後、またはステップS11でYesの場合、CPU121は、読取開始のトリガを検出するまで待機する(S14)。このトリガとしては例えば、オペレータによる操作部131の操作や、通信I/F124に接続された外部装置から送信される信号を用いることができる。
トリガを検出すると、CPU121は光学部110を制御して撮像を行い、画像データを取得する(S15)。ステップS15の処理は、画像取得手順の処理であり、撮像部141の機能と対応する。
【0067】
次に、CPU121はステップS15で取得した画像データに対し、文字列認識処理を行う(S16)。
この文字列認識処理は、例えば
図6に示すものである。
【0068】
図6の処理ではCPU121はまず、画像中で画素値が急激に変動するエッジを検出し、閉ループのエッジで囲まれた箇所を図形と認識する(S51)。ここで認識される図形には文字を構成するものも、そうでないものも含まれる。このステップS51の処理は、図形認識手順の処理であり、図形認識部142の機能と対応する。
次に、CPU121は概ね一定の高さで直線状に配列されている図形のグループを、画像の中央に近い位置から順に探索する(S52)。読み取りたい文字列は概ね一定の高さの文字が直線状に配列されたものであると想定されるので、このようなグループを構成する図形は、配列された文字を構成する図形の候補と考えられる。
【0069】
ここでいう高さとは、図形の配列方向と直交する方向である。また、例えば
図8Bに示す「i」や「:」のように、1文字が複数の図形で構成される場合には、小さいサイズの図形も文字を構成する可能性がある。従って、個々の図形の高さは領域の高さに近似している必要はないし、グループ内の全ての図形が直線状に並んでいる必要もない。
【0070】
また、中央に近い位置から順に探索するのは、読取装置100のオペレータは、読み取りたい文字列が撮像範囲の中央に来るように読取装置100や読取対象101を移動させて読み取りを実行することが通常と考えられるためである。中央に近い位置から順に探索することで、最初に検出して後述のように
図7の出力文字列抽出処理に進む文字列が、オペレータが読み取りたい文字列である可能性を高めることができる。しかし、中央に近い位置から探索することは必須ではない。逆に、ステップS51の図形の認識も、グループの探索と合わせて画像の中央に近い位置から順に行ってもよい。
【0071】
いずれにせよ、ステップS52の探索で新たなグループを検出すると(S53のYes)、ステップS54以下の処理に進む。
そして、CPU121はまず、検出したグループ内の未確定の図形を端から1つ選択して処理対象とする(S54)。文字の記載順と同じく、左書きが想定される場合には左端から選択すればよい。
【0072】
次に、CPU121は、処理対象の図形の特徴と、文字認識条件で規定される特定すべき文字の特徴とをそれぞれ比較する(S55)。この比較は、画像同士で行っても、画像から算出される特徴量同士で行ってもその両方でもよい。
そして、比較結果の一致率が、文字の特定に十分な値として定めた閾値を超えた文字があった場合(S56のYes)、CPU121は、処理対象の図形はその中で一致率が最も高かった文字であると認識し、図形と文字の対応関係及び一致率を記憶する(S57)。
【0073】
一方、ステップS56でNoの場合、処理対象の図形を文字と認識することはできない。この場合、CPU121は、グループ内の次の図形を処理対象の図形に結合すると、処理対象の図形全体の幅が規定値を超えるか否か判断する(S58)。規定値は、例えば、標準的な文字が取り得る上限の縦横比を、領域の高さに乗じて求めることができる。
ステップS58でNoの場合、現在の処理対象の図形を次の図形と結合させても文字候補となり得ることから、それらを結合させて次の処理対象とし(S59)、ステップS55に戻って処理を繰り返す。
【0074】
ステップS58でYesの場合、処理対象の図形を次の図形と結合させると文字ではなくなってしまうと考えられることから、結合をせずに処理対象の図形の取り扱いを決定すべく、処理対象の図形の高さが所定範囲内か否か判断する(S60)。この所定範囲は、例えば、領域中の高さに対する文字の高さの比率として標準的な文字が取り得る値を、領域の高さに乗じて求めることができる。また、領域内での図形の高さ方向の位置を合わせて考慮してもよい。「・」など、高さの極めて小さい文字もあり得るためである。
【0075】
ステップS60でYesである場合、CPU121は、処理対象の図形はどの文字であるかを特定できないだけで何らかの文字であると判断し、処理対象の図形は不定の文字であると認識する(S61)。文字認識条件により特定すべき文字を絞っているので、特定できない文字があることは当然に想定される。また、そもそも読取装置100に登録されていない文字も、特定することができない文字となる。
【0076】
一方、ステップS60でNoである場合、CPU121は、処理対象の図形は文字でないと判断し、そのように認識する(S62)。
以上のステップS57、S61、S62の何れかの処理により、処理対象の図形に関する処理が完了するので、処理はステップS63に進み、グループ内に次の図形がある限りは(S63のYes)、ステップS54に戻って処理を繰り返す。
【0077】
ステップS63でNoとなると、CPU121は、ここまでに認識した各文字を配置順に繋げて、ステップS53で検出したグループと対応する文字列として認識する。また、文字列内の文字間に、認識できた文字と同程度の幅の空白がある場合、その空白を空白文字(スペース)として認識する(S64)。nを自然数として、文字のn倍程度の幅の空白をn個の空白文字として認識してもよい。
ステップS64の後は、すなわち、画像中に文字列を1つ認識すると、文字列認識処理は一旦終了し、元の処理に戻る。
ステップS52の探索で新たなグループが検出できない場合、ステップS53の判断がNoとなる。所定時間、所定試行回数等を基準とすればよい。この場合も、文字列認識処理は終了し、元の処理に戻る。
ステップS52乃至S64の処理は、文字列認識手順の処理であり、文字列認識部143の機能と対応する。この処理は、文字候補特定手順と文字特定手順の処理を含むものである。
【0078】
図4の説明に戻ると、ステップS16の後CPU121は、ステップS16で新たな文字列を認識していれば(S17のYes)、認識した文字列を処理対象として、出力文字列抽出処理を行う(S18)。
この出力文字列抽出処理は、例えば
図7に示すものである。
【0079】
図7の処理ではCPU121はまず、ステップS12で設定されている各出力フォーマットにつき、ステップS16で新たに認識された文字列(第1文字列)の中で、設定されている各出力フォーマットが規定する抽出文字列の条件の少なくとも1つに合致する箇所を全て検出し、出力文字列(第2文字列)の候補リストに入れる(S81)。このとき、処理対象の文字列中に条件に合致する箇所がない場合には、候補は1つも検出されない。逆に、複数の箇所が検出されることもある。また、候補リストには、条件に合致した箇所の文字列と対応付けてどの出力フォーマットの条件に合致したかの情報も登録しておき、ステップS89で出力する。
【0080】
ステップS81で検出した候補リストの要素が1つだけであれば(S82のYes)、CPU121は該当の1つの候補を出力文字列として採用し(S89)、出力文字列抽出処理を終了して元の処理に戻る。必須ではないが、想定通りの読み取りが行われた場合にステップS82がYesになるように出力フォーマットを設定することが、誤読防止の観点からは好ましい。
【0081】
一方、ステップS82でNoの場合、CPU121は、候補リストから、文字数が最大でない要素を除外する(S83)。逆に言えば、文字数が最大の要素のみを候補リストに残す。そして、候補リストに残った要素が1つだけであれば(S84のYes)、CPU121は該当の1つの候補を出力文字列として採用し(S89)、元の処理に戻る。
【0082】
ステップS83及びS84の処理により、複数の出力フォーマットについてそれぞれ該出力フォーマットと合致する箇所があったとしても、最も長い範囲で第1文字列と一致する出力フォーマットと合致する出力文字列として抽出することができる。
長い範囲で第1文字列と合致する出力フォーマットは、短い範囲で合致する出力フォーマットに比べ、誤読が原因で誤って合致している可能性が低いと考えられるし、出力文字列の候補となる箇所も少ないと考えられるので、優先的に採用することで、オペレータが実際に読み取りたい箇所を出力文字列として適切に抽出できると考えられる。
【0083】
一方、ステップS84でNoになるのは、文字数が同じ要素が複数あり、文字数ではこれらを区別できない場合である。典型的には、第1文字列中に、抽出文字列の文字数が最大の出力フォーマットと合致する箇所が複数箇所あった場合である。
ステップS84でNoになると、CPU121は、候補リストから、文字列中の文字の配列方向で見て、画像の中央を含まない要素を除外する(S85)。逆に言えば、画像の中央を含む要素のみを候補リストに残す。そして、候補リストに残った要素が1つだけであれば(S86のYes)、CPU121は該当の1つの候補を出力文字列として採用し(S89)、元の処理に戻る。このことで、第1文字列中に出力フォーマットと合致する箇所が複数あった場合に、画像の中央に近い箇所を出力文字列として抽出することができる。
【0084】
ステップS85では、例えば文字が水平方向に配列されている場合、水平方向で見て文字列が画像の中央の位置を含んでいれば、垂直方向では画像の中央の位置を含んでいなくても、「中央を含む」と判断する。
オペレータが読み取り対象の文字列102を撮像する場合、実際に読み取りたい箇所が撮像範囲の中央に来るように撮像することが想定されるので、画像の中央に近い箇所の候補を優先的に採用することで、見切り等で生じた意図しない一致箇所ではなく、実際に読み取りたい箇所を出力文字列として適切に抽出できると考えられる。画像全体で中央に近い文字列を優先することは
図6のステップS52で考慮しているので、S85では文字の配列方向の位置のみを考慮すれば足りる。
【0085】
一方、ステップS86でNoになるのは、画像の中央を含む要素が複数あり、文字数でも中央か否かでもこれらを区別できない場合である。典型的には、例えば抽出文字列が数字4文字であるのに対し、認識された文字列中に「12345」のように数字5文字が連続する箇所が含まれ、このうち「1234」と「2345」のように少し(この例では1文字)ずれた複数の箇所が検出され、そのいずれもが画像の中央を含む場合である。この場合、どちらの箇所がより中央に近いかを数値上区別することはできるが、このような微妙な違いがオペレータの意図を反映しているとは限らない。そこで、
図7の処理では、「中央を含む」の基準で区別できない場合には、位置以外の基準での区別を試みている。
【0086】
ステップS86でNoになると、CPU121は、候補リストから、文字列認識時の一致率が最大でない要素を除外する(S87)。逆に言えば、一致率が最大の要素のみを候補リストに残す。そして、候補リストに残った要素が1つだけであれば(S88のYes)、CPU121は該当の1つの候補を出力文字列として採用し(S89)、元の処理に戻る。このことで、第1文字列中に出力フォーマットと合致する箇所が複数あった場合に、一致率が最も高かった箇所を出力文字列として抽出することができる。
【0087】
要素に複数の文字が含まれる場合、要素全体の一致率は、それら複数の文字に関する値に基づき、平均値、最大値など、適宜な手法で定めればよい。また、一致率の大小を比べる場合、所定誤差範囲内は一致とみなしたり、値をクラス分けした上で同クラスに属する要素は一致率が同じとみなしたりしてもよい。
一般に、誤読が発生した箇所では一致率が低くなると考えらえるため、このように一致率が高い候補を優先的に採用することで、誤読の発生により出力フォーマットと対応する箇所が想定外に複数生じてしまっているケースでも、文字が正しく認識された箇所を出力文字列として抽出できると考えられる。
【0088】
ステップS88でもNoとなるのは、文字数、画像中の位置及び一致率のいずれによっても区別できない要素が複数ある場合である。この場合、妥当な出力文字列を一意に特定できないため、抽出エラーを返して(S90)、元の処理に戻る。
なお、ステップS81で検出された候補がゼロである場合も、ステップS82、S84、S86、及びS88の判断は全てNoとなる。この場合も、ステップS90で抽出エラーを返して元の処理に戻ればよい。この場合の抽出エラーは、複数の要素(候補)が区別できなかった場合と別のエラーとしてもよい。
以上の
図7の処理が、文字列取得手順の処理であり、文字抽出部144の機能と対応する。
【0089】
図4の説明に戻ると、ステップS18の後CPU121は、出力文字列抽出処理での抽出が成功したか否か判断する(S19)。この判断は、抽出エラーの場合にNoとなり、出力文字列が採用できていればYesとなる。
ステップS19でNoの場合、処理はステップS16に戻り、再度文字列認識処理を行う。このとき、それまでに行ったステップS51の図形認識の結果やステップS52の探索の履歴は適宜活用する。この処理で新たな文字列が認識されれば、ステップS17がYesとなるのでその文字列を処理対象としてステップS18の出力文字列抽出処理を再度実行する。
一方、ステップS17でNoであれば、ステップS15に戻り再度撮像からやり直す。所定のリトライ回数を超えた場合には、読み取りエラーを返してステップS14に戻ってもよい。
【0090】
ステップS19でYesの場合、CPU121は、
図7の処理で採用した出力文字列を、対応する出力フォーマット中の加工後出力文字列の規定に従い必要に応じて加工する(S20)。この処理は加工手順の処理であり、文字加工部145の機能と対応する。
そして、CPU121は、加工後の出力文字列のデータを出力して(S21)、1回の読み取りに係る処理を終了し、ステップS14に戻って処理を繰り返す。ステップS21の処理は出力手順の処理であり、出力部146の機能と対応する。
【0091】
次に、
図8A乃至
図9Cを用いて第1実施形態の効果について説明する。
まず一例として、
図8Aに示すような、「id:」の文字に続けて数字4桁の番号(
図8Aの例では「1234」)が文字列21として印刷された読取対象物から、数字4桁の番号を読み取る場合を考える。
【0092】
この場合、文字列21を撮像した画像に対して
図6のステップS51のように図形認識を行うと、正しく認識された場合、各文字の輪郭で構成される
図8Bに示すような図形グループ22が検出される。この図形グループ22は
図8Cに示すように概ね高さhの領域内において直線状に配列された図形により構成されるものであり、図形グループ22は
図6のステップS52の探索で検出される。
そして、この図形グループ22に対して
図6のステップS54乃至S64の処理により文字列認識を行うことで、文字列21を構成する各文字及びそれらにより構成される文字列を認識することができる。しかし、この時用いる文字認識条件により、実際に認識される文字列は異なる。
【0093】
図8Cは、英字と数字を特定する旨の文字認識条件を用いた場合の認識例である。
文字認識処理において、左端の「i」を構成する2つの図形(点と棒)はステップS59で結合されて1つの文字候補図形(ステップS55での処理対象)23aとなり、「:」を構成する2つの図形(2つの点)も同様に結合されて1つの文字候補図形23bとなる。「d」や「4」も、外側の輪郭に囲まれる図形と内側の輪郭に囲まれる図形は別の図形だが、ここでは1つの文字候補図形として認識する。
【0094】
あるいは、他の図形(輪郭)の内部に包含される別の図形があった場合に、先に外側の図形のみを処理対象として
図6のステップS55で文字の特徴と比較し、その結果一致率が閾値以上(かつ最大)になった文字があれば、その時点で、外側の図形と内側の図形の双方を、当該文字を構成する図形として確定させてしまうことも考えられる。また、外側の図形と内側の図形の組を再度文字の特徴と比較し、その結果により一致率(及び文字との対応関係)を更新することも考えられる。
【0095】
いずれにせよ、英字と数字は
図6のステップS56で正解の文字との一致率が閾値を超えると考えられるので、「i」、「d」、「1」、「2」、「3」、「4」の文字は正しく特定される。
図8Cにはこの時の一致率の値の一例も示している。一方、「:」はステップS55で比較する文字に含まれないことから、ステップS56はNoとなり、最終的にステップS61で不定の文字であると認識される。
図8Cでは不定の文字は「?」で示している。従って、文字列21は、「id?1234」の文字列と認識される。
【0096】
一方、
図8Dは、数字を特定する旨の文字認識条件を用いた場合の認識例である。
この場合、「1」、「2」、「3」、「4」の文字は正しく特定されるが、「:」に加え「i」と「d」も、ステップS55で比較する文字に含まれないことから、不定の文字として認識される。従って、文字列21は、「???1234」の文字列と認識される。
【0097】
ここで、読み取りたい文字列は数字4桁であることから、出力フォーマットは
図3に示したID=1のものを用いることができる。
そうすると、
図8Cと
図8Dのいずれの場合も、認識された文字列中に出力フォーマットの抽出文字列と合致する箇所は「1234」の1箇所のみであるから、これを出力文字列として抽出し、出力することができる。もちろん、記号まで特定することとしても同様である。
【0098】
しかし、設定された出力フォーマットから、実際の読み取りたい文字は数字のみであることがわかるので、文字認識条件として数字のみを特定することを設定しておけば、文字認識処理における、特にステップS55の処理負荷を低減し、より少ない負荷で、文字認識を行うことができる。
また、撮像条件によっては、撮像時のブレや白飛び、影の映り込み等により、実際の文字列21とやや異なる画像が撮像され、図形認識の結果も実際の文字とやや異なる形状となる場合もある。
【0099】
図8E及び
図8Fは、符号23dで示すように、「1」の文字が実際とやや異なる形状の図形として認識された場合の例である。この形状は、「1」よりもむしろ英字の「I」の文字に近い(一致率が高い)とする。
この場合、英字と数字を特定する旨の文字認識条件が設定されていると、
図8Eに示すように「1」の文字が「I」と認識されてしまう。そうすると、文字列21は、「id?I234」と認識され、出力フォーマットの出力文字列と合致する箇所がないことになる。
【0100】
一方、数字を特定する旨の文字認識条件が設定されていると、「I」との比較は行わないため、「1」との一致率が最大となると考えられる。この一致率がステップS56の閾値を超える程度であれば、
図8Fに示すように「1」が正しく認識されることになり、
図8Cや
図8Dの場合と同様に、「1234」を抽出して出力することができる。
【0101】
このように、文字認識条件を設定し、出力フォーマットに基づき特定の文字であると識別する必要がある文字に絞って図形との対比を行うことで、撮像条件が理想的でない場合でも、出力すべき文字を正しく認識し、実質的な文字認識の精度を上げることができる。
なお、対比する文字を数字に絞ることで、
図8Eのケースと逆に、例えば「i」を「1」と誤認識する可能性が多少上がることも考えられる。しかし、
図8A乃至
図8Fの例では、この誤認識が起こり、「1d?1234」の文字列が認識されたとしても、出力される文字列に影響はない。
こういった誤認識が問題になりそうなケースでは、後述する第2乃至第4実施形態の誤認識の可能性報知の機能と組み合わせることで、誤認識による利便性低下を抑えつつ、精度向上や処理負荷低減の効果を享受できる。
【0102】
また、数字4桁が単独で印刷されている箇所と区別して文字列21中の数字4桁を読み取りたい場合、
図3のID=2の出力フォーマットを用いることもできる。この場合、
図8D及び
図8Fのように文字列21が「???1234」と認識されると、その全体が抽出文字列と整合し、出力文字列として抽出される。そして、加工後出力文字列に沿って数字4文字の「1234」の部分のみの文字列に加工して出力することができる。
【0103】
単に「1234」のみの文字列を読み取っても、不定の文字列がないため抽出文字列と整合しないので、出力文字列として抽出されることはない。
このように、英字や記号を特定の文字として認識しない場合でも、不定の文字として認識することで、英字や記号の存在を前提とした抽出が可能となる。
【0104】
なお、「i」や「:」の文字は誤認識が発生しやすく、正しく「不定の文字」として認識されない可能性もある。このことを考慮し、抽出文字列を、「任意の1文字+不定の文字1~2文字+数字4文字」といったように規定することも考えられる。「任意の1文字」は、不定の文字でも特定の文字(例えば「1」)でもよい、という意味である。「不定の文字1~2文字」は、「:」が認識されず、文字列21が「1?1234」のように認識されるケースを考慮したものである。
【0105】
次に、
図9Aのように読取対象101上に2段で記載された文字列を両方読み取りたい場合を考える。上段は英字3文字+数字4文字で、下段は数字4文字のみである。この場合、抽出文字列が「英字3文字+数字4文字」と規定されている出力フォーマット(フォーマットA1)と「数字4文字」と規定されている出力フォーマット(フォーマットA2)を設定しておき、上段と下段の文字列に順次照準を合わせてそれぞれ読取開始トリガを与えることで、上段と下段の文字列をそれぞれ読みとることができる。
【0106】
例えば、下段の文字列を読み取りたい場合、符号21の位置付近が撮像範囲の中央に来る状態で読み取りを行うことが通常と考えられる。そうすると、
図6のステップS52で下段の文字列に該当する図形のグループがまず抽出され、ステップS54以降で認識された「5678」の文字列を先に処理対象として、
図7の処理を行う。そうすると、フォーマットA1,A2の双方が有効であり、認識された文字列をステップS81でこれら双方と対比したとしても、出力文字列の候補リストに入るのは符号22で示す「5678」の1つのみであるので、これが出力文字列として採用される。
【0107】
一方、上段の文字列を読み取りたい場合、符号23の位置付近が撮像範囲の中央に来る状態で読み取りを行うことが通常と考えられる。そうすると、
図6のステップS52で上端の文字列に該当する図形のグループがまず抽出され、ステップS54以降で認識された「ABC1234」の文字列を先に処理対象として、
図7の処理を行う。出力文字列の候補リストには、フォーマットA1と対応する符号24の「ABC1234」とフォーマットA2と対応する符号25の「1234」の2つが入る。しかし、ステップS83の処理で「1234」が除外されて候補が1つとなるので、「ABC1234」が出力文字列として採用される。
このように、
図7のステップS82の処理を行うことで、複数の出力フォーマットに当てはまってしまうような文字列があった場合でも、オペレータの意図に合った読み取りを適切に行うことができる。
【0108】
次に、
図9Bのように一行に記載された文字列の一部分のみを読み取りたい場合を考える。この文字列は英字3文字+数字4文字だが、そのうち数字4文字の部分を読み取りたいとする。この場合、抽出文字列が「数字4文字」と規定されている出力フォーマット(フォーマットB)を設定しておけばよい。
また、符号26で示すような文字列全体の中心付近や、符号27で示すような読み取りたい箇所の中心付近が撮像範囲の中央に来る状態で読み取りを行うことが通常と考えられる。
【0109】
そうすると、
図6のステップS52で文字列全体に該当する図形のグループが抽出される。ステップS54以降で正しく文字が認識されたとすると、「ABC1234」の文字列を処理対象として、
図7の処理を行う。そして、フォーマットBに該当して出力文字列の候補リストに入るのは、符号28で示す「1234」の1つのみであるので、これが出力文字列として採用される。
【0110】
一方、例えば
図6の文字列認識処理において、
図9Bに破線で示すように「C」の開口部が繋がって撮影され、「C」の文字が「0」と誤認識されたとする。そうすると、
図7の処理の対象となるのは「AB01234」の文字列であり、出力文字列の候補リストには、符号28で示す「1234」の他、符号29で示す「0123」も入ることになる。
これらは文字数が等しいためステップS83では双方残るし、画像の中央が符号26と27のいずれであっても、文字列中に画像の中央を含むのでステップS85でも双方残る。しかし、「0123」中の「0」は誤認識のため一致率が低いと考えられ、ステップS87では「0123」が除外されて、符号28で示す「1234」のみが候補リストに残り、出力文字列として採用されることになる。
【0111】
このように、
図7のステップS87の処理を行うことで、誤読により意図せず出力フォーマットに当てはまってしまう箇所が生じた場合でも、その箇所が出力文字列として採用される可能性を下げ、オペレータの意図に合った読み取りを高頻度で行うことが期待できる。
【0112】
次に、
図9Cのように一行に記載された文字列の一部分のみを読み取りたい場合を考える。この文字列は英字3文字+数字3文字+ハイフン+数字4文字だが、そのうち末尾の数字4文字の部分を読み取りたいとする。この場合も、抽出文字列が「数字4文字」のフォーマットBを設定しておけばよい。
この場合には、読み取りたい箇所に比して記載された文字列が長いため、符号31で示すような読み取りたい箇所の中心付近が撮像範囲の中央に来る状態で読み取りを行うことが通常と考えられる。
【0113】
この場合でも、
図6のステップS52では文字列全体に該当する図形のグループが抽出され、文字列全体を処理対象として、
図7の処理を行う。そして、文字列が正しく認識されれば、フォーマットBに該当して出力文字列の候補リストに入るのは符号32で示す「4567」の1つのみであるので、これが出力文字列として採用される。
【0114】
一方、
図9Bの場合と同様に「C」の文字が「0」と誤認識されたとすると、出力文字列の候補リストには、符号32で示す「4567」の他、符号33で示す「0123」も入ることになる。
これらは文字数が等しいためステップS83では双方残るが、「0123」は文字列中に画像の中央を含まないのでステップS85で除外され、符号32で示す「4567」のみが候補リストに残り、出力文字列として採用されると考えられる。
このように、
図7のステップS85の処理を行うことでも、誤読により意図せず出力フォーマットに当てはまってしまう箇所が出力文字列として採用される可能性を下げ、オペレータの意図に合った読み取りを高頻度で行うことが期待できる。
【0115】
なお、
図7の処理において、出力文字列を採用するに当たり、文字数、一致率、画像中の位置の3つの要素を考慮しているが、このうち一部を考慮するのみでも、そのことによる効果を得ることができる。また、各要素を考慮する順序は、
図7に示した順が好ましいが、異なる順序としてもよい。
【0116】
〔第2実施形態:
図10乃至
図14B〕
次に、この発明の第2実施形態について説明する。
第2実施形態の読取装置100は、文字認識条件を使用しない点と、出力文字列抽出処理で抽出した文字列の文字数(桁数)が報知基準文字数未満である場合に誤読の可能性を報知するようにした点が第1実施形態と異なる。その他の点は第1実施形態と共通であるので、相違点に関連する事項について説明し、共通箇所の説明は適宜に省略する。また、第2実施形態の説明において、第1実施形態の構成と共通の又は対応する箇所には第1実施形態と共通の符号を用いる。この点は第3実施形態以降も同様である。
【0117】
まず、第2実施形態の読取装置100が備える文字列102の読み取りに関連する機能について説明する。
図10は、その機能の構成を示す、
図2と対応する機能ブロック図である。
図10に示すように、第2実施形態の読取装置100は、
図2の文字認識条件設定部148に代えて、基準文字数設定部151、文字数判定部152、報知部153を備える。また、文字列認識部143は、文字認識条件を用いずに文字列認識を行うが、この点については
図12を用いて後述する。
【0118】
基準文字数設定部151は、使用する旨が設定されている出力フォーマットに基づき、誤読可能性の報知を行うか否かの基準とする報知基準文字数を設定する機能を備える。
文字数判定部152は、文字抽出部144が抽出した出力文字列の文字数を取得し、これが設定されている報知基準文字数未満である場合に、報知部153に対して誤読可能性の報知を指示する機能を備える。
報知部153は、文字数判定部152からの指示に基づき通知部132を制御して、光や音、メッセージやマークの表示等の任意の手段により、今回の読み取りにおいて文字列の誤読が発生した可能性がある旨を、読取装置100のオペレータに報知する機能を備える。この報知は、出力部146による文字列の出力あるいは読み取り成功の報知と同期して行うとよい。
【0119】
次に、
図11及び
図12を用いて、以上説明してきた機能を実現するための処理について説明する。ここで説明する処理は、この発明の文字列読取方法の第2実施形態に係る処理である。
まず
図11に、読取装置100において文字読取モードがONになった場合にCPU121が実行する、
図4と対応する処理のフローチャートを示す。
【0120】
図11の処理は、ステップS12の後にステップS13が無い点と、ステップS16に代えてステップS16′を実行する点と、ステップS19でYesの場合にステップS20の前にステップS101乃至S103を実行する点が、
図4と異なるのみである。
まず、ステップS13が無い点は、文字認識条件を用いないことと対応する。
【0121】
ステップS16′の文字列認識処理は
図12に示すものであるが、この処理は
図6の処理とほぼ共通であり、ステップS55に代えてステップS55′を実行する点が異なるのみである。その相違も、文字認識条件を考慮しない点が異なるのみである。ステップS55′では、処理対象の図形の特徴と、特定すべき各文字の特徴とをそれぞれ比較する。
特定すべき文字は、例えば、読取装置100がデータを持っている文字全てである。しかし、常に全ての文字と比較することまでは必須ではなく、オペレータの設定により、特定すべき文字を一部に限ることも妨げられない。文字認識条件を考慮しないため、使用する出力フォーマットに応じて特定すべき文字を動的に定める必要がないだけである。
【0122】
また、
図11の処理で、ステップS19でYesの場合、CPU121は、ステップS18の出力文字列抽出処理で使用した各出力フォーマットが規定する抽出文字列の文字数に基づき報知基準文字数を設定する(S101)。ステップS101の処理は、設定手順の処理であり、基準文字数設定部151の機能と対応する。
【0123】
次に、CPU121は、出力文字抽出処理で報知基準文字数未満の文字列を抽出した場合には(S102のYes)、通知部132を制御してオペレータへ誤読の可能性がある旨を報知する(S103)。ステップS102及びS103の処理は報知手順の処理であり、文字数判定部152及び報知部153の機能と対応する。
その後、処理はステップS20に進む。ステップS102でNoであれば、報知は行わずにステップS20へ進む。
【0124】
以上の処理により行う誤読可能性の報知は、基本的には、複数の出力フォーマットを使用する場合を想定し、抽出文字列の文字数が少ない方の出力フォーマットに従った出力が行われた場合に、誤読により想定していない位置の文字列が出力された可能性を報知するものである。しかし、報知基準文字数の設定により、より複雑な条件での報知も可能である。次に、
図13A乃至
図14B及び表1乃至表3を参照しつつ、この点について説明する。
【0125】
まず一例として、抽出文字列が「英字3文字+数字3文字」のフォーマットCと、「数字4文字」のフォーマットDの2つの出力フォーマットを使用する場合を考える。
このとき、
図13Aに示すように画像の撮像範囲40内に配列された文字列「ABC123」を撮像し、その画像が正しく文字列認識された場合、その全体の文字列41がフォーマットCに合致し、出力文字列として抽出される。また、フォーマットDに合致する出力文字列は存在しない。
【0126】
他方、
図13Bに破線で示すように「C」の開口部が繋がって撮影され、これが「0」と誤認識されたとすると、文字列は「AB0123」と認識される。そうすると、フォーマットCに合致する出力文字列はなく、破線で示す文字列42がフォーマットDに合致する。従って、誤読が起こったために、本来無いはずの、フォーマットDに合致する文字列が出力されてしまうことになる。
しかし、例えば「1234」といった文字列を読み取った場合には、フォーマットDに合致する文字列を出力することが通常であり、フォーマットDに合致する文字列が出力されたこと自体を異常と捉えることはできない。
【0127】
そこで、第2実施形態においては、フォーマットD(の抽出文字列)に合致する出力文字列を抽出した場合に、誤読が発生した可能性をオペレータに報知し、オペレータが、実際に読み取った文字列102と、出力された読取結果とを対比して、読み取りが正しく行われたかを確認できるようにしている。オペレータが誤読に気づけば、オペレータは容易に再度の読み取りを行ったり、読取装置100や出力先のデータ処理装置を操作して読み取り結果を修正したりすることができる。
【0128】
上述のフォーマットDのようなケースは、典型的には、複数の出力フォーマットを使用する場合であって、抽出文字列の文字数が少ない方の出力フォーマットに従った出力が行われた場合に発生し得る。文字数が多い方の出力フォーマットに従った出力が行われた場合でも、誤読が全く起こっていないとまでは言えないが、頻度は低いと考えらえる。例えば、数字4文字を読もうとしているにも関わらず、「AB0123」のように当該4文字以外の文字が含まれる文字列を読み取り、かつ、「0」を「C」と誤読するようなケースに限られるためである。
【0129】
そこで、この実施形態では、抽出された出力文字列の文字数に注目し、この文字数が、報知基準文字数未満である場合に誤読の可能性を報知するようにしている。報知基準文字数は、使用する各出力フォーマットの抽出文字列の中で最も長いものの文字数(上記の例ではフォーマットCの6文字)とすればよい。
この基準で報知を行うと、例えば「1234」といった文字列を読み取ってフォーマットDに合致する文字列が正常に出力される場合でも誤読の可能性を報知することになる。しかし、例えば手持ちタイプの読取装置100の場合には、オペレータが報知に応じて実際の文字列102と読み取り結果とを対比して確認することは容易であり、正常出力の場合に誤読の可能性を報知してしまうことは、大きな問題とはならない。それよりも、報知に応じて誤読を発見し、これを修正できることの方が重要である。
【0130】
ここまでの説明では、出力フォーマットにおける抽出文字列の長さが固定である例を扱ったが、抽出文字列の長さは可変の場合もある。例えば、「数字4~6文字」といった抽出文字列を規定することもできる。
この場合は、使用する出力フォーマットが1つだけであっても、誤読の可能性を報知すべき場合がある。例えば、「12345」といった数字5文字の文字列を認識し、これが出力フォーマットに合致するとして出力した場合であっても、実際には読みとろうとした文字列は「123456」であり、このうち「6」が見切れていた、というケースも考えられる。
【0131】
従って、最大文字数である6文字よりも短い文字列が出力フォーマット(の抽出文字列)に合致し、出力文字列として採用、抽出された場合には、上述のフォーマットDの場合と同様な考え方により、誤読の可能性を報知することが好ましい。
従って、抽出文字列の長さが可変の場合、抽出文字列の最大長を報知基準文字数として、
図11の処理を行うとよい。
また、例えば正しい読み取りで出力文字列が5文字になることが頻繁にあり、4文字の場合のみ報知を行うことが好ましい場合もある。この場合、報知基準文字数を、最大長そのものでなく、それよりも短い値の5文字に設定してもよい。
【0132】
また、
図3のID=8の出力フォーマット(日付フォーマット)のように、抽出文字列が複数の区間に区切られている場合、その区間ごとに報知基準文字数を定めることができるようにしてもよい。この場合、
図11のステップS102の判断において、出力文字列と報知基準文字数との比較は当該区間ごとに行い、少なくとも1つの区間で、出力文字列の文字数が報知基準文字数未満であった場合に、判断結果をYesとするとよい。
【0133】
例えば、
図3の日付フォーマットでは、抽出文字列全体の最長文字数は、「YYYY/MM/DD」等の場合の10文字である。しかし、区切り文字「/」で区切られた区間ごとにみると、一番左の年の区間は4文字、真ん中の月の区間は2文字、一番右の日の区間は2文字である。これらをそのまま区間ごとの報知基準文字数とすることもできる。
しかし、年については、「YY」との表記が想定されていることもあり、4桁の内下2桁のみ読み取れれば上2桁が見切れていても問題ないケースが多いと考えられる。従って、年の区間は2文字を報知基準文字数とすることも考えられる。そして、単純に年の箇所を2文字として抽出文字列全体の最長文字数を考えると、8文字となる。しかし、全体として8文字の出力文字列が抽出された場合、誤読の可能性を報知したいケースもある。
【0134】
例えば、文字列認識処理で、
図14A及び
図14Bに示すような文字列43や文字列44を認識した場合である。スペースを□で表すと、文字列43は「2020□1□2」、文字列44は「2020□12」である。少なくとも文字列43は日付フォーマットに合致し、日のDDが0文字であることを許容すれば、文字列44も合致する。
他方、区切り文字がスペースの場合、文字列を撮像する角度によっては、スペースの有無や数を正確に認識することが難しい場合もある。従って、文字列43や文字列44を認識した場合、実際の文字列がどちらであるのか判断がつきにくい。すなわち、誤読の可能性があり、報知したい。
【0135】
しかし、文字列43の文字数は8文字であるので、上述のように抽出文字列全体で報知基準文字数を8文字と設定してあると、誤読可能性を報知しないことになる。
これに対し、区間ごとに報知基準文字数を2文字/2文字/2文字のように設定すれば、文字列43と文字列44のいずれの場合も、誤読可能性を報知できる。文字列43では、月と日が各1文字であり、文字列44は日が0文字であり、それぞれ該当区間の報知基準文字数未満であるためである。
【0136】
このように、報知基準文字数を抽出文字列の区間ごとに定められるようにすることで、より柔軟に誤読可能性の報知の有無を制御することができる。
また、以下の表1乃至表3に示すように、抽出文字列が、複数の区間においてそれぞれ可変の文字数を取る出力フォーマットもあり得る。また、区間の数が異なる出力フォーマットを同時に使用する場合もあり得る。以下、これらの場合に考えられる報知基準文字数の定め方について説明する。
【0137】
【0138】
表1に記載の出力フォーマットNo.1とNo.2を使用する場合、「-」を区切り文字とすると、各区間の最大文字数は、表の2行目に記載の通りである。報知基準文字数例#1は、単純に区間毎に各出力フォーマットの中で最大の文字数を採ったものである。No.1の3つ目の区間は存在しないため0文字としている。
【0139】
しかし、この報知基準文字数に従って誤読可能性を報知すると、No.2の出力フォーマットに合致する最大文字数の文字列を読み取った場合以外は、常に報知を行うことになり、報知が頻繁すぎると考えられる。一方で、3番目の区間に文字がある出力フォーマットが1つだけの場合、オペレータは、3番目の区間に文字がある文字列を読み取る場合、正常に読取ができたか通常よりも注意を払うと考えられるし、読み取り結果における3番目の区間の文字数には特に注意を払うと考えられる。
【0140】
そこで、3番目の、すなわち、1つの出力フォーマットのみが文字を規定する区間については、報知基準文字数を定めなくてもよい。報知基準文字数例#2がこの例である。この場合、3番目の区間については、
図11のステップS102の判断を行わず、3番目の区間の文字数が少ないことをトリガとする誤読可能性の報知は行わない。
このようにすることで、誤読可能性の報知頻度をリーズナブルな範囲に留めることができる。
【0141】
【0142】
表2のケースでは、3番目の区間に各出力フォーマットの中で最大の文字数を採って4文字の報知基準文字数を定めると、No.1又はNo.2の出力フォーマットに従ってどのような出力文字列を抽出した場合でも、誤読可能性を報知することになってしまう。そこで、表2のケースでは、3番目の、すなわち、1つの出力フォーマットのみが文字を規定する区間に報知基準文字数を定めないことの妥当性が、表1のケースよりも高い。
【0143】
【0144】
表3のケースでは、全ての区間において、複数の出力フォーマットが文字を規定する。従ってこの場合は、全ての区間において、各出力フォーマットの中で最大の文字数を採って報知基準文字数を定めることが好ましい。このようにすると、表3のケースでは、No.1乃至No.3のいずれかの出力フォーマットに従ってどのような出力文字列を抽出した場合でも誤読の可能性を報知することになる。しかし、表3のような出力フォーマットの設定は、それだけ誤読が発生しやすいものであり、これを適切に反映した報知を行っていると捉えることができる。
【0145】
以上のように、この実施形態の読取装置100は、文字抽出部144が抽出した出力文字列が、報知基準文字数未満である場合に誤読の可能性を報知するようにしたことで、簡単な処理により、適切な頻度で誤読の可能性をオペレータに報知することができる。
【0146】
〔第3実施形態:
図15乃至
図19D〕
次に、この発明の第3実施形態について説明する。
第3実施形態の読取装置100は、文字認識条件を使用しない点と、文字列認識で認識した文字列の内部又は近傍に文字を構成しない図形がある場合に誤読の可能性を報知するようにした点とが第1実施形態と異なる。その他の点は第1実施形態と共通であるので、相違点に関連する事項について説明し、共通箇所の説明は適宜に省略する。
【0147】
まず、第3実施形態の読取装置100が備える文字列102の読み取りに関連する機能について説明する。
図15は、その機能の構成を示す、
図2と対応する機能ブロック図である。
図15に示すように、第3実施形態の読取装置100は、
図2の文字認識条件設定部148に代えて、図形位置判定部161及び報知部162を備える。また、文字列認識部143は、文字認識条件を用いずに文字列認識を行うが、この点は第2実施形態と同様である。
【0148】
図形位置判定部161は、図形認識部142が認識した図形、文字列認識部143が認識した文字列(第1文字列)及び、文字抽出部144が第1文字列から抽出した出力文字列(第2文字列)の情報を取得し、これらの情報に基づき、第2文字列の内部又は近傍に、文字を構成しない図形があると判断した場合に、報知部162に対して誤読可能性の報知を指示する機能を備える。
報知部162の機能は、第2実施形態の報知部153と同様である。
【0149】
ここで、文字を構成しない図形とは例えば、
図6の文字列認識処理において、ステップS53で検出されたグループに含まれないか、またはステップS62で文字ではないと認識された図形である。ステップS51で認識された図形のうち、ステップS57又はS61で特定の文字又は不定の文字であると認識されなかった図形と言ってもよい。
【0150】
図16A乃至
図16Dに、このような、文字を構成しない図形の例を示す。
図16A乃至
図16Dのいずれも、撮像部141が撮像した画像50内に、文字列認識処理により文字列53が認識され、これがそのまま出力文字列としても抽出された例である。文字列53を構成する具体的な文字は、図によって異なる。文字列53の中で、図形により構成される個別の文字51は、符号を付していないものも含め実線で囲んで示している。文字間のスペースに認識される空白文字52は、破線で示している。
【0151】
そして、画像50内には、これらの他、符号55で示すような文字を構成しない図形が含まれ得る。図形55が存在し得る位置や、図形55が取り得るサイズは様々である。
図16A及び
図16Bの例では図形55は文字列53の近傍に位置し、
図16C及び
図16Dの例では図形55は文字列53の内部に位置する。
なお、誤読可能性の報知に当たり、図形55が文字列の内部にあるか近傍にあるかを区別する必要性は低い。文字列認識処理においてステップS53で検出したグループの図形が配列されている領域と一部でも重なる図形55は、その領域に存在する文字列53の内部にあると考えても差し支えない。
【0152】
このような文字を構成しない図形55は、読取対象101に付着したゴミ、読取対象101上の模様や罫線、読取対象101に形成された影や凹凸、撮像時の白飛び等により発生し得る。いずれの原因であっても、認識した文字列53の近傍にこのような図形55がある場合、図形55の存在が障害となって文字列53を構成する文字の認識が正常に行えていない可能性や、存在する文字の一部を図形として認識できなかった結果、残りが文字を形成しない図形55として認識されている可能性や、複数の文字が繋がって1つの図形と認識された結果、文字とは認識されなかった可能性等が示唆される。これらはいずれも誤読につながると考えられる。
【0153】
特に、文字抽出部144が抽出した出力文字列の内部又は近傍に文字を構成しない図形55がある場合には、出力に直接反映される箇所で誤読が発生している可能性があり、読み取り結果として正しくない出力がなされる危険性が高い。
従って、第3実施形態においては、文字抽出部144が抽出した出力文字列の内部又は近傍に文字を構成しない図形55がある場合に、誤読の可能性を報知することで、オペレータに適切に注意喚起をするようにしている。
【0154】
次に、
図17及び
図18を用いて、
図19A乃至
図19Dも参照しつつ、以上説明してきた機能を実現するための処理について説明する。ここで説明する処理は、この発明の文字列読取方法の第3実施形態に係る処理である。
まず
図17に、読取装置100において文字読取モードがONになった場合にCPU121が実行する、
図4と対応する処理のフローチャートを示す。
【0155】
図17の処理は、ステップS12の後にステップS13が無い点と、ステップS16に代えてステップS16′を実行する点と、ステップS19でYesの場合にステップS20の前にステップS121乃至S123を実行する点が、
図4と異なるのみである。
これらのうち、ステップS13が無い点と、ステップS16に代えてステップS16′を実行する点は、第2実施形態で説明した
図11の場合と同様である。
【0156】
また、ステップS19でYesの場合、CPU121は、図形存在判定処理を実行する(S121)。この処理は、例えば
図18に示すものである。
図18の図形存在判定処理において、CPU121はまず、ステップS17の出力文字列抽出処理で処理対象とした文字列のうち、文字列の端部から連続して存在する不定の文字であって、かつ、
図7のステップS89で採用された出力文字列に含まれない不定の文字につき、当該不定の文字を構成する図形を、文字を構成しない図形に加える(S141)。
【0157】
不定の文字を構成する図形は、基本的には文字を構成する図形と考えられる。特に、
図19Cに符号58で示すように、特定された文字に挟まれる位置に認識された不定の文字は、単に文字を特定できないだけで、特定された文字を含めて一連の文字列を構成する何らかの文字である可能性が高いと考えられる。
一方、
図19Cに符号57で示すように文字列の端部に認識された不定の文字は、符号58の場合と比べ、特定された文字を含む一連の文字列を構成しない可能性も想定され、ゴミや模様等がたまたま文字のサイズと合致したため不定の文字と認識された可能性も無視できない。これは、文字列の端部だけでなく、端部から連続して存在し、特定された文字に挟まれていない不定の文字全てに当てはまる。
図19Bに符号57で示す左から3文字の不定の文字が、これに該当する。
【0158】
そこで、
図18の処理では、このような不定の文字は実質的に文字を構成しない図形であるとして、図形の存在を判定する。このとき、不定の文字が複数の図形で構成されていた場合に、その図形1つずつを別々の図形として扱って以下の処理に進むか、その複数の図形をまとめて1つの図形として扱って以下の処理に進むかは、どちらも考えられる。
ただし、出力フォーマットの抽出文字列に不定の文字が規定されている場合、抽出される出力文字列にも不定の文字が含まれる。出力文字列に含まれる不定の文字は、存在することが予め想定されていた文字であり、誤読の結果認識されてしまったものではないと考えられる。そこでステップS141では、このような不定の文字を構成する図形は、文字を構成しない図形には含めない扱いとしている。
【0159】
次にCPU121は、処理対象の文字列の内部又は近傍に存在する、文字を構成しない図形を特定する(S142)。例えば、文字列中のいずれかの文字から所定距離以内に一部でも入る図形を、文字列の内部又は近傍にある図形として特定することが考えられる。所定距離の数字は、処理対象の文字列の文字認識に影響を与える可能性が無視できない程度の距離を、実験や経験則から求めて適宜に設定することが考えられる。例えば、読み取りたい文字列中の最大の文字間隔を基準に設定することが考えられる。内部と近傍を区別する必要性が低いのは上述の通りである。
【0160】
その後CPU121は、ステップS142で特定した図形から、高さ方向(
図8のh方向)のサイズが、出力文字列のサイズhと比べて閾値T1(<1)倍以下である小さい図形を除外する(S143)。高さ方向のサイズとは、出力文字列の高さ方向のサイズである。
図19Dに符号61で示すような、文字を構成する点よりも小さいサイズの図形は、文字を構成しない状態で存在していても文字認識に与える影響は小さいと考えられるので、少なくともこのような図形を除外するようにT1の値を定めるとよい。また、読み取る文字のフォント等に応じて、文字に含まれる最小の点よりもある程度小さいサイズが閾値となるようにT1の値を定めることも考えられる。あるいは、T1の値を1/2とすることも考えられる。多少余裕をもって、もう少し小さい1/3等の値にしてもよい。
【0161】
また、CPU121は、ステップS142で特定した図形から、出力文字列を構成する図形と比べて背景に対するコントラストが所定閾値以上異なる図形や、エッジのシャープさが所定閾値以上異なる図形も除外する(S144,S145)。
これらに該当する図形も、文字を構成する図形と特徴が大きく異なる場合には文字認識に与える影響は小さいと考えられるし、文字以外の図形に分類されているとしても特別おかしな点はないので、除外する。各閾値は、どの程度コントラストやエッジのシャープさが異なれば文字認識に与える影響が無視できるかに基づき定めればよい。
【0162】
次に、CPU121は、ステップS142で特定した図形から、高さ方向のサイズが、出力文字列のサイズhと比べて閾値T2(>1)倍以上である大きい図形を除外してもよい(S146)。高さ方向のサイズとは、出力文字列の高さ方向のサイズである。
高さ方向のサイズが大きい図形としては、
図19Dに符号54a,54bで示すように高さ方向に近接する位置に複数の文字列がある場合に、符号59a,59bで示すように高さ方向に隣接する複数の文字がつながった状態で1つの図形として認識されたものが考えられる。このような図形が存在する場合、誤読が発生している可能性が高い。
【0163】
一方、符号60で示すような、罫線や模様を認識したと想定される図形も考えられる。このような図形は、文字の近傍にあると多くの場合、符号59a、59bの図形に比べて、誤読をもたらす可能性はさらに高いと考えられる。
しかし、例えば読取対象101がライン上や網目状の模様を有する場合など、符号60で示すような図形を誤読可能性報知のトリガとしてしまうと、非常に高い頻度で報知を行うことになってしまう場合がある。このような場合においては、大きい図形を除外することで、報知の頻度を妥当な範囲に収めることも考えられる。
【0164】
このときに用いるT2の値としては、例えば2が考えられる。3以上の文字が繋がって認識されるケースは稀と考えられ、符号59a、59bのような図形の高さ方向のサイズは、概ね文字列の高さの2倍以下と考えられるためである。
なお、大きい図形を報知対象とするか否か、すなわちステップS146の処理を行うか否かを、オペレータが任意に設定できるようにしてもよい。この点は、ステップS143乃至S145の処理の各々についても同様である。
【0165】
いずれにせよ、CPU121は、ステップS147の時点でステップS142で特定した図形が残っていれば、誤読の可能性を報知することを決定して(S148)、元の処理に戻る。残っていなければ、そのまま元の処理に戻る。
【0166】
図17の説明に戻る。
図18の図形存在判定処理の後、CPU121は、
図18の処理で誤読の可能性を報知することを決定した場合には(S122のYes)、通知部132を制御してオペレータへ誤読の可能性がある旨を報知する(S123)。
その後、処理はステップS20に進む。ステップS122でNoであれば、報知は行わずにステップS20へ進む。
ステップS121乃至S123の処理は報知手順の処理であり、図形位置判定部161及び報知部162の機能と対応する。
【0167】
以上の処理により、図形認識及び文字列認識の結果に基づき誤読の可能性が認められる場合に、これを適切にオペレータに報知することができる。
なお、ここで説明した処理では、出力文字列抽出処理で抽出した出力文字列の内部又は近傍に文字を構成しない図形がある場合に報知を行うこととした。しかし、文字列認識処理で認識した文字列の内部又は近傍に文字を構成しない図形がある場合にも報知を行うようにしてもよい。
【0168】
最終的に出力に反映されるのは出力文字列であるが、出力文字列以外の箇所であっても、文字列認識部143における文字列認識処理の時点で文字の誤認識が発生していると、出力文字列を適切に抽出できないことを通じて、最終的な出力も誤ったものになる可能性があるためである。
【0169】
例えば、
図19Aにおいて、符号54が文字列認識処理で認識された文字列、符号53がその中から抽出された出力文字列である場合を考える。このとき、出力文字列53の内部又は近傍だけで考えると、図形55のみが、内部又は近傍にあって文字を構成しない図形だが、文字列54の内部又は近傍で考えると、図形55に加えて図形56も、内部又は近傍にあって文字を構成しない図形に該当する。
この範囲に文字を構成しない図形が存在する場合にも、誤読の可能性を報知してもよい。
【0170】
なお、
図18のステップS143乃至S146の処理の一部又は全部を省略することも可能である。ステップS143乃至S146で除外される図形も、文字認識に全く影響を与えないわけではないので、このような図形を除外せずに、誤読可能性報知のトリガとしてもよい。
【0171】
また、文字列の端部に不定の文字がある場合にそれを必ず「文字を構成しない図形」であると扱うとすると、誤読可能性報知の頻度が高くなりすぎることも考えられる。そこで、例えば
図19Dに符号59a,59bで示したような隣接する複数の文字がつながった状態で1つの図形として認識されたもの除き、不定の文字は、文字を構成する図形であると扱うようにしてもよい。例えば、不定の文字の高さ方向のサイズが、文字列を構成する文字のサイズを概ね等しい場合(サイズ差が所定閾値以下である場合)には、文字を構成する図形であると扱うことが考えられる。
【0172】
〔第4実施形態:
図20乃至
図22〕
次に、この発明の第4実施形態について説明する。
第4実施形態の読取装置100は、出力文字列抽出処理中の一定段階で候補リストに要素が複数あった場合に誤読の可能性を報知するようにした点が第1実施形態と異なる。その他の点は第1実施形態と共通であるので、相違点に関連する事項について説明し、共通箇所の説明は適宜に省略する。
【0173】
まず、第4実施形態の読取装置100が備える文字列102の読み取りに関連する機能について説明する。
図20は、その機能の構成を示す、
図2と対応する機能ブロック図である。
図20に示すように、第4実施形態の読取装置100は、
図2の構成に加え、報知要否判定部163及び報知部162を備える。
報知要否判定部163は、文字抽出部144から、誤読可能性の報知要否を示す情報を受け取り、報知要の場合に報知部162に対して誤読可能性の報知を指示する機能を備える。報知部162の機能は、第3実施形態の場合と同様である。
【0174】
次に、
図21及び
図22を用いて、以上の機能を実現するための処理について説明する。ここで説明する処理は、この発明の文字列読取方法の第4実施形態に係る処理である。
まず
図21に、読取装置100において文字読取モードがONになった場合にCPU121が実行する、
図4と対応する処理のフローチャートを示す。
【0175】
図21の処理は、ステップS18に代えてステップS18′を実行する点と、ステップS19でYesの場合にステップS20の前にステップS122及びS123を実行する点が、
図4と異なるのみである。
ステップS18′の出力文字列抽出処理は
図22に示すものであるが、この処理は
図7の処理に、破線で示すステップSA1、SA2、SB、SCを追加したものである。
【0176】
これらのうちステップSBは、文字数では出力文字列の候補を1つに絞れず、画像の中央を含むか否かの基準で絞ることを試みる場合に、誤読の可能性を報知することを決定する処理である。ステップSCは、同様に、一致率の基準で候補を絞ることを試みる場合に、誤読の可能性を報知することを決定する処理である。
【0177】
第1実施形態で
図9B及び
図9Cを用いて説明したように、誤読が起きた場合には、これらの基準で候補を1つに絞らざるを得ないことが発生しやすい。また、文字列認識は正確であっても、画像の中央を含むか否かや一致率の基準で候補を絞ると、撮像の位置や正確さによって、複数の候補のいずれが出力文字列として採用されるかが比較的変動しやすいため、オペレータの意図した出力文字列が得られない可能性が無視できない状況であると言える。
ステップSB及びSCは、このような場合に、オペレータに誤読の可能性を報知し、読み取り結果をよく確認してもらうために設けた処理である。
【0178】
また、ステップSA1及びSA2は、設定されている出力フォーマットが1つだけであるにも関わらず、当初のステップS81での検出で候補が複数あった場合に、誤読の可能性を報知することを決定する処理である。
複数の出力フォーマットが設定されている場合には、
図9Aの例で説明した上段の文字列の読み取りのように、それら複数の出力フォーマットについてそれぞれ出力文字列の候補が検出され、その後、文字数の基準で1つに絞られることを想定した設定であることもしばしばである。しかし、出力フォーマットが1つであるにも関わらずステップS81で候補が複数検出されるのは、
図9Bや
図9Cの例で説明したような、誤読等の想定外の自体が発生したためである可能性が無視できない。
【0179】
ステップSA1及びSA2は、このような場合にもオペレータに誤読の可能性を報知し、読み取り結果をよく確認してもらうようにするために設けた処理である。
これらのステップSA1とSA2の組、及びステップSB、SCは、一部のみ設けてもよい。
【0180】
また、
図21のステップS122及びS123の処理は、
図17のステップS122及びS123と同趣旨であり、誤読の可能性を報知するか否かの判断を、ステップS18′の
図22の処理で誤読の可能性を報知することが決定されたか否かに基づき行う点が異なるのみである。
【0181】
以上の処理により、出力文字列の候補の検出状況や絞り込みの状況に基づき誤読の可能性が認められる場合に、これを適切にオペレータに報知することができる。
なお、
図22の処理では、処理の開始時点で、過去に行った誤読の可能性を報知することの決定をリセットしなくてよい。抽出エラーが生じた場合に、次に認識された文字列を処理対象として再度
図22の処理を行う場合もあるが、このようなケースでも、誤読が生じやすいと考えられるので、2度目以降の
図22の処理ではステップS82の段階で出力文字列の候補が1つに絞られていても、誤読の可能性を報知することも有用である。
しかし、このことは必須ではなく、
図22の処理の開始時点で報知の決定をリセットしてもよい。いずれにせよ、ステップS123で報知を行った後は、報知の決定をリセットする。
【0182】
また、
図21の処理にはステップS13が含まれ、第4実施形態では文字認識条件を用いているが、これは必須ではない。第2、第3実施形態の場合と同様、文字認識条件を使わないようにし、ステップS13を実行せず、ステップS16に代えてステップS16′で
図12の文字列認識処理を行うようにしてもよい。
【0183】
〔第5実施形態:
図23,
図24〕
次に、この発明の第5実施形態について説明する。
第5実施形態の読取装置100は、第1乃至第3実施形態で説明した、文字認識条件を用いた文字列認識、文字抽出部144が抽出した出力文字列の文字数に基づく誤読可能性の報知、出力文字列の内部又は近傍に文字を構成しない図形がある場合の誤読可能性報知の機能を兼ね備えたものである。そこで、各実施形態の記載を引用しつつ説明する。
【0184】
まず、第5実施形態の読取装置100が備える文字列102の読み取りに関連する機能について説明する。
図23は、その機能の構成を示す、
図2と対応する機能ブロック図である。
図23に示すように、第5実施形態の読取装置100は、
図2に示した各部に加えて、
図10に示した基準文字数設定部151、文字数判定部152及び、
図15に示した図形位置判定部161及び報知部162を備える。各部の機能は、これらの図に示したものと同様であるので、詳細な説明は省略する。
図10の報知部153の機能は、報知部162により実現できる。
【0185】
次に、
図24を用いて、以上の機能を実現するための処理について説明する。ここで説明する処理は、この発明の文字列読取方法の第5実施形態に係る処理である。
図24は、読取装置100において文字読取モードがONになった場合にCPU121が実行する、
図4と対応する処理のフローチャートを示す。
【0186】
図24の処理は、
図4の処理に、
図11と同様なステップS101乃至S103の処理を追加し(S123がS103と同じ処理である)、さらに、ステップS102でNoの場合に、
図17と同様なステップS121乃至S123の処理を追加したものである。
以上の処理を行うことで、第1乃至第3実施形態で説明した機能を全て実現することができる。このことにより、それらの機能による効果を全て実現することができる。
また、ステップS18の出力文字列抽出処理として
図22の処理を行うことで、さらに第4実施形態の機能も組み合わせ、その効果を実現することも可能である。
【0187】
また、例えば、第1実施形態の文字認識条件の利用と、第3実施形態の認識された文字列の内部又は近傍に文字を構成しない図形がある場合の誤読可能性の報知とを組み合わせることで、以下のような効果が追加的に得られる。
まず、数字4文字のみの文字列を読み取るつもりで抽出文字列が「数字4文字」となっている出力フォーマットを設定している場合を考える。このとき、「BOOING」という文字列は、正しく認識されれば出力フォーマットに合致しないが、例えば「BOOI」の部分が「8001」と誤認識されてしてしまうと、文字列は「8001NG」と認識され、「8001」の部分が出力フォーマットに合致して出力文字列として抽出されて出力され、誤読み取りとなってしまう。他に文字を構成しない図形がなければ、誤読の可能性も報知されない。
【0188】
ここで、文字認識条件として「数字のみ」が設定されていたとすると、上記の誤認識が生じた場合でも文字列は「8001??」と認識され、出力文字列となる「8001」の隣に、文字を構成しない図形として認識される不定の文字があるので、誤読の可能性を報知し、オペレータに注意を喚起できる。
すなわち、文字認識条件を適切に設定し、読み取りに必要のない文字を認識しないようにすることで、意図しない誤認識で出力フォーマットに合致する箇所が生じてしまうケースにおいて、その近傍に不定の文字が存在する可能性を高めることができ、文字を構成しない図形がある場合の誤読可能性の報知の機能を、一層有意義に使えるようになる。
【0189】
〔変形例〕
以上で実施形態の説明を終了するが、この発明において、装置の具体的な構成、具体的な処理の手順、出力フォーマットをはじめとするデータの形式、具体的なデータや文字列の内容、取り扱う文字の種類等は、実施形態で説明したものに限るものではない。
例えば、英語以外のアルファベットや、日本語の平仮名、片仮名、漢字を読み取る場合も、上述した各実施形態の機能は同様に発揮することができる。
また、第4実施形態では、第1、第2、第3実施形態で説明した機能を全て備えた読取装置100について説明したが、これらのうち任意の2つの実施形態の機能を備えた読取装置100も同様に構成することができる。
また、上述した各実施形態の読取装置100の機能を、複数の装置に分散させて設け、例えば
図2等に示した機能の一部を接続先のデータ処理装置に設ける構成とすることも、妨げられない。
【0190】
また、読取対象101の画像の取得を、撮像により行うことは必須ではない。フラットベッド式のスキャナや、手で読み取り対象の上を滑らせるハンディスキャナ等を用いて、スキャンにより画像を取得する場合であっても、その他の任意の方法で画像を取得する場合であっても、上述した実施形態を適用可能である。
【0191】
また、この発明のプログラムの実施形態は、1のコンピュータに、あるいは複数のコンピュータを協働させて、所要のハードウェアを制御させ、上述した実施形態における読取装置100の機能を実現させ、あるいは上述した実施形態にて説明した処理を実行させるためのプログラムである。
【0192】
このようなプログラムは、はじめからコンピュータに備えるROMや他の不揮発性記憶媒体(フラッシュメモリ,EEPROM等)などに格納しておいてもよい。メモリカード、CD、DVD、ブルーレイディスク等の任意の不揮発性記録媒体に記録して提供することもできる。さらに、ネットワークに接続された外部装置からダウンロードし、コンピュータにインストールして実行させることも可能である。
【0193】
また、以上説明してきた実施形態及び変形例の構成が、相互に矛盾しない限り任意に組み合わせて実施可能であり、また、一部のみを取り出して実施することができることは、勿論である。
【符号の説明】
【0194】
40…撮像範囲、50…画像、100…読取装置、101…読取対象、102…文字列、110…光学部、111…撮像センサ、112…レンズ、113…パルスLED、120…制御部、131…操作部、132…通知部、133…表示部、141…撮像部、142…図形認識部、143…文字列認識部、144…文字抽出部、145…文字加工部、146…出力部、151…基準文字数設定部、152…文字数判定部、153,162…報知部、161…図形位置判定部
【要約】
【課題】 簡便で負荷の小さい処理により、撮像画像中の文字を認識する文字認識の精度を向上させる。
【解決手段】撮像部141が読取対象物の画像を取得し、出力フォーマット設定部147が、その取得した画像中から読み取って出力すべき文字列のフォーマットを設定し、文字列認識部143が特定可能な文字のうち、設定した上記フォーマットで規定される文字を全て含む一群の文字のみを特定することを文字認識条件として文字認識条件設定部148が設定し、文字列認識部143が、上記取得した画像中の文字列を、その設定した文字認識条件に従って認識し、文字抽出部144が、その認識で得た第1文字列のうち、設定した上記フォーマットに合致する箇所の第2文字列を出力用に取得する。
【選択図】
図2