JP2021033577A - 画像処理システムと画像処理方法、及びプログラム - Google Patents

画像処理システムと画像処理方法、及びプログラム Download PDF

Info

Publication number
JP2021033577A
JP2021033577A JP2019152169A JP2019152169A JP2021033577A JP 2021033577 A JP2021033577 A JP 2021033577A JP 2019152169 A JP2019152169 A JP 2019152169A JP 2019152169 A JP2019152169 A JP 2019152169A JP 2021033577 A JP2021033577 A JP 2021033577A
Authority
JP
Japan
Prior art keywords
image
handwritten
learning
image processing
ocr
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
JP2019152169A
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 JP2019152169A priority Critical patent/JP2021033577A/ja
Priority to US16/986,325 priority patent/US11568623B2/en
Publication of JP2021033577A publication Critical patent/JP2021033577A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Character Discrimination (AREA)
  • Image Analysis (AREA)

Abstract

【課題】帳票などに複数の手書き文字からなる文字行があり、各文字行の垂直方向の開始位置及び高さが一致しない場合、手書きOCRエンジンは文字行の切り出しに失敗し、手書き文字の認識精度が低下する場合があった。【解決手段】手書き文字を含む原稿の読取画像を取得し、その取得した読取画像の画素の中から手書き文字の画素を抽出して手書き文字の抽出画像を生成する。そして、その抽出画像の画素の中から手書き文字を含む領域である手書き部分を推定し、その推定した手書き部分に基づいて前記抽出画像の手書き部分を決定し、当該手書き部分に対してOCR処理を行う。【選択図】 図9

Description

