JP2023015483A - 画像処理装置、画像処理システム、画像処理方法、及びプログラム - Google Patents
画像処理装置、画像処理システム、画像処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2023015483A JP2023015483A JP2021119282A JP2021119282A JP2023015483A JP 2023015483 A JP2023015483 A JP 2023015483A JP 2021119282 A JP2021119282 A JP 2021119282A JP 2021119282 A JP2021119282 A JP 2021119282A JP 2023015483 A JP2023015483 A JP 2023015483A
- Authority
- JP
- Japan
- Prior art keywords
- image
- area
- handwritten
- learning
- data
- 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)
- Image Analysis (AREA)
Abstract
【課題】手書き部分のOCR処理の精度の低下を軽減する。【解決手段】手書き部分を含む原稿の読取画像を取得する取得手段と、前記読取画像をニューラルネットワークに入力することにより、前記読取画像における所定の単位の手書き部分を含む対象領域を、連続した画素の集合として推定する推定手段と、前記対象領域に基づいて、OCR処理を行う対象画像を生成する生成手段と、を有することを特徴とする。【選択図】図10
Description
本発明は、画像処理装置、画像処理システム、画像処理方法、及びプログラムに関する。
近年、ユーザにより文字が記入された帳票等の紙文書をスキャンし、当該スキャンした画像に対して手書き対応のOCR処理を行うことにより、記入された手書き文字を電子化(データ化)することが行われている。
手書き対応のOCR処理により手書き文字をテキスト化するために、手書き文字が記入された帳票をスキャンして得られるスキャン画像を手書きOCRエンジンへ入力する。このとき、スキャン画像上の手書き文字を含む領域を読取位置として指示する必要がある。
特許文献1には、スキャン画像上の手書き文字を含む領域を、スキャン画像上の位置およびサイズ(幅、高さ)から成る矩形情報として推定するニューラルネットワークが開示されている。
手書き対応のOCR処理により手書き文字をテキスト化するために、手書き文字が記入された帳票をスキャンして得られるスキャン画像を手書きOCRエンジンへ入力する。このとき、スキャン画像上の手書き文字を含む領域を読取位置として指示する必要がある。
特許文献1には、スキャン画像上の手書き文字を含む領域を、スキャン画像上の位置およびサイズ(幅、高さ)から成る矩形情報として推定するニューラルネットワークが開示されている。
特許文献1の技術によれば、帳票をスキャンして得られるスキャン画像から、手書き文字を含む領域が、矩形情報として得られる。しかしながら、手書き文字を含む矩形領域内には、手書き以外の、活字や罫線等の帳票に印刷されたオブジェクトに由来する画素(以降、このような画素を「印刷画素」と呼称する)が含まれてしまう場合がある。図21(a)は、手書きで文字が記入された帳票の一例を示す。図21(a)では、手書き文字を含む矩形領域を点線で示しているが、図21(a)における下段の矩形領域には、活字が含まれている。手書きによる記入では、記入の仕方において自由度が高いため、このような事態が生じやすい。以上のように、手書き文字近傍の活字や罫線等の印刷画素が、手書き文字を含む矩形領域内に含まれてしまうケースでは、印刷画素がノイズとなり、OCR処理の精度が低下してしまう場合があった。
そこで本発明は、手書き部分のOCR処理の精度の低下を軽減することを目的とする。
本発明の画像処理装置は、手書き部分を含む原稿の読取画像を取得する取得手段と、前記読取画像をニューラルネットワークに入力することにより、前記読取画像における所定の単位の手書き部分を含む対象領域を、連続した画素の集合として推定する推定手段と、前記対象領域に基づいて、OCR処理を行う対象画像を生成する生成手段と、を有することを特徴とする。
本発明によれば、手書き部分のOCR処理の精度の低下を軽減することができる。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一な構成については、同じ符号を付して説明する。
[第1の実施形態]
本実施形態では、手書き領域を、ニューラルネットワークにより、矩形情報ではなく、記入項目ごとにグルーピングされた手書きストロークの集合を含む画素の集合として推定する例を示す。
本実施形態では、手書き領域を、ニューラルネットワークにより、矩形情報ではなく、記入項目ごとにグルーピングされた手書きストロークの集合を含む画素の集合として推定する例を示す。
<画像処理システム>
図1は、本実施形態に係る画像処理システムの全体構成例を示す図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、及びOCRサーバ104により構成される。画像処理装置101、学習装置102、画像処理サーバ103、及びOCRサーバ104は、ネットワーク105を介して相互に接続されている。
画像処理装置101は、スキャン機能とプリント機能を備えた複合機であり、例えばMFP(Multi Function Peripheral)である。画像処理装置101は、画像取得部111としての機能(スキャン機能)を備える。
図1は、本実施形態に係る画像処理システムの全体構成例を示す図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、及びOCRサーバ104により構成される。画像処理装置101、学習装置102、画像処理サーバ103、及びOCRサーバ104は、ネットワーク105を介して相互に接続されている。
画像処理装置101は、スキャン機能とプリント機能を備えた複合機であり、例えばMFP(Multi Function Peripheral)である。画像処理装置101は、画像取得部111としての機能(スキャン機能)を備える。
画像処理システム100における学習フェーズでは、画像処理装置101は、サンプルとなる帳票等の複数枚の原稿をスキャンして、複数の画像データを生成する。以降、この画像データを「サンプル画像」と呼称する。画像処理装置101は、画像生成装置の一例である。サンプルとなる原稿は、学習対象となる手書き文字が記入された原稿を含む。そして、画像処理装置101は、ネットワーク105を介して、サンプル画像を学習装置102に送信し、学習装置102に対して帳票の学習処理を実行させる。
また、画像処理システム100における利用フェーズでは、画像処理装置101は、認識対象となる手書き文字が含まれる原稿をスキャンして、画像データを生成する。以降、この画像データを「処理対象画像」と呼称する。そして、画像処理装置101は、ネットワーク105を介して、処理対象画像を画像処理サーバ103に送信し、画像処理サーバ103に対して帳票の認識処理を実行させる。
学習装置102は、画像処理装置101が生成したサンプル画像を蓄積する画像蓄積部115としての機能と、蓄積したサンプル画像から学習データを生成する学習データ生成部112としての機能を備える。学習データは、手書き領域の推定を行うニューラルネットワークを学習するために用いられるデータである。学習装置102は、生成した学習データを用いて、ニューラルネットワークの学習を行う学習部113としての機能を備える。学習部113の学習処理により、学習結果(ニューラルネットワークのパラメータ等を含む学習モデル)が生成される。学習装置102は、ネットワーク105を介して、学習結果を画像処理サーバ103に送信する。ニューラルネットワークの詳細については、図3を用いて後述する。
画像処理サーバ103は、処理対象画像を変換する画像変換部114としての機能を備える。画像変換部114は、処理対象画像から手書きOCRの対象とする画像を生成する。まず、画像変換部114は、画像処理装置101が生成した処理対象画像に対して手書き領域の推定を行う。本実施形態において、画像処理サーバ103は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して、処理対象画像中の手書き文字が記入された領域を推定(特定)する。これにより、手書き領域を得る。手書き領域は、ある記入項目に記入された手書き文字の領域であり、対象領域の一例である。画像処理サーバ103は、画像処理装置の一例である。
ここで、手書き領域は、処理対象画像中の連続した画素の集合として推定される。手書き領域は、ある記入項目の手書き記入を構成する手書きストロークを内包し、手書き画素以外の画素(印字画素)を含まない。また、手書き領域は、当該手書きストロークを内包する外接矩形よりも小さな面積となる。そしてこの面積の減少は、外接矩形の外周部からの画素の欠損により生じる。
すなわち、手書き領域は、手書きストロークを内包する外接矩形と比較した場合、より手書きストロークに沿うような画素集合である。また、手書き領域は、帳票の記入項目の数に応じて、一つの処理対象画像から複数得られる場合がある。なお、帳票の記入項目は、手書き部分の構成単位(所定の単位)の一例である。画像変換部114は、推定された手書き領域に対応する画素を、処理対象画像から取得し、矩形状となるよう欠損部を白画素で埋めるなどして成型することにより、手書きOCRの対象とする対象画像を生成する。以降、この画像を「手書き抽出画像」と呼称する。そして、画像処理サーバ103は、ネットワーク105を介して、手書き抽出画像をOCRサーバ104に送信し、OCRサーバ104に、手書き抽出画像に対して、手書きOCRを実行させる指示を行う。
また、画像変換部114は、推定した手書き領域を参照して、処理対象画像から手書き文字を除去した画像(以降、「活字画像」と呼称する)を生成する。具体的には、処理対象画像上の手書き領域である画素を白画素に変換するなどして除去することにより活字画像を得る。なお、白画素に限らず、周辺画素に基づいて画素値を決定してもよい。そして、画像変換部114は、活字画像上の領域であって、活字OCRの対象とする活字を含む領域(以降、「活字領域」と呼称する)の情報を生成する。活字領域の生成については後述する。そして、画像処理サーバ103は、ネットワーク105を介して、活字画像と活字領域とをOCRサーバ104に送信し、OCRサーバ104に、活字画像上の活字領域に対して、活字OCRを実行させる指示を行う。画像処理サーバ103は、ネットワーク105を介して、OCRサーバ104から手書きOCR結果及び活字OCR結果を受信する。そして画像処理サーバ103は、これらを統合し、テキストデータとして、画像処理装置101に送信する。以降、このテキストデータを「帳票テキストデータ」と呼称する。
OCRサーバ104は、手書き文字を文字認識するのに適したOCR処理である手書きOCRを実行する手書きOCR部116と、活字文字を文字認識するのに適したOCR処理である活字OCRを実行する活字OCR部117としての機能を備える。OCRサーバ104は、画像処理サーバ103から手書き抽出画像を受信すると、手書きOCR部116において、当該手書き抽出画像に対して手書きOCRを行ってテキストデータ(OCR結果)を取得する。また、OCRサーバ104は、画像処理サーバ103から活字画像と活字領域を受信すると、活字OCR部117において、活字画像中の活字領域に対して活字OCRを行ってテキストデータ(OCR結果)を取得する。OCRサーバ104は、手書きOCR部116及び活字OCR部117により取得されたテキストデータを、ネットワーク105を介して、画像処理サーバ103に送信する。
<各装置のハードウェア構成>
次に、上述した画像処理システム100を構成する各装置のハードウェア構成について説明する。図2(a)は、画像処理装置101の構成例を示す。図2(b)は、学習装置102の構成例を示す。図2(c)は、画像処理サーバ103の構成例を示す。図2(d)は、OCRサーバ104の構成例を示す。
次に、上述した画像処理システム100を構成する各装置のハードウェア構成について説明する。図2(a)は、画像処理装置101の構成例を示す。図2(b)は、学習装置102の構成例を示す。図2(c)は、画像処理サーバ103の構成例を示す。図2(d)は、OCRサーバ104の構成例を示す。
図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や電話回線、赤外線といった近接無線などのネットワークを介して、CPU201の制御下で、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース211は、学習装置102やPC(不図示)などの外部機器より、PDLデータを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解釈し、画像を生成する。生成した画像は、プリンタデバイス205により印刷したり、ストレージ208に記憶したりする。また、外部インタフェース211は、画像処理サーバ103などの外部機器より画像データを受信する。受信した画像データは、プリンタデバイス205により印刷したり、ストレージ208に記憶したり、外部インタフェース211により、他の外部機器に送信したりする。
図2(b)の学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、及びGPU239を備える。各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御するためのコントローラである。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ235に記憶されている学習データ生成プログラムおよび学習プログラムを実行する。CPU231が学習データ生成プログラムを実行することより、学習データ生成部112の機能が実現する。また、CPU231が学習プログラムを実行することにより、手書き領域推定を行うためのニューラルネットワークを学習する学習部113としての機能が実現する。CPU231は、データバス233などのバスを介して各部を制御する。RAM234は、CPU231のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ235は、読み出しと書き込みが可能な不揮発メモリであり、前述の学習データ生成プログラムや学習プログラム、および画像処理装置101が生成したサンプル画像を記録する。
入力デバイス236は、マウスやキーボードなどから構成さる入力装置である。表示デバイス237は、図2(a)を用いて説明した表示デバイス210と同様である。外部インタフェース238は、図2(a)を用いて説明した外部インタフェース211と同様である。GPU239は、画像処理プロセッサであり、CPU231と協調して画像データの生成やニューラルネットワークの学習を行う。
入力デバイス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がこの画像処理プログラムを実行することより、処理対象画像に対する手書き領域推定の処理等を行う画像変換部114の機能が実現する。CPU261は、データバス263などのバスを介して各部を制御する。RAM264は、CPU261のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記録する。
入力デバイス266は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス267は、図2(a)を用いて説明した表示デバイス210と同様である。外部インタフェース268は、図2(a)を用いて説明した外部インタフェース211と同様である。
入力デバイス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サーバプログラムを実行することより、手書き抽出画像を認識してテキスト化する手書きOCR部116の機能や、活字画像から活字を認識してテキスト化する活字OCR部117の機能が実現する。CPU291は、データバス293などのバスを介して各部を制御する。RAM294は、CPU291のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ295は、読み出しと書き込みが可能な不揮発メモリであり、前述のOCRサーバプログラムを記録する。
入力デバイス296は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス297は、図2(a)を用いて説明した表示デバイス210と同様である。外部インタフェース298は、図2(a)を用いて説明した外部インタフェース211と同様である。
入力デバイス296は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス297は、図2(a)を用いて説明した表示デバイス210と同様である。外部インタフェース298は、図2(a)を用いて説明した外部インタフェース211と同様である。
<ニューラルネットワークの構成>
続いて、本システムにおけるニューラルネットワークの構成について説明する。図3は、ニューラルネットワークの構成を示す。本実施形態において、ニューラルネットワーク1100は、入力された画像に対して、手書き領域推定を行うために用いられる。なお、本実施形態において、ニューラルネットワーク1100への入力画像は、グレースケール(1ch)の画像とするが、例えば、カラー(3ch)の画像など、他の画像形式でもよい。
続いて、本システムにおけるニューラルネットワークの構成について説明する。図3は、ニューラルネットワークの構成を示す。本実施形態において、ニューラルネットワーク1100は、入力された画像に対して、手書き領域推定を行うために用いられる。なお、本実施形態において、ニューラルネットワーク1100への入力画像は、グレースケール(1ch)の画像とするが、例えば、カラー(3ch)の画像など、他の画像形式でもよい。
ニューラルネットワーク1100は、図3に示すように、エンコーダ部1101とデコーダ部1122で構成される。ニューラルネットワーク1100に画像が入力されると、エンコーダ部1101の計算が実行される。そして、その計算結果として得られる特徴マップがデコーダ部1122に入力される。そして、デコーダ部1122の計算を経て手書き領域推定結果が出力される。
エンコーダ部1101は、畳み込み層EC1,EC2,EC3,EC4と、プーリング層EP1,EP2,EP3で構成される。畳み込み層EC1,EC2,EC3,EC4は、それぞれ入力に対して所定のカーネルサイズのフィルタで畳み込み計算を行って特徴を抽出し、所定のチャネル数分の特徴マップを出力する。ここで、特徴マップとは、手書き記入の特徴情報の集合である。畳み込み層EC1,EC2,EC3,EC4とプーリング層EP1,EP2,EP3の出力は特徴マップである。なお、畳み込み層EC1には入力画像が、畳み込み層EC2,EC3,EC4には直前の層(後述のプーリング層)が出力する特徴マップが入力される。また、各畳み込み層の出力は、活性化関数を通して非線形変換する。活性化関数には、ReLU(Rectified Linear Unit)やHyperbolic Tangentなど、既知の手法を用いることができる。プーリング層EP1,EP2,EP3は、それぞれ直前の畳み込み層EC1,EC2,EC3が出力した各特徴マップに対して、所定のカーネルサイズ領域毎の最大値を出力することで、入力された特徴マップからより重要な特徴情報を抽出する。このようにして入力画像を、手書き領域推定に必要な特徴情報に変換する。なお、本実施形態では、例えば、プーリング層EP1,EP2,EP3は、それぞれ入力された各特徴マップの解像度を半分にして出力する。
エンコーダ部1101は、畳み込み層EC1,EC2,EC3,EC4と、プーリング層EP1,EP2,EP3で構成される。畳み込み層EC1,EC2,EC3,EC4は、それぞれ入力に対して所定のカーネルサイズのフィルタで畳み込み計算を行って特徴を抽出し、所定のチャネル数分の特徴マップを出力する。ここで、特徴マップとは、手書き記入の特徴情報の集合である。畳み込み層EC1,EC2,EC3,EC4とプーリング層EP1,EP2,EP3の出力は特徴マップである。なお、畳み込み層EC1には入力画像が、畳み込み層EC2,EC3,EC4には直前の層(後述のプーリング層)が出力する特徴マップが入力される。また、各畳み込み層の出力は、活性化関数を通して非線形変換する。活性化関数には、ReLU(Rectified Linear Unit)やHyperbolic Tangentなど、既知の手法を用いることができる。プーリング層EP1,EP2,EP3は、それぞれ直前の畳み込み層EC1,EC2,EC3が出力した各特徴マップに対して、所定のカーネルサイズ領域毎の最大値を出力することで、入力された特徴マップからより重要な特徴情報を抽出する。このようにして入力画像を、手書き領域推定に必要な特徴情報に変換する。なお、本実施形態では、例えば、プーリング層EP1,EP2,EP3は、それぞれ入力された各特徴マップの解像度を半分にして出力する。
デコーダ部1122は、逆畳み込み層DDr1,DDr2,DDr3,DDr4と、アップサンプリング層DUr1,DUr2,DUr3で構成される。逆畳み込み層DDr1,DDr2,DDr3,DDr4は、それぞれ入力された各特徴マップに対して指定のカーネルサイズのフィルタで逆畳み込み計算を行う。そして、特徴マップ内の特徴情報を変換して、入力画像上の各画素のクラス(手書き領域であるか否か)を推定していく。各逆畳み込み層の出力は、活性化関数を通して非線形変換する。アップサンプリング層DUr1,DUr2,DUr3は、それぞれ直前の逆畳み込み層DDr1,DDr2,DDr3が出力した各特徴マップについて解像度を上げ、プーリング層EP1,EP2,EP3で落とした解像度を復元する。なお、本実施形態では、例えば、アップサンプリング層DUr1,DUr2,DUr3は、それぞれ入力された各特徴マップの解像度を2倍にして出力する。逆畳み込み層DDr4は、入力画像の各画素のクラス確率値を推定したクラス毎の画像を出力する(出力枚数はチャネル数=分類したいクラス数)。この逆畳み込み層DDr4からの出力を正規化してデコーダ部1122の最終的な出力を得ることができる。正規化の手段として、例えば、ソフトマックス関数を用いることができる。この場合、逆畳み込み層DDr4からの出力を確率分布に正規化し、画素毎に各クラスの確率を表したマップを出力する。このマップを参照し、手書き領域であることを示すクラスの確率値が最も高くなっている画素について、入力画像中の対応する画素を抽出することで手書き領域を示す画像を生成する。あるいは、逆畳み込み層DDr4からの出力にargmax関数を適用してもよい。この場合、入力画像と同じサイズである1チャネルの画像が得られる。当該画像の各画素には、入力画像の該当する画素がどのクラスに属するかを示す値(クラスID)が格納される。当該画像の画素であって手書き領域クラスに属することを示す値の画素に対応する入力画像の画素を抽出することにより手書き領域を示す画像を生成する。このように、エンコーダ部1101とデコーダ部1122とから成るネットワークにより、手書き領域推定がなされる。
以上のデコーダ部1122の計算にあたり、プーリング層EP1,EP2,EP3を経て特徴マップの解像度を落としているため、デコーダ部1122が計算する特徴マップは局所的な特徴が失われている。そこで、エンコーダ部1101が処理過程で抽出した特徴マップをデコーダ部1122に渡して、クラス確率値の推定精度を向上させる。すなわち、アップサンプリング層DUr1の出力に畳み込み層EC3の出力を、アップサンプリング層DUr2の出力に畳み込み層EC2の出力を、アップサンプリング層DUr3の出力に畳み込み層EC1の出力を結合する。この処理手法はスキップコネクションと呼ばれることがある。
なお、本実施形態では、エンコーダ部1101の各プーリング層の間には、一つの畳み込み層を配置する例を示したが、複数の畳み込み層を配置してもよい。また、デコーダ部1122の各アップサンプリング層の間には、一つの逆畳み込み層を配置する例を示したが、複数の逆畳み込み層を配置してもよい。また、畳み込み層とそれに続くプーリング層を一つの構成単位としてとらえた場合、本実施形態では、エンコーダ部1101に3つの当該構成単位を設けたが、これよりも多い、あるいは少ない数の当該構成単位を設けてもよい。また、アップサンプリング層とそれに続く逆畳み込み層を一つの構成単位としてとらえた場合、本実施形態では、デコーダ部1122には3つの当該構成単位を設けた。しかし、構成単位は3つに限らず、これよりも多い、あるいは少ない数の当該構成単位を設けてもよい。また、本実施形態では、プーリング層として最大値を出力する例を示したが、カーネルに該当する特徴マップ画素の平均値を出力するものなど、他の形態のものを用いてもよい。なお、本実施形態では、デコーダ部1122を、逆畳み込み層を用いて構成したが、畳み込み層を用いて構成してもよい。
なお、本実施形態では、手書き領域推定をいわゆるクラス分類として構成した例を示したが、例えば回帰推定として構成してもよい。すなわち、デコーダ部1122の出力を、各画素が、入力画像の対応する画素に対する、手書き領域であることを示す確率値となるよう構成する。この場合、デコーダ部1122の出力を1チャネルの特徴マップとする。また、当該特徴マップにシグモイド関数などを適用し、各画素の値が0.0から1.0の間の数値、すなわち、手書き領域である確率値となるようにする。
<学習フェーズのシーケンス>
続いて、画像処理システム100により実行される学習フェーズのシーケンスについて説明する。図4Aは、本実施形態に係る学習フェーズのシーケンス図である。以下、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。
S401にて、ユーザが画像処理装置101に対して原稿の読取指示を行うと、S402にて、画像取得部111が、原稿を読み取ってサンプル画像を生成する。S403にて、画像取得部111が、生成されたサンプル画像を、学習データ生成部112に送信する。なお、サンプル画像にはID情報が付与されてもよい。このID情報は、例えば画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報として、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するためのグループ識別情報を用いてもよい。
続いて、画像処理システム100により実行される学習フェーズのシーケンスについて説明する。図4Aは、本実施形態に係る学習フェーズのシーケンス図である。以下、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。
S401にて、ユーザが画像処理装置101に対して原稿の読取指示を行うと、S402にて、画像取得部111が、原稿を読み取ってサンプル画像を生成する。S403にて、画像取得部111が、生成されたサンプル画像を、学習データ生成部112に送信する。なお、サンプル画像にはID情報が付与されてもよい。このID情報は、例えば画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報として、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するためのグループ識別情報を用いてもよい。
次にS404にて、学習データ生成部112が、画像処理装置101から送信されたサンプル画像を受信すると、当該サンプル画像をID情報に紐づけて画像蓄積部115に蓄積する。S405にて、ユーザが学習装置102に対してサンプル画像に関する正解データの付与指示を行うと、S406にて、学習データ生成部112が、当該正解データを取得して、サンプル画像に紐づけて画像蓄積部115に蓄積する。正解データは、ニューラルネットワーク1100の学習に用いるデータである。正解データの付与方法については後述する。
次にS407にて、学習データ生成部112は、このようにして蓄積したデータ(サンプル画像と正解データ)に基づいて学習データを生成する。このとき、学習データ生成部112は、特定のID情報に基づくサンプル画像のみを用いて学習データを生成してもよい。その後S408にて、学習データ生成部112は、学習部113に学習データを送信する。なお、特定のID情報に基づくデータのみを用いて学習データを生成した場合、当該ID情報も併せて送信する。
次にS409にて、学習部113は、受信した学習データに基づき、学習処理を行い、学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。以上のようにして、学習フェーズにおける一連のシーケンスが終了する。これにより、ユーザにより付与された正解データに基づき生成された学習データを用いて学習された学習結果が学習装置102に保持される。
次にS409にて、学習部113は、受信した学習データに基づき、学習処理を行い、学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。以上のようにして、学習フェーズにおける一連のシーケンスが終了する。これにより、ユーザにより付与された正解データに基づき生成された学習データを用いて学習された学習結果が学習装置102に保持される。
<利用フェーズのシーケンス>
続いて、画像処理システム100における利用フェーズのシーケンスについて説明する。図4Bは、本実施形態に係る利用フェーズのシーケンス図である。
S351にて、ユーザが原稿(帳票)の読取指示を行うと、S352にて、画像取得部111は、原稿を読み取って処理対象画像を生成する。この処理対象画像としての読取画像は、例えば図5(a)に示す帳票400、及び図5(b)に示す帳票450である。これらの帳票は、氏名の記入欄(氏記入欄401と名記入欄402、及び氏名記入欄451)や、住所記入欄403,452、電話番号記入欄404,453を備え、各記入欄には氏名や住所、電話番号が手書きで記入されている。また、各記入欄に対応する項目名の見出し411,412,413,414,461,462,463には、原稿に予め印刷されていた活字の画像が含まれている。なお、これら記入欄の配置(帳票のレイアウト)は、帳票作成元により決定されるため、読み取り対象の帳票ごとに異なる画像となる。本実施形態において、読取画像は、いわゆる非定型帳票の画像である。
続いて、画像処理システム100における利用フェーズのシーケンスについて説明する。図4Bは、本実施形態に係る利用フェーズのシーケンス図である。
S351にて、ユーザが原稿(帳票)の読取指示を行うと、S352にて、画像取得部111は、原稿を読み取って処理対象画像を生成する。この処理対象画像としての読取画像は、例えば図5(a)に示す帳票400、及び図5(b)に示す帳票450である。これらの帳票は、氏名の記入欄(氏記入欄401と名記入欄402、及び氏名記入欄451)や、住所記入欄403,452、電話番号記入欄404,453を備え、各記入欄には氏名や住所、電話番号が手書きで記入されている。また、各記入欄に対応する項目名の見出し411,412,413,414,461,462,463には、原稿に予め印刷されていた活字の画像が含まれている。なお、これら記入欄の配置(帳票のレイアウト)は、帳票作成元により決定されるため、読み取り対象の帳票ごとに異なる画像となる。本実施形態において、読取画像は、いわゆる非定型帳票の画像である。
S353にて、画像取得部111は、上述のようにして読み取られた処理対象画像を、画像変換部114に送信する。なお、この処理対象画像には、ID情報が付与されてもよい。S354にて、画像変換部114は、処理対象画像を受信すると、処理対象画像のテキスト化指示を受け付ける。このとき、画像変換部114は、画像取得部111として機能する画像処理装置101を識別するための情報等をデータの返信先として記憶する。テキスト化指示を受け付けると、S355にて、画像変換部114は、最新の学習モデルを学習部113に要求する。これに応じて、S356にて、学習部113は、最新の学習モデルを画像変換部114に送信する。なお、画像変換部114からの要求時にID情報が指定されていた場合は、ID情報に対応する学習モデルを送信する。S357にて、画像変換部114は、取得した学習モデルに基づいて、処理対象画像に対して、手書き領域推定を行う。そしてS358にて、画像変換部114は、S357により推定された手書き領域毎に手書き抽出画像を生成して、当該手書き抽出画像を手書きOCR部116に送信する。S359にて、手書きOCR部116は、手書き抽出画像について手書きOCR処理を施し、テキストデータ(手書き)を取得する。そしてS360にて、手書きOCR部116は、取得したテキストデータ(手書き)を画像変換部114に送信する。
続けてS361にて、画像変換部114は、処理対象画像から活字画像と活字領域を生成する。そしてS362にて、画像変換部114は、活字OCR部117に活字画像と活字領域を送信する。S363にて、活字OCR部117は、活字画像の活字領域に活字OCR処理を施し、テキストデータ(活字)を取得する。そしてS364にて、活字OCR部117は、取得したテキストデータ(活字)を画像変換部114に送信する。その後S365にて、画像変換部114は、テキストデータ(手書き)、及びテキストデータ(活字)に少なくとも基づいて帳票テキストデータを生成する。S366にて、画像変換部114は、生成した帳票テキストデータを画像取得部111に送信する。S367にて、画像取得部111は、帳票テキストデータを取得すると、取得した帳票テキストデータを反映した利用画面を表示デバイス210に表示し、ユーザに提示する。その後、画像取得部111は、帳票テキストデータの利用用途に応じて、帳票テキストデータを出力する。例えば、画像取得部111は、別体外部の業務システム(不図示)に送信したり、印刷したりして出力する。
<操作画面>
図4Aの学習シーケンスにおけるS401に示したユーザの指示は、次のような操作画面で行われる。図6(a)は、本実施形態に係る学習用スキャン画面を示す図である。学習用スキャン画面500は、画像処理装置101の表示デバイス210に表示される画面の一例である。図6(a)に示すように、学習用スキャン画面500は、プレビュー領域501、スキャンボタン502、及び送信開始ボタン503を備える。
図4Aの学習シーケンスにおけるS401に示したユーザの指示は、次のような操作画面で行われる。図6(a)は、本実施形態に係る学習用スキャン画面を示す図である。学習用スキャン画面500は、画像処理装置101の表示デバイス210に表示される画面の一例である。図6(a)に示すように、学習用スキャン画面500は、プレビュー領域501、スキャンボタン502、及び送信開始ボタン503を備える。
スキャンボタン502は、スキャナデバイス206にセットされた原稿の読取開始を指示するためのボタンである。スキャンが完了すると、サンプル画像が生成され、プレビュー領域501に表示される。スキャナデバイス206に別の原稿をセットし、スキャンボタン502を再び押すことで、画像処理装置101は、複数のサンプル画像をまとめて保持しておくこともできる。原稿が読み取られると、送信開始ボタン503が指示可能となる。送信開始ボタン503が指示されると、サンプル画像が学習装置102に送信される。
また、図4Aの学習シーケンスにおけるS405に示したユーザの指示は、次のような操作画面で行われる。図6(b)は、正解データ作成画面を示す図である。ユーザが、正解データ作成画面の表示内容に基づいて操作することで、正解データが入力される。正解データ作成画面520は、学習装置102の表示デバイス237に表示される画面の一例である。なお、正解データ作成画面520は、学習装置102にネットワークを介して接続された他の装置(PC等)の表示デバイスに表示され、当該他の装置を介して学習装置102に対する指示を行うように構成してもよい。図6(b)に示すように、正解データ作成画面520は、画像表示領域521、画像選択ボタン522、拡大ボタン523、縮小ボタン524、及び保存ボタン525を備える。
画像選択ボタン522は、画像処理装置101から受信し、画像蓄積部115に蓄積されているサンプル画像を選択するためのボタンである。画像選択ボタン522が指示されると、選択画面(不図示)が表示され、サンプル画像を選択可能になる。サンプル画像が選択されると、画像表示領域521に選択したサンプル画像が表示される。ユーザが画像表示領域521に表示されたサンプル画像に対して操作することで、正解データが入力される。
拡大ボタン523と縮小ボタン524は、画像表示領域521の表示を、拡大あるいは縮小するためのボタンである。拡大ボタン523や縮小ボタン524が指示されると、ユーザが正解データを作成しやすいよう、学習データ生成部112が、画像表示領域521に表示されているサンプル画像を拡大および縮小して表示する。
図6(c)は、図6(b)の画像表示領域521の表示内容の一部について正解データの入力を行う際の表示例を示す図である。ユーザは、図6(c)に示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されているサンプル画像中の画素を選択する。これは次のように操作して行う。
まず、マウスカーソルで操作して画素をなぞるように選択する。当該画素群により成る閉領域内の画素が手書き領域の正解データとして選択される。このときユーザは、手書き領域の正解データを、連続した画素集合となるよう選択する。また、ひとつの記入項目の手書き記入を構成する手書きストロークをすべて内包するように選択する(文字間で手書き領域が分離しないよう、文字と文字は結ばれるよう選択する)。また、印字画素を含まないように選択する。さらに、上記手書きストロークを内包する外接矩形の面積よりも、選択した画素の面積が少なくなるように選択する。この面積の減少が、当該外接矩形の外周部の欠損により生じるよう選択する。
図6(c)は、図6(b)の画像表示領域521の表示内容の一部について正解データの入力を行う際の表示例を示す図である。ユーザは、図6(c)に示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されているサンプル画像中の画素を選択する。これは次のように操作して行う。
まず、マウスカーソルで操作して画素をなぞるように選択する。当該画素群により成る閉領域内の画素が手書き領域の正解データとして選択される。このときユーザは、手書き領域の正解データを、連続した画素集合となるよう選択する。また、ひとつの記入項目の手書き記入を構成する手書きストロークをすべて内包するように選択する(文字間で手書き領域が分離しないよう、文字と文字は結ばれるよう選択する)。また、印字画素を含まないように選択する。さらに、上記手書きストロークを内包する外接矩形の面積よりも、選択した画素の面積が少なくなるように選択する。この面積の減少が、当該外接矩形の外周部の欠損により生じるよう選択する。
学習データ生成部112は、以上のような操作を受け付けると、上記操作により選択されたサンプル画像上の画素位置を記録する。すなわち、手書き領域推定の正解データは、サンプル画像上の、手書き領域に該当する画素の位置情報である。
保存ボタン525は、作成された正解データの保存するためのボタンである。手書き領域推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。
処理対象のサンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択された手書き領域に該当する画素の値は、手書き領域であることを示す値(例えば255、以降も同様)である。また、それ以外の画素の値は、手書き領域ではないことを示す値(例えば0、以降も同様)である。以降、このような手書き領域推定の正解データである画像を「正解画像」と呼称する。図5(c)は、図5(a)に示す帳票400に対して生成された正解画像の例を示す。
保存ボタン525は、作成された正解データの保存するためのボタンである。手書き領域推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。
処理対象のサンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択された手書き領域に該当する画素の値は、手書き領域であることを示す値(例えば255、以降も同様)である。また、それ以外の画素の値は、手書き領域ではないことを示す値(例えば0、以降も同様)である。以降、このような手書き領域推定の正解データである画像を「正解画像」と呼称する。図5(c)は、図5(a)に示す帳票400に対して生成された正解画像の例を示す。
また、図4Bの利用シーケンスにおけるS351に示したユーザの指示は、次のような操作画面で行われる。図6(d)は、帳票処理画面を示す図である。帳票処理画面540は、画像処理装置101の表示デバイス210に表示される画面の一例である。図5(d)に示すように、帳票処理画面540は、プレビュー領域541、スキャンボタン542、及び送信開始ボタン543を備える。
スキャンボタン542は、スキャナデバイス206にセットされた原稿の読取開始を指示するためのボタンである。スキャンが完了すると、処理対象画像が生成され、プレビュー領域541に表示される。原稿が読み取られると、送信開始ボタン543が指示可能となる。送信開始ボタン543が指示されると、処理対象画像が画像処理サーバ103に送信される。
スキャンボタン542は、スキャナデバイス206にセットされた原稿の読取開始を指示するためのボタンである。スキャンが完了すると、処理対象画像が生成され、プレビュー領域541に表示される。原稿が読み取られると、送信開始ボタン543が指示可能となる。送信開始ボタン543が指示されると、処理対象画像が画像処理サーバ103に送信される。
続いて、図7~図9を用いて、図4Aに示す本実施形態に係る学習フェーズのシーケンスにおいて、各装置により実行される処理の詳細について説明する。
<サンプル画像生成処理>
まず、画像処理装置101によるサンプル画像生成処理について説明する。図7(a)は、本実施形態に係るサンプル画像生成処理を示すフローチャートである。サンプル画像生成処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
<サンプル画像生成処理>
まず、画像処理装置101によるサンプル画像生成処理について説明する。図7(a)は、本実施形態に係るサンプル画像生成処理を示すフローチャートである。サンプル画像生成処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
まずS601において、CPU201は、原稿のスキャン指示がされたか否かを判定する。CPU201が入力デバイス209を介して原稿をスキャンするための所定の操作(スキャンボタン502の指示)を検知した場合、YESと判定し、処理はS602に遷移する。そうでない場合、CPU201がNOと判定し、一連のフローチャートの処理が終了する。
S602において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンしてサンプル画像を生成する。サンプル画像は、グレースケールの画像データとして生成される。
S603において、CPU201は、S602で生成したサンプル画像を、外部インタフェース211を介して、学習装置102に送信する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像生成処理によれば、画像処理装置101は、学習用として読み取った原稿のサンプル画像を生成して、学習装置102に送信することができる。
S602において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンしてサンプル画像を生成する。サンプル画像は、グレースケールの画像データとして生成される。
S603において、CPU201は、S602で生成したサンプル画像を、外部インタフェース211を介して、学習装置102に送信する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像生成処理によれば、画像処理装置101は、学習用として読み取った原稿のサンプル画像を生成して、学習装置102に送信することができる。
<サンプル画像受信処理>
次に、学習装置102によるサンプル画像受信処理について説明する。図7(b)は、本実施形態に係るサンプル画像受信処理を示すフローチャートである。サンプル画像受信処理は、学習装置102のCPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
次に、学習装置102によるサンプル画像受信処理について説明する。図7(b)は、本実施形態に係るサンプル画像受信処理を示すフローチャートである。サンプル画像受信処理は、学習装置102のCPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
S621において、CPU231は、サンプル画像を受信したか否かを判定する。CPU231が外部インタフェース238を介して画像データを受信していた場合、YESと判定し、処理はS622に遷移する。そうでない場合、CPU231がNOと判定し、一連のフローチャートの処理が終了する。
S622において、CPU231は、受信したサンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像受信処理によれば、画像処理装置101で生成されたサンプル画像を、学習装置102に蓄積することができる。
S622において、CPU231は、受信したサンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像受信処理によれば、画像処理装置101で生成されたサンプル画像を、学習装置102に蓄積することができる。
<正解データ生成処理>
次に、学習装置102による正解データ生成処理について説明する。図7(c)は、正解データ生成処理を示すフローチャートである。正解データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S641において、CPU231は、サンプル画像の選択指示がされたか否かを判定する。CPU231が入力デバイス236を介してサンプル画像を選択するための所定の操作(図6(b)の画像選択ボタン522の指示)を検知した場合、YESと判定し、処理はS642に遷移する。そうでない場合、CPU231がNOと判定し、処理はS643に遷移する。
S642において、CPU231は、S641でユーザが選択したサンプル画像を、ストレージ235から読み出して図6(b)の画像表示領域521に表示することで、ユーザに対して提示する。
S643において、CPU231は、ユーザが正解データの入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、前述したように、サンプル画像上の領域を手書き領域として選択する操作を検知した場合、YESと判定し、処理はS644に遷移する。そうでない場合、CPU231がNOと判定し、処理はS645に遷移する。
S644において、CPU231は、ユーザの操作により入力された手書き領域推定の正解データをRAM234に一時的に記憶する。前述のとおり、手書き領域推定の正解データは、サンプル画像上の、手書き領域に該当する画素の位置情報である。
次に、学習装置102による正解データ生成処理について説明する。図7(c)は、正解データ生成処理を示すフローチャートである。正解データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S641において、CPU231は、サンプル画像の選択指示がされたか否かを判定する。CPU231が入力デバイス236を介してサンプル画像を選択するための所定の操作(図6(b)の画像選択ボタン522の指示)を検知した場合、YESと判定し、処理はS642に遷移する。そうでない場合、CPU231がNOと判定し、処理はS643に遷移する。
S642において、CPU231は、S641でユーザが選択したサンプル画像を、ストレージ235から読み出して図6(b)の画像表示領域521に表示することで、ユーザに対して提示する。
S643において、CPU231は、ユーザが正解データの入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、前述したように、サンプル画像上の領域を手書き領域として選択する操作を検知した場合、YESと判定し、処理はS644に遷移する。そうでない場合、CPU231がNOと判定し、処理はS645に遷移する。
S644において、CPU231は、ユーザの操作により入力された手書き領域推定の正解データをRAM234に一時的に記憶する。前述のとおり、手書き領域推定の正解データは、サンプル画像上の、手書き領域に該当する画素の位置情報である。
次にS645において、CPU231は、正解データの保存指示がされたか否かを判定する。CPU231が入力デバイス236を介して、正解データを保存するための所定の操作(図6(b)の保存ボタン525の指示)を検知した場合、YESと判定し、処理はS646に遷移する。そうでない場合、CPU231がNOと判定し、RAM234に記憶されたデータを破棄して、一連のフローチャートの処理が終了する。
S646において、CPU231は、手書き領域推定の正解データを用いて、正解画像を生成して保存する。具体的には、CPU231は、次のようにして正解画像を生成する。まず、CPU231は、正解画像として、S642で読み出したサンプル画像と同じサイズの画像を生成する。当該画像のすべての画素を、手書き領域ではないことを示す値にする。次いで、CPU231は、S644にてRAM234に一時的に記憶した画素の位置情報を参照し、正解画像上の該当する画素の値を、手書き領域であることを示す値に変更する。CPU231は、このようにして生成した正解画像を、S642で読み出したサンプル画像と関連付けて、ストレージ235の所定の領域に保存する。その後、一連のフローチャートの処理が終了する。
CPU231は、正解データ生成処理を終了するための所定の操作がユーザから入力されるまで、S641~S646の処理を繰り返し実行する。
以上のような正解データ生成処理によれば、学習装置102は、学習データの生成に必要な正解画像を生成することができる。
S646において、CPU231は、手書き領域推定の正解データを用いて、正解画像を生成して保存する。具体的には、CPU231は、次のようにして正解画像を生成する。まず、CPU231は、正解画像として、S642で読み出したサンプル画像と同じサイズの画像を生成する。当該画像のすべての画素を、手書き領域ではないことを示す値にする。次いで、CPU231は、S644にてRAM234に一時的に記憶した画素の位置情報を参照し、正解画像上の該当する画素の値を、手書き領域であることを示す値に変更する。CPU231は、このようにして生成した正解画像を、S642で読み出したサンプル画像と関連付けて、ストレージ235の所定の領域に保存する。その後、一連のフローチャートの処理が終了する。
CPU231は、正解データ生成処理を終了するための所定の操作がユーザから入力されるまで、S641~S646の処理を繰り返し実行する。
以上のような正解データ生成処理によれば、学習装置102は、学習データの生成に必要な正解画像を生成することができる。
<学習データ生成処理>
次に、学習装置102による学習データ生成処理について説明する。図8(a)は、本実施形態に係る学習データ生成処理を示すフローチャートである。学習データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
まずS701において、CPU231は、ストレージ235に記憶しているサンプル画像を選択して読み出す。図7(b)のS622の処理により、ストレージ235には複数のサンプル画像が記録されているので、その中からランダムにひとつを選択する。
S702において、CPU231は、ストレージ235に記憶している正解画像を読み出す。図7(c)のS646の処理により、S701で読み出したサンプル画像に関連付けられた正解画像がストレージ235に記憶されているので、これを読み出す。
S703において、CPU231は、S701で読み出したサンプル画像中の一部(例えば、縦×横=256×256の大きさ)を切り出して、学習データに用いる入力画像を生成する。なお、切り出し位置はランダムに決定する。
次に、学習装置102による学習データ生成処理について説明する。図8(a)は、本実施形態に係る学習データ生成処理を示すフローチャートである。学習データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
まずS701において、CPU231は、ストレージ235に記憶しているサンプル画像を選択して読み出す。図7(b)のS622の処理により、ストレージ235には複数のサンプル画像が記録されているので、その中からランダムにひとつを選択する。
S702において、CPU231は、ストレージ235に記憶している正解画像を読み出す。図7(c)のS646の処理により、S701で読み出したサンプル画像に関連付けられた正解画像がストレージ235に記憶されているので、これを読み出す。
S703において、CPU231は、S701で読み出したサンプル画像中の一部(例えば、縦×横=256×256の大きさ)を切り出して、学習データに用いる入力画像を生成する。なお、切り出し位置はランダムに決定する。
S704において、CPU231は、S702で読み出した正解画像の一部を切り出して、手書き領域推定の学習データに用いる正解ラベル画像を生成する。なお、切り出す位置およびサイズは、S703でサンプル画像から入力画像を切り出した位置およびサイズと同様とする。
S705において、CPU231は、S703で生成した入力画像と、S704で生成した正解ラベル画像とを対応付け、手書き領域推定の学習データとしてストレージ235の所定の領域に保存する。図9は、本実施形態における学習データの一例である。学習データは、図9(a)に示すような入力画像と、図9(b)に示すような正解ラベル画像がセットにされたデータである。その後、一連のフローチャートの処理が終了する。
CPU231は、予め決定された学習データの数が生成されるまで、S701~S705の処理を繰り返し実行する。
S705において、CPU231は、S703で生成した入力画像と、S704で生成した正解ラベル画像とを対応付け、手書き領域推定の学習データとしてストレージ235の所定の領域に保存する。図9は、本実施形態における学習データの一例である。学習データは、図9(a)に示すような入力画像と、図9(b)に示すような正解ラベル画像がセットにされたデータである。その後、一連のフローチャートの処理が終了する。
CPU231は、予め決定された学習データの数が生成されるまで、S701~S705の処理を繰り返し実行する。
以上のような学習データ生成処理によれば、ニューラルネットワーク1100の学習データを生成することができる。なお、ニューラルネットワーク1100の汎用性を高めるために、学習データの加工を行ってもよい。例えば、入力画像を所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する変倍率で変倍する。正解ラベル画像も同様に変倍する。あるいは、入力画像を所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する回転角度で回転する。正解ラベル画像も同様に回転する。変倍や回転を考慮する場合には、S703やS704で入力画像や正解ラベル画像を切り出す際に、少し大きめのサイズ(例えば、縦横2倍の大きさとして、縦×横=512×512の大きさ)で切り出す。そして、変倍および回転後に、最終的な入力画像や正解ラベル画像のサイズ(例えば、縦×横=256×256)となるよう中心部分から切り出す。あるいは、入力画像の各画素の輝度を変更して加工してもよい。すなわち、ガンマ補正を用いて入力画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。
<学習処理>
次に、学習装置102による学習処理について説明する。図8(b)は、本実施形態に係る学習処理を示すフローチャートである。学習処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワーク1100の学習には、ミニバッチ法を用いるものとする。
まずS731において、CPU231は、ニューラルネットワーク1100を初期化する。すなわち、CPU231は、ニューラルネットワーク1100を構築し、ニューラルネットワーク1100に含まれるパラメータの値を、ランダムに決定して初期化する。
S732において、CPU231は、学習データを取得する。CPU231は、図8(a)のフローチャートに示した、学習データ生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。なお、事前の学習データ生成処理によって生成した大量の学習データから、ミニバッチサイズ分の学習データを取得してもよい。
S733において、CPU231は、ニューラルネットワーク1100のエンコーダ部1101の出力を得る。具体的には、CPU231は、手書き領域推定の各学習データに含まれる入力画像をニューラルネットワーク1100に入力して、エンコーダ部1112の出力する特徴マップを得る。
次に、学習装置102による学習処理について説明する。図8(b)は、本実施形態に係る学習処理を示すフローチャートである。学習処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワーク1100の学習には、ミニバッチ法を用いるものとする。
まずS731において、CPU231は、ニューラルネットワーク1100を初期化する。すなわち、CPU231は、ニューラルネットワーク1100を構築し、ニューラルネットワーク1100に含まれるパラメータの値を、ランダムに決定して初期化する。
S732において、CPU231は、学習データを取得する。CPU231は、図8(a)のフローチャートに示した、学習データ生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。なお、事前の学習データ生成処理によって生成した大量の学習データから、ミニバッチサイズ分の学習データを取得してもよい。
S733において、CPU231は、ニューラルネットワーク1100のエンコーダ部1101の出力を得る。具体的には、CPU231は、手書き領域推定の各学習データに含まれる入力画像をニューラルネットワーク1100に入力して、エンコーダ部1112の出力する特徴マップを得る。
S734において、CPU231は、ニューラルネットワーク1100の手書き領域推定結果の誤差を算出する。具体的には、CPU231は、S733で取得した特徴マップを、デコーダ部1122に入力してデコーダ部1122の出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書き領域であると判定された画素は、手書き領域を示す値を有し、手書き領域ではないと判定された画素は、手書き領域ではないことを示す値を有する画像である。そして、CPU231は、当該出力と学習データに含まれる正解ラベル画像との差を評価して誤差を求める。当該評価には、指標として交差エントロピーを用いることができる。
S735において、CPU231は、ニューラルネットワーク1100のパラメータを調整する。具体的には、CPU231は、S734において算出した誤差をもとに、バックプロパゲーション法によってニューラルネットワーク1100のパラメータの値を変更する。
S736において、CPU231は、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S732~S735の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザの操作入力などにより、予め決定することができる。CPU231が処理回数が所定回数に達したと判定した場合、処理はS737に遷移する。CPU231が処理回数が所定回数に達していないと判定した場合、処理はS732に遷移し、CPU231はニューラルネットワーク1100の学習を続ける。
S737において、CPU231は、学習結果として、S735において調整したニューラルネットワーク1100のパラメータを、画像処理サーバ103に送信する。
以上のようにして、学習データを用いたニューラルネットワーク1100の学習処理が行われる。
S735において、CPU231は、ニューラルネットワーク1100のパラメータを調整する。具体的には、CPU231は、S734において算出した誤差をもとに、バックプロパゲーション法によってニューラルネットワーク1100のパラメータの値を変更する。
S736において、CPU231は、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S732~S735の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザの操作入力などにより、予め決定することができる。CPU231が処理回数が所定回数に達したと判定した場合、処理はS737に遷移する。CPU231が処理回数が所定回数に達していないと判定した場合、処理はS732に遷移し、CPU231はニューラルネットワーク1100の学習を続ける。
S737において、CPU231は、学習結果として、S735において調整したニューラルネットワーク1100のパラメータを、画像処理サーバ103に送信する。
以上のようにして、学習データを用いたニューラルネットワーク1100の学習処理が行われる。
続いて、図10を用いて、図4Bに示す利用フェーズのシーケンスにおいて、画像処理サーバ103により実行される処理の詳細について説明する。
まず、画像処理装置101が、手書き記入がされた帳票をスキャンして処理対象画像を生成し、画像処理サーバ103に送信して、帳票テキスト化を依頼する。処理対象画像は、グレースケールの画像データとして生成される。なお、学習に用いられた入力画像が、カラー画像など他の画像形式であれば、他の画像形式で生成されても構わない。
まず、画像処理装置101が、手書き記入がされた帳票をスキャンして処理対象画像を生成し、画像処理サーバ103に送信して、帳票テキスト化を依頼する。処理対象画像は、グレースケールの画像データとして生成される。なお、学習に用いられた入力画像が、カラー画像など他の画像形式であれば、他の画像形式で生成されても構わない。
<帳票テキスト化処理>
次に、画像処理サーバ103による帳票テキスト化処理について説明する。図10は、帳票テキスト化処理を示すフローチャートである。図11A及び図11Bは、帳票テキスト化処理において生成されるデータについて説明するための図である。画像変換部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像(読取画像)を受信し、当該読取画像に含まれる活字や手書き文字に対してOCR処理を施してテキストデータを取得する。活字に対するOCRは、OCRサーバ104の活字OCR部117に実行させる。手書き文字に対するOCRは、OCRサーバ104の手書きOCR部116に実行させる。帳票テキスト化処理は、画像処理サーバ103のCPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
次に、画像処理サーバ103による帳票テキスト化処理について説明する。図10は、帳票テキスト化処理を示すフローチャートである。図11A及び図11Bは、帳票テキスト化処理において生成されるデータについて説明するための図である。画像変換部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像(読取画像)を受信し、当該読取画像に含まれる活字や手書き文字に対してOCR処理を施してテキストデータを取得する。活字に対するOCRは、OCRサーバ104の活字OCR部117に実行させる。手書き文字に対するOCRは、OCRサーバ104の手書きOCR部116に実行させる。帳票テキスト化処理は、画像処理サーバ103のCPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
まずS951において、CPU261は、図3に示す手書き領域推定を行うニューラルネットワーク1100をロードする。具体的にはまず、CPU261は、図8(b)のフローチャートにおける、S731の場合と同一のニューラルネットワーク1100を構築する。そして、CPU261は、S737にて学習装置102から送信された学習結果(ニューラルネットワーク1100のパラメータ)を、構築したニューラルネットワーク1100に反映する。
S952において、CPU261は、外部インタフェース268を介して、画像処理装置101から処理対象画像を受信したか否かを判定する。CPU261が処理対象画像を受信していた場合、YESと判定し、処理はS953に遷移する。そうでない場合、CPU261がNOと判定し、処理対象画像の受信待機状態を継続しつつ、一連のフローチャートの処理が終了する。例として、ここでは、処理対象画像として、図11Aの帳票400(図5(a)に示した帳票400と同様)を受信したものとする。
S953において、CPU261は、画像処理装置101から受信した処理対象画像を、S951で構築したニューラルネットワーク1100に入力し、エンコーダ部1102が出力する特徴マップを得る。
S952において、CPU261は、外部インタフェース268を介して、画像処理装置101から処理対象画像を受信したか否かを判定する。CPU261が処理対象画像を受信していた場合、YESと判定し、処理はS953に遷移する。そうでない場合、CPU261がNOと判定し、処理対象画像の受信待機状態を継続しつつ、一連のフローチャートの処理が終了する。例として、ここでは、処理対象画像として、図11Aの帳票400(図5(a)に示した帳票400と同様)を受信したものとする。
S953において、CPU261は、画像処理装置101から受信した処理対象画像を、S951で構築したニューラルネットワーク1100に入力し、エンコーダ部1102が出力する特徴マップを得る。
S954において、CPU261は、画像処理装置101から受信した処理対象画像から手書き領域を推定する。具体的には、CPU261は、S953で取得した特徴マップをデコーダ部1122に入力し、手書き領域を推定させる。ニューラルネットワーク1100の出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズであり、予測結果として手書き領域であると判定された画素に対して、手書き領域であること示す値が記録され、手書き領域ではないと判定された画素に対して、手書き領域ではないことを示す値が記録された画像データが得られる。なお、前述したように、図4AのS405にて、ユーザは手書き領域推定の正解データが、連続した画素集合となるよう選択した。また、ひとつの記入項目を構成する手書きストロークをすべて内包するように、且つ印字画素を含まないように選択した。さらに、上記手書きストロークを内包する外接矩形の面積よりも、選択した画素の面積が少なくなるように選択した。この面積の減少は当該外接矩形の外周部の欠損により生じるよう選択した。つまり、外接矩形の領域に比して、不要な画素をより含まないよう手書き領域の画素を選択した。したがって、ニューラルネットワーク1100は、このような正解データを用いて学習しているため、上述のような画素集合を手書き領域の推定結果として出力する。図11Aの画像1002に、処理対象画像(帳票400)に対して推定された手書き領域を例示する。
S955において、CPU261は、処理対象画像中におけるS954で推定した手書き領域内の画素を取得して、手書き抽出画像を生成する。ニューラルネットワーク1100は、上述の学習データを用いて学習されているため、手書き部分の周囲の印字画素を含まないよう手書き領域の画素群が推定され、手書き画素から構成される部分画像を生成することができる。CPU261は、取得した画素群に対する外接矩形を算出し、取得した画素群の当該外接矩形に対する欠損部分を白画素で埋めることで、矩形状の画像に成形する。これにより図11Aに示す手書き抽出画像1001が得られる。手書き抽出画像は、推定された手書き領域の数だけ出力される。
S956において、CPU261は、S955で生成したすべての手書き抽出画像を、外部インタフェース268を介して、手書きOCR部116に送信する。そして、すべての手書き抽出画像に対して手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。手書き抽出画像を手書きOCRすることにより、手書きOCR部116が手書き画素と共に不要な印刷画素を参照することを低減し、これにより手書きOCRの精度を向上させることができる。また、推定した手書き領域毎に手書きOCRすることにより、記入項目ごとの手書きOCR結果を得ることができる。
S956において、CPU261は、S955で生成したすべての手書き抽出画像を、外部インタフェース268を介して、手書きOCR部116に送信する。そして、すべての手書き抽出画像に対して手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。手書き抽出画像を手書きOCRすることにより、手書きOCR部116が手書き画素と共に不要な印刷画素を参照することを低減し、これにより手書きOCRの精度を向上させることができる。また、推定した手書き領域毎に手書きOCRすることにより、記入項目ごとの手書きOCR結果を得ることができる。
S957において、CPU261は、手書きOCR部116から、すべての手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCR部116が、手書き領域に含まれていた手書き文字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して手書きOCR部116から手書きOCR結果を受信していた場合、YESと判定し、処理はS958に遷移する。そうでない場合、CPU261がS957の処理を繰り返す。ここまでの処理によって、手書き領域(画素集合)と当該手書き領域に含まれていた手書き文字を認識して得たテキストデータが得られた。ここでCPU261は、画素集合である手書き領域について、当該手書き領域を内包する外接矩形を取得する。以降、これを「手書き領域矩形」と呼称する。CPU261は、上記テキストデータと手書き領域矩形の座標情報とを対応付けて、図11Bに示すような手書き情報テーブル1003としてRAM264等に記憶しておく。
S958において、CPU261は、S954で推定した手書き領域の画素集合に基づいて、処理対象画像から手書き部分を除去して活字画像を生成する。具体的には、CPU261は、処理対象画像の画素であって、S954で推定した手書き領域の画素と同位置の画素の値を、白(RGB=(255,255,255))に変更する。これにより、図11Aに示すような活字画像1004が得られる。
次にS959において、CPU261は、S958で生成した活字画像から活字領域を抽出する。具体的には、CPU261は、活字領域として、活字を内包する活字画像上の部分領域を抽出する。ここで部分領域とは、印刷内容のまとまり(オブジェクト)であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、あるいは、図や写真、表、グラフ、といったオブジェクトである。この部分領域の抽出方法として、例えば以下のような手法を取り得る。
次にS959において、CPU261は、S958で生成した活字画像から活字領域を抽出する。具体的には、CPU261は、活字領域として、活字を内包する活字画像上の部分領域を抽出する。ここで部分領域とは、印刷内容のまとまり(オブジェクト)であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、あるいは、図や写真、表、グラフ、といったオブジェクトである。この部分領域の抽出方法として、例えば以下のような手法を取り得る。
まず、CPU261は、活字画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分(連結黒画素)を抽出し、これに外接する矩形を作成していく。当該矩形の形状や大きさを評価することで、文字ないし文字の一部である矩形群を得ることができる。これら矩形群について、矩形間の距離を評価し、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得ることができる。また、同様の大きさの文字の矩形が近くに並んでいる場合には、それらを統合して文字行の矩形群を得ることができる。短辺長が同様の文字行の矩形が等間隔に並んでいる場合は、それらを統合して文章の矩形群を得ることができる。また、図や写真、表、グラフなど、文字や行、文章以外のオブジェクトを内包する矩形も得ることができる。以上のように抽出した矩形から、単独の文字あるいは文字の一部である矩形を除外し、残った矩形を活字領域とする。図11Aの画像1005に、活字画像1004に対して抽出された活字領域を点線枠で例示する。本処理ステップでは、活字画像から複数の背景部分領域が活字領域として抽出され得る。
S960において、CPU261は、S958で生成した活字画像と、S959で活字画像から抽出された活字領域とを、外部インタフェース268を介して、活字OCR部117に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
S961において、CPU261は、活字OCR部117から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCR部117が、活字領域に含まれていた活字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して活字OCR部117から活字OCR結果を受信していた場合、YESと判定し、処理はS962に遷移する。そうでない場合、CPU261がS961の処理を繰り返す。ここまでの処理によって、活字領域(座標情報)とそこに含まれていた活字を認識して得たテキストデータが得られた。ここでCPU261は、上記テキストデータと活字領域(座標情報)とを対応付けて、図11Bに示すような活字情報テーブル1006としてRAM264等に記憶しておく。
S961において、CPU261は、活字OCR部117から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCR部117が、活字領域に含まれていた活字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して活字OCR部117から活字OCR結果を受信していた場合、YESと判定し、処理はS962に遷移する。そうでない場合、CPU261がS961の処理を繰り返す。ここまでの処理によって、活字領域(座標情報)とそこに含まれていた活字を認識して得たテキストデータが得られた。ここでCPU261は、上記テキストデータと活字領域(座標情報)とを対応付けて、図11Bに示すような活字情報テーブル1006としてRAM264等に記憶しておく。
S962において、CPU261は、手書きOCR部116ないし活字OCR部117から受信した手書きOCR結果および活字OCR結果を統合し、帳票テキストデータを生成する。具体的には、CPU261は、元となった手書き領域矩形と活字領域の位置関係や、手書きOCR結果ないし活字OCR結果であるテキストデータの意味的な関係性を評価することで、手書きOCR結果および活字OCR結果の関連性を推定する。この推定は、手書き情報テーブル1003や活字情報テーブル1006に基づき行われる。例えば、氏見出し411内の活字領域に対して、最も距離が近い手書き領域矩形として、氏記入欄401内の手書き領域矩形が特定される。なお、距離のみならず、上下・左右等の、手書き領域矩形と活字領域の位置関係も考慮してよい。且つ、当該手書き領域矩形の手書きOCR結果であるテキストデータが、氏名の氏を含む文字列であれば、これは氏名の氏であると特定できる。よって、これら活字OCR結果と手書きOCR結果とを、氏名の氏に関する項目と値のペアの関係性と評価する。同様に氏名の名についても、活字領域と手書き領域矩形の距離、および手書きOCR結果に氏名の名を含む文字列であることから、両者の関係性が評価され、氏名の名に関する項目と値のペアの関係性と評価する。氏と名を統合し、氏名の項目と値のペアとすることができる。さらに同様に、住所についても、活字領域と手書き領域矩形の距離、および、手書きOCR結果に地名を含むことから、両者の関係性が評価される。電話番号についても、活字領域と手書き領域矩形の距離、および、手書きOCR結果が数字から構成されることから、両者の関係性が評価される。以上のようにして、手書きOCR結果と活字OCR結果とが、ひとつ以上の項目と値のペアとして統合され、図11Bに示すような帳票テキストデータ1007が生成される。
S963において、CPU261は、生成した帳票テキストデータを、画像取得部111に送信する。その後、一連のフローチャートの処理が終了する。
その後、画像取得部111が、画像処理サーバ103から帳票テキストデータを受信すると、当該帳票テキストデータを処理対象画像に対する処理結果として出力する。例えば、表示デバイス210に処理対象画像や帳票テキストデータを対比可能に表示したり、ユーザが入力デバイス209を操作して設定した送信宛先に、外部インタフェース211を介して、帳票テキストデータを送信したりすることができる。
その後、画像取得部111が、画像処理サーバ103から帳票テキストデータを受信すると、当該帳票テキストデータを処理対象画像に対する処理結果として出力する。例えば、表示デバイス210に処理対象画像や帳票テキストデータを対比可能に表示したり、ユーザが入力デバイス209を操作して設定した送信宛先に、外部インタフェース211を介して、帳票テキストデータを送信したりすることができる。
以上のような本実施形態に係る画像処理システムによれば、以下の(a)~(c)に示す特徴を持つ学習データを学習したニューラルネットワークを用いることで、記入項目ごとの連続した画素の集合として手書き領域を推定することができる。
(a)学習データの正解データは、連続した画素の集合である。この画素の集合は、ひとつの記入項目を構成する手書きストロークをすべて内包する。
(b)上記画素の集合は、印字画素を含まない。
(c)上記画素の集合の面積は、上記手書きストロークを内包する外接矩形の面積に対して、小さい。この面積の減少は、当該外接矩形の外周部の欠損により生じる。すなわち、外接矩形と比べたときに、手書き領域は、より手書きストロークに沿うような画素集合である。
このような学習データを学習したニューラルネットワークにより手書き領域を推定することで、手書きOCRの入力となる画像に印刷画素が混入することを低減することができる。すなわち、手書きOCRの精度低下を軽減することができる。
(b)上記画素の集合は、印字画素を含まない。
(c)上記画素の集合の面積は、上記手書きストロークを内包する外接矩形の面積に対して、小さい。この面積の減少は、当該外接矩形の外周部の欠損により生じる。すなわち、外接矩形と比べたときに、手書き領域は、より手書きストロークに沿うような画素集合である。
このような学習データを学習したニューラルネットワークにより手書き領域を推定することで、手書きOCRの入力となる画像に印刷画素が混入することを低減することができる。すなわち、手書きOCRの精度低下を軽減することができる。
本実施形態では、手書き文字を対象として、その領域およびその画素を推定するニューラルネットワークの例を示した。なお、推定の対象とするオブジェクトは、これに限らない。例えば、活字文字や押印を対象としてもよい。
[第2の実施形態]
上述の第1の実施形態では、手作業で作成された正解データに基づき学習データを生成する例について説明した。本実施形態では、画像処理により学習データを生成する例について説明する。なお、本実施形態に係る画像処理システムの構成は、特徴部分を除いて第1の実施形態の構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
上述の第1の実施形態では、手作業で作成された正解データに基づき学習データを生成する例について説明した。本実施形態では、画像処理により学習データを生成する例について説明する。なお、本実施形態に係る画像処理システムの構成は、特徴部分を除いて第1の実施形態の構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
<画像処理システム>
まず、本実施形態に係る画像処理システムについて説明する。本実施形態に係る画像処理システムの構成は、第1の実施形態の説明において図1に示したものと同様である。以下、第1の実施形態と相違する部分を中心に説明する。
画像処理装置101は、白紙に手書きのみが記入された原稿をスキャン機能によりスキャンして画像データを生成する。以降、この画像を「前景サンプル画像」と呼称する。前景サンプル画像は第2の読取画像の一例である。スキャンされた原稿には、手書き文字として、氏名や住所など、帳票に記入されるような内容が記入されている。一方、画像処理装置101は、電子文書(帳票)を印刷して印刷原稿を出力する。さらに、画像処理装置101は、この印刷原稿(手書き記入なし)をスキャンして画像データを生成する。以降、この画像を「背景サンプル画像」と呼称する。背景サンプル画像は第1の読取画像の一例である。スキャンされた原稿には、活字や、羅線などが含まれる。画像処理装置101は、ネットワーク105を介して、前景サンプル画像と背景サンプル画像を学習装置102に送信する。画像蓄積部115は、画像処理装置101が生成した前景サンプル画像と背景サンプル画像を蓄積する。
まず、本実施形態に係る画像処理システムについて説明する。本実施形態に係る画像処理システムの構成は、第1の実施形態の説明において図1に示したものと同様である。以下、第1の実施形態と相違する部分を中心に説明する。
画像処理装置101は、白紙に手書きのみが記入された原稿をスキャン機能によりスキャンして画像データを生成する。以降、この画像を「前景サンプル画像」と呼称する。前景サンプル画像は第2の読取画像の一例である。スキャンされた原稿には、手書き文字として、氏名や住所など、帳票に記入されるような内容が記入されている。一方、画像処理装置101は、電子文書(帳票)を印刷して印刷原稿を出力する。さらに、画像処理装置101は、この印刷原稿(手書き記入なし)をスキャンして画像データを生成する。以降、この画像を「背景サンプル画像」と呼称する。背景サンプル画像は第1の読取画像の一例である。スキャンされた原稿には、活字や、羅線などが含まれる。画像処理装置101は、ネットワーク105を介して、前景サンプル画像と背景サンプル画像を学習装置102に送信する。画像蓄積部115は、画像処理装置101が生成した前景サンプル画像と背景サンプル画像を蓄積する。
<学習フェーズのシーケンス>
続いて、図12を参照して、画像処理システム100により実行される学習フェーズのシーケンスについて説明する。図12は、本実施形態に係る学習フェーズのシーケンス図である。
S1201にて、ユーザが手書きのみが記入された原稿の読取指示を行うと、S1202にて、画像取得部111は、原稿を読み取り、前景サンプル画像を生成する。そして、生成した画像に対して前景フラグを付与する。また、S1203にて、ユーザが帳票の印刷原稿(手書き記入なし)の読取指示を行うと、S1204にて、画像取得部111は、原稿を読み取り、背景サンプル画像を生成する。そして、生成した画像に対して背景フラグを付与する。
S1205にて、画像取得部111は、上述のように読み取られた前景サンプル画像、及び背景サンプル画像を、学習データ生成部112に送信する。なお、このとき、前景サンプル画像、及び背景サンプル画像には、ID情報が付与されてもよい。
S1206にて、学習データ生成部112が、画像処理装置101から送信された画像を受信すると、画像蓄積部115に画像を蓄積する。
続いて、図12を参照して、画像処理システム100により実行される学習フェーズのシーケンスについて説明する。図12は、本実施形態に係る学習フェーズのシーケンス図である。
S1201にて、ユーザが手書きのみが記入された原稿の読取指示を行うと、S1202にて、画像取得部111は、原稿を読み取り、前景サンプル画像を生成する。そして、生成した画像に対して前景フラグを付与する。また、S1203にて、ユーザが帳票の印刷原稿(手書き記入なし)の読取指示を行うと、S1204にて、画像取得部111は、原稿を読み取り、背景サンプル画像を生成する。そして、生成した画像に対して背景フラグを付与する。
S1205にて、画像取得部111は、上述のように読み取られた前景サンプル画像、及び背景サンプル画像を、学習データ生成部112に送信する。なお、このとき、前景サンプル画像、及び背景サンプル画像には、ID情報が付与されてもよい。
S1206にて、学習データ生成部112が、画像処理装置101から送信された画像を受信すると、画像蓄積部115に画像を蓄積する。
S1207にて、ユーザが学習装置102に対して学習元データ(合成領域データ、項目領域データ)の付与指示を行うと、S1208にて、学習データ生成部112が、当該学習元データを取得して画像蓄積部115に蓄積する。後述するように、学習データ生成部112は、前景サンプル画像と背景サンプル画像を合成して学習データを生成する。
上述の合成領域データとは、当該合成処理において、背景サンプル画像上であって、手書きサンプルを合成する領域(合成領域)を示すデータである。S1208の処理により、学習データの生成に際し、合成領域データが予め作成される。合成領域データの付与方法については後述する。
また、上述の項目領域データとは、前景サンプル画像に含まれる手書きストロークについて、記入項目ごとにグルーピングされた領域(項目領域)を示すデータである。学習データ生成部112は、項目領域に基づいて、画素の集合である手書き領域推定の正解データを生成する。項目領域データの付与方法については後述する。
上述の合成領域データとは、当該合成処理において、背景サンプル画像上であって、手書きサンプルを合成する領域(合成領域)を示すデータである。S1208の処理により、学習データの生成に際し、合成領域データが予め作成される。合成領域データの付与方法については後述する。
また、上述の項目領域データとは、前景サンプル画像に含まれる手書きストロークについて、記入項目ごとにグルーピングされた領域(項目領域)を示すデータである。学習データ生成部112は、項目領域に基づいて、画素の集合である手書き領域推定の正解データを生成する。項目領域データの付与方法については後述する。
次にS1209にて、学習データ生成部112は、このようにして蓄積したデータ(前景サンプル画像、背景サンプル画像、及び学習元データ)に基づいて学習データを生成する。このとき、学習データ生成部112は、特定のID情報に基づく画像のみを用いて学習データを生成してもよい。その後S1210にて、学習データ生成部112は、学習部113に学習データを送信する。なお、特定のID情報に基づくデータのみを用いて学習データを生成した場合には、ID情報も併せて送信する。
次にS1211にて、学習部113は、受信した学習データに基づき、学習処理を行い、学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。以上のようにして、学習フェーズにおける一連のシーケンスが終了する。これにより、ユーザにより付与された学習元データに基づき生成された学習データにより学習された学習結果が学習装置102に保持される。
次にS1211にて、学習部113は、受信した学習データに基づき、学習処理を行い、学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。以上のようにして、学習フェーズにおける一連のシーケンスが終了する。これにより、ユーザにより付与された学習元データに基づき生成された学習データにより学習された学習結果が学習装置102に保持される。
<操作画面>
図12のS1201、及びS1203に示したユーザの指示は、次のような操作画面で行われる。図13(a)は、本実施形態に係る学習用スキャン画面を示す図である。学習用スキャン画面1300は、画像処理装置101の表示デバイス210に表示される画面の一例である。図13(a)に示すように、学習用スキャン画面1300は、プレビュー領域1301、手書き原稿ボタン1302、帳票原稿ボタン1303、スキャンボタン1304、及び送信開始ボタン1305を備える。
図12のS1201、及びS1203に示したユーザの指示は、次のような操作画面で行われる。図13(a)は、本実施形態に係る学習用スキャン画面を示す図である。学習用スキャン画面1300は、画像処理装置101の表示デバイス210に表示される画面の一例である。図13(a)に示すように、学習用スキャン画面1300は、プレビュー領域1301、手書き原稿ボタン1302、帳票原稿ボタン1303、スキャンボタン1304、及び送信開始ボタン1305を備える。
プレビュー領域1301、スキャンボタン1304、及び送信開始ボタン1305は、図6(a)のプレビュー領域501、スキャンボタン502、及び送信開始ボタン503と同様である。
手書き原稿ボタン1302と帳票原稿ボタン1303は、読み取られた画像の属性を指定するためのボタンである。手書き原稿ボタン1302が選択されると、画像処理装置101は、読取画像に前景フラグを付与する。帳票原稿ボタン1303が選択されると、画像処理装置101は、読取画像に背景フラグを付与する。選択中のボタンは識別可能に強調表示される。また、手書き原稿ボタン1302と帳票原稿ボタン1303は、どちらか一方しか選択することはできない。原稿が読み取られ、画像の属性が選択されると、送信開始ボタン1305が選択可能となる。
手書き原稿ボタン1302と帳票原稿ボタン1303は、読み取られた画像の属性を指定するためのボタンである。手書き原稿ボタン1302が選択されると、画像処理装置101は、読取画像に前景フラグを付与する。帳票原稿ボタン1303が選択されると、画像処理装置101は、読取画像に背景フラグを付与する。選択中のボタンは識別可能に強調表示される。また、手書き原稿ボタン1302と帳票原稿ボタン1303は、どちらか一方しか選択することはできない。原稿が読み取られ、画像の属性が選択されると、送信開始ボタン1305が選択可能となる。
図12のS1207に示したユーザの指示は、次のような操作画面で行われる。図13(b)および(c)は、学習元データ作成画面を示す図である。図13(d)、(e)、(f)および(g)は、背景サンプル画像用の学習元データ作成画面(図13(b))における画像表示領域の表示例を示す図である。学習元データ作成画面1350は、学習装置102の表示デバイス267に表示される画面の一例である。図13(b)に示すように、学習元データ作成画面1350は、画像表示領域1351、画像選択ボタン1352、拡大ボタン1353、縮小ボタン1354、統合ボタン1355、及び保存ボタン1356を備える。
画像選択ボタン1352は、画像処理装置101から受信し、画像蓄積部115に蓄積されている画像(前景サンプル画像あるいは背景サンプル画像)を選択するためのボタンである。画像選択ボタン1352が指示されると、選択画面(不図示)が表示され、当該画像を選択可能になる。当該画像が選択されると、学習装置102は、画像表示領域1351に選択した画像を表示する。ユーザは画像表示領域1351に表示された当該画像に対して操作し、学習元データ(合成領域データ、項目領域データ)の入力を行う。
拡大ボタン1353と縮小ボタン1354は、図6(b)の拡大ボタン523と縮小ボタン524と同様である。
拡大ボタン1353と縮小ボタン1354は、図6(b)の拡大ボタン523と縮小ボタン524と同様である。
上述の画像の選択において、背景サンプル画像を選択した場合には、図13(b)に示す背景サンプル画像用の学習元データ作成画面1350が表示され、背景サンプル画像に対して合成領域データを作成できる状態となる。ユーザは、合成領域データを次のように操作して入力する。ユーザは、まず図13(b)に点線枠で示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域1351に表示されている背景サンプル画像中の罫線に囲まれた領域内(記入欄内)を選択する。この選択した矩形領域が合成領域であり、後述する学習データ生成部112による学習データの生成時に、背景サンプル画像上の、前景サンプル画像の一部を合成するよう指示するための領域である。学習データ生成部112は、ユーザの操作に応じて、画像表示領域1351の画像上に表示される合成領域を表す点線枠の表示位置・大きさを制御する。なお、図13(d)に示すように、単一の記入欄内(電話番号)であっても、複数の項目(自宅、携帯)を含む場合には、当該記入欄内に複数の合成領域を作成してよい。
統合ボタン1355は、作成済みの複数の合成領域をグルーピングするためのボタンである。図13(e)に点線で示すように、例えば桁線で区切られた複数の記入欄(数値記入欄)にそれぞれ合成領域を作成する。そしてこれらを、入力デバイス236を介してマウスカーソルを操作して選択し、その状態で統合ボタン1355を指示すると、学習データ生成部112は、選択中の複数の合成領域をグループとして記録する。後述するように、手書き領域推定の正解データを生成する際には、グルーピングされた合成領域は、統合してひとつの合成領域のように扱われる。
以上のようにして、ユーザは、個々の背景サンプル画像に対して、記入欄の存在に従って、複数の合成領域を指定することで、合成領域データを入力することができる。なお、図13(f)や図13(g)に示すように、帳票の中には、記入欄が罫線に囲まれないものも存在し得る。このような場合には、図13(f)や図13(g)の点線枠で示すように、記入者が記入するであろう領域を選択する。
以上のようにして、ユーザは、個々の背景サンプル画像に対して、記入欄の存在に従って、複数の合成領域を指定することで、合成領域データを入力することができる。なお、図13(f)や図13(g)に示すように、帳票の中には、記入欄が罫線に囲まれないものも存在し得る。このような場合には、図13(f)や図13(g)の点線枠で示すように、記入者が記入するであろう領域を選択する。
一方、上述の画像の選択において、前景サンプル画像を選択した場合には、図13(c)に示す前景サンプル画像用の学習元データ作成画面1350が表示され、前景サンプル画像に対して項目領域データを作成できる状態となる。ユーザは、項目領域データを次のように操作して入力する。ユーザは、まず図13(c)に点線枠で示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域1351に表示されている前景サンプル画像中の手書きストロークを、氏名や住所など、帳票に記入される項目ごととなるように選択する。この選択した矩形領域が項目領域であり、後述する学習データ生成部112による手書き領域推定の正解データの生成時に、前景サンプル画像中のグルーピングする手書きストロークを指定するための領域である。学習データ生成部112は、ユーザの操作に応じて、画像表示領域1351の画像上に表示される項目領域を表す点線枠の表示位置・大きさを制御する。なお、画像表示領域1351が項目領域データを作成する状態の場合には、統合ボタン1355は操作指示できない。
以上のようにして、ユーザは、個々の前景サンプル画像に対して、記入項目の存在に従って、複数の項目領域を指定することで、項目領域データを作成することができる。本実施形態では、ユーザが記入項目ごとの手書きストロークを点線枠で囲むように操作して入力された項目領域データに基づき、正解データが得られる。したがって、第1の実施形態よりも簡単な操作で正解データを得ることができる。
以上のようにして、ユーザは、個々の前景サンプル画像に対して、記入項目の存在に従って、複数の項目領域を指定することで、項目領域データを作成することができる。本実施形態では、ユーザが記入項目ごとの手書きストロークを点線枠で囲むように操作して入力された項目領域データに基づき、正解データが得られる。したがって、第1の実施形態よりも簡単な操作で正解データを得ることができる。
保存ボタン1306は、作成された学習元データ(合成領域データ、項目領域データ)を保存するためのボタンである。学習データ生成部112は、合成領域データを、作成対象であった背景サンプル画像に対して、ひとつのXML形式のデータとして記録する。以降、このXML形式で保存された合成領域データを「合成領域定義情報」と呼称する。図14は、合成領域定義情報の一例を示す。合成領域定義情報の詳細については後述する。学習データ生成部112は、合成領域定義情報を、対応する背景サンプル画像と紐づけて画像蓄積部115に蓄積する。また、学習データ生成部112は、項目領域データをもとに、項目領域データの作成対象であった前景サンプル画像に対する、手書き領域推定の正解データとなる画像を生成する。以降、この画像を「正解サンプル画像」と呼称する。図20は、正解サンプル画像の一例を示す。図20(a)は、前景サンプル画像を示し、図20(b)は、図20(a)の前景サンプル画像に対して生成された正解サンプル画像を示す。正解サンプル画像の生成方法については後述する。学習データ生成部112は、正解サンプル画像を、対応する前景サンプル画像と紐付けて画像蓄積部115に蓄積する。
続いて、図15~図19を用いて、図12に示す本実施形態に係る学習フェーズのシーケンスにおいて、各装置により実行される処理の詳細について説明する。なお第1の実施形態と同様の部分については説明を割愛する。
<サンプル画像生成処理>
まず、画像処理装置101によるサンプル画像生成処理について説明する。図15(a)は、本実施形態に係るサンプル画像生成処理を示すフローチャートである。
<サンプル画像生成処理>
まず、画像処理装置101によるサンプル画像生成処理について説明する。図15(a)は、本実施形態に係るサンプル画像生成処理を示すフローチャートである。
まずS1501において、CPU201は、手書きのみの原稿のスキャン指示がされたか否かを判定する。CPU201が入力デバイス209を介して手書きのみの原稿をスキャンするための所定の操作(スキャンボタン1304の指示および手書き原稿ボタン1302の選択)を検知した場合、YESと判定し、処理はS1502に遷移する。そうでない場合、CPU201がNOと判定し、処理はS1504に遷移する。
S1502において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして前景サンプル画像を生成する。この原稿は、白紙に、人が手書きの文や図形(線分や矢印など)を記入したものであり、手書きのみが含まれる。特に、帳票に記入されるような文や図形が記入されたものである。前景サンプル画像は、グレースケールの画像データとして生成される。
S1503において、CPU201は、S1502で生成した前景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。このとき、送信する画像データが、前景サンプル画像であることを示す情報(前景フラグ)を付与して送信する。その後、一連のフローチャートの処理が終了する。
S1502において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして前景サンプル画像を生成する。この原稿は、白紙に、人が手書きの文や図形(線分や矢印など)を記入したものであり、手書きのみが含まれる。特に、帳票に記入されるような文や図形が記入されたものである。前景サンプル画像は、グレースケールの画像データとして生成される。
S1503において、CPU201は、S1502で生成した前景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。このとき、送信する画像データが、前景サンプル画像であることを示す情報(前景フラグ)を付与して送信する。その後、一連のフローチャートの処理が終了する。
続いてS1504において、CPU201は、印刷内容のみの原稿をスキャンする指示がされたか否かを判定する。CPU201が入力デバイス209を介して印刷内容のみの原稿をスキャンするための所定の操作(スキャンボタン1304の指示および帳票原稿ボタン1303の選択)を検知した場合、YESと判定し、処理はS1505に遷移する。そうでない場合、CPU201がNOと判定し、一連のフローチャートの処理が終了する。
S1505において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして背景サンプル画像を生成する。この原稿は、用紙に帳票などが印刷されたものであり、印刷内容のみが含まれる。背景サンプル画像は、グレースケールの画像データとして生成される。
S1506において、CPU201は、S1505で生成した背景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。このとき、送信する画像データが、背景サンプル画像であることを示す情報(背景フラグ)を付与して送信する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像生成処理によれば、画像処理装置101は、手書きのみが含まれる前景サンプル画像、および印刷内容のみが含まれる背景サンプル画像をそれぞれ生成して、学習装置102に送信することができる。
S1505において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして背景サンプル画像を生成する。この原稿は、用紙に帳票などが印刷されたものであり、印刷内容のみが含まれる。背景サンプル画像は、グレースケールの画像データとして生成される。
S1506において、CPU201は、S1505で生成した背景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。このとき、送信する画像データが、背景サンプル画像であることを示す情報(背景フラグ)を付与して送信する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像生成処理によれば、画像処理装置101は、手書きのみが含まれる前景サンプル画像、および印刷内容のみが含まれる背景サンプル画像をそれぞれ生成して、学習装置102に送信することができる。
<サンプル画像受信処理>
次に、学習装置102によるサンプル画像受信処理について説明する。図15(b)は、本実施形態に係るサンプル画像受信処理を示すフローチャートである。
次に、学習装置102によるサンプル画像受信処理について説明する。図15(b)は、本実施形態に係るサンプル画像受信処理を示すフローチャートである。
S1531において、CPU231は、前景サンプル画像を受信したか否かを判定する。CPU231が外部インタフェース238を介して画像データを受信し、且つ、当該画像データに前景フラグが付与されている場合、YESと判定し、処理はS1532に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1533に遷移する。
S1532において、CPU231は、受信した前景サンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
S1533において、CPU231は、背景サンプル画像を受信したか否かを判定する。CPU231が外部インタフェース238を介して画像データを受信し、且つ、当該画像データに背景フラグが付与されていた場合、YESと判定し、処理はS1534に遷移する。そうでない場合、CPU231がNOと判定し、一連のフローチャートの処理が終了する。
S1534において、CPU231は、受信した背景サンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像受信処理によれば、画像処理装置101で生成された前景サンプル画像および背景サンプル画像を、学習装置102に蓄積することができる。
S1532において、CPU231は、受信した前景サンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
S1533において、CPU231は、背景サンプル画像を受信したか否かを判定する。CPU231が外部インタフェース238を介して画像データを受信し、且つ、当該画像データに背景フラグが付与されていた場合、YESと判定し、処理はS1534に遷移する。そうでない場合、CPU231がNOと判定し、一連のフローチャートの処理が終了する。
S1534において、CPU231は、受信した背景サンプル画像を、ストレージ235の所定の領域に記録する。その後、一連のフローチャートの処理が終了する。
以上のようなサンプル画像受信処理によれば、画像処理装置101で生成された前景サンプル画像および背景サンプル画像を、学習装置102に蓄積することができる。
<学習元データ生成処理>
次に、学習装置102による学習元データ生成処理について説明する。図16Aは、学習元データ生成処理を示すフローチャートである。学習元データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S1801において、CPU231は、背景サンプル画像の選択指示がされたか否かを判定する。CPU231が入力デバイス236を介して背景サンプル画像を選択するための所定の操作(学習元データ作成画面1350の画像選択ボタン1352の指示および背景サンプル画像の選択)を行った場合、YESと判定し、処理はS1802に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1803に遷移する。
S1802において、CPU231は、S1801でユーザが選択した背景サンプル画像を、ストレージ235から読み出して図13(b)の画像表示領域1351に表示する。
次に、学習装置102による学習元データ生成処理について説明する。図16Aは、学習元データ生成処理を示すフローチャートである。学習元データ生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S1801において、CPU231は、背景サンプル画像の選択指示がされたか否かを判定する。CPU231が入力デバイス236を介して背景サンプル画像を選択するための所定の操作(学習元データ作成画面1350の画像選択ボタン1352の指示および背景サンプル画像の選択)を行った場合、YESと判定し、処理はS1802に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1803に遷移する。
S1802において、CPU231は、S1801でユーザが選択した背景サンプル画像を、ストレージ235から読み出して図13(b)の画像表示領域1351に表示する。
S1803において、CPU231は、ユーザが合成領域データの入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、前述したように、背景サンプル画像上の記入欄内の領域を選択する操作を検知した場合、YESと判定し、処理はS1804に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1805に遷移する。
S1804において、CPU231は、ユーザの操作により入力された合成領域データを、RAM234に一時的に記憶する。
S1805において、CPU231は、ユーザが合成領域のグルーピング入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、所定の操作(入力済みの合成領域の選択、および統合ボタン1355の選択)を行っていた場合、YESと判定し、処理はS1806に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1807に遷移する。
S1806において、CPU231は、合成領域のグルーピングの情報(選択された複数の合成領域の紐付け情報)を、RAM234に一時的に記憶する。
S1804において、CPU231は、ユーザの操作により入力された合成領域データを、RAM234に一時的に記憶する。
S1805において、CPU231は、ユーザが合成領域のグルーピング入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、所定の操作(入力済みの合成領域の選択、および統合ボタン1355の選択)を行っていた場合、YESと判定し、処理はS1806に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1807に遷移する。
S1806において、CPU231は、合成領域のグルーピングの情報(選択された複数の合成領域の紐付け情報)を、RAM234に一時的に記憶する。
S1807において、CPU231は、前景サンプル画像の選択指示がされたか否かを判定する。CPU231が入力デバイス236を介して前景サンプル画像を選択するための所定の操作(学習元データ作成画面1350の画像選択ボタン1352の指示および前景サンプル画像の選択)を行った場合には、YESと判定し、処理はS1808に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1809に遷移する。
S1808において、CPU231は、S1807でユーザが選択した前景サンプル画像を、ストレージ235から読み出して図13(c)の画像表示領域1351に表示する。
S1809において、CPU231は、ユーザが項目領域データの入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、前述したように、前景サンプル画像上の手書き記入に対する項目領域を選択する操作を検知した場合、YESと判定し、処理はS1810に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1811に遷移する。
S1810において、CPU231は、ユーザの操作により入力された項目領域データを、RAM234に一時的に記憶する。
S1808において、CPU231は、S1807でユーザが選択した前景サンプル画像を、ストレージ235から読み出して図13(c)の画像表示領域1351に表示する。
S1809において、CPU231は、ユーザが項目領域データの入力指示を行ったか否かを判定する。CPU231が入力デバイス236を介して、前述したように、前景サンプル画像上の手書き記入に対する項目領域を選択する操作を検知した場合、YESと判定し、処理はS1810に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1811に遷移する。
S1810において、CPU231は、ユーザの操作により入力された項目領域データを、RAM234に一時的に記憶する。
S1811において、CPU231は、学習元データの保存指示がされたか否かを判定する。CPU231が入力デバイス236を介して、学習元データを保存するための所定の操作(保存ボタン1356の指示)を検知した場合、YESと判定し、処理はS1812に遷移する。そうでない場合、CPU231がNOと判定し、処理はS1815に遷移する。
S1812において、CPU231は、合成領域定義情報を生成して保存する。CPU231は、次のようにして合成領域定義情報を生成する。まずCPU231は、合成領域定義情報を示すXMLデータを生成する。そして、S1804でRAM234に一時的に記憶した合成領域データを参照し、合成領域の数に相当する数の<area>タグを挿入する。各々の<area>タグには、x属性およびy属性を追加し、該当する合成領域の背景サンプル画像上の画素位置を示すx座標およびy座標の値を記録する。また、width属性およびheight属性を追加し、該当する合成領域の幅の画素数および高さの画素数を記録する。さらに、S1806でRAM234に一時的に記憶した合成領域のグルーピングの情報を参照し、該当する合成領域の<area>タグにgroup属性を付与する。そして、同一グループに属する合成領域について、同一の値(グループのID)をgroup属性の値に記録する。このようにして、図14に例示した合成領域定義情報が生成される。CPU231は、S1801で選択され、現在処理対象としている背景サンプル画像と、生成した合成領域定義情報とを紐付けて、ストレージ235に記憶する。
S1812において、CPU231は、合成領域定義情報を生成して保存する。CPU231は、次のようにして合成領域定義情報を生成する。まずCPU231は、合成領域定義情報を示すXMLデータを生成する。そして、S1804でRAM234に一時的に記憶した合成領域データを参照し、合成領域の数に相当する数の<area>タグを挿入する。各々の<area>タグには、x属性およびy属性を追加し、該当する合成領域の背景サンプル画像上の画素位置を示すx座標およびy座標の値を記録する。また、width属性およびheight属性を追加し、該当する合成領域の幅の画素数および高さの画素数を記録する。さらに、S1806でRAM234に一時的に記憶した合成領域のグルーピングの情報を参照し、該当する合成領域の<area>タグにgroup属性を付与する。そして、同一グループに属する合成領域について、同一の値(グループのID)をgroup属性の値に記録する。このようにして、図14に例示した合成領域定義情報が生成される。CPU231は、S1801で選択され、現在処理対象としている背景サンプル画像と、生成した合成領域定義情報とを紐付けて、ストレージ235に記憶する。
S1813において、CPU231は、S1810でRAM234に一時的に記憶した項目領域データを参照して、正解サンプル画像を生成する。S1813で実行される正解サンプル画像生成処理については、図16Bを用いて後述する。
S1814において、CPU231は、S1807で選択され、現在処理対象としている前景サンプル画像と、S1813で生成した正解サンプル画像とを紐付けて、ストレージ235に記憶する。
S1815において、CPU231が学習元データ生成処理を終了するための所定の操作を検知するまで、処理はS1801に遷移し、所定の操作を検知した場合には、一連のフローチャートの処理を終了する。
S1814において、CPU231は、S1807で選択され、現在処理対象としている前景サンプル画像と、S1813で生成した正解サンプル画像とを紐付けて、ストレージ235に記憶する。
S1815において、CPU231が学習元データ生成処理を終了するための所定の操作を検知するまで、処理はS1801に遷移し、所定の操作を検知した場合には、一連のフローチャートの処理を終了する。
<正解サンプル画像生成処理>
次に図16AのS1813にて実行される正解サンプル画像生成処理の詳細について説明する。図16Bは、正解サンプル画像生成処理を示すフローチャートである。
S1851において、CPU231は、初期化された正解サンプル画像を生成する。具体的には、CPU231は、現在処理対象としている前景サンプル画像と同サイズの画像を生成し、当該画像のすべての画素の値を、手書き領域ではないことを示す値とする、正解サンプル画像を生成する。
S1852において、CPU231は、現在処理対象としている前景サンプル画像を二値化処理して二値画像を得る。前景サンプル画像中の手書き画素は、この二値画像においては手書き領域であること示す値となり、それ以外の画素は、この二値画像においては手書き領域ではないことを示す値となるようにする。
次に図16AのS1813にて実行される正解サンプル画像生成処理の詳細について説明する。図16Bは、正解サンプル画像生成処理を示すフローチャートである。
S1851において、CPU231は、初期化された正解サンプル画像を生成する。具体的には、CPU231は、現在処理対象としている前景サンプル画像と同サイズの画像を生成し、当該画像のすべての画素の値を、手書き領域ではないことを示す値とする、正解サンプル画像を生成する。
S1852において、CPU231は、現在処理対象としている前景サンプル画像を二値化処理して二値画像を得る。前景サンプル画像中の手書き画素は、この二値画像においては手書き領域であること示す値となり、それ以外の画素は、この二値画像においては手書き領域ではないことを示す値となるようにする。
S1853において、CPU231は、項目領域データの中から項目領域をひとつ選択する。
S1854において、CPU231は、S1852で生成した二値画像の一部であって、且つ、S1853で選択した項目領域に該当する領域を、部分画像として取得する。項目領域は矩形領域であるから、部分画像は矩形画像である。図17(a)は、この部分画像の一例を示す。図17(a)に示す黒画素が、手書き領域であることを示す値を有する画素である。
S1855において、CPU231は、S1854で取得した部分画像中の手書き領域であること示す値を有する画素(前景サンプル画像において、手書き画素であった画素)を膨張処理により膨張させる。以下、膨張処理の詳細について説明する。
S1854において、CPU231は、S1852で生成した二値画像の一部であって、且つ、S1853で選択した項目領域に該当する領域を、部分画像として取得する。項目領域は矩形領域であるから、部分画像は矩形画像である。図17(a)は、この部分画像の一例を示す。図17(a)に示す黒画素が、手書き領域であることを示す値を有する画素である。
S1855において、CPU231は、S1854で取得した部分画像中の手書き領域であること示す値を有する画素(前景サンプル画像において、手書き画素であった画素)を膨張処理により膨張させる。以下、膨張処理の詳細について説明する。
まず、CPU231は、部分画像に対して水平方向の膨張処理を行う。例えば、サイズ(W,1)のカーネルを複数回適用して膨張させる。水平方向のカーネルサイズWおよび適用回数は、予め決定しておく。次に、CPU231は、部分画像に対して垂直方向の膨張処理を行う。例えば、サイズ(1,H)のカーネルを複数回適用して膨張させる。垂直方向のカーネルサイズHおよび適用回数は、予め決定しておく。CPU231は、以上のようにして得た水平方向と垂直方向に膨張した2つの画像を合成して、最終的な膨張画像を得る。これにより、個々の文字を構成する手書きストロークであって、互いに接触していないものを結合させる。つまり、手書き文字を構成する手書きストロークをすべて含む画素集合を生成することができる。このとき、水平方向と垂直方向で個別に膨張させることで、手書き文字の上下左右端部に余計な膨張画素を生じさせないようにする。なるべく少ない画素で手書き文字を包含する画素集合を生成するためである。図17(b)は、図17(a)の部分画像に対して生成された膨張画像の一例を示す。なお、本実施形態では、上述のように、水平方向に加えて垂直方向に膨張させる例を示したが、水平方向にのみ膨張させてもよい。例えば、改行を伴う文章などを含む帳票の場合には、手書き文字の行が上下に近接することで、得られた正解サンプル画像において上下の手書き文字の行が結合してしまう場合があり得る。このような事態を回避するために、垂直方向の膨張はせずに、あるいは程度を抑えて実行してもよい。
S1856において、CPU231は、S1854で取得した部分画像と同サイズであり、すべての画素が手書き領域であることを示す値を有する画像を生成する。そして、この画像を垂直方向に収縮処理して収縮させることで収縮画像を得る。例えば、サイズ(1,H2)のカーネルを複数回適用して収縮させる。垂直方向のカーネルサイズH2は、予め決定しておく。適用回数は、生成する収縮画像の高さが、部分画像の高さに対して、予め定めた割合となるよう決定する。図17(c)は、図17(a)の部分画像に対して生成された収縮画像の一例を示す。収縮画像は、水平方向の幅が部分画像と同じで、垂直方向の高さが部分画像よりも小さい矩形画像である。
S1857において、CPU231は、S1855で生成した膨張画像と、S1856で生成した収縮画像とを合成して合成画像を得る。これにより、ひとつの記入項目を構成する文字であって、互いに接触していない文字同士を結合させることができる。図17(d)は、図17(b)の膨張画像と図17(c)の収縮画像とを合成した合成画像の一例を示す。
S1857において、CPU231は、S1855で生成した膨張画像と、S1856で生成した収縮画像とを合成して合成画像を得る。これにより、ひとつの記入項目を構成する文字であって、互いに接触していない文字同士を結合させることができる。図17(d)は、図17(b)の膨張画像と図17(c)の収縮画像とを合成した合成画像の一例を示す。
S1858において、CPU231は、S1857で生成した合成画像を、S1854で取得された部分画像でクロップして、余計な端部を除去して、合成画像を更新する。除去される端部を構成する画素は、現在処理対象としている前景サンプル画像と対応させたときに、手書き画素を含まない余計な画素である。図17(e)は、図17(d)の合成画像から余計な端部を除去して得られた合成画像の一例を示す。
S1859において、CPU231は、S1858で取得した合成画像を用いて、正解サンプル画像を更新する。すなわち、正解サンプル画像上の、現在処理対象としている項目領域に対応する位置に、合成画像を合成する。
S1860において、CPU231は、すべての項目領域について処理したか否かを判定する。CPU231がS1810にてRAM234に一時的に記憶した項目領域データに含まれるすべての項目領域について、S1854~S1859の処理を実行したと判定した場合、正解サンプル画像生成処理を終了する。CPU231が未処理の項目領域が存在すると判定した場合、S1853に遷移して、次の項目領域を選択して処理を継続する。
S1859において、CPU231は、S1858で取得した合成画像を用いて、正解サンプル画像を更新する。すなわち、正解サンプル画像上の、現在処理対象としている項目領域に対応する位置に、合成画像を合成する。
S1860において、CPU231は、すべての項目領域について処理したか否かを判定する。CPU231がS1810にてRAM234に一時的に記憶した項目領域データに含まれるすべての項目領域について、S1854~S1859の処理を実行したと判定した場合、正解サンプル画像生成処理を終了する。CPU231が未処理の項目領域が存在すると判定した場合、S1853に遷移して、次の項目領域を選択して処理を継続する。
以上のような正解サンプル画像生成処理によれば、図20(a)に示すような前景サンプル画像に含まれる手書き文字に対する手書き領域推定の正解データとして、図20(b)に示すような正解サンプル画像を得ることができる。
<学習データ生成処理>
次に、学習装置102による学習データ生成処理について説明する。図18は、本実施形態に係る学習データ生成処理を示すフローチャートである。図19は、学習データ生成処理にて生成されるデータの一例を示す図である。
次に、学習装置102による学習データ生成処理について説明する。図18は、本実施形態に係る学習データ生成処理を示すフローチャートである。図19は、学習データ生成処理にて生成されるデータの一例を示す図である。
まずS1601において、CPU231は、ストレージ235に記憶している前景サンプル画像を選択して読み出す。図15(b)のS1532の処理ステップにより、ストレージ235には複数の前景サンプル画像が記憶されているので、その中からランダムにひとつを選択する。
S1602において、CPU231は、S1601で読み出した前景サンプル画像に対応する正解サンプル画像を読み出す。図16AのS1814の処理ステップで、ストレージ235には、正解サンプル画像が前景サンプル画像と紐付けて記憶されているため、これを読み出す。
S1602において、CPU231は、S1601で読み出した前景サンプル画像に対応する正解サンプル画像を読み出す。図16AのS1814の処理ステップで、ストレージ235には、正解サンプル画像が前景サンプル画像と紐付けて記憶されているため、これを読み出す。
S1603において、CPU231は、ストレージ235に記憶している背景サンプル画像を選択して読み出す。図15(b)のS1534の処理ステップにより、ストレージ235には複数の背景サンプル画像が記憶されているので、その中からランダムにひとつを選択する。
S1604において、CPU231は、S1603で読み出した背景サンプル画像の一部(例えば縦×横=256×256の大きさ)を切り出した画像データを生成する。以降、この画像データを「背景パッチ」と呼称する。なお、切り出し位置はランダムに決定する。図19(a)は、背景パッチの例を示す。
S1605において、CPU231は、手書き領域推定の学習データに用いる正解ラベル画像を生成する。具体的にはまず、CPU231は、背景パッチと同サイズの画像を生成し、当該画像のすべての画素の値を、手書き領域ではないことを示す値とする正解ラベル画像を生成する。
S1605において、CPU231は、手書き領域推定の学習データに用いる正解ラベル画像を生成する。具体的にはまず、CPU231は、背景パッチと同サイズの画像を生成し、当該画像のすべての画素の値を、手書き領域ではないことを示す値とする正解ラベル画像を生成する。
S1606において、CPU231は、背景パッチにおける合成領域を特定する。これは次のように処理する。まず、CPU231は、ストレージ235から、S1603で選択した背景サンプル画像と紐付けて記憶されている合成領域定義情報を読み出す。続いてCPU231は、当該合成領域定義情報内に<area>タグとして記憶されている各合成領域(矩形情報)と、背景サンプル画像上の背景パッチ切り出し領域(矩形情報)との交差部分(交差矩形)を求める。その中で、交差矩形のサイズが縦と横それぞれについて0以上のものを、背景パッチにおける合成領域として採用する。採用した合成領域は、背景サンプル画像上の左上端点を原点としているので、背景パッチ切り出し領域の左上端点が基準となるように座標情報を補正する。以上のようにして、背景パッチ上の合成領域が特定される。次にCPU231は、後段の処理のために、算出した背景パッチ上の合成領域を、RAM234に一時的に記憶しておく。また、交差矩形算出時に、もととなった合成領域定義情報の<area>タグにgroup属性が付与されていたならば、この値(グルーピング情報)も合成領域と関連付けて、RAM234に一時的に記憶しておく。図19(a)に示す斜線部分は、背景パッチ上の合成領域の例を示す。そしてCPU231は、背景パッチ上の合成領域のひとつを選択する。
S1607において、CPU231は、S1601で読み出した前景サンプル画像の一部を切り出した画像データ(部分画像)を生成する。以降、この画像データを「前景パッチ」と呼称する。なお、切り出し位置はランダムに決定する。切り出すサイズは、現在処理対象として選択している背景パッチ上の合成領域のサイズと同一とする。なお、前景パッチに対して二値化処理を行い、黒画素が予め定めた所定数に満たない場合は、前景パッチを切り出し直す。
S1608において、CPU231は、切り出した前景パッチの余白を除去する。これは次のように処理する。まずCPU231は、前景パッチに対して二値化処理を行い、二値画像を生成する。次にCPU231は、二値画像中の全ての黒画素を含む外接矩形を求める。当該外接矩形に該当する領域を前景パッチから切り出して、切り出した画像で前景パッチを更新する。
S1608において、CPU231は、切り出した前景パッチの余白を除去する。これは次のように処理する。まずCPU231は、前景パッチに対して二値化処理を行い、二値画像を生成する。次にCPU231は、二値画像中の全ての黒画素を含む外接矩形を求める。当該外接矩形に該当する領域を前景パッチから切り出して、切り出した画像で前景パッチを更新する。
S1609において、CPU231は、前景パッチを合成する合成位置を決定する。これは次のように処理する。まずCPU231は、合成領域の中心点を基準に、合成領域を拡大した領域を決定する。以降、この領域を「拡大合成領域」と呼称する。拡大率は、100%から予め定めた閾値(例えば105%)までの間からランダムに決定する。そして、拡大合成領域内に収まることを条件に、前景パッチを合成する合成位置を、拡大合成領域内においてランダムに決定する。なお、合成領域が背景パッチの端部にある場合は、拡大合成領域は端辺方向へは拡大しない。図19(a)の破線で囲まれた領域が、拡大合成領域の一例を示す。前述のとおり、合成領域は背景サンプル画像中の記入欄内の領域を選択するようにして作成した。故に、本処理ステップのように処理することで、後述する背景パッチに前景パッチを合成する処理の際に、記入欄周辺の罫線と手書き記入が交差する場合を生じさせる。これにより、記入欄をはみ出して記入した場合を再現する学習データを生成することができる。
S1610において、CPU231は、背景パッチ上であって、S1609で決定した合成位置に該当する部分に、前景パッチを合成する。本処理ステップにより背景パッチに手書きが合成された画像が生成される。
S1611において、CPU231は、S1605にて生成された正解ラベル画像を更新する。これは次のように処理する。まずCPU231は、S1602で読み出した正解サンプル画像から、S1607で切り出した前景パッチに対応する部分を切り出して正解パッチを得る。切り出し位置およびサイズは、S1607において前景サンプル画像から前景パッチを切り出した位置およびサイズと同一とする。続いてCPU231は、S1608で前景パッチを更新した領域と同一の領域を正解パッチから切り出して、切り出した画像で正解パッチを更新する。そしてCPU231は、S1605で生成した正解ラベル画像上であって、S1610で決定した合成位置に該当する部分に正解パッチを合成する。
S1612において、CPU231は、現在処理対象としている背景パッチ上の合成領域について、すべて処理を行ったか否かを判定する。CPU231が当該背景パッチ上のすべての合成領域について、S1607~S1611の処理を実行したと判定した場合、S1613に遷移する。CPU231が未処理の合成領域が存在すると判定した場合、S1607に遷移して、背景パッチ上の次の合成領を選択して処理を継続する。
S1611において、CPU231は、S1605にて生成された正解ラベル画像を更新する。これは次のように処理する。まずCPU231は、S1602で読み出した正解サンプル画像から、S1607で切り出した前景パッチに対応する部分を切り出して正解パッチを得る。切り出し位置およびサイズは、S1607において前景サンプル画像から前景パッチを切り出した位置およびサイズと同一とする。続いてCPU231は、S1608で前景パッチを更新した領域と同一の領域を正解パッチから切り出して、切り出した画像で正解パッチを更新する。そしてCPU231は、S1605で生成した正解ラベル画像上であって、S1610で決定した合成位置に該当する部分に正解パッチを合成する。
S1612において、CPU231は、現在処理対象としている背景パッチ上の合成領域について、すべて処理を行ったか否かを判定する。CPU231が当該背景パッチ上のすべての合成領域について、S1607~S1611の処理を実行したと判定した場合、S1613に遷移する。CPU231が未処理の合成領域が存在すると判定した場合、S1607に遷移して、背景パッチ上の次の合成領を選択して処理を継続する。
次にS1613において、CPU231は、S1606で特定した背景パッチ上の合成領域について、グルーピング情報を参照して正解ラベル画像を更新する。これは次のように処理する。まずCPU231は、S1606においてRAM234に一時的に記憶した合成領域とグルーピングに関するデータを読み出す。CPU231は、同一のgroup属性の合成領域を選択する。続いてCPU231は、これら合成領域の結合矩形を求める。合成領域の結合矩形は、選択された合成領域をすべて内包する最小矩形領域である。次にCPU231は、正解ラベル画像上であって、当該結合矩形に該当する領域内の画素について、手書き領域であることを示す値である画素をすべて内包する外接矩形を求める。この外接矩形と同サイズの画像を生成し、全ての画素の値を手書き領域であることを示す値とする。CPU231は、当該画像を図16BのS1856と同様にして、垂直方向に収縮させる。そして、正解ラベル画像上であって、上述の外接矩形の位置に当該画像を合成する。このように処理することで、グルーピングされた、桁線等で区切られた複数の数値記入が、単一の記入項目であるとする正解データが生成される。
S1614において、CPU231は、手書き領域推定の学習データを保存する。まずCPU231は、S1610で前景パッチを合成した背景パッチを入力画像とする。そして、この入力画像と、S1611で正解パッチを合成して得られた正解ラベル画像とを対応付けて、手書き領域推定のニューラルネットワーク1100を学習するための学習データとして、ストレージ235の所定の領域に保存する。図19(b)および(c)は、本実施形態における学習データの例を示す。その後、一連のフローチャートの処理が終了する。
CPU231は、予め決定された学習データの数が生成されるまで、S1601~S1614の処理を繰り返し実行する。
CPU231は、予め決定された学習データの数が生成されるまで、S1601~S1614の処理を繰り返し実行する。
以上のような本実施形態に係る画像処理システムによれば、手書き領域推定を行うニューラルネットワーク1100の学習データが、前景サンプル画像、背景サンプル画像、合成領域定義情報、及び正解サンプル画像から、画像処理により生成される。なお、ニューラルネットワーク1100の汎用性を高めるために、学習データの加工を行ってもよい。例えば、前景パッチや背景パッチを所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する変倍率で変倍する。正解パッチも同様に変倍する。あるいは、前景パッチや背景パッチの各画素の輝度を変更して加工してもよい。すなわち、ガンマ補正を用いてこれら画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。あるいは、前景パッチや、前景パッチを合成した背景パッチを所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する回転角度で回転する。正解パッチも同様に回転する。変倍や回転を考慮する場合には、前景パッチや背景パッチは少し大きめのサイズ(例えば、合成領域の縦横2倍の大きさとして、縦×横=512×512の大きさ)で切り出す。そして、最終的な入力画像や正解ラベル画像のサイズ(例えば、縦×横=256×256)となるよう、中心部分から切り出す。
以上のような第2の実施形態によれば、第1の実施形態と同様の特徴を持つ学習データを学習データしたニューラルネットワークを用いることで、記入項目ごとの連続した画素の集合として手書き領域を推定することができる。これにより、手書きOCRの入力となる画像に印刷画素が混入することを低減することができる。すなわち、手書きOCRの精度低下を軽減することができる。
第2の実施形態では、ニューラルネットワークを学習するための学習データを、前景サンプル画像、背景サンプル画像、合成領域データ、項目領域データから、画像処理により生成することができる。これら学習データの材料となるデータをユーザが手作業で作成する。しかし、第1の実施形態で示したように、手作業で正解データを作成する方法に比べれば、より簡易な作業であるため、手間が省かれる。
第2の実施形態では、ニューラルネットワークを学習するための学習データを、前景サンプル画像、背景サンプル画像、合成領域データ、項目領域データから、画像処理により生成することができる。これら学習データの材料となるデータをユーザが手作業で作成する。しかし、第1の実施形態で示したように、手作業で正解データを作成する方法に比べれば、より簡易な作業であるため、手間が省かれる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。例えば、上述の各実施形態では、学習データ生成部112と学習部113は、学習装置102において実現されるものとしたが、それぞれ別体の装置において実現されるようにしてもよい。この場合、学習データ生成部112を実現する装置は、学習データ生成部112が生成した学習データを、学習部113を実現する装置に送信する。そして、学習部113は受信した学習データをもとにニューラルネットワーク1100を学習する。また、画像処理装置101と画像処理サーバ103とを別体の装置として説明したが、画像処理装置101が画像処理サーバ103の機能を具備してもよい。また、画像処理サーバ103とOCRサーバ104とを別体の装置として説明したが、画像処理サーバ103がOCRサーバ104としての機能を具備してもよい。また、画像処理サーバ103と学習装置102とを別体の装置として説明したが、画像処理サーバ103が学習装置102としての機能を具備してもよい。
本発明は上述の各実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
なお、各実施形態に登場する略称の定義は次の通りである。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のことである。
なお、最後に、上述の第1の実施形態に示した方法により学習した手書き領域推定のニューラルネットワークの推論結果を例示する。図21(a)は、処理対象画像の一例である。図21(b)は、図21(a)の処理対象画像を第1の実施形態に係るニューラルネットワーク1100に入力した場合の推論結果の一例である。図21(b)は、ニューラルネットワーク1100により推定された手書き領域(白ハッチ部分)を示す。図21(b)に示すように、本実施形態では、手書き文字近傍の印刷画素を除外した領域が推定されるため、手書きOCR処理の精度低下を軽減することができる。
100:画像処理システム、101:画像処理装置、102:画像処理サーバ、103:学習装置、104:OCRサーバ
Claims (20)
- 手書き部分を含む原稿の読取画像を取得する取得手段と、
前記読取画像をニューラルネットワークに入力することにより、前記読取画像における所定の単位の手書き部分を含む対象領域を、連続した画素の集合として推定する推定手段と、
前記対象領域に基づいて、OCR処理を行う対象画像を生成する生成手段と、
を有することを特徴とする画像処理装置。 - 前記原稿の読取画像を入力画像とし、前記入力画像における所定の単位の手書き部分を含む連続した画素の集合を正解データとする学習データを用いて、前記ニューラルネットワークの学習を行う学習手段をさらに有することを請求項1に記載の画像処理装置。
- 前記正解データは、前記所定の単位の手書き部分を内包することを特徴とする請求項2に記載の画像処理装置。
- 前記正解データは、手書き部分以外のオブジェクトの画素を含まないことを特徴とする請求項2又は3に記載の画像処理装置。
- 前記正解データの面積は、前記所定の単位の手書き部分を内包する外接矩形の面積よりも小さく、この面積の減少が、前記外接矩形の外周部の面積の欠損により生じることを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
- ユーザにより入力された前記読取画像における画素の位置情報に基づいて、前記正解データを生成することを特徴とする請求項2乃至5の何れか1項に記載の画像処理装置。
- 手書き部分以外のオブジェクトのみを含む原稿を読み取った第1の読取画像と、手書き部分のみを含む原稿を読み取った第2の読取画像とを合成して得られる画像を入力画像とし、前記入力画像における所定の単位の手書き部分を含む連続した画素の集合を正解データとする学習データを用いて、前記ニューラルネットワークの学習を行う学習手段をさらに有することを請求項1に記載の画像処理装置。
- 前記第1の読取画像における、前記第2の読取画像の一部を示す部分画像を合成する領域としてユーザに指定された合成領域に対して、前記部分画像を合成することにより前記入力画像を生成する学習データ生成手段をさらに有することを特徴とする請求項7に記載の画像処理装置。
- 前記学習データ生成手段は、前記合成領域を拡大した領域内に前記部分画像が収まるように、前記部分画像の合成位置を決定することを特徴とする請求項8に記載の画像処理装置。
- 前記学習データ生成手段は、前記第2の読取画像における、前記所定の単位の手書き部分の領域としてユーザに指定された矩形領域に基づいて、前記正解データを生成することを特徴とする請求項8に記載の画像処理装置。
- 前記学習データ生成手段は、前記矩形領域内の画像を垂直方向及び水平方向のうちの少なくとも何れか一方に膨張させることにより、前記正解データを生成することを特徴とする請求項10に記載の画像処理装置。
- 前記学習データ生成手段は、前記膨張させた画像に対して、水平方向の幅が前記矩形領域と同じで垂直方向の高さが前記矩形領域よりも小さい収縮画像を合成することにより、前記正解データを生成することを特徴とする請求項11に記載の画像処理装置。
- 前記生成手段は、前記対象領域を内包する外接矩形を生成し、生成した前記外接矩形に対する欠損部分の画素で埋めることで、前記対象画像を生成することを特徴とする請求項1乃至12の何れか1項に記載の画像処理装置。
- 前記生成手段は、前記読取画像から前記対象領域に対応する画素を除去することで、活字文字に対応したOCR処理の対象にする画像を生成することを特徴とする請求項1乃至13の何れか1項に記載の画像処理装置。
- 前記対象画像に対して、手書き文字に対応したOCR処理を行う処理手段をさらに有することを特徴とする請求項1乃至14の何れか1項に記載の画像処理装置。
- 前記原稿が帳票であって、前記所定の単位が前記帳票における記入項目であることを特徴とする請求項1乃至15の何れか1項に記載の画像処理装置。
- 手書き部分を含む原稿の読取画像を生成する画像生成装置と、画像処理装置と、OCR装置とを含む画像処理システムであって、
前記画像処理装置は、
前記画像生成装置から、処理対象の前記読取画像を取得する第1の取得手段と、
前記第1の取得手段により取得した前記読取画像をニューラルネットワークに入力することにより、前記読取画像における所定の単位の手書き部分を含む対象領域を、連続した画素の集合として推定する推定手段と、
前記対象領域に基づいて、OCR処理を行う対象画像を生成する生成手段と、
前記対象画像を前記OCR装置に対して送信する送信手段と、
を有し、
前記OCR装置は、
前記画像処理装置から前記対象画像を受信する受信手段と、
前記対象画像に対して、手書き文字に対応したOCR処理を行う処理手段と、
を有することを特徴とする画像処理システム。 - 前記画像生成装置から、学習対象の前記読取画像を取得する第2の取得手段と、
前記第2の取得手段により取得した前記読取画像を入力画像とし、前記入力画像における所定の単位の手書き部分を含む連続した画素の集合を正解データとする学習データを用いて、前記ニューラルネットワークの学習を行う学習手段と、
を有する学習装置をさらに含むことを特徴とする請求項17に記載の画像処理システム。 - 手書き部分を含む原稿の読取画像を取得する取得ステップと、
前記読取画像をニューラルネットワークに入力することにより、前記読取画像における所定の単位の手書き部分を含む対象領域を、連続した画素の集合として推定する推定ステップと、
前記対象領域に基づいて、OCR処理を行う対象画像を生成する生成ステップと、
を含むことを特徴とする画像処理方法。 - コンピュータを、請求項1乃至16の何れか1項に記載された画像処理装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021119282A JP2023015483A (ja) | 2021-07-20 | 2021-07-20 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021119282A JP2023015483A (ja) | 2021-07-20 | 2021-07-20 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023015483A true JP2023015483A (ja) | 2023-02-01 |
Family
ID=85130878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021119282A Pending JP2023015483A (ja) | 2021-07-20 | 2021-07-20 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023015483A (ja) |
-
2021
- 2021-07-20 JP JP2021119282A patent/JP2023015483A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7479925B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
US8112706B2 (en) | Information processing apparatus and method | |
US7551753B2 (en) | Image processing apparatus and method therefor | |
JP7387339B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
JP5111268B2 (ja) | 画像処理装置、画像処理方法、そのプログラムおよび記憶媒体 | |
JP7262993B2 (ja) | 画像処理システム、画像処理方法、画像処理装置 | |
US7876471B2 (en) | Image processing apparatus, control method and program thereof which searches for corresponding original electronic data based on a paper document | |
US20050271296A1 (en) | Image processing apparatus, information processing apparatus, control method therefor, and program | |
US8224131B2 (en) | Image processing apparatus and image processing method | |
EP1752895A1 (en) | Image processing apparatus for image retrieval and control method therefor | |
US10477063B2 (en) | Character detection and binarization | |
JP2007164648A (ja) | 類似画像検索装置、類似画像検索方法、プログラム及び情報記録媒体 | |
JP2006345314A (ja) | 画像処理装置および画像処理方法 | |
JP2009211554A (ja) | 画像処理装置、画像処理方法、コンピュータプログラム、および記憶媒体 | |
JP2023015483A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム | |
US20090290797A1 (en) | Image processing for storing objects separated from an image in a storage device | |
JP7301529B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP7379063B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
JP2023040886A (ja) | 画像処理装置、方法及びプログラム | |
JP2021033577A (ja) | 画像処理システムと画像処理方法、及びプログラム | |
JP5100354B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
JP2021131784A (ja) | 画像処理システム、プログラム、画像処理方法 | |
US20230029990A1 (en) | Image processing system and image processing method | |
JP2023026170A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム | |
JP2023021595A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |