JP2023021595A - 画像処理装置、画像処理システム、画像処理方法、及びプログラム - Google Patents
画像処理装置、画像処理システム、画像処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2023021595A JP2023021595A JP2021126548A JP2021126548A JP2023021595A JP 2023021595 A JP2023021595 A JP 2023021595A JP 2021126548 A JP2021126548 A JP 2021126548A JP 2021126548 A JP2021126548 A JP 2021126548A JP 2023021595 A JP2023021595 A JP 2023021595A
- Authority
- JP
- Japan
- Prior art keywords
- image
- area
- handwritten
- image processing
- extracted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Character Input (AREA)
Abstract
【課題】手書き文字領域の推定精度を向上させる画像処理装置、画像処理システム及び画像処理方法を提供する。【解決手段】画像処理装置は、読取画像に対して、処理対象領域を抽出するための抽出処理を行うことにより、第1の領域を抽出する。さらに、読取画像における手書き部分を推定して、当該推定結果に基づき、手書き部分を抽出した手書き画像と、手書きではない部分を抽出した背景画像とを生成する。そして、手書き画像に対して、抽出処理を行うことにより、第2の領域を抽出し、背景画像に対して、抽出処理を行うことにより、第3の領域を抽出する。そして、抽出された第1の領域の座標位置と抽出された第2の領域の座標位置と抽出された第3の領域の座標位置とに基づいて、推定結果を補正するよう制御する。【選択図】図9B
Description
本発明は、画像処理装置、画像処理システム、画像処理方法、及びプログラムに関する。
近年、コンピュータの普及に伴う労働環境の変化により、業務資料の電子化が進んでいる。こうした電子化の対象は手書き文字が記入された文書にも及んでおり、手書き文字を抽出する技術が検討されている。特許文献1では、手書きと活字が混在した原稿から細線を抽出し、細線毎に輝度の分散に応じて手書きか否かを判定することで、手書き文字を抽出することが記載されている。
しかしながら、特許文献1に記載の技術は、文字の色やスキャン環境によっては輝度分散の小さい手書き細線が現れ、手書きとして判定されないことがある。また逆に、輝度分散の大きい活字細線が現れ、活字であるにも関わらず手書きと誤判定されることもある。そうなると、手書き文字の一部が欠損、或いは余計な細線が現れた状態で手書き文字が抽出され、手書き文字を高精度に認識することができない。
そこで本発明は、手書き文字領域の推定精度を向上させることを目的とする。
本発明の画像処理装置は、手書きを含む原稿の読取画像を取得する取得手段と、前記読取画像に対して、処理対象領域を抽出するための抽出処理を行うことにより、第1の領域を抽出する第1の抽出手段と、前記読取画像における、手書き部分を推定する推定手段と、前記推定手段による推定結果に基づき、手書き部分を抽出した手書き画像と、手書きではない部分を抽出した背景画像とを生成する生成手段と、前記手書き画像に対して、前記抽出処理を行うことにより、第2の領域を抽出する第2の抽出手段と、前記背景画像に対して、前記抽出処理を行うことにより、第3の領域を抽出する第3の抽出手段と、前記抽出された第1の領域の座標位置と前記抽出された第2の領域の座標位置と前記抽出された第3の領域の座標位置とに基づいて、前記推定結果を補正するよう制御する制御手段と、を有することを特徴とする。
本発明によれば、手書き文字領域の推定精度を向上させることができる。
以下、本発明の実施形態について、図面を参照して説明する。
[実施形態1]
<画像処理システム>
本実施形態では、合成して生成した学習データを用いて学習した手書き画素の推定を行うニューラルネットワークを用いて、手書き記入された帳票から手書き文字の領域を抽出し、記入内容を文字認識してDB(データベース)に保存する方法について説明する。
図1は、本実施形態に係る画像処理システムの全体構成例を示す図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106により構成される。画像処理装置101、学習装置102、画像処理サーバ103、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106は、ネットワーク107を介して相互に接続されている。
画像処理装置101は、スキャン機能と印刷機能を備えたデジタル複合機であり、例えばMFP(Multi Function Peripheral)である。
<画像処理システム>
本実施形態では、合成して生成した学習データを用いて学習した手書き画素の推定を行うニューラルネットワークを用いて、手書き記入された帳票から手書き文字の領域を抽出し、記入内容を文字認識してDB(データベース)に保存する方法について説明する。
図1は、本実施形態に係る画像処理システムの全体構成例を示す図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106により構成される。画像処理装置101、学習装置102、画像処理サーバ103、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106は、ネットワーク107を介して相互に接続されている。
画像処理装置101は、スキャン機能と印刷機能を備えたデジタル複合機であり、例えばMFP(Multi Function Peripheral)である。
画像処理システム100における学習フェーズでは、画像処理装置101は、白紙に手書きのみが記入された原稿をスキャンして画像データを生成する(以降、この画像データを「前景元画像」と呼称する)。画像処理装置101は、複数枚の原稿をスキャンして前景元画像を複数得る。前景元画像は、第1の読取画像の一例である。また、画像処理装置101は、電子文書を印刷し印刷原稿を出力する。さらに、この印刷原稿をスキャンして画像データを生成する(以降、この画像データを「背景元画像」と呼称する)。画像処理装置101は、複数枚の印刷原稿をスキャンして背景元画像を複数得る。背景元画像は、第2の読取画像の一例である。画像処理装置101は、ネットワーク107を介して、前景元画像と背景元画像を学習装置102に送信する。
学習装置102は、画像処理装置101から受信した前景元画像と背景元画像とを蓄積し、蓄積した画像を合成して手書き抽出を行うためのニューラルネットワークを学習する際に用いる学習データを生成する。そして、生成した学習データを用いてニューラルネットワークの学習を行って、学習結果(ニューラルネットワークのパラメータ等)を生成する。
学習装置102は、画像処理装置101から受信した前景元画像と背景元画像とを蓄積し、蓄積した画像を合成して手書き抽出を行うためのニューラルネットワークを学習する際に用いる学習データを生成する。そして、生成した学習データを用いてニューラルネットワークの学習を行って、学習結果(ニューラルネットワークのパラメータ等)を生成する。
画像処理システム100における利用フェーズでは、画像処理装置101は、手書き抽出を行う際に、手書きが含まれる帳票をスキャンして処理対象とする読取画像を生成する(以降、このスキャン画像データを「処理対象画像」と呼称する)。画像処理装置101は、画像生成装置の一例である。画像処理装置101は、ネットワーク107を介して、処理対象画像を画像処理サーバ103に送信する。
画像処理サーバ103は、画像処理装置101から受信した処理対象画像に対して手書き抽出を行う。この際、学習装置102は、ネットワーク107を介して、学習結果を画像処理サーバ103に送信する。画像処理装置101は、学習装置102から受信した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中の手書きの画素を推定する。そして、画像処理サーバ103は、推定結果に基づいて、活字OCRの対象とする領域と手書きOCRの対象とする領域を抽出し、これらの領域の情報を処理対象画像と共に活字OCRサーバ104と手書きOCRサーバ105に送信する。画像処理サーバ103は、画像処理装置の一例である。
画像処理サーバ103は、画像処理装置101から受信した処理対象画像に対して手書き抽出を行う。この際、学習装置102は、ネットワーク107を介して、学習結果を画像処理サーバ103に送信する。画像処理装置101は、学習装置102から受信した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中の手書きの画素を推定する。そして、画像処理サーバ103は、推定結果に基づいて、活字OCRの対象とする領域と手書きOCRの対象とする領域を抽出し、これらの領域の情報を処理対象画像と共に活字OCRサーバ104と手書きOCRサーバ105に送信する。画像処理サーバ103は、画像処理装置の一例である。
活字OCRサーバ104は、処理対象画像に含まれる活字に対して活字を文字認識するのに適したOCR(光学文字認識:Optical Character Recognition/Reader)を行う。活字OCRサーバ104は、画像処理サーバ103から、処理対象画像、及び処理対象画像上の領域であってOCRの対象とする活字を含む領域(以降、この領域を「活字対象領域」と呼称する)の情報を受信する。そして、処理対象画像中の活字対象領域に対してOCRを行ってテキストデータを取得する。活字OCRサーバ104は、当該テキストデータを画像処理サーバ103に送信する。
手書きOCRサーバ105は、処理対象画像に含まれる手書き文字に対して手書き文字を文字認識するのに適したOCRを行う。手書きOCRサーバ105は、画像処理サーバ103から、処理対象画像、及び処理対象画像上の領域であってOCRの対象とする手書き文字を含む領域(以降、この領域を「手書き対象領域」と呼称する)の情報を受信する。そして、処理対象画像中の手書き対象領域に対してOCRを行ってテキストデータを取得する。手書きOCRサーバ105は、当該テキストデータを画像処理サーバ103に送信する。
画像処理サーバ103は、活字OCRサーバ104及び手書きOCRサーバ105から受信したテキストデータを統合して、DBサーバ106に送信する。
DBサーバ106は、画像処理サーバ103から受信したテキストデータを帳票の記入内容を示す情報として、DBに保存する。DBに保存された情報は、他のシステムから参照することが可能である。
手書きOCRサーバ105は、処理対象画像に含まれる手書き文字に対して手書き文字を文字認識するのに適したOCRを行う。手書きOCRサーバ105は、画像処理サーバ103から、処理対象画像、及び処理対象画像上の領域であってOCRの対象とする手書き文字を含む領域(以降、この領域を「手書き対象領域」と呼称する)の情報を受信する。そして、処理対象画像中の手書き対象領域に対してOCRを行ってテキストデータを取得する。手書きOCRサーバ105は、当該テキストデータを画像処理サーバ103に送信する。
画像処理サーバ103は、活字OCRサーバ104及び手書きOCRサーバ105から受信したテキストデータを統合して、DBサーバ106に送信する。
DBサーバ106は、画像処理サーバ103から受信したテキストデータを帳票の記入内容を示す情報として、DBに保存する。DBに保存された情報は、他のシステムから参照することが可能である。
<各装置のハードウェア構成>
次に、図2を用いて、上述した画像処理システム100を構成する各装置のハードウェア構成について説明する。図2(a)は、画像処理装置101のハードウェア構成例を示す。図2(b)は、学習装置102のハードウェア構成例を示す。図2(c)は、画像処理サーバ103のハードウェア構成例を示す。なお、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106のハードウェア構成は、画像処理サーバ103と同様とし、説明を省略する。
次に、図2を用いて、上述した画像処理システム100を構成する各装置のハードウェア構成について説明する。図2(a)は、画像処理装置101のハードウェア構成例を示す。図2(b)は、学習装置102のハードウェア構成例を示す。図2(c)は、画像処理サーバ103のハードウェア構成例を示す。なお、活字OCRサーバ104、手書きOCRサーバ105、及びDBサーバ106のハードウェア構成は、画像処理サーバ103と同様とし、説明を省略する。
図2(a)に示すように、画像処理装置101は、次を備える。CPU201、ROM202、RAM204、プリンタデバイス205、スキャナデバイス206、原稿搬送デバイス207、ストレージ208、入力デバイス209、表示デバイス210、及び外部インタフェース211を備える。各デバイスは、データバス203によって相互通信可能に接続されている。
CPU201は、画像処理装置101を統括的に制御するためのコントローラである。CPU201は、ROM202に格納されているブートプログラムによりOS(オペレーティングシステム)を起動する。このOS上で、ストレージ208に記憶されているコントローラプログラムが実行される。コントローラプログラムは、画像処理装置101を制御するためのプログラムである。CPU201は、データバス203によって接続されている各デバイスを統括的に制御する。RAM204は、CPU201の主メモリやワークエリア等の一時記憶領域として動作する。
プリンタデバイス205は、CPU201の制御下で、画像データを用紙(記録材、シート)上に印刷する。これには感光体ドラムや感光体ベルトなどを用いた電子写真印刷方式や、微小ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式などがあるが、どの方式でもかまわない。スキャナデバイス206は、CPU201の制御下で、CCDなどの光学読取装置を用いて紙などの原稿上の走査を行い、電気信号データを得てこれを変換し、画像データ(読取画像)を生成する。また、ADF(オート・ドキュメント・フィーダ)などの原稿搬送デバイス207は、原稿搬送デバイス207上の原稿台に載置された原稿を1枚ずつスキャナデバイス206に搬送する。
ストレージ208は、HDDやSSDなどの、読み出しと書き込みが可能な不揮発メモリであり、ここには、前述のコントローラプログラムなど、様々なデータが記録される。入力デバイス209は、タッチパネルやハードキーなどから構成さる入力装置である。入力デバイス209は、ユーザの操作指示を受け付ける。そして、指示位置を含む指示情報をCPU201に伝達する。表示デバイス210は、LCDやCRTなどの表示装置である。表示デバイス210は、CPU201が生成した表示データを表示する。CPU201は、入力デバイス209より受信した指示情報と、表示デバイス210に表示させている表示データとから、いずれの操作が成されたかを判定する。そしてこの判定結果に応じて、画像処理装置101を制御するとともに、新たな表示データを生成し表示デバイス210に表示させる。
外部インタフェース211は、LANや電話回線、赤外線といった近接無線などのネットワークを介して、CPU201の制御下で、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース211は、学習装置102やPC(不図示)などの外部機器より、PDLデータを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解釈し、画像を生成する。CPU201は、生成した画像を、プリンタデバイス205により印刷したり、ストレージ208に記憶したりする。また、外部インタフェース211は、画像処理サーバ103などの外部機器より画像データを受信する。CPU201は、受信した画像データを、プリンタデバイス205により印刷したり、ストレージ208に記憶したり、外部インタフェース211により、他の外部機器に送信したりする。
図2(b)に示すように、学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、及びGPU239を備える。各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御するためのコントローラである。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ235に記憶されている学習データ生成プログラム及び学習プログラムを実行する。CPU231が学習データ生成プログラムを実行することより、学習データ生成部301(図3)としての機能が実現する。また、CPU231が学習プログラムを実行することにより、手書き画素の推定を行うニューラルネットワークを学習する学習部302(図3)としての機能が実現する。CPU231は、データバス233などのバスを介して各部を制御する。RAM234は、CPU231のメインメモリやワークエリア等の一時記憶領域として動作する。
CPU231は、学習装置102の全体を制御するためのコントローラである。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ235に記憶されている学習データ生成プログラム及び学習プログラムを実行する。CPU231が学習データ生成プログラムを実行することより、学習データ生成部301(図3)としての機能が実現する。また、CPU231が学習プログラムを実行することにより、手書き画素の推定を行うニューラルネットワークを学習する学習部302(図3)としての機能が実現する。CPU231は、データバス233などのバスを介して各部を制御する。RAM234は、CPU231のメインメモリやワークエリア等の一時記憶領域として動作する。
ストレージ235は、読み出しと書き込みが可能な不揮発メモリであり、前述の学習データ生成プログラムや学習プログラム、画像処理装置101が生成した前景元画像と背景元画像、後述する学習データ生成処理(図5)で生成した学習データを記憶する。
入力デバイス236は、マウスやキーボードなどから構成さる入力装置である。表示デバイス237は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース238は、図2(a)を用いて説明した外部インタフェース211と同様である。
GPU239は、画像処理プロセッサであり、CPU231と協働して画像データの生成やニューラルネットワークの学習を行う。
入力デバイス236は、マウスやキーボードなどから構成さる入力装置である。表示デバイス237は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース238は、図2(a)を用いて説明した外部インタフェース211と同様である。
GPU239は、画像処理プロセッサであり、CPU231と協働して画像データの生成やニューラルネットワークの学習を行う。
図2(c)に示すように、画像処理サーバ103は、CPU261、ROM262、RAM264、ストレージ265、入力デバイス266、表示デバイス267、及び外部インタフェース268を備える。各部は、データバス263を介して相互にデータを送受信することができる。
CPU261は、画像処理サーバ103の全体を制御するためのコントローラである。CPU261は、不揮発メモリであるROM262に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ265に記憶されている画像処理プログラムを実行する。CPU261がこの画像処理プログラムを実行することより、後述するフローチャートに示す処理が実現する。CPU261は、データバス263などのバスを介して各部を制御する。
RAM264は、CPU261のメインメモリやワークエリア等の一時記憶領域として動作する。ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記憶する。
入力デバイス266は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス267は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース268は、図2(a)を用いて説明した外部インタフェース211と同様である。
CPU261は、画像処理サーバ103の全体を制御するためのコントローラである。CPU261は、不揮発メモリであるROM262に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ265に記憶されている画像処理プログラムを実行する。CPU261がこの画像処理プログラムを実行することより、後述するフローチャートに示す処理が実現する。CPU261は、データバス263などのバスを介して各部を制御する。
RAM264は、CPU261のメインメモリやワークエリア等の一時記憶領域として動作する。ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記憶する。
入力デバイス266は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス267は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース268は、図2(a)を用いて説明した外部インタフェース211と同様である。
図3は、学習装置102の機能構成例を示すブロック図である。学習装置102は、学習データ生成部301と学習部302の機能を有する。CPU231がストレージ235に記憶されている学習データ生成プログラムをRAM234に展開して実行することより、学習データ生成部301としての機能が実現する。また、CPU231がストレージ235に記憶されている学習プログラムをRAM234に展開して実行することにより、手書き画素の推定を行うニューラルネットワークを学習する学習部302としての機能が実現する。また、CPU231が、学習データ生成部301や学習部302が実行する計算処理の一部を、GPU239と協働して実行する。
学習データ生成部301は、ニューラルネットワークを学習するための学習データを生成する。
学習部302は、学習データ生成部301が生成した学習データを用いて、ニューラルネットワークを学習する。
学習データ生成部301は、ニューラルネットワークを学習するための学習データを生成する。
学習部302は、学習データ生成部301が生成した学習データを用いて、ニューラルネットワークを学習する。
続いて図4~図8を用いて、本実施形態に係る画像処理システム100が学習フェーズで実行する処理について説明する。
<学習処理>
図4は、学習処理を示すフローチャートである。本フローチャートは、学習装置102の学習部302により実現される。本フローチャートは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。以下、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。
<学習処理>
図4は、学習処理を示すフローチャートである。本フローチャートは、学習装置102の学習部302により実現される。本フローチャートは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。以下、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。
まずS401において、CPU231は、ニューラルネットワークを初期化する。具体的には、CPU231は、ニューラルネットワークを構築し、当該ニューラルネットワークに含まれる各パラメータの値を、ランダムに決定して初期化する。構築するニューラルネットワークの構造は、様々なものを用いることができるが、例えばFCN(Fully Convolutional Networks)の形態を取り得る。
S402において、CPU231は、学習データを取得する。CPU231は、学習データ生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。なお、事前の学習データ生成処理によって生成した大量の学習データから、ミニバッチサイズ分の学習データを取得してもよい。学習データ生成処理については、図5で後述する。
S403において、CPU231は、ニューラルネットワークの誤差を算出する。具体的には、CPU231は、各学習データに含まれる入力画像をニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書きであると判定された画素は、手書きを示す値を有し、手書きではないと判定された画素は、手書きではないことを示す値を有する画像である。そして、CPU231は、当該出力と正解ラベル画像との差を評価して誤差を求める。当該評価には指標として交差エントロピーを用いることができる。
S402において、CPU231は、学習データを取得する。CPU231は、学習データ生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。なお、事前の学習データ生成処理によって生成した大量の学習データから、ミニバッチサイズ分の学習データを取得してもよい。学習データ生成処理については、図5で後述する。
S403において、CPU231は、ニューラルネットワークの誤差を算出する。具体的には、CPU231は、各学習データに含まれる入力画像をニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズであり、予測結果として、手書きであると判定された画素は、手書きを示す値を有し、手書きではないと判定された画素は、手書きではないことを示す値を有する画像である。そして、CPU231は、当該出力と正解ラベル画像との差を評価して誤差を求める。当該評価には指標として交差エントロピーを用いることができる。
S404において、CPU231は、ニューラルネットワークのパラメータを調整する。具体的には、CPU231は、S403において算出した誤差をもとに、バックプロパゲーション法によってニューラルネットワークのパラメータの値を変更する。
S405において、CPU231は、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S402~S404の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザの操作入力などにより、予め決定することができる。CPU231が処理回数が所定回数に達したと判定した場合、処理はS406に遷移する。CPU231が処理回数が所定回数に達していないと判定した場合、処理はS402に遷移し、CPU231はニューラルネットワークの学習を継続する。
S406において、CPU231は、学習結果として、S404において調整したニューラルネットワークのパラメータを、画像処理サーバ103に送信する。その後、本フローチャートの処理が終了する。
以上のような学習処理によれば、学習データを用いて手書き画素の推定を行うニューラルネットワークの学習を行うことができる。
S405において、CPU231は、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S402~S404の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザの操作入力などにより、予め決定することができる。CPU231が処理回数が所定回数に達したと判定した場合、処理はS406に遷移する。CPU231が処理回数が所定回数に達していないと判定した場合、処理はS402に遷移し、CPU231はニューラルネットワークの学習を継続する。
S406において、CPU231は、学習結果として、S404において調整したニューラルネットワークのパラメータを、画像処理サーバ103に送信する。その後、本フローチャートの処理が終了する。
以上のような学習処理によれば、学習データを用いて手書き画素の推定を行うニューラルネットワークの学習を行うことができる。
<学習データ生成処理>
次に、図4のS402で実行される学習データ生成処理について説明する。図5は、学習データ生成処理を示すフローチャートである。本フローチャートは、学習装置102の学習データ生成部301により実現される。図6~図8は、学習データ生成処理で生成されるデータを説明するための図である。
まずS501において、CPU231は、ストレージ235に記憶している前景元画像を選択して読み出す。図6は、前景元画像の例を示す。前景元画像は手書きのみが書かれた画像であり、白紙に手書きのみが記入された原稿を画像処理装置101でスキャンすることで生成される。前景元画像はストレージ235に予め複数記録されているとする。本ステップでは、複数の前景元画像の中からランダムにひとつを選択する。ここでは図6の前景元画像601~603のうち、前景元画像601が選択されたものとして説明する。
S502において、CPU231は、S501で読み出した前景元画像を回転して加工する。回転角度は所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する。
次に、図4のS402で実行される学習データ生成処理について説明する。図5は、学習データ生成処理を示すフローチャートである。本フローチャートは、学習装置102の学習データ生成部301により実現される。図6~図8は、学習データ生成処理で生成されるデータを説明するための図である。
まずS501において、CPU231は、ストレージ235に記憶している前景元画像を選択して読み出す。図6は、前景元画像の例を示す。前景元画像は手書きのみが書かれた画像であり、白紙に手書きのみが記入された原稿を画像処理装置101でスキャンすることで生成される。前景元画像はストレージ235に予め複数記録されているとする。本ステップでは、複数の前景元画像の中からランダムにひとつを選択する。ここでは図6の前景元画像601~603のうち、前景元画像601が選択されたものとして説明する。
S502において、CPU231は、S501で読み出した前景元画像を回転して加工する。回転角度は所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する。
S503において、CPU231は、前景元画像の一部(例えば、縦×横=512×512の大きさ)を切り出した画像データを生成する(以降、この画像データを「前景画像」と呼称する)。切り出す位置はランダムに決定する。
S504において、CPU231は、S503で生成した前景画像を、変倍して加工する。変倍率は所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する。さらに、変倍後の前景画像の一部(例えば、縦×横=256×256の大きさ)を中央から切り出して前景画像を更新する。
S505において、CPU231は、前景画像の各画素の輝度を変更して加工する。CPU231は、前景画像をグレースケール化し、そしてガンマ補正を用いて前景画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。この時点での前景画像の例を図8(a)に示す。
S504において、CPU231は、S503で生成した前景画像を、変倍して加工する。変倍率は所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する。さらに、変倍後の前景画像の一部(例えば、縦×横=256×256の大きさ)を中央から切り出して前景画像を更新する。
S505において、CPU231は、前景画像の各画素の輝度を変更して加工する。CPU231は、前景画像をグレースケール化し、そしてガンマ補正を用いて前景画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。この時点での前景画像の例を図8(a)に示す。
S506において、CPU231は、ストレージ235に記憶している背景元画像を選択して読み出す。図7は、背景元画像の例を示す。背景元画像は画像処理装置101で電子文書をプリントした原稿をそのままスキャンすることで生成される。この原稿は、手書きを含まず、活字や罫線等の帳票に印刷されるようなオブジェクトのみを含む。本実施形態では、利用フェーズでスキャンされる帳票と特徴(活字の大きさ、罫線の有無など)の似た電子文書を用いる。また、帳票に記入された手書き文字を対象とするため、帳票の手書き記入される領域を背景元画像として用いる。背景元画像はストレージ235に予め複数記録されているものとし、ここではその中からランダムにひとつを選択する。
S507において、CPU231は、S506で読み出した背景元画像を回転して加工する。回転角度は所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する。
S508において、CPU231は、背景元画像の一部(S503で前景画像を切り出したときと同じ大きさ)を切り出して画像データを生成する(以降、この画像データを「背景画像」と呼称する)。切り出す位置はランダムに決定する。
S509において、CPU231は、S508で生成した背景画像を、変倍して加工する。変倍率は所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する。さらに、変倍後の背景画像の一部(S504で前景画像を切り出したときと同じ大きさ)を中央から切り出して背景画像を更新する。
S510において、CPU231は、背景画像の各画素の輝度を変更して加工する。CPU231は、背景画像をグレースケール化し、そしてガンマ補正を用いて背景画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。この時点での背景画像の例を図8(b)に示す。
S507において、CPU231は、S506で読み出した背景元画像を回転して加工する。回転角度は所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する。
S508において、CPU231は、背景元画像の一部(S503で前景画像を切り出したときと同じ大きさ)を切り出して画像データを生成する(以降、この画像データを「背景画像」と呼称する)。切り出す位置はランダムに決定する。
S509において、CPU231は、S508で生成した背景画像を、変倍して加工する。変倍率は所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する。さらに、変倍後の背景画像の一部(S504で前景画像を切り出したときと同じ大きさ)を中央から切り出して背景画像を更新する。
S510において、CPU231は、背景画像の各画素の輝度を変更して加工する。CPU231は、背景画像をグレースケール化し、そしてガンマ補正を用いて背景画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。この時点での背景画像の例を図8(b)に示す。
以上のようなステップにより、以降のステップで学習データを生成する際に合成対象となる前景画像と背景画像が得られる。本実施形態において、学習装置102は、前景画像と背景画像のそれぞれに、回転、変倍、及び輝度の変更を行う。これにより、学習データの多様性が得られ、当該学習データを用いて学習するニューラルネットワークの汎化性能を向上できる。なお、前景画像と背景画像のそれぞれに対して行う画像処理は、回転、変倍、及び輝度の変更に限られない。また、回転、変倍、及び輝度の変更のうちの何れかを選択的に行ってもよい。また、学習装置102は、前景元画像及び背景元画像を、そのままの大きさで用いるのではなく、より小さな部分画像をランダムに切り出して用いる。これにより、学習処理でRAM234に展開したり、CPU231やGPU239が参照したりする際の効率性が考慮されるとともに、各一枚の前景元画像と背景元画像から、複数且つ多様な学習データを生成することができる。
S511において、CPU231は、前景画像に対して正解ラベル画像を生成する。まず、CPU231は、前景画像に対して二値化処理を行う。そして、予め定めた閾値よりも低い値である画素の値を、手書きを示す値(例えば255、以降も同様)とし、他の画素の値を、手書きではないことを示す値(例えば0、以降も同様)とした画像データを、前景画像に対する正解ラベル画像として生成する。図8(a)の前景画像から生成された正解ラベル画像の例を図8(c)に示す。図8(c)における白画素が、手書きを示す値を有する画素である。
S512において、CPU231は、学習データの入力画像を生成する。CPU231は、前景画像と背景画像のそれぞれ同じ座標を比較し、輝度の低い方の画素値を採用した新しい画像を作ることで画像の合成を行う。図8(a)の前景画像と図8(b)の背景画像を合成して生成された入力画像の例を図8(d)に示す。
S513において、CPU231は、S512で合成して生成した入力画像と、S511で生成した正解ラベル画像(正解データ)とを対応付け、学習データとしてストレージ235の所定の領域に保存する。CPU231は、予め決定された学習データの数が生成されるまで、本フローチャートに示す一連の処理を繰り返し実行する。
S512において、CPU231は、学習データの入力画像を生成する。CPU231は、前景画像と背景画像のそれぞれ同じ座標を比較し、輝度の低い方の画素値を採用した新しい画像を作ることで画像の合成を行う。図8(a)の前景画像と図8(b)の背景画像を合成して生成された入力画像の例を図8(d)に示す。
S513において、CPU231は、S512で合成して生成した入力画像と、S511で生成した正解ラベル画像(正解データ)とを対応付け、学習データとしてストレージ235の所定の領域に保存する。CPU231は、予め決定された学習データの数が生成されるまで、本フローチャートに示す一連の処理を繰り返し実行する。
以上のような学習データ生成処理によれば、手書き画素の推定を行うニューラルネットワークの学習を行うための学習データを生成することができる。
続いて図9A~図13を用いて、本実施形態に係る画像処理システム100が利用フェーズで実行する処理について説明する。利用フェーズではまず、画像処理装置101が、活字及び手書き文字を含む原稿をスキャンして処理対象画像を生成する。そして、処理対象画像を画像処理サーバ103に送信して、活字及び手書き文字のOCRを依頼する。
<OCR依頼処理>
図9A(a)は、OCR依頼処理を示すフローチャートである。本フローチャートは、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。本フローチャートは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
図9A(a)は、OCR依頼処理を示すフローチャートである。本フローチャートは、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。本フローチャートは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
S901において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして処理対象画像(読取画像)を生成する。処理対象画像は、フルカラー(RGB3チャネル)の画像データとして生成される。図10(a)は、スキャンする原稿の例を示す。図10(a)に示すように、原稿は登録票などの帳票であり、帳票における各項目の右側に手書き文字が記入されている。
S902において、CPU201は、S901で生成した処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。その後、本フローチャートの処理が終了する。
S902において、CPU201は、S901で生成した処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。その後、本フローチャートの処理が終了する。
<OCR処理>
次に、画像処理サーバ103によるOCR処理について説明する。画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、当該処理対象画像に含まれる活字や手書き文字をOCRしてテキストデータを得る。活字に対するOCRは、活字OCRサーバ104に実行させる。手書き文字に対するOCRは、手書きOCRサーバ105に実行させる。図9A(b)は、このOCR処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
次に、画像処理サーバ103によるOCR処理について説明する。画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、当該処理対象画像に含まれる活字や手書き文字をOCRしてテキストデータを得る。活字に対するOCRは、活字OCRサーバ104に実行させる。手書き文字に対するOCRは、手書きOCRサーバ105に実行させる。図9A(b)は、このOCR処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
まずS921において、CPU261は、手書き画素の推定を行うニューラルネットワークをロードする。まず、CPU261は、図4のフローチャートのS401の場合と同一のニューラルネットワークを構築する。そして、図4のフローチャートのS406において、学習装置102から送信された学習結果(ニューラルネットワークのパラメータ)を、構築したニューラルネットワークに反映する。
S922において、CPU261は、外部インタフェース268を介して、画像処理装置101から処理対象画像を受信したか否かを判定する。処理対象画像を受信していた場合、処理はS923に遷移する。受信していない場合、処理はS937に遷移する。本フローチャートでは、処理対象画像として、図10(a)に示す原稿をスキャンして得られた処理対象画像として受信したものとする。
S922において、CPU261は、外部インタフェース268を介して、画像処理装置101から処理対象画像を受信したか否かを判定する。処理対象画像を受信していた場合、処理はS923に遷移する。受信していない場合、処理はS937に遷移する。本フローチャートでは、処理対象画像として、図10(a)に示す原稿をスキャンして得られた処理対象画像として受信したものとする。
S923において、CPU261は、S922で受信した処理対象画像に対して処理対象領域抽出処理を行い、処理対象画像に含まれる手書き文字及び活字の領域を処理対象領域として抽出する。処理対象領域抽出処理の詳細は、図9B(a)で後述する。図10(a)の処理対象画像について処理領域抽出処理を行った結果として得えられた処理対象領域を、図12(a)の領域1201~1205に示す。
S924において、CPU261は、S922で受信した処理対象画像から手書き部分を抽出する。まずCPU261は、処理対象画像をグレースケール化する。そして、このグレースケール化した処理対象画像を、S921で構築したニューラルネットワークに入力して、各画素について手書きであるかを判定し、手書きの画素を推定する。この結果として、処理対象画像と同じサイズであり、手書きであると判定された画素には、手書きであること示す値(例えば1)、手書きではないと判定された画素には、手書きではないことを示す値(例えば0)が、それぞれ記録された画像データが得られる。以降、この画像データを「推定結果」と呼称する。図10(a)の処理対象画像について手書き画素を抽出した結果を表す画像を図10(b)に示す。図10(b)では、結果を見やすくするために、値が0の画素を黒画素で表現し、値が1の画素を白画素で表現している。この時点で、2箇所の誤判定がある。1箇所目として、活字である「登録票」の「票」の文字の一部が手書きとして誤判定されている。2箇所目として、手書き文字である「田中太郎」の「中」上部が背景として誤判定されている。
S925において、CPU261は、S924の推定結果について手書き判定を補正する補正処理を行って、手書き判定の誤りを補正する。補正処理の詳細は、図9B(b)で後述する。図10(b)の推定結果を補正した結果を表す画像を図10(c)に示す。補正処理によって、誤判定されていた箇所が補正されているのがわかる。
S924において、CPU261は、S922で受信した処理対象画像から手書き部分を抽出する。まずCPU261は、処理対象画像をグレースケール化する。そして、このグレースケール化した処理対象画像を、S921で構築したニューラルネットワークに入力して、各画素について手書きであるかを判定し、手書きの画素を推定する。この結果として、処理対象画像と同じサイズであり、手書きであると判定された画素には、手書きであること示す値(例えば1)、手書きではないと判定された画素には、手書きではないことを示す値(例えば0)が、それぞれ記録された画像データが得られる。以降、この画像データを「推定結果」と呼称する。図10(a)の処理対象画像について手書き画素を抽出した結果を表す画像を図10(b)に示す。図10(b)では、結果を見やすくするために、値が0の画素を黒画素で表現し、値が1の画素を白画素で表現している。この時点で、2箇所の誤判定がある。1箇所目として、活字である「登録票」の「票」の文字の一部が手書きとして誤判定されている。2箇所目として、手書き文字である「田中太郎」の「中」上部が背景として誤判定されている。
S925において、CPU261は、S924の推定結果について手書き判定を補正する補正処理を行って、手書き判定の誤りを補正する。補正処理の詳細は、図9B(b)で後述する。図10(b)の推定結果を補正した結果を表す画像を図10(c)に示す。補正処理によって、誤判定されていた箇所が補正されているのがわかる。
S926において、CPU261は、S925で補正した推定結果をマスクとして、手書きだけを抽出した画像を生成する。具体的には、まずCPU261が処理対象画像と同じサイズの画像を生成し、推定結果が手書きの座標については、処理対象画像の画素値を代入し、推定結果が手書きではない座標については、255を代入する。以降、この画像を「手書き抽出画像」と呼称する。図10(c)の補正された推定結果をマスクとして生成した手書き抽出画像を図11(a)に示す。
S927において、CPU261は、手書き抽出画像を対象に処理対象領域抽出処理を行い、手書き抽出画像に含まれる手書きOCRの対象とする領域(手書き対象領域)を決める。この処理の詳細はS923と同様であり、図9B(a)で後述する。図11(a)の手書き抽出画像について処理対象領域抽出処理を行った結果として得られた手書き対象領域を図12(b)の領域1221~1224に示す。
S928において、CPU261は、手書き対象領域と手書き抽出画像とを、外部インタフェース268を介して、手書きOCRサーバ105に送信し、手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。
S929において、CPU261は、手書きOCRサーバ105から、手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCRサーバ105が、手書き対象領域に含まれていた手書き文字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して手書きOCRサーバ105から手書きOCR結果を受信したと判定するまでS929の処理を繰り返し、受信したと判定した場合、処理はS930に遷移する。
S927において、CPU261は、手書き抽出画像を対象に処理対象領域抽出処理を行い、手書き抽出画像に含まれる手書きOCRの対象とする領域(手書き対象領域)を決める。この処理の詳細はS923と同様であり、図9B(a)で後述する。図11(a)の手書き抽出画像について処理対象領域抽出処理を行った結果として得られた手書き対象領域を図12(b)の領域1221~1224に示す。
S928において、CPU261は、手書き対象領域と手書き抽出画像とを、外部インタフェース268を介して、手書きOCRサーバ105に送信し、手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。
S929において、CPU261は、手書きOCRサーバ105から、手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCRサーバ105が、手書き対象領域に含まれていた手書き文字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して手書きOCRサーバ105から手書きOCR結果を受信したと判定するまでS929の処理を繰り返し、受信したと判定した場合、処理はS930に遷移する。
続いてS930において、CPU261は、S925で補正した推定結果をマスクとして、背景だけを抽出した画像を生成する。具体的には、まずCPU261が処理対象画像と同じサイズの画像を生成し、推定結果が手書きではない座標については、処理対象画像の画素値を代入し、推定結果が手書きの座標については、255を代入する。以降、この画像を「背景抽出画像」と呼称する。図10(c)の補正された推定結果をマスクとして生成した背景抽出画像を図11(b)に示す。
S931において、CPU261は、背景抽出画像を対象に処理対象領域抽出処理を行い、背景抽出画像に含まれる活字OCRの対象とする領域(活字対象領域)を決める。この処理の詳細はS923と同様であり、図9B(a)で後述する。図11(b)の背景抽出画像について処理対象領域抽出処理を行った結果として得られた活字対象領域を図12(c)の領域1241~1245に示す。
S932において、CPU261は、S931で得た活字対象領域と背景抽出画像とを、外部インタフェース268を介して、活字OCRサーバ104に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
S933において、CPU261は、活字OCRサーバ104から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCRサーバ104が、活字対象領域に含まれていた活字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して活字OCRサーバ104からから活字OCR結果を受信したと判定するまでS933の処理を繰り返し、受信したと判定した場合、処理はS934に遷移する。
S931において、CPU261は、背景抽出画像を対象に処理対象領域抽出処理を行い、背景抽出画像に含まれる活字OCRの対象とする領域(活字対象領域)を決める。この処理の詳細はS923と同様であり、図9B(a)で後述する。図11(b)の背景抽出画像について処理対象領域抽出処理を行った結果として得られた活字対象領域を図12(c)の領域1241~1245に示す。
S932において、CPU261は、S931で得た活字対象領域と背景抽出画像とを、外部インタフェース268を介して、活字OCRサーバ104に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
S933において、CPU261は、活字OCRサーバ104から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCRサーバ104が、活字対象領域に含まれていた活字を認識して得たテキストデータである。CPU261が外部インタフェース268を介して活字OCRサーバ104からから活字OCR結果を受信したと判定するまでS933の処理を繰り返し、受信したと判定した場合、処理はS934に遷移する。
続いてS934において、CPU261は、各処理対象領域についてOCR結果を集計する。まずCPU261は、S923で得た処理対象領域のうち、S927で得た手書き対象領域と、S931で得た活字対象領域のどちらかのみを含むものについては、そのOCR結果をそのまま処理対象領域のOCR結果とする。また、処理対象領域内に、手書き対象領域と活字対象領域の両方を含むものについては、手書きOCR結果と活字OCR結果を、処理対象領域での位置関係に応じて並べたものを処理対象領域のOCR結果とする。
図12を用いて本ステップの処理について説明する。例えば、処理対象領域1203は手書き対象領域1221のみを含むため、そのOCR結果である「田中太郎」をOCR結果とする。一方、処理対象領域1205は手書き対象領域1222,1223,1224及び活字対象領域1244,1245を含むため、各OCR結果を元の位置関係の順番に並べて「02-(32)-1268」をOCR結果とする。
図12を用いて本ステップの処理について説明する。例えば、処理対象領域1203は手書き対象領域1221のみを含むため、そのOCR結果である「田中太郎」をOCR結果とする。一方、処理対象領域1205は手書き対象領域1222,1223,1224及び活字対象領域1244,1245を含むため、各OCR結果を元の位置関係の順番に並べて「02-(32)-1268」をOCR結果とする。
S935において、CPU261は、各処理対象領域のOCR結果を統合する。ここでは各処理対象領域について、その位置関係や、意味的な妥当性を評価することで、項目と値のペアを推定する。例えば、処理対象領域1202に対し、最も近い処理対象領域は領域1203であり、且つ領域1202のOCR結果「氏名」が項目名だとすると、領域1203のOCR結果「田中太郎」は氏名を含むので値としての妥当性が高い。よって、領域1202のOCR結果と領域1203のOCR結果を、氏名に関する項目と値のペアであると推定する。同様の方法で、領域1204と領域1205のOCR結果もそれぞれ項目と値のペアであると推定する。
S936において、CPU261は、S935で得た項目と値のペアを、外部インタフェース268を介して、DBサーバ106に送信して保存させる。
S937において、CPU261は、一連の処理を終了するか否かを判定する。CPU261が画像処理サーバ103の電源のOFFなどの所定の操作を検知しない限り、処理はS922に遷移する。CPU261が所定の操作を検知した場合には、本フローチャートの処理が終了する。
以上のようなOCR処理によれば、手書きと活字が混在する処理対象画像から、手書き文字のみの領域と活字のみの領域とを抽出し、各領域に対して行った文字認識の結果をDBサーバ106に保存することができる。
S936において、CPU261は、S935で得た項目と値のペアを、外部インタフェース268を介して、DBサーバ106に送信して保存させる。
S937において、CPU261は、一連の処理を終了するか否かを判定する。CPU261が画像処理サーバ103の電源のOFFなどの所定の操作を検知しない限り、処理はS922に遷移する。CPU261が所定の操作を検知した場合には、本フローチャートの処理が終了する。
以上のようなOCR処理によれば、手書きと活字が混在する処理対象画像から、手書き文字のみの領域と活字のみの領域とを抽出し、各領域に対して行った文字認識の結果をDBサーバ106に保存することができる。
<処理対象領域抽出処理>
次に、図9A(b)のS923,S927,S931、及び後述する図9B(b)のS972,S974で実行される処理対象領域抽出処理について説明する。図9B(a)は、処理対象領域抽出処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS923,S927,S931で、それぞれ処理対象画像、手書き抽出画像、背景抽出画像を入力として実行される。また、本フローチャートは、図9B(b)のS972,S974で、それぞれ処理対象画像、補正前手書き抽出画像、補正前背景抽出画像を入力として実行される。
まずS951において、CPU261は、入力画像に収縮処理を掛ける。これにより、文字が太らされて、文字を構成する部首や点などの小さなパーツが周辺の文字と繋がり、後段の処理(S953)でこれらがノイズとして扱われることを抑制することができる。
S952において、CPU261は、黒画素が連結している領域の外接矩形を取得する。CPU261は、S951で収縮処理した画像に対して、黒画素が連結している領域を探索し、探索された全ての領域について個別に外接矩形を生成する。
S953において、CPU261は、S952で生成した外接矩形の中から、文字のものである可能性の低い矩形を除外する。例えば、矩形の辺の長さや面積に所定範囲を設け、当該所定範囲から外れるものについては文字ではないと推定して取り除く。これにより、図表を囲っている大きな矩形や、小さなノイズを囲っている極小の矩形を除外することができる。
S954において、CPU261は、近接する外接矩形同士を連結する。CPU261は、S953の結果残った各矩形について、その左右の一定の距離内に別の矩形がある場合は、それらの矩形を全て結合した新しい矩形に置き換える。これにより、文字単体ではなく単語や文章全体などのまとまりを囲う矩形を形成できる。この結果得られた各矩形を、処理対象領域とする。その後、本フローチャートが終了する。
次に、図9A(b)のS923,S927,S931、及び後述する図9B(b)のS972,S974で実行される処理対象領域抽出処理について説明する。図9B(a)は、処理対象領域抽出処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS923,S927,S931で、それぞれ処理対象画像、手書き抽出画像、背景抽出画像を入力として実行される。また、本フローチャートは、図9B(b)のS972,S974で、それぞれ処理対象画像、補正前手書き抽出画像、補正前背景抽出画像を入力として実行される。
まずS951において、CPU261は、入力画像に収縮処理を掛ける。これにより、文字が太らされて、文字を構成する部首や点などの小さなパーツが周辺の文字と繋がり、後段の処理(S953)でこれらがノイズとして扱われることを抑制することができる。
S952において、CPU261は、黒画素が連結している領域の外接矩形を取得する。CPU261は、S951で収縮処理した画像に対して、黒画素が連結している領域を探索し、探索された全ての領域について個別に外接矩形を生成する。
S953において、CPU261は、S952で生成した外接矩形の中から、文字のものである可能性の低い矩形を除外する。例えば、矩形の辺の長さや面積に所定範囲を設け、当該所定範囲から外れるものについては文字ではないと推定して取り除く。これにより、図表を囲っている大きな矩形や、小さなノイズを囲っている極小の矩形を除外することができる。
S954において、CPU261は、近接する外接矩形同士を連結する。CPU261は、S953の結果残った各矩形について、その左右の一定の距離内に別の矩形がある場合は、それらの矩形を全て結合した新しい矩形に置き換える。これにより、文字単体ではなく単語や文章全体などのまとまりを囲う矩形を形成できる。この結果得られた各矩形を、処理対象領域とする。その後、本フローチャートが終了する。
以上のような処理対象領域抽出処理によれば、記入項目を表す活字や、記入欄に記入された手書き文字などの領域をOCRの処理対象領域として抽出することができる。S923では、CPU261が、処理対象画像に含まれる手書き文字及び活字の領域を抽出する。S927では、CPU261が、手書き抽出画像から処理対象領域を抽出して、抽出した領域を手書き対象領域として決定する。S931では、CPU261が、背景抽出画像から処理対象領域を抽出して、抽出した領域を活字対象領域として決定する。
<手書き判定の補正処理>
次に、図9A(b)のS925で実行される手書き判定の誤りを補正する補正処理について説明する。図9B(b)は、本実施形態に係る補正処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS925で、S924で手書き画素を推定した結果として得られた画像を入力として実行される。
次に、図9A(b)のS925で実行される手書き判定の誤りを補正する補正処理について説明する。図9B(b)は、本実施形態に係る補正処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS925で、S924で手書き画素を推定した結果として得られた画像を入力として実行される。
S971において、CPU261は、図9A(b)のS924で得られた補正前の推定結果をマスクとして、S926と同様の手順で、手書きだけを抽出した画像を生成する。以降、この画像を「補正前手書き抽出画像」と呼称する。図10(b)に示す補正前の推定結果をマスクとして生成した補正前手書き抽出画像を図13(a)に示す。
S972において、CPU261は、補正前手書き抽出画像を対象に前述の処理対象領域抽出処理を行い、処理対象領域を抽出する。図13(a)の補正前手書き抽出画像に処理対象領域抽出処理を行った結果として得られた処理対象領域を領域1301~1305に示す。
S972において、CPU261は、補正前手書き抽出画像を対象に前述の処理対象領域抽出処理を行い、処理対象領域を抽出する。図13(a)の補正前手書き抽出画像に処理対象領域抽出処理を行った結果として得られた処理対象領域を領域1301~1305に示す。
続いてS973において、CPU261は、図9A(b)のS924で得られた補正前の推定結果をマスクとして、S930と同様の手順で、背景だけを抽出した画像を生成する。以降、この画像を「補正前背景抽出画像」と呼称する。図10(b)に示す補正前の推定結果をマスクとして生成した補正前背景抽出画像を図13(b)に示す。
S974において、CPU261は、補正前背景抽出画像を対象に前述の処理対象領域抽出処理を行い、処理対象領域を抽出する。図13(b)の補正前背景抽出画像に処理対象領域抽出処理を行った結果として得られた処理対象領域を領域1321~1326に示す。
S975において、CPU261は、図9A(b)のS923で得た全ての処理対象領域について、後続するS976からS981までの処理が終了したか否かを判定する。CPU261が全ての処理対象領域について処理が終了したと判定した場合には、図9A(b)のフローに戻る。一方で、CPU261が未処理の処理対象領域が存在すると判定した場合には、処理対象領域を一つ選択して、処理はS976に遷移する。
S974において、CPU261は、補正前背景抽出画像を対象に前述の処理対象領域抽出処理を行い、処理対象領域を抽出する。図13(b)の補正前背景抽出画像に処理対象領域抽出処理を行った結果として得られた処理対象領域を領域1321~1326に示す。
S975において、CPU261は、図9A(b)のS923で得た全ての処理対象領域について、後続するS976からS981までの処理が終了したか否かを判定する。CPU261が全ての処理対象領域について処理が終了したと判定した場合には、図9A(b)のフローに戻る。一方で、CPU261が未処理の処理対象領域が存在すると判定した場合には、処理対象領域を一つ選択して、処理はS976に遷移する。
S976において、CPU261は、S975で選択した処理対象領域が、S972で得た補正前手書き抽出画像から抽出された処理対象領域と、S974で得た補正前背景画像から抽出された処理対象領域に分裂しているか否かを判定する。具体的には、S975で選択した処理対象領域内に、補正前手書き抽出画像から抽出された処理対象領域と、補正前背景画像から抽出された処理対象領域との両方が存在する場合に、分裂したと判定する。この判定は、各処理対象領域の座標位置を比較することによって行えばよい。図13を例にして説明する。図13では、補正前手書き抽出画像(図13(a))と補正前背景抽出画像(図13(b))のそれぞれで、S923で得た処理対象領域を太い点線枠(領域1201~1205)で重畳して表示している。領域1201,1203,1205では、補正前手書き抽出画像と補正前背景抽出画像の両方で処理対象領域が含まれるため、分裂していると判定する。一方、領域1202,1204では、補正前背景抽出画像のみに処理対象領域が含まれ、補正前手書き抽出画像では処理対象領域が存在しないため、分裂していないと判定する。CPU261が分裂していると判定した場合、処理はS977に遷移する。CPU261が分裂していないと判定した場合、S975で選択した処理対象領域は補正の対象外として、処理はS975に遷移する。
S977において、CPU261は、補正前手書き抽出画像と補正前背景抽出画像のそれぞれで、S975で選択した処理対象領域内に存在する処理対象領域の面積を算出する。例えばS975で処理対象領域1201が選択された場合、補正前手書き抽出画像で領域1201内の処理対象領域1301の面積、及び補正前背景抽出画像で領域1201内の処理対象領域1321の面積をそれぞれ算出する。またこの時、補正前手書き抽出画像で、S975で選択した領域内に処理対象領域が複数存在する場合に、それらを合計した面積を算出する。同様にして、補正前背景抽出画像で、S975で選択した領域内に処理対象領域が複数存在する場合に、それらを合計した面積を算出する。例えばS975で処理対象領域1205が選択された場合、補正前手書き抽出画像で領域1205内の領域1303と1304と1305の面積の合計値、及び補正前背景抽出画像で領域1205内の領域1325と1326の面積の合計値を算出する。
S978において、CPU261は、S977で算出した面積を比較し、比較の結果、面積のうち小さい方を参照し、面積が閾値を下回るか否かを判定する。ここでの閾値として、帳票で使用される標準的な大きさ(例えば16ポイント)の活字文字一文字について処理対象領域を抽出した時の面積が予め定義されている。例えばS975で処理対象領域1201が選択された場合、小さい方の領域は補正前手書き抽出画像の領域1301であり、その面積は活字文字一文字の面積よりも小さいため、閾値を下回ると判定する。またS975で処理対象領域1203が選択された場合、小さい方の領域は補正前背景抽出画像の領域1322であり、その面積は活字文字一文字の面積よりも小さいため、閾値を下回ると判定する。一方、S975で処理対象領域1205が選択された場合、小さい方の領域は補正前背景抽出画像の領域1325と領域1326の面積の合計値であるが、その値は活字文字一文字の面積よりも大きいため、閾値を下回らないと判定する。CPU261が面積が閾値を下回ると判定した場合、処理はS979に遷移する。CPU261が面積が閾値以上と判定した場合、S975で選択した処理対象領域は補正の対象外として、処理はS975に遷移する。
S979において、CPU261は、S977で算出した面積を比較した結果、面積の小さい方の処理対象領域が、補正前手書き抽出画像から抽出されているか否かを判定する。CPU261が補正前手書き抽出画像から抽出されていると判定した場合、処理はS980に遷移する。一方、CPU261が補正前背景抽出画像から抽出されていると判定した場合、処理はS981に遷移する。
S980において、CPU261は、S979で比較対象とした補正前手書き抽出画像の処理対象領域内の部分が、背景になるよう推定結果を補正する。具体的には、S924の推定結果のうち、補正前手書き抽出画像の当該処理対象領域内で余白ではない箇所を、手書きではないことを示す値(例えば0)で上書きする。これにより、背景の一部が手書きの画素であると誤判定されて手書きとして抽出されても、背景に補正することができる。その後処理はS975に戻る。
S981において、CPU261は、S979で比較対象とした補正前背景抽出画像の処理対象領域内の部分が、手書きになるよう推定結果を補正する。具体的には、S924で抽出した推定結果のうち、補正前背景抽出画像の当該処理対象領域内で余白ではない箇所を、手書きであることを示す値(例えば1)で上書きする。これにより、手書き文字の一部が手書きではない画素と誤判定されて背景として抽出されても、手書きに補正することができる。その後処理はS975に戻る。
以上のように、画像処理サーバ103は、読取画像から抽出された処理対象領域が、手書き抽出画像から抽出された処理対象領域と、背景抽出画像から抽出された処理対象領域に分裂した場合に、分裂した処理対象領域の面積を比較する。そして、面積の小さい方の処理対象領域が、面積の大きい方の処理対象領域に統合されるように、手書き画素の推定結果を補正する。そして、読取画像から抽出された複数の処理対象領域に対して、補正を行うかを順次判定していく。
S980において、CPU261は、S979で比較対象とした補正前手書き抽出画像の処理対象領域内の部分が、背景になるよう推定結果を補正する。具体的には、S924の推定結果のうち、補正前手書き抽出画像の当該処理対象領域内で余白ではない箇所を、手書きではないことを示す値(例えば0)で上書きする。これにより、背景の一部が手書きの画素であると誤判定されて手書きとして抽出されても、背景に補正することができる。その後処理はS975に戻る。
S981において、CPU261は、S979で比較対象とした補正前背景抽出画像の処理対象領域内の部分が、手書きになるよう推定結果を補正する。具体的には、S924で抽出した推定結果のうち、補正前背景抽出画像の当該処理対象領域内で余白ではない箇所を、手書きであることを示す値(例えば1)で上書きする。これにより、手書き文字の一部が手書きではない画素と誤判定されて背景として抽出されても、手書きに補正することができる。その後処理はS975に戻る。
以上のように、画像処理サーバ103は、読取画像から抽出された処理対象領域が、手書き抽出画像から抽出された処理対象領域と、背景抽出画像から抽出された処理対象領域に分裂した場合に、分裂した処理対象領域の面積を比較する。そして、面積の小さい方の処理対象領域が、面積の大きい方の処理対象領域に統合されるように、手書き画素の推定結果を補正する。そして、読取画像から抽出された複数の処理対象領域に対して、補正を行うかを順次判定していく。
以上のような実施形態1に係る画像処理システム100によれば、読取画像内のOCRの処理対象領域が、手書き抽出画像と背景抽出画像で分かれた場合であって、且つ分かれた領域の面積が閾値を下回る場合に、手書き抽出の誤りとして補正できる。具体的には、分かれた部分のうちの面積が小さい方の領域を、面積が大きい方の領域に統合する。これにより、文字列の一部が欠損された状態や余計な部分が現れた状態で文字領域が抽出されることが抑制される。即ち、手書き文字及び活字の認識精度を向上させることができる。
本実施形態の第1の変形例として、読取画像からOCRの対象領域として抽出された領域と、手書き抽出画像と背景抽出画像からOCRの対象領域として抽出された領域の比較に応じて手書きの推定結果を補正する形態であれば、補正内容は上記と異なってもよい。
本実施形態の第2の変形例として、図9B(b)の補正処理のS976とS977の間に、次のようなステップを挿入してもよい。まずCPU261は、補正前手書き抽出画像と補正前背景抽出画像のそれぞれで、S975で選択した処理対象領域内に存在する処理対象領域の高さを算出する。そしてCPU261が、補正前手書き抽出画像から抽出された処理対象領域の高さが、補正前背景抽出画像から抽出された処理対象領域の高さよりも大きい場合には、S975で選択した処理対象領域を補正対象外とする。一方で、補正前手書き抽出画像から抽出された処理対象領域の高さが、補正前背景抽出画像から抽出された処理対象領域の高さ以下の場合には、S977に遷移する。
[実施形態2]
本実施形態では、手書き判定の補正処理において、背景抽出画像の記載内容に応じて処理を異ならせる点で、実施形態1とは異なる。なお、本実施形態に係る画像処理システム100の構成は、特徴部分を除いて実施形態1の構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。以下、実施形態1との差分を中心に説明する。
本実施形態では、手書き判定の補正処理において、背景抽出画像の記載内容に応じて処理を異ならせる点で、実施形態1とは異なる。なお、本実施形態に係る画像処理システム100の構成は、特徴部分を除いて実施形態1の構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。以下、実施形態1との差分を中心に説明する。
<手書き判定の補正処理>
以下、図9A(b)のS925で実行される手書き判定の誤りを補正する補正処理について説明する。図14は、本実施形態に係る補正処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS925で、S924で手書き画素を推定した結果として得られた画像を入力として実行される。
以下、図9A(b)のS925で実行される手書き判定の誤りを補正する補正処理について説明する。図14は、本実施形態に係る補正処理を示すフローチャートである。本フローチャートは、CPU261が、ストレージ265に記憶されている画像処理プログラムを読み出し、RAM264に展開して実行することで実現される。本フローチャートは、図9A(b)のS925で、S924で手書き画素を推定した結果として得られた画像を入力として実行される。
図14のS971からS976までは、実施形態1と同様である。なお、本実施形態の説明においては、図9A(b)のS922で処理対象画像として、図15(a)に示す画像を受信し、更にS923の処理対象領域抽出処理で図15(a)の領域1501から領域1505に示す処理対象領域が抽出されたものとする。図15(b)は、図15(a)に示す画像から生成された補正前手書き抽出画像を示す。図15(c)は、図15(a)に示す画像から生成された補正前背景抽出画像を示す。
次にS1401において、CPU261は、S975で選択した処理対象領域の座標と、S973で得た補正前背景抽出画像とを、外部インタフェース268を介して、活字OCRサーバ104に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
S1402において、CPU261は、活字OCRサーバ104から、活字OCR結果を受信したか否かを判定する。CPU261が外部インタフェース268を介して活字OCRサーバ104からから活字OCR結果を受信したと判定するまでS1402の処理を繰り返し、受信したと判定した場合、処理はS1403に遷移する。
S1402において、CPU261は、活字OCRサーバ104から、活字OCR結果を受信したか否かを判定する。CPU261が外部インタフェース268を介して活字OCRサーバ104からから活字OCR結果を受信したと判定するまでS1402の処理を繰り返し、受信したと判定した場合、処理はS1403に遷移する。
S1403において、CPU261は、活字OCR結果に特定の文字列が含まれるか否かを判定する。ここでの特定の文字列とは、主に手書き記入の補助として帳票に予め印字され、手書きの近傍に現れることが多い文字列である。例えば「年月日」や「時分」といった文字列である。これら特定の文字列は、予め定義されているものとする。図15の例では、処理対象領域1505に手書き記入の補助として小さな活字で「年月日」が印字されている。補正前背景抽出画像(図15(c))において、領域1505内の領域1543、1544、1545の面積の合計値は、標準的な大きさの活字一文字の面積を下回るが、特定の文字列である。そのため、S1403では、これらが手書きの一部を背景として誤抽出されたものではないと判定することができる。CPU261が特定の文字列であると判定した場合、S975で選択した処理対象領域は補正の対象外として、処理はS975に遷移する。一方、CPU261が特定の文字列ではないと判定した場合、処理はS977に遷移する。これにより、記入欄内に予め印字され、手書きの近傍に現れることが多い活字文字と、手書き文字とを精度よく分離させることができる。
後続するS977からS981までは実施形態1と同様である。
後続するS977からS981までは実施形態1と同様である。
以上のような実施形態2に係る画像処理システム100によれば、読取画像内のOCRの処理対象領域が、手書き抽出画像と背景抽出画像で分かれた場合に、背景抽出画像の記載内容に応じて、手書き抽出の推定結果を補正するかを判定することができる。これにより、手書き記入の補助的に印字された小さな活字などが手書き文字の一部として統合されることが抑制され、手書き文字及び活字文字の認識精度を向上させることができる。
以上、本発明を実施形態と共に説明したが、上記実施形態は本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。例えば、画像処理装置101と画像処理サーバ103とを別体の装置として説明したが、画像処理サーバ103が画像処理装置101の機能を具備してもよい。また、画像処理サーバ103と活字OCRサーバ104と手書きOCRサーバ105とをそれぞれ別体の装置として説明したが、画像処理サーバ103が活字OCRサーバ104と手書きOCRサーバ105としての機能を具備してもよい。また、活字OCRサーバ104と手書きOCRサーバ105とを別体の装置として説明したが、活字OCRサーバ104と手書きOCRサーバ105とが一体的に構成されていてもよい。また、画像処理サーバ103と学習装置102とを別体の装置として説明したが、画像処理サーバ103が学習装置102としての機能を具備してもよい。
100:画像処理システム、101:画像処理装置、102:学習装置、103:画像処理サーバ、104:活字OCRサーバ、105:手書きOCRサーバ
Claims (20)
- 手書きを含む原稿の読取画像を取得する取得手段と、
前記読取画像に対して、処理対象領域を抽出するための抽出処理を行うことにより、第1の領域を抽出する第1の抽出手段と、
前記読取画像における、手書き部分を推定する推定手段と、
前記推定手段による推定結果に基づき、手書き部分を抽出した手書き画像と、手書きではない部分を抽出した背景画像とを生成する生成手段と、
前記手書き画像に対して、前記抽出処理を行うことにより、第2の領域を抽出する第2の抽出手段と、
前記背景画像に対して、前記抽出処理を行うことにより、第3の領域を抽出する第3の抽出手段と、
前記抽出された第1の領域の座標位置と前記抽出された第2の領域の座標位置と前記抽出された第3の領域の座標位置とに基づいて、前記推定結果を補正するよう制御する制御手段と、
を有することを特徴とする画像処理装置。 - 前記制御手段は、前記第1の領域内に前記第2の領域と前記第3の領域とが含まれる場合、前記第2の領域の面積と、前記第3の領域の面積のうち、面積の小さい方の領域が、面積の大きい方の領域に統合されるように、前記推定結果を補正することを特徴とする請求項1に記載の画像処理装置。
- 前記制御手段は、前記第2の領域の面積の方が小さい場合、当該領域内の前記手書き画像の部分を、前記背景画像の部分に補正することを特徴とする請求項2に記載の画像処理装置。
- 前記制御手段は、前記第3の領域の面積の方が小さい場合、当該領域内の前記背景画像の部分を、前記手書き画像の部分に補正することを特徴とする請求項2又は3に記載の画像処理装置。
- 前記制御手段は、前記第1の領域内に前記第2の領域と前記第3の領域とが含まれる場合、当該第1の領域内に含まれる前記第2の領域の面積の合計と、当該第1の領域内に含まれる前記第3の領域の面積の合計とを比較して、面積の合計の小さい方の領域が、面積の合計の大きい方の領域に統合されるように、前記推定結果を補正することを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
- 前記制御手段は、前記第1の領域内に前記第2の領域と前記第3の領域とが含まれる場合であっても、前記第2の領域の面積と、前記第3の領域の面積のうち、小さい方の面積が閾値以上である場合には、前記推定結果を補正しないよう制御することを特徴とする請求項2乃至5の何れか1項に記載の画像処理装置。
- 前記閾値が、帳票で使用される標準的な活字一文字の大きさであることを特徴とする請求項6に記載の画像処理装置。
- 前記制御手段は、前記第1の領域内に前記第2の領域と前記第3の領域とが含まれる場合であっても、前記第3の領域に対して行ったOCRの結果に、所定の文字列が含まれる場合に、前記推定結果を補正しないよう制御することを特徴とする請求項1乃至7の何れか1項に記載の画像処理装置。
- 前記制御手段は、前記第1の領域内に前記第2の領域と前記第3の領域とが含まれる場合であっても、前記第2の領域が、前記第3の領域よりも高さが大きい場合、前記推定結果を補正しないよう制御することを特徴とする請求項1乃至8の何れか1項に記載の画像処理装置。
- 前記制御手段は、前記読取画像から複数の前記第1の領域が抽出された場合、当該抽出された複数の前記第1の領域に対して、前記推定結果の補正を行うかを順次判定することを特徴とする請求項1乃至9の何れか1項に記載の画像処理装置。
- 前記制御手段により補正された前記推定結果に基づき生成される手書き画像を、手書き文字に対応したOCRの対象とすることを特徴とする請求項1乃至10の何れか1項に記載の画像処理装置。
- 前記制御手段により補正された前記推定結果に基づき生成される背景画像を、活字に対応したOCRの対象とすることを特徴とする請求項1乃至11の何れか1項に記載の画像処理装置。
- 前記推定手段は、前記読取画像をニューラルネットワークに入力することにより、前記読取画像における前記手書き部分の画素を推定することを特徴とする請求項1乃至12の何れか1項に記載の画像処理装置。
- 手書きのみを含む原稿を読み取った第1の読取画像と、手書き以外のオブジェクトのみを含む原稿を読み取った第2の読取画像とを合成して得られる画像を入力画像とし、前記入力画像における手書きの画素を正解データとする学習データを用いて、前記ニューラルネットワークの学習を行う学習手段をさらに有することを請求項13に記載の画像処理装置。
- 前記第1の読取画像と、前記第2の読取画像のうちの少なくも何れか一方に対して、所定の画像処理を施した後で、各画像を合成することにより前記入力画像を生成することを特徴とする請求項14に記載の画像処理装置。
- 前記所定の画像処理が、回転、変倍、輝度の変更、及び画像の切り出しのうちの少なくとも何れか1つの処理を含むことを特徴とする請求項15に記載の画像処理装置。
- 前記原稿が帳票であることを特徴とする請求項1乃至16の何れか1項に記載の画像処理装置。
- 手書きを含む原稿の読取画像を生成する画像生成装置と、画像処理装置と、OCR装置とを含む画像処理システムであって、
前記画像処理装置は、
前記画像生成装置から、前記読取画像を取得する取得手段と、
前記読取画像に対して、処理対象領域を抽出するための抽出処理を行うことにより、第1の領域を抽出する抽出処理を行う第1の抽出手段と、
前記読取画像における、手書き部分を推定する推定手段と、
前記推定手段による推定結果に基づき、手書き部分を抽出した手書き画像と、手書きでではない部分を抽出した背景画像とを生成する生成手段と、
前記手書き画像に対して、前記抽出処理を行うことにより、第2の領域を抽出する第2の抽出手段と、
前記背景画像に対して、前記抽出処理を行うことにより、第3の領域を抽出する第3の抽出手段と、
前記抽出された第1の領域の座標位置と前記抽出された第2の領域の座標位置と前記抽出された第3の領域の座標位置とに基づいて、前記推定結果を補正するよう制御する制御手段と、
前記制御手段により補正された前記推定結果に基づき生成される手書き画像を手書きOCRの対象とし、前記制御手段により補正された前記推定結果に基づき生成される背景画像を活字OCRの対象として、前記OCR装置に対して送信する送信手段と、
を有し、
前記OCR装置は、
前記手書きOCRの対象に対して、手書き文字に対応したOCRを実行し、前記活字OCRの対象に対して、活字に対応したOCRを実行する処理手段と、
を有することを特徴とする画像処理システム。 - 手書きを含む原稿の読取画像を取得する取得ステップと、
前記読取画像に対して、処理対象領域を抽出するための抽出処理を行うことにより、第1の領域を抽出する第1の抽出ステップと、
前記読取画像における、手書き部分を推定する推定ステップと、
前記推定ステップの推定結果に基づき、手書き部分を抽出した手書き画像と、手書きではない部分を抽出した背景画像とを生成する生成ステップと、
前記手書き画像に対して、前記抽出処理を行うことにより、第2の領域を抽出する第2の抽出ステップと、
前記背景画像に対して、前記抽出処理を行うことにより、第3の領域を抽出する第3の抽出ステップと、
前記抽出された第1の領域の座標位置と前記抽出された第2の領域の座標位置と前記抽出された第3の領域の座標位置とに基づいて、前記推定結果を補正するよう制御する制御ステップと、
を含むことを特徴とする画像処理方法。 - コンピュータを、請求項1乃至17の何れか1項に記載された画像処理装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021126548A JP2023021595A (ja) | 2021-08-02 | 2021-08-02 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021126548A JP2023021595A (ja) | 2021-08-02 | 2021-08-02 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023021595A true JP2023021595A (ja) | 2023-02-14 |
Family
ID=85201606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021126548A Pending JP2023021595A (ja) | 2021-08-02 | 2021-08-02 | 画像処理装置、画像処理システム、画像処理方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023021595A (ja) |
-
2021
- 2021-08-02 JP JP2021126548A patent/JP2023021595A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8320019B2 (en) | Image processing apparatus, image processing method, and computer program thereof | |
JP7387339B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
JP7262993B2 (ja) | 画像処理システム、画像処理方法、画像処理装置 | |
US9626601B2 (en) | Identifying image transformations for improving optical character recognition quality | |
US20210056336A1 (en) | Image processing apparatus, image processing method, and storage medium | |
JP6122988B1 (ja) | 画像処理装置、画像処理方法、および、プログラム | |
US8229214B2 (en) | Image processing apparatus and image processing method | |
US11082581B2 (en) | Image processing apparatus and method for control to smooth a character region of a binary image and perform character recognition | |
US9215344B2 (en) | Image forming apparatus, image processing apparatus, image forming method, image processing method, and non-transitory computer readable medium | |
EP3438930A1 (en) | Image processing apparatus | |
JP2023021595A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム | |
JP2023030811A (ja) | 情報処理装置、抽出処理装置、画像処理システム、情報処理装置の制御方法、及びプログラム | |
US11328425B2 (en) | Image processing apparatus and non-transitory computer readable medium | |
US11288536B2 (en) | Image processing apparatus, image processing method, and non-transitory computer-readable storage medium | |
JP2023026170A (ja) | 画像処理装置、画像処理システム、画像処理方法、及びプログラム | |
JP5821994B2 (ja) | 画像処理装置、画像形成装置およびプログラム | |
JP5517028B2 (ja) | 画像処理装置 | |
US20210097271A1 (en) | Character recognition using previous recognition result of similar character | |
US8125691B2 (en) | Information processing apparatus and method, computer program and computer-readable recording medium for embedding watermark information | |
US20100104131A1 (en) | Document processing apparatus and document processing method | |
US11853844B2 (en) | Information processing apparatus, image orientation determination method, and medium | |
JP2024035965A (ja) | 情報処理装置、情報処理装置の制御方法、およびプログラム | |
US20230029990A1 (en) | Image processing system and image processing method | |
US10623598B2 (en) | Image processing apparatus and non-transitory computer readable medium for extracting and connecting inherent regions of multiple pages of document data | |
JP2021033577A (ja) | 画像処理システムと画像処理方法、及びプログラム |