(57)【要約】【課題】  画像の見栄えを向上する。【解決手段】文字画像中の連続な特定範囲内に、非空白文字領域とは異なる文字領域であって、非空白位置データによってそれぞれの位置が表される２個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する。孤立空白文字領域が存在すると判断された場合に、文書データの特定範囲に対応する特定文書データを、特定範囲内の非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、文字画像データを用いることによって、生成する。孤立空白文字領域が存在すると判断されなかった場合に、特定文書データを、特定範囲内の非空白文字領域に対して付与処理を行うことによって、生成する。【選択図】  図１
2017156853.tif 000002
【特許請求の範囲】
【請求項１】
文字画像データと位置データとを用いて文書データを生成する生成装置であって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記生成装置は、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される２個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断部と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成部と、
を備え、
前記生成部は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
生成装置。
【請求項２】
請求項１に記載の生成装置であって、
前記孤立空白文字領域は、１文字分の空白、または、連続するＮ文字分（Ｎは２以上の整数）の空白を表す領域である、
生成装置。
【請求項３】
請求項１または２に記載の生成装置であって、
前記文字画像の全体に対する、前記非空白位置データによってそれぞれの位置が表される前記複数の非空白文字領域を除いた残りの部分の割合を特定する特定部を備え、
前記生成部は、前記割合が第１閾値以下である場合には、前記文字画像の全体に対応する前記文書データを、前記付与処理を行うことによって、生成する、
生成装置。
【請求項４】
請求項１から３のいずれかに記載の生成装置であって、
前記文字画像の全体に対する、前記非空白位置データによってそれぞれの位置が表される前記複数の非空白文字領域を除いた残りの部分の割合を特定する特定部を備え、
前記生成部は、前記割合が第２閾値以上である場合には、前記文字画像の全体に対応する前記文書データを、前記付与処理を行わずに、前記文字画像データを用いることによって、生成する、
生成装置。
【請求項５】
請求項１から４のいずれかに記載の生成装置であって、
前記特定範囲は、１行を表す範囲である、生成装置。
【請求項６】
請求項５に記載の生成装置であって、
前記生成部は、前記特定範囲の前記１行の先頭を含む一部分が前記非空白文字領域とは異なる文字領域であり、かつ、前記孤立空白文字領域が存在すると判断されないことを含む特定の条件が満たされる場合には、前記特定画像データを、前記付与処理を行うことによって、生成する、
生成装置。
【請求項７】
請求項６に記載の生成装置であって、
前記生成部は、前記特定範囲の前記１行の先頭を含む一部分が前記非空白文字領域とは異なる文字領域であり、かつ、前記特定範囲の前記１行の１つ前の行の末尾の文字領域が前記非空白文字領域である場合には、前記孤立空白文字領域が存在すると判断されない場合であっても、前記特定画像データを、前記付与処理を行わずに前記文字画像データを用いることによって、生成する、
生成装置。
【請求項８】
請求項１から７のいずれかに記載の生成装置であって、
前記生成部は、前記特定範囲に含まれる前記非空白文字領域が１文字分の前記非空白文字領域のみである場合には、前記孤立空白文字領域が存在すると判断されたか否かに関わらず、前記特定画像データを、前記付与処理を行わずに、前記文字画像データを用いることによって、生成する、
生成装置。
【請求項９】
請求項１から８のいずれかに記載の生成装置であって、
前記非空白位置データは、前記文字画像の文字認識処理によって特定された文字の位置を表すデータであり、
前記付与処理は、前記文字画像の前記文字認識処理によって特定された前記文字を表す前記文字コードを示す情報を付与する処理である、
生成装置。
【請求項１０】
文字画像データと位置データとを用いて文書データをコンピュータに生成させるためのコンピュータプログラムであって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記コンピュータプログラムは、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される２個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断機能と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成機能と、
をコンピュータに実行させ、
前記生成機能は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、文書データを生成する技術に関する。
【背景技術】
【０００２】
従来から、文書を光学スキャナで読み取って得られた画像データ（例えば、ビットマップデータ）を用いて、文書を表す文書データを生成する技術が存在している。この技術においては、文字認識技術を用いて画像データ中の文字を認識し、認識した文字について文字コードを示す情報を文書データの展開時に使用することを示す情報を付与する付与処理を行うことにより、展開の結果、高い分解能の文書データが生成され得る。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０８−１９０６０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、実際には文字が存在するにも係らず文字が存在していないと判断される場合があった。そして、このように判断された部分については、上記付与処理が実行されずに文書データが生成される場合があった。このような判断が、連続する文字列の途中の文字で生じると、連続する文字列であるにもかかわらず、文書データにおいて上記付与処理の実行が部分的になってしまう場合があった。
【０００５】
本明細書は、文書を表す画像の見栄えを向上し得る技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書は、例えば、以下の適用例を開示する。
【０００７】
［適用例１］
文字画像データと位置データとを用いて文書データを生成する生成装置であって、
前記文字画像データは、複数の文字を表す画像である文字画像を表し、
前記位置データは、前記文字画像中の空白ではない文字に対応する領域である複数の非空白文字領域のそれぞれの位置を表す非空白位置データを含み、
前記生成装置は、
前記文字画像中の連続な特定範囲内に、前記非空白文字領域とは異なる文字領域であって、前記非空白位置データによってそれぞれの位置が表される２個の非空白文字領域に挟まれた位置に存在する文字領域である孤立空白文字領域が存在するか否かを判断する判断部と、
前記判断の結果に応じて前記文字画像を表す文書データを生成する生成部と、
を備え、
前記生成部は、
前記孤立空白文字領域が存在すると判断された場合に、前記文書データの前記特定範囲に対応する特定文書データを、前記特定範囲内の前記非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、前記文字画像データを用いることによって、生成し、
前記孤立空白文字領域が存在すると判断されなかった場合に、前記特定文書データを、前記特定範囲内の前記非空白文字領域に対して前記付与処理を行うことによって、生成する、
生成装置。
【０００８】
この構成によれば、孤立空白文字領域が存在すると判断された場合には、非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、文字画像データを用いることによって特定文書データが生成され、孤立空白文字領域が存在すると判断されなかった場合には、付与処理を行うことによって特定文書データが生成されるので、画像の見栄えを向上できる。
【０００９】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像データの生成方法および生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体（例えば、一時的ではない記録媒体）、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例の複合機２００を示す説明図である。
【図２】印刷処理の例のフローチャートである。
【図３】対象データによって表される対象画像の例を示す概略図である。
【図４】図２の文書データ生成処理（Ｓ２０）の例を示すフローチャートである。
【図５】データ取得処理の例を示すフローチャートである。
【図６】ブロック抽出処理の例のフローチャートである。
【図７】データ解析処理の例のフローチャートである。
【図８】描画処理の例のフローチャートである。
【図９】データ解析処理の別の実施例のフローチャートの一部である。
【図１０】スキャン処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
Ａ．第１実施例：
図１は、実施例の複合機２００を示す説明図である。複合機２００は、制御装置２０２と、スキャナ部２８０と、印刷実行部２９０と、を有している。制御装置２０２は、プロセッサ２１０と、揮発性記憶装置２２０と、不揮発性記憶装置２３０と、画像を表示する表示部２４０と、ユーザによる操作を受け入れる操作部２５０と、通信インタフェース２７０と、を有している。これらの要素は、バスを介して互いに接続されている。
【００１２】
プロセッサ２１０は、データ処理を行う装置であり、例えば、ＣＰＵである。揮発性記憶装置２２０は、例えば、ＤＲＡＭであり、不揮発性記憶装置２３０は、例えば、フラッシュメモリである。
【００１３】
不揮発性記憶装置２３０は、プログラム２３２を格納している。プロセッサ２１０は、プログラム２３２を実行することによって、種々の機能を実現する（詳細は、後述）。プロセッサ２１０は、プログラム２３２の実行に利用される種々の中間データを、記憶装置（例えば、揮発性記憶装置２２０、不揮発性記憶装置２３０のいずれか）に、一時的に格納する。本実施例では、プログラム２３２は、複合機２００の製造者によって、ファームウェアとして、不揮発性記憶装置２３０に予め格納されている。ただし、プログラム２３２の少なくとも一部が、外部から取得されて不揮発性記憶装置２３０に格納されるように、複合機２００が構成されていてもよい。例えば、プロセッサ２１０は、ユーザの指示に応じて、プログラム２３２の一部を図示しない外部のサーバから取得し、取得したプログラムを不揮発性記憶装置２３０に格納してもよい。
【００１４】
表示部２４０は、画像を表示する装置であり、例えば、液晶ディスプレイである。操作部２５０は、ユーザによる操作を受け取る装置であり、例えば、表示部２４０上に重ねて配置されたタッチパネルである。ユーザは、操作部２５０を操作することによって、種々の指示を複合機２００に入力可能である。
【００１５】
通信インタフェース２７０は、他の装置と通信するためのインタフェースである（例えば、ＵＳＢインタフェース、有線ＬＡＮインタフェース、IEEE802.11の無線インタフェース）。
【００１６】
スキャナ部２８０は、ＣＣＤやＣＭＯＳなどの光電変換素子を用いて光学的に文書等の対象物を読み取ることによって、読み取った画像（「スキャン画像」と呼ぶ）を表すスキャンデータを生成する。スキャンデータは、例えば、カラーのスキャン画像を表すＲＧＢのビットマップデータである。なお、スキャンデータの形式は、他の任意の形式であってよい（例えば、ＪＰＥＧ形式のデータ、スキャン画像を表すビットマップデータを含むＰＤＦ（Portable Document Format）形式のデータ等）。なお、スキャンデータは、外部装置から取得されてもよい。印刷実行部２９０は、所定の方式（例えば、レーザ方式や、インクジェット方式）で、用紙（印刷媒体の一例）上に画像を印刷する装置である。
【００１７】
制御装置２０２（本実施例では、具体的には、プロセッサ２１０）は、ユーザの指示に従って、ユーザによって指定されたデータを用いて印刷実行部２９０に画像を印刷させることができる。また、制御装置２０２は、ユーザの指示に従って、スキャナ部２８０を駆動し、対象物を光学的に読み取ることによって、対象物を表す文書データを生成することができる。以下、制御装置２０２が、ユーザによって指定された対象データを用いて印刷実行部２９０に画像を印刷させることとして、説明を行う。
【００１８】
図２は、印刷処理の例のフローチャートである。この印刷処理は、例えば、ユーザが操作部２５０に印刷の指示を入力した場合に、開始される。印刷の指示は、印刷に用いられる対象データを指定する指示を含んでいる。対象データを格納する記憶装置としては、任意の記憶装置を採用可能である。例えば、不揮発性記憶装置２３０に格納されたデータが、対象データとして指定されてもよい。また、通信インタフェース２７０に接続された他の装置（例えば、リームバブルメモリ）に格納されたデータが、対象データとして指定されてもよい。Ｓ１０では、プロセッサ２１０は、操作部２５０を介して入力されたユーザの印刷指示によって指定された対象データを取得する。
【００１９】
図３は、対象データによって表される対象画像の例を示す概略図である。図中の対象画像ＩＭ１は、文字を表す文書を表している。この対象画像ＩＭ１は、互いに離れた３個の文字画像ＴＡ１、ＴＡ２、ＴＡ３を表している。各文字画像ＴＡ１、ＴＡ２、ＴＡ３は、それぞれ、複数の文字を表している。このような対象画像ＩＭ１を表す対象データの形式としては、種々の形式が採用され得る。例えば、ＰＤＦ（Portable Document Format）形式のように、文字画像を表すビットマップデータと、文字画像の文字を表す文字コードデータ（例えば、ユニコード（Unicode）のデータ）と、文字の位置を表す位置データと、を含む形式が採用され得る。ビットマップデータと文字コードデータと位置データとのセットは、文字画像ＴＡ１、ＴＡ２、ＴＡ３毎に設けられる。このように、ビットマップデータと文字コードデータと位置データとを含むＰＤＦデータは、例えば、文書を光学スキャナで読み取って得られた画像データ中の文字を文字認識技術によって認識することによって、生成される（文字認識技術としては、公知の技術を採用可能である）。以下、対象データが、このようなＰＤＦデータであることとして、説明する。なお、図示を省略するが、ビットマップデータは、第１方向Ｄｘと、第１方向Ｄｘに垂直な第２方向Ｄｙと、に沿ってマトリクス状に配置された複数の画素のそれぞれの色値（ここでは、ＲＧＢのそれぞれの階調値）を表している。
【００２０】
図２のＳ２０では、プロセッサ２１０は、対象データを用いて、印刷用の文書データを生成する。Ｓ２０では、文字画像の文字の見栄えが向上するように、文字コードデータを用いて、文書データが生成される。本実施例では、生成される文書データは、ＲＧＢのビットマップデータである。Ｓ２０の詳細については、後述する。
【００２１】
Ｓ３０では、プロセッサ２１０は、文書データ（ここでは、ＲＧＢのビットマップデータ）に対して色変換処理を実行して、印刷に利用可能な色材の種類に対応する画像データを生成する。本実施例では、ＣＭＹＫビットマップデータが生成される。色変換処理は、ＲＧＢの階調値とＣＭＹＫの階調値との対応関係を定める図示しないルックアップテーブルを用いて行われる（例えば、補間）。
【００２２】
Ｓ４０では、プロセッサ２１０は、ＣＭＹＫビットマップデータに対してハーフトーン処理を実行して、ドットの形成状態を、画素ごと、かつ、インクの種類ごとに、表すドットデータを生成する。本実施例では、ハーフトーン処理は、誤差マトリクスを利用した誤差拡散処理を用いて実行される。これに代えて、ディザマトリクスを用いるハーフトーン処理を採用してもよい。
【００２３】
Ｓ５０では、プロセッサ２１０は、ドットデータを用いて印刷データを生成する。印刷データは、印刷実行部２９０を制御するための所定のデータ形式で表されたデータである。プロセッサ２１０は、例えば、印刷に用いられる順にドットデータを並べるとともに、各種のプリンタ制御コードや、データ識別コードを付加して印刷データを生成する。
【００２４】
Ｓ６０では、プロセッサ２１０は、生成した印刷データを、印刷実行部２９０に供給する。Ｓ７０では、印刷実行部２９０は、受信した印刷データに従って、画像を印刷する。以上により、図２の印刷処理が終了する。
【００２５】
図４は、図２の文書データ生成処理（Ｓ２０）の例を示すフローチャートである。プロセッサ２１０は、図４の処理を、文字画像毎に実行する。本実施例では、プロセッサ２１０は、対象画像ＩＭ１（図３）のうち、ビットマップデータと文字コードデータと位置データとによって表される部分を、文字画像として用いる。以下、処理対象の文字画像を、「対象文字画像」とも呼ぶ。Ｓ１００では、プロセッサ２１０は、データ取得処理を実行する。図５は、データ取得処理の例を示すフローチャートである。このデータ取得処理では、対象文字画像内の各文字の空白フラグＦ１が設定される。Ｓ２００では、プロセッサ２１０は、文字番号ｉと、空白文字数Ｎｂと、文字数Ｎｔとを、初期化する（ｉ＝１、Ｎｂ＝０、Ｎｔ＝０）。文字コードデータと位置データとは、文字画像に含まれる複数の文字のそれぞれの情報を、１文字ずつ順番に表している。文字番号ｉは、複数の文字のうちの１つの文字を特定する番号であり、先頭から数えた文字の順番を示している。
【００２６】
Ｓ２０５では、プロセッサ２１０は、文字数Ｎｔに１を加算する。Ｓ２１０では、プロセッサ２１０は、ｉ番目の文字の情報を取得する。取得される情報は、文字コードＴ（ｉ）と、第１方向Ｄｘの文字位置Ｐｘ（ｉ）と、第２方向Ｄｙの文字位置Ｐｙ（ｉ）と、である。情報を示す符号に添えられた「（ｉ）」は、その情報がｉ番目の文字の情報であることを示している（後述する他の情報に関しても、同様）。本実施例では、これらの情報Ｔ（ｉ）、Ｐｘ（ｉ）、Ｐｙ（ｉ）は、対象データに含まれる文字コードデータと位置データとから、取得される。
【００２７】
図３の下部には、文字画像ＴＡ３の例が示されている。図中の複数のブロックＢＬは、それぞれ、１個の文字を表す領域である。第１方向Ｄｘに沿って並ぶ複数のブロックＢＬが、行を形成している。文字番号ｉは、１つの行の中では、第１方向Ｄｘに向かって１ずつ増加する。そして、１つの行の末尾のブロックＢＬｅの次のブロックＢＬは、第２方向Ｄｙの隣の行の先頭（すなわち、第１方向Ｄｘとは反対方向側の端）のブロックＢＬである。
【００２８】
図５のＳ２２０では、プロセッサ２１０は、文字コードＴ（ｉ）が、「空白文字」を表しているか否かを判断する。判断結果がＹｅｓである場合、プロセッサ２１０は、Ｓ２３０で空白フラグＦ１（ｉ）を「１」に設定し、Ｓ２４０で空白文字数Ｎｂに１を加算し、Ｓ２６０に移行する。空白フラグＦ１は、文字が空白文字であるか否かを示すフラグである。Ｆ１＝１は、文字が空白文字であることを示し、Ｆ１＝ゼロは、文字が空白文字ではないことを示している。Ｓ２２０の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ２５０で空白フラグＦ１（ｉ）をゼロに設定して、Ｓ２６０に移行する。図３の下部の文字画像ＴＡ３の例では、濃いハッチングが付されたブロックＢＬｂが、空白フラグＦ１が１であるブロックを示している（空白ブロックＢＬｂとも呼ぶ）。なお、「空白文字」を表す文字コードＴ（ｉ）は、文字の誤認識によって設定される場合がある。
【００２９】
図５のＳ２６０では、プロセッサ２１０は、全ての文字の処理が完了したか否かを判断する。未処理の文字が残っている場合（Ｓ２６０：Ｎｏ）、プロセッサ２１０は、Ｓ２７０で文字番号ｉに１を加算し、Ｓ２０５に移行して、更新された文字番号ｉの文字の処理を実行する。全ての文字の処理が完了した場合（Ｓ２６０：Ｙｅｓ）、Ｓ２６５で、プロセッサ２１０は、空白割合Ｒを算出する。空白割合Ｒは、空白文字数Ｎｂを文字数Ｎｔで除して得られる商である。
【００３０】
Ｓ２８０では、プロセッサ２１０は、空白割合Ｒが第１閾値Ｔｈ１より大きいか否かを判断する。第１閾値Ｔｈ１は、例えば、ゼロに近い正値である。Ｔｈ１≧Ｒである場合（Ｓ２８０：Ｎｏ）、Ｓ２８５で、プロセッサ２１０は、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像を表す部分に、対象文字画像の全ての文字の文字コードを付与する。すなわち、対象文字画像の全ての文字に、対応する文字コードが付与される。そして、プロセッサ２１０は、付与された文字コードに対応付けられた文字をレンダリングすることによって、対象文字画像を表すビットマップデータを生成する。図示を省略するが、不揮発性記憶装置２３０には、文字コードと、その文字コードに対応付けられた文字を表すベクタデータ（アウトラインフォントとも呼ばれる）と、の対応関係を表すフォントデータが、予め格納されている。プロセッサ２１０は、フォントデータを参照することによって、対象文字画像の全ての文字のレンダリングを行う（ラスタライズとも呼ばれる）。ここで、プロセッサ２１０は、地色と文字色とを、対象データに含まれる元のビットマップデータを解析することによって、特定することが好ましい。例えば、対象文字画像の縁部分の色を、地色として用いてよい。また、対象文字画像に含まれる色のうちの地色以外の色を、文字色として用いてよい。Ｓ２８５の完了に応じて、プロセッサ２１０は、図５の処理、ひいては、図４の処理を終了する。
【００３１】
なお、レンダリングは、印刷用の解像度で行われることが好ましい。ただし、対象データに含まれる元のビットマップデータの解像度と同じ解像度でレンダリングが行われてもよい。この場合、プロセッサ２１０は、レンダリングによって生成されたビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、対象文字画像が空白ブロックＢＬｂを含む場合には、空白ブロックＢＬｂの画像を表すデータとして、対象データに含まれる元のビットマップデータのうちの空白ブロックＢＬｂに対応する部分をそのまま採用してもよい。ここで、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、フォントデータは、プログラム２３２に組み込まれていてもよい。
【００３２】
Ｔｈ１＜Ｒである場合（Ｓ２８０：Ｙｅｓ）、Ｓ２９０で、プロセッサ２１０は、空白割合Ｒが第２閾値Ｔｈ２未満であるか否かを判断する。第２閾値Ｔｈ２は、例えば、第１閾値Ｔｈ１より大きく、１００％以下の値である。Ｒ≧Ｔｈ２である場合（Ｓ２９０：Ｎｏ）、Ｓ２９５で、プロセッサ２１０は、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像を表す部分として、対象データに含まれる元のビットマップデータをそのまま用いる。そして、プロセッサ２１０は、図５の処理、ひいては、図４の処理を終了する。なお、元のビットマップデータの解像度が、印刷用の解像度と異なる場合、プロセッサ２１０は、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
【００３３】
Ｒ＜Ｔｈ２である場合（Ｓ２９０：Ｙｅｓ）、プロセッサ２１０は、図５の処理を終了し、図４のＳ１１０に移行する。この段階で、対象文字画像の全ての文字のそれぞれには、空白フラグＦ１と、文字コードＴと、文字位置Ｐｘ、Ｐｙと、が対応付けられている。図５の下部には、文字と情報Ｆ１、Ｔ、Ｐｘ、Ｐｙとの処理例が示されている。この例では、文字数ＮｔがＬ個である。そして、１番目とｚ番目の文字の空白フラグＦ１（ｚ）が「１」である。
【００３４】
図６は、図４のＳ１１０のブロック抽出処理の例のフローチャートである。このブロック抽出処理では、対象文字画像内の各文字の改行フラグＦ２と各行の改行位置Ｐｒと段落末フラグＦ３とが設定される。Ｓ３００では、プロセッサ２１０は、文字番号ｉと、行番号ｊと、列番号ｋとを、初期化する（ｉ＝１、ｊ＝１、ｋ＝１）。行番号ｊと列番号ｋとは、対象文字画像内でのｉ番目の文字の行と列とを示すために用いられる。なお、行番号ｊは、第２方向Ｄｙ（図３）に沿って数えた行の順番を示している。列番号ｋは、行の先頭から第１方向Ｄｘに沿って数えた文字の順番を示している。
【００３５】
図６のＳ３１０では、プロセッサ２１０は、ｊ行ｋ列の文字の情報を取得する。取得される情報は、文字コードＴ（ｊ，ｋ）と、第１方向Ｄｘの文字位置Ｐｘ（ｊ，ｋ）と、第２方向Ｄｙの文字位置Ｐｙ（ｊ，ｋ）と、空白フラグＦ１（ｊ，ｋ）と、である。情報を示す符号に添えられた「（ｊ，ｋ）」は、その情報がｊ行ｋ列の文字の情報であることを示している（後述する他の情報に関しても、同様）。ここで、プロセッサ２１０は、ｊ行ｋ列の文字がｉ番目の文字であることとして、ｉ番目の文字の情報Ｔ、Ｐｘ、Ｐｙ、Ｆ１を、ｊ行ｋ列の文字の情報Ｔ、Ｐｘ、Ｐｙ、Ｆ１として、取得する。すなわち、Ｔ（ｊ，ｋ）＝Ｔ（ｉ）、Ｐｘ（ｊ，ｋ）＝Ｐｘ（ｉ）、Ｐｙ（ｊ，ｋ）＝Ｐｙ（ｉ）、Ｆ１（ｊ，ｋ）＝Ｆ１（ｉ）である。
【００３６】
Ｓ３２０では、プロセッサ２１０は、ｉ＋１番目の文字が、ｉ番目の文字の次の行の文字であるか否かを判断する。図３の例では、２つの文字の間で第２方向Ｄｙの位置が大きく異なる場合、２つの文字が互いに異なる行に位置している。そこで、本実施例では、プロセッサ２１０は、ｉ＋１番目の文字の文字位置Ｐｙ（ｉ＋１）とｉ番目の文字の文字位置Ｐｙ（ｉ）との間の差が、行閾値Ｔｈｒよりも大きいか否かを判断する。行閾値Ｔｈｒは、２個の文字が互いに異なる行に位置していると判断するための基準を示している。位置Ｐｙの差が行閾値Ｔｈｒよりも大きいことは、ｉ＋１番目の文字がｉ番目の文字の次の行に位置している、すなわち、ｉ番目の文字の後ろで改行されていることを示している。
【００３７】
なお、行閾値Ｔｈｒは、予め決められている。この代わりに、プロセッサ２１０は、対象データの解析結果に応じて行閾値Ｔｈｒを決定してもよい。例えば、位置データによって表される複数の文字の文字位置Ｐｙの分布から、隣接する２個の行の間の位置Ｐｙの差である行間を特定し、この行間に応じて行閾値Ｔｈｒを決定してもよい。例えば、行閾値Ｔｈｒは、行間よりも若干小さい値に決定されることが好ましい（例えば、行閾値Ｔｈｒ＝０．８×行間）。
【００３８】
Ｓ３２０の判断結果がＹｅｓである場合、Ｓ３３０で、プロセッサ２１０は、ｊ行ｋ列の文字の改行フラグＦ２（ｊ，ｋ）を「１」に設定する。改行フラグＦ２は、文字の直後で改行されているか否かを示すフラグである。Ｆ２＝１は、文字の直後で改行されていることを示し、Ｆ２＝ゼロは、文字の直後で改行されていないことを示している。例えば、図３の下部の例では、各行の末尾のブロックＢＬｅの改行フラグＦ２が１に設定される。
【００３９】
図６のＳ３４０では、プロセッサ２１０は、ｊ行の改行位置Ｐｒ（ｊ）を、ｋに設定する。改行位置Ｐｒは、各行の改行位置を示す情報であり、改行直前の文字の列番号によって表される。
【００４０】
Ｓ３５０では、プロセッサ２１０は、ｊ行が段落の最後の行であるか否かを判断する。一般的に、段落の最後の行の文字数は、他の行の文字数以下である。例えば、図３の下部の例では、文字画像ＴＡ３は、３個の段落ＰＲ１、ＰＲ２、ＰＲ３を表している。第１段落ＰＲ１と第３段落ＰＲ３とは、それぞれ、複数の行で構成され、第２段落ＰＲ２は、１つの行Ｒ２で構成されている。段落ＰＲ１、ＰＲ２、ＰＲ３の最後の行Ｒ１ｅ、Ｒ２、Ｒ３ｅの文字数は、最後の行Ｒ１ｅ、Ｒ２、Ｒ３ｅ以外の行の文字数よりも、少ない。従って、最後の行Ｒ１ｅ、Ｒ２、Ｒ３ｅの改行位置は、他の行の改行位置と比べて、行頭に近い（すなわち、第１方向Ｄｘとは反対方向側に位置している）。そこで、本実施例では、プロセッサ２１０は、ｊ行の改行位置Ｐｒ（ｊ）が、対象文字画像に対応付けられた最大改行位置Ｐｒｍよりも小さいか否かを判断する。最大改行位置Ｐｒｍは、例えば、Ｓ３４０で設定済みの改行位置Ｐｒのうちの最大値である。これに代えて、プロセッサ２１０は、Ｓ３１０よりも前に全ての行の改行位置Ｐｒを特定し、そして、特定した改行位置Ｐｒのうちの最大値を、最大改行位置Ｐｒｍとして採用してもよい。改行位置Ｐｒ（ｊ）が最大改行位置Ｐｒｍよりも小さいことは、ｊ行が段落の最後の行であることを示している。なお、特に最大改行位置ＰｒｍがＳ３４０で設定済みの改行位置Ｐｒのうちの最大値である場合、先頭の行（ｊ＝１）の判断結果は、「Ｙｅｓ（ｊ行は段落の最後の行である）」と「Ｎｏ（ｊ行は段落の最後の行ではない）」とのうちの予め決められた結果であってもよい。
【００４１】
Ｓ３５０の判断結果がＹｅｓである場合（Ｐｒ（ｊ）＜Ｐｒｍ）、プロセッサ２１０は、Ｓ３５５で、ｊ行の段落末フラグＦ３（ｊ）を「１」に設定し、Ｓ３６０に移行する。段落末フラグＦ３は、行が段落の最後の行であるか否かを示すフラグである。Ｆ３＝１は、行が段落の最後の行であることを示し、Ｆ３＝ゼロは、行が段落の最後の行ではないことを示している。Ｓ３５０の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ３５７で、ｊ行の段落末フラグＦ３（ｊ）を「ゼロ」に設定し、Ｓ３６０に移行する。図３の下部の例では、第１段落ＰＲ１の最後の行Ｒ１ｅと第２段落ＰＲ２の最後の行Ｒ２と第３段落ＰＲ３の最後の行Ｒ３ｅのそれぞれの段落末フラグＦ３が、１に設定される。他の行の段落末フラグＦ３は、ゼロに設定される。
【００４２】
Ｓ３６０では、プロセッサ２１０は、行番号ｊに１を加算し、列番号ｋをゼロに設定する。そして、プロセッサ２１０は、Ｓ３８０に移行する。
【００４３】
Ｓ３２０の判断結果がＮｏである場合、すなわち、ｉ＋１番目の文字とｉ番目の文字とが同じ行に位置している場合、プロセッサ２１０は、Ｓ３７０で、ｉ番目の文字であるｊ行ｋ列の文字の改行フラグＦ２（ｊ，ｋ）を「ゼロ」に設定し、Ｓ３８０に移行する。
【００４４】
Ｓ３８０では、プロセッサ２１０は、全ての文字の処理が完了したか否かを判断する。未処理の文字が残っている場合（Ｓ３８０：Ｎｏ）、プロセッサ２１０は、Ｓ３９０で文字番号ｉに１を加算し、列番号ｋに１を加算する。そして、プロセッサ２１０は、Ｓ３１０に移行して、更新されたｉ番目の文字（すなわち、更新されたｊ行ｋ列の文字）の処理を実行する。
【００４５】
全ての文字の処理が完了した場合（Ｓ３８０：Ｙｅｓ）、プロセッサ２１０は、図６の処理を終了し、図４のＳ１２０に移行する。この段階で、対象文字画像の全ての文字のそれぞれには、空白フラグＦ１と、改行フラグＦ２と、段落末フラグＦ３と、文字コードＴと、文字位置Ｐｘ、Ｐｙと、が対応付けられている。図６の下部には、文字と情報Ｆ１、Ｆ２、Ｔ、Ｐｘ、Ｐｙとの処理例が示されている。この例では、１行の文字数がｔ文字である。そして、行の途中の文字Ｔｍの空白フラグＦ１がゼロである。
【００４６】
図７は、図４のＳ１２０のデータ解析処理の例のフローチャートである。このデータ解析処理では、対象文字画像内の各行のビットマップフラグＦ４が設定される。Ｓ４００では、プロセッサ２１０は、行番号ｊと、列番号ｋとを、初期化する（ｊ＝１、ｋ＝１）。Ｓ４０５では、プロセッサ２１０は、ｊ行ｋ列の空白フラグＦ１（ｊ，ｋ）が「１」であるか否かを判断する。Ｆ１＝１である場合（Ｓ４０５：Ｙｅｓ）、Ｓ４１０で、プロセッサ２１０は、ｊ行ｋ列の空白文字が、行頭の文字であるか否かを判断する。本実施例では、列番号ｋが１である場合に、判断結果がＹｅｓである。図中のＳ４１０内の括弧内の条件「かつ、段落末フラグＦ３（ｊ−１）＝１」は、後述する別の実施例で用いられる条件である（詳細は後述）。
【００４７】
Ｓ４１０の判断結果がＮｏである場合、Ｓ４１５で、プロセッサ２１０は、ｊ行ｋ列の空白文字が、行末の文字であるか否かを判断する。本実施例では、列番号ｋが改行位置Ｐｒ（ｊ）と同じである場合に、判断結果がＹｅｓである。図中のＳ４１５内の括弧内の条件「かつ、段落末フラグＦ３（ｊ）＝１」は、後述する別の実施例で用いられる条件である（詳細は後述）。
【００４８】
Ｓ４０５の判断結果がＹｅｓであり、かつ、Ｓ４１０の判断結果がＮｏであり、かつ、Ｓ４１５の判断結果がＮｏである場合、Ｓ４２０で、プロセッサ２１０は、ｊ行のビットマップフラグＦ４（ｊ）を「１」に設定し、Ｓ４２５に移行する。ビットマップフラグＦ４は、後述する図４のＳ１３０で、文字コードデータを用いずに対象データに含まれる元のビットマップデータを用いるか否かを示すフラグである。Ｆ４＝１は、元のビットマップデータを用いて文書データを生成することを示し、Ｆ４＝ゼロは、元のビットマップデータではなく文字コードデータを用いて文書データを生成することを示している。
【００４９】
本実施例では、Ｓ４２０でビットマップフラグＦ４が１に設定される場合、すなわち、Ｓ４０５の判断結果がＹｅｓであり、Ｓ４１０の判断結果がＮｏであり、Ｓ４１５の判断結果がＮｏである場合には、空白ブロックＢＬｂは、行頭でもなく行末でもなく行の途中に位置している。図３の下部の例では、二重線で示された空白ブロックＢＬｂが、行の途中に位置している。これらの空白ブロックＢＬｂは、空白フラグＦ１がゼロである２個のブロックＢＬに挟まれた位置に存在する空白文字を表す領域を、示している（以下、「孤立空白文字領域」とも呼ぶ）。１個の孤立空白文字領域は、１個以上の空白ブロックＢＬｂが連続した領域である。孤立空白文字領域を含む行Ｒａ、Ｒｄ、Ｒｅに関しては、Ｓ４２０で、ビットマップフラグＦ４が１に設定される。
【００５０】
図３の下部の例では、段落ＰＲ１、ＰＲ２、ＰＲ３の先頭の行Ｒ１ｓ、Ｒ２、Ｒ３ｓの先頭のブロックＢＬ１１、ＢＬ２１、ＢＬ３１は、空白ブロックＢＬｂである。これらのブロックＢＬ１１、ＢＬ２１、ＢＬ３１は、字下げによる空白文字を示している。また、第１段落ＰＲ１の途中の行Ｒｃの行頭にも、空白ブロックＢＬｂが位置している。行頭の空白ブロックＢＬｂによって表される領域は、空白フラグＦ１がゼロである２個のブロックＢＬに挟まれていないので、孤立空白文字領域ではない。このような行頭の空白ブロックＢＬｂに関しては、Ｓ４１０の判断結果が「Ｙｅｓ」であるので、Ｓ４２０は実行されない。
【００５１】
また、各段落ＰＲ１、ＰＲ２、ＰＲ３の最後の行Ｒ１ｅ、Ｒ２、Ｒ３ｅの行末の文字ＢＬ１ｅ、ＢＬ２ｅ、ＢＬ３ｅの後ろには、空白部分ＢＳ１、ＢＳ２、ＢＳ３が形成されている。本実施例の対象データでは、行の後ろの空白部分は、空白文字として扱われていない。仮に、空白部分ＢＳ１、ＢＳ２、ＢＳ３が空白文字として扱われる場合、空白部分ＢＳ１、ＢＳ２、ＢＳ３の空白ブロックＢＬｂに関しては、Ｓ４１５の判断結果が「Ｙｅｓ」であるので、Ｓ４２０は実行されない。また、空白部分ＢＳ１、ＢＳ２、ＢＳ３の空白ブロックＢＬｂは、空白フラグＦ１がゼロである２個のブロックＢＬに挟まれていないので、孤立空白文字領域ではない。
【００５２】
Ｓ４０５の判断結果がＮｏ、または、Ｓ４１０の判断結果がＹｅｓ、または、Ｓ４１５の判断結果がＹｅｓである場合、Ｓ４３０で、プロセッサ２１０は、ｊ行ｋ列の文字が、ｊ行の最初の非空白文字であるか否かを判断する。ここで、非空白文字は、空白フラグＦ１＝ゼロの文字である。判断結果がＹｅｓである場合、プロセッサ２１０は、Ｓ４３５で、先頭文字位置Ｐ１をｋに設定し、Ｓ４４０に移行する。先頭文字位置Ｐ１は、ｊ行における最も行頭に近い非空白文字の位置（ここでは、列番号）を示している。Ｓ４３０の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ４３５をスキップして、Ｓ４４０に移行する。Ｓ４４０では、プロセッサ２１０は、ｊ行のビットマップフラグＦ４（ｊ）を「ゼロ」に設定する。
【００５３】
Ｓ４４５では、プロセッサ２１０は、プロセッサ２１０は、ｊ行の全ての文字の処理が終了したか否かを判断する。本実施例では、ｊ行ｋ列の改行フラグＦ２（ｊ，ｋ）が「１」である場合に、ｊ行の全ての文字の処理が終了したと判断される。Ｓ４４５の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ４５０で列番号ｋに１を加算して、Ｓ４０５に移行する。そして、次の文字（更新された列番号ｋの文字）の処理を実行する。
【００５４】
Ｓ４４５の判断結果がＹｅｓである場合、Ｓ４５５で、プロセッサ２１０は、先頭文字位置Ｐ１がｋ（この段階では、ｋ＝改行位置）と同じであるか否かを判断する。先頭文字位置Ｐ１が改行位置ｋと同じであることは、ｊ行の非空白文字の総数が１であることを示している。Ｓ４５５の判断結果がＹｅｓである場合、プロセッサ２１０は、Ｓ４６０で、ｊ行のビットマップフラグＦ４（ｊ）を１に変更し、Ｓ４２５に移行する。Ｓ４５５の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ４６０をスキップして、Ｓ４２５に移行する。
【００５５】
Ｓ４２５では、プロセッサ２１０は、全ての行の処理が完了したか否かを判断する。未処理の行が残っている場合（Ｓ４２５：Ｎｏ）、プロセッサ２１０は、Ｓ４６５で、行番号ｊに１を加算し、列番号ｋを１に初期化する。そして、プロセッサ２１０は、Ｓ４０５に移行して、更新されたｊ行のｋ列の文字の処理を実行する。
【００５６】
全ての行の処理が完了した場合（Ｓ４２５：Ｙｅｓ）、プロセッサ２１０は、図７の処理を終了し、図４のＳ１３０に移行する。図８は、図４のＳ１３０の描画処理の例のフローチャートである。この描画処理では、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像を表す部分が生成される。Ｓ５００では、プロセッサ２１０は、行番号ｊを１に初期化する。Ｓ５１０では、プロセッサ２１０は、ｊ行のビットマップフラグＦ４（ｊ）が１であるか否かを判断する。Ｆ４（ｊ）＝１である場合（Ｓ５１０：Ｙｅｓ）、Ｓ５１５で、ｊ行を表すデータとして、対象データに含まれる元のビットマップデータのうちのｊ行を表す部分をそのまま用いる。すなわち、ｊ行を表すデータは、文字コードデータを用いずに、元のビットマップデータを用いて、生成される。そして、プロセッサ２１０は、Ｓ５２０に移行する。なお、元のビットマップデータの解像度が、印刷用の解像度と異なる場合、プロセッサ２１０は、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
【００５７】
Ｆ４（ｊ）＝ゼロである場合（Ｓ５１０：Ｎｏ）、プロセッサ２１０は、Ｓ５３０、Ｓ５４０で、文字コードデータを用いて、ｊ行を表すビットマップデータを生成する。具体的には、Ｓ５３０で、プロセッサ２１０は、ｊ行を表す領域を地色で塗りつぶしたビットマップデータを生成する。地色としては、例えば、対象文字画像の縁部分の色が、採用される。Ｓ５４０では、プロセッサ２１０は、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像のｊ行を表す部分にｊ行の文字の文字コードを付与する。すなわち、ｊ行の全ての文字に、対応する文字コードが付与される。そして、プロセッサ２１０は、付与された文字コードに対応付けられた文字を、地色のビットマップ上にレンダリングする。文字の色としては、例えば、対象文字画像に含まれる色のうちの地色以外の色が、採用される。また、レンダリングには、図５のＳ２８５で説明したフォントデータが用いられる。このようなＳ５３０、Ｓ５４０によって、ｊ行の文字を表すビットマップデータが生成される。そして、プロセッサ２１０は、Ｓ５２０に移行する。
【００５８】
なお、本実施例では、Ｓ５３０、Ｓ５４０の処理は、印刷用の解像度で実行される。ただし、Ｓ５３０、Ｓ５４０の処理が、対象データに含まれる元のビットマップデータの解像度と同じ解像度で実行されてもよい。この場合、プロセッサ２１０は、Ｓ５３０、Ｓ５４０で生成されたビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。また、ｊ行が空白ブロックＢＬｂを含む場合には、空白ブロックＢＬｂの画像を表すデータとして、対象データに含まれる元のビットマップデータのうちの空白ブロックＢＬｂに対応する部分をそのまま採用してもよい。ここで、元のビットマップデータを用いる解像度変換処理を実行して、印刷用の解像度のビットマップデータを生成してもよい。
【００５９】
Ｓ５２０では、プロセッサ２１０は、全ての行の処理が完了したか否かを判断する。未処理の行が残っている場合（Ｓ５２０：Ｎｏ）、プロセッサ２１０は、Ｓ５５０で、行番号ｊに１を加算し、Ｓ５１０に移行して、更新されたｊ行の処理を実行する。
【００６０】
全ての行の処理が完了した場合（Ｓ５２０：Ｙｅｓ）、プロセッサ２１０は、図８の処理、ひいては、図４の処理を終了する。これにより、印刷用の文書データが生成される。
【００６１】
以上のように、本実施例では、図７のＳ４０５、Ｓ４１０、Ｓ４１５でｊ行の中に孤立空白文字領域が存在すると判断された場合には、Ｓ４２０でｊ行のビットマップフラグＦ４（ｊ）が１に設定される。そして、図８の処理では、Ｆ４（ｊ）＝１の場合、Ｓ５１５で、図４の処理で生成されるべきビットマップデータのうちの対象文字画像のｊ行を表す部分にｊ行の文字の文字コードが付与されず、代わりに、対象データに含まれる元のビットマップデータのうちのｊ行を表す部分を用いて、ｊ行を表すデータが生成される。例えば、図３の下部の例では、孤立空白文字領域を含む行Ｒａ、Ｒｄ、Ｒｅのデータが、文字コードの付与処理を行わずに、元のビットマップデータを用いて生成される。仮に、ｊ行のうち孤立空白文字領域以外の領域の文字がレンダリングによって表現され、かつ、孤立空白文字領域の文字がレンダリングされずに表現される場合には、同じ行の中の孤立空白文字領域の文字と孤立空白文字領域以外の領域の文字との間の表現方法の差異が目立つ場合がある。本実施例では、孤立空白文字領域を含む行の全体を表すデータが、文字コードを用いずに、元のビットマップデータを用いて生成されるので、表現方法の差異が目立つことを抑制できる。
【００６２】
また、図７のＳ４０５、Ｓ４１０、Ｓ４１５でｊ行の中に孤立空白文字領域が存在すると判断されなかった場合には、Ｓ４４０で、ｊ行のビットマップフラグＦ４（ｊ）がゼロに設定され得る。そして、図８の処理では、Ｆ４（ｊ）＝ゼロの場合、Ｓ５３０、Ｓ５４０で、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像のｊ行を表す部分にｊ行の文字の文字コードが付与され、文字コードに対応付けられた文字のレンダリングによってｊ行を表すデータが生成される。従って、元のビットマップデータを用いる場合と比べて、文字を精細に表現可能である。
【００６３】
このように、行の中に孤立空白文字領域が存在すると判断される場合とそうではない場合との両方において、画像の見栄えを向上できる。
【００６４】
また、本実施例では、ビットマップフラグＦ４を用いた処理は、行毎に行われる。従って、行の中に孤立空白文字領域が存在すると判断される場合には、行の中の孤立空白文字領域の文字と孤立空白文字領域以外の領域の文字との間の表現方法の差異が目立つことを抑制できる。また、行の中に孤立空白文字領域が存在すると判断されない場合には、レンダリングによって、文字を精細に表現できる。
【００６５】
また、図７で説明したように、孤立空白文字領域は、１文字分の空白ブロックＢＬｂ、または、連続するＮ文字分（Ｎは２以上の整数）の空白ブロックＢＬｂによって表される領域である。従って、１文字分の空白、または、Ｎ文字分の空白を表す孤立空白文字領域が不自然に表現されることを抑制できる。
【００６６】
また、図５のＳ２６０、Ｓ２６５、Ｓ２８０、Ｓ２８５で説明したように、空白割合Ｒ（すなわち、対象文字画像の全体に対する空白文字の割合）が第１閾値Ｔｈ１以下である場合（Ｓ２８０：Ｎｏ）、Ｓ２８５が実行される。Ｓ２８５では、プロセッサ２１０は、図４の処理で生成されるべき文書データ（ここでは、ビットマップデータ）のうちの対象文字画像の全体を表す部分に、対象文字画像の全ての文字の文字コードを付与する（すなわち、対象文字画像の全ての文字に、対応する文字コードが付与される）。そして、プロセッサ２１０は、文字コードに対応付けられた文字のレンダリングによって、対象文字画像を表すデータを生成する。従って、空白文字の割合が小さい場合に、文字を精細に表現できる。
【００６７】
また、図５のＳ２６０、Ｓ２６５、Ｓ２９０、Ｓ２９５で説明したように、空白割合Ｒが第２閾値Ｔｈ２以上である場合（Ｓ２９０：Ｎｏ）、Ｓ２９５が実行される。Ｓ２９５では、プロセッサ２１０は、文字コードの付与処理を行わずに（すなわち、文字コードデータを用いずに）、対象データに含まれる元のビットマップデータを用いて、対象文字画像を表すデータを生成する。仮に、対象文字画像のうち空白ブロックＢＬｂ以外の領域の文字がレンダリングによって表現され、かつ、空白ブロックＢＬｂの文字がレンダリングされずに表現される場合には、同じ文字画像の中の空白ブロックＢＬｂの文字と空白ブロックＢＬｂ以外の領域の文字との間の表現方法の差異が目立つ場合がある。本実施例では、空白文字の割合が大きい場合には、文字コードの付与処理を行わずに（すなわち、文字コードデータを用いずに）、対象データに含まれる元のビットマップデータを用いて、対象文字画像を表すデータが生成されるので、表現方法の差異が目立つことを抑制できる。
【００６８】
また、図７のＳ４０５、Ｓ４１０、Ｓ４４０で説明したように、空白ブロックＢＬｂの位置が行頭である場合には、Ｓ４４０で、ビットマップフラグＦ４（ｊ）がゼロに設定され得る。そして、Ｓ４５０、Ｓ４０５、Ｓ４１０、Ｓ４１５によって、同じ行に孤立空白文字領域が存在するか否かが判断される。そして、孤立空白文字領域が存在しないと判断された場合、Ｓ４２０が実行されずにビットマップフラグＦ４（ｊ）がゼロに維持される。そして、図８の処理では、Ｆ４（ｊ）＝ゼロの場合、Ｓ５３０、Ｓ５４０で、文書データのうち対象文字画像のｊ行を表す部分は、文字コードを用いて（ここでは、レンダリングによって）生成される。例えば、図３の下部の例では、行Ｒ１ｓ、Ｒｃ、Ｒ２、Ｒ３ｓにおいては、行頭のみに空白ブロックＢＬｂが配置されている。従って、これらの行Ｒ１ｓ、Ｒｃ、Ｒ２、Ｒ３ｓを表すデータは、レンダリングによって生成される。従って、元のビットマップデータを用いる場合と比べて、文字を精細に表現可能である。また、行頭の空白ブロックＢＬｂは、空白フラグＦ１がゼロである２個のブロックＢＬに挟まれているわけではないので、孤立空白文字領域と比べて、表現方法の差異が目立ちにくい。従って、行頭の空白ブロックＢＬｂと他の部分との間で表現方法が異なる場合であっても、画像の見栄えの低下を抑制できる。
【００６９】
また、図７のＳ４５５、Ｓ４６０で説明したように、ｊ行の非空白文字の総数が１である場合、孤立空白文字領域が存在すると判断されたか否かに関わらず、ビットマップフラグＦ４（ｊ）は、１に設定される。そして、図８の処理では、Ｆ４（ｊ）＝１の場合、Ｓ５１５で、文字コードが付与されず（すなわち、文字コードデータが用いられず）、代わりに、対象データに含まれる元のビットマップデータのうちのｊ行を表す部分を用いて、ｊ行を表すデータが生成される。従って、１個の文字が不自然に表現されることを抑制できる。
【００７０】
Ｂ．第２実施例：
ビットマップフラグＦ４を設定するための条件としては、上記の第１実施例の条件に代えて、他の種々の条件を採用可能である。例えば、図７のＳ４１０の条件は、「ｊ行ｋ列の空白文字が、行頭の文字である」かつ「ｊ行が段落の最初の行である」であってもよい（以下「第１段落条件」とも呼ぶ）。プロセッサ２１０は、１つ前の行の段落末フラグＦ３（ｊ−１）が１である場合に、１つ前の行が段落の最後の行である、すなわち、ｊ行が段落の最初の行である、と判断できる。また、プロセッサ２１０は、行番号ｊが１である場合にも、ｊ行が段落の最初の行である、と判断できる。
【００７１】
一般的に、段落の最初の行では、字下げが行われる。従って、ｊ行が段落の最初の行である場合、行頭の空白ブロックＢＬｂは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、その空白ブロックＢＬｂに起因してビットマップフラグＦ４を１に設定するのではなく、ビットマップフラグＦ４をゼロに設定することによって、文字コードデータを用いてその行のデータを生成することが好ましい。
【００７２】
Ｓ４１０の条件として、上記の第１段落条件を採用すれば、空白ブロックＢＬｂが段落の最初の行の行頭に位置している場合には、Ｓ４１０の判断結果がＹｅｓであるので、Ｓ４４０でビットマップフラグＦ４をゼロに設定することができる。例えば、図３の下部の例では、段落ＰＲ１、ＰＲ２、ＰＲ３の最初の行Ｒ１ｓ、Ｒ２、Ｒ３ｓに関しては、行頭に空白ブロックＢＬｂが位置しているものの、ビットマップフラグＦ４がゼロに設定される。従って、これらの行Ｒ１ｓ、Ｒ２、Ｒ３ｓの文字を精細に表現可能である。
【００７３】
一方、ｊ行が段落の途中の行である場合、行頭の空白ブロックＢＬｂは、文字の誤認識に起因している可能性が高い。従って、その空白ブロックＢＬｂに起因してビットマップフラグＦ４を１に設定することが好ましい。
【００７４】
Ｓ４１０の条件として、上記の第１段落条件を採用すれば、空白ブロックＢＬｂが段落の途中の行の行頭に位置している場合には、Ｓ４１０の判断結果がＮｏであるので、Ｓ４２０でビットマップフラグＦ４を１に設定することができる。例えば、図３の下部の例では、第１段落ＰＲ１の途中の行Ｒｃに関しては、行頭に空白ブロックＢＬｂが位置しているので、Ｓ４２０でビットマップフラグＦ４が１に設定される。従って、図８のＳ５１５で元のビットマップデータを用いて行Ｒｃのデータが生成されるので、行Ｒｃの空白ブロックＢＬｂの文字が不自然に表現されることを抑制できる。
【００７５】
なお、第２実施例では、第１実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグＦ４が１に設定される。さらに、段落の途中の行の行頭に空白ブロックＢＬｂが位置する場合にも、ビットマップフラグＦ４が１に設定される。
【００７６】
Ｃ．第３実施例：
図７のＳ４１５の条件は、「ｊ行ｋ列の空白文字が、行末の文字である」かつ、「ｊ行が段落の最後の行である」であってもよい（以下「第２段落条件」とも呼ぶ）。プロセッサ２１０は、ｊ行の段落末フラグＦ３（ｊ）が１である場合に、ｊ行が段落の最後の行である、と判断できる。
【００７７】
図３の下部の例で説明したように、段落の最後の行の行末の文字の後ろには、空白部分（例えば、空白部分ＢＳ１〜ＢＳ３）が形成され得る。このような空白部分は、空白文字として認識され得る。従って、ｊ行が段落の最後の行である場合、行末の空白ブロックＢＬｂは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、その空白ブロックＢＬｂに起因してビットマップフラグＦ４を１に設定するのではなく、ビットマップフラグＦ４をゼロに設定することによって、文字コードデータを用いてその行のデータを生成することが好ましい。
【００７８】
Ｓ４１５の条件として、上記の第２段落条件を採用すれば、空白ブロックＢＬｂが段落の最後の行の行末に位置している場合には、Ｓ４１５の判断結果がＹｅｓであるので、Ｓ４４０でビットマップフラグＦ４をゼロに設定することができる。
【００７９】
一方、ｊ行が段落の途中の行である場合、行末の空白ブロックＢＬｂは、文字の誤認識に起因している可能性が高い。従って、その空白ブロックＢＬｂに起因してビットマップフラグＦ４を１に設定することが好ましい。Ｓ４１５の条件として、上記の第２段落条件を採用すれば、空白ブロックＢＬｂが段落の途中の行の行末に位置している場合には、Ｓ４１５の判断結果がＮｏであるので、Ｓ４２０でビットマップフラグＦ４を１に設定することができる。図３の下部の例において、仮に、第３段落ＰＲ３の途中の段落Ｒｆの行末に空白ブロックＢＬｂが位置していると仮定する。この場合、上記の第１実施例では、Ｓ４１５の判断結果がＹｅｓであるので、ビットマップフラグＦ４がゼロに設定され得る。しかし、第３実施例では、Ｓ４１５の判断結果がＮｏであるので、ビットマップフラグＦ４を１に設定できる。この結果、行末の空白ブロックＢＬｂの文字が不自然に表現されることを抑制できる。
【００８０】
なお、第３実施例では、第１実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグＦ４が１に設定される。さらに、段落の途中の行の行末に空白ブロックＢＬｂが位置する場合にも、ビットマップフラグＦ４が１に設定される。
【００８１】
Ｄ．第４実施例：
図９は、図７のデータ解析処理の別の実施例のフローチャートの一部である。図７のフローチャートとの差異は、Ｓ４０５とＳ４１０との間に、Ｓ４０７が設けられている点だけである。データ解析処理の他の部分は、図７の処理と同じである。図９では、Ｓ４０７と他のステップとの接続のみを示し、他のステップについては、図示を省略している。
【００８２】
ｊ行ｋ列の空白フラグＦ１（ｊ，ｋ）が１である場合（Ｓ４０５：Ｙｅｓ）、Ｓ４０７で、プロセッサ２１０は、「ｊ行ｋ列の空白文字が行頭の文字であり、かつ、１つ前の行の行末の文字が空白文字ではない」が満たされるか否かを判断する。上述したように、改行位置Ｐｒ（ｊ−１）は、１つ前の行の改行位置、すなわち、１つ前の行の行末の文字の列番号を示している。従って、空白フラグＦ１（ｊ−１、Ｐｒ（ｊ−１））は、１つ前の行の行末の文字の空白フラグＦ１である。プロセッサ２１０は、空白フラグＦ１（ｊ−１、Ｐｒ（ｊ−１））がゼロである場合に、１つ前の行の行末の文字が空白文字ではない、と判断できる。
【００８３】
図３の下部の例で説明したように、ｊ行が段落の途中の行である場合、行頭の空白ブロックＢＬｂは、文字の誤認識に起因している可能性が高い。また、ｊ行が段落の途中の行である場合、１つ前の行は段落の最後の行ではないので、１つ前の行の行末の文字は、空白文字ではない可能性が高い。例えば、図３の下部の例では、第１段落ＰＲ１の途中の行Ｒｃの行頭に空白ブロックＢＬｂが位置している。この行Ｒｃの１つ前の行Ｒｂの行末の文字は、空白文字ではない。ｊ行ｋ列の空白文字が、このように段落の途中の行Ｒｃの行頭の文字である場合、Ｓ４０７の判断結果はＹｅｓである。
【００８４】
Ｓ４０７の判断結果がＹｅｓである場合、ｊ行ｋ列の空白ブロックＢＬｂは、文字の誤認識に起因する可能性がある。そこで、本実施例では、Ｓ４０７の判断結果がＹｅｓである場合、プロセッサ２１０は、孤立空白文字領域が存在するか否かに関わらず、Ｓ４２０（図７）に移行して、ビットマップフラグＦ４（ｊ）を１に設定する。これにより、行頭の空白ブロックＢＬｂの文字が不自然に表現されることを抑制できる。例えば、図３の下部の例では、行Ｒｃに関しては、ビットマップフラグＦ４が１に設定される。図８のＳ５１５で元のビットマップデータを用いて行Ｒｃのデータが生成されるので、行Ｒｃの空白ブロックＢＬｂの文字が不自然に表現されることを抑制できる。
【００８５】
また、Ｓ４０７の判断結果がＮｏである場合、プロセッサ２１０は、Ｓ４１０に移行して、上記の各実施例と同様の判断を行う。
【００８６】
なお、第４実施例では、第１実施例と同様に、孤立空白文字領域を含む行に関しては、ビットマップフラグＦ４が１に設定される。さらに、段落の途中の行の行頭に空白ブロックＢＬｂが位置する場合にも、ビットマップフラグＦ４が１に設定される。
【００８７】
Ｅ．第５実施例：
図１０は、スキャン処理の例を示すフローチャートである。このスキャン処理は、ユーザが操作部２５０（図１）にスキャンの指示を入力した場合に、開始される。スキャン処理は、スキャナ部２８０によって読み取られた対象物を表す文書データを生成する処理である。
【００８８】
Ｓ６００では、プロセッサ２１０は、スキャナ部２８０を駆動し、対象物を光学的に読み取ることによって、対象物を表すスキャンデータを取得する。以下、対象物が、複数の文字を表す文書であることとする。なお、スキャンデータは、外部装置から取得されてもよい。Ｓ６１０では、プロセッサ２１０は、スキャンデータを解析する文字認識処理を実行することによって、スキャンデータによって表されるスキャン画像中の文字を認識する。文字認識処理としては、公知の文字認識処理を採用可能である。この文字認識処理によって、プロセッサ２１０は、スキャン画像に含まれる文字画像の文字を表す文字コードデータと、文字の位置を表す位置データと、を取得する。例えば、スキャン画像が、図３の対象画像ＩＭ１と同じである場合、スキャン画像は、３個の文字画像ＴＡ１、ＴＡ２、ＴＡ３を表している。文字コードデータと位置データとのセットは、文字画像毎に生成される。
【００８９】
Ｓ６２０では、プロセッサ２１０は、文書データ生成処理を実行する。文書データ生成処理は、図４に示す文書データ生成処理と同じであり、上記の複数の実施例の文書データ生成処理から任意に選択された文書データ生成処理を採用可能である。ここで、対象データとしては、スキャンデータと、Ｓ６１０で取得された文字コードデータと位置データと、が用いられる。この文書データ生成処理によって、上記の各実施例と同様に、文字を精細に表現し、画像の見栄えが向上した文書データが生成される。なお、本実施例では、文字のレンダリング（例えば、図５のＳ２８５、図８のＳ５４０）は、スキャンデータの解像度と同じ解像度で行われる。また、文字画像を表すデータとしてスキャンデータが用いられる場合、解像度変換は行われない。ただし、プロセッサ２１０は、予め決められた解像度、または、ユーザによって選択された解像度に従って、文書データを生成してもよい。Ｓ６３０では、プロセッサ２１０は、生成した文書データを記憶装置に格納する。そして、図１０の処理が終了する。
【００９０】
なお、文書データのデータ形式としては、任意の形式を採用可能である。本実施例では、文書データは、ＰＤＦ形式のデータである。プロセッサ２１０は、文書データとして、Ｓ５１０で生成した文字コードデータと位置データとの両方を含むデータを生成する（図５のＳ２８５、図８のＳ５４０では、文字コードデータと位置データとの両方が付与される）。すなわち、文書データは、図５のＳ２８５と図８のＳ５４０とのレンダリングによって生成されたビットマップデータと、図５のＳ２８５と図８のＳ５４０とで付与された文字コードデータと位置データと、図５のＳ２９５と図８のＳ５１５で用いられたスキャンデータと、を含んでいる。
【００９１】
文書データを格納するための記憶装置としては、任意の記憶装置を採用可能である。例えば、プロセッサ２１０は、不揮発性記憶装置２３０に、文書データを格納してもよい。また、プロセッサ２１０は、通信インタフェース２７０に接続された他の装置（例えば、リームバブルメモリ）に、文書データを格納してもよい。
【００９２】
なお、プロセッサ２１０は、図５のＳ２８５、図８のＳ５４０で、レンダリングを行わずに、文字コードデータと位置データとを付与するだけであってもよい。この場合、最終的に生成される文書データは、スキャンデータと、文字コードデータと、位置データと、を含んでおり、レンダリングによって生成されたビットマップデータを含んでいない。さらに、プロセッサ２１０は、孤立空白文字領域を含むか否かに係らずすべての行に文字コードデータを付与すると共に、孤立空白文字領域を含まない行に、最終的に生成される文書データの展開時に文字コードデータを使用することを示す情報を付与し、孤立空白文字領域を含む行に、最終的に生成される文書データの展開時に文字コードデータを使用することを示す情報を付与しない構成であってもよい。あるいは、孤立空白文字領域を含まない行に、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与せず、孤立空白文字領域を含む行に、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与する構成であってもよい。この場合、最終的に生成される文書データの展開時に文字コードデータを使用しないことを示す情報を付与せず、文字コードデータのみを付与することが「文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理」の一例である。なおここで、展開とは、表示または印刷等のために、表示または印刷等に用いられる複数の画素のそれぞれの色値を表すデータを、文書データを用いて決定（例えば、算出、特定）することを意味している。
【００９３】
Ｆ．変形例：
（１）文書データを生成する処理としては、上記各実施例の処理に代えて、他の種々の処理を採用可能である。例えば、図５のＳ２６５で特定される割合Ｒは、文字数Ｎｔに対する空白文字数Ｎｂの割合に代えて、文字画像の全体に対する非空白文字領域を除いた残りの部分の割合を表す種々の値であってよい。例えば、割合Ｒは、文字画像の全体の面積に対する非空白文字領域を除いた残りの部分の面積の割合であってもよい。いずれの場合も、図５のＳ２８０とＳ２９０との少なくとも一方を省略してもよい。また、図７のデータ解析処理において、Ｓ４５５、Ｓ４６０を省略してもよい。また、図７のＳ４１０の条件は、行頭の１文字だけではなく、行頭を含む一部分（例えば、連続なＭ文字（Ｍは１以上の整数））が、空白ブロックＢＬｂであることを、含んでもよい。また、孤立文字領域が存在すると判断されない場合であっても、行頭を含む一部分が空白ブロックＢＬｂである場合には、ビットマップフラグＦ４が「１」に設定されてもよい（すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われずに文書データが生成される（例えば、文字コードの付与処理が行われない））。また、孤立文字領域が存在すると判断されず、かつ、行頭を含む一部分が空白ブロックＢＬｂではない場合に、ビットマップフラグＦ４が「ゼロ」に設定されてもよい（すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理が行われて文書データが生成される（例えば、文字コードの付与処理が行われる））。
【００９４】
また、図６のＳ３２０の条件は、ｉ＋１番目の文字が、ｉ番目の文字の次の行の文字であるか否かを判断可能な任意の条件であってよい。例えば、ｉ＋１番目の文字がｉ番目の文字よりも行頭に近いことを含む条件を採用してもよい。また、Ｓ３５０の条件は、ｊ行が段落の最後の行であるか否かを判断可能な任意の条件であってよい。例えば、ｊ−１行の改行位置Ｐｒ（ｊ−１）からｊ行の改行位置Ｐｒ（ｊ）を引いた差が、段落閾値Ｔｈｐよりも大きいことを含む条件を採用してもよい。段落閾値Ｔｈｐは、ｊ番目の行が段落の最後の行であると判断するための基準を示しており、例えば、予め決められている。差が段落閾値Ｔｈｐよりも大きいことは、ｊ行の文字数がｊ−１行の文字数と比べて少ないこと、すなわち、ｊ行が段落の最後の行であることを示している。
【００９５】
また、文字コードデータと位置データとから、空白文字に関する情報が省略されていてもよい。すなわち、文字コードデータと位置データとは、非空白文字の情報のみを表していてもよい。この場合、連続する２個の文字の間の距離が閾値よりも大きい場合に、２個の文字の間に空白文字領域が存在すると判断できる。閾値は、予め決められていてもよく、また、文字画像の解析結果に応じて決定されてもよい。また、文字コードデータの代わりに、文字が、空白文字と、空白ではない任意の文字（すなわち、非空白文字）と、のいずれであるのかを示す文字種類データが、位置データに対応付けられていてもよい。この場合、位置データは、文字種類データによって特定される文字（空白文字、または、非空白文字）の位置を表す。また、この場合、文字コードを用いて文書データを生成する際に、各文字の文字コードを特定するために、文字認識処理が実行されてもよい。
【００９６】
また、孤立空白文字領域としては、１文字分の空白文字領域のみを用いてもよい。この場合、２以上の空白ブロックＢＬｂが連続する領域は、２個の非空白文字領域に挟まれていたとしても、孤立空白文字領域として用いられない。文字認識処理による誤認識が連続する複数の文字で生じる可能性が小さい場合には、連続する２以上の空白ブロックＢＬｂは、文字の誤認識に起因するものではなく、実際に空白文字に起因している可能性が高い。従って、そのように大きな空白文字領域が存在する場合には、その空白文字領域に起因して文字コードを示す情報を展開時に使用することを示す情報の付与をやめるのではなく、文字コードを示す情報を展開時に使用することを示す情報を付与することによって文書データ生成することによって、画像の見栄えを向上できる。
【００９７】
また、孤立空白文字領域が存在するか否かの判断を行う単位範囲（特定範囲とも呼ぶ）、すなわち、文字コードを示す情報を展開時に使用することを示す情報を付与するか否かの判断を行う特定範囲は、文字画像中の１行の範囲に代えて、他の種々の連続な範囲であってよい。例えば、文字画像の全体を採用してもよく、１つの段落を表す範囲を採用してもよく、１つの文を表す範囲を採用してもよく、１つの単語を表す範囲を採用してもよい。
【００９８】
いずれの場合も、特定範囲内に孤立空白文字領域が存在すると判断された場合には、文書データのうちの特定範囲に対応する特定文書データを、特定範囲内の非空白文字領域に対して文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行わずに、特定範囲の画像を表す元のデータを用いて生成することが好ましい。そして、特定範囲内に孤立空白文字領域が存在すると判断されなかった場合には、特定文書データを、特定範囲内の非空白文字領域に対して付与処理を行うことによって、生成することが好ましい。これにより、画像の見栄えを向上できる。なお、文字コードを示す情報を展開時に使用することを示す情報は、文書データとは独立な別のデータとして生成されてよい。そして、元のデータのうちの特定範囲の画像を表す部分と、そのような別のデータが生成されたことを示すフラグデータと、を含む特定文書データが、生成されてもよい。
【００９９】
孤立空白文字領域が存在するか否かを判断する方法としては、上記の方法に代えて、他の種々の方法を採用可能である。例えば、図７のＳ４１０の条件が第１段落条件であり、かつ、Ｓ４１５の条件が第２段落条件であってもよい。この場合も、図３の下部の例の行Ｒ２のように、１つの行が１つの段落を形成する場合には、その行の中に孤立空白文字領域が存在する場合に、ビットマップフラグＦ４が１に設定される。また、空白ブロックＢＬｂの前と後との両方に非空白のブロックＢＬが存在するか否かを判断してもよい。一般的には、１以上の条件に従って、文書データの生成に文字コードを示す情報を展開時に使用することを示す情報を付与する付与処理を行うか否かを決定してよい。いずれの場合も、文書データの生成処理において、特定範囲内に孤立空白文字領域が存在する場合に特定範囲内の非空白文字領域に付与処理が行われない場合には、その生成処理は、孤立空白文字領域が存在するか否かを判断し、孤立空白文字領域が存在すると判断された場合に付与処理を行わないように構成されている、といえる。
【０１００】
（２）印刷処理の手順としては、図２に示す手順に代えて、他の種々の手順を採用可能である。例えば、プロセッサ２１０は、Ｓ２０の前に、対象画像の文字認識処理を実行してもよい。この構成によれば、対象データが、文字コードデータと位置データとを含まない場合にも、プロセッサ２１０は、文字コードデータと位置データとを用いて、適切な文書データを生成できる。
【０１０１】
（３）文書データを生成する複合機２００の構成は、図１の構成とは異なっていてもよい。例えば、印刷実行部２９０とスキャナ部２８０との少なくとも一方が省略されてもよい。また、制御装置２０２は、専用のハードウェア回路（例えば、ASIC（Application Specific Integrated Circuit））で構成されていてもよい。また、文書データを生成する生成装置は、複合機２００（図１）とは異なる種類の装置（例えば、デジタルカメラ、スキャナ、スマートフォン、パーソナルコンピュータ）であってもよい。また、ネットワークを介して互いに通信可能な複数の装置（例えば、コンピュータ）が、生成装置による文書データの生成処理の機能を一部ずつ分担して、全体として、生成処理の機能を提供してもよい（これらの装置を備えるシステムが生成装置に対応する）。
【０１０２】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図２のＳ２０と図１０のＳ６２０との文書データ生成処理の機能を、専用のハードウェア回路によって実現してもよい。
【０１０３】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体（例えば、一時的ではない記録媒体）に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体（コンピュータ読み取り可能な記録媒体）に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種ＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【０１０４】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１０５】
２００...複合機、２０２...制御装置、２１０...プロセッサ、２２０...揮発性記憶装置、２３０...不揮発性記憶装置、２３２...プログラム、２４０...表示部、２５０...操作部、２７０...通信インタフェース、２８０...スキャナ部、２９０...印刷実行部
【図１】
2017156853.tif 000003
【図２】
2017156853.tif 000004
【図３】
2017156853.tif 000005
【図４】
2017156853.tif 000006
【図５】
2017156853.tif 000007
【図６】
2017156853.tif 000008
【図７】
2017156853.tif 000009
【図８】
2017156853.tif 000010
【図９】
2017156853.tif 000011
【図１０】
2017156853.tif 000012