JP2023040886A - 画像処理装置、方法及びプログラム - Google Patents

画像処理装置、方法及びプログラム Download PDF

Info

Publication number
JP2023040886A
JP2023040886A JP2021148077A JP2021148077A JP2023040886A JP 2023040886 A JP2023040886 A JP 2023040886A JP 2021148077 A JP2021148077 A JP 2021148077A JP 2021148077 A JP2021148077 A JP 2021148077A JP 2023040886 A JP2023040886 A JP 2023040886A
Authority
JP
Japan
Prior art keywords
image
cpu
handwritten
area
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
Application number
JP2021148077A
Other languages
English (en)
Inventor
元気 池田
Motoki Ikeda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2021148077A priority Critical patent/JP2023040886A/ja
Publication of JP2023040886A publication Critical patent/JP2023040886A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Character Input (AREA)

Abstract

【課題】識別対象の抽出精度を向上させる画像処理装置、画像処理方法及びプログラムを提供する。【解決手段】画像処理システムにおいて、画像処理装置は、複数の識別対象が映る第1画像から特徴マップを取得し、特徴マップに基づいて第1画像内の複数の識別対象をそれぞれ包含する領域を推定し、特徴マップに基づいて、第1画像内に背景の画素が含まれるか否かを判定し、第1画像内に背景の画素が含まれると判定した場合、特徴マップに基づいて、領域から識別対象の画素を抽出する帳票テキスト化処理を実行する。【選択図】図9

Description

