(57)【特許請求の範囲】
【請求項１】
第１の表の行数と第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象として、前記第１の表と前記第２の表の各行又は各列で対応付ける第１の対応付け手段と、
前記第１の対応付け手段によって対象としなかった列又は行のいずれか一方を対象とし、前記第１の対応付け手段によって対応付けられなかった行又は列内のセルを除外して、前記第１の表と前記第２の表の各列又は各行で対応付ける第２の対応付け手段
を具備する情報処理装置。
【請求項２】
前記第１の対応付け手段と前記第２の対応付け手段によって、前記第１の表と前記第２の表とで対応付けられた行又は列内のセルを対応付ける第３の対応付け手段と、
前記第３の対応付け手段によって対応付けられたセル内の文字を比較する比較手段と、
前記第１の対応付け手段と前記第２の対応付け手段による処理結果と、前記比較手段によって比較された結果を出力する出力手段
を具備する請求項１に記載の情報処理装置。
【請求項３】
前記第１の対応付け手段は、
前記第１の表の行数と前記第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分が等しい場合は、前記第１の表又は前記第２の表の行数と列数のうち、少ない方の行又は列のいずれか一方を対象とする、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１の対応付け手段は、
前記第１の表の行数と前記第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分が等しい場合は、前記第１の表の各行内の文字数と対応する前記第２の表の各行内の文字数とで差がある行の数と、前記第１の表の各列内の文字数と対応する前記第２の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とする、
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
第１の表と第２の表の各行で対応付ける第１の対応付け手段と、
前記第１の対応付け手段によって対応付けられなかった行内のセルを除外して、前記第１の表と前記第２の表の各列で対応付ける第２の対応付け手段と、
前記第１の表と前記第２の表の各列で対応付ける第３の対応付け手段と、
前記第３の対応付け手段によって対応付けられなかった列内のセルを除外して、前記第１の表と前記第２の表の各行で対応付ける第４の対応付け手段と、
前記第１の対応付け手段と前記第２の対応付け手段によって対応付けられなかった行数と列数の和と、前記第３の対応付け手段と前記第４の対応付け手段によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する選択手段
を具備する情報処理装置。
【請求項６】
コンピュータを、
第１の表の行数と第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象として、前記第１の表と前記第２の表の各行又は各列で対応付ける第１の対応付け手段と、
前記第１の対応付け手段によって対象としなかった列又は行のいずれか一方を対象とし、前記第１の対応付け手段によって対応付けられなかった行又は列内のセルを除外して、前記第１の表と前記第２の表の各列又は各行で対応付ける第２の対応付け手段
として機能させるための情報処理プログラム。
【請求項７】
コンピュータを、
第１の表と第２の表の各行で対応付ける第１の対応付け手段と、
前記第１の対応付け手段によって対応付けられなかった行内のセルを除外して、前記第１の表と前記第２の表の各列で対応付ける第２の対応付け手段と、
前記第１の表と前記第２の表の各列で対応付ける第３の対応付け手段と、
前記第３の対応付け手段によって対応付けられなかった列内のセルを除外して、前記第１の表と前記第２の表の各行で対応付ける第４の対応付け手段と、
前記第１の対応付け手段と前記第２の対応付け手段によって対応付けられなかった行数と列数の和と、前記第３の対応付け手段と前記第４の対応付け手段によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する選択手段
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、表計算ソフトウェアで作成された元ファイル同士を比較した場合に、変更があった行の元ファイルにおける行番号を一見して把握することができる比較プログラムを提供することを課題とし、表計算ソフトウェアで作成された元ファイルＡと、元ファイルＢとを比較すると、比較結果ファイルＡと、比較結果ファイルＢとが作成され、比較結果ファイルＡと元ファイルＡとは、同じ行番号に同じ情報が設定されているので、比較結果ファイルＡを見れば、元ファイルＡの第Ｘ行目等を変更したことを一見して把握でき、比較結果ファイルＢと元ファイルＢとは、同じ行番号に同じ情報が設定されているので、比較結果ファイルＢを見れば、元ファイルＢの第Ｙ行目等を変更したことを一見して把握できることが開示されている。
【０００３】
特許文献２には、元文書及び新文書をもとに校正内容を出力する文書処理装置に関し、元文書を編集して新文書を作成したときに単語や表など毎に削除、挿入をテーブルに保存し、これらから削除、挿入、移動、表の構造の変化などを抽出し、修正者の意図の判り易い校正情報として表示／印刷することを目的とし、元文書及び当該元文書を編集した新文書を単語などに分割し、元文書及び新文書の単語など毎の位置を単語テーブルに格納する文書展開部と、元文書の単語テーブル及び新文書の単語テーブルを比較し、削除及び挿入を抽出して差分テーブルに登録する差分検出部と、この差分テーブルをもとに元文書で削除及び新文書で挿入されている単語などを移動として検出する移動検出部とを備え、この検出された移動、及び残りの単語などの削除、挿入のリストを出力するように構成することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１１８７０３号公報
【特許文献２】特開平０８−１９０５５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、表同士の差分を抽出するにあたって、一般的に、行又は列の挿入、削除、移動の編集があった場合に、その編集に対応した行単位又は列単位での差分を抽出することは困難である。例えば、行の差分に注目しているときに列に追加、削除があった場合は、全ての行で差分が抽出されてしまうことになり、行の移動があった場合は、内容の変更がないとしても差分として抽出してしまうことになる。
本発明は、差分抽出の対象である表同士の行又は列の編集があった場合、編集後の表から行単位又は列単位での差分を抽出するようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【０００７】
請求項１の発明は、第１の表の行数と第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象として、前記第１の表と前記第２の表の各行又は各列で対応付ける第１の対応付け手段と、前記第１の対応付け手段によって対象としなかった列又は行のいずれか一方を対象とし、前記第１の対応付け手段によって対応付けられなかった行又は列内のセルを除外して、前記第１の表と前記第２の表の各列又は各行で対応付ける第２の対応付け手段を具備する情報処理装置である。
【０００８】
請求項２の発明は、前記第１の対応付け手段と前記第２の対応付け手段によって、前記第１の表と前記第２の表とで対応付けられた行又は列内のセルを対応付ける第３の対応付け手段と、前記第３の対応付け手段によって対応付けられたセル内の文字を比較する比較手段と、前記第１の対応付け手段と前記第２の対応付け手段による処理結果と、前記比較手段によって比較された結果を出力する出力手段を具備する請求項１に記載の情報処理装置である。
【０００９】
請求項３の発明は、前記第１の対応付け手段は、前記第１の表の行数と前記第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分が等しい場合は、前記第１の表又は前記第２の表の行数と列数のうち、少ない方の行又は列のいずれか一方を対象とする、請求項１又は２に記載の情報処理装置である。
【００１０】
請求項４の発明は、前記第１の対応付け手段は、前記第１の表の行数と前記第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分が等しい場合は、前記第１の表の各行内の文字数と対応する前記第２の表の各行内の文字数とで差がある行の数と、前記第１の表の各列内の文字数と対応する前記第２の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とする、請求項１から３のいずれか一項に記載の情報処理装置である。
【００１１】
請求項５の発明は、第１の表と第２の表の各行で対応付ける第１の対応付け手段と、前記第１の対応付け手段によって対応付けられなかった行内のセルを除外して、前記第１の表と前記第２の表の各列で対応付ける第２の対応付け手段と、前記第１の表と前記第２の表の各列で対応付ける第３の対応付け手段と、前記第３の対応付け手段によって対応付けられなかった列内のセルを除外して、前記第１の表と前記第２の表の各行で対応付ける第４の対応付け手段と、前記第１の対応付け手段と前記第２の対応付け手段によって対応付けられなかった行数と列数の和と、前記第３の対応付け手段と前記第４の対応付け手段によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する選択手段を具備する情報処理装置である。
【００１２】
請求項６の発明は、コンピュータを、第１の表の行数と第２の表の行数の差分と、前記第１の表の列数と前記第２の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象として、前記第１の表と前記第２の表の各行又は各列で対応付ける第１の対応付け手段と、前記第１の対応付け手段によって対象としなかった列又は行のいずれか一方を対象とし、前記第１の対応付け手段によって対応付けられなかった行又は列内のセルを除外して、前記第１の表と前記第２の表の各列又は各行で対応付ける第２の対応付け手段として機能させるための情報処理プログラムである。
【００１３】
請求項７の発明は、コンピュータを、第１の表と第２の表の各行で対応付ける第１の対応付け手段と、前記第１の対応付け手段によって対応付けられなかった行内のセルを除外して、前記第１の表と前記第２の表の各列で対応付ける第２の対応付け手段と、前記第１の表と前記第２の表の各列で対応付ける第３の対応付け手段と、前記第３の対応付け手段によって対応付けられなかった列内のセルを除外して、前記第１の表と前記第２の表の各行で対応付ける第４の対応付け手段と、前記第１の対応付け手段と前記第２の対応付け手段によって対応付けられなかった行数と列数の和と、前記第３の対応付け手段と前記第４の対応付け手段によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する選択手段として機能させるための情報処理プログラムである。
【発明の効果】
【００１４】
請求項１の情報処理装置によれば、表同士の差分を抽出するにあたって、その表同士の行又は列の編集があった場合、編集後の行単位又は列単位での差分を抽出することができる。
【００１５】
請求項２の情報処理装置によれば、行及び列同士の対応付け結果、セル内の比較結果を出力することができる。
【００１６】
請求項３の情報処理装置によれば、第１の表の列数と第２の表の列数の差分が等しい場合は、第１の表又は第２の表の行数と列数を用いて、行又は列のいずれか一方を対象とすることができる。
【００１７】
請求項４の情報処理装置によれば、第１の表の列数と第２の表の列数の差分が等しい場合は、第１の表の行又は列内の文字数を用いて、行又は列のいずれか一方を対象とすることができる。
【００１８】
請求項５の情報処理装置によれば、表同士の差分を抽出するにあたって、行から対応付けを行った場合と、列から対応付けを行った場合で、少ない方の対応付け結果を選択することができる。
【００１９】
請求項６の情報処理プログラムによれば、表同士の差分を抽出するにあたって、その表同士の行又は列の編集があった場合、編集後の行単位又は列単位での差分を抽出することができる。
【００２０】
請求項７の情報処理プログラムによれば、表同士の差分を抽出するにあたって、行から対応付けを行った場合と、列から対応付けを行った場合で、少ない方の対応付け結果を選択することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】本実施の形態による処理例を示すフローチャートである。
【図４】本実施の形態による処理例を示す説明図である。
【図５】本実施の形態による処理例を示す説明図である。
【図６】列の対応情報テーブルのデータ構造例を示す説明図である。
【図７】行の対応情報テーブルのデータ構造例を示す説明図である。
【図８】セルの対応情報テーブルのデータ構造例を示す説明図である。
【図９】本実施の形態による処理例を示す説明図である。
【図１０】本実施の形態による処理例を示す説明図である。
【図１１】本実施の形態による処理例を示す説明図である。
【図１２】列対応テーブル、行対応テーブルのデータ構造例を示す説明図である。
【図１３】本実施の形態による処理例を示す説明図である。
【図１４】本実施の形態による処理例を示す説明図である。
【図１５】列対応テーブル、行対応テーブルのデータ構造例を示す説明図である。
【図１６】本実施の形態による処理例を示す説明図である。
【図１７】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という意味を有する記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００２３】
本実施の形態である情報処理装置１００は、表同士の差分を抽出するものであって、図１の例に示すように、表取得モジュール１１０、行列数取得モジュール１２０、計算モジュール１３０、判断モジュール１４０、文字特定モジュール１５０、対応付けモジュール１６０、出力モジュール１７０を有している。
【００２４】
表取得モジュール１１０は、行列数取得モジュール１２０、文字特定モジュール１５０と接続されている。表取得モジュール１１０は、対象となる２つの表（以下、第１の表、第２の表ともいう）を取得する。ここでの表は、電子データとしての表（いわゆる表計算プログラム等によって作成されるスプレッドシート等）、画像としての表（スキャナ等の画像読取装置によって読み取られた画像）のいずれであってもよいし、これらの組み合わせ（例えば、第１の表が電子データ、第２の表が画像）であってもよい。なお、第１の表と第２の表との関係は、いずれか一方の表を元として、編集した結果が他方の表であってもよい。ここでの表の編集には、行又は列を単位とした挿入、削除、移動等の他に、表を構成するセル内の文字の変更等を含めてもよい。また、２つの表は独立に作成されたものであってもよいし、２つの表の作成の関係が判然としない場合であってもよい。例えば、２つの表が同じであることを確認するために処理を行うことがある。また、２つの表は、１つの文書内に含まれていてもよいし、２つの文書からそれぞれ抽出してもよい。
【００２５】
行列数取得モジュール１２０は、表取得モジュール１１０、計算モジュール１３０と接続されている。行列数取得モジュール１２０は、表取得モジュール１１０によって取得された表の行数と列数を取得する。電子データとしての表であれば、その表の行と列の数を計数してもよいし、その表の属性として行数、列数が含まれている場合は、その属性を抽出すればよい。画像としての表であれば、その表画像を解析して、表の行数、列数と計数すればよい。解析技術は、既存の技術を用いればよい。
計算モジュール１３０は、行列数取得モジュール１２０、判断モジュール１４０と接続されている。計算モジュール１３０は、行列数取得モジュール１２０による取得結果（各表の行と列数）を用いて、第１の表の行数と第２の表の行数との差分を算出し、第１の表の列数と第２の表の列数との差分を算出する。例えば、一方の表を元として他方の表を作成した場合、行又は列を単位とした挿入又は削除のいずれかが行われた場合に差分が０以外となる。なお、差分の算出は、減算した結果の絶対値を算出してもよいし、２つの値のうち大の値から小の値を減算するようにしてもよい。
【００２６】
判断モジュール１４０は、計算モジュール１３０、対応付けモジュール１６０と接続されている。判断モジュール１４０は、第１の表の行数と第２の表の行数の差分と、第１の表の列数と第２の表の列数の差分のうち、多い方の差分となる行又は列のいずれか一方を対象とする。対応付けモジュール１６０における行同士の対応付けと、列同士の対応付けのうち、いずれを先に行うかを判断するものである。この判断処理は、行数又は列数の変化量が大きい方（行又は列のいずれか一方）を先に対応付けることで、差分抽出の成功率を高めるものである。つまり、行数の差分が列数の差分よりも多い場合は、対応付けモジュール１６０によって、行同士の対応付け処理が先に行われ、次に、列同士の対応付け処理が行われる。一方、列数の差分が行数の差分よりも多い場合は、対応付けモジュール１６０によって、列同士の対応付け処理が先に行われ、次に、行同士の対応付け処理が行われる。
また、判断モジュール１４０は、第１の表の行数と第２の表の行数の差分と、第１の表の列数と第２の表の列数の差分が等しい場合は、第１の表又は第２の表の行数と列数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。つまり、行数と列数の変化量が同じ場合、元の行数と列数を比較し、数が小さい方から先に対応付けるようにしたものである。同じ行数又は列数の挿入又は削除ならば、行数又は列数の大きい方が、影響を受けにくいので、数が多い方を手掛かりに、数が少ない方（行又は列）を先に対応付けるようにしたものである。なお、「第１の表の行数と第２の表の行数の差分と、第１の表の列数と第２の表の列数の差分が等しい場合」としては、行又は列を単位とした挿入、削除が行われなかった場合、挿入と削除は行われたが、その数（挿入された行数又は列数と削除された行数又は列数）が同じ場合等に起こり得る。なお「第１の表又は第２の表の行数と列数のうち、少ない方の行又は列のいずれか一方」の具体的な組み合わせとして、「第１の表の行数と列数のうち、少ない方の行」、「第１の表の行数と列数のうち、少ない方の列」、「第２の表の行数と列数のうち、少ない方の行」、「第２の表の行数と列数のうち、少ない方の列」のいずれかである。このうちのいずれであってもよいし、このうちの１つを特定してもよい。例えば、第１の表の行数、第１の表の列数、第２の表の行数、第２の表の列数を比較して、最も少ないものの行又は列を特定してもよい。
【００２７】
また、判断モジュール１４０は、第１の表の行数と第２の表の行数の差分と、第１の表の列数と第２の表の列数の差分が等しい場合は、第１の表の各行内の文字数と対応する第２の表の各行内の文字数とで差がある行の数と、第１の表の各列内の文字数と対応する第２の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。つまり、行数と列数の変化量が同じ場合、第１の表と第２の表の一行毎に文字数を計数し、同様に列毎に文字数を計数し、第１の表と第２の表で文字数の差がある行又は列の数が少ない方から先に対応付けるようにしたものである。文字数の変化が少ないということは、挿入又は削除や文字の変更が少ないことが期待できるため、先に対応付けを行うようにしたものである。
さらに、判断モジュール１４０は、第１の表の行数と第２の表の行数の差分と、第１の表の列数と第２の表の列数の差分が等しい場合であって、第１の表と第２の表の行数と列数が等しいときは、第１の表の各行内の文字数と対応する第２の表の各行内の文字数とで差がある行の数と、第１の表の各列内の文字数と対応する第２の表の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とするようにしてもよい。なお、「第１の表と第２の表の行数と列数が等しいとき」とは、「第１の表の行数と列数が等しく、第２の表の行数と列数が等しい」ことをいい、互いにいわゆる正方行列である場合に、この条件が成立する。
また、「第１の表の各行内の文字数と対応する第２の表の各行内の文字数とで差がある行の数」とは、２つの表における各行の文字数を計数（各行を構成するセル内の文字数を加算）し、互いに行番号が対応する行（例えば、第１の表の第１行と第２の表の第１行、以下同様）の文字数が異なる行を計数すればよい。「第１の表の各列内の文字数と対応する第２の表の各列内の文字数とで差がある列の数」とは、２つの表における各列の文字数を計数（各列を構成するセル内の文字数を加算）し、互いに列番号が対応する列（例えば、第１の表の第１列と第２の表の第１列、以下同様）の文字数が異なる列を計数すればよい。そして、文字数が異なる行数と文字数が異なる列数のうち、少ない方の行又は列のいずれか一方を対象とする。具体的には、文字数が異なる行数が文字数が異なる列数より少ない場合は、行を対象とする。文字数が異なる行数より文字数が異なる列数が少ない場合は、列を対象とする。
【００２８】
文字特定モジュール１５０は、表取得モジュール１１０、対応付けモジュール１６０と接続されている。文字特定モジュール１５０は、２つの表を構成するセル内の文字を特定するものである。電子データとしての表であれば、各セル内の文字（０文字以上の文字列を含む）を抽出すればよい。また、画像としての表であれば、解析結果としての各表のセルを抽出し、そのセル内の文字画像を認識すればよい。なお、処理結果は、セルの位置（行番号と列番号で特定される表内の位置）とそのセル内の文字とが対応付けられている。
【００２９】
対応付けモジュール１６０は、判断モジュール１４０、文字特定モジュール１５０、出力モジュール１７０と接続されている。対応付けモジュール１６０は、判断モジュール１４０による判断結果によって、第１の表と第２の表の各行又は各列で対応付ける（第１の対応付け処理）。具体的には、判断モジュール１４０による判断結果が、行を対象と判断した場合は、第１の表と第２の表の各行で対応付け（第１の行対応付け処理）を行う。又は、判断モジュール１４０による判断結果が、列を対象と判断した場合は、第１の表と第２の表の各列で対応付け（第１の列対応付け処理）を行う。対応付け処理としては、例えば、各行又は各列のペアの一致率を計算し、最大の一致率が閾値以上ならば、該当の行又は列同士を対応していると判定する。
次に、対応付けモジュール１６０は、第１の対応付け処理によって対象としなかった列又は行のいずれか一方を対象とし、第１の対応付け処理によって対応付けられなかった行又は列を除外して、第１の表と第２の表の各列又は各行で対応付け（第２の対応付け処理）を行う。具体的には、第１の対応付け処理が行を対象とした場合は、列を対象として、第１の対応付け処理によって対応付けられなかった行内のセルを除外して、第１の表と第２の表の各列で対応付け（第２の列対応付け処理）を行う。第１の対応付け処理が列を対象とした場合は、行を対象として、第１の対応付け処理によって対応付けられなかった列内のセルを除外して、第１の表と第２の表の各行で対応付け（第２の行対応付け処理）を行う。つまり、第１の行対応付け処理と第２の列対応付け処理の組み合わせ、又は、第１の列対応付け処理と第２の行対応付け処理の組み合わせのいずれか一方を行うこととなる。なお、対応付け処理の具体例については、後述する。
そして、対応付けモジュール１６０は、第１の対応付け処理と第２の対応付け処理によって、第１の表と第２の表とで対応付けられた行又は列内のセルを対応付ける（第３の対応付け処理）。そして、第３の対応付け処理によって対応付けられたセル内の文字を比較する（比較処理）。なお、比較処理の具体例については、後述する。
【００３０】
出力モジュール１７０は、対応付けモジュール１６０と接続されている。出力モジュール１７０は、第１の対応付け処理と第２の対応付け処理の結果を出力する。例えば、出力モジュール１７０は、第１の対応付け処理と第２の対応付け処理によって、対応付けられなかった行又は列を、第１の表と第２の表とで異なる部分として出力するようにしてもよい。逆に、出力モジュール１７０は、第１の対応付け処理と第２の対応付け処理によって、対応付けられた行又は列を、第１の表と第２の表とで同じ部分として出力するようにしてもよい。なお、出力するとは、例えば、プリンタ等の印刷装置で印刷すること、ディスプレイ等の表示装置に表示すること、ファックス等の画像送信装置で画像を送信すること、メモリーカード等の記憶媒体に記憶すること、他の情報処理装置へ渡すこと等が含まれる。
さらに、出力モジュール１７０は、セル内の文字の比較結果を出力するようにしてもよい。つまり、第１の対応付け処理と第２の対応付け処理による処理結果と、比較処理によって比較された結果を出力するようにしてもよい。
なお、出力モジュール１７０は、行又は列の移動が行われた場合、つまり、対応付けモジュール１６０では、対応付けられた行又は列として扱われるが、対応付けられた行又は列であったとしても、２つの表における行番号又は列番号が異なる場合は、移動があったことを示す表示を行うようにしてもよい。また、行又は列の移動に加え、追加／削除があると、追加／削除された行又は列以降の行番号／列番号が合わなくなるため、２つの表における行番号又は列番号の順番に逆転があった場合に、行又は列の移動があったことを示す表示を行うようにしてもよい。
【００３１】
図２は、本実施の形態を利用したシステム構成例を示す説明図である。
情報処理装置１００、ユーザ端末２１０、画像処理装置２２０は、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット等であってもよい。
情報処理装置１００は、表の差分を抽出する機能を有するサーバーとして実現させてもよいし、クラウドサービスとして実現してもよい。例えば、ユーザ端末２１０から２つの表が含まれている文書を受け取り、その表の差分を抽出して、ユーザ端末２１０へ処理結果を戻すようにしてもよい。
また、情報処理装置１００を画像処理装置２２０内に構築するようにしてもよい。画像処理装置２２０は、スキャナ又は複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）であり、例えば、２つの表が含まれている文書を画像として読み取り、その表の差分を抽出して、その処理結果の画像（出力モジュール１７０の出力結果を画像としたもの）を印刷してもよいし、ユーザ端末２１０へ処理結果を送信するようにしてもよい。なお、情報処理装置１００は、通信回線２９０に接続せず、スタンドアローンとして実現するようにしてもよい。
【００３２】
図３は、本実施の形態による処理例を示すフローチャートである。
ステップＳ３０２では、表取得モジュール１１０は、２つの表の取得を行う。以下、原本の表を旧表（又はその旧表が記載されている文書を旧文書）、修正が加えられた表を新表（又はその新表が記載されている文書を新文書）を例として示す。
ステップＳ３０４では、行列数取得モジュール１２０は、新旧表の行列数の取得を行う。
ステップＳ３０６では、文字特定モジュール１５０は、各セル内の文字の取得を行う。
ステップＳ３０８では、計算モジュール１３０は、新旧表の行数、列数の差の算出を行う。具体的には、｜新表の行数−旧表の行数｜、｜新表の列数−旧表の列数｜の計算を行う。
ステップＳ３１０では、判断モジュール１４０は、行／列どちらを先に比較するかの判断を行う。ステップＳ３０８の計算結果で、行数の差分が列数の差分よりも大である場合は、行を先に比較すると判断し、列数の差分が行数の差分よりも大である場合は、列を先に比較すると判断する。
ステップＳ３１２では、対応付けモジュール１６０は、ステップＳ３１０での判断結果にしたがって、行又は列のいずれかの対応付けを行う。
ステップＳ３１４では、対応付けモジュール１６０は、行／列の対応情報を使った列又は行の対応付けを行う。ステップＳ３１２で対応付けが行われなかった列又は行（ステップＳ３１２での対応付けの対象が行である場合は列、ステップＳ３１２での対応付けの対象が列である場合は行）のいずれかを対象とした対応付けを行う。
ステップＳ３１６では、出力モジュール１７０は、ステップＳ３１２、ステップＳ３１４の対応付け処理の結果を出力する。
【００３３】
＜具体例（１）＞
次に、図４〜図９を用いて具体例（１）について説明する。第１の表として旧表、第２の表として新表を例として示す。
（１）  図４（ｂ）の例に示す新表４２０は、図４（ａ）の例に示す旧表４１０に対して第１列目と第２列目の間に新しい列を追加し（修正部分４２５）、旧表４１０の第２行第２列（新表４２０では第２行第３列）のセル内の文字を修正したものである（修正部分４３０）。行列数取得モジュール１２０によって、旧表４１０は２行３列であり、新表４２０は２行４列であることが判明する。
（２）  次に、計算モジュール１３０は、行数の差分、列数の差分を算出する。図４の例の場合、次のように算出する。
行の差分＝絶対値（２−２）＝０
列の差分＝絶対値（３−４）＝１
（３）  そして、判断モジュール１４０は、差分の大きい方を最初の比較対象とする。図４の例の場合、行の差分（０）＜列の差分（１）であるので、列を先に対応付けると判断する。
【００３４】
対応付けモジュール１６０は、判断モジュール１４０の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
（４）  旧表４１０の１〜３列目の文字をそれぞれ全てつなげる。具体的には、「製品ＡＢＣ」、「精度８５％」、「速度１．５ｓ」となる。
（５）  新表４２０の１〜４列目の文字をそれぞれ全てつなげる。具体的には、「製品ＡＢＣ」、「ＯＳＷｗｗ７」、「精度９５％」、「速度１．５ｓ」となる。
（６）  旧表４１０の１列目と新表４２０の１〜４列目を比較し、それぞれ一致率を算出する。ここで一致率とは、例えば、旧表４１０の列毎の文字列から１文字ずつ取り出し、新表４２０の列毎の文字列に含まれる割合を示すものであり、文字の順番は問わない。また、これとは逆に、新表４２０の列毎の文字列から１文字ずつ取り出し、旧表４１０の列毎の文字列に含まれる割合でもよく、これらの割合の合計でも良い。なお、セル内での文字の順番を考慮するようにしてもよい。この場合は、セルの順番は問わない。また、セル内での単語等（例えば、形態素解析結果）における文字の順番を考慮するようにしてもよい。この場合も、セルの順番は問わない。例えば、旧表４１０の「製品ＡＢＣ」と、新表４２０の「製品ＡＢＣ」、「ＯＳＷｗｗ７」、「精度９５％」、「速度１．５ｓ」のそれぞれの一致率を算出すると、１００％、０％、０％、０％となる。なお、文字の順番を考慮した場合は、その順番を考慮した文字列毎に探索すればよい。一致率は、全体の文字数における割合としてもよいし、全体の文字列数における割合としてもよい。
（７）  最も高い一致率が閾値を越える場合、その列同士を一致と判定する。閾値を越えなければ、一致なしとする。
（８）  旧表４１０の２〜４列目も、同様に行う。その際、すでに一致と判定された列は対象としないようにしてもよい。
その結果、図５の例（（１）列の対応付け）に示すように、列の対応付けが行われる。この一致の情報を、列の対応情報テーブル６００に登録する。図６は、列の対応情報テーブル６００のデータ構造例を示す説明図である。列の対応情報テーブル６００は、旧表欄６１０、新表欄６２０を有している。旧表欄６１０は、旧表４１０の対応付けられた列番号を記憶している。新表欄６２０は、新表４２０の対応付けられた列番号を記憶している。具体的には、旧表４１０の１列目と新表４２０の１列目が対応し、旧表４１０の２列目と新表４２０の３列目が対応し、旧表４１０の３列目と新表４２０の４列目が対応していることを示している。
【００３５】
（９）  行については、列の対応情報テーブル６００を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表４１０の１行目は、列の対応情報テーブル６００の旧表欄６１０を用いて、１列目、２列目、３列目のセル内の文字をつなげて「製品精度速度」を生成する。新表４２０の１行目は、列の対応情報テーブル６００の新表欄６２０を用いて、１列目、３列目、４列目のセル内の文字をつなげて「製品精度速度」を生成する。旧表４１０の２行目は、列の対応情報テーブル６００の旧表欄６１０を用いて、１列目、２列目、３列目のセル内の文字をつなげて「ＡＢＣ８５％１．５Ｓ」を生成する。新表４２０の２行目は、列の対応情報テーブル６００の新表欄６２０を用いて、１列目、３列目、４列目のセル内の文字をつなげて「ＡＢＣ９５％１．５Ｓ」を生成する。つまり、（８）で対応付けられなかった列内のセルを除外して、旧表４１０、新表４２０の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。なお、上述の通り、全体の文字の順番
を考慮して一致率を算出することも可能である。例えば、旧表４１０の「製品精度速度」と、新表４２０の「製品精度速度」、「ＡＢＣ９５％１．５Ｓ」のそれぞれの一致率を算出すると、１００％、０％となる。
旧表４１０の２行目も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
その結果、図５の例（（２）行の対応付け）に示すように、行の対応付けが行われる。この一致の情報を、行の対応情報テーブル７００に登録する。図７は、行の対応情報テーブル７００のデータ構造例を示す説明図である。行の対応情報テーブル７００は、旧表欄７１０、新表欄７２０を有している。旧表欄７１０は、旧表４１０の対応付けられた行番号を記憶している。新表欄７２０は、新表４２０の対応付けられた行番号を記憶している。具体的には、旧表４１０の１行目と新表４２０の１行目が対応し、旧表４１０の２行目と新表４２０の２行目が対応していることを示している。
【００３６】
（１０）  列の対応情報テーブル６００、行の対応情報テーブル７００を用いて、表内のセルを一対一で対応付ける。具体的には、旧表４１０の１行１列目は、行の対応情報テーブル７００の旧表欄７１０の１行目に対応する新表４２０の１行目であり、列の対応情報テーブル６００の旧表欄６１０の１列目に対応する新表４２０の１列目であるので、新表４２０の１行１列目に対応する。また、旧表４１０の２行２列目は、行の対応情報テーブル７００の旧表欄７１０の２行目に対応する新表４２０の２行目であり、列の対応情報テーブル６００の旧表欄６１０の２列目に対応する新表４２０の３列目であるので、新表４２０の２行３列目に対応する。対応付けの結果をセルの対応情報テーブル８００に登録する。図８は、セルの対応情報テーブル８００のデータ構造例を示す説明図である。セルの対応情報テーブル８００は、旧表欄８１０、新表欄８２０を有している。旧表欄８１０は、旧表４１０の対応付けられたセル番号（行番号と列番号）を記憶している。新表欄８２０は、新表４２０の対応付けられたセル番号を記憶している。具体的には、旧表４１０の１行１列目のセルと新表４２０の１行１列目のセルが対応し、旧表４１０の１行２列目のセルと新表４２０の１行３列目のセルが対応していることを示している。
【００３７】
（１１）  旧表４１０と新表４２０の対応する各セル内の文字を比較する。ここでの比較は、文字の順番を考慮したものである。つまり、同じ文字があったとしても順番が異なる場合は、差分（異なる文字）となる。
（１２）  行単位、列単位の対応付けの結果、文字の比較結果を、出力する。例えば、図９の例に示すように、液晶ディスプレイ等の表示装置に表示する。この例では、新表４２０に対して、２列目の差異９２５と２行３列目のセル内の「９」という文字である差異９３０を点線で囲んで、抽出した差分を示している。もちろんのことながら、差異部分と他の部分と異なるようにするのであれば、これ以外の表示形態（赤等の色を用いて差異部分を描画するようにしてもよいし、差異部分の背景を塗りつぶすようにしてもよいし、点滅表示等）であってもよい。また、行単位、列単位の対応付けの結果だけを出力するようにしてもよいし、セル内の文字比較結果だけを出力するようにしてもよい。
【００３８】
＜具体例（２）＞
次に、図１０〜図１２を用いて具体例（２）について説明する。第１の表として旧表、第２の表として新表を例として示す。これは、旧表の行数と新表の行数の差分と、旧表の列数と新表の列数の差分が等しい場合の処理例を示している。
（１）  図１０（ｂ）の例に示す新表１０２０は、図１０（ａ）の例に示す旧表１０１０に対して第２列目と第３列目の間に新しい列を追加し（修正部分１０３０）、旧表１０１０の第３行目と第４行目の間に新しい行を追加したものである（修正部分１０２５）。行列数取得モジュール１２０によって、旧表１０１０は４行３列であり、新表１０２０は５行４列であることが判明する。
（２）  次に、計算モジュール１３０は、行数の差分、列数の差分を算出する。図１０の例の場合、次のように算出する。
行の差分＝絶対値（４−５）＝１
列の差分＝絶対値（３−４）＝１
（３）  そして、判断モジュール１４０は、差分の大きい方を最初の比較対象とする。図１０の例の場合、行の差分（１）＝列の差分（１）である。
（４）  差分が同じ場合、旧表１０１０又は新表１０２０の行数、列数で比較する。旧表１０１０の場合、行数（４）＞列数（３）であり、列数の方が小さいので、列から先に対応付けを行うと判断する。なお、旧表１０１０、新表１０２０のいずれを対象とするかについては、予め定められた表を用いるようにしてもよいし、行数と列数の差分が大きい方の表を対象とするようにしてもよい。
【００３９】
対応付けモジュール１６０は、判断モジュール１４０の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
（５）  旧表１０１０の１〜３列目の文字をそれぞれ全てつなげる。具体的には、「Ａ１２３」、「Ｂ○○○」、「Ｃ×××」となる。新表１０２０の１〜４列目の文字をそれぞれ全てつなげる。具体的には、「Ａ１２９３」、「Ｂ○○○○」、「Ｚ○×○×」、「Ｃ××××」となる。
（６）  図１１の例に示すように、旧表１０１０の１列目と、新表１０２０の１〜４列目の文字を比較し、一致率を算出する。
（７）  旧表１０１０の１列目と、新表１０２０の１列目が、最も一致率が高く、閾値も上回るので一致とする。
（８）  旧表１０１０の２列目以降も同様に行う。この結果を列対応テーブル１２１０に登録する。図１２（ａ）は、列対応テーブル１２１０のデータ構造例を示す説明図である。列対応テーブル１２１０は、旧表欄１２１２、新表欄１２１４を有している。旧表欄１２１２は、旧表１０１０の対応付けられた列番号を記憶している。新表欄１２１４は、新表１０２０の対応付けられた列番号を記憶している。具体的には、旧表１０１０の１列目と新表１０２０の１列目が対応し、旧表１０１０の２列目と新表１０２０の２列目が対応し、旧表１０１０の３列目と新表１０２０の４列目が対応していることを示している。
（９）  行については、列対応テーブル１２１０を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表１０１０の１行目は、列対応テーブル１２１０の旧表欄１２１２を用いて、１列目、２列目、３列目のセル内の文字をつなげて「ＡＢＣ」を生成する。新表１０２０の１行目は、列対応テーブル１２１０の新表欄１２１４を用いて、１列目、２列目、４列目のセル内の文字をつなげて「ＡＢＣ」を生成する。以下、同様に各行のセル内の文字をつなげて、文字列を生成する。つまり、（８）で対応付けられなかった列内のセルを除外して、旧表１０１０、新表１０２０の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。例えば、旧表１０１０の「ＡＢＣ」と、新表１０２０の「ＡＢＣ」、「１○×」、「２○×」、「９○×」、「３○×」のそれぞれの一致率を算出すると、１００％、０％、０％、０％、０％となる。
旧表１０１０の２行目以降も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
これらの一致の情報を、行対応テーブル１２２０に登録する。図１２（ｂ）は、行対応テーブル１２２０のデータ構造例を示す説明図である。行対応テーブル１２２０は、旧表欄１２２２、新表欄１２２４を有している。旧表欄１２２２は、旧表１０１０の対応付けられた行番号を記憶している。新表欄１２２４は、新表１０２０の対応付けられた行番号を記憶している。具体的には、旧表１０１０の１行目と新表１０２０の１行目が対応し、旧表１０１０の２行目と新表１０２０の２行目が対応し、旧表１０１０の３行目と新表１０２０の３行目が対応し、旧表１０１０の４行目と新表１０２０の５行目が対応していることを示している。
（１０）  以下、具体例（１）と同様の処理を行い、新表１０２０の３行目（図１０（ｂ）の例に示す修正部分１０２５）と新表１０２０の３列目（図１０（ｂ）の例に示す修正部分１０３０）が、旧表１０１０とは異なることを表示する。
【００４０】
＜具体例（３）＞
次に、図１３〜図１６に示す具体例（３）を用いて説明する。第１の表として旧表、第２の表として新表を例として示す。これは、旧表の行数と新表の行数の差分と、旧表の列数と新表の列数の差分が等しく、さらに、旧表又は新表の行数と列数が等しい場合の処理例を示している。
（１）  図１３（ｂ）の例に示す新表１３２０は、図１３（ａ）の例に示す旧表１３１０の第２列目を修正したものである。行列数取得モジュール１２０によって、旧表１３１０は３行３列であり、新表１３２０は３行３列であることが判明する。
（２）  次に、計算モジュール１３０は、行数の差分、列数の差分を算出する。図１３の例の場合、次のように算出する。
行の差分＝絶対値（３−３）＝０
列の差分＝絶対値（３−３）＝０
（３）  そして、判断モジュール１４０は、差分の大きい方を最初の比較対象とする。図１３の例の場合、行の差分（０）＝列の差分（０）である。
（４）  差分が同じ場合、旧表１３１０又は新表１３２０の行数、列数で比較する。旧表１３１０、新表１３２０のいずれであっても、行数（３）＝列数（３）である。
（５）  旧表１３１０、新表１３２０のいずれにおいても、行数と列数の差がない場合、行及び列毎に文字数を計数する。そして、旧表１３１０の各行内の文字数と対応する新表１３２０の各行内の文字数とで差がある行の数と、旧表１３１０の各列内の文字数と対応する新表１３２０の各列内の文字数とで差がある列の数のうち、少ない方の行又は列のいずれか一方を対象とする。図１４の例に示す文字数差分テーブル１４００は、旧表１３１０と新表１３２０の各行、各列の文字数と、その差を示したものである。例えば、旧表１３１０の１列目の文字数は３であり、新表１３２０の１列目の文字数は３であるので、その差は０であり、旧表１３１０の２列目の文字数は６であり、新表１３２０の２列目の文字数は３であるので、その差は３であり、旧表１３１０の１行目の文字数は４であり、新表１３２０の１行目の文字数は３であるので、その差は１であること等を示している。差がある（差が０ではない）列の組み合わせ、行の組み合わせを計数する。この場合、列では、差があるのは２列目だけであるので、差がある列数は１である。行では、差があるのは１行目、２行目、３行目であるので、差がある行数は３である。したがって、差のある行数（３）＞差のある列数（１）であるので、差の少ない方である列を、先に対応付けを行うと判断する。
【００４１】
対応付けモジュール１６０は、判断モジュール１４０の判断結果にしたがって、列を先に対応付ける処理を行う。以下に、詳細に説明する。
（６）  旧表１３１０の１〜３列目の文字をそれぞれ全てつなげる。具体的には、「Ａ１２」、「ＢＤ○△○△」、「Ｃ××」となる。新表１３２０の１〜３列目の文字をそれぞれ全てつなげる。具体的には、「Ａ１２」、「Ｂ○○」、「Ｃ××」となる。
（７）  旧表１３１０の１列目と、新表１３２０の１〜３列目の文字を比較し、一致率を算出する。
（８）  旧表１３１０の１列目と、新表１３２０の１列目が、最も一致率が高く、閾値も上回るので一致とする。
（９）  旧表１３１０の２列目以降も同様に行う。この結果を列対応テーブル１５１０に登録する。図１５（ａ）は、列対応テーブル１５１０のデータ構造例を示す説明図である。列対応テーブル１５１０は、旧表欄１５１２、新表欄１５１４を有している。旧表欄１５１２は、旧表１３１０の対応付けられた列番号を記憶している。新表欄１５１４は、新表１３２０の対応付けられた列番号を記憶している。具体的には、旧表１３１０の１列目と新表１３２０の１列目が対応し、旧表１３１０の３列目と新表１３２０の３列目が対応していることを示している。
（１０）  行については、列対応テーブル１５１０を用いて、対応する行内のセル同士の文字をつなげて比較する。具体的には、旧表１３１０の１行目は、列対応テーブル１５１０の旧表欄１５１２を用いて、１列目、３列目のセル内の文字をつなげて「ＡＣ」を生成する。新表１３２０の１行目は、列対応テーブル１５１０の新表欄１５１４を用いて、１列目、３列目のセル内の文字をつなげて「ＡＣ」を生成する。以下、同様に各行のセル内の文字をつなげて、文字列を生成する。つまり、（９）で対応付けられなかった列内のセルを除外して、旧表１３１０、新表１３２０の各行の文字列を生成している。
そして、行について、前述の一致率を算出する。例えば、旧表１３１０の「ＡＣ」と、新表１３２０の「ＡＣ」、「１×」、「２×」のそれぞれの一致率を算出すると、１００％、０％、０％となる。
旧表１３１０の２行目以降も、同様に行う。その際、すでに一致と判定された行は対象としないようにしてもよい。
これらの一致の情報を、行対応テーブル１５２０に登録する。図１５（ｂ）は、行対応テーブル１５２０のデータ構造例を示す説明図である。行対応テーブル１５２０は、旧表欄１５２２、新表欄１５２４を有している。旧表欄１５２２は、旧表１３１０の対応付けられた行番号を記憶している。新表欄１５２４は、新表１３２０の対応付けられた行番号を記憶している。具体的には、旧表１３１０の１行目と新表１３２０の１行目が対応し、旧表１３１０の２行目と新表１３２０の２行目が対応し、旧表１３１０の３行目と新表１３２０の３行目が対応していることを示している。
（１１）  以下、具体例（１）と同様の処理を行い、新表１３２０の２列目が、旧表１３１０とは異なることを表示する。
【００４２】
前述の例では、表の構造として、セルの分割、統合がない単純な構造を示した。
しかし、図１６（ａ）の例に示すような構造の対象表１６１０がある場合もある。つまり、対象表１６１０のように、セルの分割、統合がある場合（ある行を構成するセル数が他の行を構成するセル数と異なる場合、又は、ある列を構成するセル数が他の列を構成するセル数と異なる場合）、図１６（ｂ）の例に示すような変換後表１６２０として扱う。変換後表１６２０は、対象表１６１０の最小のセルに合わせて、他のセルを分割したものである。具体的には、対象表１６１０の１列２行目のセルを２列のセルに合わせて２つに分割し、同様に、対象表１６１０の１列３行目のセルを２列のセルに合わせて３つに分割したものである。行列数取得モジュール１２０は、対象としている表のある行を構成するセル数が他の行を構成するセル数と異なる場合、又は、ある列を構成するセル数が他の列を構成するセル数と異なる場合は、その表において最小のセルに合わせて、他のセルを分割した表を生成して、行数、列数を計数する。また、新しく生成したセルには、分割前のセル内の文字を設定する。
したがって、変換後表１６２０の１行目の文字の接続は「ＡＢＣＤＥ」となり、２行目の文字の接続は「Ａ１Ｂ１Ｃ１Ｄ１Ｅ１」となり、３行目の文字の接続は「Ａ１Ｂ２Ｃ２Ｄ２Ｅ２」となり、４行目の文字の接続は「Ａ２Ｂ３Ｃ３Ｄ３Ｅ３」となり、５行目の文字の接続は「Ａ２Ｂ４Ｃ４Ｄ４Ｅ４」となり、６行目の文字の接続は「Ａ２Ｂ５Ｃ５Ｄ５Ｅ５」となる。また、変換後表１６２０の１列目の文字の接続は「ＡＡ１Ａ１Ａ２Ａ２Ａ２」となり、２列目の文字の接続は「ＢＢ１Ｂ２Ｂ３Ｂ４Ｂ５」となり、３列目の文字の接続は「ＣＣ１Ｃ２Ｃ３Ｃ４Ｃ５」となり、４列目の文字の接続は「ＤＤ１Ｄ２Ｄ３Ｄ４Ｄ５」となり、５列目の文字の接続は「ＥＥ１Ｅ２Ｅ３Ｅ４Ｅ５」となる。
【００４３】
また、前述の実施の形態の判断モジュール１４０は、表の行又は列の対応付け処理のうち、いずれか一方を先に行うとの判断を行った。しかし、先に行の対応付け処理と次に列の対応付け処理の組み合わせ処理Ａと、先に列の対応付け処理と次に行の対応付け処理の組み合わせ処理Ｂの両方の処理（組み合わせ処理Ａと組み合わせ処理Ｂ）を行うようにしてもよい。この場合、組み合わせ処理Ａと組み合わせ処理Ｂのいずれかの処理結果を選択すればよい。
つまり、対応付けモジュール１６０は、次の処理を行うようにしてもよい。
第１の表と第２の表の各行で対応付ける（第１の対応付け処理）。次に、第１の対応付け処理によって対応付けられなかった行内のセルを除外して、第１の表と第２の表の各列で対応付ける（第２の対応付け処理）。そして、第１の表と第２の表の各列で対応付ける（第３の対応付け処理）。次に、第３の対応付け処理によって対応付けられなかった列内のセルを除外して、第１の表と第２の表の各行で対応付ける（第４の対応付け処理）。
そして、第１の対応付け処理と第２の対応付け処理によって対応付けられなかった行数と列数の和と、第３の対応付け処理と第４の対応付け処理によって対応付けられなかった行数と列数の和を比較し、少ない方の対応付け結果を選択する。
【００４４】
図１７を参照して、本実施の形態の情報処理装置のハードウェア構成例について説明する。図１７に示す構成は、例えばパーソナルコンピュータ（ＰＣ）等によって構成されるものであり、スキャナ等のデータ読み取り部１７１７と、プリンタ等のデータ出力部１７１８を備えたハードウェア構成例を示している。
【００４５】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７０１は、前述の実施の形態において説明した各種のモジュール、すなわち、表取得モジュール１１０、行列数取得モジュール１２０、計算モジュール１３０、判断モジュール１４０、文字特定モジュール１５０、対応付けモジュール１６０、出力モジュール１７０等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００４６】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１７０２は、ＣＰＵ１７０１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１７０３は、ＣＰＵ１７０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバス等から構成されるホストバス１７０４により相互に接続されている。
【００４７】
ホストバス１７０４は、ブリッジ１７０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス１７０６に接続されている。
【００４８】
キーボード１７０８、マウス等のポインティングデバイス１７０９は、操作者により操作される入力デバイスである。ディスプレイ１７１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）等があり、各種情報をテキストやイメージ情報として表示する。
【００４９】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１７１１は、ハードディスクを内蔵し、ハードディスクを駆動し、ＣＰＵ１７０１によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、対象とする表、対応付け結果等が格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【００５０】
ドライブ１７１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体１７１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース１７０７、外部バス１７０６、ブリッジ１７０５、及びホストバス１７０４を介して接続されているＲＡＭ１７０３に供給する。リムーバブル記録媒体１７１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００５１】
接続ポート１７１４は、外部接続機器１７１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート１７１４は、インタフェース１７０７、及び外部バス１７０６、ブリッジ１７０５、ホストバス１７０４等を介してＣＰＵ１７０１等に接続されている。通信部１７１６は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部１７１７は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部１７１８は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【００５２】
なお、図１７に示す情報処理装置のハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１７に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図１７に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機等に組み込まれていてもよい。
【００５３】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００５４】
１００…情報処理装置
１１０…表取得モジュール
１２０…行列数取得モジュール
１３０…計算モジュール
１４０…判断モジュール
１５０…文字特定モジュール
１６０…対応付けモジュール
１７０…出力モジュール
２１０…ユーザ端末
２２０…画像処理装置
２９０…通信回線
【図１】
0006421568.tif 000002
【図２】
0006421568.tif 000003
【図３】
0006421568.tif 000004
【図４】
0006421568.tif 000005
【図５】
0006421568.tif 000006
【図６】
0006421568.tif 000007
【図７】
0006421568.tif 000008
【図８】
0006421568.tif 000009
【図９】
0006421568.tif 000010
【図１０】
0006421568.tif 000011
【図１１】
0006421568.tif 000012
【図１２】
0006421568.tif 000013
【図１３】
0006421568.tif 000014
【図１４】
0006421568.tif 000015
【図１５】
0006421568.tif 000016
【図１６】
0006421568.tif 000017
【図１７】
0006421568.tif 000018