IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特開2024-163530情報処理装置、情報処理システム、情報処理方法、及びプログラム
<>
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図1
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図2
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図3
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図4
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図5
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図6
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図7
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図8
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図9
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図10
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図11
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図12
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図13
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図14
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図15
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図16
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図17
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図18
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図19
  • 特開-情報処理装置、情報処理システム、情報処理方法、及びプログラム 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163530
(43)【公開日】2024-11-22
(54)【発明の名称】情報処理装置、情報処理システム、情報処理方法、及びプログラム
(51)【国際特許分類】
   G06F 40/295 20200101AFI20241115BHJP
   G06V 30/412 20220101ALI20241115BHJP
   G06V 30/12 20220101ALI20241115BHJP
   G06F 40/56 20200101ALI20241115BHJP
【FI】
G06F40/295
G06V30/412
G06V30/12 Z
G06F40/56
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023079238
(22)【出願日】2023-05-12
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】廣花 智遥
【テーマコード(参考)】
5B029
5B064
【Fターム(参考)】
5B029AA01
5B029BB02
5B029CC26
5B064AA01
5B064AB02
5B064AB13
5B064BA01
5B064DA27
5B064EA27
(57)【要約】
【課題】擬似文書データを用いた学習済みモデルの学習を効率的に行うこと。
【解決手段】学習装置において、学習済みモデルが項目値抽出に失敗した内容を検知し、学習済みモデルが項目値抽出に失敗した要因を分析する。学習装置は、分析結果を、学習データセットを生成するためのデータベースに反映させ、分析結果が反映されたデータベースに基づき学習データセットを生成する。学習装置は、生成した学習データセットを用いて、学習済みモデルを複製した複製モデルの学習を行い、学習済みモデル候補を生成する。学習装置は、生成した学習済みモデル候補を用いて抽出対象候補となる文字列データを抽出し、全ての抽出対象項目について確定された抽出対象の文字列データと同一である場合、学習済みモデル候補で学習済みモデルを更新する。
【選択図】 図6
【特許請求の範囲】
【請求項1】
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成する生成手段と、
前記生成手段により生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う学習手段と、
を備え、
前記生成手段は、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理装置。
【請求項2】
前記学習手段は、前記学習モデルの複製モデルに対して前記再学習を行い、前記学習データに含まれない前記擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記生成手段は、前記学習データに含まれない擬似文書データ又は前記入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に失敗した場合、前記固有表現抽出に失敗した前記入力された文書データに基づき別の擬似文書データを生成し、
前記学習手段は、前記別の擬似文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記学習手段は、前記学習モデルによる固有表現抽出に失敗した入力された文書データ及び過去の入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記学習手段は、前記学習モデルによる固有表現抽出に失敗した入力された文書データ及び前記学習データに含まれない擬似文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記学習手段は、前記学習データに含まれない擬似文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記学習モデルは、対象となる文書画像データに含まれる複数の文字列の中から、予め定められた項目に対応する項目値の候補となる文字列データを抽出する学習モデルである、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記生成手段は、抽出対象の項目に対応する項目値が未抽出又は誤抽出であった場合、当該抽出対象の項目の出現確率を高める、
ことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記生成手段は、抽出対象の項目に対応する項目値が未抽出又は誤抽出で、かつ、当該抽出対象の項目の出現確率が登録されていない場合、当該抽出対象の項目名と当該抽出対象の項目の出現確率とを関連付けて登録する、
ことを特徴とする請求項8に記載の情報処理装置。
【請求項10】
学習モデルを用いて入力された文書データから固有表現抽出を行う情報処理サーバと、
前記学習モデルの学習を行う学習装置と、
を備え、
前記学習装置は、
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成する生成手段と、
前記生成手段により生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う学習手段と、
を含み、
前記生成手段は、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理システム。
【請求項11】
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成するステップと、
前記生成するステップにより生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行うステップと、
を有し、
前記生成するステップでは、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理方法。
【請求項12】
コンピュータを請求項1乃至9のいずれか1項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文書データに対して固有表現抽出を行うための情報処理技術に関する。
【背景技術】
【0002】
従来、準定型帳票(例:請求書、見積書、発注書)と呼ばれる、発行元の会社毎に異なるレイアウトで作成された文書画像から、所定の抽出対象項目(例:文書番号、会社名、日付、金額、タイトル)に対応する項目値の文字列を抽出する技術がある。この技術は、一般に、文字認識(OCR:Optical Character Recognition)と固有表現抽出(NER:Named Entity Recognition)で実現される。すなわち、まず文書画像に対して文字認識(OCR)した結果の文字列を入力し、文字列の埋め込みベクトルで表現した特徴量を元に形態素解析を行う。そして、その結果に対して固有表現抽出(NER)を行って抽出対象の項目値に対応した文字列に所定のラベル(例:会社名)を付与して出力することで実現される。固有表現抽出のタスクは、一般的に機械学習を用いて実現されるため、予め文字列にラベルを付与した大量の学習データが必要となる。
【0003】
特許文献1では、帳票を認識する精度を向上させるために、帳票の認識結果に基づき新規帳票や亜種帳票の種別を登録し、登録された帳票の種別を学習した学習モデルを生成している。学習モデルに学習させる文書画像データは、実際の帳票を読み取って得られた画像データに対してデータオーグメンテーションによって生成した複数パターンの擬似文書画像データを用いている。これにより、学習モデルは読み取った帳票だけではなくその類似帳票も学習することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2021-131659号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1の技術では、学習にデータオーグメンテーションにより生成した擬似文書画像データを用いた場合、実際の帳票を読み取って得られた文書画像データを用いた場合に比べ、認識精度の改善度が低く、より多くの学習データと学習時間を要する。
【課題を解決するための手段】
【0006】
本発明は、情報処理装置であって、入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成する生成手段と、前記生成手段により生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う学習手段と、を備え、前記生成手段は、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、ことを特徴とする。
【発明の効果】
【0007】
本発明によれば、固有表現抽出を行う学習済みモデルの学習を、擬似文書データを用いて効率的に行うことができる。
【図面の簡単な説明】
【0008】
図1】情報処理システムの構成を示す図である。
図2】情報処理装置、学習装置、情報処理サーバの構成を示す図である。
図3】実施形態1における情報処理システムの利用シーケンスを示す図である。
図4】項目値抽出モデルを生成する処理を示すフローチャートである。
図5】実施形態1における項目値候補文字列を推定し、その修正をユーザから受け付ける処理を示すフローチャートである。
図6】実施形態1における項目値抽出モデルにユーザの修正内容を反映する処理を示すフローチャートである。
図7】項目値抽出に失敗した際の失敗内容を検知する処理を示すフローチャートである。
図8】項目値抽出に失敗した要因を分析する処理を示すフローチャートである。
図9】文書画像の生成に際し、要因の分析結果を取り込むフローチャートである。
図10】学習データセットを生成する流れの一例を示すフローチャートである。
図11】ユーザが抽出結果を修正する画面の一例を示す図である。
図12】生成した文書画像の具体例を示す図である。
図13】抽出対象及び対象外の項目名を保持したデータベースの一例を示す図である。
図14】レイアウト要因と分析された場合の、対応パターンの具体例を示す図である。
図15】非レイアウト要因分析された場合の、対応パターンの具体例を示す図である。
図16】レイアウトの一致率を算出する方法について説明する図である。
図17】項目値抽出モデルへの修正内容の反映結果を通知する画面の一例を示す図である。
図18】実施形態2における情報処理システムの利用シーケンスを示す図である。
図19】実施形態2における項目値候補文字列を推定し、その修正をユーザから受け付ける処理を示すフローチャートである。
図20】実施形態2における、項目値抽出モデルにユーザの修正内容を反映する処理を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明を実施するための形態について図面を用いて説明する。尚、本実施形態に記載された構成要素は例示であって、本発明の範囲を限定する趣旨のものではない。
【0010】
[実施形態1]
<情報処理システム>
図1は、情報処理システムの構成例を示した図である。図1に示すように、情報処理システム100は、例えば、情報処理装置101、学習装置102、情報処理サーバ103で構成され、ネットワーク104を介して互いに接続される。情報処理システム100において、情報処理装置101、学習装置102、情報処理サーバ103は、ネットワーク104に対して単一接続ではなく、複数接続された構成であっても良い。例えば、情報処理サーバ103は、高速演算リソースを有する第1のサーバ装置と、大容量ストレージを有する第2のサーバ装置で構成され、ネットワーク104を介して互いに接続された構成であっても良い。
【0011】
情報処理装置101は、プリント、スキャン、FAXのように複数の機能を備えたMFP(Multi-Function Peripheral)などで実現されるものであって、画像取得部としても機能する。情報処理装置101は、例えば、画像取得部によって、紙などの記憶媒体に印字された原稿111を光学的に読み取り、所定のスキャン画像処理を行うことで生成した文書画像データ113を情報処理サーバ103に送信することができる。また、情報処理装置101は、例えば、画像取得部によって、不図示のFAX送信機から送信されたFAXデータ112を受信し、所定のFAX画像処理を行うことで生成した文書画像データ113を情報処理サーバ103に送信することができる。尚、情報処理装置101は、前述したスキャンやFAXの機能を備えたMFP以外に、PC(Personal Computer)などで実現される構成であっても良い。具体的には、例えば、情報処理装置101としてのPC上で動作する文書作成アプリケーションを用いて生成された、PDFやJPEG等の文書画像データ113を、情報処理サーバ103に送信しても良い。
【0012】
学習装置102は、エンジニアによって提供された複数の文書画像のサンプル114を元に、文書画像に含まれる文字列群のうちの、抽出対象の文字列に正解ラベルが付与された文書データを学習用文書データとして生成する学習データ生成部として機能する。更に、学習装置102は、学習データ生成部で生成した学習用文書データを学習データとして利用し、学習用文書データに含まれる抽出対象の文字列を推定する学習済みモデル115の学習を行う学習部と機能する。
【0013】
情報処理サーバ103は、情報処理装置101から受信した文書画像データ113に含まれる複数の文字列を取得した上で、予め設定された抽出対象の文字列データ116を抽出する情報処理部、及び、抽出した結果を記憶する記憶部として機能する。まず、情報処理サーバ103の情報処理部は、文書画像データ113に対して、OCR処理を実行し、OCR処理によって得られた文字認識結果としての複数の文字列データを取得する。更に、情報処理サーバ103の情報処理部は、学習済みモデル115を利用し、文書画像データ113から得られた複数の文字列データの中から、予め設定された抽出対象の文字列データ116を分類して抽出する。ここで、抽出対象の文字列データ116は、一般に固有表現と呼ばれる、国・言語毎に多様な表現を持つ人名や地名などの固有名詞や、日付表現、金額表現などを扱うものである。抽出対象項目としては、例えば会社名、発行日、合計金額、文書名等がある。
【0014】
ネットワーク104は、LANやWAN等で実現されるものであって、情報処理装置101、学習装置102、情報処理サーバ103の間を互いに接続して、装置間でデータを送受信するための通信部である。
【0015】
<装置構成>
図2は、図1の情報処理システム100を実現するための情報処理装置101、学習装置102、画像処理サーバ103のハードウェア構成例を示した図である。
【0016】
図2(a)は、情報処理装置101のハードウェア構成例を示す図である。図2(a)に示すように、情報処理装置101は、CPU201、ROM202、RAM204、プリンタデバイス206、スキャナデバイス206、ストレージ208、外部インタフェース211等で構成され、データパス203を介して互いに接続される。
【0017】
CPU201は、情報処理装置101における動作全体を制御するための制御部である。CPU201は、ROM202に記憶された起動プログラムを実行することで、情報処理装置101のシステムを起動し、ストレージ208に記憶された制御プログラムを実行することで、情報処理装置101のプリント、スキャン、FAX等の機能を実現する。
【0018】
ROM202は、不揮発性メモリで実現されるものであって、情報処理装置101を起動する起動プログラムを格納するための記憶部である。RAM204は、揮発性メモリで実現されるものであって、CPU201が制御プログラムを実行する際のワークメモリとして使用される記憶部である。ストレージ205は、HDD(Hard Disk Drive)等で実現されるものであって、前述の制御プログラムや文書画像を記憶するための記憶部である。データバス203は、情報処理装置101を構成するデバイス間で相互にデータを送受信するための通信部である。
【0019】
プリンタデバイス206は、画像出力デバイスであって、情報処理装置101の内部の文書画像を紙などの記憶媒体に印字して印刷出力するための処理部である。スキャナデバイス207は、画像入力デバイスであって、文字や図表等が印字された紙などの記憶媒体を光学的に読み取って文書画像として取得するための処理部である。原稿搬送デバイス208は、ADF(Auto Document Feeder)等で実現されるものであって、原稿台に載置された原稿を検知し、検知した原稿を1枚ずつスキャナデバイス207に搬送するための処理部である。
【0020】
入力デバイス209は、タッチパネルやハードキー等で実現されるものであって、ユーザからの情報処理装置101に対する操作入力を行うための装置である。表示デバイス210は、液晶ディスプレイ等で実現されるものであって、情報処理装置101の設定画面をユーザに対して表示出力するための装置である。外部インタフェース211は、情報処理装置101とネットワーク104との間を接続するものであって、不図示のFAX送信機からFAXデータを受信したり、情報処理サーバ103に対して文書画像を送信したりするためのインタフェース部である。
【0021】
図2(b)は、学習装置102の構成を示す図である。図2(b)に示すように、学習装置102は、CPU231、ROM232、RAM234、ストレージ235、入力デバイス236、表示デバイス237、外部インタフェース238、GPU232で構成され、データバス233を介して互いに接続される。
【0022】
CPU231は、学習装置102における動作全体を制御するための制御部である。CPU231は、ROM232に記憶されたブートプログラムを実行することで、学習装置102のシステムを起動し、ストレージ208に記憶された学習プログラムを実行することで、文字列データから固有表現を抽出する学習済みモデル115を生成する。GPU232は、画像処理プロセッサで構成された演算部である。GPU232は、例えば、CPU231から与えられた制御コマンドに従って、与えられた文書画像に含まれる文字列データを元に、学習済みモデル115を生成するための演算を実行する。
【0023】
ROM233は、不揮発性メモリで実現されるものであって、学習装置102を起動するブートプログラムを格納するための記憶部である。RAM234は、揮発性メモリで実現されるものであって、CPU231が学習プログラムを実行する際のワークメモリとして使用される記憶部である。ストレージ235は、HDD(Hard Disk Drive)等で実現されるものであって、エンジニアからの学習装置102に対する操作入力を受け付けるための処理部である。データバス233は、学習装置102を構成するデバイス間で相互にデータを送受信するための通信部である。
【0024】
入力デバイス236は、マウスやキーボード等で実現されるものであって、エンジニアからの学習装置102に対する操作入力を行うための装置である。表示デバイス237は、液晶ディスプレイ等で実現されるものであって、学習装置102の設定画面をエンジニアに対して表示出力するための装置である。外部インタフェース238は、学習装置102と、ネットワーク104との間を接続するものであって、不図示のPC等から文書画像114を受信したり、情報処理サーバ103に対して学習済みモデル115を送信したりするためのインタフェース部である。
【0025】
図2(c)は、情報処理サーバ103の構成を示す図である。図2(c)に示すように、情報処理サーバ103は、CPU261、ROM262、RAM264、ストレージ265、入力デバイス266、表示デバイス267、外部インタフェース268で構成され、データバス263を介して互いに接続される。
【0026】
CPU261は、情報処理サーバ103における動作全体を制御するための制御部である。CPU261は、ROM262に記憶されたブートプログラムを実行することで、情報処理サーバ103のシステムを起動し、ストレージ265に記憶された情報処理プログラムを実行することで、文字認識や情報抽出などの情報処理を実行する。
【0027】
ROM262は、不揮発性メモリで実現されるものであって、情報処理サーバ103を起動するブートプログラムを格納するための記憶部である。RAM264は、揮発性メモリで実現されるものであって、CPU261が情報処理プログラムを実行する際のワークメモリとして使用される記憶部である。ストレージ265は、HDD(Hard Disk Drive)等で実現されるものであって、前述の情報処理プログラム、文書画像データ113、学習済みモデル115、文字列データ116等を記憶するための記憶部である。データバス263は、情報処理サーバ103を構成するデバイス間で相互にデータを送受信するための通信部である。
【0028】
入力デバイス266は、マウスやキーボード等で実現されるものであって、情報処理サーバ103に対して操作入力を行うための装置である。表示デバイス267は、液晶ディスプレイ等で実現されるものであって、情報処理サーバ103による項目値抽出結果を表示出力するための装置である。外部インタフェース268は、情報処理サーバ103と、ネットワーク104との間を接続するものであり、学習装置102から学習済みモデル115や、情報処理装置101から文書画像データ113を受信するためのインタフェース部である。
【0029】
<利用シーケンス>
図3は、図1の情報処理システム100の利用シーケンスを示す図である。
【0030】
図3(a)は、学習装置102が、学習済みモデル115を生成する流れを説明する図である。尚、図3(a)の詳細な処理フローは図4を用いて後述する。
【0031】
S301において、学習装置102は、学習済みモデル115を生成するための複数の文書画像サンプル114を取得する。尚、文書画像サンプル114は、情報処理システム100を開発するエンジニア等によって入力されても良いし、文書画像サンプル114は、情報処理システム100を実行する都度、エンジニアにより手動で入力されたものを取得してもよい。または、情報処理サーバ103内のストレージ265等の所定の記憶装置から取得してもよく、文書画像サンプル114を自動収集する第2の情報処理システムから取得してもよい。
【0032】
S302において、学習装置102は、S301で取得した文書画像サンプル114に対してブロックセレクション(BS)処理、文字認識(OCR)処理、及び、固有表現の文字列に対する固有表現抽出(NER)処理を行う。そして、学習装置102は、抽出対象の文字列データに対応する項目名ラベルを正解ラベルとして付与する。ここで、正解ラベルの付与は、エンジニアが手動で行ってもよいし、文書データを予め学習した学習済みの項目値抽出を行う学習済みモデルを用いて自動化しても良い。そして、学習装置102は、文書画像毎に固有表現の文字列データに対して正解ラベルが付与された学習データセットを生成する。
【0033】
S303において、学習装置102は、S302で生成した学習データセットを用いて学習させた学習済みモデルを生成する。
【0034】
S304において、学習装置102は、情報処理サーバ103に対してS303で生成した学習済みモデルを送信し、情報処理サーバ103は、受信した学習済みモデルを情報処理サーバ103内のストレージ265に保存する。
【0035】
図3(b)は、情報処理サーバ103が行う、次の2つの処理を説明する図である。1つ目の処理は、ユーザからの要求に対して、情報処理サーバ103が、文書画像データ113から得られた複数の文字列データの中から、抽出対象の候補となる文字列データを抽出して出力する処理である。2つ目の処理は、情報処理サーバ103が、抽出対象候補となる文字列データと、その正解データとなるユーザからの操作とに基づき確定した抽出対象の文字列データとを学習装置102へ送信する処理である。尚、図3(b)の詳細なフローは、図5を用いて後述する。
【0036】
S305において、情報処理システム100を利用するユーザは、原稿111から抽出対象の文字列データを取得するために、情報処理装置101に原稿111を載置して原稿111のスキャン実行を指示する。
【0037】
S306において、情報処理装置101は、原稿111をスキャンして取得した文書画像データ113を、情報処理サーバ103に対して送信する。
【0038】
S307において、情報処理サーバ103は、S306で送信された文書画像データ113に対してOCR処理を行い、文書画像データ113に含まれる文字列データを取得する。そして、情報処理サーバ103は、S303で生成した学習済みモデル115を用いて、抽出対象候補となる文字列データを抽出する。
【0039】
S308において、情報処理サーバ103は、S307で抽出した抽出対象候補の文字列データを情報処理装置101に出力し、情報処理装置101は情報処理サーバ103から出力された抽出対象候補の文字列データを表示デバイス210に表示させる。
【0040】
S309において、情報処理システム100を利用するユーザは、S308で表示された抽出対象候補の文字列データが、抽出対象の文字列データと同一か否か、すなわち項目値抽出に成功したか否かを確認する。S308で表示された抽出対象候補の文字列データが抽出対象の文字列データと異なる場合、ユーザは、情報処理装置101の入力デバイ209を用いてS308で表示された抽出対象候補の文字列データを修正し、抽出対象の文字列データを確定させる。S308で表示された文字列データが抽出対象の文字列データと同一の場合、ユーザは、情報処理装置101の入力デバイス209を用いてS308で表示された抽出対象候補の文字列データを抽出対象の文字列データとして確定させる。そして、情報処理装置101は、確定された抽出対象の文字列データを情報処理サーバ103に対して送信する。
【0041】
ここで図11を用いて、S308の文字列データの表示とS309の文字列データの確認・修正についてより具体的に説明する。図11は、情報処理システム100を利用するユーザが、S308で出力された文字列データを確認・修正するための画面の一例を示す図である。表示デバイス210の確認画面1100には、プレビュー画像表示画面1101と、結果表示画面1102、「保存」ボタン1132が含まれる。結果表示画面1102には、発行日1121、発行先会社名1123、発行元担当者名1128等の、S308で情報処理装置101に出力された文字列データを表示する。図11に示す例では、プレビュー画像表示画面1101及び結果表示画面1102において、文字列抽出結果(1121、1123、1128)が抽出された画像領域を発行日1111、発行先会社名1113、発行元担当者名1118のように強調表示している。強調表示は、プレビュー画像表示画面1101及び結果表示画面1102のどちらか片方のみでも良いし、強調表示をいずれにおいても実施せずとも良い。
【0042】
ここで、「発行元担当者名」の抽出対象を画像領域1117に修正する場合を考える。ユーザは、入力デバイス209でポインタ1131を操作することによって、文字列抽出結果1128を修正元として選択し、画像領域1117を修正先として選択する。尚、文字列抽出結果1128を修正元として選択する代わりに、文字列抽出結果1118を修正元として選択してもよい。また、修正元及び修正先の選択の前に、「修正」ボタンの押下操作を要するようにしてもよい。修正先の画像領域1117が選択された後、情報処理装置101は、画像領域1117に対して文字認識処理を行って得られた「Dana Morgan」を文字列抽出結果1128として取得する。ユーザは、「保存」ボタン1132を押下することで、文字列抽出結果1128の修正を確定させる。尚、修正を確定させる操作は、例えば、修正先の画像領域1117をポインタ1131で選択する操作と兼ねてもよく、「保存」ボタン1132の押下に限らない。
【0043】
S310において、情報処理サーバ103は、全ての抽出対象項目について、S307で抽出した文字列データと、S309で送信された抽出対象の文字列データが同一か否かを確認する。1つ以上の抽出対象項目で文字列データが異なる場合、情報処理サーバ103内のストレージ265に保存された学習済みモデルを更新する必要があると判定し、S311に移行する。全ての抽出対象項目で文字列が同一の場合、情報処理サーバ103内のストレージ265に保存された学習済みモデルを更新する必要がないため、情報処理サーバ103は、処理を終了する。
【0044】
S311において、情報処理サーバ103は、S306で送信された文書画像データ113と、S307で抽出した抽出対象候補となる文字列データと、S309で送信された確定された抽出対象の文字列データとを学習装置102に対して送信する。図3(c)は、学習装置102が、抽出対象候補の文字列データに対するユーザによる修正内容に基づき、学習済みモデルを学習させる処理を説明する図である。尚、図3(c)の詳細なフローは、図6を用いて後述する。
【0045】
S312において、学習装置102は、S311で送信された抽出対象候補となる文字列データ、及び、確定された抽出対象文字列データから、学習済みモデル115が項目値抽出に失敗した内容を検知する。ここで、「項目値抽出に失敗した」とは、抽出対象項目のうちの1つでも、抽出対象候補となる文字列データと、確定された抽出対象の文字列データとが一致しなかった場合を指す。また、「失敗した内容」とは、どの項目が項目値抽出に失敗し、正解となる項目値は何だったのかを示す情報である。尚、本処理の詳細は、図7を用いて後述する。
【0046】
S313において、学習装置102は、S312で検知した学習済みモデル115が項目値抽出に失敗した内容に基づき、項目値抽出に失敗した要因を分析して特定する。尚、本処理の詳細は、図8を用いて後述する。
【0047】
S314において、学習装置102は、S313で特定した項目値抽出に失敗した要因の分析結果から、項目値抽出に失敗した要因を反映したデータベースに基づき擬似的な文書画像データである文書画像サンプルを生成する。尚、本処理の詳細は、図9及び図10を用いて後述する。
【0048】
S315において、学習装置102は、S314で生成した擬似的な文書画像サンプルを用いて、文書画像内の文字列データ及び抽出対象の項目値を取得し、学習データセットを生成する。尚、本処理の詳細は、図10を用いて後述する。
【0049】
S316において、学習装置102は、学習済みモデル115を複製した複製モデルにS315で生成した学習データセットを用いて再学習させることで、学習済みモデル候補を生成する。
【0050】
S317において、学習装置102は、S311で送信された文書画像データ113に含まれる文字列データを取得し、S316で生成した学習済みモデル候補を用いて、抽出対象候補の文字列データを抽出する。学習装置102は、S311で送信された確定された抽出対象の文字列データに基づき、S316で生成した学習済みモデル候補による抽出対象候補の文字列データが、確定された抽出対象の文字列データと同一か否かを確認する。学習装置102は、学習済みモデル候補により抽出された抽出対象候補の文字列データが確定された抽出対象の文字列データと同一である場合、S318に移行し、それらが異なる場合、S314に戻る。
【0051】
S318において、学習装置102は、情報処理サーバ103に対して、S316で生成した学習済みモデル候補を送信し、情報処理サーバ103内のストレージ265に学習済みモデル115として保存し、学習済みモデル115を更新する。
【0052】
S319において、情報処理サーバ103は、情報処理サーバ103内のストレージ265に学習済みモデル115が更新されたことを情報処理システム100に通知し、情報処理システム100が表示デバイス210等を用いてユーザに対して通知する。
【0053】
<項目値抽出を行う学習済みモデルの生成処理>
図4は、図3(a)において、学習装置102が、学習済みモデル115を生成する流れを説明するフローチャートである。尚、図4で示す各ステップの実行プログラムは、学習装置102のROM232、RAM234、ストレージ235のいずれかに記憶され、学習装置102のCPU231、GPU232のいずれかによって実行される。
【0054】
S401において、CPU231は、図3に示すS301で取得され、RAM234又はストレージ235に格納された複数の文書画像サンプル114を取得する。具体的には、例えば、請求書、見積書、発注書などの準定型帳票と呼ばれる、発行元の会社毎に異なるレイアウトで作成された文書画像サンプル114を取得する。
【0055】
S402において、CPU231は、S401で読み出した文書画像サンプル114に対して、BS処理及びOCR処理を実行し、文書画像サンプル114を構成する文字認識結果の文字列データ群を取得する。ここで、取得する文字列データ群に含まれる各文字列データは、例えば、準定型帳票の文書画像を構成するオブジェクト単位を識別するBS等の技術を用いて、文書画像内で間隔を空けたり罫線で区切られたりして配置された単語区切りの単位で扱えばよい。また、取得する文字列データ群に含まれる各文字列データは、例えば、非定型帳票の文書画像を構成する文章に対して形態素解析の手法を用いて分割された単語区切りの単位で扱うようにしても良い。
【0056】
S403において、CPU231は、S402で取得した文字列データ群に含まれる抽出対象の文字列データに対して、抽出対象項目ラベルを正解ラベルとして付与する。具体的には、例えば、S402で取得した文字列データ群に、文書の発行日を示す「2022年11月24日」を表す文字列データが含まれている場合を考える。この場合、CPU231は、抽出対象である「2022年11月24日」を表す文字列データに対し、抽出対象項目名である「発行日」というラベルを付与する。
【0057】
S404において、CPU231は、S402で取得した文字列データ群とS403で付与した抽出対象項目ラベルを用いて、機械学習による項目値抽出を行う学習済みモデルの生成を行う。学習済みモデルへの入力は、公知の技術である、Word2Vec、fastText、BERT、XLNet、ALBERT等を用いて変換した文字列データの特徴ベクトル、及び、文字列データの文書画像サンプル114上の位置座標等を用いれば良い。具体的には、例えば、一般的な文章(例:ウィキペディアの記事全文)を予め学習済みのBERTの言語モデルを用いることで、単一の文字列データを768次元の数値で表現された特徴ベクトルに変換できる。また、学習済みモデルの出力は、S403で付与した抽出対象項目のラベルを出力できるように学習し、学習済みモデルによる推論結果として、入力された文字列データに対して予め定めたいずれかの抽出対象項目ラベルを出力するものである。ここで、学習済みモデルには、機械学習のアルゴリズムとして一般に知られる、ロジスティック回帰、決定木、ランダムフォレスト、サポートベクタマシン、ニューラルネットワーク等を用いればよい。具体的には、学習済みモデルは、例えばBERTの言語モデルで出力した特徴ベクトルを入力したニューラルネットワークの全結合層の出力値に従い、予め定めたいずれかの抽出対象項目ラベルの推論結果を出力できればよい。
【0058】
S405において、CPU231は、S404で生成した学習済みモデルを、情報処理サーバ103内のストレージ265に保存する。
【0059】
<抽出対象候補となる文字列データの抽出・修正処理>
図5は、図3(b)の工程において、情報処理サーバ103が、学習済みモデル115を用いて文書画像データ113から抽出対象候補となる文字列データを推定し、抽出対象の文字列データを確定させる流れを説明するフローチャートの一例である。尚、図5で示す各ステップの実行プログラムは、情報処理サーバ103のROM262、RAM264、ストレージ265のいずれかに記憶され、情報処理サーバ103のCPU261によって実行される。
【0060】
S501において、CPU261は、図3に示すS304及び図4に示すS405でストレージ265に保存された学習済みモデル115を取得する。
【0061】
S502において、CPU261は、図11に示すプレビュー画像表示画面1101に表示されたような、図3に示すS306で情報処理装置101から送信された文書画像データ113を取得する。
【0062】
S503において、CPU261は、S502で読み出した文書画像データ113に対して、BS処理及びOCR処理を実行し、文書画像データ113に含まれる文字列データ群を取得する。
【0063】
S504において、CPU261は、S501で読み出した学習済みモデル115を用いて、S503で取得した文書画像データ113に含まれる文字列データ群の中から、抽出対象候補となる文字列データを抽出する。尚、抽出対象候補となる文字列データを抽出する技術は、一般に、NER(Named Entity Recognition)と呼ばれる分類タスクとして知られるものであって、画像や自然言語の特徴量を用いた機械学習のアルゴリズムによって実現できる。
【0064】
S505において、CPU261は、S504で抽出した抽出対象候補となる文字列データを情報処理装置101に送信し、図11に示す画面を情報処理装置101の表示デバイス210に表示させることで抽出対象候補となる文字列データをユーザに提示する。
【0065】
S506において、CPU261は、ユーザの図11に示す画面に対する操作によって確定された抽出対象の文字列データを取得する。
【0066】
S507において、CPU261は、全ての抽出対象項目について、S506で取得した抽出対象の文字列データが、S504で抽出した抽出対象候補となる文字列データと同一か否かを確認する。1つ以上の対象項目で異なる場合(S507でNO)、情報処理サーバ103内のストレージ265に保存された学習済みモデル115を更新する必要があるため、CPU261は、S508に移行する。全ての抽出対象項目で同一の場合(S507でYES)、情報処理サーバ103内のストレージ265に保存された学習済みモデル115を更新する必要がないため、CPU261は処理を終了する。
【0067】
S508において、CPU261は、図11に示す「保存」ボタン1132の押下を検知後、S502で取得した文書画像データ113と、S504で抽出した抽出対象候補となる文字列データと、S506で確定された抽出対象の文字列データとを保存する。保存先は、情報処理サーバ103内のストレージ265とする。
【0068】
<学習済みモデルの更新処理>
図6は、学習済みモデルにユーザの修正内容を反映する処理を示すフローチャートである。尚、図6で示す各ステップの実行プログラムは、学習装置102のROM232、RAM234、ストレージ235のいずれかに記憶され、学習装置102のCPU231、GPU232のいずれかによって実行される。
【0069】
S601において、CPU231は、学習済みモデル115が項目値抽出に失敗した内容を検知する。本処理の詳細については、図7にて後述する。
【0070】
S602において、CPU231は、S601で検知した内容をもとに、学習済みモデル115が項目値抽出に失敗した要因を分析する。本処理の詳細については、図8にて後述する。
【0071】
S603において、CPU231は、S602で行なった要因の分析結果を、学習データセットを生成するためのデータベースに反映させる。本処理の詳細については、図9にて後述する。
【0072】
S604において、CPU231は、S603で学習済みモデル115が項目値抽出に失敗した要因の分析結果を反映したデータベースに基づき、学習データセットを生成する。本処理の詳細については、図10にて後述する。
【0073】
S605において、CPU231は、S604で生成した学習データセットを用いて、学習済みモデル115を複製した複製モデルに再学習させることにより、学習済みモデル候補を生成する。学習済みモデル候補を生成する方法は、学習済みモデル115の複製モデルを用いること以外、ほぼ図4を用いて先述した通りであり、S401で取得している文書画像サンプル114を、S604で生成した学習データセットに読み替えればよい。
【0074】
S606において、CPU231は、情報処理サーバ103から、ストレージ265に保存された文書画像データ113を取得する。
【0075】
S607において、CPU231は、S606で取得した文書画像データ113から、文書画像データ113に含まれる文字列データ群を取得する。文字列データ群を取得する方法については、図5に示すS503に関して前述した通りのため、割愛する。
【0076】
S608において、CPU231は、S605で生成した学習済みモデル候補を用いて、S607で取得した文字列データ群の中から、抽出対象候補となる文字列データを抽出する。尚、抽出対象候補となる文字列データを抽出する方法については、図5に示すS504に関して前述した通りのため、割愛する。
【0077】
S609において、CPU231は、全ての抽出対象項目について、S608で取得した文字列データが、S311において情報処理サーバ103から送信された情報に含まれる確定された抽出対象の文字列データと同一か否かを確認する。CPU231は、1つ以上の対象項目で異なる場合(S609でNO)、S610に移行し、全ての抽出対象項目で同一の場合(S609でYES)、S612に移行する。尚、確認方法については、図5に示すS507と同様のため、説明を割愛する。
【0078】
S610において、CPU231は、学習装置102でのモデル更新をするための試行を終了するか否かを判定する。終了判定の基準としては、例えば、S601~S603を実施し、S604で生成した学習データセットにおいてS603でデータベースへ反映した抽出対象の文字列データの出現確率が上限に達したか否か、がある。ここで、出現確率とは、図10に示すような学習データセット生成時に、「文書番号」、「合計金額」などの項目に対する項目値として選ばれる確率を示すものであり、0~1の割合で定義する。尚、上限は、1でも良いし、予め設定した0~1の範囲内の任意の数値を用いても良い。他にも、終了判定の基準は、繰り返し回数を指定しておくなどがある。試行を終了する場合(S610でYES)、学習装置102でそれ以上対応ができないことを示しているため、S611に移行する。試行を継続する場合(S610でNO)、S603に戻る。
【0079】
S611において、CPU231は、学習装置102でこれ以上対応ができないことが示されているため、情報処理システム100の開発を行うエンジニアに対してフィードバック内容を送信する。フィードバック内容は、S611を除くS601~S613の処理履歴、及び、S606で取得した文書画像データ113やS601(図7のS702)で取得した正解データなどの、処理履歴に付随するデータである。尚、フィードバックの送信にあたり、CPU231は、図17(b)で示すような送信確認画面1710を情報処理装置101の表示デバイス210等に表示させ、ユーザへ提示する。図17(b)は、情報処理システム100を開発するエンジニアへフィードバック内容を送信してもよいか許諾を求める画面の一例である。送信確認画面1710は、送信許諾可否の判定を以降自動で実施するためのチェックボックス1712、「はい」ボタン1713、「いいえ」ボタン1714で構成され、入力デバイス209による操作入力1711で指定を受け付ける。送信確認画面1710において、ユーザによって「はい」ボタン1713が押下された場合のみ、CPU231は、フィードバック内容を所定の送信先へ送信する。その際、CPU231は、フィードバック内容の送信後、図17(c)で示すような送信通知画面1720を情報処理装置101の表示デバイス210等に表示させ、情報処理システム100を利用するユーザに対して通知する。一方、送信確認画面1710において、ユーザによって「いいえ」ボタン1714が押下された場合は、CPU231は、フィードバック内容を送信せず、処理を終了する。また、送信確認画面1710上に表示したチェックボックス1712にチェックが入っている場合、CPU231は、送信許諾可否結果(「はい」ボタン1713と「いいえ」ボタン1714のどちらが押下されたか)を、ストレージ235へ保存してもよい。これによりCPU231は、送信確認画面1710をユーザへ提示せずに、ストレージ235から取得した送信許諾可否結果に基づき送信許諾可否の判定を行うことができる。
【0080】
S612において、CPU231は、情報処理サーバ103内のストレージ265に保存されている学習済みモデル115を、S605で生成した学習済みモデル候補で更新する。
【0081】
S613において、CPU231は、図17(a)に示すような更新通知画面1700を表示デバイス210等でユーザに提示することにより、S612で学習済みモデル115が更新されたことを、情報処理システム100を利用するユーザに対して通知する。
【0082】
ここで、S601の処理の詳細について、図7を用いて説明する。図7は、文書画像データ113からの項目値抽出に失敗した際の失敗内容を検知する処理を示すフローチャートである。
【0083】
S701において、CPU231は、情報処理サーバ103内のストレージ265から、抽出対象候補となる文字列データを取得する。
【0084】
S702において、CPU231は、情報処理サーバ103内のストレージ265から、抽出対象の文字列データを取得する。
【0085】
S703において、CPU231は、S701で取得した抽出対象候補となる文字列データの項目(抽出対象項目)毎に、S704~S708の処理を実行する。
【0086】
S704において、CPU231は、S703で指定された抽出対象項目について、S702で取得した文字列データが、S701で取得した文字列データと同一か否かを判定する。CPU231は、S702で取得した文字列データが、S701で取得した文字列と同一の場合(S704でYES)はS707に移行し、S701で取得した文字列データと異なる場合(S704でNO)は処理を終了する。
【0087】
S707において、CPU231は、S704でYESと判定された抽出対象項目の項目名を、失敗項目名としてストレージ235に保存する。失敗項目名は、失敗項目名を管理する目的で用いられ、例えば、配列の形式で保存される。尚、失敗項目名を管理できれば、保存時の形式は何でもよい。
【0088】
S708において、CPU231は、S701で取得した抽出対象候補の文字列データの項目全てに対して処理を終了したかを判定し、全ての項目に対して終了したと判定されるまで、S703~S708の処理を繰り返す。
【0089】
次に、S601で検知された失敗項目名に基づきS602で実施する処理の詳細について、図8を用いて説明する。図8は、文書画像データ113からの項目値抽出に失敗した要因をS601で検知された失敗項目名から分析する処理を示すフローチャートである。
【0090】
S801において、CPU231は、ストレージ235から失敗項目名を取得する。
【0091】
S802において、CPU231は、文書画像データ113の文書レイアウトが未知のレイアウトか否か判定する。CPU231は、文書画像データ113の文書レイアウトが、既知のレイアウトの場合(S802でNO)はS803に移行し、未知のレイアウトの場合(S802でYES)はS804に移行する。尚、文書画像データ113のレイアウト情報は、文書画像データ113内の各サブテンプレートの領域の配置位置を保持するものであり、ストレージ235に、データベースとして複数パターンが保存されている。サブテンプレートとは、文書内に含まれる各構成要素を示すものであり、例えば、図12において、発行先情報をひとまとめにした領域1210や、図13の1301、1311に示す「発行日」「文書番号」などのまとまりを指す。ここで、未知のレイアウトか否かの判定例について、図14を用いて説明する。ストレージ235上に、レイアウト情報1410が保存されているとする。このとき、文書画像データ113上の領域毎のサブテンプレートとレイアウト情報1410に規定された領域毎のサブテンプレートとについて配置位置が対応するもの同士を比較することで、文書画像データ113のレイアウトが未知か否かを判定する。図14に示す例では、文書画像データ113上の発行日を含む画像領域1401と、文書番号を含む画像領域1402とは左右に並んでいるが、レイアウト情報1410上の発行日の領域1411と、文書番号の領域1412とは上下に並んでいる。すなわち、文書画像データ113は、レイアウト情報1410と異なるレイアウトであるため、レイアウト情報が他に無ければ、文書画像データ113の文書レイアウトを未知のレイアウトと判定する。尚、未知のレイアウトか否かの判定処理について、詳細は、図16を用いて後述する。
【0092】
S803において、CPU231は、レイアウトに関する分析結果について「既知」であるという情報を、ストレージ235に保存する。本実施形態では具体的に、分析結果を管理する連想配列を用意し、その配列の「レイアウト」キーに対する値として「既知」という文字列を追加している。しかし、レイアウトに関する分析結果を管理できれば、保存時の形式は何でもよい。
【0093】
S804において、CPU231は、レイアウトに関する分析結果について「未知」であるという情報を、ストレージ235に保存する。本実施形態では具体的に、分析結果を管理する連想配列を用意し、その配列の「レイアウト」キーに対する値として「未知」という文字列を追加している。しかし、S803と同様、レイアウトに関する分析結果を管理できれば、保存時の形式は何でもよい。
【0094】
S805において、CPU231は、S801で取得した失敗項目の1つを選択して、選択した失敗項目に対してS806~S809の処理を実行する。
【0095】
S806において、CPU231は、S701で取得した抽出対象候補となる文字列データが、空文字列データかどうか判定する。尚、S701で取得した抽出対象候補となる文字列データが空文字列データであるとは、図15(a)に示す文字番号の抽出対象候補となる文字列データ1501のように、抽出対象項目である文字番号に対して何も抽出がされていない状態を指す。CPU231は、S701で取得した抽出対象候補となる文字列データが空文字列データの場合(S806でNO)はS807に移行し、空文字列データでない場合(S806でYES)はS808に移行する。
【0096】
S807において、CPU231は、S805で選択された失敗項目の1つに対して、抽出された抽出対象候補となる文字列データが「誤抽出」であるという情報をストレージ235に保存する。本実施形態では具体的に、分析結果を管理する連想配列を用意し、その配列のキーとしてS805で選択した失敗項目の項目名、値として「誤抽出」という文字列を追加している。しかし、S805で取得した失敗項目の1つに関する分析結果として失敗項目の項目名と値とを対応付けて管理できれば、保存時の形式は何でもよい。
【0097】
S808において、CPU231は、S805で選択した失敗項目の1つに対する分析結果として、抽出された抽出対象候補となる文字列データが「未抽出」であるという情報をストレージ235に保存する。本実施形態では具体的に、分析結果を管理する連想配列を用意し、その配列のキーとしてS805で取得した失敗項目の項目名、値として「未抽出」という文字列を追加している。しかし、S807と同様、S805で取得した失敗項目の1つに関する分析結果として失敗項目の項目名と値とを対応付けて管理できれば、保存時の形式は何でもよい。
【0098】
S809において、CPU231は、S801で取得した失敗項目全てに対する処理を終了したかを判定し、取得した失敗項目全てに対して処理が終了したと判定されるまで、S805~S809の処理を繰り返す。
【0099】
S810において、CPU231は、S807及びS808で保存した失敗項目毎の分析結果をまとめて項目抽出に関する分析結果としてストレージ235に保存する。本実施形態では具体的に、分析結果を管理する連想配列を用意し、その配列の「項目抽出」キーに対する値として、抽出対象項目毎の項目値に関する分析結果である項目抽出配列を追加している。しかし、S803と同様、項目値に関する分析結果を管理できれば、保存時の形式は何でもよい。
【0100】
ここで、S802における、未知のレイアウトかどうか判定する処理について、図16を用いて説明する。未知のレイアウトか否か判定する処理は、文書画像1100に含まれる各項目の文字列の領域の配置位置と、文書画像1100のレイアウト情報について、領域の一致率で判定する。図16は、レイアウトの一致率を算出する方法について説明する図である。
【0101】
まず、図16(a)における文書画像1100に含まれる項目の文字列の画像領域として、文書名画像領域1601、文書番号画像領域1602がある。これらの領域を、テンプレート1410内のテンプレート内文書名領域1611、テンプレート内文書番号領域1412とそれぞれ一致率を取得する。まず、図16(b)のように、文書名画像領域1601と、テンプレート文書名領域1611とを比較する。この場合、文書名画像領域1601は、テンプレート文書名領域1611に包含されているため、一致率は100%である。次に、図16(c)のように、文書番号画像領域1602と、テンプレート文書番号領域1412とを比較する。この場合、文書番号画像領域1602のうち、テンプレート文書番号領域1412と重複する領域の割合を一致率とする。例えば、それぞれの領域の座標が図16(d)で示す左上頂点の位置及び各辺の長さを有する場合、文書番号画像領域1602の面積はw2×h2=30000である。また、それぞれの領域が重複する領域の面積は幅が300、高さ50のため、300×50=15000である。そのため、一致率は15000÷30000×100=50%となる。全項目の文字列の画像領域に対してテンプレート内の対応する領域との一致率の算出を行い、算出した一致率の総和の平均が所定の閾値未満の場合、未知のレイアウトであると判定する。閾値は一例として75%であるが、任意の値でよい。
【0102】
ここで、S603の処理の詳細について、図9を用いて説明する。図9は、文書画像の生成に際し、要因の分析結果を取り込むフローチャートである。
【0103】
S901において、CPU231は、S602でストレージ235に保存した、分析結果を取得する。
【0104】
S902において、CPU231は、S901で取得した分析結果のうち、文書画像データ113の文書レイアウトに関する分析結果が未知かどうか判定する。CPU231は、文書画像データ113の文書レイアウトが未知の場合(S902でYES)はS903に移行し、既知の場合(S902でNO)はS904に移行する。
【0105】
S903において、CPU231は、文書画像データ113の文書レイアウトをデータベースに追加する。追加する処理について、具体的な例として、図14を用いて説明する。ストレージ235上に、レイアウト情報1410が登録されているレイアウトデータベースが存在し、そのレイアウトデータベースにレイアウトが未知と分析された文書画像データ113の文書レイアウト情報1420を登録する。
【0106】
S904において、CPU231は、CPU231は、S801で取得した失敗項目毎に、S905~S912の処理を実行する。
【0107】
S905において、CPU231は、S901で取得した分析結果のうち、失敗項目の項目名に対応付けられた値が何かを判定する。CPU231は、分析結果として項目名に対応付けられた値が「誤抽出」の場合(S905で「誤抽出」)はS906に移行し、分析結果として項目名に対応付けられた値が「未抽出」の場合(S905で「未抽出」)はS907に移行する。
【0108】
S906において、CPU231は、S701で取得した抽出対象候補となる文字列データの項目名が未知か否か判定する。CPU231は、抽出対象候補となる文字列データの項目名が未知の場合(S906でYES)はS909に移行し、既知の場合(S906でNO)はS908に移行する。S701で取得した抽出対象候補となる文字列データの項目名が未知か否かを判定する処理は、その文字列データが、図13(b)に示すような抽出対象外項目名データベース1310内に保存されているか否かで判定する。具体的な例について、図15(b)を用いて説明する。
【0109】
図15(b)は、S901で取得した分析結果のうち、分析結果として項目名に対応付けられた値が「誤抽出」の場合の、対応パターンの具体例を示す図である。ストレージ235上には、予め、図13(b)内のような抽出対象外項目名データベース1310が保存されている。抽出対象外項目名データベース1310は、図15(b)に示すように、抽出対象外の項目名1313それぞれに対する出現確率1561を記載した詳細データ1571、1573を含む。尚、抽出対象外の項目名の1つについて、出現確率1の場合はその項目名が必ず選択され、0の場合はその項目名が選択されることはない。ここでS701において取得した抽出対象候補となる文字列データの項目名が、「Total Before VAT」の場合について考える。詳細データ1571であれば、項目名1313に「Total Before VAT」は含まれていないため、S701で取得した抽出対象候補となる文字列データの項目名が未知(S906でYES)と判定する。一方、詳細データ1573であれば、項目名1313に「Total Before VAT」は含まれているため、S701で取得した抽出対象候補となる文字列データの項目名が既知(S906でNO)と判定する。
【0110】
S907において、CPU231は、S702で取得した抽出対象の文字列データの項目名が未知か否か判定する。CPU231は、S702で取得した抽出対象の文字列データの項目名が未知の場合(S907でYES)はS911に移行し、既知の場合(S906でNO)はS910に移行する。S702で取得した抽出対象の文字列データの項目名が未知か否かを判定する処理は、その項目名が、図13(a)に示すような抽出対象項目名データベース1300内に保存されているか否かで判定する。具体的に、図15(a)を用いて説明する。具体的な例について、図15(a)を用いて説明する。
【0111】
図15(a)は、S901で取得した分析結果のうち、分析結果として項目名に対応付けられた値が「未抽出」の場合の、対応パターンの具体例を示す図である。ストレージ235上には、予め、図13(a)内のような抽出対象項目名データベース1300が保存されている。抽出対象項目名データベース1300は、図15(a)に示すように、抽出対象の項目名1303それぞれに対する出現確率1511を記載した詳細データ1521、1523を含む。ここで、S702で取得した抽出対象の文字列データの項目名が、「Invoice#」の場合について考える。詳細データ1521であれば、項目名1303に「Invoice#」は含まれていないため、S702で取得した抽出対象の文字列データの項目名が未知(S907でYES)と判定する。一方、詳細データ1523であれば、項目名1303に「Invoice#」は含まれているため、S702で取得した抽出対象の文字列の項目名が既知(S907でNO)と判定する。
【0112】
S908において、CPU231は、抽出対象外項目名として生成時に出現する確率を上げる。具体的な例について、図15(b)を用いて説明する。S908は、詳細データ1573に基づき処理を行う場合に該当し、詳細データ1573において「Total Before VAT」の出現確率1575は0.2であるため、0.4(出現確率1585)へ引き上げる。この例では0.2だけ出現確率を上げているが、出現確率の引き上げ幅については、例えば、開発者が予め任意の引き上げ幅を設定しておいてもよいし、出現確率を自動で調整する第2の情報処理システムを介して決定してもよい。そして、出現確率変更前の詳細データ1573はストレージ235上に保存されているため、詳細データ1573を出現確率変更後の詳細データ1583へ置き換える。
【0113】
S909において、CPU231は、抽出対象外項目名として、図13(b)に示すような抽出対象外項目名データベースに追加する。具体的に、図15(b)に示す例を用いて説明する。S909は、詳細データ1571に基づき処理を行う場合に該当する。詳細データ1571において「Total Before VAT」は項目名1303に含まれていない(1572)ため、詳細データ1571に項目名「Total Before VAT」を追記する(1582)。追記後の詳細データ1581の出現確率は0.1としているが、追記時に設定する出現確率の引き上げ幅については、例えば、開発者が予め任意の引き上げ幅を設定しておいてもよいし、複数の文書画像データ113を自動ないし手動で解析してもよい。そして、追記前の詳細データ1571はストレージ235上に保存されているため、詳細データ1571を追記後の詳細データ1581へ置き換える。
【0114】
S910において、CPU231は、抽出対象項目名として生成時に出現する確率を上げる。具体的な例について、図15(a)を用いて説明する。S910は、詳細データ1523に基づき処理を行う場合に該当し、詳細データ1523において「Invoice#」の出現確率1525は0.2であるため、0.4(出現確率1535)へ引き上げる。この例では0.2だけ出現確率を上げているが、出現確率の引き上げ幅については、例えば、開発者が予め任意の引き上げ幅を設定しておいてもよいし、出現確率を自動で調整する第2の情報処理システムを介して決定してもよい。そして、出現確率変更前の詳細データ1523はストレージ235上に保存されているため、詳細データ1523を出現確率変更後の詳細データ1533へ置き換える。
【0115】
S911において、CPU231は、抽出対象項目名として、図13(a)に示すような抽出対象項目名データベースに追加する。具体的に、図15(a)に示す例を用いて説明する。S911は、詳細データ1521に基づき処理を行う場合に該当し、詳細データ1521において「Invoice#」は項目名1303に含まれていない(1522)ため、詳細データ1521に項目名「Invoice#」を追記する(1532)。追記後の詳細データ1531の出現確率は0.1としているが、追記時に設定する出現確率の引き上げ幅については、例えば、開発者が予め任意の引き上げ幅を設定しておいてもよいし、複数の文書画像データ113を自動ないし手動で解析してもよい。そして、追記前の詳細データ1521はストレージ235上に保存されているため、詳細データ1521を追記後の詳細データ1531へ置き換える。
【0116】
S912において、CPU231は、S801で取得した失敗項目すべてに対する処理を終了したかを判定し、すべての項目名に対して終了したと判定されるまで、S904~S912の処理を繰り返す。
【0117】
ここで、S604の処理の詳細について、図10を用いて説明する。図10は、学習データセットを生成する処理を示すフローチャートである。
【0118】
S1001において、CPU231は、擬似的な文書画像サンプルを生成する枚数を取得する。例えば、予めストレージ235に保持した値を取得する。
【0119】
S1002において、CPU231は、生成枚数分の擬似的な文書画像サンプルの生成を実行する。
【0120】
S1003において、CPU231は、ストレージ235に予め保持された複数のレイアウトからランダムに1つのレイアウトを選択する。
【0121】
S1004において、CPU231は、S1003で選択したレイアウト内に存在するサブテンプレート毎に、S1005~S1011の処理を実行する。
【0122】
S1005において、CPU231は、S1004で選択されたサブテンプレート内に存在する項目毎に、S1006~S1010の処理を実行する。
【0123】
S1006において、CPU231は、S1005で選択された項目の項目名を決定する。項目名の文字列は、図13に示す抽出対象項目名データベース1300、抽出対象外項目名データベース1310における項目名1303、1313の候補からランダムに1つ選択する。尚、項目名1303、1313の候補には、空文字を含んでも良い。空文字が選択された場合は、項目名が表記されないことを意味する。
【0124】
S1007において、CPU231は、S1005で選択された項目の値を決定する。項目の値である文字列は、図13の抽出対象項目名データベース1300における、対応する項目値例に挙げられた候補からランダムに1つ選択したもの、又はデータベースを参照せずランダムに生成した数字列や文字列とすることができる。
【0125】
S1008において、CPU231は、S1006とS1007で決定した文字列を、S1005で指定した項目に対応するサブテンプレート内に配置する。具体的な例として、図12を用いる。サブテンプレート内への配置は、擬似的な文書画像サンプル1200内の発行先情報を示すサブテンプレートの領域1210内に文字列1211、1212を配置することで実現される。尚、文字列1211はS1006で決定した項目名である文字列であり、文字列1212はS1007で決定した項目の値である文字列データである。
【0126】
S1009において、CPU231は、S1006で決定した項目名が抽出対象の項目名である場合のみ、抽出対象の項目名とS1007で決定した項目の値及び位置情報とを関連付けて正解データとして登録する。尚、ここでの抽出対象の項目名とは、S1006での項目名の決定時に用いられる、図13に示すような抽出対象項目名データベース1300に登録されている項目名のことである。
【0127】
S1010において、CPU231は、S1004で選択されたサブテンプレート内に存在する全ての項目に対する処理が終了したか否かを判定し、全ての項目に対して終了したと判定されるまで、S1005~S1010の処理を繰り返す。
【0128】
S1011において、CPU231は、S1003で選択されたレイアウト内に存在する全てのサブテンプレートに対する処理が終了したか否かを判定し、全てのサブテンプレートに対して終了したと判定されるまで、S1004~S1011の処理を繰り返す。全てのサブテンプレートに対する処理が終了すると、図12(a)に示すような擬似的な文書画像サンプル1200が得られる。
【0129】
S1012において、CPU231は、S1001で取得した生成枚数に達するまでS1002に戻り、取得した生成枚数に達すると処理を終了する。
【0130】
以上により、データオーグメンテーションに用いるデータベースを認識に失敗した要因に応じて変更することで、認識精度の改善度の高い学習データセットを生成することができ、より少量の学習データセットによる、より短時間での学習を実現できる。尚、文書画像データ113及びデータオーグメンテーション処理により生成される擬似文書データは、本実施形態では帳票画像としたが、文書の種類は帳票に限定されず、データの種類も画像に限定されない。例えば、文書画像データ113や擬似文書データを文字列データと位置情報を含むPDLデータなどとしてもよい。
【0131】
また、本実施形態では、複製モデルの再学習に擬似文書データを用いたが、項目値抽出に失敗した文書画像データ113を再学習に用いてもよい。文書画像データ113を再学習に用いた場合、S317において学習済みモデル候補の評価には再学習に用いていない擬似文書データを用いることとする。
【0132】
[実施形態2]
実施形態1では、ユーザが項目値抽出に失敗した文書画像データ113を用いて、学習済みモデル候補を評価した(S317)。実施形態2では、ユーザが過去に入力した文書画像データ113の情報を保管しておき、これも用いて、学習済みモデル115を評価する(S1802)。実施形態2は、実施形態1における図3図5及び図6を、図18図20に置き換えることで実現できる。実施形態2において、これ以外の点は実施形態1と同様のため、説明は省略する。
【0133】
<利用シーケンス>
図18は、実施形態2における情報処理システムの利用シーケンスを示す図である。尚、図18のうち、図3の利用シーケンスと同符号の処理は、実施形態1と同様のため説明は省略する。
【0134】
S1801において、情報処理サーバ103は、S306で送信された文書画像データ113と、S309で送信されたユーザにより確定された抽出対象の文字列データを、学習装置102に送信し、学習装置102内のストレージ235に保存する。
【0135】
S1802において、学習装置102は、学習装置102内のストレージ235から、S1801で保存された文書画像データ113及び確定された抽出対象の文字列データを取得する。ここで取得するデータには、ユーザが過去に入力した文書画像データも含まれる。取得した文書画像データ113それぞれから文字列データを取得し、S316で生成した学習済みモデル候補を用いて、抽出対象候補の文字列データを抽出する。学習装置102は、S316で生成した学習済みモデル候補による抽出対象候補の文字列データが、取得した確定された抽出対象の文字列データと同一か否かを確認する。学習装置102は、抽出対象候補の文字列データが、確定された抽出対象の文字列データと同一の場合はS318に移行し、確定された抽出対象の文字列データと異なる場合はS314に移行する。
【0136】
<項目値候補文字列の抽出・修正処理>
図19は、実施形態2における、項目値候補となる文字列データを推定し、その修正をユーザから受け付ける処理を示すフローチャートである。尚、図19で示す各ステップの実行プログラムは、情報処理サーバ103のROM262、RAM264、ストレージ265のいずれかに記憶され、情報処理サーバ103のCPU261によって実行される。また、図19のうち、図5のフローチャートと同符号の処理は、実施形態1と同様のため説明は省略する。
【0137】
S1901において、CPU261は、S502で取得した文書画像データ113と、S506でユーザによって確定された抽出対象の文字列データを、学習装置102へ送信し、学習装置102内のストレージ235に保存する。
【0138】
<項目値抽出モデルの更新処理>
図20は、実施形態2における、学習済みモデルにユーザによる修正内容を反映する処理を示すフローチャートである。尚、図20で示す各ステップの実行プログラムは、学習装置102のROM232、RAM234、ストレージ235のいずれかに記憶され、学習装置102のCPU231、GPU232のいずれかによって実行される。また、図20のうち、図6のフローチャートと同符号の処理は、実施形態1と同様のため説明は省略する。
【0139】
S2001において、CPU231は、ストレージ235から文書画像データを取得する。尚、ここで取得される文書画像データには、ユーザが過去に情報処理装置101を用いて入力した文書画像データも含まれる。
【0140】
S2002において、CPU231は、S2001で取得した各文書画像データに対して、S607、S608、S2003の処理を実行する。
【0141】
S2003において、CPU231は、S2001で取得した文書画像データ全てに対する処理を終了したか否かを判定し、全ての文書画像データに対して処理を終了したと判定されるまで、S2002、S607、S608、S2003の処理を繰り返す。
【0142】
S2004において、CPU231は、全ての抽出対象項目について、S2003で取得した文字列データが、ストレージ235から取得した抽出対象の文字列データと同一か否かを確認する。CPU231は、S2003で取得した文字列データ全てにおいて、全ての抽出対象項目で同一の場合(S2004でYES)、S612に移行する。また、CPU231は、S2003で取得した文字列データのうち、1つ以上の対象項目で異なる文字列データが存在する場合(S2004でNO)、S610に移行する。尚、S2004でYESとする条件は、S2003で取得した文字列データ全てが全ての抽出対象項目で同一でなくとも良い。例えば、S2003で取得した文字列データ全体のうちで、全ての抽出対象項目で同一だった文字列データの割合が、予め設定された割合以上であることをS2004でYESとする条件としても良い。他にも、S2003で取得した文字列データそれぞれにおいて、全ての抽出対象項目で同一だった場合は1、1つ以上の対象項目で異なる場合は0として、その値の平均をとり、予め設定された平均値以上であることを条件としても良い。尚、平均をとる際には、算術平均でもよいし、S2003で取得した文字列データそれぞれに対して、優先度の重みづけをした加重平均でもよい。優先度の重みづけとして、例えば、ユーザが入力した時期が古い文書画像データほど優先度が低いため重みを小さくすることなどが考えられる。優先度の重みづけとして他にも、図16で示すレイアウトの一致率に基づき同一帳票数を算出し、同一帳票数が多い文書画像データほど優先度が高いため重みを大きくすることなども考えられる。
【0143】
以上により、ユーザが過去に入力した文書画像データも用いて、項目値抽出を行うための学習済みモデルを評価・分析することで、ユーザが過去に入力した文書画像データについても対応できる学習済みモデルへ更新することができる。すなわち、更新された学習済みモデルでは、ユーザが過去に入力した文書画像データの類似文書画像データ(擬似文書データ)に対しても高精度な項目値抽出ができるようになる。実在した原稿に類似する文書画像データは、将来的にユーザによって入力される可能性が高いため、実在した原稿に関するデータを多く学習させることで学習済みモデルの推論精度の向上に繋がる。
【0144】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0145】
本開示は、以下の構成及び方法を含む。
[構成1]
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成する生成手段と、
前記生成手段により生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う学習手段と、
を備え、
前記生成手段は、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理装置。
[構成2]
前記学習手段は、前記学習モデルの複製モデルに対して前記再学習を行い、前記学習データに含まれない前記擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする構成1に記載の情報処理装置。
[構成3]
前記生成手段は、前記学習データに含まれない擬似文書データ又は前記入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に失敗した場合、前記固有表現抽出に失敗した前記入力された文書データに基づき別の擬似文書データを生成し、
前記学習手段は、前記別の擬似文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う、
ことを特徴とする構成1又は2に記載の情報処理装置。
[構成4]
前記学習手段は、前記学習モデルによる固有表現抽出に失敗した入力された文書データ及び過去の入力された文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする構成1乃至3のいずれか1項に記載の情報処理装置。
[構成5]
前記学習手段は、前記学習モデルによる固有表現抽出に失敗した入力された文書データ及び前記学習データに含まれない擬似文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする構成1又は2に記載の情報処理装置。
[構成6]
前記学習手段は、前記学習データに含まれない擬似文書データに対する前記再学習を行った複製モデルによる固有表現抽出に成功した場合、前記再学習を行った複製モデルで前記学習モデルを更新する、
ことを特徴とする構成1乃至3のいずれか1項に記載の情報処理装置。
[構成7]
前記学習モデルは、対象となる文書画像データに含まれる複数の文字列の中から、予め定められた項目に対応する項目値の候補となる文字列データを抽出する学習モデルである、
ことを特徴とする構成1乃至6のいずれか1項に記載の情報処理装置。
[構成8]
前記生成手段は、抽出対象の項目に対応する項目値が未抽出又は誤抽出であった場合、当該抽出対象の項目の出現確率を高める、
ことを特徴とする構成7に記載の情報処理装置。
[構成9]
前記生成手段は、抽出対象の項目に対応する項目値が未抽出又は誤抽出で、かつ、当該抽出対象の項目の出現確率が登録されていない場合、当該抽出対象の項目名と当該抽出対象の項目の出現確率とを関連付けて登録する、
ことを特徴とする構成8に記載の情報処理装置。
[構成10]
学習モデルを用いて入力された文書データから固有表現抽出を行う情報処理サーバと、
前記学習モデルの学習を行う学習装置と、
を備え、
前記学習装置は、
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成する生成手段と、
前記生成手段により生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行う学習手段と、
を含み、
前記生成手段は、前記擬似文書データを生成するために前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理システム。
[構成11]
入力された文書データに対して固有表現抽出を行う学習モデルが前記入力された文書データに対する固有表現抽出に失敗した場合、前記入力された文書データの擬似文書データを生成するステップと、
前記生成するステップにより生成された擬似文書データ及び/又は前記固有表現抽出に失敗した前記入力された文書データと、正解データとの対から成る学習データに基づき前記学習モデルの再学習を行うステップと、
を有し、
前記生成するステップでは、前記擬似文書データを生成する際に前記失敗した抽出対象項目が選択される確率を高める、
ことを特徴とする情報処理方法。
[構成12]
コンピュータを構成1乃至9のいずれか1項に記載の情報処理装置として機能させるためのプログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20