文字認識はイメージデータを対象とする処理であり、イメージデータ形式でないデータについては文字認識は実行できない。イメージデータ形式のページとイメージデータ形式でないページとが混在した文書に対する文字認識の処理において、イメージデータ形式のページに対してのみ文字認識が行われ、イメージデータ形式でないページについては文字認識も他の処理も行われないとすると、ユーザはその文書に文字認識が実行できなかったページが含まれていたことすら分からない。
本発明は、文字認識の処理において、文書中のイメージデータ形式でないページについて何の処理も行わない場合と比べて、イメージデータ形式でないページについてより多くの情報を提供することを目的とする。
請求項1に係る発明は、イメージデータ形式の第1種ページと、イメージデータ形式でない第2種ページと、の混在が可能なデータ形式の文書に対して文字認識の実行が指示された場合に、前記文書に含まれる前記第1種ページについては前記文字認識を実行し、前記文書に含まれる前記第2種ページについては前記文字認識とは異なる処理である第2種ページ処理を実行する、文書処理装置である。
請求項2に係る発明は、前記第2種ページ処理は、前記文書に前記第2種ページが含まれている場合に、前記文字認識が適用できないページが含まれることをユーザに通知する通知処理である、請求項1に記載の文書処理装置である。
請求項3に係る発明は、前記通知処理では、更に、前記第2種ページから文字情報を取得するか否かの問合せを前記ユーザに対して行い、前記文書処理装置は、前記問合せに対するユーザの回答に応じて、前記第2種ページから文字情報を取得する処理を実行するか否かを制御する、請求項2に記載の文書処理装置である。
請求項4に係る発明は、前記第2種ページ処理は、前記第2種ページから文字情報を取得する処理である、請求項1に記載の文書処理装置である。
請求項5に係る発明は、前記第2種ページ処理は、前記第2種ページに含まれるテキストデータを抽出する処理である、請求項4に記載の文書処理装置である。
請求項6に係る発明は、前記第2種ページ処理は、前記第2種ページをイメージデータに変換し、このイメージデータに対して前記文字認識を実行する処理である、請求項4に記載の文書処理装置である。
請求項7に係る発明は、前記文書処理装置は、前記第2種ページに含まれるテキストデータを抽出する処理、及び、前記第2種ページをイメージデータに変換し、このイメージデータに対して前記文字認識を実行する処理、のうちユーザから選択された処理を、前記第2種ページ処理として実行する、請求項4に記載の文書処理装置である。
請求項8に係る発明は、前記第2種ページ処理は、前記第2種ページから抽出したテキストデータと、前記第2種ページを変換したイメージデータに対する前記文字認識の結果と、に基づいて、前記第2種ページについての処理結果となる文字情報を求める処理である、請求項4に記載の文書処理装置である。
請求項9に係る発明は、前記第2種ページ処理では、前記第2種ページ内のある場所について、前記第2種ページから抽出したテキストデータ中のその場所に対応する第1の文字と、前記第2種ページを変換したイメージデータに対する前記文字認識の結果中のその場所に対応する第2の文字との両方が存在する場合に、前記第1の文字をその場所についての文字情報として採用する、請求項8に記載の文書処理装置である。
請求項10に係る発明は、前記第2種ページ処理では、前記第2種ページ内のある場所について、前記第2種ページから抽出したテキストデータ中にはその場所に対応する文字がなく、前記第2種ページを変換したイメージデータに対する前記文字認識の結果中のその場所に対応する文字がある場合に、前記文字認識の結果中の前記文字をその場所についての文字情報として採用する、請求項8又は9に記載の文書処理装置である。
請求項11に係る発明は、前記第2種ページ処理では、前記第2種ページ内のある場所について、前記第2種ページから抽出したテキストデータ中にはその場所に対応する文字があり、前記第2種ページを変換したイメージデータに対する前記文字認識の結果中のその場所に対応する文字がない場合に、前記テキストデータ中の前記文字をその場所についての文字情報として採用するか否かを、ユーザの指示に従って制御する、請求項8〜10のいずれか1項に記載の文書処理装置である。
請求項12に係る発明は、前記文書に前記第2種ページが含まれている場合に、前記文字認識が適用できないページが含まれることをユーザに通知する通知処理と、前記第2種ページから文字情報を取得する処理と、のうちのいずれを前記第2種ページ処理として実行するかの設定をユーザから受け付ける設定画面を提示する手段、を有する請求項1に記載の文書処理装置である。
請求項13に係る発明は、前記文書に前記第2種ページが含まれている場合に、前記文字認識が適用できないページが含まれることをユーザに通知する通知処理と、前記第2種ページに含まれるテキストデータを抽出する処理と、前記第2種ページをイメージデータに変換し、このイメージデータに対して前記文字認識を実行する処理と、のうちの2以上を前記第2種処理の選択肢としてユーザに選択させるための設定画面、を提示する手段、を有する請求項1に記載の文書処理装置である。
請求項14に係る発明は、イメージデータ形式の第1種ページと、イメージデータ形式でない第2種ページと、の混在が可能なデータ形式の文書に対して文字認識の実行が指示された場合に、前記文書に含まれる前記第1種ページについては前記文字認識を実行し、前記文書に含まれる前記第2種ページについては前記文字認識とは異なる処理である第2種ページ処理を実行する手段、としてコンピュータを機能させるためのプログラムである。
請求項15に係る発明は、イメージデータ形式でないページを含んだ第1文書を、他の1以上の文書と束ねて1つの文書にする束ね処理を実行する際に、前記イメージデータ形式でないページをイメージデータ形式に変換し、前記束ね処理の結果の文書が前記イメージデータ形式でないページを含まないようにする束ね手段、を有する、文書処理装置である。
請求項16に係る発明は、イメージデータ形式でないページを含んだ第1文書を、他の1以上の文書と束ねて1つの文書にする束ね処理を実行する際に、前記束ね処理の結果の文書に前記イメージデータ形式でないページを残す第2束ね手段と、前記束ね処理が指示された場合に、前記束ね手段と前記第2束ね手段のいずれをもちいるかの指定をユーザから受け付ける手段と、を更に有する請求項15に記載の文書処理装置である。
請求項17に係る発明は、イメージデータ形式でないページを含んだ第1文書を、他の1以上の文書と束ねて1つの文書にする束ね処理を実行する際に、前記イメージデータ形式でないページをイメージデータ形式に変換し、前記束ね処理の結果の文書が前記イメージデータ形式でないページを含まないようにする束ね手段、としてコンピュータを機能させるためのプログラムである。
請求項1又は14に係る発明によれば、文書中のイメージデータ形式でない第2種ページに対して単に文字認識を実行しないだけでとどめる場合と比べて、第2種ページ処理により得られる情報をユーザに提供することができる。
請求項2に係る発明によれば、ユーザは文字認識の対象とした文書に文字認識が適用できないページが含まれていることを知ることができる。
請求項3に係る発明によれば、ユーザは文字認識が適用できないページから別の方法で文字情報を取得することを指示することができる。
請求項4に係る発明によれば、第2種ページから文字認識とは別の方法で取得した文字情報をユーザに提供することができる。
請求項5に係る発明によれば、第2種ページが含むテキストデータという、文字認識により得られる文字情報よりも正確さが高い文字情報を、第2種ページの文字情報としてユーザに提供することができる。
請求項6に係る発明によれば、第2種ページを表示した際に人の目で文字に見える画像が、第2種ページのデータ内でテキストデータ形式以外の形式で表現されている場合でも、その文字の情報を得ることができる。
請求項7に係る発明によれば、第2種ページからテキストデータを抽出するか、第2種ページをイメージデータに変換して文字認識を行うか、ユーザの希望する方式を用いることができる。
請求項8に係る発明によれば、第2種ページから抽出したテキストデータ、又は、第2種ページを変換したイメージデータに対する文字認識の結果、のうちの一方を採用する場合よりも、より正確な情報を提供することができる。
請求項9に係る発明によれば、第2種ページ内の同じ場所についてのテキストデータと文字認識結果とが異なっている場合に、正確なテキストデータの文字情報を採用することができる。
請求項10に係る発明によれば、第2種ページ内のテキストデータの文字はないが文字認識により文字が認識される場所について、文字情報を得ることができる。
請求項11に係る発明によれば、第2種ページ内のテキストデータの文字はあるが文字認識により文字が認識されない場所について、テキストデータの文字情報を採用するかどうかの決定にユーザの意向を反映することができる。
請求項12又は13に係る発明によれば、第2種ページ処理としてどの処理を行うか、ユーザが指定することができる。
請求項15又は17に係る発明によれば、束ね処理の結果の文書として全ページに文字認識が適用可能な文書を得ることができる。
請求項16に係る発明によれば、束ね処理の結果の文書として、全ページに文字認識が適用可能な文書を得るか、束ねる前の文書に含まれていたイメージデータ形式でないページを残した文書を得るかを、ユーザの希望に応じて決定することができる。
図1に、本発明に係る文字認識処理制御が適用される文書ハンドリングシステム10の概略構成を例示する。文書ハンドリングシステム10は、例えば出願人の提供するDocuWorks(商標)や、AdobeSystems社のAdobe Acrobat(商標)のように、登録された文書ファイルに対する閲覧、編集、注釈付け(色付きマーカー、付箋、スタンプ等の付加)等の処理機能を提供するソフトウエアである。このソフトウエアは、PC(パーソナルコンピュータ)又はサーバ等のコンピュータで実行されることにより、文書ハンドリングシステム10の機能を実現する。文書ハンドリングシステム10は、PCにインストールされた個人用のシステムであってもよいし、リモートのユーザに対して文書ハンドリングサービスを提供するサーバとして構築されていてもよい。
文書ハンドリングシステム10は、機能モジュールとして、ファイル取り込み部12、文書処理部14、UI処理部16、設定管理部18、及び文字認識処理部20を含んでいる。
ファイル取り込み部12は、文書ハンドリングシステム10の外部で生成されたファイルを文書ハンドリングシステム10内に取り込む(すなわち登録する)ための処理を担う。取り込まれるファイルには、ワードプロセッサや表計算等のアプリケーションソフトウエアで生成された当該アプリケーション固有のデータ形式のファイル(アプリケーションファイルと呼ぶ)、スキャナやデジタルカメラ等により生成されたビットマップ、TIFF、JPEG等のイメージデータ形式のイメージファイル等がある。
ファイル取り込み部12は、取り込み対象としてアプリケーションファイルが入力された場合、これを文書ハンドリングシステム10が用いる特定のデータ記述言語で記述された文書ファイルへと変換する。用いられるデータ記述言語は、PDL(ページ記述言語)、又は、ページ記述言語のように文書(画像)の見た目を記述可能な他の種類の言語(PDFのデータ形式もその一例)である。このデータ記述言語で記述される文書ファイルには、テキスト、ベクターグラフィックス(ベクター表現で記述された図形)、連続階調イメージ(ビットマップ、TIFF、JPEG等のデータ形式のも)等の複数種類のオブジェクトが含まれ得る。このデータ記述言語で記述された文書ファイルを、以下では「アプリ文書」と呼ぶ。またアプリ文書を構成する個々のページのことを「アプリページ」と呼ぶ。アプリページには、テキスト、ベクターグラフィックス、連続階調イメージ等のいくつかのオブジェクトが含まれ得る。アプリページは、イメージデータ形式のオブジェクトを含み得るが、アプリページ自体のデータ形式は、そのデータ記述言語により規定されるものであり、イメージデータ形式ではない。
またファイル取り込み部12は、取り込み対象としてイメージファイルが入力された場合、そのファイルを「イメージ文書」として取り込む。イメージ文書は、その文書が含む個々のページがビットマップ、TIFF、JPEG等のイメージデータ形式のデータである文書ファイルである。イメージ文書を構成する各ページのことを「イメージページ」と呼ぶ。
このように、ファイル取り込み部12は、プリンタドライバや仮想プリンタに類似した役割を果たす。
ファイル取り込み部12により取り込まれた文書ファイルは、文書ハンドリングシステム10の管理下にあるフォルダのうちのいずれか(例えばユーザが指定又は事前設定したもの)に格納される。
文書処理部14は、文書ハンドリングシステム10の管理下にあるフォルダに格納された文書ファイルに対して、ユーザの指示する処理を実行する。例えば、ユーザから文書ファイルの閲覧が指示された場合には、文書処理部14はその文書ファイルを開き、文書ファイルのページの画像を画面表示する。また、文書処理部14は、ユーザからの指示に応じて、開いた文書ファイルに対する注釈の追加や削除等を行う。また、文書処理部14は、文書の「ばらし」及び「束ね」の機能を有する。ばらし処理とは、1つの文書ファイルを、指定されたページ以前のページからなる第1の文書ファイルと、その指定ページの次のページ以降のページからなる第2の文書ファイルとに分割する処理である。また、束ね処理とは、ユーザが指定した複数の文書ファイルを束ねて1つの文書ファイルにする処理である。束ね後の文書ファイルは、束ねる前の第1の文書ファイルのページ群と第2の文書ファイルのページ群とを併せ持ったファイルとなる。アプリ文書とイメージ文書とを束ねた場合、一つの例では、アプリページとイメージページとが混在した文書ファイルが生成される。文書ファイルは、内包するページごとに、そのページの属性情報の1つとして、そのページがアプリページ又はイメージページのいずれであるかを示す種類情報を有する。
UI処理部16は、文書ファイルの操作のためのUI(ユーザインタフェース)画面を提供し、その画面に対するユーザの操作を受け付ける。UI処理部16は、例えば、図2に例示する文書管理画面100を生成し、文書ハンドリングシステム10がインストールされたコンピュータの表示装置に表示する。例示した文書管理画面100には、開いているフォルダ内にある各文書ファイルのアイコン102、104、106が列挙表示されている。この例では、各文書ファイルのアイコン102、104、106は、それぞれ当該文書ファイルの最初のページのサムネイル画像である。例えば、ユーザは、ある文書ファイルのアイコンをドラッグ&ドロップ操作により別の文書ファイルのアイコンに重ねることで、それら2つの文書ファイルの束ね処理を指示することができる。また、図示省略した文書管理画面100上のメニューや、アイコンに対するマウスの右クリック等の操作で呼び出されるコンテキストメニューから、文書ファイルに行う処理を選択することもできる。
設定管理部18は、文書ハンドリングシステム10の各種設定項目の入力を受け付け、入力された設定項目の値を保持する。設定管理部18が管理する設定項目の例として、文書を束ねる際のアプリページの処理、OCR(光学文字認識、以下単に文字認識とも呼ぶ)処理時のアプリページに対する処理、等がある。
図3に、これらの項目の設定を受け付けるためにUI処理部16が表示する設定画面200を例示する。この設定画面200には、文書を束ねる際のアプリページの処理についての選択肢欄202に、第1選択肢「そのまま束ねる」と、第2選択肢「アプリページをイメージページに変換して束ねる」の2つを示している。第1選択肢は、束ね対象の文書ファイルに含まれるアプリページをアプリページのままで束ねる処理である。この処理の結果得られる束ね後の文書ファイルには、アプリページが残る。一方、第2選択肢は、束ね対象の文書ファイルに含まれるアプリページをイメージページに変換してから束ねる処理である。この処理の結果得られる束ね後の文書ファイルは、イメージページからなり、アプリページは含まない。
選択肢欄202の第2選択肢が選択されている場合、ユーザが文書ファイル同士を束ねる操作を行った場合、文書処理部14は、それら文書ファイルに含まれるすべてのアプリページをラスタライザ28等によりイメージページに変換する。この場合に得られる束ね結果の文書ファイルは、イメージページからなり、アプリページを含まないので、すべてのページに対して文字認識処理を適用できる。
なお、選択肢欄202の各選択肢の先頭(左端)にある円形の図形は、ラジオボタンである。ユーザは、希望する選択肢のラジオボタンをマウスのクリックやタッチ操作で選択する。
また、設定画面200には、OCR時のアプリページに対する処理の選択肢欄204に、第1選択肢「OCRができなかった旨のメッセージを表示する」、第2選択肢「イメージページに変換してOCRを実行する」、第3選択肢「アプリページ内のテキストを抽出してOCR結果とする」の3つを示している。ここで、OCR(文字認識)は、画像(イメージデータ)に含まれる文字をパターンマッチング等により認識する処理であり、イメージデータ以外のデータには直接適用できない。したがって、文書ファイル中のイメージページにはOCRは実行可能であるが、アプリページにはOCRを実行できない。選択肢欄204中の第1選択肢は、OCR対象の文書ファイル中のイメージページのみにOCR処理を実行し、OCR終了後に、OCRが適用できないページが含まれていたことを示すメッセージを画面表示する処理である。第2選択肢は、その文書ファイル中のアプリページをイメージページに変換した上で、全ページに対してOCRを実行する処理である。第3選択肢は、アプリページ内のテキストオブジェクトに含まれるテキストデータを抽出し、抽出したテキストデータを文字認識結果として出力する処理である。
図示の例では、選択肢欄204に3つの選択肢が含まれていたが、選択肢欄204にはそれら3つの選択肢のすべてが含まれている必要はなく、またそれら3つ以外の選択肢が含まれていてもよい。
図1の説明に戻ると、文字認識処理部20は、OCR(文字認識)処理を担う機能モジュールである。文字認識処理部20は、処理制御部22、文字認識エンジン24、テキスト抽出部26、及びラスタライザ28を含む。処理制御部22は、文字認識エンジン24、テキスト抽出部26、及びラスタライザ28を制御して、文字認識処理部20の機能を実現するための制御を行う。文字認識エンジン24は、イメージデータに対して公知のOCRアルゴリズムによる文字認識処理を実行する。テキスト抽出部26は、アプリページからテキストデータを抽出する。ラスタライザ28は、データ記述言語で記述されたアプリページをラスターデータ(ビットマップイメージ)に変換する。
図4に、ユーザから文字認識(OCR)の実行を指示された際に処理制御部22が実行する制御手順の例を示す。この手順では、まず処理制御部22は、文字認識の対象に指定された文書ファイル内の各ページの属性を調べ、それら各ページの種類情報を取得する(S10)。これにより、その文書ファイル内の各ページがアプリページ及びイメージページのいずれであるかが分かる。処理制御部22は、S10で取得した情報に基づき、その文書ファイルが1以上のアプリページを含むか否かを判定する(S12)。この判定の結果がNo、すなわちその文書ファイル内のページがすべてイメージページである場合、それらすべてのページに対して公知の文字認識処理を実行する(S22)。各ページの文字認識結果のデータは、それぞれ対応するページに対応付けて保存される。
S12でその文書ファイルがアプリページを1以上含むと判定した場合、処理制御部22は、文字認識(OCR)処理時のアプリページに対する処理の設定項目(図3の符号204参照)を設定管理部18から取得する。そして、その設定項目が上述の第1選択肢(メッセージ表示)、第2選択肢(イメージ変換後にOCR)、第3選択肢(テキスト抽出)のいずれであるかを判定する(S14)。
その設定項目の値が第1選択肢(メニュー表示)を示すものである場合、処理制御部22は、その文書ファイル中の各イメージページを文字認識エンジン24に処理させ、これにより得られたそれら各ページの文字認識結果のデータを保存する(S16)。なお、文書ファイルがアプリページのみで構成されている場合は、S16では1ページも文字認識されない。S16の文字認識処理が完了すると、処理制御部22は、今回対象として指定された文書ファイルに文字認識が適用できないページが含まれていた旨を示す表示を行う(S18)。
図5にこのとき表示される画面300の例を示す。文字認識を指示したユーザは、この画面により、今回指示した文書ファイルの中に文字認識結果がないページがあることを理解する。また、この画面300に、文字認識が適用できなかったページ群についての更なる情報を表示してもよい。このような更なる情報には、例えば、文字認識が適用できなかったページの番号のリスト、文書の全ページ数に占める文字認識できなかったページの割合等が含まれる。また、文書ファイルがアプリページのみを含み、イメージページを含まない場合は、図5に例示した画面に代えて、OCRが可能なページが含まれていなかった旨を示す画面を表示してもよい。
また、この画面300上で、文字認識が適用できなかったページ(アプリページ)からテキスト情報の取得を試みるか否かをユーザに問い合わせてもよい。アプリページからのテキストの取得方法には、イメージに変換して文字認識する方法、アプリページ内のテキストオブジェクトが持つテキストデータを取得する方法等がある(詳細は後述の別の例を参照)。画面300上で、文字認識が適用できなかったページについての処置として、なにもしない、イメージに変換して文字認識する、アプリページ内のテキストオブジェクトが持つテキストデータを取得する、という選択肢の中からユーザに処理を選択させてもよい。そして、ユーザがテキスト取得の方法のいずれかを選択した場合、処理制御部22は、その方法で各アプリページからテキスト情報を取得する。
S14で設定項目の値が第2選択肢(イメージ変換後にOCR)であることが分かると、処理制御部22は、その文書ファイル中の各アプリページをラスタライザ28に処理させることで、それら各アプリページをイメージページに変換する(S20)。これにより、対象の文書ファイルはすべてイメージページとなる。処理制御部22は、それらすべてのイメージページに対して、文字認識エンジン24に文字認識処理を行わせる(S22)。
文書ファイル内のすべてのアプリページをイメージページに変換してからその文書ファイル内の全ページを文字認識するという流れは一例に過ぎない。この代わりに、文書ファイルをページ順に1ページずつ処理する中で、アプリページであればイメージページに変換してから文字認識を実行し、イメージページであれば単に文字認識を行うという処理でもよい。
なお、文書ファイル内の各アプリページを、S20で得られたイメージページに置き換えてもよい。この場合、文字認識処理の後に文書ハンドリングシステム10に保存されるその文書ファイルは、全ページがイメージページである。なお、文字認識処理時このような置換えを行うか否かを、S12でアプリページを含むと判定した時点でユーザに問い合わせてもよいし、設定管理部18の設定項目の一つとして事前に設定できるようにしてもよい。
S14で設定項目の値が第3選択肢(テキスト抽出)であることが分かると、処理制御部22は、その文書ファイル中の各アプリページ内のテキストデータをテキスト抽出部26に抽出させる(S24)。そして、アプリページから抽出されたテキストデータをそのアプリページに対応する文字認識結果として保存する。
以上の説明では、ある文書ファイルが文字認識の対象として選択された場合を例にとったが、これは一例に過ぎない。この代わりに、文書ファイル中の一部のページ群が文字認識の対象として選択された場合や、文書ファイルの全ページ又は選択された一部分のページ群のうちのページ内の特定の領域(例えば当該領域の外周の矩形の四隅の位置をユーザが指定)のみが文字認識の対象として選択された場合にも、同様の処理を行えばよい。このように、文字認識の対象が文書ファイル全体であってもその一部(すなわち一部のページ群、あるいはページ内の一部の領域)であってもよい点は、この後に説明する他のバリエーションにおいても同様である。
以上の例は、事前の設定に応じてアプリページの取扱を決定するものであった。別の例として、文字認識処理を開始した後、対象の文書ファイルにアプリページがあることが分かった際に、ユーザにアプリページの取扱を問い合わせてもよい。この例に沿った手順を、図6に示す。図6の手順では、文字認識におけるアプリページの処理についての設定を事前に設定管理部18に登録しておく必要はない。
図6の手順では、まず処理制御部22は、文字認識の対象に指定された文書ファイル内の各ページの属性を調べ、それら各ページの種類情報を取得する(S30)。処理制御部22は、S10で取得した情報に基づき、その文書ファイル内のページがすべてアプリページであるか否かを判定する(S32)。S32の判定結果がYesの場合、文書ファイル内には文字認識が可能なイメージページが1ページもないので、処理制御部22は、ユーザの指定した文書ファイルには文字認識可能なページが含まれない旨を示す画面をUI処理部16を介して表示する(S34)。
S32の判定結果がNoの場合、処理制御部22は、その文書ファイル内にアプリページが含まれるか否かを判定する(S36)。この判定の結果がNoの場合、その文書ファイル内のページはすべてイメージページである。この場合、処理制御部22は、その文書ファイルの全ページに対して、文字認識エンジン24による文字認識処理を施す(S38)。
S36の判定の結果がYesの場合、処理制御部22は、UI処理部16を介して、図7に例示する確認画面320を表示する(S40)。この確認画面320には、ユーザの指定した文字認識の対象には文字認識不可のページが含まれる旨のメッセージ、文字認識可能なページのみに文字認識する処理を実行してよいかを示す問合せ、及びその問合せに対する是非を入力するための2つのボタン(「OK」又は「取り消し」)が表示される。ユーザは、文字認識可能なページのみ文字認識するという処理でよい場合「OK」ボタンを選択し、そうでなければ「取り消し」ボタンを選択する。処理制御部22は、ユーザがどちらを選択したかを判定し(S42)、「OK」が選択された場合は、その文書ファイル内のイメージページのみを文字認識エンジン24に処理させる(S44)。「取り消し」が選択された場合は、S44をスキップして処理を終了する。この場合、その文書ファイルに対して文字認識処理は一切行われない。
以上に説明した図6の手順では、アプリページを含む文書ファイルについては、文字認識を一切行わないか、又はその中のイメージページのみについて文字認識を行うかのいずれかであった。このような手順はあくまで一例に過ぎない。この代わりに、図4の手順と同様、アプリページに対しても文字認識又はそれと同等の結果が得られる処理を行うようにしてもよい。
例えば、S30で取得した情報から文字認識処理の対象のアプリページが含まれると判定した場合、処理制御部22は、図8に例示する確認画面340を表示してもよい。この確認画面340には、ユーザの指定した文字認識の対象には文字認識不可のページが含まれる旨のメッセージ、文字認識不可のページに対する処理を選択するよう要請するメッセージ、その処理の選択肢を示す選択肢欄342、「OK」ボタン及び「取り消し」ボタンが表示される。選択肢欄342に示される選択肢は、図3に例示した設定画面200の選択肢欄204に示された3つの選択肢と似ている。すなわち、第1の選択肢は、文字認識(OCR)不可のページ(アプリページ)には文字認識を行わず、イメージページのみに文字認識を行う処理である。第2の選択肢は、文字認識不可のページをイメージページに変換して文字認識を行うという処理であり、第3の選択肢は、文字認識不可のページに含まれるテキストデータを抽出し、抽出したテキストデータを文字認識結果とする処理である。ユーザは、確認画面340の選択肢欄342から自分の希望する処理を1つ選択し、「OK」ボタンを押下することで、その処理の実行を処理制御部22に指示する。例えば第1の選択肢が選択された場合、処理制御部22は、文書ファイル中のイメージページのみを文字認識エンジン24に処理させる。第2の選択肢が選択された場合には、処理制御部22は、文書ファイル内のアプリページについては、まずラスタライザ28に処理させ、その結果得られたイメージデータを文字認識エンジン24に処理させる。第3の選択肢が選択された場合には、処理制御部22は、テキスト抽出部26に各アプリページからテキストデータを抽出させ、抽出されたテキストデータを当該ページの文字認識結果とする。
次に、更なるバリエーションについて説明する。以上に説明した例では、アプリページからテキスト情報を取得する方法として、イメージ化して文字認識する方法と、アプリページ内のテキストオブジェクトからテキストを抽出する方法のどちらを採用するか、ユーザが選択した。これに対して、以下に説明する例では、この選択を処理制御部22が自動で行う。
図9に、処理制御部22によるテキスト取得方法の選択処理の一例を示す。処理制御部22は、指定された文字認識の対象内のアプリページ毎に図9の処理を行う。すなわち、処理制御部22は、テキスト抽出部26を用いてアプリページ内のテキストオブジェクトからテキストデータを抽出し(S50)、これにより抽出されたテキストデータが含む文字数が、予め設定された閾値以上であるか否かを判定する(S52)。抽出されたテキストの文字数が閾値以上の場合は、処理制御部22は、その抽出されたテキストをそのアプリページに対応する文字認識結果として保存する(S54)。一方、抽出されたテキストの文字数がその閾値未満である場合には、処理制御部22は、ラスタライザ28を用いてそのアプリページをイメージデータに変換し、文字認識エンジン24によりそのイメージデータに対して文字認識を行う(S56)。
図9の処理は、アプリページを表示(描画)したときに文字に見える部分が、アプリページのデータ内でテキストとして表現されているとは限らない、という事実に対処するものである。すなわち、アプリケーションは、自分が作成したアプリケーションファイルを文書ハンドリングシステム10のファイル取り込み部12(あるいはこれと同等の機能を持つ仮想プリンタ)に対して、そのファイル内のテキスト中の文字を複数のベクターグラフィックスに分解して入力することがある。これは、例えば、その文字の見た目の再現性を確保する等の理由による。このように文字がベクターグラフィックスに分解されてファイル取り込み部12に入力された場合、そのファイル取り込み部12が生成するアプリ文書のアプリページ内でも、その文字はベクターグラフィックスとして表現されることになる。したがって、そのアプリページにはその文字はテキストデータとしては存在しないが、そのアプリページを表示(描画)すれば、その文字に見える画像が現れることになる。アプリページ内の「文字」(目で見ると文字に見える画像オブジェクト)の多くがベクターグラフィックスで表現されている場合、そのアプリページからテキストを抽出しても、非常に少ない文字数のテキストしか得られない。
そこで、図9の手順では、アプリページから抽出した文字数が余りに少ない(すなわち閾値未満)場合には、そのアプリページをイメージに変換してから文字認識処理を行うのである。そのアプリページ中に、テキストとして抽出可能な文字数よりも多くの「文字」が含まれている(その多くがベクターグラフィックスで表現されている)場合には、イメージ化して文字認識することで、それら「文字」の多くを検出することが可能になる。
なお、S56の後、文字認識処理で認識した文字数mとS50で抽出した文字数nとを比較し、抽出したテキストの文字数よりも十分に多い文字数が文字認識により得られたことを確認してもよい。すなわち、この例では、文字数mが文字数nに十分に多い(すなわちその差がある閾値以上)場合には、文字認識の結果を最終的な文字認識結果として採用し、そうでなければ、抽出したテキストを最終的な文字認識結果として採用する。
図10に、アプリページからのテキスト取得方法の自動選択の別の例の処理手順を示す。
図10の手順では、処理制御部22は、テキスト抽出部26を用いてアプリページ内のテキストオブジェクトからテキストデータを抽出する(S60)。また処理制御部22は、ラスタライザ28を用いてそのアプリページをイメージデータに変換し、文字認識エンジン24によりそのイメージデータに対して文字認識を行う(S62)(S60とS62の処理順序は図示の順に限らない)。そして、処理制御部22は、S60で抽出したテキストとS62の文字認識により得られたテキストとの間で文字数を比較し、それら両者のうち文字数が多い方を最終的な文字認識結果として採用する(S64)。なお、文字認識の誤りの可能性を考慮して、S64では、S62の文字認識で得た文字の数が、S60で抽出したテキストの文字数よりも十分に大きい(すなわち両者の差がある閾値以上)場合にのみS62の文字認識結果を採用し、そうでなければS60のテキスト抽出結果を採用するようにしてもよい。
図11に、アプリページからのテキスト取得方法の自動選択の更に別の例の処理手順を示す。
図11の手順では、処理制御部22は、テキスト抽出部26を用いてアプリページ内のテキストオブジェクトからテキストデータを抽出すると共に、アプリページの全領域の中でそのテキストオブジェクトが存在するテキスト領域の位置や寸法を特定する(S70)。テキスト領域の位置や寸法は、そのテキストオブジェクトに含まれるパラメータ(例えばテキストの流し込み範囲を規定するもの)から求めることができる。また処理制御部22は、ラスタライザ28を用いてそのアプリページをイメージデータに変換し、そのイメージデータのうち上述のテキスト領域以外の範囲のイメージに対して文字認識を行う(S72)。そして、処理制御部22は、S70で抽出したテキストと、S72の文字認識により得られたテキストと、そのアプリページに対する最終的な文字認識結果として採用する(S74)。
図12に、アプリページからのテキスト取得方法の自動選択の更に別の例の処理手順を示す。
この例は、アプリページに含まれるテキストが必ずしもそのアプリページを表示(描画)した際に、人の目に見えるとは限らないことを考慮に入れた処理の例である。
例えば、アプリケーションが、作成した文書中のテキストを完全な透明に設定したり、そのテキストの文字色を背景色と同じ色に設定したりした場合、そのテキストは人の目には見えなくなる。また、テキストオブジェクトを、不透明な他のオブジェクトで覆い隠してしまうと、そのテキストオブジェクトは見えなくなる(表示時に見えるのは「他のオブジェクト」の方)。アプリケーションファイルを作成した作成者が、第三者に見えない形でそのファイル内にテキスト情報を残しておこうとする場合に、それらの方法を採る場合がある。また、アプリケーションの中には、ユーザの編集操作の結果削除された文字列を透明な文字で、一種の履歴としてページ中に残すものもある。
この種の「目に見えないテキスト」は、そのアプリページをイメージに変換(すなわち描画)して文字認識を行っても認識することはできないが、テキスト抽出部26によりアプリページ中から抽出することはできる。したがって、「目に見えないテキスト」を含んだアプリページが文字認識処理の対象に含まれる場合、その処理の結果として見た目(表示される文字はない)と内容(テキストデータは存在する)のどちらを優先するのかが問題になる。見た目を優先する場合、アプリページから抽出されたテキストは破棄し、内容を優先する場合には、抽出されたテキストを文字認識結果として採用する。
図12の例では、それら両者のどちらを優先するのかを、文字認識処理を指示するユーザの判断に委ねる。すなわち、そのユーザは、それら両者のどちらを優先するのかを示す設定項目の値を設定管理部18に登録する。あるいはユーザは、「目に見えないテキスト」がアプリページから検知された場合にUI処理部16が表示する確認画面上で、見た目と内容のどちらを優先するかを選択する。
図12の手順では、処理制御部22は、テキスト抽出部26を用いてアプリページ内のテキストオブジェクトからテキストデータを抽出する(S80)。また処理制御部22は、ラスタライザ28を用いてそのアプリページをイメージデータに変換し、文字認識エンジン24によりそのイメージデータに対して文字認識を行う(S82)。そして、そのアプリページの全領域の中で、S80で抽出されたテキスト中の文字、又はS82で認識された文字の少なくとも一方が存在する領域毎に、S84〜S92の処理を行う。
なお、OCRアルゴリズムは、認識した文字のページ内での位置を検出するので、文字認識結果の各文字のある領域はその文字の位置の情報から特定可能である。また、アプリページは、当該ページ内でのテキストオブジェクトの領域を示す情報(例えば矩形の領域として規定される)と、そのテキストオブジェクト内の各文字のフォントサイズや字送り、行間隔等の情報とを有している。テキストオブジェクト内の各文字の位置はそれらの情報から計算可能である。これらの情報から、テキストオブジェクトから抽出された文字又は文字認識された文字の少なくとも一方が存在する領域を特定すればよい。テキストオブジェクトから抽出された文字及び文字認識された文字のどちらも存在しない領域は、文字が全くない領域であり、図12の処理の対象外である。
S84では、処理制御部22は、現在注目している領域に、テキスト抽出部26が抽出した文字が存在するかどうかを判定する。この判定の結果がNoの場合、その領域には文字認識処理により認識された文字が存在する。この場合、処理制御部22は、その認識された文字を、その領域についての文字認識結果として採用する(S86)。
S84で現在注目している領域に、テキスト抽出部26が抽出した文字が存在すると判定した場合、処理制御部22は、その領域に文字認識された文字が存在するかどうかを判定する(S88)。S88の判定結果がYesの場合、その領域には、テキスト抽出部26が抽出した文字と、文字認識エンジン24が認識した文字の両方が存在する。文字認識の結果は誤りである可能性があるので、この場合は、テキスト抽出部26が抽出した文字の方をその領域についての文字認識結果として採用する(S90)。
S88の判定結果がNoの場合は、その領域には、抽出されたテキストの文字は存在するが、文字認識された文字は存在しない。これは前述した「目に見えないテキスト」のケースである。このケースでは、処理制御部22は、見た目と内容のどちらを優先するかをユーザに問い合わせるか、または設定管理部18に登録されている設定内容に基づいて判定する。そして、見た目を優先する場合には、その領域には文字がないものとし(すなわち文字認識結果が「文字なし」)、内容を優先する場合には、その領域の文字認識結果として、テキスト抽出部26が抽出したその領域のテキストを採用する(S92)。
図12に例示した処理では、アプリページ内のテキストオブジェクトから抽出した文字と、文字認識処理により認識した文字とが競合した場合、基本的には、正確であるテキストオブジェクトから抽出した文字を採用する。ただし、テキストオブジェクトからは文字が抽出された場所から、文字認識処理では文字が認識されない場合は、「目に見えないテキスト」であり、一律に抽出されたテキストを優先してよいとは限らないので、ユーザに判断を求める。
文字認識処理部20は、図9〜図12を参照して説明したテキスト取得方法の自動選択処理のうちのいずれかを常にアプリページに適用するようにプログラミングされてもよい。
また、テキスト取得方法の自動選択を、アプリページに対する処理の選択肢としてユーザに提示し、ユーザに選択させてもよい。例えば、図13に示す設定画面200aでは、OCR時のアプリページに対する処理の選択肢欄204aに、図3に示した第1〜第3選択肢に加え、第4選択肢としてテキスト取得方法の自動選択を挙げている。なお、第4選択肢の方法は、他の選択肢よりも顕著に処理に時間がかかるため、選択肢欄204a内の第4選択肢の説明文には、処理に時間を要する旨の但し書きが付されている。ある程度時間がかかっても、なるべく良質でなるべく大量のテキスト情報を得たいユーザは、この第4選択肢を選択すればよい。この設定画面200aの第4選択肢がユーザの選択した方法として設定管理部18に登録されている場合、処理制御部22は、文字認識対象のうちのアプリページについては、図9〜図12に示した方法のいずれかを用いてアプリページを処理する。
以上に例示した文書ハンドリングシステム10又は文字認識処理部20は、例えば、コンピュータにそれら各装置の機能を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)を制御するHDDコントローラ、各種I/O(入出力)インタフェース、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。