(57)【要約】【課題】  読取画像中の手書き文字に所定の画像処理を施すことが可能な画像処理システムを提供する。【解決手段】  画像処理システム（１００）は、背景画像と手書き画像が間隔をあけて並んだ入力画像（図６）と正解ラベル画像をペアとする学習データ（図１４）に基づきニューラルネットワークを学習させ、ニューラルネットワークに基づいて読取画像中の手書き文字に画像処理を施す。【選択図】  図６
2020101843.tif 000002
【特許請求の範囲】
【請求項１】
背景画像と手書き画像が間隔をあけて並んだ合成画像データと、前記合成画像データに対応付けられた正解画像データと、に基づきニューラルネットワークを学習させる手段と、
手書き文字を含む原稿の読取画像を取得する手段と、
前記ニューラルネットワークに基づき、前記読取画像に所定の画像処理を施す手段と、を有することを特徴とする画像処理システム。
【請求項２】
前記所定の画像処理は、前記読取画像の画素の中から前記手書き文字の画素位置を特定するための画像を生成する処理であることを特徴とする請求項１に記載の画像処理システム。
【請求項３】
前記所定の画像処理は、前記読取画像の中から前記手書き文字を含む矩形領域を特定するための画像を生成する処理であることを特徴とする請求項１に記載の画像処理システム。
【請求項４】
前記所定の画像処理は、前記読取画像中の手書き文字が強調された画像を生成するための処理であることを特徴とする請求項１に記載の画像処理システム。
【請求項５】
前記所定の画像処理は、前記読取画像中の手書き文字が消去された画像を生成するための処理であることを特徴とする請求項１に記載の画像処理システム。
【請求項６】
前記特定するための画像に基づいて、前記読取画像から手書き文字が消去された画像を生成する手段を更に有することを特徴とする請求項２に記載の画像処理システム。
【請求項７】
前記特定するための画像に基づいて、前記読取画像から手書きＯＣＲ処理を施すべき領域を特定する手段を更に有することを特徴とする請求項２に記載の画像処理システム。
【請求項８】
前記特定するための画像に基づいて、前記読取画像に手書き文字が含まれていることを示す情報を記憶領域に記憶させる手段を更に有することを特徴とする請求項２に記載の画像処理システム。
【請求項９】
背景サンプル画像と手書きサンプル画像に基づき前記合成画像データを生成する学習データ生成手段を更に有することを特徴とする請求項１に記載の画像処理システム。
【請求項１０】
前記学習データ生成手段は、背景サンプル画像と手書きサンプル画像の一つの組み合わせに基づき複数の合成画像データを生成することを特徴とする請求項９に記載の画像処理システム。
【請求項１１】
前記学習データ生成手段は、前記背景サンプル画像に含まれる余白領域に対して前記手書きサンプル画像中の手書き画像を合成するように、合成画像データを生成することを特徴とする請求項９に記載の画像処理システム。
【請求項１２】
前記学習データ生成手段は、前記背景サンプル画像に含まれる背景画像と前記手書きサンプル画像に含まれる手書き画像が余白領域を挟んで並ぶように、合成画像データを生成することを特徴とする請求項９に記載の画像処理システム。
【請求項１３】
余白サンプル画像を取得する手段を備え、
前記余白領域は前記余白サンプル画像に基づく画像領域であることを特徴とする請求項１１に記載の画像処理システム。
【請求項１４】
前記学習させる手段を備える装置と、
前記読取画像を取得する手段を備える装置と、
前記所定の画像処理を施す手段を備える装置と、を有することを特徴とする請求項１乃至１３のいずれか１項に記載の画像処理システム。
【請求項１５】
背景画像と手書き画像が間隔をあけて並んだ合成画像データと、前記合成画像データに対応付けられた正解画像データと、に基づきニューラルネットワークを学習させる工程と、
手書き文字を含む原稿の読取画像を取得する工程と、
前記ニューラルネットワークに基づき、前記読取画像に所定の画像処理を施す工程と、を有することを特徴とする画像処理方法。
【請求項１６】
前記所定の画像処理は、前記読取画像の画素の中から前記手書き文字の画素位置を特定するための画像を生成する処理であることを特徴とする請求項１５に記載の画像処理方法。
【請求項１７】
前記所定の画像処理は、前記読取画像の中から前記手書き文字を含む矩形領域を特定するための画像を生成する処理であることを特徴とする請求項１５に記載の画像処理方法。
【請求項１８】
前記所定の画像処理は、前記読取画像中の手書き文字が強調された画像を生成するための処理であることを特徴とする請求項１５に記載の画像処理方法。
【請求項１９】
前記所定の画像処理は、前記読取画像中の手書き文字が消去された画像を生成するための処理であることを特徴とする請求項１５に記載の画像処理方法。
【請求項２０】
前記特定するための画像に基づいて、前記読取画像から手書き文字が消去された画像を生成する工程を更に有することを特徴とする請求項１６に記載の画像処理方法。
【請求項２１】
前記特定するための画像に基づいて、前記読取画像から手書きＯＣＲ処理を施すべき領域を特定する工程を更に有することを特徴とする請求項１６に記載の画像処理方法。
【請求項２２】
前記特定するための画像に基づいて、前記読取画像に手書き文字が含まれていることを示す情報を記憶領域に記憶させる工程を更に有することを特徴とする請求項１５に記載の画像処理方法。
【請求項２３】
背景サンプル画像と手書きサンプル画像に基づき前記合成画像データを生成する学習データ生成工程を更に有することを特徴とする請求項１６に記載の画像処理方法。
【請求項２４】
前記学習データ生成工程は、背景サンプル画像と手書きサンプル画像の一つの組み合わせに基づき複数の合成画像データを生成することを特徴とする請求項２３に記載の画像処理方法。
【請求項２５】
前記学習データ生成工程は、前記背景サンプル画像に含まれる余白領域に対して前記手書きサンプル画像中の手書き画像を合成するように、合成画像データを生成することを特徴とする請求項２３に記載の画像処理方法。
【請求項２６】
前記学習データ生成工程は、前記背景サンプル画像に含まれる背景画像と前記手書きサンプル画像に含まれる手書き画像が余白領域を挟んで並ぶように、合成画像データを生成することを特徴とする請求項２３に記載の画像処理方法。
【請求項２７】
余白サンプル画像を取得する工程を更に備え、
前記余白領域は前記余白サンプル画像に基づく画像領域であることを特徴とする請求項２６に記載の画像処理方法。
【請求項２８】
背景画像と手書き画像が間隔をあけて並んだ合成画像データと、前記合成画像データに対応付けられた正解画像データと、に基づき学習したニューラルネットワークを取得する手段と、
手書き文字を含む原稿の読取画像を取得する手段と、
前記ニューラルネットワークに基づき、前記読取画像に所定の画像処理を施す手段と、を有することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャン画像を処理する画像処理システムに関し、特に手書き文字認識を行う画像処理システムに関する。この画像処理システムは、例えば、複写機複合機などの画像処理装置およびこの装置に接続されたサーバによって構成される。
【背景技術】
【０００２】
近年、コンピュータの普及に伴う労働環境の変化により、業務資料の電子化が進んでいる。こうした電子化の対象は手書き文字が記入された文書にも及んでおり、手書き文字を抽出する技術が検討されている。特許文献１では、医療文書で用いられるシェーマと呼ばれる図形情報をあらかじめ登録しておくことで、紙カルテのスキャン画像から手書き文字のみを抽出する技術を開示している。この技術によれば、印刷文書の余白部分に記入された、情報価値のある手書き文字を抽出することが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６１４０９４６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術は、手書き文字を抽出可能な原稿の対象について、改善の余地がある。なぜならば、特許文献１の技術は、あらかじめ登録しておいた図形情報を用いて手書き文字の抽出をおこなうため、図形情報が登録されていない種類の原稿については手書き文字の抽出を正確に行うことができないからである。したがって、あらかじめ登録されていない図形が含まれる原稿の読取画像からであっても、余白領域に付与された手書き文字（手書き記号、手書き図形）に対して画像処理を行うことのできる画像処理システムが望まれる。
【０００５】
本発明は、読取画像中の手書き文字に対して所定の画像処理を施すことが可能な画像処理システムを提供することを目的とする。特に、ニューラルネットワークを用いることで、読取画像中の手書き文字を抽出するための画像処理を施すことが可能な画像処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、画像処理システムにおいて、背景画像と手書き画像が間隔をあけて並んだ合成画像データと、前記合成画像データに対応付けられた正解画像データと、に基づきニューラルネットワークを学習させる手段と、手書き文字を含む原稿の読取画像を取得する手段と、前記ニューラルネットワークに基づき、前記読取画像に所定の画像処理を施す手段と、を有することを特徴とするものである。
【発明の効果】
【０００７】
本発明によれば、読取画像から手書き文字に対して所定の画像処理を施すことが可能な画像処理システムを提供できる。特に、ニューラルネットワークを用いることで、読取画像から手書き文字を抽出するための画像処理を施すことが可能な画像処理システムを提供できる。
【図面の簡単な説明】
【０００８】
【図１】画像処理システムの構成を示した図である。
【図２】図２（ａ）は画像処理装置の構成を示す図である。図２（ｂ）は学習装置の構成を示す図である。図２（ｃ）は画像処理サーバの構成を示す図である。
【図３】図３（ａ）は画像処理システムの学習シーケンスを示す図である。図３（ｂ）は画像処理システムの利用シーケンスを示す図である。
【図４】図４（ａ）はサンプル画像生成処理のフローを示す図である。図４（ｂ）はサンプル画像受信処理のフローを示す図である。
【図５】学習データ生成処理のフローを示す図である。
【図６】画像合成により生成する入力画像の構成例を示す図である。
【図７】学習処理のフローを示す図である。
【図８】図８（ａ）は手書き除去依頼処理のフローを示す図である。図８（ｂ）は手書き除去処理のフローを示す図である。
【図９】図９（ａ）は実施例２におけるサンプル画像取得処理のフローを示す図である。図９（ｂ）は実施例２におけるサンプル画像受信処理のフローを示す図である。
【図１０】実施例２における学習データ生成処理のフローを示す図である。
【図１１】実施例３における学習データ生成処理のフローを示す図である。
【図１２】背景サンプル画像生成処理の概要を示す図である。
【図１３】実施例４における学習データ生成処理のフローを示す図である。
【図１４】図１４（ａ）は学習データの構成例を示す図である。図１４（ｂ）は学習データの変形例を示す図である。図１４（ｃ）は学習データの変形例を示す図である。図１４（ｄ）は学習データの変形例を示す図である。
【図１５】図１５（ａ）は手書き検出結果情報を示す図である。図１５（ｂ）は手書き検出結果情報を示す図である。
【図１６】図１６（ａ）は実施例６における画像処理システムの構成を示す図である。図１６（ｂ）は実施例６における画像処理システムの利用シーケンスを示した図である。
【図１７】図１７（ａ）はデータ生成依頼処理のフローを示す図である。図１７（ｂ）はＯＣＲ処理のフローを示す図である。
【図１８】背景サンプル画像から抽出した背景部分領域の例を示す図である。
【図１９】図１９（ａ）は背景部分領域を説明するための図である。図１９（ｂ）は生成される入力画像の構成を示す図である。図１９（ｃ）は生成される入力画像の構成を示す図である。
【図２０】図２０（ａ）は印刷ジョブ選択画面を示す図である。図２０（ｂ）は学習原稿スキャン画面を示す図である。
【図２１】手書き認識機能の操作画面を示す図である。
【図２２】手書き画像変換処理の概要を示す図である。
【図２３】図２３（ａ）は手書き文字を含む文書の例を示す図である。図２３（ｂ）はサーチャブルＰＤＦの操作画面を示す図である。
【図２４】帳票データ生成処理の概要を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について実施例にて具体的な構成を挙げ、図面を用いて説明する。なお、本発明を実現するための構成は実施例に記載された構成のみに限定されるものではない。同様の効果を得られる範囲で実施例に記載の構成の一部を省略または均等物に置き換えてもよい。
【００１０】
（実施例１）
＜画像処理システム＞
図１は画像処理システムの構成を示した図である。画像処理システム１００は、画像処理装置１０１、学習装置１０２、画像処理サーバ１０３より構成される。画像処理装置１０１と学習装置１０２、画像処理サーバ１０３は、ネットワーク１０４を介して接続されている。
【００１１】
画像処理装置１０１は、ＭＦＰ等と呼ばれるデジタル複合機などであり、印刷機能やスキャン機能（画像取得部１１１としての機能）を有する。画像処理装置１０１は、白紙に手書きのみが記入された原稿をスキャン機能によりスキャンして画像データを生成する（以降この画像を「前景サンプル画像」と呼称する）。複数枚の原稿をスキャンして前景サンプル画像を複数得る。一方、画像処理装置１０１は、電子文書を印刷し印刷原稿を出力する。さらにこの印刷原稿をスキャンして画像データを生成する（以降この画像を「背景サンプル画像」と呼称する）。複数の印刷原稿をスキャンして、背景サンプル画像を複数得る。画像処理装置１０１は、ネットワーク１０４を介して、前景サンプル画像と背景サンプル画像を学習装置１０２に送信する。また、画像処理装置１０１は、手書き抽出を行う際に、手書き文字（手書き記号、手書き図形）が含まれる原稿をスキャンして処理対象とするスキャン画像データ（変換前画像）を得る（以降このスキャン画像データを「処理対象画像」と呼称する）。そして、処理対象画像を、ネットワーク１０４を介して、画像処理サーバ１０３に送信する。
【００１２】
学習装置１０２は、画像処理装置１０１が生成した前景サンプル画像と背景サンプル画像を蓄積する画像蓄積部１１５として機能する。またこのようにして蓄積した画像から学習データを生成する学習データ生成部１１２として機能する。学習データ生成部は、手書き抽出を行うニューラルネットワークを学習するために用いられるデータである。学習装置１０２は、生成した学習データを用いてニューラルネットワークの学習をおこなう学習部１１３として機能する。学習部１１３の学習により、学習結果（ニューラルネットワークのパラメータなど）が生成される。学習装置１０２は、学習結果（学習モデル）を、ネットワーク１０４を介して、画像処理サーバ１０３に送信する。ニューラルネットワークを用いる機械学習手法の一つとして、多層ニューラルネットワークを用いるディープラーニングが挙げられる。
【００１３】
画像処理サーバ１０３は、画像処理装置１０１が生成した処理対象画像に対して手書き抽出を行う。この際、画像処理装置１０１は、学習装置１０２が生成した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中の手書きの画素（画素位置）を抽出（特定）する。そして、画像処理サーバ１０３は、抽出した手書きの画素に対して各種画像処理を施す画像変換部１１４として機能する。本実施例において、抽出した手書きの画素を白画素に変換して、手書きを消去する。画像処理サーバ１０３は、手書きを消去した処理対象画像（変換後画像）を画像処理装置１０１に送信する。画像処理装置１０１は、受信した手書きが消去された処理対象画像を印刷したり、ユーザが所望する送信先に送信したりして出力する。
【００１４】
＜学習シーケンス＞
本システムにおける学習シーケンスについて説明する。図３（ａ）は画像処理システムの学習シーケンスを示す図である。
【００１５】
ステップ３０１（以降の説明においてＳ３０１等と表記する）において、オペレータが手書き画像の読取指示を行うと、画像取得部１１１は、手書き画像を読みとり、この画像に手書きフラグを付与する（Ｓ３０２）。また、Ｓ３０３において、オペレータが背景画像の読取指示をおこなうと、画像取得部１１１は、背景画像を読みとり、この画像に背景フラグを付与する（Ｓ３０３）。
【００１６】
上述のように読み取られた手書き画像、背景画像は、学習データ生成部１１２に送信される。なお、このとき、手書き画像、背景画像にＩＤ情報を付与するとよい。このＩＤ情報は例えば、画像取得部１１１として機能する画像処理装置１０１を識別するための情報である。なお、ＩＤ情報として、画像処理装置１０１を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するめためのグループ識別情報であってもよい。
【００１７】
画像が送信されてくると、学習データ生成部１１２は、画像蓄積部１１５に画像を蓄積する（Ｓ３０６）。そして、学習データ生成部１１２は、このようにして蓄積したデータに基づいて学習データを生成する（Ｓ３０７）。このとき、特定のＩＤ情報に基づく画像のみを用いて学習データを生成してもよい。その後、学習データ生成部１１２は、学習部１１３に学習データを送信する（Ｓ３０８）、特定のＩＤ情報に基づく画像のみで学習データを生成した場合は、ＩＤ情報も併せて送信する。学習部１１３は、受信した学習データに基づき、学習モデルを更新する（Ｓ３０９）。学習部１１３は、ＩＤ情報ごとに学習モデルを保持し、対応する学習データのみで学習をおこなってもよい。このようにＩＤ情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。
【００１８】
＜利用シーケンス＞
本システムにおける利用シーケンスについて説明する。図３（ｂ）は画像処理システムの利用シーケンスを示す図である。図２２は手書き画像変換処理の概要を示す図である。
【００１９】
Ｓ３５１において、オペレータが処理対象画像の読取指示を行うと、画像取得部１１１は、処理対象画像を読みとり、この画像に処理対象フラグを付与する（Ｓ３５２）。ここで読み取られる画像は、例えば画像２２０１である。画像２２０１は手書き文字２２０５を含んでいる。
【００２０】
また、Ｓ３５３において、オペレータが手書き文字の加工指示（変換指示）をおこなうと、画像取得部１１１は、手書き文字の加工設定情報を取得する（Ｓ３５４）。
【００２１】
上述のように読み取られた処理対象画像は、加工設定情報とともに画像変換部１１４に送信される（Ｓ３５５）。なお、このとき、送信データにＩＤ情報を付与するとよい。
【００２２】
データを受信すると、画像変換部１１４は、手書き文字の加工指示を受け付ける（Ｓ３５６）。このとき、画像変換部１１４は、画像取得部１１１をデータの返信先として記憶する。手書き文字の加工指示を受け付けた画像変換部１１４は、最新の学習モデルを学習部１１３に要求する（Ｓ３５７）。これに応じて、学習部１１３は最新の学習モデルを画像変換部に送信する。画像変換部１１４からの要求時にＩＤ情報が指定されていた場合は、ＩＤ情報に対応する学習モデルを送信する（Ｓ３５８）。画像変換部１１４は、取得した学習モデルに基づいて、変換元画像から手書き文字の抽出処理（識別処理）をおこなう（Ｓ３５９）。抽出処理では、例えば、画像２２０２が取得される。そして、この抽出結果に基づいて、手書き文字に加工を施した画像を生成する。画像変換部１１４は、生成した変換後画像を画像取得部１１１に送信する（Ｓ３６１）。変換後画像を取得した、画像取得部は、このデータに基づく出力処理をおこなう。出力処理としては、変換後画像に基づく印刷や、変換後画像に基づく画面表示が挙げられる。
【００２３】
＜装置構成＞
上述したシステムを実現するために、各装置は次のような構成を備える。図２（ａ）は画像処理装置の構成を示す図である。図２（ｂ）は学習装置の構成を示す図である。図２（ｃ）は画像処理サーバの構成を示す図である。図２（ａ）にしめすように、画像処理装置１０１は、次を備える。ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０４、プリンタデバイス２０５、スキャナデバイス２０６、原稿搬送デバイス２０７、ストレージ２０８、入力デバイス２０９、表示デバイス２１０、及び外部インタフェース２１１を備える。各デバイスは、データバス２０３によって相互通信可能に接続されている。
【００２４】
ＣＰＵ２０１は、画像処理装置１０１を統括的に制御するためのコントローラである。ＣＰＵ２０１は、ＲＯＭ２０２に格納されているブートプログラムによりＯＳ（オペレーティングシステム）を起動する。このＯＳ上で、ストレージ２０８に記憶されているコントローラプログラムが実行される。コントローラプログラムは、画像処理装置１０１を制御するためのプログラムである。ＣＰＵ２０１は、データバス２０３によって接続されている各デバイスを統括的に制御する。ＲＡＭ２０４は、ＣＰＵ２０１の主メモリやワークエリア等の一時記憶領域として動作する。
【００２５】
プリンタデバイス２０５は、画像データを用紙（記録材、シート）上に印刷するものである。これには感光体ドラムや感光体ベルトなどを用いた電子写真印刷方式や、微小ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式などがあるが、どの方式でもかまわない。スキャナデバイス２０６は、ＣＣＤなどの光学読取装置を用いて紙などの原稿上の走査を行い、電気信号データを得てこれを変換し、スキャン画像データを生成する。また、ＡＤＦ（オート・ドキュメント・フィーダ）などの原稿搬送デバイス２０７は、原稿搬送デバイス２０７上の原稿台に載置された原稿を１枚ずつスキャナデバイス２０６に搬送する。
【００２６】
ストレージ２０８は、ＨＤＤやＳＳＤなどの、読み出しと書き込みが可能な不揮発メモリであり、ここには、前述のコントローラプログラムなど、様々なデータが記録される。入力デバイス２０９は、タッチパネルやハードキーなどから構成される入力装置である。入力デバイス２０９は、ユーザの操作指示を受け付ける。そして、指示位置を含む指示情報をＣＰＵ２０１に伝達する。表示デバイス２１０は、ＬＣＤやＣＲＴなどの表示装置である。表示デバイス２１０は、ＣＰＵ２０１が生成した表示データを表示する。ＣＰＵ２０１は、入力デバイス２０９より受信した指示情報と、表示デバイス２１０に表示させている表示データとから、いずれの操作が成されたかを判定する。そしてこの判定結果に応じて、画像処理装置１０１を制御するとともに、新たな表示データを生成し表示デバイス２１０に表示させる。
【００２７】
外部インタフェース２１１は、ＬＡＮや電話回線、赤外線といった近接無線などのネットワークを介して、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース２１１は、学習装置１０２やＰＣ（不図示）などの外部機器より、ＰＤＬデータを受信する。ＣＰＵ２０１は、外部インタフェース２１１が受信したＰＤＬデータを解釈し、画像を生成する。生成した画像は、プリンタデバイス２０５により印刷したり、ストレージ１０８に記憶したりする。また、外部インタフェース２１１は、画像処理サーバ１０３などの外部機器より画像データを受信する。受信した画像データをプリンタデバイス２０５により印刷したり、ストレージ１０８に記憶したり、外部インタフェース２１１により、他の外部機器に送信したりする。
【００２８】
図２（ｂ）の学習装置１０２は、ＣＰＵ２３１、ＲＯＭ２３２、ＲＡＭ２３４、ストレージ２３５、入力デバイス２３６、表示デバイス２３７、外部インタフェース２３８、ＧＰＵ２３９を備える。各部は、データバス２３３を介して相互にデータを送受信することができる。
【００２９】
ＣＰＵ２３１は、学習装置１０２の全体を制御するためのコントローラである。ＣＰＵ２３１は、不揮発メモリであるＲＯＭ２３２に格納されているブートプログラムによりＯＳを起動する。このＯＳの上で、ストレージ２３５に記憶されている学習データ生成プログラムおよび学習プログラムを実行する。ＣＰＵ２３１が学習データ生成プログラムを実行することより、学習データを生成する。また、ＣＰＵ２３１が学習プログラムを実行することにより、手書き抽出を行うニューラルネットワークを学習する。ＣＰＵ２３１は、データバス２３３などのバスを介して各部を制御する。
【００３０】
ＲＡＭ２３４は、ＣＰＵ２３１のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ２３５は、読み出しと書き込みが可能な不揮発メモリであり、前述の学習データ生成プログラムや学習プログラムを記録する。
【００３１】
入力デバイス２３６は、マウスやキーボードなどから構成される入力装置である。表示デバイス２３７は、図２（ａ）を用いて説明した表示デバイス２１０と同様である。
【００３２】
外部インタフェース２３８は、図２（ａ）を用いて説明した外部インタフェース２１１と同様である。
【００３３】
ＧＰＵ２３９は、画像処理プロセッサであり、ＣＰＵ２３１と協調して画像データの生成やニューラルネットワークの学習を行う。
【００３４】
図２（ｃ）の画像処理サーバ１０３は、ＣＰＵ２６１、ＲＯＭ２６２、ＲＡＭ２６４、ストレージ２６５、入力デバイス２６６、表示デバイス２６７、外部インタフェース２６８を備える。各部は、データバス２６３を介して相互にデータを送受信することができる。
【００３５】
ＣＰＵ２６１は、画像処理サーバ１０３の全体を制御するためのコントローラである。ＣＰＵ２６１は、不揮発メモリであるＲＯＭ２６２に格納されているブートプログラムによりＯＳを起動する。このＯＳの上で、ストレージ２６５に記憶されている画像処理サーバプログラムを実行する。ＣＰＵ２６１がこの画像処理サーバプログラムを実行することより、処理対象画像から手書きの画素を抽出して消去する。ＣＰＵ２６１は、データバス２６３などのバスを介して各部を制御する。
【００３６】
ＲＡＭ２６４は、ＣＰＵ２６１のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ２６５は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記録する。
【００３７】
入力デバイス２６６は、図２（ｂ）を用いて説明した入力デバイス２３６と同様である。表示デバイス２６７は、図２（ａ）を用いて説明した表示デバイス２１０と同様である。
【００３８】
外部インタフェース２６８は、図２（ａ）を用いて説明した外部インタフェース２１１と同様である。
【００３９】
＜操作画面＞
Ｓ３０３、Ｓ３０４に示したオペレータの指示は次のような操作画面でおこなわれる。図２０（ａ）は印刷ジョブ選択画面を示す図である。図２０（ｂ）は学習原稿スキャン画面を示す図である。
【００４０】
学習原稿スキャン画面２０５０は、表示デバイス２１０に表示される画面の一例である。図２０（ｂ）に示すように、学習原稿スキャン画面２０５０は、プレビュー領域２０５１、画像属性指定ボタン２０５２、２０５３、２０５４、スキャンボタン２０５５、送信開始ボタン２０５６を備える。
【００４１】
スキャンボタン２０５５はスキャナデバイス２０６にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、プレビュー領域２０５１に読み取られた画像のプレビューが表示される。スキャナデバイス２０６に別の原稿をセットし、スキャンボタン２０５５を再び押すことで、複数の画像データをまとめて保持しておくこともできる。
【００４２】
画像属性指定ボタン２０５２、２０５３、２０５４は、読み取られた画像の属性を指定するためのボタンである。画像属性指定ボタン２０５２を選択すると読取画像に手書き画像属性が付与される。画像属性指定ボタン２０５３を選択すると読取画像に背景画像属性が付与される。画像属性指定ボタン２０５４を選択すると読取画像に余白画像属性が付与される。選択中のボタンは識別可能に強調表示される。
【００４３】
画像が読み取られ、画像種別が選択されると、送信開始ボタン２０５６が選択可能となる。
【００４４】
送信開始ボタン２０５６を選択すると、選択された画像属性が付与された読取画像が学習装置１０２に送信される。
【００４５】
印刷ジョブ選択画面２０００は表示デバイス２１０に表示される画面の一例である。図２０（ｂ）に示すように、印刷ジョブ選択画面２０００は、ジョブ情報２００１、２００２、プリント設定ボタン２００３、画像表示ボタン２００４、ジョブ削除ボタン２００５、学習サーバ転送ボタン２００６、プリント開始ボタン２００７を備える。ジョブ情報２００１、２００２は画像処理装置１０１に保持された印刷ジョブを識別するための情報である。印刷ジョブ選択画面２０００では、印刷したい印刷ジョブのジョブ情報を選択してからプリント開始ボタン２００７を選択することで、プリンタデバイス２０５を用いた印刷処理を開始できる。また、印刷ジョブ選択画面２０００においてジョブを選択し、プリント設定ボタン２００３を選択すると印刷設定を変更するための印刷設定画面（不図示）が表示される。印刷ジョブ選択画面２０００においてジョブを選択し、画像表示ボタン２００４を選択すると印刷ジョブのプレビュー画像を表示するためのプレビュー画面（不図示）が表示される。印刷ジョブ選択画面２０００においてジョブを選択し、ジョブ削除ボタン２００５を選択すると選択されたジョブが削除される。印刷ジョブ選択画面２０００においてジョブを選択し、学習サーバ転送ボタン２００６を選択すると、学習原稿スキャン画面２０５０に画面遷移する。また、印刷ジョブ選択画面２０００において選択されたジョブが、スキャン画像と同様に保持され、プレビュー領域２０５１に表示される。オペレータは、続けて画像属性指定ボタン２０５２、２０５３、２０５４、送信開始ボタン２０５６を選択することで、印刷ジョブをサンプル画像として学習装置に送信することができる。
【００４６】
Ｓ３５１、Ｓ３５３に示したオペレータの指示は次のような操作画面でおこなわれる。図２１は手書き認識機能の操作画面を示す図である。手書き認識機能の操作画面２１００では、手書き認識機能に関する各種操作をおこなうことができる。図２１に示すように、操作画面２１００は、プレビュー領域２１０１、処理指定ボタン２１０２、２１０３、２１０４、２１０５、スキャンボタン２１０７、送信開始ボタン２１０８を備える。
【００４７】
スキャンボタン２１０７は、スキャナデバイス２０６にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、プレビュー領域２０５１に読み取られた画像のプレビューが表示される。スキャナデバイス２０６に別の原稿をセットし、スキャンボタン２１０７を再び押すことで、複数の画像データをまとめて保持しておくこともできる。処理指定ボタン２１０２、２１０３、２１０４、２１０５は、読み取られた画像に基づき実行する処理を指定（依頼情報を付与）するためのボタンである。処理指定ボタン２１０２を選択すると読取画像に手書き強調設定が付与される。処理指定ボタン２１０５を選択すると読取画像に手書き除去設定が付与される。処理指定ボタン２１０３を選択すると読取画像に帳票データ設定が付与される。処理指定ボタン２１０４を選択すると読取画像にサーチャブルＰＤＦ設定が付与される。選択中のボタンは識別可能に強調表示される。
【００４８】
＜サンプル画像生成処理＞
図４（ａ）はサンプル画像生成処理のフローを示す図である。
【００４９】
次に、画像処理装置１０１によるサンプル画像生成処理について説明する。図４（ａ）は、サンプル画像生成処理のフローチャートである。この処理は、ＣＰＵ２０１が、ストレージ２０８に記録されているコントローラプログラムを読み出し、ＲＡＭ２０４に展開して実行することで実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を操作することにより開始される。
【００５０】
まずＣＰＵ２０１は、Ｓ４０１において、手書きのみの原稿のスキャン指示が成されたか否かを判定する。ユーザが、入力デバイス２０９を介して、手書きのみの原稿をスキャンするための所定の操作を行った場合には、ＹＥＳと判定し、Ｓ４０２に遷移する。そうでなければ、ＮＯと判定し、Ｓ４０４に遷移する。
【００５１】
ＣＰＵ２０１は、Ｓ４０２において、スキャナデバイス２０６や原稿搬送デバイス２０７を制御して、原稿をスキャンして前景サンプル画像を生成する。この原稿は、白紙に、人が手書きの文や図形（線分や矢印など）を記入したものであり、手書きのみが含まれる。前景サンプル画像は、フルカラー（ＲＧＢ３チャンネル）の画像データとして生成される。
【００５２】
ＣＰＵ２０１は、Ｓ４０３において、Ｓ４０２で生成した前景サンプル画像を、外部インタフェース２１１を介して、学習装置１０２に送信する。このとき、送信する画像データが、前景サンプル画像であることを示す情報を付与して送信する。
【００５３】
ＣＰＵ２０１は、Ｓ４０４において、印刷内容のみの原稿をスキャンする指示が成されたか否かを判定する。ユーザが、入力デバイス２０９を介して、印刷内容のみの原稿をスキャンするための所定の操作を行った場合には、ＹＥＳと判定し、Ｓ４０５に遷移する。そうでなければ、ＮＯと判定し、Ｓ４０７に遷移する。
【００５４】
ＣＰＵ２０１は、Ｓ４０５において、スキャナデバイス２０６や原稿搬送デバイス２０７を制御して、原稿をスキャンして背景サンプル画像を生成する。この原稿は、用紙に電子文書などを印刷したものであり、印刷内容のみが含まれる。背景サンプル画像は、フルカラー（ＲＧＢ３チャンネル）の画像データとして生成される。
【００５５】
ＣＰＵ２０１は、Ｓ４０６において、Ｓ４０５で生成した背景サンプル画像を、外部インタフェース２１１を介して、学習装置１０２に送信する。このとき、送信する画像データが、背景サンプル画像であることを示す情報を付与して送信する。
【００５６】
ＣＰＵ２０１は、Ｓ４０７において、処理を終了するか否かを判定する。ユーザが、サンプル画像生成処理を終了する所定の操作を行った場合には、ＹＥＳと判定して、処理を終了する。そうでなければ、ＮＯと判定し、Ｓ４０１に遷移する。
【００５７】
以上の処理によって、画像処理装置１０１は、前景サンプル画像および背景サンプル画像を生成して学習装置１０２に送信する。ユーザの操作や、原稿搬送デバイス２０７に載置した原稿枚数に応じて、前景サンプル画像および背景サンプル画像が、それぞれ複数取得される。
【００５８】
＜サンプル画像受信処理＞
次に、学習装置１０２によるサンプル画像取受信処理について説明する図４（ｂ）はサンプル画像受信処理のフローを示す図である。この処理は、ＣＰＵ２３１が、ストレージ２３５に記録されている学習データ生成プログラムを読み出し、ＲＡＭ２３４に展開して実行することで実現される。これは、ユーザが、学習装置１０２の電源をＯＮ（オン）にすると開始される。
【００５９】
ＣＰＵ２３１は、Ｓ４５１において、前景サンプル画像を受信したか否かを判定する。ＣＰＵ２３１は、外部インタフェース２３８を介して画像データを受信し、かつ、当該画像データが前景サンプル画像であることを示す情報が付与されていたならば、ＹＥＳと判定し、Ｓ４５２に遷移する。そうでなければ、ＮＯと判定し、Ｓ４５３に遷移する。
【００６０】
ＣＰＵ２３１は、Ｓ４５２において、受信した前景サンプル画像を、ストレージ２３５の所定の領域に記録する。
【００６１】
ＣＰＵ２３１は、Ｓ４５３において、背景サンプル画像を受信したか否かを判定する。ＣＰＵ２３１は、外部インタフェース２３８を介して画像データを受信し、かつ、当該画像データが背景サンプル画像であることを示す情報が付与されていたならば、ＹＥＳと判定し、Ｓ４５４に遷移する。そうでなければ、ＮＯと判定し、Ｓ４５５に遷移する。
【００６２】
ＣＰＵ２３１は、Ｓ４５４において、受信した背景サンプル画像を、ストレージ２３５の所定の領域に記録する。
【００６３】
ＣＰＵ２３１は、Ｓ４５５において、処理を終了するか否かを判定する。ユーザが、学習装置１０２の電源のＯＦＦなどの、サンプル画像受信処理を終了する所定の操作を行った場合には、ＹＥＳと判定して、処理を終了する。そうでなければ、ＮＯと判定し、Ｓ４５１に遷移する。
【００６４】
＜学習データ生成処理＞
次に、学習装置１０２による学習データ生成処理について説明する。図５は学習データ生成処理のフローを示す図である。図６は画像合成により生成する入力画像の構成例を示す図である。
【００６５】
この処理は、学習装置１０２の学習データ生成部１１２により実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を介して、所定の操作を行うことで開始される。
【００６６】
まずＣＰＵ２３１は、Ｓ５０１において、ストレージ２３５に記憶している前景サンプル画像を選択して読み出す。図４のフローチャートのＳ４５２の処理ステップにより、ストレージ２３５には複数の前景サンプル画像が記録されているので、その中からランダムにひとつを選択する。
【００６７】
ＣＰＵ２３１は、Ｓ５０２において、Ｓ５０１で読みだした前景サンプル画像を回転して加工する。回転角度は所定の範囲（例えば−１０度〜１０度の間）からランダムに選択して決定する。
【００６８】
ＣＰＵ２３１は、Ｓ５０３において、前景サンプル画像中の一部（例えば縦ｘ横＝５１２ｘ５１２の大きさ）を切り出した画像データを生成する（以降この画像データを「前景パッチ」と呼称する）。切り出す位置はランダムに決定する。
【００６９】
ＣＰＵ２３１は、Ｓ５０４において、Ｓ５０３で生成した前景パッチを、変倍して加工する。変倍率は所定の範囲（例えば、５０％〜１５０％の間）からランダムに選択して決定する。さらに、変倍後の前景パッチの一部（例えば縦ｘ横＝２５６ｘ２５６の大きさ）を中央から切り出して前景パッチを更新する。
【００７０】
ＣＰＵ２３１は、Ｓ５０５において、前景パッチの各画素の輝度を変更して加工する。ＣＰＵ２３１は、前景パッチをグレースケール化し、そしてガンマ補正を用いて前景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【００７１】
ＣＰＵ２３１は、Ｓ５０６において、ストレージ２３５に記憶している背景サンプル画像を選択して読み出す。図４のフローチャートのＳ４５４の処理ステップにより、ストレージ２３５には複数の背景サンプル画像が記録されているので、その中からランダムにひとつを選択する。
【００７２】
ＣＰＵ２３１は、Ｓ５０７において、Ｓ５０６で読みだした背景サンプル画像を回転して加工する。回転角度は所定の範囲（例えば−１０度〜１０度の間）からランダムに選択して決定する。
【００７３】
ＣＰＵ２３１は、Ｓ５０８において、背景サンプル画像の一部（Ｓ５０３で前景パッチを切り出したときと同じ大きさ）を切り出して画像データを生成する（以降この画像データを「背景パッチ」と呼称する）。切り出す位置はランダムに決定する。
【００７４】
ＣＰＵ２３１は、Ｓ５０９において、Ｓ５０８で生成した背景パッチを、変倍して加工する。変倍率は所定の範囲（例えば、５０％〜１５０％の間）からランダムに選択して決定する。さらに、変倍後の背景パッチの一部（Ｓ５０４で前景パッチを切り出したときと同じ大きさ）を中央から切り出して背景パッチを更新する。
【００７５】
ＣＰＵ２３１は、Ｓ５１０において、背景パッチの各画素の輝度を変更して加工する。ＣＰＵ２３１は、背景パッチをグレースケール化し、そしてガンマ補正を用いて背景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【００７６】
ここまでの処理ステップによって、前景パッチと背景パッチが得られた。前景パッチと背景パッチとで、それぞれ、回転や変倍、輝度の変更を行って加工したが、これは学習データに多様性を持たせることで、当該学習データを用いて学習するニューラルネットワークの汎化性能を向上させるためである。また、前景サンプル画像も背景サンプル画像も、例えばＡ４用紙を３００ｄｐｉの解像度でスキャンして生成したとする。この場合、その画素数は２４８０ｘ３５０８と大きなものとなり、後述する学習処理において、ＲＡＭ２３４に展開したり、ＣＰＵ２３１やＧＰＵ２３９が参照したりするにあたり、処理効率が低下を招く。なので、上述のように、より小さな部分画像を切り出して用いるようにする。また、位置をランダムに決定して部分画像を切り出すため、一枚の前景サンプル画像から複数かつ様々な学習データを生成することができる。
【００７７】
ＣＰＵ２３１は、Ｓ５１１において、前景パッチに対して正解ラベル画像（教師データ、正解画像データ）を生成する。ＣＰＵ２３１は、前景パッチに対して二値化処理を行う。そして、予め定めた閾値よりも低い値である画素の値を、手書きを示す値（例えば２５５、以降も同様）とする。また、他の画素の値を、手書きではないことを示す値（例えば０、以降も同様）とする。このように画素の値を定めた画像データを、前景パッチに対する正解ラベル画像として生成する。
【００７８】
ＣＰＵ２３１は、Ｓ５１２において、画像合成により生成する画像データの構成を決定する。当該画像データは、前景の画像領域と背景の画像領域、余白の画像領域を含む（以降、それぞれ「前景領域」、「背景領域」、「余白領域」と呼称する）。本処理ステップでは、これらの領域の位置および面積を決定するものである。まず、背景に対する前景の方向を決定する。上、右上、右、右下、下、左下、左、左上、の８方向からランダムに選択して決定する。次に、前景と背景の間の余白の幅を決定する。所定の範囲（例えば、１画素〜５０画素の間）からランダムに選択して決定する。そして、前景領域を決定する。図６を参照しながら説明する。なお、画像合成により生成する画像データの大きさは、前景パッチ（および背景パッチ）と同じ大きさとする。また、図中において、斜線で示す領域は前景領域を、横線で示す領域は背景領域を、白地で示す領域は余白領域を、それぞれ示す。
【００７９】
背景に対する前景の方向が上である場合には、図６（ａ）の領域６０１に示すように、前景領域は、画像合成により生成する画像の上端部とする。この場合の前景領域の幅は、前景パッチの幅と同一である。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。ここでＭＩＮ＿ＶＡＬは、予め定めた前景領域および背景領域の幅ないし高さの最低限の大きさを示す値である（例えば、ＭＩＮ＿ＶＡＬ＝１０画素）。
【００８０】
背景に対する前景の方向が右上である場合には、図６（ｂ）の領域６１１に示すように、前景領域は、画像合成により生成する画像の右上端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜前景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。
【００８１】
背景に対する前景の方向が右である場合には、図６（ｃ）の領域６２１に示すように、前景領域は、画像合成により生成する画像の右端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜前景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、前景パッチの高さと同一である。
【００８２】
背景に対する前景の方向が右下である場合には、図６（ｄ）の領域６３１に示すように、前景領域は、画像合成により生成する画像の右下端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜前景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。
【００８３】
背景に対する前景の方向が下である場合には、図６（ｅ）の領域６４１に示すように、前景領域は、画像合成により生成する画像の下端部とする。この場合の前景領域の幅は、前景パッチの幅と同一である。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。
【００８４】
背景に対する前景の方向が左下である場合には、図６（ｆ）の領域６５１に示すように、前景領域は、画像合成により生成する画像の左下端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜前景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。
【００８５】
背景に対する前景の方向が左である場合には、図６（ｇ）の領域６６１に示すように、前景領域は、画像合成により生成する画像の左端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜背景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、前景パッチの高さと同一である。
【００８６】
背景に対する前景の方向が左上である場合には、図６（ｈ）の領域６７１に示すように、前景領域は、画像合成により生成する画像の左上端部とする。この場合の前景領域の幅は、ＭＩＮ＿ＶＡＬ〜前景パッチの幅−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。前景領域の高さは、ＭＩＮ＿ＶＡＬ〜前景パッチの高さ−余白の幅−ＭＩＮ＿ＶＡＬ、の範囲からランダムに選択して決定する。
【００８７】
前景領域に隣接して、上述のように決定した幅の余白領域を設ける。背景に対する前景の方向それぞれにおいて、図６の領域６０２、領域６１２、領域６２２、領域６３２、領域６４２、領域６５２、領域６６２、領域６７２、にそれぞれ例示するように、余白領域を決定する。
【００８８】
図６の領域６０３、領域６１３、領域６２３、領域６３３、領域６４３、領域６５３、領域６６３、領域６７３、にそれぞれ例示するように、画像合成により生成する画像における、前景領域および余白領域以外の領域が背景領域となる。
【００８９】
なお、背景に対する前景の方向が、右上や右下、左下、左上の場合には、前景領域の２辺が余白領域と接する。上述では、２辺に接する余白領域の幅は同一としたが、各辺ずつそれぞれ別にランダムに決定してもよい。
【００９０】
ＣＰＵ２３１は、Ｓ５１３において、前景パッチおよびこれに対する正解ラベル画像から、Ｓ５１２で決定した前景領域に該当する部分画像を切り出す。
【００９１】
ＣＰＵ２３１は、Ｓ５１４において、背景パッチから、Ｓ５１２で決定した背景領域に該当する部分画像を切り出す。
【００９２】
ＣＰＵ２３１は、Ｓ５１５において、学習データに用いる入力画像を画像合成により生成する。ＣＰＵ２３１は、前景パッチと同一サイズの画像データであって、全画素の値が白（画素値が２５５、あるいは２５５から若干の幅を持たせた範囲（例えば２５５〜２５０）からランダムに選択）の画像データを、ベース画像として生成する。ＣＰＵ２３１は、ベース画像の、Ｓ５１２で決定した前景領域の位置に、Ｓ５１３で切り出した前景パッチの部分画像を貼り付けて合成する。また、ＣＰＵ２３１は、ベース画像の、Ｓ５１２で決定した背景領域の位置に、Ｓ５１４で切り出した背景パッチの部分画像を貼り付けて合成する。このようにして画像合成により生成した合成画像データを学習データ用の入力画像とする。
【００９３】
ＣＰＵ２３１は、Ｓ５１６において、画像を合成し、学習データ用の正解ラベル画像を生成する。ＣＰＵ２３１は、入力画像と同一サイズの画像データであって、全画素が手書きではないことを示す値である画像データを生成する。ＣＰＵ２３１は、当該画像データの、Ｓ５１２で決定した前景領域の位置に、Ｓ５１３で切り出した正解ラベル画像の部分画像を貼り付けて合成する。このようにして画像合成により生成した画像データを学習データ用の正解ラベル画像とする。学習データの構成は図１４（ａ）に示す通りである。図１４（ａ）は学習データの構成例を示す図である。
【００９４】
ＣＰＵ２３１は、Ｓ５１７において、Ｓ５１５で画像合成により生成した入力画像と、Ｓ５１６で画像合成により生成した正解ラベル画像とを対応付け、学習データとしてストレージ２３５の所定の領域に保存する。本実施例では、図１４（ａ）のような学習データが保存される。
【００９５】
ＣＰＵ２３１は、Ｓ５１８において、学習データ生成処理を終了するか否かを判定する。ＣＰＵ２３１は、予め決定した学習データの数（本フローチャートの開始時に、画像処理装置１０１の入力デバイス２０９を介して、ユーザが指定するなどして決定）だけ学習データを生成していたならば、ＹＥＳと判定し、処理を終了する。そうでなければ、ＮＯと判定し、Ｓ５０１に遷移する。
【００９６】
＜学習処理＞
次に、学習装置１０２による学習処理について説明する。図７は学習処理のフローを示す図である。
【００９７】
この処理は、学習装置１０２の学習部１１３により実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を介して、所定の操作を行うことで開始される。なお、本実施例において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
【００９８】
まずＣＰＵ２３１は、Ｓ７０１において、ニューラルネットワークを初期化する。すなわち、ＣＰＵ２３１は、ニューラルネットワークを構築し、当該ニューラルネットワークに含まれる各パラメタの値を、ランダムに決定して初期化する。構築するニューラルネットワークの構造は、様々なものを用いることができるが、例えば、公知技術であるＦＣＮ（Ｆｕｌｌｙ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋｓ）の形態を取り得る。
【００９９】
ＣＰＵ２３１は、Ｓ７０２において、学習データを取得する。ＣＰＵ２３１は、図５のフローチャートに示した、学習データ生成処理を実行して、所定の数（ミニバッチサイズ、例えば１０）の学習データを取得する。
【０１００】
ＣＰＵ２３１は、Ｓ７０３において、ニューラルネットワークの誤差を算出する。すなわち、各学習データに含まれる入力画像をニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書きであると判定された画素は、画素の値が手書きを示す値、そうではないと判定された画素は、画素の値が手書きではないことを示す値である画像である。そして、当該出力と正解ラベル画像との差を評価して誤差を求める。当該評価には指標として交差エントロピーを用いることができる。
【０１０１】
ＣＰＵ２３１は、Ｓ７０４において、ニューラルネットワークのパラメタを調整する。すなわち、Ｓ７０３において算出した誤差をもとに、バックプロパゲーション法によってニューラルネットワークのパラメタ値を変更するものである。
【０１０２】
ＣＰＵ２３１は、Ｓ７０５において、学習を終了するか否かを判定する。これは次のようにして行う。ＣＰＵ２３１は、Ｓ７０２〜Ｓ７０４の処理を、所定回数（例えば、６００００回）行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザが操作入力するなどして決定することができる。所定回数行った場合には、ＹＥＳと判定し、Ｓ７０６に遷移する。そうでない場合は、Ｓ７０２に遷移し、ニューラルネットワークの学習を続ける。
【０１０３】
ＣＰＵ２３１は、Ｓ７０６において、学習結果として、Ｓ７０４において調整したニューラルネットワークのパラメタを、画像処理サーバ１０３に送信する。
【０１０４】
＜手書き除去依頼処理＞
次に、画像処理装置１０１による、手書き除去依頼処理について説明する。画像処理装置１０１は、手書きを含む原稿をスキャンする。そして、スキャン画像データを画像処理サーバ１０３に送信して、手書き除去を依頼する。図８（ａ）は手書き除去依頼処理のフローを示す図である。この処理は、画像処理装置１０１のＣＰＵ２０１が、ストレージ２０８に記録されているコントローラプログラムを読み出し、ＲＡＭ２０４に展開して実行することにより実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を介して、所定の操作を行うことで開始される。
【０１０５】
まずＣＰＵ２０１は、Ｓ８０１において、スキャナデバイス２０６や原稿搬送デバイス２０７を制御して、原稿をスキャンして処理対象画像を生成する。処理対象画像は、フルカラー（ＲＧＢ３チャネル）の画像データとして生成される。
【０１０６】
ＣＰＵ２０１は、Ｓ８０２において、Ｓ８０１で生成した手書き処理対象を、外部インタフェース２１１を介して、画像処理サーバ１０３に送信する。
【０１０７】
ＣＰＵ２０１は、Ｓ８０３において、画像処理サーバ１０３から、処理結果を受信したか否かを判定する。画像処理サーバ１０３から、外部インタフェース２１１を介して、処理結果を受信していた場合には、ＹＥＳと判定し、Ｓ８０４に遷移する。そうでない場合には、ＮＯと判定し、Ｓ８０３の処理ステップを繰り返す。
【０１０８】
ＣＰＵ２０１は、Ｓ８０４において、画像処理サーバ１０３から受信した処理結果、すなわち、Ｓ８０１で生成した処理対象画像から手書き除去された画像データを出力する。換言すると読取画像中の手書きのみが削除された画像データを出力する。なお出力方法として、プリンタデバイス２０５により手書きが除去された画像データを印刷することができる。あるいは、ユーザが、入力デバイス２０９を操作して設定した送信宛先に、外部インタフェース２１１を介して、手書きが除去された画像データを送信することができる。
【０１０９】
＜手書き除去処理＞
次に、画像処理サーバ１０３による手書き除去処理について説明する。画像処理サーバ１０３は、画像処理装置１０１から受信した処理対象画像に対して手書き除去処理を行う。図８（ｂ）は手書き除去処理のフローを示す図である。この処理は、ＣＰＵ２６１が、ストレージ２６５に記憶されている画像処理サーバプログラムを読み出し、ＲＡＭ２６４に展開して実行することで実現される。これは、ユーザが、画像処理サーバ１０３の電源をＯＮ（オン）にすると開始される。
【０１１０】
まずＣＰＵ２６１は、Ｓ８５１において、手書き抽出を行うニューラルネットワークをロードする。ＣＰＵ２６１は、図７のフローチャートのＳ７０１の場合と同一のニューラルネットワークを構築する。そして、図８のフローチャートのＳ７０６において、学習装置１０２から送信された学習結果（ニューラルネットワークのパラメタ）を、構築したニューラルネットワークに反映する。
【０１１１】
ＣＰＵ２６１は、Ｓ８５２において、処理対象となる処理対象画像を、画像処理装置１０１より受信したかを判定する。外部インタフェース２６８を介して、処理対象画像を受信していたならば、ＹＥＳと判定し、Ｓ８５３に遷移する。そうでなければ、ＮＯと判定し、Ｓ８５６に遷移する。
【０１１２】
ＣＰＵ２６１は、Ｓ８５３において、画像処理装置１０１から受信した処理対象画像から手書きの画素を抽出する。ＣＰＵ２６１は、処理対象画像をグレースケール化する。そして、このグレースケール化した処理対象画像を、Ｓ８５１で構築したニューラルネットワークに入力して、手書きの画素を推定させる。ニューラルネットワークの出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズであり、予測結果として手書きであると判定された画素には、手書きであること示す値、手書きではないと判定された画素には、手書きではないことを示す値が、それぞれ記録された画像データ。以降この画像データを「手書き抽出結果画像」と呼称する。
【０１１３】
ＣＰＵ２６１は、Ｓ８５４において、Ｓ８５３で得た手書き抽出結果画像に基づいて、処理対象画像から手書きを除去する。ＣＰＵ２６１は、処理対象画像の画素であって、手書き抽出結果画像において画素値が手書きを示す値である画素と同位置の画素を、白（ＲＧＢ＝（２５５，２５５，２５５））に変更する。
【０１１４】
ＣＰＵ２６１は、Ｓ８５５において、手書きを除去した処理対象画像を、外部インタフェース２６８を介して、画像処理装置１０１に送信する。
【０１１５】
ＣＰＵ２６１は、Ｓ８５６において、処理を終了するか否かを判定する。ユーザが、画像処理サーバ１０３の電源のＯＦＦなどの所定の操作を行った場合には、ＹＥＳと判定し、処理を終了する。そうでなければ、ＮＯと判定し、Ｓ８５２に遷移する。
【０１１６】
＜備考＞
以上、本実施例に示したとおり、手書きのみを含む画像データと印字内容のみを含む画像データとから、手書きと印刷内容が重ならないように合成して手書き抽出を行うニューラルネットワークを学習するための学習データを生成することができる。そしてこの学習データを用いてニューラルネットワークを学習し、当該学習の結果を用いて、スキャン画像データから手書きを抽出して除去することができる。
【０１１７】
なお、本実施例では、Ｓ３６０における処理対象画像の加工において、手書き文字の除去をおこなった。しかしながら、処理対象画像の加工は手書き文字の除去には限られない。例えば、画像２２０４のように手書き文字を強調するような加工を施してもよい。
【０１１８】
（実施例２）
本実施例では、学習データを画像合成により生成するための方法として、実施例１とは別の方法を採用するケースについて説明する。本実施例では、学習データ用の入力画像を合成する際に、画像処理装置１０１でスキャンした画像をベース画像として用いる。このような処理により実際のスキャン画像データと近しい画像を画像合成により生成することができる。実施例２の画像処理システムの構成は、特徴部分を除いて実施例１の画像処理システムの構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
【０１１９】
＜サンプル画像取得処理＞
本実施例における、画像処理装置１０１によるサンプル画像取得処理について説明する。図９（ａ）は実施例２におけるサンプル画像取得処理のフローを示す図である。この処理は、ＣＰＵ２０１が、ストレージ２０８に記録されているコントローラプログラムを読み出し、ＲＡＭ２０４に展開して実行することで実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を操作することにより開始される。
【０１２０】
Ｓ４０１〜Ｓ４０６の処理は、図４（ａ）のフローチャートにおける同符合の処理ステップと同様の処理ステップである。本実施例では、Ｓ４０４で、ＮＯと判定する場合には、Ｓ９０１に遷移する。
【０１２１】
ＣＰＵ２０１は、Ｓ９０１において、余白に用いる原稿のスキャン指示が成されたか否かを判定する。ユーザが、入力デバイス２０９を介して、余白に用いる原稿をスキャンする所定の操作を行った場合には、ＹＥＳと判定し、Ｓ９０２に遷移する。そうでなければ、ＮＯと判定し、Ｓ４０７に遷移する。
【０１２２】
ＣＰＵ２０１は、Ｓ９０２において、スキャナデバイス２０６や原稿搬送デバイス２０７を制御して、原稿をスキャンして画像データ（以降この画像データを「余白サンプル画像」と呼称する）を生成する。この原稿は、手書きも印刷内容も含まない用紙である。余白サンプル画像は、フルカラー（ＲＧＢ３チャンネル）の画像データとして生成される。
【０１２３】
ＣＰＵ２０１は、Ｓ９０３において、Ｓ９０２で生成した余白サンプル画像を、外部インタフェース２１１を介して、学習装置１０２に送信する。このとき、送信する画像データが、余白サンプル画像であることを示す情報を付与して送信する。
【０１２４】
Ｓ４０７の処理は、図４（ａ）のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１２５】
以上の処理によって、画像処理装置１０１は、前景サンプル画像および背景サンプル画像に加えて、余白サンプル画像を生成して学習装置１０２に送信する。ユーザの操作や、原稿搬送デバイス２０７に載置した原稿枚数に応じて、前景サンプル画像および背景サンプル画像、余白サンプル画像が、それぞれ複数取得される。
【０１２６】
＜サンプル画像受信処理＞
次に、本実施例における、学習装置１０２によるサンプル画像取受信処理について説明する。図９（ｂ）は実施例２におけるサンプル画像受信処理のフローを示す図である。この処理は、ＣＰＵ２３１が、ストレージ２３５に記録されている学習データ生成プログラムを読み出し、ＲＡＭ２３４に展開して実行することで実現される。これは、ユーザが、学習装置１０２の電源をＯＮ（オン）にすると開始される。
【０１２７】
Ｓ４５１〜Ｓ４５４の処理は、図４（ｂ）のフローチャートにおける同符合の処理ステップと同様の処理ステップである。本実施例では、Ｓ４５３で、ＮＯと判定する場合には、Ｓ９５１に遷移する。
【０１２８】
ＣＰＵ２３１は、Ｓ９５１において、余白サンプル画像を受信したか否かを判定する。ＣＰＵ２３１は、外部インタフェース２３８を介して画像データを受信し、かつ、当該画像データが余白サンプル画像であることを示す情報が付与されていたならば、ＹＥＳと判定し、Ｓ９５２に遷移する。そうでなければ、ＮＯと判定し、Ｓ４５５に遷移する。
【０１２９】
ＣＰＵ２３１は、Ｓ９５２において、受信した余白サンプル画像を、ストレージ２３５の所定の領域に保存する。
【０１３０】
＜学習データ生成処理＞
次に、本実施例における、学習装置１０２による学習データ生成処理について説明する。
【０１３１】
図１０は実施例２における学習データ生成処理のフローを示す図である。この処理は、学習装置１０２の学習データ生成部１１２により実現される。これは、ユーザが、学習装置１０２の入力デバイス２３６を介して、所定の操作を行うことで開始される。
【０１３２】
Ｓ５０１〜Ｓ５０４の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１３３】
ＣＰＵ２３１は、Ｓ１００１において、前景パッチの各画素の輝度を変更して加工する。ＣＰＵ２３１は、ガンマ補正を用いて前景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【０１３４】
Ｓ５０６〜Ｓ５０９の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１３５】
ＣＰＵ２３１は、Ｓ１００２において、背景パッチの各画素の輝度を変更して加工する。ＣＰＵ２３１は、ガンマ補正を用いて背景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【０１３６】
ＣＰＵ２３１は、Ｓ１００３において、ストレージ２３５に記憶している余白サンプル画像を選択して読み出す。図９のスロチャートのＳ９５２の処理ステップにより、ストレージ２３５には複数の余白サンプル画像が記録されているので、その中からランダムにひとつを選択する。
【０１３７】
ＣＰＵ２３１は、Ｓ１００４において、余白サンプル画像の一部（Ｓ５０３で前景パッチを切り出したときと同じ大きさ）を切り出した画像データを生成し、ベース画像とする。切り出す位置はランダムに決定する。
【０１３８】
Ｓ５１１〜Ｓ５１４の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１３９】
ＣＰＵ２３１は、Ｓ１００５において、学習データ用の入力画像を画像合成により生成する。ＣＰＵ２３１は、Ｓ１００４で生成したベース画像の、Ｓ５１２で決定した前景領域の位置に、Ｓ５１３で切り出した前景パッチの部分画像を貼り付けて合成する。また、ＣＰＵ２３１は、ベース画像の、Ｓ５１２で決定した背景領域の位置に、Ｓ５１４で切り出した背景パッチの部分画像を貼り付けて合成する。そして、画像合成により生成した画像をグレースケール化する。このようにして生成した画像を学習データ用の入力画像とする。
【０１４０】
ＣＰＵ２３１は、Ｓ１００６において、学習データ用の正解ラベル画像を画像合成により生成する。この処理ステップは、図５のフローチャートにおけるＳ５１６と同様の処理である。加えて、画像合成により生成した正解ラベル画像をグレースケール化する。
【０１４１】
Ｓ５１７とＳ５１８の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１４２】
＜備考＞
以上のように、ベース画像に、手書きも印刷内容も含まない用紙をスキャンして生成したスキャン画像データを用いることができる。これにより、画像合成により生成する学習データ用の入力画像を、より実際のスキャン画像データと近しいものとすることができる。
【０１４３】
なお、印刷内容を含む用紙に手書きを行う際には、白い余白でなくても書き込むことがある。例えば、薄いベタ塗の領域などへの書き込みが考える。こうした領域への手書きを抽出するために、Ｓ９０２においてスキャンする原稿は、白紙のみならず、薄いベタ塗が印刷された原稿や、色紙を用いることができる。この場合には、Ｓ１００５における、学習データ用の入力画像を合成する際に、前景パッチの部分画像の手書きではない画素を透過して、ベース画像に対してアルファ・ブレンディングして合成する。
【０１４４】
（実施例３）
本実施例では、学習データ用の画像を画像合成により生成するための方法として、実施例１、２とは別の方法を採用するケースについて説明する。本実施例では、背景サンプル画像より余白を検出し、当該余白箇所に前景パッチを合成する。このような処理により、余白に手書き文字が書き込まれた状態に近しい学習データ用の画像を画像合成により生成することができる。実施例３の画像処理システムの構成は、特徴部分を除いて実施例１、２の画像処理システムの構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
【０１４５】
＜学習データ生成処理＞
本実施例における、学習装置１０２による学習データ生成処理について説明する。実施例３における学習データ生成処理のフローを示す図である。この処理は、学習装置１０２の学習データ生成部１１２により実現される。これは、ユーザが、学習装置１０２の入力デバイス２３６を介して、所定の操作を行うことで開始される。
【０１４６】
まずＣＰＵ２３１は、Ｓ１１０１において、画像合成により生成する画像データの構成を決定する。これは図５のフローチャートのＳ５１２の処理ステップと同様の処理であるが、本実施例においては、背景に対する前景の方向は、上、右、下、左、の４方向からランダムに選択して決定する。画像合成により生成する画像データの構成は、図６（ａ）、図６（ｃ）、図６（ｅ）、図（ｇ）のように決定される。
【０１４７】
Ｓ５０６の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１４８】
ＣＰＵ２３１は、Ｓ１１０２において、選択して読み出した背景サンプル画像から、部分領域を抽出する。部分領域とは、印刷内容のまとまり（オブジェクト）であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、あるいは、図や写真、表、グラフ、といったオブジェクトである。この部分領域の抽出方法として、例えば次のような手法を取り得る。背景サンプル画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分（連結黒画素）を抽出し、これに外接する矩形を作成していく。当該矩形の形状や大きさを評価することで、文字ないし文字の一部である矩形群を得ることができる。これら矩形群について、矩形間の距離を評価し、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得ることができる。同様の大きさの文字の矩形が近くに並んでいる場合には、それらを統合して文字行の矩形群を得ることができる。短辺長が同様の文字行の矩形が等間隔に並んでいる場合は、それらを統合して文章の矩形群を得ることができる。また、図や写真、表、グラフなど、文字や行、文章以外のオブジェクトを内包する矩形も得ることができる。以上で抽出した矩形から、単独の文字あるいは文字の一部である矩形を除外する。残った矩形を部分領域とする。図１８に、背景サンプル画像から部分領域を抽出した結果の一例を示す。図１８は背景サンプル画像から抽出した背景部分領域の例を示す図である。部分領域を破線で示す。以降、本処理ステップにおいて、背景サンプル画像から抽出した部分領域を「背景部分領域」と呼称する。本処理ステップでは、背景サンプル画像から複数の背景部分領域を抽出し得る。
【０１４９】
ＣＰＵ２３１は、Ｓ１１０３において、Ｓ１１０２で抽出した背景部分領域の中から、ランダムにひとつを選択する。
【０１５０】
ＣＰＵ２３１は、Ｓ１１０４において、Ｓ１１０３で選択した背景部分領域が、Ｓ１１０１で決定した位置関係を満たす余白に隣接しているかを判定する。ここで余白とは、背景サンプル画像の画素であって、いずれの背景部分領域にも属さない画素の集合である。本処理ステップでは、当該背景部分領域の一部または全部を合成して生成する画像の背景領域とする場合に、近傍に前景を合成することができる余白が存在するかを判定するものである。例えば、Ｓ１１０１において、背景に対する前景の方向を、左と決定していた場合には、次のように判定する。当該背景部分領域の左端と背景サンプル画像の左端との距離（画素数）が、画像合成により生成する画像における前景領域の幅と余白領域の幅を加算した値よりも大きいこと。かつ、当該背景部分領域の左端から前景領域の幅と余白領域の幅を加算した値までの距離の間に、他の背景部分領域や、Ｓ１１０２で抽出した単体の文字や文字の一部であった矩形が存在しないこと。図１９を用いて例示する。図１９（ａ）は背景部分領域を説明するための図である。図１９（ｂ）は生成される入力画像の構成を示す図である。図１９（ｃ）は生成される入力画像の構成を示す図である。
【０１５１】
そして、Ｓ１１０３において、背景部分領域１９０１を選択したものとする。背景部分領域１９０１の左端から背景サンプル画像の左端までの距離を、図示のようにｄ１とする。また、Ｓ１１０１において、合成する画像の構成を図１９（ｂ）のように決定したとする（前景領域１９１１、余白領域１９１２、背景領域１９１３）。図示のように、前景領域１９１１の幅をｄ３、余白領域１９１２の幅をｄ４とする。そして、図示のように、背景部分領域１９０１の左端からｄ３＋ｄ４の距離の間には、他の背景部分領域や、単体の文字や文字の一部である矩形は存在しない。このとき、ｄ１≧ｄ３＋ｄ４であれば、背景部分領域１９０１はＳ１１０１で決定した位置関係を満たす余白に隣接していると判定され、ｄ１＜ｄ３＋ｄ４ならば、否と判定される。Ｓ１１０１において決定した背景に対する前景の方向が上や右、下の場合についても、同様に判定する。なお、例えば、Ｓ１１０１において、背景に対する前景の方向を、右と決定していた場合であり、かつ合成する画像の構成を図１９（ｃ）のように決定していたとする（前景領域１９２１、余白領域１９２２、背景領域１９２３）。背景部分領域１９０１の右端から、背景サンプル画像の右端までの距離ｄ２に対して、前景領域の幅ｄ５と余白領域の幅ｄ６は、ｄ２＞ｄ５＋ｄ６を満たすものとする。しかし、背景部分領域１９０１の右端からｄ５＋ｄ６までの距離の間に、背景部分領域１９０２が存在する。よってこの場合は、Ｓ１１０３で選択した背景部分領域はＳ１１０１で決定した位置関係を満たす余白に隣接していないと判定する。以上説明したように、Ｓ１１０３で選択した背景部分領域が、Ｓ１１０１で決定した位置関係を満たす余白に隣接していれば、ＹＥＳと判定し、Ｓ５０１に遷移する。そうでなければ、ＮＯと判定し、Ｓ１１０５に遷移する。
【０１５２】
ＣＰＵ２３１は、Ｓ１１０５において、Ｓ５０６で選択した背景サンプル画像について、Ｓ１１０２で抽出した全ての背景部分領域に対して、Ｓ１１０４の判定を行ったか否かを判定する。行っていた場合、ＹＥＳと判定し、Ｓ１１０６に遷移する。これはすなわち、現在選択している背景サンプル画像から抽出される背景部分領域には、Ｓ１１０１で決定した位置関係を満たすものがない場合である。そうでない場合は、ＮＯと判定し、Ｓ１１０３に遷移する。これはすなわち、現在選択している背景部分領域は、Ｓ１１０１で決定した位置関係を満たさないため、Ｓ１１０３に戻って、別の背景部分領域を選択するものである。以降、Ｓ１１０４においてＹＥＳと判定するか、Ｓ１１０１で再度、画像合成により生成する画像データの構成を決定しなおすまで、再度Ｓ１１０３の処理ステップを実行する際には、以前に選択した背景部分領域は選択しない。
【０１５３】
ＣＰＵ２３１は、Ｓ１１０６において、ストレージ２３５に記憶している全ての背景サンプル画像について、Ｓ１１０４の判定を行ったか否かを判定する。行っていた場合には、ＹＥＳと判定し、Ｓ１１０１に遷移する。これはすなわち、ストレージ２３５に記憶している全ての背景サンプル画像は、Ｓ１１０１で決定した位置関係を満たす背景部分領域を含まないため、Ｓ１１０１に戻って位置関係を決定しなおすものである。そうでない場合は、ＮＯと判定し、Ｓ５０６に戻る。これはすなわち、現在選択している背景サンプル画像は、Ｓ１１０１で決定した位置関係を満たす背景部分領域を含まないため、ステップ５０６に戻って、別の背景サンプル画像を選択するものである。以降、Ｓ１１０４においてＹＥＳと判定するか、Ｓ１１０１で再度、画像合成により生成する画像データの構成を決定しなおすまで、再度Ｓ５０６の処理ステップを実行する際には、以前に選択した背景サンプル画像は選択しない。
【０１５４】
Ｓ５０１の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１５５】
ＣＰＵ２３１は、Ｓ１１０７において、選択して読み出した前景サンプル画像から、部分領域を抽出する。Ｓ１１０２の処理と同様に、連結黒画素とその外接矩形を抽出して評価することで、手書きの文や図形を内包する部分領域を抽出する。以降、本処理ステップにおいて、前景サンプル画像から抽出した部分領域を「前景部分領域」と呼称する。
【０１５６】
ＣＰＵ２３１は、Ｓ１１０８において、Ｓ１１０７で抽出した前景部分領域の中から、ランダムにひとつを選択する。
【０１５７】
ＣＰＵ２３１は、Ｓ１１０９において、Ｓ１１０８で選択した前景部分領域から、Ｓ１１０１で決定した前景領域に該当する部分画像を切り出す。ここで、Ｓ１１０１で、背景に対する前景の方向を上と決定していた場合には、前景部分領域の下端から前景領域の形状・面積に相当する領域を切り出す。背景に対する前景の方向が右ならば、前景部分領域の左端から前景領域の形状・面積に相当する領域を切り出す。背景に対する前景の方向が下ならば、前景部分領域の上端から前景領域の形状・面積に相当する領域を切り出す。背景に対する前景の方向が左ならば、前景部分領域の右端から前景領域の形状・面積に相当する領域を切り出す。
【０１５８】
ＣＰＵ２３１は、Ｓ１１１０において、背景サンプル画像上であり、Ｓ１１０３で選択した背景部分領域に隣接する余白の、Ｓ１１０１で決定した位置に、Ｓ１１０９で切り出した前景領域を合成する。
【０１５９】
ＣＰＵ２３１は、Ｓ１１１１において、Ｓ１１０１で決定した構成を満たすよう、Ｓ１１０３で合成した前景領域を含む、背景サンプル画像上の部分領域を切り出し、学習データ用の入力画像とする。
【０１６０】
ＣＰＵ２３１は、Ｓ１１１２において、Ｓ１１１１で生成した入力画像を回転して加工する。回転角度は所定の範囲（例えば−１０度〜１０度の間）からランダムに選択して決定する。
【０１６１】
ＣＰＵ２３１は、Ｓ１１１３において、入力画像を変倍して加工する。変倍率は所定の範囲（例えば、５０％〜１５０％の間）からランダムに選択して決定する。さらに、変倍後の入力画像の一部（例えば縦ｘ横＝２５６ｘ２５６の大きさ）を中央から切り出して入力画像を更新する。なお、Ｓ１１１１において入力画像を切り出す際には、本処理ステップで切り出して更新する大きさの倍の大きさ（例えば縦ｘ横＝５１２ｘ５１２画素）で切り出すものとする。よって、本実施例におけるＳ１１０１の処理ステップで決定する画像合成により生成する画像データの構成は、当該倍の大きさを前提とする。
【０１６２】
ＣＰＵ２３１は、Ｓ１１１４において、入力画像の各画素の輝度を変更して加工する。ＣＰＵ２３１は、入力画像をグレースケール化し、そしてガンマ補正を用いて前景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【０１６３】
ＣＰＵ２３１は、Ｓ１１１５において、入力画像に対する正解ラベル画像を生成する。ＣＰＵ２３１は、入力画像を、二値化して、予め定めた閾値よりも低い値である画素の値を、手書きを示す値とし、他の画素の値を、手書きではないことを示す値とした正解ラベル画像を生成する。ＣＰＵ２３１は、入力画像を、Ｓ１１１２で回転し、Ｓ１１１３で変倍したが、そのときの回転角度と変倍率とから、回転後かつ変倍後の入力画像中における前景領域に該当する領域を算出する。そしてこれを用いて、当該領域に該当しない正解ラベル画像の画素を全て、手書きではないことを示す値に変更する。
【０１６４】
Ｓ５１７とＳ５１８の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１６５】
＜備考＞
以上、本実施例に示したとおり、背景サンプル画像から余白である領域を抽出し、当該領域に前景サンプル画像の部分画像を合成した。実際に、余白に手書きが書き込まれた状態に近しい学習データ用の画像を画像合成により生成し、手書き抽出を行うニューラルネットワークを学習するための学習データを生成することができる。
【０１６６】
（実施例４）
本実施例では、学習データ用の画像を画像合成により生成する別の方法として、実施例１〜３とは別の方法を採用するケースについて説明する。本実施例では、帳票に記入された手書き文字を抽出するのに好ましい学習データ用の画像を画像合成により生成する。具体的には、未記入の帳票である背景サンプル画像より、記入欄内の余白を検出し、当該箇所に前景パッチを合成する。実施例４の画像処理システムの構成は、特徴部分を除いて実施例１〜３の画像処理システムの構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
【０１６７】
＜帳票画像＞
背景サンプル画像生成処理は、実施例１で図４（ａ）を用いて説明したとおりであるが、本実施例において、Ｓ４０５で背景サンプル画像を生成する際には、申し込み用紙などの帳票であって未記入のものをスキャンするものとする。未知の形式の帳票原稿に対応できるよう、様々な種類の帳票原稿をスキャンすることが望ましい。
【０１６８】
多数の種類の帳票をスキャンして背景サンプル画像を生成する。帳票の一例を、図１２に示す。図１２は背景サンプル画像生成処理の概要を示す図である。帳票１２００には、手書き文字の記入欄として、氏名を記入する氏名記入欄１２０１と、住所を記入する住所記入欄１２０２、電話番号を記入する電話番号記入欄１２０３がある。また、これら記入欄に対する見出しとして、氏名見出し１２０４（「氏名」）、住所見出し１２０５（「住所」）、電話番号見出し１２０６（「電話番号」）がある。また、Ｓ４０２で前景サンプル画像を生成する際には、帳票の記入欄に記入され得る内容を想定し、一行ないし二行程度の手書き文が記入された用紙をスキャンするものとする。
【０１６９】
＜学習データ生成処理＞
本実施例における、学習装置１０２による学習データ生成処理について説明する。図１３は実施例４における学習データ生成処理のフローを示す図である。この処理は、学習装置１０２の学習データ生成部１１２により実現される。これは、ユーザが、学習装置１０２の入力デバイス２３６を介して、所定の操作を行うことで開始される。
【０１７０】
Ｓ５０１の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１７１】
Ｓ１１０７とＳ１１０８、Ｓ１１０９の処理は、図１１のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１７２】
Ｓ５０６の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１７３】
ＣＰＵ２３１は、Ｓ１３０１において、選択して読み出した背景サンプル画像から、背景部分領域を抽出する。本実施例における背景部分領域は、帳票における未記入の記入欄とする。背景部分領域として記入欄を抽出する方法として、例えば次のような手法を取り得る。背景サンプル画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分（連結黒画素）を抽出する。抽出した連結黒画素魂の中から、所定の閾値（例えば５０画素）よりも長く、所定の閾値（例えば５画素）よりも細い画素魂を、罫線として抽出する。この際、画像上下端に対して概ね平行であること、あるいは、画像左右端に対して概ね平行であることを、罫線の抽出条件として加味してもよい。４本の罫線に囲まれた領域であって、当該４本の罫線を含み、内部に他の連結黒画素魂を有しない領域を、背景部分領域（記入欄）として抽出する。この処理によりひとつ以上の背景部分領域が抽出され得る。
【０１７４】
ＣＰＵ２３１は、Ｓ１３０２において、Ｓ１３０１で抽出した背景部分領域の中から、ランダムにひとつを選択する。
【０１７５】
ＣＰＵ２３１は、Ｓ１３０３において、背景サンプル画像の各画素の輝度を変更して加工する。ＣＰＵ２３１は、背景サンプル画像をグレースケール化し、そしてガンマ補正を用いて前景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【０１７６】
ＣＰＵ２３１は、Ｓ１３０４において、前景パッチを変倍して加工する。変倍率は、例えば次のようにして決定する。Ｓ１３０２で選択した背景部分領域の幅に対する前景パッチの幅の比率ＲＷと、背景パッチの高さに対する前景パッチの高さの比率ＲＨを求める。ＲＷとＲＨのうち、値の大きな方を比率Ｒ１として採用する。一方、変倍後の前景パッチと背景パッチの幅（Ｒ１にＲＷを採用した場合）あるいは高さ（Ｒ１にＲＨを採用した場合）の比率を所定の範囲（例えば、０．５〜０．９５）からランダムに選択して決定する（この比率をＲ２とする）。そして、変倍率をＲ２／Ｒ１とする。
【０１７７】
ＣＰＵ２３１は、Ｓ１３０５において、前景パッチの各画素の輝度を変更して加工する。ＣＰＵ２３１は、前景パッチをグレースケール化し、そしてガンマ補正を用いて前景パッチの輝度を変更する。ガンマ値は所定の範囲（例えば、０．１〜１０．０の間）からランダムに選択して決定する。
【０１７８】
ＣＰＵ２３１は、Ｓ１３０６において、背景サンプル画像の選択した背景部分領域内に、前景パッチを合成する。合成する位置は、前景パッチが背景部分領域内に収まる範囲内で、ランダムに決定して合成する。
【０１７９】
ＣＰＵ２３１は、Ｓ１３０７において、前景パッチを合成した背景部分領域を含む部分領域を切り出して入力画像を生成する。切り出す位置は、以下のように決定する。入力画像に、背景部分領域の４本の罫線のうちの少なくともひとつを含む。入力画像に合成した前景パッチを所定の割合以上含む（例えば面積で２５％以上）。以上の条件を満たす範囲内で、ランダムに決定する。なお、帳票の記入欄は、一般に横長の長方形状である場合が多い。よって、割合として、記入領域の左右端の罫線が含まれないことが多くなり得る。なので、明示的に左右端の罫線を含むように切り出す位置を決定してもよい。
【０１８０】
ＣＰＵ２３１は、Ｓ１３０８において、正解ラベル画像を生成する。ＣＰＵ２３１は、Ｓ１３０７で生成した入力画像の全体を二値化して正解ラベル画像を得る。そして、Ｓ１３０６において、背景部分領域に前景パッチを合成した位置、および、Ｓ１３０７で入力画像を切り出した位置、とから、入力画像中のどの領域が元の前景パッチであったかを算出する。正解ラベル画像における、算出した領域以外の領域の画素値を、手書きを示さないことを示す値に変更する。以上により正解ラベル画像を得る。
【０１８１】
ＣＰＵ２３１は、Ｓ１３０９において、入力画像および正解ラベル画像を回転して加工する。回転角度は、入力画像と正解ラベル画像とで同一とし、所定の範囲（例えば−５度〜５度の間）からランダムに選択して決定する。
【０１８２】
ＣＰＵ２３１は、Ｓ１３１０において、入力画像と正解ラベル画像を、変倍して加工する。変倍率は、入力画像と正解ラベル画像とで同一とし、所定の範囲（例えば、９０％〜１１０％の間）からランダムに選択して決定する。さらに、変倍後の前景パッチの一部（例えば縦ｘ横＝２５６ｘ２５６の大きさ）を切り出して前景パッチを更新する。このとき、元の前景サンプル画像の領域と、元の背景サンプル画像の領域と罫線とが含まれるように切り出し位置を決定する。
【０１８３】
Ｓ５１７とＳ５１８の処理は、図５のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０１８４】
＜備考＞
以上、本実施例に示したとおり、背景サンプル画像から、帳票の記入欄に相当する余白である領域を抽出し、当該領域に前景サンプル画像の部分画像を合成した。これにより、手書きと印刷内容が重ならないように合成して、手書き抽出を行うニューラルネットワークを学習するための学習データを生成することができる。
【０１８５】
（実施例５）
本実施例では、手書き認識結果の利用方法として、実施例１とは異なる方法を採用するケースについて説明する。本実施例では、手書き認識結果の利用方法として、処理対象画像から有益な情報の抽出を行う。具体的には、データの検索等に活用できるように、活字と手書き文字とを含む原稿からテキスト情報を抽出する処理（ＯＣＲ処理）を施す。特に、本実施例では、手書き文字画像と活字画像を分けることでＯＣＲ処理の精度を向上させている。また、本実施例では複数ページを備えるドキュメントのうち、どのページに手書き文字が含まれているか等のページ構成情報を取得するための処理を施す。上述のように検索可能なデータをサーチャブルデータと呼称する。ここでは、サーチャブルデータと例として、サーチャブルＰＤＦと帳票データを例に挙げる。なお、実施例５の画像処理システムの構成は、特徴部分を除いて実施例１〜４の画像処理システムの構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
【０１８６】
＜画像処理システム＞
本実施例では、画像処理システムに新たな装置が追加される。図１６（ａ）は実施例５における画像処理システムの構成を示す図である。画像処理システム１６００は、画像処理装置１０１、学習装置１０２、画像処理サーバ１０３、に加え、ＯＣＲサーバ１６０４を備える。
【０１８７】
画像処理装置１０１、学習装置１０２、画像処理サーバ１０３については、図１を用いて説明したとおりである。ＯＣＲサーバ１６０４は、活字ＯＣＲ部１６１７、手書きＯＣＲ部１６１６としての機能を備える。
【０１８８】
手書きＯＣＲ部１６１６は、処理対象画像に含まれる手書き文字に対してＯＣＲを行うことができる。手書きＯＣＲ部１６１６は、画像処理サーバ１０３より、処理対象画像と、処理対象画像上の領域であってＯＣＲの対象とする手書き文字を含む領域（以降この領域を「手書きＯＣＲ対象領域」と呼称する）の情報を受信する。そして、スキャン画像中の手書きＯＣＲ対象領域に対してＯＣＲ処理を行ってテキストデータを取得する。手書きＯＣＲ部１６１６は当該テキストデータを画像処理サーバ１０３に送信する。
【０１８９】
活字ＯＣＲ部１６１７は、処理対象画像に含まれる活字に対してＯＣＲ（光学文字認識）を行うことができる。活字ＯＣＲ部１６１７は、画像処理サーバ１０３より、処理対象画像と、処理対象画像上の領域であってＯＣＲの対象とする活字を含む領域（以降この領域を「活字ＯＣＲ対象領域」と呼称する）の情報を受信する。そして、処理対象画像中の活字ＯＣＲ対象領域に対してＯＣＲを行ってテキストデータを取得する。当該テキストデータを画像処理サーバ１０３に送信する。
【０１９０】
＜利用シーケンス＞
本システムにおける利用シーケンスについて説明する。図１６（ｂ）は実施例６における画像処理システムの利用シーケンスを示した図である。
【０１９１】
Ｓ１６５１において、オペレータが処理対象画像の読取指示を行うと、画像取得部１１１は、処理対象画像を読みとり、この画像に処理対象フラグを付与する（Ｓ１６５２）。ここで読み取られる画像は、例えば図２３（ａ）に示すような画像群である。図２３（ａ）に示す画像群は１１ページ目の画像に手書き文字２３０１を含んでいる。あるいは、図２４に示すような帳票原稿２４００である。帳票原稿２４００は氏名記入欄１２０１や住所記入欄１２０２、電話番号記入欄１２０３を備え、それぞれ、氏名や住所、電話番号が手書きで記入されている。
【０１９２】
また、Ｓ１６５３において、オペレータがサーチャブルデータの作成指示（変換指示）をおこなうと、画像取得部１１１は、サーチャブルデータの作成指示情報を取得する（Ｓ１６５４）。
【０１９３】
上述のように読み取られた処理対象画像は、指示情報とともに画像変換部１１４に送信される（Ｓ１６５５）。なお、このとき、送信データにＩＤ情報を付与するとよい。
【０１９４】
データを受信すると、画像変換部１１４は、手書き文字の加工指示を受け付ける（Ｓ１６５６）。このとき、画像変換部１１４は、画像取得部１１１をデータの返信先として記憶する。手書き文字の加工指示を受け付けた画像変換部１１４は、最新の学習モデルを学習部１１３に要求する（Ｓ１６５７）。これに応じて、学習部１１３は最新の学習モデルを画像変換部１１４に送信する。画像変換部１１４からの要求時にＩＤ情報が指定されていた場合は、ＩＤ情報に対応する学習モデルを送信する（Ｓ１６５８）。画像変換部１１４は、取得した学習モデルに基づいて、変換元画像から手書き文字の抽出処理（識別処理）をおこなう（Ｓ１６５９）。そして、抽出処理によって生成された、手書き文字のみを含む手書き画像を、手書きＯＣＲ部１６１６に送信する。手書きＯＣＲ部１６１６は、手書き画像に手書きＯＣＲ処理を施し、テキストデータ（手書き）を取得する（Ｓ１６６１）。手書きＯＣＲ部１６１６は、取得したテキストデータ（手書き）を画像変換部１１４に送信する（Ｓ１６６２）。続けて、画像変換部１１４は処理対象画像から手書き文字を除去した活字画像を生成する（Ｓ１６６３）。そして、活字ＯＣＲ部１６１７に活字画像を送信する（Ｓ１６６４）。活字画像を取得した活字ＯＣＲ部１６１７は、活字画像に活字ＯＣＲ処理を施し、テキストデータ（活字）を取得する（Ｓ１６６５）。そして、取得したテキストデータ（活字）を画像変換部１１４に送信する（Ｓ１６６６）。その後、画像変換部１１４は、テキストデータ（手書き）、テキストデータ（活字）に少なくとも基づいてサーチャブルデータを生成する（Ｓ１６６７）。画像変換部１１４は、サーチャブルデータを画像取得部１１１に送信する（Ｓ１６６８）。サーチャブルＰＤＦデータを取得した画像取得部１１１は、サーチャブルデータの利用画面をオペレータに提示する（Ｓ１６６９）。
【０１９５】
＜操作画面＞
次に、本実施例に登場するサーチャブルデータの利用方法について説明する。図２３（ｂ）はサーチャブルＰＤＦの操作画面を示す図である。
【０１９６】
サーチャブルＰＤＦの取得処理が完了すると、画像処理装置１０１が備える表示デバイス２１０には、操作画面２３００が表示される。なお、サーチャブルＰＤＦを蓄積しておき、リスト画面（不図示）から指定された際に、この画面を表示してもよい。操作画面は、詳細情報領域２３０２、プレビュー領域２３０３、入力欄２３０４、検索ボタン２３０５を備える。
【０１９７】
詳細情報領域２３０２は、文書名、ページ数、部数、ユーザ名等のＰＤＦファイルの詳細情報が表示される欄である。本実施例では、ページ構成情報の抽出もおこなっているため、手書き文字がどのページに含まれているかを示す情報である「手書き有ページ」の項目も表示されている。
【０１９８】
プレビュー領域２３０３は、ＰＤＦデータのプレビュー画像が表示される領域である。
【０１９９】
入力欄２３０４は、ユーザ操作により任意に文字を入力可能な欄である。文字入力はソフトウェアキーボード（不図示）や、外付けのハードウェアキーボード等によって行われる。
【０２００】
検索ボタン２３０５は、ＰＤＦデータ内の文字検索を開始するためのボタンである。入力欄２３０４に「分かりやすい表現」が入力された状態で検索ボタン２３０５が選択されると、プレビュー領域２３０３にはｐ．１１のプレビュー画像が表示される。このプレビュー画像では、手書き文字２３０１がハイライト（例えば赤枠等で強調）されている。このようなハイライト処理は、画像中の座標情報（ｘ属性およびｙ属性、ｗｉｄｔｈ属性、ｈｅｉｇｈｔ属性の）にＯＣＲで得られたテキストデータを紐づけておくことで実現される。
【０２０１】
＜データ生成依頼処理＞
次に、画像処理装置１０１による、データ生成依頼処理について説明する。図１７（ａ）はデータ生成依頼処理のフローを示す図である。この処理は、画像処理装置１０１のＣＰＵ２０１が、ストレージ２０８に記録されているコントローラプログラムを読み出し、ＲＡＭ２０４に展開して実行することにより実現される。これは、ユーザが、画像処理装置１０１の入力デバイス２０９を介して、所定の操作を行うことで開始される。
【０２０２】
Ｓ８０１とＳ８０２の処理は、図８のフローチャートにおける同符合の処理ステップと同様の処理ステップである。本実施例では、処理対象画像の送信にともない、サーチャブルデータ生成処理の依頼情報が付与される。依頼情報として、サーチャブルＰＤＦの作成依頼または帳票データの作成依頼が挙げられる。
【０２０３】
＜データ生成処理＞
次に、画像処理サーバ１０３によるＯＣＲ処理について説明する。図１７（ｂ）はデータ生成依頼処理のフローを示す図である。画像変換部１１４として機能する画像処理サーバ１０３は、画像処理装置１０１から処理対象画像を受信し、当該スキャン画像データに含まれる活字や手書き文字をＯＣＲしてテキストデータを得る。活字に対するＯＣＲは、活字ＯＣＲ部１６１７に実行させる。手書き文字に対するＯＣＲは、手書きＯＣＲ部１６１６に実行させる。図１７（ｂ）は、このＯＣＲ処理のフローチャートである。この処理は、ＣＰＵ２６１が、ストレージ２６５に記憶されている画像処理サーバプログラムを読み出し、ＲＡＭ２６４に展開して実行することで実現される。これは、ユーザが、画像処理サーバ１０３の電源をＯＮ（オン）にすると開始される。
【０２０４】
Ｓ８５１とＳ８５２、Ｓ８５３の処理は、図８のフローチャートにおける同符合の処理ステップと同様の処理ステップである。
【０２０５】
ＣＰＵ２６１は、Ｓ１７５１において、処理対象画像から手書きＯＣＲ対象領域を抽出する。ＣＰＵ２６１は、Ｓ８５３で得た手書き抽出結果画像に対して、図１１に示したフローチャートのＳ１１０７の処理と同様に、手書きであることを示す画素が連結する部分とその外接矩形を抽出して評価する。これにより、手書きの文字を内包する部分領域を抽出する。手書き抽出結果画像における当該部分領域の位置およびサイズに該当する、処理対象画像上の領域を手書きＯＣＲ対象領域とする。
【０２０６】
ＣＰＵ２６１は、Ｓ１７５２において、Ｓ１７５１で抽出した手書きＯＣＲ対象領域と処理対象画像とを、外部インタフェース２６８を介して、手書きＯＣＲ部１６１６に送信し、手書きＯＣＲを実行させる。手書きＯＣＲには公知の技術を適用し実現することができる。
【０２０７】
ＣＰＵ２６１は、Ｓ１７５３において、手書きＯＣＲ部１６１６から、手書きＯＣＲ結果を受信したか否かを判定する。手書きＯＣＲ結果とは、手書きＯＣＲ部１６１６が、手書きＯＣＲ対象領域に含まれていた手書き文字を認識して得たテキストデータである。外部インタフェース２６８を介して、手書きＯＣＲ部１６１６から、手書きＯＣＲ結果を受信していたならば、ＹＥＳと判定し、Ｓ１７５４に遷移する。そうでなければ、Ｓ１７５３の処理を繰り返す。
【０２０８】
ＣＰＵ２６１は、Ｓ１７５４において、処理対象画像から活字ＯＣＲ対象領域を抽出する。ＣＰＵ２６１は、処理対象画像に対して、図１１のフローチャートのＳ１１０２の処理と同様に、連結黒画素とその外接矩形を抽出して評価することで、活字を内包する部分領域を抽出する。このとき、Ｓ１７５１で抽出した手書きＯＣＲ対象領域を、処理対象画像から除外する。
【０２０９】
ＣＰＵ２６１は、Ｓ１７５５において、Ｓ１７５４で抽出した活字ＯＣＲ対象領域と処理対象画像とを、外部インタフェース２６８を介して、活字ＯＣＲ部１６１７に送信し、活字ＯＣＲを実行させる。活字ＯＣＲには公知の技術を適用し実現することができる。
【０２１０】
ＣＰＵ２６１は、Ｓ１７５６において、活字ＯＣＲ部１６１７から、活字ＯＣＲ結果を受信したか否かを判定する。活字ＯＣＲ結果とは、活字ＯＣＲ部１６１７が、活字ＯＣＲ対象領域に含まれていた活字を認識して得たテキストデータである。外部インタフェース２６８を介して、活字ＯＣＲ部１６１７から、活字ＯＣＲ結果を受信していたならば、ＹＥＳと判定し、Ｓ１７５７に遷移する。そうでなければ、Ｓ１７５６の処理を繰り返す。
【０２１１】
ＣＰＵ２６１は、Ｓ１７５６において、依頼内容の判定を行う。依頼内容がサーチャブルＰＤＦの生成である場合、ＣＰＵ２６１はＳ１７５８へと処理を進める。依頼内容が帳票データの生成である場合、ＣＰＵ２６１はＳ１７６０へと処理を進める。サーチャブルＰＤＦの生成処理および、帳票データの生成処理について、それぞれ詳細に説明する。
【０２１２】
＜サーチャブルＰＤＦ生成処理＞
次に、画像処理サーバ１０３によるサーチャブルＰＤＦ生成処理について説明する。図１５（ａ）（ｂ）は手書き検出結果情報を示す図である。操作画面２１００において、ボタン２１０４が選択された場合、サーチャブルＰＤＦ生成処理が依頼される。サーチャブルＰＤＦ生成処理は、例えば、図２３（ｂ）のように手書き文字を含む複数ページの原稿を読みとる際に依頼される。
【０２１３】
依頼内容がサーチャブルＰＤＦ生成処理であった場合、ＣＰＵ２６１は、Ｓ１７５８においてページ構成情報を生成するための処理を行う。ＣＰＵ２６１は、ページ構成情報の一つとして、手書き文字の検出処理をおこなう。この処理において、ＣＰＵ２６１は、手書き抽出結果画像において、手書きと予測した画素が連結する部分を抽出する。そして、これに外接する矩形を作成し、当該矩形の形状や大きさ、矩形間の距離を評価する。これにより、手書きの単語や文などの、ひとまとまりの手書き画素の集合を内包する矩形を得ることができる。当該矩形を手書きの領域とする。ＣＰＵ２６１は、手書き検出結果情報を示すＸＭＬデータを生成し、取得した手書きの領域の数だけ＜ｈａｎｄｗｒｉｔｉｎｇ＞タグを挿入する。各々の＜ｈａｎｄｗｒｉｔｉｎｇ＞タグには、ｘ属性およびｙ属性を追加し、該当する手書きの領域の始点位置のｘ座標およびｙ座標の値を記録する。また、ｗｉｄｔｈ属性およびｈｅｉｇｈｔ属性を追加し、該当する手書き領域の幅の画素数および高さの画素数を記録する。その様子を図１５（ａ）に示す。手書き抽出結果画像に手書き画素が含まれない場合は、手書きの領域は取得されず、手書き検出結果情報に＜ｈａｎｄｗｒｉｔｉｎｇ＞タグは挿入しない。その様子を図１５（ｂ）に示す。以上のようにして、ＣＰＵ２６１は手書き文字を検出し、ページ構成情報に加える。
【０２１４】
ＣＰＵ２６１は、Ｓ１７５８において、処理対象画像、ＯＣＲ結果（手書き、活字）、ページ構成情報を統合し、サーチャブルＰＤＦを生成する。生成されたサーチャブルＰＤＦは、Ｓ１７６１において、画像取得部１１１に送信される。
【０２１５】
＜帳票データ生成処理＞
次に、帳票データ生成処理について詳細に説明する。操作画面２１００において、ボタン２１０３が選択された場合、帳票データ生成処理が依頼される。帳票データ生成処理は、例えば、図２４のように、手書き文字が記入された帳票原稿２４００を読み取る際に依頼される。この場合、Ｓ１６５９では手書き抽出画像２４１０が生成され、Ｓ１６６３では手書き除去画像２４２０が生成される。すなわち、氏名記入欄１２０１と住所記入欄１２０２、電話番号記入欄１２０３に記入された手書き文字を包含する領域が、それぞれ手書きＯＣＲ対象領域として抽出されている。また、氏名見出し１２０４と住所見出し１２０５、電話番号見出し１２０６内に印字された活字を包含する領域が、それぞれ活字ＯＣＲ対象領域として抽出されている。
【０２１６】
ＣＰＵ２６１は、Ｓ１７６０において、手書きＯＣＲ部１６１６ないし活字ＯＣＲ部１６１７から受信した手書きＯＣＲ結果および活字ＯＣＲ結果を統合する。
【０２１７】
ＣＰＵ２６１は、元となった手書きＯＣＲ対象領域および活字ＯＣＲ対象領域の位置関係や、手書きＯＣＲ結果ないし活字ＯＣＲ結果であるテキストデータの意味的な関係性を評価することで、手書きＯＣＲ結果および活字ＯＣＲ結果の関連性を推定する。この推定は、手書き座標テーブル２４３０や活字座標テーブル２４４０に基づき行われる。
【０２１８】
そして、氏名見出し１２０４内の活字ＯＣＲ対象領域に対して、最も距離が近い手書きＯＣＲ対象領域として、氏名記入欄１２０１内の手書きＯＣＲ対象領域が特定される。かつ、当該手書きＯＣＲ対象領域の手書きＯＣＲ結果であるテキストデータが、人名を含む文字列であれば、これは氏名であると特定できる。よって、これら活字ＯＣＲ結果と手書きＯＣＲ結果とを、氏名に関する項目と値のペアの関係性と評価する。同様に、住所についても、活字ＯＣＲ対象領域と手書きＯＣＲ対象領域の距離、および、手書きＯＣＲ結果に地名を含むことから、両者の関係性が評価される。電話番号についても、活字ＯＣＲ対象領域と手書きＯＣＲ対象領域の距離、および、手書きＯＣＲ結果が数字から構成されることから、両者の関係性が評価される。こうして、手書きＯＣＲ結果と活字ＯＣＲ結果とが、ひとつ以上の項目と値のペアとして統合され、帳票データ２４５０（テーブルデータ）が生成される（Ｓ１７６１）。生成された帳票データは、Ｓ１７６１において、画像取得部１１１に送信される。この帳票データは、加工可能なドキュメントデータとして事務処理等に用いられる。
【０２１９】
＜備考＞
以上、本実施例に示したとおり、ニューラルネットワークの学習結果を用いることで、処理対象画像から有益な情報を抽出することができる。例えば、スキャン画像データから手書きＯＣＲの対象領域を抽出して手書きＯＣＲを行うことができる。帳票ごとに、手書きＯＣＲ対象領域を、事前に登録するなどの作業を必要とせずに、手書きＯＣＲ対象領域を抽出し、手書きＯＣＲ処理に入力して処理することができる。また、事前登録ができない不定型の帳票においても、人が手書きＯＣＲ対象領域を指定するなどの作業を必要とせずに、手書きＯＣＲ対象領域を抽出し、手書きＯＣＲ処理に入力して処理することができる。また、スキャン画像データから手書きを抽出することで、複数枚の原稿の中から、手書きを含むものを検出することができる。そのため、校正原稿のように、不定型・多数の原稿の中から手書きを含むものを容易に検出することができる。
【０２２０】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０２２１】
本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。例えば、実施例では、学習データ生成部１１２と学習部１１３は、学習装置１０２において実現されるものとしたが、それぞれ別体の装置において実現されるようにしても良い。この場合、学習データ生成部１１２を実現する装置は、学習データ生成部１１２が生成した学習データを、学習部１１３を実現する装置に送信する。そして、学習部１１３は受信した学習データをもとにニューラルネットワークを学習する。画像処理装置１０１と画像処理サーバ１０３とを別体の装置として説明したが、画像処理装置１０１が画像処理サーバ１０３の機能を具備しても良い。画像処理サーバ１０３とＯＣＲサーバとを別体の装置として説明したが、画像処理サーバ１０３のＯＣＲサーバとしての機能を具備しても良い。
【０２２２】
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【０２２３】
実施例では、学習データ生成処理より学習データを生成した。しかしながら、事前に学習データ生成処理によって学習データを大量に生成しておいて、学習処理時にそこから随時、ミニバッチサイズ分をサンプルするようにしてもよい。
【０２２４】
実施例では、入力画像をグレースケール画像として生成したが、フルカラー画像など他の形式として生成してもよい。
【０２２５】
実施例では、前景サンプル画像として手書き文字画像を用いることで、手書き文字を検出するための学習処理をおこなった。しかしながら、前景サンプル画像として他の画像を用いてもよい。例えば、前景サンプル画像として押印がなされた原稿の画像を取り込んでもよい。これにより、押印の検出が可能なニューラルネットワークを生成することができる。また、前景画像として、薄紙を印字面の裏側からスキャンし、前景サンプル画像として用いてもよい。これにより、裏写り画素の検出が可能なニューラルネットワークを生成することができる。
【０２２６】
実施例では、学習データとして、図１４（ａ）に示すような画像のペアを学習した。しかしながら、異なる種類の画像のペアによって学習を行ってもよい。例えば、図１４（ｂ）に示すような画像をペアとする学習データを用いてもよい。図１４（ｂ）は学習データの変形例を示す図である。図１４（ｂ）によれば、入力画像に対して、手書き文字の矩形領域が黒く塗り潰された正解ラベル画像が登録されている。このような学習データによれば、手書き文字の矩形領域を抽出可能な学習をおこなうことができる。手書き文字の矩形領域を検出することができれば、手書き文字の除去等、大まかな加工をおこなうことができる。また、図１４（ｃ）に示すような画像をペアとする学習データを用いてもよい。図１４（ｃ）によれば、入力画像に対して、手書き文字が強調された正解ラベル画像が登録されている。このような学習データによれば、手書き文字を強調するための学習をおこなうことができる。すなわち、図１４（ａ）の学習データのような汎用性はないものの、少ない工数で手書き文字の強調画像を取得することができる。また、図１４（ｄ）に示すような画像をペアとする学習データを用いてもよい。図１４（ｄ）によれば、入力画像に対して、手書き文字が削除された正解ラベル画像が登録されている。このような学習データによれば、手書き文字を削除するための学習をおこなうことができる。すなわち、図１４（ａ）の学習データのような汎用性はないものの、少ない工数で手書き文字の削除画像を取得することができる。なお、図１４（ｃ）及び図１４（ｄ）を用いる画像変換では、Ｓ７０１で示したＦＣＮではなく、Ｉｍａｇｅ−ｔｏ−Ｉｍａｇｅと呼ばれるニューラルネットワーク技術を適用する。
【０２２７】
なお、各実施例中に登場する略称の定義は次の通りである。ＭＦＰとは、Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌのことである。ＡＳＩＣとは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔのことである。ＣＰＵとは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔのことである。ＲＡＭとは、Ｒａｎｄｏｍ‐Ａｃｃｅｓｓ  Ｍｅｍｏｒｙのことである。ＲＯＭとは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙのことである。ＨＤＤとはＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅのことである。ＳＳＤとはＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅのことである。ＬＡＮとは、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋのことである。ＰＤＬとは、Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅのことである。ＰＤＦとは、Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔのことである。ＯＳとは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍのことである。ＰＣとは、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒのことである。ＯＣＲとは、Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅｃｏｇｎｉｔｉｏｎ／Ｒｅａｄｅｒのことである。ＣＣＤとは、Ｃｈａｒｇｅ−Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅのことである。ＬＣＤとはＬｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙのことである。ＡＤＦとはＡｕｔｏ  Ｄｏｃｕｍｅｎｎｔ  Ｆｅｅｄｅｒのことである。ＣＲＴとはＣａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅのことである。ＤＰＩとは、Ｄｏｔｓ  ｐｅｒ  ｉｎｃｈのことである。ＧＰＵとは、Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔのことである。ＩＤとは、Ｉｄｅｎｔｉｆｉｃａｔｉｏｎのことである。
【符号の説明】
【０２２８】
１０１  画像処理装置
１０２  学習装置
１０３  画像処理サーバ
１６０４  ＯＣＲサーバ
２０１  ＣＰＵ
２３１  ＣＰＵ
２６１  ＣＰＵ
【図１】
2020101843.tif 000003
【図２】
2020101843.tif 000004
【図３】
2020101843.tif 000005
【図４】
2020101843.tif 000006
【図５】
2020101843.tif 000007
【図６】
2020101843.tif 000008
【図７】
2020101843.tif 000009
【図８】
2020101843.tif 000010
【図９】
2020101843.tif 000011
【図１０】
2020101843.tif 000012
【図１１】
2020101843.tif 000013
【図１２】
2020101843.tif 000014
【図１３】
2020101843.tif 000015
【図１４】
2020101843.tif 000016
【図１５】
2020101843.tif 000017
【図１６】
2020101843.tif 000018
【図１７】
2020101843.tif 000019
【図１８】
2020101843.tif 000020
【図１９】
2020101843.tif 000021
【図２０】
2020101843.tif 000022
【図２１】
2020101843.tif 000023
【図２２】
2020101843.tif 000024
【図２３】
2020101843.tif 000025
【図２４】
2020101843.tif 000026