(57)【特許請求の範囲】
【請求項１】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、該罫線候補の直線パターンの中で隣り合う２つの直線パターンのうち一方の直線パターンが該長さのしきい値より短い場合に該一方の直線パターンを除去する処理、または該隣り合う２つの直線パターンの距離が前記標準パターンの大きさに基づく別のしきい値より小さい場合に該２つの直線パターンのうち一方を除去する処理を行う直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項２】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、該罫線候補の直線パターンの中で隣り合う２つの横直線パターンの距離が前記標準パターンの大きさより小さい場合に、該２つの横直線パターンのそれぞれを対象として該横直線パターンと縦直線パターンの接続関係を調べ、該接続関係に基づき該横直線パターンを除去し、該罫線候補の直線パターンの中で隣り合う２つの縦直線パターンの距離が該標準パターンの大きさより小さい場合に、該２つの縦直線パターンのそれぞれを対象として該縦直線パターンと横直線パターンの接続関係を調べ、該接続関係に基づき該縦直線パターンを除去する直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項３】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、該罫線候補の直線パターンの中でほとんど重複する２つの直線パターンの距離が前記標準パターンの大きさより小さい場合に、該２つの直線パターンのうち短い方を除去する直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項４】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する直線除去手段と、
前記１つ以上の直線パターンの大きさの代表値を求める計算手段と、
前記罫線候補の直線パターンのうち部分的に重複する２つの直線パターンを統合してできる直線パターンの大きさが前記代表値程度になる場合に、統合後の直線パターンを罫線候補とする直線統合手段と
を備えることを特徴とする罫線抽出装置。
【請求項５】
前記計算手段は、前記１つ以上の直線パターンに含まれる横直線パターンの高さのヒストグラムと縦直線パターンの幅のヒストグラムのうちの１つから、前記代表値を求めることを特徴とする請求項４記載の罫線抽出装置。
【請求項６】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
横長または縦長のマスクを用いたマスク処理により前記入力画像から斜め成分を取り除くことで１つ以上の線分パターンを抽出し、抽出された線分パターンを統合して直線パターンを生成することにより、前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項７】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記１つ以上の直線パターンを構成する１つ以上の線分パターンの大きさの代表値を求める計算手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、前記代表値に基づいて線分パターンのしきい値を設定し、該罫線候補の直線パターンから、該線分パターンのしきい値より大きな線分パターンだけで構成されている直線パターンを除去する直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項８】
前記計算手段は、前記１つ以上の線分パターンに含まれる横線分パターンの高さのヒストグラムと縦直線パターンの幅のヒストグラムのうちの１つから、前記代表値を求めることを特徴とする請求項７記載の罫線抽出装置。
【請求項９】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
１つ以上の線分パターンの情報を、太さがしきい値より大きな線分パターンの情報と該大きな線分パターン以外の小さな線分パターンの情報とに区別して格納する格納手段と、
前記１つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出することにより、前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する直線除去手段と
を備えることを特徴とする罫線抽出装置。
【請求項１０】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する推定手段と、
前記入力画像から１つ以上の直線パターンの情報を抽出する直線抽出手段と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、前記１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する直線除去手段と、
前記罫線候補の直線パターンのうちの１つの直線パターンを構成する１つ以上の線分パターンのうち、標準的な大きさの線分パターンを表す１つ以上の線分矩形を、該１つの直線パターンの周囲で該１つの直線パターンの長さ方向と垂直にシフトさせながら、各シフト位置における該１つ以上の線分矩形の内部の黒画素数の総和を求める処理を繰り返して、得られた黒画素数の総和を各シフト位置に対してプロットすることにより、該１つの直線パターンの周囲における線分矩形のシフト量と黒画素数の総和との関係を表すグラフを生成するグラフ生成手段とを備え、
前記直線除去手段は、前記グラフの形状に基づいて前記１つの直線パターンを除去するかどうかを判定することを特徴とする罫線抽出装置。
【請求項１１】
前記１つ以上の線分パターンのうち太さがしきい値より大きな線分パターンの情報にマークを付けて、該１つ以上の線分パターンの情報を格納する格納手段をさらに備え、前記グラフ生成手段は、前記１つ以上の線分パターンのうちマークが付いていない線分パターンを、前記標準的な大きさの線分パターンとみなすことを特徴とする請求項１０記載の罫線抽出装置。
【請求項１２】
前記直線除去手段は、前記グラフの形状がなだらかな場合に前記１つの直線パターンを除去することを特徴とする請求項１０記載の罫線抽出装置。
【請求項１３】
コンピュータのためのプログラムを記録した記録媒体であって、
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する機能と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定する機能と、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する機能と、
前記１つ以上の直線パターンの大きさの代表値を求める機能と、
前記罫線候補の直線パターンのうち部分的に重複する２つの直線パターンを統合してできる直線パターンの大きさが前記代表値程度になる場合に、統合後の直線パターンを罫線候補とする機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１４】
コンピュータのためのプログラムを記録した記録媒体であって、
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する機能と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定する機能と、
横長または縦長のマスクを用いたマスク処理により前記入力画像から斜め成分を取り除くことで１つ以上の線分パターンを抽出し、抽出された線分パターンを統合して直線パターンを生成し、１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
コンピュータのためのプログラムを記録した記録媒体であって、
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する機能と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定する機能と、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する機能と、
前記１つ以上の直線パターンを構成する１つ以上の線分パターンの大きさの代表値を求める機能と、
前記代表値に基づいて線分パターンのしきい値を設定する機能と、
前記罫線候補の直線パターンから、該線分パターンのしきい値より大きな線分パターンだけで構成されている直線パターンを除去する機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
コンピュータのためのプログラムを記録した記録媒体であって、
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する機能と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定する機能と、
１つ以上の線分パターンの情報を、太さがしきい値より大きな線分パターンの情報と該大きな線分パターン以外の小さな線分パターンの情報とに区別して格納し、前記１つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出し、１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１７】
コンピュータのためのプログラムを記録した記録媒体であって、
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定する機能と、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定する機能と、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する機能と、
前記罫線候補の直線パターンのうちの１つの直線パターンを構成する１つ以上の線分パターンのうち、標準的な大きさの線分パターンを表す１つ以上の線分矩形を、該１つの直線パターンの周囲で該１つの直線パターンの長さ方向と垂直にシフトさせながら、各シフト位置における該１つ以上の線分矩形の内部の黒画素数の総和を求める処理を繰り返して、得られた黒画素数の総和を各シフト位置に対してプロットすることにより、該１つの直線パターンの周囲における線分矩形のシフト量と黒画素数の総和との関係を表すグラフを生成する機能と、
前記グラフの形状に基づいて前記１つの直線パターンを除去するかどうかを判定する機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定し、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、
前記１つ以上の直線パターンの大きさの代表値を求め、
前記罫線候補の直線パターンのうち部分的に重複する２つの直線パターンを統合してできる直線パターンの大きさが前記代表値程度になる場合に、統合後の直線パターンを罫線候補とする
ことを特徴とする罫線抽出方法。
【請求項１９】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定し、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、
横長または縦長のマスクを用いたマスク処理により前記入力画像から斜め成分を取り除くことで１つ以上の線分パターンを抽出し、抽出された線分パターンを統合して直線パターンを生成し、１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する
ことを特徴とする罫線抽出方法。
【請求項２０】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定し、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、
前記１つ以上の直線パターンを構成する１つ以上の線分パターンの大きさの代表値を求め、
前記代表値に基づいて線分パターンのしきい値を設定し、
前記罫線候補の直線パターンから、該線分パターンのしきい値より大きな線分パターンだけで構成されている直線パターンを除去する
ことを特徴とする罫線抽出方法。
【請求項２１】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定し、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、
１つ以上の線分パターンの情報を、太さがしきい値より大きな線分パターンの情報と該大きな線分パターン以外の小さな線分パターンの情報とに区別して格納し、前記１つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出し、１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する
ことを特徴とする罫線抽出方法。
【請求項２２】
入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして該標準パターンの大きさを推定し、
前記標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、
１つ以上の直線パターンから該太さのしきい値より太い直線パターンまたは該長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、
前記罫線候補の直線パターンのうちの１つの直線パターンを構成する１つ以上の線分パターンのうち、標準的な大きさの線分パターンを表す１つ以上の線分矩形を、該１つの直線パターンの周囲で該１つの直線パターンの長さ方向と垂直にシフトさせながら、各シフト位置における該１つ以上の線分矩形の内部の黒画素数の総和を求める処理を繰り返して、得られた黒画素数の総和を各シフト位置に対してプロットすることにより、該１つの直線パターンの周囲における線分矩形のシフト量と黒画素数の総和との関係を表すグラフを生成し、
前記グラフの形状に基づいて前記１つの直線パターンを除去するかどうかを判定する
ことを特徴とする罫線抽出方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、光電変換装置等により読み込まれた任意の文書画像から罫線部分を抽出する罫線抽出装置および方法に関する。
【０００２】
【従来の技術】
近年、オフィス作業の効率化のために、紙文書を電子化して光ディスク等に保存する電子ファイリングシステムの需要が増加している。従来の電子ファイリングシステムにおいては、紙文書がイメージスキャナ等の光電変換装置で画像に変換され、それに検索のためのキーワードが付与されて、光ディスクやハードディスクに保存される。しかし、これらのキーワード等はキー入力する必要があり、その入力作業が煩雑であった。
【０００３】
この不便さを解消するための、本出願人による先願の技術として、「文書画像からのタイトル抽出装置および方法」（特願平０７−３４１９８３）がある。この方法によれば、画像に含まれる文書タイトルが、キーワードとして自動的に抽出／登録される。また、表形式文書を含む様々な文書の画像から、タイトル、宛先、発信元情報等の管理情報を自動抽出することができ、例えば、表外にあるタイトルは、約９０％の精度で抽出できることが分かっている。
【０００４】
しかし、表内のタイトルについては抽出精度が約５５％に過ぎず、実用化するには精度が不十分である。表内のタイトル等のキーワードを高精度で抽出するには、表を構成する罫線を正確に抽出する必要がある。罫線抽出技術は、主として、文字等が規則的に並んでいる帳票を対象に開発されてきた。
【０００５】
従来の罫線抽出技術としては、「画像抽出方式」（特開平６−３０９４９８）と「画像抽出装置」（特開平７−２８９３７）がある。これらの技術によれば、帳票内の枠の位置等の情報入力を必要とせずに、枠の抽出や除去を行うことが可能である。処理可能な帳票は、一文字枠、ブロック枠（横一行枠またはフリーフォーマット枠）、または枠の外形が矩形状になっており横枠線が規則的に配置されている構造を持つ表を有するものである。
【０００６】
また、本出願人による先願の罫線抽出技術としては、「枠抽出装置及び矩形抽出装置」（特願平７−２０３２５９）、「パターン領域切り出し方式及びパターン抽出装置」（特願平７−２８２１７１）、および「パターン抽出装置及びパターン領域の切り出し方法」（特願平８−１０７５６８）がある。
【０００７】
これらの技術によれば、図４８に示すように枠の外形が矩形であっても、また、図４９に示すように枠の外形が矩形でなくても、枠の抽出および除去を行うことができる。さらに、図４９の網掛け部分のように、枠で囲まれた矩形の中にさらに細かい構造を持つ表形式枠についても、枠の抽出および除去を行うことが可能である。以下に、処理の概要を示す。
【０００８】
（１）細線化：マスク処理によって、縦横の線分を細線化し、文字と枠の太さの差をなくす。
（２）線分抽出：「画像抽出方式」（特開平６−３０９４９８）における隣接投影法を用いて、比較的長い直線の抽出を行う。隣接投影とは、注目する行または列に含まれる画素の投影値に、その周囲の行または列の投影値を足し合せた結果を、注目する行または列の最終的な投影値とする方法である。この投影法によれば、特定の行または列の周囲の画素分布を大局的に捉えることができる。
【０００９】
（３）直線抽出：抽出された線分を順に探索し、線分と線分の間に一定長さ以上の途切れがないかどうかを検査する。間にそのような途切れがない線分同士を順に統合していき、長い直線を抽出する。
【００１０】
（４）直線統合：抽出された直線同士を再度統合する。かすれにより２つ以上の部分に分離された直線を、１つの直線に統合する。
（５）直線伸張：規則的な帳票であると分かっているときに限り、かすれにより短くなった直線の伸張処理を行い、本来の長さに修復する。
【００１１】
【発明が解決しようとする課題】
しかしながら、上述した罫線抽出技術には次のような問題がある。
先願の技術において、帳票の枠の形状に関しては、規則的な構造であっても不規則な構造であっても、矩形領域で構成されている表形式枠であれば、処理可能である。また、対象としていた罫線は、実線、点線の場合とも、かすれのあるなしに関わらず処理可能である。また、規則的な表であると分かっている場合にのみ、極度のかすれにより短くなった直線を伸ばす処理を行っている。
【００１２】
しかし、一般的な入力画像には、図５０に示すように、文字が太いフォントで記載されていたり、表内に網掛け部分があったりするものも含まれる。このような場合、文字同士が接触して潰れた文字列上から誤って罫線が抽出され、正しい罫線と誤抽出された罫線が誤って統合されることがある。
【００１３】
また、網掛けの部分のような黒画素の固まりに接触した罫線や、文字に接触している罫線は、抽出することができない。こうした不具合をなくすためには、あらかじめ罫線構造が分かっている帳票のような表形式文書のみを、処理対象とすることが望ましい。
【００１４】
しかし、電子ファイリングで扱われる一般文書にはどのような形式の表が含まれるか、あらかじめ分かっておらず、潰れた文字等を含む様々な画像が入力される可能性が高い。したがって、先願の技術のままでは、必ずしも正しい罫線抽出ができないという問題がある。
【００１５】
本発明の課題は、あらかじめ罫線構造が予測できない一般の文書画像から、罫線部分を正しく抽出することのできる罫線抽出装置および方法を提供することである。
【００１６】
【課題を解決するための手段】
図１は、本発明の罫線抽出装置の原理図である。図１の罫線抽出装置は、本発明の第１、第２、第３、第４、第５、第６、第７、第８、第９、第１０、および第１１の原理を含み、推定手段１、格納手段２、線分抽出手段３、計算手段４、直線抽出手段５、グラフ生成手段６、直線処理手段７、直線統合手段８、および直線除去手段９を備える。
【００１７】
第１の原理において、推定手段１は、入力画像に含まれる標準パターンの大きさを推定する。直線抽出手段５は、上記標準パターンの大きさの情報に基づいてしきい値を設定し、そのしきい値を用いて、上記入力画像から１つ以上の直線パターンの情報を抽出する。
【００１８】
標準パターンとは、入力画像に最も多く含まれる標準的な大きさの文字等のパターンに相当する。この標準パターンとしては、例えば、文字を表す画素連結領域が用いられ、その大きさの情報としては、例えば、その領域の外接矩形の高さまたは幅が用いられる。
【００１９】
また、直線パターンとは、横長または縦長のマスクを用いたマスク処理および線分統合処理により、入力画像から抽出された横長または縦長のパターンに相当する。直線パターンの情報としては、例えば、そのパターンを構成する複数の線分パターンの外接矩形の座標値等が含まれる。線分パターンとは、マスク処理により画像から切り取られた線分状の画素領域に相当する。
【００２０】
直線抽出手段５は、標準パターンの大きさに基づいて各種しきい値を決定し、画像中の直線パターンをそれらのしきい値によって分別する。これにより、網掛け部分や接触文字等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。
【００２１】
第２の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。計算手段４は、上記１つ以上の直線パターンの大きさの代表値を求める。直線処理手段７は、上記代表値に基づいてしきい値を設定し、そのしきい値を用いて、上記１つ以上の直線パターンの情報を処理する。
【００２２】
計算手段４は、例えば、複数の直線パターンの高さまたは幅のヒストグラムから、直線パターンの代表的な大きさを求める。直線処理手段７は、この代表値付近にしきい値を設定し、それ以上の大きさの直線パターンを罫線候補から除外する等の処理を行って、正しい罫線候補を抽出することができる。
【００２３】
第３の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。計算手段４は、上記１つ以上の直線パターンを構成する１つ以上の線分パターンの大きさの代表値を求める。直線処理手段７は、上記代表値に基づいてしきい値を設定し、そのしきい値を用いて、上記１つ以上の直線パターンの情報を処理する。
【００２４】
線分パターンは、上述したように、マスク処理により画像から切り取られた線分状の画素領域に相当する。計算手段４は、例えば、複数の線分パターンの高さまたは幅のヒストグラムから、線分パターンの代表的な大きさを求める。直線処理手段７は、この代表値に基づくしきい値より大きい線分パターンのみから構成される直線パターンを罫線候補から除外する等の処理を行って、正しい罫線候補を抽出することができる。
【００２５】
第４の原理において、線分抽出手段３は、入力画像から１つ以上の線分パターンの情報を抽出する。格納手段２は、上記１つ以上の線分パターンの情報を、大きな線分パターンの情報と小さな線分パターンの情報とに区別して格納する。直線抽出手段５は、上記１つ以上の線分パターンの接続状態を調べ、途中に上記大きな線分パターンが存在するとき、その大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出する。
【００２６】
線分パターンの情報としては、例えば、その外接矩形の座標値等が含まれる。格納手段２は、例えば、適当なしきい値より大きな線分パターンの情報に特定の属性情報を付加し、それ以外の小さな線分パターンの情報と区別して格納する。直線抽出手段５は、例えば、互いに重複する複数の線分パターンを統合して、それらの外接矩形を直線パターンとして抽出する際に、大きな線分パターンを無視して、その両側の小さな線分パターン同士を適当に接続する処理を行う。
【００２７】
これにより、網掛け部分や文字等の大きな画素領域に接触した罫線の画像から、その領域の大きさに影響されない直線パターンを、正しい罫線候補として抽出することができる。
【００２８】
第５の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線統合手段８は、上記１つ以上の直線パターンに含まれる２つの直線パターンがほとんど重複する場合に、それらの２つの直線パターンを１つに統合する。
【００２９】
直線統合手段８が、ほとんど重複する２つの直線パターンを統合することで、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。
第６の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、上記１つ以上の直線パターンのうちの１つの形に関する情報と、それらの１つ以上の直線パターンに含まれる２つの直線パターンの間の距離に関する情報のうち、少なくとも一方の情報を用いて、それらの１つ以上の直線パターンのうちの１つを除去するかどうかを判定する。
【００３０】
直線除去手段９が、例えば、直線パターンの縦横比や隣の直線パターンまでの距離に基づいて、その直線パターンの罫線らしさを判定し、罫線らしくない直線パターンを除去する。これにより、網掛け部分や潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。
【００３１】
第７の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、上記１つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係に基づき、それらの横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定する。
【００３２】
直線除去手段９が、例えば、いずれの横直線パターンとも接触しない縦直線パターンや、いずれの縦直線パターンとも接触しない横直線パターンを、罫線候補から除外する。これにより、潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。
【００３３】
第８の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、上記１つ以上の直線パターンに含まれ、ほとんど重複する２つの直線パターンのうちの、短い方を除去する。
【００３４】
直線除去手段９が、ほとんど重複する２つの直線パターンのうち短い方を除去することで、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。
【００３５】
第９の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線統合手段８は、上記１つ以上の直線パターンのうち部分的に重複する２つの直線パターンを統合してできる直線パターンの大きさが所定値程度になる場合に、統合後の直線パターンを罫線候補とする。
【００３６】
直線統合手段８は、例えば、２つの直線パターンを統合してできる直線パターンの太さが直線パターンの代表的な太さ程度であれば、その統合処理を実行する。これにより、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。
【００３７】
第１０の原理において、直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、上記１つ以上の直線パターンのうち、しきい値より大きな線分パターンだけで構成されている直線パターンを除去する。
【００３８】
直線除去手段９は、例えば、線分パターンの代表的な太さに比べてかなり太い線分パターンだけから構成される直線パターンを、罫線候補から除外する。これにより、潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。
【００３９】
第１１の原理において、直線抽出手段５は、入力画像から直線パターンの情報を抽出する。グラフ生成手段６は、上記直線パターンを構成する１つ以上の線分パターンのうち、標準的な大きさの線分パターンの内部の画素数を求めて、その直線パターンの周囲における画素数のグラフを生成する。直線除去手段９は、上記グラフの形状に基づいて、上記直線パターンを除去するかどうかを判定する。
【００４０】
グラフ生成手段６は、例えば、直線パターンを構成する線分パターンの集合から大きな線分パターンを除いて、標準的な大きさの線分パターンの集合を生成する。そして、それらを直線パターンの周囲の領域にシフトさせて、シフト量と画素数との関係を表すグラフを生成する。また、直線除去手段９は、例えば、そのグラフの形状がなだらかで極大値がはっきりしない場合に、直線パターンを罫線候補から除外する。
【００４１】
網掛け部分や潰れた文字列等の内部より抽出された直線パターンの場合、その周囲に画素がまんべんなく分布していることが多い。このような場合に、グラフの形状がなだらかとなり、その直線パターンが罫線候補から除外されるので、正しい罫線候補を抽出することができる。
また、本発明の別の罫線抽出装置は、推定手段１、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、罫線候補の直線パターンの中で隣り合う２つの直線パターンのうち一方の直線パターンが長さのしきい値より短い場合にその直線パターンを除去する処理、または隣り合う２つの直線パターンの距離が標準パターンの大きさに基づく別のしきい値より小さい場合にそれらの直線パターンのうち一方を除去する処理を行う。
また、本発明のさらに別の罫線抽出装置は、推定手段１、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、罫線候補の直線パターンの中で隣り合う２つの横直線パターンの距離が標準パターンの大きさより小さい場合に、それらの横直線パターンのそれぞれを対象として横直線パターンと縦直線パターンの接続関係を調べ、接続関係に基づきその横直線パターンを除去し、罫線候補の直線パターンの中で隣り合う２つの縦直線パターンの距離が標準パターンの大きさより小さい場合に、それらの縦直線パターンのそれぞれを対象として縦直線パターンと横直線パターンの接続関係を調べ、接続関係に基づきその縦直線パターンを除去する。
また、本発明のさらに別の罫線抽出装置は、推定手段１、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、罫線候補の直線パターンの中でほとんど重複する２つの直線パターンの距離が標準パターンの大きさより小さい場合に、それらの直線パターンのうち短い方を除去する。
また、本発明のさらに別の罫線抽出装置は、推定手段１、計算手段４、直線抽出手段５、直線統合手段８、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する。計算手段４は、上記１つ以上の直線パターンの大きさの代表値を求める。そして、直線統合手段８は、罫線候補の直線パターンのうち部分的に重複する２つの直線パターンを統合してできる直線パターンの大きさが代表値程度になる場合に、統合後の直線パターンを罫線候補とする。
また、本発明のさらに別の罫線抽出装置は、推定手段１、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、横長または縦長のマスクを用いたマスク処理により入力画像から斜め成分を取り除くことで１つ以上の線分パターンを抽出し、抽出された線分パターンを統合して直線パターンを生成することにより、入力画像から１つ以上の直線パターンの情報を抽出する。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する。
また、本発明のさらに別の罫線抽出装置は、推定手段１、計算手段４、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。計算手段４は、上記１つ以上の直線パターンを構成する１つ以上の線分パターンの大きさの代表値を求める。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出し、代表値に基づいて線分パターンのしきい値を設定し、罫線候補の直線パターンから、線分パターンのしきい値より大きな線分パターンだけで構成されている直線パターンを除去する。
また、本発明のさらに別の罫線抽出装置は、推定手段１、格納手段２、直線抽出手段５、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。格納手段２は、１つ以上の線分パターンの情報を、太さがしきい値より大きな線分パターンの情報と大きな線分パターン以外の小さな線分パターンの情報とに区別して格納する。直線抽出手段５は、１つ以上の線分パターンの接続状態を調べ、途中に大きな線分パターンが存在するとき、その大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出することにより、入力画像から１つ以上の直線パターンの情報を抽出する。そして、直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する。
また、本発明のさらに別の罫線抽出装置は、推定手段１、直線抽出手段５、グラフ生成手段６、および直線除去手段９を備える。推定手段１は、入力画像に多く含まれる標準的な大きさのパターンを標準パターンとして、その標準パターンの大きさを推定する。直線抽出手段５は、入力画像から１つ以上の直線パターンの情報を抽出する。直線除去手段９は、標準パターンの大きさの情報に基づいて直線パターンの太さまたは長さのしきい値を設定し、上記１つ以上の直線パターンから太さのしきい値より太い直線パターンまたは長さのしきい値より短い直線パターンを除去することにより、罫線候補の直線パターンを抽出する。グラフ生成手段６は、罫線候補の直線パターンのうちの１つの直線パターンを構成する１つ以上の線分パターンのうち、標準的な大きさの線分パターンを表す１つ以上の線分矩形を、その直線パターンの周囲で直線パターンの長さ方向と垂直にシフトさせながら、各シフト位置における１つ以上の線分矩形の内部の黒画素数の総和を求める処理を繰り返して、得られた黒画素数の総和を各シフト位置に対してプロットすることにより、その直線パターンの周囲における線分矩形のシフト量と黒画素数の総和との関係を表すグラフを生成する。そして、直線除去手段９は、グラフの形状に基づいてその直線パターンを除去するかどうかを判定する。
【００４２】
例えば、図１の格納手段２は、後述する図３におけるメモリ３２に対応し、推定手段１、線分抽出手段３、計算手段４、直線抽出手段５、グラフ生成手段６、直線処理手段７、直線統合手段８、および直線除去手段９は、ＣＰＵ（中央処理装置）３１およびメモリ３２に対応する。
【００４３】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
現在、表内のタイトル等のキーワードを高精度に自動抽出するために、表形式文書のフォーム学習システムが開発されつつある。このシステムでは、あらかじめ表を含む文書を登録しておいて、登録文書については後で高い精度で正しいキーワードを抽出することが可能になる。本発明は、表形式文書のフォーム学習時において、文書画像から罫線を正しく抽出するために用いることができる。
【００４４】
本発明では、従来および先願の帳票用の罫線抽出技術を改良し、罫線を構成する小線分の情報を活用して、本来の罫線から抽出された直線と文字列上から誤抽出された直線とを区別する。これにより、文字が罫線に接触している場合でも、正しく罫線を抽出することができる。
【００４５】
また、表内の潰れ部分から抽出された線分があっても、本来の罫線から抽出された線分のみに注目して、罫線候補を求める。そして、罫線の形状、位置関係、罫線内部の線分の黒画素の分布状況から、正しい罫線だけを抽出する。
【００４６】
以下の実施形態においては、サイズや位置や傾きが分からない枠が単数または複数個あり、それらの枠に対して、枠に接触した文字、枠からはみ出した文字を含む多様な文字が書かれているような文書を対象とする。そして、そのような文書の画像から枠を抽出する場合を考える。
【００４７】
図２は、実施形態の罫線抽出装置の機能ブロック図である。図２において、対象となる入力パターン１１は、極端な傾きや回転を補正した後の２値画像である。また、網掛けされた処理ブロックが、主として、「パターン抽出装置及びパターン領域の切り出し方法」（特願平８−１０７５６８）等の先願とは異なる処理を表す。
【００４８】
まず、縮小処理部１２が画像を縮小し、連結パターン抽出部１３が連結パターンを抽出した後、罫線抽出装置は矩形高さの最頻値を計算し（処理Ｐ１）、マスク処理部１４が細線化を行う。
【００４９】
次に、横直線抽出部１５が、横隣接投影（処理Ｐ２）、横線分検出（処理Ｐ３）、横線分統合（処理Ｐ４）、および横直線探索（処理Ｐ５）を行った後、罫線抽出装置は横点線検出（処理Ｐ６）を行う。次に、縦直線抽出部１６が、縦隣接投影（処理Ｐ７）、縦線分検出（処理Ｐ８）、縦線分統合（処理Ｐ９）、および縦直線探索（処理Ｐ１０）を行った後、罫線抽出装置は縦点線検出（処理Ｐ１１）を行う。
【００５０】
次に、罫線抽出装置は、横直線の高さの最頻値を計算し（処理Ｐ１２）、縦直線の幅の最頻値を計算し（処理Ｐ１３）、横線分の高さの最頻値を計算し（処理Ｐ１４）、縦線分の幅の最頻値を計算する（処理Ｐ１５）。次に、完全に重複する直線同士を統合し（処理Ｐ１６）、直線矩形の形や隣の直線矩形までの距離を元に不要な直線を除去する（処理Ｐ１７）。次に、縦横の直線間の接続関係を元に不要な直線を除去し（処理Ｐ１８）、部分的に重複する直線同士を統合する（処理Ｐ１９）。
【００５１】
次に、罫線抽出装置は、他の直線とほぼ完全に重複する直線を除去し（処理Ｐ２０）、所定のしきい値より大きな線分だけから成る直線を除去する（処理Ｐ２１）。そして、別のしきい値より大きな線分にマークを付け（処理Ｐ２２）、対象とする線分をシフトしながら直線をチェックし、不要な直線を除去して（処理Ｐ２３）、残された直線を出力する。
【００５２】
本実施形態の罫線抽出装置は、例えば図３に示すような情報処理装置（コンピュータ）により実現される。図３の情報処理装置は、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、外部記憶装置３５、媒体駆動装置３６、ネットワーク接続装置３７、光電変換装置３８を備え、それらの各装置はバス３９により互いに結合されている。
【００５３】
ＣＰＵ３１は、メモリ３２に格納されたプログラムを実行して、図２に示した各処理を行う。メモリ３２としては、例えばＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）等が用いられる。メモリ３２には、上述のプログラムと処理に必要なデータが格納される。
【００５４】
入力装置３２は、例えばキーボード、ポインティングデバイス等に相当し、ユーザからの要求や指示の入力に用いられる。また、出力装置３４は、表示装置やプリンタ等に相当し、処理結果等の出力に用いられる。
【００５５】
外部記憶装置３５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。この外部記憶装置３５に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ３２にロードして使用することができる。また、外部記憶装置３５は、画像やキーワード等を保存する、電子ファイリングシステムのデータベースとしても使用される。
【００５６】
媒体駆動装置３６は、可搬記録媒体４０を駆動し、その記憶内容にアクセスすることができる。可搬記録媒体４０としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｋ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ  ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体を使用することができる。この可搬記録媒体４０に、上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ３２にロードして使用することができる。
【００５７】
ネットワーク接続装置３７は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）等の任意の通信ネットワークに接続され、通信に伴うデータ変換等を行って、外部の情報提供者のデータベース４０′等と通信する。これにより、罫線抽出装置は、必要に応じて、上述のプログラムとデータをデータベース４０′からネットワークを介して受け取り、それらをメモリ３２にロードして使用することができる。
【００５８】
また、光電変換装置３８は、例えばイメージスキャナであり、処理対象となる一般の文書画像を入力する。
メモリ３２内では、処理に必要なデータが、例えば図４に示すような構造で管理される。図４において、１つの入力画像の情報４１は、画像に含まれる表（表形式枠）の数と各表毎の情報４２から成る。
【００５９】
各表情報４２は、表の外接矩形の座標値、表に含まれるセルの数、各セル毎の情報４３、表に含まれる水平直線（横直線）の数、各水平直線毎の情報４４、表に含まれる垂直直線（縦直線）の数、および各垂直直線毎の情報４４から成る。ここで、セルとは、上下左右を罫線で囲まれた領域を表す。
【００６０】
また、各セル情報４３はセルの座標値を含み、各直線情報４４は、直線を表す矩形の座標値、直線の属性情報、直線に含まれる小線分の数、各小線分毎の情報４５、および画像全体における直線の通し番号から成る。そして、各小線分情報４５は、小線分の属性情報と小線分を表す矩形の座標値を含む。直線および小線分の属性情報は、例えば実線と破線を区別したり、高さまたは幅が一定値を越えるワイルドカード（ｗｉｌｄｃａｒｄ）線分と他の線分を区別したりするのに用いられる。
次に、図５から図２４までを参照しながら、図２の各処理を順に説明する。
【００６１】
縮小処理部１２は、入力パターン１１の画像がある一定以上の解像度を持ち、その画像の大きさが比較的大きい場合に、処理の効率化のため、画像の縮小処理を行う。入力された原画像はそのまま記憶しておく。
【００６２】
連結パターン抽出部１３は、複数の表が配置される位置の相対的な関係に依存することなく、各パターンを安定にピックアップするために、上下左右８連結で繋がっている黒画素連結領域を部分パターンとして、ラベリングにより抽出する。そして、これらの部分パターンを判別して、画像に含まれる表のパターンを抽出する。
【００６３】
ラベリングで得られた部分パターンのサイズが後に必要になるので、連結パターン抽出部１３は、部分パターンを近似する外接矩形の角の座標をラベリングの処理中に算出しておく。そして、抽出された部分パターンの中で、一定以上の大きさのあるパターンを表の候補であるとして抽出する。
【００６４】
大きな連結パターンを抽出する際、大きな連結パターンの内側にあり、かつ一定以上の大きさのあるパターンも同時に抽出し、それらの大小のパターンを同じラベルを持つパターンとして扱う。こうすることで、本来１つの表を表すパターンが、かすれにより２つ以上のパターンに分離してしまったような場合に、これらを同じラベルに属するパターンとして処理することが可能になる。なお、これ以降、対象とするパターンの大きさを元に、許容できるかすれの長さを算出することにする。
【００６５】
図５は、上述のようなラベリング処理の例を示している。図５（ａ）のような画像において、連結パターン抽出部１３は、始めに一番大きな外接矩形を持つパターン５１を抽出し、それにラベルを付加する。次に、パターン５２とパターン５７の間にある横線パターン５６は一定以上の横幅があるため、これを大きいパターン５１の一部であるとみなし、図５（ｂ）に示すように、以下の処理ではこれらを同じラベルのパターンとして扱う。したがって、パターン５６には、パターン５１と同じラベルが付加される。
【００６６】
次に、罫線抽出装置は、処理Ｐ１において、先願の「文書画像からのタイトル抽出装置および方法」（特願平０７−３４１９８３）の方法を用いて、連結パターン抽出部１３により抽出された矩形の高さの頻度分布を表すヒストグラムを求める。そして、その最頻値ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔを求め、これを文書に含まれる標準的な文字の大きさと推定する。求められた最頻値は、以下の処理において各種しきい値を設定するために用いられる。この最頻値の計算処理は、次のようにして行われる。
【００６７】
まず、ラベリング結果の外接矩形の集合から、図６に示すような矩形高さのヒストグラムを作成する。図６において、横軸が各外接矩形の高さを表し、縦軸がその高さを持つ矩形の数（頻度値）を表す。ここでは、外接矩形の高さは、１画素の高さを単位高さとして求められる。
【００６８】
次に、頻度値と、その頻度値を持つ矩形高さの内で最大の高さとの対応関係を求め、メモリ３２内に矩形高さテーブルとして保存する。そして、そのテーブルの中を頻度値０から順に調査していき、高さの変化が１以内で頻度値の変化するものが連続し、それらの頻度値の変化の合計が所定値以上の場合に、それらの連続する高さのうちで最も高いものを矩形高さの最頻値ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔとする。
【００６９】
図７は、図６のヒストグラムに対応する矩形高さテーブルの内容を表すヒストグラムを示している。図７において、頻度値が急激に変化する高さが最頻値となっていることがわかる。このようにして最頻値を求めれば、１文字よりも小さなノイズの影響を排除することができ、文書に含まれる標準的な大きさの文字の高さが得られる。
【００７０】
図８は、矩形高さテーブルの簡単な例を示している。図８においては、４つの頻度値と、各頻度値を持つ矩形高さの内で最大の高さとが、それぞれペアで格納されている。最頻値を求めるために、この矩形高さテーブルの内容をヒストグラムにすると図９のようになる。
【００７１】
図９のヒストグラムを、頻度値の低いところから、つまり高さの高いところから順に見ていくと、高さが１０、９、８の位置で、頻度値がそれぞれ５、５、７だけ変化していることが分かる。これらの連続する高さの差は１であり、頻度値の変化の合計は１７である。頻度値の変化のしきい値を９とすると、高さ１０、９、８において頻度値の変化の合計がそれ以上となっているので、それらの中で最初に現れた高さ１０をｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔとする。
【００７２】
次に、マスク処理部１４は、連結パターン抽出部１３により抽出された、ある一定以上の大きさを持つ連結パターンと、その内部に存在する一定以上の大きさを持つ連結パターン（前者と同じラベルを持つパターン）とを表の候補とする。そして、先願の「枠抽出装置及び矩形抽出装置」（特願平７−２０３２５９）の方法を用いて、マスク処理を行う。
【００７３】
このマスク処理は、画像から極端な斜め成分を省き、表だけに存在する長い直線を抽出しやすくするために行われる。具体的には、マスク処理部１４は、画像全体に対して、大きさの決められた横長、縦長の２種類のマスク矩形による走査を行う。マスク内での黒画素のパターンの占める割合を算出し、それがある一定値以上であれば、そのマスク内の領域全体を黒画素で埋めてパターンとして残し、また一定値以下であれば、マスク内のパターンを削除する。こうして、縦横成分の抽出を行う。
【００７４】
ここで、複数の行または列が続いて、上記割合が所定のしきい値以上に達した場合、それらの連続するパターンをまとめて大きな矩形範囲をつくり、その中心線を処理結果とする。これにより、太いパターンが細線化される。また、処理結果の線分パターン同士の隙間が開かないようにするため、マスクの適用範囲を、お互いに重なりを持つように設定する。マスク処理前の原画像は、マスク処理後の画像とは別に記憶しておく。
【００７５】
図１０は、図５（ｂ）に示した２つのパターン５１、５６を対象としてマスク処理を行った結果を示している。この場合、図１０（ａ）に示す処理前の画像は、図１０（ｂ）に示すように変換される。図１０（ｂ）では、パターン５１、５６の縦横成分のみが抽出され、パターン全体が細線化されている。また、マスク処理において一部のパターンが補足された結果、パターン５１とパターン５６が繋がっていることが分かる。
【００７６】
次に、横直線抽出部１５は、処理Ｐ２において、図１０（ｂ）のような、部分パターンのマスク処理画像に対して、従来の隣接投影法を用いて投影値を算出する。そして、処理Ｐ３において、ある一定長さの横線分あるいは横直線の一部を、図１１に示すように矩形近似して検出する。これらの処理ではマスク処理画像を使用しているが、以下の処理では原画像を使用する。
【００７７】
次に、横直線抽出部１５は、処理Ｐ４において、線分同士の接続状態を調査して、いくつかの線分が構成する直線を罫線候補として抽出する。この処理では、図１２に示すように、検出された矩形線分のうち近隣の矩形線分同士を統合して長い直線を検出し、検出された直線をその外接矩形で近似する。
【００７８】
線分を統合する際、図１３に示すように、途中に一定以上の太い線分（ワイルドカード）６１があった場合には、それらを無視し、太い線分を除いた細い線分だけを対象として統合を行う。ある線分がワイルドカードであるかどうかは、図４の線分情報４５に記述された属性情報により区別される。このように、大きな線分があるとき、それを含んだ直線を出力するのではなく、その大きな線分を直線に反映しないような統合処理を行う。
【００７９】
これにより、網掛け部分や、罫線に接触した文字や図形等のパターンがあっても、それらを除いて罫線だけを抽出することができる。このような統合処理の詳細については後述することにする。統合の結果抽出された直線の情報には、図４に示したように、それを構成する各線分の情報が含まれている。
【００８０】
次に、横直線抽出部１５は、処理Ｐ５において、矩形近似された横直線の左右端を正確に検出するために、図１４に示すように、その直線内のパターン（画素）の探索を行う。探索の途中で、進行方向に画素のない部分（空白）が存在した場合、一定の画素数までは画素があるものと仮定して、進行方向に探索を続行する。一定画素数を越えて空白が存在した場合には、その位置を端点として探索を終了する。以下の処理では、探索によって検出された端点が、直線の端点として用いられる。
【００８１】
次に、罫線抽出装置は、処理Ｐ６において、先願の「枠抽出装置及び矩形抽出装置」（特願平７−２０３２５９）の方法を用いて、横点線を抽出する。この処理では、一定の大きさを持ち、かつ規則正しく並んでいる部分パターンを探し、それらのパターンを矩形で囲んで、点線の位置を表現する。
【００８２】
以下の処理では、点線の位置を示す矩形を、既に検出されている直線の位置を示す矩形と同様に扱う。ただし、点線に対応する直線の属性情報には破線属性が設定され、実線に対応する直線の属性情報には実線属性が設定されて、両者は区別される。
【００８３】
また、縦直線抽出部１６の処理Ｐ７、Ｐ８、Ｐ９、およびＰ１０と、縦点線検出処理Ｐ１１については、上述の横直線および横点線の場合と同様である。
次に、罫線抽出装置は、処理Ｐ１２において、横直線高さの代表値を計算する。この処理では、抽出された横直線の高さのヒストグラムを作成し、最も頻度の大きな高さを、横直線高さの最頻値ｍｆｈｅｉｇｈｔとし、これを横直線高さの代表値として用いる。また、同様にして、処理Ｐ１３において、縦直線幅の代表値（最頻値）ｍｆｗｉｄｔｈを計算する。
【００８４】
これらの代表値は、以下の処理において、各種しきい値を設定するために用いられる。また、横直線高さ／縦直線幅の代表値として、上記最頻値以外の適当な値を代わりに用いてもよい。
【００８５】
次に、罫線抽出装置は、処理Ｐ１４において、横線分高さの代表値を計算する。この処理では、画像内のすべての横直線を構成しているすべての横線分の高さのヒストグラムを作成し、最も頻度の大きな高さを、横線分高さの最頻値ｍｆｈｅｉｇｈｔ ｓｍａｌｌとし、これを横線分高さの代表値として用いる。また、同様にして、処理Ｐ１５において、すべての縦直線を構成しているすべての縦線分の幅の最頻値ｍｆｗｉｄｔｈ ｓｍａｌｌを計算する。
【００８６】
これらの代表値もまた、以下の処理において、各種しきい値を設定するために用いられる。また、横線分高さ／縦線分幅の代表値として、上記最頻値以外の適当な値を代わりに用いてもよい。
【００８７】
次に、罫線抽出装置は、処理Ｐ１６において、完全に重複する直線同士を統合する。この処理では、１つの直線が別の直線とほぼ完全に重複している場合に、それらを１つに統合する。例えば、図１５に示すような重複する２つの直線６２、６３において、重複しない部分の高さＨ１が一定の許容画素数ＩＮＴＥＧＤＯＴ以内であれば、これらは完全に重複するものとみなし、１つの直線矩形６４に統合する。ＩＮＴＥＧＤＯＴの値は、例えば２に設定される。
【００８８】
次に、罫線抽出装置は、処理Ｐ１７において、直線矩形の形や隣り合う直線矩形間の距離に基づいて、不要な直線を除去する。横直線の処理に関しては、まず、高さのしきい値ｔｈ ｈｅｉと長さのしきい値ｔｈ ｌｅｎを、それぞれ次式により計算する。
ｔｈ ｈｅｉ＝ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔ＊２／３        （１）
ｔｈ ｌｅｎ＝ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔ＊５            （２）
そして、以下の４つの場合において、該当する横直線を削除する。
（ａ）横直線矩形の縦横比（高さ／幅）がしきい値ＦＴＨ（＝０．１１）以上の場合。
（ｂ）横直線矩形の縦横比がしきい値ＦＴＨ２（＝０．０４）以上で、かつ、横直線矩形の高さが高さのしきい値ｔｈ ｈｅｉ以上の場合。
（ｃ）横直線矩形の幅が長さのしきい値ｔｈ ｌｅｎよりも小さい場合。
（ｄ）カレント横直線よりも下にあり、それに最も近い横直線の幅が、長さのしきい値ｔｈ ｌｅｎよりも小さい場合。
【００８９】
例えば、図１６においては、直線６７は（ａ）の場合に該当するため削除され、直線６８は（ｂ）の場合に該当するため削除され、直線６９は（ｃ）の場合に該当するため削除される。また、直線６５をカレント横直線とすると、直線６６は（ｄ）の場合に該当するため削除される。
【００９０】
さらに、２つの隣り合う直線間の距離が、ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔから求めたしきい値よりも小さい場合、それらの直線の一方（例えば長さの短い方）を除去する。縦直線の処理に関しても同様である。
【００９１】
次に、罫線抽出装置は、処理Ｐ１８において、縦横直線の接続関係に基づき、一部の不要な直線を除去する。横直線の処理に関しては、まず、注目する横直線矩形の端点がいずれの縦直線矩形とも接しない場合、その横直線矩形を削除する。これにより、表の枠を構成しない直線、例えば潰れて繋がった文字列上から抽出されたような孤立した直線が除去される。
【００９２】
例えば図１７においては、横直線７０の２つの端点７４、７５はそれぞれ縦直線７１、７２に接しているため、この直線７０は削除されず、横直線７３はいずれの縦直線とも接していないので削除される。縦直線の処理に関しても同様である。
【００９３】
しかし、このような除去処理では、画像の文字パターン等の影響で、本来残しておくべき直線が除去されてしまうことがある。例えば、図１８のような画像において、縦直線７６の端点７７、７８はいずれの横直線とも接していないので、縦直線７６は、表の枠を構成しているにもかかわらず、削除されてしまう。
【００９４】
そこで、必要な直線を残すために、除去処理の対象を互いに近接している２本の直線に限定することにする。この場合、まず、カレント横直線矩形ｉよりも下にあり、その矩形ｉとの距離が矩形高さの最頻値ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔよりも小さい横直線矩形ｊを求める。
【００９５】
そして、これらの横直線矩形ｉ、ｊのそれぞれについて、その矩形の端点がいずれの縦直線矩形とも接しなく、かつ、いずれの縦直線矩形の端点もその矩形と接しない場合に、その横直線矩形を削除する。縦直線の処理に関しても同様である。このような除去処理を行えば、図１８の縦直線７６は処理対象にならないので、削除されずに残る。
【００９６】
また、図１９においては、まず、近接する横直線７９、８０が対象となるが、これらの横直線７９、８０の端点は縦直線８２に接しているので、横直線７９、８０は削除されない。次に、横直線８０に近接する横直線８１が対象となり、この横直線８１はいずれの縦直線とも接していないので削除される。また、近接する縦直線８３、８４のうち、縦直線８３は、端点が横直線７９と接しているので残され、縦直線８４はいずれの横直線とも接していないので削除される。
【００９７】
次に、罫線抽出装置は、処理Ｐ１９において、部分的に重複する直線同士を統合する。この処理では、横直線に関しては、まず、幅（長さ）の長い順に並び替える。次に、長さの長い順に、１つの直線ｉに注目して、その直線と部分的に重複する１つ以上の直線を求める。
【００９８】
そして、部分的に重複する直線を直線ｉと仮想的に統合して１つの直線矩形とした場合に、その高さがしきい値（ｍｆｈｅｉｇｈｔ＋ＴＨＤＯＴ）以下となるのであれば、その統合を実行する。ＴＨＤＯＴの値は、例えば２に設定される。これにより、直線同士を統合した結果が高さの最頻値ｍｆｈｅｉｇｈｔ程度になる場合に、それらが１つに統合される。縦直線の処理に関しても同様である。
【００９９】
図２０においては、直線８５と直線８６が部分的に重複し、直線８６と直線８７が部分的に重複している。これらのうち、直線８５と直線８６を統合すると、統合された矩形の高さがしきい値を越えるため、直線８６と直線８７のみを統合して、それらの外接矩形８８で近似する。縦直線の処理に関しても同様である。
【０１００】
ここで、このような直線同士の統合処理を行うのは、本来１つの直線のパターンから抽出された複数の線分矩形が、処理Ｐ４、Ｐ９だけでは、完全に統合されない場合があるからである。例えば、図２１に示すような重複する２つの横直線８９、９０の場合、それぞれに含まれる線分矩形（斜線部分）同士は離れているので、処理Ｐ４では、直線８９と直線９０は統合されない。このような場合でも、処理Ｐ１９によれば、両者を統合することが可能である。
【０１０１】
次に、罫線抽出装置は、処理Ｐ２０において、ほぼ完全に重複する２つの直線のうちの短い方を除去する。この処理では、横直線に関しては、まず、１つの横直線矩形を長さの長い順にソートする。次に、長い順に１つずつ横直線矩形ｉを取り出し、その横直線矩形ｉに部分的に重複する他の横直線矩形ｊに注目する。この時、直線ｉと直線ｊの上下関係が、図２２に示すような関係にあるものを処理対象とする。図２２において、直線９１を直線ｉとすると、直線９２、９３が直線ｊに相当する。
【０１０２】
次に、直線ｉと直線ｊの間で横方向に重複している範囲を求め、その長さｌｅｎ３と直線ｊの横幅ｌｅｎ２の比ｌｅｎ３／ｌｅｎ２が、しきい値ＯＶＥＲＲＡＴＥよりも大きい時、直線ｊを削除候補として、以下の処理を行う。ただし、ＯＶＥＲＲＡＴＥの値は、１より小さいものとする。
【０１０３】
まず、直線ｉと直線ｊの間の縦方向の距離を求める。この場合、直線ｉと直線ｊの座標値の差を距離としてもよいが、直線が傾いた場合を考慮して、これらの直線内の小線分矩形間の距離を、直線間の距離と定義することにする。このような距離値の求め方を、図２３を参照しながら説明する。
【０１０４】
図２３において、横方向をｘ軸とし、縦方向をｙ軸とすると、直線ｉと直線ｊは、ｘ＝ｘｍｉｎｋｕｋａｎの位置から、ｘ＝ｘｍａｘｋｕｋａｎの位置までの長さｌｅｎ３の区間で横方向に重複しており、それぞれ内部に複数の線分を持っている。
【０１０５】
まず、罫線抽出装置は、直線ｉ内の線分の集合から、線分統合処理Ｐ４でワイルドカードではないと判断された線分であって、最初に重複部分にかかるものを取り出し、それを基準線分とする。ここでは、線分９４が基準線分となる。そして、基準線分９４のｘ座標（ｘｍｉｎ１，ｘｍａｘ１）を求める。
【０１０６】
次に、直線ｊ内の線分の集合を対象にして、ｘ座標がｘｍｉｎ１からｘｍａｘ１までの範囲にかかる線分をすべて抽出する。そして、抽出された線分と直線ｉ内の基準線分９４とのｙ方向の距離の平均値を求め、それを直線ｉと直線ｊの間の距離値とする。
【０１０７】
ここでは、直線ｊ内の対応する線分は線分９５だけなので、これと基準線分９４との距離ｄが、そのまま直線ｉと直線ｊの間の距離値となる。このような計算方法により、直線が傾いた場合でも、正しい直線間の距離が求められる。
【０１０８】
罫線抽出装置は、こうして得られた直線ｉと直線ｊの距離を元にして、直線ｊを削除するかどうかを決定する。まず、図２２の直線９２のように、直線ｊが直線ｉより上にある場合は、それらの距離がしきい値ＯＶＥＲＤＯＴ以内であれば、直線ｊを削除する。ＯＶＥＲＤＯＴの値は、例えば１に設定される。また、直線９３のように、直線ｊが直線ｉより下にある場合は、それらの距離がしきい値ｍｏｓｔ ｆｒｅｑ ｈｅｉｇｈｔよりも小さければ、直線ｊを削除する。
【０１０９】
次に、罫線抽出装置は、処理Ｐ２１において、一定のしきい値より大きい線分だけで構成されている直線を除去する。この処理では、横直線内のすべての線分の高さがしきい値（ｍｆｈｅｉｇｈｔ ｓｍａｌｌ＊２−１）よりも大きい場合に、その直線を文字列上から誤って抽出された直線とみなして、削除する。縦直線の処理に関しても同様である。
【０１１０】
次に、罫線抽出装置は、処理Ｐ２２、２３において、直線矩形を構成する線分矩形がしきい値より大きな場合、その線分矩形の情報にマークを付けて、マークが付いていない線分矩形の内部の黒画素の総和を求める。このとき、マークが付いていない線分矩形の集合を、直線矩形の長さ方向と垂直な方向に動かして、シフト量と黒画素総数の関係を表すグラフを作成する。そして、グラフの形状がなだらかな場合に、その直線矩形を罫線候補から除外する。
【０１１１】
罫線抽出装置は、まず、処理Ｐ２２において、処理Ｐ２３のための前処理を行う。この処理では、横直線内の線分の高さが、しきい値ｍｆｈｅｉｇｈｔ ｓｍａｌｌより大きな場合、その線分の属性情報をワイルドカードに設定して、処理Ｐ２３で使用しないようにする。縦直線の処理に関しても同様である。
【０１１２】
次に、処理Ｐ２３において、線分シフトによる直線のチェック／除去処理を行う。この処理では、まず、１つの横直線矩形を構成する複数の横線分矩形内の黒画素数の総和を求め、それをシフト量０の位置（中心位置）における黒画素総数とする。次に、線分矩形を横直線矩形の長さ方向と垂直な方向（縦方向）に、横直線矩形の高さ分だけ上下にシフトして、各位置での黒画素総数を求め、シフト量に対する黒画素総数のグラフを作成する。
【０１１３】
そして、中心位置付近の黒画素総数の極大値を基準とし、上下の両方向に離れた位置の黒画素総数の分布が一定比率未満になる場合に、その直線矩形は罫線であるとみなして出力する。それ以外の場合は、その直線矩形は文字列等から誤って抽出された直線であり、罫線ではないものとみなして、削除する。縦直線の処理についても同様である。
【０１１４】
例えば図５０に示した画像の場合、図２４に示すようなグラフが作成される。図２４において、グラフ９６、９７は、それぞれ対応する横直線の周囲の黒画素の分布を表している。このとき、横直線の高さをｈｅｉｇｈｔとすると、横直線内の各線分は、ｙ方向に＋／−ｈｅｉｇｈｔの区間で１画素ずつシフトされ、各シフト位置における線分内の黒画素の総数がプロットされている。
【０１１５】
グラフ９６の場合は、シフト量０の位置に黒画素総数の極大値Ｐｅａｋがあり、その上下において、黒画素総数の分布はＰｅａｋのＴＨＳＨＩＦＴ倍の値を下回っている。ここでは、ＴＨＳＨＩＦＴの値は、例えば０．４４に設定される。このような分布は、シフト量０の位置に黒画素が集中していることを表しており、その位置に対応する横直線が罫線であるとみなされる。
【０１１６】
これに対して、グラフ９７の場合は、＋／−ｈｅｉｇｈｔの区間の黒画素総数の分布がなだらかで、シフト量０の位置の上下においても、ＰｅａｋのＴＨＳＨＩＦＴ倍の値を下回らない。このような分布は、シフト量０の位置の上下に黒画素が分散していることを表しており、その位置に対応する横直線は罫線ではないものとみなされ、削除される。
【０１１７】
このような直線のチェック／除去処理を行えば、表内の網掛け部分や潰れた文字列上から抽出された直線が除去され、本来の罫線のみが処理結果として出力される。このチェック／除去処理の詳細については後述することにする。
【０１１８】
次に、図２５から図３６までを参照しながら、上述の各処理の具体例について述べる。図２５は、処理Ｐ４における横線分統合後の画像データを示しており、図２６は、図２５の画像の一部を示している。図２６の状態は、処理Ｐ１６における完全重複直線の統合前の画像データに対応し、図２７は、その統合後の画像データを示している。
【０１１９】
図２６において、ラベル６６を持つ直線矩形１０１とラベル３を持つ直線矩形１０６は、図２７においては１つに統合されていることが分かる。同様に、ラベル６７、６８、６９、７０を持つ直線矩形１０２、１０３、１０４、１０５は、それぞれ、ラベル４、５、６、７を持つ直線矩形１０７、１０８、１０９、１１０と統合されている。
【０１２０】
また、図２８は、図２７の画像に対して処理Ｐ１７、１８を施し、直線の形、位置および接続関係を元に直線を除去した後の画像データを示している。図２７においてラベル３５、３７、３８を持つ直線矩形１１１、１１２、１１３は、図２８においては削除されていることが分かる。
【０１２１】
また、図２９は、処理Ｐ１９における部分重複直線の統合前の画像データを示しており、図３０は、その統合後の画像データを示している。図２９において、ラベル２５を持つ直線矩形１２１とラベル２０を持つ直線矩形１２４は、図３０においては１つに統合されていることが分かる。同様に、ラベル２６、２７を持つ直線矩形１２２、１２３は、それぞれ、ラベル２１、２２を持つ直線矩形１２５、１２６と統合されている。
【０１２２】
また、図３１は、処理Ｐ２０におけるほぼ完全に重複する直線の除去前の画像データを示しており、図３２は、その除去後の画像データを示している。図３１における直線矩形１３１が、図３２においては削除されていることが分かる。
【０１２３】
また、図３３は、処理Ｐ２１における大きな線分だけから成る直線の除去前の画像データを示しており、図３４は、その除去後の画像データを示している。図３３における直線矩形１４１が、図３４においては削除されていることが分かる。
【０１２４】
さらに、図３５は、処理Ｐ２３における線分シフトによる直線のチェック／除去前の画像データを示しており、図３６は、そのチェック／除去後の画像データを示している。図３５における直線矩形１５１、１５２、１５３が、図３６においては削除されていることが分かる。
【０１２５】
次に、図３７から図４１までを参照しながら、線分統合処理について詳細に説明する。図３７、３８、３９、４０、４１は、図２における横線分統合処理Ｐ４のフローチャートである。
【０１２６】
この処理においては、横直線抽出部１５は、大きな黒画素塊をワイルドカード矩形として扱い、その前後に８連結で接続される横長の線分矩形に注目する。そして、ワイルドカード矩形を挟んでお互いに８連結の関係にある線分矩形を統合していき、１つの横に長い統合矩形を横直線として求める。
【０１２７】
処理が開始されると、横直線抽出部１５は、まず、横線分の高さの最頻値ｍｆｈｅｉｇｈｔ ｓｍａｌｌを用いて次式の各しきい値を計算し、直線数を０とおく（図３７、ステップＳ１）。
ｔｈ ｈｅｉｇｈｔ＝
ｍｆｈｅｉｇｈｔ ｓｍａｌｌ＋ＴＨ ＨＥＩＧＨＴＤＯＴ        （３）
ｓｔａｎｄａｒｄ ｈ＝ｍｆｈｅｉｇｈｔ ｓｍａｌｌ＋１        （４）
ここで、ＴＨ ＨＥＩＧＨＴＤＯＴの値は、例えば２に設定される。次に、互いに連結する複数の線分矩形のうちの１つの高さを調べ（ステップＳ２）、それがしきい値ｔｈ ｈｅｉｇｈｔより大きければ、それをワイルドカード矩形としてマークする（ステップＳ３）。このとき、その線分矩形の属性情報の識別変数ｕｓｅを９とおくことにより、ワイルドカード属性を設定する。
【０１２８】
それ以外の線分矩形は通常の矩形（スタンダード矩形）として、ｕｓｅ＝０とおく（ステップＳ４）。そして、連結するすべての線分矩形をマークしたかどうかを判定し（ステップＳ５）、まだ線分矩形が残っていれば、ステップＳ２以降の処理を繰り返す。
【０１２９】
すべての線分矩形をマークし終えると、１つの矩形をカレント矩形ｉとして取り出し、ｘｌｆ＝カレント矩形ｉの左端座標、ｘｒ＝カレント矩形ｉの右端座標、ｙｕｐ＝カレント矩形ｉの上端座標、ｙｂｌ＝カレント矩形ｉの下端座標、ｌｉｎｅ ｓｔａｒｔ＝ｙｕｐ、ｌｉｎｅ ｅｎｄ＝ｙｂｌとおく（ステップＳ６）。そして、カレント矩形ｉのｕｓｅが０または９であるかどうか調べる（ステップＳ７）。
【０１３０】
カレント矩形ｉのｕｓｅが０または９であれば、ｓｔａｒｔｘｌｆ＝ｘｌｆ、ｓｔａｒｔｘｒ＝ｘｒ、ｓｔａｒｔｙｕｐ＝ｙｕｐ、ｓｔａｒｔｙｂｌ＝ｙｂｌとおき（ステップＳ８）、次に、ｕｓｅ＝０かどうかを判定する（図３８、ステップＳ９）。ｕｓｅ＝０であれば、ｓｔａｎｄａｒｄ ｓｔ＝ｙｕｐ、ｓｔａｎｄａｒｄ ｅｎ＝ｙｂｌ、ｂ ｕｓｅ＝０、ｕｓｅ＝１、ｈｅｉｇｈｔ＝ｙｂｌ−ｙｕｐ＋１とおく（ステップＳ１０）。
【０１３１】
ｂ ｕｓｅ＝０は、カレント矩形ｉがワイルドカードではなく、スタンダードとして設定されていることを意味し、ｕｓｅ＝１はカレント矩形ｉが使用済みであることを意味する。ステップＳ９でｕｓｅ＝０でなければ、ｓｔａｎｄａｒｄ ｓｔ＝０、ｓｔａｎｄａｒｄ ｅｎ＝０、ｂ ｕｓｅ＝９、ｈｅｉｇｈｔ２＝ｙｂｌ−ｙｕｐ＋１とおく（ステップＳ１１）。ｂ ｕｓｅ＝９は、カレント矩形ｉがワイルドカードであるため、スタンダードとして設定されないことを意味する。
【０１３２】
次に、他の線分矩形をカレント矩形ｋとして取り出し、ｒｘｌｆ＝カレント矩形ｋの左端座標、ｒｘｒ＝カレント矩形ｋの右端座標、ｒｙｕｐ＝カレント矩形ｋの上端座標、ｒｙｂｌ＝カレント矩形ｋの下端座標とおく（ステップＳ１２）。
【０１３３】
そして、カレント矩形ｉがスタンダードとして設定されているかどうか、すなわち、ｂ ｕｓｅ＝０であるかどうかを調べる（ステップＳ１３）。ｂ ｕｓｅ＝０であれば、次に、カレント矩形ｋのｕｓｅが９であるかどうかを調べる（ステップＳ１４）。ここで、ｕｓｅ＝９の場合は、カレント矩形ｉがスタンダードで、カレント矩形ｋがワイルドカードであることを意味する。
【０１３４】
ｕｓｅ＝９のとき、ｘｒ＋１≧ｒｘｌｆ、ｘｒ＜ｒｘｒ、ｙｂｌ＋１≧ｒｙｕｐ、およびｙｕｐ−１≦ｒｙｂｌが成り立つかどうかを判定する（ステップＳ１５）。これらの条件が成り立つ時、カレント矩形ｋがカレント矩形ｉの右側にあり、両者が横と縦に１画素（１ドット）以上の重なりを有することを意味する。そこで、ｘｒ＝ｒｘｒとおいて、カレント矩形ｉの右端をカレント矩形ｋの右端まで延長する（ステップＳ１６）。
【０１３５】
ステップＳ１４でｕｓｅ＝９でないとき、次に、ｕｓｅ＝０であるかどうかを調べる（図３９、ステップＳ１７）。ここで、ｕｓｅ＝０の場合は、カレント矩形ｉがスタンダードで、カレント矩形ｋがワイルドカードでないことを意味する。そこで、次に、ｘｒ＋１≧ｒｘｌｆ、ｘｒ＜ｒｘｒ、ｙｂｌ＋１≧ｒｙｕｐ、およびｙｕｐ−１≦ｒｙｂｌが成り立ち、かつ、カレント矩形ｋの高さがｓｔａｎｄａｒｄ ｈ＋／−４以内かどうかを判定する（ステップＳ１８）。
【０１３６】
これらの条件が成り立つ時、ｘｒ＝ｒｘｒ、ｙｕｐ＝ｒｙｕｐ、ｙｂｌ＝ｒｙｂｌ、ｕｓｅ＝２、ｈｅｉ＝ｒｙｂｌ−ｒｙｕｐ＋１とおく（ステップＳ１９）。これは、カレント矩形ｉの右端をカレント矩形ｋの右端まで延長し、上下端の座標をカレント矩形ｋのものに置き換えることを意味する。また、ｕｓｅ＝２はカレント矩形ｋが使用済みであることを意味する。
【０１３７】
次に、ｈｅｉ＞ｈｅｉｇｈｔが成り立つかどうかを判定し（ステップＳ２０）、成り立てばｈｅｉｇｈｔ＝ｈｅｉとおく（ステップＳ２１）。次に、ｒｙｕｐ＜ｌｉｎｅ ｓｔａｒｔが成り立つかどうかを判定し（ステップＳ２２）、成り立てばｌｉｎｅ ｓｔａｒｔ＝ｒｙｕｐとおく（ステップＳ２３）。さらに、ｒｙｂｌ＞ｌｉｎｅ ｅｎｄが成り立つかどうかを判定し（ステップＳ２４）、成り立てばｌｉｎｅ ｅｎｄ＝ｒｙｂｌとおく（ステップＳ２５）。
【０１３８】
これらの処理の後、次にｂ ｕｓｅ＝９かどうかを判定する（図４０、ステップＳ２６）。図３８のステップＳ１３、Ｓ１５、図３９のステップＳ１８、Ｓ２０、Ｓ２２、Ｓ２４で判定結果がＮｏのときは、直ちにステップＳ２６以降の処理に移る。
【０１３９】
ここで、ｂ ｕｓｅ＝９であれば、次に、カレント矩形ｋのｕｓｅが９であるかどうかを調べる（ステップＳ２７）。ｕｓｅ＝９の場合は、カレント矩形ｉとカレント矩形ｋの両方がワイルドカードであることを意味をする。そこで、ｘｒ＋１≧ｒｘｌｆ、ｘｒ＜ｒｘｒ、ｙｂｌ＋１≧ｒｙｕｐ、およびｙｕｐ−１≦ｒｙｂｌが成り立つかどうかを判定する（ステップＳ２８）。
【０１４０】
これらの条件が成り立つ時、カレント矩形ｋがカレント矩形ｉの右側にあり、両者が横と縦に１ドット以上の重なりを有するので、ｘｒ＝ｒｘｒとおいて、カレント矩形ｉの右端をカレント矩形ｋの右端まで延長する（ステップＳ２９）。
【０１４１】
ステップＳ２７でｕｓｅ＝９でないとき、次に、ｕｓｅ＝０であるかどうかを調べる（ステップＳ３０）。ここで、ｕｓｅ＝０の場合は、カレント矩形ｉがワイルドカードで、カレント矩形ｋがワイルドカードでないことを意味をする。そこで、ｘｒ＋１≧ｒｘｌｆ、ｘｒ＜ｒｘｒ、ｌｉｎｅ ｅｎｄ≧ｒｙｕｐ、およびｌｉｎｅ ｓｔａｒｔ＜ｒｙｂｌが成り立つかどうかを判定する（ステップＳ３１）。
【０１４２】
これらの条件が成り立つ時、ｘｒ＝ｒｘｒ、ｙｕｐ＝ｒｙｕｐ、ｙｂｌ＝ｒｙｂｌ、ｕｓｅ＝２、ｌｉｎｅ ｓｔａｒｔ＝ｒｙｕｐ、ｌｉｎｅ ｅｎｄ＝ｒｙｂｌ、ｈｅｉ＝ｒｙｂｌ−ｒｙｕｐ＋１、ｓｔａｎｄａｒｄ ｓｔ＝ｒｙｕｐ、ｓｔａｎｄａｒｄ ｅｎ＝ｒｙｂｌとおく（ステップＳ３２）。
【０１４３】
これは、カレント矩形ｉの右端をカレント矩形ｋの右端まで延長し、上下端の座標をカレント矩形ｋのものに置き換えることを意味する。また、ｕｓｅ＝２はカレント矩形ｋが使用済みであることを意味する。そして、ｈｅｉ＞ｈｅｉｇｈｔが成り立つかどうかを判定し（ステップＳ３３）、成り立てばｈｅｉｇｈｔ＝ｈｅｉとおく（ステップＳ３４）。
【０１４４】
次に、カレント矩形ｋとして、連結するすべての線分矩形を取り出したかどうかを判定する（図４１、ステップＳ３５）。図４０のステップＳ２６、Ｓ２８、Ｓ３０、Ｓ３１、Ｓ３３で判定結果がＮｏのときは、直ちにステップＳ３５以降の処理に移る。ここで、残っている線分矩形があれば、図３８のステップＳ１３以降の処理を繰り返す。
【０１４５】
すべての線分矩形について処理が終われば、ｂ ｕｓｅ＝９であるかどうかを判定する（ステップＳ３６）。ここで、ｂ ｕｓｅ＝９でなければ、ｘｌｆ、ｘｒ、ｌｉｎｅ ｓｔａｒｔ、ｌｉｎｅ ｅｎｄを、それぞれ抽出した直線矩形の左端、右端、上端、下端の座標として保存し、直線数を１だけインクリメントする（ステップＳ３７）。
【０１４６】
ステップＳ３６でｂ ｕｓｅ＝９となるのは、カレント矩形ｉとそれに連結するすべての矩形がワイルドカードであった場合なので、この場合は直線として保存しない。
【０１４７】
次に、カレント矩形ｉとしてすべての線分矩形を取り出したかどうかを判定し（ステップＳ３８）、残っている線分矩形があれば、図３７のステップＳ６以降の処理を繰り返す。ステップＳ７でカレント矩形ｉのｕｓｅが０または９でない場合は、取り出した線分矩形が既に使用済みであることを意味するので、直ちにステップＳ３８の処理に移り、次の線分矩形を取り出す。そして、すべての線分矩形が取り出されると、処理を終了する。
【０１４８】
このようにして、ワイルドカードを飛び越して、その両側の横線分矩形を統合し、標準的な線分だけを含む横直線を抽出することができる。図２における縦線分統合処理Ｐ９も、同様のフローに従って行われる。
次に、図４２から図４７までを参照しながら、線分シフトによる直線のチェック／除去処理のフローを詳細に説明する。図４２、４３、４４、４５、４６、４７は、図２の処理Ｐ２３における横直線のチェック／除去処理のフローチャートである。この処理においては、罫線抽出装置は、各横直線の周囲の黒画素の分布を元にして、その直線が正しい罫線かどうかを判別し、正しい罫線のみを残して、他のものを除去する。
【０１４９】
処理が開始されると、罫線抽出装置は、まず、処理済の横直線数を表す変数ｃｎｔと、正しい罫線と判定された横直線数を表す変数ｎｅｗｃｏｕｎｔを、ともに０とおく（図４２、ステップＳ４１）。ただし、ｃｎｔとｎｅｗｃｏｕｎｔは、０を起点にしてカウントされる。
【０１５０】
次に、ｃｎｔ番目の横直線の属性が破線を表すかどうかを調べる（ステップＳ４２）。それが破線属性であれば、その横直線の直線情報をすべてｎｅｗｃｏｕｎｔ番目の罫線情報としてコピーし、ｃｎｔとｎｅｗｃｏｕｎｔを１ずつインクリメントして（ステップＳ４３）、ステップＳ４２で次の横直線の判定を行う。
【０１５１】
ｃｎｔ番目の横直線の属性が破線属性でなければ、それは実線に対応するものとみなし、その横直線矩形の高さをｈｅｉｇｈｔとおき（ステップＳ４４）、ｈｅｉｇｈｔが２以下かどうかを判定する（ステップＳ４５）。ｈｅｉｇｈｔが２より大きければ、その値を変更せず、ｈｅｉｇｈｔが２以下であれば、それを３に変更する（ステップＳ４６）。
【０１５２】
そして、ｐｏｓ＝ｈｅｉｇｈｔ、ｍａｘｓｕｍ＝０、ｔｏｐ ｂｏｕｎｄ＝０、ｂｏｔｔｏｍ ｂｏｕｎｄ＝０、ｓｈｉｆｔ＝−１＊ｈｅｉｇｈｔ、ｓｕｍ＝０、ｊ＝０とおく（ステップＳ４７）。変数ｐｏｓは、画像内での上下方向の位置を指定するために用いられ、変数ｍａｘｓｕｍは、黒画素総数のグラフにおける極大値を表す。
【０１５３】
また、変数ｔｏｐ ｂｏｕｎｄは、グラフの区間が画像の上端に達したかどうかを表すフラグとして用いられ、変数ｂｏｔｔｏｍ ｂｏｕｎｄは、グラフの区間が画像の下端に達したかどうかを表すフラグとして用いられる。変数ｓｈｉｆｔの値は、横直線内の線分矩形の上下方向のシフト量を表し、変数ｓｕｍは、複数の線分矩形内の黒画素の総数を表す。
【０１５４】
次に、ｃｎｔ番目の横直線内のｊ番目の小線分（線分矩形）の属性がワイルドカードかどうかを調べる（図４３、ステップＳ４８）。それがワイルドカード属性であれば、ｊを１だけインクリメントして（ステップＳ４９）、ステップＳ４８で次の小線分を判定する。
【０１５５】
ｊ番目の小線分の属性がワイルドカードでなければ、それは通常の線分矩形に対応するとみなし、ｘｍｉｎ＝ｊ番目の小線分の左端座標、ｘｍａｘ＝ｊ番目の小線分の右端座標、ｙｍｉｎ＝ｊ番目の小線分の上端座標＋ｓｈｉｆｔ、ｙｍａｘ＝ｊ番目の小線分の下端座標＋ｓｈｉｆｔとおく（ステップＳ５０）。ただし、こうして決められたｙｍｉｎまたはｙｍａｘの位置が画像座標内にない場合は、最も近い画像端のｙ座標をｙｍｉｎまたはｙｍａｘとする。
【０１５６】
そして、変数ｘｍｉｎ、ｘｍａｘ、ｙｍｉｎ、ｙｍａｘの各値で区切られる矩形領域内の黒画素の数を計算して、それをｂｌａｃｋ ｄｏｔとおき、ｓｕｍ＝ｓｕｍ＋ｂｌａｃｋ ｄｏｔとする。
【０１５７】
次に、ｙｍｉｎが画像の上端に対応するかどうかを判定し（ステップＳ５１）、上端であればｔｏｐ ｂｏｕｎｄ＝１とおく（ステップＳ５２）。また、ｙｍａｘが画像の下端に対応するかどうかを判定し（ステップＳ５３）、下端であればｂｏｔｔｏｍ ｂｏｕｎｄ＝１とおく（ステップＳ５４）。
【０１５８】
次に、変数ｊの値がｃｎｔ番目の横直線内の最後の小線分に対応するかどうかを判定する（ステップＳ５５）。それが最後の小線分に対応しなければ、ｊを１だけインクリメントして（ステップＳ５６）、ステップＳ４８以降の処理を繰り返す。それが最後の小線分に対応すれば、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］＝ｓｕｍとおく（図４４、ステップＳ５７）。
【０１５９】
ここで、ｈｉｓｔｏ［ｐ］は、ｙ方向の位置パラメータｐの値に対応するグラフの値（黒画素の総数）を表す。例えば、ｐｏｓ＝ｈｅｉｇｈｔ、ｓｈｉｆｔ＝−ｈｅｉｇｈｔの場合は、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］＝ｈｉｓｔｏ［０］となり、パラメータ値０の位置に対応するグラフの値を表す。
【０１６０】
次に、ｓｕｍとｍａｘｓｕｍを比較し（ステップＳ５８）、ｓｕｍがｍａｘｓｕｍより大きければ、ｍａｘｓｕｍ＝ｓｕｍとおく（ステップＳ５９）。
次に、ｓｈｉｆｔとｈｅｉｇｈｔを比較する（ステップＳ６０）。ｓｈｉｆｔがｈｅｉｇｈｔ以下であれば、ｓｈｉｆｔ＝ｓｈｉｆｔ＋１とおいて、ｓｕｍとｊを初期値０に戻し（ステップＳ６１）、ステップＳ４８以降の処理を繰り返す。これにより、シフト量が１画素分変化した位置に対応するグラフの値が計算される。
【０１６１】
そして、ｓｈｉｆｔの値がｈｅｉｇｈｔを越えると、次に、ｈｉｓｔｏ［ｐｏｓ−１］とｈｉｓｔｏ［ｐｏｓ］とを比較する（ステップＳ６２）。ここで、ｈｉｓｔｏ［ｐｏｓ］は、シフト量０の位置に対応するグラフの値を表す。ｈｉｓｔｏ［ｐｏｓ−１］がｈｉｓｔｏ［ｐｏｓ］より大きければ、次に、ｈｉｓｔｏ［ｐｏｓ−１］とｈｉｓｔｏ［ｐｏｓ＋１］とを比較する（ステップＳ６３）。
【０１６２】
そして、ｈｉｓｔｏ［ｐｏｓ−１］がｈｉｓｔｏ［ｐｏｓ＋１］より大きければ、ｍａｘｐｏｓ＝ｐｏｓ−１、ｍａｘｓｕｍ＝ｈｉｓｔｏ［ｐｏｓ−１］とおく（ステップＳ６４）。また、ｈｉｓｔｏ［ｐｏｓ−１］がｈｉｓｔｏ［ｐｏｓ＋１］以下であれば、ｍａｘｐｏｓ＝ｐｏｓ＋１、ｍａｘｓｕｍ＝ｈｉｓｔｏ［ｐｏｓ＋１］とおく（ステップＳ６５）。
【０１６３】
ステップＳ６２において、ｈｉｓｔｏ［ｐｏｓ−１］がｈｉｓｔｏ［ｐｏｓ］以下であれば、次に、ｈｉｓｔｏ［ｐｏｓ］とｈｉｓｔｏ［ｐｏｓ＋１］とを比較する（ステップＳ６６）。
【０１６４】
そして、ｈｉｓｔｏ［ｐｏｓ］がｈｉｓｔｏ［ｐｏｓ＋１］以上であれば、ｍａｘｐｏｓ＝ｐｏｓ、ｍａｘｓｕｍ＝ｈｉｓｔｏ［ｐｏｓ］とおく（ステップＳ６７）。また、ｈｉｓｔｏ［ｐｏｓ］がｈｉｓｔｏ［ｐｏｓ＋１］より小さければ、ｍａｘｐｏｓ＝ｐｏｓ＋１、ｍａｘｓｕｍ＝ｈｉｓｔｏ［ｐｏｓ＋１］とおく（ステップＳ６８）。
【０１６５】
このような処理により、ｈｉｓｔｏ［ｐｏｓ−１］、ｈｉｓｔｏ［ｐｏｓ］、およびｈｉｓｔｏ［ｐｏｓ＋１］のうちの最大値が、ｍａｘｓｕｍに設定され、それに対応するパラメータ値がｍａｘｐｏｓに設定される。したがって、このｍａｘｓｕｍは、シフト量０の位置付近におけるグラフの極大値を表し、図２４のＰｅａｋに対応する。
【０１６６】
次に、得られたｍａｘｓｕｍ（＝ｈｉｓｔｏ［ｍａｘｐｏｓ］）の値を用いて、次式により、しきい値ｔｈを計算する（図４５、ステップＳ６９）。
ｔｈ＝ｍａｘｓｕｍ＊ＴＨＳＨＩＦＴ                            （５）
ここで、パラメータＴＨＳＨＩＦＴは、極大値ｍａｘｓｕｍに対するしきい値ｔｈの比率を表し、０〜１．０の間で適当に設定される。
【０１６７】
そして、ｌｉｎｅｏｋｆｌａｇ１＝０、ｌｉｎｅｏｋｆｌａｇ２＝０、ｍｉｎｖａｌ＝０ｘｆｆｆｆ、ｓｈｉｆｔ＝−１＊ｈｅｉｇｈｔとおく。変数ｌｉｎｅｏｋｆｌａｇ１およびｌｉｎｅｏｋｆｌａｇ２は、極大値に対応する位置の上下両側におけるチェック結果を表すフラグとして用いられ、変数ｍｉｎｖａｌは、グラフの最小値を表す。
【０１６８】
次に、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とｔｈを比較する（ステップＳ７０）。そして、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］がｔｈより小さければ、極大値に対応する位置の上側では黒画素の数が減少しているとみなし、ｌｉｎｅｏｋｆｌａｇ１＝１とおく（ステップＳ７１）。したがって、ｌｉｎｅｏｋｆｌａｇ１＝１は、上側におけるチェック結果がＯＫであることを表す。
【０１６９】
次に、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とｍｉｎｖａｌを比較する（ステップＳ７２）。そして、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］がｍｉｎｖａｌより小さければ、ｍｉｎｖａｌ＝ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とおく（ステップＳ７３）。
【０１７０】
次に、（ｐｏｓ＋ｓｈｉｆｔ）とｍａｘｐｏｓを比較し（ステップＳ７４）、（ｐｏｓ＋ｓｈｉｆｔ）がｍａｘｐｏｓ以下であれば、ｓｈｉｆｔ＝ｓｈｉｆｔ＋１とおいて（ステップＳ７５）、ステップＳ７０以降の処理を繰り返す。これにより、シフト量が１画素分変化した位置で、再びグラフの値が調べられる。
【０１７１】
（ｐｏｓ＋ｓｈｉｆｔ）がｍａｘｐｏｓを越えれば、次に、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とｔｈを比較する（図４６、ステップＳ７６）。そして、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］がｔｈ以上であれば、次に、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とｍｉｎｖａｌを比較する（ステップＳ７７）。そして、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］がｍｉｎｖａｌより小さければ、ｍｉｎｖａｌ＝ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］とおく（ステップＳ７８）。
【０１７２】
次に、ｓｈｉｆｔとｈｅｉｇｈｔを比較し（ステップＳ７９）、ｓｈｉｆｔがｈｅｉｇｈｔ以下であれば、ｓｈｉｆｔ＝ｓｈｉｆｔ＋１とおいて（ステップＳ８０）、ステップＳ７６以降の処理を繰り返す。これにより、シフト量が１画素分変化した位置で、再びグラフの値が調べられる。
【０１７３】
ステップＳ７６において、ｈｉｓｔｏ［ｐｏｓ＋ｓｈｉｆｔ］がｔｈより小さければ、極大値に対応する位置の下側では黒画素の数が減少しているとみなし、ｌｉｎｅｏｋｆｌａｇ２＝１とおく（ステップＳ８１）。したがって、ｌｉｎｅｏｋｆｌａｇ２＝１は、下側におけるチェック結果がＯＫであることを表す。
【０１７４】
次に、ｌｉｎｅｏｋｆｌａｇ１とｔｏｐ ｂｏｕｎｄの値を調べる（図４７、ステップＳ８２）。そして、ｌｉｎｅｏｋｆｌａｇ１＝０かつｔｏｐ ｂｏｕｎｄ＝１であれば、対象とするｃｎｔ番目の横直線は画像の上端部付近の横罫線に対応するとみなして、ｌｉｎｅｏｋｆｌａｇ１＝１とおく（ステップＳ８３）。
【０１７５】
次に、ｌｉｎｅｏｋｆｌａｇ２とｂｏｔｔｏｍ ｂｏｕｎｄの値を調べる（ステップＳ８４）。そして、ｌｉｎｅｏｋｆｌａｇ２＝０かつｂｏｔｔｏｍ ｂｏｕｎｄ＝１であれば、ｃｎｔ番目の横直線は画像の下端部付近の横罫線に対応するとみなして、ｌｉｎｅｏｋｆｌａｇ２＝１とおく（ステップＳ８５）。
【０１７６】
次に、ｌｉｎｅｏｋｆｌａｇ１およびｌｉｎｅｏｋｆｌａｇ２の最終的な値を調べる（ステップＳ８６）。ｌｉｎｅｏｋｆｌａｇ１＝ｌｉｎｅｏｋｆｌａｇ２＝１であれば、ｃｎｔ番目の横直線は正しい横罫線であると判定し、その直線情報をｎｅｗｃｏｕｎｔ番目の罫線情報としてコピーし、ｎｅｗｃｏｕｎｔを１だけインクリメントする（ステップＳ８７）。
【０１７７】
また、ｌｉｎｅｏｋｆｌａｇ１＝０またはｌｉｎｅｏｋｆｌａｇ２＝０であれば、ｃｎｔ番目の横直線は正しい横罫線ではないと判定し、その直線情報は罫線情報として保存しない。
【０１７８】
次に、ｃｎｔが画像内の最後の横直線に対応するかどうかを調べ（ステップＳ８８）、まだ横直線が残っていれば、ｃｎｔを１だけインクリメントして（ステップＳ８９）、次の横直線についてステップＳ４２以降の処理を繰り返す。そして、ｃｎｔが最後の横直線に対応する値になれば、処理を終了する。
【０１７９】
このような処理を行えば、直線上の黒画素数とその周囲の黒画素数との比較に基づいて罫線らしさがチェックされるので、網掛け部分や潰れた文字列等から誤って抽出された直線が効率よく除去される。縦方向の直線についても、同様のチェック／除去処理が行われる。
【０１８０】
以上説明したように、本実施形態によれば、画像のかすれの有無にかかわらず、実線と点線の混在する表の画像であっても、また、網掛け部分や、文字と罫線が接触した部分があっても、正確に罫線を抽出することが可能になる。
【０１８１】
本発明の罫線抽出技術は、電子ファイリングだけでなく、記号や文字を含む広い意味での図形と直線が重なったパターンから、その図形だけを切り出す技術に適用される。例えば、手書き文字認識装置、印刷文字認識装置、図面認識における文字、記号等のパターンの切り出し、および画像中の罫線と物体、図形、文字等の接触部分の分離に適用可能である。
【０１８２】
また、直線や線分を表す領域の形状は必ずしも矩形でなくてもよく、直線または曲線により囲まれた任意の形状の領域を用いることができる。この場合、用いる形状に応じて、直線や線分の位置、高さ、および幅、それらの間の距離等を適当に定義すれば、図２と同様の処理を行うことができる。
【０１８３】
【発明の効果】
本発明によれば、あらかじめ罫線構造が予測できない一般の文書画像から、罫線部分を正しく抽出することができる。
【０１８４】
例えば、表の中に網掛け部分がある場合でも、その画像から正しく罫線を抽出することが可能となる。また、文字と罫線が接触している場合で、表の構造情報があらかじめ分かっていなくても、正しく罫線を抽出することが可能である。さらに、文字列が潰れ気味に印刷されている場合、または文字同士が高密度に印刷されている場合でも、文字列上から誤って罫線を抽出する確率が低くなる。
【図面の簡単な説明】
【図１】本発明の罫線抽出装置の原理図である。
【図２】罫線抽出装置の機能ブロック図である。
【図３】情報処理装置の構成図である。
【図４】データ構造を示す図である。
【図５】ラベリング処理を示す図である。
【図６】高さのヒストグラムを示す図である。
【図７】高さの最頻値を求めるためのヒストグラムを示す図である。
【図８】矩形高さテーブルを示す図である。
【図９】矩形高さテーブルの内容に対応するヒストグラムを示す図である。
【図１０】マスク処理を示す図である。
【図１１】線分検出処理を示す図である。
【図１２】第１の線分統合処理を示す図である。
【図１３】第２の線分統合処理を示す図である。
【図１４】直線探索処理を示す図である。
【図１５】完全重複直線の統合処理を示す図である。
【図１６】第１の直線除去処理を示す図である。
【図１７】第２の直線除去処理を示す図である。
【図１８】除去すべきではない直線を示す図である。
【図１９】第３の直線除去処理を示す図である。
【図２０】部分重複直線の統合処理を示す図である。
【図２１】部分重複直線の内部を示す図である。
【図２２】第４の直線除去処理を示す図である。
【図２３】２本の直線間の距離値の求め方を示す図である。
【図２４】第５の直線除去処理を示す図である。
【図２５】横線分の統合処理後の画像を示す図である。
【図２６】完全重複直線の統合処理前の画像を示す図である。
【図２７】完全重複直線の統合処理後の画像を示す図である。
【図２８】直線の形、位置と縦横直線の接続関係による除去処理後の画像を示す図である。
【図２９】部分重複直線の統合処理前の画像を示す図である。
【図３０】部分重複直線の統合処理後の画像を示す図である。
【図３１】ほぼ完全に重複する直線の除去処理前の画像を示す図である。
【図３２】ほぼ完全に重複する直線の除去処理後の画像を示す図である。
【図３３】大きな線分だけからなる直線の除去処理前の画像を示す図である。
【図３４】大きな線分だけからなる直線の除去処理後の画像を示す図である。
【図３５】線分シフトによる直線チェック／除去処理前の画像を示す図である。
【図３６】線分シフトによる直線チェック／除去処理後の画像を示す図である。
【図３７】線分統合処理のフローチャート（その１）である。
【図３８】線分統合処理のフローチャート（その２）である。
【図３９】線分統合処理のフローチャート（その３）である。
【図４０】線分統合処理のフローチャート（その４）である。
【図４１】線分統合処理のフローチャート（その５）である。
【図４２】直線のチェック／除去処理のフローチャート（その１）である。
【図４３】直線のチェック／除去処理のフローチャート（その２）である。
【図４４】直線のチェック／除去処理のフローチャート（その３）である。
【図４５】直線のチェック／除去処理のフローチャート（その４）である。
【図４６】直線のチェック／除去処理のフローチャート（その５）である。
【図４７】直線のチェック／除去処理のフローチャート（その６）である。
【図４８】単純な表形式枠を示す図である。
【図４９】複雑な表形式枠を示す図である。
【図５０】罫線抽出の困難な表形式枠を示す図である。
【符号の説明】
１  推定手段
２  格納手段
３  線分抽出手段
４  計算手段
５  直線抽出手段
６  グラフ生成手段
７  直線処理手段
８  直線統合手段
９  直線除去手段
１１  入力パターン
１２  縮小処理部
１３  連結パターン抽出部
１４  マスク処理部
１５  横直線抽出部
１６  縦直線抽出部
３１  ＣＰＵ
３２  メモリ
３３  入力装置
３４  出力装置
３５  外部記憶装置
３６  媒体駆動装置
３７  ネットワーク接続装置
３８  光電変換装置
３９  バス
４０  可搬記録媒体
４０′  データベース
４１  画像情報
４２  表情報
４３  セル情報
４４  直線情報
４５  線分情報
５１、５２、５３、５４、５５、５６、５７、５８  パターン
６１  ワイルドカード
６２、６３、６４、６５、６６、６７、６８、６９、７０、７１、７２、７３、７６、７９、８０、８１、８２、８３、８４、８５、８６、８７、８８、８９、９０、９１、９２、９３、１０１、１０２、１０３、１０４、１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２、１１３、１２１、１２２、１２３、１２４、１２５、１２６、１３１、１４１、１５１、１５２、１５３直線矩形
７４、７５、７７、７８  端点
９４、９５  線分矩形
９６、９７  グラフ
【図１】
0003565310.tif 000002
【図２】
0003565310.tif 000003
【図３】
0003565310.tif 000004
【図４】
0003565310.tif 000005
【図５】
0003565310.tif 000006
【図６】
0003565310.tif 000007
【図７】
0003565310.tif 000008
【図８】
0003565310.tif 000009
【図９】
0003565310.tif 000010
【図１０】
0003565310.tif 000011
【図１１】
0003565310.tif 000012
【図１２】
0003565310.tif 000013
【図１３】
0003565310.tif 000014
【図１４】
0003565310.tif 000015
【図１５】
0003565310.tif 000016
【図１６】
0003565310.tif 000017
【図１７】
0003565310.tif 000018
【図１８】
0003565310.tif 000019
【図１９】
0003565310.tif 000020
【図２０】
0003565310.tif 000021
【図２１】
0003565310.tif 000022
【図２２】
0003565310.tif 000023
【図２３】
0003565310.tif 000024
【図２４】
0003565310.tif 000025
【図２５】
0003565310.tif 000026
【図２６】
0003565310.tif 000027
【図２７】
0003565310.tif 000028
【図２８】
0003565310.tif 000029
【図２９】
0003565310.tif 000030
【図３０】
0003565310.tif 000031
【図３１】
0003565310.tif 000032
【図３２】
0003565310.tif 000033
【図３３】
0003565310.tif 000034
【図３４】
0003565310.tif 000035
【図３５】
0003565310.tif 000036
【図３６】
0003565310.tif 000037
【図３７】
0003565310.tif 000038
【図３８】
0003565310.tif 000039
【図３９】
0003565310.tif 000040
【図４０】
0003565310.tif 000041
【図４１】
0003565310.tif 000042
【図４２】
0003565310.tif 000043
【図４３】
0003565310.tif 000044
【図４４】
0003565310.tif 000045
【図４５】
0003565310.tif 000046
【図４６】
0003565310.tif 000047
【図４７】
0003565310.tif 000048
【図４８】
0003565310.tif 000049
【図４９】
0003565310.tif 000050
【図５０】
0003565310.tif 000051