首页 / 专利库 / 软件 / 通配符 / Device and method for ruled-line for extracting ruled line from general document image

Device and method for ruled-line for extracting ruled line from general document image

阅读:717发布:2021-05-27

专利汇可以提供Device and method for ruled-line for extracting ruled line from general document image专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To correctly extract a ruled line from a general document image whose ruled-line structure can not be predicted in advance.
SOLUTION: A threshold is set according to the size of a specified standard pattern and a straight-line pattern is extracted. A ruled-line extracting device finds the circumscribed rectangle of a pixel connection area in an input pattern and calculates its height of the highest frequency (P1). Segments are integrated (P4, P9) while wild-card segments are ignored and the height and width of an extracted straight line and the most frequent values of the height and width of the segments constituting the straight line are calculated (P12 to P15). Those most frequent values and various thresholds are used to perform integrating and removing processes for the straight line (P16 to P21), the black pixel distribution of the circumference of the straight line is checked and removed (P22, P23), and the left straight line is decided as a ruled-line candidate (P24).
COPYRIGHT: (C)1998,JPO,下面是Device and method for ruled-line for extracting ruled line from general document image专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 入力画像に含まれる標準パターンの大きさを推定する推定手段と、 前記標準パターンの大きさの情報に基づいてしきい値を設定し、該しきい値を用いて、前記入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項2】 前記推定手段は、前記入力画像に含まれる文字パターンの大きさを前記標準パターンの大きさとして推定することを特徴とする請求項1記載の罫線抽出装置。
  • 【請求項3】 前記推定手段は、前記入力画像に含まれる画素連結領域の大きさのヒストグラムから、前記標準パターンの大きさを推定することを特徴とする請求項1
    記載の罫線抽出装置。
  • 【請求項4】 前記直線抽出手段は、前記1つ以上の直線パターンのうちの1つの形に関する情報と、該1つ以上の直線パターンに含まれる2つの直線パターンの間の距離に関する情報のうち、少なくとも一方の情報と、前記しきい値とを用いて、該1つ以上の直線パターンのうちの1つを除去するかどうかを判定する直線除去手段をさらに備えることを特徴とする請求項1記載の罫線抽出装置。
  • 【請求項5】 前記直線抽出手段は、前記1つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係と前記しきい値に基づき、該横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定する直線除去手段をさらに備えることを特徴とする請求項1記載の罫線抽出装置。
  • 【請求項6】 前記直線抽出手段は、前記しきい値を用いて、前記1つ以上の直線パターンに含まれ、ほとんど重複する2つの直線パターンのうちの、短い方を除去するかどうかを判定する直線除去手段をさらに備えることを特徴とする請求項1記載の罫線抽出装置。
  • 【請求項7】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンの大きさの代表値を求める計算手段と、 前記代表値に基づいてしきい値を設定し、該しきい値を用いて、前記1つ以上の直線パターンの情報を処理する直線処理手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項8】 前記計算手段は、前記1つ以上の直線パターンに含まれる横直線パターンの高さのヒストグラムと縦直線パターンの幅のヒストグラムのうちの1つから、前記代表値を求めることを特徴とする請求項7記載の罫線抽出装置。
  • 【請求項9】 前記直線処理手段は、前記1つ以上の直線パターンのうち部分的に重複する2つの直線パターンを統合してできる直線パターンの大きさが、前記代表値程度になる場合に、統合後の直線パターンを罫線候補とする直線統合手段を備えることを特徴とする請求項7記載の罫線抽出装置。
  • 【請求項10】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンを構成する1つ以上の線分パターンの大きさの代表値を求める計算手段と、 前記代表値に基づいてしきい値を設定し、該しきい値を用いて、前記1つ以上の直線パターンの情報を処理する直線処理手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項11】 前記計算手段は、前記1つ以上の線分パターンに含まれる横線分パターンの高さのヒストグラムと縦直線パターンの幅のヒストグラムのうちの1つから、前記代表値を求めることを特徴とする請求項10記載の罫線抽出装置。
  • 【請求項12】 前記直線処理手段は、前記1つ以上の直線パターンのうち、前記しきい値より大きな線分パターンだけで構成されている直線パターンを除去する直線除去手段を備えることを特徴とする請求項10記載の罫線抽出装置。
  • 【請求項13】 入力画像から1つ以上の線分パターンの情報を抽出する線分抽出手段と、 前記1つ以上の線分パターンの情報を、大きな線分パターンの情報と小さな線分パターンの情報とに区別して格納する格納手段と、 前記1つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出する直線抽出手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項14】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンに含まれる2つの直線パターンがほとんど重複する場合に、該2つの直線パターンを1つに統合する直線統合手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項15】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンのうちの1つの形に関する情報と、該1つ以上の直線パターンに含まれる2つの直線パターンの間の距離に関する情報のうち、少なくとも一方の情報を用いて、該1つ以上の直線パターンのうちの1つを除去するかどうかを判定する直線除去手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項16】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係に基づき、該横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定する直線除去手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項17】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンに含まれ、ほとんど重複する2つの直線パターンのうちの、短い方を除去する直線除去手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項18】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンのうち部分的に重複する2
    つの直線パターンを統合してできる直線パターンの大きさが所定値程度になる場合に、統合後の直線パターンを罫線候補とする直線統合手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項19】 入力画像から1つ以上の直線パターンの情報を抽出する直線抽出手段と、 前記1つ以上の直線パターンのうち、しきい値より大きな線分パターンだけで構成されている直線パターンを除去する直線除去手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項20】 入力画像から直線パターンの情報を抽出する直線抽出手段と、 前記直線パターンを構成する1つ以上の線分パターンのうち、標準的な大きさの線分パターンの内部の画素数を求めて、該直線パターンの周囲における画素数のグラフを生成するグラフ生成手段と、 前記グラフの形状に基づいて、前記直線パターンを除去するかどうかを判定する直線除去手段とを備えることを特徴とする罫線抽出装置。
  • 【請求項21】 前記1つ以上の線分パターンのうちの大きな線分パターンの情報にマークを付けて、該1つ以上の線分パターンの情報を格納する格納手段をさらに備え、前記グラフ生成手段は、前記1つ以上の線分パターンのうちマークが付いていない線分パターンを、前記標準的な大きさの線分パターンとみなすことを特徴とする請求項20記載の罫線抽出装置。
  • 【請求項22】 前記グラフ生成手段は、前記標準的な大きさの線分パターンを前記直線パターンの長さ方向と垂直にシフトさせて、シフト量と画素数との関係を表す前記グラフを生成し、前記直線除去手段は、該グラフの形状がなだらかな場合に該直線パターンを除去することを特徴とする請求項20記載の罫線抽出装置。
  • 【請求項23】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像に含まれる標準パターンの大きさを推定する機能と、 前記標準パターンの大きさの情報に基づいてしきい値を設定する機能と、前記しきい値を用いて、前記入力画像から1つ以上の直線パターンの情報を抽出する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項24】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンの大きさの代表値を求める機能と、 前記代表値に基づいてしきい値を設定する機能と、 前記しきい値を用いて、前記1つ以上の直線パターンの情報を処理する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項25】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンを構成する1つ以上の線分パターンの大きさの代表値を求める機能と、 前記代表値に基づいてしきい値を設定する機能と、 前記しきい値を用いて、前記1つ以上の直線パターンの情報を処理する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項26】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の線分パターンの情報を抽出する機能と、 前記1つ以上の線分パターンの情報を、大きな線分パターンの情報と小さな線分パターンの情報とに区別する機能と、 前記1つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項27】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンに含まれる2つの直線パターンがほとんど重複する場合に、該2つの直線パターンを1つに統合する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項28】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンのうちの1つの形に関する情報と、該1つ以上の直線パターンに含まれる2つの直線パターンの間の距離に関する情報のうち、少なくとも一方の情報を用いて、該1つ以上の直線パターンのうちの1つを除去するかどうかを判定する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項29】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係に基づき、該横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項30】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンに含まれ、ほとんど重複する2つの直線パターンのうちの、短い方を除去する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項31】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンのうち部分的に重複する2
    つの直線パターンを統合してできる直線パターンの大きさが所定値程度になる場合に、統合後の直線パターンを罫線候補とする機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項32】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から1つ以上の直線パターンの情報を抽出する機能と、 前記1つ以上の直線パターンのうち、しきい値より大きな線分パターンだけで構成されている直線パターンを除去する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項33】 コンピュータのためのプログラムを記録した記録媒体であって、 入力画像から直線パターンの情報を抽出する機能と、 前記直線パターンを構成する1つ以上の線分パターンのうち、標準的な大きさの線分パターンの内部の画素数を求めて、該直線パターンの周囲における画素数のグラフを生成する機能と、 前記グラフの形状に基づいて、前記直線パターンを除去するかどうかを判定する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  • 【請求項34】 入力画像に含まれる標準パターンの大きさを推定し、 前記標準パターンの大きさの情報に基づいてしきい値を設定し、 前記しきい値を用いて、前記入力画像から1つ以上の直線パターンの情報を抽出することを特徴とする罫線抽出方法。
  • 【請求項35】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンの大きさの代表値を求め、 前記代表値に基づいてしきい値を設定し、 前記しきい値を用いて、前記1つ以上の直線パターンの情報を処理することを特徴とする罫線抽出方法。
  • 【請求項36】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンを構成する1つ以上の線分パターンの大きさの代表値を求め、 前記代表値に基づいてしきい値を設定し、 前記しきい値を用いて、前記1つ以上の直線パターンの情報を処理することを特徴とする罫線抽出方法。
  • 【請求項37】 入力画像から1つ以上の線分パターンの情報を抽出し、 前記1つ以上の線分パターンの情報を、大きな線分パターンの情報と小さな線分パターンの情報とに区別し、 前記1つ以上の線分パターンの接続状態を調べ、途中に前記大きな線分パターンが存在するとき、該大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出することを特徴とする罫線抽出方法。
  • 【請求項38】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンに含まれる2つの直線パターンがほとんど重複する場合に、該2つの直線パターンを1つに統合することを特徴とする罫線抽出方法。
  • 【請求項39】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンのうちの1つの形に関する情報と、該1つ以上の直線パターンに含まれる2つの直線パターンの間の距離に関する情報のうち、少なくとも一方の情報を用いて、該1つ以上の直線パターンのうちの1つを除去するかどうかを判定することを特徴とする罫線抽出方法。
  • 【請求項40】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係に基づき、該横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定することを特徴とする罫線抽出方法。
  • 【請求項41】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンに含まれ、ほとんど重複する2つの直線パターンのうちの、短い方を除去することを特徴とする罫線抽出方法。
  • 【請求項42】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンのうち部分的に重複する2
    つの直線パターンを統合してできる直線パターンの大きさが所定値程度になる場合に、統合後の直線パターンを罫線候補とすることを特徴とする罫線抽出方法。
  • 【請求項43】 入力画像から1つ以上の直線パターンの情報を抽出し、 前記1つ以上の直線パターンのうち、しきい値より大きな線分パターンだけで構成されている直線パターンを除去することを特徴とする罫線抽出方法。
  • 【請求項44】 入力画像から直線パターンの情報を抽出し、 前記直線パターンを構成する1つ以上の線分パターンのうち、標準的な大きさの線分パターンの内部の画素数を求めて、該直線パターンの周囲における画素数のグラフを生成し、 前記グラフの形状に基づいて、前記直線パターンを除去するかどうかを判定することを特徴とする罫線抽出方法。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【発明の属する技術分野】本発明は、光電変換装置等により読み込まれた任意の文書画像から罫線部分を抽出する罫線抽出装置および方法に関する。

    【0002】

    【従来の技術】近年、オフィス作業の効率化のために、
    紙文書を電子化して光ディスク等に保存する電子ファイリングシステムの需要が増加している。 従来の電子ファイリングシステムにおいては、紙文書がイメージスキャナ等の光電変換装置で画像に変換され、それに検索のためのキーワードが付与されて、光ディスクやハードディスクに保存される。 しかし、これらのキーワード等はキー入する必要があり、その入力作業が煩雑であった。

    【0003】この不便さを解消するための、本出願人による先願の技術として、「文書画像からのタイトル抽出装置および方法」(特願平07−341983)がある。 この方法によれば、画像に含まれる文書タイトルが、キーワードとして自動的に抽出/登録される。 また、表形式文書を含む様々な文書の画像から、タイトル、宛先、発信元情報等の管理情報を自動抽出することができ、例えば、表外にあるタイトルは、約90%の精度で抽出できることが分かっている。

    【0004】しかし、表内のタイトルについては抽出精度が約55%に過ぎず、実用化するには精度が不十分である。 表内のタイトル等のキーワードを高精度で抽出するには、表を構成する罫線を正確に抽出する必要がある。 罫線抽出技術は、主として、文字等が規則的に並んでいる帳票を対象に開発されてきた。

    【0005】従来の罫線抽出技術としては、「画像抽出方式」(特開平6−309498)と「画像抽出装置」
    (特開平7−28937)がある。 これらの技術によれば、帳票内の枠の位置等の情報入力を必要とせずに、枠の抽出や除去を行うことが可能である。 処理可能な帳票は、一文字枠、ブロック枠(横一行枠またはフリーフォーマット枠)、または枠の外形が矩形状になっており横枠線が規則的に配置されている構造を持つ表を有するものである。

    【0006】また、本出願人による先願の罫線抽出技術としては、「枠抽出装置及び矩形抽出装置」(特願平7
    −203259)、「パターン領域切り出し方式及びパターン抽出装置」(特願平7−282171)、および「パターン抽出装置及びパターン領域の切り出し方法」
    (特願平8−107568)がある。

    【0007】これらの技術によれば、図48に示すように枠の外形が矩形であっても、また、図49に示すように枠の外形が矩形でなくても、枠の抽出および除去を行うことができる。 さらに、図49の網掛け部分のように、枠で囲まれた矩形の中にさらに細かい構造を持つ表形式枠についても、枠の抽出および除去を行うことが可能である。 以下に、処理の概要を示す。

    【0008】(1)細線化:マスク処理によって、縦横の線分を細線化し、文字と枠の太さの差をなくす。 (2)線分抽出:「画像抽出方式」(特開平6−309
    498)における隣接投影法を用いて、比較的長い直線の抽出を行う。 隣接投影とは、注目する行または列に含まれる画素の投影値に、その周囲の行または列の投影値を足し合せた結果を、注目する行または列の最終的な投影値とする方法である。 この投影法によれば、特定の行または列の周囲の画素分布を大局的に捉えることができる。

    【0009】(3)直線抽出:抽出された線分を順に探索し、線分と線分の間に一定長さ以上の途切れがないかどうかを検査する。 間にそのような途切れがない線分同士を順に統合していき、長い直線を抽出する。

    【0010】(4)直線統合:抽出された直線同士を再度統合する。 かすれにより2つ以上の部分に分離された直線を、1つの直線に統合する。 (5)直線伸張:規則的な帳票であると分かっているときに限り、かすれにより短くなった直線の伸張処理を行い、本来の長さに修復する。

    【0011】

    【発明が解決しようとする課題】しかしながら、上述した罫線抽出技術には次のような問題がある。 先願の技術において、帳票の枠の形状に関しては、規則的な構造であっても不規則な構造であっても、矩形領域で構成されている表形式枠であれば、処理可能である。 また、対象としていた罫線は、実線、点線の場合とも、かすれのあるなしに関わらず処理可能である。 また、規則的な表であると分かっている場合にのみ、極度のかすれにより短くなった直線を伸ばす処理を行っている。

    【0012】しかし、一般的な入力画像には、図50に示すように、文字が太いフォントで記載されていたり、
    表内に網掛け部分があったりするものも含まれる。 このような場合、文字同士が接触して潰れた文字列上から誤って罫線が抽出され、正しい罫線と誤抽出された罫線が誤って統合されることがある。

    【0013】また、網掛けの部分のような黒画素の固まりに接触した罫線や、文字に接触している罫線は、抽出することができない。 こうした不具合をなくすためには、あらかじめ罫線構造が分かっている帳票のような表形式文書のみを、処理対象とすることが望ましい。

    【0014】しかし、電子ファイリングで扱われる一般文書にはどのような形式の表が含まれるか、あらかじめ分かっておらず、潰れた文字等を含む様々な画像が入力される可能性が高い。 したがって、先願の技術のままでは、必ずしも正しい罫線抽出ができないという問題がある。

    【0015】本発明の課題は、あらかじめ罫線構造が予測できない一般の文書画像から、罫線部分を正しく抽出することのできる罫線抽出装置および方法を提供することである。

    【0016】

    【課題を解決するための手段】図1は、本発明の罫線抽出装置の原理図である。 図1の罫線抽出装置は、本発明の第1、第2、第3、第4、第5、第6、第7、第8、
    第9、第10、および第11の原理を含み、推定手段1、格納手段2、線分抽出手段3、計算手段4、直線抽出手段5、グラフ生成手段6、直線処理手段7、直線統合手段8、および直線除去手段9を備える。

    【0017】第1の原理において、推定手段1は、入力画像に含まれる標準パターンの大きさを推定する。 直線抽出手段5は、上記標準パターンの大きさの情報に基づいてしきい値を設定し、そのしきい値を用いて、上記入力画像から1つ以上の直線パターンの情報を抽出する。

    【0018】標準パターンとは、入力画像に最も多く含まれる標準的な大きさの文字等のパターンに相当する。
    この標準パターンとしては、例えば、文字を表す画素連結領域が用いられ、その大きさの情報としては、例えば、その領域の外接矩形の高さまたは幅が用いられる。

    【0019】また、直線パターンとは、横長または縦長のマスクを用いたマスク処理および線分統合処理により、入力画像から抽出された横長または縦長のパターンに相当する。 直線パターンの情報としては、例えば、そのパターンを構成する複数の線分パターンの外接矩形の座標値等が含まれる。 線分パターンとは、マスク処理により画像から切り取られた線分状の画素領域に相当する。

    【0020】直線抽出手段5は、標準パターンの大きさに基づいて各種しきい値を決定し、画像中の直線パターンをそれらのしきい値によって分別する。 これにより、
    網掛け部分や接触文字等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。

    【0021】第2の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 計算手段4は、上記1つ以上の直線パターンの大きさの代表値を求める。 直線処理手段7は、上記代表値に基づいてしきい値を設定し、そのしきい値を用いて、上記1つ以上の直線パターンの情報を処理する。

    【0022】計算手段4は、例えば、複数の直線パターンの高さまたは幅のヒストグラムから、直線パターンの代表的な大きさを求める。 直線処理手段7は、この代表値付近にしきい値を設定し、それ以上の大きさの直線パターンを罫線候補から除外する等の処理を行って、正しい罫線候補を抽出することができる。

    【0023】第3の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 計算手段4は、上記1つ以上の直線パターンを構成する1つ以上の線分パターンの大きさの代表値を求める。 直線処理手段7は、上記代表値に基づいてしきい値を設定し、そのしきい値を用いて、上記1つ以上の直線パターンの情報を処理する。

    【0024】線分パターンは、上述したように、マスク処理により画像から切り取られた線分状の画素領域に相当する。 計算手段4は、例えば、複数の線分パターンの高さまたは幅のヒストグラムから、線分パターンの代表的な大きさを求める。 直線処理手段7は、この代表値に基づくしきい値より大きい線分パターンのみから構成される直線パターンを罫線候補から除外する等の処理を行って、正しい罫線候補を抽出することができる。

    【0025】第4の原理において、線分抽出手段3は、
    入力画像から1つ以上の線分パターンの情報を抽出する。 格納手段2は、上記1つ以上の線分パターンの情報を、大きな線分パターンの情報と小さな線分パターンの情報とに区別して格納する。 直線抽出手段5は、上記1
    つ以上の線分パターンの接続状態を調べ、途中に上記大きな線分パターンが存在するとき、その大きな線分パターンの大きさに関わらず、他の複数の線分パターンが構成する直線パターンを抽出する。

    【0026】線分パターンの情報としては、例えば、その外接矩形の座標値等が含まれる。 格納手段2は、例えば、適当なしきい値より大きな線分パターンの情報に特定の属性情報を付加し、それ以外の小さな線分パターンの情報と区別して格納する。 直線抽出手段5は、例えば、互いに重複する複数の線分パターンを統合して、それらの外接矩形を直線パターンとして抽出する際に、大きな線分パターンを無視して、その両側の小さな線分パターン同士を適当に接続する処理を行う。

    【0027】これにより、網掛け部分や文字等の大きな画素領域に接触した罫線の画像から、その領域の大きさに影響されない直線パターンを、正しい罫線候補として抽出することができる。

    【0028】第5の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 直線統合手段8は、上記1つ以上の直線パターンに含まれる2つの直線パターンがほとんど重複する場合に、それらの2つの直線パターンを1つに統合する。

    【0029】直線統合手段8が、ほとんど重複する2つの直線パターンを統合することで、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。 第6の原理において、直線抽出手段5は、入力画像から1つ以上の直線パターンの情報を抽出する。 直線除去手段9
    は、上記1つ以上の直線パターンのうちの1つの形に関する情報と、それらの1つ以上の直線パターンに含まれる2つの直線パターンの間の距離に関する情報のうち、
    少なくとも一方の情報を用いて、それらの1つ以上の直線パターンのうちの1つを除去するかどうかを判定する。

    【0030】直線除去手段9が、例えば、直線パターンの縦横比や隣の直線パターンまでの距離に基づいて、その直線パターンの罫線らしさを判定し、罫線らしくない直線パターンを除去する。 これにより、網掛け部分や潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。

    【0031】第7の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 直線除去手段9は、上記1つ以上の直線パターンに含まれる横直線パターンと縦直線パターンの接続関係に基づき、それらの横直線パターンと縦直線パターンのうちの一方を除去するかどうかを判定する。

    【0032】直線除去手段9が、例えば、いずれの横直線パターンとも接触しない縦直線パターンや、いずれの縦直線パターンとも接触しない横直線パターンを、罫線候補から除外する。 これにより、潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。

    【0033】第8の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 直線除去手段9は、上記1つ以上の直線パターンに含まれ、ほとんど重複する2つの直線パターンのうちの、短い方を除去する。

    【0034】直線除去手段9が、ほとんど重複する2つの直線パターンのうち短い方を除去することで、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。

    【0035】第9の原理において、直線抽出手段5は、
    入力画像から1つ以上の直線パターンの情報を抽出する。 直線統合手段8は、上記1つ以上の直線パターンのうち部分的に重複する2つの直線パターンを統合してできる直線パターンの大きさが所定値程度になる場合に、
    統合後の直線パターンを罫線候補とする。

    【0036】直線統合手段8は、例えば、2つの直線パターンを統合してできる直線パターンの太さが直線パターンの代表的な太さ程度であれば、その統合処理を実行する。 これにより、冗長な直線情報を削減し、正しい罫線候補を抽出することができる。

    【0037】第10の原理において、直線抽出手段5
    は、入力画像から1つ以上の直線パターンの情報を抽出する。 直線除去手段9は、上記1つ以上の直線パターンのうち、しきい値より大きな線分パターンだけで構成されている直線パターンを除去する。

    【0038】直線除去手段9は、例えば、線分パターンの代表的な太さに比べてかなり太い線分パターンだけから構成される直線パターンを、罫線候補から除外する。
    これにより、潰れた文字列等に由来する直線パターンを罫線候補から除外し、正しい罫線候補を抽出することができる。

    【0039】第11の原理において、直線抽出手段5
    は、入力画像から直線パターンの情報を抽出する。 グラフ生成手段6は、上記直線パターンを構成する1つ以上の線分パターンのうち、標準的な大きさの線分パターンの内部の画素数を求めて、その直線パターンの周囲における画素数のグラフを生成する。 直線除去手段9は、上記グラフの形状に基づいて、上記直線パターンを除去するかどうかを判定する。

    【0040】グラフ生成手段6は、例えば、直線パターンを構成する線分パターンの集合から大きな線分パターンを除いて、標準的な大きさの線分パターンの集合を生成する。 そして、それらを直線パターンの周囲の領域にシフトさせて、シフト量と画素数との関係を表すグラフを生成する。 また、直線除去手段9は、例えば、そのグラフの形状がなだらかで極大値がはっきりしない場合に、直線パターンを罫線候補から除外する。

    【0041】網掛け部分や潰れた文字列等の内部より抽出された直線パターンの場合、その周囲に画素がまんべんなく分布していることが多い。 このような場合に、グラフの形状がなだらかとなり、その直線パターンが罫線候補から除外されるので、正しい罫線候補を抽出することができる。

    【0042】例えば、図1の格納手段2は、後述する図3におけるメモリ32に対応し、推定手段1、線分抽出手段3、計算手段4、直線抽出手段5、グラフ生成手段6、直線処理手段7、直線統合手段8、および直線除去手段9は、CPU(中央処理装置)31およびメモリ3
    2に対応する。

    【0043】

    【発明の実施の形態】以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。 現在、表内のタイトル等のキーワードを高精度に自動抽出するために、表形式文書のフォーム学習システムが開発されつつある。 このシステムでは、あらかじめ表を含む文書を登録しておいて、登録文書については後で高い精度で正しいキーワードを抽出することが可能になる。 本発明は、表形式文書のフォーム学習時において、文書画像から罫線を正しく抽出するために用いることができる。

    【0044】本発明では、従来および先願の帳票用の罫線抽出技術を改良し、罫線を構成する小線分の情報を活用して、本来の罫線から抽出された直線と文字列上から誤抽出された直線とを区別する。 これにより、文字が罫線に接触している場合でも、正しく罫線を抽出することができる。

    【0045】また、表内の潰れ部分から抽出された線分があっても、本来の罫線から抽出された線分のみに注目して、罫線候補を求める。 そして、罫線の形状、位置関係、罫線内部の線分の黒画素の分布状況から、正しい罫線だけを抽出する。

    【0046】以下の実施形態においては、サイズや位置や傾きが分からない枠が単数または複数個あり、それらの枠に対して、枠に接触した文字、枠からはみ出した文字を含む多様な文字が書かれているような文書を対象とする。 そして、そのような文書の画像から枠を抽出する場合を考える。

    【0047】図2は、実施形態の罫線抽出装置の機能ブロック図である。 図2において、対象となる入力パターン11は、極端な傾きや回転を補正した後の2値画像である。 また、網掛けされた処理ブロックが、主として、
    「パターン抽出装置及びパターン領域の切り出し方法」
    (特願平8−107568)等の先願とは異なる処理を表す。

    【0048】まず、縮小処理部12が画像を縮小し、連結パターン抽出部13が連結パターンを抽出した後、罫線抽出装置は矩形高さの最頻値を計算し(処理P1)、
    マスク処理部14が細線化を行う。

    【0049】次に、横直線抽出部15が、横隣接投影(処理P2)、横線分検出(処理P3)、横線分統合(処理P4)、および横直線探索(処理P5)を行った後、罫線抽出装置は横点線検出(処理P6)を行う。 次に、縦直線抽出部16が、縦隣接投影(処理P7)、縦線分検出(処理P8)、縦線分統合(処理P9)、および縦直線探索(処理P10)を行った後、罫線抽出装置は縦点線検出(処理P11)を行う。

    【0050】次に、罫線抽出装置は、横直線の高さの最頻値を計算し(処理P12)、縦直線の幅の最頻値を計算し(処理P13)、横線分の高さの最頻値を計算し(処理P14)、縦線分の幅の最頻値を計算する(処理P15)。 次に、完全に重複する直線同士を統合し(処理P16)、直線矩形の形や隣の直線矩形までの距離を元に不要な直線を除去する(処理P17)。 次に、縦横の直線間の接続関係を元に不要な直線を除去し(処理P
    18)、部分的に重複する直線同士を統合する(処理P
    19)。

    【0051】次に、罫線抽出装置は、他の直線とほぼ完全に重複する直線を除去し(処理P20)、所定のしきい値より大きな線分だけから成る直線を除去する(処理P21)。 そして、別のしきい値より大きな線分にマークを付け(処理P22)、対象とする線分をシフトしながら直線をチェックし、不要な直線を除去して(処理P
    23)、残された直線を出力する。

    【0052】本実施形態の罫線抽出装置は、例えば図3
    に示すような情報処理装置(コンピュータ)により実現される。 図3の情報処理装置は、CPU31、メモリ3
    2、入力装置33、出力装置34、外部記憶装置35、
    媒体駆動装置36、ネットワーク接続装置37、光電変換装置38を備え、それらの各装置はバス39により互いに結合されている。

    【0053】CPU31は、メモリ32に格納されたプログラムを実行して、図2に示した各処理を行う。 メモリ32としては、例えばROM(read only memory)、
    RAM(random access memory)等が用いられる。 メモリ32には、上述のプログラムと処理に必要なデータが格納される。

    【0054】入力装置32は、例えばキーボード、ポインティングデバイス等に相当し、ユーザからの要求や指示の入力に用いられる。 また、出力装置34は、表示装置やプリンタ等に相当し、処理結果等の出力に用いられる。

    【0055】外部記憶装置35は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。 この外部記憶装置35に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ32
    にロードして使用することができる。 また、外部記憶装置35は、画像やキーワード等を保存する、電子ファイリングシステムのデータベースとしても使用される。

    【0056】媒体駆動装置36は、可搬記録媒体40を駆動し、その記憶内容にアクセスすることができる。 可搬記録媒体40としては、メモリカード、フロッピーディスク、CD−ROM(compact disk read only memor
    y )、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体を使用することができる。
    この可搬記録媒体40に、上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ32にロードして使用することができる。

    【0057】ネットワーク接続装置37は、LAN(lo
    cal area network)等の任意の通信ネットワークに接続され、通信に伴うデータ変換等を行って、外部の情報提供者のデータベース40′等と通信する。 これにより、
    罫線抽出装置は、必要に応じて、上述のプログラムとデータをデータベース40′からネットワークを介して受け取り、それらをメモリ32にロードして使用することができる。

    【0058】また、光電変換装置38は、例えばイメージスキャナであり、処理対象となる一般の文書画像を入力する。 メモリ32内では、処理に必要なデータが、例えば図4に示すような構造で管理される。 図4において、1つの入力画像の情報41は、画像に含まれる表(表形式枠)の数と各表毎の情報42から成る。

    【0059】各表情報42は、表の外接矩形の座標値、
    表に含まれるセルの数、各セル毎の情報43、表に含まれる平直線(横直線)の数、各水平直線毎の情報4
    4、表に含まれる垂直直線(縦直線)の数、および各垂直直線毎の情報44から成る。 ここで、セルとは、上下左右を罫線で囲まれた領域を表す。

    【0060】また、各セル情報43はセルの座標値を含み、各直線情報44は、直線を表す矩形の座標値、直線の属性情報、直線に含まれる小線分の数、各小線分毎の情報45、および画像全体における直線の通し番号から成る。 そして、各小線分情報45は、小線分の属性情報と小線分を表す矩形の座標値を含む。 直線および小線分の属性情報は、例えば実線と破線を区別したり、高さまたは幅が一定値を越えるワイルドカード(wildca
    rd)線分と他の線分を区別したりするのに用いられる。 次に、図5から図24までを参照しながら、図2の各処理を順に説明する。

    【0061】縮小処理部12は、入力パターン11の画像がある一定以上の解像度を持ち、その画像の大きさが比較的大きい場合に、処理の効率化のため、画像の縮小処理を行う。 入力された原画像はそのまま記憶しておく。

    【0062】連結パターン抽出部13は、複数の表が配置される位置の相対的な関係に依存することなく、各パターンを安定にピックアップするために、上下左右8連結で繋がっている黒画素連結領域を部分パターンとして、ラベリングにより抽出する。 そして、これらの部分パターンを判別して、画像に含まれる表のパターンを抽出する。

    【0063】ラベリングで得られた部分パターンのサイズが後に必要になるので、連結パターン抽出部13は、
    部分パターンを近似する外接矩形のの座標をラベリングの処理中に算出しておく。 そして、抽出された部分パターンの中で、一定以上の大きさのあるパターンを表の候補であるとして抽出する。

    【0064】大きな連結パターンを抽出する際、大きな連結パターンの内側にあり、かつ一定以上の大きさのあるパターンも同時に抽出し、それらの大小のパターンを同じラベルを持つパターンとして扱う。 こうすることで、本来1つの表を表すパターンが、かすれにより2つ以上のパターンに分離してしまったような場合に、これらを同じラベルに属するパターンとして処理することが可能になる。 なお、これ以降、対象とするパターンの大きさを元に、許容できるかすれの長さを算出することにする。

    【0065】図5は、上述のようなラベリング処理の例を示している。 図5(a)のような画像において、連結パターン抽出部13は、始めに一番大きな外接矩形を持つパターン51を抽出し、それにラベルを付加する。 次に、パターン52とパターン57の間にある横線パターン56は一定以上の横幅があるため、これを大きいパターン51の一部であるとみなし、図5(b)に示すように、以下の処理ではこれらを同じラベルのパターンとして扱う。 したがって、パターン56には、パターン51
    と同じラベルが付加される。

    【0066】次に、罫線抽出装置は、処理P1において、先願の「文書画像からのタイトル抽出装置および方法」(特願平07−341983)の方法を用いて、連結パターン抽出部13により抽出された矩形の高さの頻度分布を表すヒストグラムを求める。 そして、その最頻値most freq heightを求め、これを文書に含まれる標準的な文字の大きさと推定する。 求められた最頻値は、以下の処理において各種しきい値を設定するために用いられる。 この最頻値の計算処理は、次のようにして行われる。

    【0067】まず、ラベリング結果の外接矩形の集合から、図6に示すような矩形高さのヒストグラムを作成する。 図6において、横軸が各外接矩形の高さを表し、縦軸がその高さを持つ矩形の数(頻度値)を表す。 ここでは、外接矩形の高さは、1画素の高さを単位高さとして求められる。

    【0068】次に、頻度値と、その頻度値を持つ矩形高さの内で最大の高さとの対応関係を求め、メモリ32内に矩形高さテーブルとして保存する。 そして、そのテーブルの中を頻度値0から順に調査していき、高さの変化が1以内で頻度値の変化するものが連続し、それらの頻度値の変化の合計が所定値以上の場合に、それらの連続する高さのうちで最も高いものを矩形高さの最頻値mo
    st freq heightとする。

    【0069】図7は、図6のヒストグラムに対応する矩形高さテーブルの内容を表すヒストグラムを示している。 図7において、頻度値が急激に変化する高さが最頻値となっていることがわかる。 このようにして最頻値を求めれば、1文字よりも小さなノイズの影響を排除することができ、文書に含まれる標準的な大きさの文字の高さが得られる。

    【0070】図8は、矩形高さテーブルの簡単な例を示している。 図8においては、4つの頻度値と、各頻度値を持つ矩形高さの内で最大の高さとが、それぞれペアで格納されている。 最頻値を求めるために、この矩形高さテーブルの内容をヒストグラムにすると図9のようになる。

    【0071】図9のヒストグラムを、頻度値の低いところから、つまり高さの高いところから順に見ていくと、
    高さが10、9、8の位置で、頻度値がそれぞれ5、
    5、7だけ変化していることが分かる。 これらの連続する高さの差は1であり、頻度値の変化の合計は17である。 頻度値の変化のしきい値を9とすると、高さ10、
    9、8において頻度値の変化の合計がそれ以上となっているので、それらの中で最初に現れた高さ10をmos
    freq heightとする。

    【0072】次に、マスク処理部14は、連結パターン抽出部13により抽出された、ある一定以上の大きさを持つ連結パターンと、その内部に存在する一定以上の大きさを持つ連結パターン(前者と同じラベルを持つパターン)とを表の候補とする。 そして、先願の「枠抽出装置及び矩形抽出装置」(特願平7−203259)の方法を用いて、マスク処理を行う。

    【0073】このマスク処理は、画像から極端な斜め成分を省き、表だけに存在する長い直線を抽出しやすくするために行われる。 具体的には、マスク処理部14は、
    画像全体に対して、大きさの決められた横長、縦長の2
    種類のマスク矩形による走査を行う。 マスク内での黒画素のパターンの占める割合を算出し、それがある一定値以上であれば、そのマスク内の領域全体を黒画素で埋めてパターンとして残し、また一定値以下であれば、マスク内のパターンを削除する。 こうして、縦横成分の抽出を行う。

    【0074】ここで、複数の行または列が続いて、上記割合が所定のしきい値以上に達した場合、それらの連続するパターンをまとめて大きな矩形範囲をつくり、その中心線を処理結果とする。 これにより、太いパターンが細線化される。 また、処理結果の線分パターン同士の隙間が開かないようにするため、マスクの適用範囲を、お互いに重なりを持つように設定する。 マスク処理前の原画像は、マスク処理後の画像とは別に記憶しておく。

    【0075】図10は、図5(b)に示した2つのパターン51、56を対象としてマスク処理を行った結果を示している。 この場合、図10(a)に示す処理前の画像は、図10(b)に示すように変換される。 図10
    (b)では、パターン51、56の縦横成分のみが抽出され、パターン全体が細線化されている。 また、マスク処理において一部のパターンが補足された結果、パターン51とパターン56が繋がっていることが分かる。

    【0076】次に、横直線抽出部15は、処理P2において、図10(b)のような、部分パターンのマスク処理画像に対して、従来の隣接投影法を用いて投影値を算出する。 そして、処理P3において、ある一定長さの横線分あるいは横直線の一部を、図11に示すように矩形近似して検出する。 これらの処理ではマスク処理画像を使用しているが、以下の処理では原画像を使用する。

    【0077】次に、横直線抽出部15は、処理P4において、線分同士の接続状態を調査して、いくつかの線分が構成する直線を罫線候補として抽出する。 この処理では、図12に示すように、検出された矩形線分のうち近隣の矩形線分同士を統合して長い直線を検出し、検出された直線をその外接矩形で近似する。

    【0078】線分を統合する際、図13に示すように、
    途中に一定以上の太い線分(ワイルドカード)61があった場合には、それらを無視し、太い線分を除いた細い線分だけを対象として統合を行う。 ある線分がワイルドカードであるかどうかは、図4の線分情報45に記述された属性情報により区別される。 このように、大きな線分があるとき、それを含んだ直線を出力するのではなく、その大きな線分を直線に反映しないような統合処理を行う。

    【0079】これにより、網掛け部分や、罫線に接触した文字や図形等のパターンがあっても、それらを除いて罫線だけを抽出することができる。 このような統合処理の詳細については後述することにする。 統合の結果抽出された直線の情報には、図4に示したように、それを構成する各線分の情報が含まれている。

    【0080】次に、横直線抽出部15は、処理P5において、矩形近似された横直線の左右端を正確に検出するために、図14に示すように、その直線内のパターン(画素)の探索を行う。 探索の途中で、進行方向に画素のない部分(空白)が存在した場合、一定の画素数までは画素があるものと仮定して、進行方向に探索を続行する。 一定画素数を越えて空白が存在した場合には、その位置を端点として探索を終了する。 以下の処理では、探索によって検出された端点が、直線の端点として用いられる。

    【0081】次に、罫線抽出装置は、処理P6において、先願の「枠抽出装置及び矩形抽出装置」(特願平7
    −203259)の方法を用いて、横点線を抽出する。
    この処理では、一定の大きさを持ち、かつ規則正しく並んでいる部分パターンを探し、それらのパターンを矩形で囲んで、点線の位置を表現する。

    【0082】以下の処理では、点線の位置を示す矩形を、既に検出されている直線の位置を示す矩形と同様に扱う。 ただし、点線に対応する直線の属性情報には破線属性が設定され、実線に対応する直線の属性情報には実線属性が設定されて、両者は区別される。

    【0083】また、縦直線抽出部16の処理P7、P
    8、P9、およびP10と、縦点線検出処理P11については、上述の横直線および横点線の場合と同様である。 次に、罫線抽出装置は、処理P12において、横直線高さの代表値を計算する。 この処理では、抽出された横直線の高さのヒストグラムを作成し、最も頻度の大きな高さを、横直線高さの最頻値mfheightとし、
    これを横直線高さの代表値として用いる。 また、同様にして、処理P13において、縦直線幅の代表値(最頻値)mfwidthを計算する。

    【0084】これらの代表値は、以下の処理において、
    各種しきい値を設定するために用いられる。 また、横直線高さ/縦直線幅の代表値として、上記最頻値以外の適当な値を代わりに用いてもよい。

    【0085】次に、罫線抽出装置は、処理P14において、横線分高さの代表値を計算する。 この処理では、画像内のすべての横直線を構成しているすべての横線分の高さのヒストグラムを作成し、最も頻度の大きな高さを、横線分高さの最頻値mfheight small
    とし、これを横線分高さの代表値として用いる。 また、
    同様にして、処理P15において、すべての縦直線を構成しているすべての縦線分の幅の最頻値mfwidth
    smallを計算する。

    【0086】これらの代表値もまた、以下の処理において、各種しきい値を設定するために用いられる。 また、
    横線分高さ/縦線分幅の代表値として、上記最頻値以外の適当な値を代わりに用いてもよい。

    【0087】次に、罫線抽出装置は、処理P16において、完全に重複する直線同士を統合する。 この処理では、1つの直線が別の直線とほぼ完全に重複している場合に、それらを1つに統合する。 例えば、図15に示すような重複する2つの直線62、63において、重複しない部分の高さH1が一定の許容画素数INTEGDO
    T以内であれば、これらは完全に重複するものとみなし、1つの直線矩形64に統合する。 INTEGDOT
    の値は、例えば2に設定される。

    【0088】次に、罫線抽出装置は、処理P17において、直線矩形の形や隣り合う直線矩形間の距離に基づいて、不要な直線を除去する。 横直線の処理に関しては、
    まず、高さのしきい値th heiと長さのしきい値t
    lenを、それぞれ次式により計算する。 th hei=most freq height*2/3 (1) th len=most freq height*5 (2) そして、以下の4つの場合において、該当する横直線を削除する。 (a)横直線矩形の縦横比(高さ/幅)がしきい値FT
    H(=0.11)以上の場合。 (b)横直線矩形の縦横比がしきい値FTH2(=0.
    04)以上で、かつ、横直線矩形の高さが高さのしきい値th hei以上の場合。 (c)横直線矩形の幅が長さのしきい値th lenよりも小さい場合。 (d)カレント横直線よりも下にあり、それに最も近い横直線の幅が、長さのしきい値th lenよりも小さい場合。

    【0089】例えば、図16においては、直線67は(a)の場合に該当するため削除され、直線68は(b)の場合に該当するため削除され、直線69は(c)の場合に該当するため削除される。 また、直線6
    5をカレント横直線とすると、直線66は(d)の場合に該当するため削除される。

    【0090】さらに、2つの隣り合う直線間の距離が、
    most freq heightから求めたしきい値よりも小さい場合、それらの直線の一方(例えば長さの短い方)を除去する。 縦直線の処理に関しても同様である。

    【0091】次に、罫線抽出装置は、処理P18において、縦横直線の接続関係に基づき、一部の不要な直線を除去する。 横直線の処理に関しては、まず、注目する横直線矩形の端点がいずれの縦直線矩形とも接しない場合、その横直線矩形を削除する。 これにより、表の枠を構成しない直線、例えば潰れて繋がった文字列上から抽出されたような孤立した直線が除去される。

    【0092】例えば図17においては、横直線70の2
    つの端点74、75はそれぞれ縦直線71、72に接しているため、この直線70は削除されず、横直線73はいずれの縦直線とも接していないので削除される。 縦直線の処理に関しても同様である。

    【0093】しかし、このような除去処理では、画像の文字パターン等の影響で、本来残しておくべき直線が除去されてしまうことがある。 例えば、図18のような画像において、縦直線76の端点77、78はいずれの横直線とも接していないので、縦直線76は、表の枠を構成しているにもかかわらず、削除されてしまう。

    【0094】そこで、必要な直線を残すために、除去処理の対象を互いに近接している2本の直線に限定することにする。 この場合、まず、カレント横直線矩形iよりも下にあり、その矩形iとの距離が矩形高さの最頻値m
    ost freq heightよりも小さい横直線矩形jを求める。

    【0095】そして、これらの横直線矩形i、jのそれぞれについて、その矩形の端点がいずれの縦直線矩形とも接しなく、かつ、いずれの縦直線矩形の端点もその矩形と接しない場合に、その横直線矩形を削除する。 縦直線の処理に関しても同様である。 このような除去処理を行えば、図18の縦直線76は処理対象にならないので、削除されずに残る。

    【0096】また、図19においては、まず、近接する横直線79、80が対象となるが、これらの横直線7
    9、80の端点は縦直線82に接しているので、横直線79、80は削除されない。 次に、横直線80に近接する横直線81が対象となり、この横直線81はいずれの縦直線とも接していないので削除される。 また、近接する縦直線83、84のうち、縦直線83は、端点が横直線79と接しているので残され、縦直線84はいずれの横直線とも接していないので削除される。

    【0097】次に、罫線抽出装置は、処理P19において、部分的に重複する直線同士を統合する。 この処理では、横直線に関しては、まず、幅(長さ)の長い順に並び替える。 次に、長さの長い順に、1つの直線iに注目して、その直線と部分的に重複する1つ以上の直線を求める。

    【0098】そして、部分的に重複する直線を直線iと仮想的に統合して1つの直線矩形とした場合に、その高さがしきい値(mfheight+THDOT)以下となるのであれば、その統合を実行する。 THDOTの値は、例えば2に設定される。 これにより、直線同士を統合した結果が高さの最頻値mfheight程度になる場合に、それらが1つに統合される。 縦直線の処理に関しても同様である。

    【0099】図20においては、直線85と直線86が部分的に重複し、直線86と直線87が部分的に重複している。 これらのうち、直線85と直線86を統合すると、統合された矩形の高さがしきい値を越えるため、直線86と直線87のみを統合して、それらの外接矩形8
    8で近似する。 縦直線の処理に関しても同様である。

    【0100】ここで、このような直線同士の統合処理を行うのは、本来1つの直線のパターンから抽出された複数の線分矩形が、処理P4、P9だけでは、完全に統合されない場合があるからである。 例えば、図21に示すような重複する2つの横直線89、90の場合、それぞれに含まれる線分矩形(斜線部分)同士は離れているので、処理P4では、直線89と直線90は統合されない。 このような場合でも、処理P19によれば、両者を統合することが可能である。

    【0101】次に、罫線抽出装置は、処理P20において、ほぼ完全に重複する2つの直線のうちの短い方を除去する。 この処理では、横直線に関しては、まず、1つの横直線矩形を長さの長い順にソートする。 次に、長い順に1つずつ横直線矩形iを取り出し、その横直線矩形iに部分的に重複する他の横直線矩形jに注目する。 この時、直線iと直線jの上下関係が、図22に示すような関係にあるものを処理対象とする。 図22において、
    直線91を直線iとすると、直線92、93が直線jに相当する。

    【0102】次に、直線iと直線jの間で横方向に重複している範囲を求め、その長さlen3と直線jの横幅len2の比len3/len2が、しきい値OVER
    RATEよりも大きい時、直線jを削除候補として、以下の処理を行う。 ただし、OVERRATEの値は、1
    より小さいものとする。

    【0103】まず、直線iと直線jの間の縦方向の距離を求める。 この場合、直線iと直線jの座標値の差を距離としてもよいが、直線が傾いた場合を考慮して、これらの直線内の小線分矩形間の距離を、直線間の距離と定義することにする。 このような距離値の求め方を、図2
    3を参照しながら説明する。

    【0104】図23において、横方向をx軸とし、縦方向をy軸とすると、直線iと直線jは、x=xmink
    ukanの位置から、x=xmaxkukanの位置までの長さlen3の区間で横方向に重複しており、それぞれ内部に複数の線分を持っている。

    【0105】まず、罫線抽出装置は、直線i内の線分の集合から、線分統合処理P4でワイルドカードではないと判断された線分であって、最初に重複部分にかかるものを取り出し、それを基準線分とする。 ここでは、線分94が基準線分となる。 そして、基準線分94のx座標(xmin1,xmax1)を求める。

    【0106】次に、直線j内の線分の集合を対象にして、x座標がxmin1からxmax1までの範囲にかかる線分をすべて抽出する。 そして、抽出された線分と直線i内の基準線分94とのy方向の距離の平均値を求め、それを直線iと直線jの間の距離値とする。

    【0107】ここでは、直線j内の対応する線分は線分95だけなので、これと基準線分94との距離dが、そのまま直線iと直線jの間の距離値となる。 このような計算方法により、直線が傾いた場合でも、正しい直線間の距離が求められる。

    【0108】罫線抽出装置は、こうして得られた直線i
    と直線jの距離を元にして、直線jを削除するかどうかを決定する。 まず、図22の直線92のように、直線j
    が直線iより上にある場合は、それらの距離がしきい値OVERDOT以内であれば、直線jを削除する。 OV
    ERDOTの値は、例えば1に設定される。 また、直線93のように、直線jが直線iより下にある場合は、それらの距離がしきい値most freq heigh
    tよりも小さければ、直線jを削除する。

    【0109】このように、ほぼ完全に重複する2つの横直線の短い方を削除することで、不要な横直線が除去される。 縦直線の処理に関しても同様である。 次に、罫線抽出装置は、処理P21において、一定のしきい値より大きい線分だけで構成されている直線を除去する。 この処理では、横直線内のすべて線分の高さがしきい値(m
    fheight small*2−1)よりも大きい場合に、その直線を文字列上から誤って抽出された直線とみなして、削除する。 縦直線の処理に関しても同様である。

    【0110】次に、罫線抽出装置は、処理P22、23
    において、直線矩形を構成する線分矩形がしきい値より大きな場合、その線分矩形の情報にマークを付けて、マークが付いていない線分矩形の内部の黒画素の総和を求める。 このとき、マークが付いていない線分矩形の集合を、直線矩形の長さ方向と垂直な方向に動かして、シフト量と黒画素総数の関係を表すグラフを作成する。 そして、グラフの形状がなだらかな場合に、その直線矩形を罫線候補から除外する。

    【0111】罫線抽出装置は、まず、処理P22において、処理P23のための前処理を行う。 この処理では、
    横直線内の線分の高さが、しきい値mfheight
    smallより大きな場合、その線分の属性情報をワイルドカードに設定して、処理P23で使用しないようにする。 縦直線の処理に関しても同様である。

    【0112】次に、処理P23において、線分シフトによる直線のチェック/除去処理を行う。 この処理では、
    まず、1つの横直線矩形を構成する複数の横線分矩形内の黒画素数の総和を求め、それをシフト量0の位置(中心位置)における黒画素総数とする。 次に、線分矩形を横直線矩形の長さ方向と垂直な方向(縦方向)に、横直線矩形の高さ分だけ上下にシフトして、各位置での黒画素総数を求め、シフト量に対する黒画素総数のグラフを作成する。

    【0113】そして、中心位置付近の黒画素総数の極大値を基準とし、上下の両方向に離れた位置の黒画素総数の分布が一定比率未満になる場合に、その直線矩形は罫線であるとみなして出力する。 それ以外の場合は、その直線矩形は文字列等から誤って抽出された直線であり、
    罫線ではないものとみなして、削除する。 縦直線の処理についても同様である。

    【0114】例えば図50に示した画像の場合、図24
    に示すようなグラフが作成される。 図24において、グラフ96、97は、それぞれ対応する横直線の周囲の黒画素の分布を表している。 このとき、横直線の高さをh
    eightとすると、横直線内の各線分は、y方向に+
    /−heightの区間で1画素ずつシフトされ、各シフト位置における線分内の黒画素の総数がプロットされている。

    【0115】グラフ96の場合は、シフト量0の位置に黒画素総数の極大値Peakがあり、その上下において、黒画素総数の分布はPeakのTHSHIFT倍の値を下回っている。 ここでは、THSHIFTの値は、
    例えば0.44に設定される。 このような分布は、シフト量0の位置に黒画素が集中していることを表しており、その位置に対応する横直線が罫線であるとみなされる。

    【0116】これに対して、グラフ97の場合は、+/
    −heightの区間の黒画素総数の分布がなだらかで、シフト量0の位置の上下においても、PeakのT
    HSHIFT倍の値を下回らない。 このような分布は、
    シフト量0の位置の上下に黒画素が分散していることを表しており、その位置に対応する横直線は罫線ではないものとみなされ、削除される。

    【0117】このような直線のチェック/除去処理を行えば、表内の網掛け部分や潰れた文字列上から抽出された直線が除去され、本来の罫線のみが処理結果として出力される。 このチェック/除去処理の詳細については後述することにする。

    【0118】次に、図25から図36までを参照しながら、上述の各処理の具体例について述べる。 図25は、
    処理P4における横線分統合後の画像データを示しており、図26は、図25の画像の一部を示している。 図2
    6の状態は、処理P16における完全重複直線の統合前の画像データに対応し、図27は、その統合後の画像データを示している。

    【0119】図26において、ラベル66を持つ直線矩形101とラベル3を持つ直線矩形106は、図27においては1つに統合されていることが分かる。 同様に、
    ラベル67、68、69、70を持つ直線矩形102、
    103、104、105は、それぞれ、ラベル4、5、
    6、7を持つ直線矩形107、108、109、110
    と統合されている。

    【0120】また、図28は、図27の画像に対して処理P17、18を施し、直線の形、位置および接続関係を元に直線を除去した後の画像データを示している。 図27においてラベル35、37、38を持つ直線矩形1
    11、112、113は、図28においては削除されていることが分かる。

    【0121】また、図29は、処理P19における部分重複直線の統合前の画像データを示しており、図30
    は、その統合後の画像データを示している。 図29において、ラベル25を持つ直線矩形121とラベル20を持つ直線矩形124は、図30においては1つに統合されていることが分かる。 同様に、ラベル26、27を持つ直線矩形122、123は、それぞれ、ラベル21、
    22を持つ直線矩形125、126と統合されている。

    【0122】また、図31は、処理P20におけるほぼ完全に重複する直線の除去前の画像データを示しており、図32は、その除去後の画像データを示している。
    図31における直線矩形131が、図32においては削除されていることが分かる。

    【0123】また、図33は、処理P21における大きな線分だけから成る直線の除去前の画像データを示しており、図34は、その除去後の画像データを示している。 図33における直線矩形141が、図34においては削除されていることが分かる。

    【0124】さらに、図35は、処理P23における線分シフトによる直線のチェック/除去前の画像データを示しており、図36は、そのチェック/除去後の画像データを示している。 図35における直線矩形151、1
    52、153が、図36においては削除されていることが分かる。

    【0125】次に、図37から図41までを参照しながら、線分統合処理について詳細に説明する。 図37、3
    8、39、40、41は、図2における横線分統合処理P4のフローチャートである。

    【0126】この処理においては、横直線抽出部15
    は、大きな黒画素塊をワイルドカード矩形として扱い、
    その前後に8連結で接続される横長の線分矩形に注目する。 そして、ワイルドカード矩形を挟んでお互いに8連結の関係にある線分矩形を統合していき、1つの横に長い統合矩形を横直線として求める。

    【0127】処理が開始されると、横直線抽出部15
    は、まず、横線分の高さの最頻値mfheight
    mallを用いて次式の各しきい値を計算し、直線数を0とおく(図37、ステップS1)。 th height= mfheight small+TH HEIGHTDOT (3) standard h=mfheight small+1 (4) ここで、TH HEIGHTDOTの値は、例えば2に設定される。 次に、互いに連結する複数の線分矩形のうちの1つの高さを調べ(ステップS2)、それがしきい値th heightより大きければ、それをワイルドカード矩形としてマークする(ステップS3)。 このとき、その線分矩形の属性情報の識別変数useを9とおくことにより、ワイルドカード属性を設定する。

    【0128】それ以外の線分矩形は通常の矩形(スタンダード矩形)として、use=0とおく(ステップS
    4)。 そして、連結するすべての線分矩形をマークしたかどうかを判定し(ステップS5)、まだ線分矩形が残っていれば、ステップS2以降の処理を繰り返す。

    【0129】すべての線分矩形をマークし終えると、1
    つの矩形をカレント矩形iとして取り出し、xlf=カレント矩形iの左端座標、xr=カレント矩形iの右端座標、yup=カレント矩形iの上端座標、ybl=カレント矩形iの下端座標、line start=yu
    p、line end=yblとおく(ステップS
    6)。 そして、カレント矩形iのuseが0または9であるかどうか調べる(ステップS7)。

    【0130】カレント矩形iのuseが0または9であれば、startxlf=xlf、startxr=x
    r、startyup=yup、startybl=y
    blとおき(ステップS8)、次に、use=0かどうかを判定する(図38、ステップS9)。 use=0であれば、standard st=yup、stand
    ard en=ybl、b use=0、use=1、
    height=ybl−yup+1とおく(ステップS
    10)。

    【0131】b use=0は、カレント矩形iがワイルドカードではなく、スタンダードとして設定されていることを意味し、use=1はカレント矩形iが使用済みであることを意味する。 ステップS9でuse=0でなければ、standard st=0、standar
    en=0、b use=9、height2=yb
    l−yup+1とおく(ステップS11)。 b use
    =9は、カレント矩形iがワイルドカードであるため、
    スタンダードとして設定されないことを意味する。

    【0132】次に、他の線分矩形をカレント矩形kとして取り出し、rxlf=カレント矩形kの左端座標、r
    xr=カレント矩形kの右端座標、ryup=カレント矩形kの上端座標、rybl=カレント矩形kの下端座標とおく(ステップS12)。

    【0133】そして、カレント矩形iがスタンダードとして設定されているかどうか、すなわち、b use=
    0であるかどうかを調べる(ステップS13)。 b
    se=0であれば、次に、カレント矩形kのuseが9
    であるかどうかを調べる(ステップS14)。 ここで、
    use=9の場合は、カレント矩形iがスタンダードで、カレント矩形kがワイルドカードであることを意味する。

    【0134】use=9のとき、xr+1≧rxlf、
    xr<rxr、ybl+1≧ryup、およびyup−
    1≦ryblが成り立つかどうかを判定する(ステップS15)。 これらの条件が成り立つ時、カレント矩形k
    がカレント矩形iの右側にあり、両者が横と縦に1画素(1ドット)以上の重なりを有することを意味する。 そこで、xr=rxrとおいて、カレント矩形iの右端をカレント矩形kの右端まで延長する(ステップS1
    6)。

    【0135】ステップS14でuse=9でないとき、
    次に、use=0であるかどうかを調べる(図39、ステップS17)。 ここで、use=0の場合は、カレント矩形iがスタンダードで、カレント矩形kがワイルドカードでないことを意味する。 そこで、次に、xr+1
    ≧rxlf、xr<rxr、ybl+1≧ryup、およびyup−1≦ryblが成り立ち、かつ、カレント矩形kの高さがstandard h+/−4以内かどうかを判定する(ステップS18)。

    【0136】これらの条件が成り立つ時、xr=rx
    r、yup=ryup、ybl=rybl、use=
    2、hei=rybl−ryup+1とおく(ステップS19)。 これは、カレント矩形iの右端をカレント矩形kの右端まで延長し、上下端の座標をカレント矩形k
    のものに置き換えることを意味する。 また、use=2
    はカレント矩形kが使用済みであることを意味する。

    【0137】次に、hei>heightが成り立つかどうかを判定し(ステップS20)、成り立てばhei
    ght=heiとおく(ステップS21)。 次に、ry
    up<line startが成り立つかどうかを判定し(ステップS22)、成り立てばline star
    t=ryupとおく(ステップS23)。 さらに、ry
    bl>line endが成り立つかどうかを判定し(ステップS24)、成り立てばline end=r
    yblとおく(ステップS25)。

    【0138】これらの処理の後、次にb use=9かどうかを判定する(図40、ステップS26)。 図38
    のステップS13、S15、図39のステップS18、
    S20、S22、S24で判定結果がNoのときは、直ちにステップS26以降の処理に移る。

    【0139】ここで、b use=9であれば、次に、
    カレント矩形kのuseが9であるかどうかを調べる(ステップS27)。 use=9の場合は、カレント矩形iとカレント矩形kの両方がワイルドカードであることを意味をする。 そこで、xr+1≧rxlf、xr<
    rxr、ybl+1≧ryup、およびyup−1≦r
    yblが成り立つかどうかを判定する(ステップS2
    8)。

    【0140】これらの条件が成り立つ時、カレント矩形kがカレント矩形iの右側にあり、両者が横と縦に1ドット以上の重なりを有するので、xr=rxrとおいて、カレント矩形iの右端をカレント矩形kの右端まで延長する(ステップS29)。

    【0141】ステップS27でuse=9でないとき、
    次に、use=0であるかどうかを調べる(ステップS
    30)。 ここで、use=0の場合は、カレント矩形i
    がワイルドカードで、カレント矩形kがワイルドカードでないことを意味をする。 そこで、xr+1≧rxl
    f、xr<rxr、line end≧ryup、およびline start<ryblが成り立つかどうかを判定する(ステップS31)。

    【0142】これらの条件が成り立つ時、xr=rx
    r、yup=ryup、ybl=rybl、use=
    2、line start=ryup、line en
    d=rybl、hei=rybl−ryup+1、st
    andard st=ryup、standard
    n=ryblとおく(ステップS32)。

    【0143】これは、カレント矩形iの右端をカレント矩形kの右端まで延長し、上下端の座標をカレント矩形kのものに置き換えることを意味する。 また、use=
    2はカレント矩形kが使用済みであることを意味する。
    そして、hei>heightが成り立つかどうかを判定し(ステップS33)、成り立てばheight=h
    eiとおく(ステップS34)。

    【0144】次に、カレント矩形kとして、連結するすべての線分矩形を取り出したかどうかを判定する(図4
    1、ステップS35)。 図40のステップS26、S2
    8、S30、S31、S33で判定結果がNoのときは、直ちにステップS35以降の処理に移る。 ここで、
    残っている線分矩形があれば、図38のステップS13
    以降の処理を繰り返す。

    【0145】すべての線分矩形について処理が終われば、b use=9であるかどうかを判定する(ステップS36)。 ここで、b use=9でなければ、xl
    f、xr、line start、line end
    を、それぞれ抽出した直線矩形の左端、右端、上端、下端の座標として保存し、直線数を1だけインクリメントする(ステップS37)。

    【0146】ステップS36でb use=9となるのは、カレント矩形iとそれに連結するすべての矩形がワイルドカードであった場合なので、この場合は直線として保存しない。

    【0147】次に、カレント矩形iとしてすべての線分矩形を取り出したかどうかを判定し(ステップS3
    8)、残っている線分矩形があれば、図37のステップS6以降の処理を繰り返す。 ステップS7でカレント矩形iのuseが0または9でない場合は、取り出した線分矩形が既に使用済みであることを意味するので、直ちにステップS38の処理に移り、次の線分矩形を取り出す。 そして、すべての線分矩形が取り出されると、処理を終了する。

    【0148】このようにして、ワイルドカードを飛び越して、その両側の横線分矩形を統合し、標準的な線分だけを含む横直線を抽出することができる。 図2における縦線分統合処理P9も、同様のフローに従って行われる。 次に、図42から図47までを参照しながら、線分シフトによる直線のチェック/除去処理のフローを詳細に説明する。 図42、43、44、45、46、47
    は、図2の処理P23における横直線のチェック/除去処理のフローチャートである。 この処理においては、罫線抽出装置は、各横直線の周囲の黒画素の分布を元にして、その直線が正しい罫線かどうかを判別し、正しい罫線のみを残して、他のものを除去する。

    【0149】処理が開始されると、罫線抽出装置は、まず、処理済の横直線数を表す変数cntと、正しい罫線と判定された横直線数を表す変数newcountを、
    ともに0とおく(図42、ステップS41)。 ただし、
    cntとnewcountは、0を起点にしてカウントされる。

    【0150】次に、cnt番目の横直線の属性が破線を表すかどうかを調べる(ステップS42)。 それが破線属性であれば、その横直線の直線情報をすべてnewc
    ount番目の罫線情報としてコピーし、cntとne
    wcountを1ずつインクリメントして(ステップS
    43)、ステップS42で次の横直線の判定を行う。

    【0151】cnt番目の横直線の属性が破線属性でなければ、それは実線に対応するものとみなし、その横直線矩形の高さをheightとおき(ステップS4
    4)、heightが2以下かどうかを判定する(ステップS45)。 heightが2より大きければ、その値を変更せず、heightが2以下であれば、それを3に変更する(ステップS46)。

    【0152】そして、pos=height、maxs
    um=0、top bound=0、bottom
    ound=0、shift=−1*height、su
    m=0、j=0とおく(ステップS47)。 変数pos
    は、画像内での上下方向の位置を指定するために用いられ、変数maxsumは、黒画素総数のグラフにおける極大値を表す。

    【0153】また、変数top boundは、グラフの区間が画像の上端に達したかどうかを表すフラグとして用いられ、変数bottom boundは、グラフの区間が画像の下端に達したかどうかを表すフラグとして用いられる。 変数shiftの値は、横直線内の線分矩形の上下方向のシフト量を表し、変数sumは、複数の線分矩形内の黒画素の総数を表す。

    【0154】次に、cnt番目の横直線内のj番目の小線分(線分矩形)の属性がワイルドカードかどうかを調べる(図43、ステップS48)。 それがワイルドカード属性であれば、jを1だけインクリメントして(ステップS49)、ステップS48で次の小線分を判定する。

    【0155】j番目の小線分の属性がワイルドカードでなければ、それは通常の線分矩形に対応するとみなし、
    xmin=j番目の小線分の左端座標、xmax=j番目の小線分の右端座標、ymin=j番目の小線分の上端座標+shift、ymax=j番目の小線分の下端座標+shiftとおく(ステップS50)。 ただし、
    こうして決められたyminまたはymaxの位置が画像座標内にない場合は、最も近い画像端のy座標をym
    inまたはymaxとする。

    【0156】そして、変数xmin、xmax、ymi
    n、ymaxの各値で区切られる矩形領域内の黒画素の数を計算して、それをblack dotとおき、su
    m=sum+black dotとする。

    【0157】次に、yminが画像の上端に対応するかどうかを判定し(ステップS51)、上端であればto
    bound=1とおく(ステップS52)。 また、
    ymaxが画像の下端に対応するかどうかを判定し(ステップS53)、下端であればbottom boun
    d=1とおく(ステップS54)。

    【0158】次に、変数jの値がcnt番目の横直線内の最後の小線分に対応するかどうかを判定する(ステップS55)。 それが最後の小線分に対応しなければ、j
    を1だけインクリメントして(ステップS56)、ステップS48以降の処理を繰り返す。 それが最後の小線分に対応すれば、histo[pos+shift]=s
    umとおく(図44、ステップS57)。

    【0159】ここで、histo[p]は、y方向の位置パラメータpの値に対応するグラフの値(黒画素の総数)を表す。 例えば、pos=height、shif
    t=−heightの場合は、histo[pos+s
    hift]=histo[0]となり、パラメータ値0
    の位置に対応するグラフの値を表す。

    【0160】次に、sumとmaxsumを比較し(ステップS58)、sumがmaxsumより大きければ、maxsum=sumとおく(ステップS59)。
    次に、shiftとheightを比較する(ステップS60)。 shiftがheight以下であれば、s
    hift=shift+1とおいて、sumとjを初期値0に戻し(ステップS61)、ステップS48以降の処理を繰り返す。 これにより、シフト量が1画素分変化した位置に対応するグラフの値が計算される。

    【0161】そして、shiftの値がheightを越えると、次に、histo[pos−1]とhist
    o[pos]とを比較する(ステップS62)。 ここで、histo[pos]は、シフト量0の位置に対応するグラフの値を表す。 histo[pos−1]がh
    isto[pos]より大きければ、次に、histo
    [pos−1]とhisto[pos+1]とを比較する(ステップS63)。

    【0162】そして、histo[pos−1]がhi
    sto[pos+1]より大きければ、maxpos=
    pos−1、maxsum=histo[pos−1]
    とおく(ステップS64)。 また、histo[pos
    −1]がhisto[pos+1]以下であれば、ma
    xpos=pos+1、maxsum=histo[p
    os+1]とおく(ステップS65)。

    【0163】ステップS62において、histo[p
    os−1]がhisto[pos]以下であれば、次に、histo[pos]とhisto[pos+1]
    とを比較する(ステップS66)。

    【0164】そして、histo[pos]がhist
    o[pos+1]以上であれば、maxpos=po
    s、maxsum=histo[pos]とおく(ステップS67)。 また、histo[pos]がhist
    o[pos+1]より小さければ、maxpos=po
    s+1、maxsum=histo[pos+1]とおく(ステップS68)。

    【0165】このような処理により、histo[po
    s−1]、histo[pos]、およびhisto
    [pos+1]のうちの最大値が、maxsumに設定され、それに対応するパラメータ値がmaxposに設定される。 したがって、このmaxsumは、シフト量0の位置付近におけるグラフの極大値を表し、図24のPeakに対応する。

    【0166】次に、得られたmaxsum(=hist
    o[maxpos])の値を用いて、次式により、しきい値thを計算する(図45、ステップS69)。 th=maxsum*THSHIFT (5) ここで、パラメータTHSHIFTは、極大値maxs
    umに対するしきい値thの比率を表し、0〜1.0の間で適当に設定される。

    【0167】そして、lineokflag1=0、l
    ineokflag2=0、minval=0xfff
    f、shift=−1*heightとおく。 変数li
    neokflag1およびlineokflag2は、
    極大値に対応する位置の上下両側におけるチェック結果を表すフラグとして用いられ、変数minvalは、グラフの最小値を表す。

    【0168】次に、histo[pos+shift]
    とthを比較する(ステップS70)。 そして、his
    to[pos+shift]がthより小さければ、極大値に対応する位置の上側では黒画素の数が減少しているとみなし、lineokflag1=1とおく(ステップS71)。 したがって、lineokflag1=
    1は、上側におけるチェック結果がOKであることを表す。

    【0169】次に、histo[pos+shift]
    とminvalを比較する(ステップS72)。 そして、histo[pos+shift]がminval
    より小さければ、minval=histo[pos+
    shift]とおく(ステップS73)。

    【0170】次に、(pos+shift)とmaxp
    osを比較し(ステップS74)、(pos+shif
    t)がmaxpos以下であれば、shift=shi
    ft+1とおいて(ステップS75)、ステップS70
    以降の処理を繰り返す。 これにより、シフト量が1画素分変化した位置で、再びグラフの値が調べられる。

    【0171】(pos+shift)がmaxposを越えれば、次に、histo[pos+shift]とthを比較する(図46、ステップS76)。 そして、
    histo[pos+shift]がth以上であれば、次に、histo[pos+shift]とmin
    valを比較する(ステップS77)。 そして、his
    to[pos+shift]がminvalより小さければ、minval=histo[pos+shif
    t]とおく(ステップS78)。

    【0172】次に、shiftとheightを比較し(ステップS79)、shiftがheight以下であれば、shift=shift+1とおいて(ステップS80)、ステップS76以降の処理を繰り返す。 これにより、シフト量が1画素分変化した位置で、再びグラフの値が調べられる。

    【0173】ステップS76において、histo[p
    os+shift]がthより小さければ、極大値に対応する位置の下側では黒画素の数が減少しているとみなし、lineokflag2=1とおく(ステップS8
    1)。 したがって、lineokflag2=1は、下側におけるチェック結果がOKであることを表す。

    【0174】次に、lineokflag1とtop
    boundの値を調べる(図47、ステップS82)。
    そして、lineokflag1=0かつtop bo
    und=1であれば、対象とするcnt番目の横直線は画像の上端部付近の横罫線に対応するとみなして、li
    neokflag1=1とおく(ステップS83)。

    【0175】次に、lineokflag2とbott
    om boundの値を調べる(ステップS84)。 そして、lineokflag2=0かつbottom
    bound=1であれば、cnt番目の横直線は画像の下端部付近の横罫線に対応するとみなして、lineo
    kflag2=1とおく(ステップS85)。

    【0176】次に、lineokflag1およびli
    neokflag2の最終的な値を調べる(ステップS
    86)。 lineokflag1=lineokfla
    g2=1であれば、cnt番目の横直線は正しい横罫線であると判定し、その直線情報をnewcount番目の罫線情報としてコピーし、newcountを1だけインクリメントする(ステップS87)。

    【0177】また、lineokflag1=0またはlineokflag2=0であれば、cnt番目の横直線は正しい横罫線ではないと判定し、その直線情報は罫線情報として保存しない。

    【0178】次に、cntが画像内の最後の横直線に対応するかどうかを調べ(ステップS88)、まだ横直線が残っていれば、cntを1だけインクリメントして(ステップS89)、次の横直線についてステップS4
    2以降の処理を繰り返す。 そして、cntが最後の横直線に対応する値になれば、処理を終了する。

    【0179】このような処理を行えば、直線上の黒画素数とその周囲の黒画素数との比較に基づいて罫線らしさがチェックされるので、網掛け部分や潰れた文字列等から誤って抽出された直線が効率よく除去される。 縦方向の直線についても、同様のチェック/除去処理が行われる。

    【0180】以上説明したように、本実施形態によれば、画像のかすれの有無にかかわらず、実線と点線の混在する表の画像であっても、また、網掛け部分や、文字と罫線が接触した部分があっても、正確に罫線を抽出することが可能になる。

    【0181】本発明の罫線抽出技術は、電子ファイリングだけでなく、記号や文字を含む広い意味での図形と直線が重なったパターンから、その図形だけを切り出す技術に適用される。 例えば、手書き文字認識装置、印刷文字認識装置、図面認識における文字、記号等のパターンの切り出し、および画像中の罫線と物体、図形、文字等の接触部分の分離に適用可能である。

    【0182】また、直線や線分を表す領域の形状は必ずしも矩形でなくてもよく、直線または曲線により囲まれた任意の形状の領域を用いることができる。 この場合、
    用いる形状に応じて、直線や線分の位置、高さ、および幅、それらの間の距離等を適当に定義すれば、図2と同様の処理を行うことができる。

    【0183】

    【発明の効果】本発明によれば、あらかじめ罫線構造が予測できない一般の文書画像から、罫線部分を正しく抽出することができる。

    【0184】例えば、表の中に網掛け部分がある場合でも、その画像から正しく罫線を抽出することが可能となる。 また、文字と罫線が接触している場合で、表の構造情報があらかじめ分かっていなくても、正しく罫線を抽出することが可能である。 さらに、文字列が潰れ気味に印刷されている場合、または文字同士が高密度に印刷されている場合でも、文字列上から誤って罫線を抽出する確率が低くなる。

    【図面の簡単な説明】

    【図1】本発明の罫線抽出装置の原理図である。

    【図2】罫線抽出装置の機能ブロック図である。

    【図3】情報処理装置の構成図である。

    【図4】データ構造を示す図である。

    【図5】ラベリング処理を示す図である。

    【図6】高さのヒストグラムを示す図である。

    【図7】高さの最頻値を求めるためのヒストグラムを示す図である。

    【図8】矩形高さテーブルを示す図である。

    【図9】矩形高さテーブルの内容に対応するヒストグラムを示す図である。

    【図10】マスク処理を示す図である。

    【図11】線分検出処理を示す図である。

    【図12】第1の線分統合処理を示す図である。

    【図13】第2の線分統合処理を示す図である。

    【図14】直線探索処理を示す図である。

    【図15】完全重複直線の統合処理を示す図である。

    【図16】第1の直線除去処理を示す図である。

    【図17】第2の直線除去処理を示す図である。

    【図18】除去すべきではない直線を示す図である。

    【図19】第3の直線除去処理を示す図である。

    【図20】部分重複直線の統合処理を示す図である。

    【図21】部分重複直線の内部を示す図である。

    【図22】第4の直線除去処理を示す図である。

    【図23】2本の直線間の距離値の求め方を示す図である。

    【図24】第5の直線除去処理を示す図である。

    【図25】横線分の統合処理後の画像を示す図である。

    【図26】完全重複直線の統合処理前の画像を示す図である。

    【図27】完全重複直線の統合処理後の画像を示す図である。

    【図28】直線の形、位置と縦横直線の接続関係による除去処理後の画像を示す図である。

    【図29】部分重複直線の統合処理前の画像を示す図である。

    【図30】部分重複直線の統合処理後の画像を示す図である。

    【図31】ほぼ完全に重複する直線の除去処理前の画像を示す図である。

    【図32】ほぼ完全に重複する直線の除去処理後の画像を示す図である。

    【図33】大きな線分だけからなる直線の除去処理前の画像を示す図である。

    【図34】大きな線分だけからなる直線の除去処理後の画像を示す図である。

    【図35】線分シフトによる直線チェック/除去処理前の画像を示す図である。

    【図36】線分シフトによる直線チェック/除去処理後の画像を示す図である。

    【図37】線分統合処理のフローチャート(その1)である。

    【図38】線分統合処理のフローチャート(その2)である。

    【図39】線分統合処理のフローチャート(その3)である。

    【図40】線分統合処理のフローチャート(その4)である。

    【図41】線分統合処理のフローチャート(その5)である。

    【図42】直線のチェック/除去処理のフローチャート(その1)である。

    【図43】直線のチェック/除去処理のフローチャート(その2)である。

    【図44】直線のチェック/除去処理のフローチャート(その3)である。

    【図45】直線のチェック/除去処理のフローチャート(その4)である。

    【図46】直線のチェック/除去処理のフローチャート(その5)である。

    【図47】直線のチェック/除去処理のフローチャート(その6)である。

    【図48】単純な表形式枠を示す図である。

    【図49】複雑な表形式枠を示す図である。

    【図50】罫線抽出の困難な表形式枠を示す図である。

    【符号の説明】

    1 推定手段 2 格納手段 3 線分抽出手段 4 計算手段 5 直線抽出手段 6 グラフ生成手段 7 直線処理手段 8 直線統合手段 9 直線除去手段 11 入力パターン 12 縮小処理部 13 連結パターン抽出部 14 マスク処理部 15 横直線抽出部 16 縦直線抽出部 31 CPU 32 メモリ 33 入力装置 34 出力装置 35 外部記憶装置 36 媒体駆動装置 37 ネットワーク接続装置 38 光電変換装置 39 バス 40 可搬記録媒体 40′ データベース 41 画像情報 42 表情報 43 セル情報 44 直線情報 45 線分情報 51、52、53、54、55、56、57、58 パターン 61 ワイルドカード 62、63、64、65、66、67、68、69、7
    0、71、72、73、76、79、80、81、8
    2、83、84、85、86、87、88、89、9
    0、91、92、93、101、102、103、10
    4、105、106、107、108、109、11
    0、111、112、113、121、122、12
    3、124、125、126、131、141、15
    1、152、153直線矩形 74、75、77、78 端点 94、95 線分矩形 96、97 グラフ

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