(57)【特許請求の範囲】
【請求項１】
画像データ内の帳票を構成する罫線を抽出する罫線抽出方式であって、
入力画像から、解像度が該入力画像と等しいか低い画像である高解像度画像と、該高解像度画像よりも解像度の低い画像である低解像度画像とを、該入力画像のデータを間引くことで生成する手段と、
前記低解像度画像から罫線候補領域を抽出する罫線候補領域抽出手段と、
前記罫線候補領域抽出手段が抽出した罫線候補領域を前記高解像度画像で画素探索し、検出された途切れの回数及び途切れの長さを用いて罫線の掠れの度合いを算出し、該掠れの度合いから前記入力画像全体の品質を評価する手段と、
前記評価する手段が、掠れの度合いが少ないと評価をした場合は前記高解像度画像を、掠れの度合いが大きいと評価をした場合は前記低解像度画像を処理画像として選択する手段と、
選択された前記処理画像において、前記罫線候補領域抽出手段が抽出した罫線候補領域内のパターンの凹凸度が閾値より低い場合に、該パターンを罫線パターンとして抽出する手段と、
を備えることを特徴とする罫線抽出方式。
【請求項２】
画像データ内の帳票を構成する罫線を抽出する罫線抽出方式であって、
入力画像から、解像度が該入力画像と等しいか低い画像である高解像度画像と、該高解像度画像よりも解像度の低い画像である低解像度画像とを、該入力画像のデータを間引くことで生成する手段と、
前記低解像度画像から前記入力画像のそれぞれの部分の罫線候補領域を抽出する罫線候補領域抽出手段と、
前記罫線候補領域抽出手段が抽出した罫線候補領域を前記高解像度画像で画素探索し、検出された途切れの回数及び途切れの長さを用いて罫線の掠れの度合いを算出し、該掠れの度合いから前記入力画像のそれぞれの部分の品質を評価する手段と、
前記入力画像のそれぞれの部分に対して、前記評価する手段が、掠れの度合いが少ないと評価をした場合は第１の閾値を小さく設定し、掠れの度合いが大きいと評価をした場合は該第１の閾値を大きく設定する手段と、
前記評価する手段が、掠れの度合いが少ないと評価をした場合は前記高解像度画像を、掠れの度合いが大きいと評価をした場合は前記低解像度画像を、前記入力画像のそれぞれの部分に対する処理画像として選択する手段と、
選択された前記処理画像において、前記罫線候補領域抽出手段が抽出した罫線候補領域内のパターンの凹凸度が第２の閾値より低い場合に、該パターンを罫線パターンとして抽出する手段と、
抽出された２つの罫線パターンの距離が前記第１の閾値以下の場合に該２つの罫線パターンを統合する手段と、
を備えることを特徴とする罫線抽出方式。
【請求項３】
前記生成する手段は、前記入力画像から間引くデータが多い前記低解像度画像と、前記入力画像から間引くデータが少ない前記高解像度画像とを生成することを特徴とする請求項２記載の罫線抽出方式。
【請求項４】
前記罫線候補領域抽出手段による処理を行う前に、前記低解像度画像を用いて点線の抽出を行い、点線を構成するパターンを除去する処理を行う手段を更に備えることを特徴とする請求項２記載の罫線抽出方式。
【請求項５】
罫線候補領域抽出手段によって抽出された罫線候補領域内を、前記高解像度画像を用いて点線抽出処理および罫線抽出処理を行うことで、直線の属性を判断する罫線属性判定手段を更に備えることを特徴とする請求項２記載の罫線抽出方式。
【請求項６】
前記評価する手段は、前記罫線候補領域内を画素探索することで、パターンの途切れの回数及び途切れの長さを求め、得られた途切れの回数及び途切れの長さを単位長さ当たりの途切れの回数及び途切れの長さに換算し、該単位長さ当たりの途切れの回数及び途切れの長さを加算して前記掠れの度合いを求めることを特徴とする請求項２記載の罫線抽出方式。
【請求項７】
画像データ内の帳票を構成する罫線を抽出するプログラムを記憶した記憶媒体であって、
入力画像から、解像度が該入力画像と等しいか低い画像である高解像度画像と、該高解像度画像よりも解像度の低い画像である低解像度画像とを、該入力画像のデータを間引くことで生成するステップと、
前記低解像度画像から前記入力画像のそれぞれの部分の罫線候補領域を抽出するステップと、
抽出された罫線候補領域を前記高解像度画像で画素探索し、検出された途切れの回数及び途切れの長さを用いて罫線の掠れの度合いを算出し、該掠れの度合いから前記入力画像のそれぞれの部分の品質を評価するステップと、
前記入力画像のそれぞれの部分に対して、掠れの度合いが少ないと評価された場合は第１の閾値を小さく設定し、掠れの度合いが大きいと評価された場合は該第１の閾値を大きく設定するステップと、
掠れの度合いが少ないと評価された場合は前記高解像度画像を、掠れの度合いが大きいと評価された場合は前記低解像度画像を、前記入力画像のそれぞれの部分に対する処理画像として選択するステップと、
選択された前記処理画像において、前記抽出された罫線候補領域内のパターンの凹凸度が第２の閾値より低い場合に、該パターンを罫線パターンとして抽出するステップと、
抽出された２つの罫線パターンの距離が前記第１の閾値以下の場合に該２つの罫線パターンを統合するステップと、
を含む処理を処理装置に実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、罫線抽出方式に係わり、特にＯＣＲ等の文字認識装置において画像の品質に対応して罫線を抽出するための罫線抽出方式に関する。
【０００２】
近年、スキャナ等の入力機器の普及に伴って、文字認識装置（またはソフト）ＯＣＲの需要が増加している。個々の文字の高い認識率を実現するためには、認識の前段階である切り出し処理がその正確さの点で重要になる。これまで、帳票等の処理をＯＣＲで行う場合には、あらかじめ罫線の位置や線の太さといった情報を指定して文字の書かれている範囲についての情報を格納しておく必要があった。また、帳票フォーマットを変更する度に情報入力の必要があり、ユーザにとって負担となっていた。本発明は、このような問題を解決する技術であり、位置、形式ともに未知である帳票画像に対して、また、画質の品質が良くても悪くても、表形式の枠の罫線を正確に抽出することの可能な方式についてである。
【０００３】
なお、本技術は、文字認識装置だけでなく、図面認識における直線認識、画像中の罫線と物体、図形、文字の接触部分の分離などのように、広い意味での直線抽出を行う技術に応用することも可能である。
【０００４】
【従来の技術】
従来から一般に使用されているＯＣＲでは、あらかじめ罫線の位置情報や線の太さ等の情報を帳票データとして格納しておく必要があり、フォーマットを変える度に、情報入力の時間がかかり、また未知の形式の帳票は処理を行うことができない、という問題が生じていた。
【０００５】
そこで、本出願人は、先に特開平９−５０５２７にて、あらかじめ枠の情報を必要としない処理方式を提案した。ここに記載されている方式は、図４４に示すように、連結パターン抽出部４４０１により抽出された部分パターンから、横直線抽出部４４０３及び縦直線抽出部４４１０により直線を抽出し、横直線抽出部４４０３で抽出された横直線を横枠決定部４４１７により上部から２本ずつ組にして横枠とし、縦直線抽出部４４１０で抽出された縦直線の中から縦枠決定部４４１８により縦枠を決定し、２本の横枠と２本の縦枠で囲まれる矩形範囲を、矩形表現部４４２２により枠として抽出する。そして、枠を構成する罫線候補を本来の罫線であるとし、枠を構成しない罫線候補は罫線以外のパターンであるとし、罫線ではないとする処理を行う。
【０００６】
【発明が解決しようとする課題】
しかしながら、実際に上述したような処理を行う場合には、掠れや潰れなどを含む様々な低品質の画像も対象とする必要があり、実際にスキャナで取り込んだ画像データには、品質の良い画像と悪い画像とが混在している場合が多い。現状では、画像の品質の良い場合または悪い場合のそれぞれの場合において、適当な処理または閾値などを設定することは可能である。
【０００７】
しかし、品質の良い画像として設定を行った場合、画像に部分的に品質が悪いところを含んでいると、文字認識の精度が下がってしまう可能性がある。また、品質の悪い画像として設定を行った場合も、画像に部分的に品質が良いところを含んでいると、文字認識の精度が下がってしまう可能性がある。
【０００８】
例えば、品質の良い画像として設定された場合には、低解像度画像を用いた処理を行うことになるが、低解像度の画像だけを用いた処理方式では、比較的潰れた画像に対して処理を行うことになるため、掠れの影響は少なくなり、掠れ画像に対しては精度が高いが、それ以外の画像に対しては、潰れの影響で精度が下がる。
【０００９】
また、品質の悪い画像として設定された場合には、高解像度画像を用いた処理を行うことになるが、高解像度の画像だけを用いた処理方式では、品質の良い画像や、潰れ画像に対しては細かく調査することができるため精度が高くなる。しかし、掠れ画像に対しては、掠れの影響が大きくなるため、精度が低くなる。
【００１０】
そこで、品質の悪い画像であっても、品質の良い画像であっても、またそれらの画像が混在している場合であっても、高精度に罫線、及び四方を罫線候補で囲まれた矩形領域であるセル領域を自動的に抽出することができる技術が求められている。
【００１１】
本発明の課題は、画像の品質に対応した罫線抽出処理を行う、罫線抽出方式を提供することである。
【００１２】
【課題を解決するための手段】
上述した課題を解決するために、請求項１の発明よれば、入力画像から異なる解像度の画像を生成する手段と、前記入力画像の品質を評価する手段と、前記異なる解像度の画像の中から前記品質に応じた解像度の画像を選択する手段と、該選択された画像から罫線またはセルを抽出する手段と、を備えている。このことにより、入力画像の品質の評価結果をもとに、適した画像を選択して罫線抽出をすることが可能となることから、罫線抽出の精度を向上させることが可能となる。
【００１３】
また、請求項２の発明によれば、画像データ内の帳票を構成する罫線を抽出する罫線抽出方式であって、入力画像から異なる解像度の画像を生成する手段と、前記入力画像から異なる解像度の画像を生成する手段によって生成された画像を用いて入力画像の品質を評価する手段と、前記入力画像の品質を評価する手段において評価された品質に基づいて、罫線またはセルを抽出するための処理方法または該処理に用いられる閾値の選択を行う手段と、前記入力画像のそれぞれの部分から罫線またはセルを抽出するための処理に適する画像解像度を選択する手段と、前記選択された画像解像度の画像から、前記罫線またはセルを抽出するための処理方法または該処理に用いられる閾値の選択を行う手段によって選択された処理方法または閾値に基づいて、帳票を構成する罫線またはセルを抽出する手段と、を備える。このことにより、入力画像の品質の評価結果をもとに、適した画像を選択して罫線抽出をすることが可能となることから、罫線抽出の精度を向上させることが可能となる。
【００１４】
また、請求項３の発明によれば、前記入力画像から異なる解像度の画像を生成する手段は、入力画像から間引くデータが多い低解像度画像と入力画像から間引くデータが少ない高解像度画像を作成する。このことにより、後の処理で適切な解像度の画像を用いることが可能となる。
【００１５】
また、請求項４の発明によれば、前記入力画像の品質を評価する手段は、数値で該品質を表現することを特徴とする。このことにより、画像の品質を数値化することが可能となる。
【００１６】
また、請求項５の発明によれば、前記画像の品質を評価する手段による処理を行う前に、あらかじめ罫線候補領域を抽出する罫線候補領域抽出手段を更に備える。このことにより、必要とされる部分の画像の品質を算出することが可能となる。
【００１７】
また、請求項６の発明によれば、前記罫線候補領域抽出手段は、低解像度画像を用いて罫線候補の抽出処理をする。このことにより、画像が掠れている場合であっても罫線候補位置をより正確に抽出することができる。
【００１８】
また、請求項７の発明によれば、前記罫線候補領域抽出手段による処理を行う前に、低解像度画像を用いて点線の抽出を行い、点線を構成するパターンを除去する処理を行う。低解像度画像を用いることで、画像が掠れている場合であっても罫線候補位置をより正確に抽出できるとともに、確実に点線であるとわかる部分を除去することができる。
【００１９】
また、請求項８の発明によれば、低解像度画像を用いて抽出された罫線候補領域内を、高解像度画像を用いて点線抽出処理および罫線抽出処理を行うことで、罫線の属性を判断する。このことにより、低解像度画像では潰れてしまいそうな点と点の間隔が短い点線でもより正確に抽出することが可能となり、点線が誤って直線候補となった場合でも、より精度を保って処理を行うことが可能となる。
【００２０】
また、請求項９の発明によれば、画像の品質を評価する手段は、罫線候補領域抽出手段で用いた画像とは異なる解像度( より高い解像度の画像) の画像を用いて画像の品質の評価を行う。このことより、低解像度画像におこる潰れによる影響をなくすことができる。
【００２１】
また、請求項１０の発明によれば、前記画像の品質する手段において、罫線候補領域内を調査する場合に、罫線候補領域内を縦または横方向に画素探索を行うことで、画像の掠れ度合いを掠れ度という数値で算出する。このことにより、掠れの度合いを詳細に調査することができる。
【００２２】
また、請求項１１の発明によれば、前記掠れ度は、罫線候補領域内を画素探索することで、罫線パターンの途切れの回数及び途切れの長さを求め、それぞれを単位長さ当たりに換算したものを加算して求める。このことにより、掠れの度合いを数値化することができる。
【００２３】
また、請求項１２の発明によれば、前記品質に基づいて、罫線またはセルを抽出するための処理方法または該処理に用いられる閾値の選択を行う手段は、画像の品質を数値で表現した値に応じた罫線抽出の処理方法または罫線抽出処理に用いられる閾値を選択し、設定する。このことにより、画像の品質に適応した処理方法または閾値によって、より高精度に罫線を抽出することができる。
【００２４】
また、請求項１３の発明によれば、前記入力画像のそれぞれの部分に対して罫線またはセルを抽出するための処理に適する画像解像度を選択する手段は、画像の品質を数値で表現した値に基づいて、後の罫線抽出処理に用いる画像を選択する。このことにより、画像の品質が悪い場合に、より品質の良い画像を用いて処理を行うことが可能となり、より高精度に罫線抽出ができる。
【００２５】
また、請求項１４の発明によれば、前記掠れ度は、画像データ全体に対する値と画像データの各部分に対する値とのいずれも算出することができる。このことにより、一つの画像の各部分の画像の品質も判定することができる。
【００２６】
また、請求項１５の発明によれば、前記入力画像のそれぞれの部分に対して罫線またはセルを抽出するための処理に適する画像解像度を選択する手段は、画像データの各部分に対して求められた掠れ度に基づいて、後の罫線抽出処理において画像データの各部分の処理毎に適した解像度の画像を選択する。このことにより、部分的に掠れのある画像にも対応することができる。
【００２７】
また、請求項１６の発明によれば、前記罫線またはセルを抽出する手段は、画像の品質に基づいて、前記罫線候補領域抽出手段で用いた画像とは異なる解像度の画像を用いることも可能である。このことにより、掠れのある画像の場合には、罫線候補領域を抽出した画像より低解像度の画像かまたは同一の画像を用いて再度罫線抽出処理を行うことができ、より高精度の罫線を抽出できる。
【００２８】
また、請求項１７の発明によれば、前記罫線またはセルを抽出する手段は、掠れのない画像であると判断された場合に、より高解像度な画像を用い、掠れのある画像であると判断された場合に、より低解像度な画像を用いる。このことにより、より高精度に罫線を抽出できる。
【００２９】
また、請求項１８の発明によれば、掠れによって複数部分に分離した帳票を含む画像から罫線を抽出する罫線抽出方法に関して、入力画像において縦、横、斜めの八方向のいずれかで繋がっているパターンを連結パターンとして抽出し、抽出された連結パターンのうち、ある一定の大きさを有するもの同士が接近して位置している場合、それらのパターン間の白画素領域の形状を用いて、同一の表を構成するか否かの判断を行う。これにより、掠れ等によって分離した帳票の表構造を正確に抽出することが可能となる。
【００３０】
また、請求項２０の発明によれば、掠れによって複数部分に分離した帳票を含む画像から罫線を抽出する罫線抽出方法に関して、入力画像において縦、横、斜めの八方向のいずれかで繋がっているパターンを連結パターンとして抽出し、抽出された連結パターンのうち、ある一定の大きさを有するもの同士が接近して位置している場合、それらのパターンの端の黒画素の形状を用いて、同一の表を構成するか否かの判断を行う。これにより、掠れ等によって分離した帳票の表構造を正確に抽出することが可能となる。
【００３１】
また、請求項２２の発明によれば、掠れによって複数部分に分離した帳票を含む画像から罫線を抽出する罫線抽出方法に関して、入力画像において縦、横、斜めの八方向のいずれかで繋がっているパターンを連結パターンとして抽出し、抽出された連結パターンのうち、ある一定の大きさを有するもの同士が接近して位置していた場合、それらのパターンから罫線の抽出を行い、それぞれのパターンから抽出された罫線位置に対応関係が一致すれば同一の表を構成すると判断して統合処理を行う。これにより、掠れ等によって分離した帳票の表構造を正確に抽出することが可能となる。
【００３２】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１は、本発明の第１実施例による罫線抽出方式を示すブロック図である。図１において、画像入力手段１０１により入力画像が取得され、異なる解像度の画像生成手段１０２は入力画像からデータを間引くことによって低解像度画像( 図２( ａ))、高解像度画像( 図２( ｂ))を作成する。なお、高解像度画像とは、入力画像の解像度に等しいかまたはそれより低い解像度の画像のことをいい、低解像度画像とは高解像度画像より低い解像度の画像のことをいう。罫線候補領域抽出手段１０３は生成された低解像度画像を用いて罫線候補領域を抽出する。画像の品質評価手段１０４は、高解像度画像の直線候補領域内の画素を探索することにより、画像の品質を評価する。
【００３３】
また、画像の品質評価手段１０４は、画像データ全体の品質評価を行うとともに、画像データの各部分の品質評価をすることも可能である。品質に応じた処理方法または閾値を選択する手段１０５は、画像の品質評価手段１０４で評価した結果に基づいて、画像品質に適応した処理方法または閾値の選択を行う。また、部分処理毎に適した画像解像度を選択する手段１０６は、画像品質に基づいて、処理対象とする画像を選択する。または、画像の各部分に対して求められた画像の品質に基づいて画像の各部分を処理する際に用いる画像の解像度を選択する。以上の前処理から、より正確な罫線抽出処理が罫線抽出処理手段１０７によって行うことが可能である。
【００３４】
罫線候補領域抽出手段１０３では、掠れの影響を受けて直線として抽出できないような場合でも、低解像度画像を用いるため掠れた部分が潰れて直線と判別することができるようになり、罫線候補領域抽出の精度を上げることができる。
【００３５】
また、画像の品質評価手段１０４では、罫線候補領域抽出手段１０３で抽出された直線候補領域内を画素探索し、検出された途切れの回数および途切れの長さを用いて罫線の掠れの度合い（掠れ度）の算出を行う。算出された掠れ度を画像の品質として、品質に応じた処理方法を選択する手段または閾値を選択する手段１０５において適した画像解像度、適した処理及び閾値を選択することが可能となる。
【００３６】
本発明は、画像に掠れのある場合は、画像の掠れの影響が少ない低解像度画像( 図２( ａ))を処理画像として選択し、掠れのない画像においては、詳細な部分に関して調査を行うことができるように高解像度画像( 図２( ｂ))を処理画像として選択して罫線を抽出していくことが特徴である。このように本発明では、罫線抽出処理の前処理として画像の品質評価を行い、その後、評価結果に基づいて品質に適した処理を行うことで、罫線抽出処理の精度を向上させることができる。
【００３７】
図３は、本発明の第２実施例による罫線抽出方式を示すブロック図である。図３に示すように、本実施例における罫線抽出方式は、低解像度画像作成部３０１、高解像度画像作成部３０２、連結パターン抽出部３０３、点線抽出部３０４、点線画像消去部３０５、ラベル統合処理部３０６、罫線候補領域抽出部３０７、罫線属性判定部３０８、点線部を掠れ度算出処理の対象外領域に設定する部分３０９、掠れ度算出部３１０、罫線判別処理部３１１、罫線統合処理部３１２、セル抽出部３１３から成る。
【００３８】
図３において、入力画像は極端な傾きのない２値画像である。低解像度画像作成部３０１、高解像度画像作成部３０２では、入力された画像をＯＲ間引きを用いて縮小処理する。なお、作成された低解像度画像、高解像度画像は後述の処理に用いられる画像とは別に記憶しておき、表示装置での表示に用いる。また、図３における連結パターン抽出部３０３から罫線候補領域抽出３０７までは、掠れによって抽出できなくなることを避けるために低解像度画像を用いる。
【００３９】
図３の連結パターン抽出部３０３では、前処理で得られた低解像度画像において８連結で繋がっているパターンをラベリングし、抽出する。「８連結で繋がっている」のパターンとは、縦、横、斜めの８方向のいずれかで繋がっているパターンを言う。上記ラベリングには、一般的な手法を用いることができる。なお、連結パターン抽出部３０３により得られた画像内の各連結パターンを部分パターンと呼ぶ。又、ラベリングで得られた部分パターンの外接矩形が後述する処理で必要となるので、部分パターンを矩形に近似して得られる矩形の角の座標をラベリングの処理中に算出しておく。
【００４０】
図３の点線抽出処理部３０４では、連結パターン抽出部３０３によってラベリングされた入力画像において、点線を構成するパターンを抽出する。この場合の抽出の対象となる点線を構成するパターンは、一定の長さの線分を一定間隔で配列してなる破線や、異なる長さの線分を規則的に配列してなる鎖線、同じサイズの部分パターンが規則正しく配列する点線などがある。この処理では、点線が抽出されればどのような手法を用いても構わない。以下に、同じサイズの部分パターンが規則正しく並んでいる部分を点線部として抽出する場合の点線抽出処理部３０４を、図４に示す点線を含む表を例に説明する。
【００４１】
まず、図５に示すように、図４のパターンからラベリングにより算出されたラベルの外接矩形４０１内の画像の一部を縦または横方向に短冊５０１として取り出す。そして、その短冊５０１の内部に存在するパターンの大きさと、あらかじめ設定していた点線を構成するパターンの大きさとを比較し、上記あらかじめ設定していた点線を構成するパターンと同じ大きさを有する部分パターンを探す（ここでは例として縦方向の点線を抽出する場合を示す）。
【００４２】
次に、図６に示すように、あらかじめ設定してあった大きさと同じ大きさの部分パターンが見つかった部分を、図５の短冊５０１に垂直な( この場合は縦方向に) 短冊６０１として切り出す。そして、この短冊６０１の範囲内で、上記あらかじめ設定していた点線を構成するパターンと同じ大きさを有する部分パターンを抽出する。
【００４３】
次に、図７に示すように、上記抽出された部分パターンが、ある一定の間隔で並び、かつある一定の数以上連続して並んでいるものを点線部と判断して、これを矩形７０１により近似する。そして、図８に示すように、以上の処理を繰り返して、次々に点線を抽出し、これらを矩形８０１により近似する。
【００４４】
図９は点線抽出処理部３０４の動作を示すフローチャートである。図９において、まず、ステップＳ９０１で、ラベリングされた入力画像の一部を横方向、または縦方向に短冊状に切り出す。
【００４５】
次に、ステップＳ９０２で、ステップＳ９０１で短冊状に切り出した範囲内で、ある一定の大きさの部分パターンが存在するかどうかを判定する。そして、ある一定の大きさの部分パターンが存在しない場合、処理を終了する。一方、ステップＳ９０２において、ある一定の大きさの部分パターンが存在すると判定された場合、ステップＳ９０３に進み、抽出した部分パターンを含み、かつステップＳ９０１で用いた短冊と垂直な短冊状の画像を入力画像から切り出す。
【００４６】
次に、ステップＳ９０４で、ステップＳ９０３で切り出した短冊状の画像の内部に、ある一定の大きさの部分パターンが存在するかどうかを判定する。そして、ある一定の大きさの部分が存在しない場合、処理を終了する。一方、ステップＳ９０４において、ある一定の大きさの部分パターンが存在すると判定された場合、ステップＳ９０５に進み、上記部分パターンを抽出し、該部分パターンが一定の間隔で並んでいるかどうか判定する。そして、該部分パターンが一定の間隔で並んでいない場合、処理を終了する。
【００４７】
一方、ステップＳ９０５において、上記抽出した部分パターンが一定の間隔で並んでいると判定された場合、ステップＳ９０６に進み、部分パターンの存在する範囲を矩形で囲む。そして、ステップＳ９０７で、該矩形で囲まれた範囲を点線の存在範囲とする。
【００４８】
図３における点線画像消去部３０５では、前処理の点線抽出処理で点線の存在範囲であると判定された範囲内の全ての黒画素を白画素に書き換える処理を行う。
【００４９】
図３におけるラベル統合処理部３０６では、掠れによって複数部分に分離した表である場合、同一ラベルを割り振られた部分パターンを統合し、一つの表と見なす処理を行う。ラベルの位置関係だけで判断すると、図１０に示すような二例は、左下のセルが同一の表を構成するのか否かを判断するのは不可能である。しかし、図１０( ａ) はもともと同一の表を構成しているため、統合処理を行う必要があり、図１０( ｂ) は異なる表を構成するため統合処理を行う必要はない。ラベル統合処理３０６では、図１０の( ａ) 、( ｂ) に示す二種類の場合に、一つの表としてみなすかどうかの判定を行い、その結果に基づいて、ラベルの統合処理を行う。
【００５０】
ラベル統合処理部３０６では、部分パターンのラベル間の白または黒画素の形状によりラベルを統合するか否かの判定を行う方法と、罫線の位置情報を用いてラベルを統合するか否かの判定を行う方法との二つの方法がある。これらの二つの方法について、以下に順に説明する。
【００５１】
まず、部分パターンのラベル間の白または黒画素の形状によりラベルを統合する方法については、ラベル間の白画素の形状で判定する方法を例に説明する。
図１１( ａ) に示すように、もともと同一の表を構成するラベル１１０１ａとラベル１１０２ａの間の白画素領域の形状は、図中の矢印の長さが示すように、罫線等により凹凸のある形状の領域となる。また、図１１( ｂ) に示すように、もともと異なる表を構成するラベル１１０１ｂとラベル１１０２ｂの間の白画素領域の形状は、凹凸のない滑らかな形状となる。本手法は、この特徴を利用するものである。
【００５２】
形状の凹凸判定は、ラベル間の白画素の長さを用いる。ある２つのラベル外接矩形の重なりが、大きいものを統合候補として抽出する。候補とされたラベル間の白画素の長さ変化を調査する。この時、大局的な変化だけの場合には、画像が傾いた場合である可能性があるため（近隣の白画素の長さの変異は少なくても、最長値と最短値の差は大きい場合。図１１( ｂ) が傾いた場合を想定）、局所的変化の調査を行う。その結果、大きな変異があれば形状に凹凸があるものとみなす。形状に凹凸があると判断された場合には、対象のラベルと統合し、外接矩形のサイズ変更を行い、以降は同じラベルであるとみなす。
【００５３】
また、同様に黒画素の領域の凹凸を調査しても判定可能である。黒画素の領域の凹凸を調査する場合は、部分パターンを構成するラベルの端の形状が突起状( 対象ラベルが上下方向に位置する部分では、縦罫線が出っ張っている状態。対象ラベルが左右に位置する部分では、横罫線が出っ張っている状態。) になっている場合に同一の表を構成すると判定できる。
【００５４】
図１２に、ラベル間の白画素の形状によりラベルを統合するか否かの判定を行う場合のラベル統合処理のフローチャートを示す。まず、画像情報とラベル情報が入力される。ステップＳ１２０１で、二つのラベル( ａ、ｂ) を選択する。ステップＳ１２０２で、ラベルａとラベルｂの外接矩形が重なっておらず、かつ、ラベルａとラベルｂの外接矩形間の距離が一定値以下でない場合、ステップＳ１２０１に戻る。また、ステップＳ１２０２で、ラベルａとラベルｂの外接矩形が重なっているか、またはラベルａとラベルｂの外接矩形間の距離が一定値以下である場合、ステップＳ１２０３に進み、ラベルａとラベルｂの間の白画素の幅を調べる。ステップＳ１２０４に進み、ラベルａとラベルｂの間の白画素の幅の変化量が、あらかじめ決めた一定値より大きいかを判定し、一定値より大きくない場合は、ステップＳ１２０１に戻る。また、ステップＳ１２０４でラベルａとラベルｂの間の白画素の幅の変化量が一定値より大きいと判定された場合、ステップＳ１２０５に進み、ラベルａとラベルｂを統合してラベルｃとし、ステップＳ１２０６でラベルｃの外接矩形を示す座標値を算出し、処理を終了する。
【００５５】
次に、罫線の位置情報を用いてラベルを統合するか否かの判定を行う方法について説明する。本手法は、二つのラベルから罫線を抽出し、抽出された罫線の対応関係に基づいて判定を行うものである。図１３( ａ) のように、まず、ラベル１３０１ａと、その対象ラベルであるラベル１３０２ａの罫線が抽出される。そして、図１３( ａ) の丸で囲んで示すように、ラベル１３０１ａの罫線が出っ張った状態になっており、かつ、対象ラベルである１３０２ａから抽出された罫線の座標とほぼ同じ位置にある場合には、もともとは連続した罫線が掠れによって、途切れた状態であると判断することができ、同一の表を構成していたものとして統合処理を行うことができる。図１３( ｂ) に示すように、もともと異なる表を構成するラベル１３０１ｂとラベル１３０２ｂから抽出された罫線には、出っ張った部分はないため統合処理は行わない。
【００５６】
図１４に、罫線の位置情報を用いてラベルを統合するか否かの判定を行う場合のラベル統合処理のフローチャートを示す。まず、画像情報とラベル情報が入力される。ステップＳ１４０１で二つのラベルａ、ｂそれぞれから罫線の抽出を行う。ステップＳ１４０２に進み、ラベルａから抽出された罫線のｘ座標が、ラベルｂから抽出された罫線のｘ座標とほぼ同じでないなら、ステップＳ１４０７に進み、統合処理を行わず、処理を終了する。ステップＳ１４０２で、ラベルａから抽出された罫線のｘ座標が、ラベルｂから抽出された罫線のｘ座標とほぼ同じである場合、ステップＳ１４０３に進み、ラベルａから抽出された罫線のｙ座標がラベルｂから抽出された罫線のｙ座標とほぼ同じでない場合、ステップＳ１４０７に進み、統合処理を行わず、処理を終了する。ステップＳ１４０３でラベルａから抽出された罫線のｙ座標がラベルｂから抽出された罫線のｙ座標とほぼ同じ場合、ステップＳ１４０４に進み、ラベルａから抽出された罫線のうち、ラベルｂ方向に突き出た罫線がない場合、ステップＳ１４０７に進み、統合処理を行わず、処理を終了する。ステップＳ１４０４で、ラベルａから抽出された罫線のうち、ラベルｂ方向に突き出た罫線がある場合、ステップＳ１４０５に進み、ラベルｂから抽出された罫線のうち、ラベルａ方向に突き出た罫線がない場合、ステップＳ１４０７に進み、統合処理を行わず、処理を終了する。ステップＳ１４０５で、ラベルｂから抽出された罫線のうち、ラベルａ方向に突き出た罫線がある場合、ステップＳ１４０６に進み、ラベル統合処理を行い、処理を終了する。
【００５７】
以上、図３のラベル統合処理部３０６の説明をした。なお、ラベル統合処理部は掠れ等により分離した帳票の表構造をより正確に抽出するのに有効であり、単独に上記ラベル統合処理に相当する処理を用いて、品質の悪い画像において罫線を抽出することも可能である。よって、上記のように本実施例の処理手順に組み込まれるにとどまらない。
【００５８】
次に、図３に示す罫線候補領域抽出部３０７について述べる。罫線候補領域抽出部３０７は、上述までの処理画像から、罫線の候補領域の抽出を行う。この処理は、罫線を構成する画像の存在する領域を示す情報が示されれば、いかなる方法でも構わない。ここでは、罫線候補領域抽出処理部３０７の一例を以下に示す。
【００５９】
図１５に罫線候補領域抽出部３０７のブロック図を示す。罫線候補領域抽出部３０７は、マスク処理部１５０１、縦横罫線抽出部１５０２から成る。さらに、縦横罫線抽出部１５０２は、線分抽出部１５０３、直線抽出部１５０４、罫線候補抽出部１５０５から成る。図１５に示すブロック図の流れに従って、順に説明する。
【００６０】
マスク処理部１５０１は、ラベル統合処理部３０６によって得られた部分パターン毎に以下に説明するマスク処理を行う。このマスク処理は、ラベル統合処理された画像全体に対して横長及び縦長の２種類のマスク内で走査を行い、マスク内のパターンの示す割合を算出する。算出された値が所定値より大きければ、そのマスク内を全てパターンとみなす。他方、算出された値が所定値以下であれば、マスク内のパターンを削除することにより縦横成分の抽出を行う。複数の行又は列が続いて上記割合が所定値より大きくなると、それらの行又は列をまとめて矩形範囲を作成し、その矩形範囲の中心線を処理結果とする。  尚、マスク処理の結果得られる線分間で、隙間が開かないようにするには、マスク処理を行う範囲に各々重なりを持たせればよい。図１６は、縦×横が１×６画素の矩形範囲を指定するマスクにより横成分を抽出する場合を説明する図である。同図中、( ａ) は互いに重なり合ったマスク「Ｍ１」〜「Ｍ９」を示す。また、同図( ｂ) は原部分パターンの画像の一例を示し、同図( ｃ) は、同図( ａ) に示すマスクを用いてマスク処理を行った場合に抽出される横成分を示す。同図中、黒い丸印が抽出された横成分の画素を表す。
【００６１】
図１７は、マスク処理部１５０１の処理の一実施例をより詳細に説明する図であり、処理をソフトウェアで実現する場合のフローチャートを示す。
図１７において、ステップＳ１７０１は、ラベル統合処理された画像全体に対して横長及び縦長の２種類のマスク内で走査を行う。ステップＳ１７０２は、マスク内のパターンの占める割合、即ち、マスクの大きさに対するマスク内のパターンの面積を算出し、この割合が所定値より大きいか否かを判断する。ステップＳ１７０２の判断結果がＮＯであれば、ステップＳ１７０３で縦成分又は横成分がないと判断して処理が終わる。他方、ステップＳ１７０２の判断結果がＹＥＳの場合は、ステップＳ１７０４でマスク内を全てパターンとみなし、全てを縦成分または横成分とする。ステップＳ１７０５は、得られた成分が上下の成分又は左右の成分と接しているか否かを判断する。ステップＳ１７０５の判断結果がＮＯであると、ステップＳ１７０６で得られた成分を処理結果として出力する。
【００６２】
ステップＳ１７０５の判断結果がＹＥＳの場合は、ステップＳ１７０７で接している成分を統合し、ステップＳ１７０８で統合された成分から矩形範囲を作成する。ステップＳ１７０９は作成された矩形範囲の中心線を算出し、ステップＳ１７１０はその中心線を処理結果として出力する。
【００６３】
次に、縦横罫線抽出部１５０２について述べる。縦横罫線候補の抽出には、１００ｄｐｉ相当の低解像度画像を用いるものとする。
まず、縦横罫線抽出部１５０２における線分抽出部１５０３では、マスク処理されたパターンを横方向及び縦方向に複数に分割し、横方向及び縦方向に分割したそれぞれの範囲でパターンの隣接投影を算出し、ある一定の長さの線分または直線の一部を矩形近似により検出する。ここで、隣接投影とは、注目行または、注目列の投影値に周囲の行又は列の投影値を足し合わせたものである。また、注目行又は注目列の投影値は、その行又は列に存在する黒画素の総和をとったものである。この隣接投影により、直線が傾いていて複数の行又は複数の列にわたってその直線が存在している場合においても、直線を正確に検出することができる。このため、ブロック枠などの大きな枠を検出する場合、その枠が傾いていても、枠を構成する直線を検出することが可能となる。
【００６４】
図１８は、ある矩形枠を構成する線分の投影結果を示す図である。図１８において、縦方向の長さがＬY 、横方向の長さがＬX の矩形枠１８０１の水平方向ｊの投影値Ｐｈ( ｉ) をＨＰ( ｉ) 、矩形枠１８０１の垂直方向ｉの投影値Ｐｖ( ｊ) をＶＰ( ｊ) とすると、ＨＰ( ０) ＝ＨＰ( ｎ) ＝ｍ、ＨＰ( １) 〜ＨＰ（ｎ−１) ＝２、ＶＰ( ０) ＝ＶＰ( ｍ) ＝ｎ、ＶＰ( １) 〜ＶＰ（ｎ−１) ＝２である。このように矩形枠１８０１を構成する直線が存在している部分は、その投影値が大きくなるので、この投影値を算出することにより、矩形枠１８０１を構成している直線を抽出することができる。
Ｐ( ｉ) ＝ｐ( ｉ−ｊ) ＋ｐ( ｉ−ｊ＋１) ＋・・・＋ｐ( ｉ) ＋・・・＋ｐ( ｉ＋ｊ)   ( １)
また、図１９は傾いた直線の画素レベルの様子を示している。この場合、図１９において、( １) 式のｊ＝１として隣接投影値を求める。ｉ−１行目には黒画素が９個だけ存在しているので、ｐ( ｉ−１) ＝９となり、ｉ行目には黒画素が６個だけ存在しているので、ｐ( ｉ) ＝６となる。同様にｐ( ｉ＋１) ＝６。この結果、Ｐ( ｉ) ＝ｐ( ｉ−１) ＋ｐ( ｉ) ＋ｐ( ｉ＋１) ＝２１となる。
【００６５】
このように、直線が傾いているために、複数の行又は複数の列に渡ってその直線が存在している場合、その傾いた直線の隣接投影値は大きくなることから、枠が傾いている場合においても、枠を構成する直線を効率的に検出することが可能となる。
【００６６】
図２０は、隣接投影処理の動作を示すフローチャートである。図２０において、ステップＳ２００１はマスク処理部１５０１で得られた同一のラベルを有する部分パターンを縦方向及び横方向の複数の部分に分割する。次に、ステップＳ２００２で、縦横それぞれの分割範囲内で投影値を算出する。ステップＳ２００３で、算出されたそれぞれの投影値に周囲の投影値を加算する。更に、ステップＳ２００４で、上記( １) 式に基づいて隣接投影値を算出する。線分抽出部１５０３は、部分パターンのマスク処理画像に対する隣接投影値に基づいて、横方向及び縦方向におけるある一定の長さの線分又は直線の一部を、矩形近似により検出する。
【００６７】
すなわち、分割された部分パターンの隣接投影値と縦横それぞれの分割長との比が所定の閾値以上となった場合は、それらの連続する複数の行又は列をまとめた矩形範囲を直線の候補が存在する位置となる。なお、この矩形近似により検出した一定の長さの線分または直線の一部を「矩形線分」と呼ぶ。
【００６８】
例えば、図２１( ａ) に示すように斜めに傾いた横線２１０１を３つの部分に分割し、隣接投影値が閾値以上となっている位置を算出する。この結果、図２１( ｂ) に示すように、横方向に分割された３つの矩形線分２１０２を得ることができる。
【００６９】
ここで、隣接投影法ではなく、通常の投影法を用いて斜めに傾いている直線２１０１を検出した場合、その投影値は小さくなってしまうので、直線２１０１を検出することは不可能となる。一方、斜めに傾いている直線２１０１を通常の投影法で検出するために、部分パターンの分割数を増やし分割長を短くした場合、文字を構成している短い直線も多数検出され、文字と枠とを区別することが困難になる。
【００７０】
これに対して隣接投影法を用いることにより、直線２１０１が斜めに傾いている場合でも、部分パターンの分割長を極端に小さくすることなく、隣接投影値を大きくすることが可能となることから、枠を構成する比較的長い直線を、文字を構成している短い直線と区別しながら正確に検出することができる。
【００７１】
図２２は、線分抽出部１５０３の動作を示すフローチャートである。図２２において、まず、ステップＳ２２０１で、分割された部分パターンの隣接投影値と縦横それぞれの分割長との比が所定の閾値以上であるかどうかを判定する。そして、隣接投影値と縦横それぞれの分割長との比が所定の閾値以上でないと判断された場合、ステップＳ２２０３に進み、線分が存在しないものとみなす。他方、ステップＳ２２０１で隣接投影値と縦横それぞれの分割長との比が所定の閾値以上であると判断された場合、ステップＳ２２０２に進み、線分が存在するものとみなす。
【００７２】
次に、ステップＳ２２０４において、ステップＳ２２０２で線分とみなされたパターンがその上下に存在する線分と接していないと判断された場合、ステップＳ２２０５に進み、矩形線分とする。一方、ステップＳ２２０６において、ステップＳ２２０２で線分とみなされたパターンがその上下に存在する線分と接していると判断された場合、ステップＳ２２０６に進み、線分とみなされたパターンとその上下に存在する線分とを統合する。そして、ステップＳ２２０７において、ステップＳ２２０６で統合した線分を矩形線分として検出する。
【００７３】
図１５の説明に戻ると、直線抽出部１５０４は、線分抽出において抽出された矩形近似された線分のうち、近隣の線分同士を統合して長い直線を検出する。検出された直線は矩形近似を行う。
【００７４】
直線抽出部１５０４は、線分統合部、直線検出部から成る。線分統合部は、図２３( ａ) に示す線分ｙ、ｚのように途中で途切れていない矩形線分同士が接触あるいは繋がっていれば、これらの矩形線分を統合して長い直線とする。さらに、図２３( ａ) に示す線分ｘ、ｙのように、矩形線分が互いに繋がっていなくても、垂直方向の距離が上記隣接投影の際加える行又は列数ｊ以内であれば、これらの矩形線分を統合して長い直線とする( 図２３( ｂ))。直線検出部は、線分統合部で統合された直線の長さと、同じラベルである部分パターンを近似する矩形の長さとの比が所定の閾値以上であれば、横または縦枠を構成する直線の候補であると判断する。
【００７５】
図２４は、直線抽出部１５０４の線分統合部の処理をより詳細に説明する図であり、処理をソフトウェアで実現する場合のフローチャートを示す。
図２４において、ステップＳ２４０１は検出された矩形線分同士の距離を算出する。ステップＳ２４０２で、算出された距離が隣接投影の際、加える行又は列数以内であるか否かを判定する。ステップＳ２４０２の判定結果がＮＯであれば、ステップＳ２４０４で矩形線分の統合は行わないものとする。一方、ステップＳ２４０２の判定結果がＹＥＳであれば、ステップＳ２４０３で矩形線分の統合を行う。
【００７６】
以上のように、罫線候補領域抽出部３０７の線分抽出部１５０３、直線抽出部１５０４について述べたが、最後に、罫線候補領域抽出部３０７の処理として、図１５の罫線候補抽出部１５０５で、直線抽出部１５０４において抽出された直線を罫線候補として抽出を行い、処理を終了する。
【００７７】
低解像画像における以上の処理が終了すると、今度は高解像度画像を用いた処理が進む。図３に戻って説明すると、罫線属性判定部３０８では、低解像度画像を処理することによって得られた罫線候補領域を高解像度で詳細に調査し、罫線の属性( 点線または実線) の判定を行う。
【００７８】
罫線属性判定部３０８は、点線抽出処理部３０４では低解像度画像を用いて抽出したため、点線が繋がってしまっている可能性があるため、高解像度画像で再度調査することで、属性を誤ってつけていることを防ぐ役割を果たす。処理方法は、点線抽出処理部３０４で行ったのと同様に、連結パターン抽出部３０３’でラベリングされた高解像度画像を用い、同じサイズのラベルが規則的に整列しているか否かで判断する。
【００７９】
次に、図３の掠れ度算出処理の対象外領域設定部３０９で、点線抽出処理部３０４で点線領域として抽出された領域と罫線属性判定部３０８で点線領域として得られた領域とを、掠れ度算出処理の対象外領域として設定する。
【００８０】
そして、図３の掠れ度算出部３１０で、処理を行っている画像の罫線の品質を示す度合いとして、掠れの度合い( 掠れ度) を算出する。この結果によって、この後の処理で使用する画像及び閾値等を決定する。
【００８１】
前処理で設定された掠れ度算出対象領域内に処理範囲を限定し( つまり、直線候補のみに対して処理を行う) 、対象となっている画像の掠れ度算出を行う。使用する画像の解像度は、掠れ度合いを正確に調査できるように、高解像度を用いる。
【００８２】
パターンがより多くのパターンに分離している場合に掠れ度が高いとし、さらに、黒画素が消えて白画素が多いほど掠れ度が高いと判断できる。この判断基準に基づいて掠れ度を求めるため、直線候補領域内の画素探査処理において、パターンの途切れの回数及びパターンの途切れ( 白画素) の長さの算出を行う。縦横両方の罫線候補領域に対して処理を行い、算出された結果を単位長さ当たりに換算する。単位長さ当たりのパターンの途切れの回数及びパターンの途切れの長さを足し合わせたものを掠れ度とする。直線候補領域内の探索した画素数をＬ、領域内の白画素数をａ、領域内の白画素領域の数をｂとすると、掠れ度ｃは式( ２) のように表現できる。
【００８３】
ｃ＝ａ／Ｌ＋ｂ／Ｌ          ( ２)
図２５に掠れ度算出の具体例を示す。図２５( ａ) 〜( ｄ) において、矩形近似された罫線候補領域の探索画素数Ｌは２０画素である。同図( ａ) は白画素数ａが６画素、白画素領域ｂが６箇所あるため、掠れ度ｃ＝６／２０＋６／２０＝０．６となる。また、同図( ｂ) は白画素ａが２画素、白画素領域が２箇所あるため、掠れ度ｃ＝２／２０＋２／２０＝０．２となる。このことから、白画素領域の個所の多いほうが掠れ度が高いことがわかる。また、同図( ａ) 、( ｂ) と算出した掠れ度を比較すると、掠れ度と実際の画像の掠れ度合いは一致していると言える。
【００８４】
同図( ｃ) は白画素数ａが３画素、白画素領域ｂか１箇所あるため、掠れ度ｃ＝３／２０＋１／２０＝０．２となる。また、同図( ｄ) は白画素数が７画素、白画素領域が１箇所あるため、掠れ度ｃ＝７／２０＋１／２０＝０．４となる。このことから、白画素数の多いほうが掠れ度が高いことがわかる。また、同図( ｃ) 、( ｄ) と算出した掠れ度を比較すると、掠れ度と実際の画像の掠れ度合いは一致していると言える。
【００８５】
この結果得られた掠れ度にしたがって、後の処理方法、およびパラメータの設定を行う。この後の処理概要を説明すると、掠れ度が低い場合には、許容する掠れの長さを短くし、さらに、高解像度の画像で画像を詳細に調査し、罫線候補領域が罫線か否かを判定する( 図３の罫線判別処理部３１１’) 。掠れ度が高い場合には、許容する掠れの長さを比較的長くし、掠れの影響の少ない低解像度画像で処理を行い( 図３の罫線判別処理部３１１) 、掠れ画像を対象とした，罫線の掠れを補完する処理を加える( 図３の掠れ補完処理部３１２) 。
【００８６】
また、この掠れ度算出の際に、画像全体を一つの掠れ度で表さずに、横罫線に対する掠れ度、縦罫線に対する掠れ度というように複数の掠れ度、またはさらに細かい部分に関して掠れ度を算出しても構わない。この場合、後の処理で画像中のある部分に対して解像度の異なる画像を参照する際、パラメータ設定等も、掠れ度を設定した部分毎に行う。
【００８７】
さらに、掠れ度を算出した結果、掠れのある画像であると判断された場合には、罫線抽出処理を掠れの影響をより少なくした、より低解像度な画像を用いて再度抽出することができるようにすることで、より一層の高精度化を図ることが可能である。逆に、掠れの無い場合には、高解像度の画像を用いても、掠れによる悪影響を考慮する必要がないため、より高解像度の画像で処理を行い、詳細に画像の調査を行うことを可能とすることができる。
【００８８】
掠れ度が算出され、対象画像の品質が判定されると、図３に示すように掠れ度によって処理する画像が異なってくる。掠れ度が高い、すなわち掠れありと判定された場合には低解像度画像がその後の処理に用いられ、掠れ度が低い、すなわち掠れなしと判定された場合には高解像度画像がその後の処理に用いられ、掠れ度が０と算出された場合には、画像が潰れていると判定され、入力画像をそのまま用いる従来の罫線抽出処理３１４を行う。  図３において、掠れ度が高いと判断された後の罫線判別処理部３１１と、掠れ度が低いと判断された後の罫線判別処理部３１１’は用いる画像が異なるだけで、処理内容は同一である。罫線判別処理部３１１、３１１’は、罫線候補領域の凹凸の度合いを調べることによって罫線であるか否かを判定する。したがって、掠れ度の値が高い、つまり悪い品質の画像を用いると、直線と途切れや線が掠れにより消えかかって細くなっているなどの影響により、凹凸の度合いが高く算出され、本来罫線であるところも罫線として判定されない可能性がある。この場合、より低い解像度の画像を用いて罫線判別処理を行うことで掠れによる影響を押さえることができる。掠れ度の低い場合は、罫線の形状への影響はほとんどないと考えられるため、高解像度画像を用いて罫線判別処理を行うことで、より詳細に判断を行うことができる。
【００８９】
用いる画像は異なるが、罫線判別処理部３１１、３１１’は、罫線候補パターンの凹凸度によって、そのパターンが罫線かそれとも文字から誤抽出された部分かを判断するという同一の処理を行う。凹凸度の高いものは、文字からの誤抽出とし、凹凸度の低いものは罫線であると判断する。
【００９０】
罫線判別処理部３１１、３１１’では、罫線候補領域として抽出されている横線または縦線の直線について、横線の場合は左右端、縦線の場合は上下端を正確に検出するために、罫線候補領域内のパターンの探索を行う。図２６は、罫線候補領域内のパターンの探索結果を示す図である。図２６において、罫線の間に「研究部」の文字が記入され、「研究部」の文字列は、下方の罫線に接触している。そして、上方の罫線が罫線候補２６０１として抽出されているとともに、下方の罫線が罫線候補２６０３として抽出され、「研」の文字と「究」の文字とが互いに近接しているため、「研究部」の文字列の一部が罫線候補２６０２として抽出されている。
【００９１】
罫線判別処理部３１１、３１１’では、これら罫線候補２６０１、２６０２、２６０３内のパターンについて探索を行う。この際、探索方向の変化回数を計数する。ここで、罫線候補２６０１のパターンは、本来罫線であることから、真っ直ぐに探索され、探索方向の変化回数の値が小さくなる。一方、罫線候補２６０２のパターンは、本来文字であることから、文字の形状が反映されて探索経路が屈曲し、探索方向の変化回数の値が大きくなる。
【００９２】
この結果、探索方向の変化回数の値が小さいパターンを罫線とみなし、探索方向の変化回数の値が大きいパターンを罫線でないと見なすことにより、罫線候補２６０１のパターンを罫線であると判定することが可能となるとともに、罫線候補２６０２のパターンを罫線でないと判定することが可能となる。
【００９３】
また、探索方向に隣接画素が存在しない場合に限り、斜め方向の画素を探索し、探索方向に隣接画素が存在している間は、同一方向に探索を行うことにより、「研究部」の文字列が接触している罫線候補２６０３のパターンについても、探索方向の変化回数の値が小さくなることから、罫線候補２６０３のパターンを罫線であると判定することが可能となる。
【００９４】
罫線判別処理部３１１、３１１’は探索方向の変化の回数、つまりパターンの凹凸度が、設定した閾値を超えるか否かでそのパターンが罫線であるか否かを判定するが、図２７に該閾値の設定例を示す。図２７において、掠れた罫線の上方に「研究部」の文字列が記入され、掠れた罫線が罫線候補２７０２として抽出されているとともに、「研」の文字と「究」の文字と「部」の文字が互いに近接しているため、「研究部」の文字列の一部が罫線候補２７０１として抽出されている。
【００９５】
罫線候補２７０１は、「研究部」の文字列の一部から誤って抽出されたものであり、罫線候補２７０１の近くには、罫線候補２７０１として抽出された「研究部」の文字列の残りパターンが存在している。したがって、罫線候補２７０１の近くに他のパターンが存在するため、罫線候補２７０１のパターンの凹凸度の閾値ＴＨ１を小さく設定する。このことにより罫線候補２７０１として抽出された「研究部」の文字列の一部を罫線候補から除外することをより正確に行うことが可能となる。
【００９６】
他方、罫線候補２７０２は、罫線から正しく抽出されたものであり、「研究部」の文字列から離れているため、罫線候補２７０２の近くには文字列などの他のパターンは存在しない。したがって、罫線候補２７０２のパターンの凹凸度の閾値ＴＨ２を大きく設定する。このことにより、掠れているために凹凸度が大きくなってしまった罫線候補２７０２を、罫線候補から除外することなくより正確に罫線と判定することが可能となる。
【００９７】
図２８及び２９に、凹凸度算出処理を示すフローチャートを示す。なお、このフローチャートでは、探索を横方向に行う場合について示している。
図２８において、まずステップＳ２８０１で、罫線候補の矩形領域を探索範囲に設定する。次に、ステップＳ２８０２で、罫線候補の矩形領域内のパターンのうち、最も細い部分の横方向の座標を算出し、この最も細い部分の横方向の座標におけるパターンの中心点を算出する。そして、このパターンの中心点を探索の開始点とする。ここで、探索の開始点をパターンの最も細い部分とするのは、最も細い部分は罫線である可能性が高く、枠となる直線の探索をより確実に行うことができるからである。次に、ステップＳ２８０３で、直線の探索方向を右に設定する。次に、ステップＳ２８０４で、ステップＳ２８０２において設定した探索開始点を注目画素として設定する。
【００９８】
次に、ステップＳ２８０５で、空白領域の長さをカウントする計数Ｋの初期値を０に設定する。ステップＳ２８０６で、右上がりまたは左上がりに探索方向が変化した回数をカウントする変数ｈｕｐを０に設定し、ステップＳ２８０７で、右下がりまたは左下がりに探索方向が変化した回数をカウントする変数ｈｂｌを０に設定する。また、ステップＳ２８０８で垂直方向線を横切る回数をカウントする変数ｈｖｅｒを０に設定する。
【００９９】
図３０は、本発明の第２実施例に係わる画素の配置関係を示す図である。図３０において、×印で示した注目画素に対し、Ｄ１は左上斜め隣に隣接する画素、Ｄ２は左に隣接する画素、Ｄ３は左下斜め隣に隣接する画素、Ｄ４は上に隣接する画素、Ｄ５は下に隣接する画素、Ｄ６は右上斜めに隣接する画素、Ｄ７は右に隣接する画素、Ｄ８は右下斜め隣に隣接する画素である。
【０１００】
探索が注目画素から画素Ｄ１に進んだ場合、探索が左上がりに変化し、探索が注目画素から画素Ｄ３に進んだ場合、探索方向が左下がりに変化し、探索が注目画素から画素Ｄ６に進んだ場合、探索方向が右上がりに変化し、探索が注目画素から画素Ｄ８に進んだ場合、探索方向が右下がりに変化することとする。
【０１０１】
図２８の説明に戻ると、ステップＳ２８０９で、注目画素が探索を行うパターンの矩形領域の内部であるかどうかを判定し、注目画素が探索を行うパターンの矩形領域の内部でない場合、ステップＳ２８２３に進み、空白領域の長さをカウントする変数Ｋの値を０に設定してからステップＳ２８２４に進む。
【０１０２】
他方、ステップＳ２８０９で注目画素が探索を行うパターンの矩形領域の内部であると判定された場合、ステップＳ２８１０に進み、注目画素に対し図３０で説明したＤ７の位置に黒画素があるかどうかを判定する。判定がＹＥＳの場合ステップＳ２８１１に進み、注目画素をＤ７の位置の画素とし、注目画素に対しＤ７の位置に黒画素がある場合は右方向に探索を進める。
【０１０３】
一方、ステップＳ２８１０の判定がＮＯの場合、ステップＳ２８１２に進み、注目画素に対しＤ６の位置に黒画素があるかどうかを判定する。判定がＹＥＳの場合、ステップＳ２８１３に進み、変数ｈｕｐの値を１だけ増加させてから、ステップＳ２８１４に進み、注目画素をＤ６の位置の画素とする。これにより、探索方向が右上がりに変化すると伴に、探索方向が右上がりに変化した回数がカウントされる。注目画素がＤ６の位置に移った後は、ステップＳ２８０９〜ステップＳ２８１１の処理が繰り返される。
【０１０４】
一方、ステップＳ２８１２の判定がＮＯの場合、ステップＳ２８１５に進み、注目画素に対しＤ８の位置に黒画素があるかどうかを判断する。判定がＹＥＳの場合、ステップＳ２８１６に進み、変数ｈｂｌの値を１だけ増加させてから、ステップＳ２８１７に進み、注目画素をＤ８の位置の画素とする。これにより、探索方向が右下がりに変化すると伴に、探索方向が右下がりに変化した回数がカウントされる。注目画素がＤ８の位置に移った後は、ステップＳ２８０９〜ステップＳ２８１１の処理が繰り返される。
【０１０５】
一方、ステップＳ２８１５の判定がＮＯの場合、ステップＳ２８１８に進み、空白領域の長さをカウントする変数Ｋが閾値以下であるかどうかを判定する。判定結果がＹＥＳの場合、ステップＳ２８１９に進み、注目画素が黒画素であり、かつ、注目上下( Ｄ４及びＤ５) の画素がともに黒画素であるかを判定する。ステップＳ２８１９の判定がＹＥＳの場合、垂直方向線を横切るとみなして、ステップＳ２８２０に進み、変数ｈｖｅｒを１だけ増加させてから、ステップＳ２８２１に進み、注目画素をＤ７の位置の画素とする。一方、ステップＳ２８１９の判定がＮＯの場合、ステップＳ２８２１に直接進み、注目画素をＤ７の位置の画素とする。ステップＳ２８２２で、空白領域の長さをカウントする変数Ｋを１だけ増加させ、ステップＳ２８０９に戻る。
【０１０６】
他方、ステップＳ２８１８の判定がＮＯの場合、ステップＳ２８２４に進み、探索方向は右に設定されているかどうかを判定する。ここで、探索方向が右に設定されている場合、ステップＳ２８２５に進み、探索方向を左に設定してから、ステップＳ２８２６に進み、ステップＳ２８０２で決定した探索開始点を注目画素に設定する。そして、ステップＳ２８０９に戻り、左方向の探索を行う。
【０１０７】
他方、ステップＳ２８２４の判定で探索方向が右でないと判定された場合、ステップＳ２８２７に進み、変数ｈｕｐ及び変数ｈｂｌの値から画像の傾きに対応する値を減算することにより、画像の傾きの補正を行う。画像の傾きに対応する値は、罫線候補の傾きの平均値から予め算出しておく。そして、ステップＳ２８２８で、変数ｈｕｐ及び変数ｈｂｌ及び変数ｈｖｅｒの値を、ある一定の長さ当たりの値に換算する。次に、ステップＳ２８２９で、ある一定長当たりの値に換算された変数ｈｕｐ、変数ｈｂｌまたは変数ｈｖｅｒの値が閾値以上となった場合、そのパターンを罫線候補から除外する。
【０１０８】
以上の手順で得られた変数ｈｕｐ、変数ｈｂｌおよび変数ｈｖｅｒの値を凹凸度とし、罫線判別処理部では図２７を用いて述べた凹凸度の閾値を用いて罫線であるか否かを判定する。また、変数ｈｕｐ、変数ｈｂｌおよび変数ｈｖｅｒの値を加算し、その結果を直線の長さに対する割合に換算し、その値を注目している直線の変化量、つまり凹凸度とするようにしてもよい。
【０１０９】
なお、図２８及び図２９のフローチャートでは、横方向の探索について述べたが、探索方向を左右から上下に変更することにより、縦方向に探索を行う場合についても同様に行うことが可能である。
【０１１０】
以上、図３における罫線判別処理部３１１、３１１’の処理について説明した。次に、図３の罫線統合処理部３１２の説明を以下に述べる。
図３に示すように、罫線統合処理部３１２による処理は、掠れ度算出部３１０で掠れありと判定された場合に、上述の罫線判別処理部３１１での処理を経た後に行われる。罫線統合処理部３１２では、掠れによって分離した罫線の統合処理を行う。
【０１１１】
また、図３には示していないが、掠れなしと判定された場合にも、罫線統合処理部３１２’を罫線統合判別処理部３１１’とセル抽出部３１３’間に挿入し、罫線抽出精度をより向上させることも可能である。この場合、掠れありと判定された場合に罫線統合処理部３１２で統合可能な罫線間の長さを示す閾値を大きく設定するのに対して、掠れなしと判定された後の罫線統合処理部３１２’では統合可能な罫線間の長さを示す閾値を小さく、または、０として処理を行わないようにする。
【０１１２】
例えば図３１( ａ) に示すように、前処理までで、横線３１０１〜３１０６が抽出されている。ここで、横線３１０２と横線３１０３は掠れの影響により分離している。この場合、同じＹ座標上にあり、かつＸ方向の距離が所定値以下であるかどうかを調べる。横線３１０２と横線３１０３がこの条件を満たす場合、図３１( ｂ) に示すように、横線３１０２と横線３１０３とを統合して横線３１１２とする。この結果、掠れ３１０７を補正した横線３１１１〜３１１５を得る。
【０１１３】
また、縦線の場合、同じＸ座標上にあり、かつＹ方向の距離が所定値以下である直線の統合を行う。
なお、対象としている枠が、不規則な枠である場合、直線の長さや位置が様々であるため、極端に距離が離れた直線の統合を行わないようにする。
【０１１４】
図３２は、罫線統合処理部３１２において横直線を統合する場合の処理の動作を示すフローチャートである。
図３２において、まずステップＳ３２０１で、罫線候補領域抽出処理により抽出された横直線を二本ずつ抽出する。次に、ステップＳ３２０２で、ステップＳ３２０１で抽出された二本の直線のＸ方向の距離が所定の閾値以下であるかどうかを判定する。判定結果がＮＯの場合、処理を終了する。
【０１１５】
一方、ステップＳ３２０２の判定がＹＥＳの場合、ステップＳ３２０３に進み、ステップＳ３２０１で抽出された二本の横直線のＹ方向の距離が所定の閾値以下であるかどうかを判定する。判定結果がＮＯの場合、処理を終了する。
【０１１６】
一方、ステップＳ３２０３の判定がＹＥＳの場合、ステップＳ３２０４に進み、ステップＳ３２０１で抽出された二本の横直線を統合して一本の直線とみなす。
【０１１７】
図３３は、罫線統合処理部３１２において縦直線を統合する場合の処理の動作を示すフローチャートである。図３３は、横直線を統合する場合とほぼ同様である。
【０１１８】
図３３において、まずステップＳ３３０１で、罫線候補領域抽出処理により抽出された縦直線を二本ずつ抽出する。次に、ステップＳ３３０２で、ステップＳ３３０１で抽出された二本の直線のＹ方向の距離が閾値以下であるかどうかを判定する。判定結果がＮＯの場合、処理を終了する。一方、ステップＳ３３０２の判定がＹＥＳの場合、ステップＳ３３０３に進み、ステップＳ３３０１で抽出された二本の縦直線のＸ方向の距離が所定の閾値以下であるかどうかを判定する。判定結果がＮＯの場合、処理を終了する。一方、ステップＳ３３０３の判定がＹＥＳの場合、ステップＳ３３０４に進み、ステップＳ３３０１で抽出された二本の縦直線を統合して一本の直線とみなす。
【０１１９】
次に、以上の処理により得られた罫線から枠を構成する直線を決定し、上下左右の四辺が枠で囲まれた矩形範囲をセルとして抽出する。図３のセル抽出部３１３、３１３’がこの役割を担う。なお、セル抽出部３１３、３１３’において、セルの抽出を行う方法は、いかなる方法を用いても構わない。ここでは、一例として以下の方法を説明する。
【０１２０】
図３４は、本発明の第２実施例におけるセル抽出処理部３１３、３１３’の一例を説明する図である。図３４( ａ) において、入力画像から罫線候補を取得することにより、帳票３４０１を構成する直線が決定される。次に、図３４( ｂ) に示すように、帳票３４０１を構成する直線から、横枠を決定することにより、帳票３４０１を行単位に分割する。次に図３４( ｃ) に示すように、帳票３４０１を構成する直線から、縦枠を決定することにより、帳票３４０１からセルを抽出する。ここで、帳票３４０１から抽出されたセルの中に入れ子構造３４０２があるかどうかを調べる。次に、図３４( ｄ) に示すように、入れ子構造３４０２を新たな帳票とみなして、入れ子構造３４０２からセルを抽出する。
【０１２１】
図３５は、上述の横枠を決定する際の決定方法を説明する図である。図３５において、帳票３４０１に対し、横直線▲１▼〜▲６▼及び縦直線( Ｉ) 〜( ＶＩ) が抽出され、横直線▲１▼〜▲６▼を一番上の行から順番に一行づつ組としていくことにより、横枠を決定する。例えば、横直線▲１▼と横直線▲２▼とが二本組の横線と判断され、この横直線▲１▼と横直線▲２▼とが横枠とされる。この横枠決定方法は、以下の手順により行われる。
【０１２２】
１) セル抽出処理部の前までの処理で、罫線候補と判別された横直線の中から、上から順番に横直線を二本抽出し、これらを二本の横直線の組の候補とする。
２) 組の候補とした二本の横直線の長さが同じ、または下の直線のほうが長ければ、その二本を横直線の組とする。このとき、二本の横直線の長さが異なる場合、長いほうの横直線を再使用可能とする。
【０１２３】
３) 組の候補とした二本の横線のうち、下の横直線のほうが短ければ、さらにその下の横直線を横枠の候補として、これらの横直線の長さを比較する。また、下の横直線のほうが、右方向又は左方向に短ければ、さらにその下の横直線を組みの候補とし、これらの横直線の長さを比較する。
【０１２４】
４) 横直線の長さの比較の結果、上記２) を満足する横直線を満足する横直線が下にないことが判明すると、この場合に限り、上の横直線とその下の横直線を組みとする。
【０１２５】
５) 一番下の横直線の処理後、上部にまだ未処理の横直線がある場合は、再び上から順に未処理の横直線と再使用可能な横直線とを用いて、上記１) 〜４) の処理を行い、二本の横直線の組を作る。
【０１２６】
図３６は、上述の縦枠を決定する際の決定方法を説明する図である。図３６において、帳票３４０１に対し、横直線▲１▼〜▲６▼及び縦直線( Ｉ) 〜( ＶＩ) が抽出され、組となっている横枠に上下とも達している縦直線( Ｉ) 〜( ＶＩ) を縦枠と決定する。例えば、縦直線( Ｉ) と縦直線( ＶＩ) とが、横枠とみなされた横直線▲１▼及び横直線▲２▼に上下とも達しているので、縦直線( Ｉ) と縦直線( ＶＩ) とが縦枠とされる。
【０１２７】
図３７は、上述のセル抽出の方法を説明する図である。図３７において、帳票３４０１に対し、横直線▲１▼〜▲６▼及び縦直線( Ｉ) 〜( ＶＩ) が抽出され、四方が横枠及び縦枠で囲まれた矩形領域をセルとして抽出する。例えば、横直線▲１▼と縦直線( ＩＶ) と横直線▲２▼と縦直線( Ｉ) とで囲まれた矩形領域がセルとして抽出されるとともに、横直線▲１▼と縦直線( ＶＩ) と横直線▲２▼と縦直線( ＩＶ) とで囲まれた矩形領域がセルとして抽出される。
【０１２８】
図３８は、上述の入れ子構造の抽出の方法を説明する図である。図３８において、横直線▲２▼と縦直線( ＩＩＩ) と横直線▲４▼と縦直線( Ｉ) とで囲まれた矩形領域がセルとして抽出された場合、このセルは入れ子構造３４０２となっている。このため、入れ子構造３４０２を構成する直線から横枠及び縦枠を決定し、入れ子構造３４０２内で、四方が横枠及び縦枠で囲まれた矩形領域をセルとして抽出する。例えば、横直線▲２▼と縦直線( ＩＩＩ) と横直線▲３▼と縦直線( Ｉ) とで囲まれた矩形領域、横直線▲３▼と縦直線( ＩＩ) と横直線▲４▼と縦直線( Ｉ) とで囲まれた矩形領域、及び横直線▲３▼と縦直線( ＩＩＩ) と横直線▲４▼と縦直線( ＩＩ) とで囲まれた矩形領域がセルとして抽出される。
【０１２９】
以下に、図３５に示した横枠決定方法のフローチャートを図３９に示す。
図３９において、まず、ステップＳ３９０１で、罫線候補と判別された直線の中から、最上部の二本の横直線を取り出す。次に、ステップＳ３９０２で、取り出した二本の直線のうち、上側の横直線をｕｐｌｉｎｅ、下側の横直線をｂｌｌｉｎｅ、とする。ステップＳ３９０３で、直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとに縦方向の重なりがあるかどうかを判定する。判定結果がＮＯの場合、ステップＳ３９０４に進み、直線ｂｌｌｉｎｅの下の直線を新たに直線ｂｌｌｉｎｅとし、この処理を直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとに縦方向の重なりがあることが判定されるまで続ける。
【０１３０】
一方、ステップＳ３９０３の判定結果がＹＥＳの場合、ステップＳ３９０５に進み、直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとの長さが同じであるか、または直線ｕｐｌｉｎｅより直線ｂｌｌｉｎｅのほうが長いかどうかを判定する。そして、上記条件を満足する直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅが存在する場合、ステップＳ３９０８に進み、直線ｕｐｌｉｎｅと上記直線ｂｌｌｉｎｅを二本の横直線の組( 二本組の横枠) とする。なお、直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとの長さが同じであるとは、図４０に示した横直線の配置状態を説明する図のうち、同図( ａ) のような状態を示す。
【０１３１】
一方、ステップＳ３９０５において、直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとの長さが異なっており、かつ直線ｕｐｌｉｎｅより直線ｂｌｌｉｎｅのほうが短い場合、ステップＳ３９０６に進み、直線ｂｌｌｉｎｅより下部に、直線ｕｐｌｉｎｅと長さが同じであるか、または直線ｕｐｌｉｎｅより長い直線ｂｌｌｉｎｅ２が存在するかどうかを判定する。判定結果がＹＥＳの場合、ステップＳ３９０７に進み、直線ｂｌｌｉｎｅを直線ｂｌｌｉｎｅ２に変更してステップＳ３９０８に進む。なお、直線ｕｐｌｉｎｅより直線ｂｌｌｉｎｅのほうが短いとは、図４０( ｂ) のような状態を示し、直線ｕｐｌｉｎｅより直線ｂｌｌｉｎｅのほうが長いとは、図４０( ｃ) のような状態を示す。
【０１３２】
ステップＳ３９０６の判定結果がＮＯの場合、ステップＳ３９０８に進み、直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅとを二本組の横枠とする。
次に、ステップＳ３９０９で、図４１のフローチャートで示す縦枠決定処理及び入れ子処理を行う。次に、ステップＳ３９１０で、ステップＳ３９０８で二本枠とした直線ｕｐｌｉｎｅと直線ｂｌｌｉｎｅの長さが異なるかどうかを判定する。判定結果がＹＥＳの場合、ステップＳ３９１１に進み、右方向へ長い直線又は左方向に長い直線を再利用可能として、ステップＳ３９１２に進む。なお、右方向へ長い直線とは図４０( ｄ) に示す直線ｂｌｌｉｎｅのことを言い、左方向に長い直線とは、図４０( ｅ) に示す直線ｂｌｌｉｎｅである。
【０１３３】
一方、ステップＳ３９１０の判定結果がＮＯの場合、ステップＳ３９１２に進み、直線ｂｌｌｉｎｅより下方に直線が存在するかどうかを判定する。そして、判定結果がＮＯの場合、ステップＳ３９１３に進み、直線ｂｌｌｉｎｅとその下の直線を抽出し、ステップＳ３９０２に戻る。
【０１３４】
ステップＳ３９１２の判定結果がＹＥＳの場合、ステップＳ３９１４に進み、再使用可能の直線を除いて、処理済の直線を処理対象からはずす。次に、ステップＳ３９１５で、未処理の直線が存在するかどうかを判定する。判定結果がＮＯの場合、処理を終了する。一方、ステップＳ３９１５の判定結果がＹＥＳの場合、ステップＳ３９１６に進み、最上部から直線を二本取り出し、ステップＳ３９０２に戻る。
【０１３５】
図４１は、ステップＳ３９０９の縦枠決定及び入れ子処理の詳細を示すフローチャートである。図４１において、まず、ステップＳ４１０１で、最上位の行の二本組の横枠を選択し、ステップＳ４１０２で、罫線候補の縦直線の中から、上端と下端との両方が二本組の横枠に達しているものを選択する。次に、ステップＳ４１０３で、選択した縦直線を縦枠と決定する。次に、ステップＳ４１０４で、二本組の横枠と二本組の縦枠とで囲まれた矩形領域を抽出する。そして、ステップＳ４１０５で、矩形領域の左右二本の縦枠に両端が達している横直線が存在するかどうかを判定する。判定結果がＮＯの場合、次の行の横枠を選択する処理を行い、これにより新たに決定された二本組みの横枠に対して上記ステップＳ４１０２〜ステップＳ４１０７と同様の処理を実行する。
【０１３６】
一方、ステップＳ４１０５の判定結果がＹＥＳの場合、ステップＳ４１０６に進み、その矩形領域を新たに小さな表( 入れ子構造の矩形) とみなし、この入れ子構造の矩形領域内に存在する小さな矩形領域の横枠を決定する。そして、ステップＳ４１０７に示すように、入れ子構造の矩形領域内の縦枠を決定する処理を行う。
【０１３７】
以上のように、図３に示す第２実施例の罫線抽出方式について述べた。本発明により、画像の品質によらず、より高精度に罫線の抽出が可能となる。
また、本発明第１の実施例、第２の実施例で述べた罫線抽出方式を実現するためのハードウェア構成の一例を図４２に示す。帳票等の画像データは、スキャナ等の入力機器４２０１を介して、コンピュータ等の処理装置４２０２に取り込まれる。ここで、上述した罫線抽出方式による一連の処理が行われる。途中の処理結果を、ディスプレイ等の出力装置４２０３に出力させ、出力画像により処理経過を確認しながら、抽出処理を行わせることもできる。また、図４２では処理装置は単体で示してあるが、複数のコンピュータからなる処理装置やネットワークによって接続された複数の処理装置( コンピュータ) によっても実現が可能で、この場合、上述の罫線抽出方式の各処理手段を各処理装置に分散させた形態となる。
【０１３８】
なお、本発明は処理装置４２０２において画像の品質によらず、より高精度に罫線の抽出が可能な罫線抽出方式に係わるプログラムであり、図４３は、本発明に係わるソフトウェアプログラムの提供方法を説明する図である。プログラムは、例えば以下の３つの方法の中の任意の方法により提供される。
【０１３９】
( ａ) コンピュータ等の処理装置４３０１にインストールされて提供される。この場合、プログラム等は例えば出荷前にプレインストールされる。これは、上述してきた罫線抽出方式のソフトウェアプログラムの配布方法に相当する。
【０１４０】
( ｂ) 可搬性記憶媒体に格納されて提供される。この場合、可搬性記憶媒体４３０２に格納されているプログラム等は、コンピュータ等の処理装置４３０１の記憶装置にインストールされる。
【０１４１】
(c) ネットワーク４３０３上のサーバから提供される。この場合、基本的には、コンピュータ等の処理装置４３０１がサーバ４３０４に格納されているプログラム等をダウロードすることによって、そのプログラム等を取得する。
【０１４２】
【発明の効果】
以上詳細に説明したように、本発明によれば、画像の掠れの度合いを算出して画像の品質を評価し、それに基づいて罫線抽出処理に用いる画像を低解像度画像、高解像度画像の中から選択することにより、従来、掠れによって正しく抽出されなかったような罫線も正しく抽出することが可能となり、罫線抽出の精度を向上させることが可能となる。
【０１４３】
また、本発明の一態様によれば、掠れの度合いを表す掠れ度は、経線候補領域内を縦または横方向に画素探索し、罫線単位長当たりのパターンの途切れの回数及び途切れの長さを求めることで算出される。このことにより、掠れの度合いを数値化することができ、また数値化された掠れ度に応じた、罫線抽出の処理方法、罫線抽出処理に用いられる閾値、用いる画像等を設定することができる。
【０１４４】
また、本発明の一態様によれば、前記掠れ度は、画像データ全体に対する値と画像データの各部分に対する値とのいずれでも求めることができる。このことにより、一つの画像の各部分の画像の品質を判定することができ、その結果、後の画像データの各部分毎の処理に適した解像度の画像を選択することができる。
【０１４５】
また、本発明の一態様によれば、掠れによって複数部分に分離した帳票を含む画像から罫線を抽出する罫線抽出方法に関して、入力画像において縦、横、斜めの八方向のいずれかで繋がっているパターンを連結パターンとして抽出し、抽出された連結パターンのうち、ある一定の大きさを有するもの同士が接近して位置している場合、以下の３つの方法のうちいずれかを用いて同一の表として統合するか否かの判断を行う。１) それらのパターン間の白画素領域の形状を用いて判断する。２) それらのパターンの端の黒画素領域の形状を用いて判断する。３) 抽出された罫線位置の対応関係を用いて判断する。このことにより、掠れ等によって分離した帳票の表構造をより正確に抽出することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例に係わる罫線抽出方式を示すブロック図である。
【図２】（ａ) は低解像度画像の例を示す図であり、（ｂ) は高解像度画像の例を示す図である。
【図３】本発明の第２の実施例に係わる罫線抽出方式を示すブロック図である。
【図４】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理を説明する図（その１）である。
【図５】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理を説明する図（その２）である。
【図６】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理を説明する図（その３）である。
【図７】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理を説明する図（その４）である。
【図８】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理を説明する図（その５）である。
【図９】本発明の第２実施例に係わる罫線抽出方式の点線抽出処理部の動作を示すフローチャートである。
【図１０】本発明の第２実施例に係わる罫線抽出方式のラベル統合処理部に入力されるデータの例を示す図であり、（ａ) は、もともと一つの表を構成したものが掠れによって分離した例を示し、（ｂ) は、もともと二つの表を構成する例を示したものである。
【図１１】ラベル間の白画素領域の例を示す図であり、（ａ) は、もともと同一の表を構成する場合であり、（ｂ) は、もともと異なる表を構成する場合の例を示したものである。
【図１２】ラベル間の白( または黒) 画素の形状によりラベルを統合するか否かの判定を行う場合のラベル統合処理のフローチャートを示す図である。
【図１３】対象ラベルの罫線の対応関係の例を示す図であり、（ａ) は、もともと同一の表を構成する場合であり、（ｂ) は、もともと異なる表を構成する場合の例を示したものである。
【図１４】罫線の位置情報( 対応関係) を用いてラベルを統合するか否かの判定を行う場合のラベル統合処理のフローチャートを示す図である。
【図１５】本発明の第２実施例に係わる罫線候補領域抽出部のブロック図の一例を示す図である。
【図１６】本発明の第２実施例に係わるマスク処理の方法を示す図である。
【図１７】本発明の第２実施例に係わるマスク処理の動作を示すフローチャートである。
【図１８】枠を構成する線分のの投影結果を示す図である。
【図１９】本発明の第２実施例に係わる線分抽出部における隣接投影処理を説明する図である。
【図２０】本発明の第２実施例に係わる線分抽出部における隣接投影処理の動作を示すフローチャートである。
【図２１】本発明の第２実施例に係わる線分抽出処理を示す図である。
【図２２】本発明の第２実施例に係わる線分抽出処理部の動作を示すフローチャートである。
【図２３】本発明の第２実施例に係わる直線抽出処理を示す図である。
【図２４】本発明の第２実施例に係わる直線抽出処理部における線分統合処理の動作を示すフローチャートである。
【図２５】本発明の第２実施例に係わる掠れ度算出処理を示す図である。
【図２６】本発明の第２実施例に係わる罫線判別処理において、罫線候補領域のパターン探索結果を示す図である。
【図２７】本発明の第２実施例に係わる罫線判別処理部において、罫線候補領域のパターンの凹凸度の閾値の設定例を示す図である。
【図２８】本発明の第２実施例に係わる罫線判別処理部における凹凸度算出処理を示すフローチャートである。
【図２９】図２８のフローチャートの続きである。
【図３０】本発明の第２実施例に係わる画素の配置関係を示す図である。
【図３１】本発明の第２実施例に係わる罫線統合処理部における横直線統合処理を説明する図である。
【図３２】本発明の第２実施例に係わる罫線統合処理部において、横直線を統合する場合の処理の動作を示すフローチャートである。
【図３３】本発明の第２実施例に係わる罫線統合処理部において、縦直線を統合する場合の処理の動作を示すフローチャートである。
【図３４】本発明の第２実施例に係わるセル抽出処理部の処理を説明する図である。
【図３５】本発明の第２実施例に係わるセル抽出処理部における横枠決定方法を説明する図である。
【図３６】本発明の第２実施例に係わるセル抽出処理部における縦枠決定方法を説明する図である。
【図３７】本発明の第２実施例に係わるセル抽出処理部におけるセル抽出方法を説明する図である。
【図３８】本発明の第２実施例に係わるセル抽出部における入れ子構造の抽出方法を説明する図である。
【図３９】本発明の第２実施例に係わるセル抽出部における横枠決定方法を示すフローチャートである。
【図４０】本発明の第２実施例に係わる横直線の配置状態を説明する図である。
【図４１】本発明の第２実施例に係わるセル抽出部における縦枠決定及び入れ子処理を示すフローチャートである。
【図４２】本発明に係わる罫線抽出方式を実行するハードウェア構成の一例を示す図である。
【図４３】本発明に係わるソフトウェアプログラム等の提供方法を説明する図である。
【図４４】あらかじめ枠の情報を必要としない帳票処理における従来法の一例を示す図である。
【符号の説明】
１０１画像入力手段
１０２異なる解像度の画像生成手段
１０３罫線候補領域抽出手段
１０４画像の品質評価手段
１０５品質に応じた処理方法または閾値を選択する手段
１０６部分処理毎に適した画像解像度を選択する手段
１０７罫線抽出処理( セル抽出) 手段
３０１低解像度画像作成部
３０２高解像度画像作成部
３０３、３０３’連結パターン抽出部
３０４点線抽出処理部
３０５点線画像消去部
３０６ラベル統合処理部
３０７罫線候補領域抽出部
３０８罫線属性判定部
３０９掠れ度算出処理の対象外領域設定部
３１０掠れ度算出部
３１１、３１１’罫線判別処理部
３１２罫線統合処理部( 掠れ補完処理)
３１３セル抽出部
３１４従来の処理
１５０１マスク処理部
１５０２縦横罫線の抽出
１５０３線分抽出部
１５０４直線抽出部
１５０５罫線候補抽出部
４２０１入力機器
４２０２処理装置( コンピュータ等)
４２０３出力装置
４３０１処理装置( コンピュータ等)
４３０２記憶媒体
４３０３ネットワーク
４３０４サーバ
【図１】
0004409678.tif 000002
【図２】
0004409678.tif 000003
【図３】
0004409678.tif 000004
【図４】
0004409678.tif 000005
【図５】
0004409678.tif 000006
【図６】
0004409678.tif 000007
【図７】
0004409678.tif 000008
【図８】
0004409678.tif 000009
【図９】
0004409678.tif 000010
【図１０】
0004409678.tif 000011
【図１１】
0004409678.tif 000012
【図１２】
0004409678.tif 000013
【図１３】
0004409678.tif 000014
【図１４】
0004409678.tif 000015
【図１５】
0004409678.tif 000016
【図１６】
0004409678.tif 000017
【図１７】
0004409678.tif 000018
【図１８】
0004409678.tif 000019
【図１９】
0004409678.tif 000020
【図２０】
0004409678.tif 000021
【図２１】
0004409678.tif 000022
【図２２】
0004409678.tif 000023
【図２３】
0004409678.tif 000024
【図２４】
0004409678.tif 000025
【図２５】
0004409678.tif 000026
【図２６】
0004409678.tif 000027
【図２７】
0004409678.tif 000028
【図２８】
0004409678.tif 000029
【図２９】
0004409678.tif 000030
【図３０】
0004409678.tif 000031
【図３１】
0004409678.tif 000032
【図３２】
0004409678.tif 000033
【図３３】
0004409678.tif 000034
【図３４】
0004409678.tif 000035
【図３５】
0004409678.tif 000036
【図３６】
0004409678.tif 000037
【図３７】
0004409678.tif 000038
【図３８】
0004409678.tif 000039
【図３９】
0004409678.tif 000040
【図４０】
0004409678.tif 000041
【図４１】
0004409678.tif 000042
【図４２】
0004409678.tif 000043
【図４３】
0004409678.tif 000044
【図４４】
0004409678.tif 000045