本発明は、画像処理装置、方法及びプログラムに関する。
近年、ユーザが文字を記入した帳票等をスキャンしたスキャン画像に対して、OCR(Optical character recognition)処理を行うことにより、手書き文字を電子化(データ化)することが行われている。OCRエンジンは、手書き文字を認識するように最適化されているため、スキャン画像から分離した手書き文字の部分画像を受信する必要がある。部分画像が、特定の文字フォントの活字、罫線、地紋、テクスチャ等の背景及びアイコン等を含む場合、OCRエンジンによる部分画像内の手書き文字の認識精度は低下することがある。以下、部分画像上の印刷内容を表すオブジェクトを「印刷画素」と呼称する。
また、画像認識分野においてニューラルネットワーク(以下、NN)の活用が注目されている。NNは、画像内の各画素を所定のカテゴリー(クラス)に分類することに用いられ、それはエンコーダとデコーダを含む構成を有する。NNは、エンコーダで入力画像に対して畳み込み計算を行い、画像の各画素のクラスを識別するための特徴マップを出力する。そして、NNは、デコーダでエンコーダが出力した特徴マップに対して逆畳み込み計算を行って、入力画像の各画素がいずれのカテゴリーに属するかを示す画像(確率マップ)を出力する。
画像内のカテゴリーを分類するNNを、スキャン画像において手書き文字の画像とそれ以外の画像とに分離するタスクに応用し、入力画像から手書き文字の画素を抽出することが開示されている(非特許文献1)。すなわち、NNは、入力画像内の各画素を、手書き文字を構成する画素であるか否かのカテゴリー分類を行う。以下、手書き文字を構成する画素を分類して抽出する処理を「手書き抽出」、手書き抽出によって抽出された画素を「手書き抽出画素」と呼称する。また、手書き抽出により得た画像を「手書き抽出画像」と呼称する。
また、カテゴリーを分類するNNを、帳票画像内の文字の記入領域を分類するタスクに応用し、入力画像上の手書き記入を含む領域を推定して出力するNNの作成が開示されている(非特許文献2)。以下、手書き記入を含む領域を推定する処理を「手書き領域推定」と呼称する。また、手書き領域推定によって得られた領域を「手書き領域」と呼称する。
一般的に、NNがタスクを処理する際の計算量は多いことが知られている。「手書き領域推定」及び「手書き抽出」の両方の処理を、各処理に適した複数のNNにより行う場合、2つのNNが必要となり、タスク処理に係る計算負荷が増加する。特許文献1は、複数のタスク間で共通するNNのエンコーダの処理の一部を統合することで、計算量を低減するNNを開示している。
特開2019-177032号公報
"Recognizing Challenging Handwritten Annotations with Fully Convolutional Networks", 16th International Conference on Frontiers in Handwriting Recognition 2018 "Handwritten text line segmentation using Fully Convolutional Network", 2017 14th IAPR International Conference on Document Analysis and Recognition
しかしながら、NNによるタスク処理に係る計算量は多いという課題がある。手書き抽出は、手書き領域推定により推定された手書き領域内に印刷画素が存在する場合に実行されるとよい。手書き領域内に印刷画素が含まれない場合、手書き抽出は実行されなくてもよいが、印刷画素が含まれるか否かに関わらず常に手書き抽出が実行されている。これにより、NNの一部である手書き抽出のエンコーダ部分では不要な計算が行われている。
また、NNは、手書き領域でない領域において誤抽出(手書き画素の抽出漏れ)してしまう場合があり、OCRの精度が低下することがある。このように、NNの一部を共有し、かつ、複数種類の推定結果を出力するNNでは、全ての手書き抽出が必要ではない場合でも、その抽出が実行されている。これにより、NNによるタスク処理で不要な計算負荷と抽出精度の低下が起こることがある。
本発明は、識別対象の抽出精度を向上させることを目的とする。
本発明の目的を達成するために、本発明の一実施形態に係る画像処理装置は、以下の構成を備える。すなわち、画像処理装置は、複数の識別対象が映る第1画像から特徴マップを取得する取得手段と、前記特徴マップに基づいて、前記第1画像内の前記複数の識別対象をそれぞれ包含する領域を推定する推定手段と、前記特徴マップに基づいて、前記第1画像内に背景の画素が含まれるか否かを判定する判定手段と、前記第1画像内に前記背景の画素が含まれると前記判定手段が判定した場合、前記特徴マップに基づいて、前記領域から識別対象の画素を抽出する抽出手段と、を備える。
本発明によれば、識別対象の抽出精度を向上させることができる。
画像処理システムの構成を示す図。 画像処理装置、学習装置、画像処理サーバ、OCRサーバの構成を示す図。 画像処理システムの学習シーケンスと利用シーケンスを示す図。 帳票の一例を示す図。 学習原稿スキャン画面等を示す図。 原稿サンプル画像生成処理等のフローを示す図。 学習データ生成処理と学習処理のフローを示す図。 手書き抽出の学習データと手書き領域推定の学習データの構成例を示す図。 帳票テキスト化依頼処理のフローと帳票テキスト化処理のフローを示す図。 帳票テキスト化処理におけるデータ生成処理の概要を示す図。 ニューラルネットワークの構成を示す図。 第2実施形態に係る、画像処理システムの学習シーケンスを示す図。 第2実施形態に係る、学習原稿スキャン画面等を示す図。 合成領域定義情報のデータ構成を示す図。 原稿サンプル画像生成処理等のフローを示す図。 第2実施形態に係る、学習データ生成処理と学習処理のフローを示す図。 背景パッチ画像等の構成の一例を示す図。 帳票テキスト化処理のフローと手書き領域特徴取得処理のフローを示す図。 手書き領域と特徴マップの関係性を示す図。 帳票の記入の一例を示す図。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
(第1実施形態)
第1実施形態は、識別対象(手書き文字)が映る処理対象画像から、手書き文字を包含する領域を推定し、その領域で手書き抽出が必要であるか否かを判定し、手書き抽出が必要であると判定した場合に手書き抽出を行う。これにより、第1実施形態は、手書き抽出に係る不要な抽出処理を行わないことにより、手書き抽出に要する処理時間及び手書き抽出不要領域における誤抽出に伴う抽出精度の低下を低減することができる。以下、手書き抽出の要否に係る判定処理を「抽出要否判定」と呼び、画像に対して文字認識処理(OCR)を実行することを「手書きOCR」と呼ぶ。これにより、識別結果として抽出した手書き文字を手書きOCRでテキスト化(データ化)することができる。なお、本実施形態は、処理対象画像から手書き文字を抽出することとするが、抽出対象はこれに限定されることはなく、例えば、活字文字及び押印等であってもよい。
図1は、画像処理システムの構成を示す図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104及びネットワーク105を含む。画像処理装置101、学習装置102、画像処理サーバ103及びOCRサーバ104は、ネットワーク105を介して接続される。なお、本発明の画像処理システムは、複数の機器から構成されるシステム又は1つの機器から構成される装置に適用できる。画像処理装置101と画像処理サーバ103は、それぞれ別体の装置である構成として説明したが、画像処理装置101が画像処理サーバ103の機能を有しても良い。画像処理サーバ103とOCRサーバ104とを別体の装置として説明したが、画像処理サーバ103はOCRサーバ104としての機能を有しても良い。
画像処理装置101は、画像を処理する装置であり、例えば、MFP(Multi Function Peripheral)と呼ばれるデジタル複合機等を含む。画像処理装置101は画像取得部111を有し、画像取得部111は画像の印刷及びスキャン機能を有する。画像処理装置101は、学習装置102に帳票を学習させるために、サンプルとなる帳票等の複数枚の原稿をスキャンして、複数の画像データを生成する。以下、この画像データを「原稿サンプル画像」と呼称する。サンプルとなる原稿は、手書きで文字が記入された原稿を含む。そして、画像処理装置101は、ネットワーク105を介して、原稿サンプル画像を学習装置102に送信し、それに帳票の学習処理を実行させる。
また、画像処理装置101は、帳票の画像処理を行う場合、認識対象となるオブジェクトとして、例えば、手書き文字が含まれる原稿をスキャンすることで画像データを取得する。以下、この画像データを「処理対象画像」と呼称する。そして、画像処理装置101は、処理対象画像を、ネットワーク105を介して、画像処理サーバ103に送信して、それに帳票の認識処理を実行させる。
学習装置102は、NNの学習を行う装置であり、例えば、PC等を含む。学習装置102は、学習データ生成部112、学習部113及び画像蓄積部115を含む。画像蓄積部115は、画像処理装置101が生成した原稿サンプル画像を蓄積する。学習データ生成部112は、画像蓄積部115内の蓄積データから学習データを生成する。ここで、学習データとは、原稿サンプル画像内の手書き領域推定、手書き抽出及び抽出要否判定を行うNNを学習させるためのデータである。学習部113は、学習データの処理を実行するNNを有し、学習データ生成部112が生成した学習データを用いて、NNの学習を実行する。学習部113は、NNに学習データを処理させることにより、学習結果(NNのパラメータ等)を生成する。学習装置102は、学習結果を、ネットワーク105を介して、画像処理サーバ103に送信する。NNの詳細は、図11で後述する。なお、学習データ生成部112と学習部113は、学習装置102に含まれる構成としたが、それぞれの機能構成が別体の装置にそれぞれ含まれてもよい。例えば、学習データ生成部112を含む装置はそれが生成した学習データを、学習部113を含む他の装置に送信する。また、学習部113は、受信した学習データに基づいてNNを学習させてもよい。
画像処理サーバ103は、NNにより処理対象画像の処理を行う装置であり、画像変換部114を含む。画像変換部114は、処理対象画像から手書きOCRの対象とする画像に変換する。ここで、画像変換部114は、画像処理装置101が生成した処理対象画像に対して手書き領域の推定を行う。画像処理サーバ103は、学習装置102が生成した学習結果を用いることで、NNの推論により処理対象画像中の手書き文字が記入された領域を推定する。これにより、画像処理サーバ103は、処理対象画像から「手書き領域」を取得する。手書き領域は、処理対象画像中の一部の領域を示す情報であり、例えば、処理対象画像上の特定の画素位置(座標)と、画素位置からの幅と高さを含む情報として表現される。
また、手書き領域は、帳票に記入された項目数に応じて、複数の領域として得られる。さらに、画像変換部114は、手書き領域推定により得た手書き領域において手書き抽出を行う。この際、画像処理装置101は、学習装置102が生成した学習結果を用いることで、NNの推論により手書き領域中の手書き文字の画素を抽出し、手書き抽出画像を得る。ここで、手書き領域は、処理対象画像における各記入項目に基づき区分される領域である。一方、手書き抽出画像は、手書き領域中の手書き文字の画素を抽出した画像である。すなわち、手書き領域内に活字の一部が含まれていたとしても、手書き抽出画像では手書きの画素のみが抽出され、活字の画素は含まれない。したがって、手書き領域推定と手書き抽出の結果によれば、処理対象画像中の手書き文字のみを、帳票の記入欄毎に区別して扱うことができる。
また、処理対象画像の手書き領域内の背景に応じて、手書き抽出が必要である場合とそうでない場合とがある。例えば、画像処理システム100が、領収証の処理対象画像を受信して、領収証内の金額及び発行日付等をテキスト化する場合について説明する。市場において数種類の領収証の市販品が存在し、領収証の発行者はまた、独自のフォーマット、デザイン及びレイアウトで領収証を作成することがある。つまり、画像処理システム100は、様々なフォーマット等を有する領収証の処理対象画像を処理する必要がある。例えば、領収証のフォーマット及びデザインの一例として、無地(白地)、地紋及びグラフィクス等の背景がある。領収証が無地のデザインである場合、手書き領域は背景に由来する印刷画素を含まず、手書き文字の画素のみを含むため、画像処理サーバ103の画像変換部114による手書き抽出は不要である。
一方、領収証に背景が映っている場合、手書き領域は背景に由来する印刷画素を含むため、画像処理サーバ103の画像変換部114は、領収証の処理対象画像から手書き抽出により手書き文字の画素を抽出しなければならない。画像変換部114は、学習装置102が生成した学習結果に基づいて、処理対象画像からNNの推論により手書き抽出の要否判定を行う。そして、NNは、手書き抽出が必要であると判定した場合、画像変換部114は領収証の処理対象画像から手書き抽出を行い、手書き文字の画素を抽出する。NNは、手書き抽出が必要でないと判定した場合、画像変換部114は、手書き領域に手書き文字の画素のみを含むため、処理対象画像における手書き領域に対応する部分画像を手書き抽出画像とする。本実施形態において、画像変換部114は、手書き抽出の要否判定として、例えば、処理対象画像が地紋及びテクスチャ等の背景を有するか否かを判定する。
そして、画像変換部114は、手書き抽出画像をOCRサーバ104に送信する。画像変換部114は、OCRサーバ104に、手書き領域内の手書き文字のみが抽出された手書き抽出画像を、手書きOCRの対象領域とすることを指示する。また、画像変換部114は、手書き領域及び手書き抽出画像を参照して、処理対象画像上の特定の画素位置(座標)から手書き画素を除去した画像(以下、活字画像)を生成する。画像変換部114は、活字画像上の領域において、活字OCRの対象とする活字を含む領域(以下、活字領域)の情報を生成する。活字領域の生成については後述する。
画像変換部114は、活字画像と活字領域とをOCRサーバ104に送信する。これにより、画像変換部114は、OCRサーバ104に、活字画像上の活字領域に対して、それぞれ活字OCRを行うことを指示する。画像変換部114は、OCRサーバ104から手書きOCR結果及び活字OCR結果を受信する。画像変換部114は、受信した結果を統合したテキストデータを画像処理装置101に送信する。以下、このテキストデータを「帳票テキストデータ」と呼称する。
OCRサーバ104は、手書き文字の文字認識に適した手書きOCR部116と、活字文字の文字認識に適した活字OCR部117としての機能を備える。OCRサーバ104は、手書き抽出画像を受信すると、手書きOCR部116において、当該手書き抽出画像に対して手書きOCR処理を行ってテキストデータ(OCR結果)を取得する。手書きOCR部116は、テキストデータを画像処理サーバ103に送信する。また、OCRサーバ104は、活字画像と活字領域を受信すると、活字OCR部117が、活字画像中の活字領域に対して活字OCR処理を行ってテキストデータを取得する。活字OCR部117は、テキストデータを画像処理サーバ103に送信する。
図2は、画像処理装置、学習装置、画像処理サーバ、OCRサーバの構成を示す図である。図2(a)は画像処理装置の構成を示す図である。図2(b)は学習装置の構成を示す図である。図2(c)は画像処理サーバの構成を示す図である。図2(d)はOCRサーバの構成を示す図である。
図2(a)で画像処理装置101は、CPU201、ROM202、RAM204、プリンタデバイス205、スキャナデバイス206及び原稿搬送デバイス207を含む。さらに、画像処理装置101は、ストレージ208、入力デバイス209、表示デバイス210及び外部インタフェース211を含む。画像処理装置101内の各デバイスは、データバス203によって相互通信可能なように接続される。
CPU201は、画像処理装置101を全体的に制御する装置である。CPU201は、ROM202内のブートプログラムを実行することでOS(オペレーティングシステム)を起動する。このOS上で、ストレージ208に記憶されているコントローラプログラムが実行される。コントローラプログラムは、画像処理装置101を制御するためのプログラムのことである。CPU201は、データバス203によって接続されている各デバイスを全体的に制御する。
ROM202は、CPU201が実行する各種プログラム及びデータを記憶する装置である。
データバス203は、画像処理装置101内の各デバイス間でデータを送受信するためのデータ伝送路である。
RAM204は、CPU201の主メモリやワークエリア等の一時記憶領域である。
プリンタデバイス205は、画像データを用紙(記録材及びシート等)上に印刷する装置である。プリンタデバイス205は、感光体ドラム及び感光体ベルト等を用いた電子写真印刷方式、及び、微小ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式のいずれかの方式を有する。
スキャナデバイス206は、画像データを生成する装置であり、CCD等の光学読取装置を用いて、紙等の原稿上の走査から得られる電気信号データに変換する。スキャナデバイス206は、例えば、スマートフォン、タブレット及びハンディスキャナ等を含む。
原稿搬送デバイス207は、紙等の原稿を搬送する装置であり、例えば、ADF(オート・ドキュメント・フィーダ)を含む。原稿搬送デバイス207は、それの原稿台に載置された原稿を1枚ずつスキャナデバイス206に搬送する。
ストレージ208は、画像処理装置101内の様々なデータを記憶する装置であり、例えば、HDD及びSSD等の読み出しと書き込みが可能な不揮発メモリを含む。ストレージ208は、上記のコントローラプログラム等の様々なデータを記録する。
入力デバイス209は、画像処理装置101に対する各種入力を受け付ける入力装置であり、例えば、マウス、タッチパネル、ジョイスティック及びハードキーを含む。入力デバイス209は、ユーザからの各種操作指示を受け付ける。そして、入力デバイス209は、ユーザが入力した指示情報をCPU201に送信する。なお、入力デバイス209は、ユーザ指示を受け付ける受付手段とも呼ばれる。
表示デバイス210は、画像処理装置101が出力する各種情報を表示制御する装置であり、例えば、液晶(LCD)、CRT及び有機ELを含む。表示デバイス210は、CPU201が生成した表示データを表示する。CPU201は、入力デバイス209から受信した指示情報と、表示デバイス210に表示している表示データとに基づいて、ユーザがいずれの操作を指示したかを判定する。CPU201は、この判定結果に応じて、画像処理装置101を制御し、新たな表示データを生成し、それを表示デバイス210に表示させる。
外部インタフェース211は、外部機器との間で各種データの送受信を行う伝送装置であり、例えば、有線又は無線LAN、電話回線及び近接無線(赤外線及びBluetooth等)のネットワークを含む。外部インタフェース211は、学習装置102及びPC(不図示)等の外部機器より、PDL(Page Description Language)データを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解析して、画像を生成する。
CPU201は、画像をプリンタデバイス205に印刷させるか、ストレージ208に記憶する。また、外部インタフェース211は、画像処理サーバ103等の外部機器より画像データを受信する。CPU201は、受信した画像データをプリンタデバイス205により印刷するか、ストレージ208に記憶する。あるいは、CPU201は、画像データを外部インタフェース211経由で他の外部機器(不図示)に送信する。
図2(b)で学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238及びGPU239を含む。学習装置102内の各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御する装置である。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムを実行することによりOSを起動する。CPU231は、このOS上で、ストレージ235に記憶されている学習データ生成プログラム及び学習プログラムを実行する。CPU231は、学習データ生成プログラムを実行することより、学習データを生成する。また、CPU231は、学習プログラムを実行することにより、手書き領域推定、手書き抽出及び抽出要否判定を行うニューラルネットワークを学習させる。CPU231は、データバス233等のバスを介して、学習装置102内の各部を制御する。
ROM232は、CPU201が実行する各種プログラム及びデータを記憶する。
データバス233は、学習装置102内の各デバイス間でデータを送受信するためのデータ伝送路である。
RAM234は、CPU231のメインメモリ及びワークエリア等の一時記憶領域として動作する。
ストレージ235は、読み出しと書き込みが可能な不揮発メモリであり、上記の学習データ生成プログラム及び学習プログラムを記憶する。
入力デバイス236は、マウス及びキーボード等を含む入力装置である。
表示デバイス237は、図2(a)の表示デバイス210と同様の構成であるので、説明を省略する。外部インタフェース238は、図2(a)の外部インタフェース211と同様の構成であるので、説明を省略する。
GPU239は、画像処理プロセッサであり、CPU231と協調して画像データの生成及びニューラルネットワークの学習を行う。
図2(c)で画像処理サーバ103は、CPU261、ROM262、RAM264、ストレージ265、入力デバイス266、表示デバイス267及び外部インタフェース268を含む。画像処理サーバ103内の各部は、データバス263を介して、相互にデータを送受信することができる。
CPU261は、画像処理サーバ103の全体を制御する装置である。CPU261は、不揮発メモリであるROM262に格納されているブートプログラムを実行することによりOSを起動する。CPU261は、このOS上で、ストレージ265に記憶されている画像処理サーバプログラムを実行する。CPU261は、画像処理サーバプログラムを実行することより、処理対象画像に対して、手書き領域推定、手書き抽出及び抽出要否判定を行う。CPU261は、データバス263等のバスを介して、画像処理サーバ103内の各部を制御する。
RAM264は、CPU261のメインメモリ及びワークエリア等の一時記憶領域である。
ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、画像処理サーバプログラムを記憶する。
入力デバイス266は、図2(b)の入力デバイス236と同様の構成であるので、説明を省略する。表示デバイス267は、図2(a)の表示デバイス210と同様の構成であるので、説明を省略する。外部インタフェース268は、図2(a)の外部インタフェース211と同様の構成であるので、説明を省略する。
図2(d)でOCRサーバ104は、CPU291、ROM292、RAM294、ストレージ295、入力デバイス296、表示デバイス297及び外部インタフェース298を含む。OCRサーバ104内の各部は、データバス293を介して、相互にデータを送受信することができる。
CPU291は、OCRサーバ104の全体を制御する装置である。CPU291は、不揮発メモリであるROM292に格納されているブートプログラムを実行することによりOSを起動する。CPU291は、このOS上で、ストレージ295に記憶されているOCRサーバプログラムを実行する。CPU291は、OCRサーバプログラムを実行することより、手書き抽出画像及び活字画像の手書き文字及び活字を認識して、認識した手書き文字及び活字をテキスト化する。CPU291は、データバス293等のバスを介して、OCRサーバ104内の各部を制御する。
ROM292は、CPU291が実行する各種プログラム及びデータを記憶する。
データバス293は、OCRサーバ104内の各デバイス間でデータを送受信するためのデータ伝送路である。
RAM294は、CPU291のメインメモリ及びワークエリア等の一時記憶領域である。
ストレージ295は、読み出しと書き込みが可能な不揮発メモリであり、OCRサーバプログラムを記憶する。
入力デバイス296は、図2(b)の入力デバイス236と同様の構成であるので、説明を省略する。表示デバイス297は、図2(a)の表示デバイス210と同様の構成であるので、説明を省略する。外部インタフェース298は、図2(a)の外部インタフェース211と同様の構成であるので、説明を省略する。
図3は、画像処理システムの学習シーケンスと利用シーケンスを示す図である。図3(a)は、画像処理システムの学習シーケンスを示す図である。
S301で、ユーザが画像処理装置101に対して原稿の読取指示を行う。
S302で、画像取得部111は原稿を読み取り、原稿サンプル画像を生成する。
S303で、画像取得部111は、原稿サンプル画像とそのID情報を、学習データ生成部112に送信する。ID情報は、例えば、画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報は、画像処理装置101を操作するユーザを識別するためのユーザ識別情報、及び、ユーザが所属するグループを識別するためのグループ識別情報であってもよい。
S304で、学習データ生成部112は、画像蓄積部115に原稿サンプル画像とそのID情報を紐づけて蓄積する。
S305で、ユーザが、学習装置102に対して原稿サンプル画像に関する正解データの付与の指示を行う。
S306で、学習データ生成部112は、原稿サンプル画像に関する正解データを取得し、正解データを原稿サンプル画像に紐づけて、画像蓄積部115に蓄積する。正解データは、NNの学習用データである。正解データの付与方法については後述する。
S307で、学習データ生成部112は、蓄積したデータに基づいて、学習データを生成する。この際、学習データ生成部112は、特定のID情報に紐づいている原稿サンプル画像のみを用いて学習データを生成してもよい。
S308で、学習データ生成部112は、学習部113に学習データを送信する。学習データ生成部112は、特定のID情報に紐づく画像のみで学習データを生成した場合、ID情報も一緒に学習部113に送信する。
S309で、学習部113は、受信した学習データを用いて、NNの学習処理を行い、その学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみでNNの学習を実行してもよい。このように、学習部113は、ID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。
図3(b)は、画像処理システムの利用シーケンスを示した図である。
S351で、ユーザが原稿(例えば、帳票)の読取指示を画像処理装置101に対して行う。
S352で、画像取得部111は、原稿を読み取り、処理対象画像を生成する。ここで、画像取得部111が読み取る画像は、例えば、図4(a)及び(b)に示すような帳票400及び帳票450である。帳票400は、宛名記入欄401、金額記入欄402、発行年記入欄403、発行月記入欄404、発行日記入欄405及び但し書き記入欄406を備える。帳票450は、宛名記入欄451、金額記入欄452、発行年記入欄453、発行月記入欄454、発行日記入欄455及び但し書き記入欄456を備える。
図4(a)及び(b)において点線で図示する箇所は、手書きで記入される記入欄を示す。各記入欄は、宛名、金額、発行年、発行月、発行日及び但し書きに関する情報を含む。なお、領収証の発行者は、記入欄の配置(すなわち、帳票のレイアウト)を、独自の配置として設定している。このため、画像取得部111は、それが読み取った帳票毎に異なる画像(いわゆる、非定型帳票の画像)を生成する。
S353で、画像取得部111は、読み取った処理対象画像にID情報を付与して、画像変換部114に送信する。
S354で、画像変換部114は、データを受信すると、処理対象画像のテキスト化指示を受信する。この際、画像変換部114は、画像取得部111をテキストデータの返信先として記憶する。
S355で、画像変換部114は、手書き文字の加工指示を受け付け、最新の学習モデルの送信を学習部113に要求する。
S356で、学習部113は、画像変換部114からの学習モデルの送信要求に応じて、最新の学習モデルを画像変換部114に送信する。学習部113は、画像変換部114からの学習モデルの送信要求中にID情報が指定されている場合、ID情報に対応する学習モデルを送信する。
S357で、画像変換部114は、受信した学習モデルに基づいて、処理対象画像に対して、手書き領域推定を行う。また、画像変換部114は、処理対象画像に対する抽出要否判定の結果に基づいて、処理対象画像から手書き抽出を行う。
S358で、画像変換部114は、手書き領域毎の手書き抽出画像を、手書き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は、帳票テキストデータの利用画面をユーザに提示する。そして、画像取得部111は、帳票テキストデータの利用用途に応じて、帳票テキストデータを出力する。画像取得部111は、例えば、外部の業務システム(不図示)に帳票テキストデータを送信するか、プリンタデバイス205にそれを送信して印刷させる。
図5は、学習原稿スキャン画面等を示す図である。図5(a)は学習原稿スキャン画面を示す図である。
学習原稿スキャン画面500は、画像処理装置101の表示デバイス210に表示される画面の一例である。図3(a)のS301におけるユーザ指示は、学習原稿スキャン画面500をユーザ操作することにより行われる。学習原稿スキャン画面500は、図5(a)に示すように、プレビュー領域501、スキャンボタン502及び送信開始ボタン503を備える。
プレビュー領域501は、原稿のスキャンが完了すると、生成される原稿サンプル画像を、画面上に表示する。
スキャンボタン502は、スキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。画像処理装置101は、スキャナデバイス206に別の原稿をセットし、スキャンボタン502を再び押すことで、複数の原稿サンプル画像をまとめて保持することもできる。
スキャナデバイス206による原稿の読み取りが完了すると、送信開始ボタン503の操作が可能となる。送信開始ボタン503は、ユーザから送信の指示を受け付けると、原稿サンプル画像を学習装置102に送信する。
図5(b)は、手書き抽出正解データ作成画面を示す図である。図5(c)は、手書き領域推定正解データ作成画面を示す図である。ここで、図3(a)の学習シーケンスのS305に示したユーザ指示は、図5(b)及び図5(c)に示すような操作画面で行われる。ユーザは、手書き抽出正解データ作成画面及び手書き領域推定正解データ作成画面を操作して、正解データを作成する。
図5(b)で手書き抽出正解データ作成画面520は、学習装置102の表示デバイス237に表示される画面の一例である。なお、手書き抽出正解データ作成画面520は、学習装置102とネットワークを介して接続された他の装置(PC等)の表示デバイスに表示されてもよい。ユーザは、他の装置を介して学習装置102に対する指示を行ってもよい。手書き抽出正解データ作成画面520は、画像表示領域521、画像選択ボタン522、拡大ボタン523、縮小ボタン524、抽出ボタン525、推定ボタン526、保存ボタン527及び抽出要否設定ボタン528を含む。
画像表示領域521は、ユーザが原稿サンプル画像を選択すると、ユーザ選択に応じた原稿サンプル画像を表示する。ユーザは、画像表示領域521に表示された原稿サンプル画像に対して操作し、正解データを作成する。
画像選択ボタン522は、画像処理装置101の画像蓄積部115に蓄積されている原稿サンプル画像を選択するためのボタンである。ユーザが画像選択ボタン522を選択すると、選択画面(不図示)が表示され、ユーザは選択画面から原稿サンプル画像を選択することができる。
拡大ボタン523及び縮小ボタン524はそれぞれ、画像表示領域521の表示を拡大及び縮小するためのボタンである。拡大ボタン523及び縮小ボタン524はそれぞれ、ユーザが正解データの作成を行いやすいように、画像表示領域521内の原稿サンプル画像を拡大及び縮小して表示する。
抽出ボタン525及び推定ボタン526はそれぞれ、手書き抽出及び手書き領域推定の正解データの作成を選択するためのボタンである。抽出ボタン525及び推定ボタン526のいずれかがユーザに選択されると、選択されたボタンは強調して表示される。抽出ボタン525がユーザによって選択されると、手書き抽出の正解データを作成する状態となる。ユーザが抽出ボタン525を選択した場合、ユーザは、手書き抽出の正解データを次のように操作して作成する。ユーザは、図5(b)に示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されている原稿サンプル画像中の手書き文字をなぞって選択する。
学習データ生成部112は、マウスカーソルによる操作を受信すると、上記操作により選択された原稿サンプル画像上の画素位置を記録する。すなわち、手書き抽出の正解データは、原稿サンプル画像上の、手書きに該当する画素の位置となる。一方、ユーザが推定ボタン526を選択すると、学習データ生成部112は、手書き領域推定の正解データを作成する状態となる。次にユーザは、手書き領域推定の正解データを次のように操作して作成する。
ユーザは、図5(c)の点線枠のサイズを変更するために、入力デバイス236を介してマウスカーソルを操作する。そして、ユーザは、画像表示領域521内の原稿サンプル画像中の手書き文字を点線枠内に内包させるように領域を選択する。この際、ユーザは、手書き文字を項目ごと(例えば、宛名及び金額ごと)の領域に含むように選択する。学習データ生成部112は、ユーザの領域選択に係る操作を受信すると、上記操作により選択された領域を記録する。このように、手書き領域推定の正解データは、原稿サンプル画像上の項目ごとの手書き記入を内包する領域となる。以下、手書きが記入された領域を「手書き領域」と呼称する。
抽出要否設定ボタン528は、画像表示領域521内の原稿サンプル画像に対して、手書き抽出が必要であるか否かを設定するためのボタンである。抽出要否設定ボタン528は、トグル状のボタンとなっており、このボタンが押下されるとONとなり、手書き抽出が必要であることを設定する。一方、抽出要否設定ボタン528は、そのボタンが再度押下されるとOFFとなり、手書き抽出が不要であることを設定する。抽出要否設定ボタン528は、初期状態ではOFFの状態である。ユーザは、画像表示領域521内の原稿サンプル画像を確認して、地紋及びテクスチャ等の背景の有無に応じて、抽出要否設定ボタン528を選択する。
保存ボタン527は、作成された手書き抽出の正解データを保存するためのボタンである。手書き抽出の正解データは、次のような画像として、画像蓄積部115に蓄積される。手書き抽出の正解データは、原稿サンプル画像と同じサイズ(幅及び高さ)を有する。ユーザにより選択された手書き文字位置の画素値は、手書きを示す値(例えば、255)である。ユーザの非選択領域の画素値は、手書きではないことを示す値(例えば、0)である。以下、手書き抽出の正解データである画像を「手書き抽出正解画像」と呼称する。
ここで、図4(c)は、手書き抽出正解画像の一例を示す。また、手書き領域推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。手書き領域推定の正解データは、原稿サンプル画像と同じサイズ(幅及び高さ)を有する。ユーザにより選択された手書き領域に該当する画素値は、手書き領域であることを示す値(例えば、255)である。また、ユーザの非選択領域の画素値は、手書き領域ではないことを示す値(例えば、0)である。以下、手書き領域推定の正解データである画像を「手書き領域推定正解画像」と呼称する。
図4(d)は、手書き領域推定正解画像の一例を示す。また、抽出要否判定の正解データは、次のような画像として、画像蓄積部115に蓄積される。ユーザが抽出要否設定ボタン528をONに設定していた場合、抽出要否判定の正解データは、手書き抽出が必要であることを示す値(例えば、255)となる。ユーザが抽出要否設定ボタン528をOFFに設定していた場合、抽出要否判定の正解データは、手書き抽出が不要であることを示す値(例えば、0)となる。
また、図3(b)のS351におけるユーザ指示は、次のような操作画面で行われる。図5(d)は、帳票処理画面を示す図である。図5(d)で帳票処理画面540は、プレビュー領域541、スキャンボタン542及び送信開始ボタン543を備える。
プレビュー領域541は、スキャナデバイス206による原稿のスキャンが完了すると、生成された処理対象画像を表示する。
スキャンボタン542は、スキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。
送信開始ボタン543は、原稿が読み取られると、それの操作が可能となる。送信開始ボタン543は、送信指示を受信すると、処理対象画像を画像処理サーバ103に送信する。
また、図3(b)のS367に示した帳票データの出力は、次のような操作画面で行われる。図5(e)は、帳票処理結果画面を示す図である。
帳票処理結果画面560は、プレビュー領域561、帳票テキストデータ表示領域562及びOKボタン563を備える。
プレビュー領域561は、処理対象画像として、例えば、領収証を表示する。
帳票テキストデータ表示領域562は、処理対象画像を処理して得られた帳票テキストデータとして、例えば、「宛名:キャノン、金額1200、発行日:20200605、品目:お品代として」を表示する。帳票処理の結果に不備がある場合、ユーザは、入力デバイス209を介して、帳票テキストデータを編集することができる。
OKボタン563は、帳票処理の確定を指示するためのボタンである。OKボタン563は、それが選択されると、帳票テキストデータを出力として、例えば、それを保存するか又は別の外部機器へ送信する。
(原稿サンプル画像生成処理)
図6は、原稿サンプル画像生成処理等のフローを示す図である。図6(a)は原稿サンプル画像生成処理のフローを示す図である。原稿サンプル画像生成処理は、CPU201が、ストレージ208内のコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。原稿サンプル画像生成処理は、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
S601で、CPU201は、原稿のスキャン指示がされたか否かを判定する。CPU201は、ユーザが入力デバイス209を介して、原稿をスキャンするための所定の操作(スキャンボタン502の指示)をしたと判定した場合(S601でYes)、処理はS602に進む。一方、CPU201は、ユーザが入力デバイス209を介して、原稿をスキャンするための所定の操作(スキャンボタン502の指示)をしていないと判定した場合(S601でNo)、処理はS604に進む。
S602で、CPU201は、スキャナデバイス206及び原稿搬送デバイス207を制御して、原稿をスキャンすることにより原稿サンプル画像を生成する。原稿サンプル画像は、グレースケールの画像データとして生成される。なお、原稿サンプル画像は、ユーザ操作及び原稿搬送デバイス207に載置した原稿枚数に応じて、複数枚取得されてよい。
S603で、CPU201は、S602で生成した原稿サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。
S604で、CPU201は、原稿サンプル画像の生成処理を終了するか否かを判定する。CPU201は、ユーザが、原稿サンプル画像生成処理を終了する所定の操作をしたと判定した場合(S604でYes)、処理を終了する。一方、CPU201は、ユーザが、原稿サンプル画像生成処理を終了する所定の操作をしていないと判定した場合(S604でNo)、処理はS601に戻る。
図6(b)は、原稿サンプル画像受信処理のフローを示す図である。原稿サンプル画像受信処理は、CPU231が、ストレージ235内の学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。原稿サンプル画像受信処理は、ユーザが、学習装置102の電源をONにすると開始される。
S621で、CPU231は、原稿サンプル画像を外部インタフェース238経由で受信したか否かを判定する。CPU231は、外部インタフェース238を介して原稿サンプル画像を受信したと判定した場合(S621でYes)、処理はS622に進む。CPU231は、外部インタフェース238を介して原稿サンプル画像を受信していないと判定した場合(S621でNo)、処理はS623に進む。
S622で、CPU231は、受信した原稿サンプル画像を、ストレージ235に記録する。
S623で、CPU231は、原稿サンプル画像受信処理を終了するか否かを判定する。CPU231は、ユーザが、学習装置102の電源をOFFにする等の所定の操作をしたと判定した場合(S623でYes)、処理を終了する。CPU231は、ユーザが、学習装置102の電源をOFFにする等の所定の操作をしていないと判定した場合(S623でNo)、処理はS621に戻る。
図6(c)は、正解データ生成処理のフローを示す図である。正解データ生成処理は、学習装置102の学習データ生成部112により実現される。正解データ生成処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作をすることで開始される。
S641で、CPU231は、原稿サンプル画像の選択指示がされたか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、原稿サンプル画像を選択するための所定の操作(画像選択ボタン522の指示)をしたと判定した場合(S641でYes)、処理はS642に進む。CPU231は、ユーザが、入力デバイス236を介して、原稿サンプル画像を選択するための所定の操作(画像選択ボタン522の指示)をしていないと判定した場合(S641でNo)、処理はS643に進む。
S642で、CPU231は、S641でユーザが選択した原稿サンプル画像を、ストレージ235から読み出して、その画像を画像表示領域521に表示する。
S643で、CPU231は、ユーザが正解データの入力指示を行ったか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、原稿サンプル画像上の手書き文字をなぞるか、又は、手書き文字の記入領域を選択する操作をしたと判定した場合(S643でYes)、処理はS644に進む。CPU231は、ユーザが上記の操作をしていないと判定した場合(S643でNo)、処理はS647に進む。
S644で、CPU231は、ユーザが入力した正解データが、手書き抽出の正解データであるか否かを判定する。CPU231は、ユーザが、手書き抽出の正解データ作成を指示する操作(抽出ボタン525の選択)をしたと判定した場合(S644でYes)、処理はS645に進む。CPU231は、ユーザが上記の操作をしていない、すなわち、ユーザが入力した正解データは手書き領域推定の正解データ作成を指示する操作(推定ボタン526の選択)であると判定した場合(S644でNo)、処理はS646に進む。
S645で、CPU231は、ユーザが入力した手書き抽出の正解データを、RAM234に一時的に記憶する。手書き抽出の正解データとは、上記のとおり、原稿サンプル画像中の手書きに該当する画素の位置情報である。
S646で、CPU231は、ユーザが入力した手書き領域推定の正解データを、RAM234に一時的に記憶する。手書き領域推定の正解データは、上記の通り、原稿サンプル画像中の手書き領域に該当する領域情報である。
S647で、CPU231は、ユーザが、抽出要否判定の正解データの入力を行ったか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、手書き抽出の要否、すなわち、抽出要否判定の正解データを設定するための所定の操作(抽出要否設定ボタン528の選択)をしたと判定した場合(S647でYes)、処理はS650に進む。CPU231は、ユーザが、上記の操作をしていないと判定した場合(S647でNo)、処理はS649に進む。
S648で、CPU231は、ユーザが入力した手書き抽出の要否の結果を、RAM234に一時的に記憶する。CPU231は、抽出要否設定ボタン528がONに設定されている場合に手書き抽出の要否を「要」として、そうでない場合に「否」として記憶する。
S649で、CPU231は、正解データの保存指示がされたか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、正解データを保存するための所定の操作(保存ボタン527の選択)を行ったと判定した場合(S649でYes)、処理はS650に進む。CPU231は、ユーザが上記の操作を行っていないと判定した場合(S649でNo)、処理はS653に進む。
S650で、CPU231は、手書き抽出正解画像を生成して、手書き抽出の正解データとして保存する。CPU231は、手書き抽出正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。CPU231は、生成した画像の全ての画素を、手書きではないことを示す画素値に設定する。次に、CPU231は、S645でRAM234に一時的に記憶した位置情報を参照し、手書き抽出正解画像上の該当する位置の画素値を、手書きであることを示す値に変更する。CPU231は、生成した手書き抽出正解画像を、S642で読み出した原稿サンプル画像と関連付けて、ストレージ235に保存する。
S651で、CPU231は、手書き領域推定正解画像を生成し、手書き領域推定の正解データとして保存する。CPU231は、手書き領域推定正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。CPU231は、生成した画像の全ての画素を、手書き領域ではないことを示す画素値に設定する。次に、CPU231は、S646でRAM234に一時的に記憶した領域情報を参照し、手書き領域推定正解画像上の該当する領域内の画素値を、手書き領域であることを示す画素値に変更する。CPU231は、手書き領域推定正解画像を、S642で読み出した原稿サンプル画像、及び、S650で作成した手書き抽出正解画像と関連付けて、ストレージ235に保存する。
S652で、CPU231は、抽出要否判定正解データを生成し、それを保存する。CPU231は、S648でRAM234に記憶した手書き抽出の要否を参照する。CPU231は、手書き抽出が「要」であると判定した場合、抽出要否判定正解データを、手書き抽出が必要であることを示す画素値に変更する。CPU231は、手書き抽出が「否」であると判定した場合、手書き抽出が不要であることを示す画素値に変更する。CPU231は、抽出要否判定正解データを、S642で読み出した原稿サンプル画像、及び、S650で作成した手書き抽出正解画像と関連付けて、ストレージ235に保存する。
S653で、CPU231は、正解データ生成処理を終了するか否かを判定する。CPU231は、ユーザが、正解データ生成処理を終了する所定の操作をしたと判定した場合(S653でYes)、処理を終了する。CPU231は、ユーザが上記の操作をしていないと判定した場合(S653でNo)、処理はS641に戻る。
(学習データ生成処理)
図7は、学習データ生成処理と学習処理のフローを示す図である。図7(a)は学習データ生成処理のフローを示す図である。学習データ生成処理は、学習装置102の学習データ生成部112により実現される。学習データ生成処理は、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作をすることで開始される。
S701で、CPU231は、ストレージ235内の複数の原稿サンプル画像の中からランダムに一つ選択して読み出す。なお、ストレージ235は、図6(b)のS622の処理で記憶した、複数の原稿サンプル画像を記憶している。
S702で、CPU231は、ストレージ235内の手書き抽出正解画像を読み出す。なお、ストレージ235は、読み出した原稿サンプル画像に関連付けられた、図6(c)のS650で記憶した手書き抽出正解画像を記憶している。
S703で、CPU231は、ストレージ235内の手書き領域推定正解画像を読み出す。なお、ストレージ235は、読み出した原稿サンプル画像に関連付けられた、図6(c)のS651で記憶した手書き領域推定正解画像を記憶している。
S704で、CPU231は、読み出した原稿サンプル画像中の一部(例えば、縦x横=256x256)を切り出して、学習データ用の入力画像を生成する。原稿サンプル画像中の切り出し位置は、ランダムに決定されてよい。
S705で、CPU231は、読み出した手書き抽出正解画像中の一部を切り出して、手書き抽出の学習データ用の正解ラベル画像(教師データ及び正解画像データ)を生成する。以下、この正解ラベル画像を「手書き抽出正解ラベル画像」と呼称する。手書き抽出正解画像中の切り出し位置及びサイズは、S704で原稿サンプル画像から入力画像を切り出した位置及びサイズと同様である。
S706で、CPU231は、読み出した手書き領域推定正解画像中の一部を切り出して、手書き領域推定の学習データ用の正解ラベル画像を生成する。以下、この正解ラベル画像を「手書き領域推定正解ラベル画像」と呼称する。手書き領域推定正解画像中の切り出し位置及びサイズは、S704で原稿サンプル画像から入力画像を切り出した位置及びサイズと同様である。
S707で、CPU231は、ストレージ235内の抽出要否判定正解データを読み出す。なお、ストレージ235は、読み出した原稿サンプル画像に関連付けられた、図6(c)のS652で記憶した抽出要否判定正解データを記憶している。
S708で、CPU231は、S704で生成した入力画像と、S706で生成した手書き抽出正解ラベル画像とを対応付けて、手書き抽出の学習データとしてストレージ235に保存する。手書き抽出の学習データは、図8(a)のような学習データである。
S709で、CPU231は、S704で生成した入力画像と、S706で生成した手書き領域推定正解ラベル画像とを対応付けて、手書き領域推定の学習データとしてストレージ235の所定の領域に保存する。手書き領域推定の学習データは、図8(b)のような学習データである。なお、手書き領域推定正解ラベル画像は、S704で生成した入力画像と対応付けられることで、S705で生成した手書き抽出正解ラベル画像とも対応付けられる。
S710で、CPU231は、S704で生成した入力画像と、S707で読み出した抽出要否判定正解データとを対応付けて、抽出要否判定の学習データをストレージ235に保存する。手書き領域推定正解ラベル画像は、S704で生成した入力画像と対応付けられることで、S705で生成した手書き抽出正解ラベル画像及びS706で生成した手書き領域推定正解ラベル画像とも対応付けされる。
S711で、CPU231は、学習データ生成処理を終了するか否かを判定する。CPU231は、予めユーザが指定した学習データの数に対応する学習データを生成したと判定した場合(S711でYes)、処理を終了する。CPU231は、上記の判定条件を満たさないと判定した場合(S711でNo)、処理はS701に戻る。
以上の学習データ生成処理により、後述のNN1100の学習データが生成される。NNの汎用性を高めるために、学習データは加工されても良い。CPU231は、例えば、入力画像を所定の範囲(例えば、50%~150%の間)からランダムに選択する変倍率で変倍する。CPU231は、手書き領域推定及び手書き抽出正解ラベル画像も上記と同様に変倍する。あるいは、CPU231は、入力画像を所定の範囲(例えば、-10度~10度の間)からランダムに選択する回転角度で回転する。CPU231は、手書き領域推定及び手書き抽出正解ラベル画像も同様に回転する。
CPU231は、変倍率及び回転角度を考慮して、S704~S706で入力画像、手書き領域推定及び手書き抽出正解ラベル画像を切り出す際に、少し大きめのサイズ(例えば、縦x横=512x512)で切り出す。CPU231は、それらの画像の変倍及び回転後に、最終的な入力画像、手書き領域推定及び手書き抽出正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう中心部分から切り出す。あるいは、CPU231は、入力画像の各画素の輝度を変更して加工してもよい。すなわち、CPU231は、ガンマ補正を用いて入力画像の輝度を変更する。ガンマ値は、所定の範囲(例えば、0.1~10.0の間)からランダムに選択されてよい。
図7(b)は、学習処理のフローを示す図である。学習処理は、学習装置102の学習部113により実現される。学習処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作をすることで開始される。なお、NN1100の学習では、ミニバッチ法が用いられるものとする。
S731で、CPU231は、後述のNN1100を初期化する。すなわち、CPU231は、NN1100に含まれるパラメータの値を、ランダムに決定して初期化する。
S732で、CPU231は、ストレージ235から学習データを取得する。CPU231は、図7(a)に示す学習データ生成処理を実行して、所定の数(例えば、ミニバッチサイズに従う数、例えば10個)の学習データを取得する。
S733で、CPU231は、NN1100のエンコーダ部1101の出力を得る。CPU231は、手書き領域推定及び手書き抽出の各学習データに含まれる入力画像をNN1100に入力して、エンコーダ部1101が出力する特徴マップを得る。
S734で、CPU231は、NN1100の手書き領域推定結果の誤差を算出する。CPU231は、取得した特徴マップを領域推定デコーダ部1122に入力して、領域推定デコーダ部1122から出力画像を得る。出力画像は、入力画像と同じ画像サイズである。出力画像中の推定結果として、手書き領域であると判定された画素は、画素値が手書き領域を示す値となる。一方、手書き領域ではないと判定された画素は、画素値が手書き領域ではないことを示す値となる。そして、CPU231は、出力画像と、学習データに含まれる手書き領域推定正解ラベル画像との誤差を求める。CPU231は、誤差の評価指標として交差エントロピーを用いる。
S735で、CPU231は、NN1100の手書き抽出結果の誤差を算出する。CPU231は、取得した特徴マップを画素抽出デコーダ部1112に入力して、画素抽出デコーダ部1112から出力画像を得る。出力画像は、入力画像と同じ画像サイズである。出力画像中の推定結果として、手書きであると判定された画素は、画素値が手書きを示す値となる。一方、手書きではないと判定された画素は、画素値が手書きではないことを示す値となる。そして、CPU231は、出力画像と、学習データに含まれる手書き抽出正解ラベル画像との誤差を求める。CPU231は、誤差の評価指標として、手書き領域推定と同様に、交差エントロピーを用いる。
S736で、CPU231は、NN1100の抽出要否判定結果の誤差を算出する。CPU231は、取得した特徴マップを抽出判定部1132に入力して、抽出判定部1132から出力画像を得る。出力画像は、手書き抽出が必要であることを示す確率と、手書き抽出が不要であることを示す確率とを含む2次元ベクトルで表現される。そして、CPU231は、出力画像と学習データに含まれる抽出要否判定正解データとの誤差を求める。CPU231は、誤差の評価指標として、交差エントロピーを用いる。なお、抽出判定部1132の構成は、様々な態様であってよく、それが回帰推定を行う構成である場合、評価指標は、正解データとの平均二乗誤差等であってよい。
S737で、CPU231は、S734~S736で算出した誤差に基づいて、NN1100のパラメータを調整する。この際、CPU231は、誤差逆伝播法(バックプロパゲーション)によってNN1100のパラメータ値を変更する。
S738で、CPU231は、NN1100の学習を終了するか否かを判定する。学習の終了判定条件は、S732~S737の処理が所定回数(例えば、60000回)行われたか否かであってよい。所定回数は、本処理開始時にユーザが入力する等により決定されてよい。CPU231は、所定回数の処理をしたと判定した場合(S738でYes)、処理はS739に進む。CPU231は、所定回数の処理をしていないと判定した場合(S738でNo)、処理はS732に戻り、NN1100の学習処理を継続する。
S739で、CPU231は、学習結果として、S737で調整したNN1100のパラメータを、画像処理サーバ103に送信する。
(帳票テキスト化依頼処理)
図9は、帳票テキスト化依頼処理のフローと帳票テキスト化処理のフローを示す図である。図9(a)は、帳票テキスト化依頼処理のフローを示す図である。画像処理装置101は、手書きを含む帳票をスキャンして処理対象画像を生成する。画像処理装置101は、処理対象画像データを画像処理サーバ103に送信して、帳票テキスト化を依頼する。帳票テキスト化依頼処理は、画像処理装置101のCPU201が、ストレージ208内のコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。帳票テキスト化依頼処理は、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作をすることで開始される。
S901で、CPU201は、スキャナデバイス206及び原稿搬送デバイス207を制御して、原稿をスキャンすることにより、処理対象画像を生成する。処理対象画像は、グレースケールの画像データとして生成される。
S902で、CPU201は、処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。
S903で、CPU201は、画像処理サーバ103から、処理結果を受信したか否かを判定する。CPU201は、画像処理サーバ103から、外部インタフェース211を介して、処理結果を受信したと判定した場合(S903でYes)、処理はS904に進む。CPU201は、上記の判定条件を満たさないと判定した場合(S903でNo)、処理はS903の処理を繰り返す。
S904で、CPU201は、画像処理サーバ103から受信した処理結果、すなわち、処理対象画像に含まれる手書き文字及び活字を認識して生成した帳票テキストデータを出力する。CPU201は、例えば、表示デバイス210に処理対象画像及び帳票テキストデータを表示させるか、又は、ユーザが設定した送信先に帳票テキストデータを送信する。
図9(b)は、帳票テキスト化処理のフローを示す図である。図10は、帳票テキスト化処理における、データ生成処理の概要を示す図である。画像処理サーバ103の画像変換部114は、画像処理装置101から処理対象画像を受信して、スキャン画像データに含まれる活字及び手書き文字をOCR処理してテキストデータを得る。活字OCR部117は、活字に対するOCRを実行する。手書きOCR部116は、手書き文字に対するOCRを実行する。帳票テキスト化処理は、CPU261が、ストレージ265内の画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。帳票テキスト化処理は、ユーザが、画像処理サーバ103の電源をONにすると開始される。
S951で、CPU261は、図11に示す手書き領域推定及び手書き抽出を行うNN1100をロードする。CPU261は、図7(b)のS731の場合と同一のNN1100を構築する。CPU261は、図7(b)のS739で学習装置102から送信された学習結果(NN1100のパラメータ)を、NN1100に反映する。
S952で、CPU261は、処理対象画像を、画像処理装置101から受信したか否かを判定する。CPU261は、外部インタフェース268を介して、処理対象画像を受信したと判定した場合(S952でYes)、処理はS953に進む。CPU261は、上記の判定条件を満たさないと判定した場合(S952でNo)、処理はS967に進む。なお、処理対象画像は、図10の帳票1000(図4に示した帳票400と同じ)を受信したものとする。
S953~S960で、CPU261は、画像処理装置101から受信した処理対象画像をNN1100に入力し、手書き領域推定及び手書き抽出を行う。NN1100は、エンコーダ部1101による計算結果(すなわち、抽出した特徴マップ)を、画素抽出デコーダ部1112、領域推定デコーダ部1122及び抽出判定部1132で共有する構成である。ここで、処理対象画像(NN1100への入力画像)からの手書き画素抽出が不要である場合がある。
例えば、領収証の背景が無地である場合、手書き領域内に印刷画素は混入されないため、処理対象画像からの手書き画素抽出は不要である。一方、領収証が地紋やテクスチャ等の背景を有する場合、これらの背景に由来する印刷画素が手書き領域内に存在する可能性が高いため、手書き画素抽出が必要である。抽出判定部1132は、処理対象画像(例えば、領収証の画像)内の印刷画素の有無を判定する。すなわち、抽出判定部1132は、処理対象画像内に印刷画素が含まれる場合に手書き画素抽出を行い、処理対象画像内に印刷画素が含まれない場合に手書き画素抽出をしない又は抑制する。
S953で、CPU261は、画像処理装置101から受信した処理対象画像をNN1100に入力し、エンコーダ部1101が出力する特徴マップを得る。
S954で、CPU261は、画像処理装置101から受信した処理対象画像から手書き領域を推定する。CPU261は、特徴マップを領域推定デコーダ部1122に入力し、手書き領域を推定させる。NN1100の出力として、以下の画像データが得られる。出力画像は処理対象画像と同じ画像サイズである。推定結果として、手書き領域であると判定された画素に、手書き領域であること示す画素値が記録され、かつ、手書き領域ではないと判定された画素に、手書き領域ではないことを示す画素値が記録された画像データが得られる。
なお、図3(a)のS305で、ユーザは、記入項目ごとに手書き文字を内包する、手書き領域推定の正解データを作成した。したがって、NN1100の領域推定デコーダ部1122は、この正解データを学習しているため、記入項目ごとに手書き領域であることを示す画素を出力する。なお、NN1100の出力は、画素毎の予測結果であり、予測された領域は必ずしも正確な矩形ではないため、当該領域を内包する外接矩形が設定される。外接矩形の設定は、公知の技術を用いて実現される。各外接矩形は、処理対象画像上における左上端点と幅及び高さを含む領域座標情報として表現される。得られた矩形情報群を手書き領域とする。図10の帳票1002では、処理対象画像(帳票1000)から推定した手書き領域は、点線枠で図示される。
S955で、CPU261は、画像処理装置101から受信した処理対象画像が、手書き抽出を要するか否かを推定する。CPU261は、特徴マップを抽出判定部1132に入力し、抽出要否判定を行う。CPU261は、NN1100の出力として、手書き抽出の要否を示すデータを得る。なお、図3(a)のS305で、ユーザは、抽出要否判定の正解データを、処理対象画像の地紋及びテクスチャ等の背景の有無に応じて作成した。したがって、NN1100の抽出判定部1132は、処理対象画像の背景を学習しているため、CPU261は、処理対象画像に地紋及びテクスチャ等の背景がある場合、手書き抽出を要することを示すデータを得る。CPU261は、処理対象画像の背景が無地である場合、手書き抽出は不要であることを示すデータを得る。
S956で、CPU261は、処理対象画像からの手書き抽出の要否を判定する。CPU261は、手書き抽出を要することを示すデータに基づいて、処理対象画像からの手書き抽出を要すると判定した場合(S956でYes)、処理はS958に進む。一方、CPU261は、手書き抽出が不要であることを示すデータに基づいて、処理対象画像からの手書き抽出は不要であると判定した場合、処理はS957に進む。
S957で、CPU261は、画像処理装置101から受信した処理対象画像から手書き画素を推定する。CPU261は、S953で取得した特徴マップを画素抽出デコーダ部1112に入力し、手書き画素を推定させる。NN1100の出力として、次のような出力画像が得られる。出力画像は、処理対象画像と同じ画像サイズであり、推定結果として手書きであると判定された画素に手書きであること示す画素値が記録され、手書きではないと判定された画素に手書きではないことを示す画素値が記録されている。
CPU261は、出力画像データ中の手書きであることを示す値の画素と同じ位置の画素を、処理対象画像から抽出する。そして、CPU261は、S954で推定した手書き領域ごとの部分画像、すなわち、手書き抽出画像を生成する。これにより、CPU261は、図10の手書き抽出画像1001を得る。手書き抽出画像1001は、手書き領域における手書きの画素のみが含まれた画像である。
S958で、CPU261は、処理対象画像中におけるS954で推定した手書き領域内の画素を、手書き抽出結果として手書き抽出画像を生成する。S956で処理対象画像から手書き抽出は不要であると判定されたが、これは手書き領域内に手書きの画素を含まないことを意味する。よって、CPU261は、推定した手書き領域ごとに、処理対象画像上の領域で手書き領域に相当する領域の画素を抽出して、手書き抽出画像を生成する。これにより、CPU261は、図10の手書き抽出画像1001と同様の画像を得ることができる。
S959で、CPU261は、S957又はS958で生成した全ての手書き抽出画像を、外部インタフェース268を介して、手書きOCR部116に送信する。CPU261は、手書きOCR部116に全ての手書き抽出画像に対して手書きOCRを実行させる。手書きOCRは、公知の技術を用いて実行されてよい。手書きOCR部116が、手書き抽出画像を手書きOCRすることにより、手書きOCR部116が手書き画素と一緒に不要な印刷画素を参照することを低減する。これにより、手書きOCR部116は、手書きOCRの精度を向上させることができる。また、手書きOCR部116は、推定した手書き領域毎に手書きOCRすることにより、記入項目ごとの手書きOCR結果を得ることができる。
S960で、CPU261は、手書きOCR部116から、全ての手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCR部116が、手書き領域に含まれていた手書き文字を認識して得たテキストデータのことである。CPU261は、手書きOCR部116から、手書きOCR結果を受信したと判定した場合(S960でYes)、処理はS961に進む。CPU261は、上記の判定条件を満たさないと判定した場合(S960でNo)、S960の処理を繰り返す。CPU261は、これまでの処理によって、手書き領域(座標情報)とそれに含まれていた手書き文字を認識して得たテキストデータを得る。CPU261は、テキストデータを手書き情報テーブル1003としてRAM264に記憶する。
S961で、CPU261は、S954で生成した手書き領域に関する座標情報と、S957又はS958で生成した全ての手書き抽出画像とに基づいて、処理対象画像から手書きを除去した活字画像1004を生成する。CPU261は、処理対象画像の画素について、S957又はS958で生成した全ての手書き抽出画像において画素値が手書きを示す値である画素と同位置の画素を、白(RGB=(255,255,255))に変更する。これにより、CPU261は、図10の活字画像1004を得る。
S962で、CPU261は、活字画像1004から活字領域を抽出する。CPU261は、活字領域として、活字画像上1004の活字を内包する部分領域を抽出する。部分領域とは、印刷内容のまとまり(オブジェクト)であり、例えば、複数の文字を含む文字行、複数の文字行を含む文章、図、写真、表及びグラフ等である。部分領域の抽出方法を以下で説明する。まず、CPU261は、活字画像1004を白黒に二値化して二値画像を生成する。CPU261は、この二値画像において黒い画素が連結する部分(連結黒画素)を抽出し、これに外接する矩形を作成する。CPU261は、矩形の形状及び大きさを評価することで、文字又は文字の一部である矩形群を得る。
CPU261は、矩形群について、矩形間の距離を評価して、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得る。CPU261は、同様の大きさの文字の矩形が近くに並んでいる場合、それらを統合して文字行の矩形群を得る。CPU261は、短辺長が同様である文字行の矩形が等間隔に並んでいる場合、それらを統合して文章の矩形群を得る。また、CPU261は、図、写真、表、グラフ、文字、行及び文章以外のオブジェクトを内包する矩形を得る。CPU261は、上記で抽出した矩形から、単独の文字又は文字の一部である矩形を除外する。CPU261は、抽出した矩形から残った矩形を部分領域とする。図10の画像1005では、活字画像1004から抽出した活字領域が点線枠で示されている。本抽出方法では、活字画像1004から複数の背景部分領域を抽出し得る。
S963で、CPU261は、活字画像1004と活字領域とを、外部インタフェース268を介して、活字OCR部117に送信し、活字OCRを実行させる。活字OCRは、公知の技術を用いて実現される。
S964で、CPU261は、活字OCR部117から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCR部117が、活字領域に含まれていた活字を認識して得たテキストデータのことである。CPU261は、活字OCR部117から、活字OCR結果を受信したと判定した場合(S964でYes)、処理はS965に進む。CPU261は、上記の判定条件を満たさないと判定した場合(S964でNo)、S964の処理を繰り返す。これにより、CPU261は、活字領域(座標情報)と活字領域が含む活字を認識して得られるテキストデータを取得する。CPU261は、活字領域(座標情報)と活字領域が含む活字を含む活字情報テーブル1006としてRAM264に記憶する。
S965で、CPU261は、手書きOCR部116及び活字OCR部117からそれぞれ受信した手書きOCR結果及び活字OCR結果を統合する。ここで、図20(a)は帳票への氏名の記入例を示した処理対象画像である。図20(b)は、図20(a)の処理対象画像から抽出した手書き抽出画像である。図20(a)では処理対象画像の罫線内に氏名が記入されているため、CPU261は、姓が「小木」であり、名が「才一郎」であると評価する。一方、図20(b)では、「木」と「才」の文字間の区切りが不明瞭であるため、CPU261は、「木」と「才」とが組み合わされた「材」の一文字として評価する。すなわち、図20(b)でCPU261は、文字認識処理の結果に基づいて、「小材一郎」と評価してしまう場合がある。図20(c)~図20(f)は、図20(a)~図20(b)と同様に、文字認識処理の結果としてテキストデータの意味を誤って評価してしまう例を示す。そこで、CPU261は、元の手書き領域と活字領域の位置関係、及び、手書きOCR結果又は活字OCR結果のテキストデータの意味的な内容及び関係性を評価することで、手書きOCR結果及び活字OCR結果の関連性を推定する。CPU261は、手書き情報テーブル1003及び活字情報テーブル1006に基づいて、双方の結果の関連性の推定を行う。以下、推定方法について説明する。
CPU261は、宛名について、手書きOCR結果であるテキストデータを、社名及び人名を示すものであるか否かを評価することで、宛名である手書き領域とその手書きOCR結果であるテキストデータを得る。この評価は、例えば、予め定義した辞書とのマッチング等により行われる。さらに、CPU261は、手書き領域の右側近傍に活字領域があり、かつ、その活字OCR結果であるテキストデータが「様」である場合、宛名として評価した手書き領域及びそのテキストを、より確からしい評価結果として評価する。
CPU261は、品目について、手書きOCR結果であるテキストデータを、品名や仕訳を示す内容であるか否かを評価することで、手書き領域とその手書きOCR結果であるテキストデータを得る。さらに、CPU261は、手書き領域の左側近傍に活字領域があり、かつ、その活字OCR結果であるテキストが「但」又は「但し」である場合、品目として評価した手書き領域及びそのテキストを、より確からしい評価結果として得る。
CPU261は、発行日について、手書きOCR結果であるテキストデータを、その年を表す4桁の数値であるか否か評価することで、発行日の年を示す手書き領域とその手書きOCR結果であるテキストを得る。さらに、CPU261は、手書き領域の右側近傍に活字領域があり、かつ、その活字OCR結果であるテキストが「年」である場合、発行日の年として評価した手書き領域及びそのテキストを、より確からしい評価結果として得る。CPU261は、発行日の月及び日について、上記と同様の方法により推定結果を得る。
CPU261は、年、月及び日の推定結果を統合して発行日を得る。さらに、CPU261は、日付としての妥当性を評価することで、発行日の確からしい結果を得る。また、CPU261は、手書きOCR結果であるテキストデータを、通貨記号及び桁区切りのためのカンマが含まれる場合を考慮して、数値であることを評価することで、金額である手書き領域とその手書きOCR結果であるテキストを得ることができる。このように、CPU261は、手書きOCR結果と活字OCR結果とを評価して、帳票テキストデータ1007を生成する。
ここで、CPU261は、上述の評価により得られたテキストを正規化してもよい。例えば、金額表記について、通貨記号が含まれる場合と通貨記号が含まれない場合、及び、金額の桁区切り用のカンマが含まれる場合とカンマが含まれない場合がある。CPU261は、上記のような場合においても妥当な数値であることを評価するために、通貨記号及びカンマを除外して数値列としての金額に正規化する。あるいは、CPU261は、発行日の月及び日が一桁の数値である場合、ゼロを補完して発行日全体として8桁の数値列となるよう正規化してもよい。
S966で、CPU261は、帳票テキストデータを、画像取得部111に送信する。
S967で、CPU261は、処理を終了するか否かを判定する。CPU261は、ユーザが、画像処理サーバ103の電源をOFFにする等の所定の操作をしたと判定した場合(S967でYes)、処理を終了する。CPU261は、条件を満たさないと判定した場合(S967でNo)、処理はS952に戻る。
なお、S966で、CPU261は、画像取得部111に対して、帳票テキストデータに加えて、抽出要否判定の結果(すなわち、手書き抽出を行ったか否かを示す情報)を送信してもよい。この場合、S904で、画像処理装置101の画像取得部111は、表示デバイス210に処理結果である帳票データを表示する際に、抽出要否判定の結果に応じて表示態様を変える。例えば、画像取得部111は、抽出要否判定の結果が要であった場合(すなわち、手書き抽出を行った場合)、帳票テキストデータ表示領域562の表示枠を強調する等して表示する。このように、手書き抽出が行われたことをユーザに示すことにより、手書き抽出による誤推定の可能性を示唆し、より慎重な処理結果の確認を促すことができる。
また、帳票処理結果画面560は、再処理ボタン(不図示)を有していてもよい。抽出要否判定の結果が、ユーザが所望する結果ではなかった場合、ユーザが再処理ボタンを押下することにより、画像処理サーバ103は、抽出要否判定の結果を否定するように処理対象画像を再処理する。すなわち、帳票テキスト化依頼処理を実行することで、画像処理サーバ103は、処理対象画像を再度処理する。この際、S902で、CPU201は、処理対象画像に加えて抽出要否判定の結果を画像処理サーバ103に送信する。S956で、画像処理サーバ103のCPU261は、画像処理装置101から抽出要否判定の結果が送信された場合、当該結果を参照して手書き抽出の要否を判定する。CPU261は、抽出要否判定の結果が「要」であれば「否」であると判定し、「否」であれば「要」と判定する。このように、抽出要否判定の結果が、ユーザの所望の結果ではなかった場合、これを考慮して帳票を再度処理することができる。
なお、NN1100の画素抽出デコーダ部1112は、複数の逆畳み込み層及びアップサンプリング層を含む。一方、抽出判定部1132は、画素抽出デコーダ部1112と同一の入力を受け付けて処理し、少数の層(全結合層又は畳み込み層)を含む。つまり、抽出判定部1132は、画素抽出デコーダ部1112に比べて、非常に少ない計算量で処理することができる。画像処理システム100は、その運用において複数の処理対象画像を処理することが考えられる。手書き抽出処理が必要である領域とそれが不要である領域とが処理対象画像内に混在する場合、全ての処理対象画像に対して手書き抽出を行うよりも、抽出要否判定の結果に応じて、手書き抽出を行う方が、全体の計算量を小さく抑えることができる。
以上の通り、第1実施形態では、手書き領域推定NNと手書き抽出NNの間でエンコーダ部(同様の計算をする層)を共有する構造のNNを用いる。さらに、抽出要否判定NNは、上記のNNと同様にエンコーダ部を共有する構造となるように設けられる。そして、抽出判定部1132により手書き抽出の要否を判定し、その判定結果に応じてエンコーダ部1101による処理を実行する。このように、複数種の推定結果を出力するNNは、それ自体に、一部の推定について必要か否かを判定する判定部を設けることで、不要な推定処理を低減し、これに伴う処理時間及び誤推定に伴う推定精度の低下を低減することができる。なお、本実施形態では、手書き文字を対象として、その領域及びその画素を推定するNNの一例を示したが、これに限らない。推定対象は、例えば、活字文字及び押印であってもよい。
(第2実施形態)
第2実施形態では、手書き領域を推定し、エンコーダ部が出力した特徴マップから、推定した手書き領域に対応する部分に絞った特徴マップに基づいて、抽出要否判定及び手書き抽出を行う。なお、第2実施形態は、学習データを画像合成により生成する。第2実施形態は、第1実施形態との差分について説明する。
(NNの構成)
NN1100は、第1実施形態の構成と同様であるが、処理プロセスの点で第1実施形態と異なる。
NN1100は、上記の通り、エンコーダ部1101が出力する特徴マップを、画素抽出デコーダ部1112、領域推定デコーダ部1122及び抽出判定部1132に入力する。ここで、手書き画素は、手書き領域内に存在するものである。そのため、NN1100は、領域推定デコーダ部1122が推定した手書き領域に対応する部分のみに絞った特徴マップを求めて、それを画素抽出デコーダ部1112に入力する。これにより、NN1100は、手書き画素の存在しない領域である非手書き領域で手書き抽出を行う計算量を削減できる。
抽出判定部1132は、この手書き領域に対応する部分のみに絞った特徴マップを入力として受信し、それに対する抽出要否を判定する。抽出判定部1132は、手書き領域内に印刷画素が存在するか否かを判定する。例えば、無地の帳票において手書き文字が罫線に掛かってしまい、手書き領域内に罫線の印刷画素が混入する場合がある。抽出判定部1132は、上記の場合における誤抽出を防止するために、抽出要否判定を行い、手書き画素抽出を行う。
抽出判定部1132は、上記の通り、全結合層又は畳み込み層を含むが、いずれの層の場合でも出力は2チャネルとなる。抽出判定部1132は、畳み込み層を含む場合、チャネルごとの代表値を算出することで、2次元のベクトルを得る。抽出判定部1132は、シグモイド関数等を用いて、0.0~1.0の間の数値となるように出力する。出力は、印刷画素を含む確率を示す値と、手書き画素を含む確率を示す値とを含むデータである。抽出要否判定は、いわゆるマルチラベルクラス分類推定として構成される。
抽出判定部1132は、印刷画素を含む確率と手書き画素を含む確率が共に高い(例えば、0.5以上)場合(手書き領域内に印刷画素と手書き画素が混在する場合)、手書き抽出を「要」と判定する。NN1100を学習させるために、学習データの入力画像とその正解データを用意する必要がある。NN1100に正解データとして付与する情報量は、第1実施形態で用いた情報量よりも多い。NNの学習では、大量のデータが必要となることから、手作業で学習データを作成すると大変な手間を要する。第2実施形態では、画像合成を用いて、学習データを生成することにより、学習データ作成に係る手間を要することなく、NN1100の学習用データを得る。
(画像処理システム)
画像処理システム100は、図1に示すように、第1実施形態の構成と同様である。画像処理装置101は、白紙に手書きのみが記入された原稿をスキャンして画像データを生成する。以下、この画像データを「前景サンプル画像」と呼称する。画像処理装置101は、複数枚の原稿をスキャンして複数の前景サンプル画像を得る。また、画像処理装置101は、電子文書(例えば、帳票)を印刷して印刷原稿を出力する。さらに、画像処理装置101は、この印刷原稿(手書き記入なし)をスキャンして画像データを生成する。以下、この画像を「背景サンプル画像」と呼称する。複数枚の印刷原稿をスキャンして、複数の背景サンプル画像を得る。画像処理装置101は、ネットワーク105を介して、前景サンプル画像と背景サンプル画像を学習装置102に送信する。
学習装置102は、画像処理装置101が生成した前景サンプル画像と背景サンプル画像を蓄積する画像蓄積部115として機能する。また、学習装置102は、蓄積した画像から学習データを生成する学習データ生成部112として機能する。学習データ生成部112は、手書き抽出、手書き領域推定及び抽出要否判定を行うNNの学習用データを生成する。学習装置102は、学習用データを用いてNNの学習を行う学習部113として機能する。学習部113は、NNを学習させることにより、学習結果(例えば、NNのパラメータ)を生成する。学習装置102は、学習結果(学習モデル)を、ネットワーク105を介して、画像処理サーバ103に送信する。
(学習シーケンス)
図12は、第2実施形態における画像処理システムの学習シーケンスを示す図である。
S1201で、ユーザは、手書きのみが記入された原稿の読取指示を画像取得部111に送信する。
S1202で、画像取得部111は、手書きのみが記入された原稿を読みとり、前景サンプル画像を生成する。画像取得部111は、前景サンプル画像に前景フラグを付与する。
S1203で、ユーザが、帳票の原稿の読取指示を画像取得部111に送信する。
S1204で、画像取得部111は、帳票の原稿を読みとり、背景サンプル画像を生成する。画像取得部111は、背景サンプル画像に背景フラグを付与する。
S1205で、画像取得部111は、前景サンプル画像及び背景サンプル画像を、学習データ生成部112に送信する。この際、画像取得部111は、前景サンプル画像及び背景サンプル画像にID情報を付与する。ID情報は、例えば、画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報は、画像処理装置101を操作するユーザを識別するためのユーザ識別情報、及び、ユーザが所属するグループを識別するめためのグループ識別情報であってもよい。
S1206で、学習データ生成部112は、画像蓄積部115に前景サンプル画像及び背景サンプル画像を蓄積する。
S1207で、ユーザが、学習装置102に合成領域データの付与指示を学習データ生成部112に送信する。
S1208で、学習データ生成部112は、合成領域データを取得して画像蓄積部115に蓄積する。
S1209で、学習データ生成部112は、前景サンプル画像と背景サンプル画像を合成して学習データ(合成領域データ)を生成する。合成領域データとは、背景サンプル画像上に手書きサンプルを合成するデータのことである。学習データ生成部112は、学習データの生成の際、予め合成領域データを作成する。合成領域データの作成方法は後述する。そして、学習データ生成部112は、このようにして蓄積したデータに基づいて、学習データを生成する。この際、学習データ生成部112は、特定のID情報に紐づく画像のみを用いて学習データを生成してもよい。
S1210で、学習データ生成部112は、学習部113に学習データを送信する。学習データ生成部112は、特定のID情報に紐づく画像のみで学習データを生成した場合、ID情報を学習データと一緒に送信する。
S1211で、学習部113は、学習データに基づいて、NN1100の学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、ID情報に対応する学習データのみでNN1100の学習を行ってもよい。このように、学習部113は、ID情報と学習モデルとを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。
(操作画面)
図13(a)は、第2実施形態に係る学習原稿スキャン画面を示す図である。S1201、S1203におけるユーザ指示は、以下の操作画面を介して行われる。
学習原稿スキャン画面1300は、表示デバイス210に表示される画面の一例である。学習原稿スキャン画面1300は、プレビュー領域1301、手書き原稿ボタン1302、帳票原稿ボタン1303、スキャンボタン1304及び送信開始ボタン1305を備える。
プレビュー領域1301は、スキャナデバイス206による原稿のスキャンが完了すると、読み取られた画像のプレビューを表示する。
手書き原稿ボタン1302と帳票原稿ボタン1303はそれぞれ、読み取られた画像の属性を指定するためのボタンである。手書き原稿ボタン1302を選択すると、読取画像に前景フラグが付与される。帳票原稿ボタン1303が選択されると、読取画像に背景フラグが付与される。書き原稿ボタン1302と帳票原稿ボタン1303のいずれかの選択中のボタンは、識別可能に強調表示される。また、手書き原稿ボタン1302と帳票原稿ボタン1303は、いずれか1つのみ選択され得る。
スキャンボタン1304は、スキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。スキャナデバイス206に別の原稿をセットし、スキャンボタン1304を再び押すことで、複数の画像データをまとめて保持しておくこともできる。
送信開始ボタン1305は、画像が読み取られ、かつ、画像種別が選択されると、選択可能な状態となる。送信開始ボタン1305は、それが選択されると、選択された画像属性が付与された読取画像を学習装置102に送信する。
図13(b)~(f)は、合成領域データ作成画面を示す図である。S1207のユーザ指示は、以下のような操作画面を介して行われる。
合成領域データ作成画面1350は、表示デバイス267に表示される画面の一例である。図13(b)で合成領域データ作成画面1350は、画像表示領域1351、画像選択ボタン1352、拡大ボタン1353、縮小ボタン1354、統合ボタン1355及び保存ボタン1356を備える。
画像選択ボタン1352は、画像蓄積部115に蓄積されている背景サンプル画像を選択し、画像処理装置101からそれを受信するためのボタンである。画像選択ボタン1352が選択されると、選択画面(不図示)が表示され、ユーザは、背景サンプル画像を選択することができる。ユーザが、背景サンプル画像を選択すると、画像表示領域1351は選択された画像を表示する。ユーザは、画像表示領域1351に表示された背景サンプル画像に対して操作して、合成領域データを作成する。
拡大ボタン1353と縮小ボタン1354はそれぞれ、合成領域データの作成を行いやすくするために、画像表示領域1351の表示を拡大及び縮小するためのボタンである。拡大ボタン1353及び縮小ボタン1354はそれぞれ、画像表示領域1351に表示されている背景サンプル画像を拡大及び縮小して表示する。
ユーザは、合成領域データを以下の操作により作成する。ユーザは、図13(b)の点線枠で示すように、入力デバイス236のマウスカーソルを操作し、画像表示領域1351内の背景サンプル画像中の罫線で囲まれた領域内(記入欄内)を選択する。この選択領域は、合成領域(合成領域データ)である。選択領域は、学習データ生成部112が学習データを生成する際、背景サンプル画像上の、合成領域内に前景サンプル画像の一部を合成するよう指示するものである。なお、図13(c)に示すように、単一の記入欄内であっても、複数の項目を含む場合には、記入欄内に複数の合成領域データが作成されてよい。
統合ボタン1355は、作成済みの複数の合成領域をグルーピングするためのボタンである。統合ボタン1355は、図13(d)の点線で示すように、例えば、枠で区切られた複数の記入欄(例えば、数値記入欄)にそれぞれ合成領域データを作成する。統合ボタン1355は、これらの合成領域データを、入力デバイス236を操作して選択した状態で、統合ボタン1355が選択されると、選択した複数の合成領域データをグループとして記録する。統合ボタン1355は、手書き領域推定の正解データを生成する際、グルーピングされた合成領域を統合して一つの正解データとする。
以上の通り、ユーザは、個々の背景サンプル画像に対して、記入欄の存在に従って、複数の合成領域を作成する。なお、図13(e)及び図13(f)に示すように、帳票内の記入欄が罫線に囲まれていない。この場合、ユーザは、図13(e)及び図13(f)内の点線で示すように、ユーザが記入する領域を選択する。
保存ボタン1306は、作成した合成領域データを保存するためのボタンである。合成領域データは、作成対象であった背景サンプル画像に対して、一つのXML形式のデータとして記録される。以下、XML形式で保存された合成領域データを「合成領域定義情報」と呼称する。図14は、合成領域定義情報の一例を示す。合成領域定義情報は、対応する背景サンプル画像と紐づけて画像蓄積部115に蓄積される。合成領域定義情報の詳細は後述する。
図15は、原稿サンプル画像生成処理等のフローを示す図である。図15(a)は、サンプル画像生成処理のフローを示す図である。原稿サンプル画像生成処理は、CPU201が、ストレージ208内のコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。原稿サンプル画像生成処理は、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
S1501で、CPU201は、手書きのみの原稿のスキャン指示がされたか否かを判定する。CPU201は、ユーザが、入力デバイス209を介して、手書きのみの原稿をスキャンするための所定の操作(スキャンボタン1304の選択及び手書き原稿ボタン1302の選択)をしたと判定した場合(S1501でYes)、処理はS1502に進む。CPU201は、上記の判定条件を満たさないと判定した場合(S1501でNo)、処理はS1504に進む。
S1502で、CPU201は、スキャナデバイス206及び原稿搬送デバイス207を制御して、原稿をスキャンして前景サンプル画像を生成する。ここで、原稿は、ユーザが文章及び図形(例えば、線及び矢印)等を白紙に記入したものであり、手書きのみを含む。例えば、原稿は帳票であり、ユーザが帳票に文章及び図形を記入しものである。前景サンプル画像は、グレースケールの画像データとして生成される。
S1503で、CPU201は、前景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。この際、CPU201は、送信する画像データが、前景サンプル画像であることを示す情報(前景フラグ)を付与して送信する。
S1504で、CPU201は、印刷内容のみの原稿をスキャンする指示がされたか否かを判定する。CPU201は、ユーザが、入力デバイス209を介して、印刷内容のみの原稿をスキャンするための所定の操作(スキャンボタン1304の選択及び帳票原稿ボタン1303の選択)をしたと判定した場合(S1504でYes)、処理はS1505に進む。CPU201は、上記の判定条件を満たさないと判定した場合(S1504でNo)、処理はS1507に進む。
S1505で、CPU201は、スキャナデバイス206及び原稿搬送デバイス207を制御して、原稿をスキャンして背景サンプル画像を生成する。原稿は、用紙に帳票などを印刷したものであり、印刷内容のみが含まれる。背景サンプル画像は、グレースケールの画像データとして生成される。
S1506で、CPU201は、背景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。この際、CPU201は、送信する画像データが、背景サンプル画像であることを示す情報(背景フラグ)を付与して送信する。
S1507で、CPU201は、原稿サンプル画像生成処理を終了するか否かを判定する。CPU201は、ユーザが、原稿サンプル画像生成処理を終了する所定の操作をしたと判定した場合(S1507でYes)、処理を終了する。CPU201は、上記の判定条件を満たさないと判定した場合(S1508でNo)、処理はS1501に戻る。
以上の処理によって、画像処理装置101は、前景サンプル画像及び背景サンプル画像を生成して、それを学習装置102に送信する。画像処理装置101は、ユーザの操作及び原稿搬送デバイス207に載置した原稿枚数に応じて、前景サンプル画像及び背景サンプル画像をそれぞれ、複数枚取得する。
(サンプル画像受信処理)
図15(b)は、サンプル画像受信処理のフローを示す図である。サンプル画像受信処理は、CPU231が、ストレージ235内の学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。サンプル画像受信処理は、ユーザが、学習装置102の電源をONにすると開始される。
S1531で、CPU231は、前景サンプル画像を受信したか否かを判定する。CPU231は、外部インタフェース238を介して画像データを受信し、かつ、画像データに前景フラグが付与されていると判定した場合(S1531でYes)、処理はS1532に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1531でNo)、処理はS1533に進む。
S1532で、CPU231は、前景サンプル画像を、ストレージ235の所定の領域に記録する。
S1533で、CPU231は、背景サンプル画像を受信したか否かを判定する。CPU231は、外部インタフェース238を介して画像データを受信し、かつ、画像データに背景フラグが付与されていると判定した場合(S1533でYes)、処理はS1534に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1533でNo)、処理はS1535に進む。
S1534で、CPU231は、背景サンプル画像を、ストレージ235に記録する。
S1535で、CPU231は、サンプル画像受信処理を終了するか否かを判定する。CPU231は、ユーザが、学習装置102の電源をOFFにする等の所定の操作をしたと判定した場合(S1535でYes)、処理は終了する。CPU231は、上記の判定条件を満たさないと判定した場合(S1535でNo)、処理はS1531に戻る。
(合成領域定義情報生成処理)
次に、学習装置102による合成領域定義情報生成処理について説明する。図15(c)は合成領域定義情報生成処理のフローを示す図である。合成領域定義情報生成処理は、学習装置102の学習データ生成部112により実現される。合成領域定義情報生成処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S1561で、CPU231は、背景サンプル画像の選択指示がされたか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、背景サンプル画像を選択するための所定の操作(画像選択ボタン1352の指示)をしたと判定した場合(S1561でYes)、処理はS1562に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1561でNo)、処理はS1563に進む。
S1562で、CPU231は、ユーザが選択した背景サンプル画像を、ストレージ235から読み出してプレビュー領域1301に出力する。
S1563で、CPU231は、ユーザが合成領域データの入力指示を行ったか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、記入欄内の領域を選択する操作をしたと判定した場合(S1563でYes)、処理はS1564に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1563でNo)、処理はS1565に進む。
S1564で、CPU231は、ユーザが入力した合成領域データを、RAM234に記憶する。
S1565で、CPU231は、ユーザが合成領域のグルーピング入力指示をしたか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、所定の操作(入力済みの合成領域の選択及び統合ボタン1355の選択)をしたと判定した場合(S1565でYes)、処理はS1566に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1565でNo)、S1567に進む。
S1566で、CPU231は、合成領域のグルーピングの情報(選択された複数の合成領域の紐付け情報)を、RAM234に一時的に記憶する。
S1567で、CPU231は、合成領域データの保存指示がされたか否かを判定する。CPU231は、ユーザが、入力デバイス236を介して、合成領域データを保存するための所定の操作(保存ボタン1356の選択)をしたと判定した場合(S1567でYes)、処理はS1568に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1567でNo)、処理はS1569に進む。
S1568で、CPU231は、合成領域定義情報を示すXMLデータを生成して保存する。CPU231は、S1564でRAM234に一時的に記憶した合成領域データを参照し、その数分だけ<area>タグを挿入する。CPU231は、各々の<area>タグに、x属性及びy属性を追加して、合成領域の背景サンプル画像上の画素位置を示すx座標及びy座標の値を記録する。また、CPU231は、width属性及びheight属性を追加して、合成領域の幅の画素数及び高さの画素数を記録する。さらに、CPU231は、S1566でRAM234に一時的に記憶した合成領域のグルーピングの情報を参照して、合成領域の<area>タグにgroup属性を付与する。
そして、CPU231は、同一グループに属する合成領域について、同一の値(グループのID)をgroup属性の値に記録する。これにより、図14に示すような合成領域定義情報が生成される。CPU231は、S1561で選択された処理対象としている背景サンプル画像と、合成領域定義情報とを紐付けて、ストレージ235に記憶する。
S1569で、CPU231は、合成領域定義情報生成処理を終了するか否かを判定する。CPU231は、ユーザが、合成領域定義情報生成処理を終了する所定の操作をしたと判定した場合(S1569でYes)、処理を終了する。CPU231は、上記の判定条件を満たさないと判定した場合(S1569でNo)、処理はS1561に戻る。
(学習データ生成処理)
図16(a)は、第2実施形態に係る学習データ生成処理のフローを示す図である。図17(a)は、画像合成により生成する入力画像の構成の一例を示す図である。図17(b)は、手書き抽出の学習データの構成の一例を示す図である。図17(c)は、手書き領域推定の学習データの構成の一例を示す図である。学習データ生成処理は、学習装置102の学習データ生成部112により実現される。学習データ生成処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作をすることで開始される。
S1601で、CPU231は、ストレージ235に記憶している前景サンプル画像の中からランダムに一つを選択して読み出す。なお、ストレージ235は、図15のS1532の処理により、複数の前景サンプル画像を記憶している。
S1602で、CPU231は、ストレージ235に記憶している背景サンプル画像の中からランダムに一つを選択して読み出す。なお、ストレージ235は、図15のS1534の処理により、複数の背景サンプル画像を記憶している。
S1603で、CPU231は、背景サンプル画像の一部(例えば、縦x横=256x256)を切り出した画像データを生成する。以下、この画像データを「背景パッチ」と呼称する。背景サンプル画像からの切り出し位置は、ランダムに決定される。図17(a)は、背景パッチの一例を示す。
S1604で、CPU231は、背景パッチと同じサイズの画像を生成して、画像の全ての画素値を、手書きではないことを示す値に変更する。これにより、CPU231は、背景パッチと同じサイズの画像から手書き抽出正解ラベル画像を生成する。
S1605で、CPU231は、背景パッチと同じサイズの画像を生成して、画像の全ての画素値を、手書き領域ではないことを示す値に変更する。これにより、CPU231は、背景パッチと同じサイズの画像から手書き領域推定正解ラベル画像を生成する。
S1606で、CPU231は、生成する学習データの種別を決定する。ここで、種別は、「背景のみ」、「前景のみ」及び「混在」の3種類である。「背景のみ」は、印刷画素のみを含む学習データである。「前景のみ」は、手書き画素のみを含む学習データである。「混在」は、印刷画素と手書き画素の両方を含む学習データである。帳票をスキャンして得られる処理対象画像内の部分領域は、上記3種類のいずれかに該当する場合があるので、3種類の学習データをNNに学習させる。学習データの決定方法は、ランダムにいずれかが選択されるようにする。あるいは、種別ごとに生成する学習データの数(例えば、ユーザ指定による数)を予め設定しておき、その設定に基づいて決定されてもよい。
S1607で、CPU231は、生成する学習データの種別が「背景のみ」であるか否かを判定する。CPU231は、生成する学習データの種別が「背景のみ」であると判定した場合(S1607でYes)、処理はS1620に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1607でNo)、処理はS1608に進む。
S1608で、CPU231は、生成する学習データの種別が「前景のみ」であるか否かを判定する。CPU231は、生成する学習データの種別が「前景のみ」であると判定した場合(S1608でYes)、処理はS1609に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1608でNo)、処理はS1610に進む。
S1609で、CPU231は、「キャンパスパッチ」を生成する。キャンパスパッチとは、以降の処理における手書き文字の合成先となる画像のことである。CPU231は、背景パッチと同じサイズの画像を生成して、画像の全ての画素値を白(RGB=(255,255,255))とする。あるいは、CPU231は、無記入の白紙用紙をスキャンして得た画像を予め保持しておき、その画像の一部(背景パッチと同じサイズ)をランダムに決定した位置から切り出すことでキャンパスパッチとしてもよい。
S1610で、CPU231は、S1603で切り出して得た背景パッチをキャンパスパッチとする。
S1611で、CPU231は、背景パッチにおける合成領域を特定する。CPU231は、ストレージ235から、S1602で選択した背景サンプル画像と紐付けて記憶されている合成領域定義情報を読み出す。CPU231は、合成領域定義情報内に<area>タグとして記憶されている各合成領域(矩形情報)と、背景サンプル画像上の背景パッチ切り出し領域(矩形情報)との交差部分(交差矩形)を求める。CPU231は、交差矩形のサイズが縦と横それぞれについて0以上のものを背景パッチにおける合成領域として採用する。
合成領域は、背景サンプル画像上の左上端点を原点としているので、CPU231は、背景パッチ切り出し領域の左上端点が基準となるように補正する。これにより、CPU231は、背景パッチ上の合成領域を特定する。CPU231は、後処理のために、算出した背景パッチ上の合成領域をRAM234に一時的に記憶しておく。また、CPU231は、交差矩形算出時に、元の合成領域定義情報の<area>タグにgroup属性が付与されていた場合、この値(グルーピング情報)も合成領域と関連付けてRAM234に一時的に記憶しておく。図17(a)では、背景パッチ上の合成領域は斜線で示される。CPU231は、背景パッチ上の合成領域の一つを選択する。
S1612で、CPU231は、前景サンプル画像の一部を切り出した画像データを生成する。以下、この画像データを「前景パッチ」と呼称する。前景サンプル画像からの切り出し位置は、ランダムに決定されてよい。切り出す画像サイズは、現在処理対象として選択されている背景パッチ上の合成領域のサイズと同一とする。なお、CPU231は、前景パッチに対して二値化処理を行い、黒画素が予め定めた所定数に満たない場合、前景パッチを切り出し直す。
S1613で、CPU231は、切り出した前景パッチの余白を除去する。CPU231は、前景パッチを二値化処理して、二値画像を生成する。CPU231は、二値画像中の全ての黒画素を含む外接矩形を求める。CPU231は、外接矩形に該当する領域を前景パッチから切り出して、切り出した画像で前景パッチを更新する。
S1614で、CPU231は、前景パッチの合成位置を決定する。CPU231は、合成領域の中心点を基準に、合成領域を拡大した領域を決定する。以下、この領域を「拡大合成領域」と呼称する。拡大率は、100%~予め定めた閾値(例えば、105%)までの間であり、この区間からランダムに決定される。そして、CPU231は、拡大合成領域内に前景パッチが収まるように、前景パッチの合成位置を、拡大合成領域内でランダムに決定する。なお、CPU231は、合成領域が背景パッチの端部にある場合、拡大合成領域を端辺方向に拡大しない。図17(a)は、拡大合成領域を破線で例示している。合成領域は、背景サンプル画像中の記入欄内の領域を選択するように作成される。後述するキャンパスパッチ(背景パッチ)に前景パッチを合成する処理の際、記入欄周辺の罫線と手書きとが交差する場合がある。これにより、記入欄をはみ出して記入した場合を再現する学習データが生成される。
S1615で、CPU231は、キャンパスパッチである画像上の、S1614で決定した合成位置に該当する部分に、前景パッチを合成する。CPU231は、S1606で生成する学習データの種別を「前景のみ」と決定した場合、キャンパスパッチは背景パッチと同じサイズである白画素で構成される画像である。よって、CPU231は、手書き画素のみが含まれる画像を生成する。
S1606で、CPU231は、生成する学習データの種別を「混在」と決定した場合、キャンパスパッチは背景パッチである。よって、CPU231は、背景パッチに手書きが合成された画像を生成する。
S1616で、CPU231は、手書き抽出正解ラベル画像を更新する。CPU231は、前景パッチに対して二値化処理を行う。CPU231は、予め定めた閾値よりも低い値である画素値を、手書きを示す値とする。CPU231は、他の画素値を、手書きではないことを示す値とする。CPU231は、手書き抽出正解ラベル画像上で、S1614で決定した合成位置に該当する部分に、上記のように処理して画素値を定めた画像データを合成する。
S1617で、CPU231は、手書き領域推定正解ラベル画像を更新する。CPU231は、手書きを示す値と手書きではないことを示す値を含む画像データを参照する。CPU231は、画像内の全ての手書きを示す画素を内包する外接矩形を算出する。CPU231は、画像データ中の外接矩形に内包される画素値を、手書き領域であることを示す値に更新する。また、CPU231は、他の画素を、手書き領域ではないことを示す値に更新する。CPU231は、手書き領域推定正解ラベル画像上で、S1614で決定した合成位置に該当する部分に、上記のように処理して画素値を定めた画像データを合成する。
S1618で、CPU231は、現在処理対象としている背景パッチ上の合成領域について、全て処理を行ったか否かを判定する。CPU231は、背景パッチ上の全ての合成領域について、S1612~S1617の処理を実行していると判定した場合(S1618でYes)、処理はS1619に進む。CPU231は、上記の判定条件を満たさないと判定した場合(S1618でNo)、処理はS1612に戻り、背景パッチ上の次の合成領域について処理する。
S1619で、CPU231は、S1611で特定した背景パッチ上の合成領域について、グルーピング情報を参照して手書き領域推定正解ラベル画像を更新する。CPU231は、S1611でRAM234に一時的に記憶した合成領域とグルーピングに関するデータを読み出す。CPU231は、同一のgroup属性の合成領域を選択する。CPU231は、合成領域の矩形の結合矩形(合成矩形を全て内包する最小矩形)を求める。
CPU231は、手書き領域推定正解ラベル画像上で、結合矩形に該当する領域内の画素について、手書き領域であることを示す値である画素を全て内包する外接矩形を求める。CPU231は、手書き領域推定正解ラベル上で、外接矩形内の全ての画素の値を、手書き領域であることを示す値に変更する。このように、CPU231は、グルーピングされ、かつ、枠等で区切られた複数の数値記入が、単一の記入領域内に記入された正解データを生成する。
S1620で、CPU231は、手書き抽出の学習データを保存する。CPU231は、S1606で生成する学習データの種別「背景のみ」を決定した場合、S1603で切り出して得た背景パッチが入力画像となる。CPU231は、S1606で生成する学習データの種別「前景のみ」又は「混在」を決定した場合、S1615で前景パッチを合成したキャンパスパッチが入力画像となる。CPU231は、入力画像と、S1616で作成した手書き抽出正解ラベル画像とを対応付けて、手書き抽出のNNを学習させる学習データとして、ストレージ235に保存する。CPU231は、図17(b)のような、手書き抽出の学習データ(学習データの種別「混在」が決定された場合)を保存する。
S1621で、CPU231は、手書き領域推定の学習データを保存する。CPU231は、S1606で生成する学習データの種別「背景のみ」を決定した場合、S1603で切り出して得た背景パッチが入力画像となる。CPU231は、S1606で生成する学習データの種別「前景のみ」又は「混在」を決定した場合、S1615で前景パッチを合成したキャンパスパッチが入力画像となる。CPU231は、入力画像と、S1617で作成した手書き領域推定正解ラベル画像とを対応付け、手書き領域推定のNNを学習させるための学習データとして、ストレージ235に保存する。CPU231は、図17(c)のような、手書き領域推定の学習データ(学習データの種別「混在」が決定された場合)を保存する。
S1622で、CPU231は、抽出要否判定の学習データを保存する。CPU231は、S1606で生成する学習データの種別「背景のみ」を決定した場合、抽出要否判定の正解データとして、「背景のみ」のデータを保存する。「背景のみ」のデータとは、印刷画素があり、かつ、手書き画素なしであることを示すデータ(例えば、[0,1])である。CPU231は、「前景のみ」が決定された場合、抽出要否判定の正解データとして、「前景のみ」のデータを保存する。「前景のみ」のデータとは、印刷画素がなしで、かつ、手書き画素ありであることを示すデータ(例えば、[1,0])である。CPU231は、「混在」が決定された場合、抽出要否判定の正解データとして、「混在」のデータを保存する。「混在」のデータとは、印刷画素ありで、かつ、手書き画素ありであることを示すデータ(例えば、[1,1])である。
S1623で、CPU231は、学習データ生成処理を終了するか否かを判定する。CPU231は、予め決定した学習データの数(例えば、ユーザが指定した数)の学習データが生成されたと判定した場合(S1623でYes)、処理を終了する。CPU231は、上記の判定条件を満たさないと判定した場合(S1623でNo)、処理はS1601に戻る。
以上の通り、手書き抽出を行うNNの学習データ、及び、手書き領域推定と抽出要否判定を行うNNの学習データは、前景サンプル画像、背景サンプル画像及び合成領域定義情報に基づいて、画像合成により生成される。学習データは、NNの汎用性を高めるために、加工されてもよい。例えば、前景パッチ及び背景パッチは、所定の範囲(例えば、50%~150%)からランダムに選択される変倍率で変倍されてもよい。あるいは、前景パッチ及び背景パッチの各画素の輝度は、変更してもよい。この際、画像の輝度は、ガンマ補正を用いて、変更されてもよい。ガンマ値は、所定の範囲(例えば、0.1~10.0)からランダムに選択して決定される。
あるいは、前景パッチ及び前景パッチを合成したキャンパスパッチは、所定の範囲(例えば、-10度~10度)からランダムに選択された回転角度で回転されてもよい。変倍と回転を考慮して、前景パッチ及び背景パッチは、少し大きめのサイズ(例えば、合成領域の縦横2倍の大きさ/縦x横=512x512の大きさ)で切り出されてもよい。前景パッチ及び背景パッチは、最終的な入力画像、手書き抽出及び手書き領域推定の正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう、それらの中心部分から切り出される。このように、学習装置102は、生成した学習データを用いて、手書き抽出のNN及び手書き領域推定のNNを学習させることができる。
(学習処理)
図16(b)は、第2実施形態に係る学習処理のフローを示す図である。学習処理は、学習装置102の学習部113により実現される。学習処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施形態のNN1100の学習では、ミニバッチ法を用いる。S731~S735及びS737~S739の処理は、図7(b)と同様の処理であるので、説明を省略する。
S1651で、CPU231は、NN1100の抽出要否判定の誤差を算出する。CPU231は、S733で取得した特徴マップを、抽出判定部1132に入力してその出力を得る。出力は、入力画像(例えば、特徴マップ)が印刷画素を含む確率及び手書き画素を含む確率を示す2次元のベクトルである。CPU231は、出力と、学習データに含まれる抽出要否判定正解データとの誤差を求める。誤差の評価指標は、交差エントロピーが用いられる。
(帳票テキスト化処理)
図18(a)は、第2実施形態に係る帳票テキスト化処理のフローを示す図である。帳票テキスト化処理は、CPU261が、ストレージ265内の画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。帳票テキスト化処理は、ユーザが、画像処理サーバ103の電源をONにすると開始される。S951~S954及びS959~S967の処理は、図9(b)と同様の処理であるので、説明を省略する。
S1801で、CPU261は、S954で推定した手書き領域の中から一つの手書き領域を選択する。
S1802で、CPU261は、S953で取得した畳み込み層EC1、EC2、EC3、EC4が出力する特徴マップから、手書き領域に対応する部分の特徴マップを取得する。以下、各畳み込み層が出力する特徴マップ上の手書き領域に対応する領域の特徴マップ(部分特徴マップ)を「手書き領域特徴マップ」と呼称する。ここで、NN1100に入力した画像に対する手書き領域の推定結果と、畳み込み層EC1~EC4が出力する特徴マップの関係を説明する。
図19は、NN1100に入力した画像に対する手書き領域の推定結果と、畳み込み層EC1~EC4が出力する特徴マップの関係を説明する図である。NN1100は画像が入力されると、エンコーダ部1101はそれの各畳み込み層で特徴を抽出した特徴マップを出力する。領域推定デコーダ部1122は、特徴マップを処理して画像の各画素がいずれのクラスに属するかを推定する。エンコーダ部1101の各層が抽出した特徴マップ内の破線部分の特徴が、領域推定デコーダ部1122の各層で処理され、出力画像中の特徴マップ内の破線部分に対応する破線領域が、手書き領域として出力される。
また、畳み込み層EC1~EC3が出力する特徴マップは、プーリング層EP1、EP2及びEP3を経て、一定の倍率で解像度が落とされている。一方、領域推定デコーダ部1122の出力画像は、アップサンプリング層DUr1、DUr2及びDUr3を経て、畳み込み層EC1の特徴マップと同じ解像度となっている。
以上の手書き領域の推定結果と畳み込み層EC1~EC4が出力する特徴マップとの関係を踏まえて、手書き領域特徴取得処理を説明する。図18(b)は、手書き特徴取得処理フローを説明する図である。
S1851で、CPU261は、畳み込み層EC4が出力した特徴マップ上で、S1801で選択した手書き領域に対応する部分の特徴マップ(手書き領域特徴マップ)を取得する。具体的には、CPU261は、S1801で選択した手書き領域の領域座標情報に、畳み込み層EC1の出力と畳み込み層EC4の出力のサイズ比を乗算することにより、畳み込み層EC4の手書き領域特徴マップを算出する。畳み込み層EC4の手書き領域特徴マップは、画素抽出デコーダ部1112に入力する特徴マップと同じである。
S1852で、CPU261は、スキップコネクションのために、畳み込み層EC1、EC2、EC3の手書き領域特徴マップも導出する。ここで、図19に示すように、各畳み込み層の出力は、各畳み込み層の間のプーリング層EP1、EP2、EP3により、前段の層の出力解像度を半分にした特徴マップとして出力される。CPU261は、S1851で算出した畳み込み層EC4の手書き領域特徴マップの座標情報(縦位置と横位置及び幅と高さ)を2倍することで、畳み込み層EC3の手書き領域特徴マップを算出する。また、CPU261は、畳み込み層EC4の手書き領域特徴マップの座標情報を4倍することで、畳み込み層EC2の出力上の手書き領域特徴マップを算出する。また、CPU261は、畳み込み層EC4の手書き領域特徴マップの座標情報を8倍することで、畳み込み層EC1の手書き領域特徴マップを算出する。ここで、図18(a)に示す帳票テキスト化処理に戻る。
S1803で、CPU261は、S1802で導出した畳み込み層EC4が出力する手書き領域特徴マップを抽出判定部1132に入力し、S1801で選択した手書き領域について、手書き抽出を要するか否かを推定する。CPU261は、NN1100の出力として、手書き抽出の要否を示すデータを得る。なお、CPU261は、図16(a)の学習データ生成処理によって、記入欄をはみ出して罫線と交差する「手書き」を含む学習データを生成した。NN1100の抽出判定部1132は、上記の学習データを学習しているため、手書きが罫線と交差することにより手書き領域内に印刷画素が含まれる場合、手書き抽出を要することを示すデータを得る。抽出判定部1132は、上記の判定条件を満たさないと判定した場合、手書き抽出が不要であることを示すデータを得る。
S1804で、CPU261は、手書き抽出の要否を判定する。CPU261は、S1803で手書き抽出を要することを示すデータを得ており手書き抽出を要すると判定した場合(S1804でYes)、処理はS1805に進む。CPU261は、S1803で手書き抽出は不要であることを示すデータを得ておらず手書き抽出を要すると判定した場合(S1804でNo)、処理はS1806に進む。
S1805で、CPU261は、S1802で導出したエンコーダ部1101の畳み込み層EC1、EC2、EC3、EC4が出力する手書き領域特徴マップを、画素抽出デコーダ部1112に入力する。そして、CPU261は、畳み込み層EC1、EC2、EC3、EC4のそれぞれが出力する特徴マップ上の手書き領域の範囲内で手書き画素を画素抽出デコーダ部1112に推定させる。NN1100は、以下の画像データを出力する。画像データは、手書き領域と同じ画像サイズであり、予測結果として手書きであると判定された画素に手書きであること示す値が記録され、手書きではないと判定された画素に手書きではないことを示す値が記録された、画像データである。そして、NN1100は、画像データ中の手書きであることを示す値の画素と同じ位置の画素を、処理対象画像から抽出して手書き抽出画像を生成する。これにより、図10の手書き抽出画像1001の一部(S1801で選択した手書き領域に対応する部分)が得られる。手書き抽出画像1001は、図示のように、手書き領域における手書きの画素のみが含まれた画像である。
S1806で、CPU261は、処理対象画像中におけるS954で推定した手書き領域内の画素を、手書き抽出結果として手書き抽出画像を生成する。CPU261は、S1804で手書き抽出は不要と判定したが、これは手書き領域内に手書きの画素しか含まれないことを意味する。よって、CPU261は、処理対象画像上の領域で、S1801で選択した手書き領域に相当する領域内の画素を抽出して手書き抽出画像を生成する。これにより、CPU261は、図10の手書き抽出画像1001と同様の画像を得る。
S1807で、CPU261は、全ての手書き領域を処理したか否かを判定する。CPU261は、S954で推定した手書き領域の全てについて、S1802からS1806の処理を実行したと判定した場合(S1807でYes)、処理はS959に進む。CPU261は、上記の判定条件を満たさないと判定した場合(S1807でNo)、処理はS1801に戻り、次の手書き領域を処理する。
なお、S966でCPU261は、画像取得部111に、生成した帳票テキストデータに加えて、手書き領域ごとの抽出要否判定の結果を送信してもよい。この場合、画像取得部111は、S904において、表示デバイス210に処理結果である帳票データを表示する際に、抽出要否判定の結果に応じて表示態様を変更する。例えば、抽出要否判定の結果が「要」であった場合、すなわち、手書き抽出をした場合、表示デバイス210は、帳票テキストデータ表示領域562の表示枠を強調して表示する。このように、表示デバイス210は、手書き抽出が行われたことをユーザに示すことにより、手書き抽出による誤推定の可能性を示唆し、より慎重な処理結果の確認を促すことができる。
また、NN1100の学習時に手書き領域特徴マップが導出されてもよい。すなわち、S1651で学習データの抽出可否判定正解データが「混在」であった場合、CPU261は、S734で推定した手書き領域ごとに、S733で得た特徴マップから手書き領域特徴マップを導出する。そして、CPU261は、手書き領域特徴マップごとに抽出判定部1132に入力して、それの出力を得る。
当該手書き特徴マップに対応する手書き領域について、入力画像と手書き抽出正解画像とから、それぞれ該当する部分画像を得る。さらに両部分画像の差分画像を得る。手書き抽出正解画像の部分画像を参照すれば、当該手書き領域内の手書き画素の有無を得ることができる。当該差分画像を参照すれば、当該手書き領域内の印刷画素の有無を得ることができる。以上により、手書き領域ごとに抽出可否判定結果と抽出可否判定正解データを作成することができ、CPU261は、それらに基づいて誤差を求めることができる。
また、本実施形態ではS962で示したように、画素の連結性に基づいて活字領域の抽出を判定する方法を示したが、手書き領域推定と同様にNNを用いて活字領域を推定してもよい。手書き領域推定正解画像を作成した際と同じ要領で、活字領域をユーザが選択し、それに基づいて正解データの作成及び活字OCR領域推定を行うNNを新たに構成する。このNNに正解データを参照させて学習させてもよい。
本実施形態では、学習処理時に学習データ生成処理により学習データを生成した。しかしながら、事前に学習データ生成処理によって学習データを大量に生成しておいて、学習処理時にそこから随時、ミニバッチサイズ分を抽出して学習データとして用いても良い。本実施形態では、入力画像をグレースケール画像(A4縦、1248×1760×1)として生成したが、フルカラー画像等他の形式を有する入力画像を生成してもよい。
以上の通り、手書き領域推定と手書き画素抽出を行うNNは、手書き領域ごとに、それに対応する特徴マップの部分を得て、これをもとに抽出要否判定を行い、判定結果に応じて手書き抽出を行う。このように、認識対象のオブジェクトの領域の推定とオブジェクトの画素抽出を行うNNは、推定した領域ごとに画素抽出の要否を判定する判定部を設ける。第2実施形態によれば、不要な推定処理を低減し、これに伴う処理時間及び誤推定に伴う推定精度の低下を低減する。第2実施形態は、手書き領域ごとに手書き画素抽出の判定をするため、より必要に応じた画素抽出を実行することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
100:画像処理システム、101:画像処理装置、102:学習装置、103:画像処理サーバ、104:OCRサーバ、105:ネットワーク