本発明は、画像処理システムと画像処理方法、及びプログラムに関する。
近年、コンピュータの普及に伴う労働環境の変化により、業務で扱う文書の電子化が進んでいる。こうした電子化の対象は手書き文字が記入された帳票にも及んでいる。こうした手書き文字の電子化に際しては、手書きOCRが利用される。手書きOCRを実行する手書きOCRエンジンへは、手書き文字が記入された帳票をスキャンして得られるスキャン画像から、手書き文字の画像を分離して入力することが望ましい。なぜならば、手書きOCRエンジンは、手書き文字を認識するように構成されているため、活字等の特定の文字フォントで印刷された文字画像が含まれると、その認識精度が低下してしまうためである。
特許文献1は、スキャン画像中の画素の輝度特徴に基づいて、手書き文字か否かを判定し、画素単位で手書き文字の画像を抽出する技術を記載している。以降、このように、画素毎に手書き文字の画像を抽出することを「手書き抽出」と呼ぶ。また、手書き抽出によって抽出された画素を「手書き画素」と呼ぶ。また、手書き抽出により得た画像を「手書き抽出画像」と呼ぶ。手書き抽出により得られる手書き抽出画像には、手書き画素しか含まれない。よって、この手書き抽出画像を手書きOCRの対象とすることにより、誤認識を低減することができる。
特開2010−218106号公報
しかしながら、特許文献1の技術によれば、手書き抽出画像には、スキャン画像中の手書き文字画像の全体が含まれており、これは、手書きOCRエンジンへの入力として必ずしも適したものではない。
図18は、手書き文字が記入された帳票をスキャンして得られるスキャン画像(A)と、そのスキャン画像から抽出された手書き抽出画像の一例を示す図(B)である。
手書きOCRエンジンは、帳票等への手書きで記入された手書き文字の認識を目的とし、文字の並び(以降「文字行」)が一行ないし数行程度入力されてくることを想定して構成されている場合が多い。しかし、図18(B)の手書き抽出画像は、いわゆるマルチカラム(垂直方向に並んだ文字行のグループが、水平方向に並ぶ構成)となっており、しかも、2つのカラム間において、文字行の高さや垂直方向の位置が不規則である。即ち、左のカラムには「ヤマダタロウ」及び「山田太郎」の2行の文字行が含まれており、右のカラムには「302−8501」、「取手市白山7−5−1」、「03−3758−2111」の3行の文字行が含まれている。そして、右のカラムの各文字行の垂直方向の開始位置及び高さは、左のカラムの各文字行の垂直方向の開始位置及び高さと一致しない。以降、このような画像構成を「行位置不一致マルチカラム」と呼ぶ。このような行位置不一致マルチカラムである画像が入力されてくると、手書きOCRエンジンは文字行の切り出しに失敗し、認識精度が低下してしまう場合があった。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、手書き部分に対するOCR処理の精度の低下を軽減する技術を提供することにある。
上記目的を達成するために本発明の一態様に係る画像処理システムは以下のような構成を備える。即ち、
手書き文字を含む原稿の読取画像を取得する読取手段と、
前記読取画像の画素の中から手書き文字の画素を抽出して手書き文字の抽出画像を生成する第1抽出手段と、
前記抽出画像の画素の中から手書き文字を含む領域である手書き部分を推定する推定手段と、
前記手書き部分に基づいて前記抽出画像の手書き部分を決定し、当該手書き部分に対してOCR処理を行うOCR手段と、を有することを特徴とする。
本発明によれば、処理対象の原稿を読み取った画像から、一行或いは数行の文字行を含む単一カラムの手書き部分を抽出し、その手書き部分に対してOCR処理を行うことにより、OCRの精度の低下を軽減できるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態1に係る画像処理システムの構成を説明する図。 実施形態1に係る画像処理装置、学習装置、画像処理サーバ及びOCRサーバのハードウェア構成を説明するブロック図。 実施形態1に係る画像処理システムにおける学習シーケンスを説明する図(A)と、画像処理システムの利用シーケンスを説明する図(B)。 実施形態1において読み取った帳票(A)と、それに基づく手書き抽出画像(B)と、手書き抽出正解画像の一例(C)、及び手書き部分推定正解画像の一例(D)を示す図。 実施形態1に係る画像処理システムの各装置で表示される画面例を示す図。 実施形態1に係る画像処理装置によるサンプル画像の生成処理を説明するフローチャート(A)と、実施形態1に係る学習装置によるサンプル画像の受信処理を説明するフローチャート(B)と、学習装置による正解データの生成処理を説明するフローチャート(C)。 実施形態1に係る学習装置による学習データの生成処理を説明するフローチャート(A)と、学習装置による学習処理を説明するフローチャート(B)。 手書き抽出の学習データの構成例を示す図(A)と、手書き部分推定の学習データの構成例を示す図(B)。 実施形態1に係る画像処理装置が帳票をテキスト化するよう画像処理サーバに依頼する処理を説明するフローチャート(A)と、実施形態1に係る画像処理サーバによる帳票テキスト化処理を説明するフローチャート(B)。 実施形態1に係る画像処理サーバによる帳票テキスト化処理における、データ生成処理の概要を説明する図。 実施形態2に係る画像処理システムにおける学習シーケンスを説明する図。 図11のS1102で読み込む原稿の用紙(記入前)例を示す図(A)と、記入済みの原稿の一例を示す図(B)。 実施形態2に係る画像処理装置の表示デバイスに表示される原稿スキャン画面の一例を示す図(A)と、実施形態2に係る学習装置の表示デバイスに表示される合成領域データ作成画面の一例を示す図(B)。 実施形態2に係る合成領域を定義する定義情報の一例を示す図。 実施形態2に係る画像処理装置によるサンプル画像の生成処理を説明するフローチャート(A)と、実施形態2に係る学習装置によるサンプル画像の受信処理を説明するフローチャート(B)。 実施形態2に係る学習装置102による学習データの生成処理を説明するフローチャート。 実施形態2に係る背景パッチの一例を示す図(A)と、手書き抽出の学習データの構成例を示す図(B)と、手書き部分推定の学習データの構成例を示す図(C)。 手書き文字が記入された帳票をスキャンして得られるスキャン画像(A)と、そのスキャン画像から抽出された手書き抽出画像の一例を示す図(B)。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
実施形態では、ニューラルネットワークを用いて、手書きOCRエンジンに入力する手書き抽出画像上の手書き部分を決定する例を示す。OCRは、Optical Character Recognition/Readerの略であり、光学的文字認識(文字認識処理)を意味する。尚、以降、この手書き部分領域を「手書き部分」と呼称する。また、手書き部分を推定することを「手書き部分推定」と呼ぶ。この手書き部分には、手書きで記入された文字行が1ないし数行含まれ、かつこれが単一のカラムで構成される。
図1は、本発明の実施形態1に係る画像処理システムの構成を説明する図である。
この画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104よを有している。これら画像処理装置101と学習装置102、画像処理サーバ103、OCRサーバ104は、ネットワーク105を介して接続されている。
画像処理装置101は、例えば複合機(MFP)と呼ばれるデジタル複合機等であり、印刷機能やスキャン機能(画像取得部111としての機能)を有する。画像処理装置101は、帳票などの原稿をスキャンして、その原稿の画像に対応する画像データを生成する(以降、この画像データを「サンプル画像」と呼ぶ)。複数枚の原稿をスキャンしてサンプル画像を複数得る。これら原稿は、手書き文字(手書き記号、手書き図形)が記入された原稿を含む。画像処理装置101は、ネットワーク105を介して、取得したサンプル画像を学習装置102に送信する。また画像処理装置101は、帳票のテキスト化を行う際に、手書き文字が含まれる原稿をスキャンして処理対象とする画像データを得る(以降この画像データを「処理対象画像」と呼ぶ)。そして、その処理対象画像を、ネットワーク105を介して、画像処理サーバ103に送信する。
学習装置102は、画像処理装置101が生成したサンプル画像を蓄積する画像蓄積部115を有する。また画像蓄積部115に蓄積した画像から学習データを生成する学習データ生成部112を有する。学習データは、手書き抽出及び手書き部分推定を行うニューラルネットワークを学習するために用いられるデータである。学習装置102は、生成した学習データを用いて、ニューラルネットワークの学習を行う学習部113を有する。学習部113の学習処理により、学習結果(ニューラルネットワークのパラメータなど)が生成される。学習装置102は、学習結果(学習モデル)を、ネットワーク105を介して、画像処理サーバ103に送信する。ニューラルネットワークを用いる機械学習手法の一つとして、多層ニューラルネットワークを用いるディープラーニングが挙げられる。
画像処理サーバ103は、処理対象画像を変換する画像変換部114を有する。画像変換部114は、処理対象画像から手書きOCRの対象とする画像を生成する。即ち、画像変換部114は、画像処理装置101が生成した処理対象画像に対して手書き抽出を行う。この際、画像処理サーバ103は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中の手書きの画素(画素位置)を抽出(特定)して手書き抽出画像を得る。更に、画像処理サーバ103は、手書き抽出画像に対して手書き部分推定を行う。画像処理サーバ103は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して手書き抽出画像において手書き部分を推定(特定)する。ここで、この手書き部分の実態は、手書き抽出画像部分を示す情報であり、例えば、手書き抽出画像上の特定の画素位置(座標)と、当該画素位置からの幅や高さから成る情報として表現される。また、手書き部分は、帳票に記入された項目の数やレイアウトに応じて、複数得られる場合がある。そして、画像変換部114は、手書き抽出画像と手書き部分とをOCRサーバ104に送信する。これにより、OCRサーバ104に、手書き抽出画像上の領域であって、推定した手書き部分に該当する領域を、それぞれ手書きOCRの対象領域とすることを指示できる。
また画像変換部114は、処理対象画像から手書き抽出画像に含まれる手書き画素を除去した画像(以降「活字画像」と呼ぶ)を生成する。そして画像変換部114は、活字画像上の領域であって、活字OCRの対象とする活字を含む領域(以降この領域を「活字領域」と呼ぶ)の情報を生成する。この活字領域の生成については後述する。そして、画像変換部114は、活字画像と活字領域とをOCRサーバ104に送信する。これにより、OCRサーバ104に、活字画像上の活字領域を、それぞれ活字OCRすることを指示できる。
そして画像変換部114は、OCRサーバ104から手書きOCR結果、及び活字OCR結果を受信する。そしてこれを統合し、テキストデータとして画像処理装置101に送信する。以降このテキストデータを「帳票テキストデータ」と呼ぶ。
OCRサーバ104は、手書きOCR部116、活字OCR部117を備える。OCRサーバ104は、手書き抽出画像と手書き部分とを受信すると、手書きOCR部116により手書き抽出画像中の手書き部分に対してOCR処理を行ってテキストデータ(OCR結果)を取得する。手書きOCR部116は、そのテキストデータを画像処理サーバ103に送信する。またOCRサーバ104は、活字画像と活字領域を受信すると、活字OCR部117により、活字画像中の活字領域に対してOCR処理を行ってテキストデータを取得する。活字OCR部117は、そのテキストデータを画像処理サーバ103に送信する。
次に、実施形態1に係る画像処理システムにおける学習シーケンスについて説明する。図3(A)は、画像処理システムにおける学習シーケンスを説明する図である。
ステップ301(以降の説明において、ステップは「S」で表記する)において、ユーザが原稿の読取指示を行うと、画像取得部111はS302で、サンプルとなる原稿を読みとって原稿画像(サンプル画像)を生成する。こうして生成されたサンプル画像は、S303で学習装置102の学習データ生成部112に送信される。尚、このとき、サンプル画像にID情報を付与するとよい。このID情報は例えば、画像取得部111を有する画像処理装置101を識別するための情報である。尚、ID情報は、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するめためのグループ識別情報であってもよい。こうしてサンプル画像とID情報受け取ると学習データ生成部112は、S304で、画像蓄積部115に、そのサンプル画像を蓄積する。
次にユーザがS305で、サンプル画像に対して正解データの付与指示を行うと、学習データ生成部112は、その正解データを取得し、S306で、そのサンプル画像に紐づけて画像蓄積部115に蓄積する。この正解データは、ニューラルネットワークの学習に用いるデータである。正解データの付与方法については後述する。
次に学習データ生成部112はS307で、このようにして蓄積したデータに基づいて学習データを生成する。このとき、特定のID情報に基づくサンプル画像のみを用いて学習データを生成してもよい。その後S308で、学習データ生成部112は、学習部113に、その学習データを送信する。このとき、特定のID情報に基づく画像のみで学習データを生成した場合は、ID情報も併せて送信する。こうして学習部113はS309で、受信した学習データに基づき学習処理を行い、学習モデルを更新する。このとき学習部113は、ID情報ごとに、その学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。
次に、実施形態1に係る画像処理システムにおける利用シーケンスについて説明する。図3(B)は、この画像処理システムの利用シーケンスを説明する図である。
S351でユーザが、原稿(帳票)の読取指示を行うと、画像取得部111はS352で、その帳票を読み取って処理対象画像を生成する。ここで読み取られる原稿(帳票)は、例えば図4(A)に示すような帳票400である。帳票400は、氏名記入欄401、フリガナ記入欄402、連絡先記入欄403を備え、それぞれ氏名、氏名のフリガナ、連絡先として郵便番号と住所と電話番号が手書きで記入されている。
こうして原稿(帳票)を読み取って得られた処理対象画像はS353で、画像処理サーバ103の画像変換部114に送信される。尚、このとき、送信データにID情報を付与するとよい。この送信データを受信すると画像変換部114はS354で、処理対象画像のテキスト化指示を受け付ける。このとき、画像変換部114は、画像取得部111をデータの返信先として記憶する。処理対象画像のテキスト化指示を受け付けた画像変換部114はS355で、最新の学習モデルを学習部113に要求する。これにより学習部113はS356で、最新の学習モデルを画像変換部114に送信する。このときS355で画像変換部114からの学習モデルの要求時にID情報が付与されていた場合は、そのID情報に対応する学習モデルを画像変換部114に送信する。こうして画像変換部114はS357で、その取得した学習モデルに基づいて、処理対象画像に対して手書き抽出を行い、これにより得られた手書き抽出画像に対して手書き部分推定を行う。この手書き部分推定により得られる手書き部分の例を図4(B)に示す。
図4(B)において、破線枠で示すように、手書き抽出画像450上の手書き部分として、手書き部分451〜455が得られ、各手書き部分には、手書きの文字行が1行ずつ含まれる。
そしてS358で画像変換部114は、その生成した手書き抽出画像と手書き部分とを手書きOCR部116に送信する。これにより手書きOCR部116はS359で、手書き抽出画像上の手書き部分に該当する部分それぞれについて手書きOCR処理を施し、テキストデータ(手書き)を取得する。そして手書きOCR部116はS360で、その取得した手書き文字のテキストデータを画像変換部114に送信する。
画像変換部114はS361で、処理対象画像から活字画像と活字領域とを生成し、S362で、その生成した活字画像と活字領域を活字OCR部117に送信する。活字OCR部117はS363で、活字画像上の活字領域に該当する部分それぞれについて活字OCR処理を施し、テキストデータ(活字)を取得し、S364で、その取得した活字のテキストデータを画像変換部114に送信する。その後、画像変換部114はS365で、テキストデータ(手書き)、テキストデータ(活字)に少なくとも基づいて帳票テキストデータを生成する。そして画像変換部114はS366で、その帳票テキストデータを画像取得部111に送信する。こうして帳票テキストデータを取得した画像取得部111はS367で、帳票テキストデータの利用用途に応じて、帳票テキストデータを出力する。例えば、帳票テキストデータの利用画面をユーザに提示したり、別体の外部の業務システム(不図示)に送信したり、印刷したりして出力する。
次に、上述した画像システムに含まれる装置及びサーバのハードウェア構成を図2を参照して説明する。
図2(A)は、実施形態1に係る画像処理装置101のハードウェア構成を説明するブロック図である。図2(B)は、実施形態1に係る学習装置102のハードウェア構成を説明するブロック図である。図2(C)は、実施形態1に係る画像処理サーバ103のハードウェア構成を説明するブロック図である。図2(D)は、実施形態1に係るOCRサーバ104のハードウェア構成を説明するブロック図である。
図2(A)において、画像処理装置101は以下の構成を備える。即ち、CPU201、ROM202、RAM204、プリンタデバイス205、スキャナデバイス206、原稿搬送デバイス207、ストレージ208、入力デバイス209、表示デバイス210、及び外部インタフェース211を備える。各デバイスは、データバス203によって相互通信可能に接続されている。
CPU201は、画像処理装置101を統括的に制御するための制御部である。CPU201は、ROM202に格納されているブートプログラムによりOS(オペレーティングシステム)やコントローラプログラムをRAM204に展開して実行する。OS上でコントローラプログラムが実行され、コントローラプログラムは、画像処理装置101を制御するためのプログラムである。CPU201はコントローラプログラムに従って、データバス203によって接続されている各デバイスを統括的に制御する。RAM204は、CPU201の主メモリやワークエリア等の一時記憶領域として動作する。
プリンタデバイス205は、画像データを用紙(記録材、シート)上に印刷するものである。これには感光体ドラムや感光体ベルトなどを用いた電子写真印刷方式や、微小ノズルアレイからインクを吐出して用紙上に直接画像を印刷するインクジェット方式などがあるが、どの方式でもかまわない。スキャナデバイス206は、CCDなどの光学読取装置を用いて紙などの原稿を走査し、電気信号データを得てこれを変換し、画像データを生成する。また、ADF(オート・ドキュメント・フィーダ)などの原稿搬送デバイス207は、原稿搬送デバイス207上の原稿台に載置された原稿を1枚ずつスキャナデバイス206に搬送する。
ストレージ208は、HDDやSSDなどの、読み出しと書き込みが可能な不揮発メモリであり、ここには、前述のコントローラプログラムなど、様々なデータが記憶されている。入力デバイス209は、タッチパネルやハードキーなどを有する入力装置である。入力デバイス209は、ユーザの操作指示を受け付けると、その指示位置を含む指示情報をCPU201に伝達する。表示デバイス210は、例えばLCDやCRTなどの表示装置である。表示デバイス210は、CPU201が生成した表示データを表示する。CPU201は、入力デバイス209より受信した指示情報と、表示デバイス210に表示させている表示データとから、いずれの操作が成されたかを判定する。そしてこの判定結果に応じて、画像処理装置101を制御するとともに、新たな表示データを生成し表示デバイス210に表示させる。尚、この表示デバイス210はタッチパネル機能を有してもよい。
外部インタフェース211は、LANや電話回線、赤外線といった近接無線などのネットワークを介して、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース211は、学習装置102やPC(不図示)などの外部機器より、PDLデータを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解釈し、画像を生成する。生成した画像は、プリンタデバイス205により印刷したり、ストレージ108に記憶したりする。また、外部インタフェース211は、画像処理サーバ103などの外部機器より画像データを受信する。受信した画像データをプリンタデバイス205により印刷したり、ストレージ108に記憶したり、外部インタフェース211により、他の外部機器に送信したりする。
図2(B)の学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、GPU239を備える。各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御するための制御部である。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOS(オペレーティングシステム)や学習データ生成プログラム及び学習プログラムをRAM234に展開して実行する。OSの上で、学習データ生成プログラム及び学習プログラムを実行する。CPU231が学習データ生成プログラムを実行することより、学習データを生成する。また、CPU231が学習プログラムを実行することにより、手書き抽出を行うニューラルネットワークを学習する。CPU231は、データバス233などのバスを介して各部を制御する。RAM234は、CPU231のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ235は、読み出しと書き込みが可能な不揮発メモリであり、前述の学習データ生成プログラムや学習プログラムを記録する。
入力デバイス236は、ポインティングデバイスやキーボードなどを有する入力装置である。表示デバイス237は、図2(A)を用いて説明した表示デバイス210と同様である。外部インタフェース238は、図2(A)を用いて説明した外部インタフェース211と同様である。GPU239は、画像処理プロセッサであり、CPU231と協調して画像データの生成やニューラルネットワークの学習を行う。
図2(C)の画像処理サーバ103は、CPU261、ROM262、RAM264、ストレージ265、入力デバイス266、表示デバイス267、外部インタフェース268を備える。各部は、データバス263を介して相互にデータを送受信することができる。
CPU261は、画像処理サーバ103の全体を制御するためのコントローラである。CPU261は、不揮発メモリであるROM262に格納されているブートプログラムにより画像処理サーバプログラムをRAM264に展開する。OSの上で、RAM264に展開された画像処理サーバプログラムを実行する。CPU261がこの画像処理サーバプログラムを実行することより、処理対象画像に対して手書き抽出及び手書き部分推定を行う。CPU261は、データバス263などのバスを介して各部を制御する。RAM264は、CPU261のメインメモリやワークエリア等の一時記憶領域として動作する。ストレージ265は、読み出しと書き込みが可能な不揮発メモリであり、前述の画像処理プログラムを記録する。入力デバイス266は、図2(B)で説明した入力デバイス236と同様である。表示デバイス267は、図2(A)で説明した表示デバイス210と同様である。外部インタフェース268は、図2(A)で説明した外部インタフェース211と同様である。
図2(D)のOCRサーバ104は、CPU291、ROM292、RAM294、ストレージ295、入力デバイス296、表示デバイス297、外部インタフェース298を備える。各部は、データバス293を介して相互にデータを送受信することができる。CPU291は、OCRサーバ104の全体を制御するための制御部である。CPU291は、不揮発メモリであるROM292に格納されているブートプログラムによりOSやOCRサーバプログラムをRAM294に展開し、その展開したプログラムを実行する。OSの上で、OCRサーバプログラムを実行する。CPU291がこのOCRサーバプログラムを実行することより、手書き抽出画像や活字画像の手書き文字や活字を認識してテキスト化する。CPU291は、そのプログラムに従って、データバス293などのバスを介して各部を制御する。RAM294は、CPU291のメインメモリやワークエリア等の一時記憶領域として動作する。ストレージ295は、読み出しと書き込みが可能な不揮発メモリで、前述のOCRサーバプログラム等を記憶する。入力デバイス296は、図2(B)で説明した入力デバイス236と同様である。表また示デバイス297は、図2(A)で説明した表示デバイス210と同様である。外部インタフェース298は、図2(A)で説明した外部インタフェース211と同様である。
図5は、実施形態1に係る画像処理システムの各装置で表示される画面例を示す図である。
図5(A)は、画像処理装置101の表示デバイス210に表示される原稿スキャン画面500の一例を示す図である。
この原稿スキャン画面500は、図3のS301で、表示デバイス210に表示される画面の一例である。図5(A)に示すように、この原稿スキャン画面500は、プレビュー領域501、スキャンボタン502、送信開始ボタン503を備える。
スキャンボタン502は、スキャナデバイス206にセットされた原稿の読取の開始を指示するボタンである。ここで読取る原稿は、例えば、無記入の帳票、或いは記入済みの帳票などである。原稿のスキャンが完了すると、原稿画像が生成され、その画像がプレビュー領域501に表示される。スキャナデバイス206に別の原稿をセットし、スキャンボタン502を再び押すことで、複数の原稿を読み取った画像をまとめて保持しておくこともできる。原稿が読み取られると、送信開始ボタン503が指示可能となる。ユーザが送信開始ボタン503を指示すると、原稿画像が学習装置102に送信される。
図5(B)は、学習装置102の表示デバイス237に表示される正解データ作成画面520の一例を示す図である。
図3のS305におけるユーザによる正解データの付与指示は、この画面を介して行われる。ユーザは、この正解データの作成画面の表示内容に基づいて操作し、正解データの作成を指示する。図5(B)に示すように、正解データ作成画面520は、画像表示領域521、画像選択ボタン522、拡大ボタン523、縮小ボタン524、選択ボタン525、除外ボタン526、保存ボタン527を備える。
画像選択ボタン522は、画像処理装置101から受信し、画像蓄積部115に蓄積されているサンプル画像を選択するボタンである。ユーザが画像選択ボタン522を指示すると、選択画面(不図示)が表示され、ユーザは、その選択画面から所望のサンプル画像を選択することができる。サンプル画像が選択されると、その選択されたサンプル画像が画像表示領域521に表示される。ユーザは画像表示領域521に表示されたサンプル画像に対して操作することにより正解データを作成する。拡大ボタン523と縮小ボタン524は、画像表示領域521の表示を拡大、縮小するためのボタンである。拡大ボタン523、或いは縮小ボタン524を指示することにより、正解データの作成が行いやすいよう、画像表示領域521に表示されているサンプル画像を拡大或いは縮小して表示することができる。
選択ボタン525及び除外ボタン526は、どちらかいずれかを選択することができ、選択したボタンは強調して表示される。選択ボタン525を選択すると、ユーザは、正解データを作成すべく、画像表示領域521に表示されたサンプル画像の一部を選択することができる。ユーザは、正解データを次のように操作して作成する。
ユーザは、図5(B)に示すように、入力デバイス236を介してカーソルを操作し、画像表示領域521に表示されているサンプル画像中の手書き記入がある領域を選択する。このとき、その選択した領域内に含まれる手書き文字が、行位置不一致マルチカラムにならないように選択する。即ち、ここでは、選択した領域内に、文字行が1行だけ含まれるよう操作する。学習データ生成部112は、この操作を受信すると、この操作により選択された領域を正解データとして記録する。即ち、正解データは、サンプル画像上の領域(1行の手書き部分)である。
一方、除外ボタン526を選択すると、ユーザは、選択済みの手書き部分に含まれてしまう文字や記号などを選択することができる。例えば、帳票の中には、電話番号の市外局番と市内局番の間に挿入するハイフン「−」が予め印刷されている場合がある。このような場合、手書き部分として電話番号全体を選択すると、このような記号が含まれてしまう。そこで除外ボタン526を操作して、こうした手書き部分に含まれる記号を除外するための選択操作を行うことができる。こうして選択された文字や記号は、後述するように、手書き抽出の学習データから除外される。ユーザは、次のように操作して手書き部分に含まれる文字を選択する。
図5(C)は、拡大ボタン523を操作し、図5(A)の表示内容の一部を拡大した例を示す図である。このように拡大した画像に対して、入力デバイス236を介してマウスカーソルを操作して、手書き記入がある領域を選択したり、その領域に含まれる、除外したい文字や記号等をなぞって選択して、その部分を手書き領域から除外することができる。学習データ生成部112は、この操作を受信すると、上記操作により選択されたサンプル画像の画素位置を記録する。即ち、正解データの付属情報として、除外したい文字や記号の画素位置を記憶する。
保存ボタン527は、作成された正解データを保存するためのボタンである。手書き抽出の正解データは、次のような画像として、画像蓄積部115に蓄積される。サンプル画像と同じサイズ(幅及び高さ)を有する、当該画像上の、ユーザにより選択された手書き部分ではない領域の画素の値は、手書きではないことを示す値(例えば0)となる。また、ユーザにより選択された手書き部分であって、前述の除外ボタン526により除外するように選択された位置の画素も手書きではないことを示す値(0)になる。ユーザにより選択された手書き部分内であって、当該手書き部分を二値化したときに、黒画素となる画素は、手書きであることを示す値(例えば255)になる。但し、上述のようにユーザにより選択された除外対象の画素は含まない。以降、このような手書き抽出の正解データである画像を「手書き抽出正解画像」と呼称する。
図4(C)は、手書き抽出正解画像の一例を示す図である。
また、手書き部分推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。サンプル画像と同じサイズ(幅及び高さ)を有する。ユーザにより選択された手書き部分に該当する画素の値は、手書き部分であることを示す値(例えば255)である。また、それ以外の画素の値は手書き部分ではないことを示す値(例えば0)である。以降、このような手書き部分推定の正解データである画像を「手書き部分推定正解画像」と呼称する。
図4(D)は、手書き部分推定正解画像の一例を示す図である。図4(D)において、手書き部分推定の正解データは、手書き部分であることを示す値で塗りつぶされた矩形領域として設定されている。
次に、S351に示したユーザの指示は、次のような操作画面で行われる。図5(D)は、画像処理装置101の表示デバイス210に表示される帳票処理のための画面例を示す図である。図5(D)に示すように、帳票処理画面540は、プレビュー領域541、スキャンボタン542、送信開始ボタン543を備える。
スキャンボタン542は、スキャナデバイス206にセットされた原稿の読取を開始させるためのボタンである。スキャンが完了すると、処理対象画像が生成され、プレビュー領域541に表示される。こうして原稿が読み取られると、送信開始ボタン543が指示可能となる。ユーザが送信開始ボタン543を指示すると、読み取られた原稿の処理対象画像が学習サーバ103に送信される。
次に、画像処理装置101によるサンプル画像の生成処理について説明する。
図6(A)は、実施形態1に係る画像処理装置101によるサンプル画像の生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU201が、ストレージ208に記憶されているプログラムをRAM204に展開し、その展開したプログラムを実行することにより実現される。この処理は、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
先ずS601でCPU201は、原稿のスキャン指示が成されたか否かを判定する。ユーザが、入力デバイス209を介して、原稿をスキャンするための所定の操作(原稿スキャン画面500のスキャンボタン502の指示)を行ったと判定した場合はS602に進み、そうでないときはS604に遷移する。S602でCPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンしてサンプル画像を生成する。このサンプル画像は、グレースケールの画像データとして生成される。そしてS603に進みCPU201は、S602で生成したサンプル画像を、外部インタフェース211を介して、学習装置102に送信する。そしてS604に進みCPU201は、処理を終了するか否かを判定する。ここでユーザが、サンプル画像の生成処理を終了する所定の操作を行った場合、或いは読取対象の原稿がなくなると、この処理を終了する。ここでサンプル画像の読み取りを終了しないと判定するとS601に進む。
以上の処理によって、画像処理装置101は、サンプル画像を生成して学習装置102に送信する。このときユーザの操作や、原稿搬送デバイス207に載置した原稿の枚数に応じて、サンプル画像が複数取得される。
次に、学習装置102によるサンプル画像の受信処理について説明する。
図6(B)は、実施形態1に係る学習装置102によるサンプル画像の受信処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されているプログラムをRAM234に展開し、その展開したプログラムを実行することにより実現される。この処理は、ユーザが、学習装置102の電源をON(オン)にすることにより開始される。
先ずS621でCPU231は、サンプル画像を受信したか否かを判定する。ここでCPU231は、外部インタフェース238を介してサンプル画像を受信したと判定するとS622に遷移し、そうでないときはS623に遷移する。S622でCPU231は、受信したサンプル画像を、ストレージ235の所定の領域に記憶する。そしてS623に進みCPU231は、処理を終了するか否かを判定し、ユーザが、学習装置102の電源のオフなどの、サンプル画像の受信処理を終了する所定の操作を行った場合はこの処理を終了し、そうでないときはS621に遷移する。
これにより学習装置102は、画像処理装置101が原稿を読み取って得られたサンプル画像の画像データを取得してストレージ235に記憶することができる。
次に、学習装置102による正解データの生成処理について説明する。
図6(C)は、実施形態1に係る学習装置102による正解データの生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されているプログラムをRAM234に展開し、その展開したプログラムを実行することにより実現される。この機能は、学習装置102の学習データ生成部112により実現される。尚、この処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことにより開始される。
先ずS641でCPU231は、サンプル画像の選択指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、サンプル画像を選択するための所定の操作(正解データ作成画面520の画像選択ボタン522の指示)を行った場合はS642に遷移する。そうでなければS643に遷移する。S642でCPU231は、S641でユーザが選択したサンプル画像を、ストレージ235から読み出してユーザに対して出力する。ここでは図5(C)の画像表示領域521に表示してS641に進む。
S643でCPU231は、ユーザが正解データの入力指示を行ったか否かを判定する。ユーザが、入力デバイス236を介して、前述したように、サンプル画像の手書き部分を選択する、或いは、除外する操作を行っていたならば、YESと判定してS644に遷移するが、そうでなければS647に遷移する。S644でCPU231は、ユーザが入力した正解データは、手書き部分であるか否かを判定する。このときCPU231は、ユーザが手書き部分の選択を指示する操作、即ち、図5(C)の選択ボタン525により選択しているときはYESと判定してS645に遷移する。そうでない場合、即ち、ユーザが入力した正解データは、それを除外するという選択である場合、即ち、図5(C)の除外ボタン526を選択しているときはS646に遷移する。S645でCPU231は、ユーザが入力した手書き部分をRAM234に一時的に記憶してS641に進む。前述したように、手書き部分は、サンプル画像上の、手書き部分に該当する領域情報である。一方S646でCPU231は、ユーザが入力した除外する、即ち消去対象の画素位置情報をRAM234に一時的に記憶してS641に進む。
一方、S643でCPU231は、ユーザが正解データの入力指示を行っていないと判定したときはS647に進みCPU231は、正解データの保存指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、正解データを保存するための所定の操作、即ち、図5(C)の保存ボタン527の指示を行った場合はS648に遷移するがそうでないときはS650に遷移する。S648でCPU231は、例えば図4(C)に示すような手書き抽出正解画像を生成して表示し、この画面を介したユーザの操作により作成された画像データを、手書き抽出の正解データとして保存する。
このときの手書き抽出正解画像の生成処理を詳しく説明する。CPU231は、手書き抽出正解画像として、S642で読み出したサンプル画像と同じサイズの画像を生成し、その画像の全ての画素を、手書きではないことを示す値にする。次いで、S645においてRAM234に一時的に記憶した手書き部分の情報を参照する。そしてサンプル画像上の手書き部分の画素群について、予め定めた閾値に基づいて二値化処理を行う。そして、得られた二値画像上の黒画素(閾値よりも低い値だった画素)は、生成した手書き抽出のための正解データに該当すると判定し、対応する位置の画素を、手書きを示す値(例えば255)とする。但し、このとき、S646においてRAM234に一時的に記憶した除外する文字の画素位置情報を参照し、該当する除外対象の画素については、手書きではないことを示す値(0)とする。このようにして生成した手書き抽出正解画像を、S642で読み出したサンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
次にS649に進みCPU231は、手書き部分の推定正解画像を生成し、手書き部分推定の正解データとして保存する。
この手書き部分の推定正解画像を生成する処理について詳しく説明する。
CPU231は、手書き部分推定正解画像として、S642で読み出したサンプル画像と同じサイズの画像を生成する。そして、その画像の全ての画素を、手書き部分ではないことを示す値(例えば0)にする。次いで、S645においてRAM234に一時的に記憶した手書き部分情報を参照し、手書き部分推定正解画像上の該当する領域内の画素の値を、手書き部分であることを示す値に変更する。このようにして生成した手書き部分推定正解画像を、S642で読み出したサンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
またS647で、正解データの保存指示が成されていないときはS650に進みCPU231は、処理を終了するか否かを判定する。ここでユーザが、正解データの生成処理を終了する所定の操作を行った場合は、その処理を終了するが、そうでなければ、S641に遷移する。
以上説明したように上記処理により、学習装置102は、サンプル画像の手書き文字領域として抽出した手書き部分の画素群から手書き抽出正解画像と、手書き部分の推定正解画像とを取得することができる。
次に、学習装置102による学習データの生成処理について説明する。
図7(A)は、実施形態1に係る学習装置102による学習データの生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されているプログラムをRAM234に展開し、その展開したプログラムを実行することにより実現される。この機能は学習装置102の学習データ生成部112により実現され、この処理は図7(B)のS732で実行される。またこの処理はユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
まずS701でCPU231は、ストレージ235に記憶している原稿画像を選択して読み出す。図6(B)のS622で、ストレージ235には複数の原稿画像が記録されているので、その中からランダムに一つを選択する。次にS702に進みCPU231は、ストレージ235に記憶している手書き抽出正解画像を読み出す。これはS648の処理によって、S701で読み出した原稿画像に関連付けられた手書き抽出正解画像がストレージ235に記憶されているので、これを読み出す。次にS703に進みCPU231は、ストレージ235に記憶している手書き部分推定正解画像を読み出す。これはS649の処理によって、S701で読み出した原稿画像に関連付けられた手書き部分推定正解画像がストレージ235に記憶されているので、これを読み出す。
次にS704に進みCPU231は、S701で読み出した原稿画像中の一部(例えば縦x横=256x256の大きさ)を切り出して、学習データに用いる入力画像を生成する。尚、このときの切り出す位置はランダムに決定する。次にS705に進みCPU231は、S702で読み出した手書き抽出正解画像中の一部を切り出して、手書き抽出の学習データに用いる正解ラベル画像(教師データ、正解データ)を生成する。以降この正解ラベル画像を「手書き抽出正解ラベル画像」と呼ぶ。このときの切り出す位置及びサイズは、S704で原稿画像から入力画像を切り出した位置及びサイズと同様とする。
次にS706に進みCPU231は、S703で読み出した手書き部分推定正解画像中の一部を切り出して、手書き部分推定の学習データに用いる正解ラベル画像を生成する。以降この正解ラベル画像を「手書き部分推定正解ラベル画像」と呼ぶ。尚、このときの切り出す位置及びサイズは、S704で原稿画像から入力画像を切り出した位置及びサイズと同様とする。次にS707に進みCPU231は、S701で読み出した入力画像から手書きに該当する画素のみを抽出して手書き抽出画像を生成する。即ち、S702で生成した手書き抽出正解ラベル画像をマスク画像として入力画像に適用する。これにより、手書き抽出正解ラベル画像上で手書きを示す値である画素に該当する画素は、入力画像上の同位置の画素であり、手書き抽出正解ラベル画像上で手書きではないことを示す値である画素に該当する画素は白(255)である画像を得る。こうして得た画像を手書き抽出画像とする。次にS708に進みCPU231は、S704で生成した入力画像と、S705で生成した手書き抽出正解ラベル画像とを対応付け、手書き抽出の学習データとしてストレージ235の所定の領域に保存する。
これにより実施形態1では、図8(A)のような学習データが保存される。
図8(A)において、801は、S704で生成した入力画像を示し、802は、S705で生成した手書き抽出正解ラベル画像の一例を示す。
次にS709に進みCPU231は、S707で生成した手書き抽出画像と、S706で生成した手書き部分推定正解ラベル画像とを対応付け、手書き部分推定の学習データとしてストレージ235の所定の領域に保存する。このように対応付けて保存するのは、S707で生成した手書き抽出画像を、手書き部分推定のニューラルネットワークを学習する際の入力画像として扱うためである。
これにより、図8(B)に示すような学習データが保存される。
図8(B)において、803は、S707で生成した手書き抽出画像を示し、804は、S706で生成した手書き部分推定正解ラベル画像を示す。
そしてS710に進みCPU231は、学習データの生成処理を終了するか否かを判定する。CPU231は、予め決定した学習データの数(このフローチャートの開始時に、学習置102の入力デバイス236を介して、ユーザが指定するなどして決定)だけ学習データを生成していたならばYESと判定し、処理を終了する。そうでなければ、NOと判定してS701に遷移する。
以上説明した処理により、手書き抽出を行うニューラルネットワークの学習データと、手書き部分推定を行うニューラルネットワークの学習データが生成される。尚、ニューラルネットワークの汎用性を高めるために、学習データの加工を行っても良い。
例えば、入力画像を所定の範囲(例えば、50%〜150%の間)からランダムに選択して決定する変倍率で変倍する。手書き抽出画像と、手書き抽出及び手書き部分推定の正解ラベル画像も同様に変倍する。或いは、入力画像を所定の範囲(例えば、−10度〜10度の間)からランダムに選択して決定する回転角度で回転する。手書き抽出画像と、手書き抽出及び手書き部分推定の正解ラベル画像も同様に回転する。変倍や回転を考慮すれば、S704やS705、S706で入力画像や手書き抽出及び手書き部分推定の正解ラベル画像を切り出す際に、少し大きめのサイズ(例えば、縦x横=512x512の大きさ)で切り出す。そして、変倍ないし回転後に、最終的な入力画像や手書き抽出及び手書き部分推定の正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう、中心部分から切り出す。或いは、入力画像や手書き抽出画像の各画素の輝度を変更して加工してもよい。即ち、ガンマ補正を用いて入力画像や手書き抽出画像の輝度を変更してもよい。このときのガンマ値は所定の範囲(例えば、0.1〜10.0の間)からランダムに選択して決定する。
次に、学習装置102による学習処理について説明する。
図7(B)は、実施形態1に係る学習装置102による学習処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されているプログラムをRAM234に展開し、その展開したプログラムを実行することにより実現される。尚、この処理が示す機能は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。尚、実施形態1において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
まずS731でCPU231は、手書き抽出と手書き部分推定のニューラルネットワークをそれぞれ初期化する。即ち、CPU231は、2つのニューラルネットワークを構築し、これらニューラルネットワークに含まれる各パラメタの値を、ランダムに決定して初期化する。これらニューラルネットワークの構造は、様々なものを用いることができるが、例えば、公知技術であるFCN(Fully Convolutional Networks)の形態を取り得る。手書き部分推定のニューラルネットワークについては、他にも、例えば、公知技術であるYOLO(You Only Look Once)の形態を取り得る。
次にS732に進みCPU231は、学習データを取得する。このときCPU231は、図7(A)のフローチャートで示した学習データの生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。次にS733に進みCPU231は、手書き抽出のニューラルネットワークの誤差を算出する。即ち、手書き抽出の各学習データに含まれる入力画像を手書き抽出のニューラルネットワークに入力して出力を得る。この出力は、入力画像と同じ画像サイズであり、予測結果として、手書きであると判定された画素は、画素の値が手書きを示す値、そうではないと判定された画素は、画素の値が手書きではないことを示す値である画像である。そして、その出力と学習データに含まれる手書き抽出正解ラベル画像との差を評価して誤差を求める。この評価には指標として交差エントロピーを用いることができる。
次にS734に進みCPU231は、手書き抽出のニューラルネットワークのパラメタを調整する。即ち、S733において算出した誤差を基に、バックプロパゲーション法によって手書き抽出のニューラルネットワークのパラメタ値を変更する。次にS735に進みCPU231は、手書き部分推定のニューラルネットワークの誤差を算出する。即ち、手書き部分推定の各学習データに含まれる入力画像(手書き抽出画像)を手書き部分推定のニューラルネットワークに入力して出力を得る。この出力は、入力画像と同じ画像サイズであり、予測結果として、手書き部分であると判定された画素は、画素の値が手書き部分を示す値であり、一方、そうではないと判定された画素は、画素の値が手書き部分ではないことを示す値である画像である。そして、この出力と学習データに含まれる手書き部分推定正解ラベル画像との差を評価して誤差を求める。この評価の指標には、手書き抽出と同様、交差エントロピーを用いることができる。
次にS736に進みCPU231は、手書き部分推定のニューラルネットワークのパラメタを調整する。即ち、S735において算出した誤差に基づいて、バックプロパゲーション法によって手書き部分推定のニューラルネットワークのパラメタ値を変更する。そしてS737に進みCPU231は、この学習処理を終了するか否かを判定する。これは次のようにして行う。CPU231は、S732〜S736の処理を、所定回数(例えば、60000回)行ったか否かを判定する。この所定回数は、このフローチャートで示す処理の開始時にユーザが操作入力するなどして決定することができる。S732〜S736の処理を所定回数行った場合は、S738に進み、CPU231は、学習結果として、S734とS736において調整した手書き抽出及び手書き部分推定のニューラルネットワークのパラメタを、それぞれ、画像処理サーバ103に送信する。一方、所定回数に達していないときはS732に進んで、ニューラルネットワークの学習を続ける。
こうして画像処理サーバ103は、学習モデルを取得することができる。
次に、画像処理装置101による、帳票テキスト化の依頼処理について説明する。画像処理装置101は、手書き記入が成された帳票をスキャンして処理対象画像を生成する。そして、その処理対象画像の画像データを画像処理サーバ103に送信して、その帳票の画像に含まれる文字を文字認識した結果であるテキストデータの取得を依頼する。
図9(A)は、実施形態1に係る画像処理装置101が帳票をテキスト化するよう画像処理サーバ103に依頼する処理を説明するフローチャートである。このフローチャートで示す処理は、画像処理装置101のCPU201が、ストレージ208に記憶されているプログラムをRAM204に展開し、その展開したプログラムを実行することにより実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことにより開始される。
まずS901でCPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして処理対象の原稿画像を生成する。この処理対象画像は、グレースケールの画像データとして生成される。次にS902に進みCPU201は、S901で生成した処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。次にS903に進みCPU201は、画像処理サーバ103から、処理結果を受信したか否かを判定する。画像処理サーバ103から、外部インタフェース211を介して、処理結果を受信していた場合はS904に遷移するが、そうでない場合はS903の処理ステップを繰り返す。S904でCPU201は、画像処理サーバ103から受信した処理結果、即ち、S901で生成した処理対象画像に含まれる手書き文字や活字を認識して生成した帳票テキストデータを出力する。例えば、ユーザが、入力デバイス209を操作して設定した送信宛先に、外部インタフェース211を介して、帳票テキストデータを送信することができる。
次に、画像処理サーバ103による帳票テキスト化処理について説明する。
図9(B)は、実施形態1に係る画像処理サーバ103による帳票テキスト化処理を説明するフローチャートである。このフローチャートで示す処理は、画像処理サーバ103のCPU261が、ストレージ265に記憶されているプログラムをRAM264に展開し、その展開したプログラムを実行することにより実現される。
図10は、実施形態1に係る画像処理サーバ103による帳票テキスト化処理における、データ生成処理の概要を説明する図である。
画像変換部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、その処理対象画像に含まれる活字や手書き文字をOCRしてテキストデータを得る。活字に対するOCR処理は、活字OCR部117に実行させる。手書き文字に対するOCRは、手書きOCR部116に実行させる。このフローチャートで示す処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムをRAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
まずS951でCPU261は、手書き抽出を行うニューラルネットワークと手書き部分推定を行うニューラルネットワークをロードする。このときCPU261は、図7(B)のフローチャートのS731と同一のニューラルネットワークを構築する。そして、S738において、学習装置102から送信された学習結果(手書き抽出を行うニューラルネットワークのパラメタと手書き部分推定を行うニューラルネットワークのパラメタ)を、構築したニューラルネットワークにそれぞれ反映する。
次にS952でCPU261は、処理対象画像を、画像処理装置101より受信したか否か判定する。外部インタフェース268を介して、処理対象画像を受信したと判定するとS953に遷移するが、そうでなければS963に遷移する。例として、ここでは、処理対象画像として、図10の帳票400(図4に示した帳票400)を受信したものとする。S953でCPU261は、画像処理装置101から受信した処理対象画像から手書き画素を抽出する。このときCPU261は、処理対象画像を、S951で構築した手書き抽出を行うニューラルネットワークに入力して、手書き画素を推定させる。
これにより、ニューラルネットワークの出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズであり、予測結果として手書きであると判定された画素には、手書きであること示す値、手書きではないと判定された画素には、手書きではないことを示す値が、それぞれ記録された画像データを得る。そして、その画像データ中の手書きであることを示す値の画素と同じ位置の画素を、処理対象画像から抽出して手書き抽出画像を生成する。これにより図10の手書き抽出画像1001が得られる。この手書き抽出画像1001は図示のように、手書き文字のみが含まれた画像である。
次にS954に進みCPU261は、画像処理装置101から受信した処理対象画像から手書き部分を推定する。このときCPU261は、S953で生成した手書き抽出画像を、S951で構築した手書き部分推定を行うニューラルネットワークに入力して、手書き部分を推定させる。これによりニューラルネットワークの出力として、次のような画像データが得られる。手
書き抽出画像と同じ画像サイズであり、予測結果として手書き部分であると判定された画素には、手書き部分であること示す値、手書き部分ではないと判定された画素には、手書き部分ではないことを示す値が、それぞれ記録されている。前述の図3のS305において、ユーザは、手書き部分推定の正解データを、手書き部分に文字行が一行含まれるように作成した。手書き部分推定を行うニューラルネットワークはこれを学習しているため、文字行ごとに手書き部分であることを示す画素を出力する。尚、手書き部分推定のニューラルネットワークの出力は、画素毎の予測結果であるため、予測された領域は必ずしも正確な矩形ではなく扱いにくいため、この領域を内包する外接矩形を設定する。外接矩形の設定には公知の技術を適用し実現することができる。それぞれの外接矩形は、処理対象画像上における左上端点と幅及び高さから成る情報として表現することができる。このようにして得た矩形情報群を手書き部分とする。図10の手書き部分推定画像1002において、手書き抽出画像1001に対して推定した手書き部分を、点線枠で示して例示する(手書き部分1101〜1105)。
次にS955に進みCPU261は、S953で生成した手書き抽出画像と、S954で生成した手書き部分推定画像とを、外部インタフェース268を介して、OCRサーバ104の手書きOCR部116に送信する。こうして手書き文字のみが含まれる手書き抽出画像に対して、推定した手書き部分毎に手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。手書き抽出画像を手書き部分毎に手書きOCRする。これにより、例えば、手書き抽出画像1001のように、手書き抽出画像に含まれる手書き文字が、行位置不一致マルチカラムの構成であったとしても、図10の1002に示したように、文字行ごとに分割して手書きOCRを実行させることができる。これにより手書きOCRエンジンは、文字行の切り出しに失敗することがなくなり、認識精度の低下を軽減することができる。
そしてS956に進みCPU261は、手書きOCR部116から、手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCR部116が、手書き部分に含まれていた手書き文字を認識して得たテキストデータである。外部インタフェース268を介して、OCRサーバ104の手書きOCR部116から、手書きOCR結果を受信するとS957に遷移するが、そうでなければ、S956の処理を繰り返す。このようにしてCPU261は、ここまでの処理によって、手書き部分(座標情報)とそこに含まれていた手書き文字を認識して得たテキストデータを取得することができる。CPU261は、こうして取得したテキストデータを、図10の手書き情報テーブル1003としてRAM246に記憶する。
次にS957に進みCPU261は、SS953で得た手書き抽出のニューラルネットワークの出力に基づいて、処理対象画像から手書きを除去して活字画像を生成する。CPU261は、処理対象画像の画素であって、ニューラルネットワークが出力した画像データにおいて画素値が手書きを示す値である画素と同位置の画素を白(画素値255)に変更する。これにより、図10の活字画像1004が得られる。
次にS958に進みCPU261は、S957で生成した活字画像から活字領域を抽出する。CPU261は、活字領域として、活字を内包する活字画像上の活字部分を抽出する。ここで活字部分とは、活字のまとまり(オブジェクト)であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、或いは、図や写真、表、グラフ、といったオブジェクトである。この活字部分の抽出方法として、例えば次のような手法を取り得る。活字画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分(連結黒画素)を抽出し、これに外接する矩形を作成していく。この矩形の形状や大きさを評価することで、文字、或いは文字の一部である矩形群を得ることができる。これら矩形群について、矩形間の距離を評価し、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得ることができる。同様の大きさの文字の矩形が近くに並んでいる場合には、それらを統合して文字行の矩形群を得ることができる。短辺長が同様の文字行の矩形が等間隔に並んでいる場合は、それらを統合して文章の矩形群を得ることができる。また、図や写真、表、グラフなど、文字や行、文章以外のオブジェクトを内包する矩形も得ることができる。以上で抽出した矩形から、単独の文字或いは文字の一部である矩形を除外する。残った矩形を活字領域とする。図10の活字OCRの対象領域1005に、活字画像に対して抽出した活字領域を点線枠で例示する。この処理では、背景画像から複数の活字領域を抽出し得る。
次にS959に進みCPU261は、S957で生成した活字画像と、S958で取得した活字領域とを、外部インタフェース268を介して、OCRサーバ104の活字OCR部117に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
そしてS960に進みCPU261は、活字OCR部117から、活字OCRの結果を受信したか否かを判定する。活字OCRの結果とは、活字OCR部117が、活字領域に含まれていた活字を認識して得たテキストデータである。外部インタフェース268を介して、活字OCR部117から、活字OCR結果を受信するとS961に遷移するが、そうでなければ、S960の処理を繰り返す。ここまでの処理によって、活字領域(座標情報)とそこに含まれていた活字を認識して得たテキストデータを得た。CPU261は、これらを、図10の活字情報テーブル1006としてRAM246に記憶しておく。
そしてS961に進みCPU261は、手書きOCR部116、及び活字OCR部117から受信した手書きOCR結果及び活字OCR結果を統合する。CPU261は、元となった手書き部分及び活字領域の位置関係や、手書きOCR結果ないし活字OCR結果であるテキストデータの意味的な関係性を評価することで、手書きOCR結果及び活字OCR結果の関連性を推定する。この推定は、手書き情報テーブル1003や活字情報テーブル1006に基づき行われる。例えば、活字領域1151(「(フリガナ)」)に対して、最も距離が近い手書き部分1101(「ヤマダタロウ」)が特定される。活字領域1151の近傍には活字領域1152(「氏名」)が存在するため、これは氏名のフリガナであると特定される。また同様に、活字領域1152に対して最も距離が近く、かつ「氏名」に合致する内容である手書き部分1102(「山田太郎」)が特定される。また、活字領域1153(「連絡先」)に対して、最も距離が近い手書き部分1104(「取手市白山7−5−1」)が特定される。そして、手書き部分1104の手書きOCR結果は、地名を含むことから、連絡先であってかつ住所であることが特定される。また、活字領域1154(「〒」(記号文字))に対して、最も距離が近い手書き部分1103(「302−8501」)が特定される。そして手書き部分1103は、次に距離が近い活字領域として活字領域1153が特定される。これらより、手書き部分1103の手書きOCR結果は、連絡先の一部としての郵便番号であることが特定される。最後に残った手書き部分1105(「03−3758−2111」)について、手書きOCR結果は数字とハイフンから構成されていることと、最も距離が近い活字領域が活字領域1153であることから、これは連絡先の一部としての電話番号と特定される。こうして、手書きOCR結果と活字OCR結果とが、ひとつ以上の項目と値のペアとして統合され、帳票テキストデータ1007が生成される。
こうしてS962に進みCPU261は、生成した帳票テキストデータを、画像取得部111に送信する。そしてS963に進みCPU261は、処理を終了するか否かを判定する。ユーザが、画像処理サーバ103の電源のOFFなどの所定の操作を行った場合には、この処理を終了するが、そうでなければ、S952に遷移する。
以上説明したように実施形態1によれば、手書き記入を含む帳票のスキャン画像から、手書きのみを含む手書き抽出画像を生成し、その手書き抽出画像から、手書きの文字行一行を内包する手書き部分を推定する。そして、手書き抽出画像中の手書きを、手書き部分毎に手書きOCRによって認識して、テキスト化することができる。
これにより、手書きOCRの対象に、活字やマークなどが含まれることによる、手書きOCRの認識精度の低下を低減することができる。そして、手書き部分に含まれる手書き文字が、行位置不一致マルチカラムではないよう構成するため、手書きOCRエンジンが文字行の切り出しに失敗することがなくなって、手書き文字認識の精度の低下を軽減できるという効果がある。
尚、実施形態1では、手書き抽出画像と手書き部分とを手書きOCR部に送信したが、本発明はこの限りではない。手書き抽出画像を手書き部分毎に切り出して複数の部分画像を生成して送信してもよい。
また実施形態1では、手書き部分に含まれる文字行が一行となるよう、手書き部分のニューラルネットワークを学習するための正解データを作成したが、本発明はこの限りではない。行位置不一致マルチカラムにならなければ、例えば、文字行が数行含まれるようにしても良い。
[実施形態2]
実施形態2では、手書き抽出及び手書き部分推定の学習データの作成方法として、実施形態1とは別の方法を採用する例で説明する。実施形態2では、画像処理により学習データを作成する。このような処理により、学習データを効率的に作成することができる。実施形態2の画像処理システムの構成は、特徴部分を除いて実施形態1の画像処理システムの構成と同様である。そのため、同様の構成については、同様の符号を付し、その詳細な説明を省略する。
まず、実施形態2に係る学習処理システムについて説明する。この画像処理システムの構成は、前述の実施形態1に係る図1に示したものと同様である。
画像処理装置101は、白紙に手書きのみが記入された原稿をスキャン機能により読み取って画像データを生成する(以降この画像を「前景サンプル画像」と呼ぶ)。このとき複数枚の原稿をスキャンして前景サンプル画像を複数得る。また画像処理装置101は、電子文書(帳票)を印刷して、印刷された原稿を出力する。更にこの印刷された原稿(手書き記入なし)をスキャンして画像データを生成する(以降この背景画像を「背景サンプル画像」と呼ぶ)。複数枚の印刷された原稿をスキャンして、背景サンプル画像を複数得る。画像処理装置101は、ネットワーク105を介して、前景サンプル画像と背景サンプル画像を学習装置102に送信する。
学習装置102は、画像処理装置101が生成した前景サンプル画像と背景サンプル画像を蓄積する画像蓄積部115を有する。またこのようにして蓄積した画像から学習データを生成する学習データ生成部112を有する。学習データ生成部112は、手書き抽出を行うニューラルネットワークと、手書き部分推定を行うニューラルネットワークを学習するために用いられる学習データを生成する。学習装置102は、生成した学習データを用いてニューラルネットワークの学習を行う学習部113を有する。学習部113の学習により、学習結果(ニューラルネットワークのパラメータなど)が生成される。学習装置102は、学習結果(学習モデル)を、ネットワーク105を介して、画像処理サーバ103に送信する。
次に実施形態2に係るシステムにおける学習シーケンスについて説明する。
図11は、実施形態2に係る画像処理システムにおける学習シーケンスを説明する図である。
S1101において、ユーザが、手書きが記入された原稿の読取指示を行う。これによりS1102で画像取得部111は、その原稿を読み取って前景サンプル画像を生成する。このとき、この前景サンプル画像に前景フラグを付与する。次にS1103でユーザが印刷された帳票(原稿)の読取指示を行う。これによりS1104で画像取得部111は、その原稿を読みとり、背景サンプル画像を生成し、その背景サンプル画像に背景フラグを付与する。
こうして得られた前景サンプル画像、背景サンプル画像はS1105で、学習データ生成部112に送信される。尚、このとき、前景サンプル画像、背景サンプル画像にID情報を付与するとよい。このID情報は例えば、画像取得部111として機能する画像処理装置101を識別するための情報である。尚、ID情報として、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するめためのグループ識別情報であってもよい。学習装置102の学習データ生成部112はS1106で、それら画像が受信して画像蓄積部115に画像を蓄積する。
次にS1107でユーザが、学習装置102に対して合成領域データの付与指示を行う。これにより学習データ生成部112はS1108で、その合成領域データを取得して画像蓄積部115に蓄積する。後述するように、学習データ生成部112は、前景サンプル画像と背景サンプル画像を合成して学習データを生成する。上述の合成領域データとは、その合成処理において、背景サンプル画像上であって、手書きサンプルを合成する領域のことである。こうように、学習データの生成に際し、予め合成領域データを作成しておく。合成領域データの付与方法については後述する。
次にS1109で学習データ生成部112は、このようにして蓄積したデータに基づいて学習データを生成する。このとき、特定のID情報に基づく画像のみを用いて学習データを生成してもよい。その後、学習データ生成部112はS1110で、学習部113に学習データを送信する。このとき特定のID情報に基づく画像のみで学習データを生成した場合は、ID情報も併せて送信する。そして学習部113はS1111で、受信した学習データに基づいて学習モデルを更新する。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習を行ってもよい。このようにID情報と学習モデルとを紐づけることで、特定の利用環境に特化した学習モデルを構築できる。
ここで、S1102で読み込む原稿は、次のようにして作成する。
図12(A)は、図11のS1102で読み込む原稿の用紙(記入前)例を示す図である。
用紙1200に示すように、この用紙1200には区切り線(罫線)(一例を区切り線1201として図示)が印刷されている。ユーザは、この罫線で挟まれた領域内に、手書き文字を記入する。ここでは例えば、帳票に記入するような、氏名や住所、電話番号、といった内容を記入し、これら罫線を跨ぐような記入は行わない。また、前述したような、行位置不一致マルチカラムの構成になるような記入は行わない。
図12(B)は、記入済みの原稿1250の一例を示す図である。尚、図11のS1102では、このような原稿1250を読み込んで前景サンプル画像を生成するため、原稿1250は原稿画像の一例をも示している。
S1101、S1103に示したユーザの指示は次のような操作画面で行われる。
図13(A)は、実施形態2に係る画像処理装置101の表示デバイス210に表示される原稿スキャン画面の一例を示す図である。
図13(A)に示すように、原稿スキャン画面1300は、プレビュー領域1301、手書き原稿ボタン1302、帳票原稿ボタン1303、スキャンボタン1304、送信開始ボタン1305を備える。
スキャンボタン1304は、スキャナデバイス206にセットされた原稿の読取を開始するように指示するボタンである。スキャンが完了すると、プレビュー領域1301に読み取られた画像のプレビューが表示される。スキャナデバイス206に別の原稿をセットし、スキャンボタン1304を再び押すことで、複数の画像データをまとめて保持しておくこともできる。手書き原稿ボタン1302、帳票原稿ボタン1303は、読み取られた原稿画像の属性を指定するためのボタンである。手書き原稿ボタン1302を選択すると読取画像に前景フラグが付与される。帳票原稿ボタン1303を選択すると読取画像に背景フラグが付与される。選択中のボタンは識別可能に強調表示される。こうして原稿の画像が読み取られ、画像種別が選択されると、送信開始ボタン1305が指示可能となる。送信開始ボタン1305を指示すると、選択された画像属性が付与された読取画像が学習装置102に送信される。
S1107に示したユーザの指示は、次のような操作画面で行われる。
図13(B)は、実施形態2に係る学習装置102の表示デバイス237に表示される合成領域データ作成画面の一例を示す図である。
合成領域データ作成画面1350は、画像表示領域1351、画像選択ボタン1352、拡大ボタン1353、縮小ボタン1354、保存ボタン1356を備える。
画像選択ボタン1352は、画像処理装置101から受信し、画像蓄積部115に蓄積されている背景サンプル画像を選択するためのボタンである。画像選択ボタン1352を指示すると、選択画面(不図示)が表示され、背景サンプル画像を選択することができる。背景サンプル画像を選択すると、画像表示領域1351に、その選択された背景サンプル画像が表示される。ユーザは画像表示領域1351に表示された背景サンプル画像に対して操作し、合成領域データを作成する。
拡大ボタン1353と縮小ボタン1354は、画像表示領域1351の表示を拡大或いは縮小するためのボタンである。拡大ボタン1353や縮小ボタン1354を指示することにより、合成領域データの作成が行いやすいよう、画像表示領域1351に表示されている背景サンプル画像を拡大及び縮小して表示することができる。
ユーザは、合成領域データを次のように操作して作成する。
ユーザは、図13(B)の点線枠1357で示すように、入力デバイス236を介してカーソルを操作し、画像表示領域1351に表示されている背景サンプル画像中の罫線に囲まれた領域内(記入欄内)を選択する。この選択した領域が合成領域(合成領域データ)である。即ち、後述する、学習データ生成部112による学習データの生成時に、背景サンプル画像上の、その合成領域内に前景サンプル画像の一部を合成するよう指示するものである。
以上のようにして、ユーザは、個々の背景サンプル画像に対して、複数の合成領域を作成することができる。
保存ボタン1356は、作成された合成領域データを保存するためのボタンである。合成領域データは、作成対象であった背景サンプル画像に対して一つのXML形式のデータとして記憶される。以降、このXML形式で保存された合成領域データを「合成領域定義情報」と呼ぶ。
図14は、実施形態2に係る合成領域を定義する定義情報の一例を示す図である。
この合成領域の定義情報の詳細は後述する。この合成領域の定義情報は、対応する背景サンプル画像と紐づけて画像蓄積部115に蓄積される。
次に、実施形態2に係る画像処理装置101によるサンプル画像の生成処理について説明する。
図15(A)は、実施形態2に係る画像処理装置101によるサンプル画像の生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU201が、ストレージ208に記憶されているプログラムをRAM204に展開して実行することで実現される。この処理は、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
まずS1501でCPU201は、手書き原稿のスキャン指示が成されたか否かを判定する。ここでユーザが、入力デバイス209を操作して、手書き原稿をスキャンするための所定の操作(スキャンボタン1304への指示及び手書き原稿ボタン1302の選択)を行った場合はYESと判定してS1502に遷移する。一方、そうでなければS1504に遷移する。S1502でCPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして前景サンプル画像を生成する。この前景サンプル画像は、グレースケールの画像データとして生成される。次にS1503に進みCPU201は、S1502で生成した前景サンプル画像を、外部インタフェース211を介して、学習装置102に送信してS1507に進む。このとき、送信する画像データが、前景サンプル画像であることを示す情報(前景フラグ)を付与して送信する。
S1504でCPU201は、印刷された原稿だけをスキャンする指示が成されたか否かを判定する。ユーザが、入力デバイス209を介して、印刷された原稿だけをスキャンするための所定の操作(スキャンボタン1304への指示及び帳票原稿ボタン1303の選択)を行った場合はYESと判定してS1505に遷移する。一方、そうでなければS1507に遷移する。S1505でCPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、その印刷された原稿をスキャンして背景サンプル画像を生成する。この原稿は、用紙に帳票などを印刷したものであり、印刷された内容のみ(手書き文字を含まない)が含まれる。背景サンプル画像は、グレースケールの画像データとして生成される。そしてS1506に進みCPU201は、S1505で生成した背景サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。このとき、送信する画像データが、背景サンプル画像であることを示す情報(背景フラグ)を付与して送信する。S1507でCPU201は、処理を終了するか否かを判定する。ユーザが、サンプル画像生成処理を終了する所定の操作を行った場合は、この処理を終了するが、そうでなければ、S1501に遷移する。
以上の処理によって、画像処理装置101は、前景サンプル画像及び背景サンプル画像を生成して学習装置102に送信することができる。このときユーザの操作や、原稿搬送デバイス207に載置した原稿の枚数に応じて、前景サンプル画像及び背景サンプル画像が、それぞれ複数取得される。
次に、学習装置102によるサンプル画像の受信処理について説明する。
図15(B)は、実施形態2に係る学習装置102によるサンプル画像の受信処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されている学習データ生成プログラムをRAM234に展開して実行することで実現される。この処理は、ユーザが、学習装置102の電源をON(オン)にすることにより開始される。
S1531でCPU231は、前景サンプル画像を受信したか否かを判定する。ここでCPU231は、外部インタフェース238を介して画像データを受信し、かつ、その画像データに前景フラグが付与されていたときは、前景サンプル画像を受信したと判定してS1532に遷移するが、そうでなければS1533に遷移する。S1532でCPU231は、受信した前景サンプル画像を、ストレージ235の所定の領域に記憶してS1535に進む。
S1533でCPU231は、背景サンプル画像を受信したか否かを判定する。CPU231は、外部インタフェース238を介して画像データを受信し、かつ、その画像データに背景フラグが付与されていれば背景サンプル画像を受信したと判定してS1534に遷移する。そうでなければ、S1535に遷移する。S1534でCPU231は、受信した背景サンプル画像を、ストレージ235の所定の領域に記憶してS1535に進む。S1535でCPU231は、処理を終了するか否かを判定する。ユーザが、学習装置102の電源のオフなどの、サンプル画像の受信処理を終了する所定の操作を行った場合には、この処理を終了するが、そうでなければS1531に遷移する。
次に、学習装置102による合成領域の定義情報の生成処理について説明する。
図15(C)は、実施形態2に係る学習装置102による合成領域の定義情報の生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されている学習データ生成プログラムをRAM234に展開して実行することで実現される。この処理は、学習装置102の学習データ生成部112の機能に対応している。この処理は、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S1561でCPU231は、背景サンプル画像の選択指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、背景サンプル画像を選択するための所定の操作(画像選択ボタン1352の指示)を行った場合はYESと判定してS1562に遷移するが、そうでなければ、S1563に遷移する。S1562でCPU231は、S1561でユーザが選択した背景サンプル画像を、ストレージ235から読み出してユーザに対して出力する(画像表示領域1351に表示)。そしてS1561に遷移する。
S1563でCPU231は、ユーザが合成領域データの入力指示を行ったか否かを判定する。ユーザが、入力デバイス236を介して、前述したように、記入欄内の領域を選択する操作を行っていればYESと判定してS1564に遷移するが、そうでなければS1565に遷移する。S1564でCPU231は、ユーザが入力した合成領域データをRAM234に一時的に記憶してS1561に進む。
S1565でCPU231は、合成領域データの保存指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、合成領域データを保存するための所定の操作(保存ボタン1356の指示)を行った場合はYESと判定してS1566に遷移する。そうでなければ、S1567に遷移する。S1566でCPU231は、合成領域の定義情報を生成して保存する。
このときCPU231は、次のようにして合成領域定義情報を生成する。
CPU231は、合成領域定義情報を示すXMLデータを生成する。そして、S1564でRAM234に一時的に記憶した合成領域データを参照し、その数分だけ<area>タグを挿入する。各々の<area>タグにはx属性及びy属性を追加し、該当する合成領域の背景サンプル画像上の画素位置を示すx座標及びy座標の値を記録する。また、width属性及びheight属性を追加し、該当する合成領域の幅の画素数及び高さの画素数を記録する。
このようにして、図14に例示した合成領域の定義情報が生成される。CPU231は、S1561で選択し、現在処理対象としている背景サンプル画像と、生成した合成領域定義情報とを紐付けて、ストレージ235に記憶する。
そしてS1567に進みCPU231は、処理を終了するか否かを判定する。ユーザが、合成領域の定義情報の生成処理を終了する所定の操作を行った場合には、この処理を終了するが、そうでなければ、S1561に遷移する。
次に、実施形態2における、学習装置102による学習データ生成処理について説明する。
図16は、実施形態2に係る学習装置102による学習データの生成処理を説明するフローチャートである。このフローチャートで示す処理は、CPU231が、ストレージ235に記憶されている学習データ生成プログラムをRAM234に展開して実行することで実現される。
図17(A)は、手書き抽出の学習データの生成に用いる背景パッチの一例を示す図である。図17(B)は、手書き抽出の学習データの構成例を示す図である。更に図17(C)は、手書き部分推定の学習データの構成例を示す図である。
学習データの生成処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
まずS1601でCPU231は、ストレージ235に記憶している前景サンプル画像を選択して読み出す。図15のS1532の処理ステップにより、ストレージ235には複数の前景サンプル画像が記憶されているので、その中からランダムに一つを選択して読み出す。次にS1602に進みCPU231は、読み出した前景サンプル画像上の区切り線(区切り線(罫線)1201を含む)の位置を取得する。これは次のように処理することで実現される。
CPU231は、前景サンプル画像を二値化し、二値画像を得る。そして、二値画像内に含まれる水平方向の直線であって、予め定めた閾値よりも長いものを区切り線として検出する。水平方向の直線の検出は、二値画像内に含まれる個々の黒画素の連結部分について幅や高さを評価して検出するなど、公知の技術を適用して実現することができる。複数得られる区切り線の両端点座標値(前景サンプル画像の左上端を原点とする座標系の座標値)を得て、これをRAM234に一時的に記憶する。
次にS1603に進みCPU231は、区切り線を前景サンプル画像から除去する。即ち、S1602で検出した区切り線の位置に基づき、前景サンプル画像上の区切り線に該当する画素群を白(255)に変更する。次にS1604に進みCPU231は、ストレージ235に記憶している背景サンプル画像を選択して読み出す。図15のS1534の処理ステップにより、ストレージ235には複数の背景サンプル画像が記憶されているので、その中からランダムに一つを選択して読み出す。
次にS1605に進みCPU231は、背景サンプル画像の一部(例えば縦x横=256x256の大きさ)を切り出した画像データを生成する(以降この画像データを「背景パッチ」と呼ぶ)。尚、このときの切り出し位置はランダムに決定する。
図17(A)は、背景パッチの一例を示す図である。
次にS1606に進みCPU231は、手書き抽出正解ラベル画像を生成する。即ち、CPU231は、背景パッチと同サイズの画像を生成し、その画像の全ての画素の値を、手書きではないことを示す値とし、これを手書き抽出正解ラベル画像とする。そしてS1607に進みCPU231は、背景パッチにおける合成領域を特定する。これは次のように処理する。
CPU231は、ストレージ235から、S1604で選択した背景サンプル画像と紐付けて記憶されている合成領域の定義情報を読み出す。この合成領域の定義情報内に<area>タグとして記憶されている各合成領域(矩形情報)と、背景サンプル画像上の背景パッチ切り出し領域(矩形情報)との交差部分(交差矩形)を求める。その中で、交差矩形のサイズが縦と横それぞれについて0以上のものを背景パッチにおける合成領域として採用する。こうして採用した合成領域は、背景サンプル画像上の左上端点を原点としているので、背景パッチ切り出し領域の左上端点を基準としたものに補正する。以上のようにして背景パッチ上の合成領域を特定できる。そして、後の処理のために、算出した背景パッチ上の合成領域はRAM234に一時的に記憶しておく。図17(A)では、背景パッチ上の合成領域を、斜線で示している。CPU231は、背景パッチ上の合成領域の一つを選択する。
次にS1608に進みCPU231は、前景サンプル画像の一部を切り出した画像データを生成する(以降この画像データを「前景パッチ」と呼ぶ)。切り出し位置は、ランダムに決定する。切り出すサイズは、現在処理対象として選択している背景パッチ上の合成領域のサイズと同一とする。尚、前景パッチに対して二値化処理を行い、黒画素が予め定めた所定数に満たない場合は、前景パッチを切り出し直す。次にS1609に進みCPU231は、切り出した前景パッチの余白を除去する。これは次のように処理する。
CPU231は、前景パッチに対して二値化処理を行って二値画像を生成する。そして、その二値画像中の全ての黒画素を含む外接矩形を求める。この外接矩形に該当する領域を前景パッチから切り出して、切り出した画像で前景パッチを更新する。
次にS1610に進みCPU231は、前景パッチの合成位置を決定する。CPU231は、合成領域内に収まることを条件に、前景パッチの合成位置を合成領域内においてランダムに決定する。次にS1611に進みCPU231は、背景パッチ上の、S1610で決定した合成位置に、前景パッチを合成する。そしてS1612に進みCPU231は、手書き抽出正解ラベル画像を更新する。これは次のように処理する。
CPU231は、前景パッチに対して二値化処理を行う。そして、予め定めた閾値よりも低い値である画素の値を、手書きを示す値とする。また、他の画素の値を、手書きではないことを示す値とする。そして、手書き抽出正解ラベル画像上であって、S1610で決定した合成位置に該当する部分に、上述のようにして画素の値を定めた画像データを合成する。
そしてS1613でCPU231は、現在処理対象としている背景パッチ上の合成領域について、全て処理を行ったか否かを判定する。当該背景パッチ上の全ての合成領域について、S1608〜S1612の処理を実行したときはYESと判定してS1614に遷移するが、そうでなければ、S1608に遷移して、背景パッチ上の次の合成領域について処理していく。
S1614でCPU231は、手書き抽出の学習データを保存する。即ち、S1611で前景パッチを合成した背景パッチを入力画像とする。この入力画像と、S1612で合成して作成した手書き抽出正解ラベル画像とを対応付け、手書き抽出のニューラルネットワークを学習するための学習データとして、ストレージ235の所定の領域に保存する。実施形態2では、図17(B)のような手書き抽出の学習データが保存される。
次にS1615に進みCPU231は、S1603で区切り線を除去した前景サンプル画像上の一部(例えば縦x横=256x256の大きさ)を切り出した画像データを生成する(以降この画像データを「手書きパッチ」と呼ぶ)。このときの切り出し位置はランダムに決定する。そしてS1616に進みCPU231は、S1602で取得し、RAM234に一時的に記憶している区切り線位置を参照しながら、手書き部分推定正解ラベル画像を生成する。これは次のように処理する。
CPU231は、手書きパッチと同サイズの画像を生成し、その画像の全ての画素の値を、手書き部分ではないことを示す値とする。そしてCPU231は、手書きパッチに対して二値化処理を行って二値画像を得る。そして、S1615で前景サンプルから手書きパッチを切り出した位置と、RAM234に一時的に記憶している区切り線の位置とから、二値画像上の区切り線の位置を算出する。そして、二値画像の画素を、区切り線に挟まれた領域毎に分け、各領域内において当該領域内の黒画を全て内包する外接矩形を算出する。手書き部分推定正解ラベル画像上の画素であって、前述の外接矩形の位置に該当する画素の値を、手書き部分であることを示す値に変更する。このようにして、手書き部分推定正解ラベル画像を生成する。
前述したように、前景サンプル画像は、区切り線に挟まれた領域内に、手書き文字を記入して作成した。このとき、この領域内において、位置不一致マルチカラムにならないよう記入している。このため、上述の処理ステップのように処理することで、前述の外接矩形内に含まれる手書き文字も位置不一致マルチカラムではないよう構成できる。そしてこの外接矩形をもとに手書き部分推定正解ラベル画像を生成したので、これを用いることで、手書き部分推定のニューラルネットワークは、手書き部分として、位置不一致マルチカラムを含まない領域を推定することができる。
そしてS1617に進みCPU231は、手書き部分推定の学習データを保存する。即ち、S1615で切り出した手書きパッチを入力画像とする。この入力画像と、S1616で合成して作成した手書き部分推定正解ラベル画像とを対応付け、手書き部分推定のニューラルネットワークを学習するための学習データとして、ストレージ235の所定の領域に保存する。
こうして実施形態2では、例えば、図17(C)に示すような手書き部分推定の学習データが保存される。尚、図17(C)の入力画像には、参考のため、もとの区切り線の位置を破線で図示しているが、実際にはこの破線は含まれない。
次にS1618に進みCPU231は、学習データ生成処理を終了するか否かを判定する。CPU231は、予め決定した学習データの数(このフローチャートの開始時に、画像処理装置101の入力デバイス209を介して、ユーザが指定するなどして決定)だけ学習データを生成していたときは、終了と判定する。そしてこの処理を終了する。一方、そうでなければ、S1601に遷移する。
以上説明したように実施形態2によれば、手書き抽出を行うニューラルネットワークの学習データと、手書き部分推定を行うニューラルネットワークの学習データが、前景サンプル画像と背景サンプル画像、合成領域の定義情報から、画像処理により生成される。このときニューラルネットワークの汎用性を高めるために、学習データの加工を行っても良い。
例えば、前景パッチや背景パッチ、手書きパッチを所定の範囲(例えば、50%〜150%の間)からランダムに選択して決定する変倍率で変倍する。或いは、前景パッチや背景パッチ、手書きパッチの各画素の輝度を変更して加工してもよい。即ち、ガンマ補正を用いてこれら画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1〜10.0の間)からランダムに選択して決定する。或いは、前景パッチや、前景パッチを合成した背景パッチ、手書きパッチを所定の範囲(例えば、−10度〜10度の間)からランダムに選択して決定する回転角度で回転する。変倍や回転を考慮すれば、前景パッチや背景パッチは、少し大きめのサイズ(例えば、合成領域の縦横2倍の大きさ/縦x横=512x512の大きさ)で切り出すことができる。そして、最終的な入力画像や手書き抽出及び手書き部分推定の正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう、中心部分から切り出す。
このようにして生成した学習データを用いて、学習装置102は、手書き抽出のニューラルネットワーク及び手書き部分推定のニューラルネットワークを学習することができる。
以上説明したように実施形態2によれば、手書き抽出を行うニューラルネットワーク及び手書き部分推定を行うニューラルネットワークの学習データを合成して生成することができる。ユーザは、印刷された未記入の帳票をスキャンして得られた背景サンプル画像上の合成領域に対応する、手書きで文字などを記入した原稿をスキャンして得られた前景サンプル画像の情報から手書き部分を抽出すればよい。
実施形態1では、ユーザによる操作指示に基づいて学習データを生成する例を説明したが、大量の学習データを作成する場合には、時間やコストを要してしまう。これに対して実施形態2の方法によれば、手書き文字を記入した原稿と、未記入の帳票の原稿をスキャンすればよい。そして、最低限の操作指示として、合成領域を定義することにより手書き部分が抽出できるため、効率的に学習データを生成することができる。
(その他の実施形態)
本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。例えば、実施形態では、学習データ生成部112と学習部113は、学習装置102において実現されるものとしたが、それぞれ別体の装置において実現されるようにしても良い。この場合、学習データ生成部112を実現する装置は、学習データ生成部112が生成した学習データを、学習部113を実現する装置に送信する。そして、学習部113は受信した学習データをもとにニューラルネットワークを学習する。
また上述の実施形態では、画像処理装置101と画像処理サーバ103とを別体の装置として説明したが、画像処理装置101が画像処理サーバ103の機能を具備しても良い。更に、画像処理サーバ103とOCRサーバ104とを別体の装置として説明したが、画像処理サーバ103がOCRサーバ104としての機能を具備しても良い。また画像処理装置101、学習装置102、画像処理サーバ103及びOCRサーバ104が、一つの装置で実現されてもよい。
また上述の実施形態では、活字領域の抽出をS958に示したように、画素の連結性に基づいて判定する方法を示したが、手書き部分推定と同様に、ニューラルネットワークを用いて推定してもよい。
また実施形態では、手書き抽出及び手書き部分推定の学習データを作成してニューラルネットワークを学習したが、同様の要領で活字抽出及び活字領域推定の学習データを作成してニューラルネットワークを学習しても良い。
また実施形態では、学習処理時に学習データ生成処理より学習データを生成した。しかしながら、事前に学習データ生成処理によって学習データを大量に生成しておいて、学習処理時にそこから随時、ミニバッチサイズ分をサンプルするようにしてもよい。更に、実施形態では、入力画像をグレースケール画像として生成したが、フルカラー画像など他の形式として生成してもよい。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
101…画像処理装置、102…学習装置、103…画像処理サーバ、104…OCRサーバ、111…画像取得部、112…学習データ生成部、113…学習部、114…画像変換部、115…画像蓄積部、116…手書きOCR部、117…活字OCR部、201…画像処理装置のCPU、231…学習装置のCPU、261…画像処理サーバのCPU

