JP2021131784A - 画像処理システム、プログラム、画像処理方法 - Google Patents
画像処理システム、プログラム、画像処理方法 Download PDFInfo
- Publication number
- JP2021131784A JP2021131784A JP2020027618A JP2020027618A JP2021131784A JP 2021131784 A JP2021131784 A JP 2021131784A JP 2020027618 A JP2020027618 A JP 2020027618A JP 2020027618 A JP2020027618 A JP 2020027618A JP 2021131784 A JP2021131784 A JP 2021131784A
- Authority
- JP
- Japan
- Prior art keywords
- image
- area
- handwritten
- handwriting
- image processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Character Input (AREA)
- Character Discrimination (AREA)
- Image Analysis (AREA)
Abstract
【課題】 手書き文字を含む非定型帳票から、項目と値を抽出して保存する。【解決手段】 本発明の画像処理システムは、画像から手書き文字の画素を抽出するための学習済みモデルを用いて、原稿をスキャンして得た処理対象画像から手書き文字の画素を抽出し、また、画像から手書き文字が記入された手書き領域を推定するための学習済みモデルを用いて、前記処理対象画像から手書き領域を推定し、さらに、前記処理対象画像から活字文字を含む活字領域を抽出し、前記手書き領域と所定の位置関係にある前記活字領域を特定し、当該手書き領域の文字認識結果と当該特定された活字領域の文字認識結果とを対応づけて保存する。【選択図】 図9
Description
本発明は、スキャン画像内に記載されている手書き文字の認識を行う画像処理システムに関する。
近年、コンピュータの普及に伴う労働環境の変化により、業務で扱う文書の電子化が進んでいる。こうした電子化の対象は帳票にも及んでおり、帳票の情報(項目と値)を読み取り構造化して保存する技術が検討されている。特に、項目や値が記載される位置がまちまちで統一したフォーマットのない帳票(非定型帳票)に対しては、項目と値が記入される位置を予め定義しておくことが出来ない為、帳票の内容や構造を解析して項目と値を逐一探す必要がある。特許文献1では、帳票の内容をOCRしてテキスト化した後、値の可能性のある文字列を検索し、その文字列の周囲で値に対応する項目の文字列を特定して両者を対応付けて保存する技術を開示している。
しかしながら、特許文献1の技術では値の可能性のある文字列、および値に対する項目の文字列は予め登録された文字列のパターンを参照して判断される。そのため、登録されていない項目や値が含まれる帳票には対応できない。
上記課題を解決するために、本発明の画像処理システムは、画像から手書き文字の画素を抽出するための学習済みモデルを用いて、原稿をスキャンして得た処理対象画像から手書き文字の画素を抽出する手書き抽出手段と、画像から手書き文字が記入された手書き領域を推定するための学習済みモデルを用いて、前記処理対象画像から手書き領域を推定する手書き領域推定手段と、前記処理対象画像から活字文字を含む活字領域を抽出する活字領域抽出手段と、前記手書き領域と所定の位置関係にある前記活字領域を特定し、当該手書き領域の文字認識結果と当該特定された活字領域の文字認識結果とを対応づけて保存する保存手段と、を備えることを特徴とする。
本発明によれば、手書き文字を含む帳票画像に含まれる項目と値を対応付けて保存することが出来る。
以下、本発明を実施するための形態について実施例にて具体的な構成を挙げ、図面を用いて説明する。なお、本発明を実現するための構成は実施例に記載された構成のみに限定されるものではない。同様の効果を得られる範囲で実施例に記載の構成の一部を省略または均等物に置き換えてもよい。
(実施例1)
図1は本実施例の画像処理システムの構成例を示した図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104より構成される。画像処理装置101と学習装置102、画像処理サーバ103、OCRサーバ104は、ネットワーク105を介して接続されている。
図1は本実施例の画像処理システムの構成例を示した図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104より構成される。画像処理装置101と学習装置102、画像処理サーバ103、OCRサーバ104は、ネットワーク105を介して接続されている。
画像処理装置101は、MFP等と呼ばれるデジタル複合機などであり、印刷機能やスキャン機能(画像取得部111としての機能)を有する。画像処理装置101は、帳票などの原稿をスキャンして画像データを生成する。スキャンした画像データから、手書きで記入された手書き文字の画素および手書き文字が記入された領域を識別することが可能な学習済みモデル(学習モデルとも言う)を作成するために、サンプルとなる原稿をスキャンして画像データを生成する(以降この画像データを「原稿サンプル画像」と呼称する)。複数枚の原稿をスキャンして原稿サンプル画像を複数得る。これらの原稿には、ユーザにより手書きで文字や記号などの記入が成された原稿が含まれている。そして、画像処理装置101は、ネットワーク105を介して、原稿サンプル画像を学習装置102に送信して、学習済みモデルの作成を行わせる。
また、学習済みモデルが作成された後に、画像処理装置101は、処理対象となる帳票(ユーザにより手書きで記入された文字(手書き記号、手書き図形)が含まれる原稿)をスキャンして処理対象とする画像データを得る(以降この画像データを「処理対象画像」と呼称する)。そして、画像処理装置101は、ネットワーク105を介して、処理対象画像を画像処理サーバ103に送信する。
学習装置102は、画像処理装置101が生成した原稿サンプル画像を蓄積する画像蓄積部115として機能する。またこのようにして蓄積した画像から学習データを生成する学習データ生成部112として機能する。学習データは、手書き抽出および手書き領域推定を行うニューラルネットワークを学習するために用いられるデータである。学習装置102は、生成した学習データを用いて、ニューラルネットワークの学習をおこなう学習部113として機能する。学習部113によって実行される学習処理により、学習結果(ニューラルネットワークのパラメータなどを含む学習済みモデル)が生成される。学習装置102は、学習結果(学習モデル)を、ネットワーク105を介して、画像処理サーバ103に送信する。本実施形態では、機械学習手法の一つとして、多層ニューラルネットワークを用いるディープラーニングを使用するものとするが、ディープラーニングに限るものではなく、その他の学習手法を用いても構わない。
画像処理サーバ103は、処理対象画像を変換する画像変換部114として機能する。画像変換部114は、処理対象画像に基づいて手書きOCRの対象とする画像を生成する。すなわち、画像変換部114は、画像処理装置101が生成した処理対象画像に対して学習済みモデル(学習済みのニューラルネットワーク)を適用することで、手書き画素の抽出と手書き領域の抽出を行う。この際、画像処理サーバ103は、学習装置102が生成した学習結果のニューラルネットワーク(学習済みモデル(学習モデルとも言う))を用いて推論して、処理対象画像中の手書きの画素(画素位置)を抽出(特定)する。そして、当該特定した手書き画素を黒とし、それ以外の画素を白とした手書き抽出画像を得る。さらに、画像処理サーバ103は、画像処理装置101が生成した処理対象画像に対してニューラルネットワークを用いて手書き領域の推定を行う。画像処理サーバ103は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中の手書き文字が記入された領域(手書き領域)を推定(特定)する。例えば、手書きされた文字の画素を含み、かつ、罫線で囲まれた領域(記入欄)などが手書き領域として推定されるものとするが、罫線で囲まれた領域に限るものではない。ここで、この手書き領域の実態は、処理対象画像中の手書き文字を含む部分領域を示す情報であり、例えば、処理対象画像上の特定の画素の位置(座標)と、当該画素位置からの幅や高さから成る情報として表現される。また、手書き領域は、帳票に記入された項目の数に応じて、複数得られる場合がある。
すなわち、手書き抽出画像は、処理対象画像中の手書きと推定された画素のみを抜き出した画像である。一方、手書き領域は、処理対象画像における個々の項目に対する手書き記入部分の領域を示す情報である。よって、手書き領域に基づいて手書き抽出画像上の部分領域を決定することで、手書き抽出画像内の手書き文字を、各項目に対して記入された部分として分割して扱うことができる。そして、画像変換部114は、手書き抽出画像と手書き領域とをOCRサーバ104に送信する。これにより、OCRサーバ104に、手書き抽出画像上の領域であって、推定した各手書き領域に該当する領域を、それぞれ手書きOCRの対象領域とすることを指示するものである。
また、画像変換部114は、処理対象画像から手書き抽出画像に含まれる手書き画素を除去した画像(手書き文字以外の画素(活字等に対応する部分)が残るため、以降「活字画像」と呼称する)を生成する。そして、画像変換部114は、活字画像上の領域であって、活字OCRの対象とする活字を含む領域(以降この領域を「活字領域」と呼称する)の情報を生成する。活字領域の生成については後述する。そして、画像変換部114は、活字画像と活字領域とをOCRサーバ104に送信する。これにより、OCRサーバ104に、活字画像上の活字領域を、それぞれ活字OCRすることを指示するものである。
また、画像変換部114は、OCRサーバ104から手書きOCR結果および活字OCR結果を受信する。そしてこれを統合し、テキストデータとして画像処理装置101に送信する。以降このテキストデータを「帳票テキストデータ」と呼称する。
OCRサーバ104は、手書きOCR部116、活字OCR部117としての機能を備える。OCRサーバ104は、手書き抽出画像と手書き領域とを受信すると、手書き抽出画像中の手書き領域に対して、手書き文字を文字認識するのに適した、手書き文字用のOCR処理を行ってテキストデータ(OCR結果)を取得する。手書きOCR部116は、当該手書きOCR結果のテキストデータを画像処理サーバ103に送信する。また、OCRサーバ104は、活字画像と活字領域を受信すると、活字画像中の活字領域に対して、活字文字を文字認識するのに適した活字用のOCR処理を行ってテキストデータを取得する。活字OCR部117は、当該活字OCRテキストデータを画像処理サーバ103に送信する。
<学習シーケンス>
本システムにおける学習シーケンスについて説明する。図3(a)は画像処理システムの学習シーケンスを示す図である。
本システムにおける学習シーケンスについて説明する。図3(a)は画像処理システムの学習シーケンスを示す図である。
ステップ301(以降の説明においてS301等と表記する)において、ユーザが複数のサンプル原稿を用意して、原稿の読取指示を行うと、画像取得部111は、複数のサンプル原稿を読みとって、複数枚の原稿サンプル画像を生成する(S302)。
上述のように生成された原稿サンプル画像は、学習データ生成部112に送信される(S303)。なお、このとき、原稿サンプル画像にID情報を付与するとよい。このID情報は例えば、画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報として、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するためのグループ識別情報であってもよい。
画像が送信されてくると、学習データ生成部112は、画像蓄積部115に原稿サンプル画像を蓄積する(S304)。
ユーザが原稿サンプル画像に関する正解データの付与指示を学習装置102に行うと(S305)、学習データ生成部112は当該正解データ(手書き画素の情報と、手書き領域の情報)を取得する。そして原稿サンプル画像に紐づけて画像蓄積部115に蓄積する(S306)。紐づけられた原稿サンプル画像と正解データは、ニューラルネットワークの学習に用いるデータである。正解データの付与方法については後述する。そして、学習データ生成部112は、このようにして蓄積したデータに基づいて、学習処理に用いるための学習データを生成する(S307)。このとき、特定のID情報に基づく原稿サンプル画像のみを用いて学習データを生成してもよい。その後、学習データ生成部112は、当該生成した学習データを学習部113に送信する(S308)。なお、特定のID情報が付与されている画像のみで学習データを生成した場合は、ID情報も併せて送信する。学習部113は、受信した学習データに基づき学習処理を行い、学習モデルを更新する(S309)。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習をおこなってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境(特定の装置やユーザグループなど)に特化した学習モデルを構築することができる。
<利用シーケンス>
本システムにおける利用シーケンスについて説明する。図3(b)は画像処理システムの利用シーケンスを示した図である。
本システムにおける利用シーケンスについて説明する。図3(b)は画像処理システムの利用シーケンスを示した図である。
S351において、ユーザが原稿(帳票)の読取指示を行うと、画像取得部111は、原稿を読み取って処理対象画像を生成する(S352)。ここで読み取られる画像は、例えば図4に示すような帳票400や帳票450である。これらの帳票は氏名記入欄403および451や、住所記入欄401および452、電話番号記入欄402および453を備え、それぞれ、氏名や住所、電話番号が手書きで記入されている。しかし、これら記入欄の配置(帳票のレイアウト)は、帳票作成元のユーザにより決定されるため、帳票毎に異なる。レイアウトが予め定められていない帳票を、非定型帳票と呼ぶ。
上述のように読み取られた処理対象画像は、画像変換部114に送信される(S353)。なお、このとき、送信データにID情報を付与するとよい。
画像変換部114は、処理対象画像のデータを受信すると、処理対象画像のテキスト化指示を受け付ける(S354)。このとき、画像変換部114は、画像取得部111をOCR処理結果のデータの返信先として記憶しておく。手書き文字の加工指示を受け付けた画像変換部114は、最新の学習モデルを学習部113に要求する(S355)。この要求に応じて、学習部113は最新の学習モデルを画像変換部114に送信する(S356)。画像変換部114からの要求時にID情報が指定されていた場合は、ID情報に対応する学習モデルの中で最新の学習モデルを送信する。画像変換部114は、取得した学習モデルに基づいて、処理対象画像に対して、手書き抽出および手書き領域推定を行う(S357)。続けて、画像変換部114は処理対象画像から活字画像と活字領域とを生成する(S358)。その後、各手書き領域について、その手書き領域に最も近い活字領域を探し、手書き領域を値に関する領域、活字領域を項目に関する領域として対応付ける(S359)。
そして、手書き抽出画像の中から、値に関する領域に該当する箇所の部分画像(手書き抽出画像)を手書きOCR部116に送信する(S360)。手書きOCR部116は、受信した手書き抽出画像に対して手書きOCR処理を施し、手書き文字画像の文字認識結果であるテキストデータ(手書き)を取得する(S361)。手書きOCR部116は、当該取得したテキストデータ(手書き)を画像変換部114に送信する(S362)。
また、活字画像の中から、項目に関する領域に該当する箇所の部分画像(活字画像)を活字OCR部117に送信する(S363)。活字OCR部117は、活字画像に活字OCR処理を施し、活字文字画像のテキストデータ(活字)を取得する(S364)。そして、活字OCR部117は、当該取得したテキストデータ(活字)を画像変換部114に送信する(S365)。画像変換部114は、こうして得られた項目に関するテキストデータ(活字)と、値に関するテキストデータ(手書き)とを、帳票テキストデータとして画像取得部111に送信する(S366)。帳票テキストデータを取得した画像取得部111は、帳票テキストデータの利用画面をユーザに提示する(S367)。このあと、画像取得111は、帳票テキストデータの利用用途に応じて、帳票テキストデータを出力する。例えば、別体外部の業務システム(不図示)に送信したり、印刷して出力する。
<装置構成>
上述したシステムを実現するために、各装置は次のような構成を備える。図2(a)は画像処理装置の構成を示す図である。図2(b)は学習装置の構成を示す図である。図2(c)は画像処理サーバの構成を示す図である。図2(d)はOCRサーバの構成を示す図である。
上述したシステムを実現するために、各装置は次のような構成を備える。図2(a)は画像処理装置の構成を示す図である。図2(b)は学習装置の構成を示す図である。図2(c)は画像処理サーバの構成を示す図である。図2(d)はOCRサーバの構成を示す図である。
図2(a)に示すように、画像処理装置101は、次を備える。CPU201、ROM202、RAM204、プリンタデバイス205、スキャナデバイス206、原稿搬送デバイス207、ストレージ208、入力デバイス209、表示デバイス210、及び外部インタフェース211を備える。各デバイスは、データバス203によって相互通信可能に接続されている。
CPU201は、画像処理装置101を統括的に制御するためのコントローラである。CPU201は、ROM202に格納されているブートプログラムによりOS(オペレーティングシステム)を起動する。このOS上で、ストレージ208に記憶されているコントローラプログラムが実行される。コントローラプログラムは、画像処理装置101を制御するためのプログラムである。CPU201は、データバス203によって接続されている各デバイスを統括的に制御する。RAM204は、CPU201の主メモリやワークエリア等の一時記憶領域として動作する。
プリンタデバイス205は、画像データを用紙(記録材、シート)上に印刷するものである。これには感光体ドラムや感光体ベルトなどを用いた電子写真印刷方式や、微小ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式などがあるが、どの方式でもかまわない。スキャナデバイス206は、CCDなどの光学読取装置を用いて紙などの原稿上の走査を行い、電気信号データを得てこれを変換し、画像データを生成する。また、ADF(オート・ドキュメント・フィーダ)などの原稿搬送デバイス207は、原稿搬送デバイス207上の原稿台に載置された原稿を1枚ずつスキャナデバイス206に搬送する。
ストレージ208は、HDDやSSDなどの、読み出しと書き込みが可能な不揮発メモリであり、ここには、前述のコントローラプログラムなど、様々なデータが記録される。入力デバイス209は、タッチパネルやハードキーなどから構成さる入力装置である。入力デバイス209は、ユーザの操作指示を受け付ける。そして、指示位置を含む指示情報をCPU201に伝達する。表示デバイス210は、LCDやCRTなどの表示装置である。表示デバイス210は、CPU201が生成した表示データを表示する。CPU201は、入力デバイス209より受信した指示情報と、表示デバイス210に表示させている表示データとから、いずれの操作が成されたかを判定する。そしてこの判定結果に応じて、画像処理装置101を制御するとともに、新たな表示データを生成し表示デバイス210に表示させる。
外部インタフェース211は、LANや電話回線、赤外線といった近接無線などのネットワークを介して、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース211は、学習装置102やPC(不図示)などの外部機器より、PDLデータを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解釈し、画像を生成する。生成した画像は、プリンタデバイス205により印刷したり、ストレージ108に記憶したりする。また、外部インタフェース211は、画像処理サーバ103などの外部機器より画像データを受信する。受信した画像データをプリンタデバイス205により印刷したり、ストレージ108に記憶したり、外部インタフェース211により、他の外部機器に送信したりする。
図2(b)の学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、GPU239を備える。各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御するためのコントローラである。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ235に記憶されている学習データ生成プログラムおよび学習プログラムを実行する。CPU231が学習データ生成プログラムを実行することより、学習データを生成する。また、CPU231が学習プログラムを実行することにより、手書き抽出を行うニューラルネットワークを学習する。CPU231は、データバス233などのバスを介して各部を制御する。
RAM234は、CPU231のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ235は、読み出しと書き込みが可能な不揮発メモリであり、前述の学習データ生成プログラムや学習プログラムを記録する。
入力デバイス236は、マウスやキーボードなどから構成さる入力装置である。表示デバイス237は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース238は、図2(a)を用いて説明した外部インタフェース211と同様である。
GPU239は、画像処理プロセッサであり、CPU231と協調して画像データの生成やニューラルネットワークの学習を行う。
図2(c)の画像処理サーバ103は、CPU261、ROM262、RAM264、ストレージ265、入力デバイス266、表示デバイス267、外部インタフェース268を備える。各部は、データバス263を介して相互にデータを送受信することができる。
CPU261は、画像処理サーバ103の全体を制御するためのコントローラである。CPU261は、不揮発メモリであるROM262に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ265に記憶されている画像処理サーバプログラムを実行する。CPU261がこの画像処理サーバプログラムを実行することより、処理対象画像に対して手書き抽出および手書き領域推定を行う。CPU261は、データバス263などのバスを介して各部を制御する。
RAM264は、CPU261のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記録する。
入力デバイス266は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス267は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース268は、図2(a)を用いて説明した外部インタフェース211と同様である。
図2(d)のOCRサーバ104は、CPU291、ROM292、RAM294、ストレージ295、入力デバイス296、表示デバイス297、外部インタフェース298を備える。各部は、データバス293を介して相互にデータを送受信することができる。
CPU291は、OCRサーバ104の全体を制御するためのコントローラである。CPU291は、不揮発メモリであるROM292に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ295に記憶されているOCRサーバプログラムを実行する。CPU291がこのOCRサーバプログラムを実行することより、手書き抽出画像や活字画像の手書き文字や活字を認識してテキスト化する。CPU291は、データバス293などのバスを介して各部を制御する。
RAM294は、CPU291のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ295は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記録する。
入力デバイス296は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス297は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース298は、図2(a)を用いて説明した外部インタフェース211と同様である。
<操作画面>
S301に示したユーザの指示は、画像処理装置101において、次のような操作画面を介して行われる。図5(a)は、サンプル原稿をスキャンして学習モデルを作成指示する際の操作画面(以下、学習原稿スキャン画面と称す)を示す図である。
S301に示したユーザの指示は、画像処理装置101において、次のような操作画面を介して行われる。図5(a)は、サンプル原稿をスキャンして学習モデルを作成指示する際の操作画面(以下、学習原稿スキャン画面と称す)を示す図である。
学習原稿スキャン画面500は、表示デバイス210に表示される画面の一例である。図5(a)に示すように、学習原稿スキャン画面500は、プレビュー領域501、スキャンボタン502、送信開始ボタン503を備える。
スキャンボタン502はスキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、原稿サンプル画像が生成され、プレビュー領域501に表示される。スキャナデバイス206に別の原稿をセットし、スキャンボタン502を再び押すことで、複数の原稿サンプル画像をまとめて保持しておくこともできる。
原稿が読み取られると、送信開始ボタン503が押下可能となる。送信開始ボタン503がユーザにより選択指示されると、原稿サンプル画像が学習装置102に送信される。
S305に示したユーザによる正解データの付与指示は、次のような操作画面(図5(b)〜(c))で行われる。図5(b)は、原稿サンプル画像において手書きされた文字部分の画素を指定する際の操作画面(以下、手書き抽出正解データ作成画面と称す)を示す図である。また、図5(c)は、原稿サンプル画像において手書きされた文字を含む手書き領域を指定する際の操作画面(以下、手書き領域推定正解データ作成画面と称す)を示す図である。ユーザは、手書き抽出正解データ作成画面および手書き領域推定正解データ作成画面の表示内容に基づいて操作し、正解データを作成する。
手書き抽出正解データ作成画面520は、表示デバイス237に表示される画面の一例である。図5(b)に示すように、手書き抽出正解データ作成画面520は、画像表示領域521、画像選択ボタン522、拡大ボタン523、縮小ボタン524、抽出ボタン525、推定ボタン526、保存ボタン527を備える。
画像選択ボタン522は、画像処理装置101から受信し、画像蓄積部115に蓄積されている原稿サンプル画像を選択するためのボタンである。画像選択ボタン522を指示すると、選択画面(不図示)が表示され、原稿サンプル画像を選択することができる。原稿サンプル画像を選択すると、画像表示領域521に選択した原稿サンプル画像が表示される。ユーザは画像表示領域521に表示された原稿サンプル画像に対して操作し、正解データを作成する。
拡大ボタン523と縮小ボタン524は、画像表示領域521の表示を拡大あるいは縮小するためのボタンである。拡大ボタン523や縮小ボタン524を指示することにより、正解データの作成が行いやすいよう、画像表示領域521に表示されている原稿サンプル画像を拡大および縮小して表示することができる。
抽出ボタン525および推定ボタン526は、手書き抽出と手書き領域推定のいずれの正解データを作成するかを選択するためのボタンである。いずれかを選択すると、選択したボタンは強調して表示される。抽出ボタン525を選択すると、手書き抽出の正解データを作成する状態となる。このボタンを選択した場合、ユーザは、手書き抽出の正解データを次のように操作して作成する。ユーザは、図5(b)に示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されている原稿サンプル画像中の手書き文字をなぞるようにして指定することにより、手書き文字に対応する画素を選択する。学習データ生成部112は、この操作を受信すると、上記操作により選択された原稿サンプル画像上の画素位置を記録する。すなわち、手書き抽出の正解データは、原稿サンプル画像上の、手書きに該当する画素の位置である。
一方、推定ボタン526を選択すると、手書き領域推定の正解データを作成する状態となる。このボタンを選択した場合、ユーザは、手書き領域推定の正解データを次のように操作して作成する。ユーザは、図5(c)に点線枠で示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されている原稿サンプル画像中の手書き文字が記入される罫線に囲まれた領域の位置(記入欄内であり罫線は含まない)を選択する。これはすなわち、帳票の記入欄毎に領域を選択する操作である。学習データ生成部112は、この操作を受信すると、上記操作により選択された領域を記録する。すなわち、手書き領域推定の正解データは、原稿サンプル画像上の、記入欄内の領域(手書き文字が記入され得る領域)である(以降、手書き文字が記入される領域を「手書き領域」と呼称する)。
保存ボタン527は、作成された正解データを保存するためのボタンである。
手書き抽出の正解データは、次のような画像として、画像蓄積部115に蓄積される。手書き抽出の正解データを示す画像のサイズは、原稿サンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択された手書き文字位置の画素の値は、手書きを示す値(例えば0、以降も同様)である。それ以外の画素の値は、手書きではないことを示す値(例えば255、以降も同様)である。以降、このような手書き抽出の正解データである画像を「手書き抽出正解画像」と呼称する。手書き抽出正解画像の例を図4(c)に示す。
また、手書き領域推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。手書き領域推定の正解データを示す画像のサイズは、原稿サンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択された手書き領域に該当する画素の値は、手書き領域であることを示す値(例えば0、以降も同様)である。また、それ以外の画素の値は手書き領域ではないことを示す値(例えば255、以降も同様)である。以降、このような手書き領域推定の正解データである画像を「手書き領域推定正解画像」と呼称する。手書き領域推定正解画像の例を図4(d)に示す。
S351に示したユーザの指示は、画像処理装置101において、次のような操作画面を介して行われる。図5(d)は、処理対象の帳票をスキャンして処理する際に表示される操作画面(以下、帳票処理画面と称す)を示す図である。図5(d)に示すように、帳票処理画面520は、プレビュー領域541、スキャンボタン542、送信開始ボタン543を備える。
スキャンボタン542はスキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、処理対象画像が生成され、プレビュー領域541に表示される。
原稿が読み取られると、送信開始ボタン543が押下可能となる。送信開始ボタン543がユーザにより押下されると、処理対象画像が画像処理サーバ103に送信される。
<原稿サンプル画像生成処理>
次に、画像処理装置101による原稿サンプル画像生成処理について説明する。図6(a)は原稿サンプル画像生成処理のフローを示す図である。この処理は、CPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
次に、画像処理装置101による原稿サンプル画像生成処理について説明する。図6(a)は原稿サンプル画像生成処理のフローを示す図である。この処理は、CPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
CPU201は、S601において、原稿のスキャン指示が成されたか否かを判定する。ユーザが、入力デバイス209を介して、原稿をスキャンするための所定の操作(スキャンボタン502の指示)を行った場合には、YESと判定し、S602に遷移する。そうでなければ、NOと判定し、S604に遷移する。
CPU201は、S602において、スキャナデバイス206や原稿搬送デバイス207を制御して、サンプルの原稿をスキャンして原稿サンプル画像を生成する。原稿サンプル画像は、グレースケールの画像データとして生成されるものとするが、これに限るものではなく、カラーの多値画像であってもよい。
CPU201は、S603において、S602で生成した原稿サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。
CPU201は、S604において、処理を終了するか否かを判定する。ユーザが、原稿サンプル画像生成処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S601に遷移する。
以上の処理によって、画像処理装置101は、原稿サンプル画像を生成して学習装置102に送信する。ユーザの操作や、原稿搬送デバイス207に載置した原稿枚数に応じて、原稿サンプル画像が複数取得される。
<原稿サンプル画像受信処理>
次に、学習装置102による原稿サンプル画像受信処理について説明する。図6(b)は原稿サンプル画像受信処理のフローを示す図である。この処理は、CPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
次に、学習装置102による原稿サンプル画像受信処理について説明する。図6(b)は原稿サンプル画像受信処理のフローを示す図である。この処理は、CPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
CPU231は、S621において、原稿サンプル画像を受信したか否かを判定する。CPU231は、外部インタフェース238を介して画像データを受信していたならば、YESと判定し、S622に遷移する。そうでなければ、NOと判定し、S623に遷移する。
CPU231は、S622において、受信した原稿サンプル画像を、ストレージ235の所定の領域に記録する。
CPU231は、S623において、処理を終了するか否かを判定する。ユーザが、学習装置102の電源のOFFなどの、原稿サンプル画像受信処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S621に遷移する。
<正解データ生成処理>
次に、学習装置102による正解データ生成処理について説明する。図6(c)は正解データ生成処理のフローを示す図である。
次に、学習装置102による正解データ生成処理について説明する。図6(c)は正解データ生成処理のフローを示す図である。
この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
CPU231は、S641において、原稿サンプル画像の選択指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、原稿サンプル画像を選択するための所定の操作(画像選択ボタン522の指示)を行った場合には、YESと判定し、S642に遷移する。そうでなければ、NOと判定し、S643に遷移する。
CPU231は、S642において、S641でユーザが選択した原稿サンプル画像を、ストレージ235から読み出して操作画面(画像表示領域521)に表示する。
CPU231は、S643において、ユーザが正解データの入力指示を行ったか否かを判定する。ユーザが、入力デバイス236を介して、図5(b)(c)を用いて前述したように、原稿サンプル画像上の手書き文字をなぞる、あるいは、手書き文字が記入される手書き領域を指定するための操作を行ったならば、YESと判定し、S644に遷移する。そうでなければ、NOと判定し、S647に遷移する。
CPU231は、S644において、ユーザが入力した正解データは、手書き抽出の正解データの作成操作であるか、手書き領域の正解データの作成操作であるかを判定する。CPU231は、ユーザが手書き抽出の正解データ作成を指示する操作を行っていたならば(抽出ボタン525の選択)、YESと判定し、S645に遷移する。一方、手書き領域推定の正解データを指示する操作である場合(推定ボタン526を選択している)、S646に遷移する。
CPU231は、S645において、ユーザが入力した手書き抽出の正解データを、RAM234に一時的に記憶する。前述のとおり、手書き抽出の正解データは、原稿サンプル画像中の手書きに該当する画素の位置情報である。
CPU231は、S646において、ユーザが入力した手書き領域推定の正解データをRAM234に一時的に記憶する。前述のとおり、手書き領域推定の正解データは、原稿サンプル画像上の、手書き領域に該当する領域情報である。
CPU231は、S647において、正解データの保存指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、正解データを保存するための所定の操作(保存ボタン527の指示)を行った場合には、YESと判定し、S648に遷移する。そうでなければ、NOと判定し、S650に遷移する。
CPU231は、S648において、手書き抽出正解画像を生成し、手書き抽出の正解データとして保存する。CPU231は、次のようにして手書き抽出正解画像を生成する。CPU231は、手書き抽出正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。当該画像の全ての画素を、手書きではないことを示す値にする。次いで、S645においてRAM234に一時的に記憶した位置情報を参照し、手書き抽出正解画像上の該当する位置の画素の値を、手書きであることを示す値に変更する。このようにして生成した手書き抽出正解画像を、S642で読み出した原稿サンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
CPU231は、S649において、手書き領域推定正解画像を生成し、手書き領域推定の正解データとして保存する。CPU231は、次のようにして手書き領域推定正解画像を生成する。CPU231は、手書き領域推定正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。当該画像の全ての画素を、手書き領域ではないことを示す値にする。次いで、S646においてRAM234に一時的に記憶した領域情報を参照し、手書き領域推定正解画像上の該当する領域内の画素の値を、手書き領域であることを示す値に変更する。このようにして生成した手書き領域推定正解画像を、S642で読み出した原稿サンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
CPU231は、S650において、処理を終了するか否かを判定する。ユーザが、正解データ生成処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S641に遷移する。
<学習データ生成処理>
次に、学習装置102による学習データ生成処理について説明する。図7(a)は学習データ生成処理のフローを示す図である。この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
次に、学習装置102による学習データ生成処理について説明する。図7(a)は学習データ生成処理のフローを示す図である。この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
まずCPU231は、S701において、ストレージ235に記憶している原稿サンプル画像を選択して読み出す。図6(b)のフローチャートのS622の処理ステップにより、ストレージ235には複数の原稿サンプル画像が記録されているので、その中からランダムにひとつを選択する。
CPU231は、S702において、ストレージ235に記憶している手書き抽出正解画像を読み出す。S648の処理によって、S701で読み出した原稿サンプル画像に関連付けられた手書き抽出正解画像がストレージ235に記憶されているので、これを読み出す。
CPU231は、S703において、ストレージ235に記憶している手書き領域推定正解画像を読み出す。S649の処理によって、S701で読み出した原稿サンプル画像に関連付けられた手書き領域推定正解画像がストレージ235に記憶されているので、これを読み出す。
CPU231は、S704において、S701で読み出した原稿サンプル画像中の一部(例えば縦x横=256x256の大きさ)を切り出して、学習データに用いる入力画像を生成する。切り出す位置はランダムに決定する。
CPU231は、S705において、S702で読み出した手書き抽出正解画像中の一部を切り出して、手書き抽出の学習データに用いる正解ラベル画像(教師データ、正解画像データ)を生成する。以降この正解ラベル画像を「手書き抽出正解ラベル画像」と呼称する。切り出す位置およびサイズは、S704で原稿サンプル画像から入力画像を切り出した位置およびサイズと同様とする。
CPU231は、S706において、S703で読み出した手書き領域推定正解画像中の一部を切り出して、手書き領域推定の学習データに用いる正解ラベル画像を生成する(以降この正解ラベル画像を「手書き領域推定正解ラベル画像」と呼称する)。切り出す位置およびサイズは、S704で原稿サンプル画像から入力画像を切り出した位置およびサイズと同様とする。
CPU231は、S707において、S704で生成した入力画像と、S706で生成した手書き抽出正解ラベル画像とを対応付け、手書き抽出の学習データとしてストレージ235の所定の領域に保存する。本実施例では、図8(a)のような学習データが保存される。
CPU231は、S708において、S704で生成した入力画像と、S707で生成した手書き領域推定正解ラベル画像とを対応付け、手書き領域推定の学習データとしてストレージ235の所定の領域に保存する。本実施例では、図8(b)のような学習データが保存される。
CPU231は、S709において、学習データ生成処理を終了するか否かを判定する。CPU231は、予め決定した学習データの数(本フローチャートの開始時に、学習置102の入力デバイス236を介して、ユーザが指定するなどして決定)だけ学習データを生成していたならば、YESと判定し、処理を終了する。そうでなければ、NOと判定し、S701に遷移する。
以上により、手書き画素の抽出を行うためのニューラルネットワークの学習処理に使用される学習データと、手書き領域推定を行うためのニューラルネットワークの学習処理に使用される学習データとが生成される。ニューラルネットワークの汎用性を高めるために、学習データの加工を行っても良い。例えば、入力画像を所定の範囲(例えば、50%〜150%の間)からランダムに選択して決定する変倍率で変倍する。手書き抽出および手書き領域推定の正解ラベル画像も同様に変倍する。あるいは、入力画像を所定の範囲(例えば、−10度〜10度の間)からランダムに選択して決定する回転角度で回転する。手書き抽出および手書き領域推定の正解ラベル画像も同様に回転する。変倍や回転を考慮すれば、S704やS705、S706で入力画像や手書き抽出および手書き領域推定の正解ラベル画像を切り出す際に、少し大きめのサイズ(例えば、縦x横=512x512の大きさ)で切り出す。そして、変倍および回転後に、最終的な入力画像や手書き抽出および手書き領域推定の正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう、中心部分から切り出す。あるいは、入力画像の各画素の輝度を変更して加工してもよい。すなわち、ガンマ補正を用いて入力画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1〜10.0の間)からランダムに選択して決定する。
<学習処理>
次に、学習装置102による学習処理について説明する。図7(b)は学習処理のフローを示す図である。この処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施例において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
次に、学習装置102による学習処理について説明する。図7(b)は学習処理のフローを示す図である。この処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施例において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
まずCPU231は、S731において、手書き抽出と手書き領域推定のニューラルネットワークをそれぞれ初期化する。すなわち、CPU231は、2つのニューラルネットワークを構築し、これらニューラルネットワークに含まれる各パラメタの値を、ランダムに決定して初期化する。これらニューラルネットワークの構造は、様々なものを用いることができるが、例えば、公知技術であるFCN(Fully Convolutional Networks)の形態を取り得る。手書き領域推定のニューラルネットワークについては、他にも、例えば、公知技術であるYOLO(You Only Look Once)の形態を取り得る。
CPU231は、S732において、学習データを取得する。CPU231は、図7(a)のフローチャートに示した、学習データ生成処理を実行して、所定の数の学習データ(例えば10個のミニバッチサイズの学習データ)を取得する。
CPU231は、S733において、手書き抽出のニューラルネットワークの誤差を算出する。すなわち、手書き抽出の各学習データに含まれる入力画像を手書き抽出のニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書きであると判定された画素は、画素の値が手書きを示す値、そうではないと判定された画素は、画素の値が手書きではないことを示す値である画像である。そして、当該出力と学習データに含まれる手書き抽出正解ラベル画像との差を評価して誤差を求める。当該評価には指標として交差エントロピーを用いることができる。
CPU231は、S734において、手書き抽出のニューラルネットワークのパラメタを調整する。すなわち、S733において算出した誤差をもとに、バックプロパゲーション法によって手書き抽出のニューラルネットワークのパラメタ値を変更するものである。
CPU231は、S735において、手書き領域推定のニューラルネットワークの誤差を算出する。すなわち、手書き領域推定の各学習データに含まれる入力画像を手書き領域推定のニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書き領域であると判定された画素は、画素の値が手書き領域を示す値、そうではないと判定された画素は、画素の値が手書き領域ではないことを示す値である画像である。そして、当該出力と学習データに含まれる手書き領域推定正解ラベル画像との差を評価して誤差を求める。当該評価の指標には、手書き抽出と同様、交差エントロピーを用いることができる。
CPU231は、S736において、手書き領域推定のニューラルネットワークのパラメタを調整する。すなわち、S735において算出した誤差をもとに、バックプロパゲーション法によって手書き領域推定のニューラルネットワークのパラメタ値を変更するものである。
CPU231は、S737において、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S732〜S736の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザが操作入力するなどして決定することができる。所定回数行った場合には、YESと判定し、S738に遷移する。そうでない場合は、S732に遷移し、ニューラルネットワークの学習を続ける。
CPU231は、S738において、学習結果として、S734とS736において調整した手書き抽出および手書き領域推定のニューラルネットワークのパラメタ(すなわち、学習済みの学習モデル)を、それぞれ、画像処理サーバ103に送信する。
<帳票テキスト化依頼処理>
次に、画像処理装置101による、帳票テキスト化依頼処理について説明する。画像処理装置101は、手書き文字が記入された帳票をスキャンして処理対象画像を生成する。そして、処理対象画像データを画像処理サーバ103に送信して、帳票テキスト化を依頼する。図9(a)は帳票テキスト化依頼処理のフローを示す図である。この処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
次に、画像処理装置101による、帳票テキスト化依頼処理について説明する。画像処理装置101は、手書き文字が記入された帳票をスキャンして処理対象画像を生成する。そして、処理対象画像データを画像処理サーバ103に送信して、帳票テキスト化を依頼する。図9(a)は帳票テキスト化依頼処理のフローを示す図である。この処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
まずCPU201は、S901において、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして処理対象画像を生成する。処理対象画像は、グレースケールの画像データとして生成される。
CPU201は、S902において、S901で生成した処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。
CPU201は、S903において、画像処理サーバ103から、処理結果を受信したか否かを判定する。画像処理サーバ103から、外部インタフェース211を介して、処理結果を受信していた場合には、YESと判定し、S904に遷移する。そうでない場合には、NOと判定し、S903の処理ステップを繰り返す。
CPU201は、S904において、画像処理サーバ103から受信した処理結果、すなわち、S901で生成した処理対象画像に含まれる手書き文字や活字を認識して生成した帳票テキストデータを出力する。例えば、ユーザが、入力デバイス209を操作して設定した送信宛先に、外部インタフェース211を介して、帳票テキストデータを送信することができる。
<帳票テキスト化処理>
次に、画像処理サーバ103による帳票テキスト化処理について説明する。図9(b)は帳票テキスト化処理のフローを示す図である。図10は、帳票テキスト化処理における、データ生成処理の概要を示す図である。画像変換部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、当該スキャン画像データに含まれる活字や手書き文字をOCRしてテキストデータを得る。活字に対するOCRは、活字OCR部117に実行させる。手書き文字に対するOCRは、手書きOCR部116に実行させる。帳票テキスト化処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
次に、画像処理サーバ103による帳票テキスト化処理について説明する。図9(b)は帳票テキスト化処理のフローを示す図である。図10は、帳票テキスト化処理における、データ生成処理の概要を示す図である。画像変換部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、当該スキャン画像データに含まれる活字や手書き文字をOCRしてテキストデータを得る。活字に対するOCRは、活字OCR部117に実行させる。手書き文字に対するOCRは、手書きOCR部116に実行させる。帳票テキスト化処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
まずCPU261は、S951において、手書き抽出を行うニューラルネットワーク(学習モデル)と、手書き領域推定を行うニューラルネットワーク(学習モデル)をロードする。CPU261は、図7(b)のフローチャートのS731の場合と同一のニューラルネットワークを構築する。そして、CPU261は、学習装置102からS738の処理で送信された学習結果(手書き抽出を行うニューラルネットワークのパラメタと手書き領域推定を行うニューラルネットワークのパラメタ)を、構築したニューラルネットワークにそれぞれ反映することで、学習済みのニューラルネットワーク(学習モデル)をロードする。
CPU261は、S952において、処理対象画像を、画像処理装置101より受信したかを判定する。外部インタフェース268を介して、処理対象画像を受信していたならば、YESと判定し、S953に遷移する。そうでなければ、NOと判定し、S965に遷移する。例として、ここでは、処理対象画像として、図10の帳票400(図4に示した帳票400)を受信したものとする。
CPU261は、S953において、画像処理装置101から受信した処理対象画像から手書き画素を抽出する。CPU261は、処理対象画像を、S951で構築した手書き抽出を行うニューラルネットワークに入力して、手書き画素を推定させる。ニューラルネットワークの出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズであり、予測結果として手書きであると判定された画素には、手書きであること示す値、手書きではないと判定された画素には、手書きではないことを示す値が、それぞれ記録された二値画像データが得られる。そして、当該画像データ中の手書きであることを示す値の画素と同じ位置の画素を、処理対象画像が抽出して手書き抽出画像を生成する。これにより図10の手書き抽出画像1001のように、手書きと判断された画素のみが含まれる画像が得られる。
CPU261は、S954において、画像処理装置101から受信した処理対象画像から手書き領域を推定する。CPU261は、処理対象画像を、S951で構築した手書き領域推定を行うニューラルネットワークに入力して、手書き領域を推定させる。ニューラルネットワークの出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズであり、予測結果として手書き領域であると判定された画素には、手書き領域であること示す値、手書き領域ではないと判定された画素には、手書き領域ではないことを示す値が、それぞれ記録された二値画像データが得られる。S305において、ユーザは、手書き領域推定の正解データを、罫線枠(記入欄)を考慮して、帳票の記入項目ごとに作成した。手書き領域推定を行うニューラルネットワークはこれを学習しているため、記入欄(記入項目)ごとに手書き領域と推定される画素を出力する。なお、手書き領域推定のニューラルネットワークの出力は、画素毎の予測結果であるため、推定された手書き領域の画素は必ずしも矩形を構成するものではない。本実施形態では手書き領域を扱いやすくするため、当該推定された手書き領域に外接する外接矩形を設定する。外接矩形の設定には公知の技術を適用し実現することができる。それぞれの外接矩形は、処理対象画像上における左上端点と幅および高さから成る情報として表現することができる。このようにして得た矩形情報群を手書き領域とする。図10の1002に、処理対象画像(帳票400)に対して推定した手書き領域の位置を、点線枠で示して例示する(1011〜1013)。
CPU261は、S955において、S953で得た手書き抽出のニューラルネットワークの出力に基づいて、処理対象画像から手書きと判断された画素を除去することにより、活字画像を生成する。CPU261は、処理対象画像の画素であって、ニューラルネットワークが出力した画像データにおいて画素値が手書きを示す値である画素と同位置の画素を、白(RGB=(255,255,255))に変更する。これにより、図10の活字画像1003が得られる。
CPU261は、S956において、S955で生成した活字画像から活字領域を抽出する。CPU261は、活字領域として、活字を内包する活字画像上の部分領域を抽出する。ここで部分領域とは、印刷内容のまとまり(オブジェクト)であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、あるいは、図や写真、表、グラフ、といったオブジェクトである。この部分領域の抽出方法として、例えば次のような手法を取り得る。活字画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分(連結黒画素)を抽出し、これに外接する矩形を作成していく。当該矩形の形状や大きさを評価することで、文字ないし文字の一部である矩形群を得ることができる。これら矩形群について、矩形間の距離を評価し、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得ることができる。同様の大きさの文字の矩形が近くに並んでいる場合には、それらを統合して文字行の矩形群を得ることができる。短辺長が同様の文字行の矩形が等間隔に並んでいる場合は、それらを統合して文章の矩形群を得ることができる。また、図や写真、表、グラフなど、文字や行、文章以外のオブジェクトを内包する矩形も得ることができる。以上で抽出した矩形から、単独の文字あるいは文字の一部である矩形を除外する。残った矩形を部分領域とする。図10の1004に、活字画像に対して抽出した活字領域を、点線枠で例示する(1014〜1018)。
CPU261は、S957において、S954で推定した手書き領域のうち一つを選び、それに対応する活字領域を取得する。具体的には、手書き領域に対し、左方向又は上方向に位置する最も近い活字領域を探し、該当するものをその手書き領域に対応する活字領域とする。すなわち、手書き領域に対して所定の位置関係にある活字領域(左方向又は上方向で最も近い位置にある活字領域)を、当該手書き領域に対応する活字領域として取得する。例えば図10において、手書き領域1011に最も近い活字領域は活字領域1016であるため、領域1011と領域1016を対応付ける。図10の1005に、手書き領域と活字領域が対応付けられている様子を示す。
CPU261は、S958において、S953で生成した手書き抽出画像のうち、S957で選択した手書き領域の部分のみを切り出し、外部インタフェース268を介して、手書きOCR部116に送信する。そして、切り出された手書き抽出画像に対して、手書きOCRを実行させる。すなわち、手書き領域内に含まれる手書き画素に基づいて文字認識処理が実行される。手書きOCRには公知の技術を適用し実現することができる。手書き抽出画像を手書きOCRすることにより、例えば、図4の住所記入欄401や電話番号記入欄453に図示したように、手書き記入欄内の活字やマークなどの印字内容が、手書きOCRの対象となってしまうことを低減する。
CPU261は、S959において、手書きOCR部116から、手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCR部116が、手書き文字を文字認識することにより取得されたテキストデータである。外部インタフェース268を介して、手書きOCR部116から、手書きOCR結果を受信していたならば、YESと判定し、S955に遷移する。そうでなければ、S959の処理を繰り返す。
CPU261は、S960において、S955で生成した活字画像のうち、S957で取得した手書き領域に対応する活字領域の部分のみを切り出し、外部インタフェース268を介して、活字OCR部117に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
CPU261は、S961において、活字OCR部117から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCR部117が、活字領域に含まれていた活字を文字認識することにより取得されたテキストデータである。外部インタフェース268を介して、活字OCR部117から、活字OCR結果を受信していたならば、YESと判定し、S961に遷移する。そうでなければ、S961の処理を繰り返す。
CPU261は、S962において、S961で得た活字OCR結果を項目、S959で得た手書きOCRの結果を値として、図10に示す帳票テキストデータ1006を生成して保存する。
CPU261は、S963において、S954で推定したすべての手書き領域について、S957以降の処理を行ったか否かを判定する。すべての手書き領域について処理を行った場合はYESと判定し、S964に遷移する。そうでなければ、NOと判定し、S957に遷移する。
CPU261は、S964において、S962で生成した帳票テキストデータを、画像処理装置101に送信出力する。なお、本実施形態では、帳票テキストデータを画像処理装置101に送信するものとしたが、これに限るものではなく、予め出力先の外部サーバが予め指定されている場合は、その外部サーバに直接送信するように構成してもよい。
CPU261は、S965において、処理を終了するか否かを判定する。ユーザが、画像処理サーバ103の電源のOFFなどの所定の操作を行った場合には、YESと判定し、処理を終了する。そうでなければ、NOと判定し、S952に遷移する。
以上、本実施例に示したとおり、事前に項目や値を登録せずに、手書き記入を含む帳票のスキャン画像から、記載されている情報(項目と値)を読み取る事ができる。これにより、事前にどのような項目が含まれるか分からない非定型帳票についても、人手に頼らずに電子化することができる。
本実施例では、手書き抽出画像を手書き領域毎に切り出して複数の部分画像を生成して送信したがこの限りではない。処理対象画像から生成した手書き抽出画像と手書き領域とを手書きOCR部に送信し、OCR結果から手書き領域毎にS957以降の処理を行ってもよい。
また、なお、本実施例では、処理対象画像に対して手書き抽出を行い、手書き抽出画像を生成したが、この限りではない。手書き領域推定により推定した領域内に限定して手書き抽出を行ってもよい。このようにしても、手書きOCRの対象となる画像は、記入項目を示す手書き領域であり、かつ手書き画素のみを含むものである。
(実施例2)
ユーザに手書きで記入させる帳票は記入漏れに気付きやすくさせる為に、記入欄を密集させる事が多い。このうち、記入欄が縦に並ぶ帳票は、左に項目名、右に記入欄という構成をとる事が多いため、記入された手書きの左に項目がある可能性が高い。一方記入欄が横に並ぶ帳票は、上に項目名、下に記入欄という構成をとることが多いため、記入された手書きの上に項目がある可能性が高い。
ユーザに手書きで記入させる帳票は記入漏れに気付きやすくさせる為に、記入欄を密集させる事が多い。このうち、記入欄が縦に並ぶ帳票は、左に項目名、右に記入欄という構成をとる事が多いため、記入された手書きの左に項目がある可能性が高い。一方記入欄が横に並ぶ帳票は、上に項目名、下に記入欄という構成をとることが多いため、記入された手書きの上に項目がある可能性が高い。
本実施例ではこの傾向を利用し、帳票テキスト化処理で手書き領域に対応する活字領域を取得する際、手書き領域同士の位置関係に応じて活字領域の探索方向を限定するケースについて述べる。本実施例の画像処理システムの構成は、特徴部分を除いて実施例1の構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
<帳票テキスト化処理>
図11を用いて、実施例2における処理を説明する。S951からS956までの処理は実施例1における同符号の処理と同様である。
図11を用いて、実施例2における処理を説明する。S951からS956までの処理は実施例1における同符号の処理と同様である。
CPU261は、S1101において、S954で推定した手書き領域のうち一つを選択する。
CPU261は、S1102において、S1101で選択した手書き領域が、左右方向に密集した中にあるか、上下方向に密集した中にあるかを判定する。具体的には、S1101で選択したものに最も近い他の手書き領域が左又は右にある場合は左右方向に、最も近い他の手書き領域が上または下にある場合は上下方向に密集していると判定する。図12に示す帳票1200を例に説明する。S952において帳票1200を受信し、S954で領域1201〜1204が手書き領域(長い点線で示す)として推定され、更にS956で領域1205〜1211が活字領域(短い点線で示す)として抽出されたとする。このうち、手書き領域1201は最も近い手書き領域が下にある領域1202であるため、上下方向に密集していると判定する。一方、手書き領域1203は最も近い手書き領域が右にある領域1204であるため、左右方向に密集していると判定する。左右方向に密集している場合はYESと判定し、S1103に遷移する。そうでなければNOと判定し、S1104に遷移する。
CPU261は、S1103において、S1101で選択した手書き領域から、上方向に最も近い活字領域を取得する。図12の帳票1200において、手書き領域1203は左右方向に密集しており、この手書き領域1203から上方向に最も近い活字領域は領域1210である。故に、手書き領域1203に対応する活字領域として、領域1210が取得される。
CPU261は、S1104において、S1101で選択した手書き領域から、左方向に最も近い活字領域を取得する。図12の帳票1200において、手書き領域1201は上下方向に密集しており、この手書き領域1201から左方向に最も近い活字領域は領域1207である。故に、手書き領域1201に対応する活字領域として、領域1207が取得される。
S958からS967までの処理は実施例1における同符号の処理と同様である。
本実施例2によれば、手書き領域(=帳票の記入欄)の構成を分析し、それぞれの手書きの値に対応する項目が存在する可能性の高い方向に絞って項目を探索する。これにより、手書きの値により適した項目を対応付けやすくなる。
なお、本実施例では説明を省略したが、S1103又はS1104で手書き領域の上又は左方向に活字領域が見つからなかった場合、それぞれ左又は上方向に活字領域を探索し直しても良い。また、手書き領域と活字領域の距離に閾値を設け、手書き領域から閾値以上に遠い活字領域は対応付けないよう制御しても良い。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。例えば、実施例では、学習データ生成部112と学習部113は、学習装置102において実現されるものとしたが、それぞれ別体の装置において実現されるようにしても良い。この場合、学習データ生成部112を実現する装置は、学習データ生成部112が生成した学習データを、学習部113を実現する装置に送信する。そして、学習部113は受信した学習データをもとにニューラルネットワークを学習する。画像処理装置101と画像処理サーバ103とを別体の装置として説明したが、画像処理装置101が画像処理サーバ103の機能を具備しても良い。画像処理サーバ103とOCRサーバ104とを別体の装置として説明したが、画像処理サーバ103のOCRサーバ104としての機能を具備しても良い。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
実施例では、活字領域の抽出をS956に示したように、画素の連結性に基づいて判定する方法を示したが、手書き領域推定と同様にニューラルネットワークを用いて推定してもよい。手書き領域推定正解画像を作成したのと同じ要領で、活字領域をユーザが選択し、それに基づいて正解データを作成、活字OCR領域推定を行うニューラルネットワークを新たに構成し、当該正解データを参照させて学習する。
実施例では、学習処理時に学習データ生成処理より学習データを生成した。しかしながら、事前に学習データ生成処理によって学習データを大量に生成しておいて、学習処理時にそこから随時、ミニバッチサイズ分をサンプルするようにしてもよい。
実施例では、入力画像をグレースケール画像として生成したが、フルカラー画像など他の形式として生成してもよい。
なお、各実施例中に登場する略称の定義は次の通りである。MFPとは、Multi Function Peripheralのことである。ASICとは、Application Specific Integrated Circuitのことである。CPUとは、Central Processing Unitのことである。RAMとは、Random‐Access Memoryのことである。ROMとは、Read Only Memoryのことである。HDDとはHard Disk Driveのことである。SSDとはSolid State Driveのことである。LANとは、Local Area Networkのことである。PDLとは、Page Description Languageのことである。OSとは、Operating Systemのことである。PCとは、Personal Computerのことである。OCRとは、Optical Character Recognition/Readerのことである。CCDとは、Charge−Coupled Deviceのことである。LCDとはLiquid Crystal Displayのことである。ADFとはAuto Documennt Feederのことである。CRTとはCathode Ray Tubeのことである。GPUとは、Graphics Processing Unitのことである。IDとは、Identificationのことである。
Claims (11)
- 画像から手書き文字の画素を抽出するための学習済みモデルを用いて、原稿をスキャンして得た処理対象画像から手書き文字の画素を抽出する手書き抽出手段と、
画像から手書き文字が記入された手書き領域を推定するための学習済みモデルを用いて、前記処理対象画像から手書き領域を推定する手書き領域推定手段と、
前記処理対象画像から活字文字を含む活字領域を抽出する活字領域抽出手段と、
前記手書き領域と所定の位置関係にある前記活字領域を特定し、当該手書き領域の文字認識結果と当該特定された活字領域の文字認識結果とを対応づけて保存する保存手段と、
を備えることを特徴とする画像処理システム。 - 前記手書き領域の文字認識結果は、前記推定された手書き領域に含まれる手書き文字の画素に基づき手書きの文字認識処理を行うことによって取得されることを特徴とする請求項1に記載の画像処理システム。
- 前記活字領域抽出手段は、前記処理対象画像から前記手書き文字の画素を除去することにより生成される画像に対して活字領域の抽出を行うことによって、前記活字領域を抽出することを特徴とする請求項1または2に記載の画像処理システム。
- 前記活字領域の文字認識結果は、前記抽出された活字領域に含まれる活字文字に対して活字の文字認識処理を行うことによって取得されることを特徴とする請求項1乃至3のいずれか1項に記載の画像処理システム。
- 前記手書き領域と所定の位置関係にある前記活字領域とは、前記手書き領域に対して左方向または上方向で最も近い位置にある活字領域であることを特徴とする請求項1乃至4のいずれか1項に記載の画像処理システム。
- 前記手書き領域と所定の位置関係にある前記活字領域とは、前記手書き領域が他の手書き領域と上下方向に密集している場合は当該手書き領域に対して左方向で最も近い位置にある活字領域であり、前記手書き領域が他の手書き領域と左右方向に密集している場合は当該手書き領域に対して上方向で最も近い位置にある活字領域であることを特徴とする請求項1乃至4のいずれか1項に記載の画像処理システム。
- 前記画像から手書き文字の画素を抽出するための前記学習済みモデルは、サンプル画像上でユーザにより指定された手書き文字部分の画素に基づいて作成される正解データに基づいて学習することにより作成されることを特徴とする請求項1乃至6のいずれか1項に記載の画像処理システム。
- 前記画像から手書き文字が記入された手書き領域を推定するための前記学習済みモデルは、サンプル画像上でユーザにより指定された記入欄の位置に基づいて作成される正解データに基づいて学習することにより作成されることを特徴とする請求項1乃至7のいずれか1項に記載の画像処理システム。
- 前記画像から手書き文字の画素を抽出するための前記学習済みモデル、および、前記画像から手書き文字の画素を抽出するための前記学習済みモデルは、ディープラーニングにより構築される学習済みモデルであることを特徴とする請求項1乃至8のいずれか1項に記載の画像処理システム。
- コンピュータを、請求項1乃至8のいずれか1項に記載の画像処理システムの各手段として機能させるためのプログラム。
- 画像から手書き文字の画素を抽出するための学習済みモデルを用いて、原稿をスキャンして得た処理対象画像から手書き文字の画素を抽出する手書き抽出ステップと、
画像から手書き文字が記入された手書き領域を推定するための学習済みモデルを用いて、前記処理対象画像から手書き領域を推定する手書き領域推定ステップと、
前記処理対象画像から活字文字を含む活字領域を抽出する活字領域抽出ステップと、
前記手書き領域と所定の位置関係にある前記活字領域を特定し、当該手書き領域の文字認識結果と当該特定された活字領域の文字認識結果とを対応づけて保存する保存ステップと、
を有することを特徴とする画像処理方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020027618A JP2021131784A (ja) | 2020-02-20 | 2020-02-20 | 画像処理システム、プログラム、画像処理方法 |
| US16/986,325 US11568623B2 (en) | 2019-08-22 | 2020-08-06 | Image processing apparatus, image processing method, and storage medium |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020027618A JP2021131784A (ja) | 2020-02-20 | 2020-02-20 | 画像処理システム、プログラム、画像処理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2021131784A true JP2021131784A (ja) | 2021-09-09 |
Family
ID=77551107
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2020027618A Pending JP2021131784A (ja) | 2019-08-22 | 2020-02-20 | 画像処理システム、プログラム、画像処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2021131784A (ja) |
-
2020
- 2020-02-20 JP JP2020027618A patent/JP2021131784A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7479925B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
| KR102613255B1 (ko) | 화상 처리 방법 및 화상 처리 시스템 | |
| JP7387339B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
| EP1588293B1 (en) | Image processing method, system, program, program storage medium and information processing apparatus | |
| US7551753B2 (en) | Image processing apparatus and method therefor | |
| US10650489B2 (en) | Image display apparatus, control method therefor, and storage medium | |
| US10013147B2 (en) | Image display apparatus | |
| US8224131B2 (en) | Image processing apparatus and image processing method | |
| US7876471B2 (en) | Image processing apparatus, control method and program thereof which searches for corresponding original electronic data based on a paper document | |
| JP7379063B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
| JP2018088204A (ja) | 画像処理装置及びプログラム | |
| JP4541770B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
| JP2021033577A (ja) | 画像処理システムと画像処理方法、及びプログラム | |
| JP2021131784A (ja) | 画像処理システム、プログラム、画像処理方法 | |
| JP7301529B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
| JP2023040886A (ja) | 画像処理装置、方法及びプログラム | |
| JP2023015483A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム | |
| JP2023014964A (ja) | 画像処理システム及び画像処理方法 | |
| JP5935376B2 (ja) | 複写装置 | |
| JP2023137094A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
| US20230029990A1 (en) | Image processing system and image processing method | |
| JP2026023104A (ja) | 読取設定作成システム | |
| JP2006018509A (ja) | 文書管理支援装置 | |
| JP2022091531A (ja) | 画像処理装置及び文字認識方法並びにプログラム | |
| JP2023021595A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |