(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-21
(45)【発行日】2023-03-02
(54)【発明の名称】情報処理装置、情報処理方法、プログラム
(51)【国際特許分類】
G06T 7/60 20170101AFI20230222BHJP
G06T 7/62 20170101ALI20230222BHJP
G06V 30/412 20220101ALI20230222BHJP
G06V 30/42 20220101ALI20230222BHJP
【FI】
G06T7/60 200G
G06T7/60 150S
G06T7/60 180D
G06T7/62
G06V30/412
G06V30/42
(21)【出願番号】P 2020153147
(22)【出願日】2020-09-11
【審査請求日】2021-03-15
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【氏名又は名称】木村 友輔
(72)【発明者】
【氏名】小池 祥平
【審査官】片岡 利延
(56)【参考文献】
【文献】特開2006-277108(JP,A)
【文献】特開2007-122426(JP,A)
【文献】特開平08-297718(JP,A)
【文献】特開平07-028923(JP,A)
【文献】特開2011-076390(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/60
G06V 30/42
G06T 7/62
G06V 30/412
(57)【特許請求の範囲】
【請求項1】
手書きチェックがされていない画像と、手書きチェックがされた記入済み画像
とを取得する取得手段と、
前記取得手段により取得された記入済み画像から手書き部分を特定する手書き部分特定手段と、
前記取得手段により取得された手書きチェックがされていない画像における項目に係る領域から、破線を抽出した画像と、破線以外を抽出した画像と、破線により特定される範囲を示す画像と、を生成する生成手段と、
前記生成手段により生成された画像と、前記記入済み画像から特定された手書き部分とに基づき、チェック対象の項目に対応する破線に対するチェックがされたかを特定する特定手段と、
を備えることを特徴とする情報処理システム。
【請求項2】
前記特定手段は、前記手書き部分特定手段により特定された手書き部分の形状に基づき、チェック対象の項目に対する手書きチェックがされたかを特定することを特徴とする請求項
1に記載の情報処理システム。
【請求項3】
前記特定手段は、前記手書き部分特定手段により特定される複数の手書き部分から構成される形状と、前記破線が構成する形状と、に基づき、当該破線に対応する項目に対するチェックがされたかを特定することを特徴とする請求項
2に記載の情報処理システム。
【請求項4】
前記手書き部分特定手段により特定される複数の手書き部分から構成される形状と、前記破線が構成する形状との一致率を算出する算出手段をさらに備え、
前記特定手段は、前記算出手段により算出された一致率に基づき、当該破線に対応する項目に対するチェックがされたかを特定することを特徴とする請求項
3に記載の情報処理システム。
【請求項5】
前記特定手段は、前記手書き部分特定手段により特定された手書き部分の大きさに基づき、チェック対象の項目に対する手書きチェックがされたかを特定することを特徴とする請求項1乃至
4のいずれか1項に記載の情報処理システム。
【請求項6】
前記特定手段は、前記手書き部分特定手段により特定される複数の手書き部分から構成される形状の大きさと、前記破線が構成する形状の大きさとに基づき、当該破線に対応する項目に対するチェックがされたかを特定することを特徴とする請求項
5に記載の情報処理システム。
【請求項7】
前記特定手段は、前記手書き部分特定手段により特定された手書き部分の位置に基づき、チェック対象の項目に対する手書きチェックがされたかを特定することを特徴とする請求項1乃至
6のいずれか1項に記載の情報処理システム。
【請求項8】
前記特定手段は、前記手書き部分特定手段により特定された手書き部分と、前記破線との位置関係に基づき、当該破線に対応する項目に対するチェックがされたかを特定することを特徴とする請求項
7に記載の情報処理システム。
【請求項9】
情報処理システムの取得手段が、
手書きチェックがされていない画像と、手書きチェックがされた記入済み画像
とを取得する取得工程と、
前記情報処理ステムの手書き部分特定手段が、前記取得工程により取得された記入済み画像から手書き部分を特定する手書き部分特定工程と、
前記情報処理ステムの生成手段が、前記取得工程により取得された手書きチェックがされていない画像における項目に係る領域から、破線を抽出した画像と、破線以外を抽出した画像と、破線により特定される範囲を示す画像と、を生成する生成工程と、
前記情報処理ステムの特定手段が、
前記生成工程により生成された画像と、前記記入済み画像から特定された手書き部分とに基づき、チェック対象の項目に対応する破線に対するチェックがされたかを特定する特定工程と、
を備えることを特徴とする情報処理システム。
【請求項10】
コンピュータを、
手書きチェックがされていない画像と、手書きチェックがされた記入済み画像
とを取得する取得手段と、
前記取得手段により取得された記入済み画像から手書き部分を特定する手書き部分特定手段と、
前記取得手段により取得された手書きチェックがされていない画像における項目に係る領域から、破線を抽出した画像と、破線以外を抽出した画像と、破線により特定される範囲を示す画像と、を生成する生成手段と、
前記生成手段により生成された画像と、前記記入済み画像から特定された手書き部分とに基づき、チェック対象の項目に対応する破線に対するチェックがされたかを特定する特定手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【0002】
現在、金融業界や保険業界、公的機関において、帳票処理の効率化の為に、帳票の所定領域に記された手書きマークを光学的に認識する光学式マーク認識装置が導入されている。
【0003】
このような認識装置では、帳票をスキャナで読み込んで帳票画像を生成し、該帳票画像の各画素をあらかじめ設定した閾値に基づいて白黒の画素に2値化変換し、2値化変換した画像から手書きマーク記入部分として設定した領域を抽出し、抽出した領域内の黒画素数があらかじめ設定した閾値以上であるか否かに基づいて、手書きマークが記されているか否かを認識するような構成となっている。
【0004】
このような装置では、OCR技術が利用されているが、OCRでは、帳票のうち読み取り対象項目の座標や文字種別の情報、マーク種別の情報などの情報を予め定義しておき(読み取り対象定義情報)、入力帳票画像から対象領域を切出して文字認識処理にかけるということが一般的に行われている。
【0005】
対象の領域を抽出して、ラベリングの処理を行い、ラベリングされたラベル情報に対して、画素数の比較や外接矩形サイズの比較や重心間の比較などの判定をし、除去すべきラベルと判定された場合は、マーク認識対象領域画像内の黒画素のブロックを除去して白画素に変換して、マーク認識対象領域画像に対して、手書きマークの有無を認識する光学式マーク認識の技術が開示されている。(例えば特許文献1)
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載の発明では、他のチェック項目に対する書き込みが、OCR対象の項目内に入り込んだ場合に、正確に認識することが難しい。
【0008】
また、特許文献1に記載の発明では、チェック項目の破線をなぞることによって、マークが行われる場合、破線の内側に文字が印字されているケースでは認識することが出来ない。
【0009】
よって、本願発明では、帳票などに記されたマークの読み取り精度を向上させることが可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の情報処理システムは、手書きチェックがされた記入済み画像を取得する取得手段と、前記取得手段により取得された記入済み画像から手書き部分を特定する手書き部分特定手段と、前記手書き部分特定手段で特定された手書き部分に基づき、チェック対象の項目に対する手書きチェックがされたかを特定する特定手段と、を備えることを特徴とする。
【0011】
また、本発明のプログラムは、コンピュータを手書きチェックがされた記入済み画像を取得する取得手段と、前記取得手段により取得された記入済み画像から手書き部分を特定する手書き部分特定手段と、前記手書き部分特定手段で特定された手書き部分に基づき、チェック対象の項目に対する手書きチェックがされたかを特定する特定手段と、として機能させるためのプログラム。
【発明の効果】
【0012】
そこで、本願発明では、帳票などに記されたマークの読み取り精度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【0013】
【
図1】情報処理システムの概略構成を示す構成図である。
【
図2】クライアント装置及び情報処理装置のハードウェアの概略構成を示す構成図である。
【
図3】本実施例での処理の流れを示すフローチャートである。
【
図4】テンプレート項目画像を破線と破線以外に分ける処理を示すフローチャートである。
【
図5】記入済み項目画像をチェック部分だけにする処理を示すフローチャートである。
【
図6】破線と重なるチェック部分の有無を判定する処理を示すフローチャートである。
【
図7】
図4の記入済み項目画像をチェック部分だけにする処理中の、手書き情報以外を除去する処理を示すフローチャートである。
【
図8】
図5の破線と重なるチェック部分の有無を判定する処理中の、破線と重なるラベルと重ならないラベルの分類処理を示すフローチャートである。
【
図9】
図5の破線と重なるチェック部分の有無を判定する処理中の、チェックのサイズ判定処理を示すフローチャートである。
【
図10】
図5の破線と重なるチェック部分の有無を判定する処理中の、チェックの形状判定処理を示すフローチャートである。
【
図11】
図5の破線と重なるチェック部分の有無を判定する処理中の、チェックの位置判定処理を示すフローチャートである。
【
図12】
図3のテンプレート項目画像を破線と破線以外に分ける処理におけるテンプレート項目画像の例を示す図である。
【
図13】手書き部分以外を除去する処理に関する画像の例を示す図である。
【
図14】不要なラベルを除去する処理に関する画像の例を示す図である。
【
図16】OCR領域の大きさ調整の例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を詳細に説明する
図1には、本発明の実施形態に係る情報処理システムの概略の構成図が示されている。
尚、各装置の機能については、後述するフローチャートを用いて合わせて説明を行う。
【0015】
情報処理システム100は、紙媒体等を読み取ることによりデータを生成するスキャナ装置101、スキャナ装置101において得られたデータを表示するクライアント装置110、及び入力されたデータを用いて判定を行う情報処理装置120を備えている。
【0016】
スキャナ装置101は、スキャン画像送信部102を備え、スキャン画像送信部102は、紙媒体等のスキャンにより得られた画像データをクライアント装置110へ送信する。
【0017】
クライアント装置110は、スキャン画像受信部111、操作受付部112、及び入力画像送信部113を備えている。
【0018】
スキャン画像受信部111は、スキャナ装置101から送信された画像データを受信し、操作受付部112は、スキャナ装置101や情報処理装置120に対して、表示されている画面を利用する等して、ユーザからの操作指示を受付け、入力画像送信部113は、解析対象となる画像ファイル等を情報処理装置120へ送信する。
【0019】
情報処理装置120は、入力画像受信部121、チェック有無判定部122、記憶部123を備えている。
【0020】
入力画像受信部121は、クライアント装置110から送信される画像ファイル等を受信する。
【0021】
チェック有無判定部122は、受け取った画像にチェックがされているかを判定する。
【0022】
記憶部123は、それぞれの処理で用いられるデータや処理結果、判定結果を記憶する。
【0023】
次に、
図2では、情報処理装置120に適用可能な情報処理装置のハードウェア構成の一例について説明する。
【0024】
図2において、201はCPUで、システムバス204に接続される各デバイスやコントローラを統括的に制御する。また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
【0025】
203はRAMで、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ211からRAM203にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
【0026】
また、205は入力コントローラで、キーボード(KB)209や不図示のマウス等のポインティングデバイス等からの入力を制御する。206はビデオコントローラで、CRTディスプレイ(CRT)210等の表示器への表示を制御する。
【0027】
なお、
図2では、CRT210と記載しているが、表示器はCRTだけでなく、液晶ディスプレイ等の他の表示器であってもよい。これらは必要に応じて管理者が使用するものである。
【0028】
207はメモリコントローラで、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ211へのアクセスを制御する。
【0029】
208は通信I/Fコントローラで、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
【0030】
なお、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT210上での表示を可能としている。
【0031】
また、CPU201は、CRT210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0032】
本発明を実現するための後述する各種プログラムは、外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。
【0033】
さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ211に格納されており、これらについての詳細な説明も後述する。
次に、
図3~
図16を用いて、本発明の実施例を説明する。
【0034】
図3は本実施例におけるOCR領域を設定する処理を示すフローチャートである。
【0035】
ステップS301では、スキャナ装置101によりスキャンされた、チェック項目に対して手書き記入されていない書類(帳票など)の画像を取得する。
【0036】
ステップS302では、ステップA01で取得した画像のうち、ユーザにより手書き入力される領域、すなわちOCRの対象となる項目にかかる領域(OCR領域)を設定する。具体的には、
図16Aに示すように、ユーザによる記入の目安として印刷されている破線を内包する領域(1601)を、OCR領域として設定する。
【0037】
ステップS303では、ステップS302で設定された領域の中心位置を変えずに、当該領域を拡大する。例えば縦横をそれぞれ3倍することで拡大する。
【0038】
ステップS304では、含まれる場合は、他のOCR領域を含まないようにOCR領域を縮小する。また、拡大した結果、ステップS301で取得した画像自体をはみ出す大きさになった場合は、画像内に収まる大きさに縮小する。ステップS303,S304の大きさ調整後のOCR領域(1602)を
図16Bに示す。
【0039】
そして、ステップS301で取得した画像に係る書類と、当該書類におけるOCR領域とを対応付けて記憶する。
【0040】
ステップS306では、設定された各OCR領域の画像から、破線画像(破線のみを抽出した画像)と、破線以外画像(破線以外を除去した画像)と、破線範囲画像(破線によって囲まれる領域の内外を識別する画像)とを生成する処理を行う。本処理の詳細は、
図3のフローチャートを用いて説明する。
【0041】
次に、
図4に示すフローチャート及び
図12の画像を用いて情報処理システム100におけるステップS306の処理の詳細を説明する。
【0042】
ステップS401では、OCR領域の画像を読み込み、大津二値化を行い、大津二値化画像を作成する。例えば
図12の1201を読み込んで処理すると1202となる。大津二値化とは、クラス間分散(between-class variance)とクラス内分散(within-class-variance)との比を用いて求める分離度の値が最大となる閾値を求めて、この閾値に基づいて自動的に二値化する手法である。なお、大津二値化の技術は公知技術なので、詳細な説明は省略する。
【0043】
ステップS402では、OCR領域の画像を読み込み、適応的二値化を行い、適応的二値化画像を作成する。例えば
図12の1201を読み込んで処理すると1203となる。適応的二値化とは、任意の大きさの局所領域を設定し、その領域内で閾値の計算を行い、1つ1つの画素を二値化したものを画像全体に当てはめることで各領域に合わせた閾値で画像の画素全体を二値化する処理である。なお、適応的二値化の技術は、公知技術なので詳細な説明は省略する。
【0044】
ステップS403では、ステップS401で作成した大津二値化画像(
図12の1202)と、ステップS402で作成した適応的二値化画像(
図12の1203)とを合成して、二値化画像1204aを作成する。なお、1204bは、1201とは別の画像に対して、大津二値化、適応的二値化した画像を合成した画像である。
【0045】
上述した大津二値化においては、あらかじめ印刷されている破線のような薄い部分と、予め印刷された文字のように濃い部分がると、濃い部分だけが残り薄い部分は消えやすいという弱点がある。他方、適応的二値化においては、網掛け部分が消えやすいという弱点がある。そこで、2つの方法でそれぞれ二値化した画像を合成することで薄い部分や網掛け部分も残した二値化画像を生成することができる。
【0046】
ステップS404では、予め設定された切り出し矩形(破線をちょうど内包する矩形)が内包する楕円を描画したマスク画像1205を作成する。
【0047】
ステップS405では、ステップS404で作成した楕円マスク画像と、ステップS403で作成した二値化画像とを重ね合わせ、重なった画素数を取得する。この処理は、後述のステップS408での破線形状の判定のために行う処理である。
【0048】
ステップS406では、予め設定された切り出し矩形(破線をちょうど内包する矩形)が内包する矩形を描画したマスク画像1206を作成する。
【0049】
ステップS407では、ステップS406で作成した矩形マスク画像と、ステップS403で作成した二値化画像とを重ね合わせ、重なった画素数を取得する。この処理は、次のステップS408での破線形状の判定のために行う処理である。
【0050】
ステップS408では、ステップS405で取得した画素数と、ステップS407で取得した画素数とを用いて、切り出し矩形が内包する破線の形状が、楕円と矩形のどちらの形状に近いのかを判定する。具体的には、ステップS405で取得した画素数を楕円マスク画像の楕円マスク部分の画素数で割った値と、ステップS407で取得した画素数を矩形マスク画像の矩形マスク部分の画素数で割った値とを比較し、前者が大きければ楕円に近いと判定し、後者が大きければ矩形に近いと判定する。
【0051】
ステップS408で破線の形状が楕円であると判定された場合(ステップS408:True)は、ステップS409の処理に移行する。ステップS408で破線の形状が矩形であると判定された場合(S408:False)は、ステップS412の処理に移行する。
【0052】
ステップS409では、ステップS404で作成した楕円マスク画像と二値化画像とを重ね、重なった画素からなる画像を、破線画像として生成する。破線画像の具体例を
図12の1207に示す。
【0053】
ステップS410では、楕円マスク画像と二値化画像とを重ね、重ならない画素からなる画像を、破線以外画像として生成する。破線以外画像の具体例を
図12の1208に示す。
【0054】
ステップS411では、楕円マスク画像における楕円の内部を塗りつぶした破線範囲画像(
図12の1209)を作成する。
【0055】
ステップS412では、ステップS406で作成した矩形マスク画像と二値化画像1204bとを重ね、重なった画素からなる画像を、破線画像として生成する。破線画像の具体例を
図12の1210に示す。
【0056】
ステップS413では、矩形マスク画像と二値化画像とを重ね、重ならない画素からなる画像を、破線以外画像として生成する。破線以外画像の具体例を
図12の1211に示す。
【0057】
ステップS414では、矩形マスク画像における矩形の内部を塗りつぶした破線範囲画像(
図12の1212)を作成する。
【0058】
以上説明した
図4のフローチャートに係る処理により、OCR領域における破線が楕円形状であるのか矩形形状であるのかを判定し、破線画像、破線以外画像、破線範囲画像が生成される。
【0059】
なお、本実施例においては、破線の形状を楕円か矩形かの2択として説明したが、この2つの形状以外の形状のマスク画像を作成して同様の処理を行うことで、様々な形状の破線に適用することが可能となる。
【0060】
続いて、
図5を用いて、記入済み項目画像をチェックだけにする処理についての説明を行う。
【0061】
ステップS501では、
図13の1301に示す記入済み項目画像を読み込み、大津二値化を行い、大津二値化画像を作成する。
【0062】
ステップS502では、
図13の1301に示す記入済み項目画像を読み込み、適応的二値化を行い、適応的二値化画像を作成する。
【0063】
ステップS503では、ステップS501で作成した大津二値化画像と、ステップS502で作成した適応的二値化画像を合成して、二値化画像を作成する。大津二値化画像と適応的二値化画像を合成する理由は、先述の理由と同様である。
【0064】
ステップS504では、ステップS503で作成された二値化画像から、手書き情報以外を除去する。ステップS504の処理の詳細について
図7を用いて説明する。
【0065】
図7のフローチャートの処理では、ステップS408で破線の形状が楕円であると判定された場合(ステップS408:True)は、ステップS409で作成した破線画像とステップS410で作成した破線以外画像とステップS503で作成した二値化画像の3つの画像、ステップS408で破線の形状が矩形であると判定された場合(S408:False)は、ステップS412で作成した破線画像とステップS413で作成した破線以外画像とステップS503で作成した二値化画像の3つを入力した上で実行する。
ステップS701では記入済み項目画像(
図13の1301)と、破線画像(
図13の1305)、破線以外画像(
図13の1306)の入力を受け付け、破線以外画像を膨張させる。膨張処理は、モルフォロジー演算を利用した処理であり、例えばOpenCVの関数であるcv2.dilateの処理である。
【0066】
ステップS702では、ステップS701で膨張させた破線以外画像とステップS503で作成した記入済み項目画像との差分画像を作成する。すなわち、破線部分と手書き部分のみの画像を生成する。具体的には、
図13の1302に示す画像が生成される。
【0067】
ステップS703では、ラベリングを行ってステップS702で作成した差分画像の1つ1つのパーツ(破線の各点など)に対してラベルを付与する。例えば、
図13の1303における、1303-1に対してラベル1、1303-2に対してラベル2、1303-3に対してラベル3・・・といった形でラベルを付与する。
【0068】
以下、1303-1や1303-2などラベルを付与されたパーツを含む画像(
図13の1302)をラベル画像と呼び、1303-1や1303-2などラベルを付与されたパーツをラベルと呼ぶ。
ステップS704では、ステップS701で受け付けた破線画像を膨張させる。
【0069】
ステップS705では、全てのラベルに対して、ステップS706~S709の処理(破線部分を除去する処理)が実行されたかを判定する。
【0070】
全てのラベルに対して処理が実行された場合(S705:True)は、本フローチャートの処理を終了し、
図4のフローチャートの処理に戻る。
【0071】
まだ実行していないラベルがある場合(S705:False)は、処理をステップS706に移行する。
【0072】
ステップS706では、ラベル画像のラベルの画素数を取得する。
【0073】
ステップS707では、破線画像とラベルとを重ね、重なる画素数を取得する。すなわち、破線部分と手書き部分の両方が含まれるラベル画像に、破線だけにした画像を重ね、重なった画素数を取得することになるため、この重なる画素数は、ラベル画像における破線部分の画素数を意味する。
【0074】
ステップS708では、ステップS707で取得した画素数(ラベル画像における破線部分の画素数)が「当該ラベルの画素数」において所定の割合を占めるかを判定する。なお、本実施例では、5割以上を占めるかを判定する。
【0075】
所定の割合を占める場合(ステップS708:True)は、当該ラベルは破線部分であると判断できるため、処理をステップS709に移行する。
【0076】
ステップS709では、ラベルのうち、破線画像と重なる部分を除去する。
【0077】
他方、所定の割合を占めない場合は、当該ラベルは手書き部分であると判断できるため、そのまま残し、次のラベル画像の処理に移行する。
【0078】
以上の処理により、手書き部分以外を除去した画像(
図13の1304)を生成することができる。
【0079】
ステップS505では、ステップS504で作成された画像に対して、ラベリング処理を行う。
【0080】
ステップS506では、全てのラベルに対してステップS507~S510の処理を実行したかを判定する。全てのラベルに対してステップS507~S510の処理が実行された場合(ステップS506:True)は、本フローチャートの処理を終了する。まだ実行していないラベルがある場合(ステップS506:False)は、処理をステップS507に移行する。
【0081】
なお、ステップS507~S510の処理は、ステップS504で生成された画像から、ペン先が触れてしまったことによりついた点や鉛筆の芯の粉などの「ノイズ」や「チェックとは無関係の可能性が高い情報」を除去して、手書き情報だけを残すための処理である。
【0082】
ステップS507では、ラベルの面積が所定の大きさより小さいかを判定する。ステップS507で、ラベルの面積が小さいと判定された場合は、当該画像は単にペン先が触れてしまった等の理由により出来た、チェックとは無関係の可能性が高い情報なので、ステップS508に処理を移行して当該画像を除去する。例えば、
図14の1401の画像に含まれるごま塩ノイズのような点などである。
【0083】
ステップS507でラベルの面積が所定の大きさ以上であると判定された場合は、ステップS509に処理を移行する。
【0084】
ステップS509では、ラベルが、ステップS504で生成された画像の上下左右の端に接しているかを判定する。
【0085】
ステップS509でラベルが画像の上下左右端に接していると判定された場合(ステップS509:True)は、ステップS510へ処理を移行する。
【0086】
ステップS509でラベルが画像の上下左右端に接していないと判定された場合(ステップS509:False)は、処理をステップS506に戻す。
【0087】
上下左右端に接している例を
図14の1402に示す。1402の右上にかかれた丸印が画像の端に接しているラベルになる。
【0088】
ステップS510では、ラベルの外接矩形が切り出し矩形(破線をちょうど内包する矩形)と重なるかを判定する。
【0089】
ラベルの外接矩形が切り出し矩形と重なると判定された場合(ステップS510:True)は、ステップS506へ処理を戻す。すなわち、ステップS504で生成された画像の上下左右のいずれかに接しているものの、破線の近くまで繋がっている手書き部分であると言えるため、除去せず残しておく。
【0090】
ラベルの外接矩形が切り出し矩形と重ならないと判定された場合(ステップS510:False)は、ステップS508へ処理を移行し、ラベルを除去する処理を行う。すなわち、ステップS504で生成された画像の上下左右のいずれかに接していて、かつ破線近くまでは繋がっていない手書き部分であり、破線をなぞった手書き部分とは関係が弱いと言えるため、除去の対象とする。
【0091】
以上の処理により、記入済み項目画像から手書き情報以外を除去し、さらに手書き情報の中でもチェックとは関係がないと判断される情報を除去することで、チェックに係る手書き情報と考えられる情報だけを残した画像を生成することができる。
【0092】
次に
図6のフローチャートを用いて、チェックに係る手書き情報と考えられる情報だけを残した画像から、当該チェックがチェックとしての所定の要件を満たすかを判定することで、チェックであるか否かを判定する処理について説明する。
【0093】
詳細は後述するが、所定の要件として、サイズ、形状、位置の3つの要件が設定されているケースを想定し説明する。
【0094】
ステップS601では、OCR結果の確信度として、初期値である「1.0」を設定する。
【0095】
ステップS602では、OCR結果の初期値として「False」を設定する。
【0096】
これにより、OCR結果が「False」であることの確信度として「1.0」が設定されたことになる。
【0097】
ステップS603では、
図4のフローチャートに係る処理で作成したチェックだけにした記入済み項目画像(チェックに係る手書き情報と考えられる情報だけを残した画像)をラベリングする処理を行う。
【0098】
ステップS604では、背景以外のラベルが存在するかを判定する。
【0099】
背景は
図13の1302であれば黒画素の領域を指す。
【0100】
背景以外のラベルが存在する場合(ステップS604:True)は、ステップS605へ処理を移行し、背景以外のラベルが存在しない場合(ステップS604:False)は、本フローチャートの処理を終了する。
【0101】
ステップS605では、ラベル画像を、破線と重なる画像と破線と重ならない画像とに分類する。ステップS605の処理の詳細は、
図8のフローチャートを用いて説明する。
【0102】
ステップS801では、破線と重なる画像を任意の一色で初期化する。破線と重なる画像とは、
図13の1302に示すように、破線と手書き部分の両方から構成される画像を意味する。
【0103】
ステップS802では、破線と重ならないラベル情報のリストを空で初期化する。
【0104】
ステップS803では、切り出し矩形から矩形の中心座標を計算し破線中心とする。
【0105】
ステップS804では、全てのラベル画像に対して、ステップS805~S807の処理を実行したかを判定する。全てのラベル画像に対して処理が行われた場合(ステップS804:True)は、ステップS808の処理に移行する。処理が実行されていないラベル画像がある場合(ステップS804:False)は、ステップS805の処理に移行する。
【0106】
ステップS805では、ラベル画像が破線範囲画像と重なるかを判定する。ラベルが破線範囲画像と重なると判定された場合(ステップS805:True)は、ステップS806へと処理を移行する。ラベルが破線範囲画像と重ならないと判定された場合(ステップS805:False)は、ステップS807へと処理を移行する。
【0107】
ステップS806では、「破線範囲画像と重なると判定されたラベル」を、「破線と重なるラベル画像」の構成要素として追加する(破線と重なるラベル画像に合成する)。本処理が終了したら、ステップS804へと処理を移行し、全てのラベルが確認済みとなるまでステップS805~ステップS807の処理を繰り返す。
【0108】
ステップS807では、ステップS803で求めた破線中心とラベル重心との距離、ラベル情報をリストに追加する。本処理が終了したら、ステップS804へと処理を移行し、全てのラベルが確認済みとなるまでステップS805~ステップS807の処理を繰り返す。
【0109】
ステップS808では、ステップS807の処理により作成されたリストのデータを、破線中心とラベル重心との距離が近い順にソートする。これにより、破線範囲の外にあるラベルを、破線をなぞろうとして書かれた可能性が高い順に並び替えることが出来る。
【0110】
ステップS809では、破線と重なるラベル画像に合成されたラベルが存在するかを判定する。存在する場合(ステップS809:True)は、ステップS810の処理に移行する。存在しない場合(ステップS809:False)は、ステップS814の処理に移行し、確信度として1.0を設定して、処理を終了する。すなわち、すべてのラベルが破線範囲の外に存在するか、すべてのラベルが存在しない場合には、チェックではない確信度(=OCR結果が「False」であることの確信度)を最大にする。
【0111】
ステップS810では、ラベル画像に合成されたラベル画像を使って凸包矩形を作成する。凸包矩形とは、突き出た部分を結び、凸性を持つ直線で形成された矩形のことである。例えば、手のひらを上方から見たとき出っ張って見える指と指同士を結び、形成するような矩形がこれにあたる。この場合、手の甲の部分は、凸包矩形の内部に含まれる。
【0112】
ステップS811では、凸包矩形内部を塗りつぶし、凸包面積を取得する。
【0113】
ステップS812では、破線範囲画像の塗りつぶされた箇所を破線面積として取得する。
【0114】
ステップS813では、確信度を以下の計算式で求めます。
【0115】
1.0-min(1.0,凸包面積/破線面積)
すなわち、凸包面積が小さければ小さいほど、チェックが存在しない可能性が高いと言えるため、チェックではないことの確信度が高く設定される。
【0116】
また、凸包面積が大きいほど、すなわちラベルが広範囲に渡っている場合は、チェックが存在する可能性が高いと考えられるため、チェックではないことの確信度が低く設定される。
【0117】
ステップS813まで処理が完了したら、ステップS606へと処理を移行し、引き続き
図5の処理を進める。
【0118】
ステップS606では、楕円の周長(実測値)(最大)として0を設定する。
【0119】
ステップS607では、チェック判定結果(最終)としてFalseを設定する。
【0120】
ステップS608では、楕円画像(最終)を任意の一色で初期化する。
【0121】
ステップS609では、「破線と重なるラベルの組み合わせ」と、「破線と重なるラベルと破線と重ならないラベルの組み合わせ」の全パターンと、に対して、ステップS610~S619の処理が実行されたかを判定する。
【0122】
実行された場合(ステップS609:True)は、処理をステップS620に移行する。
【0123】
実行していないチェックがある場合(ステップS609:False)は、処理をステップS610に移行する。
【0124】
ステップS610以降の処理は、「破線と重なるラベルの組み合わせ」と、「破線と重なるラベルと破線と重ならないラベルの組み合わせ」の全パターンに対して、チェック判定を行い、最もチェックらしい組み合わせを決定し、当該組み合わせに係るチェックがチェックであるかを判定する処理である。
【0125】
なお、1回目のステップS610以降の処理においては、「破線と重なるラベルの組み合わせ」を対象とし、2回目以降の処理で「破線と重なるラベルと破線と重ならないラベルの組み合わせ」を対象とする。
【0126】
ステップS610では、2回目以降の処理であるかを判定する。
【0127】
2回目以降であると判定された場合は、ステップS611へ処理を移行する。
【0128】
1回目の処理である場合は、ステップS613の処理に移行する。
【0129】
ステップS611では、ステップS807で作成され、ステップS808でソートされたリストの先頭に対応するラベルを取得して、リストから外す。この処理を行うことにより、リストが更新され、同じラベルを使用することがなくなる。
【0130】
ステップS612では、ステップS611で取得したラベルを、破線と重なるラベル画像に追加する。この処理により、「破線と重なるラベルと破線と重ならないラベル(リストの先頭にあるラベル)の組み合わせ」が作成される。
【0131】
ステップS613では、1回目の処理であれば「破線と重なるラベルの組み合わせ」について、2回目以降の処理であればステップS612で作成された「破線と重なるラベルと破線と重ならないラベルの組み合わせ」について、サイズ判定処理を行う。サイズ判定処理の詳細は、
図9のフローチャートを用いて説明する。
【0132】
ステップS901では、ラベル画像と、破線範囲画像を入力として受け付け、ラベル画像にこれまで合成されたラベルの画素数合計が5以上であるかを判定する。この処理は、楕円を作成するために用いる画素が存在するかを判定するための処理である。ステップS901でラベル画像にこれまで合成されたラベルの画素数合計が5以上であると判定された場合は、ステップS902へと処理を移行する。
【0133】
ステップS901で、ラベル画像にこれまで合成されたラベルの画素数合計が5以上でないと判定された場合は、ステップS908へと処理を移行し、判定結果=Falseとして処理を行い、処理終了後は、ステップS614の処理へと移行する。
【0134】
ステップS902では、サイズ判定処理の対象となっているラベルを利用して楕円近似し、当該作成された楕円の中心座標、幅、高さを取得する。
【0135】
ステップS903では、ステップS902で作成された楕円に幅と高さが存在するか(0より大きいか)を判定する。すなわち、楕円を形成できたかを判定する処理である。
【0136】
ステップS903で、楕円の幅と高さが0より大きいと判定された場合は、ステップS904へと処理を移行する。
【0137】
ステップS903で、楕円の幅と高さが0より大きくないと判定された場合は、ステップS908へと処理を移行し、判定結果としてFalseを設定する。
【0138】
ステップS904では、ステップS902で作成された楕円を塗りつぶし、その面積をチェック範囲画素数として設定する。
【0139】
ステップS905では、破線範囲画像の塗りつぶし面積を破線範囲画素数として設定する。
【0140】
ステップS906では、破線範囲画素数に対するチェック範囲画素数の割合が所定の値(本実施例では0.2)より大きいかを判定する。この判定では、破線範囲の大きさを基準として、チェックの大きさが小さすぎないかを判定する。
【0141】
ステップS906でチェック範囲画素数を破線範囲画素数で割った値が所定の値より大きいと判定された場合は、ステップS907へ処理を移行し判定結果をTrueとして処理を終了する。
【0142】
以上が、
図9を用いたステップS613の詳細な処理の説明である。
【0143】
続けて、ステップS614では、ステップS613のサイズ判定処理の結果がTrueであるかを判定する。サイズ判定結果がTrueであった場合は、ステップS615へ処理を移行する。サイズ判定結果がFalseであった場合は、ステップS609へ処理を戻す。
【0144】
ステップS615では、チェックの形状判定処理を行う。ステップS615の処理の詳細については、
図10のフローチャートを用いて説明する。
【0145】
ステップS1001では、ラベル画像を入力として受付け、ラベル画像を細線化(線の幅を1画素とする処理)して細線化画像を作成する。
【0146】
ステップS1002では、ラベル画像を使って楕円近似し楕円を作成する。
【0147】
ステップS1003では、ステップS1002で作成した楕円の円周長を計算により求め、周長(理論値)とする。
【0148】
ステップS1004では、ステップS1002で作成した楕円とステップS1001で細線化した線が重なる画素数を周長(実測値)とする。
【0149】
ステップS1005では、周長(実測値)を周長(理論値)で割った値が所定の値(本実施例では0.2)より大きいかを判定する。すなわち、近似楕円の周長(理論値)とチェックの周長(実測値)を用いて近似楕円と書かれた線のフィット具合を判定している。
【0150】
ステップS1005で、周長(実測値)を周長(理論値)で割った値が所定の値より大きいと判定された場合は、ラベルが楕円に近い形であると言えるため、ステップS1006へ処理を移行する。
【0151】
ステップS1005で周長(実測値)を周長(理論値)で割った値が所定の値より大きくないと判定された場合は、ラベルが楕円に近い形であるとは言えないため、ステップS1011へと処理を移行し、判定結果=Falseとして処理を終了する。
【0152】
ステップS1006では、ラベル画像を使って凸包矩形画像(内部は塗りつぶす)を作成する。
【0153】
ステップS1007では、ステップS1002で作成した楕円の内部を塗りつぶした楕円画像を作成する。
【0154】
ステップS1008では、凸包矩形画像と楕円画像とを重ね、重なった部分の画像(and画像)を作成する。
【0155】
ステップS1009では、重なった部分の周長を凸包矩形の周長で割った値が所定の値(本実施例では0.7)より大きいかを判定する。
【0156】
重なった部分の周長を凸包矩形の周長で割った値が所定の値より大きいと判定された場合は、処理をステップS1010に移行し、判定結果としてTrueを設定する。
【0157】
重なった部分の周長を凸包矩形の周長で割った値が所定の値より大きくない場合は、処理をステップS1011に移行し、判定結果としてFalseを設定する。
【0158】
これは、楕円近似により作成された楕円とラベル画像から作られる凸包矩形とは重なることがほとんどであるが、まれにほとんど重ならないような楕円が作成されることがあるため、そのようなケースについては判定結果をFalseとするための処理である。
【0159】
まれにほとんど重ならないようなケースとしては、見切れている円であって、ひげの様に飛び出た部分があるケースが想定される。
【0160】
以上が、
図10を用いたステップS615の処理の詳細な説明である。
【0161】
続けて、ステップS616では、形状判定結果=Trueかつ楕円の周長(実測値)(最大)が楕円の周長(実測値)以下であるかを判定する。
【0162】
ステップS616の判定がTrueかつ楕円の周長(実測値)(最大)が楕円の周長(実測値)以下であった場合は、ステップS617へ処理を移行する。
【0163】
ステップS616の判定がTrueではない場合、または楕円の周長(実測値)(最大)が楕円の周長(実測値)以下ではないと判定された場合は、ステップS609へ戻る。
【0164】
ステップS617では、楕円の周長(実測値)(最大)に楕円の周長(実測値)を設定する。
【0165】
ステップS618では、ステップS1002で作成された楕円を、楕円画像(最終)とする。
【0166】
ステップS619では、チェック判定結果(最終)にTrueを設定する。
【0167】
ステップS619の処理まで完了したら、再びステップS609に戻り、次の組み合わせに対する処理を行う。
【0168】
ステップS620では、チェック判定結果(最終)=Trueであるかを判定する。チェック判定結果(最終)がTrueであった場合は、ステップS621に処理を移行する。チェック判定結果(最終)がFalseであった場合は、処理をステップS624に移行する。
【0169】
ステップS621では、チェックの位置判定処理を行う。ステップS621の処理の詳細については、
図11のフローチャートを用いて説明を行う。
【0170】
ステップS1101では、楕円画像(最終)と破線範囲画像とを重ね、重なった部分の画像(and画像)を作成する。
【0171】
ステップS1102では、ステップS1101で作成したand画像の画素数(楕円画像(最終)と破線範囲画像とが重なった部分の画素数)を取得し、and画素数とする。
【0172】
ステップS1103では、楕円画像(最終)から楕円の画素数を取得し、楕円画素数とする。
【0173】
ステップS1104では、破線範囲画像から塗りつぶされた箇所の画素数を取得し、破線範囲画素数と設定する。
【0174】
ステップS1105では、「and画素数/チェック画素数」と「and画素数/破線範囲画素数」のいずれか大きい方が、所定の値(本実施例では0.3)以上であるかを判断する。
【0175】
この判定処理は、破線範囲とチェックとの位置関係に基づき、破線に対してつけられたチェックかを判定する処理である。すなわち、破線につけられるチェックの形式として、チェックが破線内に収まるもの、チェック内に破線が収まるもの、破線とチェックがぴったりあっているもの、破線とチェックが少しずれているもの、破線範囲とチェックが重なっていないものの5パターンがあり、破線とチェックが大きくずれているケースや、破線とチェックが重なっていいないケースについては、Falseと判定される。
【0176】
ステップS1105で、所定の値(0.3)以上であると判定された場合は、チェックがあると判定し、ステップS1106へ処理(確信度を算出する処理)を移行する。
【0177】
ステップS1105で、所定の値(0.3)以上ではないと判定された場合は、チェックがないと判定し、ステップS1111へ処理を移行し、判定結果としてFalseを設定し、本フローチャートの処理を終了する。
【0178】
ステップS1106では、楕円画像(最終)の周長を取得して楕円周長として設定する。
【0179】
ステップS1107では、破線範囲画像の周長を取得して破線周長として設定する。
【0180】
ステップS1108では、and画像の周長を取得してand周長とする。
【0181】
ステップS1109では、「and周長/楕円周長」と「and周長/破線周長」の平均値または1.0のいずれか小さい方を、チェックであることの確信度として設定する。なお、求められた確信度にさらに係数をかけてもよい。
【0182】
OCR結果がTrue(チェックあり)の確信度は、「破線とチェックの一致率」と定義しているため、破線とチェックがぴったりあっているケースを、確信度の最大値の1.0として設定する。そのために、破線とチェックがずれるほど、「破線とチェックの一致率」が下がるようになるよう、上記のA:and周長/楕円周長、B:and周長/破線周長の式を用いている。
【0183】
また、チェックがあると判定される場合のパターンは、破線内にチェックが収まる場合、チェック内に破線が収まる場合、破線とチェックがぴったりあっている場合、破線とチェックが少しずれている場合の4パターンあり、AとBのそれぞれの式によって導き出される確信度は異なる。AとBの式により算出される確信度は、算出する際の観点が異なるだけでどちらも確信度としては正しい数値であるため、両者の平均をとり、確信度として設定する。
【0184】
また、確信度に係数をかけた場合には、確信度が最大値である1.0を超えることになるため、平均値と1.0のいずれか小さい方を採用している。
【0185】
ステップS1110では、判定結果=Trueとして処理を終了する。
【0186】
以上説明した処理により、本発明では、帳票などに記されたマークの読み取り精度を向上させることが可能となる。
【0187】
以上、本発明の実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0188】
また、本発明におけるプログラムは、
図3に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は
図3の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは
図3の各装置の処理方法ごとのプログラムであってもよい。
【0189】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0190】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0191】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0192】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0193】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0194】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適用できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0195】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0196】
100 情報処理システム