Claims (13)

  1. 手書き文字を含む原稿の読取画像を取得する読取手段と、
    前記読取画像の画素の中から手書き文字の画素を抽出して手書き文字の抽出画像を生成する第1抽出手段と、
    前記抽出画像の画素の中から手書き文字を含む領域である手書き部分を推定する推定手段と、
    前記手書き部分に基づいて前記抽出画像の手書き部分を決定し、当該手書き部分に対してOCR処理を行うOCR手段と、
    を有することを特徴とする画像処理システム。
  2. 前記推定手段は、前記領域で水平方向の手書き文字の並びである文字行が一行、或いは複数の文字行が含まれる手書き部分を推定することを特徴とする請求項1に記載の画像処理システム。
  3. 前記読取画像の画素の中から活字の画素を抽出して活字領域の抽出画像を生成する第2抽出手段を、更に有し、
    前記OCR手段は、前記活字領域に含まれる活字に対してOCR処理を行う活字OCR手段を有することを特徴とする請求項1又は2に記載の画像処理システム。
  4. 前記OCR手段が、前記手書き部分に対してOCR処理を行った結果と、前記活字OCR手段が前記活字領域に含まれる活字に対してOCR処理を行った結果とに基づいて、前記読取画像のテキスト化を行う手段を、更に有することを特徴とする請求項3に記載の画像処理システム。
  5. 前記第1抽出手段は、ニューラルネットワークを用いて前記抽出画像を生成することを特徴とする請求項1又は2に記載の画像処理システム。
  6. 前記推定手段は、ニューラルネットワークを用いて前記手書き部分を推定することを特徴とする請求項1又は2に記載の画像処理システム。
  7. 前記読取手段により原稿を読み取って得られたサンプル画像で指示された手書き部分に基づいて、前記ニューラルネットワークで用いられる正解データを取得する取得手段を、更に有することを特徴とする請求項5又は6に記載の画像処理システム。
  8. 前記取得手段により取得された前記正解データを、前記サンプル画像と関連付けて保存する保存手段を、更に有することを特徴とする請求項7に記載の画像処理システム。
  9. 白紙に手書きのみが記入された原稿を読み取って生成した手書き画像と、背景のみを含む原稿を読み取って生成した背景画像とを合成して学習データを生成する生成手段を更に有し、
    前記ニューラルネットワークは、前記生成した画像データを学習したものであることを特徴とする請求項5に記載の画像処理システム。
  10. 白紙に手書きのみが記入された原稿を読み取って生成した手書き画像から学習データを生成する学習データ生成手段を、更に有し、前記ニューラルネットワークは、前記学習データ生成手段が生成した画像データを学習したものであることを特徴とする請求項6に記載の画像処理システム。
  11. 前記学習データ生成手段が生成する学習データは、前記領域において水平方向の手書き文字の並びである文字行が一行、或いは複数の文字行が含まれる画像データを含むことを特徴とする請求項10に記載の画像処理システム。
  12. 画像処理方法であって、
    手書き文字を含む原稿の読取画像を取得する読取工程と、
    前記読取画像の画素の中から手書き文字の画素を抽出して手書き文字の抽出画像を生成する抽出工程と、
    前記抽出画像の画素の中から手書き文字を含む領域である手書き部分を推定する推定工程と、
    前記手書き部分に基づいて前記抽出画像の手書き部分を決定し、当該手書き部分に対してOCR処理を行うOCR工程と、
    を有することを特徴とする画像処理方法。
  13. コンピュータに、請求項12に記載の画像処理方法の各工程を実行させるためのプログラム。
