(57)【要約】【課題】  画像データが示す画像内の文字と線が接している場合に、文字認識処理の精度の低下を抑制することを目的とする。【解決手段】  本発明の画像処理装置は、画像データが示す画像に含まれる文字の領域を判定する判定手段と、前記判定手段が判定した前記領域の１画素外にある黒画素の数に基づいて前記領域を拡張するか否かを決定する決定手段と、前記決定手段が前記領域を拡張すると決定したことに従って、前記領域を拡張する拡張手段と、前記拡張手段が拡張した領域において、文字認識処理を実行する文字認識手段とを有することを特徴とする。【選択図】  図５
2020087320.tif 000002
【特許請求の範囲】
【請求項１】
画像データが示す画像に含まれる文字の領域を判定する判定手段と、
前記判定手段が判定した前記領域の１画素外にある黒画素の数に基づいて前記領域を拡張するか否かを決定する決定手段と、
前記決定手段が前記領域を拡張すると決定したことに従って、前記領域を拡張する拡張手段と、
前記拡張手段が拡張した領域において、文字認識処理を実行する文字認識手段とを有することを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記拡張手段が拡張した領域の１画素外にある黒画素の数に基づいて前記拡張手段が拡張した領域をさらに拡張するか否かを決定し、
前記拡張手段は、前記拡張手段が拡張した領域をさらに拡張すると決定したことに従って前記領域を拡張することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
画像データを２値化する２値化手段と、
前記２値化手段が２値化した画像データの解像度を下げた画像データを生成する生成手段とを更に有し、
前記判定手段は、前記生成手段が生成した画像データが示す画像に含まれる文字の領域を判定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
画像データを２値化する２値化手段と、
前記判定手段は、前記２値化手段が２値化した画像データが示す画像に含まれる文字の領域を判定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項５】
前記決定手段は、前記判定手段が判定した前記領域の１画素外にある黒画素の数に基づいて前記領域を拡張するか否かを、前記２値化手段が２値化した画像データにおいて決定することを特徴とする請求項３または４に記載の画像処理装置。
【請求項６】
前記決定手段は、前記判定手段が判定した前記領域の１画素外にある黒画素の数に基づいて前記領域を拡張するか否かを、前記生成手段が生成した画像データにおいて決定することを特徴とする請求項３または４に記載の画像処理装置。
【請求項７】
原稿の画像を読み取り画像データを生成する読取手段をさらに有することを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
外部装置から画像データを受信する受信手段をさらに有することを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項９】
前記文字認識手段は、前記２値化手段が２値化した画像データの前記拡張手段が拡張した領域において文字認識処理を実行することを特徴とする請求項３乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
前記２値化手段は単純２値化処理を用いて前記画像データを２値化することを特徴とする請求項３乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
前記領域と前記拡張手段が拡張した領域はそれぞれ矩形の領域であり、
前記決定手段は前記判定手段が判定した前記領域の外周の各辺から１画素分拡張した領域にある黒画素の数に基づいて前記領域を拡張するか否かを決定することを特徴とする請求項１乃至１０の何れか１項に記載の画像処理装置。
【請求項１２】
前記拡張手段は前記領域の前記辺のうち、１画素外に所定の数の黒画素がある辺の方向に前記領域を１画素分拡張することを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記文字認識処理は前記拡張手段が拡張した領域内の文字を１文字ずつ認識する処理であることを特徴とする請求項１乃至１２の何れか１項に記載の画像処理装置。
【請求項１４】
画像データが示す画像に含まれる文字の領域を判定する第１の判定工程と、
前記第１の判定工程で判定した前記領域の１画素外に所定の数の黒画素があるか否かを判定する第２の判定工程と、
前記第２の判定工程で前記領域の１画素外に所定の数の黒画素があると判定したことに従って、前記領域を拡張する拡張工程と、
前記拡張工程で拡張した領域において、文字認識処理を実行する文字認識工程とを有する画像処理方法。
【請求項１５】
請求項１乃至１３の何れか１項に記載の画像処理装置の各手段をコンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
画像処理装置、画像処理方法、及びプログラムに関するものである。
【背景技術】
【０００２】
画像情報を入力し、連続している黒画素を検出することにより矩形を認識し、認識された矩形により示される領域の情報を用いて文字、図形等の属性を仮識別する画像処理装置が開示されている（特許文献１参照）。また、その画像処理装置は認識された領域のヒストグラムを算出することで画像内のオブジェクトを別の属性を持つオブジェクトとして認識する画像処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−６８０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、画像データが示す画像内の文字が罫線や下線等の線に接している場合、その文字と線を適切に別の属性を持つオブジェクトとして認識できない可能性がある。特許文献１の方法では、連続している黒画素を同一のラベルでラベリングし、１つのオブジェクトとして認識する。そのため、それぞれ接していないオブジェクトを、別の属性を持つオブジェクトとして認識することはできるが、互いに接しているオブジェクトを、別の属性を持つオブジェクトとして認識することはできない。
【０００５】
それにより、文字と線を適切に別の属性を持つオブジェクトとして認識できない場合、その文字が含まれる領域に文字認識処理を実行すると、ユーザが所望の文字を認識することができない。
【０００６】
本発明は上記の課題に鑑みてなされたものであり、画像データが示す画像内の文字と線が接している場合に、文字認識処理の精度の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、画像データが示す画像に含まれる文字の領域を判定する判定手段と、前記判定手段が判定した前記領域の１画素外にある黒画素の数に基づいて前記領域を拡張するか否かを決定する決定手段と、前記決定手段が前記領域を拡張すると決定したことに従って、前記領域を拡張する拡張手段と、前記拡張手段が拡張した領域において、文字認識処理を実行する文字認識手段とを有することを特徴とする。
【発明の効果】
【０００８】
画像データが示す画像内の文字と線が接している場合に、文字認識処理の精度の低下を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】ＭＦＰ１００のハードウェア構成の一例を示す図
【図２】文字認識処理の一例を示すフローチャート
【図３】ブロック選択処理の一例を示す図
【図４】ブロック選択処理の一例を示す図
【図５】テキストブロック補正の処理の一例を示すフローチャート
【図６】テキストブロックの外周の黒画素探索処理の一例を示す図
【図７】文字切り出し処理の一例を示す図
【図８】文字認識処理の一例を示すフローチャート
【図９】テキストブロック補正の処理の一例を示すフローチャート
【図１０】低解像度画像データのテキストブロックの外周の黒画素探索処理の一例を示す図
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施例において示す構成は一例であり本発明は図示された構成に限定されるものではない。
【実施例１】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施例に示す構成は一例であり本発明は図示された構成に限定されるものではない。
【００１２】
本実施例では、画像処理装置の一例としてＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１００を用いて説明するが、これに限るものではない。例えば、画像データの生成、または画像データの入力の受付と、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅｃｏｇｎｉｔｉｏｎ：光学式文字認識）処理が実行可能であれば、ＰＣやファクシミリ装置、デジタルカメラ、スマートフォン等であってもよい。
【００１３】
図１は、ＭＦＰ１００のハードウェア構成の一例を示す図である。ＭＦＰ１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、プリンタ１０５、スキャナ１０６、ネットワークＩ／Ｆ（Ｉｎｔｅｒ  Ｆａｃｅ）１０７、操作部１０８、モデム１０９を備える。
【００１４】
ＣＰＵ１０１は、ＭＦＰ１００を構成する各種ハードウェア１０２〜１０９の制御を行うことで、ＭＦＰ１００が備える各機能を実現する。なおＣＰＵ１０１はバスラインにより各種ハードウェアに信号を送り、他のハードウェアと相互にデータ通信を行う。
【００１５】
ＲＯＭ１０２は、ＣＰＵ１０１が使用するプログラムや各種データを格納する。ＲＡＭ１０３は、プログラムや、ＣＰＵ１０１が演算に用いるデータを一時的に格納するためのワークメモリである。ＨＤＤ１０４は、各種データや各種プログラム等を記憶する。本実施例のＭＦＰ１００は補助記憶装置としてＨＤＤを使用することを例として説明するが、補助記憶装置はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの不揮発性メモリを用いても良い。
【００１６】
プリンタ１０５は、印刷機能を実現するユニットであって、不図示の外部装置から送信された印刷ジョブに含まれる画像データに基づいて画像を用紙に印刷する処理を行う。
【００１７】
スキャナ１０６は、スキャン機能を実現するユニットであって、原稿を光学的に読み取り画像データに変換する処理を行う読取手段である。
【００１８】
ＭＦＰ１００のＣＰＵ１０１は、ＭＦＰ１００内の制御プログラムに従ってＭＦＰ１００の動作を制御する。より詳細には、ＭＦＰ１００の制御を行うオペレーティングシステム（ＯＳ）と、ハードウェアインタフェースを制御するためのドライバプログラムをＣＰＵ１０１が実行する。そしてＯＳ上に配置されたアプリケーションプログラムらが相互に動作することにより、ユーザの所望する機能の動作、制御が行われる。これらのＯＳや各種プログラムはＲＯＭ１０２に記憶されており、ＲＯＭ１０２からＲＡＭ１０３に読み出されることで実行される。
【００１９】
ＭＦＰ１００のネットワークＩ／Ｆ１０７は有線接続用のＬＡＮ＿Ｉ／Ｆであってもよいし、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）−ＬＡＮアダプタで接続されてもよい。なお、ネットワークＩ／Ｆ１０７は、無線接続用のＬＡＮ＿Ｉ／Ｆであってもよい。
【００２０】
ＭＦＰ１００のネットワークＩ／Ｆ１０７はネットワークを介して外部装置に接続される。
【００２１】
操作部１０８は、ＭＦＰ１００を利用するユーザがプリンタ１０５、スキャナ１０６などを利用するためのユーザインタフェースであり、例えばタッチパネルとして操作・入力を受け付ける受付手段である。また、操作部１０８はＭＦＰ１００の情報を表示する表示部としても使用することができる。なお、本実施例のＭＦＰ１００の操作装置、表示装置は、ＭＦＰ１００の外部に接続されていてもよい。
【００２２】
モデム１０９は公衆回線網（ＰＳＴＮ）を介してファクシミリ信号を受信し、ＦＡＸ通信に必要な信号の変調・復調を行う。このように、ＭＦＰ１００は原稿の画像を読み取ったり、ネットワークＩ／Ｆ１０７を介したり、モデム１０９を介したり、ＨＤＤ１０４に記憶されている画像データを読み出したりすることで、画像データの入力を受け付ける。なお、デジタルカメラやスマートフォンの場合は、撮影することで画像データの入力を受け付ける。
【００２３】
ここで、例えば、画像データが示す画像内の文字が罫線や下線等の線に接している場合、その文字と線を適切に別の属性を持つオブジェクトとして認識できない可能性がある。特許文献１の方法では、それぞれ接していないオブジェクトを、別の属性を持つオブジェクトとして認識することはできるが、それぞれが接しているオブジェクトを、別の属性を持つオブジェクトとして認識することはできない。
【００２４】
そのため、文字と線を適切に別の属性を持つオブジェクトとして認識できない場合、その文字が含まれる領域に文字認識処理を実行すると、ユーザが所望の文字を認識することができないという課題がある。
【００２５】
本実施例のＭＦＰ１００は以上の課題を解決するために以下の処理を実行することで、画像データが示す画像内の文字と線が接している場合に、文字認識処理の精度の低下を抑制することができる。
【００２６】
図２は、文字認識処理の一例を示すフローチャートである。図２のフローでは、画像データの入力として、ＣＰＵ１０１がスキャナ１０６を制御して、スキャナ１０６が原稿の画像を読み取って画像データを生成する例で説明する。ＣＰＵ１０１がＲＯＭ１０２に記憶されたプログラムをＲＡＭ１０３に読み出し、実行することで図２のフローチャートの処理は実現される。なお、図２のフローは、ＭＦＰ１００の電源がオンになったことによって開始される。
【００２７】
Ｓ２０１において、ＣＰＵ１０１は原稿の画像を読み取るための読み取り指示をユーザから操作部１０８を介して受け付けた否かを判定する。受け付けたと判定された場合は、Ｓ２０２に進む。そうでない場合は、Ｓ２０１に戻る。
【００２８】
Ｓ２０２において、ＣＰＵ１０１はスキャナ１０６を制御して、スキャナ１０６は原稿の画像を読み取る。
【００２９】
Ｓ２０３において、ＣＰＵ１０１はＳ２０２における原稿の読み取りによって生成された画素信号から、画素単位の情報で表現されるビットマップ画像の画像データを生成し、ＲＡＭ１０３に記憶する。この際、画素データは２値画素データ、すなわち黒ならびに白画像データであることが好ましい。なお、画像データは、複数のグレイ階調値の１つで各画素が表現される中間調画像であっても、画素色を表わす複数ビットワードで各画素が表現されるカラー画像データであっても良い。
【００３０】
Ｓ２０４において、Ｓ２０３でＲＡＭ１０３に記憶された画像データから２値画像データを生成する。２値画像データの生成方法は、入力画像において閾値より濃い画素が例えば黒画素、閾値以下の画素が例えば白画素となる。なお、２値化結果は、黒、白で表されず、他の色で表されても良いし、色は無く、１、０や０、１で表されてもよい。また、Ｓ２０４では、閾値より濃い画素と、閾値以下の画素を区別することを目的としているが、同じ目的を達成できるのであれば、例えば、３値化、４値化でも良い。ただし、以降は、Ｓ２０４で２値画像データが生成されたものとして説明を行う。なお、入力画像データがカラーの多値画像データである場合には、２値化は、その多値画像データの輝度（例えば、ＹＵＶのうちのＹ）に対してのみ行われることになる。２値化を行う際の閾値の算出方法は公知の技術を用いる。例えば、単純２値化処理や誤差拡散処理、スクリーン処理等であってもよい。
【００３１】
Ｓ２０５において、ＣＰＵ１０１はＳ２０４で生成された二値画像データの解像度を下げた、低解像度画像データを生成する。低解像度画像データを生成する方法については、図３を用いて説明する。
【００３２】
図３はブロック選択処理の一例を示す図である。低解像度処理は、例えば、図３（Ａ）の３００ｄｐｉ（ｄｏｔｓ  ｐｅｒ  ｉｎｃｈｉ）の画像３０１を、図３（Ｂ）の７５ｄｐｉの画像３０２に変換する処理である。ここでは、３００ｄｐｉから７５ｄｐｉに解像度を下げるため、４×４画素ブロックを１画素にする。例えば、４×４画素ブロック内で黒画素が半数以上あればその１画素を黒画素にし、白画素が半数以上あればその１画素を白画素にする。
【００３３】
Ｓ２０６において、ＣＰＵ１０１はＳ２０５で生成された低解像度画像データにブロック選択処理を行う。ブロック選択処理を、図４を用いて説明する。
【００３４】
図４はブロック選択処理の一例を示す図である。まず、２値画像に対して黒画素の輪郭を追跡することにより、黒画素の塊（黒画素塊）を抽出する。輪郭の追跡では、左上、左、左下、下、右下、右、右上、上の８つの方向の何れかで黒画素が連続しているかで判断する。例えば図４（１）（Ａ）、（１）（Ｂ）において枠線部分の黒画素塊を抽出する。図４（１）（Ａ）では、「Ａ」、「Ｂ」、「Ｃ」を囲っている枠が、黒画素の隣接によって表されているため、枠の内側も黒画素塊として抽出される。
【００３５】
次に、抽出された黒画素塊の中に、一定の大きさを越える黒画素塊があれば、その領域内に白画素塊があるかを特定する。即ち、黒画素塊の領域内で白画素の輪郭を追跡することにより、白画素塊を抽出する。白画素の輪郭の追跡では、左、下、右、上の４つの方向の何れかで白画素が連続しているかで判断する。例えば図４（２）（Ａ）、（２）（Ｂ）の枠線の内側の白画素の輪郭を追跡し、白画素塊を抽出する。更に、抽出した白画素塊が一定の大きさを越える場合には、再度白画素塊内の黒画素の輪郭を追跡することにより黒画素塊の抽出を行う。例えば図４（２）（Ａ）の黒文字部分の輪郭を追跡し黒画素塊を抽出する。これらの処理は、画素塊が一定の大きさ以下になるまで繰り返し行う。この処理は枠線などで囲まれた領域内の文字領域を抽出するために行う。この処理の結果、図４（２）（Ａ）、（２）（Ｂ）の黒画素塊４０１が得られる。図４（２）（Ａ）、（２）（Ｂ）では、便宜上「Ａ」、「Ｂ」、「Ｃ」やカメラの絵を囲っている枠を点線で表現する。
【００３６】
上記処理で得られた黒画素塊４０１を、大きさや形状、黒画素密度のうちの少なくとも１つを用いて、文字か写真かに分類する。例えば、図４（３）（Ａ）の文字のように縦横比が１に近く、かつ、大きさが定められた範囲の黒画素塊を、文字を構成する黒画素塊と判定する。そして、残りの黒画素塊を、写真を構成する黒画素塊と判定する。ここでは、図４（３）（Ａ）の「Ａ」、「Ｂ」、「Ｃ」が文字を構成する黒画素塊となり、図４（３）（Ｂ）のカメラ画像は写真を構成する黒画素塊となる。
【００３７】
そして、文字と判定された黒画素塊同士の端部からの距離が所定値以下である場合に、その黒画素塊同士を同じグループに分類する。その上で、同じグループに分類された黒画素塊のすべてを包含する外接矩形領域をテキストブロックとしてＲＡＭ１０３に記憶する。例えば図４（４）（Ａ）に示すように文字間の距離が近い場合は、「Ａ」、「Ｂ」、「Ｃ」の文字列を１つのテキストブロックとして判定する。なお、文字を構成する他の黒画素塊が所定の距離内に無い、文字を構成する黒画素塊は、それ単独で一つのグループを構成することになる。従って、その単独の黒画素塊の外接矩形領域がテキストブロックと判定されることになる。なお、写真を構成する黒画素塊に対しても同様の処理が行われる。そして、各ブロックの位置と、そのブロックの属性判定情報（テキストか非テキストか）とを判定結果としてＲＡＭ１０３に記憶する。
【００３８】
ここで、図３（Ｂ）の画像３０２に対してＳ２０６のブロック選択処理を行った例について、右上部を拡大した図３（Ｄ）の画像３０３を用いて説明する。まず、黒画素の輪郭追跡を図３（Ｃ）の矢印の方向に行い、黒画素塊（今回の例では画像３０２の外枠）の抽出を行う。
【００３９】
次に、黒画素塊の領域内で白画素の輪郭を追跡する処理について、図３（Ｄ）を用いて説明する。ここで、図３（Ｄ）は３０２の右上部の拡大図である。図３（Ｄ）の様な画像に対し白画素の輪郭追跡を行った場合、矢印３０３より内側の領域が抽出される。この白画素輪郭内領域（矢印３０３の内側）についてさらに黒画素探索を行う。その結果、図３（Ｅ）の黒画素塊３０４の様な黒画素塊が得られる。これらの黒画素塊について、文字か写真かに分類する処理とグループに分類する処理を行う。その結果、図３（Ｆ）のようなテキストブロック３０５が生成される。この時、罫線に接している文字の上部は、黒画素塊の領域内で白画素の輪郭を追跡する処理で黒画素塊として抽出されず、テキストブロック３０５の領域外に存在している。つまり、非テキストブロックとして選択されている。このテキストブロック３０５を低解像化する前の画像データに適用した結果が図３（Ｇ）である。ここで、テキストブロック３０６は低解像化する前の画像データに適用するために、画像データサイズの縮小倍率に応じて拡大されたテキストブロックである。例えば、縦横３００ｄｐｉを縦横７５ｄｐｉに縮小した画像でブロック選択を行った場合には、縦横それぞれ４倍になる。以上でＳ２０６の説明を終える。
【００４０】
Ｓ２０７において、ＣＰＵ１０１はテキストブロックを補正する処理を行う。このテキストブロック補正については、図５のフローと図６を用いて説明する。なおこの処理は、低解像度化される前の画像データに、Ｓ２０６で判定されたテキストブロックを組み合わせた画像データに対して実行される。
【００４１】
テキストブロック３０６はＳ２０６で判定されたテキストブロック３０５を、低解像度化した画像と同じ倍率で拡大し、低解像度化される前の画像３０１に適用した右上端部の結果である。
【００４２】
図５はテキストブロック補正の処理の一例を示すフローチャートである。ＣＰＵ１０１がＲＯＭ１０２に記憶されたプログラムをＲＡＭ１０３に読み出し、実行することで図５のフローチャートの処理は実現される。なお、図５のフローは、Ｓ２０６の処理が完了したことによって開始される。
【００４３】
Ｓ５０１において、ＣＰＵ１０１はＳ２０６でブロックと判定された領域がテキストブロックか非テキストブロックかを判定する。具体的には、ＲＡＭ１０３に記憶されたブロックの属性判定情報に基づいて、テキストブロックであるか否かを判別する。テキストブロックであると判定された場合は、Ｓ５０２に進む。そうでない場合は、Ｓ５０６に進む。
【００４４】
Ｓ５０２において、ＣＰＵ１０１はテキストブロックの外周の黒画素を探索する。ここで、テキストブロックの外周の黒画素を探索処理について、図６を用いて説明する。図６は、テキストブロックの外周の黒画素探索処理の一例を示す図である。例えば、図６（Ａ）画像６０１内のテキストブロック３０６に対して処理を行う場合、図６（Ｂ）が示す、テキストブロックの上下左右の辺６０２〜６０５の１画素外にある黒画素の数をＣＰＵ１０１はカウントする。
【００４５】
Ｓ５０３において、ＣＰＵ１０１はＳ５０２でカウントした、テキストブロックの各辺の一画素外のラインの黒画素の数が所定の数あるか否かの判定を行う。具体的には、各辺において、１画素以上閾値以下（例えば、探索する辺の画素数の９０％）の黒画素がカウントされた場合、ブロック選択処理が正しく行われていないと判断し、Ｓ５０４に進む。黒画素の数が０、もしくは閾値より多くの黒画素がカウントされた場合はＳ５０６に進む。つまり、この処理ではテキストブロックが示す領域の外に文字を示す画素があるか否かを判定している。なお、ブロック選択処理が正しく行われていないと判断される黒画素の数については、１画素以上探索する辺の画素数の９０％以下に限らず、探索する辺の画素数の１０％以上９０％以下であってもいい。また、なお、ブロック選択処理が正しく行われていないと判断される黒画素の数の閾値は、工場出荷時に決められた値でもよいし、後から操作部１０８を介して変更できてもよい。
【００４６】
辺６０２〜６０５の探索結果の場合、辺６０２の１画素外のラインには１画素以上閾値以下の黒画素が存在しているため、テキストブロック３０６は辺６０２の探索結果から、ブロック選択処理が正しく行われていないと判断される。つまり、テキストブックを拡張すると決定する。ブロック選択処理が正しく行われていれば、テキストブックを拡張しないと決定する。
【００４７】
Ｓ５０４において、ＣＰＵ１０１はＳ５０３で１画素以上閾値以下の画素がカウントされた辺の方向にテキストブロックを１画素分拡張する。例えば、テキストブロック３０６の場合は辺６０２の探索結果からブロック選択処理が正しく行われていないと判断したため、図６（Ｃ）のように矢印６０６の方向に辺６０２を１画素分拡張する。拡張したとき、このテキストブロックの拡張された辺の拡張回数のカウントを１増やす。
【００４８】
Ｓ５０５において、ＣＰＵ１０１はあらかじめ決められた閾値分ブロックの拡張が行われているか否かを判定する。具体的には、拡張回数のカウントが閾値に達しているか否かを判定する。閾値分ブロックの拡張が行われていると判定された場合は、Ｓ５０６に進む。そうでない場合にはＳ５０３に戻る。例えば、３００ｄｐｉの画像を７５ｄｐｉの画像に低解像度化してブロック選択を行っていた場合、線付近の黒画素から１画素分内部にある白画素の輪郭追跡が行われる。そのため、低解像度化前の画像サイズで換算すると少なくとも４画素分の拡張が必要あると考えられる。そのため、この例の場合の閾値は４としている。また、今回の例では文字の上部に線が接している画像であったが、文字の横及び下部に接している場合にも同様の手順で補正可能である。
【００４９】
Ｓ５０６において、ＣＰＵ１０１はすべてのテキストブロックに処理を行ったか否かを判定する。行ったと判定された場合には処理を終了する。そうでない場合は、Ｓ５０７に進む。図６（Ｄ）のテキストブロック６０７のように、一画素分拡張されてもなおブロック選択処理が正しく行われていない場合があるため、複数回の拡張が可能になっている。
【００５０】
Ｓ５０７において、ＣＰＵ１０１はまだ処理が実行されていないブロックを選択して、Ｓ５０１に進む。以上で、Ｓ２０７のテキストブロック補正処理の説明を終了する。
【００５１】
ここで、図２に説明を戻す。Ｓ２０８において、Ｓ２０７で生成された各テキストブロックに対して、ＣＰＵ１０１は文字切り出し処理を行う。文字切り出し処理については、図７を用いて説明する。なお、この処理は低解像度化される前の画像データにＳ２０７で拡大されたテキストブロックを組み合わせた画像データに対して実行される。
【００５２】
図７は文字切り出し処理の一例を示す図である。図７（Ａ）のテキストボックス７０１は図５の処理で拡張されたテキストボックスの一例である。
【００５３】
まず、テキストブロック７０１において、ＣＰＵ１０１は矢印７０２の方向に黒画素がいくつあるかを数える。その結果を図７（Ａ）のグラフ７０３に表す。グラフ７０３は、矢印７０２の方向の各ラインにおける黒画素のヒストグラムである。グラフ７０３において、ＣＰＵ１０１は閾値ｔｈより多くの黒画素があった縦方向に連続するラインを一つのグループにする。テキストブロック７０１のようなテキストブロックの例では、全てのラインが連続しているため、分割結果は図７（Ａ）のグループ７０４の様になり、グループの分割は行われない。
【００５４】
次にＣＰＵ１０１はこのグループ（今回の例ではグループの分割は行われていないため、７０１が処理対象）に対して、図７（Ｂ）の矢印７０５の方向に、黒画素がいくつあるかを数える。その結果を図７（Ｂ）のグラフ７０６に表す。グラフ７０６は、矢印７０５の方向の各ラインにおける黒画素のヒストグラムである。グラフ７０６において、ＣＰＵ１０１は閾値ｔｈより多くの黒画素があった横方向に連続するラインを一つのグループにする。例えば、テキストブロック７０１に対して処理を行った場合、図７（Ｂ）のグループ７０７には、８つのグループが生じることになる。８つのグループは、それぞれ「￥」、「７」、「３」、「４」、「、」、「６」、「５」、「０」の存在するライン群から構成されるグループからなる。
【００５５】
ＣＰＵ１０１は各ライン群のグループの外接矩形を文字切出し矩形として切り出す。その結果、各文字の外接矩形が文字切出し矩形として切り出されることになる。切り出された結果は、文字切り出し矩形７０８に示す通りである。ＣＰＵ１０１は上記の処理を、処理されていない文字領域が無くなるまで繰り返す。
【００５６】
Ｓ２０９において、ＣＰＵ１０１はＳ２０８で切り出された文字切り出し矩形にＯＣＲ処理を実行する。ここで、ＯＣＲ処理は、既知の手法でＲＯＭ１０２に記憶されている文字辞書の文字と各文字との比較処理が行われる。文字辞書の索引は一般には１つの文字に対応するが、分離が難しいような文字列（例えば、「ｆ」「ｉ」）や分離されやすい１文字（例えば「ｊ」）に対しては他の索引が用意されることもある。すなわち、分離が難しいような接触文字ペアを辞書の索引とすることも、分離されやすいような１文字中の部分を辞書の索引とすることもある。比較処理に基づいて文字画像に対する識別子が選択され、選択された文字識別子はＲＡＭ１０３に記憶される。
【００５７】
Ｓ２１０では、Ｓ２０３で生成された画像データと、Ｓ２０９で生成された文字識別子を結合し、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルを生成する。なお、原稿の読み取りの代わりに、例えばＪＰＥＧ画像がモデム１０９等を介して入力された場合、文字認識処理によって生成されたメタデータと画像データを統合しＰＤＦファイルとして生成することも可能である。ここでＪＰＥＧとはＪｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐである。
【００５８】
以上の処理を実行することで、画像データが示す画像内の文字と線が接している場合に、文字認識処理の精度の低下を抑制することができる。
【実施例２】
【００５９】
実施例１では、低解像度化される前の画像データを用いて、テキストブロック補正を実行する例を説明した。本実施例では、低解像度化された後の画像データを用いてテキストブロック補正を行う例を実施例１との差分を主に説明する。
【００６０】
図８は文字認識処理の一例を示すフローチャートである。ＣＰＵ１０１がＲＯＭ１０２に記憶されたプログラムをＲＡＭ１０３に読み出し、実行することで図８のフローチャートの処理は実現される。なお、図８のフローは、ＭＦＰ１００の電源がオンになったことによって開始される。
【００６１】
Ｓ８０１〜Ｓ８０６は、図２のＳ２０１〜Ｓ２０６の処理と同様なため説明を省略する。
【００６２】
Ｓ８０７において、ＣＰＵ１０１はＳ８０５で生成した低解像度画像データに、Ｓ８０６で判定されたテキストブロックを組み合わせた画像データに対してテキストブロック処理を実行する。詳細は、図９のフローと図１０を用いて説明する。
【００６３】
図９は、テキストブロック補正の処理の一例を示すフローチャートである。ＣＰＵ１０１がＲＯＭ１０２に記憶されたプログラムをＲＡＭ１０３に読み出し、実行することで図９のフローチャートの処理は実現される。なお、図９のフローは、Ｓ８０６の処理が完了したことによって開始される。
【００６４】
Ｓ９０１において、ＣＰＵ１０１はＳ８０６でブロックと判定された領域がテキストブロックか非テキストブロックかを判定する。具体的には、ＲＡＭ１０３に記憶されたブロックの属性判定情報に基づいて、テキストブロックであるか否かを判別する。テキストブロックであると判定された場合は、Ｓ９０２に進む。そうでない場合は、Ｓ９０５に進む。
【００６５】
Ｓ９０２において、ＣＰＵ１０１はテキストブロックの外周の黒画素を探索する。ここで、テキストブロックの外周の黒画素を探索処理について、図１０を用いて説明する。図１０は、低解像度画像データのテキストブロックの外周の黒画素探索処理の一例を示す図である。例えば、図１０（Ａ）画像６０１内のテキストブロック３０５に対して処理を行う場合、図１０（Ｂ）が示す、テキストブロックの上下左右の辺１００１〜１００４の外側１画素にある黒画素の数をＣＰＵ１０１はカウントする。
【００６６】
Ｓ９０３において、ＣＰＵ１０１はＳ９０２でカウントした、テキストブロックの各辺の外側一画素分のラインの黒画素数について判定を行う。各辺において、１画素以上閾値未満（例えば、探索する辺の画素数の１００％）の黒画素がカウントされた場合、ブロック選択処理が正しく行われていないと判断し、Ｓ９０４に進む。黒画素の数が０、もしくは探索する辺の画素数の１００％が黒画素であるとカウントされた場合はＳ９０５に進む。辺１００１〜１００４の探索結果の場合、辺１００１の外側１画素のラインには１画素以上閾値以下の黒画素が存在しており、辺１００２〜１００４の外側１画素のラインには黒画素が１画素も存在していない。したがって、テキストブロック３０５は辺１００１の探索結果から、ブロック選択処理が正しく行われていないと判断される。
【００６７】
Ｓ９０４において、ＣＰＵ１０１はＳ９０３で１画素以上閾値以下の画素がカウントされた辺の方向にテキストブロックを１画素分拡張する。例えば、テキストブロック３０５の場合は辺１００１の探索結果からブロック選択処理が正しく行われていないと判断したため、図１０（Ｃ）のように矢印１００５の方向に辺１００１を１画素分拡張する。その結果、図１０（Ｄ）のテキストブロック１００６のようなテキストブロックが得られ、文字部を正確にテキストブロックとして選択することが可能となる。
【００６８】
Ｓ９０５において、ＣＰＵ１０１はすべてのテキストブロックに処理を行ったか否かを判定する。行ったと判定された場合には処理を終了する。そうでない場合は、Ｓ９０６に進む。
【００６９】
Ｓ９０６において、ＣＰＵ１０１はまだ処理が実行されていないブロックを選択して、Ｓ９０１に進む。以上で、Ｓ８０７のテキストブロック補正処理の説明を終了する。
【００７０】
Ｓ８０８〜８１０は、Ｓ２０８〜Ｓ２１０の処理と同様なため説明を省略する。
【００７１】
以上のように、低解像度化された後の画像データを用いてテキストブロック補正を行うことで、判定する画素数が少なくなるため、解像度を下げない場合よりも高速にテキストブロック補正処理を行うことができる。
【００７２】
＜その他の実施形態＞
なお、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施の形態の機能を実現するプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に記憶されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードは本発明を構成することになる。
【００７３】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【符号の説明】
【００７４】
１００  ＭＦＰ
１０１  ＣＰＵ
１０６  スキャナ
【図１】
2020087320.tif 000003
【図２】
2020087320.tif 000004
【図３】
2020087320.tif 000005
【図４】
2020087320.tif 000006
【図５】
2020087320.tif 000007
【図６】
2020087320.tif 000008
【図７】
2020087320.tif 000009
【図８】
2020087320.tif 000010
【図９】
2020087320.tif 000011
【図１０】
2020087320.tif 000012