Claims (15)

  1. 複数の識別対象が映る第1画像から特徴マップを取得する取得手段と、
    前記特徴マップに基づいて、前記第1画像内の前記複数の識別対象をそれぞれ包含する領域を推定する推定手段と、
    前記特徴マップに基づいて、前記第1画像内に背景の画素が含まれるか否かを判定する判定手段と、
    前記第1画像内に前記背景の画素が含まれると前記判定手段が判定した場合、前記特徴マップに基づいて、前記領域から識別対象の画素を抽出する抽出手段と、
    を備えることを特徴とする画像処理装置。
  2. 前記抽出手段は、前記第1画像内に前記背景の画素が含まれないと前記判定手段が判定した場合、それぞれの前記領域からの識別対象の画素の抽出を抑制する、
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記取得手段は、前記第1画像内に前記背景の画素が含まれると前記判定手段が判定した場合、それぞれの前記領域からの前記識別対象の画素の抽出結果に基づくOCR処理によって得られた、前記識別対象の第1テキストデータを取得し、
    前記第1画像内に前記背景の画素が含まれないと前記判定手段が判定した場合、それぞれの前記領域内の画像に対するOCR処理によって得られた、前記識別対象の第1テキストデータを取得する、
    ことを特徴とする請求項2に記載の画像処理装置。
  4. 前記判定手段は、それぞれの前記領域に対応する前記特徴マップの一部に基づいて、前記領域に背景の画素が含まれるか否かを判定し、
    前記抽出手段は、前記領域内に前記背景の画素が含まれると前記判定手段が判定した場合、前記領域から識別対象の画素を抽出する、
    ことを特徴とする請求項1に記載の画像処理装置。
  5. 前記抽出手段は、前記領域内に前記背景の画素が含まれないと前記判定手段が判定した場合、前記領域から識別対象の画素の抽出を抑制する、
    ことを特徴とする請求項4に記載の画像処理装置。
  6. 前記取得手段は、前記領域内に前記背景の画素が含まれると前記判定手段が判定した場合、前記領域からの識別対象の画素の抽出結果に基づくOCR処理によって得られた、前記識別対象の第1テキストデータを取得し、
    前記領域内に前記背景の画素が含まれないと前記判定手段が判定した場合、前記領域内の画像に対するOCR処理によって得られた、前記識別対象の第1テキストデータを取得する、
    ことを特徴とする請求項5に記載の画像処理装置。
  7. 前記取得手段は、前記第1画像から、前記複数の識別対象を除去した第2画像を取得し、前記第2画像に対するOCR処理によって得られた第2テキストデータを取得し、
    前記第2画像に対するOCR処理は、前記識別対象の画素の抽出結果に基づくOCR処理及び前記領域内の画像に対するOCR処理とは異なる処理である、
    ことを特徴とする請求項1から6のいずれか一項に記載の画像処理装置。
  8. 前記判定手段による判定を否定するユーザ指示を受け付ける受付手段を更に備え、
    前記抽出手段は、前記ユーザ指示が前記第1画像内に前記背景の画素が含まれることを示す場合、前記特徴マップに基づいて、前記領域から識別対象の画素を抽出し、及び、前記ユーザ指示が前記第1画像内に前記背景の画素が含まれないことを示す場合、前記特徴マップに基づいて、前記領域から識別対象の画素の抽出を抑制する、
    ことを特徴とする請求項1から7のいずれか一項に記載の画像処理装置。
  9. 第1テキストデータと前記第2テキストデータとを統合する統合手段を備える、
    ことを特徴とする請求項7に記載の画像処理装置。
  10. 前記領域の推定結果と、前記識別対象の識別結果と、の少なくとも一方を画面に表示させる表示制御手段を更に備え、
    前記表示制御手段は、前記判定手段による判定結果に応じて、前記画面の表示を変更する、
    ことを特徴とする請求項1から9のいずれか一項に記載の画像処理装置。
  11. 前記表示制御手段は、前記第1画像内又はそれぞれの前記領域内に前記背景の画素が含まれると前記判定手段が判定した場合、前記画面の前記領域の推定結果と、前記識別対象の識別結果と、の少なくとも一方の表示枠を強調して表示する、
    ことを特徴とする請求項10に記載の画像処理装置。
  12. 前記背景は、地紋、テクスチャ、活字及び罫線の少なくともいずれかを含む、
    ことを特徴とする請求項1から11のいずれか一項に記載の画像処理装置。
  13. 前記識別対象は、手書き文字、活字及び押印の少なくともいずれかを含む、
    ことを特徴とする請求項1から12のいずれか一項に記載の画像処理装置。
  14. 複数の識別対象が映る第1画像から特徴マップを取得する取得工程と、
    前記特徴マップに基づいて、前記第1画像内の前記複数の識別対象をそれぞれ包含する領域を推定する推定工程と、
    前記特徴マップに基づいて、前記第1画像内に背景の画素が含まれるか否かを判定する判定工程と、
    前記第1画像内に前記背景の画素が含まれると前記判定工程で判定された場合、前記特徴マップに基づいて、前記領域から識別対象の画素を抽出する抽出工程と、
    を備えることを特徴とする方法。
  15. コンピュータを、請求項1から13のいずれか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
