<第1実施形態>
本発明の第1実施形態の例の情報処理装置は、ユーザの指示に応じて、予め定められた書式に従って作成された文書から情報を抽出して、抽出した情報と当該ユーザの指示が行なわれた時間を表す情報とを関連付けてデータベースに登録する。ユーザが当該文書を更新し、その更新の内容の登録を指示した場合、本実施形態の例の情報処理装置は、更新された文書から再び情報を抽出し、抽出した情報と当該登録の指示が行なわれた時間を表す情報とを関連付けてデータベースに登録する。さらに、本実施形態の例の情報処理装置は、このデータベースから取得した情報を含む出力文書を生成する。例えば、データベースに登録済みの情報の抽出元の文書と出力文書の書式とをユーザが指定した場合に、指定された書式に従って、指定された抽出元の文書の情報をデータベースから読み出して、読み出した情報を含む出力文書を生成する。このとき、抽出元の文書から抽出されてデータベースに登録された情報のうち最新の情報を読み出して出力文書に含める。よって、出力文書は、抽出元の文書の最新版の情報を含む文書となる。
以下の説明では、上述の抽出元の文書を「継承元文書」とも呼ぶ。また、本実施形態および後述の各種の実施形態や変形例の説明において、「文書」との用語は、特に紙の文書を指す旨の記載がない限り、電子的な文書を意味するものとする。
図1に、第1実施形態の例による情報処理装置を含むシステムの構成の例を示す。図1の例のシステムは、サーバ10と端末20とがネットワーク30を介して接続された構成を有する。サーバ10は、第1実施形態の例による情報処理装置として機能する。サーバ10は、ユーザにより操作される端末20からの要求に応じて、文書からの情報の抽出および出力文書の生成等の処理を行う。端末20は、パーソナル・コンピュータ等の情報処理装置であってよい。ネットワーク30は、LAN(Local Area Network)やインターネット等、情報処理装置間の通信を可能とする通信手段である。なお、図1には端末20を1つだけ図示しているが、複数の端末20がネットワーク30を介してサーバ10に接続されていてよい。
図1の例のサーバ10は、抽出スキーマ記憶部100、文書ID付与部110、文書情報抽出部120、履歴登録部130、文書情報DB140、挿入スキーマ記憶部150、および出力文書生成部160を備える。
抽出スキーマ記憶部100は、継承元文書のレイアウトを表す情報である抽出スキーマを記憶する。抽出スキーマは、継承元文書の書式ごとに予め定義され、例えば、当該書式に従って作成された文書においてどの領域にどのような情報が配置されるかを記述したものであってよい。抽出スキーマ記憶部100は、各書式の識別情報と当該書式の抽出スキーマとを関連付けて記憶する。抽出スキーマの具体例は後述する。
文書ID付与部110は、文書に対し、当該文書を識別するための文書IDを生成して付与する。文書IDは、サーバ10が管理する文書のうちで一意な識別情報であればよい。文書IDの「付与」とは、例えば、文書のデータ中に文書IDを含めることで行われる。本例では、文書の属性情報の中に文書IDを含めるものとする。
文書情報抽出部120は、予め定められた書式に従って作成された文書から、当該書式に対応して予め定められた項目の情報を抽出する。文書情報抽出部120による情報抽出の対象の文書は、上述の継承元文書である。なお、本実施形態の例の文書情報抽出部120は、情報抽出の対象の文書に文書IDが付与済みであるか否かを確認し、文書IDが付与されていない場合は、文書ID付与部110に依頼して当該文書に文書IDを付与させる。文書IDが付与済みであるか否かの確認は、当該文書の属性情報中に文書IDが含まれているか否かを確認することで行えばよい。文書情報抽出部120による情報抽出の対象の文書は、例えば、端末20を用いてユーザにより指定される。対象の文書の指定は、当該文書そのものを端末20からサーバ10に送信することで行われてもよいし、当該文書を記憶する文書データベース(図示しない)における当該文書の格納位置を端末20からサーバ10に送信することで行われてもよい。対象の文書を端末20がサーバ10に送信した場合、文書情報抽出部120は、サーバ10で受信された文書を情報抽出の対象として取得する。また、対象の文書の文書データベースにおける格納位置を端末20がサーバ10に送信した場合、文書情報抽出部120は、サーバ10で受信された格納位置を用いて文書データベースから対象の文書を取得する。本実施形態の例において、情報抽出の対象として指定される文書は、その文書の作成の基となった書式の識別情報を含む。本実施形態の例の文書情報抽出部120は、情報抽出の対象の文書を取得すると、当該文書から当該文書の書式の識別情報を取得する。そして、取得した書式の識別情報に対応する抽出スキーマを抽出スキーマ記憶部100から読み出し、読み出した抽出スキーマに従って文書からの情報の抽出を行う。
以下、図2から図5を参照し、抽出スキーマの例を説明する。
図2は、ある書式Aに従って作成された継承元文書の一例を模式的に示す図である。また、図3は、図2に例示する書式Aに対応する抽出スキーマの内容の例を示す。図3の例の抽出スキーマは、XML(Extensible Markup Language)形式で記述されている。図3において、「rectangle」要素は、文書から文字列(情報)を抽出する矩形領域を表す。「rectangle」要素の「left」,「right」,「top」,「bottom」属性は、それぞれ、矩形領域の左端、右端、上端、下端の座標を表し、「name」属性は矩形領域の名前を表す。図3では、「住所」、「組織名」、および「担当者名」とそれぞれ名付けられた3つの矩形領域について記述されている。図3に例示する3つの矩形領域は、それぞれ、図2に示す3つの破線矩形に対応する。より具体的には、図3の例の抽出スキーマにおいて名前が「住所」である矩形領域は、図2において「○○市△町1−2−3」の文字列を含む破線矩形の領域に対応し、名前が「組織名」である矩形領域は、図2において「××商会」の文字列を含む破線矩形の領域に対応する。さらに、名前が「担当者名」である矩形領域は、図2において「AAA」の文字列を含む破線矩形の領域に対応する。
図4は、図2および図3の例と異なる書式Bに従って作成された継承元文書の一例を模式的に示す図である。また、図5は、図4に例示する書式Bに対応する抽出スキーマの内容の例を示す。図5の例の抽出スキーマの記述の形式は、図3と同様、XML形式である。図5中の「rectangle」要素、「left」,「right」,「top」,「bottom」属性、および「name」属性の意味は、図3で説明したものと同様である。図5の例の抽出スキーマは、「住所」、「組織名」、および「部署」とそれぞれ名付けられた3つの矩形領域に関する記述を含む。図5の例の抽出スキーマの「住所」の矩形領域は、図4において「××市△町1−2−3」の文字列を含む破線矩形の領域に対応し、「組織名」の矩形領域は、図4において「××商会」の文字列を含む破線矩形の領域に対応する。また、図5に例示する「部署」の矩形領域は、図4において「営業部」の文字列を含む破線矩形の領域に対応する。
文書情報抽出部120は、情報抽出の対象の文書の書式が書式Aであれば、図3の例の抽出スキーマを抽出スキーマ記憶部100から読み出し、情報抽出の対象の文書の書式が書式Bであれば、図5の例の抽出スキーマを抽出スキーマ記憶部100から読み出す。そして、読み出した抽出スキーマで記述された矩形領域のそれぞれに含まれる文字列を、対象の文書から抽出する。また、文書情報抽出部120は、対象の文書の文書IDと共に、各矩形領域から抽出した文字列を当該矩形領域の名前(抽出スキーマで定義された名前)に関連付けて履歴登録部130に渡す。
文書情報抽出部120が文書から抽出する情報は、当該文書の内容の一部であると言える。以下の説明では、文書情報抽出部120により文書から抽出される情報を「文書情報」と呼ぶ。また、本実施形態の例において、ユーザは、文書の新規作成時または更新時に、端末20を用いて文書情報の抽出および登録をサーバ10に指示する。このため、文書情報抽出部120により文書から抽出される文書情報は、当該文書の作成内容または更新内容の履歴を表す情報であるとも捉えられる。よって、以下の説明において、文書から抽出された文書情報を当該文書の作成または更新の「履歴」と呼ぶこともある。
図1の説明に戻り、履歴登録部130は、文書情報抽出部120から文書IDおよび文書情報を受け取ると、受け取った文書IDに関連付けて、受け取った文書情報を文書情報DB140に登録する。本実施形態の例の履歴登録部130は、さらに、文書情報抽出部120から受け取った文書IDおよび文書情報に関連付けて、文書情報の抽出の指示がユーザにより行なわれた時間を表す情報を文書情報DB140に登録する。例えば、サーバ10が端末20から情報の抽出の対象の文書の指定を受け付けた時刻を、文書情報の抽出の指示が行なわれた時刻として当該文書の文書IDおよび文書情報に関連付けて登録する。あるいは、端末20においてユーザが文書情報の抽出の対象の文書を指定した時刻を端末20が取得してサーバ10に送信し、この時刻を文書IDおよび文書情報に関連付けて登録してもよい。
文書情報DB140は、文書情報抽出部120が文書から抽出した文書情報を記憶する。図6に、文書情報DB140のデータ内容の例を示す。
図6の例の表では、各文書の文書IDごとに、文書情報および操作日時の値が登録されている。図6の例の表の1行は、1つの文書に対する1回の情報抽出に対応する情報レコードである。つまり、各情報レコードは、各文書に対する新規作成または更新の履歴を表す。文書情報は、対応する文書IDの文書から文書情報抽出部120が抽出した情報である。図6の例の表の文書情報は、下位項目として、「住所」、「組織名」、「部署」、および「担当者名」を含む。これらの各下位項目の名前は、図3および図5に例示する抽出スキーマに記述された各矩形領域の名前に対応する。図6の例の表の操作日時は、対応する文書IDの文書からの文書情報の抽出が指示された時刻を表す。なお、図6に示す文書ID「001」の行は、図2に例示する書式Aの文書から文書情報を抽出した場合の情報レコードの例であり、文書ID「002」の行は、図4に例示する書式Bの文書から文書情報を抽出した場合の情報レコードの例である。各情報レコードにおいて、対応する文書の書式の抽出スキーマで記述されていない文書情報の項目の値は空(なし)に設定される。例えば、書式Aの抽出スキーマには「部署」という名前の矩形領域が記述されていないため(図3参照)、文書ID「001」の行では文書情報の下位項目「部署」の値が空に設定されている。また、書式Bの抽出スキーマには、「担当者名」という名前の矩形領域が記述されていないため(図5参照)、文書ID「002」の行では文書情報の下位項目「担当者名」の値が空に設定されている。
再び図1を参照し、挿入スキーマ記憶部150は、出力文書のレイアウトを表す情報である挿入スキーマを記憶する。挿入スキーマは、出力文書の書式ごとに予め定義され、例えば、当該書式に従って作成される出力文書においてどの領域にどのような情報を挿入(配置)するかを記述したものであってよい。本実施形態の例において、出力文書に挿入される情報の各項目は、継承元文書から抽出される情報の項目のうちの1つであるとする。すなわち、本実施形態の例の挿入スキーマは、文書情報DB140における文書情報の下位項目のうちのどの下位項目を出力文書のどの領域に挿入するかを表す情報である。
図7および図8を参照し、挿入スキーマ記憶部150に記憶される挿入スキーマの具体例を説明する。図7は、出力文書の書式の一例を模式的に示す図である。図7に示す破線矩形領域および破線矩形領域内の文字列は、出力文書に挿入される領域および挿入される情報の項目の名前を表す。図8は、図7に例示する出力文書の書式に対応する挿入スキーマの内容の具体例である。図8の例の挿入スキーマは、上述の図3および図5の抽出スキーマと同様、XML形式で記述されている。図8において、「rectangle」要素は、出力文書において、継承元文書から抽出した項目の情報を挿入する矩形領域を表す。「rectangle」要素の「left」,「right」,「top」,「bottom」属性は、それぞれ、矩形領域の左端、右端、上端、下端の座標を表し、「name」属性は矩形領域の名前を表す。「name」属性の文字列は、継承元文書の書式に対応する抽出スキーマに記述される矩形領域の名前のうちの1つと同じ文字列に設定される。図8の例の抽出スキーマは、図6に例示する文書情報DB140における文書情報の4つの下位項目「住所」、「組織名」、「部署」、および「担当者名」のそれぞれの内容を、出力文書において図7に例示する破線矩形領域に挿入することを表す。
出力文書生成部160は、出力文書を生成して出力する処理を行う。例えば、出力文書の書式と継承元文書とを指定して出力文書の生成を指示する入力をユーザが端末20で行い、この入力に応じて端末20が出力文書生成の要求をサーバ10に対して行った場合に、出力文書生成部160は、出力文書を生成する。例えば、出力文書生成部160は、まず、ユーザにより指定された書式の挿入スキーマを挿入スキーマ記憶部150から取得し、ユーザにより指定された継承元文書の文書IDを含む情報レコードを文書情報DB140から取得する。そして、取得した挿入スキーマにおいて出力文書に挿入するよう記述された各項目について、文書情報DB140から取得した情報レコードの中から最新の値を特定する。各項目の「最新の値」は、当該項目の値を含む情報レコードのうち操作日時が最新である情報レコード中の当該項目の値である。さらに、出力文書生成部160は、挿入スキーマにおいて記述された各矩形領域に、対応する各項目について特定した最新の値を挿入した出力文書を生成する。出力文書生成部160は、生成した出力文書を要求元の端末20に送信する。出力文書生成部160は、生成した出力文書を図示しないプリンタにより印刷させてもよい。
図9に、出力文書生成部160が生成する出力文書の例を示す。図9は、文書情報DB140に図6の例のデータ内容が登録されている場合であって、継承元文書として文書ID「001」および文書ID「002」の文書が指定され、出力文書の書式として図8の例の挿入スキーマに対応する書式が指定された場合に生成される出力文書の例を模式的に示す。図9の例の出力文書において、図8の例の挿入スキーマに記述される「住所」および「組織名」にそれぞれ対応する各破線矩形領域には、文書ID「002」の情報レコード中の住所「××市△町1−2−3」および組織名「××商会」が挿入されている。「住所」および「組織名」の各項目については、文書ID「001」,「002」の両方の情報レコードにおいて値が設定されているけれども、文書ID「002」の操作日時「2010−02−19 11:15:20」の方が文書ID「001」の操作日時「2010−02−19 10:30:11」よりも新しい。このため、出力文書に挿入する値としては文書ID「002」の情報レコード中の値が用いられる。また、図9の例の出力文書において、図8の例の挿入スキーマに記述される「部署」および「担当者名」に対応する破線矩形領域には、それぞれ、文書ID「002」の情報レコード中の部署「営業部」および文書ID「001」の情報レコード中の担当者名「AAA」が挿入されている。「部署」および「担当者名」の各項目については、それぞれ、文書ID「001」および文書ID「002」の一方の情報レコードにしか値が登録されていないため、その唯一の値が最新の値であり、出力文書中に挿入される。
以下、以上で説明したサーバ10が行う処理の例を説明する。以下で説明する処理の開始の前に、サーバ10の抽出スキーマ記憶部100および挿入スキーマ記憶部150には、上述したような抽出スキーマおよび挿入スキーマが予め生成されて記憶されているものとする。抽出スキーマおよび挿入スキーマの生成ならびに各記憶部への登録は、例えばシステムの管理者等の指示により予め行われる。なお、以下では、説明のための具体例として、図3および図5に例示する二種類の抽出スキーマが抽出スキーマ記憶部100に記憶され、図8に例示する一種類の挿入スキーマが挿入スキーマ記憶部150に記憶されているものとする。
図10は、文書から文書情報を抽出して登録する際にサーバ10が行う処理の手順の例を示すフローチャートである。例えば、ユーザが、端末20を用いて、継承元文書の書式に従った文書の新規作成または更新を行い、その結果の文書を指定して文書情報の抽出および登録を指示した場合に、端末20は、指定された文書の文書情報の登録要求をサーバ10に対して行う。この登録要求に応じて、サーバ10は、図10の例の手順の処理を開始する。
図10を参照し、まず、サーバ10の文書情報抽出部120は、登録対象の文書を取得する(ステップS10)。例えば、端末20からサーバ10が受信した登録要求に登録対象の文書そのものが含まれていれば、登録要求から当該文書を取り出す。また例えば、登録要求において登録対象の文書のデータベース(図示しない)における格納位置を表す情報が含まれていれば、その格納位置から登録対象の文書を取得する。
登録対象の文書を取得すると、文書情報抽出部120は、当該文書に文書IDが付与されているか否かを確認する(ステップS12)。本実施形態の例では、文書IDが付与された文書には、その属性情報中に文書IDが含まれる。このため、文書情報抽出部120は、ステップS10で取得した登録対象の文書の属性情報中に文書IDが含まれているか否かを確認する。
登録対象の文書の属性情報中に文書IDが含まれていれば、文書IDが付与されていると判定され、処理はステップS12からステップS16に進む。ステップS16の処理は後述する。
登録対象の文書の属性情報中に文書IDが含まれていなければ、文書IDが付与されていないと判定され、処理はステップS12からステップS14に進む。ステップS14で、文書情報抽出部120は、文書ID付与部110に依頼して、登録対象の文書に文書IDを付与させる。文書ID付与部110は、本システム内で重複しない新たな文書IDを生成して、登録対象の文書に付与する。つまり、登録対象の文書の属性情報中に、当該新たな文書IDを含める。
登録対象の文書に文書IDが付与されていた場合(ステップS12でYES)、または、文書IDが付与されていない登録対象の文書に新たな文書IDが付与された後(ステップS12でNO,ステップS14)、文書情報抽出部120は、登録対象の文書に対応する抽出スキーマを取得する(ステップS16)。例えば、文書情報抽出部120は、登録対象の文書の書式の識別情報を登録対象の文書の属性情報から取得し、取得した書式の識別情報に関連付けて記憶された抽出スキーマを抽出スキーマ記憶部100から取得する。書式Aに対応する抽出スキーマ(図3参照)および書式Bに対応する抽出スキーマ(図5参照)が抽出スキーマ記憶部100に記憶されている本例の場合、登録対象の文書の書式が書式Aであれば図3の例の抽出スキーマが取得され、書式Bであれば図5の例の抽出スキーマが取得される。
ステップS16の後、文書情報抽出部120は、ステップS16で取得した抽出スキーマに従って、登録対象の文書から文書情報を抽出する(ステップS18)。例えば、登録対象の文書が図2に例示する書式Aの文書である場合、図3の例の書式Aの抽出スキーマに従って、「住所」、「組織名」、および「担当者名」にそれぞれ対応する3つの矩形領域から文字列「○○市△町1−2−3」、「××商会」、および「AAA」を抽出する。また例えば、登録対象の文書が図4に例示する書式Bの文書である場合、図5の例の書式Bの抽出スキーマに従って、「住所」、「組織名」、および「部署」にそれぞれ対応する3つの矩形領域から文字列「××市△町1−2−3」、「××商会」、および「営業部」を抽出する。
次に、履歴登録部130は、登録対象の文書の文書IDに関連付けて、ステップS18で抽出された文書情報と操作日時とを文書情報DB140に登録する(ステップS20)。履歴登録部130は、例えば、文書情報DB140において、登録対象の文書の文書IDの情報レコードを新たに生成し、この情報レコードの文書情報の各下位項目の値として、登録対象の文書の対応する各矩形領域から抽出された文字列を設定する。さらに、履歴登録部130は、この新たに生成した情報レコード中の操作日時の値として、登録対象の文書についての登録要求をサーバ10が端末20から受信した時刻を設定する。あるいは、端末20においてユーザが登録対象の文書の指定を行った時刻が登録要求と共に端末20からサーバ10に送信されている場合、端末20から受信された時刻を操作日時の値として設定する。ステップS20の後、図10の例の手順の処理は終了する。
文書の新規作成または更新の度に図10の例の手順の処理が実行されることで、上述した図6に例示するようなデータ内容の文書情報DB140が構築される。
なお、図10の例の手順において、処理の実行の順番を一部変更してもよい。例えば、抽出スキーマの取得(ステップS16)を文書IDの有無の判定(ステップS12)の前に行ってもよい。
文書情報DB140に登録された継承元文書の文書情報を用いて、出力文書が生成される。例えば、ユーザが端末20において出力文書の生成を望む旨の入力を行うと、端末20は、出力文書の書式および継承元文書の指定の入力を受け付ける操作メニューを端末20の表示装置(図示しない)に表示させる。操作メニューは、例えば、出力文書の書式の一覧と継承元文書の一覧とを含む。出力文書の書式の一覧の表示は、例えば、端末20がサーバ10の挿入スキーマ記憶部150にアクセスして、定義済みの挿入スキーマを取得し、取得された挿入スキーマに対応する出力文書の書式を表示させることで行えばよい。また、継承元文書の一覧は、例えば、端末20のユーザが利用可能な文書のうち、抽出スキーマ記憶部100に記憶された抽出スキーマのいずれかに対応する書式を有する文書の一覧を生成することで生成すればよい。ここで、ユーザが利用可能な文書とは、例えば、端末20の記憶装置(図示しない)や端末20からアクセス可能なデータベース(図示しない)に記憶された文書のうち、当該ユーザがアクセス権を有する文書である。抽出スキーマに対応する文書の書式は、端末20がサーバ10の抽出スキーマ記憶部100にアクセスすることで特定すればよい。出力文書の書式の一覧と継承元文書の一覧とを含む操作メニューを確認したユーザは、出力文書の書式および継承元文書を指定する入力を行う。本例において、出力文書の書式は、一覧の中から1つだけ選択(指定)可能であり、継承元文書は、一覧の中から複数を選択可能である。端末20は、出力文書を出力する出力要求であってユーザの入力により指定された書式の識別情報および継承元文書の文書IDを含む出力要求をサーバ10に対して行う。なお、本例のように挿入スキーマ記憶部150中に記憶された挿入スキーマが1つだけである場合、出力文書の書式の一覧の表示および出力文書の書式の選択の入力の受付は省略してよい。この例の場合、出力文書の出力要求に、当該1つの挿入スキーマに対応する出力文書の書式の識別情報を含めておけばよい。
上述のような出力文書の出力要求を端末20から受信したサーバ10が行う処理の手順の例を図11に示す。なお、以下の図11の例の手順の説明において、文書情報DB140には、図6の例のデータ内容が登録されているものとする。
図11を参照し、サーバ10の出力文書生成部160は、サーバ10が受信した出力要求に含まれる出力文書の書式および継承元文書の文書IDを取得する(ステップS30)。本例では、図8の例の挿入スキーマに対応する出力文書の書式が取得される。また、継承元文書の文書IDとしては、説明のための具体例として、文書ID「001」,「002」が取得されるとする。
次に、出力文書生成部160は、ステップS30で取得した出力文書の書式に対応する挿入スキーマを挿入スキーマ記憶部150から取得する(ステップS32)。本例では、図8の例の挿入スキーマが取得される。
さらに、出力文書生成部160は、継承元文書の文書情報を取得する(ステップS34)。出力文書生成部160は、文書情報DB140を参照し、ステップS30で取得した文書IDを含むすべての情報レコードを文書情報DB140から取得する。本例では、文書ID「001」,「002」がステップS30で取得され、文書情報DB140に図6の例のデータ内容が登録されているため、ステップS34で、図6の例の表の行L1,L2の情報レコードが取得される。
ユーザにより指定された挿入スキーマおよび継承元文書の文書情報を取得すると、出力文書生成部160は、出力文書に含める情報を選択する(ステップS36)。出力文書生成部160は、例えば、まず、挿入スキーマを参照し、出力文書中に挿入すべき情報の項目を特定する。図8の例の挿入スキーマの場合、情報を挿入する矩形領域を表す「rectangle」要素それぞれの「name」属性で記述される項目の名前「住所」、「組織名」、「部署」、および「担当者名」を挿入すべき情報の項目として特定する。項目を特定すると、各項目について、ステップS34で取得した継承元文書の文書情報に含まれる各項目の値のうち最新の値を特定する。例えば、ステップS34で文書情報DB140から取得した情報レコードのうち操作日時が最新の情報レコードにおいて、特定した項目(「住所」、「組織名」、「部署」、および「担当者名」)に値が設定されていれば、その値が当該項目の最新の値である。操作日時が最新の情報レコードにおいて値が設定されていない項目については、次に新しい操作日時を含む情報レコードから順に、当該項目に値が設定されているか否かを確認していき、最初に発見された、当該項目に値が設定されている情報レコードにおける設定値を当該項目の最新の値とすればよい。図6を参照する本例の場合、「住所」、「組織名」、および「部署」の各項目の最新の値は、文書ID「002」の情報レコード中の「××市△町1−2−3」、「××商会」、および「営業部」であり、「担当者名」の項目の最新の値は「AAA」である。出力文書生成部160は、上述のように特定した各項目の最新の値を、出力文書に挿入する情報として選択する。
次に、出力文書生成部160は、ステップS36で選択した情報を含む出力文書を生成する(ステップS38)。出力文書生成部160は、挿入スキーマで定義された各矩形領域に、ステップS36で選択した、対応する各項目の最新の値を挿入した出力文書を生成する。本例においてステップS38で生成される出力文書の例は、図9を参照して上述したとおりである。本例の出力文書生成部160は、生成した出力文書を要求元の端末20に対して送信する。ステップS38の後、図11の例の手順の処理は終了する。
図11の例の手順において、処理の順番を一部変更してもよい。例えば、挿入スキーマの取得(ステップS32)を継承元文書の文書情報の取得(ステップS34)の後に行ってもよいし、ステップS32およびステップS34の処理を並行して行ってもよい。
以上で説明した第1実施形態の例において、出力文書に挿入される各項目の情報は、当該項目の情報の抽出元である継承元文書の最新版の情報となる。また、上述の第1実施形態の例において、継承元文書から抽出する情報の項目は、継承元文書において各項目の情報が配置される領域および領域の名前によって指定される。さらに、継承元文書から抽出する情報が配置される領域の名前によって、出力文書に挿入する情報の項目が指定され、この名前をキーとして文書情報DB140から取得される情報が出力文書に挿入される。このため、第1実施形態の例では、文書情報DB140のデータベース固有の問合せ言語によって記述された命令を用いることなく、情報の項目の名前を指定するだけで、出力文書に挿入する情報が文書情報DB140から取得される。
<第2実施形態>
第2実施形態の例では、挿入スキーマにおいて、出力文書中の各項目について、どの書式の継承元文書から抽出された情報を挿入するかを指定する記述を含む。出力文書の生成の際には、各項目について、挿入スキーマで指定された書式の継承元文書から抽出された文書情報に含まれる値のうち最新のものを出力文書に挿入する。文書情報DB140中の文書情報がどの書式の継承元文書から抽出されたかの特定を容易にするため、本実施形態の例では、文書情報DB140において、各継承元文書の文書IDに対応づけて、当該継承元文書の書式の識別情報を登録しておく。このため、本実施形態の例の抽出スキーマには、当該抽出スキーマに対応する書式の識別情報を文書情報DB140に登録することを指示する記述が含まれる。
なお、第2実施形態の例において、サーバ10およびサーバ10を含むシステムの構成は、図1に示す第1実施形態の例と同様である。また、文書情報の抽出および登録の処理の手順ならびに出力文書の生成の処理の手順は、それぞれ図10および図11のフローチャートを参照して説明した例の手順と同様であってよい。
図12および図13を参照し、第2実施形態の例における抽出スキーマの例を示す。図12は、図2に例示する書式Aに対応する抽出スキーマの例であり、図13は、図4に例示する書式Bに対応する抽出スキーマの例である。図12および図13の例の抽出スキーマは、第1実施形態の例の抽出スキーマの例(図3および図5)と同様、XML形式で記述されている。図12において、「<rectangles name = “書式A”>」との記述は、この抽出スキーマに対応する書式の識別情報である「書式A」を文書情報DB140に登録することを指示する命令である。同様に、図13の「<rectangles name = “書式B”>」との記述は、当該抽出スキーマに対応する書式の識別情報「書式B」を文書情報DB140に登録することを指示する命令である。図12および図13において、書式の識別情報に関する「rectangles」要素の記述の他の記述は、それぞれ、図3および図5に例示する第1実施形態における書式A,書式Bの抽出スキーマの記述と同様である。
本実施形態の例において、サーバ10の文書情報抽出部120は、抽出スキーマに従って継承元文書から文書情報を抽出すると、文書IDと抽出した文書情報とに加えて、抽出スキーマ中に記述された書式の識別情報を履歴登録部130に渡す。例えば、図12の例の抽出スキーマに従って文書情報の抽出を行った場合は「書式A」を、図13の例の抽出スキーマに従って文書情報の抽出を行った場合は「書式B」を、履歴登録部130に渡す。履歴登録部130は、文書情報抽出部120から受け取った文書IDおよび文書情報に関連付けて、さらに、受け取った書式の識別情報を文書情報DB140に登録する。
図14は、本実施形態の例における文書情報DB140のデータ内容の例である。図14の例の表は、図6に例示する第1実施形態の例の文書情報DB140と同様の項目「文書ID」、「文書情報」、および「操作日時」に加えて、「継承元書式名」の項目を含む。継承元書式名の項目には、文書情報抽出部120が履歴登録部130に渡した書式の識別情報が設定される。図14の例の表は、まず書式Aの継承元文書である文書ID「001」の文書の作成の履歴が登録され(行L11)、次に、書式Bの継承元文書である文書ID「002」の文書の作成の履歴が登録された(行L12)ことを表す。さらに、行L11と同様の文書(文書ID「001」)の更新の履歴が登録された(行L13)ことが表される。さらにその後、行L12と同様の文書(文書ID「002」)の更新の履歴が登録された(行L14)ことが表される。文書ID「001」の履歴である行L11,L13を参照すると、当該文書において、文書情報の「担当者名」の値が「AAA」から「BBB」に更新されたことがわかる。また、文書ID「002」の履歴である行L12,L14を参照すると、当該文書において、文書情報の「住所」の値が「○○市△町1−2−3」から「××市△町1−2−3」に更新されたことがわかる。
図15は、本実施形態の例における挿入スキーマの例を示す。図15の例の挿入スキーマは、第1実施形態の例における図8の例の挿入スキーマと同様、「住所」、「組織名」、「部署名」、および「担当者名」の各項目の情報を出力文書の対応する各矩形領域に挿入することを表す。ただし、図15の例の挿入スキーマにおいて、「name」属性は、「書式A.住所」,「書式B.部署」等のように、継承元文書の書式を指定する文字列と対応する矩形領域(項目)の名前を表す文字列とを含んで記述されている。図15の例では、「name」属性において、ピリオド(.)の左側の文字列が継承元文書の書式を表し、ピリオド(.)の右側の文字列が項目の名前を表す。よって、図15の例の挿入スキーマは、項目「住所」、「組織名」、および「担当者名」について、「書式A」の継承元文書から抽出された情報を出力文書中に挿入することを表し、項目「部署」について「書式B」の継承元文書から抽出された情報を出力文書中に挿入することを表す。
図16に、本実施形態の例における出力文書の例を示す。図16は、文書情報DB140が図14の例のデータ内容を備える場合に、継承元文書として文書ID「001」,「002」が指定され、図15の例の挿入スキーマに対応する出力文書の書式が指定された場合に、出力文書生成部160が生成する出力文書の例である。出力文書生成部160は、挿入スキーマを参照し、各項目についてどの書式の継承元文書から抽出された情報を用いるかを特定する。そして、文書情報DB140において、特定した書式を「継承元書式名」の値として含む情報レコードであってユーザにより指定された継承元文書の文書IDを含む情報レコードを参照し、当該項目の最新の値を取得して出力文書中の当該項目の領域に挿入する情報として選択する。本例では、「住所」、「組織名」、および「担当者名」の各項目について、図15の例の挿入スキーマで指定された「書式A」を含む文書ID「001」の2つの情報レコード(図14の行L11,L13)のうち操作日時が最新である行L13における設定値「○○市△町1−2−3」、「××商会」、および「BBB」を選択する。また、項目「部署」について、図15の例の挿入スキーマで指定された「書式B」を含む文書ID「002」の2つの情報レコード(図14の行L12,L14)のうち操作日時が最新である行L14における設定値「営業部」を出力文書中に挿入する情報として選択する。以上のように挿入スキーマに記述された各矩形領域において選択された値が、図16に例示する出力文書の対応する各破線矩形領域に挿入されている。
以上で説明した第2実施形態の例では、出力文書に挿入される項目ごとに予め指定された書式の継承元文書から抽出された情報のうち最新の情報を当該項目の値として含む出力文書が生成される。したがって、当該項目について指定された書式と異なる書式の継承元文書から抽出された情報は、その継承元文書の文書IDが出力要求に含まれていたとしても、当該項目の領域に挿入する値の候補にならない。例えば図14の例の文書情報DB140において、文書情報の下位項目「住所」の値に着目すると、書式Bである文書ID「002」の最新の履歴には、「××市△町1−2−3」の値が設定されている。しかし、挿入スキーマにおいて「住所」の項目には書式Aの継承元文書から抽出した情報を用いる旨が記述されているため、上述の例において、出力文書には、項目「住所」に対応する矩形領域に書式Aである文書ID「001」の最新の履歴の情報レコード(行L13)における値「○○市△町1−2−3」が挿入されている。
<第3実施形態>
第3実施形態の例のサーバ10は、挿入スキーマおよび継承元文書の指定を含む出力要求に応じて生成した出力文書の修正を受け付け、その修正内容を継承元文書に反映させる処理を行う。言い換えると、生成した出力文書の更新に応じて継承元文書を更新する処理を行う。
図17は、第3実施形態の例のサーバ10の内部構成の概略の例を示すブロック図である。図17の例のサーバ10は、図1の例のサーバ10が備える各構成要素に加えて、更新処理部170を備える。なお、図17において、図1に例示するサーバ10と同様の要素には同様の符号を付し、その詳細な説明を省略する。
本実施形態の例の出力文書生成部160は、上述の第1実施形態または第2実施形態の各例と同様に出力文書を生成する。このとき、出力文書生成部160は、出力文書中に挿入する情報の項目ごとに、当該項目の値の取得元となった文書情報DB140中の情報レコードに含まれる文書IDの値を、例えば図示しない一時記憶装置等に記録しておく。さらに、出力文書生成部160は、生成した出力文書と上述の項目ごとに記録した文書IDの値とを更新処理部170に渡す。
更新処理部170は、出力文書生成部160が生成した出力文書の修正を受け付けて出力文書を更新すると共に、その修正の内容に従って継承元文書の文書情報の更新の履歴を文書情報DB140に登録する。更新処理部170は、出力文書と当該出力文書中の項目ごとに記録された文書IDの値とを出力文書生成部160から受け取ると、挿入スキーマで定義された出力文書中の各矩形領域の内容の編集を受け付ける表示画面を出力文書の出力要求の要求元の端末20に表示させる。この表示画面を確認したユーザにより、矩形領域の内容が編集されて出力文書の更新が指示されると、更新処理部170は、更新後の内容を含む出力文書を生成する。さらに、更新処理部170は、内容が変更された項目(矩形領域)について記録された文書IDを含む新たな情報レコードを文書情報DB140に作成し、この情報レコードにおいて、文書情報における当該項目の更新後の値を設定し、操作日時として現在の時刻を設定する。なお、内容に変更のない項目については、文書情報DB140に登録済みの当該文書IDの情報レコードのうち最新のものに含まれる値をコピーして、当該新たな情報レコードの当該項目に設定する。
図18を参照し、更新処理部170が行う処理の手順の例を説明する。更新処理部170は、出力文書と当該出力文書中の項目ごとに記録された文書IDの値とを出力文書生成部160から受け取った場合に、図18に例示する手順の処理を開始する。
まず、更新処理部170は、出力文書の出力要求を行った要求元の端末20において、出力文書生成部160が生成した出力文書を表示させる(ステップS40)。更新処理部170は、例えば、出力文書を表示装置に表示させる表示制御情報を生成して端末20に送信することで、端末20の表示装置に出力文書を表示させる。ステップS40で更新処理部170が端末20に表示させる表示画面は、出力文書だけでなく、挿入スキーマで定義された出力文書中の各矩形領域の内容の編集を受け付ける旨を表す情報も含む。この表示画面の一例を図19に示す。図19に示す表示画面は、図16の例の出力文書における各破線矩形領域の内容の編集を受け付ける場合の例である。図19の例の表示画面では、各破線矩形をユーザが視認可能に表示させ、かつ、「更新」ボタンを表示させる。このような態様の表示により、各矩形領域の内容の編集が受け付けられる旨を表す。
次に、更新処理部170は、ステップS40で表示させた出力文書の更新を受け付ける(ステップS42)。例えば、図19の例の表示画面を確認したユーザが、端末20の図示しない入力装置を用いて特定の破線矩形領域の内容を編集して「更新」ボタンを押下(例えば、マウスによる「クリック」やキーボードにおける決定(リターン)キーの押下等)すると、ユーザにより編集された項目の内容が端末20からサーバ10に送信される。更新処理部170は、このように端末20からサーバ10に送信された内容を出力文書の更新の内容として受け付ける。ここでは、説明のための具体例として、ユーザが、図19の例の表示画面において、項目「住所」に対応する破線矩形領域aの内容を編集して「××市△町1−2−3」に変更し、項目「部署名」に対応する破線矩形領域bの内容を編集して「第一営業部」に変更したとする。この例の場合、項目「住所」の内容「××市△町1−2−3」および項目「部署名」の内容「第一営業部」が端末20からサーバ10に送信され、更新処理部170により受け付けられる。
更新処理部170は、ステップS42で受け付けた更新の内容に従って、更新後の出力文書を生成する(ステップS44)。上述の具体例を参照し、ステップS42で受け付けた項目「住所」の内容「××市△町1−2−3」および項目「部署名」の内容「第一営業部」で、図16の例の出力文書(更新前の出力文書)の「住所」および「部署名」の各項目の内容を更新した出力文書を生成する。図20に、更新後の出力文書の例を示す。なお、更新後の出力文書は、要求元の端末20に送信される。
更新後の出力文書を生成すると、更新処理部170は、更新された項目の値の抽出元である継承元文書を特定する(ステップS46)。これは、出力文書中の項目ごとに出力文書生成部160により記録された、当該項目の値の取得元となった文書情報DB140中の情報レコードに含まれる文書IDの値を参照することで特定される。図16の例の出力文書を参照する本例では、「住所」、「組織名」、および「担当者名」の各項目の値の取得元として文書ID「001」が記録され、項目「部署名」の値の取得元として文書ID「002」が記録されている(第2実施形態の例の上述の説明を参照)。よって、本例では、ステップS46で、更新された項目「住所」の値の抽出元の継承元文書が文書ID「001」の文書であり、項目「部署名」の値の抽出元の継承元文書が文書ID「002」の文書であることが特定される。
更新された項目のそれぞれについてステップS46で継承元文書を特定すると、更新処理部170は、特定した継承元文書の文書IDに関連付けて、更新後の項目の値を含む履歴を文書情報DB140に登録する(ステップS48)。項目「住所」について文書ID「001」、項目「部署名」について文書ID「002」の継承元文書が特定される本例の場合、更新処理部170は、例えば、文書ID「001」および文書ID「002」をそれぞれ含む2つの新たな情報レコードを文書情報DB140において生成する。そして、文書ID「001」を含む新たな情報レコードにおいて、文書情報の下位項目「住所」の値として更新後の「××市△町1−2−3」を設定する。また、文書ID「002」を含む新たな情報レコードにおいて、文書情報の下位項目「部署名」の値として更新後の「第一営業部」を設定する。なお、これらの2つの新たな情報レコードにおいて、更新されていない項目については、対応する文書IDを含む登録済みの情報レコードのうち操作日時が最新である情報レコードの文書情報の各下位項目の値をコピーして設定すればよい。さらに、更新処理部170は、これらの2つの新たな情報レコードの操作日時の値として現在の時刻を設定する。
図21に、ステップS48が完了した時点での文書情報DB140のデータ内容の例を示す。図21の例の表において、行L11〜L14の内容は、図14の例の表の内容と同一である。図21の例の表の行L15,L16が示す2つの情報レコードは、ステップS48で更新処理部170が登録する情報レコードの例である。行L15は、文書ID「001」の継承元文書の更新の履歴を表し、行L16は、文書ID「002」の継承元文書の更新の履歴を表すものと捉えられる。
ステップS48の後、図18の例の手順の処理は終了する。
上述の図18の説明では、出力文書の更新の受付(ステップS42)の際に、出力文書中の各項目の内容をユーザが自由に編集するものとして説明した。他の例では、ユーザによる自由な編集を受け付ける代わりに、あるいは、自由な編集を受け付けることに加えて、各項目の更新後の値の候補を提示してユーザに選択させてもよい。例えば、更新処理部170は、文書情報DB140を参照し、出力文書中の各項目について、現在の出力文書中の値と異なる値が設定された情報レコードの有無を確認し、そのような情報レコードが存在する場合に、当該情報レコード中の当該項目の設定値を更新後の値の候補として端末20の表示装置に表示させる。例えば、文書情報DB140が図14の例のデータ内容を備え、図16の例の出力文書の更新を受け付ける上述の例の場合、図16の例の出力文書中の値と異なる値を含む文書情報DB140中の情報レコードが存在するのは、「住所」および「担当者」の項目である。よって、「住所」および「担当者」の各項目の更新後の値の候補として、それぞれ、表示中の出力文書中の値「○○市△町1−2−3」,「BBB」と異なる値「××市△町1−2−3」(図14の行L14),「AAA」(図14の行L11)を表示させる。また、表示中の出力文書中の値の取得元である情報レコードに含まれる操作日時よりも新しい操作日時を含む情報レコードのみを、更新後の値の候補の検索対象としてもよい。
なお、更新処理部170は、ステップS48で、文書情報DB140に更新の履歴を登録するだけでなく、対象の継承元文書自体のデータを、ステップS48で登録する履歴に合わせて更新してもよい。例えば、継承元文書が図示しないデータベースに格納されている場合、当該継承元文書の文書IDを用いてデータベースから継承元文書を取得し、取得した文書において該当する項目の値を更新後の値に変更することで当該文書を更新し、更新した文書をデータベースに登録してもよい。
第3実施形態の例により、出力文書に対する更新の内容が、更新に係る項目の情報の抽出元である継承元文書の更新の履歴として文書情報DB140に登録される。
<第4実施形態>
上述の第1実施形態〜第3実施形態の例では、継承元文書から抽出されて文書情報DB140に登録された文書情報の一部の値をそのまま出力文書に挿入する。第4実施形態の例では、文書情報の一部の値を用いて、予め設定された規則に従って決定される値をさらに出力文書に挿入する。
第4実施形態の例のサーバ10の内部構成は、図1の例と同様であってよい。また、第4実施形態の例においても、継承元文書からの情報の抽出および登録ならびに出力文書の生成の処理の基本的な手順は、図10および図11に例示するフローチャートのとおりであってよい。
図22および図23を参照し、本実施形態の例で用いる継承元文書の書式およびその抽出スキーマの例を説明する。図22は、ある書式Eに従って作成された継承元文書を模式的に示す図である。図22に例示する書式Eの文書は、品名、型番、および数量の各項目を有する表を含む。図23は、図22に例示する書式Eに対応する抽出スキーマの例である。図23の例の抽出スキーマは、図3および図5等を参照して上述した各種の抽出スキーマの例と同様、XML形式で記述されている。図23の例の抽出スキーマには、文書に含まれる表から情報を抽出することが記述されている。図23の各行の「rectangle」要素は、文書中の表における特定の欄(セル)から情報を抽出することを表す。各「rectangle」要素中の「col」属性は、表における列(カラム)を指定する記述であり、「row」属性は、表における行(ロー)を指定する記述である。「col」属性の“0”,“1”,“2”の数値は、表中の列の番号を表し、それぞれ、図22の例の書式Eに従った文書中の表の左から1番目の列、左から2番目の列、および左から3番目の列を指す。また、「row」要素の“auto”の文字列は、文書中の表が有する実際の行の数に合わせて、自動的に行番号を指定することを表す。本例では、表の2行目から最後の行までの番号が指定される。2行目から開始するのは、表の1行目に各列の項目の名前が記載されるためである。また、「name」属性は、対応する「rectangle」要素により抽出される情報の項目の名前を表す。図23の例の抽出スキーマにおいて「name」属性に設定される名前は、図22に例示する書式Eの文書の表における各列の項目の名前と同じ文字列に設定される。
図22に例示する書式Eの文書を文書情報の抽出の対象として指定する登録要求が端末20からサーバ10に対して行われると、サーバ10は、図23の例の抽出スキーマに従って、当該文書から文書情報を抽出して文書情報DB140に登録する。この抽出・登録処理の基本的な手順は、図10の例の手順と同様であってよい。本例において、図23の例の抽出スキーマの1行目の「rectangle」要素の記述に従い、文書情報抽出部120は、項目「品名」の内容として、図22の例の表の左から1番目の列の2行目の「xxx」および3行目の「aaa」を抽出する。同様に、項目「型番」の内容として、図22の例の表の左から2番目の列の2行目の「yyy」および3行目の「bbb」を抽出し、項目「数量」の内容として、図22の例の表の左から3番目の列の2行目の「3」および3行目の「10」を抽出する。さらに、履歴登録部130は、文書情報抽出部120が抽出した文書情報を、当該文書の文書ID(ここでは、「003」とする)に関連付けて文書情報DB140に登録する。
図24は、図22の例の文書から図23の例の抽出スキーマに従って抽出した文書情報を登録した場合の文書情報DB140のデータ内容の例である。図24の例の表は、図6等に例示する文書情報DB140と同様、文書ID、文書情報、および操作日時の項目を有する。ただし、図24の例において文書情報の下位項目は、図23の例の抽出スキーマで定義されている各項目「品名」、「型番」、および「数量」である。図24の例の表は、さらに、「行」および「挿入」の各項目を有する。「行」の項目は、対象の文書中の表における行の番号を示す。本例では、文書中の表における行ごとに、当該行の各列の欄から抽出した内容を含む情報レコードが文書情報DB140中に生成される。よって、図24の例の表は、図22の例の文書中の表における2行目および3行目にそれぞれ対応する2つの情報レコード(行「1」,「2」)を備える。このように本例では、1つの文書からの1回の文書情報の抽出に応じて、複数の情報レコードが文書情報DB140に登録され得る。これら複数の情報レコードにおいて、操作日時の項目は同じ値に設定される。図24の例の表の「挿入」の項目は、当該情報レコード中の文書情報が出力文書の生成のために出力文書生成部160により参照されたことがあるか否かを表す。文書情報DB140に当該情報レコードが登録された時点では、その文書情報は未だ出力文書の生成のために参照されていないので、その旨を表す値を「挿入」の項目に設定するか、あるいは、「挿入」の項目の値を空(なし)に設定しておく。図24は、履歴登録部130による登録が行われた時点での文書情報DB140のデータ内容の例を示すため、図24の例の表において挿入の項目の値は空である。また、本例において、当該情報レコードの文書情報が出力文書の生成のために参照されると、挿入の項目の値は「済み」に設定されるとする。挿入の項目の値は、出力文書の生成時に用いられ、この値の利用の態様は後述する。
図25は、本実施形態の例で生成される出力文書の書式の例を模式的に示す図である。図25の例の書式の出力文書は、表Tを含む。表Tは、図24の例の文書情報DB140中の文書情報の各下位項目「品名」、「型番」、および「数量」と同じ名前の項目と、「区分」の項目とを備える。表Tの各欄に、指定された継承元文書から抽出された文書情報に基づく値が挿入される。
図26は、図25の例の書式に対応する挿入スキーマの例である。図26の例の挿入スキーマは、XML形式で記述されている。図26の例の挿入スキーマは、出力文書中に表を生成して、表における各欄に、指定された継承元文書の文書情報に基づく値を挿入することを表す。図26の例の挿入スキーマにおいて、各「rectangle」要素は、出力文書中の表の各列の項目に対応する。「col」属性は出力文書中の表の列の番号を表す。図26に例示する「col」属性の番号“0”,“1”,“2”は、それぞれ、表の左から1番目、2番目、および3番目の列を指す。また、「row」属性の“auto”の文字列は、指定された継承元文書の文書情報DB140中の情報レコードにおける「行」の値で示される番号に対応する行を、文書情報の挿入のために出力文書中の表において生成することを表す。なお、「name」属性は、出力文書中の表において対応する列の項目の名前を表す。図26に例示する「name」属性の値「品名」、「型番」、および「数量」は、図24の例の文書情報の下位項目の名前に対応する。出力文書中の表の各行における「品名」および「型番」の欄には、指定された継承元文書の文書情報DB140中の情報レコードであって対応する「行」の値を含む情報レコードのうち最新の「品名」および「型番」の値が設定される。また、図26の例の挿入スキーマにおいて、「数量」の「name」要素に続いて記述されている「value=”func1”」は、「数量」の項目の値を決定するために予め定められた規則を表す。この規則は、例えば、指定された継承元文書の文書情報DB140中の情報レコードに含まれる値を入力とし、出力文書の「数量」の項目の値を出力とする関数の形式で定義すればよい。また、図26の挿入スキーマの例には示していないが、本例では、この規則により、図25の例の表Tの項目「区分」の値も決定される。以下の[関数例1]は、出力文書中の表における「数量」および「区分」の値を決定する規則である関数“func1”の具体例である。
[関数例1]
(1)指定された継承元文書の文書情報DB140中のすべての情報レコードの項目「挿入」が空である場合、これらの情報レコードのうち、「行」、「品名」、および「型番」の値が同じ組合せである情報レコードの集合ごとに、「操作日時」が最新のものに含まれる「数量」の値を、出力文書の表で対応する行の「数量」の値として挿入する。さらに、当該「数量」の値を挿入した行の「区分」の値を「新規」に設定する。
(2)指定された継承元文書の文書情報DB140中の情報レコードにおいて、項目「挿入」の値が「済み」である情報レコードと項目「挿入」の値が空である情報レコードとの両方が存在する場合、「行」、「品名」、および「型番」の値が同じ組合せである情報レコードの集合ごとに、次の方針に従って、出力文書の表で対応する行の「数量」および「区分」の値を決定する。
上述の情報レコードの集合において、項目「挿入」の値が空であるものの中で「操作日時」が最新の情報レコードをレコードAとし、項目「挿入」の値が「済み」であるものの中で「操作日時」が最新の情報レコードをレコードBとし、
(i)レコードAの「数量」の値がレコードBの「数量」の値より大きい場合は、その差分を、出力文書の表で対応する行の「数量」の値とし、当該行の「区分」の値を「追加」とする。
(ii)レコードAとレコードBとの間で「数量」の値が一致する場合は、対応する行を出力文書の表中に生成しない。
(iii)レコードAの「数量」の値がレコードBの「数量」の値より小さい場合は、その差分を、出力文書の表で対応する行の「数量」の値とし、当該行の「区分」の値を「取消」とする。
(3)指定された継承元文書の文書情報DB140中のすべての情報レコードの項目「挿入」が「済み」である場合、出力文書の生成を中止する。
ここで、上述の[関数例1]に記述される各場合の意味をより詳細に説明する。(1)の場合、継承元文書から抽出された文書情報が未だ出力文書の生成で参照されていないため、「行」、「品名」、および「型番」の組合せごとに最新の「数量」を出力文書の表に挿入する。また、この「数量」の値が初めて出力文書の表に記載されることから、「区分」の値が「新規」に設定される。(2)の場合、継承元文書から抽出された文書情報が出力文書の生成で参照された後、当該継承元文書が更新されて当該更新の履歴が文書情報DB140に登録され、この更新後の文書情報は出力文書の生成で未だ参照されていないと考えられる。そこで、出力文書の生成で参照されたことのある更新前の「数量」の値と出力文書の生成で参照されたことのない更新後の「数量」の値とを比較し、更新後の値の方が大きい場合(上記の(i))、更新の前後の差分が出力文書の表中の「数量」に設定され、この差分の値だけ更新前の「数量」から増やすことを表すように「区分」の値が「追加」に設定される。更新の前後で「数量」の値が変わらない場合(上記の(ii))、更新後の「数量」と同じ値を挿入した表を含む出力文書を作成済みであることから、対応する行を出力文書中の表に含めない。更新後の「数量」の値の方が小さい場合(上記の(iii))、更新の前後の差分が出力文書の表中の「数量」に設定され、この差分の値だけ更新前の「数量」から減らすことを表すように「区分」の値が「取消」に設定される。なお、(3)の場合は、継承元文書から抽出された文書情報のすべてがすでに出力文書の生成で参照されたと考えられることから、この継承元文書を指定した出力要求に基づく新たな出力文書の生成を行わない。
以下、図26の例の挿入スキーマに従った出力文書の生成の例を説明する。例えば、文書情報DB140が図24の例のデータ内容を備える場合に、継承元文書の文書IDとして「003」が指定され、出力文書の書式として図26の例の挿入スキーマに対応する書式が指定された出力文書の出力要求をサーバ10が端末20から受け取ったとする。このとき、サーバ10の出力文書生成部160は、図11の例の手順に従い、挿入スキーマ記憶部150から図26の例の挿入スキーマを取得し(ステップS32)、文書ID「003」の文書情報として図24の例の表に示す2つの情報レコードを取得する(ステップS34)。そして、上述の図26の例の挿入スキーマの記述に従って、出力文書中の表を作成し、この表の各欄に挿入する値を決定し(ステップS36)、決定した値を含む出力文書を生成する(ステップS38)。表の各欄に挿入する値を決定する際には、出力文書生成部160は、上述の[関数例1]の規則に従って、出力文書中の表の各行の「数量」および「区分」の値を決定する。図27に、本例において生成される出力文書の一例を示す。図27を参照し、出力文書中の表は、図24の例の表の各情報レコード(文書ID「003」;行「1」,「2」)に対応する行を有する。本例では、指定された継承元文書の文書情報DB140中の情報レコードの「挿入」の値は、すべて空なので、[関数例1]の(1)の場合に該当する。また、「行」、「品名」、および「型番」の値の組合せのそれぞれに対応する情報レコードは1つずつしか存在しない。したがって、各情報レコードは、その「行」、「品名」、および「型番」の組合せに対して最新の「数量」の値を含むものであると言える。以上より、図24の例の表の情報レコードの各「行」の「数量」の値がそのまま、対応する出力文書中の表の行の「数量」に設定されている。また、出力文書中の表の各行の「区分」の値は「新規」に設定されている。
なお、第4実施形態の例において、出力文書生成部160は、出力文書の生成が完了すると、当該出力文書の生成のために取得した文書情報DB140中の情報レコードにおいて、「挿入」の項目の値を、出力文書の生成で参照されたことがある旨を表す「済み」に設定する。図27の例の出力文書を生成する本例では、出力文書生成部160は、図24の例の表における各行の項目「挿入」の値を「済み」に設定する。
第4実施形態の例においても、継承元文書をユーザが更新した場合に、このユーザの指示に応じて、更新後の継承元文書の文書情報の抽出および登録が行われることがある。例えば、図22に例示する継承元文書中の表の内容をユーザが編集して、図28に例示する内容にしたとする。図28の例の継承元文書中の表では、品名「xxx」,型番「yyy」の「数量」の値が図22における「3」から「5」に変更されている。図28の例の継承元文書を指定して、ユーザが文書情報の抽出および登録を指示すると、サーバ10の文書情報抽出部120および履歴登録部130により、当該文書の表の各欄の内容が抽出されて文書情報DB140に登録される。図29に、この時点での文書情報DB140のデータ内容の例を示す。
図29を参照し、行L23,L24の2つの情報レコードが、図28の例の継承元文書の更新の履歴である。なお、図29の例の表の行L21,L22は、図24の例の表に示す2つの情報レコードと同じレコードである。ただし、行L21,L22では、項目「挿入」の値に「済み」が設定されており、これらの情報レコードの文書情報が出力文書(図27参照)の生成で参照された後であることを表す。
文書情報DB140が図29の例のデータ内容を備えるときに、文書ID「003」の継承元文書を指定して出力文書の出力要求が行われた場合、サーバ10の出力文書生成部160は、図26の例の挿入スキーマと、図29の例の行L21〜L24の情報レコードと、を用いて出力文書を生成する。この例では、継承元文書の情報レコード中に、項目「挿入」の値が「済み」であるものと「空」であるものとが混在することから、上述の挿入スキーマの[関数例1]の(2)の場合に該当する。行「1」、品名「xxx」、および型番「yyy」の組合せを含む情報レコードの集合は、図29の行L21,L23の2つを含む。行L21,L23のうち、[関数例1]の(2)で定義されるレコードA(「挿入」が「空」であるものの中で操作日時が最新)は、行L23であり、レコードB(「挿入」が「済み」であるものの中で操作日時が最新)は、行L21である。両者の「数量」の値を比較すると、レコードAである行L23は「5」、レコードBである行L21は「3」で、レコードAの「数量」の値が「2」だけ大きい。よって、行L21,L23については[関数例1]の(2)の(i)の場合に該当し、出力文書の表で対応する行の「数量」の値は、レコードA,B間の「数量」の値の差分である「2」に設定され、「区分」の値は「追加」に設定される。また、図29の例の行L21〜L24の情報レコードのうち、行「2」、品名「aaa」、および型番「bbb」の組合せを含む情報レコードの集合は、図29の行L22,L24の2つを含む。行L22,L24のうち、[関数例1]の(2)で定義されるレコードA(「挿入」が「空」であるものの中で操作日時が最新)は、行L24であり、レコードB(「挿入」が「済み」であるものの中で操作日時が最新)は、行L22である。両者の「数量」の値を比較すると、いずれも「10」で一致する。よって、行L22,L24については[関数例1]の(2)の(ii)の場合に該当することから、出力文書中の表には、行「2」、品名「aaa」、および型番「bbb」の組合せに対応する行は生成されない。以上で説明したように生成される出力文書の例を図30に示す。図30の例の出力文書中の表は、継承元文書の更新の前後で「数量」の値に変更のあった、品名「xxx」および型番「yyy」の組合せに対応する行を含み、継承元文書の更新の前後で「数量」の値に変更のなかった、品名「aaa」および型番「bbb」の組合せに対応する行は含まない。
図30の例の出力文書の生成の後、出力文書生成部160は、出力文書の生成で参照した文書情報DB140中の情報レコードのうち、項目「挿入」の値が空であった、図29の行L23,L24の「挿入」の値を「済み」に設定する。
出力文書の生成のさらに他の例として、図29に例示する行L21〜L24のすべての情報レコードの「挿入」の値が空である場合を考える。この例では、図22の例の継承元文書の作成の履歴が文書情報DB140に登録され(図24,図29の行L21,L22)、この履歴を参照して出力文書(図27)を生成する前に、継承元文書が図28の例のとおりに更新されて、その更新の履歴が文書情報DB140に登録された(図29の行L23,L24)とする。この例において、文書ID「003」の継承元文書を指定した出力文書の出力要求に応じて、図26の例の挿入スキーマに従って出力文書を生成する場合、指定された継承元文書の情報レコードのすべての「挿入」の値が空であるため、[関数例1]の(1)の場合に該当する。したがって、行「1」、品名「xxx」、および型番「yyy」の組合せと、行「2」、品名「aaa」、および型番「bbb」の組合せと、のそれぞれについて、当該組合せを含む情報レコードの集合のうち最新の操作日時を含む情報レコードの「数量」の値が、出力文書中の表で対応する行の「数量」の値として設定される。さらに、各行の「区分」の値は「新規」となる。本例において、各組合せについて最新の情報レコードは行L23,L24であるため、出力文書には、品名「xxx」および型番「yyy」に対して数量「5」である行と、品名「aaa」および型番「bbb」に対して数量「10」である行とを含む表が生成される。本例の出力文書は、例えば、図27に例示する出力文書において、表中の品名「xxx」および型番「yyy」の行の「数量」を「3」から「5」に変更したものであってよい。本例において、出力文書生成部160は、出力文書の生成が完了した後、指定された継承元文書について文書情報DB140から取得した情報レコード(行L21〜L24)のすべてにおいて、「挿入」の値を「済み」に設定する。つまり、実際に出力文書の表中に挿入する値の取得元となった、最新の情報レコード(行L23,L24)だけでなく、出力文書の表中に挿入する値の取得元にならなかった古い情報レコード(行L21,L22)についても、出力文書の生成のために「参照済み」であることから、「挿入」の値を「済み」に設定しておく。
<変形例等>
以上で説明した各種の実施形態の例は、本発明の実施の形態を限定するものではなく、本発明の実施の形態には、各種の変形例があってよい。
例えば、第4実施形態の例の上記の説明では、説明を簡単にするため、図22の例の書式Eに従う継承元文書が1つだけ指定される場合の出力文書の生成の様子を説明した。しかし、第4実施形態の例においても、複数の継承元文書の文書情報から出力文書を生成するようにしてもよい。
例えば、図25に例示する出力文書の書式において、表以外の部分に配置されている文字列「××市△町1−2−3」,「××商会」,「BBB 様」を、第1実施形態および第2実施形態の例で説明したのと同様の処理によって出力文書に挿入してもよい。例えば、「住所」、「組織名」、および「担当者名」を含む継承元文書の書式A(図2)に対応する抽出スキーマ(図3)を用いて、書式Aの文書の文書情報を抽出して文書情報DB140に登録しておく。さらに、図26に例示する挿入スキーマの記述に加えて、図8の例の挿入スキーマの「住所」、「組織名」、および「担当者名」に係る記述を含む挿入スキーマを用いて、図22の例の書式Eの継承元文書だけでなく書式Aの継承元文書をユーザに指定させて出力文書を生成すればよい。この場合、出力文書の表に係る部分は、上述の第4実施形態の例で説明したとおりの処理を行い、表の他の部分については、第1実施形態の例と同様の処理を行って、文書情報の対応する項目の値を出力文書に挿入すればよい。また、この例で用いる挿入スキーマにおいて、第2実施形態の例で説明したように、表に係る部分は書式Eの継承元文書から抽出された文書情報を用い、表の他の部分は書式Aの継承元文書から抽出された文書情報を用いることを指示する記述を含めていてもよい。
また例えば、第4実施形態の例において、表を含む継承元文書の書式Eに従う複数の継承元文書を指定して、出力文書を生成してもよい。この例の場合、例えば、指定された複数の継承元文書のそれぞれについて、上述の第4実施形態の例で説明したとおりに、出力文書の表中で対応する行の値を設定し、各継承元文書の文書情報に基づく行を並べて1つの表とすればよい。このとき、異なる継承元文書の文書情報に基づく複数の行であって同じ「品名」および「型番」を含む行が存在する場合、これらの行の「数量」の値を合計して1つの行として纏めてもよい。また、[関数例1]で示した規則に従って「数量」と「区分」の値を決定するようにしてもよい。
また、変形例では、上述の第1実施形態〜第4実施形態の例の説明で用いた各種の抽出スキーマおよび挿入スキーマと異なる態様の抽出スキーマおよび挿入スキーマを用いてもよい。例えば、上述の各例の抽出スキーマおよび挿入スキーマでは、文書情報を抽出する領域および文書情報を挿入する領域は、すべて矩形領域で定義されている。当然ながら、これらの領域として、矩形の他の形状の領域を定義しておいてもよい。また例えば、上述の各例の抽出スキーマおよび挿入スキーマは、いずれも、XML形式で記述されている。変形例では、XML形式と異なる形式で記述された抽出スキーマおよび挿入スキーマを用いてもよい。文書情報の抽出および挿入の領域とその名前とを定義する情報を含み、サーバ10において解釈可能な形式であれば、どのような形式の抽出スキーマおよび挿入スキーマを用いてもよい。
なお、上述したサーバ10の各種の機能の一部を端末20に設けてもよい。
以上に例示したサーバ10は、典型的には、汎用のコンピュータにて上述のサーバ10の各部の機能又は処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、図31に示すように、CPU(中央演算装置)80、メモリ(一次記憶)82、各種I/O(入出力)インタフェース84等がバス86を介して接続された回路構成を有する。また、そのバス86に対し、例えばI/Oインタフェース84経由で、ハードディスクドライブ(HDD)88やCDやDVD、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブ90が接続される。このようなドライブ88又は90は、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク経由で、HDD88等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されCPUにより実行されることにより、実施形態の処理が実現される。
なお、以上では、サーバ10を1台のコンピュータにより実現する例の実施形態を説明したが、サーバ10の上述の例の各種の機能を複数のコンピュータに分散させて実現してもよい。