(57)【要約】【課題】  より精度の高い原稿の方向判定を行うための技術を提供すること。さらには、１枚の原稿中に複数枚の縮小原稿が含まれているような原稿画像に対してもその方向判定を行うこと。【解決手段】  原稿画像を複数の分割画像に分割し（Ｓ１００）、分割画像内で最も大きい面積を占めている文字領域を特定する処理を、それぞれの分割画像について行い（Ｓ１０４）、特定した文字領域に対して所定角度毎にスコアを計算し、計算した所定角度毎のスコアを、この文字領域の一部若しくは全部を含む分割画像に対して分配し（Ｓ１１３）、それぞれの分割画像に対して分配された所定角度毎のスコアに基づいて、原稿画像の方向を判断する（Ｓ１１６）。【選択図】  図１
2006330941.tif 000002
【特許請求の範囲】
【請求項１】
１以上の文字領域を含む原稿画像を複数の分割画像に分割する分割手段と、
分割画像内で最も大きい面積を占めている文字領域を前記１以上の文字領域から特定する処理を、それぞれの分割画像について行う特定手段と、
前記特定手段が特定した文字領域に対して所定角度毎にスコアを計算する計算手段と、
前記特定手段が特定した文字領域について計算した所定角度毎のスコアを、当該文字領域の一部若しくは全部を含む分割画像に対して分配する分配手段と、
それぞれの分割画像に対して分配された所定角度毎のスコアに基づいて、前記原稿画像の方向を判断する判断手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記原稿画像内にはＮ枚の縮小画像が含まれており、
前記分割手段は前記原稿画像をＮ個に分割することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記分配手段は、前記特定手段が特定した文字領域について計算した所定角度毎のスコアを、当該文字領域の一部若しくは全部を含む分割画像に対して、含む面積の割合に応じて分配することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記判断手段は、それぞれの分割画像において、最も大きいスコアとなる方向が一致した場合には、当該方向を原稿画像の方向として決定することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記判断手段は、それぞれの分割画像において、最も大きいスコアとなる方向が一致していない場合には、それぞれの分割画像内の文字領域の属性に基づいて原稿画像の方向を決定することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項６】
１以上の文字領域を含む原稿画像を複数の分割画像に分割する分割工程と、
分割画像内で最も大きい面積を占めている文字領域を前記１以上の文字領域から特定する処理を、それぞれの分割画像について行う特定工程と、
前記特定工程で特定した文字領域に対して所定角度毎にスコアを計算する計算工程と、
前記特定工程で特定した文字領域について計算した所定角度毎のスコアを、当該文字領域の一部若しくは全部を含む分割画像に対して分配する分配工程と、
それぞれの分割画像に対して分配された所定角度毎のスコアに基づいて、前記原稿画像の方向を判断する判断工程と
を備えることを特徴とする画像処理方法。
【請求項７】
コンピュータに請求項６に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿画像の方向判定技術に関するものである。
【背景技術】
【０００２】
原稿画像の方向を判定する為の技術については様々な技術が提案されている。
【特許文献１】特開平０８−２１２２９８号公報
【特許文献２】特開２００１−３３８２６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
以下に方向判定技術の一例を説明する。図４は、原稿画像の方向を判定するための処理フローチャートである。
【０００４】
入力された原稿画像（二値画像データとする）内には文章などが記載された領域、写真が掲載されている領域、線画が記載されている領域、表が記載されてる領域等が存在する。そこで先ず、原稿画像内で、これらそれぞれの領域を抽出する（像域分離）（ステップＳ４０１）。
【０００５】
次に、ステップＳ４０１で抽出された全ての領域について以下説明する処理を行ったのかを判断し（ステップＳ４０２）、抽出していない場合には処理をステップＳ４１３に進める。ステップＳ４１３以降の処理に関しては後述する。
【０００６】
一方、ステップＳ４０１で１以上の領域を抽出した場合には処理をステップＳ４０３に進め、抽出した領域群のうち１つを選択し、選択した領域から１文字分の矩形を抽出する（ステップＳ４０３）。なお、本ステップでは更に、領域内に含まれる文字の平均サイズ、平均文字間隔、平均行間隔を求める。
【０００７】
次に、矩形を抽出することができたのかを判断し（ステップＳ４０４）、できなかった場合には処理をステップＳ４１０に進める。ステップＳ４１０以降の処理については後述する。
【０００８】
一方、矩形を抽出することができた場合には処理をステップＳ４０５に進め、抽出した矩形内の文字に対して４方向から認識処理を行う（ステップＳ４０５）。
【０００９】
次に、ステップＳ４０５で認識対象とした文字が、原稿画像の方向判定に用いる適当な文字であるのかを判断する（ステップＳ４０６）。例えばステップＳ４０５で認識した結果、認識対象文字に対して図９に示すような演算が得られたとする。図９は、１つの文字に対して求めた演算値の例を示す図である。
【００１０】
ステップＳ４０５では、文字を０度、９０度、１８０度、２７０度のそれぞれに回転させて認識した場合に、最も類似している文字（第１候補）、次に類似している文字（第２候補）に対する演算値（類似度）を得る。例えば同図では、文字を回転させていない状態（０度）で認識処理を行った場合に、第１候補に対する類似度は４０００、第２候補に対する類似度は７０００である。なお、類似度が小さい候補文字の方が認識対象文字に類似しているとして説明している。
【００１１】
よって、このようにして類似度が得られた場合、ステップＳ４０６では第１候補に対する類似度のうち最も小さいものを探し、次に小さいものとの差を考慮する。同図では最も小さい類似度は４０００であり、次に小さい類似度は６５００である。この差は２５００であり、この値は十分に大きいものと考えられるので、この文字は原稿画像の方向判定に適当な文字であると判断する。
【００１２】
一方、図１０に示すような演算値が得られた場合、最も小さい類似度は４０００であり、次に小さい類似度は４２００である。この差は２００であり、この値は小さいものと考えられるので、この文字は原稿画像の方向判定に適当な文字ではないと判断する。
【００１３】
よって、ステップＳ４０５での認識対象文字が原稿画像の方向判定に適当な文字であるとステップＳ４０６で判断した場合には処理をステップＳ４０７に進め、この認識対象文字の方向を決定すると共に、その方向に対するスコアを計算し、計算したスコアをステップＳ４０３で選択した領域に対するスコアに加算し、そして「この領域内で原稿画像の方向判定に適当な文字であると判断した文字」の数を１つカウントアップする（ステップＳ４０７）。
【００１４】
認識対象文字の方向を決定するためには、認識対象文字に対する第１候補について求めた類似度を参照し、最も小さい類似度を示した方向とする。例えば図９に示すような類似度が得られた場合、認識対象文字を回転させていない状態（０度）が第１候補と最も類似する（類似度が最も小さい）ので、この場合には、認識対象文字の方向は０度を判断する。
【００１５】
また、スコアは以下の式に従って求める。
【００１６】
定数×（第２候補の類似度−第１候補の類似度）／第１候補の類似度
よって、例えば、図９に示すような類似度が得られた場合、認識対象文字の方向は０度であるので、０度の時の第１候補の類似度「４０００」、第２候補の類似度「７０００」を用いてスコアを求める。ここで定数を１０２４とすると、この場合、スコアは７６８となる。
【００１７】
そして求めたスコアを、認識対象文字が属する領域に対するスコアに加算する。図１１は、認識対象文字が属する領域について設定されているスコアテーブルの初期状態を示す図である。同図に示す如く、認識対象文字が属する領域には、各方向毎に、原稿画像の方向判定に適当と判断された文字数、原稿画像の方向判定に適当と判断された文字について求めたスコアの累計値が登録されている。
【００１８】
よって、図９に示すような類似度が得られた場合、認識対象文字の方向は０度、スコアは７６８となるので、図１１に示すスコアテーブルにおいて角度が０度に対応するスコアに求めたスコア７６８を加算する。これによりこのスコアテーブルは図１２に示すような状態となる。図１２は、認識対象文字が属する領域について設定されているスコアテーブルの更新後状態を示す図である。図１６は、このようにして得られたスコアテーブルの完成例を示す図である。
【００１９】
以上のようにしてステップＳ４０７における処理は成される。
【００２０】
図４に戻って、ステップＳ４０５での認識対象文字が原稿画像の方向判定に適当な文字ではないとステップＳ４０６で判断した場合には処理をステップＳ４０８に進め、原稿画像の方向判定に適当ではない文字の数を１つカウントアップする（ステップＳ４０８）。
【００２１】
次に、ステップＳ４０３で選択した領域に対する処理を終了するのかを判断する（ステップＳ４０９）。例えば、ステップＳ４０３で選択した領域内の全ての文字について以上の処理を行った、若しくは、原稿画像の方向判定に適当な文字であると判断した文字の数が所定数以上である場合には、この領域に対する処理は終了するものとする。
【００２２】
そして、終了しない場合には処理をステップＳ４０３に戻し、次の文字について以降の処理を行うのであるが、終了する場合には処理をステップＳ４１０に進め、ステップＳ４０３で選択した領域が、原稿画像の方向判定に適当なものであるのかを判断する（ステップＳ４１０）。
【００２３】
例えば、ステップＳ４０３で選択した領域について得られたスコアテーブルを参照し、それぞれの方向について得られた類似度の差が小さい場合、ステップＳ４０３で選択した領域は原稿画像の方向判定には適当ではないと判断し、処理をステップＳ４０２に戻し、次の領域について以降の処理を行う。
【００２４】
一方、ステップＳ４０３で選択した領域が、原稿画像の方向判定に適当なものである場合には処理をステップＳ４１１に進め、ステップＳ４０３で選択した領域に対するスコアテーブルを更新する処理を行う（ステップＳ４１１）。
【００２５】
具体的には、ステップＳ４０３で求めた、領域内に含まれる文字の平均サイズ（高さ、幅）、平均文字間隔、平均行間隔を用いて、この領域内に含まれている文字数を推定する。図１５に示すように、領域の縦、横のサイズをそれぞれＨ、Ｗとし、平均文字幅、平均文字高をそれぞれｗｃ、ｈｃとし、平均文字間隔をｗｇ、平均行間隔をｈｇとすると、１行内の文字数Ｘは以下の式に基づいて推定される。
【００２６】
Ｘ＝（Ｗ＋ｗｇ）／（ｗｃ＋ｗｇ）
一方、領域内の行数Ｙは以下の式に基づいて推定される。
【００２７】
Ｙ＝（Ｈ＋ｈｇ）／（ｈｃ＋ｈｇ）
従って領域内の文字数は以下の式に基づいて推定される。
【００２８】
Ｃ＝ＸＹ＝（Ｗ＋ｗｇ）（Ｈ＋ｈｇ）／（（ｗｃ＋ｗｇ）（ｈｃ＋ｈｇ））
次に、この領域に対するスコアテーブルに登録されている各方向毎のスコアに（推定最大文字数／認識文字数）を掛けることで、各スコアを修正し、その結果、スコアテーブルを更新する。
【００２９】
次に、ステップＳ４１１で更新したスコアテーブルを、他の領域について既に更新されているスコアテーブルに加算する（ステップＳ４１２）。即ち、それぞれのテーブルにおいて、同じ方向のスコア同士を加算する。
【００３０】
そして次に、認識した文字数や領域数、全体の認識結果から処理を続行するか否かを判定する（ステップＳ４１３）。例えば、認識した文字数が所定個数未満であれば処理を続行する、認識した領域数が所定個数未満であれば処理を続行する、等の方法がある。
【００３１】
処理を続行するのであれば処理をステップＳ４１４に進め、得られた全体の結果から原稿画像の方向判定処理を行う（ステップＳ４１４）。即ち、各領域のスコア同士を加算した結果のスコアテーブルを参照し、最もスコアの大きい方向が、求めるべき方向となる。
【００３２】
以上説明した方向判定方式では、２ｉｎ１や４ｉｎ１と呼ばれる原稿（複数毎の原稿を一枚の紙に印刷した原稿）を入力し、その方向を判定する場合に、スキャンの方向によっては「不明」と判断したり、どちらかの方向を結果としてしまったりしていた。
【００３３】
これは、レイアウト解析部分が画像の入力方向に依存するものであるためであったり、高速化のために少ない文字数で識別結果を出すようにしていることに起因している。
【００３４】
本発明は以上の問題に鑑みてなされたものであり、より精度の高い原稿の方向判定を行うための技術を提供することを目的とする。
【００３５】
さらには、１枚の原稿中に複数枚の縮小原稿が含まれているような原稿画像に対してもその方向判定を行うことを目的とする。
【課題を解決するための手段】
【００３６】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００３７】
即ち、１以上の文字領域を含む原稿画像を複数の分割画像に分割する分割手段と、
分割画像内で最も大きい面積を占めている文字領域を前記１以上の文字領域から特定する処理を、それぞれの分割画像について行う特定手段と、
前記特定手段が特定した文字領域に対して所定角度毎にスコアを計算する計算手段と、
前記特定手段が特定した文字領域について計算した所定角度毎のスコアを、当該文字領域の一部若しくは全部を含む分割画像に対して分配する分配手段と、
それぞれの分割画像に対して分配された所定角度毎のスコアに基づいて、前記原稿画像の方向を判断する判断手段と
を備えることを特徴とする。
【００３８】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００３９】
即ち、１以上の文字領域を含む原稿画像を複数の分割画像に分割する分割工程と、
分割画像内で最も大きい面積を占めている文字領域を前記１以上の文字領域から特定する処理を、それぞれの分割画像について行う特定工程と、
前記特定工程で特定した文字領域に対して所定角度毎にスコアを計算する計算工程と、
前記特定工程で特定した文字領域について計算した所定角度毎のスコアを、当該文字領域の一部若しくは全部を含む分割画像に対して分配する分配工程と、
それぞれの分割画像に対して分配された所定角度毎のスコアに基づいて、前記原稿画像の方向を判断する判断工程と
を備えることを特徴とする。
【発明の効果】
【００４０】
本発明の構成により、より精度の高い原稿の方向判定を行うことができる。さらには、１枚の原稿中に複数枚の縮小原稿が含まれているような原稿画像に対してもその方向判定を行うことができる。
【発明を実施するための最良の形態】
【００４１】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００４２】
［第１の実施形態］
本実施形態では、４枚の原稿を縮小して１枚の原稿に印刷した印刷物（所謂４ｉｎ１の印刷を行った場合に得られる印刷物）をスキャナなどで画像データとしてコンピュータ内に読み込んだ場合に、この原稿画像データの方向を決定する為の処理について説明する。
【００４３】
図８は、本実施形態に係る画像処理装置として機能するコンピュータのハードウェア構成を示すブロック図である。なお、このようなコンピュータとしては一般のＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）などが適用可能である。
【００４４】
８０１はＣＰＵで、ＲＡＭ８０２やＲＯＭ８０３に格納されているプログラムやデータを用いてコンピュータ全体の制御を行うと共に、コンピュータが行う後述の各処理を実行する。
【００４５】
８０２はＲＡＭで、外部記憶装置８０６からロードされたプログラムやデータを一時的に記憶するためのエリア、Ｉ／Ｆ８０７を介して外部から受信したデータを一時的に記憶するためのエリア、そしてＣＰＵ８０１が各種の処理を実行する際に用いるワークエリアなど、各種のエリアを適宜提供することができる。
【００４６】
８０３はＲＯＭで、コンピュータの設定データや、ブートプログラムなどを格納する。
【００４７】
８０４は操作部で、キーボードやマウスなどにより構成されており、コンピュータの操作者が操作することで、各種の指示をＣＰＵ８０１に対して入力することができる。
【００４８】
８０５は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ８０１による処理結果を画像や文字などでもって表示することができる。
【００４９】
８０６は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置であって、ここにＯＳ（オペレーティングシステム）や、コンピュータが行う後述の各処理をＣＰＵ８０１に実行させるためのプログラムやデータが保存されており、これらはＣＰＵ８０１による制御に従って適宜ＲＡＭ８０２にロードされ、ＣＰＵ８０１による処理対象となる。
【００５０】
８０７はＩ／Ｆで、例えばスキャナがここに接続され、スキャナが上記印刷物を画像データとして読み込んだ場合には、この画像データはこのＩ／Ｆ８０７を介してＲＡＭ８０２に出力されることになる。
【００５１】
８０８は上述の各部を繋ぐバスである。
【００５２】
次に、上記構成を備えるコンピュータが行う、原稿画像の方向判定処理について、同処理のフローチャートを示す図１を用いて以下説明する。なお、同図のフローチャートに従った処理をＣＰＵ８０１に実行させるためのプログラムやデータは外部記憶装置８０６に保存されており、これは必要に応じてＣＰＵ８０１によってＲＡＭ８０２にロードされる。そしてＣＰＵ８０１はロードしたプログラムやデータを用いて処理を実行するので、コンピュータは以下説明する各処理を実行することになる。
【００５３】
先ず、以下説明する処理に先立って、ＲＡＭ８０２には原稿画像データ（二値画像データ）が格納されているものとする。尚、この原稿画像データは上述の通り、Ｉ／Ｆ８０７を介してスキャナから出力されたものであっても良いし、予め外部記憶装置８０６に保存しておいたものをＲＡＭ８０２にロードするようにしても良い。
【００５４】
そしてＣＰＵ８０１は先ず、この原稿画像を図１７に示す如く４つの分割画像（領域１〜領域４）に分割する（ステップＳ１００）。これは上述の通り、原稿画像内に４つの縮小原稿が含まれていることに起因する。よって、原稿画像内にＮ枚の縮小原稿が含まれている場合には原稿画像をＮ個に分割する。
【００５５】
次に、原稿画像内には文章などが記載された領域、写真が掲載されている領域、線画が記載されている領域、表が記載されている領域等が存在するので、これら各文字領域を抽出する（ステップＳ１０１）。図１８は、原稿画像から抽出される文字領域を示す図で、同図において１８０１は原稿画像全体、１８０２〜１８０８は文字領域を示す。なお、文字領域を抽出するということは同図に示す如く、各文字領域の左上座標値、幅、高さを取得することである。なお、文字領域の抽出については、原稿画像内で文字領域が特定できれば良く、左上座標値、幅、高さを取得することに限定するものではない。
【００５６】
図１に戻って、次に、ステップＳ１０１で抽出された各文字領域に係る情報を管理するためのテーブル（文字領域管理テーブル）を作成する。図１９は、図１８に示した各文字領域に係る情報を管理するためのテーブルの構成例を示す図である。
【００５７】
同図に示す如く、文字領域管理テーブルは、文字領域がテキスト、キャプション、表中文字、写真・文字線画の何れが記載された領域であるのかを示す属性、この文字領域の左上座標値（ｘ座標値、ｙ座標値）、幅、高さ、この文字領域がどの分割画像中にどれだけの面積で占めているのか、そして、この文字領域が処理済みであるのか否かが、各文字領域毎に登録されている。同図において領域１〜領域４が各分割画像を示す。よって、一番上に登録されている文字領域（左上のｘ座標が２００，左上のｙ座標が１５０、幅が２２００，高さが７００の文字領域）は、領域１内では面積（画素数）が１２６だけ占めており、領域２内では面積が２８だけ占めている。即ち、この文字領域の面積は１２６＋２８＝１５４で、領域１内にはそのうち１２６だけが含まれており、領域２内には２８だけ含まれていることになる。即ち、この文字領域は領域１と領域２とにまたがって原稿画像内に位置していることになる。
【００５８】
また、各文字領域に対しては以下説明する各処理を行うのであるが、初期状態では全ての文字領域に対する状態フラグは「０」となっている。そして、処理された結果、結果原稿画像の方向判定に適当なものであると判断された文字領域の状態フラグは「１」にセットされ、適当なものではないと判断された文字領域の状態フラグは「−１」にセットされる。このフラグのセットは以下説明する処理中で行われるものである。
【００５９】
このようにして、各文字領域について上記各情報が求められると、文字領域管理テーブルに登録する。
【００６０】
図１に戻って、次に、上記文字領域管理テーブルを参照し、未だ処理対象となっていない文字領域、即ち状態フラグに「０」がセットされている文字領域を検索する（ステップＳ１０３）。そして、検索の結果、未処理の文字領域が見つからなかった場合には処理をステップＳ１１１５に進めるのであるが、未処理の文字領域が見つかった場合には処理をステップＳ１０４に進め、見つけた文字領域（未処理の文字領域）を以下の処理対象として選択する（ステップＳ１０４）。
【００６１】
より詳しくステップＳ１０４における処理を説明すると、先ず、文字領域管理テーブルを参照して、最初の分割画像（本実施形態では領域１）に含まれている未処理文字領域のうち、最も大きい面積を占めるものを選択する。図１９に示した文字領域管理テーブルの場合には、上から３番目の文字領域が選択されることになる。
【００６２】
ここで、以下の処理のために、ＲＡＭ８０２には図２１に示すような構成を有するテーブルを保持しておく。図２１は、処理済みの文字領域が各分割画像に対して占める面積を、加算登録（従前のものに加算して登録する）するための面積テーブルの初期状態を示す図である。同図に示す如く、面積テーブルは初期状態では全て０に初期化されている。
【００６３】
よって、初めてステップＳ１０４で文字領域を選択する場合、図１９に示した文字領域管理テーブルでは上から３番目の文字領域を選択するので、この文字領域に対して以下説明する各処理を行う。そして、この文字領域に対して以下説明する各処理が施されると、図２２に示す如く、選択した文字領域が領域１内で占める面積（１４４）が従前に登録されていた値（０）に加算して登録されると共に、選択した文字領域が領域２内で占める面積（１６２）が従前に登録されていた値（０）に加算して登録される。また、選択した文字領域は領域３，４には含まれていないので、図２２に示す如く、領域３，４に対しては０のままである。図２２は、面積テーブルの更新後状態を示す図である。
【００６４】
そして次に、ステップＳ１０４で文字領域を選択する場合には、図２２のテーブルを参照し、登録面積が０である領域、即ち領域３を選択し、そして図１９に示すテーブルを参照して、領域３内で最も大きい面積を占める文字領域、即ち上から５番目の文字領域を選択する。そして、この文字領域に対して以下説明する各処理が施されると、この面積テーブルは、選択した文字領域が領域３内で占める面積（１３２）が従前に登録されていた値（０）に加算して登録される。また、選択した文字領域は領域４には含まれていないので、領域４に対しては０のままである。このようにしてテーブルを更新する。
【００６５】
そして次に、ステップＳ１０４で文字領域を選択する場合には、この更新後のテーブルを参照し、登録面積が０である領域、即ち領域４を選択し、そして図１９に示すテーブルを参照して、領域４内で最も大きい面積を占める文字領域、即ち上から６番目の文字領域を選択する。そして、この文字領域に対して以下説明する各処理が施されると、選択した文字領域が領域４内で占める面積（２１６）が従前に登録されていた値（０）に加算して登録される。
【００６６】
図１に戻って、次に、ステップＳ１０４で選択した文字領域から、１文字分の矩形を抽出すると共に、文字領域内に含まれる文字の平均サイズ、平均文字幅、平均行幅を求める（ステップＳ１０５）。このような処理は上記従来技術と同様にして行う。
【００６７】
次に、１文字分の矩形が抽出されたのかを判断し（ステップＳ１０６）、抽出されなかった場合には処理をステップＳ１１２に進めるのであるが、抽出された場合には処理をステップＳ１０７に進め、抽出矩形を０度、９０度、１８０度、２７０度のそれぞれに回転させた場合に、予め外部記憶装置８０６に保存されている辞書のうち、何れの文字に類似しているのかを特定するための認識処理を行う（ステップＳ１０７）。
【００６８】
より詳しくは、抽出矩形を回転させない状態で、辞書と照合し、辞書の中から最も類似している文字（第１候補）、次に類似している文字（第２候補）を特定する。次に、抽出矩形を９０°回転させた状態で、辞書と照合し、辞書の中から最も類似している文字（第１候補）、次に類似している文字（第２候補）を特定する。次に、抽出矩形を更に９０°回転させた状態（元の状態から１８０°回転させている）で、辞書と照合し、辞書の中から最も類似している文字（第１候補）、次に類似している文字（第２候補）を特定する。最後に、抽出矩形を更に９０°回転させた状態（元の状態から２７０°回転させている）で、辞書と照合し、辞書の中から最も類似している文字（第１候補）、次に類似している文字（第２候補）を特定する。
【００６９】
ここで、各方向毎に第１候補、第２候補を特定する際には上記従来技術で説明したように、類似度も求める。
【００７０】
図２は、ステップＳ１０７における上記認識処理のフローチャートである。
【００７１】
先ず、抽出矩形内の文字の特徴ベクトルを抽出する（ステップＳ２０１）。この特徴ベクトルは、図５に示すような文字の抽出矩形５０１（外接矩形）を図６に示すように４×４に分割した場合に、それぞれの分割領域に対して図７に示すような４方向輪郭線の成分量を特徴量として求めることで得られる６４次元のベクトルである。
【００７２】
次に、このようにして得られる特徴ベクトルを用いて文字認識処理を行い、認識結果としての第１候補、第２候補を特定すると共に、第１候補との類似度、第２候補の類似度を求める（ステップＳ２０２）。
【００７３】
そして次に、抽出矩形を全ての方向（４方向）について回転させたのかを判断し（ステップＳ２０３）、全ての方向について回転させていない場合には処理をステップＳ２０４に進め、特徴ベクトルを回転することにより抽出矩形を９０°回転させたときの特徴ベクトルを求め（ステップＳ２０４）、ステップＳ２０２における処理を行う。（なお、抽出矩形画像を９０度ずつ回転させたときの各特徴ベクトルは、０度のときに求めた特徴ベクトルを回転処理することにより容易に求めることできるが、抽出矩形画像自体を９０度ずつ回転させ、当該回転された各画像から特徴ベクトルを求めるようにしても構わない。）このようにして、全ての方向について、文字認識処理を行い、各方向毎に第１候補の類似度、第２候補の類似度を求める。
【００７４】
図３は、上記ステップＳ２０２における認識処理の詳細を示すフローチャートである。
【００７５】
先ず、認識対象文字（抽出矩形内の文字）の特徴ベクトルの次元数を削減するための変換を行う（ステップＳ３０１）。変換前の次元数を６４とし、変換後の次元数を３２とすると変換行列Ｔは３２×６４の行列として表すことができる。この行列と特徴ベクトルとを掛け算することで、次元数を変えた特徴ベクトルを得ることができる。
【００７６】
次に、次元数が変えられた特徴ベクトルと辞書内の各文字の平均ベクトルとの距離を求め、近い方から上位Ｋ文字を選ぶ距離計算を行う。本実施形態ではＫ＝２とする。
【００７７】
この距離計算は、辞書作成時に求めた各文字の平均ベクトルと認識対象文字の特徴ベクトルとの距離を計算するのであるが、辞書中の文字Ａの平均ベクトルを
Ａ＝（Ａ１、Ａ２、、、Ａ３２）
とし、認識対象文字の特徴ベクトルを
Ｂ＝（Ｂ１、Ｂ２、、、Ｂ３２）
とすると２つのベクトル間の距離Ｄは
Ｄ＝√｛（Ｂ１−Ａ１）２＋（Ｂ２−Ａ２）２…＋（Ｂ３２−Ａ３２）２｝
と表される。この距離Ｄが認識対象文字と文字Ａとの類似度である。
【００７８】
図１に戻って、次に、認識対象文字が、原稿画像の方向判定に用いる適当な文字であるのかを判断する（ステップＳ１０８）。例えば、認識対象文字に対して図９に示すような演算が得られたとする。このようにして類似度が得られた場合、第１候補に対する類似度のうち最も小さいものを探し、次に小さいものとの差を考慮する。図９では最も小さい類似度は４０００であり、次に小さい類似度は６５００である。この差は２５００であり、この値は十分に大きいものと考えられるので、この認識対象文字は原稿画像の方向判定に適当な文字であると判断する。
【００７９】
一方、図１０に示すような演算値が得られた場合、最も小さい類似度は４０００であり、次に小さい類似度は４２００である。この差は２００であり、この値は小さいものと考えられるので、この認識対象文字は原稿画像の方向判定に適当な文字ではないと判断する。
【００８０】
よって、認識対象文字が原稿画像の方向判定に適当な文字であるとステップＳ１０８で判断した場合には処理をステップＳ１０９に進め、この認識対象文字の方向を決定すると共に、その方向に対するスコアを計算し、計算したスコアをステップＳ１０４で選択した文字領域に対するスコアに加算し、そして「この文字領域内で原稿画像の方向判定に適当な文字であると判断した文字」の数を１つカウントアップする（ステップＳ１０９）。
【００８１】
認識対象文字の方向を決定するためには、認識対象文字に対する第１候補について求めた類似度を参照し、最も小さい類似度を示した方向とする。例えば図９に示すような類似度が得られた場合、認識対象文字を回転させていない状態（０度）が第１候補と最も類似する（類似度が最も小さい）ので、この場合には、認識対象文字の方向は０°と判断する。
【００８２】
また、スコアは以下の式に従って求める。
【００８３】
定数×（第２候補の類似度−第１候補の類似度）／第１候補の類似度
よって、例えば、図９に示すような類似度が得られた場合、認識対象文字の方向は０度であるので、０度の時の第１候補の類似度「４０００」、第２候補の類似度「７０００」を用いてスコアを求める。ここで定数を１０２４とすると、この場合、スコアは７６８となる。
【００８４】
そして求めたスコアを、認識対象文字が属する文字領域（即ちステップＳ１０４で選択した文字領域）に対するスコアテーブルに加算する。本実施形態においてもＲＡＭ８０２には予め図１１に示すような初期状態のスコアテーブルが登録されている。よって、例えば、図９に示すような類似度が得られた場合、認識対象文字の方向は０度、スコアは７６８となるので、図１１に示すスコアテーブルにおいて角度が０度に対応するスコアに求めたスコア７６８を加算する。また、認識した文字の数を１つカウントアップする。これによりこのスコアテーブルは図１２に示すような状態となる。以上のようにしてステップＳ１０９における処理は成される。
【００８５】
一方、認識対象文字が原稿画像の方向判定に適当な文字ではないとステップＳ１０８で判断した場合には処理をステップＳ１１０に進め、原稿画像の方向判定に適当ではない文字の数を１つカウントアップする（ステップＳ１１０）。
【００８６】
次に、ステップＳ１０４で選択した文字領域に対する処理を終了するのかを判断する（ステップＳ１１１）。例えば、ステップＳ１０４で選択した文字領域内の全ての文字について以上の処理を行った、若しくは、原稿画像の方向判定に適当な文字であると判断した文字の数が所定数以上である場合には、この領域に対する処理は終了するものとする。
【００８７】
そして、終了しない場合には処理をステップＳ１０５に戻し、次の文字について以降の処理を行うのであるが、終了する場合には処理をステップＳ１１２に進め、ステップＳ１０４で選択した文字領域が、原稿画像の方向判定に適当なものであるのかを判断する（ステップＳ１１２）。
【００８８】
例えばステップＳ１０４で選択した文字領域について得られたスコアテーブルが図１３に示すようなものであった場合には、角度０に対するスコアがその他の方向に対するスコアよりも極端に大きい。このような場合には、この文字領域の方向は角度０であると判断できると共に、この文字領域は原稿画像の方向判定に適したものであると判断することができる。
【００８９】
一方、ステップＳ１０４で選択した文字領域について得られたスコアテーブルが図１４に示すようなものであった場合には、どの方向に対するスコアも互いに差がない。このような場合には、この文字領域の方向は定まらず、その結果、この文字領域は原稿画像の方向判定には適していないと判断することができる。
【００９０】
このようにして、文字領域が原稿画像の方向判定に適しているのか否かを判断することができる。この判断結果は文字領域管理テーブルの状態フラグに反映させる。
【００９１】
そして、ステップＳ１１２における判断処理の結果、ステップＳ１０４で選択した文字領域が原稿画像の方向判定に適したものではないと判断した場合には、処理をステップＳ１０３に戻し、次の文字領域について以降の処理を行う。
【００９２】
一方、ステップＳ１１２における判断処理の結果、ステップＳ１０４で選択した文字領域が原稿画像の方向判定に適当なものである場合には処理をステップＳ１１３に進め、ステップＳ１０４で選択した文字領域に対するスコアテーブルを更新する処理を行う（ステップＳ１１３）。
【００９３】
具体的には、ステップＳ１０４で求めた、文字領域内に含まれる文字の平均サイズ（高さ、幅）、平均文字間隔、平均行間隔を用いて、この文字領域内に含まれている文字数を推定する。図１５に示すように、領域の縦、横のサイズをそれぞれＨ、Ｗとし、平均文字幅、平均文字高をそれぞれｗｃ、ｈｃとし、平均文字間隔をｗｇ、平均行間隔をｈｇとすると、１行内の文字数Ｘは以下の式に基づいて推定される。
【００９４】
Ｘ＝（Ｗ＋ｗｇ）／（ｗｃ＋ｗｇ）
一方、領域内の行数Ｙは以下の式に基づいて推定される。
【００９５】
Ｙ＝（Ｈ＋ｈｇ）／（ｈｃ＋ｈｇ）
従って領域内の文字数は以下の式に基づいて推定される。
【００９６】
Ｃ＝ＸＹ＝（Ｗ＋ｗｇ）（Ｈ＋ｈｇ）／（（ｗｃ＋ｗｇ）（ｈｃ＋ｈｇ））
次に、この文字領域に対するスコアテーブルに登録されている各方向毎のスコアに（推定最大文字数／認識文字数）を掛けることで、各スコアを修正し、その結果、スコアテーブルを更新する。
【００９７】
例えば、図１９に示した文字領域管理テーブルを用いる場合には、ステップＳ１０４では上から３番目の文字領域を選択するのであるが、その結果、図１３に示すようなスコアテーブルが得られ、且つｗｃ＝７０、ｗｇ＝５、ｈｃ＝７０、ｈｇ＝３５であるとすると、Ｃ＝ＸＹ＝４０４．０６となるので、このＣを処理文字数の１１で割った値で図１３に示すスコアテーブルを更新すると、図２３に示す如く結果となる。
【００９８】
次に、ステップＳ１１３で得られたスコアテーブルに登録されているスコアを、ステップＳ１０４で選択した文字領域が含まれる分割画像に対して分配する処理を行う（ステップＳ１１４）。
【００９９】
よって、ステップＳ１０４で文字領域を選択する場合、図１９に示した文字領域管理テーブルでは上から３番目の文字領域を選択するのであるが、この文字領域は面積１４４の分だけ領域１内に存在し、領域２内には面積１６２の分だけ存在する。よって、この文字領域に対するスコアを面積比１４４：１６２でそれぞれ領域１と領域２とに分配する。
【０１００】
より具体的には、ステップＳ１１３で図２３に示すスコアテーブルが得られたとすると、ステップＳ１１４では、図２４に示すテーブルを作成することになる。図２４は、原稿画像全体、及び各分割画像（領域１〜領域４）について、方向毎（０°、９０°、１８０°、２７０°）のスコアを登録するためのスコアテーブルの構成例を示す図である。なお、原稿画像全体、及び各分割画像に対する方向毎のスコアは初めは図２０に示す如く０に初期化されている。
【０１０１】
ステップＳ１０４で選択した文字領域に対して、角度が０°の場合のスコアは図２３に示す如く「３０３０４５」、角度が２７０°である場合のスコアは図２３に示す如く「１２０４８」であるので、図２４に示す如く、それぞれを原稿画像全体に対する０°の場合のスコア、２７０°の場合のスコアとして加算登録すると共に、原稿画像全体に対する０°の場合のスコアを１４４：１６２の比で分けたものをそれぞれ領域１に対するスコア、領域２に対するスコアとして、加算登録し、原稿画像全体に対する２７０°の場合のスコアを１４４：１６２の比で分けたものをそれぞれ領域１に対するスコア、領域２に対するスコアとして、加算登録する。
【０１０２】
そして次に、認識した文字数や領域数、全体の認識結果から処理を続行するか否かを判定する（ステップＳ１１５）。例えば、認識した文字数が所定個数未満であれば処理を続行する、認識した領域数が所定個数未満であれば処理を続行する、等の方法がある。
【０１０３】
処理を続行するのであれば処理をステップＳ１１６に進め、得られた全体の結果から原稿画像の方向判定処理を行う（ステップＳ１１６）。即ち、ＣＰＵ８０１は最終的に得られたスコアテーブルを参照して、各分割画像で最も大きいスコアに対応する方向が一致している場合には、その一致している方向を原稿画像の方向として決定する。
【０１０４】
例えば最終的に図２５に示すスコアテーブルが得られたとする。この場合、角度０に対する各分割画像のスコアがその他の方向に対するスコアよりも極端に大きいし、各分割画像で最も大きいスコアは全て角度０°に対するスコアである。このような場合には、原稿画像の方向は角度０であると判断できる。
【０１０５】
一方、最終的に図２６に示すスコアテーブルが得られたとする。この場合、２つの方向にスコアがばらついている。このような場合には、各分割画像の文字領域の属性をみて判断する。例えば、領域１，２はテキストであり、領域３，４は表中文字であった場合は、判定結果は領域１，２を優先して方向を９０°とするし、全ての領域の文字領域がテキストであった場合は、判定結果は混在とする。
【０１０６】
以上の処理により、原稿画像を縮小原稿の個数で分割し、文字領域毎に求めたスコアを分割画像に分配するので、結果として分割画像毎のスコアを得ることができる。そして、分割画像毎のスコアでもって原稿画像の方向を判断するので、原稿画像内に複数の縮小原稿が含まれていても、この原稿画像の方向を精度良く判断することができる。
【０１０７】
なお、本実施形態では抽出矩形を９０°毎に回転させることで認識処理を行っていたが、９０°毎に限定するものではなく、任意の角度毎であっても良い。また、以上説明したテーブルの参照方法、及びその構成例についてはこれに限定しない。
【０１０８】
また、本実施形態では、原稿画像は４ｉｎ１の印刷でもって得られた印刷物の画像データとして説明したが、原稿画像内に任意の配置でもって複数の縮小原稿を含ませるような形態であっても良い。
【０１０９】
［第２の実施形態］
第１の実施形態で説明した原稿画像の方向判定処理を行うコンピュータを、例えば複合機等、装置内の一部として用いるようにしても良い。
【０１１０】
［その他の実施形態］
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【０１１１】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【０１１２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１１３】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ等の光／光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【０１１４】
有線／無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル（プログラムデータファイル）を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【０１１５】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【０１１６】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１１８】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【０１１９】
【図１】本発明の第１の実施形態に係る原稿画像の方向判定処理のフローチャートである。
【図２】ステップＳ１０７における認識処理のフローチャートである。
【図３】ステップＳ２０２における認識処理の詳細を示すフローチャートである。
【図４】原稿画像の方向を判定するために行う従来の処理のフローチャートである。
【図５】外接矩形を説明する図である。
【図６】外接矩形の分割を説明する図である。
【図７】４方向輪郭線を説明する図である。
【図８】本発明の第１の実施形態に係る画像処理装置として機能するコンピュータのハードウェア構成を示すブロック図である。
【図９】１つの文字に対して求めた演算値の例を示す図である。
【図１０】１つの文字に対して求めた演算値の例を示す図である。
【図１１】認識対象文字が属する領域について設定されているスコアテーブルの初期状態を示す図である。
【図１２】認識対象文字が属する領域について設定されているスコアテーブルの更新後状態を示す図である。
【図１３】ステップＳ１０４で選択した文字領域について得られたスコアテーブルの一例を示す図である。
【図１４】ステップＳ１０４で選択した文字領域について得られたスコアテーブルの一例を示す図である。
【図１５】領域の縦、横のサイズ、平均文字幅、平均文字高、平均文字間隔、平均行間隔を説明する図である。
【図１６】スコアテーブルの完成例を示す図である。
【図１７】原稿画像の分割を説明する図である。
【図１８】原稿画像から抽出される文字領域を示す図である。
【図１９】図１８に示した各文字領域に係る情報を管理するためのテーブルの構成例を示す図である。
【図２０】原稿画像全体、及び各分割画像（領域１〜領域４）について、方向毎（０°、９０°、１８０°、２７０°）のスコアを登録するためのスコアテーブルの初期状態を示す図である。
【図２１】処理済みの文字領域が各分割画像に対して占める面積を、加算登録するための面積テーブルの初期状態を示す図である。
【図２２】面積テーブルの更新後状態を示す図である。
【図２３】更新後のスコアテーブルの例を示す図である。
【図２４】原稿画像全体、及び各分割画像（領域１〜領域４）について、方向毎（０°、９０°、１８０°、２７０°）のスコアを登録するためのスコアテーブルの構成例を示す図である。
【図２５】最終的に得られるスコアテーブルの一例を示す図である。
【図２６】最終的に得られるスコアテーブルの一例を示す図である。
【図１】
2006330941.tif 000003
【図２】
2006330941.tif 000004
【図３】
2006330941.tif 000005
【図４】
2006330941.tif 000006
【図５】
2006330941.tif 000007
【図６】
2006330941.tif 000008
【図７】
2006330941.tif 000009
【図８】
2006330941.tif 000010
【図９】
2006330941.tif 000011
【図１０】
2006330941.tif 000012
【図１１】
2006330941.tif 000013
【図１２】
2006330941.tif 000014
【図１３】
2006330941.tif 000015
【図１４】
2006330941.tif 000016
【図１５】
2006330941.tif 000017
【図１６】
2006330941.tif 000018
【図１７】
2006330941.tif 000019
【図１８】
2006330941.tif 000020
【図１９】
2006330941.tif 000021
【図２０】
2006330941.tif 000022
【図２１】
2006330941.tif 000023
【図２２】
2006330941.tif 000024
【図２３】
2006330941.tif 000025
【図２４】
2006330941.tif 000026
【図２５】
2006330941.tif 000027
【図２６】
2006330941.tif 000028