【文献】
服部 元 外2名,表形式情報集約のための連想性の高いオブジェクトラベルの自動抽出方式,電子情報通信学会論文誌 (J88−D−I),日本,社団法人電子情報通信学会,2005年 9月 1日,第J88-D-I巻 第9号,p.1467-1476
(58)【調査した分野】(Int.Cl.,DB名)
第1の表の行数と第2の表の行数の差分と、前記第1の表の列数と前記第2の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象として、前記第1の表と前記第2の表の各行又は各列で対応付ける第1の対応付け手段と、
前記第1の対応付け手段によって対象としなかった列又は行のいずれか一方を対象とし、前記第1の対応付け手段によって対応付けられなかった行又は列内のセルを除外して、前記第1の表と前記第2の表の各列又は各行で対応付ける第2の対応付け手段
を具備する情報処理装置。
【発明を実施するための形態】
【0022】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、全ての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
【0023】
本実施の形態である情報処理装置100は、表同士の差分を抽出するものであって、
図1の例に示すように、表取得モジュール110、行列数取得モジュール120、計算モジュール130、判断モジュール140、文字特定モジュール150、対応付けモジュール160、出力モジュール170を有している。
【0024】
表取得モジュール110は、行列数取得モジュール120、文字特定モジュール150と接続されている。表取得モジュール110は、対象となる2つの表(以下、第1の表、第2の表ともいう)を取得する。ここでの表は、電子データとしての表(いわゆる表計算プログラム等によって作成されるスプレッドシート等)、画像としての表(スキャナ等の画像読取装置によって読み取られた画像)のいずれであってもよいし、これらの組み合わせ(例えば、第1の表が電子データ、第2の表が画像)であってもよい。なお、第1の表と第2の表との関係は、いずれか一方の表を元として、編集した結果が他方の表であってもよい。ここでの表の編集には、行又は列を単位とした挿入、削除、移動等の他に、表を構成するセル内の文字の変更等を含めてもよい。また、2つの表は独立に作成されたものであってもよいし、2つの表の作成の関係が判然としない場合であってもよい。例えば、2つの表が同じであることを確認するために処理を行うことがある。また、2つの表は、1つの文書内に含まれていてもよいし、2つの文書からそれぞれ抽出してもよい。
【0025】
行列数取得モジュール120は、表取得モジュール110、計算モジュール130と接続されている。行列数取得モジュール120は、表取得モジュール110によって取得された表の行数と列数を取得する。電子データとしての表であれば、その表の行と列の数を計数してもよいし、その表の属性として行数、列数が含まれている場合は、その属性を抽出すればよい。画像としての表であれば、その表画像を解析して、表の行数、列数と計数すればよい。解析技術は、既存の技術を用いればよい。
計算モジュール130は、行列数取得モジュール120、判断モジュール140と接続されている。計算モジュール130は、行列数取得モジュール120による取得結果(各表の行と列数)を用いて、第1の表の行数と第2の表の行数との差分を算出し、第1の表の列数と第2の表の列数との差分を算出する。例えば、一方の表を元として他方の表を作成した場合、行又は列を単位とした挿入又は削除のいずれかが行われた場合に差分が0以外となる。なお、差分の算出は、減算した結果の絶対値を算出してもよいし、2つの値のうち大の値から小の値を減算するようにしてもよい。
【0026】
判断モジュール140は、計算モジュール130、対応付けモジュール160と接続されている。判断モジュール140は、第1の表の行数と第2の表の行数の差分と、第1の表の列数と第2の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象とする。対応付けモジュール160における行同士の対応付けと、列同士の対応付けのうち、いずれを先に行うかを判断するものである。この判断処理は、行数又は列数の変化量が大きい方(行又は列のいずれか一方)を先に対応付けることで、差分抽出の成功率を高めるものである。つまり、行数の差分が列数の差分よりも多い場合は、対応付けモジュール160によって、行同士の対応付け処理が先に行われ、次に、列同士の対応付け処理が行われる。一方、列数の差分が行数の差分よりも多い場合は、対応付けモジュール160によって、列同士の対応付け処理が先に行われ、次に、行同士の対応付け処理が行われる。
また、判断モジュール140は、第1の表の行数と第2の表の行数の差分と、第1の表の列数と第2の表の列数の差分が等しい場合は、第1の表又は第2の表の行数と列数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。つまり、行数と列数の変化量が同じ場合、元の行数と列数を比較し、数が小さい方から先に対応付けるようにしたものである。同じ行数又は列数の挿入又は削除ならば、行数又は列数の大きい方が、影響を受けにくいので、数が多い方を手掛かりに、数が少ない方(行又は列)を先に対応付けるようにしたものである。なお、「第1の表の行数と第2の表の行数の差分と、第1の表の列数と第2の表の列数の差分が等しい場合」としては、行又は列を単位とした挿入、削除が行われなかった場合、挿入と削除は行われたが、その数(挿入された行数又は列数と削除された行数又は列数)が同じ場合等に起こり得る。なお「第1の表又は第2の表の行数と列数のうち、少ない方の行又は列のいずれか一方」の具体的な組み合わせとして、「第1の表の行数と列数のうち、少ない方の行」、「第1の表の行数と列数のうち、少ない方の列」、「第2の表の行数と列数のうち、少ない方の行」、「第2の表の行数と列数のうち、少ない方の列」のいずれかである。このうちのいずれであってもよいし、このうちの1つを特定してもよい。例えば、第1の表の行数、第1の表の列数、第2の表の行数、第2の表の列数を比較して、最も少ないものの行又は列を特定してもよい。
【0027】
また、判断モジュール140は、第1の表の行数と第2の表の行数の差分と、第1の表の列数と第2の表の列数の差分が等しい場合は、第1の表の各行内の文字数と対応する第2の表の各行内の文字数とで差がある行の数と、第1の表の各列内の文字数と対応する第2の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。つまり、行数と列数の変化量が同じ場合、第1の表と第2の表の一行毎に文字数を計数し、同様に列毎に文字数を計数し、第1の表と第2の表で文字数の差がある行又は列の数が少ない方から先に対応付けるようにしたものである。文字数の変化が少ないということは、挿入又は削除や文字の変更が少ないことが期待できるため、先に対応付けを行うようにしたものである。
さらに、判断モジュール140は、第1の表の行数と第2の表の行数の差分と、第1の表の列数と第2の表の列数の差分が等しい場合であって、第1の表と第2の表の行数と列数が等しいときは、第1の表の各行内の文字数と対応する第2の表の各行内の文字数とで差がある行の数と、第1の表の各列内の文字数と対応する第2の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。なお、「第1の表と第2の表の行数と列数が等しいとき」とは、「第1の表の行数と列数が等しく、第2の表の行数と列数が等しい」ことをいい、互いにいわゆる正方行列である場合に、この条件が成立する。
また、「第1の表の各行内の文字数と対応する第2の表の各行内の文字数とで差がある行の数」とは、2つの表における各行の文字数を計数(各行を構成するセル内の文字数を加算)し、互いに行番号が対応する行(例えば、第1の表の第1行と第2の表の第1行、以下同様)の文字数が異なる行を計数すればよい。「第1の表の各列内の文字数と対応する第2の表の各列内の文字数とで差がある列の数」とは、2つの表における各列の文字数を計数(各列を構成するセル内の文字数を加算)し、互いに列番号が対応する列(例えば、第1の表の第1列と第2の表の第1列、以下同様)の文字数が異なる列を計数すればよい。そして、文字数が異なる行数と文字数が異なる列数のうち、少ない方の行又は列のいずれか一方を対象とする。具体的には、文字数が異なる行数が文字数が異なる列数より少ない場合は、行を対象とする。文字数が異なる行数より文字数が異なる列数が少ない場合は、列を対象とする。
【0028】
文字特定モジュール150は、表取得モジュール110、対応付けモジュール160と接続されている。文字特定モジュール150は、2つの表を構成するセル内の文字を特定するものである。電子データとしての表であれば、各セル内の文字(0文字以上の文字列を含む)を抽出すればよい。また、画像としての表であれば、解析結果としての各表のセルを抽出し、そのセル内の文字画像を認識すればよい。なお、処理結果は、セルの位置(行番号と列番号で特定される表内の位置)とそのセル内の文字とが対応付けられている。
【0029】
対応付けモジュール160は、判断モジュール140、文字特定モジュール150、出力モジュール170と接続されている。対応付けモジュール160は、判断モジュール140による判断結果によって、第1の表と第2の表の各行又は各列で対応付ける(第1の対応付け処理)。具体的には、判断モジュール140による判断結果が、行を対象と判断した場合は、第1の表と第2の表の各行で対応付け(第1の行対応付け処理)を行う。又は、判断モジュール140による判断結果が、列を対象と判断した場合は、第1の表と第2の表の各列で対応付け(第1の列対応付け処理)を行う。対応付け処理としては、例えば、各行又は各列のペアの一致率を計算し、最大の一致率が閾値以上ならば、該当の行又は列同士を対応していると判定する。
次に、対応付けモジュール160は、第1の対応付け処理によって対象としなかった列又は行のいずれか一方を対象とし、第1の対応付け処理によって対応付けられなかった行又は列を除外して、第1の表と第2の表の各列又は各行で対応付け(第2の対応付け処理)を行う。具体的には、第1の対応付け処理が行を対象とした場合は、列を対象として、第1の対応付け処理によって対応付けられなかった行内のセルを除外して、第1の表と第2の表の各列で対応付け(第2の列対応付け処理)を行う。第1の対応付け処理が列を対象とした場合は、行を対象として、第1の対応付け処理によって対応付けられなかった列内のセルを除外して、第1の表と第2の表の各行で対応付け(第2の行対応付け処理)を行う。つまり、第1の行対応付け処理と第2の列対応付け処理の組み合わせ、又は、第1の列対応付け処理と第2の行対応付け処理の組み合わせのいずれか一方を行うこととなる。なお、対応付け処理の具体例については、後述する。
そして、対応付けモジュール160は、第1の対応付け処理と第2の対応付け処理によって、第1の表と第2の表とで対応付けられた行又は列内のセルを対応付ける(第3の対応付け処理)。そして、第3の対応付け処理によって対応付けられたセル内の文字を比較する(比較処理)。なお、比較処理の具体例については、後述する。
【0030】
出力モジュール170は、対応付けモジュール160と接続されている。出力モジュール170は、第1の対応付け処理と第2の対応付け処理の結果を出力する。例えば、出力モジュール170は、第1の対応付け処理と第2の対応付け処理によって、対応付けられなかった行又は列を、第1の表と第2の表とで異なる部分として出力するようにしてもよい。逆に、出力モジュール170は、第1の対応付け処理と第2の対応付け処理によって、対応付けられた行又は列を、第1の表と第2の表とで同じ部分として出力するようにしてもよい。なお、出力するとは、例えば、プリンタ等の印刷装置で印刷すること、ディスプレイ等の表示装置に表示すること、ファックス等の画像送信装置で画像を送信すること、メモリーカード等の記憶媒体に記憶すること、他の情報処理装置へ渡すこと等が含まれる。
さらに、出力モジュール170は、セル内の文字の比較結果を出力するようにしてもよい。つまり、第1の対応付け処理と第2の対応付け処理による処理結果と、比較処理によって比較された結果を出力するようにしてもよい。
なお、出力モジュール170は、行又は列の移動が行われた場合、つまり、対応付けモジュール160では、対応付けられた行又は列として扱われるが、対応付けられた行又は列であったとしても、2つの表における行番号又は列番号が異なる場合は、移動があったことを示す表示を行うようにしてもよい。また、行又は列の移動に加え、追加/削除があると、追加/削除された行又は列以降の行番号/列番号が合わなくなるため、2つの表における行番号又は列番号の順番に逆転があった場合に、行又は列の移動があったことを示す表示を行うようにしてもよい。
【0031】
図2は、本実施の形態を利用したシステム構成例を示す説明図である。
情報処理装置100、ユーザ端末210、画像処理装置220は、通信回線290を介してそれぞれ接続されている。通信回線290は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット等であってもよい。
情報処理装置100は、表の差分を抽出する機能を有するサーバーとして実現させてもよいし、クラウドサービスとして実現してもよい。例えば、ユーザ端末210から2つの表が含まれている文書を受け取り、その表の差分を抽出して、ユーザ端末210へ処理結果を戻すようにしてもよい。
また、情報処理装置100を画像処理装置220内に構築するようにしてもよい。画像処理装置220は、スキャナ又は複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)であり、例えば、2つの表が含まれている文書を画像として読み取り、その表の差分を抽出して、その処理結果の画像(出力モジュール170の出力結果を画像としたもの)を印刷してもよいし、ユーザ端末210へ処理結果を送信するようにしてもよい。なお、情報処理装置100は、通信回線290に接続せず、スタンドアローンとして実現するようにしてもよい。
【0032】
図3は、本実施の形態による処理例を示すフローチャートである。
ステップS302では、表取得モジュール110は、2つの表の取得を行う。以下、原本の表を旧表(又はその旧表が記載されている文書を旧文書)、修正が加えられた表を新表(又はその新表が記載されている文書を新文書)を例として示す。
ステップS304では、行列数取得モジュール120は、新旧表の行列数の取得を行う。
ステップS306では、文字特定モジュール150は、各セル内の文字の取得を行う。
ステップS308では、計算モジュール130は、新旧表の行数、列数の差の算出を行う。具体的には、|新表の行数−旧表の行数|、|新表の列数−旧表の列数|の計算を行う。
ステップS310では、判断モジュール140は、行/列どちらを先に比較するかの判断を行う。ステップS308の計算結果で、行数の差分が列数の差分よりも大である場合は、行を先に比較すると判断し、列数の差分が行数の差分よりも大である場合は、列を先に比較すると判断する。
ステップS312では、対応付けモジュール160は、ステップS310での判断結果にしたがって、行又は列のいずれかの対応付けを行う。
ステップS314では、対応付けモジュール160は、行/列の対応情報を使った列又は行の対応付けを行う。ステップS312で対応付けが行われなかった列又は行(ステップS312での対応付けの対象が行である場合は列、ステップS312での対応付けの対象が列である場合は行)のいずれかを対象とした対応付けを行う。
ステップS316では、出力モジュール170は、ステップS312、ステップS314の対応付け処理の結果を出力する。
【0033】
<具体例(1)>
次に、
図4〜
図9を用いて具体例(1)について説明する。第1の表として旧表、第2の表として新表を例として示す。
(1)
図4(b)の例に示す新表420は、
図4(a)の例に示す旧表410に対して第1列目と第2列目の間に新しい列を追加し(修正部分425)、旧表410の第2行第2列(新表420では第2行第3列)のセル内の文字を修正したものである(修正部分430)。行列数取得モジュール120によって、旧表410は2行3列であり、新表420は2行4列であることが判明する。
(2) 次に、計算モジュール130は、行数の差分、列数の差分を算出する。
図4の例の場合、次のように算出する。
行の差分=絶対値(2−2)=0
列の差分=絶対値(3−4)=1
(3) そして、判断モジュール140は、差分の大きい方を最初の比較対象とする。
図4の例の場合、行の差分(0)<列の差分(1)であるので、列を先に対応付けると判断する。
【0034】
対応付けモジュール160は、判断モジュール140の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
(4) 旧表410の1〜3列目の文字をそれぞれ全てつなげる。具体的には、「製品ABC」、「精度85%」、「速度1.5s」となる。
(5) 新表420の1〜4列目の文字をそれぞれ全てつなげる。具体的には、「製品ABC」、「OSWww7」、「精度95%」、「速度1.5s」となる。
(6) 旧表410の1列目と新表420の1〜4列目を比較し、それぞれ一致率を算出する。ここで一致率とは、例えば、旧表410の列毎の文字列から1文字ずつ取り出し、新表420の列毎の文字列に含まれる割合を示すものであり、文字の順番は問わない。また、これとは逆に、新表420の列毎の文字列から1文字ずつ取り出し、旧表410の列毎の文字列に含まれる割合でもよく、これらの割合の合計でも良い。なお、セル内での文字の順番を考慮するようにしてもよい。この場合は、セルの順番は問わない。また、セル内での単語等(例えば、形態素解析結果)における文字の順番を考慮するようにしてもよい。この場合も、セルの順番は問わない。例えば、旧表410の「製品ABC」と、新表420の「製品ABC」、「OSWww7」、「精度95%」、「速度1.5s」のそれぞれの一致率を算出すると、100%、0%、0%、0%となる。なお、文字の順番を考慮した場合は、その順番を考慮した文字列毎に探索すればよい。一致率は、全体の文字数における割合としてもよいし、全体の文字列数における割合としてもよい。
(7) 最も高い一致率が閾値を越える場合、その列同士を一致と判定する。閾値を越えなければ、一致なしとする。
(8) 旧表410の2〜4列目も、同様に行う。その際、すでに一致と判定された列は対象としないようにしてもよい。
その結果、
図5の例((1)列の対応付け)に示すように、列の対応付けが行われる。この一致の情報を、列の対応情報テーブル600に登録する。
図6は、列の対応情報テーブル600のデータ構造例を示す説明図である。列の対応情報テーブル600は、旧表欄610、新表欄620を有している。旧表欄610は、旧表410の対応付けられた列番号を記憶している。新表欄620は、新表420の対応付けられた列番号を記憶している。具体的には、旧表410の1列目と新表420の1列目が対応し、旧表410の2列目と新表420の3列目が対応し、旧表410の3列目と新表420の4列目が対応していることを示している。
【0035】
(9) 行については、列の対応情報テーブル600を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表410の1行目は、列の対応情報テーブル600の旧表欄610を用いて、1列目、2列目、3列目のセル内の文字をつなげて「製品精度速度」を生成する。新表420の1行目は、列の対応情報テーブル600の新表欄620を用いて、1列目、3列目、4列目のセル内の文字をつなげて「製品精度速度」を生成する。旧表410の2行目は、列の対応情報テーブル600の旧表欄610を用いて、1列目、2列目、3列目のセル内の文字をつなげて「ABC85%1.5S」を生成する。新表420の2行目は、列の対応情報テーブル600の新表欄620を用いて、1列目、3列目、4列目のセル内の文字をつなげて「ABC95%1.5S」を生成する。つまり、(8)で対応付けられなかった列内のセルを除外して、旧表410、新表420の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。なお、上述の通り、全体の文字の順番
を考慮して一致率を算出することも可能である。例えば、旧表410の「製品精度速度」と、新表420の「製品精度速度」、「ABC95%1.5S」のそれぞれの一致率を算出すると、100%、0%となる。
旧表410の2行目も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
その結果、
図5の例((2)行の対応付け)に示すように、行の対応付けが行われる。この一致の情報を、行の対応情報テーブル700に登録する。
図7は、行の対応情報テーブル700のデータ構造例を示す説明図である。行の対応情報テーブル700は、旧表欄710、新表欄720を有している。旧表欄710は、旧表410の対応付けられた行番号を記憶している。新表欄720は、新表420の対応付けられた行番号を記憶している。具体的には、旧表410の1行目と新表420の1行目が対応し、旧表410の2行目と新表420の2行目が対応していることを示している。
【0036】
(10) 列の対応情報テーブル600、行の対応情報テーブル700を用いて、表内のセルを一対一で対応付ける。具体的には、旧表410の1行1列目は、行の対応情報テーブル700の旧表欄710の1行目に対応する新表420の1行目であり、列の対応情報テーブル600の旧表欄610の1列目に対応する新表420の1列目であるので、新表420の1行1列目に対応する。また、旧表410の2行2列目は、行の対応情報テーブル700の旧表欄710の2行目に対応する新表420の2行目であり、列の対応情報テーブル600の旧表欄610の2列目に対応する新表420の3列目であるので、新表420の2行3列目に対応する。対応付けの結果をセルの対応情報テーブル800に登録する。
図8は、セルの対応情報テーブル800のデータ構造例を示す説明図である。セルの対応情報テーブル800は、旧表欄810、新表欄820を有している。旧表欄810は、旧表410の対応付けられたセル番号(行番号と列番号)を記憶している。新表欄820は、新表420の対応付けられたセル番号を記憶している。具体的には、旧表410の1行1列目のセルと新表420の1行1列目のセルが対応し、旧表410の1行2列目のセルと新表420の1行3列目のセルが対応していることを示している。
【0037】
(11) 旧表410と新表420の対応する各セル内の文字を比較する。ここでの比較は、文字の順番を考慮したものである。つまり、同じ文字があったとしても順番が異なる場合は、差分(異なる文字)となる。
(12) 行単位、列単位の対応付けの結果、文字の比較結果を、出力する。例えば、
図9の例に示すように、液晶ディスプレイ等の表示装置に表示する。この例では、新表420に対して、2列目の差異925と2行3列目のセル内の「9」という文字である差異930を点線で囲んで、抽出した差分を示している。もちろんのことながら、差異部分と他の部分と異なるようにするのであれば、これ以外の表示形態(赤等の色を用いて差異部分を描画するようにしてもよいし、差異部分の背景を塗りつぶすようにしてもよいし、点滅表示等)であってもよい。また、行単位、列単位の対応付けの結果だけを出力するようにしてもよいし、セル内の文字比較結果だけを出力するようにしてもよい。
【0038】
<具体例(2)>
次に、
図10〜
図12を用いて具体例(2)について説明する。第1の表として旧表、第2の表として新表を例として示す。これは、旧表の行数と新表の行数の差分と、旧表の列数と新表の列数の差分が等しい場合の処理例を示している。
(1)
図10(b)の例に示す新表1020は、
図10(a)の例に示す旧表1010に対して第2列目と第3列目の間に新しい列を追加し(修正部分1030)、旧表1010の第3行目と第4行目の間に新しい行を追加したものである(修正部分1025)。行列数取得モジュール120によって、旧表1010は4行3列であり、新表1020は5行4列であることが判明する。
(2) 次に、計算モジュール130は、行数の差分、列数の差分を算出する。
図10の例の場合、次のように算出する。
行の差分=絶対値(4−5)=1
列の差分=絶対値(3−4)=1
(3) そして、判断モジュール140は、差分の大きい方を最初の比較対象とする。
図10の例の場合、行の差分(1)=列の差分(1)である。
(4) 差分が同じ場合、旧表1010又は新表1020の行数、列数で比較する。旧表1010の場合、行数(4)>列数(3)であり、列数の方が小さいので、列から先に対応付けを行うと判断する。なお、旧表1010、新表1020のいずれを対象とするかについては、予め定められた表を用いるようにしてもよいし、行数と列数の差分が大きい方の表を対象とするようにしてもよい。
【0039】
対応付けモジュール160は、判断モジュール140の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
(5) 旧表1010の1〜3列目の文字をそれぞれ全てつなげる。具体的には、「A123」、「B○○○」、「C×××」となる。新表1020の1〜4列目の文字をそれぞれ全てつなげる。具体的には、「A1293」、「B○○○○」、「Z○×○×」、「C××××」となる。
(6)
図11の例に示すように、旧表1010の1列目と、新表1020の1〜4列目の文字を比較し、一致率を算出する。
(7) 旧表1010の1列目と、新表1020の1列目が、最も一致率が高く、閾値も上回るので一致とする。
(8) 旧表1010の2列目以降も同様に行う。この結果を列対応テーブル1210に登録する。
図12(a)は、列対応テーブル1210のデータ構造例を示す説明図である。列対応テーブル1210は、旧表欄1212、新表欄1214を有している。旧表欄1212は、旧表1010の対応付けられた列番号を記憶している。新表欄1214は、新表1020の対応付けられた列番号を記憶している。具体的には、旧表1010の1列目と新表1020の1列目が対応し、旧表1010の2列目と新表1020の2列目が対応し、旧表1010の3列目と新表1020の4列目が対応していることを示している。
(9) 行については、列対応テーブル1210を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表1010の1行目は、列対応テーブル1210の旧表欄1212を用いて、1列目、2列目、3列目のセル内の文字をつなげて「ABC」を生成する。新表1020の1行目は、列対応テーブル1210の新表欄1214を用いて、1列目、2列目、4列目のセル内の文字をつなげて「ABC」を生成する。以下、同様に各行のセル内の文字をつなげて、文字列を生成する。つまり、(8)で対応付けられなかった列内のセルを除外して、旧表1010、新表1020の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。例えば、旧表1010の「ABC」と、新表1020の「ABC」、「1○×」、「2○×」、「9○×」、「3○×」のそれぞれの一致率を算出すると、100%、0%、0%、0%、0%となる。
旧表1010の2行目以降も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
これらの一致の情報を、行対応テーブル1220に登録する。
図12(b)は、行対応テーブル1220のデータ構造例を示す説明図である。行対応テーブル1220は、旧表欄1222、新表欄1224を有している。旧表欄1222は、旧表1010の対応付けられた行番号を記憶している。新表欄1224は、新表1020の対応付けられた行番号を記憶している。具体的には、旧表1010の1行目と新表1020の1行目が対応し、旧表1010の2行目と新表1020の2行目が対応し、旧表1010の3行目と新表1020の3行目が対応し、旧表1010の4行目と新表1020の5行目が対応していることを示している。
(10) 以下、具体例(1)と同様の処理を行い、新表1020の3行目(
図10(b)の例に示す修正部分1025)と新表1020の3列目(
図10(b)の例に示す修正部分1030)が、旧表1010とは異なることを表示する。
【0040】
<具体例(3)>
次に、
図13〜
図16に示す具体例(3)を用いて説明する。第1の表として旧表、第2の表として新表を例として示す。これは、旧表の行数と新表の行数の差分と、旧表の列数と新表の列数の差分が等しく、さらに、旧表又は新表の行数と列数が等しい場合の処理例を示している。
(1)
図13(b)の例に示す新表1320は、
図13(a)の例に示す旧表1310の第2列目を修正したものである。行列数取得モジュール120によって、旧表1310は3行3列であり、新表1320は3行3列であることが判明する。
(2) 次に、計算モジュール130は、行数の差分、列数の差分を算出する。
図13の例の場合、次のように算出する。
行の差分=絶対値(3−3)=0
列の差分=絶対値(3−3)=0
(3) そして、判断モジュール140は、差分の大きい方を最初の比較対象とする。
図13の例の場合、行の差分(0)=列の差分(0)である。
(4) 差分が同じ場合、旧表1310又は新表1320の行数、列数で比較する。旧表1310、新表1320のいずれであっても、行数(3)=列数(3)である。
(5) 旧表1310、新表1320のいずれにおいても、行数と列数の差がない場合、行及び列毎に文字数を計数する。そして、旧表1310の各行内の文字数と対応する新表1320の各行内の文字数とで差がある行の数と、旧表1310の各列内の文字数と対応する新表1320の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とする。
図14の例に示す文字数差分テーブル1400は、旧表1310と新表1320の各行、各列の文字数と、その差を示したものである。例えば、旧表1310の1列目の文字数は3であり、新表1320の1列目の文字数は3であるので、その差は0であり、旧表1310の2列目の文字数は6であり、新表1320の2列目の文字数は3であるので、その差は3であり、旧表1310の1行目の文字数は4であり、新表1320の1行目の文字数は3であるので、その差は1であること等を示している。差がある(差が0ではない)列の組み合わせ、行の組み合わせを計数する。この場合、列では、差があるのは2列目だけであるので、差がある列数は1である。行では、差があるのは1行目、2行目、3行目であるので、差がある行数は3である。したがって、差のある行数(3)>差のある列数(1)であるので、差の少ない方である列を、先に対応付けを行うと判断する。
【0041】
対応付けモジュール160は、判断モジュール140の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
(6) 旧表1310の1〜3列目の文字をそれぞれ全てつなげる。具体的には、「A12」、「BD○△○△」、「C××」となる。新表1320の1〜3列目の文字をそれぞれ全てつなげる。具体的には、「A12」、「B○○」、「C××」となる。
(7) 旧表1310の1列目と、新表1320の1〜3列目の文字を比較し、一致率を算出する。
(8) 旧表1310の1列目と、新表1320の1列目が、最も一致率が高く、閾値も上回るので一致とする。
(9) 旧表1310の2列目以降も同様に行う。この結果を列対応テーブル1510に登録する。
図15(a)は、列対応テーブル1510のデータ構造例を示す説明図である。列対応テーブル1510は、旧表欄1512、新表欄1514を有している。旧表欄1512は、旧表1310の対応付けられた列番号を記憶している。新表欄1514は、新表1320の対応付けられた列番号を記憶している。具体的には、旧表1310の1列目と新表1320の1列目が対応し、旧表1310の3列目と新表1320の3列目が対応していることを示している。
(10) 行については、列対応テーブル1510を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表1310の1行目は、列対応テーブル1510の旧表欄1512を用いて、1列目、3列目のセル内の文字をつなげて「AC」を生成する。新表1320の1行目は、列対応テーブル1510の新表欄1514を用いて、1列目、3列目のセル内の文字をつなげて「AC」を生成する。以下、同様に各行のセル内の文字をつなげて、文字列を生成する。つまり、(9)で対応付けられなかった列内のセルを除外して、旧表1310、新表1320の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。例えば、旧表1310の「AC」と、新表1320の「AC」、「1×」、「2×」のそれぞれの一致率を算出すると、100%、0%、0%となる。
旧表1310の2行目以降も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
これらの一致の情報を、行対応テーブル1520に登録する。
図15(b)は、行対応テーブル1520のデータ構造例を示す説明図である。行対応テーブル1520は、旧表欄1522、新表欄1524を有している。旧表欄1522は、旧表1310の対応付けられた行番号を記憶している。新表欄1524は、新表1320の対応付けられた行番号を記憶している。具体的には、旧表1310の1行目と新表1320の1行目が対応し、旧表1310の2行目と新表1320の2行目が対応し、旧表1310の3行目と新表1320の3行目が対応していることを示している。
(11) 以下、具体例(1)と同様の処理を行い、新表1320の2列目が、旧表1310とは異なることを表示する。
【0042】
前述の例では、表の構造として、セルの分割、統合がない単純な構造を示した。
しかし、
図16(a)の例に示すような構造の対象表1610がある場合もある。つまり、対象表1610のように、セルの分割、統合がある場合(ある行を構成するセル数が他の行を構成するセル数と異なる場合、又は、ある列を構成するセル数が他の列を構成するセル数と異なる場合)、
図16(b)の例に示すような変換後表1620として扱う。変換後表1620は、対象表1610の最小のセルに合わせて、他のセルを分割したものである。具体的には、対象表1610の1列2行目のセルを2列のセルに合わせて2つに分割し、同様に、対象表1610の1列3行目のセルを2列のセルに合わせて3つに分割したものである。行列数取得モジュール120は、対象としている表のある行を構成するセル数が他の行を構成するセル数と異なる場合、又は、ある列を構成するセル数が他の列を構成するセル数と異なる場合は、その表において最小のセルに合わせて、他のセルを分割した表を生成して、行数、列数を計数する。また、新しく生成したセルには、分割前のセル内の文字を設定する。
したがって、変換後表1620の1行目の文字の接続は「ABCDE」となり、2行目の文字の接続は「A1B1C1D1E1」となり、3行目の文字の接続は「A1B2C2D2E2」となり、4行目の文字の接続は「A2B3C3D3E3」となり、5行目の文字の接続は「A2B4C4D4E4」となり、6行目の文字の接続は「A2B5C5D5E5」となる。また、変換後表1620の1列目の文字の接続は「AA1A1A2A2A2」となり、2列目の文字の接続は「BB1B2B3B4B5」となり、3列目の文字の接続は「CC1C2C3C4C5」となり、4列目の文字の接続は「DD1D2D3D4D5」となり、5列目の文字の接続は「EE1E2E3E4E5」となる。
【0043】
また、前述の実施の形態の判断モジュール140は、表の行又は列の対応付け処理のうち、いずれか一方を先に行うとの判断を行った。しかし、先に行の対応付け処理と次に列の対応付け処理の組み合わせ処理Aと、先に列の対応付け処理と次に行の対応付け処理の組み合わせ処理Bの両方の処理(組み合わせ処理Aと組み合わせ処理B)を行うようにしてもよい。この場合、組み合わせ処理Aと組み合わせ処理Bのいずれかの処理結果を選択すればよい。
つまり、対応付けモジュール160は、次の処理を行うようにしてもよい。
第1の表と第2の表の各行で対応付ける(第1の対応付け処理)。次に、第1の対応付け処理によって対応付けられなかった行内のセルを除外して、第1の表と第2の表の各列で対応付ける(第2の対応付け処理)。そして、第1の表と第2の表の各列で対応付ける(第3の対応付け処理)。次に、第3の対応付け処理によって対応付けられなかった列内のセルを除外して、第1の表と第2の表の各行で対応付ける(第4の対応付け処理)。
そして、第1の対応付け処理と第2の対応付け処理によって対応付けられなかった行数と列数の和と、第3の対応付け処理と第4の対応付け処理によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する。
【0044】
図17を参照して、本実施の形態の情報処理装置のハードウェア構成例について説明する。
図17に示す構成は、例えばパーソナルコンピュータ(PC)等によって構成されるものであり、スキャナ等のデータ読み取り部1717と、プリンタ等のデータ出力部1718を備えたハードウェア構成例を示している。
【0045】
CPU(Central Processing Unit)1701は、前述の実施の形態において説明した各種のモジュール、すなわち、表取得モジュール110、行列数取得モジュール120、計算モジュール130、判断モジュール140、文字特定モジュール150、対応付けモジュール160、出力モジュール170等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【0046】
ROM(Read Only Memory)1702は、CPU1701が使用するプログラムや演算パラメータ等を格納する。RAM(Random Access Memory)1703は、CPU1701の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはCPUバス等から構成されるホストバス1704により相互に接続されている。
【0047】
ホストバス1704は、ブリッジ1705を介して、PCI(Peripheral Component Interconnect/Interface)バス等の外部バス1706に接続されている。
【0048】
キーボード1708、マウス等のポインティングデバイス1709は、操作者により操作される入力デバイスである。ディスプレイ1710は、液晶表示装置又はCRT(Cathode Ray Tube)等があり、各種情報をテキストやイメージ情報として表示する。
【0049】
HDD(Hard Disk Drive)1711は、ハードディスクを内蔵し、ハードディスクを駆動し、CPU1701によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、対象とする表、対応付け結果等が格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【0050】
ドライブ1712は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体1713に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース1707、外部バス1706、ブリッジ1705、及びホストバス1704を介して接続されているRAM1703に供給する。リムーバブル記録媒体1713も、ハードディスクと同様のデータ記録領域として利用可能である。
【0051】
接続ポート1714は、外部接続機器1715を接続するポートであり、USB、IEEE1394等の接続部を持つ。接続ポート1714は、インタフェース1707、及び外部バス1706、ブリッジ1705、ホストバス1704等を介してCPU1701等に接続されている。通信部1716は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部1717は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部1718は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【0052】
なお、
図17に示す情報処理装置のハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、
図17に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに
図17に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機等に組み込まれていてもよい。
【0053】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。