(57)【特許請求の範囲】
【請求項１】
罫線のない表画像から表構造をコンピュータにより認識する方法であって、
上記コンピュータは、上記表から文字群を囲む矩形座標を求めて文字群を抽出し、文字を形成する画素の連結性より矩形を抽出し、この矩形を統合して文字を推定し、文字間隔が閾値以内のものを統合して文字群を抽出し、
抽出した文字群を一つずつ取り出し、取り出した文字群に含まれる文字を、その座標に基づいて左から順にソートして、隣接する文字同士の文字間隔を求め、
上記文字群内の文字の文字間隔の平均値を求めて、該平均値と上記隣接する文字同士の文字間隔とに基づき上記文字群を再分割し、
上記再分割した文字群同士の位置関係が一定の傾き以内の文字群を行として登録し、また、上記再分割した文字群同士の横方向の座標が重なる関係をもつ文字群を列として登録する
ことを特徴とする表認識方法。
【請求項２】
画像中に含まれる罫線を除去してから請求項１記載の表認識を行うことを特徴とする表認識方法。
【請求項３】
罫線のない表画像から表の認識処理をコンピュータに実行させるプログラムであって、
プログラムは、上記表から文字群を囲む矩形座標を求めて文字群を抽出するステップと、
文字を形成する画素の連結性より矩形を抽出し、この矩形を統合して文字を推定し、文字間隔が閾値以内のものを統合して文字群を抽出するステップと、
抽出した文字群を一つずつ取り出し、取り出した文字群に含まれる文字を、その座標に基づいて左から順にソートして、隣接する文字同士の文字間隔を求めるステップと、
上記文字群内の文字の文字間隔の平均値を求めて、該平均値と上記隣接する文字同士の文字間隔とに基づき上記文字群を再分割するステップと、
上記再分割した文字群同士の位置関係が一定の傾き以内の文字群を行として登録するステップと、
上記再分割した文字群同士の横方向の座標が重なる関係をもつ文字群を列として登録するステップをコンピュータに実行させる
ことを特徴とする表認識プログラム。
【請求項４】
画像中に含まれる罫線を除去してから請求項３記載の表構造認識を行うことを特徴とする表認識プログラム。
【請求項５】
罫線のない表画像から表を認識する処理をコンピュータに実行させるプログラムを記録した記録媒体であって、
プログラムは、上記表から文字群を囲む矩形座標を求めて文字群を抽出するステップと、
文字を形成する画素の連結性より矩形を抽出し、この矩形を統合して文字を推定し、文字間隔が閾値以内のものを統合して文字群を抽出するステップと、
抽出した文字群を一つずつ取り出し、取り出した文字群に含まれる文字を、その座標に基づいて左から順にソートして、隣接する文字同士の文字間隔を求めるステップと、
上記文字群内の文字の文字間隔の平均値を求めて、該平均値と上記隣接する文字同士の文字間隔とに基づき上記文字群を再分割するステップと、
上記再分割した文字群同士の位置関係が一定の傾き以内の文字群を行として登録するステップと、
上記再分割した文字群同士の横方向の座標が重なる関係をもつ文字群を列として登録するステップをコンピュータに実行させる
ことを特徴とする表認識プログラムを記録した記録媒体。
【請求項６】
画像中に含まれる罫線を除去してから請求項５記載の表構造認識を行  ことを特徴とする表認識プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
近年、入力周辺機器として文書認識処理の需要が増加している。本発明は、この文書認識処理において、より高い精度で罫線のない表を認識することができる表認識方法に関する。
【０００２】
【従来の技術】
表形式文書の文字認識結果を例えば表計算ソフト等で使用する場合には、表構造を認識し、表中の文字群が何列目の何行目に記録された文字群であるかを認識する必要がある。罫線がある表形式文書の場合には、通常、罫線構造を認識し、罫線構造から各行、各列の文字群を識別していた。
一方、図１１（ａ）のような罫線のない表形式文書を認識する場合には、従来、文字サイズの平均値、文字ピッチ等の平均値より文字間隔を定め、該一定の文字間隔の文字を統合して文字群を求め、文字群の縦方向、横方向それぞれの座標が重なる関係にある場合に、行、列として登録する処理が用いられていた。
【０００３】
【発明が解決しようとする課題】
図１１（ａ）の表では上記のように一定の文字間隔の文字を統合することにより文字群を正確に推定することができるが、図１１（ｂ）のような表では、上記一定の文字間隔で文字群を推定すると、図中領域▲１▼のように本来複数の文字群となるべきものが一つの文字群として認識される場合があった。
また、図１１（ｃ）のように表が傾いていた場合には、行間隔が狭いと複数の行が一つの行として認識される場合があった。
本発明は、上記事情に鑑みなされたものであって、本発明は、罫線がないもしくは罫線が大幅に削除されている表形式文書における表認識において、従来の方法では分離することができなかった文字群を精度よく分離することができ、また表が傾いている場合であっても精度良く表を認識することができる表認識方法を提供するこを目的とする。
【０００４】
【課題を解決するための手段】
図１は本発明の概要を説明する図である。同図に示すように本発明においては、次の▲１▼〜▲４▼のようにして表を認識する。
▲１▼  表内の文字間隔が一定以内の文字を統合して文字群を求める。
▲２▼  上記文字群内の文字の文字間隔の平均値を求めて、該平均値に基づき上記文字群を再分割する。
▲３▼  上記再分割した文字群同士の位置関係が一定の傾き以内の文字群を行として登録する。
▲４▼  上記再分割した文字群同士の横方向の座標が重なる関係をもつ文字群を列として登録する。
また、罫線が一部省かれた表を認識する場合には、画像中に含まれる罫線を除去してから、上記▲１▼〜▲４▼の表認識を行う。
本発明においては、上記のように表を認識しているので、表中に他の文字群の間隔より、間隔の狭い文字群が混在していても、これらの文字群を複数の文字群として正確に認識することができる。また、傾きのある表に対しても正確に表のを認識することができる。
【０００５】
【発明の実施の形態】
図２に本発明の第１の実施例の処理ブロック図を示す。なお、本発明は、ＣＰＵ、メモリ、外部記憶装置、入出力装置、画像読み取りを行うスキャナ、記録媒体読み取り装置、通信インタフェース等を備えた通常の計算機システムにより実現することができ、上記外部記憶装置等に本発明の文字認識処理を行うプログラムが格納され、実行時、上記プログラムがメモリに読み込まれ、スキャナ等で読み取った画像について、本発明の文字認識処理による文字認識が行われ、文字認識結果が上記入出力装置から出力される。
【０００６】
次に本発明の第１の実施例について説明する。本実施例は例えば、前記図１１（ｂ）のように、罫線がない表形式文書の認識に適用される。
本実施例では、図２に示すように、まず、文字群抽出部１１で文字群を囲む矩形座標を求める。
すなわち、罫線のない表として与えられた範囲に対して、文字を形成する画素の連結性より連結成分を囲む矩形を抽出し、更に矩形間の重なりや位置関係から矩形を統合して文字を推定し、文字を囲む矩形を抽出する。
次いで、抽出された各文字を矩形の座標から、文字と文字との間の長さ（文字間隔）が一定の閾値以内にあるものを統合して文字群を抽出し、文字群を囲む矩形座標を求める。
図３（ａ）に示す罫線のない表から上記文字群抽出部１１により抽出された文字群を図３（ｂ）に示す。同図に示すように、「（１月）〜（５月）」は文字間隔が短いので一つの文字群として抽出されている。
【０００７】
次に、文字群再分割部１２で文字群再分割処理を行なう。
すなわち、後述する図７のフローチャートに示すように、文字群抽出部１１で抽出した文字群を一つずつ取り出し、隣接する文字同士の文字間隔を求めてその平均Ｗａを求める。そして、各文字がＷａに対して一定以上の長さで離れているかを調べ、該当する場合には、文字群を再分割する。
図３（ａ）の表に対して、文字群再分割処理で抽出された文字群を図３（ｃ）に示す。同図に示すように、「（１月）〜（５月）」はそれぞれ文字群として再分割されている。
次いで、行抽出部１３において行抽出処理を行なう。行抽出部１３では、後述する図８のフローチャートに示すように、文字群間の傾きを考慮して行を抽出する。
すなわち、まず文字群を左から順にソートし、文字群をソートした順に一つ取り出し番号をｉとする。この時点で行が無い場合には新規に行を作成し、文字群ｉをその行に登録する。例えば図３（ｃ）の例では「合計」が最も左にあるので、新規に行が登録される。
【０００８】
上記のようにして行が登録されると、その行に存在する文字群のうち、文字群ｉと横方向に一番近い文字群と文字群ｉとの傾きを求め、既に抽出した行の中で最小の傾きを与える行番号（ｇ）と傾き（θｍｉｎ）を記憶する。
ここで傾きは図４に示すように文字群を囲む矩形座標から中心点をそれぞれ求めて、中心点間を結ぶ線が水平線となす傾きを採用すればよい。
次に、上記傾きθｍｉｎが閾値（θｔｈ）より小さいか調べ、θｍｉｎがθｔｈより大きい場合には、新しく行を作成する。また、θｍｉｎが閾値（θｔｈ）より小さい場合には、ｇ行に文字群ｉを登録する。この処理を全ての文字群に対して行ない、行抽出を完了する。以上のようにして行を抽出することにより、例えば図６（ａ）に示すように、行と文字群が対応付けられる。
【０００９】
次に列抽出部１４において列抽出を行なう。列抽出は、例えば、横方向の座標が重なる関係をもつ文字群を列として登録する。すなわち、横方向をＸ軸、縦方向をＹ軸としたとき、文字群を囲む矩形のＸ軸方向の座標値が重なる文字群（Ｘ軸方向の座標値の少なくとも一部が同じ値である文字群）を列として登録する。例えば、前記図３（ｃ）の例では、図５の破線で囲まれた領域内の文字群のＸ軸方向の座標値が重なっているので各領域内の文字群は同じ列に登録される。
これにより、例えば図６（ｂ）に示すように列と文字群が対応付けられる。
表データ作成部１５では、各文字群の文字認識を行い、行と列の関係からセルデータを作成し、セルデータに文字群を登録する。すなわち、文字群の認識結果と、図６（ａ）に示す行抽出結果、図６（ｂ）に示す列抽出結果から、図６（ｃ）に示すような表に書き込み可能なデータが作成される。
【００１０】
次に、前記文字群再分割部１２における文字群再分割処理を、図７のフローチャートにより説明する。
まず、文字群抽出部１１で抽出した文字群を一つずつ取り出し、取り出した文字群ｉに含まれる文字（個数：Ｎｃ）をその座標に基づいて左から順にソートする。そして隣接する文字同士の文字間隔を求めて、その平均Ｗａを得る。
すなわち、図７に示すように、文字群数をＮｇに設定し、ｉ＝１とする（ステップＳ１）。ついで、ｉ≦Ｎｇであるかを調べ、ｉ＞Ｎｇの場合は処理を終了する。また、ｉ≦Ｎｇの場合には、Ｎｃをｉ番目の文字群の文字数とする（ステップＳ３）。そして、ｉ番目の文字群に含まれる文字を左から順にソートする（ステップＳ４）。ついで、Ｗａをｉ番目の文字の文字群の平均文字間隔に設定する（ステップＳ５）。
【００１１】
次いで、ソートした順に文字ｊと次の文字ｊ＋１との間隔を求め、Ｗａに対して一定以上の長さで離れているかを調べ、該当する場合にはその文字ｊと文字ｊ＋１の間で文字群を再分割する。この際に文字群数Ｎを一つ増やし、ｉ＋１番目以降の文字群の番号を一つ増やす。そしてｉ番目の文字群には１〜ｊまでの文字を登録し、登録した文字を包含する矩形座標を得る。次いで、ｉ＋１番目の文字群に新たにｊ＋１〜Ｎｃまでの文字を登録し．登録した文字を包含する矩形座標を得る。そしてｉを一つ増やし、次の文字群の再分割処理を繰り返していき、全ての文字群に対して再分割処理を行なう。
すなわち、図７に示すように、ｊ＝１として、ｊ＜Ｎｃであるかを調べ（ステップＳ７）、ｊ≧Ｎｃの場合には、ステップＳ１５においてｉ＝ｉ＋１としてステップＳ２に戻り、ｊ＜Ｎｃの場合には、文字ｊと文字ｊ＋１の間隔をＷとして（ステップＳ８）、文字間隔Ｗ＞平均文字間隔Ｗａ×〔一定値〕であるかを調べる（ステップＳ９）。
上記条件を満たさない場合には、ステップＳ１０でｊ＝ｊ＋１としてステップＳ７に戻る。また、文字間隔Ｗ＞平均文字間隔Ｗａ×〔一定値〕の場合には、文字群数を１増やし（ステップＳ１１）、ｉ＋１番目以降の文字群の番号を１増やす。さらに、ｉ番目の文字群に１〜ｊ番目の文字を登録し、文字数、矩形座標を算出し（ステップＳ１３）、ｉ＋１番目の文字群にｊ＋１〜Ｎｃ番目の文字を登録し、文字数、矩形座標を算出する（ステップＳ１４）。以上の処理が終わるとステップＳ１５でｉ＝ｉ＋１としてステップＳ２に戻る。
【００１２】
次に、前記行抽出部１３における行抽出処理を、図８のフローチャートにより説明する。
図８において、まず文字群を左から順にソートする（ステップＳ１）、次いで、θｔｈを傾きの閾値（予め設定される）、Ｎｇを文字群数、Ｃを行数（最初は０に設定）とし（ステップＳ２）、ｉ＝０に設定する（ステップＳ３）。
次に、ｉがＮｇ（文字群数）より小さいかを調べ、小さくない場合には処理を終了する。ｉがＮｇより小さければ、Ｃ＝０であるかを調べる（ステップＳ５）。Ｃ＝０であれば、ステップＳ１０に行きＣに１を加え、Ｃ番目の行に文字群ｉを登録する（ステップＳ１１）。これにより、例えば図３（ｃ）の例では、文字群「合計」が登録される（文字群「合計」が最も左の位置にあるため）。以上のようにして最初の行が登録される。
【００１３】
次にｉに１を加え（ステップＳ１２）、ステップＳ４に戻り、前記したようにその行に存在する文字群のうち、文字群ｉと横方向に一番近い文字群と文字群ｉとの傾きを求め、既に抽出した行の中で最小の傾きを与える行番号（ｇ）と傾き（θｍｉｎ）を記憶する。
すなわち、ステップＳ４において、ｉがＮｇ（文字群数）より小さいかを調べ、小さい場合には、ステップＳ５でＣ＝０であるかを調べる。
今回はＣ＝０でないので、ステップＳ６に行き、ｊ＝１、ｇ＝０（ｇは行番号）、θｍｉｎを無限大に設定し、ｊ≦Ｃであるかを調べる（ステップＳ７）。
一回目はｊ≦Ｃであるので、ステップＳ１３に行き、ｊ行目の文字群のうちの文字群ｉに横方向に最も近い文字群と文字群ｉの傾きθを求める。
ステップＳ１４において、｜θ｜＜θｍｉｎであるかを調べ、｜θ｜＜θｍｉｎであれば、ステップＳ１５に行き、ｇ＝ｊ、θｍｉｎ＝｜θ｜として、ステップＳ１６でｊに１を加えてステップＳ７に戻る。また、｜θ｜＜θｍｉｎなければステップＳ１６に行きｊに１を加えてステップＳ７に戻る。
上記処理を行うことにより、既に抽出した行の中で最小の傾きを与える行番号（ｇ）と傾き（θｍｉｎ）が求まる。
【００１４】
次に、上記傾きθｍｉｎが閾値（θｔｈ）より小さいか調べ、θｍｉｎがθｔｈより大きい場合には、新しく行を作成する。また、θｍｉｎが閾値（θｔｈ）より小さい場合には、ｇ行に文字群ｉを登録する。
すなわち、ステップＳ７において、ｊ≦Ｃであるかを調べ、ｊ≦Ｃでなければ、ステップＳ８に行き、θｍｉｎ＜θｔｈであるかを調べる。θｍｉｎ＜θｔｈでなければ、ステップＳ１０に行き、Ｃに１を加えＣ番目の行に文字群ｉを登録する（ステップＳ１１，１２）。これにより文字群ｉが新たな行に登録される。また、θｍｉｎ＜θｔｈであれば、ステップＳ９において、ｇ行に文字群ｉを登録し、ステップＳ１２でｉに１を加えて、ステップＳ４に戻る。これにより、文字群ｉが既に登録されている行に追加される。
以上の処理を全ての文字群に対して行ないうことにより、各行が抽出され、前記図６（ａ）に示したように各行と各文字群が対応付けられる。
【００１５】
図９に本発明の第２の実施例の処理ブロック図を示す。本実施例は、図１０に示すように罫線が大幅に省略された表を認識する場合の実施例を示しており、前記第１の実施例の図２のブロック図に罫線抽出部１６、罫線除去部１７を追加したものである。
図９において、まず、罫線抽出部１６で表の領域から罫線を抽出し、その長さ、位置等の罫線情報を得る。罫線抽出処理としては特開平９−５０５２７記載の公知の方法が利用できる。次いで、罫線除去部１７で画像上から罫線を構成する画素を消去する。
以下の処理は前記第１の実施例と同じであり、文字群抽出部１１で文字群を囲む矩形座標を求める。次に、文字群再分割部１２で前記図７のフローチャートで説明したように文字群再分割処理を行なう。次いで、行抽出部１３において行抽出処理を行なう。行抽出部１３では、前述した前記図８のフローチャートで説明したように、文字群間の傾きを考慮して行を抽出する。
【００１６】
次に列抽出部１４において列抽出を行なう。表データ作成部１５では、各文字群の文字認識を行い、各列、各行に文字群を登録する。これにより、前記図６（ｃ）に示したように表に書き込み可能なデータが作成される。そして、行と列の関係からセルデータを作成し、セルデータに文字群を登録する。
以上のように本実施例では、一部に罫線の残っている表に対しても表が認識できる。なお、認識した表のセルのそれぞれについて上下左右方向に罫線が近接する場合には、罫線情報をセルに付加することにより、ワードプロセッサなどのアプリケーションに表を再現する際には、罫線も含めて表を再現することができる。
【００１７】
【発明の効果】
以上説明したように本発明においては、以下の効果を得ることができる。
（１）一定の文字間隔の文字を統合して文字群を求める従来方法では分離することが困難だった文字群を精度よく分離することが可能となる。このため、罫線のない表を精度よく認識する事が可能となる。
（２）文字群同士の位置関係が一定の傾き以内の文字群を行として登録しているので、表が傾いている場合でも精度よく表を認識することができる。
（３）罫線を除去して表を認識することにより、罫線が一部省かれた表であっても正確に表を認識することができる。
【図面の簡単な説明】
【図１】本発明の概要を説明する図である。
【図２】本発明の第１の実施例の処理ブロック図である。
【図３】本発明の実施例の認識対象となる表の一例を示す図である。
【図４】文字群間の傾き抽出方法を示す概念図である。
【図５】本発明の実施例の列抽出処理の概念図である。
【図６】行抽出結果と列抽出結果と、これらから得られた表に書き込み可能なデータの一例を示す図である。
【図７】本発明の実施例の文字群再分割処理のフローチャートである。
【図８】本発明の実施例の行抽出処理のフローチャートである。
【図９】本発明の第２の実施例の処理ブロック図である。
【図１０】罫線が大幅に省略された表の一例を示す図である。
【図１１】従来方法で構造を認識できる表とできない表の一例を示す図である。
【符号の説明】
１１  文字群抽出部
１２  文字群再分割部
１３  行抽出部
１４  列抽出部
１５  表データ作成部
１６  罫線抽出部
１７  罫線除去部
【図１】
0003904397.tif 000002
【図２】
0003904397.tif 000003
【図３】
0003904397.tif 000004
【図４】
0003904397.tif 000005
【図５】
0003904397.tif 000006
【図６】
0003904397.tif 000007
【図７】
0003904397.tif 000008
【図８】
0003904397.tif 000009
【図９】
0003904397.tif 000010
【図１０】
0003904397.tif 000011
【図１１】
0003904397.tif 000012