JP2023137094A - 画像処理装置、画像処理方法、及びプログラム - Google Patents
画像処理装置、画像処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2023137094A JP2023137094A JP2022043114A JP2022043114A JP2023137094A JP 2023137094 A JP2023137094 A JP 2023137094A JP 2022043114 A JP2022043114 A JP 2022043114A JP 2022043114 A JP2022043114 A JP 2022043114A JP 2023137094 A JP2023137094 A JP 2023137094A
- Authority
- JP
- Japan
- Prior art keywords
- character
- image
- string
- extraction
- key
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 224
- 238000003672 processing method Methods 0.000 title claims abstract 3
- 238000000605 extraction Methods 0.000 claims abstract description 193
- 239000000284 extract Substances 0.000 claims abstract description 15
- 230000007717 exclusion Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 14
- 238000001514 detection method Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 136
- 230000008569 process Effects 0.000 description 118
- 238000012015 optical character recognition Methods 0.000 description 71
- 238000013528 artificial neural network Methods 0.000 description 48
- 238000010586 diagram Methods 0.000 description 39
- 238000011156 evaluation Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000007639 printing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 108091008695 photoreceptors Proteins 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Character Discrimination (AREA)
Abstract
【課題】原稿を読み取って得られた読み取り画像において行うキーバリュー抽出の精度を向上させる画像処理装置、画像処理方法及びプログラムを提供する。【解決手段】画像処理装置としての画像処理システム100は、原稿を読み取って得られた読み取り画像を取得する画像取得部111と、読み取り画像における非活字オブジェクトを検出し、読み取り画像中の原稿に含まれる文字に対応する文字ブロックに対して文字認識処理を行って文字列を取得し、取得された文字列のうち、予め定められたキー文字列と一致する文字列に基づき、前記読み取り画像から特定の情報を抽出する画像処理部114を備える。画像処理部114は、非活字オブジェクトとキー文字列と一致する文字列との位置関係が予め定められた条件を満たさない場合、当該キー文字列と一致する文字列に基づき特定の情報を抽出しない。【選択図】図1
Description
本発明は、読み取り画像から文字情報を抽出するための画像処理技術に関する。
従来、紙の帳票(レシートや領収証)から「合計金額」や「発行日付」などを読み取って業務システム等への入力を自動化する経費精算業務を支援するシステムが提案されている。このようなシステムでは、帳票をMFPに搭載されたスキャナなどで読み取って画像データ化し、OCRにより当該画像データ中の文字列を認識して文字コードに変換することでテキスト化する。そして、得られたテキストデータを解析して、その中から抽出して転記すべき対象の項目(抽出対象項目)の項目値(抽出対象項目値)を抽出し、それを業務システムに自動的に入力(転記)する。
抽出対象項目値を抽出する方法としては、抽出対象項目値(バリュー)をその近傍に位置する所定の文字列(キー)に基づき抽出する方法(キーバリュー抽出)がある。この方法では、キー文字列を誤認識すると抽出されるバリューである抽出対象項目値も誤抽出することになるため、キーとなる文字列を誤認識した場合にはその誤りを検出することが重要になる。ここで、文字列の誤認識が発生する典型的な例の1つを示す。図4(a)は領収証の一例を示したものであり、税込み金額/税抜き金額の選択欄404などのように手書きマークが重畳して記入される文字列(「税抜き」)は、誤認識される可能性が高くなる。
特許文献1では、OCRエンジンが、文字認識結果であるテキストデータと共に文字認識結果がどの程度信頼できるかを示す認識確度を出力し、その認識確度に基づきOCRの誤りを検出する技術が開示されている。認識確度が所定の閾値に満たない場合、文字認識結果に誤りがあるとみなし、文字認識結果を出力する前にユーザによる確認や修正を促すことができる。
しかしながら、特許文献1の技術では、手書きマークなど活字に重畳する活字以外のオブジェクトにより文字列の一部に文字認識されない欠損部分が生じた場合、その欠損部分については文字認識結果が出力されず、認識確度も出力されない。また、重畳するオブジェクトにより文字が別の文字に誤認識される文字化けが生じた場合、文字認識結果の認識確度が高く出力される場合もある。そのため、特許文献1の技術を用いても、キーとなる文字列の誤認識を検出できずに、対応するバリューとなる文字列の誤抽出を見逃してしまう場合がある。
そこで本発明は、原稿を読み取って得られた読み取り画像において行うキーバリュー抽出の精度を向上させることを目的とする。
本発明は、画像処理装置であって、原稿を読み取って得られた読み取り画像を取得する取得手段と、前記読み取り画像における非活字オブジェクトを検出する検出手段と、前記読み取り画像中の前記原稿に含まれる文字に対応する文字ブロックに対して文字認識処理を行って文字列を取得する文字認識手段と、前記文字認識手段によって取得された文字列のうち、予め定められたキー文字列と一致する文字列に基づき、前記読み取り画像から特定の情報を抽出する抽出手段と、を備え、前記抽出手段は、前記非活字オブジェクトと前記キー文字列と一致する文字列との位置関係が予め定められた条件を満たさない場合、当該キー文字列と一致する文字列に基づき前記特定の情報を抽出しない、ことを特徴とする。
本発明によれば、原稿を読み取って得られた読み取り画像において行うキーバリュー抽出の精度を向上させることができる。
以下、本発明を実施するための形態にて具体的な構成を挙げ、図面を用いて説明する。なお、本発明を実現するための構成は実施形態に記載された構成のみに限定されるものではない。同様の効果を得られる範囲で実施形態に記載の構成の一部を省略または均等物に置き換えてもよい。
なお、以降では、帳票の紙面上に、印刷後に付加されたものを「オブジェクト」と呼ぶ。本実施形態において、オブジェクトは、「手書き文字」と「手書きマーク」、「押印」、ボールペンインクなどによる「汚れ」の種別を有する。
「手書きマーク」は、項目や内容を選択するなどの用途のために、印刷されている文字などの内容に対して記入する丸囲みなどのマークである。よって、選択対象の文字と共に出現する特徴をもつ。一方、「手書き文字」は、紙面上の記入欄や余白に記入され、選択対象の文字と共には出現しない特徴をもつ。また、印刷されている文字に類似した形状の記入、例えば「0」(数字のゼロ)や「o」(アルファベットのオー)、は「手書き文字」である。
また、「押印」および「汚れ」については、文字に重畳しているものとそうでないものとを区別して扱う。そのため、以降それぞれ「押印(重畳あり)」、「押印(重畳なし)」、「汚れ(重畳あり)」、「汚れ(重畳なし)」と呼称する。
また、オブジェクトの画素を推定することを「オブジェクト抽出」と呼び、このオブジェクト抽出によって推定された画素を「オブジェクト画素」と呼ぶ。また、オブジェクト画素からなる画像を「オブジェクト抽出画像」と呼び、オブジェクト画素のうち手書き文字の画素のみからなる画像を「手書き文字抽出画像」と呼ぶ。手書き文字抽出画像に対して文字認識処理(OCR)を実行することを「手書きOCR」と呼ぶ。手書きOCRによって手書きされた文字は認識され、対応する文字コードに置き換えてテキスト化(データ化)することができる。
また、オブジェクトを含む領域を推定することを「オブジェクト領域推定」と呼び、オブジェクト領域推定によって得た領域を「オブジェクト領域」と呼ぶ。スキャン画像中のオブジェクト領域に含まれるオブジェクトが手書き文字である場合、オブジェクト領域に対して手書きOCRを行うことによって手書き文字をテキスト化することができる。
(実施形態1)
文字に重畳したオブジェクトを検出し、その検出したオブジェクトが、抽出対象項目値と対応付けられた抽出対象項目を表す文字列(キーワード)に重畳する、あるいはキーワードの近傍に存在する場合、キーワードの誤認識を検出する例を示す。
文字に重畳したオブジェクトを検出し、その検出したオブジェクトが、抽出対象項目値と対応付けられた抽出対象項目を表す文字列(キーワード)に重畳する、あるいはキーワードの近傍に存在する場合、キーワードの誤認識を検出する例を示す。
<画像処理システム>
図1は画像処理システムの構成を示した図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104より構成される。画像処理装置101と学習装置102、画像処理サーバ103、OCRサーバ104は、ネットワーク105を介して接続されている。
図1は画像処理システムの構成を示した図である。画像処理システム100は、画像処理装置101、学習装置102、画像処理サーバ103、OCRサーバ104より構成される。画像処理装置101と学習装置102、画像処理サーバ103、OCRサーバ104は、ネットワーク105を介して接続されている。
画像処理装置101は、MFP等と呼ばれるデジタル複合機などであり、印刷機能やスキャン機能(画像取得部111としての機能)を有する。画像処理装置101は、学習データを得るために帳票などの原稿をスキャンして画像データを生成する(以降この画像データを「原稿サンプル画像」と呼称する)。複数枚の原稿をスキャンして原稿サンプル画像を複数得る。これら原稿には、オブジェクトが付加されたものを含む。ネットワーク105を介して、原稿サンプル画像を学習装置102に送信する。また、画像処理装置101は、抽出対象項目値の抽出を行う際に、原稿をスキャンして処理対象とする画像データを得る(以降この画像データを「処理対象画像」と呼称する)。そして、画像処理装置101は、得られた処理対象画像を、ネットワーク105を介して画像処理サーバ103に送信する。
学習装置102は、画像処理装置101が生成した原稿サンプル画像を蓄積する画像蓄積部115として機能する。またこのようにして蓄積した画像から学習データを生成する学習データ生成部112として機能する。学習データは、オブジェクト抽出およびオブジェクト領域推定を行うニューラルネットワークを学習するために用いられるデータである。学習装置102は、生成した学習データを用いて、ニューラルネットワークの学習を行う学習部113として機能する。学習部113の学習処理により、学習結果(ニューラルネットワークのパラメタなど)が生成される。学習装置102は、学習結果(学習モデル)を、ネットワーク105を介して、画像処理サーバ103に送信する。ニューラルネットワークを用いる機械学習手法の1つとして、多層ニューラルネットワークを用いるディープラーニングが挙げられる。
画像処理サーバ103は、処理対象画像に対してオブジェクトの抽出を行う画像処理部114として機能する。画像処理部114は、画像処理装置101が生成した処理対象画像に対してオブジェクト抽出を行う。この際、画像処理装置101は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中のオブジェクトの画素(画素位置)を抽出(特定)する。さらに、画像処理サーバ103は、画像処理装置101が生成した処理対象画像に対してオブジェクト領域推定を行う。画像処理装置101は、学習装置102が生成した学習結果を用いることで、ニューラルネットワークにより推論して処理対象画像中のオブジェクトが付加された領域を推定(特定)する(オブジェクト領域推定)。これによりオブジェクト領域を得る。
ここで、このオブジェクト領域の実態は、処理対象画像中の部分領域を示す情報であり、例えば、処理対象画像上の特定の画素位置(座標)と、当該画素位置からの幅や高さから成る情報として表現される。また、オブジェクト領域は、帳票に付加されたオブジェクトの数に応じて、複数得られる場合がある。抽出したオブジェクト領域のうち、オブジェクトが手書き文字である画素を取得することで、手書き文字のみが含まれる手書き文字抽出画像を得ることができる。一方、オブジェクト領域は、処理対象画像に付加された個々のオブジェクトを含んだ領域である。この中でオブジェクトが手書き文字であるオブジェクト領域は、処理対象画像における個々の手書き文字を各々区分した文字ブロックである。よって、手書き文字のオブジェクト領域に基づいて手書き文字抽出画像上の部分領域を決定することで、手書き文字を個々の文字毎に分割して扱うことができる。
そして、画像処理部114は、手書き文字抽出画像と手書き文字のオブジェクト領域とをOCRサーバ104に送信する。OCRサーバ104は、手書き文字抽出画像と手書き文字のオブジェクト領域とを受信すると、手書きOCR116により、手書き文字抽出画像上の各手書き文字のオブジェクト領域に対して手書き文字用の文字認識処理を行う。
また、画像処理部114は、処理対象画像からオブジェクト抽出画像に含まれるオブジェクト画素を除去した画像(以降「活字画像」と呼称する)を生成する。そして、画像処理部114は、活字画像上の領域であって、活字OCRの対象とする活字を含む領域(以降この領域を「活字領域」と呼称する)の情報を生成する。活字領域の生成については後述する。そして、画像処理部114は、活字画像と活字領域とをOCRサーバ104に送信する。OCRサーバ104は、活字画像と活字領域とを受信すると、活字OCR部117により、活字画像上の各活字領域に対して活字用の文字認識処理を行う。ここで、上記活字画像の生成において、オブジェクト画素の中で、手書きマークと押印(重畳あり)、汚れ(重畳あり)のオブジェクト画素については、処理対象画像から除去しない。これは、活字に重畳したオブジェクト画素を除去することにより、活字の画素も欠損し、高い確率で活字OCRの誤認識を引き起こすためである。こうした活字に重畳したオブジェクト画素の扱いについては後述する。
このように画像処理部114は、OCR結果であるテキストデータおよびオブジェクト画素、オブジェクト領域を含む、これまでの処理より得られた情報を評価し、所定の抽出対象項目を抽出する。そしてその結果を別体外部の業務システム(不図示)に送信して入力(転記)する。
<学習シーケンス>
本システムにおける学習シーケンスについて説明する。図3(a)は画像処理システムの学習シーケンスを示す図である。
本システムにおける学習シーケンスについて説明する。図3(a)は画像処理システムの学習シーケンスを示す図である。
ステップ301(以降の説明においてS301等と表記する)において、ユーザが原稿の読取指示を行うと、画像取得部111は、原稿を読みとって原稿サンプル画像を生成する(S302)。
上述のように生成された原稿サンプル画像は、学習データ生成部112に送信される(S303)。なお、このとき、原稿サンプル画像にID情報を付与するとよい。このID情報は例えば、画像取得部111として機能する画像処理装置101を識別するための情報である。なお、ID情報として、画像処理装置101を操作するユーザを識別するためのユーザ識別情報や、ユーザが所属するグループを識別するめためのグループ識別情報であってもよい。
画像が送信されてくると、学習データ生成部112は、画像蓄積部115に原稿サンプル画像を蓄積する(S304)。
ユーザが学習装置102に原稿サンプル画像に対して正解データの付与指示を行うと(S305)、学習データ生成部112は当該正解データを取得する。そして原稿サンプル画像に紐づけて画像蓄積部115に蓄積する(S306)。正解データは、ニューラルネットワークの学習に用いるデータである。正解データの付与方法については後述する。そして、学習データ生成部112は、このようにして蓄積したデータに基づいて学習データを生成する(S307)。このとき、特定のID情報に基づく原稿サンプル画像のみを用いて学習データを生成してもよい。その後、学習データ生成部112は、学習部113に学習データを送信する(S308)、特定のID情報に基づく画像のみで学習データを生成した場合は、ID情報も併せて送信する。学習部113は、受信した学習データに基づき学習処理を行い、学習モデルを更新する(S309)。学習部113は、ID情報ごとに学習モデルを保持し、対応する学習データのみで学習をおこなってもよい。このようにID情報と学習モデルを紐づけることで、特定の利用環境に特化した学習モデルを構築することができる。
<利用シーケンス>
本システムにおける利用シーケンスについて説明する。図3(b)は画像処理システムの利用シーケンスを示した図である。
本システムにおける利用シーケンスについて説明する。図3(b)は画像処理システムの利用シーケンスを示した図である。
S351において、ユーザが原稿(帳票)の読取指示を行うと、画像取得部111は、原稿を読み取って処理対象画像を生成する(S352)。ここで読み取られる画像は、例えば図4(a)、(b)に示すような帳票400や帳票450であり、これらの帳票は次のような要素を有する。すなわち、合計金額401、451、発行日付402、452、宛名403、453、税込み金額/税抜き金額の選択欄404、454、税込み金額/税抜き金額405、455、発行者406、456、管理番号407、457である。税込み金額/税抜き金額の選択欄404、454は、税込み金額/税抜き金額405、455が、税込み金額であるか税抜き金額であるかを選択して示すためのものである。それぞれの項目に当該の値が記入されている。しかし、これら記入項目の配置(帳票のレイアウト)は、帳票作成元により決定されるため、帳票毎に異なる(非定型帳票)。
上述のように読み取られた処理対象画像は、画像処理部114送信される(S353)。なお、このとき、送信データにID情報を付与するとよい。
データを受信すると、画像処理部114は、処理対象画像から抽出対象項目の抽出指示を受け付ける(S354)。このとき、画像処理部114は、画像取得部111をデータの返信先として記憶する。項目抽出指示を受け付けた画像処理部114は、最新の学習モデルを学習部113に要求する(S355)。これに応じて、学習部113は最新の学習モデルを画像処理部114に送信する(S356)。画像処理部114からの要求時にID情報が指定されていた場合は、ID情報に対応する学習モデルを送信する。画像処理部114は、取得した学習モデルに基づいて、処理対象画像に対して、オブジェクト抽出およびオブジェクト領域推定を行う(S357)。そして、これら結果より手書き文字抽出画像と手書き文字のオブジェクト領域を生成して、手書きOCR部116に送信する(S358)。手書きOCR部116は、手書き文字抽出画像上の手書き文字のオブジェクト領域に該当する部分領域それぞれについて手書きOCR処理を施し、テキストデータ(手書き)を取得する(S359)。手書きOCR部116は、取得したテキストデータ(手書き)を画像処理部114に送信する(S360)。続けて、画像処理部114は処理対象画像から活字画像と活字領域とを生成する(S361)。そして、活字OCR部117に活字画像と活字領域を送信する(S362)。活字OCR部117は、活字画像に活字OCR処理を施し、テキストデータ(活字)を取得する(S363)。そして、取得したテキストデータ(活字)を画像処理部114に送信する(S364)。画像処理部114は、テキストデータ(手書きおよび活字)およびオブジェクト画素、オブジェクト領域を含むこれまでの処理により得られた情報を評価し、所定の抽出対象項目を抽出する(S365)。このあと、画像処理部114は、抽出対象項目を別体外部の業務システム(不図示)に送信して入力する(S366)。
<装置構成>
上述したシステムを実現するために、各装置は次のような構成を備える。図2(a)は画像処理装置の構成を示す図である。図2(b)は学習装置の構成を示す図である。図2(c)は画像処理サーバの構成を示す図である。図2(d)はOCRサーバの構成を示す図である。
上述したシステムを実現するために、各装置は次のような構成を備える。図2(a)は画像処理装置の構成を示す図である。図2(b)は学習装置の構成を示す図である。図2(c)は画像処理サーバの構成を示す図である。図2(d)はOCRサーバの構成を示す図である。
図2(a)に示すように、画像処理装置101は、次を備える。CPU201、ROM202、RAM204、プリンタデバイス205、スキャナデバイス206、原稿搬送デバイス207、ストレージ208、入力デバイス209、表示デバイス210、及び外部インタフェース211を備える。各デバイスは、データバス203によって相互通信可能に接続されている。
CPU201は、画像処理装置101を統括的に制御するためのコントローラである。CPU201は、ROM202に格納されているブートプログラムによりOS(オペレーティングシステム)を起動する。このOS上で、ストレージ208に記憶されているコントローラプログラムが実行される。コントローラプログラムは、画像処理装置101を制御するためのプログラムである。CPU201は、データバス203によって接続されている各デバイスを統括的に制御する。RAM204は、CPU201の主メモリやワークエリア等の一時記憶領域として動作する。
プリンタデバイス205は、画像データを用紙(記録材、シート)上に印刷するものである。これには感光体ドラムや感光体ベルトなどを用いた電子写真印刷方式や、微小ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式などがあるが、どの方式でもかまわない。スキャナデバイス206は、CCDなどの光学読取装置を用いて紙などの原稿上の走査を行い、電気信号データを得てこれを変換し、画像データを生成する。また、ADF(オート・ドキュメント・フィーダ)などの原稿搬送デバイス207は、原稿搬送デバイス207上の原稿台に載置された原稿を1枚ずつスキャナデバイス206に搬送する。
ストレージ208は、HDDやSSDなどの、読み出しと書き込みが可能な不揮発メモリであり、ここには、前述のコントローラプログラムなど、様々なデータが記録される。入力デバイス209は、タッチパネルやハードキーなどから構成さる入力装置である。入力デバイス209は、ユーザの操作指示を受け付ける。そして、指示位置を含む指示情報をCPU201に伝達する。表示デバイス210は、LCDやCRTなどの表示装置である。表示デバイス210は、CPU201が生成した表示データを表示する。CPU201は、入力デバイス209より受信した指示情報と、表示デバイス210に表示させている表示データとから、いずれの操作が成されたかを判定する。そしてこの判定結果に応じて、画像処理装置101を制御するとともに、新たな表示データを生成し表示デバイス210に表示させる。
外部インタフェース211は、LANや電話回線、赤外線といった近接無線などのネットワークを介して、外部機器と、画像データをはじめとする各種データの送受信を行う。外部インタフェース211は、学習装置102やPC(不図示)などの外部機器より、PDLデータを受信する。CPU201は、外部インタフェース211が受信したPDLデータを解釈し、画像を生成する。生成した画像は、プリンタデバイス205により印刷したり、ストレージ208に記憶したりする。また、外部インタフェース211は、外部機器より画像データを受信する。受信した画像データをプリンタデバイス205により印刷したり、ストレージ208に記憶したり、外部インタフェース211により、他の外部機器に送信したりする。
図2(b)の学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、GPU239を備える。各部は、データバス233を介して相互にデータを送受信することができる。
CPU231は、学習装置102の全体を制御するためのコントローラである。CPU231は、不揮発メモリであるROM232に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ235に記憶されている学習データ生成プログラムおよび学習プログラムを実行する。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に格納されているブートプログラムによりOSを起動する。このOSの上で、ストレージ265に記憶されている画像処理サーバプログラムを実行する。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を起動する。このOSの上で、ストレージ295に記憶されているOCRサーバプログラムを実行する。CPU291がこのOCRサーバプログラムを実行することより、手書き文字抽出画像や活字画像の手書き文字や活字を認識してテキスト化する。CPU291は、データバス293などのバスを介して各部を制御する。
RAM294は、CPU291のメインメモリやワークエリア等の一時記憶領域として動作するものである。ストレージ295は、読み出しと書き込みが可能な不揮発メモリであり、前述のOCRサーバプログラムを記録する。
入力デバイス296は、図2(b)を用いて説明した入力デバイス236と同様である。表示デバイス297は、図2(a)を用いて説明した表示デバイス210と同様である。
外部インタフェース298は、図2(a)を用いて説明した外部インタフェース211と同様である。
<操作画面>
S301に示したユーザの指示は、次のような操作画面で行われる。図5(a)は学習原稿スキャン画面を示す図である。
S301に示したユーザの指示は、次のような操作画面で行われる。図5(a)は学習原稿スキャン画面を示す図である。
学習原稿スキャン画面500は、表示デバイス210に表示される画面の一例である。図5(a)に示すように、学習原稿スキャン画面500は、プレビュー領域501、スキャンボタン502、送信開始ボタン503を備える。
スキャンボタン502はスキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、原稿サンプル画像が生成され、プレビュー領域501に表示される。スキャナデバイス206に別の原稿をセットし、スキャンボタン502を再び押すことで、複数の原稿サンプル画像をまとめて保持しておくこともできる。
原稿が読み取られると、送信開始ボタン503が指示可能となる。送信開始ボタン503を指示すると、原稿サンプル画像が学習装置102に送信される。
S305に示したユーザの指示は、次のような操作画面で行われる。図5(b)はオブジェクト抽出正解データ作成画面を示す図である。図5(c)はオブジェクト領域推定正解データ作成画面を示す図である。ユーザは、オブジェクト抽出正解データ作成画面およびオブジェクト領域推定正解データ作成画面の表示内容に基づいて操作し、正解データを作成する。
オブジェクト抽出正解データ作成画面520は、表示デバイス237に表示される画面の一例である。図5(b)に示すように、オブジェクト抽出正解データ作成画面520は、画像表示領域521、画像選択ボタン522、拡大ボタン523、縮小ボタン524、抽出ボタン525、推定ボタン526、保存ボタン527、オブジェクト種別ボタン528を備える。
画像選択ボタン522は、画像処理装置101から受信し、画像蓄積部115に蓄積されている原稿サンプル画像を選択するためのボタンである。画像選択ボタン522を指示すると、選択画面(不図示)が表示され、原稿サンプル画像を選択することができる。原稿サンプル画像を選択すると、画像表示領域521に選択した原稿サンプル画像が表示される。ユーザは画像表示領域521に表示された原稿サンプル画像に対して操作し、正解データを作成する。
拡大ボタン523と縮小ボタン524は、画像表示領域521の表示を拡大あるいは縮小するためのボタンである。拡大ボタン523や縮小ボタン524を指示することにより、正解データの作成が行いやすいよう、画像表示領域521に表示されている原稿サンプル画像を拡大および縮小して表示することができる。
オブジェクト種別ボタン528は、後述のように非活字オブジェクトの画素を選択した際に、当該非活字オブジェクトの画素の種別を選択するものである。オブジェクト種別ボタン528を選択すると、「手書き文字」、「手書きマーク」、「押印」、「押印(重畳)」、「汚れ」、「汚れ(重畳)」がリスト表示され、そのリストから1つ項目を選択することでボタンの表示を変更することができる。「手書き文字」と「手書きマーク」は、その内容のとおり、それぞれ、手書き文字、手書きマーク、を示すものである。「押印」と「押印(重畳)」は、それぞれ、押印(重畳なし)と押印(重畳あり)を示すものである。「汚れ」と「汚れ(重畳)」は、それぞれ、汚れ(重畳なし)と汚れ(重畳あり)を示すものである。オブジェクト種別ボタン528に表示された項目に従って、選択された非活字オブジェクトの画素の種別が決定される。以降、非活字オブジェクトは単にオブジェクトと呼称する。
抽出ボタン525および推定ボタン526は、オブジェクト抽出とオブジェクト領域推定のいずれの正解データを作成するかを選択するためのボタンである。いずれかを選択すると、選択したボタンは強調して表示される。抽出ボタン525を選択すると、オブジェクト抽出の正解データを作成する状態となる。このボタンを選択した場合、ユーザは、オブジェクト抽出の正解データを次のように操作して作成する。ユーザは、図5(b)に示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されている原稿サンプル画像中のオブジェクトをなぞって選択する。学習データ生成部112は、この操作を受信すると、上記操作により選択された原稿サンプル画像上の画素位置を記録する。また、オブジェクト種別ボタン528で設定されているオブジェクトの種別を、当該画素位置に対して関連付けて記録する。すなわち、オブジェクト抽出の正解データは、原稿サンプル画像上のオブジェクトに該当する画素の位置およびその種別である。なお、図5(e)に手書きマークの画素を選択する様子の例を示す。また、図5(f)に押印の画素を選択する様子の例を示す。また、図5(g)に汚れの画素を選択する様子の例を示す。
一方、推定ボタン526を選択すると、オブジェクト領域推定の正解データを作成する状態となる。このボタンを選択した場合、ユーザは、オブジェクト領域推定の正解データを次のように操作して作成する。ユーザは、図5(c)に点線枠で示すように、入力デバイス236を介してマウスカーソルを操作し、画像表示領域521に表示されている原稿サンプル画像中のオブジェクトを包含する領域を選択する。オブジェクトが手書き文字である場合は、合計金額や税抜き金額など、個々の項目ごとにこれを包含するように領域を選択する。オブジェクトが手書きマークや押印、汚れである場合は、個々の手書きマークや押印、汚れを包含するように領域を選択する。学習データ生成部112は、この操作を受信すると、上記操作により選択された領域を記録する。すなわち、オブジェクト領域推定の正解データは、原稿サンプル画像上の、個々のオブジェクトを包含する領域である(以降、オブジェクトが付加された領域を「オブジェクト領域」と呼称する)。なお、図5(h)に手書きマークの領域を選択する様子の例を示す。また、図5(i)に押印の領域を選択する様子の例を示す。また、図5(j)に汚れの領域を選択する様子の例を示す。
保存ボタン527は、作成された正解データを保存するためのボタンである。オブジェクト抽出の正解データは、次のような画像として、画像蓄積部115に蓄積される。原稿サンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択されたオブジェクトの画素は次の値をとる。例えば、手書き文字を示す値は255、手書きマークを示す値は160、押印(重畳なし)を示す値は128、押印(重畳あり)を示す値は96、汚れ(重畳なし)を示す値は64、汚れ(重畳あり)を示す値は32をとる。それ以外、すなわちオブジェクトではないことを示す値は0をとる。以降、このようなオブジェクト抽出の正解データである画像を「オブジェクト抽出正解画像」と呼称する。オブジェクト抽出正解画像の例を図4(c)に示す。また、オブジェクト領域推定の正解データは、次のような画像として、画像蓄積部115に蓄積される。原稿サンプル画像と同じサイズ(幅および高さ)を有する。ユーザにより選択されたオブジェクト領域に該当する画素の値は、オブジェクト領域であることを示す値(例えば255、以降も同様)である。また、それ以外の画素の値はオブジェクト領域ではないことを示す値(例えば0、以降も同様)である。以降、このようなオブジェクト領域推定の正解データである画像を「オブジェクト領域推定正解画像」と呼称する。オブジェクト領域推定正解画像の例を図4(d)に示す。
S351に示したユーザの指示は、次のような操作画面で行われる。図5(d)は帳票処理画面を示す図である。図5(d)に示すように、帳票処理画面520は、プレビュー領域541、スキャンボタン542、送信開始ボタン543を備える。
スキャンボタン542はスキャナデバイス206にセットされた原稿の読取を開始するためのボタンである。スキャンが完了すると、処理対象画像が生成され、プレビュー領域541に表示される。
原稿が読み取られると、送信開始ボタン543が指示可能となる。送信開始ボタン543を指示すると、処理対象画像が画像処理サーバ103に送信される。
<原稿サンプル画像生成処理>
次に、画像処理装置101による原稿サンプル画像生成処理について説明する。図6(a)は原稿サンプル画像生成処理のフローを示す図である。この処理は、CPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
次に、画像処理装置101による原稿サンプル画像生成処理について説明する。図6(a)は原稿サンプル画像生成処理のフローを示す図である。この処理は、CPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することで実現される。これは、ユーザが、画像処理装置101の入力デバイス209を操作することにより開始される。
S601において、CPU201は、原稿のスキャン指示が成されたか否かを判定する。ユーザが、入力デバイス209を介して、原稿をスキャンするための所定の操作(スキャンボタン502の指示)を行った場合には、YESと判定し、S602に遷移する。そうでなければ、NOと判定し、S604に遷移する。
S602において、CPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして原稿サンプル画像を生成する。原稿サンプル画像は、グレースケールの画像データとして生成される。
S603において、CPU201は、S602で生成した原稿サンプル画像を、外部インタフェース211を介して、学習装置102に送信する。
S604において、CPU201は、処理を終了するか否かを判定する。ユーザが、原稿サンプル画像生成処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S601に遷移する。
以上の処理によって、画像処理装置101は、原稿サンプル画像を生成して学習装置102に送信する。ユーザの操作や、原稿搬送デバイス207に載置した原稿枚数に応じて、原稿サンプル画像が複数取得される。
<原稿サンプル画像受信処理>
次に、学習装置102による原稿サンプル画像受信処理について説明する。図6(b)は原稿サンプル画像受信処理のフローを示す図である。この処理は、CPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
次に、学習装置102による原稿サンプル画像受信処理について説明する。図6(b)は原稿サンプル画像受信処理のフローを示す図である。この処理は、CPU231が、ストレージ235に記録されている学習データ生成プログラムを読み出し、RAM234に展開して実行することで実現される。これは、ユーザが、学習装置102の電源をON(オン)にすると開始される。
S621において、CPU231は、原稿サンプル画像を受信したか否かを判定する。CPU231は、外部インタフェース238を介して画像データを受信していたならば、YESと判定し、S622に遷移する。そうでなければ、NOと判定し、S623に遷移する。
S622において、CPU231は、受信した原稿サンプル画像を、ストレージ235の所定の領域に記録する。
S623において、CPU231は、処理を終了するか否かを判定する。ユーザが、学習装置102の電源のOFFなどの、原稿サンプル画像受信処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S621に遷移する。
<正解データ生成処理>
次に、学習装置102による正解データ生成処理について説明する。図6(c)は正解データ生成処理のフローを示す図である。
次に、学習装置102による正解データ生成処理について説明する。図6(c)は正解データ生成処理のフローを示す図である。
この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。
S641において、CPU231は、原稿サンプル画像の選択指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、原稿サンプル画像を選択するための所定の操作(画像選択ボタン522の指示)を行った場合には、YESと判定し、S642に遷移する。そうでなければ、NOと判定し、S643に遷移する。
S642において、CPU231は、S641でユーザが選択した原稿サンプル画像を、ストレージ235から読み出してユーザに対して出力する(画像表示領域521に表示)。
S643において、CPU231は、ユーザが正解データの入力指示を行ったか否かを判定する。ユーザが、入力デバイス236を介して、前述したように、原稿サンプル画像上のオブジェクトをなぞる、あるいは、オブジェクトを包含する領域を選択した操作を行っていたならば、YESと判定し、S644に遷移する。そうでなければ、NOと判定し、S647に遷移する。
S644において、CPU231は、ユーザが入力した正解データは、オブジェクト抽出の正解データであるか否かを判定する。CPU231は、ユーザがオブジェクト抽出の正解データ作成を指示する操作を行っていたならば(抽出ボタン525の選択)、YESと判定し、S645に遷移する。そうでない場合、すなわち、ユーザが入力した正解データはオブジェクト領域推定の正解データである場合(推定ボタン526を選択している)、S646に遷移する。
S645において、CPU231は、ユーザが入力したオブジェクト抽出の正解データを、RAM234に一時的に記憶する。前述のとおり、オブジェクト抽出の正解データは、原稿サンプル画像中のオブジェクトに該当する画素の位置情報である。また、ユーザによるオブジェクト種別ボタン528を用いたオブジェクトの種別の選択の内容に応じて、当該画素の位置情報にオブジェクトの種別を関連付けて記憶する。
S646において、CPU231は、ユーザが入力したオブジェクト領域推定の正解データをRAM234に一時的に記憶する。前述のおとり、オブジェクト領域推定の正解データは、原稿サンプル画像上の、オブジェクト領域に該当する領域情報である。
S647において、CPU231は、正解データの保存指示が成されたか否かを判定する。ユーザが、入力デバイス236を介して、正解データを保存するための所定の操作(保存ボタン527の指示)を行った場合には、YESと判定し、S648に遷移する。そうでなければ、NOと判定し、S650に遷移する。
S648において、CPU231は、オブジェクト抽出正解画像を生成し、オブジェクト抽出の正解データとして保存する。CPU231は、次のようにしてオブジェクト抽出正解画像を生成する。CPU231は、オブジェクト抽出正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。当該画像の全ての画素を、オブジェクトではないことを示す値にする。次いで、S645においてRAM234に一時的に記憶した位置情報およびオブジェクトの種別を参照し、オブジェクト抽出正解画像上の該当する位置の画素の値を、該当する種別に応じた値に変更する。このようにして生成したオブジェクト抽出正解画像を、S642で読み出した原稿サンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
S649において、CPU231は、オブジェクト領域推定正解画像を生成し、オブジェクト領域推定の正解データとして保存する。CPU231は、次のようにしてオブジェクト領域推定正解画像を生成する。CPU231は、オブジェクト領域推定正解画像として、S642で読み出した原稿サンプル画像と同じサイズの画像を生成する。当該画像の全ての画素を、オブジェクト領域ではないことを示す値にする。次いで、S646においてRAM234に一時的に記憶した領域情報を参照し、オブジェクト領域推定正解画像上の該当する領域内の画素の値を、オブジェクト領域であることを示す値に変更する。このようにして生成したオブジェクト領域推定正解画像を、S642で読み出した原稿サンプル画像と関連付けて、ストレージ235の所定の領域に保存する。
S650において、CPU231は、処理を終了するか否かを判定する。ユーザが、正解データ生成処理を終了する所定の操作を行った場合には、YESと判定して、処理を終了する。そうでなければ、NOと判定し、S641に遷移する。
<学習データ生成処理>
次に、学習装置102による学習データ生成処理について説明する。図7(a)は学習データ生成処理のフローを示す図である。この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
次に、学習装置102による学習データ生成処理について説明する。図7(a)は学習データ生成処理のフローを示す図である。この処理は、学習装置102の学習データ生成部112により実現される。これは、ユーザが、画像処理装置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は、S704で生成した入力画像と、S706で生成したオブジェクト抽出正解ラベル画像とを対応付け、オブジェクト抽出の学習データとしてストレージ235の所定の領域に保存する。本実施形態では、図8(a)~(f)のような学習データが保存される。
S708において、CPU231は、S704で生成した入力画像と、S707で生成したオブジェクト領域推定正解ラベル画像とを対応付け、オブジェクト領域推定の学習データとしてストレージ235の所定の領域に保存する。本実施形態では、図8(g)~(l)のような学習データが保存される。
CPU231は、S709において、学習データ生成処理を終了するか否かを判定する。CPU231は、予め決定した学習データの数(本フローチャートの開始時に、学習置102の入力デバイス236を介して、ユーザが指定するなどして決定)だけ学習データを生成していたならば、YESと判定し、処理を終了する。そうでなければ、NOと判定し、S701に遷移する。
以上により、オブジェクト抽出を行うニューラルネットワークの学習データと、オブジェクト領域推定を行うニューラルネットワークの学習データが生成される。ニューラルネットワークの汎用性を高めるために、学習データの加工を行っても良い。例えば、入力画像を所定の範囲(例えば、50%~150%の間)からランダムに選択して決定する変倍率で変倍する。オブジェクト抽出およびオブジェクト領域推定の正解ラベル画像も同様に変倍する。あるいは、入力画像を所定の範囲(例えば、-10度~10度の間)からランダムに選択して決定する回転角度で回転する。オブジェクト抽出およびオブジェクト領域推定の正解ラベル画像も同様に回転する。変倍や回転を考慮すれば、S704やS705、S706で入力画像やオブジェクト抽出およびオブジェクト領域推定の正解ラベル画像を切り出す際に、少し大きめのサイズ(例えば、縦x横=512x512の大きさ)で切り出す。そして、変倍および回転後に、最終的な入力画像やオブジェクト抽出およびオブジェクト領域推定の正解ラベル画像のサイズ(例えば、縦x横=256x256)となるよう、中心部分から切り出す。あるいは、入力画像の各画素の輝度を変更して加工してもよい。すなわち、ガンマ補正を用いて入力画像の輝度を変更する。ガンマ値は所定の範囲(例えば、0.1~10.0の間)からランダムに選択して決定する。
<学習処理>
次に、学習装置102による学習処理について説明する。図7(b)は学習処理のフローを示す図である。この処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
次に、学習装置102による学習処理について説明する。図7(b)は学習処理のフローを示す図である。この処理は、学習装置102の学習部113により実現される。これは、ユーザが、学習装置102の入力デバイス236を介して、所定の操作を行うことで開始される。なお、本実施形態において、ニューラルネットワークの学習には、ミニバッチ法を用いるものとする。
S731において、まずCPU231は、オブジェクト抽出とオブジェクト領域推定のニューラルネットワークをそれぞれ初期化する。すなわち、CPU231は、2つのニューラルネットワークを構築し、これらニューラルネットワークに含まれる各パラメタの値を、ランダムに決定して初期化する。これらニューラルネットワークの構造は、様々なものを用いることができるが、例えば、公知技術であるFCN(Fully Convolutional Networks)の形態を取り得る。オブジェクト領域推定のニューラルネットワークについては、他にも、例えば、公知技術であるYOLO(You Only Look Once)の形態を取り得る。
S732において、CPU231は、学習データを取得する。CPU231は、図7(a)のフローチャートに示した、学習データ生成処理を実行して、所定の数(ミニバッチサイズ、例えば10)の学習データを取得する。
S733において、CPU231は、オブジェクト抽出のニューラルネットワークの誤差を算出する。すなわち、オブジェクト抽出の各学習データに含まれる入力画像をオブジェクト抽出のニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズ(画素数)であり、予測結果として、オブジェクト画素にはオブジェクトの種別を示す値、オブジェクト画素以外の画素にはオブジェクトではないことを示す値が格納された画像である。すなわち、上述した例のようにオブジェクトの種別毎に値を割り当てた場合、手書き文字のオブジェクトであると判定された画素の画素値は255、手書きマークのオブジェクトであると判定された画素の画素値は160となる。押印(重畳なし)のオブジェクトであると判定された画素の画素値は128、押印(重畳あり)のオブジェクトであると判定された画素の画素値は96となる。汚れ(重畳なし)のオブジェクトであると判定された画素の画素値は64、汚れ(重畳あり)のオブジェクトであると判定された画素の画素値は32となる。オブジェクトではないと判定された画素の画素値は0となる。そして、当該出力と学習データに含まれるオブジェクト抽出正解ラベル画像との差を評価して誤差を求める。当該評価には指標として平均二乗誤差や交差エントロピーを用いることができる。
S734において、CPU231は、オブジェクト抽出のニューラルネットワークのパラメタを調整する。すなわち、S733において算出した誤差をもとに、バックプロパゲーション法によってオブジェクト抽出のニューラルネットワークのパラメタ値を変更するものである。
S735において、CPU231は、オブジェクト領域推定のニューラルネットワークの誤差を算出する。すなわち、オブジェクト領域推定の各学習データに含まれる入力画像をオブジェクト領域推定のニューラルネットワークに入力して出力を得る。当該出力は、入力画像と同じ画像サイズである。また、予測結果として、オブジェクト領域であると判定された画素は、画素の値がオブジェクト領域であることを示す値、そうではないと判定された画素は、画素の値がオブジェクト領域ではないことを示す値である画像である。そして、当該出力と学習データに含まれるオブジェクト領域推定正解ラベル画像との差を評価して誤差を求める。当該評価の指標には、オブジェクト抽出と同様、平均二乗誤差や交差エントロピーを用いることができる。
S736において、CPU231は、オブジェクト領域推定のニューラルネットワークのパラメタを調整する。すなわち、S735において算出した誤差をもとに、バックプロパゲーション法によってオブジェクト領域推定のニューラルネットワークのパラメタ値を変更するものである。
S737において、CPU231は、学習を終了するか否かを判定する。これは次のようにして行う。CPU231は、S732~S736の処理を、所定回数(例えば、60000回)行ったか否かを判定する。当該所定回数は、本フローチャートの開始時にユーザが操作入力するなどして決定することができる。所定回数行った場合には、YESと判定し、S738に遷移する。そうでない場合は、S732に遷移し、ニューラルネットワークの学習を続ける。
S738において、CPU231は、学習結果として、S734とS736において調整したオブジェクト抽出およびオブジェクト領域推定のニューラルネットワークのパラメタを、それぞれ、画像処理サーバ103に送信する。
<帳票処理依頼処理>
次に、画像処理装置101による、帳票処理依頼処理について説明する。画像処理装置101は、帳票をスキャンして処理対象画像を生成する。そして、処理対象画像データを画像処理サーバ103に送信して、帳票テキスト化を依頼する。図9(a)は帳票処理依頼処理のフローを示す図である。この処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
次に、画像処理装置101による、帳票処理依頼処理について説明する。画像処理装置101は、帳票をスキャンして処理対象画像を生成する。そして、処理対象画像データを画像処理サーバ103に送信して、帳票テキスト化を依頼する。図9(a)は帳票処理依頼処理のフローを示す図である。この処理は、画像処理装置101のCPU201が、ストレージ208に記録されているコントローラプログラムを読み出し、RAM204に展開して実行することにより実現される。これは、ユーザが、画像処理装置101の入力デバイス209を介して、所定の操作を行うことで開始される。
S901において、まずCPU201は、スキャナデバイス206や原稿搬送デバイス207を制御して、原稿をスキャンして処理対象画像を生成する。処理対象画像は、グレースケールの画像データとして生成される。
S902において、CPU201は、S901で生成した処理対象画像を、外部インタフェース211を介して、画像処理サーバ103に送信する。
<帳票処理>
次に、画像処理サーバ103による帳票処理について説明する。図9(b)は帳票処理のフローを示す図である。図10は、帳票処理における、テキストデータ生成処理の概要を示す図である。画像処理部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、これを処理することにより抽出対象項目を抽出する。帳票処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
次に、画像処理サーバ103による帳票処理について説明する。図9(b)は帳票処理のフローを示す図である。図10は、帳票処理における、テキストデータ生成処理の概要を示す図である。画像処理部114として機能する画像処理サーバ103は、画像処理装置101から処理対象画像を受信し、これを処理することにより抽出対象項目を抽出する。帳票処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S951において、まずCPU261は、オブジェクト抽出を行うニューラルネットワークとオブジェクト領域推定を行うニューラルネットワークをロードする。CPU261は、図7(b)のフローチャートのS731の場合と同一のニューラルネットワークを構築する。そして、S738において、学習装置102から送信された学習結果(オブジェクト抽出を行うニューラルネットワークのパラメタとオブジェクト領域推定を行うニューラルネットワークのパラメタ)を、構築したニューラルネットワークにそれぞれ反映する。
S952において、CPU261は、処理対象画像を、画像処理装置101より受信したかを判定する。外部インタフェース268を介して、処理対象画像を受信していたならば、YESと判定し、S953に遷移する。そうでなければ、NOと判定し、S963に遷移する。例として、ここでは、処理対象画像として、図10の帳票400(図4に示した帳票400)を受信したものとする。
S953において、CPU261は、画像処理装置101から受信した処理対象画像からオブジェクト画素を推定する。CPU261は、処理対象画像を、S951で構築したオブジェクト抽出を行うニューラルネットワークに入力して、オブジェクト画素を推定させる。ニューラルネットワークの出力として、処理対象画像と同じ画像サイズであり、予測結果として、オブジェクト画素にはオブジェクトの種別を示す値、オブジェクト画素以外の画素にはオブジェクトではないことを示す値が記録された画像データが得られる。
S954において、CPU261は、画像処理装置101から受信した処理対象画像からオブジェクト領域を推定する。CPU261は、処理対象画像を、S951で構築したオブジェクト領域推定を行うニューラルネットワークに入力して、オブジェクト領域を推定させる。ニューラルネットワークの出力として、次のような画像データが得られる。処理対象画像と同じ画像サイズでる。また、予測結果としてオブジェクト領域であると判定された画素には、オブジェクト領域であること示す値、オブジェクト領域ではないと判定された画素には、オブジェクト領域ではないことを示す値が、それぞれ記録された画像データ。オブジェクト領域推定のニューラルネットワークの出力は、画素毎の予測結果であるため、予測された領域は必ずしも正確な矩形ではなく扱いにくいため、当該領域を内包する外接矩形をオブジェクト領域の領域情報として設定する。外接矩形の設定には公知の技術を適用し実現することができる。それぞれの外接矩形は、処理対象画像上における左上端点と幅および高さから成る情報として表現することができる。このようにして得た矩形情報群をオブジェクト領域とする。
S955において、CPU261は、手書き文字抽出画像を生成し、手書き文字のオブジェクト領域と共に、手書きOCR部116に送信する。CPU261は、S953で得たオブジェクト画素中の、手書き文字であることを示す値の画素と同じ位置の画素を、処理対象画像から抽出して手書き文字抽出画像を生成する。また、S954で得たオブジェクト領域の中から、手書き文字に対応するものを選定する。すなわち、オブジェクト領域内のオブジェクト画素に手書き文字であることを示す値の画素が存在するオブジェクト領域を選抜する。CPU261は、このようにして得た手書き文字抽出画像と手書き文字のオブジェクト領域を、外部インタフェース268を介して、手書きOCR部116に送信する。そして、手書き文字のみが含まれる手書き文字抽出画像に対して、推定した手書き文字のオブジェクト領域毎に手書きOCRを実行させる。手書きOCRには公知の技術を適用し実現することができる。なお、上述のようにして得た手書き文字抽出画像の例を図10の手書き抽出画像1001に示す(図示のように手書き文字のみが含まれた画像である)。また、手書き文字のオブジェクト領域を手書き抽出画像1001上に点線枠で示して例示する。
S956において、CPU261は、手書きOCR部116から、手書きOCR結果を受信したか否かを判定する。手書きOCR結果とは、手書きOCR部116が、オブジェクト領域に含まれていた手書き文字を1文字単位の文字ブロック毎に認識して得たテキストデータである。外部インタフェース268を介して、手書きOCR部116から、手書きOCR結果を受信していたならば、YESと判定し、S957に遷移する。そうでなければ、S956の処理を繰り返す。CPU261は、ここまでの処理によって、オブジェクト領域(矩形情報、座標情報)とそこに含まれていた手書き文字を認識して得たテキストデータを得る。CPU261は、これらを関連付けて手書き情報テーブル1002としてRAM246に記憶しておく。
S957において、CPU261は、S953で得たオブジェクト抽出のニューラルネットワークの出力に基づいて、処理対象画像からオブジェクトを除去して活字画像を生成する。CPU261は、処理対象画像の画素であって、オブジェクト画素において画素値が手書き文字および押印、汚れを示す値である画素と同位置の画素を、白(RGB=(255,255,255))に変更する。これにより、図10の活字画像1003が得られる。なお、ここでは、オブジェクト画素のうち、画素値が手書きマークと押印(重畳あり)、汚れ(重畳あり)であることを示す値が記録されたオブジェクト画素については対象としない。これは、これらのオブジェクト画素を処理対象画像から除去(白に変更)すると、活字文字の画素が欠損してしまうためである。
S958において、CPU261は、S957で生成した活字画像から活字領域を抽出する。CPU261は、活字領域として、活字を内包する活字画像上の部分領域を抽出する。ここで部分領域とは、印刷内容のまとまり(オブジェクト)であり、例えば、複数の文字からなる文字行や、複数の文字行からなる文章、あるいは、図や写真、表、グラフ、といったオブジェクトである。この部分領域の抽出方法として、例えば次のような手法を取り得る。活字画像を白黒に二値化して二値画像を生成する。この二値画像において黒画素が連結する部分(連結黒画素)を抽出し、これに外接する矩形を作成していく。当該矩形の形状や大きさを評価することで、文字ないし文字の一部である矩形群を得ることができる。これら矩形群について、矩形間の距離を評価し、予め定めた閾値以下の距離である矩形の統合を行うことで、文字である矩形群を得ることができる。同様の大きさの文字の矩形が近くに並んでいる場合には、それらを統合して文字行の矩形群を得ることができる。短辺長が同様の文字行の矩形が等間隔に並んでいる場合は、それらを統合して文章の矩形群を得ることができる。また、図や写真、表、グラフなど、文字や行、文章以外のオブジェクトを内包する矩形も得ることができる。以上で抽出した矩形から、単独の文字あるいは文字の一部である矩形を除外する。残った矩形を部分領域とする。図10の1003に、活字画像に対して抽出した活字領域を、点線枠で例示する。本ステップでは、背景サンプル画像から複数の活字領域を抽出し得る。
S959において、CPU261は、S956で生成した処理対象画像と、S957で取得した活字領域とを、外部インタフェース268を介して、活字OCR部117に送信し、活字OCRを実行させる。活字OCRには公知の技術を適用し実現することができる。
S960において、CPU261は、活字OCR部117から、活字OCR結果を受信したか否かを判定する。活字OCR結果とは、活字OCR部117が、活字領域に含まれていた活字を1文字単位の活字文字ブロック毎に認識して得たテキストデータである。外部インタフェース268を介して、活字OCR部117から、活字OCR結果を受信していたならば、YESと判定し、S961に遷移する。そうでなければ、S960の処理を繰り返す。CPU261は、ここまでの処理によって、活字領域(座標情報)とそこに含まれていた活字を認識して得たテキストデータを得る。CPU261は、これらを関連付けて活字情報テーブル1004としてRAM246に記憶しておく。
S961において、CPU261は、本ステップまでに得たテキストデータ(手書き)とテキストデータ(活字)、オブジェクト画素、オブジェクト領域、活字領域、を含む情報をもとに、抽出対象項目を抽出する。本ステップの処理は、図11(a)のフローチャートを用いて後述する。
S962において、CPU261は、S961で抽出した抽出対象項目を、別体外部の業務システムに送信して出力する。
S963において、CPU261は、処理を終了するか否かを判定する。ユーザが、画像処理サーバ103の電源のOFFなどの所定の操作を行った場合には、YESと判定し、処理を終了する。そうでなければ、NOと判定し、S952に遷移する。
<抽出対象項目抽出処理>
次に、画像処理サーバ103による抽出対象項目抽出処理について説明する。図11(a)は対象項目抽出処理のフローを示す図である。抽出対象項目抽出処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
<抽出対象項目抽出処理>
次に、画像処理サーバ103による抽出対象項目抽出処理について説明する。図11(a)は対象項目抽出処理のフローを示す図である。抽出対象項目抽出処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S1101において、CPU261は、帳票情報テーブルを生成する。帳票情報テーブルは、帳票上に記載・付与された内容に関する情報を記録するものである。本ステップの処理は、図11(b)のフローチャートを用いて後述する。また、帳票情報テーブルについては、図12(a)を用いて説明する。
図12(a)は、帳票情報テーブルの例である。帳票情報テーブル1200は、S954において推定したオブジェクト領域およびS958で抽出した活字領域ごとに、その情報を記録したテーブルである。帳票情報テーブル1200は、RAM264に記録される。帳票情報テーブル1200の1つのレコードが、1つのオブジェクトないし活字に関する情報を示す(以降この情報を「帳票情報」と呼称する)。帳票情報テーブル1200は、種別列1201、内容列1202、領域列1203、キーワード列1204、合計金額スコア列1205、および発行日付スコア列1206から成る。
種別列1201は、該当する帳票情報の種別を記録する項目列である。帳票情報がオブジェクトである場合には、その種別を格納する。すなわち、「手書き文字」、「手書きマーク」、押印(重畳なし)を表す「押印」、押印(重畳あり)を表す「押印重」、汚れ(重畳なし)を表す「汚れ」、汚れ(重畳あり)を表す「汚れ重」の文字列のいずれかを格納する。一方、帳票情報が活字の場合には「活字」の文字列を格納する。
内容列1202は、手書き文字および活字の文字認識結果を記録する項目列である。該当する帳票情報がオブジェクトであり手書き文字の場合には、当該手書き文字の手書きOCR結果であるテキストを格納する。帳票情報が活字である場合には、当該活字の活字OCR結果であるテキストを格納する。その他の場合には、内容列1202はブランクとする。
領域列1203は、オブジェクト領域または活字領域の領域情報(矩形情報)を記録する項目列である。オブジェクト領域または活字領域の矩形情報(処理対象画像上における位置と幅および高さ)を格納する。
キーワード列1204は、内容列1202に記録されたテキストデータがキーワードであるか否かを記録する項目列である。手書き文字または活字のテキストが抽出キーワードに合致する場合には、「抽出」の文字列を格納する。あるいは、当該手書き文字または活字のテキストが除外キーワードに合致する場合には、「除外」の文字列を格納する。それ以外の場合には、キーワード列1204はブランクとする。
合計金額スコア列1205は、内容列1202に記録されたテキストデータが合計金額抽出項目値であることの確からしさを示すスコア(合計金額スコア)を記録する項目列である。合計金額スコアについては後述する。
発行日付スコア列1206は、内容列1202に記録されたテキストデータが発行日付抽出項目値であることの確からしさを示すスコア(発行日付スコア)を記録する項目列である。発行日付スコアについては後述する。
図11(a)のフローチャートの処理の説明に戻る。
S1102において、CPU261は、S1101で生成した帳票情報テーブル1200を参照して、合計金額項目値を抽出する処理を行う。本ステップの処理は、図13(a)のフローチャートを用いて後述する。
S1103において、CPU261は、S1101で生成した帳票情報テーブル1200を参照して、発行日付項目値を抽出する処理を行う。本ステップの処理は、図13(b)のフローチャートを用いて後述する。
<帳票情報テーブル生成処理>
次に、画像処理サーバ103による帳票情報テーブル生成処理について説明する。図11(b)は帳票情報テーブル生成処理のフローを示す図である。帳票情報テーブル生成処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
<帳票情報テーブル生成処理>
次に、画像処理サーバ103による帳票情報テーブル生成処理について説明する。図11(b)は帳票情報テーブル生成処理のフローを示す図である。帳票情報テーブル生成処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S1151において、CPU261は、RAM264に帳票情報テーブル1200を生成する。帳票情報テーブルの構成については前述のとおりである。
S1152において、CPU261は、S954で推定したオブジェクト領域の全てに対して処理を終えたか否かを判定する。終えている場合には、YESと判定し、S1165に遷移する。終えていない場合には、NOと判定し、S1153に遷移する。
この後CPU261は、S1153からS1164までの処理を、S954で推定した全てのオブジェクト領域に対して行われるまで繰り返す。
S1153において、CPU261は、S1151で生成した帳票情報テーブル1200に、新規の帳票情報として、レコードを1つ追加する。追加したレコードの各列の値はブランクとする。合計金額スコア列1205および発行日付スコア列1206の値は0とする。
S1154において、CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が、手書き文字であるか否かを判定する。CPU261は、処理対象であるオブジェクト領域内のオブジェクト画素の値を参照し、S953で推論して得たオブジェクト画素のうち、手書き文字であることを示す値のオブジェクト画素が最も多いか否かを判定する。手書き文字であることを示す値のオブジェクト画素が最も多い場合はS1155に遷移し、手書き文字ではあることを示す値のオブジェクト画素が最も多くない場合はS1156に遷移する。
S1155において、CPU261は、S1153で追加した帳票情報のレコードに処理対象のオブジェクト領域内の手書き文字であることを示す値のオブジェクト画素からなる手書き文字についての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が手書き文字であることを示す情報として、種別列1201に、「手書き文字」の文字列を記録する。また、内容列1202に、当該手書き文字の手書きOCR結果であるテキストデータを格納する。これは、S956でRAM264に記録した手書き情報テーブル1002を参照し、オブジェクト領域が一致するテキストデータを、該当するテキストデータとして取得する。また、領域列1203に、当該オブジェクト領域の領域情報を記録する。当該オブジェクト領域について、S954で得た領域情報(矩形情報)を記録する。また、キーワード列1204に、当該手書き文字のキーワードとしての種別を記録する。これは次のようにして成すが、ここで、抽出キーワードテーブルおよび除外キーワードテーブルについて、図12(b)および図12(c)を用いて説明する。
図12(b)は抽出キーワードを記録する抽出キーワードテーブル1230の例を示す図であり、および図12(c)は除外キーワードテーブル1260の例を示す図である。抽出キーワードテーブル1230は、予め定義した抽出キーワードとなるテキストデータを登録しておく。除外キーワードテーブル1260は、予め定義した除外キーワードとなるテキストデータを登録しておく。なお、抽出キーワードテーブル1230と除外キーワードテーブル1260には、同一の文字列は登録しない。
図11のフローチャートのS1155の処理の説明に戻る。CPU261は、当該手書き文字の手書きOCR結果のテキストデータ(内容列1202に格納済み)が、抽出キーワードテーブル1230に登録されているか否かを判定する。抽出キーワードテーブル1230に登録されていれば、キーワード列1204に「抽出」の文字列を記録する。一方、当該手書きOCR結果のテキストデータが、除外キーワードテーブル1260に登録されていれば、キーワード列1204に「除外」の文字列を記録する。当該手書きOCR結果のテキストデータが、抽出キーワードテーブル1230および除外キーワードテーブル1260のどちらにも登録されていなければキーワード列1204はブランクとする。
S1156において、CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が、手書きマークであるか否かを判定する。CPU261は、処理対象であるオブジェクト領域内のオブジェクト画素の値を参照し、S953で推論して得たオブジェクト画素のうち、手書きマークであることを示す値のオブジェクト画素が最も多いか否かを判定する。手書きマークであることを示す値のオブジェクト画素が最も多い場合はS1157に遷移し、手書きマークであることを示す値のオブジェクト画素が最も多くない場合はS1158に遷移する。
S1157において、CPU261は、S1153で追加した帳票情報のレコードに処理対象のオブジェクト領域内の手書きマークであることを示す値のオブジェクト画素からな手書きマークについての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が手書きマークであることを示す情報として、種別列1201に、「手書きマーク」の文字列を記録する。また、領域列1203に、当該オブジェクト領域の領域情報として、S954で得た矩形情報を記録する。
S1158において、CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が、押印(重畳なし)であるか否かを判定する。CPU261は、処理対象であるオブジェクト領域内のオブジェクト画素の値を参照し、S953で推論して得たオブジェクト画素のうち、押印(重畳なし)であることを示す値のオブジェクト画素が最も多いか否かを判定する。押印(重畳なし)であることを示す値のオブジェクト画素が最も多い場合はS1159に遷移し、押印(重畳なし)であることを示す値のオブジェクト画素が最も多くない場合はS1160に遷移する。
S1159において、CPU261は、S1153で追加した帳票情報のレコードに、処理対象のオブジェクト領域内の押印(重畳なし)であることを示す値のオブジェクト画素からなる押印(重畳なし)についての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が押印(重畳なし)であることを示す情報として、種別列1201に、「押印」の文字列を記録する。また、領域列1203に、当該オブジェクト領域の領域情報として、S954で得た矩形情報を記録する。
S1160において、CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が、押印(重畳あり)であるか否かを判定する。CPU261は、処理対象であるオブジェクト領域内のオブジェクト画素の値を参照し、S953で推論して得たオブジェクト画素のうち、押印(重畳あり)であることを示す値のオブジェクト画素が最も多いか否かを判定する。押印(重畳あり)であることを示す値のオブジェクト画素が最も多い場合はS1161に遷移し、押印(重畳あり)であることを示す値のオブジェクト画素が最も多くない場合はS1162に遷移する。
S1161において、CPU261は、S1153で追加した帳票情報レコードに、処理対象のオブジェクト領域内の押印(重畳あり)であることを示す値のオブジェクト画素からなる押印(重畳あり)についての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が押印(重畳あり)であることを示す情報として、種別列1201に、「押印重」の文字列を記録する。また、領域列1203に、当該オブジェクト領域の領域情報として、S954で得た矩形情報を記録する。
S1162において、CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が、汚れ(重畳なし)であるか否かを判定する。CPU261は、処理対象であるオブジェクト領域内のオブジェクト画素の値を参照し、S953で推論して得たオブジェクト画素のうち、汚れ(重畳なし)であることを示す値のオブジェクト画素が最も多いか否かを判定する。汚れ(重畳なし)であることを示す値が最も多い場合はS1163に遷移し、汚れ(重畳なし)であることを示す値が最も多くない場合はS1164に遷移する。
S1163において、CPU261は、S1153で追加した帳票情報のレコードに、処理対象のオブジェクト領域内の汚れ(重畳なし)であることを示す値のオブジェクト画素からなる汚れ(重畳なし)についての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が汚れ(重畳なし)であることを示す情報として、種別列1201に、「汚れ」の文字列を記録する。また、領域列1203に、当該オブジェクト領域の領域情報として、S954で得た矩形情報を記録する。
S1164において、CPU261は、S1153で追加した帳票情報のレコードに、処理対象のオブジェクト領域内の汚れ(重畳あり)であることを示す値のオブジェクト画素からなる汚れ(重畳あり)についての情報を記録する。CPU261は、現在処理対象としているオブジェクト領域に含まれるオブジェクトの種別が汚れ(重畳あり)であることを示す情報として、種別列1201に、「汚れ重」の文字列を記録する。また、領域列1203に、当該オブジェクト領域の領域情報として、S954で得た矩形情報を記録する。
CPU261は、S954で推定したオブジェクト領域の全てに対して処理を終えると、この後のS1165からS1167の処理を、S958で抽出した全ての活字領域に対して行われるまで繰り返す。
S1165において、CPU261は、S958で抽出した活字領域の全てに対して処理を終えたか否かを判定する。終えている場合はS1168に遷移し、終えていない場合はS1166に遷移する。
S1166において、CPU261は、S1151で生成した帳票情報テーブル1200に、新規の帳票情報のレコードを1つ追加する。本ステップの処理は、S1153の処理と同様である。
S1167において、CPU261は、S1166で追加した帳票情報のレコードに、活字についての情報を記録する。CPU261は、種別列1201に、活字であることを示す情報として「活字」の文字列を記録する。また、CPU261は、内容列1202に、現在処理対象としている活字領域に含まれる活字の活字OCR結果であるテキストデータを格納する。これは、S960で、RAM264に記録した活字情報テーブル1004を参照し、活字領域が一致するテキストデータを、該当するテキストデータとして取得する。また、領域列1203に、当該活字領域の領域情報として、S958で得た矩形情報を記録する。また、キーワード列1204に、文字のキーワードとしての種別を記録する。当該活字の活字OCR結果のテキストデータ(内容列1202に格納済み)が、抽出キーワードテーブル1230に登録されていれば、キーワード列1204に「抽出」の文字列を記録する。一方、当該手書きOCR結果のテキストデータが、除外キーワードテーブル1260に登録されていれば、キーワード列1204に「除外」の文字列を記録する。
S1168において、CPU261は、日付に関する帳票情報を統合する処理を行う。これは次のようにして成す。CPU261は、帳票情報テーブル1200中の各帳票情報の種別列1201の値が「活字」であって、かつ、内容列1202の値が「年」や「月」、「日」であるものを選択する。これら3つの帳票情報が選択される場合には、これら活字領域の垂直位置が概ね同一であることを確認する。具体的には、これら帳票情報の領域列1203の値に記録した領域情報を参照し、これら活字領域の中心座標間の垂直位置の差が、予め定めた閾値以内(例えば、20ピクセル)であることを確認する。さらに、これら活字領域の水平位置の間隔が予め定めた閾値以内(例えば200ピクセル)であることを確認する。
これが確認された場合、内容列1202の値が「年」である帳票情報の左方向近傍にあり、その種別列1201の値が「手書き」であり、内容列1202の値のテキストデータが4桁以内の数字のみから構成されている帳票情報を選択する。当該帳票情報が選択される場合には、内容列1202の値が「年」と「月」である帳票情報の間にあり、その種別列1201の値が「手書き」であり、内容列1202の値のテキストデータが2桁以内の数字のみから構成されている帳票情報を選択する。当該帳票情報が選択される場合には、内容列1202の値が「月」と「日」である帳票情報の間にあり、その種別列1201の値が「手書き」であり、内容列1202の値のテキストデータが2桁以内の数字のみから構成されている帳票情報を選択する。
以上が全て成り立つ場合、これら帳票情報は、活字で印字された「年」「月」「日」に対して記入された手書きの日付に関する項目であると考えられる。これらを統合して1つの帳票情報を生成する。すなわち、帳票情報テーブル1200に帳票情報のレコードを1つ追加する。追加した帳票情報のレコードの種別列1201に「手書き」の文字列を記録する(統合した日付に関する項目は、手書きの種別として扱う)。また、上記3つの活字の帳票情報の内容列1202のテキストデータと、上記3つの手書き文字の帳票情報の内容列1202のテキストデータとを、日付を構成するよう連結する。そして、追加した帳票情報の内容列1202に、連結して生成したテキストデータを記録する。また、これら6つの帳票情報の領域列1203の領域情報を参照し、これら領域全てを包含する領域情報を算出する。そして追加した帳票情報のレコードの領域列1203に算出した領域情報を記録する。また、当該帳票情報のキーワード列1204の値はブランク、合計金額スコア列1205および発行日付スコア列1206の値はゼロとする。最後に、統合元となった6つの帳票情報のレコードは、帳票情報テーブル1200から削除する。
次に、CPU261は、S1169からS1171の処理で、ここまでの処理において帳票情報テーブル1200に記録した帳票情報のレコードのうち、キーワード列1204がブランクでない全ての帳票情報のレコードを参照する。そして、文字に重畳したオブジェクトのために誤認識している可能性があるキーワードを検出し、キーワードとして無効化する処理を行う。
S1169において、CPU261は、帳票情報テーブル1200に記録した帳票情報レコードの中で、キーワード列1204がブランクでないもの全てに対して本ステップの処理を終えたか否かを判定する。終えている場合には本フローチャートの処理を終了する。終えていない場合にはS1170に遷移する。
S1170において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータが、キーワードとして誤って認識されていないか否かを判定する。これは、次のようにして成す。まず、CPU261は、当該帳票情報の領域情報を、領域列1203を参照して得る。次に、帳票情報テーブル1200中の当該帳票情報のレコード以外の帳票情報のレコードうち、種別列1201の値が「手書きマーク」、「押印重」および「汚れ重」のいずれか1つであるものについて、領域列1203を参照してそれらの領域情報を得る。そして、「手書きマーク」、「押印重」または「汚れ重」のオブジェクトのうち、キーワード領域に重畳または近接しているものがあるか否かを判定する。キーワード領域と他のオブジェクト領域が重畳または近接するか否かの判定結果に基づき、誤ってキーワードと認識されている可能性があるか否かの判定とする。キーワードの文字列の一部にオブジェクトが重畳または近接している場合は、オブジェクトが重畳または近接している文字の文字認識結果に文字化けが生じている可能性がある。また、キーワードの文字列の一部にオブジェクトが重畳している場合には、オブジェクトが重なった文字の一部が欠損した状態で文字認識されている可能性がある。なお、本実施形態では、キーワード領域と他のオブジェクト領域との中心間の距離が予め定められた閾値未満である場合に近接していると判定する。キーワード領域が他のオブジェクト領域と重畳あるいは近接している場合にはS1171に遷移し、重畳も近接もしていない場合はS1169に遷移する。
S1171において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータを、キーワードとして使用しないようにする。すなわち、当該帳票情報のキーワード列1204をブランクにする。これにより、文字に重畳または近接したオブジェクトにより、誤認識された可能性の高い文字列をキーワードとして使用しないようにすることができる。
<合計金額抽出処理>
次に、画像処理サーバ103による合計金額抽出処理について説明する。図13(a)は合計金額抽出処理のフローを示す図である。合計金額を含む、抽出対象項目値の抽出処理では、帳票情報テーブル生成処理において生成した帳票情報のレコードうち、テキストデータが記録された帳票情報のレコードについて、次の抽出条件から抽出対象項目値である確からしさを示すスコアを算出する。
<合計金額抽出処理>
次に、画像処理サーバ103による合計金額抽出処理について説明する。図13(a)は合計金額抽出処理のフローを示す図である。合計金額を含む、抽出対象項目値の抽出処理では、帳票情報テーブル生成処理において生成した帳票情報のレコードうち、テキストデータが記録された帳票情報のレコードについて、次の抽出条件から抽出対象項目値である確からしさを示すスコアを算出する。
(1)テキストデータを得た文字の種別が妥当であるか否か
(2)テキストデータは手書き文字から得られたか否か(手書き文字から得られたテキストデータであれば、記入されたいずれかの項目値である可能性が高い)
(3)テキストデータを得た文字の周辺に抽出用のキーワードが存在するか否か(キーワードは、抽出対象項目値を直接的に指し示すため重要)
(4)オブジェクト領域または活字領域の大きさ(抽出対象項目の大きさの傾向に基づいて評価する)
(5)オブジェクト領域または活字領域の位置(抽出対象項目の処理対象画像上における位置の傾向に基づいて評価する)
これら抽出条件に合致する場合には、スコアに得点1を加算するが、抽出条件ごとに重要性に差があるため、加算する得点1に対して、次のように重みを考慮する。(3)の抽出条件が最も重要であるため、(3)に対する重みを3とする(得点を1x3=3とする)。(2)の抽出条件も重要だが、活字で印字された合計金額の場合もあり得るため、重みを2とする(得点を1x2=2とする)。他の抽出条件の重みは1とする(得点は1x1=1のまま)。なお、(3)では、抽出キーワードが周辺に存在する場合には、スコアに得点を加算(3を加算)し、除外キーワードが周辺に存在する場合には、スコアから得点を減算(-3を加算)する。このような重み付けを行って算出したスコアに基づいて、合計金額項目値を決定し抽出する。
(2)テキストデータは手書き文字から得られたか否か(手書き文字から得られたテキストデータであれば、記入されたいずれかの項目値である可能性が高い)
(3)テキストデータを得た文字の周辺に抽出用のキーワードが存在するか否か(キーワードは、抽出対象項目値を直接的に指し示すため重要)
(4)オブジェクト領域または活字領域の大きさ(抽出対象項目の大きさの傾向に基づいて評価する)
(5)オブジェクト領域または活字領域の位置(抽出対象項目の処理対象画像上における位置の傾向に基づいて評価する)
これら抽出条件に合致する場合には、スコアに得点1を加算するが、抽出条件ごとに重要性に差があるため、加算する得点1に対して、次のように重みを考慮する。(3)の抽出条件が最も重要であるため、(3)に対する重みを3とする(得点を1x3=3とする)。(2)の抽出条件も重要だが、活字で印字された合計金額の場合もあり得るため、重みを2とする(得点を1x2=2とする)。他の抽出条件の重みは1とする(得点は1x1=1のまま)。なお、(3)では、抽出キーワードが周辺に存在する場合には、スコアに得点を加算(3を加算)し、除外キーワードが周辺に存在する場合には、スコアから得点を減算(-3を加算)する。このような重み付けを行って算出したスコアに基づいて、合計金額項目値を決定し抽出する。
合計金額抽出処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S1301において、CPU261は、処理対象とする帳票情報のレコードを選択する。CPU261は、S1101において生成した帳票情報テーブル1200を参照し、種別列1201の値が「手書き文字」または「活字」であり、かつ、キーワード列1204がブランクである帳票情報のレコードを取得する。
S1302において、CPU261は、S1301で選択した帳票情報のレコードの全てに対して処理を終えたか否かを判定する。終えている場合には、YESと判定し、S1308に遷移する。終えていない場合には、NOと判定し、S1303に遷移する。
S1303からS1307までの処理を繰り返して、S1301で選択した帳票情報のレコードの全てに対して処理を行っていく。
S1303において、CPU261は、現在処理対象としている帳票情報のレコードに記録された文字の種別が妥当であるか否かを評価する(前述の(1)の抽出条件に関する評価)。当該帳票情報のレコードにおける内容列1202の値(テキストデータ)が、下記所定の文字のみから構成されている場合には、本抽出条件について、合計金額項目値の条件に合致しているとする。そして、合計金額スコア列1205の値に1を加算して、当該帳票情報のレコードを更新する。本実施形態における所定の文字は、数字および円マーク「¥」、カンマ「,」、ハイフン「-」、ピリオド「.」、漢字の「円」とする。これらの文字を文字の種別の妥当性を評価するために使用する理由は、レシート/領収証に記載される金額が、例えば「¥1000」、「¥1,000.-」、「¥1000円」などと記載されるからである。なお、以降において、「スコアにNを加算する」と記載する場合には、このように合計金額スコア列1205の値に数値Nを加算して更新するものとする。
S1304において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータを得るためにOCR処理した文字列は手書き文字であったか否かを評価する(前述の(2)の抽出条件に関する評価)。当該帳票情報のレコードにおける種別列1201の値が「手書き文字」の文字列であれば、本抽出条件について、合計金額の条件に合致しているため、合計金額スコア列1205の値に2を加算する。
S1305において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータを得るためにOCR処理した文字列の近傍にキーワードが存在するか否か評価する(前述の(3)の抽出条件に関する評価)。帳票情報テーブル1200から、キーワード列1204の値がブランクではない帳票情報のレコード(これを「キーワード帳票情報」と呼称する)を抽出する。抽出したキーワード帳票情報の中から、領域列1203の領域情報が示す領域(「キーワード領域」)が、現在処理対象としている帳票情報のレコードにおける領域列1203の領域情報が示す領域(「テキスト領域」)の近傍に位置するものを選択する。ここでキーワード領域がテキスト領域の近傍に存在するとは、両領域の中心間の距離が、予め定められた閾値未満(例えば、250ピクセル未満)であり、かつ、キーワード領域がテキスト領域の上方向か左上方向か左方向にある場合を指す。このような位置に関する条件を課すのは、キーワードが、項目のラベル/キャプションとして帳票上に記入されており、それらは項目値に対して、およそ上述のような位置関係を有する傾向が高いためである。複数のキーワード領域が同じ1つのテキスト領域の近傍に存在する場合、キーワード領域とテキスト領域の中心間の距離が最も小さいものを選択する。このようにしてキーワード帳票情報が選択されたならば、キーワード列1204の値を参照する。このキーワード列1204の値が「抽出」であれば、当該キーワード帳票情報は抽出キーワードが記録された帳票情報のレコードであるため、現在処理対象としている帳票情報のレコードにおける合計金額スコア列1205の値に3を加算する。一方、キーワード列1204の値が「除外」であれば、当該キーワード帳票情報は除外キーワードが記録された帳票情報のレコードであるため、現在処理対象としている帳票情報のレコードにおける合計金額スコア列1205の値に-3を加算する。
S1306において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたオブジェクト領域または活字領域の大きさを評価する(前述の(4)の抽出条件に関する評価)。レシート/領収証に記載された合計金額は、視認しやすいよう比較的大きめに記入される傾向がある。よって、この傾向に基づいて、オブジェクト領域または活字領域の高さが所定の閾値(例えば120ピクセル)を超えれば、合計金額の条件に合致しているとして合計金額スコア列1205の値に1を加算する。
S1307において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたオブジェクト領域または活字領域の位置を評価する(前述の(5)の抽出条件に関する抽出条件)。レシート/領収証に記載された合計金額は、視認性が良くなるよう帳票の中央部に記載される傾向がある。また、明細があるものである場合、合計金額は、明細の下側、すなわち、帳票の下部に記載される傾向がある。よって、当該帳票情報のレコードに記録されたオブジェクト領域または活字領域の中心座標が、下記所定の位置条件を満たすならば、合計金額の条件に合致しているとして合計金額スコア列1205の値に1を加算する。本実施形態における所定の位置条件は、処理対象画像の垂直方向中央位置から上下方向それぞれに、処理対象画像の高さの半分のH1%の範囲に中心座標がある(H1%は例えば、15%)ことである。あるいは別の位置条件として、処理対象画像の最下端から上方向に、処理対象画像の高さのH2%の範囲に中心座標がある(H2%は例えば20%)こととしてもよい。
S1308において、CPU261は、S1301で選択した帳票情報のレコードのうち、合計金額スコアが最も高い帳票情報のレコードにおける内容列1202の値を合計金額項目値として決定する。選択した帳票情報のレコードにおいて合計金額スコアが全てゼロ以下の場合には、合計金額項目値なしと決定する。
<発行日付抽出処理>
次に、画像処理サーバ103による発行日付抽出処理について説明する。図13(b)は発行日付抽出処理のフローを示す図である。発行日付抽出処理では、帳票情報テーブル生成処理において生成した帳票情報のレコードうち、テキストデータを得た文字が手書き文字か活字であった帳票情報のレコードについて、図13(a)を用いて説明した合計金額抽出処理と同様の抽出条件を評価する。ただし、具体的な評価指標は合計金額抽出処理とは異なる。これは以降で詳細を説明する。そして、発行日付項目値である確からしさを示すスコアを算出する。
<発行日付抽出処理>
次に、画像処理サーバ103による発行日付抽出処理について説明する。図13(b)は発行日付抽出処理のフローを示す図である。発行日付抽出処理では、帳票情報テーブル生成処理において生成した帳票情報のレコードうち、テキストデータを得た文字が手書き文字か活字であった帳票情報のレコードについて、図13(a)を用いて説明した合計金額抽出処理と同様の抽出条件を評価する。ただし、具体的な評価指標は合計金額抽出処理とは異なる。これは以降で詳細を説明する。そして、発行日付項目値である確からしさを示すスコアを算出する。
発行日付抽出処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S1351において、CPU261は、処理対象とする帳票情報のレコードを選択する。これはS1301と同様の処理である。
S1352において、CPU261は、S1351で選択した帳票情報のレコード全てに対して処理を終えたか否かを判定する。終えている場合には、YESと判定し、S1358に遷移する。終えていない場合には、NOと判定し、S1353に遷移する。
S1353において、CPU261は、現在処理対象の帳票情報のレコードに記録された文字の種別が妥当であるか否かを評価する(前述の(1)の評価)。当該帳票情報のレコードにおける内容列1202の値(テキストデータ)が、数字と「年」および「月」、「日」から構成されている場合には、本抽出条件について、発行日付項目値の条件に合致しているとする。そして、発行日付スコア列1206の値に1を加算して、当該帳票情報のレコードを更新する。なお、以降において、「スコアにNを加算する」と記載する場合には、このように発行日付スコア列1206の値に数値Nを加算して更新するものとする。
S1354において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータを得るためにOCR処理した文字列は手書き文字であったか否かを評価する(前述の(2)の抽出条件に関する評価)。当該帳票情報のレコードにおける種別列1201の値が「手書き文字」の文字列であれば、本抽出条件について、発行日付の条件に合致しているため、スコアに2を加算する。
S1355において、CPU261は、現在処理対象としている帳票情報のレコードに記録されたテキストデータを得るためにOCR処理した文字列の近傍にキーワードが存在するか否か評価する(前述の(3)の抽出条件に関する評価)。この処理は、S1305と同様の処理である。すなわち、帳票情報テーブル1200から、キーワード列1204の値がブランクではない帳票情報のレコード(キーワード帳票情報)を抽出する。抽出したキーワード帳票情報の中から、領域列1203の領域情報が示す領域(キーワード領域)が、現在処理対象としている帳票情報のレコードにおける領域列1203の領域情報が示す領域(テキスト領域)の近傍に位置するものを選択する。キーワード帳票情報が選択されたならば、キーワード列1204の値を参照する。このキーワード列1204の値が「抽出」であれば、当該キーワード帳票情報は抽出キーワードが記録された帳票情報のレコードであるため、現在処理対象としている帳票情報のレコードにおける発行日付スコア列1206の値に3を加算する。一方、キーワード列1204の値が「除外」であれば、当該キーワード帳票情報は除外キーワードが記録された帳票情報のレコードであるため、現在処理対象としている帳票情報のレコードにおける発行日付スコア列1206の値に-3を加算する。
S1356において、CPU261は、現在処理対象としている帳票情報のレコードにおけるオブジェクト領域または活字領域の大きさを評価する(前述の(4)の抽出条件に関する評価)。レシート/領収証に記載された発行日付は、合計金額よりは小さい傾向がある。よって、この傾向に基づいて、オブジェクト領域または活字領域の高さが所定の閾値(例えば60ピクセル)を超えなければ、本抽出条件について、発行日付の条件に合致しているため、発行日付スコア列1206の値に1を加算する。
S1357において、CPU261は、現在処理対象としている帳票情報のレコードにおけるオブジェクト領域または活字領域の位置を評価する(前述の(5)の抽出条件に関する評価)。レシート/領収証に記載された発行日付は、処理対象画像の右上部や中央やや下部に記載される傾向がある。よって、当該帳票情報の領域の中心座標が、下記所定の位置条件を満たすならば、本抽出条件について、発行日付の条件に合致しているため、発行日付スコア列1206の値に1を加算する。本実施形態における所定の位置条件は、処理対象画像の右上端点から左下方向に、処理対象画像の高さのH3%(H3%は例えば、20%)かつ処理対象画像の幅のH4%(H4%は例えば50%)の範囲に中心座標があることである。あるいは別の位置条件として、処理対象画像の垂直方向中央位置から下方向に、処理対象画像の高さの半分のH5%の範囲に中心座標がある(H5%は例えば、15%)こととしてもよい。
S1358において、CPU261は、S1351で選択した帳票情報のレコードのうち、発行日付スコアが最も高い帳票情報のレコードにおける内容列1202の値を発行日付項目値として決定する。選択した帳票情報のレコードにおいて発行日付スコア列1206の値が全てゼロ以下の場合には、発行日付項目値なしとして決定する。
以上のように、本実施形態では、手書きマークや押印、汚れなど、文字に重畳したオブジェクトを検出し、これらの中に、抽出対象項目を抽出するためのキーワードに重畳する、あるいはキーワードの近傍に存在するものがあるか否かを判定する。この判定結果に基づいて誤認識が生じている可能性の高いキーワードを検出し、検出されたキーワードをキーワードとして使用しないことにより、誤った抽出対象項目が抽出されてしまうことを低減することができる。
例えば、図4(a)に示した帳票400は、合計金額抽出処理において、合計金額記入欄401に記入された文字列に対するスコアは次のように評価され、5となる。すなわち(1)の抽出条件で+1、(2)の抽出条件で+2、(3)の抽出条件で+0、(4)の抽出条件で+1、(5)の抽出条件で+1である。一方、税込抜選択欄454の活字が手書き丸囲みの影響で「金額」の文字列であると認識されてしまった場合には、本来除外キーワードと一致する文字列であるのに抽出キーワードと一致する文字列として誤認識されてしまう。これにより、税込抜金額記入欄405に記入された文字列に対するスコアは次のように評価されて6となる。すなわち(1)の抽出条件で+1、(2)の抽出条件で+2、(3)の抽出条件で+3、(4)の抽出条件で+0、(5)の抽出条件で+0である。これにり、合計金額記入欄401に記入された文字列ではなく、税込抜金額記入欄405に記入された文字列が合計金額として抽出されてしまう。しかし、本実施形態に示した構成によれば、税込抜選択欄454の活字は抽出キーワードと一致する文字列として認識されないため、(3)の抽出条件は+0となり、スコアは3となる。よって、合計金額記入欄401に記入された文字列が、正しく合計金額項目値として抽出される。
なお、抽出対象項目の抽出結果は、画像処理サーバ103から、別体外部の業務システムに送信する構成を例として示したが、この限りではなく、抽出結果を画像処理装置101に送信し、そこから業務システムに送信してもよい。
また、S1171で、処理対象としている帳票情報のレコードに記録されたテキストデータをキーワードから除外した場合には、その旨を画像処理装置101に送信するなどして、ユーザに通知するようにしても良い。
なお、本実施形態では、オブジェクト領域推定のニューラルネットワークは、画素の値をオブジェクト領域であることを示す値と、オブジェクト領域ではないことを示す値との、2クラス分類を行う例を示した。しかしこれに限らず、例えば、オブジェクト領域を複数のクラスとして詳細に分類して推定してもよい。例えば、次の領域をクラスとする。手書き文字のオブジェクト領域、手書きマークのオブジェクト領域、押印(重畳なし)のオブジェクト領域、押印(重畳あり)のオブジェクト領域、汚れ(重畳なし)のオブジェクト領域、汚れ(重畳あり)のオブジェクト領域、オブジェクトではない領域である。このように、オブジェクトの種別に応じて分類(多クラス分類)してもよい。この場合、オブジェクト領域推定正解画像を作成する際に、正解データとして含まれるオブジェクト領域それぞれの画素を、分類対象の内容を示す値とする。例えば、手書き文字のオブジェクト領域は255、手書きマークのオブジェクト領域は160、押印(重畳なし)のオブジェクト領域は128、押印(重畳あり)のオブジェクト領域は96とする。また、汚れ(重畳なし)のオブジェクト領域は64、汚れ(重畳あり)のオブジェクト領域は32、その他のオブジェクト領域は0とする。このようにして作成したオブジェクト領域推定のための正解画像を、学習時にニューラルネットワークに参照させる。図11のS1154やS1156、S1158、S1160、S1162では、オブジェクト領域推定のための正解画像の画素の値を参照してオブジェクトの種別を判定すればよい。
(実施形態2)
実施形態1では、抽出対象項目を抽出するためのキーワードに重畳する、あるいはキーワードの近傍に存在する文字がある場合、そのキーワードを抽出対象項目の抽出のために使用しない構成を示した。本実施形態では、さらに他のキーワードとの関係性についての評価も考慮して、抽出キーワードとして使用するか否か決定する構成を示す。
実施形態1では、抽出対象項目を抽出するためのキーワードに重畳する、あるいはキーワードの近傍に存在する文字がある場合、そのキーワードを抽出対象項目の抽出のために使用しない構成を示した。本実施形態では、さらに他のキーワードとの関係性についての評価も考慮して、抽出キーワードとして使用するか否か決定する構成を示す。
実施形態2における下記構成については、実施形態1と同様である。すなわち、画像処理システム、学習シーケンス、利用シーケンス、装置構成、操作画面、原稿サンプル画像生成処理、原稿サンプル画像受信処理、正解データ生成処理、学習データ生成処理、学習処理は実施形態1、2で同じである。また、帳票処理依頼処理、抽出対象項目抽出処理、合計金額抽出処理、発行日付抽出処理も実施形態1、2で同じである。
<帳票情報テーブル生成処理>
本実施形態における、画像処理サーバ103による帳票情報テーブル生成処理について説明する。図14は、帳票情報テーブル生成処理のフローを示す図である。帳票情報テーブル生成処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
本実施形態における、画像処理サーバ103による帳票情報テーブル生成処理について説明する。図14は、帳票情報テーブル生成処理のフローを示す図である。帳票情報テーブル生成処理は、CPU261が、ストレージ265に記憶されている画像処理サーバプログラムを読み出し、RAM264に展開して実行することで実現される。これは、ユーザが、画像処理サーバ103の電源をON(オン)にすると開始される。
S1151からS1170の処理とS1171の処理は、図11(b)のシーケンスにおける同符合のステップと同様のステップである。S1170の処理によって、現在処理対象としているキーワード候補の帳票情報のレコードに記録されたテキストデータは、処理対象画像上において、文字に重畳しているオブジェクトが近接しているか、あるいは重畳しているか否かが判定されている。YESと判定する場合にはS1401に遷移する。
S1401において、CPU261は、現在処理対象としているキーワード候補の帳票情報のレコードに記録されたテキストデータを包含する別のキーワードがあるか否かを判定する。これは次のようにして成す。まず、現在処理対象としている帳票情報のレコードにおけるキーワード列1204を参照する。この値が「抽出」であれば、現在処理対象としている帳票情報のレコードに記録されたテキストデータは、抽出キーワードテーブル1230に登録された抽出キーワードの1つと一致するものである。この場合、CPU261は、除外キーワードテーブル1260を参照して除外キーワードの中に、現在処理対象としている帳票情報のレコードに記録されたテキストデータが表す文字列を包含するものがあるか否かを判定する。
一方、キーワード列1204の値が「除外」であれば、現在処理対象としている帳票情報のレコードに記録されたテキストデータは、除外キーワードテーブル1260に登録された除外キーワードの1つと一致するものである。この場合、CPU261は、抽出キーワードテーブル1230を参照して登録されている抽出キーワードの中に、現在処理対象としている帳票情報のレコードに記録されたテキストデータが表す文字列を包含するものがあるか否かを判定する。
帳票情報のレコードに記録されたテキストデータを包含する別のキーワードがあると判定される場合、当該別のキーワードが、文字に重畳しているオブジェクトの影響をうけて、誤って認識されている可能性が高いと考えられる。よって本実施形態では、現在処理対象としている帳票情報のレコードに記録されたテキストデータを包含する別のキーワードがある場合、そのテキストデータを抽出用または除外用のキーワード候補から除外する。すなわち、そのテキストデータを抽出用または除外用のキーワードとして使用しない(S1171の処理を行う)ようにする。現在処理対象としている帳票情報のレコードに記録されたテキストデータを包含する別のキーワードはないと判定される場合、別のキーワードが、文字に重畳しているオブジェクトの影響をうけて、誤って認識されている可能性は低いと考えられる。よって、現在処理対象としている帳票情報のレコードに記録されたテキストデータはそのまま抽出用または除外用のキーワード候補として扱うようにする。
以上、本実施形態に示したとおり、抽出対象項目を抽出するためのキーワードに重畳する、あるいはキーワードの近傍に存在する文字があるか否かに加えて、当該キーワードを包含する他のキーワードの有無も判定する。これにより、文字に重畳したオブジェクトの影響により誤認識の可能性の高いキーワードをより高精度に検出し、抽出対象項目の誤抽出をより低減することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。例えば、実施形態では、学習データ生成部112と学習部113は、学習装置102において実現されるものとしたが、それぞれ別体の装置において実現されるようにしても良い。この場合、学習データ生成部112を実現する装置は、学習データ生成部112が生成した学習データを、学習部113を実現する装置に送信する。そして、学習部113は受信した学習データをもとにニューラルネットワークを学習する。画像処理装置101と画像処理サーバ103とを別体の装置として説明したが、画像処理装置101が画像処理サーバ103の機能を具備しても良い。画像処理サーバ103とOCRサーバ104とを別体の装置として説明したが、画像処理サーバ103のOCRサーバ104としての機能を具備しても良い。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
実施形態では、活字領域の抽出をS958に示したように、画素の連結性に基づいて判定する方法を示したが、オブジェクト領域推定と同様にニューラルネットワークを用いて推定してもよい。オブジェクト領域推定正解画像を作成したのと同じ要領で、活字領域をユーザが選択し、それに基づいて正解データを作成、オブジェクト領域推定のニューラルネットに参照させて学習する。あるいは、活字OCR領域推定を行うニューラルネットワークを新たに構成し当該正解データを参照させて学習する。
実施形態では、学習処理時に学習データ生成処理より学習データを生成した。しかしながら、事前に学習データ生成処理によって学習データを大量に生成しておいて、学習処理時にそこから随時、ミニバッチサイズ分をサンプルするようにしてもよい。
実施形態では、入力画像をグレースケール画像として生成したが、フルカラー画像など他の形式として生成してもよい。
なお、各実施形態中に登場する略称の定義は次の通りである。MFPとは、Multi Function Peripheralのことである。ASICとは、Application Specific Integrated Circuitのことである。CPUとは、Central Processing Unitのことである。RAMとは、Random‐Access Memoryのことである。ROMとは、Read Only Memoryのことである。HDDとはHard Disk Driveのことである。SSDとはSolid State Driveのことである。LANとは、Local Area Networkのことである。PDLとは、Page Description Languageのことである。OSとは、Operating Systemのことである。PCとは、Personal Computerのことである。OCRとは、Optical Character Recognition/Readerのことである。CCDとは、Charge-Coupled Deviceのことである。LCDとはLiquid Crystal Displayのことである。ADFとはAuto Documennt Feederのことである。CRTとはCathode Ray Tubeのことである。GPUとは、Graphics Processing Unitのことである。IDとは、Identificationのことである。
111 画像取得部
114 画像処理部
116 手書きOCR部
117 活字OCR部
114 画像処理部
116 手書きOCR部
117 活字OCR部
Claims (12)
- 原稿を読み取って得られた読み取り画像を取得する取得手段と、
前記読み取り画像における非活字オブジェクトを検出する検出手段と、
前記読み取り画像中の前記原稿に含まれる文字に対応する文字ブロックに対して文字認識処理を行って文字列を取得する文字認識手段と、
前記文字認識手段によって取得された文字列のうち、予め定められたキー文字列と一致する文字列に基づき、前記読み取り画像から特定の情報を抽出する抽出手段と、
を備え、
前記抽出手段は、前記非活字オブジェクトと前記キー文字列と一致する文字列との位置関係が予め定められた条件を満たさない場合、当該キー文字列と一致する文字列に基づき前記特定の情報を抽出しない、
ことを特徴とする画像処理装置。 - 前記予め定められた条件は、前記読み取り画像において、前記非活字オブジェクトと前記キー文字列と一致する文字列との距離が予め定められた閾値未満であることである、
ことを特徴とする請求項1に記載の画像処理装置。 - 前記特定の情報は、前記文字認識手段によって取得された文字列のうち、前記キー文字列に関連付けられた項目を表す文字列である、
ことを特徴とする請求項1又は2に記載の画像処理装置。 - 前記検出手段は、前記非活字オブジェクトを、学習モデルを用いて文字に重畳している重畳ありオブジェクトと文字に重畳していない重畳なしオブジェクトとに区別して検出し、
前記文字認識手段は、前記読み取り画像から前記非活字オブジェクトのうち前記重畳なしオブジェクトを除去した画像に対して活字用の文字認識処理を行って活字の文字列を取得し、前記非活字オブジェクトに対して手書き文字用の文字認識処理を行って手書きの文字列を取得するする、
ことを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。 - 前記非活字オブジェクトは、手書き文字、手書きマーク、押印、および汚れのうちのいずれかである、
ことを特徴とする請求項4に記載の画像処理装置。 - 手書きマーク、押印、および汚れのいずれかの前記非活字オブジェクトは、前記重畳ありオブジェクトと前記重畳なしオブジェクトとに区別して検出される、
ことを特徴とする請求項5に記載の画像処理装置。 - 前記抽出手段は、前記文字認識手段によって取得された文字列の中に前記キー文字列と一致する文字列が複数ある場合、前記文字認識手段によって取得された文字列のそれぞれに対して予め定められた抽出条件に基づき重み付けし、当該重み付け結果に基づき複数の前記キー文字列と一致する文字列から前記特定の情報を抽出するために用いる文字列を1つ選択する、
ことを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。 - 前記抽出手段は、前記キー文字列の中に、前記キー文字列と一致する文字列を包含する他のキー文字列がある場合、当該キー文字列と一致する文字列を前記重み付けに用いない、
ことを特徴とする請求項7に記載の画像処理装置。 - 前記キー文字列は、前記重み付けにおいて正の重みを付加する文字列を定義する抽出用のキー文字列と負の重みを付加する文字列を定義する除外用のキー文字列とを含み、
前記抽出手段は、前記文字認識手段によって取得された文字列のうち前記抽出用のキー文字列と一致する文字列の中に、当該抽出用のキー文字列と一致する文字列を包含する前記除外用のキー文字列がある場合、当該抽出用のキー文字列と一致する文字列を前記重み付けに用いない、
ことを特徴とする請求項8に記載の画像処理装置。 - 前記キー文字列は、前記重み付けにおいて正の重みを付加する文字列を定義する抽出用のキー文字列と負の重みを付加する文字列を定義する除外用のキー文字列とを含み、
前記抽出手段は、前記文字認識手段によって取得された文字列のうち前記除外用のキー文字列と一致する文字列の中に、当該除外用のキー文字列と一致する文字列を包含する前記抽出用のキー文字列がある場合、当該除外用のキー文字列と一致する文字列を前記重み付けに用いない、
ことを特徴とする請求項8に記載の画像処理装置。 - 原稿を読み取って得られた読み取り画像を取得する取得ステップと、
前記読み取り画像における非活字オブジェクトを検出する検出ステップと、
前記読み取り画像中の前記原稿に含まれる文字に対応する文字ブロックに対して文字認識処理を行って文字列を取得する文字認識ステップと、
前記文字認識ステップによって取得された文字列のうち、予め定められたキー文字列と一致する文字列に基づき、前記読み取り画像から特定の情報を抽出する抽出ステップと、
を有し、
前記抽出ステップは、前記非活字オブジェクトと前記キー文字列と一致する文字列との位置関係が予め定められた条件を満たさない場合、当該キー文字列と一致する文字列に基づき前記特定の情報を抽出しない、
ことを特徴とする画像処理方法。 - コンピュータを請求項1乃至10のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043114A JP2023137094A (ja) | 2022-03-17 | 2022-03-17 | 画像処理装置、画像処理方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043114A JP2023137094A (ja) | 2022-03-17 | 2022-03-17 | 画像処理装置、画像処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023137094A true JP2023137094A (ja) | 2023-09-29 |
Family
ID=88145149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022043114A Pending JP2023137094A (ja) | 2022-03-17 | 2022-03-17 | 画像処理装置、画像処理方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023137094A (ja) |
-
2022
- 2022-03-17 JP JP2022043114A patent/JP2023137094A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8126270B2 (en) | Image processing apparatus and image processing method for performing region segmentation processing | |
JP5042562B2 (ja) | 画像処理装置、手書き情報認識方法、手書き情報認識プログラム | |
US11574489B2 (en) | Image processing system, image processing method, and storage medium | |
JP7479925B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
CN114299528B (zh) | 一种针对扫描文档的信息提取和结构化方法 | |
US20150304521A1 (en) | Dynamically generating table of contents for printable or scanned content | |
US11341733B2 (en) | Method and system for training and using a neural network for image-processing | |
US9305245B2 (en) | Methods and systems for evaluating handwritten documents | |
US11418658B2 (en) | Image processing apparatus, image processing system, image processing method, and storage medium | |
JP2022074466A (ja) | 画像処理装置および画像形成装置 | |
EP3776332A2 (en) | An image processing system and an image processing method | |
US20150261735A1 (en) | Document processing system, document processing apparatus, and document processing method | |
US20240161451A1 (en) | Information processing system, processing method, and recording medium | |
JP2023137094A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP7379063B2 (ja) | 画像処理システム、画像処理方法、及びプログラム | |
JP6281739B2 (ja) | 処理装置及びプログラム | |
JP5988149B2 (ja) | 項目記入装置、項目記入システム及びプログラム | |
WO2022097408A1 (ja) | 画像処理装置及び画像形成装置 | |
JP2021131784A (ja) | 画像処理システム、プログラム、画像処理方法 | |
US20230029990A1 (en) | Image processing system and image processing method | |
US20220012481A1 (en) | Information processing apparatus and non-transitory computer readable medium storing program | |
JP2023014964A (ja) | 画像処理システム及び画像処理方法 | |
JP2023040886A (ja) | 画像処理装置、方法及びプログラム | |
JP2023046687A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP2021033577A (ja) | 画像処理システムと画像処理方法、及びプログラム |