JP2019152169A 2019-08-22 2019-08-22 画像処理システムと画像処理方法、及びプログラム Pending JP2021033577A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019152169A JP2021033577A (ja) 2019-08-22 2019-08-22 画像処理システムと画像処理方法、及びプログラム
US16/986,325 US11568623B2 (en) 2019-08-22 2020-08-06 Image processing apparatus, image processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019152169A JP2021033577A (ja) 2019-08-22 2019-08-22 画像処理システムと画像処理方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2021033577A true JP2021033577A (ja) 2021-03-01

Family

ID=74677463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019152169A Pending JP2021033577A (ja) 2019-08-22 2019-08-22 画像処理システムと画像処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2021033577A (ja)

Similar Documents

Publication Publication Date Title
EP1588293B1 (en) Image processing method, system, program, program storage medium and information processing apparatus
JP4533273B2 (ja) 画像処理装置及び画像処理方法、プログラム
JP7479925B2 (ja) 画像処理システム、画像処理方法、及びプログラム
US7876471B2 (en) Image processing apparatus, control method and program thereof which searches for corresponding original electronic data based on a paper document
JP7262993B2 (ja) 画像処理システム、画像処理方法、画像処理装置
JP4557765B2 (ja) 画像処理装置およびその方法
US10650489B2 (en) Image display apparatus, control method therefor, and storage medium
JP4655335B2 (ja) 画像認識装置、画像認識方法および画像認識プログラムを記録したコンピュータ読取可能な記録媒体
CN105320933A (zh) 电子文档生成系统以及电子文档生成装置
US11568623B2 (en) Image processing apparatus, image processing method, and storage medium
US9614984B2 (en) Electronic document generation system and recording medium
JP2021043650A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2021033577A (ja) 画像処理システムと画像処理方法、及びプログラム
JP7301529B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2021131784A (ja) 画像処理システム、プログラム、画像処理方法
JP2023040886A (ja) 画像処理装置、方法及びプログラム
JP2023015483A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2021060729A (ja) 画像処理システム、画像処理方法、及びプログラム
JP2023014964A (ja) 画像処理システム及び画像処理方法
US20230029990A1 (en) Image processing system and image processing method
JP5935376B2 (ja) 複写装置
JP2023021595A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2023026170A (ja) 画像処理装置、画像処理システム、画像処理方法、及びプログラム
JP2006018509A (ja) 文書管理支援装置
JP2023137094A (ja) 画像処理装置、画像処理方法、及びプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113