以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
<画像形成装置の構成>
まず、カラー複合機のハードウェア構成について、図1を用いて説明する。尚、本発明は、カラー複合機に限定されるものではなく、他のモノクロ複合機やプリンタ単体機など、他の画像形成装置にも適用できることは言うまでもない。
図1は、本実施形態におけるカラー複合機100のハードウェア構成の一例を示す図である。カラー複合機100は、スキャナ部101、レーザ露光部102、作像部103、定着部104、給紙/搬送部105で構成される。これらは、不図示のプリンタ制御部によって制御される。
スキャナ部101は、原稿台に置かれた原稿に対して照明を当て、原稿画像を光学的に読み取り、その像を電気信号に変換して画像データを作成する。レーザ露光部102は、画像データに応じて変調されたレーザ光などの光線を等角速度で回転する回転多面鏡(ポリゴンミラー)に入射させ、反射走査光として感光ドラムに照射する。
作像部103は、感光ドラムを回転駆動し、帯電器によって帯電させると共に、レーザ露光部102によって感光ドラム上に形成された潜像をトナーによって現像化する。そして、トナー像をシートに転写し、転写されずに感光ドラム上に残った微小トナーを回収する。この一連の電子写真プロセスを実行して作像する際に、シートが転写ベルトの所定位置に巻きつき、4回転する間に、現像ユニット(現像ステーション)が入れ替わりで順次この電子写真プロセスを繰り返し実行する。ここで、現像ユニットは、マゼンタ(M)、シアン(C)、イエロー(Y)、ブラック(K)のトナーを持つ。そして、4回転の後、4色のフルカラートナー像が転写されたシートは転写ドラムを離れ、定着部104へ搬送される。
定着部104は、ローラやベルトの組み合わせによって構成され、ハロゲンヒータなどの熱源を内蔵し、作像部103によってトナー像が転写されたシート上のトナーを、熱と圧力によって溶解、定着させる。
給紙/搬送部105は、シートカセットやペーパーデッキに代表されるシート収納庫を一つ以上備え、プリンタ制御部の指示に応じてシート収納庫に収納された複数のシートの中から一枚を分離し、作像部103、定着部104へ搬送する。シートは作像部103の転写ドラムに巻きつけられ、4回転した後に定着部104へ搬送される。4回転する間に上述したYMCK各色のトナー像がシートに転写される。また、シートの両面に画像形成する場合は、定着部104を通過したシートを再度作像部103へ搬送する両面搬送経路を通るように制御する。
プリンタ制御部は、複合機全体を制御するコントロールユニットと通信し、その指示に応じて制御を実行する。また、上述したスキャナ部101、レーザ露光部102、作像部103、定着部104、給紙/搬送部105の各部の状態を管理しながら、全体が調和を保って円滑に動作できるよう指示を行う。
<コントロールユニットの構成>
図2は、カラー複合機100におけるコントロールユニット(コントローラ)の構成の一例を示すブロック図である。コントロールユニット200は、画像入力デバイスであるスキャナ201や画像出力デバイスであるプリンタエンジン202と接続し、画像データの読み取りやプリント出力のための制御を行う。また、コントロールユニット200は、LAN10や公衆回線204と接続することで、画像情報やデバイス情報をネットワーク経由で入出力するためのユニットでもある。
コントロールユニット200において、CPU205は、システム全体を制御するための中央処理装置である。RAM206は、CPU205が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。ROM207は、ブートROMであり、システムのブートプログラムが格納されている。HDD208は、ハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データや後述するドキュメントデータなどを格納する。
操作部I/F209は、画像データなどを表示可能な表示画面を有する操作部210に対するインタフェースであり、操作部210に対して画像データを出力する。また、操作部I/F209は、操作部210から操作者(即ち、カラー複合機の使用者)が入力した情報をCPU205に伝える役割をする。更に、ネットワークI/F211は、例えば、LANカードで実現され、LAN10に接続して外部装置との間で情報の入出力を行う。また、モデム212は公衆回線204に接続し、外部装置との間で情報の入出力を行う。
以上の各デバイスがコントロールユニット200のシステムバス213上に配置されている。
次に、イメージバスI/F214は、システムバス213と後述する画像バス215とを接続するインタフェースであり、データ構造を変換するバスブリッジである。画像バス215は、画像データを高速に転送するバスであり、PCIバス又はIEEE1394で構成される。この画像バス215上には、後述するRIP216、デバイスI/F217、スキャナ画像処理218、プリンタ画像処理219、画像編集用画像処理部220、CMM230といったデバイスが接続される。
RIP(ラスタイメージプロセッサ)216は、ディスプレイリスト(DL)を解釈し、ラスタ画像(ラスタイメージ)及びその各ピクセルに対応する属性情報(属性ビット)を作成(レンダリング)する。デバイスI/F217は、スキャナ201及びプリンタエンジン202とコントロールユニット200とを接続し、画像データの同期系/非同期系の変換を行う。
また、スキャナ画像処理218は、入力画像データに対して、補正、加工、編集などの各種処理を行う。プリンタ画像処理219は、プリント出力画像データに対して、プリンタの補正、解像度変換等の処理を行う。画像編集用画像処理部220は、画像データの回転や画像データの圧縮伸長処理、RIP216の生成した属性ビットに基づく各種画像処理を行う。CMM(カラーマネージメントモジュール)230は、画像データに対して、プロファイルやキャリブレーションデータに基づく色変換処理を施す専用ハードウェアモジュールである。
<コントローラソフトウェア構成>
図3は、カラー複合機100のコントロールユニット200上で動作するコントローラソフトウェアのモジュール構成の一例を示すブロック図である。尚、このソフトウェアは、ROM207に格納されており、CPU205によって実行される。
ジョブコントロール処理301は、図示/不図示の各ソフトウェアモジュールを統括・制御し、カラー複合機100内で発生する全てのジョブの制御を行う。ネットワーク処理302は、主にネットワークI/F211を介して外界との通信を制御するモジュールであり、LAN10の各機器との通信制御を行う。ネットワーク処理302は、LAN10の各機器からの制御コマンドやデータを受信すると、その内容をジョブコントロール処理301へ通知する。また、ジョブコントロール処理301からの指示に基づいて、LAN10の各機器へ制御コマンドやデータの送信を行う。
UI処理303は、主に操作部210に係る制御を行う。操作者が操作部210を操作した内容を、ジョブコントロール処理301へ通知すると共に、ジョブコントロール処理301からの指示に基づいて、操作部210上の表示画面の表示内容を制御する。FAX処理304は、FAX機能の制御を行う。FAX処理304は、モデム212を介してFAX受信を行い、FAX画像特有の画像処理を施した後、受信画像をジョブコントロール処理301へ通知する。また、ジョブコントロール処理301からの指定される画像を、指定通知先へFAX送信を行う。
PDL解析処理305は、ジョブコントロール処理301の指示に基づいてPDLデータを解析し、RIP処理311で処理可能なDL及び後述するPDL文字情報を生成し、ジョブコントロール処理301生成へ通知する。色変換処理309は、ジョブコントロール処理301の指示に基づいて指示画像に対して色変換処理を行い、色変換処理後の画像をジョブコントロール処理301へ通知する。ジョブコントロール処理301は、色変換処理309に対して入力色空間情報、出力色空間情報及び色変換を適用する画像を通知する。
RIP処理311は、PDL解析処理305で生成したDLを、RIP216を制御してレンダリングすることで、ラスタ画像(ラスタイメージ)及びその各ピクセルに対応する属性ビットを作成し、ジョブコントロール処理301へ通知する。生成される各属性ビットは、対応するピクセルの属性を示すデータであり、1bitのカラービット、1bitの細線/小文字ビット及び2bitのオブジェクト種ビットの3つのビットフィールド計4bitで構成されている。
カラービットは対応するピクセルがカラーオブジェクトを構成するピクセルであるか、白黒オブジェクトを構成するピクセルであるかを表す。このビットが“0”である時にはカラーオブジェクトを構成するピクセルであり、“1”である時には白黒オブジェクトを構成するピクセルであることを示す。
細線/小文字ビットは対応するピクセルが細線又は小文字を構成するピクセルであるか否かを表す。このビットが“1”である時には細線又は小文字を構成するピクセルであることを示し、“0”である時にはそれ以外を構成するピクセルであることを示す。
オブジェクト種ビットは対応するピクセルがどのような種類の描画オブジェクトを構成しているかを表す。このビットが“01”の時には文字オブジェクトを、“10”の時にはグラフィックスオブジェクトを、“11”の時にはイメージオブジェクトを、“00”の時には、ラインオブジェクトを、構成するピクセルであることを示す。
また、細線/小文字ビットが“1”で、オブジェクト種ビットが文字オブジェクトであることを示す“01”の時には、そのピクセルは小文字を構成するピクセルである。また、ラインオブジェクトであることを示す“00”の時には、そのピクセルは細線を構成するピクセルであることを示す。
プリント処理307は、ジョブコントロール処理301の指示に基づいて画像編集用画像処理部220、プリンタ画像処理219及びプリンタエンジン202を制御し、指定画像の印刷処理を行う。プリント処理307は、ジョブコントロール処理301より、画像データ、画像情報(画像データのサイズ、カラーモード、解像度)、レイアウト情報(オフセット、拡大縮小、面付け)及び出力用紙情報(サイズ、印字方向)の情報を受け付ける。続いて、画像編集用画像処理部220及びプリンタ画像処理219を制御して、画像データに対して適切な画像処理を施し、プリンタエンジン202を制御して指定用紙への印刷を行う。
スキャン処理310は、ジョブコントロール処理301の指示に基づいてスキャナ201及びスキャナ画像処理218を制御して、スキャナ201上にある原稿の読み込みを行う。ジョブコントロール処理301の指示には、カラーモードが含まれており、スキャン処理310ではカラーモードに応じた処理が行われる。即ち、カラーモードがカラーであれば、原稿をカラー画像として入力し、カラーモードがモノクロであれば、原稿をモノクロ画像として入力する。また、カラーモードがオートである場合には、プレスキャンにより原稿のカラー/モノクロ判定を行った後、判定結果に基づいた画像として入力する。
また、スキャン処理310は、スキャナ201の原稿台にある原稿のスキャンを実行し、デジタルデータとして画像の入力を行う。入力した画像のカラー情報は、ジョブコントロール処理301へ通知される。更に、スキャン処理310は入力画像に対してスキャナ画像処理218を制御して、画像の圧縮など、適切な画像処理を施した後、ジョブコントロール処理301へ画像処理済みの入力画像を通知する。
ドキュメント管理処理308は、ジョブコントロール処理301の指示に基づいて「ドキュメントデータ」を生成し、HDD208へ格納する。また、ドキュメント管理処理308は、ジョブコントロール処理301が指定するドキュメントデータをHDD208から検索し、ジョブコントロール処理301へ通知する。
メタデータ生成処理306は、ジョブコントロール処理301の指示に基づいて、後述するメタデータの生成を行う。
[第1の実施形態]
以上の構成において、FAX受信やスキャンによる入力画像や外部のコンピュータより受信したPDLデータからメタデータを生成し、ドキュメントデータを生成する、第1の実施形態での処理を説明する。特に、本発明に係る、PDLデータから文字列を抽出してメタデータを決定するメタデータ決定方法について詳しく説明する。
<ドキュメントデータ生成処理>
まず、ドキュメントデータ生成処理のデータフローを、図4及び図5に示すデータフロー図を参照して説明する。ドキュメントデータは、ユーザの操作部210の操作やリモート端末からの指示によりカラー複合機100が画像蓄積モードに設定されている場合に生成される。
図4は、FAX受信時及び画像スキャンにおけるメタデータ生成処理及びドキュメントデータ生成処理のデータフローを示す図である。カラー複合機100がFAX受信を行うと、FAX処理304を起動し、FAX受信データより入力画像を生成する(d1)。また、カラー複合機100がユーザの操作によりスキャンを指示されると、スキャン処理310を起動し、スキャン画像に適切な画像処理を施して入力画像を生成する(d2)。
次に、メタデータ生成d3では、FAX受信d1又はスキャンd2の生成した入力画像が入力されると、メタデータ生成処理306を起動し、OCR処理等を行ってメタデータを生成する。ドキュメントデータ生成d4では、ドキュメント管理処理308を起動し、入力画像及びメタデータを用いてドキュメントデータを生成してHDD208へ格納する。
図5は、PDLデータ受信時におけるメタデータ生成処理及びドキュメントデータ生成処理のデータフローを示す図である。カラー複合機100が外部のコンピュータからPDLデータを受信すると、PDL解析処理305を起動し、ディスプレイリスト(DL)及びPDL文字データを生成する(d5)。PDL文字データについては、更に後述する。
レンダリングd6では、RIP処理311を起動し、PDLデータ解析d5の生成したDLを用いてラスタイメージ及び属性ビットを生成する。次に、PDLデータ受信時のメタデータ生成d3では、メタデータ生成処理306を起動し、PDLデータ解析d5の生成したPDL文字データと、レンダリングd6の生成したラスタイメージ及び属性ビットとを用いてメタデータを生成する。
PDLデータ受信時のドキュメントデータ生成d4では、ドキュメント管理処理308を起動し、上述したラスタイメージ及びメタデータを用いてドキュメントデータを生成してHDD208へ格納する。
<PDL解析処理>
ここで、PDLデータからDL及びPDL文字データを生成する処理を、図6を用いて説明する。
図6は、第1の実施形態でのPDL解析処理を示すフローチャートである。外部ネットワークLAN10を介してカラー複合機100へ送信されたPDLデータは、ネットワーク処理302を介してジョブコントロール処理301へ通知される。ジョブコントロール処理301は、PDLデータを解析させるために、PDL解析処理305を起動する。
PDL解析処理305は、送られてきたPDLデータの解析処理を順次行い(S601)、解析処理結果に応じてPDLデータ内の各データに対する処理の分岐を以下のように行う(S602)。解析処理の結果、ページ開始処理のデータであると判断した場合はS603へ進み、新たなページ開始処理としてDLのオープン処理を行い、S608へ進む。また、ページ終了処理のデータであると判断した場合はS604へ進み、ページ終了処理として、RIP処理311で解釈可能な形式にDLを整形し、DLのクローズ処理を行った後、S608へ進む。
また、解析処理の結果、描画オブジェクトのデータであると判断した場合は、S605へ進む。S605では、描画オブジェクトの種類を判断し、描画オブジェクトの種類が文字又は文字列である場合はS606へ進み、PDLデータから文字及び文字列の描画オブジェクトの情報を抽出して、PDL文字データを生成する。文字及び文字列の描画オブジェクトには、描画すべき文字の文字コード、サイズ、描画位置情報が含まれている。これらの情報を用いて、文字列全体のテキスト情報、文字列全体のバウンディングボックス、文字列に含まれる各文字のテキスト情報及び各文字のバウンディングボックス情報を、PDL文字データとして生成し、S607へ進む。
一方、描画オブジェクトがグラフィックス又はイメージである場合はS607へ進む。S607では、描画オブジェクトをRIP処理311でレンダリングするためのDLを生成する。DLには、各オブジェクトの形状や色、論理描画指定、オブジェクトの種類の情報などが含まれる。
次に、S608で、解析すべきPDLデータが残っているか否かを判断し、残っている場合はS601に戻り、PDL解析処理を継続し、上述した処理を繰り返す。また、通知されたPDLデータを全て解析済みであれば、この処理を終了する。
尚、上述のPDLには、LIPS(商標)やPS(商標)など様々な種類が存在するが、S601でPDL解析処理305のロジックをそれぞれの言語に適したPDL解析処理を適用すればよい。ここで、LIPS(商標)はLBP Image Processing Systemの略であり、またPS(商標)はPostScriptの略である。
また、ジョブコントロール処理301は、予めPDLの種別を判定し、PDL解析処理305が実行される際に適切なロジックが適用されるように制御する。
<PDL文字データ>
ここで、PDL解析処理305がPDLデータを解析し、文字列部分の情報を抽出して生成したPDL文字データについて、図7〜図9を用いて説明する。アプリケーションの種類やプリントドライバの種類に応じて出力されるPDLデータは異なる場合がある。即ち、同じテキスト文字列であっても、アプリケーションやドライバの種類によっては、PDLデータ内の文字列は異なる記述になることがある。例えば、アプリケーションがドライバに対して複数の文字を1つの文字列のまとまりとして出力して、該ドライバがPDLデータを作成する場合、該テキスト部分は1つの文字列単位で記述されることがある。一方、ドライバに対して複数の文字をバラバラに出力するようなアプリケーションの場合、該ドライバは1文字ずつバラバラの状態でPDLデータにするので、1文字ずつの記述になったり、各文字の出現順が変わってしまったりすることがある。
図7は、PDLデータに文字列の「Hello」を含む描画オブジェクトの描画結果を示す図である。図8は、まとまった状態で文字列部分が記述されているPDLデータから、該文字列部分が抽出されて生成されたPDL文字データを示す例である。図9は、一文字ずつの状態で文字列部分が記述されているPDLデータから、各文字列部分が抽出されて生成されたPDL文字データを示す例である。
図8及び図9において、<Strings>タグは、PDLデータに記述されていた文字列の情報を含んでいる。また、<Strings>タグと</Strings>タグの間には、描画される各文字の情報を記述するための1つ以上の<Char>タグが含まれている。この<Char>タグと</Char>タグの間には、描画される文字列に関する各文字の情報の詳細が<Bbox>タグや<Text>タグを用いて記述される。
<Strings>タグ内のString−Bbox属性は、文字列のバウンディングボックス(文字列が描画される外接矩形領域)を表している。図8に示す例では、文字列「Hello」全体が左上座標(7.5、9.0)と右下座標(37.1、16.9)とで指定される矩形領域内に描画されることを示している。
<Strings>タグ内のStrings−text属性は、文字列として指定されているテキスト情報(文字コード)を含む。図8に示す例では、文字列のテキスト情報は“Hello”である。図9に示す例では、1文字ずつ別々の<Strings>タグ内に記述されており、最初の文字列のテキスト情報は“H”であることを示している。
<Strings>タグ内のStrings−ID属性は、メタデータ中の<Strings>タグのブロックを一意に識別可能なID情報を含む。
<Char>タグと</Char>タグの間には、描画される文字列に関する各文字の情報が記述されており、<Bbox>タグには、当該<Char>タグで示される1文字が描画される領域(バウンディングボックス)を示している。図8に示す例では、文字列「Hello」に含まれる文字「H」は左上座標(7.5、9.0)と右下座標(15.4、16.9)とで指定される矩形領域内にあることを示している。
尚、図9に示すように、文字列が一文字ずつバラバラで記述されている場合、String−Bbox属性の示すバウンディングボックスと、<Char>タグの下にある<Bbox>タグが示すバウンディングボックスとは一致する。
また、<Char>タグ下の<Text>タグは、当該<Char>タグに対応する各文字のテキスト情報(文字コード)を示す。
<メタデータ生成処理>
ここで、メタデータ生成処理306がメタデータを生成する処理を、図10〜図13を用いて説明する。
図10は、メタデータ生成処理306の処理を示すフローチャートである。まず、S1001で、入力されてきたデータ(スキャン画像やFAX画像やPDLデータ)に対応付ける基本メタデータを生成する。この基本メタデータには、入力種別(スキャン、FAX、PDL)、ページ番号、作成日時、操作者情報、カラー・モノクロ情報、アプリケーション種別、送信元情報が含まれる。アプリケーション種別は、PDLデータ受信時のみ含まれ、送信元情報はPDLデータ受信時及びFAX受信時のみ含まれる。
尚、基本メタデータ情報として含まれる情報は上述のものに限られるものでなく、他の情報が含まれても良いことは言うまでもない。
次に、S1002で、入力データ種別を判定する。ここで、入力データ種別がPDLデータであればS1003へ進み、入力データ種別がFAX受信した画像データ又はスキャンして得た画像データであればS1009へ進む。S1003では、RIP処理311においてPDLデータを解釈してレンダリングしたときに生成した属性ビットを利用して、文字領域と非文字領域(グラフィックス領域、イメージ領域)とに領域分割(領域識別)する。そして、その文字領域あるいは非文字領域として識別された各領域に対してS1005〜S1008の処理を繰り返す(S1004)。
図13において、(A)はRIP処理311が生成するラスタイメージデータを示す図である。(B)は対応する属性ビットを可視的に表した図である。(C)は属性ビットを利用した領域分割の一例を示す図である。
図13に示す(B)を見ると、ラスタイメージ上の各ピクセルにどのような種類の描画オブジェクトが描画されているかがわかる。この属性ビットの情報から、(C)の破線で囲まれたそれぞれの矩形領域に分割する。図13に示す例では、1つのグラフィック領域と、2つのイメージ領域と、1つの文字領域とに分割されている。
次に、S1005で、処理対象の領域の種別を判別し、S1006へ進むかS1007に進むか、処理を切り替える。ここで、処理対象の領域が文字領域である場合はS1006へ進み、グラフィックス又はイメージ領域である場合はS1007へ進む。
S1006及びS1007では、それぞれ後述する文字認識処理が行われ、処理対象の領域に含まれる文字列情報が抽出され、S1008へ進む。S1008では、S1006又はS1007で抽出された文字列情報をメタデータに追加する。
一方、入力データ種別がFAX受信画像又はスキャン画像の場合、S1009において、入力画像全体に対してS1007と同様の文字認識処理を行い、入力画像に含まれる文字列情報を抽出する。そして、S1010において、S1009で抽出された文字列情報を、メタデータに追加して終了する。
図11は、S1006のPDL文字データを利用した文字認識処理の詳細を示すフローチャートである。S1101で、処理対象の文字領域から各文字の切り出しを行う。文字の切り出しでは、まず該当領域に対して横書き、縦書きの判定を行い、それぞれ対応する方向に行を切り出し、その後、文字を切り出す。
横書き、縦書きの判定は、該当領域内の属性ビットから文字オブジェクトを示すビットに対する水平/垂直の射影(もしくはヒストグラム)を取り、その分布に基づいて横書き、縦書きの判定を行う。例えば、水平射影の分散が大きい場合は横書き領域と判定し、垂直射影の分散が大きい場合は縦書き領域と判定する。また、文字への分解は、横書きの場合は水平方向の射影を利用して行を切り出し、更に切り出された行に対する垂直方向の射影から文字を切り出す。一方、縦書きの文字領域に対しては、水平方向と垂直方向を逆にすれば良い。
次に、S1102〜S1106の処理は切り出した文字毎に順次行う。処理する順番は、当該領域が横書きであれば左上の文字から右方向に沿って進め、縦書きであれば右上の文字から下方向に沿って進める。
S1103では、切り出した処理対象の文字のバウンディングボックス(文字に外接する矩形領域)を求め、PDL文字データ内にある各文字のバウンディングボックス情報と比較し、一致する文字を検索する。尚、PDL文字データ(PDLデータ)に関しては、アプリケーションにおいてデータを作成した際に複数の文字オブジェクトを重ねて配置(上書き)していた場合など、複数の文字のバウンディングボックスが同じ位置に存在する可能性がある。そこで、S1103での検索の結果、一致する文字が2つ以上あるかどうか判断し、ある場合にはS1104へ進み、1つのみの場合にはS1106へ進む。ここで、バウンディングボックス情報の一致は、完全一致である必要は無く、例えば処理対象の文字のバウンディングボックスと、PDL文字データ内にある文字のバウンディングボックスとが95%重なっていたら一致することにすれば良い。
S1104では、PDL文字データ内にあるバウンディングボックスが一致した複数の文字を候補にして、処理対象の文字のビットマップとパターンマッチング(OCR処理)を行う。そして、S1105で、複数の文字の候補のうち、一番近い候補のテキスト情報を処理対象文字の認識結果として採用する。
一方、S1106では、処理対象の文字のバウンディングボックスと一致した、PDL文字データ内の文字のテキスト情報を処理対象文字の認識結果として採用する。
尚、PDL文字データを利用した文字認識処理の結果として抽出される文字列は、認識結果の各テキスト情報を認識した順番(処理対象の文字領域から切り出した各文字の認識順)に並べたものとする。即ち、PDL文字データの出現順ではなく、ラスタイメージにしたときの出現順である。
図12は、S1007及びS1009の文字認識処理の詳細を示すフローチャートである。S1201で、処理対象の画像に対して領域分割を行い、文字領域を切り出す。この領域分割の一実施形態を以下に説明する。
まず、処理対象画像を白黒に2値化し、当該2値化処理で得た2値画像に対して黒画素の輪郭線追跡を行って黒画素輪郭で囲まれる画素の塊を抽出する。そして、面積の大きい黒画素の塊については、黒画素塊内部にある白画素に対して白画素の輪郭線追跡を行って白画素の塊を抽出する。更に、当該抽出された白画素塊のうち一定面積以上となった白画素の塊の内部からも再帰的に黒画素の塊を抽出する。
尚、ここでの処理は、白地に黒字等で記載されている画像の場合の処理であって、それ以外の場合は背景に相当する色を「白」、オブジェクトに相当する色を「黒」とすることにより同様に処理することができる。
このようにして得られた黒画素の塊を、大きさ及び形状等で分類し、異なる属性を持つ領域へ分類する。例えば、縦横比が1に近く、大きさが一定範囲のものを文字相当の画素塊とし、更に近接する文字が整列良くグループ化可能な部分を文字領域とする。
また、扁平な画素塊を線領域、一定の大きさ以上で、かつ四角系の白画素塊を整列よく内包する黒画素塊の占める範囲を表領域、不定形の画素塊が散在している領域をイメージ領域、それ以外の任意形状の画素塊をグラフィック領域等とする。
次に、S1203〜S1205の処理は、S1201で切り出した全文字領域に対して順次適用する(S1202)。
S1203で、処理対象の文字領域から各文字の切り出し処理を行う。文字の切り出し処理では、まず該当領域の2値画像に対して横書き、縦書きの判定を行い、各々対応する方向に行を切り出し、その後文字を切り出して文字画像を得る。横書き、縦書きの判定は、該当領域内で画素値に対する水平/垂直の射影(又はヒストグラム)を取り、その分布に基づいて横書き、縦書きの判定を行う。例えば、水平射影の分散が大きい場合は横書き領域と判定し、垂直射影の分散が大きい場合は縦書き領域と判定すれば良い。
また、文字列及び文字への分解は、横書きの場合は水平方向の射影を利用して行を切り出し、更に切り出された行に対する垂直方向の射影から、文字を切り出す。一方、縦書きの文字領域に対しては、水平と垂直を逆にすれば良い。
S1203で切り出した各文字画像に対して、S1205の文字コード認識処理を順次適用する。ここで処理する順番は、当該領域が横書きであれば左上の文字から右方向に沿って進め、縦書きであれば右上の文字から行に沿って進める。
ここで、文字コード認識処理の一例について説明する。文字コード認識では、文字単位で切り出された画像に対し、パターンマッチングの一手法を用いて認識を行い、対応する文字コード(=テキスト情報)を得るものとする。この認識処理は、文字画像から得られる特徴を数十次元の数値列に変換した観測特徴ベクトルと、予め字種毎に求められている辞書特徴ベクトルと比較し、最も距離の近い字種を認識結果とする処理である。
尚、特徴ベクトルの抽出には種々の公知手法があり、例えば文字をメッシュ状に分割し、各メッシュ内の文字線を方向別に線素としてカウントしたメッシュ数次元ベクトルを特徴とする方法を用いることができる。
S1203で切り出した全文字について、文字コード認識処理が終了後、文字認識処理を終了する。
尚、文字認識処理の結果として抽出される文字列は、認識結果のテキスト情報を認識した順番に並べたものとする。
<メタデータ>
図14は、メタデータ生成処理306で生成されるメタデータの一例を示す図である。<Metadata>タグのブロック内にある、Kind属性は入力種別の情報を含み、この例ではPDLデータであることを示している。PageNo属性はページ番号の情報を含み、この例ではPDLデータから生成された1ページ目のラスタイメージに対応するメタデータであることを示している。Date属性は、作成日時の情報を含み、この例ではメタデータが2006年1月1日の0時に作成されたことを示している。
また、User属性は操作者情報を含み、この例では「AAA」というユーザがPDLデータをカラー複合機100へ通知したことを示している。Color属性はカラー・モノクロ情報を含み、この例ではRIP処理311が生成したラスタイメージがモノクロ画像であることを示している。
また、Application属性はアプリケーション種別の情報を含み、この例では通知されたPDLデータが「MEMO」というアプリケーションで作成されたことを示している。From属性は送信元情報を含み、この例ではPDLデータが「192.168.1.0」のIPアドレスのPCから通知されたことを示している。
以上の属性は、S1001で作成され、メタデータに追加される。
<Metadata>タグのブロック内にある<TEXT>タグのブロックは、S1008又はS1010で追加された文字列情報である。この例では、RIP処理311が生成したラスタイメージに「昨日の天気は雨でした。」と「今日の天気は晴れでしょう。」という文字列が描画されていることを示している。
<ドキュメント管理処理>
ここで、ドキュメント管理処理308で行われるドキュメントデータ生成・格納処理を、図15及び図16を用いて説明する。
図15は、ドキュメントデータ生成・格納処理を示すフローチャートである。ドキュメント管理処理308は、ジョブコントロール処理301からドキュメントデータ生成通知を受けると、ドキュメント構造体を構築する(S1501)。図16はドキュメント構造体の一例を示す図である。ドキュメント構造体は、ドキュメントデータに含まれるページ数、各ページの画像ファイルのパス、各ページのメタデータファイルへのパスを保持する。ドキュメント構造体を構築時には、ページ数は0で、各ファイルへのパスはない。
ジョブコントロール処理301から、RIP処理311が生成したラスタイメージ又はFAX処理304が生成した入力画像、或いはスキャン処理310が生成した入力画像を通知される。ドキュメント管理処理308は通知された画像を画像ファイルとしてHDD208へ格納する(S1502)。このように、本実施形態では、ラスタイメージ(PDLをRIP処理して得たイメージ、FAX画像、スキャン画像)を画像ファイル(画像データ)として格納するものとした。尚、このラスタイメージにベクトル化処理を行うことによって得たベクトルデータを、一緒に格納するようにしても構わない。ベクトルデータにして格納しておけば、再利用の際に拡大等を行う必要がある場合でも、ベクトルデータを使うことにより高画質に再現できるようになる。
次に、ジョブコントロール処理301から、メタデータ生成処理306で生成したメタデータを通知されると、通知されたメタデータをメタデータファイルとしてHDD208へ格納する(S1503)。
S1504では、S1502で格納した画像ファイルへのパスとS1503で格納したメタデータファイルへのパスをドキュメント構造体に追加し、ドキュメント構造体のページ数をインクリメントする。
ジョブコントロール処理301から、ドキュメント終了通知があるまで、S1502〜S1504を繰り返す(S1505)。ドキュメント終了通知があるとS1506へ進み、ドキュメント構造体をドキュメントデータファイルとして、HDD208格納して終了する。
<印刷処理>
続いて、カラー複合機100に蓄積された画像ファイルの印刷処理を、図17を用いて説明する。図17は、画像ファイルの印刷処理を示すフローチャートである。
まず、ユーザが操作部210やLAN10上に接続されたリモートUIから操作を行い、検索キーワードを指定し、印刷したい画像ファイルの検索処理を指示する(S1701)。検索時のキーワードしては、入力種別(スキャン、FAX、PDL)、ページ番号、作成日時、操作者情報、カラー・モノクロ情報、アプリケーション種別や画像に含まれる文字列を指定する。また、複数のキーワードを指定し、各キーワードのアンド条件やオア条件などを指定しても良い。
検索指示が行われると、ジョブコントロール処理301は、指定された検索条件をドキュメント管理処理308へ通知し、HDD208に保存されているドキュメントデータの検索を指示する(S1702)。ドキュメントデータの検索を指示されたドキュメント管理処理308は、HDD208に格納されている、各ドキュメントデータファイルを読み出す。更に、ドキュメントデータファイルに記載されているメタデータファイルのパスからメタデータファイルを順次読み出し、指定された検索条件に一致するメタデータを抽出する。抽出されたメタデータを含むドキュメントデータファイルと抽出されたメタデータのページ番号を、ジョブコントロール処理301へ通知する。
検索結果の通知を受けたジョブコントロール処理301は、検索結果の一覧を検索指示の行われた操作部210やリモートUI上に表示する(S1703)。検索結果の一覧として、ドキュメントデータファイルのファイル名、更新時間、検索条件の一致したページ番号を表示する。
尚、一覧に表示される情報はこの限りではなく、詳細情報として基本メタデータに格納されている情報を表示しても良いし、プレビュー画像を表示しても良い。
ユーザは表示された検索結果の一覧から印刷したい画像ファイルを指定して印刷指示を行う(S1704)。印刷指示では、ドキュメントデータに含まれる全ページを印刷指示しても良いし、ドキュメントデータ内の特定のページのみを印刷指示しても良い。
ジョブコントロール処理301は、印刷指示を受けたドキュメントデータと印刷すべきページをドキュメント管理処理308へ通知し、画像ファイルを読み出す。画像ファイルから読み出した画像データは、プリント処理307へ通知され、画像データの印刷処理が行われる(S1705)。
第1の実施形態によれば、PDLデータから抽出した文字情報及びラスタライズで生成される属性ビットに基づいてテキスト情報を高精度、かつ、高パフォーマンスで抽出することができる。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。第2の実施形態は、PDLデータに文字列として指定されている描画オブジェクトの一部でも、出力画像上に描画される場合、その文字列全体をメタデータに追加するものである。この処理は、第1の実施形態で説明した図11に示す処理に対応する処理である。
図18は、第2の実施形態でのPDL文字データを利用した文字認識処理の詳細を示すフローチャートである。S1801で、処理対象の文字領域から各文字の切り出しを行う。文字の切り出しでは、まず該当領域に対して横書き、縦書きの判定を行い、それぞれ対応する方向に行を切り出し、その後、文字を切り出す。
横書き、縦書きの判定は、該当領域内の属性ビットから文字オブジェクトを示すビットに対する水平/垂直の射影(又はヒストグラム)を取り、その分布に基づいて横書き、縦書きの判定を行う。例えば、水平射影の分散が大きい場合は横書き領域と判定し、垂直射影の分散が大きい場合は縦書き領域と判定する。また、文字への分解は、横書きの場合は水平方向の射影を利用して行を切り出し、更に切り出された行に対する垂直方向の射影から文字を切り出す。一方、縦書きの文字領域に対しては、水平方向と垂直方向を逆にすれば良い。
次に、S1802〜S1806の処理は切り出した文字毎に順次行う。処理する順番は、当該領域が横書きであれば左上の文字から右方向に沿って進め、縦書きであれば右上の文字から下方向に沿って進める。
S1803では、切り出した処理対象の文字のバウンディングボックスを求め、PDL文字データ内にある各文字のバウンディングボックス情報と比較し、一致する文字を検索する。検索の結果、一致する文字が2つ以上ある場合にはS1804へ進み、1つのみの場合にはS1806へ進む。ここで、バウンディングボックス情報の一致は、完全一致である必要は無く、例えば処理対象の文字のバウンディングボックスと、PDL文字データ内にある文字のバウンディングボックスとが95%重なっていたら一致することにすれば良い。
S1804では、PDL文字データ内にあるバウンディングボックスが一致した複数の文字を候補にして、処理対象の文字のビットマップとパターンマッチングを行う。そして、S1805で、複数の文字の候補のうち、一番近い候補のテキスト情報を含む文字列のテキスト情報を全て採用し、認識処理の結果として追加する。
但し、一度、採用した文字列のStrings−ID情報をRAM206に記憶しておき、採用する文字列のStrings−ID情報が既に記憶済みの場合には認識処理結果として追加しない。
一方、S1806では、処理対象の文字のバウンディングボックスと一致した、PDL文字データ内の文字を含む文字列を採用し、認識処理の結果として追加する。ここでも、一度、採用した文字列のStrings−ID情報をRAM206に記憶しておき、採用する文字列のStrings−ID情報が既に記憶済みの場合には認識処理結果として追加しない
尚、PDL文字データを利用した文字認識処理の結果として抽出される文字列は、認識結果の各テキスト情報を認識した順番に並べたものとする。
第2の実施形態によれば、第1の実施形態の効果に加え、PDLデータに文字列として指定されている描画オブジェクトの一部でも、出力画像上に描画される場合、その文字列全体をメタデータに追加することができる。
[第3の実施形態]
次に、図面を参照しながら本発明に係る第3の実施形態を詳細に説明する。第3の実施形態は、メタデータを生成する際に、ユーザが検索対象を出力画像に含まれる文字のみとするか、文字列全体とするかを選択可能とするものである。
図19は、第3の実施形態でのPDL文字データを利用した文字認識処理の詳細を示すフローチャートである。S1901で、処理対象の文字領域から各文字の切り出しを行う。文字の切り出しでは、まず該当領域に対して横書き、縦書きの判定を行い、それぞれ対応する方向に行を切り出し、その後、文字を切り出す。
横書き、縦書きの判定は、該当領域内の属性ビットから文字オブジェクトを示すビットに対する水平/垂直の射影(又はヒストグラム)を取り、その分布に基づいて横書き、縦書きの判定を行う。例えば、水平射影の分散が大きい場合は横書き領域と判定し、垂直射影の分散が大きい場合は縦書き領域と判定する。また、文字への分解は、横書きの場合は水平方向の射影を利用して行を切り出し、更に切り出された行に対する垂直方向の射影から文字を切り出す。一方、縦書きの文字領域に対しては、水平方向と垂直方向を逆にすれば良い。
次に、S1902〜S1910の処理は切り出した文字毎に順次行う。処理する順番は、当該領域が横書きであれば左上の文字から右方向に沿って進め、縦書きであれば右上の文字から下方向に沿って進める。
S1903では、切り出した処理対象の文字のバウンディングボックスを求め、PDL文字データ内にある各文字のバウンディングボックス情報と比較し、一致する文字を検索する。検索の結果、一致する文字が2つ以上ある場合にはS1904へ進み、1つのみの場合にはS1908へ進む。ここで、バウンディングボックス情報の一致は、完全一致である必要は無く、例えば処理対象の文字のバウンディングボックスと、PDL文字データ内にある文字のバウンディングボックスとが95%重なっていたら一致することにすれば良い。
S1904では、PDL文字データ内にあるバウンディングボックスが一致した複数の文字を候補にして、処理対象の文字のビットマップとパターンマッチングを行う。次に、S1905で、予めユーザが指定しているユーザモードにより処理を切り替える。ここで、ユーザモードには、画像優先モードと印刷データ優先モードとがあり、ユーザモードが「画像優先」であればS1906へ進み、また「PDLデータ優先」であればS1907へ進む。
S1906では、S1904で最も近い候補のテキスト情報を、処理対象文字の認識結果として採用し、認識処理の結果として追加する。また、S1907では、S1904で最も近い候補のテキスト情報を含む文字列全体を採用し、認識処理の結果として追加する。
但し、一度、採用した文字列のStrings−ID情報をRAM206に記憶しておき、採用する文字列のStrings−ID情報が既に記憶済みの場合には認識処理結果として追加しない。
一方、S1908では、上述のS1905と同様に、予めユーザが指定しているユーザモードにより処理を切り替える。ユーザモードが「画像優先」であればS1909へ進み、ユーザモードが「PDLデータ優先」であればS1910へ進む
S1909では、処理対象の文字のバウンディングボックスと一致した、PDL文字データ内の文字のテキスト情報を処理対象文字の認識結果として採用し、認識処理結果に追加する。また、S1910では、処理対象の文字のバウンディングボックスと一致した、PDL文字データ内の文字を含む文字列全体を採用し、認識処理の結果として追加する。ここでも、一度、採用した文字列のStrings−ID情報をRAM206に記憶しておき、採用する文字列のStrings−ID情報が既に記憶済みの場合には認識処理結果として追加しない
尚、PDL文字データを利用した文字認識処理の結果として抽出される文字列は、認識結果の各テキスト情報を認識した順番に並べたものとする。
第3の実施形態によれば、ユーザが検索に使用されるメタデータ生成条件を変更可能である。即ち、ユーザが出力画像に含まれる文字のみ検索対象にした場合には「画像優先」モードを選択する。また、PDLデータに文字列として指定されている描画オブジェクトの一部でも、出力画像上に描画される場合も、文字列全体を検索対象としたい場合には、「PDLデータ優先」モードを選択する。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、コンピュータ読み取り可能な記録媒体(記憶媒体)から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。