JP2021148077A 2021-09-10 2021-09-10 画像処理装置、方法及びプログラム Pending JP2023040886A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021148077A JP2023040886A (ja) 2021-09-10 2021-09-10 画像処理装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021148077A JP2023040886A (ja) 2021-09-10 2021-09-10 画像処理装置、方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2023040886A true JP2023040886A (ja) 2023-03-23

Family

ID=85632371

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021148077A Pending JP2023040886A (ja) 2021-09-10 2021-09-10 画像処理装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2023040886A (ja)

Similar Documents

Publication Publication Date Title
JP7479925B2 (ja) 画像処理システム、画像処理方法、及びプログラム
US9922400B2 (en) Image display apparatus and image display method
US7551753B2 (en) Image processing apparatus and method therefor
US8112706B2 (en) Information processing apparatus and method
US20050271296A1 (en) Image processing apparatus, information processing apparatus, control method therefor, and program
US7876471B2 (en) Image processing apparatus, control method and program thereof which searches for corresponding original electronic data based on a paper document
US8412705B2 (en) Image processing apparatus, image processing method, and computer-readable storage medium
JP7387339B2 (ja) 画像処理システム、画像処理方法、及びプログラム
EP1752895A1 (en) Image processing apparatus for image retrieval and control method therefor
US11341733B2 (en) Method and system for training and using a neural network for image-processing
US9558433B2 (en) Image processing apparatus generating partially erased image data and supplementary data supplementing partially erased image data
US11568623B2 (en) Image processing apparatus, image processing method, and storage medium
US11418658B2 (en) Image processing apparatus, image processing system, image processing method, and storage medium
JP2019057174A (ja) スキャン画像から文字情報を取得する画像処理装置、画像処理方法、及びプログラム
US20220189186A1 (en) Image processing apparatus, image processing method, and non-transitory storage medium
US11436733B2 (en) Image processing apparatus, image processing method and storage medium
JP2023040886A (ja) 画像処理装置、方法及びプログラム
CN115797371A (zh) 一种图像处理方法、装置、图像形成装置和电子设备
JP7301529B2 (ja) 画像処理装置、画像処理方法、及びプログラム
US11380032B2 (en) Image information processing apparatus, method and non-transitory computer readable medium storing program
JP7379063B2 (ja) 画像処理システム、画像処理方法、及びプログラム
JP2023015483A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2021033577A (ja) 画像処理システムと画像処理方法、及びプログラム
JP2021131784A (ja) 画像処理システム、プログラム、画像処理方法
US20230029990A1 (en) Image processing system and image processing method