以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本発明においては、種々の表形式文書に対応できるように、既知の表形式の罫線のレイアウト構造を学習し、学習した情報を活用して未知の表形式文書からタイトル等を高精度に抽出する。このために、フォーム学習モードと運用モードを設ける。以下では、このレイアウト構造のことを、フォーマット構造またはフォームとも呼ぶことがある。
図2は、このような管理情報抽出処理の概要を示している。管理情報抽出装置は、まずフォーム学習時に、既知の表形式文書A、B等の罫線のレイアウト構造とユーザに指定させた正しいタイトル領域等の位置を学習する。そして、それらの情報を含むレイアウト辞書(フォーム辞書)31を作成しておく。
ユーザがタイトル位置を指定するモードとしては、文書A、B等のフォーム認識を伴わないユーザ登録モードと、フォーム認識を伴う自動学習モードとがある。これらの各モードにおける処理については、後述することにする。
次に、運用時には、管理情報抽出装置は、入力された未知の文書32から罫線のレイアウト構造を抽出し、レイアウト辞書31とのマッチングを行う。これにより、レイアウト辞書に記憶されているレイアウト構造と一致する表形式文書が識別される。ここでは、文書32のレイアウト構造は文書Aのそれと一致している。
そして、管理情報抽出装置は、対応する文書Aに指定されたタイトル位置の情報を参照して、入力文書32の文字列領域33からタイトルを高精度に抽出する。また、タイトルだけでなく、日付等の他のタグ領域を管理情報としてユーザに指定させることで、様々な文書の管理情報を高精度に抽出することができる。
運用時に、ユーザが文書をスキャナで入力する時に、管理情報が迅速に自動抽出されることが望まれるので、本発明では、ユーザのインタラクティブ性を重視した高速アルゴリズムを採用する。このアルゴリズムでは、対応するフォームを大分類、詳細分類の順に徐々に絞り込むことで、処理の高速化を図っており、フォーム学習時にも、これに対応する処理が行われる。
図3は、フォーム学習モードにおける処理の概要を示すフローチャートである。処理が開始されると、管理情報抽出装置は、まず、学習対象となる文書画像を入力し(ステップS1)、その罫線構造を抽出する(ステップS2)。そして、ユーザに管理情報の位置を問い合わせ、その位置を指定させる(ステップS3)。
次に、抽出された罫線構造から、実線と破線を区別しながら、大分類用の罫線の特徴を抽出し(ステップS4)、詳細識別用の外郭罫線の特徴を抽出する(ステップS5)。例えば、大分類用の特徴としては、データの変動に強い罫線構造の特徴を用い、詳細識別用の特徴としては、高速処理を考慮して、表の外郭形状に関するCROSS RATIO (クロス比、複比)を用いる。
そして、抽出された罫線の特徴と指定された管理情報の位置を、レイアウト辞書31に格納して(ステップS6)、処理を終了する。格納された情報は運用モードにおいて参照され、未知文書から管理情報を抽出するために利用される。
図4は、運用モードにおける処理の概要を示すフローチャートである。処理が開始されると、管理情報抽出装置は、まず、処理対象となる文書画像を入力し(ステップS11)、その罫線構造を抽出する(ステップS12)。
次に、抽出された罫線構造から、大分類用の罫線の特徴を抽出し(ステップS13)、レイアウト辞書31の対応する情報と比較して、罫線構造の大分類を行う(ステップS14)。これにより、レイアウト辞書31の罫線構造のうち、入力文書のそれと一致する可能性のあるものが、候補として抽出される。
次に、罫線構造から詳細識別用の外郭罫線の特徴を抽出し(ステップS15)、大分類で抽出された候補の対応する情報と比較して、罫線構造の詳細識別を行う(ステップS16)。ここでは、例えば、CROSS RATIO の1次元マッチング処理を行って、入力文書に対応する候補を特定する。
そして、その候補のフォーム上で指定された管理情報の位置に基づいて、入力文書画像内の管理情報の位置を算出し(ステップS17)、処理を終了する。こうして、既知の文書中でユーザが指定した位置情報を用いて、入力文書画像から、管理情報を高精度に抽出することができる。また、運用時におけるフォームの照合処理を大分類と詳細識別の2段階で行うので、詳細識別の候補が絞り込まれ、抽出処理が高速化される。
本実施形態の管理情報抽出装置は、例えば図5に示すような情報処理装置(コンピュータ)により実現される。図5の情報処理装置は、CPU41、メモリ42、入力装置43、出力装置44、外部記憶装置45、媒体駆動装置46、ネットワーク接続装置47、および光電変換装置48を備え、それらの各装置はバス49により互いに結合されている。
CPU41は、メモリ42を利用しながらプログラムを実行して、図3、4に示した各処理を行う。メモリ42としては、例えばROM(read only memory)、RAM(random access memory)等が用いられる。ROMには、上述のプログラムが格納され、RAMには、レイアウト辞書31等の必要なデータが一時的に保持される。
入力装置43は、例えばキーボード、ポインティングデバイス等に相当し、ユーザからの要求や指示の入力に用いられる。また、出力装置44は、表示装置(ディスプレイ)やプリンタ等に相当し、ユーザへの問い合せや処理結果等の出力に用いられる。
外部記憶装置45は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。この外部記憶装置45に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ42にロードして使用することができる。また、外部記憶装置45は、画像やレイアウト辞書31を保存するデータベースとしても使用される。
媒体駆動装置46は、可搬記録媒体50を駆動し、その記憶内容にアクセスすることができる。可搬記録媒体50としては、メモリカード、フレキシブルディスク、CD−ROM(compact disk read only memory )、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体を使用することができる。この可搬記録媒体50に、上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ42にロードして使用することができる。
ネットワーク接続装置47は、LAN(local area network)等の任意の通信ネットワークに接続され、通信に伴うデータ変換等を行って、外部の情報提供者のデータベース50′等と通信する。これにより、管理情報抽出装置は、必要に応じて、上述のプログラムとデータをデータベース50′からネットワークを介して受け取り、それらをメモリ42にロードして使用することができる。
また、光電変換装置48は、例えばイメージスキャナであり、処理対象となる文書や図面等の画像を入力する。
次に、図6から図16までを参照しながら、フォーム学習時に行われる各処理について説明する。
図6は、フォーム学習時の処理の詳細を示すフローチャートである。図6において、図3と対応する処理ステップには、図3と同じ符号が用いられている。まず、ステップS2の罫線構造抽出処理では、管理情報抽出装置は、図7に示すように、入力された文書画像から縦/横の破線を抽出し(ステップS2−1)、縦/横の実線を抽出し(ステップS2−2)、さらに、それらの縦横の罫線で囲まれた矩形セル(矩形領域)を抽出する(ステップS2−3)。
罫線や矩形セルの抽出には、本出願人による「画像抽出装置」(特開平7−28937)や「枠抽出装置及び矩形抽出装置」(特願平7−203259)等の先願の技術が用いられる。これらの技術によれば、帳票内の罫線枠の位置等の情報入力を必要とせずに、その画像から枠の抽出や除去を行うことが可能である。以下に、罫線構造抽出処理の概要を示す。
(1)細線化:マスク処理によって、縦横の線分を細線化し、文字と枠の太さの差をなくす。
(2)線分抽出:隣接投影法を用いて、比較的長い線分の抽出を行う。隣接投影とは、注目する行または列に含まれる画素の投影値に、その周囲の行または列の投影値を足し合せた結果を、注目する行または列の最終的な投影値とする方法である。この投影法によれば、特定の行または列の周囲の画素分布を大局的に捉えることができる。
(3)直線抽出:抽出された線分を順に探索し、線分と線分の間に一定長さ以上の途切れがないかどうかを検査する。間にそのような途切れがない線分同士を順に統合していき、長い直線を抽出する。
(4)直線統合:抽出された直線同士を再度統合する。かすれにより2つ以上の部分に分離された直線を、1つの直線に統合する。
(5)直線伸張:規則的な帳票であると分かっているときに限り、かすれにより短くなった直線の伸張処理を行い、本来の長さに修復する。
(6)横枠決定:「枠抽出装置及び矩形抽出装置」(特願平7−203259)に示された規則に従って、表の上部から順に、2本1組で1行の記入欄を構成する横直線を、横枠線として2本ずつ抽出する。
(7)縦枠決定:縦枠線は、上述の記入欄1行毎に決定する。注目している行を構成する2本の横枠線に、上下端がともに達している縦直線を、その行における縦枠線とする。
(8)矩形セル抽出:2本の横枠線および2本の縦枠線で囲まれた矩形セルを、文字領域として抽出する。
次に、ステップS3の管理情報位置指定処理では、管理情報抽出装置は、図8に示すように、入力された文書画像をディスプレイの画面に表示して、例えば、タイトルを表す文字列のどこかを、ユーザにマウスでポインティングしてもらう。そして、そのポインティング位置を含む矩形セル51の位置情報を記憶する。
矩形セル51の位置情報としては、表の周辺上の任意の交点(外郭点)を基準点とし、その点から矩形セル51の位置までのベクトルの情報が記憶される。例えば、左上頂点52、左下頂点53、右上頂点54、右下頂点55をベクトルの始点とした場合、それらの各頂点から、それぞれ、矩形セル51の左上頂点56、左下頂点57、右上頂点58、右下頂点59までの差分ベクトルA、B、C、Dのデータが記憶される。また、同時に、表の縦、横のサイズh0、w0、および、矩形セルの縦、横のサイズH1、W1も記憶しておく。
次に、ステップS4の大分類用罫線特徴抽出処理では、管理情報抽出装置は、まず、横罫線と縦罫線の交点の数を数える(ステップS4−1)。次に、各交点における交差形状を抽出し、その頻度分布を求める(ステップS4−2)。交差形状は、交点から上下左右の向きに罫線が存在するかどうかと、存在する罫線の種類とを表すコード(K1,K2,K3,K4)で表現される。
ここで、要素K1は交点の上側の罫線に対応し、要素K2は交点の下側の罫線に対応し、要素K3は交点の左側の罫線に対応し、要素K4は交点の右側の罫線に対応する。各要素の値は、罫線が存在しないとき0となり、実線が存在するとき1となり、破線が存在するとき2となる。
例えば、図9のような交点の交差形状は(1,1,1,1)と表され、図10のような交点の交差形状は(1,1,1,0)と表され、図11のような交点の交差形状は(0,2,2,2)と表され、図12のような交点の交差形状は(1,1,2,2)と表される。このように、(K1,K2,K3,K4)の各要素は3通りの値を取り得るため、可能なコードの総数は34 (=81)となる。ステップS4−2では、81通りの各コード毎に出現回数(頻度)を求めて、それを記憶する。
次に、各矩形セルの縦横比を計算し、その頻度分布を矩形セルの頻度分布として算出する(ステップS4−3)。矩形セルの縦の長さをH1、横の長さをW1とすると、縦横比はW1/H1のように求められる。縦横比の頻度分布は、例えば、W1/H1の値を0から0.5刻みで増やしていき、各値に対応する縦横比を持つ矩形セルの数をカウントすることで求められる。このとき、あるしきい値(例えば、10)を超える矩形セルについては、それらの数をまとめてカウントする。
次に、ステップS5の詳細識別用外郭罫線特徴抽出処理では、管理情報抽出装置は、まず、交点が並んでいる各行または列内で、左右または上下方向の外側(外郭)から、4つの交点から成る交点列を取り出す。
例えば、図13に示すような罫線構造の場合は、2行目の左から順に4つの交点を取り出すと、交点61、62、63、64が取り出され、右から順に4つの交点を取り出すと、交点65、64、63、62が取り出される。また、3列目の上から順に4つの交点を取り出すと、交点66、63、67、68が取り出され、下から順に4つの交点を取り出すと、交点70、69、68、67が取り出される。
そして、取り出された交点列に関する1次元Projective Invariants (射影不変量)のCROSS RATIO を計算する。例えば、図14に示すように、4つの交点X1、X2、X3、X4から成る交点列が取り出されたとすると、そのCROSS RATIO は、次式で与えられる。
ここで、|Xi−Xj|は、交点Xiと交点Xjの間隔の長さ(距離)を表す(i,j=1,2,3,4)。(1)式のCROSS RATIO は、例えば、図15のようなフローチャートに従って計算される。CROSS RATIO 算出処理が開始されると、管理情報抽出装置は、まず、4つの交点X1、X2、X3、X4の座標データを入力する(ステップS21)。
次に、交点X1とX2の距離を求めて変数aに入力し(ステップS22)、交点X3とX4の距離を求めて変数bに入力し(ステップS23)、交点X1とX3の距離を求めて変数cに入力し(ステップS24)、交点X2とX4の距離を求めて変数dに入力する(ステップS25)。そして、ab/cdを計算して、その値をCROSS RATIO として記憶し(ステップS26)、処理を終了する。
このようにして、すべての交点列のCROSS RATIO を算出することで、表の外郭付近に位置する交点の並びの特徴が定量化される。これにより、図16に示すように、表の外郭形状の2次元的な特徴が1次元の数値の並びで表現される。以下では、このCROSS RATIO の値の並びをCROSS RATIO 列と呼ぶことにする。
図16において、右のCROSS RATIO 列R[1],R[2],R[3],...,R[n]は、各行の右端部分の特徴を表すCROSS RATIO に対応し、左のCROSSRATIO列L[1],L[2],L[3],...,L[m]は、各行の左端部分の特徴を表すCROSS RATIO に対応する。また、上のCROSS RATIO 列U[1],U[2],U[3],...,U[w]は、各列の上端部分の特徴を表すCROSS RATIO に対応し、下のCROSS RATIO 列D[1],D[2],D[3],...,D[v]は、各行の下端部分の特徴を表すCROSS RATIO に対応する。
一般には、表の左右両端部分における罫線構造は対称ではなく、また、画像の一部がかすれたり、潰れたりしている場合もあるので、nとmは必ずしも一致するとは限らない。同様の理由で、wとvは必ずしも一致するとは限らない。
これらの4つの方向のCROSS RATIO 列を1つに繋げれば、各CROSS RATIO の値を要素とする特徴ベクトル(R[1],...,R[n],L[1],...,L[m],U[1],...,U[w],D[1],...,D[v])が生成される。
ところで、ここでは、詳細識別用の外郭罫線の特徴として、4つの交点の間隔の比率を用いているが、その代わりに、2つ以上の任意の個数の交点の間隔の比率を用いてもよい。その場合も、その比率を1次元的に並べることで、表の外郭形状の特徴が表現される。
そして、ステップS6の処理では、管理情報抽出装置は、ステップS3で指定された管理情報の位置とステップS4、S5で求めた罫線の特徴とを、その表形式文書の識別情報(フォーム情報)として、レイアウト辞書31に格納する。
次に、図17から図22までを参照しながら、運用時に行われる各処理について説明する。
図17は、運用時の処理の詳細を示すフローチャートである。図17において、図4と対応する処理ステップには、図4と同じ符号が用いられている。まず、ステップS12の罫線構造抽出処理では、管理情報抽出装置は、フォーム学習時のステップS2の処理と同様にして、入力された文書画像から縦/横の破線を抽出し(ステップS12−1)、縦/横の実線を抽出し(ステップS12−2)、それらの縦横の罫線で囲まれた矩形セルを抽出する(ステップS12−3)。
また、ステップS13の大分類用罫線特徴抽出処理では、管理情報抽出装置は、フォーム学習時のステップS4の処理と同様にして、横罫線と縦罫線の交点の数を数え(ステップS13−1)、各交点における交差形状の頻度分布を求め(ステップS13−2)、各矩形セルの縦横比の頻度分布を算出する(ステップS13−3)。
次に、ステップS14の大分類処理では、管理情報抽出装置は、交点数、交差形状の頻度分布、および矩形セルの縦横比の頻度分布を用いて、レイアウト辞書31内の多数の表のフォーム情報との照合を行い、該当する表の候補の数を絞り込む。ここでは、画像のかすれ、潰れ等による罫線構造の変動も考慮して、交点数、交差形状の頻度、および矩形セルの縦横比の頻度の各特徴に対して適当なしきい値を設定し、辞書31のフォーム情報が一定の許容範囲内で入力画像の情報と一致すれば、それを該当する表の候補とする。
例えば、入力された文書画像の交点数をKiとし、辞書31に格納されたフォームtの交点数をKtとすると、それらの差の絶対値|Ki−Kt|がしきい値THk以内であれば、フォームtを候補とする。このように、入力画像と辞書31内のフォーム情報の各要素の差が、すべてそれぞれのしきい値以内に収まれば、そのフォームを入力文書に該当するフォームの候補とする。
交点数、交点形状、矩形セルのサイズの頻度分布等の特徴は、一般に、画像の変動に強く、これらを用いることで、かすれや潰れのある文書画像でも高精度な照合を行うことができる。
次に、ステップS15の詳細識別用外郭罫線特徴抽出処理では、管理情報抽出装置は、フォーム学習時のステップS5の処理と同様にして、4方向からの1次元Projective Invariants のCROSS RATIO を計算する。
次に、ステップS16の詳細識別処理では、管理情報抽出装置は、大分類で絞り込まれた表候補だけに限って、CROSS RATIO 列の照合を行う。この処理では、入力フォームと学習済みフォームの間で、4方向それぞれ別々にCROSS RATIO 列の対応付けを行う。ここでは、対象とするフォームが表構造なので、各列と各行で罫線の順序関係が逆転することはなく、かすれ等により罫線が部分的に消失することだけを考慮し、DP(Dynamic Programming )マッチングを採用することにする。
DPマッチングは、音声等の時系列データのマッチング方法としてよく知られており、その詳細は、例えば、舟久保登著「パターン認識」(共立出版)p.62−p.67に記述されている。この方法では、2つのデータの集合を照合する際に、データの局所的な特徴に関して類似度を与え、類似度を用いて全体的な対応付けの良否を表す評価関数を定義する。そして、最も良い評価関数の値を与えるデータの対応関係を求める。
図18は、このようなDPマッチングを用いた右のCROSS RATIO 列の照合処理を示している。図18においては、入力フォームの右のCROSS RATIO 列R[1],R[2],R[3],...,R[n]が、辞書31内の学習済みフォームの右のCROSS RATIO 列R′[1],R′[2],R′[3],...,R′[n′]と対応付けられている。
また、この照合処理においては、罫線抽出の信頼度を考慮して、信頼度の高い罫線から求めた交点列のCROSS RATIO と、そうでないCROSS RATIO とで、評価関数における対応付けの重みを変えておく。例えば、信頼度の高い罫線から求めたCROSS RATIO の類似度には、より大きな重みが付加される。
図19は、DPマッチングによる右のCROSS RATIO 列の照合処理の例を示すフローチャートである。処理が開始されると、管理情報抽出装置は、まず、入力フォームの右のCROSS RATIO 列を配列R[i](i=1,...,n)に格納し、学習済みフォームの右のCROSS RATIO 列を配列R′[k](k=1,...,n′)に格納する(ステップS31)。
次に、誤差配列E[i,k]を初期化し(ステップS32)、i=1,...,n、k=1,...,n′について、次のような漸化式の計算を行う(ステップS33)。
E[i,k]=min{E[i−1,k]+d[i,k],
E[i−1,k−1]+λ*d[i,k],
E[i,k−1]+d[i,k]} (2)
ここで、E[i,k]は、CROSS RATIO 列の一部分である(R[1],...,R[i])を(R′[1],...,R′[k])に対応付けたときの誤差の累積の最小値を表す。したがって、計算途中における累積誤差を評価関数として用いた場合、E[i,k]はその最小値を与えていることになる。また、d[i,k]は、R[i]とR′[k]を対応付けたときの誤差を表し、例えば、次式により与えられる。
d[i,k]=|R[i]−R′[k]| (3)
また、λはd[i,k]に対する重みを表し、min{}は{}内の要素のうちの最小値を表す。
次に、E[n,n′]の経路を算出し(ステップS34)、それをCROSS RATIO 列(R[1],...,R[n])と(R′[1],...,R′[n′])の対応付けの結果として格納して(ステップS35)、処理を終了する。こうして、評価関数が最小となるような各CROSS RATIO 同士の対応関係が求められる。左、上、下のCROSS RATIO 列の照合処理についても同様である。
ステップS16では、このような1次元のDPマッチングを、大分類で得られたすべての学習済みフォームについて行い、それらのうちで評価関数が最小(最良)となるものを、入力フォームに該当するフォームと判断する。このように、詳細識別において、表構造の外側の形状(外郭形状)の特徴を用い、しかも1次元マッチングによる識別を行うので、高速処理が可能となる。
そして、ステップS17の管理情報位置算出処理では、管理情報抽出装置は、レイアウト辞書31を参照して、詳細識別で特定された学習済みフォームの位置情報を取り出し、それを用いて入力画像から管理情報を抽出する。
この処理では、まず、上述のDPマッチングにおけるCROSS RATIO 列の対応付け結果を用いて、表の各行各列の両端に位置する交点(端点)のマッチング度を調べ、端点が安定かどうかを判定する。ここで、端点のマッチング度とは、入力フォームのあるCROSS RATIO と学習済みフォームのあるCROSS RATIO の対応付けの確からしさを意味する。
例えば、図18においては、R[1]とR′[1]は一意的(1対1)に対応しているので、1行目の右端の端点は安定であると判定される。また、R[3]とR′[4]も1対1に対応しているので、該当する行の右端の端点は安定である。しかし、R[2]はR′[2]とR′[3]の両方に対応付けられており、対応が一意的ではないので、該当する行の右端の端点は安定ではないと判定される。このようにして、表の左上、左下、右上、右下の各頂点に最も近い安定した端点をそれぞれ求め、これらを安定な外郭点とする。
次に、安定な外郭点を基準にして、入力フォームの表と学習済みフォームの表の縦、横のサイズh0、w0を求め、それらを比較して、学習済みフォームの表に対する入力フォームの表の縦横の相対的な比率を求める。そして、図8に示した差分ベクトルA、B、C、D、および矩形セルの縦、横のサイズH1、W1を用いて、管理情報の位置を算出する。
上述の比率は、入力フォームの表の学習済みフォームの表に対する拡大率または縮小率を表し、それらの表の間で、サイズの変動を正規化するために用いられる。
例えば、図8に示した表に対する入力フォームの表の縦横の比率がともにαである場合、差分ベクトルA、B、C、Dをそれぞれα倍する。そして、入力フォームの表内で、左上の安定な外郭点を始点として、差分ベクトルAのα倍のベクトルを用いて、管理情報を含む矩形セルの左上頂点のおよその位置を求める。同様にして、右上、左下、右下の安定な外郭点を始点として、差分ベクトルB、C、Dのα倍のベクトルを用いれば、矩形セルの右上頂点、左下頂点、右下頂点のおよその位置が求められる。
次に、こうして求めた位置の近くに存在する矩形セルであって、縦、横のサイズがそれぞれH1*α、W1*αに類似している矩形セルを見つける。そして、その矩形セル内部にある文字列等のデータを、所望の管理情報として取り出す。
図20、21、22は、管理情報位置算出処理の例を示すフローチャートである。処理が開始されると、管理情報抽出装置は、まず、DPマッチングにおける4方向のCROSS RATIO 列の対応付け結果を入力する(ステップS41)。
ここでは、右のCROSS RATIO 列(R[1],...,R[n])と(R′[1],...,R′[n′])の対応付けの結果と、左のCROSS RATIO 列(L[1],...,L[m])と(L′[1],...,L′[m′])の対応付けの結果と、上のCROSS RATIO 列(U[1],...,U[w])と(U′[1],...,U′[w′])の対応付けの結果と、下のCROSS RATIO 列(D[1],...,D[v])と(D′[1],...,D′[v′])の対応付けの結果とが入力される。
次に、これらのデータから入力フォームの安定な端点を算出し、これらを安定な外郭点の候補とする(ステップS42)。これらの候補に対応するCROSS RATIO を、それぞれ、R[nmin],R[nmax],L[mmin],L[mmax],U[wmin],U[wmax],D[vmin],D[vmax]と書くことにする。
ここで、nminは、表の右端の安定な端点のうち最も上(y座標が最小)にある点の行番号を表し、nmaxは、表の右端の安定な端点のうち最も下(y座標が最大)にある点の行番号を表す。また、mminは、表の左端の安定な端点のうち最も上にある点の行番号を表し、mmaxは、表の左端の安定な端点のうち最も下にある点の行番号を表す。
また、wminは、表の上端の安定な端点のうち最も左(x座標が最小)にある点の列番号を表し、wmaxは、表の上端の安定な端点のうち最も右(x座標が最大)にある点の列番号を表す。また、vminは、表の下端の安定な端点のうち最も左にある点の列番号を表し、vmaxは、表の下端の安定な端点のうち最も右にある点の列番号を表す。
次に、得られた候補のデータを用いて、安定な外郭点の位置を算出する(ステップS43)。ここでは、各候補のx座標、y座標の最大値および最小値を求めて、それらの値を安定な外郭点の座標成分とする。
図20において、例えば、XMIN{R[nmin],R[nmax],L[mmin],L[mmax],U[wmin],U[wmax],D[vmin],D[vmax]}は、{}内の各CROSS RATIO の値に対応する端点のx座標のうちで最小のものを表す。同様に、XMAX{}は各端点のx座標の最大値を表し、YMIN{}は各端点のy座標の最小値を表し、YMAX{}は各端点のy座標の最大値を表す。
以下では、これらの値XMIN{}、XMAX{}、YMIN{}、YMAX{}を、簡単のため、それぞれ、XMIN、XMAX、YMIN、YMAXと書くことにする。このとき、左上、右上、左下、右下の安定な外郭点の座標は、それぞれ、(XMIN,YMIN)、(XMAX,YMIN)、(XMIN,YMAX)、(XMAX,YMAX)で与えられる。
次に、学習済みフォームである辞書フォームの安定な端点を算出し、これらを安定な外郭点の候補とする(図21、ステップS44)。これらの候補に対応するCROSS RATIO を、それぞれ、R′[nmin′],R′[nmax′],L′[mmin′],L′[mmax′],U′[wmin′],U′[wmax′],D′[vmin′],D′[vmax′]と書くことにする。
ここで、nmin′、nmax′、mmin′、mmax′、wmin′、wmax′、vmin′、vmax′の意味については、上述のnmin、nmax、mmin、mmax、wmin、wmax、vmin、vmaxと同様である。
次に、得られた候補のデータを用いて、ステップS43と同様に、辞書フォームの安定な外郭点の位置を算出する(ステップS45)。図21において、XMIN′{}、XMAX′{}、YMIN′{}、YMAX′{}の意味については、上述のXMIN{}、XMAX{}、YMIN{}、YMAX{}と同様である。
以下では、これらの値XMIN′{}、XMAX′{}、YMIN′{}、YMAX′{}を、簡単のため、それぞれ、XMIN′、XMAX′、YMIN′、YMAX′と書くことにする。このとき、左上、右上、左下、右下の安定な外郭点の座標は、それぞれ、(XMIN′,YMIN′)、(XMAX′,YMIN′)、(XMIN′,YMAX′)、(XMAX′,YMAX′)で与えられる。
次に、ステップS43で得られた安定な外郭点の座標情報を用いて、次式により入力フォームの縦、横のサイズh0、w0を算出する(図22、ステップS46)。
w0=XMAX−XMIN (4)
h0=YMAX−YMIN (5)
また、ステップS45で得られた安定な外郭点の座標情報を用いて、次式により辞書フォームの縦、横のサイズh0′、w0′を算出する(ステップS47)。
w0′=XMAX′−XMIN′ (6)
h0′=YMAX′−YMIN′ (7)
そして、縦、横のサイズh0、w0、h0′、w0′から、次式により入力フォームと辞書フォームの大きさの比率(拡大率または縮小率)Sw、Shを算出する(ステップS48)。
Sw=w0/w0′ (8)
Sh=h0/h0′ (9)
次に、辞書31から、辞書フォームの表の安定な外郭点を始点とする差分ベクトルの成分の大きさを、管理情報の位置を表す相対座標値として取り出す(ステップS49)。この場合、辞書フォームのCROSS RATIO R′[1],...,R′[n′],L′[1],...,L′[m′],U′[1],...,U′[w′],D′[1],...,D′[v′]のそれぞれに対応する外郭点のうち、各頂点に近い複数の外郭点からの差分ベクトルが、あらかじめ辞書31に位置情報として格納されているものとする。
そして、左上、右上、左下、右下の安定な外郭点から相対座標値を、それぞれ、(fxmin1,fymin1)、(fxmax1,fymin2)、(fxmin2,fymax1)、(fxmax2,fymax2)とする。
次に、これらの相対座標値と、入力フォームと辞書フォームの大きさの比率Sw、Shとを用いて、入力フォーム内における管理情報の位置の概算を行う(ステップS50)。ここでは、管理情報の位置の候補として、次のような座標値を持つ4つの点が求められる。
(XMIN+Sw*fxmin1,YMIN+Sh*fymin1)
(XMAX−Sw*fxmax1,YMIN+Sh*fymin2)
(XMIN+Sw*fxmin2,YMAX−Sh*fymax1)
(XMAX−Sw*fxmax2,YMAX−Sh*fymax2)
次に、これらの候補位置を含む入力フォームの矩形セルを抽出する(ステップS51)。そして、その縦のサイズが、辞書フォームで指定されている矩形セルの縦のサイズH1のSh倍に近く、横のサイズが、指定されている矩形セルの横のサイズW1のSw倍に近い場合に、その矩形セルを管理情報を含むセルと判定する。
そして、その矩形セル内の文字列等の画像データを管理情報として出力し(ステップS52)、処理を終了する。こうして、詳細識別の結果を用いて、入力画像から管理情報が抽出される。
ここでは、辞書31は、辞書フォームのCROSS RATIO に対応する複数の外郭点の一部を始点とする差分ベクトルを格納するものとしたが、すべての外郭点からの差分ベクトルをあらかじめ格納しておく構成にしてもよい。こうしておくことで、表の頂点の近くの外郭点だけでなく、周辺上の任意の外郭点を安定な外郭点として選ぶことが可能になる。
また、安定な外郭点を4つ抽出する必要は必ずしもなく、処理を高速化するために、いずれか1つの安定な外郭点を基準点として、その位置からの相対座標値で管理情報の位置を求めてもよい。一般に、処理に用いる安定な外郭点の数は任意である。
さらに、ステップS51では、4つの候補位置を含む矩形セルを抽出するものとしたが、代わりに、1つ以上の候補位置を含む矩形セルを抽出してもよく、また、1つ以上の候補位置との距離が一定値以内であるような矩形セルを抽出してもよい。
上述した管理情報抽出処理によれば、入力文書のフォームと管理情報の位置が自動的に学習され、レイアウト辞書31に格納される。また、これらの情報を利用することで、種々の表形式文書に対応することができ、管理情報の位置が高精度に算出される。
次に、図6のステップS3における管理情報位置の指定方法について、さらに詳しく説明する。本実施形態では、ユーザによる管理情報位置の指定方法として、ユーザにその位置を明示的に指定させるユーザ登録モードと、管理情報の候補を自動的に抽出する自動学習モードの2通りを用意する。
ユーザ登録モードでは、管理情報抽出装置は、図8に示したように、表を構成する多数の矩形セルの中から管理情報の位置を、直接ユーザに指定させる。例えば、設計図面等の同じフォームの文書が大量にある場合に、最初の1枚目で管理情報の位置を指定しておけば、2枚目からはその位置の情報のみを読み取ればよく、オートドキュメントフィーダを使ったバッチ入力が可能になる。
また、自動学習モードでは、先願の「文書画像からのタイトル抽出装置および方法」(特願平7−341983)に記載されたタイトル抽出技術を用いて、管理情報の候補となる複数の領域を抽出し、それらの中からユーザが選択した領域の位置を自動学習して、次回からそれを1位の候補とする。もし、ユーザがそれらの候補のいずれも選択せずに、新たに任意の位置を指定した場合には、ユーザのインタラクティブな操作からその位置の情報を自動的に取得する。
あるいはまた、先願のタイトル抽出技術をユーザ登録モードにも適用して、複数の候補の中から管理情報を指定させることも可能である。この場合、自動学習モードでは、まず、図4の処理によりフォームの認識/識別を行い、入力画像が辞書31のフォームと一致するかどうかを調べる。そして、いずれかの辞書フォームと一致すれば、その位置情報を取り出してユーザに提示し、いずれの辞書フォームとも一致しなければ、先願のタイトル抽出技術により管理情報の候補を抽出する。
図23は、このような2つのモードを備えた管理情報抽出処理を示している。図23のユーザ登録モードにおいては、管理情報抽出装置は、まず、表形式文書の入力画像71から、先願の表内タイトル抽出処理を用いて、管理情報の複数の候補を抽出する。
図24は、この表内管理情報抽出処理のフローチャートである。処理が開始されると、管理情報抽出装置は、文書71を読み込み、文書画像としてメモリに格納する(ステップS61)。ここでは、処理の効率化のため、原画像を圧縮画像に変換して保存する。
次に、文書画像にラベリング処理を施し、矩形高さの最頻値をもとに大きな矩形を抽出し(ステップS62)、抽出された大きな矩形から表を囲む矩形(表矩形)を抽出して(ステップS63)、表矩形の中から管理情報を含むものを選択する(ステップS64)。ここでは、例えば、最も面積の大きな表矩形が選択される。
次に、選択された表矩形の内部から文字列を抽出し、文字列の外接矩形(文字列矩形)を求め、その座標をメモリに保存する(ステップS65)。次に、保存した文字列矩形から、横幅が小さい矩形や縦長矩形をノイズ矩形として除去し(ステップS66)、2つ以上の文字列矩形を統合する(ステップS67)。
ここまでの処理で、表内から抽出された文字列矩形が整理されるが、これらの文字列矩形は表罫線の一部を含んでいる場合もあり得る。そこで、文字列矩形の中の罫線部分を抽出し、その部分を境にして文字列矩形を分割する(ステップS68)。
次に、管理情報に相当する文字列矩形を抽出するために、文字列矩形内の文字数を計算する(ステップS69)。ここで計算された文字数は、文字列矩形の属性としてステップS72の処理で用いられる。
ステップS68の処理により、表罫線で囲まれた欄毎の文字列矩形が抽出されるが、元の表の外形が矩形ではない場合には、表の外にある文字列矩形が残されている可能性がある。そこで、上罫線のチェックを行って、上側に表罫線がないような文字列矩形は表外の文字列矩形とみなし、それを除去する(ステップS70)。
次に、表内の文字列矩形を表矩形の左上座標に近い順に並び替える(ステップS71)。そして、文字列矩形の文字数が一定の条件を満たす場合に、その文字列矩形を管理情報として抽出して(ステップS72)、処理を終了する。条件を満たす文字列矩形が複数ある場合、表矩形の左上に近いものから順に管理情報の候補とする。
ここでは、処理結果の画像77において、管理情報の3つの候補C1、C2、C3が抽出されており、管理情報抽出装置のユーザインタフェース78は、これらを優先順位の高いものから順に出力して、ユーザに提示する。ユーザは、管理情報として適当な候補が提示された時点で、マウスのポインティング操作によりそれを選択する。もし、適当な候補が提示されないときは、ポインティング操作により他の矩形セルを明示的に指定することで、管理情報候補を修正する。
管理情報抽出装置は、ユーザが選択/修正した管理情報の位置を学習し、その位置情報と罫線構造を、ユーザ辞書73として辞書31内に格納しておく。これにより、管理情報抽出装置は、ユーザから直接指定された位置情報を、次回以降の処理で利用することができる。
また、図23の自動学習モードにおいては、管理情報抽出装置は、まず、複数のユーザ辞書73を参照しながら、図4の処理に従って入力画像71、入力画像72等のフォームを認識する。
ここで、表形式の画像71が入力され、大分類および詳細識別による照合の結果、いずれかのユーザ辞書73のフォームと一致すると判定した場合は、その処理結果のフォーム74においてあらかじめ指定されている位置の管理情報C1を出力し、それをユーザに提示する。ユーザが提示された管理情報C1を承認すれば、それをそのまま採用し、ユーザがそれを承認しなければ、他の位置の情報C2、C3等から適当なものを選択させる。
また、入力画像71がいずれのユーザ辞書73のフォームとも一致しない場合は、上述の表内管理情報抽出処理を行って、処理結果の画像75から管理情報の候補C1、C2、C3等を抽出する。そして、ユーザインタフェース78は、これらを優先順位の高いものから順にユーザに提示し、ユーザは、それらのうち管理情報として適当なものを選択する。もし、適当な候補が提示されないときは、他の矩形セルを明示的に指定することで、管理情報候補を修正する。
管理情報抽出装置は、入力画像71においてユーザが選択/修正した管理情報の位置を学習し、その位置情報と罫線構造を、ユーザ辞書73として辞書31内に格納しておき、次回以降の処理で利用する。
また、表形式でない通常の文書画像72が入力された場合は、フォーム認識の結果、罫線構造がないと判定される。そこで、先願の罫線のない文書画像からのタイトル抽出処理を用いて、管理情報の複数の候補を抽出する。
図25は、この管理情報抽出処理のフローチャートである。処理が開始されると、管理情報抽出装置は、文書72を読み込み、文書画像としてメモリに格納する(ステップS81)。ここでは、処理の効率化のため、原画像を圧縮画像に変換して保存する。
次に、文書画像にラベリング処理を施し、その結果に基づいて文字列を抽出し、文字列矩形の座標をメモリに保存する(ステップS82)。次に、保存した文字列矩形から、横幅が小さい矩形や縦長矩形をノイズ矩形として除去し(ステップS83)、さらに文字列らしくない矩形を除いて、文書領域を決定する(ステップS84)。
次に、残った文字列矩形を縦方向(y座標)で並べ替え(ステップS85)、枠の画像を含む矩形(枠矩形)を抽出して、枠矩形内にある文字列矩形を枠付き矩形としてマークする(ステップS86)。また、下線の画像を含む矩形を抽出して、そのすぐ上にある文字列矩形を下線矩形としてマークする(ステップS87)。
次に、文字列矩形の文書内での位置、文字のサイズ、枠付き矩形や下線矩形に該当するかどうか等の性質に基づいて、タイトルらしさのポイント計算を行い、ポイントの高い1つ以上の文字列矩形をタイトル候補として抽出する(ステップS88)。そして、その結果を用いて文書の宛先と発信元情報を抽出する(ステップS89、S90)。こうして、タイトル、宛先、および発信元情報が管理情報の候補として抽出される。
ここでは、処理結果の画像76において、タイトルの3つの候補C4、C5、C6と、宛先および発信元情報が抽出されている。ユーザインタフェース78は、これらを優先順位の高いものから順に出力して、ユーザに提示する。ユーザは、管理情報として適当な候補が提示された時点で、マウスのポインティング操作によりそれを選択する。もし、適当な候補が提示されないときは、ポインティング操作により他の文字列矩形を明示的に指定することで、管理情報候補を修正する。
次に、図26から図28までを参照しながら、こうして抽出された管理情報の利用形態について説明する。従来は、画像を管理する管理情報として、キーワードや文書名等の文字コードしか用いられていなかったが、本発明の管理情報抽出装置を備える電子ファイリングシステムでは、文字コード以外に文書画像の一部をインデックスとして格納する機能を備えておく。これにより、文字コードの信頼度が低い場合等に、画像による検索を行うことが可能になる。
このシステムは、管理情報を文字コードで保存するか画像コードで保存するかをユーザに選択させ、その選択結果に従って、いずれかのデータを管理情報として格納する。また、画像の検索時には、ユーザに管理情報の検索方法を選択させ、その結果に従って、文字コードまたは画像で検索する。また、単に文字コードまたは画像をパラパラと見るだけのブラウジングの機能も備えておく。
図26は、このような画像情報格納処理のフローチャートである。処理が開始されると、電子ファイリングシステムは、まず、文書画像を入力し(ステップS101)、例えば、図4の処理に従って管理情報の位置を算出して、管理情報の文字列を見つける(ステップS102)。そして、抽出した文字列に対する管理情報の保存方法をユーザに選択させる(ステップS103)。
保存方法としては、文字列を文字認識して文字コードに変換する文字認識モードと、文字認識を行わず文字列を画像で保存する画像モードがある。ユーザが文字認識モードを選択した場合は、文字認識を行い(ステップS104)、その認識結果の信頼度に応じて格納方法を選択する(ステップS105)。
文字認識の信頼度の算出方法としては、例えば、本出願人による先願の「文字認識方法および装置」(整理番号9604161)に記載された技術を用いる。この技術によれば、システムは、まず、認識結果の文字コードと入力された文字パターンとの距離値から確率パラメータを算出し、文字パターンと正解文字コードの集合から、確率パラメータを正読確率に変換する変換テーブルを生成する。次に、その変換テーブルを用いて、確率パラメータに対する正読確率を求め、その正読確率を認識結果の信頼度とする。
文字認識の信頼度が一定のしきい値より低い場合には、ユーザに画像で保存することを通知して、文字コードだけでなく、その文字列の画像も同時に管理情報として保存し(ステップS106)、処理を終了する。信頼度がそのしきい値以上の場合には、文字コードを管理情報として保存し(ステップS107)、処理を終了する。
また、ユーザが画像モードを選択した場合は、文字列の画像を管理情報として保存し(ステップS108)、処理を終了する。ステップS103において、他の保存方法として、文字コードと画像コードの両方を保存するモードを設けることも、もちろん可能である。また、ステップS105における信頼度として、認識結果の文字コードと入力された文字パターンとの距離値の情報を用い、距離値が小さいほど信頼度が高いものとして判定を行ってもよい。
図27は、管理情報を格納する格納テーブルの例を示している。図27の管理情報格納テーブルでは、文字コード格納領域、画像格納領域、および文字コードで保存するか画像コードで保存するかの区別を表す種別フラグ領域(flag)が設けられている。
例えば、種別フラグの値が“0”のときは、文字コードのみが保存されていることを表し、その値が“1”のときは、画像コードのみが保存されていることを表し、その値が“2”のときは、文字コードと画像コードの両方が保存されていることを表す。
また、図28は、このような管理情報を検索する管理情報検索処理のフローチャートである。処理が開始されると、電子ファイリングシステムは、まず、管理情報の検索方法をユーザに選択させる(ステップS111)。検索方法としては、文字コードで検索するモード、画像で検索するモード、および文字コードと画像のリストを表示して、ユーザにブラウジングさせるモードの3つのモードがある。
ユーザが文字コード検索を選択すれば、文字コードにより管理情報を検索し(ステップS112)、画像検索を選択すれば、画像により管理情報を検索し(ステップS113)、ブラウジングを選択すれば、管理情報格納テーブルに格納されている文字コードと画像のリストを表示する(ステップS114)。そして、処理を終了する。
ステップS113において画像で検索する場合は、ユーザに特定の画像のファイルを指定させるか、適当な画像を選んで表示する。そして、その中の特定の矩形部分を検索キーとしてユーザに指定させ、ユーザが指定した部分画像と管理情報格納テーブルに保存してある画像とを照合する。これらの画像同士の照合には、例えば、「画像理解のためのディジタル画像処理[I]」(鳥脇純一郎著、昭晃堂)に記載されているような公知のテンプレートマッチングを用いる。
テンプレートマッチングでは、指定された部分画像をモデル(テンプレート)として用い、それと各管理情報格納テーブル内の画像との類似度を計算する。そして、類似度が最大となる管理情報、あるいは類似度が一定値以上の管理情報を求める。そして、得られた管理情報に対応する文書画像を検索結果として表示する。
このような電子ファイリングシステムによれば、管理情報の文字列を文字コードで格納/検索するだけでなく、画像そのもので格納/検索することもできるので、テクスチャ付き文字やデザインフォント、ロゴ等の正確に認識しにくい文字でも、管理情報として扱うことができる。
ところで、図17のステップS15、S16においては、表形式文書のフォーム(フォーマット構造)を識別するために、CROSS RATIO のDPマッチングを用いたが、詳細識別は他の任意の方法により行うこともできる。
他の公知のフォーム自動識別法においては、まず、既知の表形式文書のフォームの特徴量を、モデルとして辞書31に登録しておく。そして、未知の表形式文書の画像が入力されたときに、その画像から特徴量を算出し、辞書のモデルとマッチングを行って、最も類似するモデルを特定する。
モデルマッチングの1つの方法としては、表全体を正規化後、各矩形セルの中心点の位置を算出し、ほぼ同じ位置に中心点を持つモデルに投票を行い、最大投票数を得たモデルを最適モデルとする方法がある。ここで、表の正規化とは、表の縦横比が1対1になるように画像全体を変換する等の調整処理を意味する。
また、もう1つの方法として、連合グラフを用いたマッチングがある。この方法では、まず、罫線を抽出してから表全体を正規化し、入力された未知文書と各モデルとの間で、ほぼ同じ位置かつ同じ長さの罫線同士の組み合わせを求める。そして、図29に示すように、それらの各組み合わせを表すノードを平面上に配置し、一定の幾何的制約を満たすノード間をパスで結んで、連合グラフを生成する。
ここで、幾何的制約とは、比較する未知文書とモデルの間で罫線の順序関係を保存するという制約条件や、一方の表の1つの罫線に他方の表の複数の罫線が重複して対応することを禁止する制約条件等を指す。図29の4つのノードから成る連合グラフにおいては、未知文書の罫線a1、a2、a3、a4は、それぞれ、モデルの罫線b1、b2、b3、b4に対応している。
また、連合グラフの一部の部分グラフにおいて、どのノードも他のすべてのノードとパスで結ばれているとき、その部分グラフはクリークと呼ばれる。図29の連合グラフは、それ自身がクリークとなっている。連合グラフからノード数が最大の最大クリークを求めることで、未知文書とモデルの類似度が求められ、最大類似度を持つモデルが最適モデルとして抽出される。
これらのモデルマッチングでは、いずれも、未知の入力文書を正規化後、モデルと重ね合わせて特徴量を比較することが重要なステップとなっている。しかし、表の外郭形状の抽出精度が劣化したり、行の追加等による若干のフォーム変更が行われたりした場合、特徴量全体が影響を受けるため、識別が不安定になる。特に、矩形セルの中心位置を用いる前者の方法においてその影響は大きい。
連合グラフを用いる後者の方法においては、ノードを生成するための条件を緩くすることで対処できるが、グラフの規模が大きくなるため、とりわけ最大クリークを求める処理に時間がかかってしまう。
そこで、以下の実施形態では、罫線のかすれやノイズによる罫線抽出の誤り、若干のフォーム変更等に対して、ロバスト性(強靱さ)が優れ、しかも高速なマッチング方法について述べる。ここで、ロバスト性が優れているとは、マッチング結果が誤りや変更の影響を受けにくいことを意味する。
このマッチング方法では、まず、罫線の表全体に対する大きさ、位置を特徴量として、未知文書と各モデルとの間で罫線と罫線の対応の可能性を調べ、対応する罫線の組み合わせを求める。ここでは、可能性条件を広くとることで、1本の罫線に対し複数の罫線が対応可能とする。このように重複を許すことで、表の正しい外郭形状の抽出に失敗した場合でも、その失敗がある程度以下であれば、罫線間の正しい対応関係を見落とすことがなくなる。
次に、得られた対応関係の集合の中から、互いに両立するものを1つのグループに集め、各対応関係をいくつかのグループに振り分ける。この際、特徴量としては、罫線と罫線の間の大きさの関係や位置関係等を用いる。罫線間の相対的な関係を特徴量として用いることで、かすれやノイズが特徴量全体にわたって大きな影響を及ぼすことがなくなる。
さらに、グループ分けの際に、両立の性質が推移的になるように、両立の条件を強くとることで、両立の可否を調べる処理回数が上述の連合グラフをつくる場合に比べて大幅に少なくなる。また、各グループに含まれる対応関係は、平面上の1本のパスで表現することができるので、その数を数える時間もほとんどかからない。
ここで、両立が推移的とは、例えば、対応Aと対応Bが両立し、対応Bと対応Cが両立するとき、必ず対応Aと対応Cが両立することを意味する。この場合には、改めて対応Aと対応Cの両立性をチェックする必要がないので、処理が高速化される。
そして、最後に、得られたグループ間の矛盾のない組み合わせの中で、含まれる対応関係の数が最大となる組み合わせを探索する。これにより、ある表に行を1行だけ追加する等の若干の変更がある場合でも、他の大部分の罫線が正しく対応していれば、そのモデルを抽出することが可能になる。
図30は、このようなマッチング方法を用いたフォーム識別処理のフローチャートである。この処理は、図4のステップS11、S12、S15、S16の処理に対応し、特に、入力画像の詳細識別に関する。処理が開始されると、管理情報抽出装置は、まず、画像を入力し(ステップS121)、入力された画像から罫線を抽出する(ステップS122)。
そして、その罫線を囲む矩形(罫線矩形)の左上頂点の座標に関し、横罫線はy座標の小さい順に、縦罫線はx座標の小さい順に、各罫線を並べ直す(ステップS123)。ここで、横罫線のy座標が同じ場合は、そのx座標の小さい順にソートし、縦罫線のx座標が同じ場合は、そのy座標の小さい順にソートする。
次に、縦横各罫線について概略情報を抽出する(ステップS124)。概略情報とは、表全体に対する罫線の長さおよび位置の相対的な値であり、3つの整数の組で表される。また、縦横各方向における2本の罫線のすべての組み合わせを考え、各組み合わせに関する詳細情報を抽出する(ステップS125)。詳細情報は、2本の罫線間の長さおよび位置の相対的な関係を表す。
入力画像と照合されるモデルの概略情報および詳細情報は、あらかじめ抽出されてレイアウト辞書31に格納されている。そこで、次に、入力画像の概略情報および詳細情報と、モデルの概略情報および詳細情報とを照合し、モデルマッチングを行う(ステップS126)。そして、最適なモデルを識別結果として出力し(ステップS127)、処理を終了する。
次に、図31から図41までを参照しながら、ステップS124、S125、S126、およびS127の処理について詳細に説明する。
ステップS124においては、概略情報を求めるための前処理として、表の基準幅W、基準高H、基準x座標x0、および基準y座標y0を求める。まず、横罫線に関してそれらの最大長を求め、その長さに比べてあるしきい値以上の割合(例えば0.8)の長さを持つ横罫線のうち、順位が最初のものと最後のものとを求め、それらを外郭基準横罫線とする。
縦罫線に関しても最大長を求め、横罫線の場合と同様にして、2本の外郭基準縦罫線を得る。そこで、得られた4本の外郭基準罫線の外接矩形を考え、その幅を基準幅W、その高さを基準高H、その左上頂点を基準点とし、その座標を基準座標(x0,y0)とする。
例えば、図31のような表形式文書においては、横罫線81、82が外郭基準横罫線として抽出され、縦罫線83、84が外郭基準縦罫線として抽出され、これらの外郭基準罫線の外接矩形の幅が基準幅Wとなり、その高さが基準高Hとなる。また、その外接矩形の左上頂点85の座標が基準座標(x0,y0)となる。
ここで、最大長から算出される一定長さ以上の罫線の中から外郭基準罫線を選ぶことで、例えば、横罫線86、87のような短い罫線が外郭基準罫線の候補から除外される。
あるいはまた、これらの基準幅W、基準高H、基準座標(x0,y0)を、次のようにして求めることも可能である。まず、基準座標の候補となる座標値vmaxx、vminx、vmaxy、vminy、hmaxx、hminx、hmaxy、hminyを、次式のように定義する。
vmaxx=(縦罫線矩形の右下頂点のx座標の最大値)
vminx=(縦罫線矩形の左上頂点のx座標の最小値)
vmaxy=(縦罫線矩形の右下頂点のy座標の最大値)
vminy=(縦罫線矩形の左上頂点のy座標の最小値)
hmaxx=(横罫線矩形の右下頂点のx座標の最大値)
hminx=(横罫線矩形の左上頂点のx座標の最小値)
hmaxy=(横罫線矩形の右下頂点のy座標の最大値)
hminy=(横罫線矩形の左上頂点のy座標の最小値) (10)
次に、これらの座標値から、次式により基準幅と基準高の候補を求める。
W1=vmaxx−vminx
W2=hmaxx−hminx
H1=hmaxy−hminy
H2=vmaxy−vminy (11)
そして、基準幅Wを、
W=max{W1,W2} (12)
により求め、W=W1のとき、x0=vminxとし、W=W2のとき、x0=hminxとする。
また、基準高Hを、
H=min{H1,H2} (13)
により求め、H=H1のとき、y0=hminyとし、H=H2のとき、y0=vminyとする。
こうして、基準幅W、基準高H、基準座標(x0,y0)が求められる。ただし、この方法は、上述の方法に比べてノイズ等の影響を受けやすく、ロバスト性が比較的弱くなる。
ここでは、4本の外郭基準罫線の外接矩形の左上頂点を基準点として選んだが、それ以外に、左下頂点、右上頂点、右下頂点等、外接矩形の周辺上の任意の点を基準点として選ぶことができる。その場合でも、以下の処理は基本的に同様である。
次に、得られた表の大きさと基準座標をもとにして、各罫線矩形の長さと中心位置の情報から、3つの特徴量(概略情報)length1、twist、positionを求める。横罫線の場合、図32に示すように、罫線矩形91の長さl1と中心座標(x1,y1)から、次式によりこれらの特徴量を算出する。
length1=[(l1/W)×100]の整数部分
twist=[((x1−x0)/W)×100]の整数部分
position=[((y1−y0)/H)×100]の整数部分 (14)
また、縦罫線の場合、図33に示すように、罫線矩形92の長さl1と中心座標(x1,y1)から、次式によりこれらの特徴量を算出する。
length1=[(l1/H)×100]の整数部分
twist=[((y1−y0)/H)×100]の整数部分
position=[((x1−x0)/W)×100]の整数部分 (15)
得られた特徴量のうち、length1は表のサイズに対する罫線の長さの相対的な割合を表し、twistとpositionは、表の基準点に対する罫線の相対的な位置を表している。
次に、ステップS125においては、2本の罫線の相対的な関係を表す詳細情報を求める。ここでは、一方の罫線矩形の長さを1としたときの、もう一方の罫線矩形の長さlength2、それぞれの罫線矩形の中心間のx方向のずれの長さdiffer、および中心間のy方向のずれの長さheightの3つの値を、詳細情報として求めることにする。
まず、2本の横罫線のすべての組み合わせを抽出する。そして、各組み合わせにおいて、図34に示すように、一方の罫線矩形(ソート順位の早い方)93の長さをl1、その中心座標を(x1,y1)、もう一方の罫線矩形(ソート順位の遅い方)94の長さをl2、その中心座標を(x2,y2)とする。このとき、罫線矩形93の中心を基準として、これらの罫線矩形の中心間のx方向のずれdwとy方向のずれをdhを次式により定義する。
dw=x2−x1
dh=y2−y1 (16)
この定義によれば、罫線矩形94の中心が罫線矩形93の中心より右にあれば、dwは正となり、罫線矩形94の中心が罫線矩形93の中心より左にあれば、dwは負となる。同様に、罫線矩形94の中心が罫線矩形93の中心より下にあれば、dhは正となり、罫線矩形94の中心が罫線矩形93の中心より上にあれば、dhは負となる。
次に、上述の3つの特徴量length2、differ、heightを、次式により算出する。
length2=12/l1
differ=dw/l1
height=dh/l1 (17−1)
また、縦罫線についても同様に、2本の罫線のすべての組み合わせを抽出する。そして、各組み合わせにおいて、図35に示すように、ソート順位の早い方の罫線矩形95の長さをl1、その中心座標を(x1,y1)、ソート順位の遅い方の罫線矩形96の長さをl2、その中心座標を(x2,y2)とする。そして、(16)式によりdwとdhを求め、次式により、詳細情報length2、differ、heightを算出する。
length2=12/l1
differ=dh/l1
height=dw/l1 (17−2)
(17−2)式においては、differとheightの定義が、(17−1)式と逆になっている。次に、ステップS126において、横罫線同士と縦罫線同士の2回に分けて、入力画像の概略情報および詳細情報を、各モデルの概略情報および詳細情報と照合し、フォームの類似度を計算する。
図36は、このようなモデルマッチング処理のフローチャートである。処理が開始されると、管理情報抽出装置は、まず、未知文書の入力画像の横罫線の数をp本、モデルの横罫線の数をm本として、図37に示すようなp×mの表を作成する(ステップS131)。
ここでは、p=12、m=15であり、表の行番号および列番号は、ともに0から始まっている。この表のi行j列の要素(項目)は、入力画像のi番目の罫線とモデルのj番目の罫線の対応関係を表すデータである。以下では、このような表をマッチングテーブルと呼ぶことにする。
次に、概略情報に基づいて、入力画像のi番目の横罫線IP(i)が、モデルのj番目の横罫線MO(j)に対応するかどうかの可能性を判断し、対応する可能性があれば、マッチングテーブルのi行j列の要素にノードを配置する(ステップS132)。これにより、横罫線IP(i)と横罫線MO(j)の組み合わせがマッチングテーブル上に記述される。このときの対応可能性の条件は十分緩くとっておき、一つの罫線に対して、複数の罫線が重複して対応することを許すものとする。
ここでは、罫線IP(i)の概略情報(length1,twist,position)をそれぞれ(ipl,ipt,ipp)とおき、罫線MO(j)の概略情報をそれぞれ(mol,mot,mop)とおいて、各値の差が一定値より小さいとき、罫線IP(i)と罫線MO(j)が対応する可能性があるとみなす。
可能性を表す具体的な条件は、表内の横罫線の数に依存したパラメータα、および縦罫線の数に依存したパラメータβをしきい値として、次式により与えられる。
|ipl−mol|<β
|ipt−mot|<β
|ipp−mop|<α (18)
これらの罫線の数に依存したパラメータα、βは正の整数で、罫線数が少ないほど大きな値をとり、逆に罫線数が多いほど小さな値をとるように定められる。このとき、(18)式の条件は、表内の罫線の密度が疎であればマッチングの探索範囲を広げ、密度が密であれば探索範囲を狭めるという効果を持つ。α、βは、例えば、図38に示すように、横、縦の罫線数に対して単調に減少する関数として定義できる。
このように、概略情報が互いに類似している罫線同士の対応関係をノードで表現することで、入力画像とモデルの間の、表の外郭部分に対する相対的な特徴の類似点が抽出される。
次に、詳細情報に基づいて、配置されたノードの中で、互いに特定の関係を満たすもの同士、すなわち両立するもの同士の組み合わせを探索する(ステップS133)。そして、それらのノードを同じグループに属するノードとみなして、パスで結ぶ。
ここで、i行j列のノードn(i,j)とk行l列のノードn(k,l)が特定の関係を満たすとは、入力画像のi番目の罫線とk番目の罫線の関係が、モデルのj番目の罫線とl番目の罫線の関係に比例していることを指す。言い換えれば、入力画像のi番目の罫線とモデルのj番目の罫線をぴったり重ね合わせたとき、入力画像のk番目の罫線とモデルのl番目の罫線がぴったり重なり合う状況を指す。
このようなノード同士を1本のパスで結ぶことで、ノードがいくつかのグループに分類される。ノードの数が多いグループほど、入力文書とモデルが類似していることを強く表していると考えられるので、このようなグループを対象とすることで、モデルマッチングにおける類似度の計算を効率よく行うことができる。
また、あるノードと両立するノードを探索する際、処理の効率を高めるため、常に前者のノードの右下の領域に位置するノードを探索対象とする。これにより、図29に示したようなクリークが生成されなくなるので、ノード数の多いパスを高速に求めることが可能になる。パス生成の具体的な処理については後述する。
次に、得られたパスの集合の中で、互いに矛盾しないパスの組み合わせを求め、いくつかの組み合わせのうち、含まれるノード数が最大のものを探索する(ステップS134)。そして、そのパスの組み合わせを最適パス集合とする。2つのパスが互いに矛盾しないとは、それぞれのパスの中のノードに対応する罫線の集合の範囲が、互いに重なり合わないということである。
図37のマッチングテーブルにおいて、2つの罫線集合の範囲が重なり合う場合は、図39に示すように、入力画像とモデルの間で対応する罫線の順序関係が逆転する場合と、図40に示すように、罫線と罫線の対応が重複する場合の2通りある。
図39においては、実線で表されたグループに属するモデル側の罫線の範囲は0番目から9番目となっており、破線で表されたグループに属するモデル側の罫線の範囲は7番目から8番目となっている。したがって、2つの罫線集合の範囲が互いに重なっている。同様に、図40においても、実線で表されたグループと破線で表されたグループの罫線集合の範囲が、モデル側において互いに重なっている。
一方、矛盾したパスの組み合わせを含まない最適パス集合においては、図41に示すように、入力画像とモデルの両方の側において、各罫線集合の範囲は重なり合うことがない。このような最適パス集合に含まれる各ノードによって表される罫線間の対応関係が、最適な対応関係である。
次に、入力画像の横罫線数をph、モデルの横罫線数をmh、横罫線の最適パス集合に含まれるノード数をmaxhとして、入力画像とモデルの横罫線の類似度SHを次式により求める(ステップS135)。
SH=maxh/ph+maxh/mh (19)
この類似度SHは、入力画像の横罫線のうち、最適パス集合に対応するものの割合と、モデルの横罫線のうち、最適パス集合に対応するものの割合の和を表し、一般に、入力画像とモデルの横罫線の特徴が類似しているほど大きな値をとる。
管理情報抽出装置は、以上説明したステップS131からステップS135までと同様の処理を縦罫線についても行う。そして、入力画像の縦罫線数をpv、モデルの縦罫線数をmv、縦罫線の最適パス集合に含まれるノード数をmaxvとして、入力画像とモデルの縦罫線の類似度SVを次式により求める。
SV=maxv/pv+maxv/mv (20)
そして、最終的に、SHとSVから、次式により入力画像とモデルの罫線の類似度Sを算出し、モデルマッチングを終了する。
S=SH+SV (21)
例えば、図4のステップS14の大分類により得られたすべての表の候補をモデルとして、このようなモデルマッチングを行うことで、各モデルと入力画像の類似度が算出される。ステップS127においては、これらのモデルのうち最も類似度の高いのものを、最適モデルとして出力する。これにより、入力画像に対応する辞書フォームが特定される。
次に、図42から図48までを参照しながら、図36のノード配置処理、パス生成処理、および最適パス集合決定処理について、さらに詳しく説明する。図42は、図36のステップS132におけるノード配置処理のフローチャートである。ここでは、入力画像のi番目の罫線の概略情報length1、twist、positionを、それぞれipl(i)、ipt(i)、ipp(i)とおき、モデルのj番目の罫線の概略情報を、それぞれmol(j)、mot(j)、mop(j)とおく。
また、マッチングテーブルのi行j列の要素を表すデータをsign(i,j)とおく。sign(i,j)=0のときは、対応する要素にノードは配置されず、sign(i,j)=1のときは、その要素にノードが配置される。
処理が開始されると、管理情報抽出装置は、まず、条件|ipp(i)−mop(j)|<αが成り立つかどうかを判定する(ステップS141)。この条件が成り立たなければ、sign(i,j)=0とおいて(ステップS142)、処理を終了する。
ステップS141の条件が成り立てば、次に、条件|ipt(i)−mot(j)|<βが成り立つかどうかを判定する(ステップS143)。この条件が成り立たなければ、sign(i,j)=0とおいて(ステップS144)、処理を終了する。
ステップS143の条件が成り立てば、次に、条件|ipl(i)−mol(j)|<βが成り立つかどうかを判定する(ステップS145)。この条件が成り立たなければ、sign(i,j)=0とおいて(ステップS146)、処理を終了する。そして、ステップS145の条件が成り立てば、sign(i,j)=1とおいて、i行j列にノードを配置し(ステップS147)、処理を終了する。
このような処理を、マッチングテーブルのすべての位置(i,j)について行うことで、概略情報が類似した2つの罫線に対応する位置に、それらの間の対応関係を表すノードが配置される。
また、図43、44は、図36のステップS133におけるパス生成処理のフローチャートである。処理が開始されると、管理情報抽出装置は、まず、初期化処理を行う(図43、ステップS151)。ここでは、マッチングテーブル上でノードが配置された要素の位置(i,j)を、ノード列としてメモリ内の記憶部に格納する。記憶部内でのノードの並べ方は、行番号iの小さい順とし、同じiに対しては列番号jの小さい順とする。また、このノード列の各ノードには、パスで結ばれたかどうかを示すフラグが付加される。
例えば、図37のマッチングテーブルに対応する記憶部のノード列は、図45に示すようになる。図45の記憶部においては、マッチングテーブル上の各ノードの位置(0,0)、(1,0)、(1,1)、(2,0)、・・・、(11,14)が順に格納され、それらのフラグの値は1に初期化されている。フラグの値が1のとき、対応するノードはまだパスで結ばれていないことを表す。
次に、記憶部の先頭のデータにアクセスし(ステップS152)、そのアクセスポイントからiとjを読み出して、その位置に対応するマッチングテーブル上の要素をマークする(ステップS153)。そして、マークした要素のノードを基準ノードとして、その要素のsignを0にし、対応する記憶部のフラグを0にする(ステップS154)。
次に、制御変数countの値を0とおき(ステップS155)、マークした要素がマッチングテーブルの最終列に対応しているか、または、countの値があらかじめ決められた定数hに達したかを調べる(ステップS156)。これらの条件がいずれも満たされなければ、次に、マーク位置を1列分右に進め(ステップS157)、マーク位置が最終行に対応しているかどうかを調べる(ステップS158)。
ここで、マーク位置が最終行であれば、countの値に1を加算して(ステップS159)、次の列の要素を調べるために、ステップS156以降の処理を繰り返す。マーク位置が最終行でなければ、次に、そのマーク位置を1行分下に進め(ステップS160)、ここでマークした要素のsignが0か1かを判定する(ステップS161)。
その値が0であれば、マーク位置にノードは配置されていないので、同じ列内の他の要素を調べるために、ステップS158以降の処理を繰り返す。signが1であれば、マーク位置にノードが配置されているので、そのノードが基準ノードとパスで結べるかどうかを判定する(ステップS162)。2つのノードがパスで結べるかどうかは、これらのノードに対応する罫線間の詳細情報length2、differ、heightを用いて判定される。
例えば、図46に示すように、入力画像において、基準ノードに対応する罫線101と判定対象のノードに対応する罫線102との間の相対的な関係を表す詳細情報を、length2=l2/l1、differ=dw/l1、height=dh/l1とおく。
また、モデルにおいて、基準ノードに対応する罫線103と、判定対象のノードに対応する罫線104との間の相対的な関係を表す詳細情報を、length2=l2′/l1′、differ=dw′/l1′、height=dh′/l1′とおく。
このとき、経験的に決められるしきい値ε1、ε2、ε3に対して次式が成り立てば、基準ノードと判定対象のノードが両立し、これらの間をパスで結べるものとする。
|l2/l1−l2′/l1′|<ε1
|dw/l1−dw′/l1′|<ε2
|dh/l1−dh′/l1′|<ε3 (22)
しきい値ε1、ε2、ε3を十分小さくとることで、(22)式は、罫線101と罫線102から成る図形が、罫線103と罫線104から成る図形と相似であることを表すようになる。これらの罫線図形が相似であれば、罫線101と罫線103を対応させたとき、同時に、罫線102と罫線104が対応する可能性が高いので、2つのノードは両立するとみなされる。
このように、パスを引く条件として相似条件を用いることで、ノード間の両立性を判定する回数を削減することができる。例えば、図37のマッチングテーブルにおいて、ノード97を基準ノードとした場合、ノード97とノード98が両立し、かつ、ノード97とノード99が両立すれば、ノード98とノード99も両立するとみなしてよい。
そこで、ノード99が基準ノード97とパスで結べると判定したとき、そのノード99はすでに基準ノード97とパスで結ばれているノード98ともパスで結べるものと判断する。
マーク位置のノードが基準ノードとパスで結べない場合は、同じ列内の他のノードを調べるために、ステップS158以降の処理を繰り返す。また、それらがパスで結べる場合は、そのマーク位置のノードに対応する記憶部内のフラグを0に書き換える(ステップS163)。これにより、そのノードが、基準ノードまたはすでにパス上に存在する1つ前のノードと結ばれたことが記録される。そして、次の列のノードを調べるために、ステップS156以降の処理を繰り返す。
ステップS156以降の処理では、マーク位置を1列進めた後、直ちに1行進めることで、常に、前のマーク位置の右下にある要素を探索対象とする。これを繰り返すことで、マッチングテーブルの右下に向かって、徐々にパスが伸張されていく。
そして、ステップS156の条件が満たされると、次に、基準ノードから伸びたパスのヒット数が2以上かどうかを調べる(図44、ステップS164)。ここで、ヒット数とは、パスの構成ノードの数を意味する。構成ノードの数が2以上であれば、そのパスを正式に登録し、その構成ノードの情報を記録する(ステップS165)。パスの構成ノードの数が1の場合は、基準ノードからいずれの他のノードにもパスが引かれなかったことを意味するので、パス登録は行わない。
次に、記憶部内にアクセスされていないデータが残っているかどうかを調べる(ステップS166)。データが残っていれば、記憶部のアクセスポイントを一つ進めて(ステップS167)、その位置のフラグの値を調べる(ステップS168)。そして、フラグが0であれば、その位置のノードはすでにパス上に加えられているので、ステップS166以降の処理を繰り返して次のデータを調べる。
また、フラグが1であれば、その位置のノードはまだパスに加えられていないので、ステップS153以降の処理を繰り返す。これにより、そのノードを新たな基準ノードとする新しいパスが生成される。そして、ステップS166において、記憶部のアクセスポイントが最後尾に達すれば、処理を終了する。
また、図47は、図36のステップS134における最適パス集合決定処理のフローチャートである。この処理においては、p行m列の横罫線または縦罫線のマッチングテーブルを対象とし、暫定的な最適パス集合のノード数を表す配列score(i)(i=0,1,2,...,m)と、行番号を表す配列rireki(i)(i=0,1,2,...,m)を用いる。
処理が開始されると、管理情報抽出装置は、まず、最適パス集合のノード数の初期値を表すscore(m)を0とおき、行番号の初期値を表すrireki(m)をp−1とおく(ステップS171)。
次に、列番号を表す変数iをm−1とおき(ステップS172)、登録されたパスの中で、始点となる左上のノードの列番号がiであるようなパスの集合をPath(i)とする(ステップS173)。また、score(i)=score(i+1)、rireki(i)=rireki(i+1)とおく(ステップS174)。このscore(i)は、i番目の列から最終列(m−1番目の列)までの範囲における暫定的な最適パス集合のノード数を表す。
次に、集合Path(i)の1つのパスを取り出し、そのノードの情報を用いてscore(i)を更新する(ステップS175)。そして、集合Path(i)にパスが残っているかどうかを調べ(ステップS176)、残っていれば、次のパスを取り出してscore(i)の計算を繰り返す。
集合Path(i)のすべてのパスに関する計算が終了すると、次に、iが0に達したかどうかを判定し(ステップS177)、iが1以上であれば、i=i−1とおいて(ステップS178)、ステップS173以降の処理を繰り返す。そして、iが0に達したとき、得られたscore(0)の値を最終的な最適パス集合のノード数として(ステップS179)、処理を終了する。
横罫線のマッチングテーブルから得られたscore(0)の値は、類似度の計算において、(19)式のmaxhとして用いられ、縦罫線のマッチングテーブルから得られたscore(0)の値は、(20)式のmaxvとして用いられる。
次に、図48を参照しながら、図47のステップS175のノード数更新処理について説明する。ノード数更新処理が開始されると、管理情報抽出装置は、まず、集合Path(i)の1つのパスを取り出し、そのパスの始点の行番号をsgとし、終点となる右下のノードの列番号、行番号をそれぞれer、egとし、パスに含まれるノードの数をhitsとする(ステップS181)。
例えば、図37のマッチングテーブルにおいて、i=11のとき、Path(11)には右下の領域のパスp1、p2が含まれる。このうち、パスp1については、sg=8、er=14、eg=11となり、パスp2については、sg=6、er=12、eg=7となる。
次に、列番号を表す変数jをer+1とおき(ステップS182)、egとrireki(j)の値を比較する(ステップS183)。ここで、egがrireki(j)より大きければ、次に、score(j)+hits>score(i)、または、score(j)+hits=score(i)かつeg<rireki(i)が成り立つかどうかを判定する(ステップS184)。
そして、これらの条件のいずれかが成り立てば、score(i)=score(j)+hits、rireki(i)=egとおいて(ステップS185)、処理を終了する。
また、ステップS183においてegがrireki(j)以下のとき、および、ステップS184においていずれの条件も成り立たないときは、j=j+1とおいて(ステップS186)、jとmを比較する(ステップS187)。ここで、jがm以下であれば、ステップS183以降の処理を繰り返し、jがmを越えると、処理を終了する。
こうして、1つ前の処理で暫定的に決められた最適パス集合にパスを1つ加えてできる集合から、新たな最適パス集合が抽出され、そのノード数がscore(i)に記録される。このような処理を、Path(i)のすべてのパスについて繰り返すことで、i番目の列から最終列までの範囲における最適パス集合のノード数が得られる。
例えば、図37において、11番目の列から最終列までの範囲における互いに矛盾しないパスの組み合わせとしては、パスp1のみと、パスp2およびp3の組み合わせの2つが考えられる。これらの組み合わせのノード数はともに4なので、score(11)=4となる。
以上説明したフォーム識別処理は、管理情報抽出装置だけでなく、文書認識装置、図面読み取り装置等の任意の画像認識装置にも適用でき、任意の画像中の罫線構造を識別する際に有効である。
本実施形態のフォーム識別処理によれば、罫線間の相対的な関係を特徴量として用いているので、入力された表形式文書から罫線構造を抽出し、登録された表形式文書のフォームとマッチングを行う際に、かすれやノイズ等の影響で罫線がうまく抽出されない部分があっても、安定して正しい識別が行われる。とりわけ、ノイズの影響で罫線抽出が不安定になりやすい外郭罫線抽出の精度劣化に対しても、ノード配置のための条件を広くとることで、ロバスト性を保つことができる。
また、1つ以上のパスの組み合わせである最適パス集合を求めることで、1行追加、削除などの若干のフォーム変更に対しても、安定して正しい識別が行われる。さらに、2つのノードに関する両立の条件を推移的とすることで、両立性のチェック回数が削減され、高速な識別処理が可能になる。