(57)【要約】      （修正有）【課題】文字組版を基調とした印刷物を光学的に読み取って得られた文書画像に対して、基準線が存在しない場合であっても、高精度な傾き補正を行うことが可能な文書画像の傾き補正装置を提供する。【解決手段】文書画像を背景画素、文字画素にする二値化手段１０と、二値画像に対して水平方向または垂直方向に文字画素が存在する文字画素領域を膨張させる文字画素領域膨張手段２０と、水平方向に膨張させた二値画像内の文字画素領域のエッジ部より水平方向の折れ線を複数抽出するか、垂直方向に膨張させた二値画像内の文字画素領域のエッジ部より垂直方向の折れ線を複数抽出するエッジ抽出手段３０と、抽出された複数の折れ線を構成する頂点座標列をもとに、各々の折れ線を直線近似し、各々の近似直線の傾き角を算出する傾き角算出手段４０と、算出された複数の折れ線の傾き角の平均値に基づいて、文書画像に対して回転処理を施す文書回転手段５０を備える。【選択図】図２
2014230119.tif 000002
【特許請求の範囲】
【請求項１】
光学的読み取りを行って得られた文書画像に対して、光学的読み取り時の傾きを補正する装置であって、
前記文書画像の各画素の値としきい値を比較して二値化し、二値画像を作成する二値化手段と、
前記二値画像のうち、一方の値をとる画素を文字画素、他方の値をとる画素を背景画素とし、前記二値画像に対して水平方向または垂直方向に文字画素が存在する文字画素領域を膨張させる文字画素領域膨張手段と、
前記水平方向に膨張させた二値画像内の文字画素領域のエッジ部より水平方向の折れ線を複数抽出するか、前記垂直方向に膨張させた二値画像内の文字画素領域のエッジ部より垂直方向の折れ線を複数抽出するようにしているエッジ抽出手段と、
前記抽出された複数の折れ線を構成する頂点座標列をもとに、各々の折れ線を直線近似し、各々の近似直線の傾き角を算出する傾き角算出手段と、
前記算出された複数の折れ線の傾き角の平均値に基づいて、前記文書画像に対して回転処理を施して補正画像を作成する文書回転手段と、
を備えることを特徴とする文書画像の傾き補正装置。
【請求項２】
請求項１において、
前記二値化手段は、水平方向の全画素に占める文字画素の割合と、垂直方向の全画素に占める文字画素の割合を算出し、水平方向の全画素に占める文字画素の割合が垂直方向の全画素に占める文字画素の割合より大きい場合は横組と、垂直方向の全画素に占める文字画素の割合が水平方向の全画素に占める文字画素の割合より大きい場合は縦組と判定し、
前記文字画素領域膨張手段は、前記二値化手段により横組と判定された場合、水平方向に文字画素領域を膨張させるようにし、前記二値化手段により縦組と判定された場合、垂直方向に文字画素領域を膨張させるようにしていることを特徴とする文書画像の傾き補正装置。
【請求項３】
請求項１または請求項２において、
前記文字画素領域膨張手段は、対象とする背景画素より水平方向にＤ画素（Ｄ＞２）以内に文字画素が少なくとも１つ存在するか、当該背景画素より垂直方向にＤ画素以内に文字画素が少なくとも１つ存在する場合に、当該背景画素を文字画素に置換することにより、水平方向または垂直方向に文字画素領域を膨張させるようにしていることを特徴とする文書画像の傾き補正装置。
【請求項４】
請求項１から請求項３のいずれか一項において、
前記エッジ抽出手段は、前記水平方向の折れ線を抽出するにあたり、前記水平方向に文字画素領域を膨張させた二値画像に対して垂直方向に文字画素が２個以上連続しないように補正して前記エッジ部を特定し、
前記垂直方向の折れ線を抽出するにあたり、前記垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が２個以上連続しないように補正して前記エッジ部を特定していることを特徴とする文書画像の傾き補正装置。
【請求項５】
請求項４において、
前記エッジ抽出手段は、前記水平方向の折れ線を抽出するにあたり、前記水平方向に文字画素領域を膨張させた二値画像に対して垂直方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、垂直方向に文字画素が２個以上連続しないようにして前記エッジ部を特定し、
前記垂直方向の折れ線を抽出するにあたり、前記垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、水平方向に文字画素が２個以上連続しないようにして前記エッジ部を特定していることを特徴とする文書画像の傾き補正装置。
【請求項６】
請求項４または請求項５において、
前記エッジ抽出手段は、水平方向に隣接する文字画素が垂直方向に上下Ｍ画素（Ｍ＞１）以内に収まっている文字画素の座標列を前記水平方向の折れ線の頂点座標列として抽出するようにし、垂直方向に隣接する文字画素が水平方向に左右Ｍ画素以内に収まっている文字画素の座標列を前記垂直方向の折れ線の頂点座標列として抽出するようにしていることを特徴とする文書画像の傾き補正装置。
【請求項７】
請求項４から請求項６のいずれか一項において、
前記エッジ抽出手段は、前記水平方向に文字画素領域を膨張させた二値画像に対して、垂直方向の一方から他方に向かって探索して前記水平方向の複数の折れ線を第１折れ線群として抽出するとともに、垂直方向の他方から一方に向かって探索して前記水平方向の複数の折れ線を第２折れ線群として抽出するか、または前記垂直方向に文字画素領域を膨張させた二値画像に対して、水平方向の一方から他方に向かって探索して前記垂直方向の複数の折れ線を第１折れ線群として抽出するとともに、水平方向の他方から一方に向かって探索して前記垂直方向の複数の折れ線を第２折れ線群として抽出するようにし、
前記傾き角算出手段は、前記第１折れ線群および前記第２折れ線群の各々の近似直線の傾き角を算出するようにし、
前記文書回転手段は、前記第１折れ線群の折れ線の傾き角の平均値と前記第２折れ線群の折れ線の傾き角の平均値のいずれか絶対値が大きい方の平均値に基づいて、前記回転処理を施すようにしていることを特徴とする文書画像の傾き補正装置。
【請求項８】
請求項１から請求項７のいずれか一項において、
前記傾き角算出手段は、前記折れ線の頂点座標列の重心を算出し、重心と各頂点座標との水平方向の平均距離と、重心と各頂点座標との垂直方向の平均距離との比率に対して逆正接（arctangent）を算出することにより前記傾き角を算出するようにしていることを特徴とする文書画像の傾き補正装置。
【請求項９】
請求項１から請求項８のいずれか一項において、
前記補正画像に対して非可逆圧縮を施して所定の形式の電子文書ファイルを作成する電子文書作成手段をさらに有することを特徴とする文書画像の傾き補正装置。
【請求項１０】
請求項１から請求項８のいずれか一項において、
前記補正画像に対して、ＲＧＢ各階調の深さを所定の深さ以下に低下させることにより全体の色数を所定数以下に低下させた色数削減画像を作成し、色数削減画像に対して圧縮を施して所定の形式の電子文書ファイルを作成する電子文書作成手段をさらに有することを特徴とする文書画像の傾き補正装置。
【請求項１１】
請求項９または請求項１０において、
前記電子文書作成手段は、前記補正画像を基に特定された文字コードを非描画属性に設定し、割り付け位置を維持しながら前記電子文書ファイルに組み込むようにしていることを特徴とする文書画像の傾き補正装置。
【請求項１２】
請求項１から請求項１１のいずれか一項に記載の文書画像の傾き補正装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、紙等の媒体を光学的に読み取って得られた文書画像の傾き補正に関し、特に、高精度に傾きを補正するための技術に関する。
【背景技術】
【０００２】
電子データが存在しない印刷物を基に電子化する場合、製本形態をページ単位に分離してスキャン（光学的読取）する方法が行われるが、スキャン時に少なからず傾きが発生してしまう。わずかな傾きでも、水平な罫線は斜めになり、ランレングス符号量は増大するとともに、斜め線の画素サンプリングに伴うジャギー（エイリアシング）が発生してしまい、解像度が低い電子ディスプレイで表示したりズーム表示を行うと目立つようになる。従って、できる限り水平になるように回転補正することが望まれるが、回転角が微小量であるため手動計測は難しく、計測精度が悪い角度で回転補正をかけると逆効果になるという問題がある。
【０００３】
この対策として、原稿に角度計測用のマークを付与してスキャンする方法がとられている。印刷物の製版工程では色見当合せ用のトンボが付与されているが、印刷物の段階でトリミングされ、通常の印刷物には基準マークがない。このため、文書中の罫線などを基準に補正する方法（特許文献１参照）や、マークが付与された台紙に貼ってスキャンする方法（特許文献２参照）が提案されている。
【０００４】
また、文字部の背景に注目し、３×３画素のマスクパターンを用いて背景画像中の文字領域の孤立画素を順次背景色で塗りつぶして、文字の組版方向に細線化された線分を作成し、線分の角度を算出することにより、傾きを検出する方法（特許文献３参照）も提案されている。また、文書画像を所定の幅の矩形領域の部分画像に分割し、文字組版方向の傾き角を計算する方法（特許文献４参照）も提案されている。
【０００５】
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−８３７４０号公報
【特許文献２】特許第３４４３１４１号公報
【特許文献３】特許第２５５４９４３号公報
【特許文献４】特許第３８７６５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の技術については、一般書籍の各ページにおいては罫線が全く存在しない方が一般的であるため、適用できないという問題がある。また、特許文献２に記載の技術については、台紙に貼った段階で発生する傾きは補正できないという問題がある。特許文献３に記載の技術については、３×３画素のマスクパターンの設定方法が問題で、文字のフォントやサイズが多様になると、それに応じてマスクパターンを準備しないと、細線化処理が適切に機能しなくなり、線分の角度算出が不能になるという懸念がある。特許文献４に記載の技術については、部分画像の大きさの設定方法が問題で、部分画像内に複数行の文字が配置されたり、文字幅が部分画像をはみ出すような設定をすると、傾き角を算出できなくなるという懸念がある。
【０００８】
そこで、本発明は、文字組版を基調とした印刷物を光学的に読み取って得られた文書画像に対して、基準線が存在しない場合であっても、高精度な傾き補正を行うことが可能な文書画像の傾き補正装置を提供することを課題とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明第１の態様では、光学的読み取りを行って得られた文書画像に対して、光学的読み取り時の傾きを補正する装置であって、前記文書画像の各画素の値としきい値を比較して二値化し、二値画像を作成する二値化手段と、前記二値画像のうち、一方の値をとる画素を文字画素、他方の値をとる画素を背景画素とし、前記二値画像に対して水平方向または垂直方向に文字画素が存在する文字画素領域を膨張させる文字画素領域膨張手段と、前記水平方向に膨張させた二値画像内の文字画素領域のエッジ部より水平方向の折れ線を複数抽出するか、前記垂直方向に膨張させた二値画像内の文字画素領域のエッジ部より垂直方向の折れ線を複数抽出するようにしているエッジ抽出手段と、前記抽出された複数の折れ線を構成する頂点座標列をもとに、各々の折れ線を直線近似し、各々の近似直線の傾き角を算出する傾き角算出手段と、前記算出された複数の折れ線の傾き角の平均値に基づいて、前記文書画像に対して回転処理を施す文書回転手段と、を備えることを特徴とする文書画像の傾き補正装置を提供する。
【００１０】
本発明第１の態様によれば、イメージスキャナ等によりスキャニングされて得られた文書画像の各画素の値としきい値を比較して二値化して二値画像を作成し、二値画像のうち、一方の値をとる画素を文字画素、他方の値をとる画素を背景画素とし、二値画像に対して水平方向または垂直方向に文字画素が存在する文字画素領域を膨張させる文字画素領域膨張手段と、二値画像に対して水平または垂直のいずれかの方向に文字画素を膨張させ、水平方向に膨張させた二値画像内の文字画素領域のエッジ部より水平方向の折れ線を複数抽出するか、垂直方向に膨張させた二値画像内の文字画素領域のエッジ部より垂直方向の折れ線を複数抽出するようにし、抽出された複数の折れ線を構成する頂点座標列をもとに、各々の折れ線を直線近似し、各々の近似直線の傾き角を算出し、算出された全ての折れ線の傾き角の平均値に基づいて、スキャニングされた文書画像に対して回転処理を施すようにしたので、文字組版を基調とした印刷物を光学的に読み取って得られた文書画像に対して、基準線が存在しない場合であっても、高精度な傾き補正を行うことが可能となる。
【００１１】
また、本発明第２の態様では、前記二値化手段は、水平方向の全画素に占める文字画素の割合と、垂直方向の全画素に占める文字画素の割合を算出し、水平方向の全画素に占める文字画素の割合が垂直方向の全画素に占める文字画素の割合より大きい場合は横組と、垂直方向の全画素に占める文字画素の割合が水平方向の全画素に占める文字画素の割合より大きい場合は縦組と判定し、前記文字画素領域膨張手段は、前記二値化手段により横組と判定された場合、水平方向に文字画素領域を膨張させるようにし、前記二値化手段により縦組と判定された場合、垂直方向に文字画素領域を膨張させるようにしていることを特徴とする。
【００１２】
本発明第２の態様によれば、二値化の際、水平方向の全画素に占める文字画素の割合と、垂直方向の全画素に占める文字画素の割合を算出し、前者が後者より大きい場合は横組と、後者が前者より大きい場合は縦組と判定し、横組と判定された場合、水平方向に文字画素を膨張させるようにし、縦組と判定された場合、垂直方向に文字画素を膨張させるようにしたので、横組であるか縦組であるかを的確に判断して、それぞれに対応した補正を行うことが可能となる。
【００１３】
また、本発明第３の態様では、前記文字画素領域膨張手段は、対象とする背景画素より水平方向にＤ画素（Ｄ＞２）以内に文字画素が少なくとも１つ存在するか、当該背景画素より垂直方向にＤ画素以内に文字画素が少なくとも１つ存在する場合に、当該背景画素を文字画素に置換することにより、水平方向または垂直方向に文字画素領域を膨張させるようにしていることを特徴とする。
【００１４】
本発明第３の態様によれば、文字画素領域を膨張させる際、対象とする背景画素より水平方向にＤ画素（Ｄ＞２）以内に文字画素が少なくとも１つ存在するか、垂直方向にＤ画素以内に文字画素が少なくとも１つ存在する場合に、その背景画素を文字画素に置換することにより、水平方向または垂直方向に膨張させるようにしたので、文字画素領域を適正に膨張させることが可能となる。
【００１５】
また、本発明第４の態様では、前記エッジ抽出手段は、前記水平方向の折れ線を抽出するにあたり、前記水平方向に文字画素領域を膨張させた二値画像に対して垂直方向に文字画素が２個以上連続しないように補正し、前記垂直方向の折れ線を抽出するにあたり、前記垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が２個以上連続しないように補正していることを特徴とする。
【００１６】
本発明第４の態様によれば、水平方向の折れ線を抽出するにあたり、水平方向に文字画素領域を膨張させた二値画像に対して垂直方向に文字画素が２個以上連続しないように補正し、垂直方向の折れ線を抽出するにあたり、垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が２個以上連続しないように補正するようにしたので、的確なエッジの抽出が可能となる。
【００１７】
また、本発明第５の態様では、前記エッジ抽出手段は、前記水平方向の折れ線を抽出するにあたり、前記水平方向に文字画素領域を膨張させた二値画像に対して垂直方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、垂直方向に文字画素が２個以上連続しないようにし、前記垂直方向の折れ線を抽出するにあたり、前記垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、水平方向に文字画素が２個以上連続しないようにしていることを特徴とする。
【００１８】
本発明第５の態様によれば、水平方向の折れ線を抽出するにあたり、水平方向に膨張させた文字画素領域を二値画像に対して垂直方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、垂直方向に文字画素が２個以上連続しないようにし、垂直方向の折れ線を抽出するにあたり、垂直方向に文字画素領域を膨張させた二値画像に対して水平方向に文字画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を背景画素に置換することにより、水平方向に文字画素が２個以上連続しないようにしたので、的確なエッジの抽出が可能となる。
【００１９】
また、本発明第６の態様では、前記エッジ抽出手段は、水平方向に隣接する文字画素が垂直方向に上下Ｍ画素（Ｍ＞１）以内に収まっている文字画素の座標列を前記水平方向の折れ線の頂点座標列として抽出するようにし、垂直方向に隣接する文字画素が水平方向に左右Ｍ画素以内に収まっている文字画素の座標列を前記垂直方向の折れ線の頂点座標列として抽出するようにしていることを特徴とする。
【００２０】
本発明第６の態様によれば、水平方向に隣接する文字画素が垂直方向に上下Ｍ画素（Ｍ＞１）以内に収まっている文字画素の座標列を水平方向の折れ線の頂点座標列として抽出し、垂直方向に隣接する文字画素が水平方向に左右Ｍ画素以内に収まっている文字画素の座標列を前記垂直方向の折れ線の頂点座標列として抽出するようにしたので、所定以上の長さをもつエッジを的確に抽出することが可能となる。
【００２１】
また、本発明第７の態様では、前記エッジ抽出手段は、前記水平方向に文字画素領域を膨張させた二値画像に対して、垂直方向の一方から他方に向かって探索して前記水平方向の複数の折れ線を第１折れ線群として抽出するとともに、垂直方向の他方から一方に向かって探索して前記水平方向の複数の折れ線を第２折れ線群として抽出するか、または前記垂直方向に文字画素領域を膨張させた二値画像に対して、水平方向の一方から他方に向かって探索して前記垂直方向の複数の折れ線を第１折れ線群として抽出するとともに、水平方向の他方から一方に向かって探索して前記垂直方向の複数の折れ線を第２折れ線群として抽出するようにし、前記傾き角算出手段は、前記第１折れ線群および前記第２折れ線群の各々の近似直線の傾き角を算出するようにし、前記文書回転手段は、前記第１折れ線群の折れ線の傾き角の平均値と前記第２折れ線群の折れ線の傾き角の平均値のいずれか絶対値が大きい方の平均値に基づいて、前記回転処理を施すようにしていることを特徴とする。
【００２２】
本発明第７の態様によれば、水平方向に文字画素領域を膨張させた二値画像に対して、垂直方向の一方から他方に向かって探索して水平方向の複数の折れ線を第１折れ線群として抽出するとともに、垂直方向の他方から一方に向かって探索して水平方向の複数の折れ線を第２折れ線群として抽出するか、または垂直方向に文字画素領域を膨張させた二値画像に対して、水平方向の一方から他方に向かって探索して垂直方向の複数の折れ線を第１折れ線群として抽出するとともに、水平方向の他方から一方に向かって探索して垂直方向の複数の折れ線を第２折れ線群として抽出するようにし、第１折れ線群および第２折れ線群の各々の近似直線の傾き角を算出し、第１折れ線群の折れ線の傾き角の平均値と第２折れ線群の折れ線の傾き角の平均値のいずれか絶対値が大きい方の平均値に基づいて、回転処理を施すようにしたので、傾きの方向がいずれであっても、的確にエッジを抽出することが可能となる。
【００２３】
また、本発明第８の態様では、前記傾き角算出手段は、前記折れ線の頂点座標列の重心を算出し、重心と各頂点座標との水平方向の平均距離と、重心と各頂点座標との垂直方向の平均距離との比率に対して逆正接（arctangent）を算出することにより前記傾き角を算出するようにしていることを特徴とする。
【００２４】
本発明第８の態様によれば、折れ線の頂点座標列の重心を算出し、重心と各頂点座標との水平方向の平均距離と、重心と各頂点座標との垂直方向の平均距離との比率に対して逆正接（arctangent）を算出することにより傾き角を算出するようにしたので、抽出したエッジから正確な傾き角を算出することが可能となる。
【００２５】
また、本発明第９の態様では、前記補正画像に対して非可逆圧縮を施して所定の形式の電子文書ファイルを作成する電子文書作成手段をさらに有することを特徴とする。
【００２６】
本発明第９の態様によれば、補正画像に対して非可逆圧縮を施してＰＤＦ等の電子文書ファイルを作成するようにしたので、紙媒体から読み取って電子文書ファイルを作成する際、電子文書ファイルに貼付された画像の傾きが補正されたものとなる。
【００２７】
また、本発明第１０の態様では、前記補正画像に対して、ＲＧＢ各階調の深さを所定の深さ以下（例えば１６階調以下）に低下させることにより全体の色数を所定数以下（例えば２５６色以下）に低下させた色数削減画像を作成し、色数削減画像に対して圧縮（ＺＩＰ等の可逆圧縮またはＪＰＥＧ等の非可逆圧縮）を施して所定の形式の電子文書ファイルを作成する電子文書作成手段をさらに有することを特徴とする。
【００２８】
本発明第１０の態様によれば、補正画像に対してＲＧＢ各階調の深さを所定の深さ以下に低下させることにより全体の色数を所定数以下に低下させた色数削減画像を作成し、色数削減画像に対して圧縮を施してＰＤＦ等の電子文書ファイルを作成するようにしたので、紙媒体から読み取って電子文書ファイルを作成する際、電子文書ファイルに貼付された画像の傾きが補正されたものになるとともに、画像を伸張する際、モスキートノイズの発生を低減することが可能となる。
【００２９】
また、本発明第１１の態様では、前記電子文書作成手段は、前記補正画像を基に特定された文字コードを非描画属性に設定し、割り付け位置を維持しながら前記電子文書ファイルに組み込むようにしていることを特徴とする。
【００３０】
本発明第１１の態様によれば、補正画像を基に特定された文字コードを非描画属性に設定し、割り付け位置を維持しながら電子文書ファイルに組み込むようにしているので、ＰＤＦファイル等の電子文書ファイルを利用する際、非描画属性に設定された文字コードを利用した全文検索が可能となる。
【発明の効果】
【００３１】
本発明によれば、文字組版を基調とした印刷物を光学的に読み取って得られた文書画像に対して、基準線が存在しない場合であっても、高精度な傾き補正を行うことが可能となる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態に係る文書画像の傾き補正装置のハードウェア構成図である。
【図２】本発明の一実施形態に係る文書画像の傾き補正装置の構成を示す機能ブロック図である。
【図３】本発明の一実施形態に係る文書画像の傾き補正装置の処理概要を示すフローチャートである。
【図４】横組の場合における本発明による画像の変化の様子を示す図である。
【図５】縦組の場合における本発明による画像の変化の様子を示す図である。
【図６】水平方向（ｘ方向）への膨張処理の様子を示す図である。
【図７】水平方向（ｘ方向）のエッジ抽出・細線化処理の様子を示す図である。
【図８】横組の場合におけるベクトル抽出と傾き角算出処理の詳細を示すフローチャートである。
【図９】横組の場合におけるベクトル抽出における２方向の探索の様子を示す図である。
【図１０】横組の場合におけるベクトル抽出処理の詳細を示すフローチャートである。
【図１１】ベクトル抽出処理の具体例を示す図である。
【図１２】横組に対応した抽出ベクトルを構成する頂点（黒画素）を示す図である。
【図１３】縦組の場合におけるベクトル抽出と傾き角算出処理の詳細を示すフローチャートである。
【図１４】縦組の場合におけるベクトル抽出における２方向の探索の様子を示す図である。
【図１５】縦組の場合におけるベクトル抽出処理の詳細を示すフローチャートである。
【図１６】縦組の場合におけるベクトル抽出処理の具体例を示す図である。
【図１７】縦組に対応した抽出ベクトルを構成する頂点（黒画素）を示す図である。
【図１８】横組の場合における文書画像の回転の様子を示す図である。
【図１９】読み取った文書画像の具体例を示す図である。
【図２０】二値化処理、水平方向の画素膨張処理後の画像の具体例を示す図である。
【図２１】エッジ抽出・細線化処理後の画像の具体例を示す図である。
【図２２】文書画像回転処理後の画像の具体例を示す図である。
【図２３】色数削減処理を説明するための図である。
【発明を実施するための形態】
【００３３】
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
＜１．装置構成＞
図１は、本発明の一実施形態に係る文書画像の傾き補正装置のハードウェア構成図である。本実施形態に係る文書画像の傾き補正装置は、汎用のコンピュータで実現することができ、図１に示すように、ＣＰＵ（Central Processing Unit）１と、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２と、ＣＰＵ１が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置３と、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）４と、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５と、液晶ディスプレイ等の表示デバイスである表示部６と、を備え、互いにバスを介して接続されている。また、文書画像の傾き補正装置は、データ入出力Ｉ／Ｆ５を介してイメージスキャナ７と接続されている。イメージスキャナ７は、紙等のシート状の媒体から情報を光学的に読み取り画像を出力する光学的読取装置であり、公知の様々なイメージスキャナを採用することができる。
【００３４】
図２は、本実施形態に係る文書画像の傾き補正装置の構成を示す機能ブロック図である。図２において、１０は二値化手段、２０は文字画素領域膨張手段、３０はエッジ抽出手段、４０は傾き角算出手段、５０は文書回転手段、５５は電子文書作成手段、６０は文書画像記憶手段、７０は補正画像記憶手段である。
【００３５】
二値化手段１０は、光学的読取装置であるイメージスキャナ７により光学的に読み取られた（スキャニングされた）フルカラーまたはグレースケール階調をもつ文書画像の背景領域を背景画素（本実施形態では白画素）、文字領域を文字画素（本実施形態では黒画素）に二値化し、二値画像を作成する。ここで、文書画像とは、文字組版を基調とした印刷物が読み取られることにより得られる文字列が表現された画像である。文字画素領域膨張手段２０は、二値化手段１０により作成された二値画像に対して水平方向または垂直方向に文字画素領域を膨張させる。エッジ抽出手段３０は、水平方向または垂直方向に膨張させた二値画像内の文字画素領域のエッジ部より水平方向または垂直方向の折れ線を複数抽出する。傾き角算出手段４０は、エッジ抽出手段３０により抽出された複数の折れ線を構成する頂点座標列をもとに、各々の折れ線を直線近似し、各々の近似直線の傾き角を算出する。文書回転手段５０は、傾き角算出手段４０により算出された全ての折れ線の傾き角の平均値に基づいて、光学的に読み取られたフルカラーまたはグレースケール階調をもつ文書画像に対して回転処理を施して補正画像を作成する。電子文書作成手段５５は、補正画像に対して色数削減、圧縮を施して所定の形式の電子文書ファイルを作成する。
【００３６】
文書画像記憶手段６０は、コンピュータで処理可能な文書画像を記憶した記憶手段であり、ＲＡＭ２により実現される。現実には、データ入出力Ｉ／Ｆ５を介して接続されたイメージスキャナ７から、スキャニングにより得られた文書画像がバスを介してＲＡＭ２に記憶される。事前に他のイメージスキャナによりスキャニングされた文書画像を記憶装置３に格納し、記憶装置３を文書画像記憶手段６０として利用するようにしても良い。最近のイメージスキャナには、紙媒体から読み取った画像を圧縮してＰＤＦ等の電子文書ファイルを作成するものもあるが、そのようなイメージスキャナを用いた場合には、作成した電子文書ファイルを記憶装置３に記憶する。補正画像記憶手段７０は、文書画像に対して傾き補正を行った補正画像を記憶する記憶手段であり、記憶装置３により実現される。この際、補正画像を圧縮して所定の電子文書ファイルを作成するようにしても良い。作成する電子文書ファイルとしては、様々な形式のものが利用可能であるが、本実施形態では、汎用的なフォーマットであるＰＤＦ形式を用いている。二値化手段１０、文字画素領域膨張手段２０、エッジ抽出手段３０、傾き角算出手段４０、文書回転手段５０、電子文書作成手段５５は、ＣＰＵ１が、記憶装置３に記憶されているプログラムを実行することにより実現される。
【００３７】
図２に示した各構成手段は、現実には図１に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、ＣＰＵ等の演算処理部を有し、データ処理が可能な装置を意味する。したがって、パーソナルコンピュータであっても良いし、ハードウェア的にイメージスキャナと一体的に構成されたものであっても良い。
【００３８】
図１に示した記憶装置３には、ＣＰＵ１を動作させ、コンピュータを、文書画像の傾き補正装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、ＣＰＵ１は、二値化手段１０、文字画素領域膨張手段２０、エッジ抽出手段３０、傾き角算出手段４０、文書回転手段５０、電子文書作成手段５５としての機能を実現することになる。また、記憶装置３は、文書画像記憶手段６０、補正画像記憶手段７０として機能するだけでなく、文書画像の傾き補正装置としての処理に必要な様々なデータを記憶する。
【００３９】
＜２．処理動作＞
＜２．１．処理概要＞
次に、図１、図２に示した文書画像の傾き補正装置の処理動作について説明する。図３は、本発明の一実施形態に係る文書画像の傾き補正装置の処理概要を示すフローチャートである。まず、二値化手段１０が、読み込んだ文書画像に対して二値化処理を行う（ステップＳ１０）。次に、文字画素領域膨張手段２０が、水平／垂直方向膨張処理を行う（ステップＳ２０）。続いて、エッジ抽出手段３０が、水平／垂直方向エッジ抽出・細線化処理を行う（ステップＳ３０）。そして、エッジ抽出手段３０、傾き角算出手段４０が、ベクトル抽出と傾き角算出処理を行う（ステップＳ４０）。続いて、文書回転手段５０が、文書画像の回転処理を行う（ステップＳ５０）。さらに、電子文書作成手段５５が、補正画像に対して色数削減、圧縮を施して所定の形式の電子文書ファイルを作成する（ステップＳ６０）。
【００４０】
図４、図５に、処理過程における画像の変化の様子を示す。図４は横組の場合、図５は縦組の場合を示している。図４（ａ）、図５（ａ）は、光学的に読み取られた文書画像であり、四角い枠は、文字の配置が傾いていることを模式的に示したものである。図４（ｂ）、図５（ｂ）は、ステップＳ２０における膨張処理後の二値画像であり、黒い部分が文字画素領域を膨張させた部分である。図４（ｃ）、図５（ｃ）は、ステップＳ３０におけるエッジ抽出・細線化処理後の二値画像であり、黒い部分が文字画素領域のエッジ部分である。図４（ｄ）、図５（ｄ）は、ステップＳ５０における回転処理後の補正画像であり、四角い枠は、文字の配置が水平方向に並ぶように補正されたことを模式的に示したものである。
【００４１】
＜２．２．二値化処理＞
まず、ステップＳ１０における二値化手段１０による文書画像の二値化について説明する。イメージスキャナにより紙原稿をスキャンすることにより得られた文書画像の各画素値をＩｍａｇｅ（ｘ，ｙ）とする。ｘ，ｙは画素を特定する変数であり、０≦ｘ≦Ｘｓ−１、０≦ｙ≦Ｙｓ−１である。したがって、文書画像は、Ｘｓ×Ｙｓ個の画素で構成される。Ｉｍａｇｅ（ｘ，ｙ）は０〜２５５の整数値をとるグレースケール画像である。
【００４２】
また、二値化後の画像である二値画像の各画素値をＩｍａｇｅＢ（ｘ，ｙ）とする。ｘ，ｙは文書画像と同様、画素を特定する変数であり、０≦ｘ≦Ｘｓ−１、０≦ｙ≦Ｙｓ−１である。したがって、二値画像は、文書画像と同様、Ｘｓ×Ｙｓ個の画素で構成される。
【００４３】
二値化手段１０は、事前に設定された二値化しきい値Ｓ（例えば、Ｓ＝２００）を用いて、Ｉｍａｇｅ（ｘ，ｙ）≧Ｓの場合、ＩｍａｇｅＢ（ｘ，ｙ）＝２５５、Ｉｍａｇｅ（ｘ，ｙ）＜Ｓの場合、ＩｍａｇｅＢ（ｘ，ｙ）＝０とする処理を行う。これにより、０〜２５５のグレースケール階調をもつ文書画像は、０か２５５のいずれかの値をもつ二値画像に変更される。通常、紙原稿において文字は黒色で表現され、背景は紙の地色の白色であることが多いため、紙媒体上の文字領域が黒色の画素に、背景領域は白色の画素に変換される。したがって、紙媒体上の文字領域は、“０”の値を持つ黒い画素に、紙媒体上の背景領域は、“２５５”の値を持つ白い画素に変換される。しかし、紙媒体上で文字を白、背景を黒にした場合には、文字領域は“２５５”の値を持つ白い画素に、背景領域は、“０”の値を持つ黒い画素に変換される。したがって、以下においては、文字領域を文字画素である黒画素、背景領域を背景画素である白画素と変換した場合を想定して説明するが、文字領域を文字画素である白画素、背景領域を背景画素である黒画素と変換するようにしても良い。
【００４４】
次に、二値化手段１０は、二値画像を水平方向、垂直方向それぞれに走査する。そして、水平方向、垂直方向それぞれについて文字画素である黒画素の割合を算出する。続いて、水平方向の全画素に占める黒画素の割合と垂直方向の全画素に占める黒画素の割合を比較する。比較の結果、水平方向の黒画素の割合の方が大きければ、横組と判断し、垂直方向の黒画素の割合の方が大きければ、縦組と判断する。具体的には、以下の〔数式１〕に従った処理を実行し、水平方向の走査線上の黒画素の割合の最大値と、垂直方向の走査線上の黒画素の割合の最大値を比較し、横組か縦組かを判断する。
【００４５】
〔数式１〕
ＭＩＮy｛ΣxＩｍａｇｅＢ（ｘ，ｙ）｝／Ｘｓ＜ＭＩＮx｛ΣyＩｍａｇｅＢ（ｘ，ｙ）｝／Ｙｓの場合、横組み
ＭＩＮy｛ΣxＩｍａｇｅＢ（ｘ，ｙ）｝／Ｘｓ＞ＭＩＮx｛ΣyＩｍａｇｅＢ（ｘ，ｙ）｝／Ｙｓの場合、縦組み
【００４６】
“０”と“２５５”の値をとる二値画像において、黒画素の値は“０”であるため、水平方向の走査線上の黒画素の割合の最大値は、ＭＩＮy｛ΣxＩｍａｇｅＢ（ｘ，ｙ）｝／Ｘｓで表現され、このＭＩＮy｛ΣxＩｍａｇｅＢ（ｘ，ｙ）｝／Ｘｓが小さい場合は、水平方向の走査線上の黒画素の割合の最大値が大きいことになる。また、垂直方向の走査線上の黒画素の割合の最大値は、ＭＩＮx｛ΣyＩｍａｇｅＢ（ｘ，ｙ）｝／Ｙｓで表現され、このＭＩＮx｛ΣyＩｍａｇｅＢ（ｘ，ｙ）｝／Ｙｓが小さい場合は、垂直方向の走査線上の黒画素の割合の最大値が大きいことになる。
【００４７】
＜２．３．膨張処理＞
次に、ステップＳ２０における文字画素領域膨張手段２０による水平／垂直方向膨張処理について説明する。二値化手段１０により横組みと判断された場合、文字画素領域膨張手段２０は、水平方向膨張処理を行う。具体的には、全ての画素（ｘ，ｙ）（０≦ｘ≦Ｘｓ−１、０≦ｙ≦Ｙｓ−１）を左上（０，０）から右下（Ｘｓ−１，Ｙｓ−１）に走査して、０≦ｄ≦Ｄ−１（Ｄ＞２、例えば、Ｄ＝１２８）なるオフセット値を定義し、ｄ個の画素の中でＩｍａｇｅＢ（ｘ＋ｄ，ｙ）＝０なる画素が少なくとも１つ存在する場合、ＩｍａｇｅＢ（ｘ，ｙ）＝０に置換する処理を行う。これにより、各ｙについて、水平方向（ｘ方向）への膨張が行われる。この際、ｘが最小となる黒画素より小さい側のｘにおいては、黒画素への置換を行わない。水平方向（ｘ方向）への膨張処理の様子を図６に示す。
【００４８】
一方、二値化手段１０により縦組みと判断された場合、文字画素領域膨張手段２０は、垂直方向膨張処理を行う。具体的には、全ての画素（ｘ，ｙ）（０≦ｘ≦Ｘｓ−１、０≦ｙ≦Ｙｓ−１）を左上（０，０）から右下（Ｘｓ−１，Ｙｓ−１）に走査して、０≦ｄ≦Ｄ−１（Ｄ＞２、例えば、Ｄ＝１２８）なるオフセット値を定義し、ｄ個の画素の中でＩｍａｇｅＢ（ｘ，ｙ＋ｄ）＝０なる画素が少なくとも１つ存在する場合、ＩｍａｇｅＢ（ｘ，ｙ）＝０に置換する処理を行う。これにより、各ｘについて、垂直方向（ｙ方向）への膨張が行われる。この際、ｙが最小となる黒画素より小さい側のｙにおいては、黒画素への置換を行わない。
【００４９】
＜２．４．エッジ抽出・細線化処理＞
次に、ステップＳ３０におけるエッジ抽出手段３０による水平／垂直方向エッジ抽出・細線化処理について説明する。二値化手段１０により横組みと判断された場合には、エッジ抽出手段３０は、水平方向エッジ抽出・細線化処理を行う。具体的には、画素（ｘ，ｙ）を０≦ｙ≦Ｙｓ−２の範囲で垂直方向に走査し、ＩｍａｇｅＢ（ｘ，ｙ）とＩｍａｇｅＢ（ｘ，ｙ＋１）が等しくない場合、ＩｍａｇｅＢ（ｘ，ｙ）＝０に置換し、ＩｍａｇｅＢ（ｘ，ｙ）とＩｍａｇｅＢ（ｘ，ｙ＋１）が等しい場合、ＩｍａｇｅＢ（ｘ，ｙ）＝２５５に置換する。すなわち、垂直方向に黒画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を白画素に置換する。これにより、垂直方向に黒画素が２個以上連続しなくなる。この処理を、水平方向の全範囲（０≦ｘ≦Ｘｓ−１）で順次行う。水平方向（ｘ方向）のエッジ抽出・細線化処理の様子を図７に示す。図７（ａ）に示した文字画素領域に対して、水平方向エッジ抽出・細線化処理を行うことにより、図７（ｂ）に示したような黒画素で表現されたエッジが抽出されることになる。
【００５０】
一方、二値化手段１０により縦組みと判断された場合には、エッジ抽出手段３０は、垂直方向エッジ抽出・細線化処理を行う。具体的には、画素（ｘ，ｙ）を０≦ｘ≦Ｘｓ−２の範囲で水平方向に走査し、ＩｍａｇｅＢ（ｘ，ｙ）とＩｍａｇｅＢ（ｘ＋１，ｙ）が等しくない場合、ＩｍａｇｅＢ（ｘ，ｙ）＝０に置換し、ＩｍａｇｅＢ（ｘ，ｙ）とＩｍａｇｅＢ（ｘ＋１，ｙ）が等しい場合、ＩｍａｇｅＢ（ｘ，ｙ）＝２５５に置換する。水平方向に黒画素が連続する箇所を抽出し、抽出箇所の開始点または終了点の画素以外を白画素に置換することにより、水平方向に黒画素が２個以上連続しなくなる。この処理を、垂直方向の全範囲（０≦ｙ≦Ｙｓ−１）で順次行う。
【００５１】
＜２．５．１．ベクトル抽出とベクトルの角度算出処理（横組）＞
次に、ステップＳ４０におけるエッジ抽出手段３０、傾き角算出手段４０によるベクトル抽出とベクトルの角度算出処理について説明する。まず、横組の文書画像に好適な処理について説明する。図８は、エッジ抽出手段３０、傾き角算出手段４０によるベクトル抽出とベクトルの角度算出処理を示すフローチャートである。なお、ここで、抽出するベクトルとは、傾き角を求めるためのものであり、現実に抽出するのは、後述するようにＮ個の頂点からなる折れ線である。Ｎ個の頂点からなる折れ線は、全体として方向と大きさ（画素数）を持つため、ここでは、ベクトルと表現する。エッジ抽出手段３０は、まず、第１探索モードの初期設定を行う（ステップＳ１０１）。具体的には、初期値として角度合計Ａ＝０、平均角度Ａ１＝０、抽出ベクトル数ｖ＝０に設定する。また、探索開始画素（ｘ，ｙ）＝（０，Ｙｓ−１）に設定する。次に、傾き角算出手段４０は、対象画素（ｘ，ｙ）を始点とするベクトルを抽出する（ステップＳ１０２）。ステップＳ１０２におけるベクトル抽出処理については、後述する。
【００５２】
ステップＳ１０２において、ベクトルを抽出することができた場合には、傾き角算出手段４０は、抽出したベクトルの傾き角を算出する（ステップＳ１０３）。ステップＳ１０３における傾き角算出処理については、後述する。傾き角ａｎｇが算出されたら、角度合計Ａに傾き角ａｎｇを加算する（Ａ←Ａ＋ａｎｇ）。また、抽出ベクトル数ｖを１だけインクリメントする（ｖ←ｖ＋１）。
【００５３】
続いて、水平方向の画素を特定する変数ｘを１だけインクリメントした（ステップＳ１０４）後、水平方向の終端を示すＸｓ−１と比較する（ステップＳ１０５）。ｘ≦Ｘｓ−１の場合は、水平方向の終端を超えていないことになるので、ステップＳ１０２に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ１０２のベクトル抽出処理を実行する。
【００５４】
ステップＳ１０５において、ｘ＞Ｘｓ−１の場合は、水平方向の終端を超えてしまうため、水平方向の画素を特定する変数ｘを０とし、垂直方向の画素を特定する変数ｙを１だけデクリメントした（ステップＳ１０６）後、垂直方向の終端を示す“０”とｙの値を比較する（ステップＳ１０７）。ｙ≧０の場合は、垂直方向の終端を超えていないことになるので、ステップＳ１０２に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ１０２のベクトル抽出処理を実行する。このようにして、ステップＳ１０２〜ステップＳ１０７の処理を繰り返し、ｙ＝Ｙｓ−１側からｙ＝０側に向かって全画素を探索することにより、角度合計Ａおよび抽出ベクトル数ｖが得られる。
【００５５】
全画素についての探索が終わったら、傾き角算出手段４０は、角度合計Ａを抽出ベクトル数ｖで除算する処理を実行し、抽出ベクトルの平均角度Ａ１（＝Ａ／ｖ）を算出する（ステップＳ１０８）。ステップＳ１０１〜ステップＳ１０８の処理で第１探索モードが終了する。
【００５６】
次に、エッジ抽出手段３０は、第２探索モードの初期設定を行う（ステップＳ１０９）。具体的には、初期値として角度合計Ａ＝０、平均角度Ａ２＝０、抽出ベクトル数ｖ＝０に設定する。また、探索開始画素（ｘ，ｙ）＝（０，０）に設定する。次に、エッジ抽出手段３０は、対象画素（ｘ，ｙ）を始点とするベクトルを抽出する（ステップＳ１１０）。ステップＳ１１０におけるベクトル抽出処理については、後述する。
【００５７】
ステップＳ１１０において、ベクトルを抽出することができた場合には、傾き角算出手段４０は、抽出したベクトルの傾き角を算出する（ステップＳ１１１）。ステップＳ１１１における傾き角算出処理については、後述する。傾き角ａｎｇが算出されたら、角度合計Ａに傾き角ａｎｇを加算する（Ａ←Ａ＋ａｎｇ）。また、抽出ベクトル数ｖを１だけインクリメントする（ｖ←ｖ＋１）。
【００５８】
続いて、水平方向の画素を特定する変数ｘを１だけインクリメントした（ステップＳ１１２）後、水平方向の終端を示すＸｓ−１と比較する（ステップＳ１１３）。ｘ≦Ｘｓ−１の場合は、水平方向の終端を超えていないことになるので、ステップＳ１１０に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ１１０のベクトル抽出処理を実行する。
【００５９】
ステップＳ１１３において、ｘ＞Ｘｓ−１の場合は、水平方向の終端を超えてしまうため、水平方向の画素を特定する変数ｘを０とし、垂直方向の画素を特定する変数ｙを１だけインクリメントした（ステップＳ１１４）後、垂直方向の終端を示す“Ｙｓ−１”とｙの値を比較する（ステップＳ１１５）。ｙ≦Ｙｓ−１の場合は、垂直方向の終端を超えていないことになるので、ステップＳ１１０に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ１１０のベクトル抽出処理を実行する。このようにして、ステップＳ１１０〜ステップＳ１１５の処理を繰り返し、ｙ＝０側からｙ＝Ｙｓ−１側に向かって全画素を探索することにより、角度合計Ａおよび抽出ベクトル数ｖが得られる。
【００６０】
全画素についての探索が終わったら、傾き角算出手段４０は、角度合計Ａを抽出ベクトル数ｖで除算する処理を実行し、抽出ベクトルの平均角度Ａ２（＝Ａ／ｖ）を算出する（ステップＳ１１６）。ステップＳ１０９〜ステップＳ１１６の処理で第２探索モードが終了する。
【００６１】
ステップＳ１０１〜ステップＳ１０８の第１探索モード、ステップＳ１０９〜ステップＳ１１６の第２探索モードが終了したら、傾き角算出手段４０は、第１探索モードによる平均角度Ａ１の絶対値と、第２探索モードによる平均角度Ａ２の絶対値を比較する。そして、絶対値が大きい方の平均角度の値を平均傾き角Ａｎｇとして出力する（ステップＳ１１７）。平均角度Ａ１の絶対値と、第２探索モードによる平均角度Ａ２の絶対値が等しい場合、本実施形態では、平均傾き角Ａｎｇ＝平均角度Ａ２としているが、平均傾き角Ａｎｇ＝平均角度Ａ１とするような設定であっても良い。
【００６２】
ベクトル抽出処理において、互いに探索方向が逆である第１探索モードと第２探索モードを実行するようにしたのは、文字列の傾きに応じて、探索方向を変えた方が良いためである。図９に、横組の場合におけるベクトル抽出における２方向の探索の様子を示す。図９（ａ）（ｂ）は文字列が左下に傾いた画像、図９（ｃ）（ｄ）は文字列が右下に傾いた画像を示している。文字列が左下に傾いた画像の場合、図９（ａ）に示すように、下から探索した場合には、エッジを検出し易いが、図９（ｂ）に示すように、上から探索した場合には、エッジを検出し難い。また、文字列が右下に傾いた画像の場合、図９（ｃ）に示すように、下から探索した場合には、エッジを検出し難いが、図９（ｄ）に示すように、上から探索した場合には、エッジを検出し易い。このため、２つの方向から探索を行うようにしているのである。
【００６３】
次に、図８のステップＳ１０２におけるベクトル抽出処理の詳細について説明する。図１０は、ステップＳ１０２におけるベクトル抽出処理の詳細を示すフローチャートである。エッジ抽出手段３０、は、対象画素（ｘ，ｙ）が黒画素であるかどうかを判断する（ステップＳ１２１）。具体的には、ＩｍａｇｅＢ（ｘ，ｙ）＝０であるかどうかを判断する。
【００６４】
ステップＳ１２１において、対象画素（ｘ，ｙ）が黒画素でないと判断された場合、その対象画素（ｘ，ｙ）を始点とするベクトルは無いと判断して、図８のステップＳ１０４に進み、ｘ座標を変更して、探索対象を次の画素に変更する。
【００６５】
ステップＳ１２１において、対象画素（ｘ，ｙ）が黒画素であると判断された場合、その対象画素（ｘ，ｙ）をベクトル始点と設定し、初期設定を行う（ステップＳ１２２）。具体的には、対象画素（ｘ，ｙ）を重複して抽出されることを回避するため、ＩｍａｇｅＢ（ｘ，ｙ）＝２５５にセットし、Ｘ（０）＝ｘ、Ｙ（０）＝ｙ、Ｎ＝１、ｙｏ＝ｙ、ｘｐ＝ｘ＋１、ｙｐ＝ｙｏ＋Ｍ（例えば、Ｍ＝１２）に設定する。Ｘ（０）、Ｙ（０）はベクトル始点の座標値であり、Ｎは連続黒画素数であり、ｙｏは直前の黒画素の座標値、ｘｐ、ｙｐは次に探索する画素の座標値であり、Ｍは隣接する列における探索範囲を決定する変数である。
【００６６】
次に、傾き角算出手段４０は、画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する（ステップＳ１２３）。具体的には、ＩｍａｇｅＢ（ｘｐ，ｙｐ）＝０であるかどうかを判断する。ステップＳ１２３において、画素（ｘｐ，ｙｐ）が黒画素であると判断された場合、ｘ方向に移動して次の画素を設定する処理を行う（ステップＳ１２４）。具体的には、黒画素と判断された画素（ｘｐ，ｙｐ）を重複して抽出されることを回避するため、ＩｍａｇｅＢ（ｘｐ，ｙｐ）＝２５５にセットし、Ｘ（Ｎ）＝ｘｐ、Ｙ（Ｎ）＝ｙｐ、Ｎ←Ｎ＋１、ｘｐ←ｘｐ＋１、ｙｏ＝ｙｐ、ｙｐ←ｙｏ＋Ｍに設定する（ステップＳ１２４）。
【００６７】
続いて、傾き角算出手段４０は、１だけインクリメントしたｘｐと、水平方向の終端を示すＸｓ−１と比較する（ステップＳ１２５）。ｘｐ≦Ｘｓ−１の場合は、水平方向の終端を超えていないことになるので、ステップＳ１２３に戻って、移動した位置の画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する。ｘｐ＞Ｘｓ−１の場合は、水平方向の終端を超えており、これ以上探索可能な画素が存在しないため、ステップＳ１２８に進む。ステップＳ１２３、Ｓ１２４、Ｓ１２５のループにおいては、黒画素が見つかり続けた場合、ｘｐを１ずつインクリメントしながら、文書画像の水平方向終端まで画素を探索する。
【００６８】
ステップＳ１２３において、画素（ｘｐ，ｙｐ）が黒画素でないと判断された場合、エッジ抽出手段３０は、ｘ方向には移動せず、ｙ方向にのみ移動させて次の画素を設定する処理を行う（ステップＳ１２６）。具体的には、変数ｙｐを１だけデクリメントする（ｙｐ←ｙｐ−１）。
【００６９】
続いて、エッジ抽出手段３０は、１だけデクリメントしたｙｐと、垂直方向の探索範囲の終端を示すｙｏ−Ｍと比較する（ステップＳ１２７）。ステップＳ１２７において、ｙｐ≧ｙｏ−Ｍの場合は、垂直方向の終端を超えていないことになるので、ステップＳ１２３に戻って、移動した位置の画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する。ステップＳ１２７において、ｙｐ＜ｙｏ−Ｍの場合は、ステップＳ１２８に進む。ステップＳ１２３、Ｓ１２６、Ｓ１２７のループにおいては、ある特定のｘｐにおいて、最大２Ｍ＋１個の画素を探索する。このループにおいて、黒画素が見つかれば、ステップＳ１２４に進み、黒画素が見つからなければ、水平方向に連続する黒画素が途絶えたと判断し、ステップＳ１２８に進むことになる。
【００７０】
ステップＳ１２５においてｘｐ＞Ｘｓ−１の場合、または、ステップＳ１２７においてｙｐ＜ｙｏ−Ｍの場合は、エッジ抽出手段３０は、連続黒画素数Ｎとベクトル長しきい値Ｌとの比較を行う（ステップＳ１２８）。比較の結果、Ｎ≧Ｌである場合は、ベクトルありと判断し、図８のステップＳ１０３に進み、抽出ベクトルの傾き角ａｎｇを算出する。一方、比較の結果、Ｎ＜Ｌである場合は、ベクトルなしと判断し、図８のステップＳ１０４に進み、ベクトル抽出の探索始点を変更する。
【００７１】
ステップＳ１０２、Ｓ１１０の始点（ｘ，ｙ）からのベクトル抽出処理の具体例を図１１に示す。図１１においては、説明の便宜上、Ｍ＝２の場合を示している。また、図１１においては、ｙ方向の画素は、連続して示してあるが、ｘ方向については、説明の便宜上、離して示してある。図１１に示すように、探索画素（ｘ，ｙ）が黒画素であった場合、（ｘ，ｙ）をベクトル抽出の始点とし、（Ｘ（０），Ｙ（０））で表す（ステップＳ１２２）。そして、水平方向に移動し（Ｘ（１））、最大２Ｍ＋１（図１１の例では５）画素を探索し、見つかった黒画素を（Ｘ（１），Ｙ（１））で表す（ステップＳ１２４）。Ｘ（１）において黒画素が見つかった場合、さらに水平方向に移動し（Ｘ（２））、最大２Ｍ＋１画素を探索し、見つかった黒画素を（Ｘ（２），Ｙ（２））で表す（ステップＳ１２４）。このようにして、連続する黒画素を抽出していく。
【００７２】
次に、図８のステップＳ１０３、Ｓ１１１における抽出ベクトルの傾き角ａｎｇ算出処理の詳細について説明する。図１２は、横組に対応した抽出ベクトルを構成する頂点（黒画素）を示す図である。上述のように、ステップＳ１０２において、ベクトル抽出処理を実行することにより、抽出ベクトルは、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝からなる。図１２には、両端付近の４個の頂点を示している。
【００７３】
ステップＳ１０３において、傾き角算出手段４０は、以下の〔数式２〕に従った処理を実行し、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝の重心（Ｘｇ，Ｙｇ）を算出する。
【００７４】
〔数式２〕
Ｘｇ＝｛ΣnＸ（ｎ）｝／Ｎ
Ｙｇ＝｛ΣnＹ（ｎ）｝／Ｎ
【００７５】
重心（Ｘｇ，Ｙｇ）を算出したら、傾き角算出手段４０は、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝の重心（Ｘｇ，Ｙｇ）からの水平方向平均距離ｄｘ、垂直方向平均距離ｄｙを算出する。具体的には、初期値ｄｘ＝ｄｙ＝０とし、ｎ＝０，・・・，Ｎ−１に対して、以下の〔数式３〕に従った処理を実行する。
【００７６】
〔数式３〕
Ｘ（ｎ）≧Ｘｇの場合、ｄｘ←ｄｘ＋Ｘ（ｎ）−Ｘｇ，ｄｙ←ｄｙ＋Ｙ（ｎ）−Ｙｇ
Ｘ（ｎ）＜Ｘｇの場合、ｄｘ←ｄｘ＋Ｘｇ−Ｘ（ｎ），ｄｙ←ｄｙ＋Ｙｇ−Ｙ（ｎ）
【００７７】
水平方向平均距離ｄｘ、垂直方向平均距離ｄｙを算出したら、傾き角算出手段４０は、以下の〔数式４〕に従った処理を実行し、抽出ベクトルの傾き角ａｎｇを算出する。
【００７８】
〔数式４〕
ａｎｇ＝ｔａｎ-1（ｄｙ／ｄｘ）
【００７９】
＜２．５．２．ベクトル抽出とベクトルの角度算出処理（縦組）＞
次に、ステップＳ４０におけるエッジ抽出手段３０、傾き角算出手段４０によるベクトル抽出と長線ベクトルの角度算出処理について、縦組の文書画像に好適な処理を説明する。図１３は、エッジ抽出手段３０、傾き角算出手段４０による、縦組に好適なベクトル抽出と傾き角算出処理を示すフローチャートである。エッジ抽出手段３０は、まず、第１探索モードの初期設定を行う（ステップＳ２０１）。具体的には、初期値として角度合計Ａ＝０、平均角度Ａ１＝０、抽出ベクトル数ｖ＝０に設定する。また、探索開始画素（ｘ，ｙ）＝（Ｘｓ−１，０）に設定する。次に、エッジ抽出手段３０は、対象画素（ｘ，ｙ）を始点とするベクトルを抽出する（ステップＳ２０２）。ステップＳ２０２におけるベクトル抽出処理については、後述する。
【００８０】
ステップＳ２０２において、ベクトルを抽出することができた場合には、傾き角算出手段４０は、抽出したベクトルの傾き角を算出する（ステップＳ１０３）。ステップＳ２０３における傾き角算出処理については、後述する。傾き角ａｎｇが算出されたら、角度合計Ａに傾き角ａｎｇを加算する（Ａ←Ａ＋ａｎｇ）。また、抽出ベクトル数ｖを１だけインクリメントする（ｖ←ｖ＋１）。
【００８１】
続いて、垂直方向の画素を特定する変数ｙを１だけインクリメントした（ステップＳ２０４）後、垂直方向の終端を示すＹｓ−１と比較する（ステップＳ１０５）。ｙ≦Ｙｓ−１の場合は、垂直方向の終端を超えていないことになるので、ステップＳ２０２に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ２０２のベクトル抽出処理を実行する。
【００８２】
ステップＳ２０５において、ｙ＞Ｙｓ−１の場合は、垂直方向の終端を超えてしまうため、垂直方向の画素を特定する変数ｙを０とし、水平方向の画素を特定する変数ｘを１だけデクリメントした（ステップＳ２０６）後、水平方向の終端を示す“０”とｘの値を比較する（ステップＳ２０７）。ｘ≧０の場合は、水平方向の終端を超えていないことになるので、ステップＳ２０２に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ２０２のベクトル抽出処理を実行する。このようにして、ステップＳ２０２〜ステップＳ２０７の処理を繰り返し、ｘ＝Ｘｓ−１側からｘ＝０側に向かって全画素を探索することにより、角度合計Ａおよび抽出ベクトル数ｖが得られる。
【００８３】
全画素についての探索が終わったら、傾き角算出手段４０は、角度合計Ａを抽出ベクトル数ｖで除算する処理を実行し、抽出ベクトルの平均角度Ａ１（＝Ａ／ｖ）を算出する（ステップＳ２０８）。ステップＳ２０１〜ステップＳ２０８の処理で第１探索モードが終了する。
【００８４】
次に、エッジ抽出手段３０は、第２探索モードの初期設定を行う（ステップＳ２０９）。具体的には、初期値として角度合計Ａ＝０、平均角度Ａ２＝０、抽出ベクトル数ｖ＝０に設定する。また、探索開始画素（ｘ，ｙ）＝（０，０）に設定する。次に、エッジ抽出手段３０は、対象画素（ｘ，ｙ）を始点とするベクトルを抽出する（ステップＳ２１０）。ステップＳ２１０におけるベクトル抽出処理については、後述する。
【００８５】
ステップＳ２１０において、ベクトルを抽出することができた場合には、傾き角算出手段４０は、抽出したベクトルの傾き角を算出する（ステップＳ２１１）。ステップＳ２１１における傾き角算出処理については、後述する。傾き角ａｎｇが算出されたら、角度合計Ａに傾き角ａｎｇを加算する（Ａ←Ａ＋ａｎｇ）。また、抽出ベクトル数ｖを１だけインクリメントする（ｖ←ｖ＋１）。
【００８６】
続いて、垂直方向の画素を特定する変数ｙを１だけインクリメントした（ステップＳ２１２）後、垂直方向の終端を示すＹｓ−１と比較する（ステップＳ２１３）。ｙ≦Ｙｓ−１の場合は、垂直方向の終端を超えていないことになるので、ステップＳ２１０に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ２１０のベクトル抽出処理を実行する。
【００８７】
ステップＳ２１３において、ｙ＞Ｙｓ−１の場合は、垂直方向の終端を超えてしまうため、垂直方向の画素を特定する変数ｙを０とし、水平方向の画素を特定する変数ｘを１だけインクリメントした（ステップＳ２１４）後、水平方向の終端を示す“Ｘｓ−１”とｘの値を比較する（ステップＳ２１５）。ｘ≦Ｘｓ−１の場合は、水平方向の終端を超えていないことになるので、ステップＳ２１０に戻って、移動した位置の画素（ｘ，ｙ）を始点とし、ステップＳ２１０のベクトル抽出処理を実行する。このようにして、ステップＳ２１０〜ステップＳ２１５の処理を繰り返し、ｘ＝０側からｘ＝Ｘｓ−１側に向かって全画素を探索することにより、角度合計Ａおよび抽出ベクトル数ｖが得られる。
【００８８】
全画素についての探索が終わったら、傾き角算出手段４０は、角度合計Ａを抽出ベクトル数ｖで除算する処理を実行し、抽出ベクトルの平均角度Ａ２（＝Ａ／ｖ）を算出する（ステップＳ２１６）。ステップＳ２０９〜ステップＳ２１６の処理で第２探索モードが終了する。
【００８９】
ステップＳ２０１〜ステップＳ２０８の第１探索モード、ステップＳ２０９〜ステップＳ２１６の第２探索モードが終了したら、傾き角算出手段４０は、第１探索モードによる平均角度Ａ１の絶対値と、第２探索モードによる平均角度Ａ２の絶対値を比較する。そして、絶対値が大きい方の平均角度の値を平均傾き角Ａｎｇとして出力する（ステップＳ２１７）。平均角度Ａ１の絶対値と、第２探索モードによる平均角度Ａ２の絶対値が等しい場合、本実施形態では、平均傾き角Ａｎｇ＝平均角度Ａ２としているが、平均傾き角Ａｎｇ＝平均角度Ａ１とするような設定であっても良い。
【００９０】
ベクトル抽出処理において、互いに探索方向が逆である第１探索モードと第２探索モードを実行するようにしたのは、横組みの場合と同様、文字列の傾きに応じて、探索方向を変えた方が良いためである。図１４に、縦組の場合におけるベクトル抽出における２方向の探索の様子を示す。図１４（ａ）（ｂ）は文字列が右上に傾いた画像、図１４（ｃ）（ｄ）は文字列が左上に傾いた画像を示している。文字列が右上に傾いた画像の場合、図１４（ａ）に示すように、右から探索した場合には、エッジを検出し易いが、図１４（ｂ）に示すように、左から探索した場合には、エッジを検出し難い。また、文字列が左上に傾いた画像の場合、図１４（ｃ）に示すように、右から探索した場合には、エッジを検出し難いが、図１４（ｄ）に示すように、左から探索した場合には、エッジを検出し易い。このため、２つの方向から探索を行うようにしているのである。
【００９１】
次に、図１３のステップＳ２０２におけるベクトル抽出処理の詳細について説明する。図１５は、ステップＳ２０２におけるベクトル抽出処理の詳細を示すフローチャートである。エッジ抽出手段３０は、まず、対象画素（ｘ，ｙ）が黒画素であるかどうかを判断する（ステップＳ２２１）。具体的には、ＩｍａｇｅＢ（ｘ，ｙ）＝０であるかどうかを判断する。
【００９２】
ステップＳ２２１において、対象画素（ｘ，ｙ）が黒画素でないと判断された場合、その対象画素（ｘ，ｙ）を始点とするベクトルは無いと判断して、図１３のステップＳ２０４に進み、ｙ座標を変更して、探索対象を次の画素に変更する。
【００９３】
ステップＳ２２１において、対象画素（ｘ，ｙ）が黒画素であると判断された場合、その対象画素（ｘ，ｙ）をベクトル始点と設定し、初期設定を行う（ステップＳ２２２）。具体的には、対象画素（ｘ，ｙ）を重複して抽出されることを回避するため、ＩｍａｇｅＢ（ｘ，ｙ）＝２５５にセットし、Ｘ（０）＝ｘ、Ｙ（０）＝ｙ、Ｎ＝１、ｘｏ＝ｘ、ｙｐ＝ｙ＋１、ｘｐ＝ｘｏ＋Ｍ（例えば、Ｍ＝１２）に設定する。Ｘ（０）、Ｙ（０）はベクトル始点の座標値であり、Ｎは連続黒画素数であり、ｘｏは直前の黒画素の座標値、ｘｐ、ｙｐは次に探索する画素の座標値であり、Ｍは隣接する列における探索範囲を決定する変数である。
【００９４】
次に、エッジ抽出手段３０は、画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する（ステップＳ２２３）。具体的には、ＩｍａｇｅＢ（ｘｐ，ｙｐ）＝０であるかどうかを判断する。ステップＳ２２３において、画素（ｘｐ，ｙｐ）が黒画素であると判断された場合、ｙ方向に移動して次の画素を設定する処理を行う（ステップＳ２２４）。具体的には、黒画素と判断された画素（ｘｐ，ｙｐ）を重複して抽出されることを回避するため、ＩｍａｇｅＢ（ｘｐ，ｙｐ）＝２５５にセットし、Ｘ（Ｎ）＝ｘｐ、Ｙ（Ｎ）＝ｙｐ、Ｎ←Ｎ＋１、ｙｐ←ｙｐ＋１、ｘｏ＝ｘｐ、ｘｐ←ｘｏ＋Ｍに設定する（ステップＳ２２４）。
【００９５】
続いて、エッジ抽出手段３０は、１だけインクリメントしたｙｐと、垂直方向の終端を示すＹｓ−１と比較する（ステップＳ２２５）。ｙｐ≦Ｙｓ−１の場合は、垂直方向の終端を超えていないことになるので、ステップＳ２２３に戻って、移動した位置の画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する。ｙｐ＞Ｙｓ−１の場合は、垂直方向の終端を超えており、これ以上探索可能な画素が存在しないため、ステップＳ２２８に進む。ステップＳ２２３、Ｓ２２４、Ｓ２２５のループにおいては、黒画素が見つかり続けた場合、ｙｐを１ずつインクリメントしながら、文書画像の垂直方向終端まで画素を探索する。
【００９６】
ステップＳ２２３において、画素（ｘｐ，ｙｐ）が黒画素でないと判断された場合、エッジ抽出手段３０は、ｙ方向には移動せず、ｘ方向にのみ移動させて次の画素を設定する処理を行う（ステップＳ２２６）。具体的には、変数ｘｐを１だけデクリメントする（ｘｐ←ｘｐ−１）。
【００９７】
続いて、エッジ抽出手段３０は、１だけデクリメントしたｘｐと、水平方向の探索範囲の終端を示すｘｏ−Ｍと比較する（ステップＳ２２７）。ステップＳ２２７において、ｘｐ≧ｘｏ−Ｍの場合は、水平方向の終端を超えていないことになるので、ステップＳ２２３に戻って、移動した位置の画素（ｘｐ，ｙｐ）が黒画素であるかどうかを判断する。ステップＳ２２７において、ｘｐ＜ｘｏ−Ｍの場合は、ステップＳ２２８に進む。ステップＳ２２３、Ｓ２２６、Ｓ２２７のループにおいては、ある特定のｙｐにおいて、最大２Ｍ＋１個の画素を探索する。このループにおいて、黒画素が見つかれば、ステップＳ２２４に進み、黒画素が見つからなければ、水平方向に連続する黒画素が途絶えたと判断し、ステップＳ２２８に進むことになる。
【００９８】
ステップＳ２２５においてｙｐ＞Ｙｓ−１の場合、または、ステップＳ２２７においてｘｐ＜ｘｏ−Ｍの場合は、エッジ抽出手段３０は、連続黒画素数Ｎとベクトル長しきい値Ｌとの比較を行う（ステップＳ２２８）。比較の結果、Ｎ≧Ｌである場合は、ベクトルありと判断し、図１３のステップＳ２０３に進み、抽出ベクトルの傾き角ａｎｇを算出する。一方、比較の結果、Ｎ＜Ｌである場合は、ベクトルなしと判断し、図１３のステップＳ２０４に進み、ベクトル抽出の探索始点を変更する。
【００９９】
ステップＳ２０２、Ｓ２１０の始点（ｘ，ｙ）からのベクトル抽出処理の具体例を図１６に示す。図１６においては、説明の便宜上、Ｍ＝２の場合を示している。また、図１６においては、ｘ方向の画素は、連続して示してあるが、ｙ方向については、説明の便宜上、離して示してある。図１６に示すように、探索画素（ｘ，ｙ）が黒画素であった場合、（ｘ，ｙ）をベクトル抽出の始点とし、（Ｘ（０），Ｙ（０））で表す（ステップＳ２２２）。そして、垂直方向に移動し（Ｙ（１））、最大２Ｍ＋１（図１６の例では５）画素を探索し、見つかった黒画素を（Ｘ（１），Ｙ（１））で表す（ステップＳ２２４）。Ｙ（１）において黒画素が見つかった場合、さらに水平方向に移動し（Ｙ（２））、最大２Ｍ＋１画素を探索し、見つかった黒画素を（Ｘ（２），Ｙ（２））で表す（ステップＳ２２４）。このようにして、連続する黒画素を抽出していく。
【０１００】
次に、図１３のステップＳ２０３、Ｓ２１１における抽出ベクトルの傾き角ａｎｇ算出処理の詳細について説明する。図１７は、縦組に対応した抽出ベクトルを構成する頂点（黒画素）を示す図である。上述のように、ステップＳ２０２において、ベクトル抽出処理を実行することにより、抽出ベクトルは、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝からなる。図１７には、両端付近の４個の頂点を示している。
【０１０１】
ステップＳ２０３において、傾き角算出手段４０は、以下の〔数式５〕に従った処理を実行し、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝の重心（Ｘｇ，Ｙｇ）を算出する。なお、〔数式５〕は上記〔数式２〕と同一のものである。
【０１０２】
〔数式５〕
Ｘｇ＝｛ΣnＸ（ｎ）｝／Ｎ
Ｙｇ＝｛ΣnＹ（ｎ）｝／Ｎ
【０１０３】
重心（Ｘｇ，Ｙｇ）を算出したら、傾き角算出手段４０は、Ｎ個の頂点｛Ｘ（ｎ），Ｙ（ｎ）｝の重心（Ｘｇ，Ｙｇ）からの水平方向平均距離ｄｘ、垂直方向平均距離ｄｙを算出する。具体的には、初期値ｄｘ＝ｄｙ＝０とし、ｎ＝０，・・・，Ｎ−１に対して、以下の〔数式６〕に従った処理を実行する。
【０１０４】
〔数式６〕
Ｙ（ｎ）≧Ｙｇの場合、ｄｘ←ｄｘ＋Ｘ（ｎ）−Ｘｇ，ｄｙ←ｄｙ＋Ｙ（ｎ）−Ｙｇ
Ｙ（ｎ）＜Ｙｇの場合、ｄｘ←ｄｘ＋Ｘｇ−Ｘ（ｎ），ｄｙ←ｄｙ＋Ｙｇ−Ｙ（ｎ）
【０１０５】
水平方向平均距離ｄｘ、垂直方向平均距離ｄｙを算出したら、傾き角算出手段４０は、以下の〔数式７〕に従った処理を実行し、抽出ベクトルの傾き角ａｎｇを算出する。
【０１０６】
〔数式７〕
ａｎｇ＝ｔａｎ-1（ｄｘ／ｄｙ）
【０１０７】
＜２．６．文書画像の回転処理＞
次に、ステップＳ５０における文書回転手段５０による文書画像の回転処理について説明する。文書回転手段５０は、傾き角算出手段４０により算出された平均傾き角Ａｎｇを用いて、文書画像を回転して補正画像を得る。文書画像は、上述のようにＩｍａｇｅ（ｘ，ｙ）（０≦ｘ≦Ｘｓ−１、０≦ｙ≦Ｙｓ−１）で表現されるが、平均傾き角Ａｎｇで回転処理後の補正画像をＩｍａｇｅＣ（ｘ´，ｙ´）（０≦ｘ´≦Ｘｓ−１、０≦ｙ´≦Ｙｓ−１）とする。文書画像Ｉｍａｇｅ（ｘ，ｙ）も、補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）も、各画素は、０から２５５の範囲の値をとるものとする。この場合、文書画像Ｉｍａｇｅ（ｘ，ｙ）と、補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）の画素の関係は、以下の〔数式８〕のようになる。
【０１０８】
〔数式８〕
ｘ＝（ｘ´−Ｘｓ／２）・ｃｏｓ（Ａｎｇ）＋（ｙ´−Ｙｓ／２）・ｓｉｎ（Ａｎｇ）＋Ｘｓ／２
ｙ＝−（ｘ´−Ｘｓ／２）・ｓｉｎ（Ａｎｇ）＋（ｙ´−Ｙｓ／２）・ｃｏｓ（Ａｎｇ）＋Ｙｓ／２
【０１０９】
文書回転手段５０は、上記〔数式８〕に示した関係から、ｘ´，ｙ´を求めるための数式を作成し、その数式に従った処理を実行して、文書画像Ｉｍａｇｅ（ｘ，ｙ）の各画素（ｘ，ｙ）に対応する補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）の画素（ｘ´，ｙ´）を求め、補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）の画素（ｘ´，ｙ´）に、文書画像Ｉｍａｇｅ（ｘ，ｙ）の対応する画素（ｘ，ｙ）の画素値を与える。これにより、補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）が得られる。
【０１１０】
横組の場合における文書画像の回転の様子を図１８に示す。図１８（ａ）は、文書画像Ｉｍａｇｅ（ｘ，ｙ）を示し、図１８（ｂ）は、補正画像ＩｍａｇｅＣ（ｘ´，ｙ´）を示している。図１８（ａ）（ｂ）において、斜め、または水平方向の実線は、文字が配置されたラインを示す。また、水平方向の破線は、回転の基準となる水平方向の基準線を示している。図１８（ａ）では、基準線から角度Ａｎｇだけ文字が右肩下がりに傾いて配置されている。文書回転手段５０により角度−Ａｎｇだけ回転され、図１８（ｂ）に示すように、基準線と平行に文字が配置された状態になる。
【０１１１】
横組の場合の画像変化の具体例を図１９、図２０、図２１、図２２に示す。これらは、それぞれ図４（ａ）〜（ｄ）に対応している。図１９は、読み取った文書画像の具体例を示す図である。図１９（ａ）は、左下に傾き、図１９（ｂ）は、右下に傾いている。図２０は、二値化処理、水平方向の画素膨張処理後の画像の具体例を示す図である。黒い部分は、文字画素領域が膨張された部分である。図２１は、黒い部分は、文字画素領域のエッジ部である文字画素である。図２２は、文書画像回転処理後の画像の具体例を示す図である。図２２（ａ）は、図１９（ａ）の文書画像が−１．９５３度回転された補正画像であり、図２２（ｂ）は、図１９（ａ）の文書画像が＋１．３７８度回転された補正画像である。いずれも横組の文字列がほぼ水平に補正された状態となることがわかる。
【０１１２】
＜２．７．電子文書の作成＞
次に、ステップＳ６０における電子文書作成手段５５による電子文書の作成処理について説明する。電子文書作成手段５５が、補正画像から電子文書ファイルを作成する処理を行う。電子文書作成手段５５により補正画像は圧縮されて電子文書ファイルに貼付される。
【０１１３】
電子文書ファイルの作成処理については、公知の種々の形式を用いることができるが、本実施形態では、ＰＤＦ形式を用いている。具体的には、補正画像に対して文字認識を行って、文字コードを取得し、取得した文字コードを、非描画属性に設定して透明文字データを作成し、指定された割り付け位置を維持して補正画像に付加する。この処理は、Ａｃｒｏｂａｔ（登録商標）等の公知のＰＤＦ変換アプリケーションと同様のアルゴリズムを用いて行われる。非描画属性に設定して透明文字データを作成することは、Ａｃｒｏｂａｔ（登録商標）等の公知のＰＤＦ変換アプリケーションにより行うことができる。透明文字データを付加しておくことにより、文字コードを利用した全文検索が可能となる。
【０１１４】
補正画像から電子文書を作成する際、本実施形態では、圧縮伸張後のモスキートノイズの発生を低減するために、画像の圧縮前に色数削減処理を実行している。図２３は、色数削減処理を説明するための図である。図２３（ａ）は、補正画像を構成する画素のビット配列を示しており、図２３（ｂ）は、色数削減画像を構成する画素のビット配列を示している。図２３（ａ）に示すように、本実施形態では、補正画像がＲ、Ｇ、Ｂ各色が８ビットで表現されているので、各色は２５６階調の深さを持っている。色数削減処理において、電子文書作成手段５５は、Ｒを３ビット８階調、Ｇを３ビット８階調、Ｂを２ビット４階調に低下させる。この結果、図２３（ｂ）に示すように、全体として８ビット２５６色の色数削減画像が得られる。図２３の例では、Ｒ、Ｇ、Ｂの階調がそれぞれ１／３２、１／３２、１／６４に削減されることになる。画像は画素あたり２４ビットから８ビットで符号化し、新たにカラールックアップテーブル（画素インデックス値からＲＧＢ値への変換テーブル）を定義して添付する。図２３に示した手法以外にも、公知の色数削減手法を用いることができる。電子文書作成手段５５は、複数の色数削減手法を設定可能に構成されており、電子文書作成手段５５として機能するキー入力Ｉ／Ｆ４を介した指示に従って、指示された色数削減手法を実行するように、電子文書作成手段５５を設定する。色数削減画像に対する圧縮手法としては、公知の様々な手法を用いることができる。例えば、非可逆圧縮ではＪＰＥＧ等、可逆圧縮ではＺＩＰ等を用いることができる。
【０１１５】
画像を圧縮伸張した際に、モスキートノイズが目立つのは、ソース画像が実質的に二値に近くコントラストが高いモノクロ画像で、生成されるモスキートノイズはハーフトーンになる。例えば、ソース画像の背景が白色で文字が黒色で表現された文字画像である場合、生成されるモスキートノイズは白または黒に近いグレー色になる。しかし、２５６階調から数段階の階調に色数制限を施すと、白に近いグレー色は白に、黒に近いグレー色は黒に近似されてしまうため、ハーフトーンのモスキートノイズは表現されなくなる。一方ソースのモノクロ画像は、データ形式上は２５６階調をもつが、実用上は４〜８階調程度に低下させても問題ない。２階調に低下させると、文字輪郭部にジャギーが発生するので、アンチエイリアシング効果を維持するために４階調以上は必要である。そこで、本実施形態では、カラー画像の場合は、ＲＧＢ各２５６階調から各々４〜８階調に低下させ、色数をフルカラーの約１６００万色（２５６の３乗）から２５６色程度に減少させている。
【０１１６】
＜３．変形例等＞
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、抽出された文字コードから透明文字データを作成して、電子文書ファイルに付加する処理を行ったが、この処理を省略し、透明文字データを付加しないようにしても良い。また、電子文書の作成自体を行わず、傾きを補正した補正画像のみを得るようにしても良い。
【符号の説明】
【０１１７】
１・・・ＣＰＵ（Central Processing Unit）
２・・・ＲＡＭ（Random Access Memory）
３・・・記憶装置
４・・・キー入力Ｉ／Ｆ
５・・・データ入出力Ｉ／Ｆ
６・・・表示部
７・・・イメージスキャナ
１０・・・二値化手段
２０・・・文字画素領域膨張手段
３０・・・エッジ抽出手段
４０・・・傾き角算出手段
５０・・・文書回転手段
５５・・・電子文書作成手段
６０・・・文書画像記憶手段
７０・・・補正画像記憶手段
【図１】
2014230119.tif 000003
【図２】
2014230119.tif 000004
【図３】
2014230119.tif 000005
【図４】
2014230119.tif 000006
【図５】
2014230119.tif 000007
【図６】
2014230119.tif 000008
【図７】
2014230119.tif 000009
【図８】
2014230119.tif 000010
【図９】
2014230119.tif 000011
【図１０】
2014230119.tif 000012
【図１１】
2014230119.tif 000013
【図１２】
2014230119.tif 000014
【図１３】
2014230119.tif 000015
【図１４】
2014230119.tif 000016
【図１５】
2014230119.tif 000017
【図１６】
2014230119.tif 000018
【図１７】
2014230119.tif 000019
【図１８】
2014230119.tif 000020
【図１９】
2014230119.tif 000021
【図２０】
2014230119.tif 000022
【図２２】
2014230119.tif 000023
【図２３】
2014230119.tif 000024
【図２１】
2014230119.tif 000025