(57)【要約】      （修正有）【課題】複数個の文字を迅速に再配置し得る技術を提供する。【解決手段】画像処理サーバは、スキャン画像内の４個の帯状領域ＬＡ１１〜ＬＡ１４の縦方向に沿った４個の長さｈ１１〜ｈ１４に基づいて、４個の帯状領域ＬＡ１１〜ＬＡ１４の中から修飾物を含む帯状領域ＬＡ１３を特定する。そして、画像処理サーバは、帯状領域ＬＡ１３に含まれる修飾物と、帯状領域ＬＡ１２に含まれる１行の文字列「Ｆ〜Ｊ」と、を１行の修飾文字列として扱って、複数個の文字と修飾物とがスキャン画像とは異なる状態で再配置されている画像を表わす画像データを生成する。【選択図】図５
2015170981.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
原画像を表わす原画像データを取得する取得部であって、前記原画像は、Ｍ行（前記Ｍは１以上の整数）の文字列と、前記Ｍ行の文字列を構成する複数個の文字のうちの被修飾文字を修飾するための修飾物と、を含み、前記Ｍ行の文字列のそれぞれは、第１方向に沿って並ぶ２個以上の文字によって構成され、前記Ｍ行の文字列は、前記Ｍが２以上の整数である場合に、前記第１方向に直交する第２方向に沿って並び、前記修飾物は、前記被修飾文字の前記第２方向の第１側又は第２側において前記被修飾文字の近傍に存在する、前記取得部と、
前記原画像の中から複数個の帯状領域を決定する決定部であって、前記複数個の帯状領域は、前記Ｍ行の文字列を含むＭ個の主帯状領域と、前記修飾物を含む副帯状領域と、を含む、前記決定部と、
前記複数個の帯状領域の前記第２方向に沿った複数個の長さに基づいて、前記複数個の帯状領域の中から前記副帯状領域を特定する特定部と、
前記副帯状領域に含まれる前記修飾物と、前記副帯状領域の前記第２方向の前記第１側又は前記第２側において前記副帯状領域の近傍に存在する近傍主帯状領域に含まれる１行の文字列と、を１行の修飾文字列として扱って、前記Ｍ行の文字列を構成する前記複数個の文字と前記修飾物とが前記原画像とは異なる状態で再配置されている対象画像を表わす対象画像データを生成する対象画像データ生成部と、
を備える画像処理装置。
【請求項２】
前記修飾物は、前記被修飾文字の前記第２方向の前記第２側に配置される修飾線であって、前記第１方向に沿って伸びる前記修飾線であり、
前記近傍主帯状領域は、前記副帯状領域の前記第２方向の前記第１側において前記副帯状領域の近傍に存在する、請求項１に記載の画像処理装置。
【請求項３】
前記被修飾文字は、漢字であり、
前記修飾物は、前記被修飾文字の前記第２方向の前記第１側に配置されるルビであり、
前記近傍主帯状領域は、前記副帯状領域の前記第２方向の前記第２側において前記副帯状領域の近傍に存在する、請求項１に記載の画像処理装置。
【請求項４】
前記対象画像データ生成部は、
前記副帯状領域と、前記第２方向の前記第１側において前記副帯状領域の近傍に存在する第１の主帯状領域と、の間の前記第２方向に沿った第１の距離と、前記副帯状領域と、前記第２方向の前記第２側において前記副帯状領域の近傍に存在する第２の主帯状領域と、の間の前記第２方向に沿った第２の距離と、を算出する距離算出部を備え、
前記対象画像データ生成部は、
前記第１の距離が前記第２の距離未満である場合に、前記第１の主帯状領域を前記近傍主帯状領域として決定し、
前記第１の距離が前記第２の距離以上である場合に、前記第２の主帯状領域を前記近傍主帯状領域として決定する、請求項１から３のいずれか一項に記載の画像処理装置。
【請求項５】
前記原画像のうちの前記Ｍ行の文字列及び前記修飾物を含むテキスト領域を構成する複数個の画素は、前記テキスト領域に含まれる前記Ｍ行の文字列又は前記修飾物を構成する第１種画素と、前記テキスト領域に含まれる前記Ｍ行の文字列及び前記修飾物の背景を構成する第２種画素と、を含み、
前記対象画像データ生成部は、
前記副帯状領域に対応する第１の射影ヒストグラムを生成する第１のヒストグラム生成部であって、前記第１の射影ヒストグラムは、前記テキスト領域内の前記副帯状領域を構成する各画素を前記第２方向に沿って射影する場合における前記第１種画素の頻度の分布を示すヒストグラムである、前記第１のヒストグラム生成部を備え、
前記対象画像データ生成部は、
前記第１の射影ヒストグラムが、ゼロより高い頻度値が前記第１方向に沿って所定の長さ以上に亘って連続する特定の分布を示す場合に、前記第２方向の前記第１側において前記副帯状領域の近傍に存在する第１の主帯状領域を前記近傍主帯状領域として決定し、
前記第１の射影ヒストグラムが、前記特定の分布を示さない場合に、前記第２方向の前記第２側において前記副帯状領域の近傍に存在する第２の主帯状領域を前記近傍主帯状領域として決定する、請求項１から３のいずれか一項に記載の画像処理装置。
【請求項６】
前記特定部は、
前記複数個の帯状領域のうちの対象帯状領域の前記第２方向に沿った長さが、前記複数個の帯状領域の前記第２方向に沿った前記複数個の長さに基づいて設定される設定値以下である場合に、前記対象帯状領域を前記副帯状領域として特定し、
前記対象帯状領域の前記第２方向に沿った前記長さが前記設定値よりも大きい場合に、前記対象帯状領域を前記主帯状領域として特定する、請求項１から５のいずれか一項に記載の画像処理装置。
【請求項７】
前記特定部は、前記複数個の帯状領域の前記第２方向に沿った前記複数個の長さの平均値を算出し、前記平均値以下の値を前記設定値として設定する、請求項６に記載の画像処理装置。
【請求項８】
前記特定部は、長さを示す第１軸と出現頻度を示す第２軸とによって画定される平面上に、前記複数個の帯状領域の前記第２方向に沿った前記複数個の長さの出現頻度を示すグラフを生成し、前記第１軸上の第１の範囲と第２の範囲との境界の位置に対応する長さを前記設定値として設定し、
前記第１の範囲は、最高の出現頻度を含み、かつ、出現頻度がゼロより高い範囲であり、前記第２の範囲は、前記第１軸が示す長さが前記第１の範囲よりも小さく、かつ、出現頻度がゼロである範囲である、請求項６に記載の画像処理装置。
【請求項９】
前記特定部は、長さを示す第１軸と出現頻度を示す第２軸とによって画定される平面上に、前記複数個の帯状領域の前記第２方向に沿った前記複数個の長さの出現頻度を示すグラフを生成し、前記第１軸上の第１の範囲と第２の範囲との境界の位置に対応する長さを前記設定値として設定し、
前記第１の範囲は、出現頻度がゼロより高い前記第１軸上の複数個の範囲のうち、前記第１軸が示す長さが最大である範囲であり、前記第２の範囲は、前記第１軸が示す長さが前記第１の範囲よりも小さく、かつ、出現頻度がゼロである範囲である、請求項６に記載の画像処理装置。
【請求項１０】
前記原画像のうちの前記Ｍ行の文字列及び前記修飾物を含むテキスト領域を構成する複数個の画素は、前記テキスト領域に含まれる前記Ｍ行の文字列又は前記修飾物を構成する第１種画素と、前記テキスト領域に含まれる前記Ｍ行の文字列及び前記修飾物の背景を構成する第２種画素と、を含み、
前記決定部は、
前記原画像データを利用して、第２の射影ヒストグラムを生成する第２のヒストグラム生成部であって、前記第２の射影ヒストグラムは、前記テキスト領域を構成する各画素を前記第１方向に沿って射影する場合における前記第１種画素の頻度の分布を示すヒストグラムである、前記第２のヒストグラム生成部を備え、
前記決定部は、前記第２の射影ヒストグラムを利用して、前記テキスト領域の中から前記複数個の帯状領域を決定する、請求項１から９のいずれか一項に記載の画像処理装置。
【請求項１１】
前記画像処理装置は、さらに、
前記複数個の帯状領域のそれぞれについて、当該帯状領域の前記第２方向に沿った全範囲の中から基準位置を決定する基準位置決定部を備え、
前記対象画像データ生成部は、前記副帯状領域について決定された前記基準位置を利用せずに、前記Ｍ個の主帯状領域について決定されたＭ個の前記基準位置が前記第２方向において同じ位置に存在するように、前記Ｍ行の文字列が前記第１方向に沿って直線状に結合された１行の対象文字列を含む前記対象画像を表わす前記対象画像データを生成する、請求項１から１０のいずれか一項に記載の画像処理装置。
【請求項１２】
前記原画像のうちの前記Ｍ行の文字列及び前記修飾物を含むテキスト領域を構成する複数個の画素は、前記テキスト領域に含まれる前記Ｍ行の文字列又は前記修飾物を構成する第１種画素と、前記テキスト領域に含まれる前記Ｍ行の文字列及び前記修飾物の背景を構成する第２種画素と、を含み、
前記基準位置決定部は、
前記テキスト領域の中から複数個の単位領域を決定する単位領域決定部であって、前記複数個の単位領域のそれぞれは、前記テキスト領域内の第１種画素群に外接する領域であり、前記第１種画素群に含まれる各第１種画素は、少なくとも１個の他の第１種画素に隣接する、前記単位領域決定部と、
前記複数個の帯状領域のそれぞれについて、当該帯状領域の前記第２方向に沿った全範囲のうちの複数個の評価範囲に対応する複数個の評価値を算出する評価値算出部であって、前記複数個の評価値のそれぞれは、対応する評価範囲内に１個以上の特定辺が存在する場合に、当該１個以上の特定辺の長さの和であり、前記特定辺は、前記単位領域の前記第２方向の前記第２側の辺である、前記評価値算出部と、を備え、
前記基準位置決定部は、前記複数個の帯状領域のそれぞれについて、当該帯状領域について算出された前記複数個の評価値のうちの最大の評価値に対応する１個の評価範囲のうちの前記第２方向に沿った特定位置を前記基準位置として決定する、請求項１１に記載の画像処理装置。
【請求項１３】
画像処理装置のためのコンピュータプログラムであって、
前記画像処理装置に搭載されるコンピュータに、以下の各ステップ、即ち、
原画像を表わす原画像データを取得する取得ステップであって、前記原画像は、Ｍ行（前記Ｍは１以上の整数）の文字列と、前記Ｍ行の文字列を構成する複数個の文字のうちの被修飾文字を修飾するための修飾物と、を含み、前記Ｍ行の文字列のそれぞれは、第１方向に沿って並ぶ２個以上の文字によって構成され、前記Ｍ行の文字列は、前記Ｍが２以上の整数である場合に、前記第１方向に直交する第２方向に沿って並び、前記修飾物は、前記被修飾文字の前記第２方向の第１側又は第２側において前記被修飾文字の近傍に存在する、前記取得ステップと、
前記原画像の中から複数個の帯状領域を決定する決定ステップであって、前記複数個の帯状領域は、前記Ｍ行の文字列を含むＭ個の主帯状領域と、前記修飾物を含む副帯状領域と、を含む、前記決定ステップと、
前記複数個の帯状領域の前記第２方向に沿った複数個の長さに基づいて、前記複数個の帯状領域の中から前記副帯状領域を特定する特定ステップと、
前記副帯状領域に含まれる前記修飾物と、前記副帯状領域の前記第２方向の前記第１側又は前記第２側において前記副帯状領域の近傍に存在する近傍主帯状領域に含まれる１行の文字列と、を１行の修飾文字列として扱って、前記Ｍ行の文字列を構成する前記複数個の文字と前記修飾物とが前記原画像とは異なる状態で再配置されている対象画像を表わす対象画像データを生成する対象画像データ生成ステップと、
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、複数個の文字と修飾物とを含む原画像を表わす原画像データを利用して、複数個の文字と修飾物とが原画像とは異なる状態で再配置されている対象画像を表わす対象画像データを生成する画像処理装置を開示する。
【背景技術】
【０００２】
特許文献７には、文書を含む原稿を読み取って画像データを生成し、文書の書式（行数、列数、文字サイズ等）を変更して印刷する画像形成装置が開示されている。画像形成装置は、文書内の個々の文字を１個の矩形領域として扱って、複数個の文字を再配置することによって文書の書式を変更する。特に、画像形成装置は、日本語の１個の漢字にルビが付されている場合には、１個の漢字とルビとを統合して１個の文字として扱う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１０８７５０号公報
【特許文献２】特開２０１２−２３０６２３号公報
【特許文献３】特開２０１１−２４２９８７号公報
【特許文献４】特開２０１０−１８３４８４号公報
【特許文献５】特開２００５−２２３８２４号公報
【特許文献６】特開平５−９４５１１号公報
【特許文献７】特開２０００−１３７８０１号公報
【特許文献８】特開平１１−２５２８３号公報
【特許文献９】特開２０１２−２１６０３８号公報
【非特許文献】
【０００４】
【非特許文献１】“画面サイズに合わせ自動的に改行！文書ファイルをスマートフォン上で読みやすく表示  レイアウト再構築技術「GT-Layout」  オンラインストレージ「Dropbox」向けのサービスをスタート  新開発”、［online］、２０１２年５月３０日、富士フィルム株式会社、［２０１４年１月２４日検索］、インターネット＜http://www.fujifilm.co.jp/corporate/news/articleffnr_0647.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の特許文献７の技術では、画像形成装置は、ルビによって修飾される漢字を含む複数個の文字を再配置する際に、１個の文字を単位として処理を実行するので、複数個の文字を再配置する処理に比較的に長い時間を要し得る。本明細書では、複数個の文字を迅速に再配置し得る技術を提供する。
【課題を解決するための手段】
【０００６】
本明細書によって開示される画像処理装置は、取得部と、決定部と、特定部と、対象画像データ生成部と、を備える。取得部は、原画像を表わす原画像データを取得する。原画像を表わす原画像データを取得する。原画像は、Ｍ行（Ｍは１以上の整数）の文字列と、Ｍ行の文字列を構成する複数個の文字のうちの被修飾文字を修飾するための修飾物と、を含む。Ｍ行の文字列のそれぞれは、第１方向に沿って並ぶ２個以上の文字によって構成される。Ｍ行の文字列は、Ｍが２以上の整数である場合に、第１方向に直交する第２方向に沿って並ぶ。修飾物は、被修飾文字の第２方向の第１側又は第２側において被修飾文字の近傍に存在する。決定部は、原画像の中から複数個の帯状領域を決定する。複数個の帯状領域は、Ｍ行の文字列を含むＭ個の主帯状領域と、修飾物を含む副帯状領域と、を含む。特定部は、複数個の帯状領域の第２方向に沿った複数個の長さに基づいて、複数個の帯状領域の中から副帯状領域を特定する。対象画像データ生成部は、副帯状領域に含まれる修飾物と、副帯状領域の第２方向の第１側又は第２側において副帯状領域の近傍に存在する近傍主帯状領域に含まれる１行の文字列と、を１行の修飾文字列として扱って、Ｍ行の文字列を構成する複数個の文字と修飾物とが原画像とは異なる状態で再配置されている対象画像を表わす対象画像データを生成する。
【０００７】
上記の構成によると、画像処理装置は、副帯状領域に含まれる修飾物と、２個以上の文字を含む近傍主帯状領域に含まれる１行の文字列と、を１行の修飾文字列として扱うので、１個の文字を単位として処理を実行せずに済む。この結果、画像処理装置は、複数個の文字と修飾物とが原画像とは異なる状態で再配置されている対象画像を表わす対象画像データを迅速に生成し得る。
【０００８】
上記の画像処理装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も新規で有用である。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成を示す。
【図２】画像処理サーバの処理のフローチャートを示す。
【図３】文字列解析処理のフローチャートを示す。
【図４】帯状領域決定処理のフローチャートを示す。
【図５】修飾物解析処理のフローチャートを示す。
【図６】結合処理のフローチャートを示す。
【図７】分断候補位置決定処理のフローチャートを示す。
【図８】分断候補位置決定処理の具体例を示す。
【図９】再配置処理のフローチャートを示す。
【図１０】行数決定処理のフローチャートを示す。
【図１１】再配置処理及び拡大処理の具体例を示す。
【図１２】第２実施例の修飾物解析処理を説明するための説明図を示す。
【図１３】第３実施例の修飾物解析処理を説明するための説明図を示す。
【図１４】第４実施例の修飾物解析処理のフローチャートを示す。
【図１５】第５実施例の修飾物解析処理のフローチャートを示す。
【図１６】第６実施例の修飾物解析処理のフローチャートを示す。
【発明を実施するための形態】
【００１０】
（第１実施例）
（通信システム２の構成）
図１に示されるように、通信システム２は、多機能機１０と画像処理サーバ５０とを備える。多機能機１０と画像処理サーバ５０とは、インターネット４を介して、相互に通信可能である。多機能機１０は、印刷機能、スキャン機能、コピー機能、ＦＡＸ機能等を含む多機能を実行可能な周辺機器（即ち図示省略のＰＣ（Personal Computerの略）等の周辺機器）である。画像処理サーバ５０は、多機能機１０のベンダによってインターネット４上に設けられるサーバである。
【００１１】
（多機能機１０によって実行される各処理の概要）
多機能機１０が実行可能なコピー機能は、モノクロコピー機能とカラーコピー機能とに分類されるが、本実施例では、カラーコピー機能に着目して説明する。カラーコピー機能は、通常カラーコピー機能と文字拡大カラーコピー機能とに分類される。多機能機１０は、どちらのカラーコピー機能の実行指示がユーザから与えられる場合でも、まず、スキャン対象の画像を表わすシート（以下では「スキャン対象シート」と呼ぶ）をカラースキャンして、スキャン画像データＳＩＤを生成する。スキャン画像データＳＩＤは、多階調（例えば２５６階調）のＲＧＢビットマップデータである。
【００１２】
スキャン画像データＳＩＤによって表わされるスキャン画像ＳＩ（即ちスキャン対象シートに表現されている画像）は、白色の背景を有すると共に、テキストオブジェクトＴＯＢと写真オブジェクトＰＯＢとを含む。テキストオブジェクトＴＯＢは、黒色の複数個の文字「Ａ〜Ｍ」によって構成される３行の文字列を含む。複数個の文字「Ａ〜Ｍ」のうちの３個の文字「ＦＧＨ」は、黒色の修飾線によって修飾されている。修飾線は、３個の文字「ＦＧＨ」の下側において、横方向に沿って伸びる一重線（即ち下線）である。なお、文字及び修飾線の色は、黒色とは異なる色（例えば赤色）でもよい。写真オブジェクトＰＯＢは、文字を含まず、複数色によって構成される写真を含む。
【００１３】
なお、本実施例の各図では、便宜上、テキストオブジェクトＴＯＢを構成する各文字列が、規則的な順序で並ぶアルファベット「Ａ〜Ｍ」によって表現されているが、実際には、各文字列は、センテンスを構成している。各文字列（即ち１行の文字列）では、スキャン画像ＳＩ内の横方向の左側から右側に向かってセンテンスが進む。また、３行の文字列「Ａ〜Ｍ」では、スキャン画像ＳＩ内の縦方向の上側から下側に向かってセンテンスが進む。なお、以下のいずれの画像（例えば後述の処理済み画像ＰＩ）においても、１行の文字列を構成する複数個の文字が並ぶ方向、当該方向に直交する方向を、それぞれ、「横方向」、「縦方向」と呼ぶ。また、左側から右側に向かってセンテンスが進むことから、横方向の左端、横方向の右端のことを、それぞれ、「先端」、「後端」と呼ぶ。
【００１４】
多機能機１０は、ユーザから通常カラーコピー機能の実行指示が与えられる場合には、スキャン画像データＳＩＤを利用して、ユーザによって設定されるコピー倍率に応じて、画像をシート（以下では「印刷対象シート」と呼ぶ）に印刷する。例えば、コピー倍率が等倍である場合には、多機能機１０は、スキャン対象シートに表現されている画像と同じサイズを有する画像を印刷対象シートに印刷する。また、例えば、コピー倍率が画像の拡大を示す倍率である場合には、多機能機１０は、スキャン対象シートに表現されている画像よりも大きいサイズを有する画像を印刷対象シートに印刷する。この場合、例えば、Ａ４サイズのスキャン対象シートに表現されている画像が拡大されて、Ａ３サイズの印刷対象シートに印刷される。この結果、２個のオブジェクトＴＯＢ，ＰＯＢの全てが拡大されて表現されている画像が印刷対象シートに印刷される。
【００１５】
一方、多機能機１０は、ユーザから文字拡大カラーコピー機能の実行指示が与えられる場合には、インターネット４を介して、スキャン画像データＳＩＤを画像処理サーバ５０に送信する。これにより、多機能機１０は、インターネット４を介して、画像処理サーバ５０から処理済み画像データＰＩＤを受信し、処理済み画像データＰＩＤによって表わされる処理済み画像ＰＩを印刷対象シートに印刷する。特に、多機能機１０は、スキャン対象シートと同じサイズ（例えばＡ４サイズ）を有する印刷対象シートに処理済み画像ＰＩを印刷する。
【００１６】
処理済み画像ＰＩでは、スキャン画像ＳＩと比べて、写真オブジェクトＰＯＢが拡大されずに、テキストオブジェクトＴＯＢが拡大されて表現されている。従って、スキャン画像ＳＩ内の各文字のサイズが小さい場合でも、処理済み画像ＰＩでは、各文字のサイズが大きくなるので、ユーザは、処理済み画像ＰＩ内の各文字を容易に認識することができる。また、処理済み画像ＰＩ内の各文字列「Ａ〜Ｍ」のうちの先頭行の文字列「Ａ〜Ｆ」の文字数（即ち「６」）は、スキャン画像ＳＩ内の各文字列「Ａ〜Ｍ」のうちの先頭行の文字列「Ａ〜Ｅ」の文字数（即ち「５」）とは異なる。また、スキャン画像ＳＩと同様に、処理済み画像ＰＩ内の３個の文字「ＦＧＨ」は、修飾線によって修飾されている。
【００１７】
（画像処理サーバ５０の構成）
画像処理サーバ５０は、多機能機１０から受信されるスキャン画像データＳＩＤに対して画像処理を実行して、処理済み画像データＰＩＤを生成し、当該処理済み画像データＰＩＤを多機能機１０に送信する。画像処理サーバ５０は、ネットワークインターフェース５２と、制御部６０と、を備える。ネットワークインターフェース５２は、インターネット４に接続される。制御部６０は、ＣＰＵ６２とメモリ６４とを備える。ＣＰＵ６２は、メモリ６４に格納されているプログラム６６に従って、様々な処理（即ち図２等の処理）を実行するプロセッサである。
【００１８】
（画像処理サーバ５０によって実行される各処理；図２）
続いて、図２を参照して、画像処理サーバ５０のＣＰＵ６２によって実行される各処理の内容を説明する。ＣＰＵ６２は、インターネット４を介して、多機能機１０からスキャン画像データＳＩＤを受信する場合に、図２の処理を開始する。
【００１９】
Ｓ１００では、ＣＰＵ６２は、文字列解析処理（後述の図３参照）を実行して、スキャン画像ＳＩ内の３行の文字列「Ａ〜Ｍ」を含むテキストオブジェクト領域ＴＯＡを決定する。そして、ＣＰＵ６２は、テキストオブジェクト領域ＴＯＡ内の３個の帯状領域ＬＡを決定する。
【００２０】
Ｓ２００では、ＣＰＵ６２は、結合処理（後述の図６参照）を実行して、結合画像ＣＩを表わす結合画像データを生成する。結合画像ＣＩは、３個の帯状領域ＬＡに含まれる３行の文字列が横方向に沿って直線状に結合（即ち連結）された１行の結合文字列「Ａ〜Ｍ」を含む。
【００２１】
Ｓ３００では、ＣＰＵ６２は、目標領域決定処理を実行して、スキャン画像ＳＩ内において目標領域ＴＡを決定する。具体的には、ＣＰＵ６２は、まず、テキストオブジェクト領域ＴＯＡの左上の頂点に一致する左上の頂点を有するスペース領域を決定する。スペース領域は、テキストオブジェクト領域ＴＯＡのサイズ（即ち面積）よりも大きいサイズを有すると共に、他のオブジェクト領域（例えば写真オブジェクトＰＯＢを含むオブジェクト領域）に重複しない。そして、ＣＰＵ６２は、スペース領域のアスペクト比に等しいアスペクト比を有する目標領域ＴＡをスペース領域内に決定する。ここで、目標領域ＴＡのサイズ（即ち面積）は、テキストオブジェクト領域ＴＯＡのサイズ（即ち面積）のα倍以下の最大のサイズである。αは、１より大きい値であり、例えば１．４である。目標領域ＴＡの位置は、目標領域ＴＡの左上の頂点がテキストオブジェクト領域ＴＯＡの左上の頂点に一致するように設定される。目標領域ＴＡのアスペクト比は、通常、テキストオブジェクト領域ＴＯＡのアスペクト比とは異なる。スキャン画像ＳＩ内の目標領域ＴＡは、処理済み画像ＰＩ内の目標領域ＴＡ（Ｓ５００の処理済み画像ＰＩ参照）に一致する。従って、Ｓ３００の処理は、処理済み画像ＰＩ内の目標領域ＴＡを決定する処理に等しい。処理済み画像ＰＩ内の目標領域ＴＡは、拡大されて表現される文字列「Ａ〜Ｍ」が配置されるべき領域である。
【００２２】
Ｓ４００では、ＣＰＵ６２は、再配置処理（後述の図９参照）を実行する。まず、ＣＰＵ６２は、再配置領域ＲＡを決定する。そして、ＣＰＵ６２は、結合画像ＣＩを表わす結合画像データを利用して、複数個の文字「Ａ〜Ｍ」を再配置領域ＲＡ内に再配置することによって、再配置画像ＲＩを表わす再配置画像データを生成する。
【００２３】
Ｓ５００では、ＣＰＵ６２は、再配置画像ＲＩを表わす再配置画像データを拡大して、拡大画像データを生成する。そして、ＣＰＵ６２は、拡大画像データを利用して、処理済み画像ＰＩを表わす処理済み画像データＰＩＤを生成する。処理済み画像ＰＩでは各文字が拡大されて表現されるが、処理済み画像データＰＩＤは、スキャン画像データＳＩＤと同じ画素数を有する。
【００２４】
Ｓ６００では、ＣＰＵ６２は、インターネット４を介して、処理済み画像データＰＩＤを多機能機１０に送信する。この結果、処理済み画像データＰＩＤによって表わされる処理済み画像ＰＩが多機能機１０によって対象印刷シートに印刷される。
【００２５】
（文字列解析処理；図３）
続いて、図３を参照して、図２のＳ１００で実行される文字列解析処理の内容を説明する。Ｓ１１０では、ＣＰＵ６２は、スキャン画像データＳＩＤに対して二値化処理を実行して、スキャン画像データＳＩＤと同じ画素数を有する二値データＢＤ（図３では一部のみが示されている）を生成する。ＣＰＵ６２は、まず、スキャン画像データＳＩＤを利用して、スキャン画像ＳＩの背景色（本実施例では白色）を決定する。具体的には、ＣＰＵ６２は、スキャン画像データＳＩＤ内の複数個の画素の画素値の頻度の分布を示すヒストグラムを生成する。そして、ＣＰＵ６２は、当該ヒストグラムを利用して、最高の頻度を有する画素値（以下では「最高頻度画素値」と呼ぶ）を特定することによって、背景色を決定する。次いで、ＣＰＵ６２は、スキャン画像データＳＩＤ内の複数個の画素のそれぞれについて、当該画素の画素値が最高頻度画素値に一致する場合には、当該画素に対応する位置に存在する二値データＢＤ内の画素の画素値として「０」を割り当て、当該画素の画素値が最高頻度画素値に一致しない場合には、当該画素に対応する位置に存在する二値データＢＤ内の画素の画素値として「１」を割り当てる。この結果、二値データＢＤでは、テキストオブジェクトＴＯＢに含まれる各文字（例えば「Ａ」，「Ｂ」）及び修飾線を表わす各画素が画素値「１」を示し、写真オブジェクトＰＯＢを表わす各画素が画素値「１」を示し、それ以外の各画素（即ち背景を表わす画素）が画素値「０」を示す。なお、以下では、二値データＢＤ内の画素値「１」を示す画素、画素値「０」を示す画素のことを、それぞれ、「ＯＮ画素」、「ＯＦＦ画素」と呼ぶ。
【００２６】
Ｓ１２０では、ＣＰＵ６２は、Ｓ１１０で生成された二値データＢＤに対してラべリング処理を実行して、二値データＢＤと同じ画素数を有するラベルデータＬＤ（図３では一部のみが示されている）を生成する。具体的には、ＣＰＵ６２は、二値データＢＤ内の複数個のＯＮ画素を２個以上のＯＮ画素群に分けて、当該２個以上のＯＮ画素群のそれぞれに異なる画素値（例えば「１」、「２」等）を割り当てる。１個のＯＮ画素群は、互いに隣接する２個以上のＯＮ画素によって構成される。即ち、ＣＰＵ６２は、ラべリング処理の対象の１個のＯＮ画素に隣接する８個の隣接画素の中に１個以上のＯＮ画素が含まれる場合には、当該対象の１個のＯＮ画素と、８個の隣接画素のうちの１個以上のＯＮ画素と、を同じＯＮ画素群として区分する（即ちグループ化する）。ＣＰＵ６２は、ラべリング処理の対象のＯＮ画素を変えながら各ＯＮ画素のグループ化を順次実行することによって、２個以上のＯＮ画素群を決定する。例えば、図３のラベルデータＬＤでは、文字「Ａ」を表わす各ＯＮ画素（即ち１個のＯＮ画素群）に画素値「１」が割り当てられており、文字「Ｂ」を表わす各ＯＮ画素（即ち他の１個のＯＮ画素群）に画素値「２」が割り当てられている。
【００２７】
Ｓ１３０では、ＣＰＵ６２は、Ｓ１２０で生成されたラベルデータＬＤを利用して、上記の各ＯＮ画素群に対応する各単位領域を決定する。各単位領域は、対応する１個のＯＮ画素群に外接する矩形の領域である。ＣＰＵ６２は、例えば、図３のラベルデータＬＤを利用する場合には、画素値「１」が割り当てられているＯＮ画素群に外接する単位領域ＲＥ１（即ち文字「Ａ」に対応する単位領域）と、画素値「２」が割り当てられているＯＮ画素群に外接する単位領域ＲＥ１（即ち文字「Ｂ」に対応する単位領域）と、を決定する。より具体的には、ＣＰＵ６２は、スキャン画像ＳＩの中から、１３個の文字「Ａ」〜「Ｍ」に対応する１３個の単位領域と、１個の修飾線に対応する１個の単位領域と、１個の写真オブジェクトＰＯＢに対応する１個の単位領域と、を含む１５個の単位領域を決定する。上記の単位領域の決定は、当該単位領域の各頂点を構成する各画素の位置をメモリ６４に記憶することによって実行される。ただし、以下では、「領域（又は位置）の決定」に関する説明において、画素の位置をメモリ６４に記憶することに関する説明を省略する。
【００２８】
Ｓ１４０では、ＣＰＵ６２は、Ｓ１３０で決定された単位領域を利用して、スキャン画像ＳＩ内のオブジェクト領域を決定する。具体的には、ＣＰＵ６２は、１５個の単位領域を複数個の単位領域群に区分し、各単位領域群に対応する各オブジェクト領域を決定する。１個の単位領域群は、近傍に存在する１個以上の単位領域によって構成される。ＣＰＵ６２は、２個の単位領域の間の距離が所定の距離未満である場合に、当該２個の単位領域を同じ単位領域群に区分する。上記の所定の距離は、スキャン画像データＳＩＤの解像度に応じて予め決められている。例えば、本実施例では、スキャン画像データＳＩＤが３００ｄｐｉの解像度を有しており、３００ｄｐｉの解像度に対応する上記の所定の距離は、１０画素である。そして、図３のラベルデータＬＤでは、文字「Ａ」に対応する単位領域ＲＥ１と、文字「Ｂ」に対応する単位領域ＲＥ２と、の間の距離は、３画素である。従って、ＣＰＵ６２は、単位領域ＲＥ１と単位領域ＲＥ２とを同じ単位領域群に区分する。これにより、ＣＰＵ６２は、近傍に存在する各文字をグループ化することができる。より具体的には、ＣＰＵ６２は、スキャン画像ＳＩについて、テキストオブジェクトＴＯＢ内の１３個の文字「Ａ」〜「Ｍ」と１個の修飾線とに対応する１４個の単位領域を含む単位領域群と、１個の写真オブジェクトＰＯＢに対応する１個の単位領域を含む単位領域群と、を含む２個の単位領域群を決定する。そして、ＣＰＵ６２は、２個の単位領域群のそれぞれについて、当該単位領域群に外接する矩形の領域をオブジェクト領域として決定する。このように、ＣＰＵ６２は、ラベルデータＬＤ内のオブジェクト領域を決定することによって、スキャン画像ＳＩ内において、テキストオブジェクトＴＯＢ内の１３個の文字「Ａ」〜「Ｍ」と１個の修飾線とを含むオブジェクト領域ＴＯＡと、写真オブジェクトＰＯＢを含むオブジェクト領域ＰＯＡと、を含む２個のオブジェクト領域ＴＯＡ，ＰＯＡを決定する。
【００２９】
Ｓ１５０では、ＣＰＵ６２は、Ｓ１４０で決定された２個のオブジェクト領域ＴＯＡ，ＰＯＡのそれぞれについて、当該オブジェクト領域の種類を決定する。具体的には、ＣＰＵ６２は、各オブジェクト領域ＴＯＡ，ＰＯＡが、文字を含むテキストオブジェクト領域（以下では単に「テキスト領域」と呼ぶ）であるのか否かを判断する。ＣＰＵ６２は、まず、スキャン画像データＳＩＤのうち、オブジェクト領域ＴＯＡを表わす部分画像データを構成する複数個の画素の画素値の頻度の分布を示すヒストグラムを生成する。そして、ＣＰＵ６２は、当該ヒストグラムを利用して、頻度がゼロより高い画素値の数（即ち、オブジェクト領域ＴＯＡで利用されている色の数）を算出する。ＣＰＵ６２は、算出済みの数が所定数（例えば「１０」）未満である場合には、オブジェクト領域ＴＯＡがテキスト領域であると判断し、算出済みの数が上記の所定数以上である場合には、オブジェクト領域ＴＯＡがテキスト領域でないと判断する。オブジェクト領域ＴＯＡは、黒色の文字「Ａ」〜「Ｍ」と、黒色の修飾線と、白色の背景と、を含む。従って、オブジェクト領域ＴＯＡに対応するヒストグラムでは、通常、黒色を示す画素値と白色を示す画素値とを含む２個の画素値のみの頻度がゼロより高い。このために、ＣＰＵ６２は、オブジェクト領域ＴＯＡがテキスト領域であると判断する。一方、例えば、写真オブジェクトＰＯＢでは、通常、１０色以上の色が利用されている。従って、オブジェクト領域ＰＯＡに対応するヒストグラムでは、通常、頻度がゼロより高い画素値の数が上記の所定数以上になる。このために、ＣＰＵ６２は、オブジェクト領域ＰＯＡが、テキスト領域ではなく、写真オブジェクト領域であると判断する。
【００３０】
Ｓ１６０では、ＣＰＵ６２は、Ｓ１５０で決定されたテキスト領域ＴＯＡに対して帯状領域決定処理（後述の図４参照）を実行して、テキスト領域ＴＯＡ内の各帯状領域を決定する。ただし、ＣＰＵ６２は、写真オブジェクト領域ＰＯＡに対して帯状領域決定処理を実行しない。
【００３１】
Ｓ１８０では、ＣＰＵ６２は、Ｓ１６０で決定された各帯状領域に対して修飾物解析処理（後述の図５参照）を実行して、各帯状領域が、文字列を含む文字列帯状領域であるのか、修飾線を含む修飾物帯状領域であるのか、を決定する。Ｓ１８０が終了すると、図３の処理が終了する。
【００３２】
（帯状領域決定処理；図４）
続いて、図４を参照して、図３のＳ１６０で実行される帯状領域決定処理の内容を説明する。以下では、スキャン画像ＳＩ内のテキスト領域ＴＯＡを例として、図４の処理の内容を説明する。スキャン画像ＳＩ内に複数個のテキストオブジェクトが含まれる場合には、テキストオブジェクト毎（即ちテキスト領域毎）に図４の処理が実行される。
【００３３】
Ｓ１６２では、ＣＰＵ６２は、テキスト領域ＴＯＡに対応する射影ヒストグラムを生成する。当該射影ヒストグラムは、二値データＢＤ（Ｓ１１０参照）を構成する複数個の画素のうち、テキスト領域ＴＯＡを表わす各画素を横方向に射影する場合におけるＯＮ画素（即ち「１」を示す画素）の頻度の分布を示す。換言すると、当該射影ヒストグラムは、スキャン画像ＳＩＤを構成する複数個の画素のうち、テキスト領域ＴＯＡを表わす各画素を横方向に射影する場合における文字列及び修飾線を構成する画素（即ち黒色を表わす画素）の頻度の分布を示す。当該射影ヒストグラムでは、文字列及び修飾線が、頻度がゼロより高い範囲（以下では「高頻度範囲」と呼ぶ）で表わされる。また、当該射影ヒストグラムでは、２行の文字列の間の行間（例えば「Ａ〜Ｅ」と「Ｆ〜Ｊ」の間の行間）、及び、文字列と修飾線との間の行間（例えば「Ｆ〜Ｊ」と修飾線の間の行間）が、頻度がゼロである範囲で表わされる。
【００３４】
Ｓ１６４では、ＣＰＵ６２は、Ｓ１６２で生成された射影ヒストグラムを利用して、１個以上の高頻度範囲に対応する１個以上の帯状領域を決定する。１個の帯状領域の縦方向の長さ（即ち縦方向の画素数）は、射影ヒストグラムにおける当該帯状領域に対応する高頻度範囲の縦方向の長さに等しい。また、１個の帯状領域の横方向の長さ（即ち横方向の画素数）は、テキスト領域ＴＯＡの横方向の長さに等しい。この結果、ＣＰＵ６２は、テキスト領域ＴＯＡの中から、文字列「Ａ〜Ｅ」を含む帯状領域ＬＡ１１と、文字列「Ｆ〜Ｊ」を含む帯状領域ＬＡ１２と、修飾線を含む帯状領域ＬＡ１３と、文字列「Ｋ〜Ｍ」を含む帯状領域ＬＡ１４と、を含む４個の帯状領域ＬＡ１１〜ＬＡ１４を決定する。
【００３５】
続いて、ＣＰＵ６２は、Ｓ１６６〜Ｓ１７４の処理を実行して、各帯状領域ＬＡ１１〜ＬＡ１４に対応する各基準位置を決定する。基準位置は、図２のＳ２００の結合処理において、各帯状領域に含まれる各文字列を結合するための基準となる位置である。
【００３６】
Ｓ１６６では、ＣＰＵ６２は、Ｓ１６４で決定された４個の帯状領域ＬＡ１１〜ＬＡ１４のうちの１個の帯状領域（以下では「対象帯状領域」と呼ぶ）を処理対象として決定する。以下では、帯状領域ＬＡ１１が対象帯状領域として決定される場合を例として説明する。
【００３７】
Ｓ１６８では、ＣＰＵ６２は、対象帯状領域ＬＡ１１の縦方向の全範囲ＡＲの中から、縦方向の３画素分の評価範囲を設定する。対象帯状領域ＬＡ１１に関する１回目のＳ１６８では、ＣＰＵ６２は、３画素のうちの最も上の画素が対象帯状領域ＬＡ１１の縦方向の全範囲ＡＲの中間位置に存在するように、１回目の評価範囲を設定する。対象帯状領域ＬＡ１１に関する２回以降のＳ１６８では、ＣＰＵ６２は、前回の評価範囲から１画素だけ下側にずれるように、今回の評価範囲を設定する。なお、変形例では、評価範囲は、縦方向の３画素分の範囲でなくてもよく、縦方向の１画素分又は２画素分の範囲であってもよいし、縦方向の４画素分以上の範囲であってもよい。
【００３８】
Ｓ１７０では、ＣＰＵ６２は、今回の評価範囲について、合計下辺長さを算出する。合計下辺長さは、対象帯状領域ＬＡ１１内の５個の文字「Ａ」〜「Ｅ」に対応する５個の単位領域（図３のＳ１３０で決定済み）のうちの１個以上の単位領域の下辺ＸＡ〜ＸＥが今回の評価範囲内に存在する場合に、当該１個以上の単位領域の下辺の長さの和である。図４の例では、１回目及び２回目の評価範囲では、１個の単位領域の下辺も存在しないので、ＣＰＵ６２は、合計下辺長さとして「０」を決定する。そして、ｐ回目の評価範囲では、５個の下辺ＸＡ〜ＸＥの全てが存在するので、ＣＰＵ６２は、５個の下辺ＸＡ〜ＸＥの長さの和である合計下辺長さとして「１」以上の値を算出する。
【００３９】
Ｓ１７２では、ＣＰＵ６２は、対象帯状領域ＬＡ１１の全ての評価範囲について、Ｓ１６８及びＳ１７０の処理が終了したのか否かを判断する。具体的には、ＣＰＵ６２は、対象帯状領域ＬＡ１１の縦方向の全範囲ＡＲの下端と、前回の評価範囲（例えばｐ回目の評価範囲）の下端と、が一致する場合には、全ての評価範囲について処理が終了したと判断して（Ｓ１７２でＹＥＳ）、Ｓ１７４に進む。一方、ＣＰＵ６２は、全ての評価範囲について処理が終了していないと判断する場合（Ｓ１７２でＮＯ）には、Ｓ１６８に戻り、評価範囲を新たに設定する。
【００４０】
Ｓ１７４では、ＣＰＵ６２は、複数個の評価範囲について算出された複数個の合計下辺長さに基づいて、対象帯状領域ＬＡ１１の基準位置を決定する。具体的には、ＣＰＵ６２は、まず、複数個の評価範囲の中から、複数個の合計下辺長さのうちの最大の合計下辺長さが算出された１個の評価範囲（例えばｐ回目の評価範囲）を選択する。なお、ＣＰＵ６２は、複数個の評価範囲の中に、最大の合計下辺長さが算出された２個以上の評価範囲が存在する場合には、当該２個以上の評価範囲のうち、最初に設定された評価範囲を選択する。そして、ＣＰＵ６２は、選択済みの評価範囲の縦方向の中間位置を基準位置として決定する。即ち、図４の例では、対象帯状領域ＬＡ１１の縦方向において、５個の下辺ＸＡ〜ＸＥの近傍の位置、即ち、対象帯状領域ＬＡ１１の最下端の近傍の位置が、基準位置として決定される。
【００４１】
Ｓ１７６では、ＣＰＵ６２は、全ての帯状領域ＬＡ１１〜ＬＡ１４について、Ｓ１６６〜Ｓ１７４の処理が終了したのか否かを判断する。ＣＰＵ６２は、処理が終了していないと判断する場合（Ｓ１７６でＮＯ）には、Ｓ１６６において、未処理の帯状領域（例えばＬＡ１２）を処理対象として決定して、Ｓ１６８以降の各処理を再び実行する。この結果、４個の帯状領域ＬＡ１１〜ＬＡ１４に対応する４個の基準位置が決定される。そして、ＣＰＵ６２は、処理が終了したと判断する場合（Ｓ１７６でＹＥＳ）には、図４の処理を終了する。
【００４２】
上述したように、本実施例では、基準位置を決定するために、各文字の単位領域の下辺の長さに着目している。従って、対象帯状領域ＬＡ１１内の縦方向の全範囲ＡＲのうちの比較的に上側の範囲では、通常、合計下辺長さが最大にならない。このために、Ｓ１６８では、対象帯状領域ＬＡ１１の縦方向の全範囲ＡＲの中間位置に１回目の評価範囲が設定され、その後、評価範囲を下側に移動させる。これにより、Ｓ１６８で設定される評価範囲の数を減らすことができ、この結果、基準位置を迅速に決定することができる。
【００４３】
また、図４に示される他の例では、Ｓ１６６で処理対象として決定される対象帯状領域は、小文字のアルファベットである６個の文字「ｄ」〜「ｉ」を含む。文字「ｉ」以外の各文字については、１個の単位領域が決定されるが、文字「ｉ」については、２個の単位領域が決定される。文字「ｇ」の下辺Ｘｇは、他の５個の文字の下辺Ｘｄ〜Ｘｆ，Ｘｈ，Ｘｉ２よりも下側に存在している。この例では、下辺Ｘｉ１を含む評価範囲と、下辺Ｘｄ〜Ｘｆ，Ｘｈ，Ｘｉ２を含む評価範囲と、下辺Ｘｇを含む評価範囲と、のそれぞれについて、１以上の合計下辺長さが算出される。そして、下辺Ｘｄ〜Ｘｆ，Ｘｈ，Ｘｉ２を含む評価範囲について算出される合計下辺長さが最大になるので、当該評価範囲の中間位置が基準位置として決定される。このように、本実施例では、合計下辺長さが最大である評価範囲に基づいて基準位置が決定され、その基準位置に基づいて２行以上の文字列が結合される（図２のＳ２００の結合画像ＣＩ参照）。このために、ユーザが、処理済み画像ＰＩ（図２のＳ５００参照）内の文字列を構成する複数個の文字の並びを不自然に感じるのを抑制することができる。
【００４４】
（修飾物解析処理；図５）
続いて、図５を参照して、図３のＳ１８０で実行される修飾物解析処理の内容を説明する。以下では、スキャン画像ＳＩ内のテキスト領域ＴＯＡを例として、図５の処理の内容を説明する。スキャン画像ＳＩ内に複数個のテキストオブジェクトが含まれる場合には、テキストオブジェクト毎（即ちテキスト領域毎）に図５の処理が実行される。
【００４５】
Ｓ１８１では、ＣＰＵ６２は、テキスト領域ＴＯＡの４個の帯状領域ＬＡ１１〜ＬＡ１４の縦方向に沿った４個の長さｈ１１〜ｈ１４を特定し、次いで、４個の長さｈ１１〜ｈ１４の平均値ｈａを算出する。
【００４６】
Ｓ１８２では、ＣＰＵ６２は、Ｓ１８１で算出された平均値ｈａに１／２を乗算して、閾値Ｔｈを算出する。これにより、ＣＰＵ６２は、４個の長さｈ１１〜ｈ１４に応じた閾値Ｔｈを設定することができる。閾値Ｔｈは、後述のＳ１８４の判断で利用される。なお、変形例では、閾値Ｔｈは、平均値ｈａに等しい値であってもよいし、平均値ｈａの１／３又は２／３であってもよい。即ち、閾値Ｔｈは、平均値ｈａ以下の値であればよい。
【００４７】
Ｓ１８３では、ＣＰＵ６２は、４個の帯状領域ＬＡ１１〜ＬＡ１４のうちの１個の帯状領域（以下では「対象帯状領域」と呼ぶ）を処理対象として決定する。
【００４８】
Ｓ１８４では、ＣＰＵ６２は、対象帯状領域の縦方向の長さが、Ｓ１８２で算出された閾値Ｔｈ以下であるのか否かを判断する。これにより、ＣＰＵ６２は、対象帯状領域が、文字列を含む文字列帯状領域であるのか、修飾線を含む修飾物帯状領域であるのか、を判断することができる。文字列帯状領域（例えばＬＡ１１，ＬＡ１２，ＬＡ１４）の縦方向の長さは、通常、閾値Ｔｈよりも大きい。従って、ＣＰＵ６２は、対象帯状領域の縦方向の長さが閾値Ｔｈよりも大きいと判断する場合（Ｓ１８４でＮＯ）には、対象帯状領域が文字列帯状領域であると判断する。また、修飾物帯状領域（例えばＬＡ１３）の縦方向の長さは、通常、閾値Ｔｈ以下である。従って、ＣＰＵ６２は、対象帯状領域の縦方向の長さが閾値Ｔｈ以下であると判断する場合（Ｓ１８４でＹＥＳ）には、対象帯状領域が修飾物帯状領域であると判断する。
【００４９】
ＣＰＵ６２は、対象帯状領域が文字列帯状領域であると判断する場合（Ｓ１８４でＮＯ）には、Ｓ１９５をスキップしてＳ１９８に進む。一方、ＣＰＵ６２は、対象帯状領域が修飾物帯状領域であると判断する場合（Ｓ１８４でＹＥＳ）には、Ｓ１９５において、対象帯状領域と上行の帯状領域とを結合する。上行の帯状領域は、対象帯状領域の上側において、対象帯状領域の隣に存在する帯状領域である。具体的には、ＣＰＵ６２は、対象帯状領域と上行の帯状領域との双方に外接する領域を新たな帯状領域として決定する。また、ＣＰＵ６２は、新たな帯状領域の基準位置として、対象帯状領域の基準位置ではなく、上行の帯状領域の基準位置を利用する。例えば、ＣＰＵ６２は、対象帯状領域である帯状領域ＬＡ１３と、上行の帯状領域である帯状領域ＬＡ１２と、を結合して、新たな帯状領域ＬＡ１２’を決定する。この際に、ＣＰＵ６２は、新たな帯状領域ＬＡ１２’の基準位置として、上行の帯状領域ＬＡ１２の基準位置を利用し、対象帯状領域ＬＡ１３の基準位置を利用しない（即ち、対象帯状領域ＬＡ１３とその基準位置をメモリ６４から消去する）。
【００５０】
上述したように、本実施例では、ＣＰＵ６２は、対象帯状領域が修飾物帯状領域ＬＡ１３であると判断する場合には、修飾物帯状領域ＬＡ１３と文字列帯状領域ＬＡ１２とを結合して、新たな帯状領域ＬＡ１２’を決定する。これにより、文字列「Ｆ〜Ｊ」と修飾線との双方が１個の帯状領域ＬＡ１２’内に含まれることになる。この結果、以降の処理では、ＣＰＵ６２は、文字列「Ｆ〜Ｊ」と修飾線とを分けて扱うのではなく、文字列「Ｆ〜Ｊ」と修飾線とを１行の修飾文字列として扱うことになる。なお、以下では、帯状領域ＬＡ１２’のことを「修飾文字列帯状領域」と呼ぶことがある。また、修飾文字列帯状領域ＬＡ１２’では、修飾物帯状領域ＬＡ１３の基準位置ではなく、文字列帯状領域ＬＡ１２の基準位置が利用される。そして、その基準位置に基づいて２行以上の文字列が結合されるので（図２のＳ２００の結合画像ＣＩ参照）、ユーザが、処理済み画像ＰＩ（図２のＳ５００参照）内の文字列を構成する複数個の文字の並びを不自然に感じるのを抑制することができる。
【００５１】
Ｓ１９８では、ＣＰＵ６２は、対象テキスト領域ＴＯＡに含まれる全ての帯状領域ＬＡ１１〜ＬＡ１４について、Ｓ１８３〜Ｓ１９５の処理が終了したのか否かを判断する。ＣＰＵ６２は、処理が終了していないと判断する場合（Ｓ１９８でＮＯ）には、Ｓ１８３において、未処理の帯状領域（例えばＬＡ１２）を処理対象として決定して、Ｓ１８４以降の各処理を再び実行する。そして、ＣＰＵ６２は、処理が終了したと判断する場合（Ｓ１９８でＹＥＳ）には、図５の処理を終了する。図５の例では、４個の帯状領域ＬＡ１１〜ＬＡ１４に基づいて、３個の帯状領域ＬＡ１１，ＬＡ１２’，ＬＡ１４が決定される。
【００５２】
（結合処理；図６）
続いて、図６を参照して、図２のＳ２００で実行される結合処理の内容を説明する。Ｓ２１０では、ＣＰＵ６２は、スキャン画像ＳＩ内の１個以上のテキスト領域のうちの１個のテキスト領域（以下では「対象テキスト領域」と呼ぶ）を処理対象として決定する。以下では、テキスト領域ＴＯＡが対象テキスト領域として決定される場合を例として説明する。
【００５３】
Ｓ２２０では、ＣＰＵ６２は、対象テキスト領域ＴＯＡに含まれる３行の文字列「Ａ〜Ｍ」が結合されている結合画像ＣＩを表わす結合画像データを生成する。具体的には、ＣＰＵ６２は、まず、スキャン画像データＳＩＤの中から、テキスト領域ＴＯＡについて決定された３個の帯状領域ＬＡ１１，ＬＡ１２’，ＬＡ１４（図５参照）を表わす３個の部分画像データを取得する。そして、ＣＰＵ６２は、図６の（１）〜（３）に示されるように、各部分画像データを利用して、結合画像データを生成する。以下では、（１）〜（３）の内容を詳しく説明する。
【００５４】
（１）に示されるように、ＣＰＵ６２は、最も上の帯状領域ＬＡ１１を表わす第１の部分画像データの後端と、上から２番目の帯状領域ＬＡ１２’を表わす第２の部分画像データの先端と、を結合して、中間画像ＭＩ１を表わす中間画像データを生成する。中間画像ＭＩ１は、帯状領域ＬＡ１１内の文字列「Ａ〜Ｅ」と、帯状領域ＬＡ１２’内の文字列「Ｆ〜Ｊ」と、が結合された文字列「Ａ〜Ｊ」を含む。この際に、ＣＰＵ６２は、結合される２行の文字列の間に横方向の所定の長さの余白（即ち「Ｅ」と「Ｆ」の間の余白）が形成されるように、当該余白を表わす画素、より具体的には、スキャン画像ＳＩ内の背景色を有する画素を補充して、中間画像データを生成する。即ち、ＣＰＵ６２は、当該余白を表わす画素を介して、第１及び第２の部分画像データを結合する。さらに、ＣＰＵ６２は、２個の帯状領域ＬＡ１１，ＬＡ１２’について決定された２個の基準位置（図４のＳ１７４参照）が縦方向の同じ位置に存在するように、第１及び第２の部分画像データを結合する。帯状領域ＬＡ１２’が文字列「Ｆ〜Ｊ」のみならず装飾線を含むので、帯状領域ＬＡ１２’の縦方向の長さは、帯状領域ＬＡ１１の縦方向の長さよりも大きい。従って、中間画像ＭＩ１では、帯状領域ＬＡ１１に対応する部分（即ち「Ａ〜Ｅ」）と、帯状領域ＬＡ１２’に対応する部分（即ち「Ｆ〜Ｊ」）と、の間に段差が形成されている。
【００５５】
次いで、（２）に示されるように、ＣＰＵ６２は、（１）の中間画像データの後端と、最も下の帯状領域ＬＡ１４を表わす第３の部分画像データの先端と、を結合して、中間画像ＭＩ２を表わす中間画像データを生成する。（１）と同様に、ＣＰＵ６２は、所定の余白を表わす画素を介して、（１）の中間画像データと第３の部分画像データとを結合する。また、ＣＰＵ６２は、３個の帯状領域ＬＡ１１，ＬＡ１２’，ＬＡ１４について決定された３個の基準位置が縦方向の同じ位置に存在するように、（１）の中間画像データと第３の部分画像データとを結合する。中間画像ＭＩ２では、帯状領域ＬＡ１２’に対応する部分（即ち「Ｆ〜Ｊ」）と、帯状領域ＬＡ１４に対応する部分（即ち「Ｋ〜Ｍ」）と、の間に段差が形成されている。
【００５６】
最後に、（３）に示されるように、ＣＰＵ６２は、中間画像ＭＩ２に外接する矩形形状を有する結合画像ＣＩが形成されるように、中間画像ＭＩ２を表わす中間画像データに余白領域を表わす画素、より具体的には、スキャン画像ＳＩ内の背景色を有する画素を補充する。これにより、帯状領域ＬＡ１１に対応する部分（即ち「Ａ〜Ｅ」）と帯状領域ＬＡ１２’に対応する部分（即ち「Ｆ〜Ｊ」）との間の段差、及び、帯状領域ＬＡ１２’に対応する部分（即ち「Ｆ〜Ｊ」）と帯状領域ＬＡ１４に対応する部分（即ち「Ｋ〜Ｍ」）との間の段差がなくなり、矩形形状を有する結合画像ＣＩを表わす結合画像データが完成する。
【００５７】
なお、仮に、帯状領域ＬＡ１２と帯状領域ＬＡ１３とが結合されていなければ（即ち図５の処理が実行されなければ）、Ｓ２２０において、以下の処理が実行され得る。即ち、まず、帯状領域ＬＡ１１内の文字列「Ａ〜Ｅ」と帯状領域ＬＡ１２内の文字列「Ｆ〜Ｊ」とが横方向に沿って直線状に並ぶように２行の文字列が結合され、その後、文字列「Ａ〜Ｊ」と帯状領域ＬＡ１３内の修飾線とが横方向に沿って直線状に並ぶように、文字列と修飾線とが結合される。この場合、文字列「Ａ〜Ｊ 」が得られる。そして、文字列「Ａ〜Ｊ 」と文字列「Ｋ〜Ｍ」とが横方向に沿って直線状に並ぶように、２行の文字列が結合される。この結果、最終的に得られる結合文字列は、「Ａ〜Ｊ Ｋ〜Ｍ」である。即ち、文字列「ＦＧＨ」が修飾線によって修飾されていない結合文字列が得られる。これに対し、本実施例では、帯状領域ＬＡ１２と帯状領域ＬＡ１３とが結合されて、１個の修飾文字列帯状領域ＬＡ１２’が決定される（図５のＳ１９５）。これにより、ＣＰＵ６２は、帯状領域ＬＡ１２内の文字列「Ｆ〜Ｊ」と帯状領域ＬＡ１３内の修飾線とを１行の修飾文字列として扱って、Ｓ２２０の結合を実行することができる。この結果、文字列「ＦＧＨ」が修飾線によって修飾されている結合文字列「Ａ〜Ｍ」を含む結合画像ＣＩを表わす結合画像データが生成される。
【００５８】
なお、図５の例では、英語の文字列に修飾線が付されている状況が想定されているが、英語ではなく、日本語、中国語等の他の言語に修飾線が付されている場合でも、文字列と修飾線とが１行の修飾文字列として扱われて、文字列が修飾線によって修飾されている文字列を表わす結合画像データが生成される。
【００５９】
Ｓ２３０では、ＣＰＵ６２は、Ｓ２２０で生成された結合画像データを利用して分断候補位置決定処理（後述の図７参照）を実行して、結合画像データを分断するための候補の位置を決定する。
【００６０】
Ｓ２５０では、ＣＰＵ６２は、スキャン画像ＳＩ内の全てのテキスト領域について、Ｓ２１０〜Ｓ２３０の処理が終了したのか否かを判断する。ＣＰＵ６２は、処理が終了していないと判断する場合（Ｓ２５０でＮＯ）には、Ｓ２１０において、未処理のテキスト領域を処理対象として決定する。そして、ＣＰＵ６２は、処理が終了したと判断する場合（Ｓ２５０でＹＥＳ）には、図６の処理を終了する。
【００６１】
（分断候補位置決定処理；図７）
続いて、図７を参照して、図６のＳ２３０で実行される分断候補位置決定処理の内容を説明する。以下では、英語のセンテンス「Ｉ  ｓａｉｄ  Ｉ  ｈａｖｅ  ａ  ｄｒｅａｍ．」を含む結合画像ＣＩを表わす結合画像データが利用される場合を例として、処理の内容を説明する。当該センテンスのうち、「Ｉ  ｓａｉｄ」には修飾線が付されておらず、「Ｉ  ｈａｖｅ  ａ  ｄｒｅａｍ．」には修飾線が付されている。
【００６２】
Ｓ２３４では、ＣＰＵ６２は、結合画像データに対して二値化処理を実行する。当該二値化処理の内容は、図３のＳ１１０と同様である。
【００６３】
Ｓ２３６では、ＣＰＵ６２は、Ｓ２３４で生成された二値データを利用して、結合画像データに対応する射影ヒストグラムを生成する。当該射影ヒストグラムは、二値データを構成する各画素を縦方向に射影する場合におけるＯＮ画素（即ち「１」を示す画素）の頻度の分布を示す。当該射影ヒストグラムでは、各文字及び修飾線が、頻度がゼロより高い範囲で表わされ、２個の文字の間の余白部分（例えば、「Ｉ  ｓａｉｄ」において、「Ｉ」と「ｓ」の間の余白部分、「ｓ」と「ａ」の間の余白部分等）が、頻度がゼロである範囲で表わされる。
【００６４】
Ｓ２３８では、ＣＰＵ６２は、結合画像ＣＩ内において、文字構成画素が存在する領域と、文字構成画素が存在しない領域と、を区別するための閾値を設定する。具体的には、ＣＰＵ６２は、原則として、ゼロを閾値として設定する。ただし、ＣＰＵ６２は、Ｓ２３６で生成された射影ヒストグラムの中に１個以上の連続範囲が存在する場合には、１個以上の連続範囲を選択して、選択済みの１個以上の連続範囲のそれぞれについて、当該連続範囲内の頻度の最小値（即ちゼロより大きい値）を閾値として決定する。即ち、ＣＰＵ６２は、連続範囲についてゼロより大きい値を閾値として決定し、連続範囲以外の範囲についてゼロを閾値として決定する。連続範囲は、例えば、センテンスの中に修飾線が含まれる場合に、当該修飾線を表わす範囲である。修飾線がＯＮ画素で表わされるので、射影ヒストグラム内の修飾線に対応する範囲は、頻度がゼロより大きくなり、かつ、横方向に比較的に長くなる。このために、本実施例では、ＣＰＵ６２は、頻度がゼロより高く、かつ、所定の長さ以上の横方向の長さを有する範囲を、連続範囲として選択する。上記の所定の長さは、スキャン画像データＳＩＤの解像度に応じて予め決定されている。例えば、スキャン画像データＳＩＤの解像度が３００ｄｐｉである場合には、上記の所定の長さは５０画素であり、解像度が６００ｄｐｉである場合には、上記の所定の長さは１００画素である。上記の所定の長さは、装飾線の存在を特定可能な長さであればどのような値であってもよいが、例えば、１個の文字の横方向の長さよりも大きい値である。ここで決定される閾値は、後述のＳ２４０及びＳ２４４で利用される。
【００６５】
Ｓ２４０では、ＣＰＵ６２は、Ｓ２３６で生成された射影ヒストグラムと、Ｓ２３８で決定された閾値と、を利用して、１個の中間余白領域を処理対象として決定する。中間余白領域は、２個の文字の間の余白部分に対応する領域である。具体的には、中間余白領域は、Ｓ２３８で決定された閾値よりも高い頻度を有する２個の領域に挟まれた領域であって、当該閾値以下の頻度を有する領域である。例えば、図７の結合画像ＣＩでは、修飾線が付されていない文字列「Ｉ  ｓａｉｄ」に対応する領域について、頻度ゼロが閾値として決定される。この場合、例えば、ゼロより高い頻度を有する２個の領域（即ち「Ｉ」の領域と「ｓ」の領域）に挟まれた領域ＢＡ１（即ち頻度ゼロである領域ＢＡ１）が、中間余白領域である。１回目のＳ２４０では、ＣＰＵ６２は、最も先端側（即ち左側）に存在する１個の中間余白領域（図７の結合画像ＣＩでは領域ＢＡ１）を処理対象として決定する。そして、２回目以降のＳ２４０では、ＣＰＵ６２は、前回の処理対象の中間余白領域の右側に存在する１個以上の中間余白領域のうち、最も先端側に存在する１個の中間余白領域（例えば「ｓａｉｄ」のうちの「ｓ」と「ａ」の間の領域）を今回の処理対象として決定する。
【００６６】
Ｓ２４２では、ＣＰＵ６２は、処理対象の中間余白領域の横方向の長さがｈ／４未満であるのか否かを判断する。ここで、「ｈ」は、結合画像ＣＩの縦方向の長さ（即ち縦方向の画素数）である。
【００６７】
ＣＰＵ６２は、処理対象の中間余白領域の横方向の長さがｈ／４以上であると判断する場合（Ｓ２４２でＮＯ）、換言すれば、当該中間余白領域が比較的に大きいと判断する場合には、Ｓ２４６において、当該中間余白領域の右端を分断候補位置として決定する。このように、１個の文字内の位置ではなく、余白領域が分断候補位置として決定されるので、１個の文字（例えば「Ａ」）が分断されてしまうことを抑制することができる。また、中間余白領域の右端が分断候補位置として決定される理由は、以下のとおりである。例えば、１行の文字列に含まれる２個の中間余白領域のそれぞれの右端で当該文字列が分断されて、縦方向に沿って並ぶ３行目の文字列が再配置される状況を想定する。この場合、２行目及び３行目の文字列の左側に余白が形成されないので、２行目及び３行目の文字列の先端を揃えることができる。このように、２行目以降の文字列の先端を揃えることができるので、再配置される複数行の文字列の見た目を美しくすることができる。なお、変形例では、Ｓ２４６において、ＣＰＵ６２は、中間余白領域の右端以外の位置（例えば、左端、中間位置等）を分断候補位置として決定してもよい。Ｓ２４６が終了すると、Ｓ２４８に進む。
【００６８】
一方、ＣＰＵ６２は、処理対象の中間余白領域の横方向の長さがｈ／４未満であると判断する場合（Ｓ２４２でＹＥＳ）、換言すれば、当該中間余白領域が比較的に小さいと判断する場合には、Ｓ２４４において、左側隣接領域と右側隣接領域との少なくとも一方の横方向の長さがｈ／２未満であるのか否かを判断する。左側（又は右側）隣接領域は、処理対象の中間余白領域の左側（又は右側）で当該中間余白領域に隣接する領域であって、Ｓ２３８で決定された閾値よりも高い頻度を有する領域である。例えば、「ｓａｉｄ」のうちの「ｓ」と「ａ」との間の中間余白領域では、「ｓ」に対応する領域、「ａ」に対応する領域が、それぞれ、左側隣接領域、右側隣接領域である。
【００６９】
ＣＰＵ６２は、左側隣接領域と右側隣接領域との双方の横方向の長さがｈ／２以上であると判断する場合（Ｓ２４４でＮＯ）、例えば、左側隣接領域と右側隣接領域との双方に比較的に大きな文字（例えば、アルファベットの大文字、漢字、日本語の仮名等）が存在する場合には、Ｓ２４６において、中間余白領域の右端を分断候補位置として決定する。一方、ＣＰＵ６２は、左側隣接領域と右側隣接領域との少なくとも一方の横方向の長さがｈ／２未満であると判断する場合（Ｓ２４４でＹＥＳ）、例えば、左側隣接領域と右側隣接領域との少なくとも一方に比較的に小さな文字（例えばアルファベットの小文字）又は記号（例えば、カンマ、ピリオド、引用符号等）が存在する場合には、Ｓ２４６を実行せずに、Ｓ２４８に進む。即ち、ＣＰＵ６２は、今回の処理対象の中間余白領域を分断候補位置として決定しない。
【００７０】
Ｓ２４８では、ＣＰＵ６２は、結合画像ＣＩに含まれる全ての中間余白領域について、Ｓ２４０〜Ｓ２４６の処理が終了したのか否かを判断する。ＣＰＵ６２は、処理が終了していないと判断する場合（Ｓ２４８でＮＯ）には、Ｓ２４０において、未処理の中間余白領域を処理対象として決定して、Ｓ２４２以降の各処理を再び実行する。そして、ＣＰＵ６２は、処理が終了したと判断する場合（Ｓ２４８でＹＥＳ）には、図７の処理を終了する。
【００７１】
（分断位置決定処理の具体例；図８）
続いて、図８を参照して、図７の分断位置決定処理の具体例を説明する。ケースＡの結合画像は、図７の結合画像ＣＩと同じものである。「Ｉ  ｓａｉｄ」のうちの「Ｉ」と「ｓ」の間の領域ＢＡ１が１個目の処理対象の中間余白領域として決定される（Ｓ２４０）。中間余白領域ＢＡ１は、単語「Ｉ」と単語「ｓａｉｄ」の間の余白（いわゆるスペース）に相当し、通常、ｈ／４以上の横方向の長さを有する（Ｓ２４２でＮＯ）。従って、中間余白領域ＢＡ１が分断候補位置として決定される（Ｓ２４６）。２個の英単語「Ｉ」，「ｓａｉｄ」の間の余白で文字列が分断されて改行されても、ユーザが分断後の各文字列を読み難いと感じる可能性が低いので、本実施例では、中間余白領域ＢＡ１が分断候補位置として決定される。
【００７２】
次いで、「Ｉ  ｓａｉｄ」のうちの「ｓ」と「ａ」の間の領域ＢＡ２が２個目の処理対象の中間余白領域として決定される（Ｓ２４０）。中間余白領域ＢＡ２は、１個の英単語「ｓａｉｄ」を構成する２個の文字（即ち「ｓ」と「ａ」）の間の余白に相当し、通常、ｈ／４未満の横方向の長さを有する（Ｓ２４２でＹＥＳ）。また、中間余白領域ＢＡ２の左側隣接領域、右側隣接領域は、それぞれ、「ｓａｉｄ」のうちの「ｓ」、「ａ」に相当し、通常、ｈ／２未満の横方向の長さを有する（Ｓ２４４でＹＥＳ）。従って、中間余白領域ＢＡ２が分断候補位置として決定されない。１個の英単語（例えば「ｓａｉｄ」）を構成する２個の文字（例えば「ｓ」と「ａ」）の間の余白で文字列が分断されて改行されると、ユーザが分断後の各文字列を読み難いと感じる可能性が高いので、本実施例では、中間余白領域ＢＡ２が分断候補位置として決定されない。
【００７３】
上記と同様に、３個目以降の各中間余白領域についても、当該中間余白領域が分断候補位置であるのか否かが決定される。また、修飾線が付されている文字列「Ｉ  ｈａｖｅ  ａ  ｄｒｅａｍ．」に対応する連続範囲については、ゼロより大きい閾値以下の頻度を有する領域（例えば「Ｉ」と「ｈ」の間の領域）が中間余白領域として決定される（Ｓ２４０）。また、当該連続範囲については、当該閾値よりも大きい頻度を有する領域（例えば、「Ｉ」に対応する領域、「ｈ」に対応する領域等）が、隣接領域として決定される（Ｓ２４４）。このように、本実施例では、修飾線に対応する連続範囲について、ゼロより大きい閾値が決定されるので、修飾線を考慮して、中間余白領域と隣接領域とを適切に決定することができる。ケースＡでは、結果として、センテンス「Ｉ  ｓａｉｄ  Ｉ  ｈａｖｅ  ａ  ｄｒｅａｍ．」について、５個の分断候補位置が決定される。
【００７４】
なお、ケースＡでは、２個の英単語の間の余白が分断候補位置として決定される例を想定している。ただし、例えば、日本語の文章と文章との間に１文字分のスペースが挿入されている場合でも、当該スペースは、通常、Ｓ２４２でＮＯと判断され、分断候補位置として決定される（Ｓ２４６）。英語及び日本語とは異なる言語についても、比較的に大きい余白が存在する場合には、当該余白は、通常、分断候補位置として決定される。
【００７５】
ケースＢの結合画像は、日本語の文字列を含む。中間余白領域Ｂ５は、括弧Ｃ１と平仮名Ｃ２（即ち「あ」）の間の余白に相当し、通常、ｈ／４未満の横方向の長さを有する（Ｓ２４２でＹＥＳ）。また、右側隣接領域（即ち平仮名Ｃ２）は、通常、ｈ／２以上の横方向の長さを有するが、左側隣接領域（即ち括弧Ｃ１）は、通常、ｈ／２未満の横方向の長さを有する（Ｓ２４４でＹＥＳ）。従って、中間余白領域ＢＡ５が分断候補位置として決定されない。括弧と文字の間の余白で文字列が分断されて改行されると、ユーザが分断後の各文字列を読み難いと感じる可能性が高いので、本実施例では、中間余白領域ＢＡ５が分断候補位置として決定されない。
【００７６】
中間余白領域ＢＡ６は、１個の平仮名Ｃ３（即ち「い」）を構成する左側の線と右側の線の間の余白に相当し、通常、ｈ／４未満の横方向の長さを有する（Ｓ２４２でＹＥＳ）。また、左側隣接領域（即ち平仮名Ｃ３を構成する左側の線）と右側隣接領域（即ち平仮名Ｃ３を構成する右側の線）とは、通常、ｈ／２未満の横方向の長さを有する（Ｓ２４４でＹＥＳ）。従って、中間余白領域ＢＡ６が分断候補位置として決定されない。１個の平仮名Ｃ３が分断されて改行されると、ユーザが１個の平仮名Ｃ３を認識することができないので、本実施例では、中間余白領域ＢＡ６が分断候補位置として決定されない。なお、平仮名「い」のみならず、平仮名Ｃ８〜Ｃ１０（即ち「け」、「に」、「は」）、片仮名Ｃ１１（即ち「ハ」）、漢字Ｃ１２（即ち「卵」）についても、１個の文字の間に余白が形成され得るが、当該余白も、通常、分断候補位置として決定されない（Ｓ２４４でＹＥＳ）。
【００７７】
中間余白領域ＢＡ７は、平仮名Ｃ４（即ち「う」）と平仮名Ｃ５（即ち「え」）の間の余白に相当し、通常、ｈ／４未満の横方向の長さを有する（Ｓ２４２でＹＥＳ）。左側隣接領域（即ち平仮名Ｃ４）と右側隣接領域（即ち平仮名Ｃ５）とは、通常、ｈ／２以上の横方向の長さを有する（Ｓ２４４でＮＯ）。従って、中間余白領域ＢＡ７が分断候補位置として決定される（Ｓ２４６）。日本語の２個の文字の間の余白で文字列が分断されて改行されても、ユーザが分断後の各文字列を読み難いと感じる可能性が低いので、本実施例では、中間余白領域ＢＡ７が分断候補位置として決定される。
【００７８】
中間余白領域ＢＡ８は、平仮名Ｃ６（即ち「お」）と句点Ｃ７（即ち「。」）の間の余白に相当し、通常、ｈ／４未満の横方向の長さを有する（Ｓ２４２でＹＥＳ）。左側隣接領域（即ち平仮名Ｃ６）は、通常、ｈ／２以上の横方向の長さを有するが、右側隣接領域（即ち句点Ｃ７）は、通常、ｈ／２未満の横方向の長さを有する（Ｓ２４４でＹＥＳ）。従って、中間余白領域ＢＡ８が分断候補位置として決定されない。文字と句点の間の余白で文字列が分断されて改行されると、ユーザが分断後の各文字列を読み難いと感じる可能性が高いので、本実施例では、中間余白領域ＢＡ８が分断候補位置として決定されない。なお、同様に、文字と読点（即ち「、」）の間の余白も、通常、分断候補位置として決定されない（Ｓ２４４でＹＥＳ）。
【００７９】
（再配置処理；図９）
続いて、図９を参照して、図２のＳ４００で実行される再配置処理の内容を説明する。Ｓ４１０では、ＣＰＵ６２は、スキャン画像ＳＩ内の１個以上のテキスト領域のうちの１個のテキスト領域（例えばＴＯＡ）を処理対象として決定する。以下では、Ｓ４１０で処理対象として決定されるテキスト領域のことを「対象テキスト領域」と呼ぶ。また、対象テキスト領域について決定された目標領域（例えば図２のＳ３００のＴＡ）のことを「対象目標領域」と呼ぶ。また、対象テキスト領域に含まれる各文字列が結合された結合画像（例えば図２のＳ２００のＣＩ）、当該結合画像を表わす結合画像データのことを、それぞれ、「対象結合画像」、「対象結合画像データ」と呼ぶ。
【００８０】
Ｓ４２０では、ＣＰＵ６２は、決定されるべき再配置領域（図２のＳ４００のＲＡ参照）の候補である候補再配置領域の横方向の長さＷ（即ち横方向の画素数Ｗ）の初期値、縦方向の長さＨ（即ち縦方向の画素数Ｈ）の初期値として、それぞれ、対象テキスト領域の横方向の長さＯＰｘ、縦方向の長さＯＰｙを設定する。
【００８１】
Ｓ４３０では、ＣＰＵ６２は、候補再配置領域の縦方向の長さＨに対する横方向の長さＷの比Ｗ／Ｈが、対象目標領域の縦方向の長さＴＨに対する横方向の長さＴＷの比ＴＷ／ＴＨ未満であるのか否かを判断する。
【００８２】
ＣＰＵ６２は、比Ｗ／Ｈが比ＴＷ／ＴＨ未満であると判断する場合（Ｓ４３０でＹＥＳ）には、Ｓ４３２において、候補再配置領域の横方向の現在の長さＷに予め決められている固定値β（例えば１画素）を加算して、候補再配置領域の横方向の新たな長さＷを決定する。Ｓ４３２が終了すると、Ｓ４４０に進む。
【００８３】
一方、ＣＰＵ６２は、比Ｗ／Ｈが比ＴＷ／ＴＨ以上であると判断する場合（Ｓ４３０でＮＯ）には、Ｓ４３４において、候補再配置領域の横方向の現在の長さＷから予め決められている固定値β（例えば１画素）を減算して、候補再配置領域の横方向の新たな長さＷを決定する。Ｓ４３４が終了すると、Ｓ４４０に進む。なお、本実施例では、Ｓ４３２及びＳ４３４において、同じ固定値βが利用されるが、変形例では、Ｓ４３２の固定値とＳ４３４の固定値とは異なる値であってもよい。
【００８４】
Ｓ４４０では、ＣＰＵ６２は、スキャン画像データＳＩＤの解像度に応じて、縦方向に沿った行間の長さｍ（即ち行間の画素数ｍ）を決定する。例えば、ＣＰＵ６２は、スキャン画像データＳＩＤの解像度が３００ｄｐｉである場合には、行間の長さｍとして１画素を決定し、スキャン画像データＳＩＤの解像度が６００ｄｐｉである場合には、行間の長さｍとして２画素を決定する。即ち、ＣＰＵ６２は、スキャン画像データＳＩＤの解像度が高くなる程、大きい行間の長さｍを決定する。この構成によると、ＣＰＵ６２は、スキャン画像データＳＩＤの解像度に応じた適切な大きさを有する行間の長さｍを決定することができる。なお、変形例では、スキャン画像データＳＩＤの解像度に関わらず、行間の長さｍとして同じ値が採用されてもよい。
【００８５】
Ｓ４５０では、ＣＰＵ６２は、対象結合画像データと、Ｓ４３２又はＳ４３４で決定された候補再配置領域の横方向の新たな長さＷと、に基づいて、行数決定処理を実行する（後述の図１０参照）。行数決定処理では、ＣＰＵ６２は、対象結合画像（例えば図２のＣＩ）に含まれる複数個の文字（例えば「Ａ〜Ｍ」）を候補再配置領域内に再配置する場合における行数を決定する。
【００８６】
（行数決定処理；図１０）
図１０に示されるように、Ｓ４５１では、ＣＰＵ６２は、対象結合画像（例えば図１０内のＣＩ）の横方向の長さＩＷが、候補再配置領域の横方向の長さＷ以下であるのか否かを判断する。ＣＰＵ６２は、長さＩＷが長さＷ以下であると判断する場合（Ｓ４５１でＹＥＳ）には、Ｓ４５２において、「１」を行数として決定する。対象結合画像ＣＩに含まれる全ての文字「Ａ〜Ｍ」が横方向に沿って直線状に並んだ状態で、全ての文字「Ａ〜Ｍ」が候補再配置領域内に収まるからである。Ｓ４５２が終了すると、図１０の処理が終了する。
【００８７】
一方、ＣＰＵ６２は、長さＩＷが長さＷより大きいと判断する場合（Ｓ４５１でＮＯ）には、対象結合画像ＣＩに含まれる複数個の文字「Ａ〜Ｍ」を複数行に分断して配置する必要がある。このために、ＣＰＵ６２は、Ｓ４５３及び４５４を実行して、図６のＳ２３０で決定された複数個の分断候補位置（例えば図１０内の対象結合画像ＣＩに付された複数個の矢印参照）の中から、１個以上の分断候補位置を選択する。
【００８８】
Ｓ４５３では、ＣＰＵ６２は、選択長さＳＷが候補再配置領域の横方向の長さＷ以下の最大の長さになるように、複数個の分断候補位置の中から１個の分断候補位置を選択する。１個の分断候補位置も未だに選択されていない状態では、選択長さＳＷは、対象結合画像ＣＩの先端（即ち左端）と、選択されるべき分断候補位置と、の間の横方向の長さである。また、１個以上の分断候補位置が既に選択されている状態では、選択長さＳＷは、直近に選択された分断候補位置と、当該分断候補位置よりも後端側（即ち右側）に存在する新たに選択されるべき分断候補位置と、の間の横方向の長さである。図１０の例では、文字「Ｆ」と文字「Ｇ」との間の分断候補位置が選択される。
【００８９】
Ｓ４５４では、ＣＰＵ６２は、残存長さＲＷが候補再配置領域の横方向の長さＷ以下であるのか否かを判断する。残存長さＲＷは、直近に選択された分断候補位置と、対象結合画像の後端と、の間の横方向の長さである。ＣＰＵ６２は、残存長さＲＷが長さＷよりも大きいと判断する場合（Ｓ４５４でＮＯ）には、Ｓ４５３に戻り、複数個の分断候補位置の中から。直近に選択された分断候補位置よりも後端側に存在する分断候補位置を新たに決定する。
【００９０】
一方、ＣＰＵ６２は、残存長さＲＷが長さＷ以下であると判断する場合（Ｓ４５４でＹＥＳ）には、Ｓ４５５において、選択済みの分断候補位置の数に「１」を加算することによって得られる数を行数として決定する。Ｓ４５５が終了すると、図１０の処理が終了する。
【００９１】
（再配置処理の続き；図９）
図９のＳ４６０では、ＣＰＵ６２は、Ｓ４６０内の数式に従って、候補再配置領域の縦方向の新たな長さＨを決定する。Ｓ４６０内の数式において、「ｍ」はＳ４４０で決定された行間の長さであり、「ｎ」はＳ４５０で決定された行数であり、「ｈ」は対象結合画像データの縦方向の長さである（図１０内の結合画像ＣＩのｈ参照）。
【００９２】
Ｓ４７０では、ＣＰＵ６２は、候補再配置領域のアスペクト比Ｗ／Ｈが対象目標領域のアスペクト比ＴＷ／ＴＨに近似するのか否かを判断する。具体的には、ＣＰＵ６２は、候補再配置領域のアスペクト比Ｗ／Ｈが、対象目標領域のアスペクト比ＴＷ／ＴＨに基づいて設定される所定範囲内に含まれるのか否かを判断する。上記の所定範囲は、対象目標領域のアスペクト比ＴＷ／ＴＨから値γを減算することによって得られる値と、対象目標領域のアスペクト比ＴＷ／ＴＨに値γを加算することによって得られる値と、の間の範囲である。なお、値γは、予め決められている固定値であってもよいし、ＴＷ／ＴＨに所定の係数（例えば０．０５）を乗算することによって得られる値であってもよい。
【００９３】
ＣＰＵ６２は、候補再配置領域のアスペクト比Ｗ／Ｈが対象目標領域のアスペクト比ＴＷ／ＴＨに近似しないと判断する場合（Ｓ４７０でＮＯ）には、Ｓ４３０〜Ｓ４６０の各処理を再び実行する。これにより、ＣＰＵ６２は、候補再配置領域の横方向の新たな長さＷと縦方向の新たな長さＨとを決定して、Ｓ４７０の判断を再び実行する。
【００９４】
一方、ＣＰＵ６２は、候補再配置領域のアスペクト比Ｗ／Ｈが対象目標領域のアスペクト比ＴＷ／ＴＨに近似すると判断する場合（Ｓ４７０でＹＥＳ）には、Ｓ４８０において、まず、横方向の長さＷと縦方向の長さＨとを有する候補再配置領域を再配置領域（例えば図２のＲＡ）として決定する。そして、ＣＰＵ６２は、図１０のＳ４５３で１個以上の分断候補位置を選択済みである場合には、当該１個以上の分断候補位置で対象結合画像データを分断して、２個以上の分断画像を表わす２個以上の分断画像データを生成する。次いで、ＣＰＵ６２は、２個以上の分断画像が縦方向に沿って並ぶように、２個以上の分断画像データを再配置領域内に配置する。この際に、ＣＰＵ６２は、縦方向に沿って隣接する２個の分断画像の間にＳ４４０で決定された行間が形成されるように、２個の分断画像データを配置する。この結果、例えば、図２のＳ４００に示されるように、複数個の文字「Ａ」〜「Ｍ」が再配置領域ＲＡ内に再配置されている再配置画像ＲＩを表わす再配置画像データが生成される。再配置画像ＲＩ内の複数個の文字「Ａ」〜「Ｍ」のサイズは、スキャン画像ＳＩ内の複数個の文字「Ａ」〜「Ｍ」のサイズに等しい。
【００９５】
Ｓ４９０では、ＣＰＵ６２は、全てのテキスト領域について、Ｓ４１０〜Ｓ４８０の処理が終了したのか否かを判断する。ＣＰＵ６２は、処理が終了していないと判断する場合（Ｓ４９０でＮＯ）には、Ｓ４１０において、未処理のテキスト領域を処理対象として決定して、Ｓ４２０以降の各処理を再び実行する。そして、ＣＰＵ６２は、処理が終了したと判断する場合（Ｓ４９０でＹＥＳ）には、図９の処理を終了する。
【００９６】
（具体的なケース；図１１）
続いて、図１１を参照して、図２のＳ４００の再配置処理（図９参照）とＳ５００の拡大処理について、具体的なケースを説明する。（１）に示されるように、候補再配置領域の横方向の長さＷの初期値、縦方向の長さＨの初期値として、それぞれ、対象テキスト領域ＴＯＡの横方向の長さＯＰｘ、縦方向の長さＯＰｙが設定される（図９のＳ４２０）。本ケースでは、Ｗ／ＨがＴＷ／ＴＨ未満である。即ち、対象目標領域ＴＡは、対象テキスト領域ＴＯＡと比べると、横長の形状を有する。この場合、候補再配置領域を横長の形状にしていけば、候補再配置領域のアスペクト比が対象目標領域ＴＡのアスペクト比に近づくことになる。従って、（２）に示されるように、候補再配置領域の横方向の現在の長さＷに固定値βが加算されて、候補再配置領域の横方向の新たな長さＷが決定される（Ｓ４３２）。この場合、行数として、文字列「Ａ〜Ｅ」と文字列「Ｆ〜Ｊ」と文字列「Ｋ〜Ｍ」とを含む３行が決定される（Ｓ４５０）。そして、候補再配置領域の縦方向の新たな長さＨが決定される（Ｓ４６０）。
【００９７】
（２）の状態では、候補再配置領域のアスペクト比Ｗ／Ｈが対象目標領域ＴＡのアスペクト比ＴＷ／ＴＨに近似しないので（Ｓ４７０でＮＯ）、（３）に示されるように、候補再配置領域の横方向の現在の長さＷに固定値βが再び加算されて、候補再配置領域の横方向の新たな長さＷが再び決定される（Ｓ４３２）。この場合、行数として、文字列「Ａ〜Ｆ」と文字列「Ｇ〜Ｌ」と文字列「Ｍ」とを含む３行が決定される（Ｓ４５０）。即ち、候補再配置領域の横方向の長さＷが大きくなったことに起因して、候補再配置領域内の１行の文字列を構成することが可能な最大の文字数が増える。そして、候補再配置領域の縦方向の新たな長さＨが決定される（Ｓ４６０）。
【００９８】
（３）の状態では、候補再配置領域のアスペクト比Ｗ／Ｈが対象目標領域ＴＡのアスペクト比ＴＷ／ＴＨに近似する（Ｓ４７０でＹＥＳ）。従って、（４）に示されるように、（３）の候補再配置領域が再配置領域ＲＡとして決定される（Ｓ４８０）。次いで、対象結合画像ＣＩを表わす対象結合画像データが分断されて、３個の分断画像ＤＩ１〜ＤＩ３を表わす３個の分断画像データが生成される（Ｓ４８０）。そして、３個の分断画像ＤＩ１〜ＤＩ３が縦方向に沿って並び、かつ、隣接する２個の分断画像の間に長さｍを有する行間が形成されるように、３個の分断画像データが再配置領域ＲＡ内に配置される。この結果、再配置画像ＲＩを表わす再配置画像データが生成される（Ｓ４８０）。
【００９９】
次いで、再配置画像データが拡大されて、拡大画像を表わす拡大画像データが生成される（図２のＳ５００）。具体的には、再配置画像ＲＩの対角線が伸びる方向に再配置画像ＲＩが拡大され、その結果、拡大画像を表わす拡大画像データが生成される。例えば、再配置領域ＲＡのアスペクト比Ｗ／Ｈが対象目標領域ＴＡのアスペクト比ＴＷ／ＴＨに等しい場合には、拡大画像の４個の辺の全てが、対象目標領域ＴＡの４個の辺に一致する。即ち、この場合、拡大画像のサイズが目標領域ＴＡのサイズに一致する。ただし、例えば、再配置領域ＲＡのアスペクト比Ｗ／Ｈが対象目標領域ＴＡのアスペクト比ＴＷ／ＴＨに等しくない場合には、再配置画像ＲＩを徐々に拡大していく過程において、拡大画像のいずれかの辺が対象目標領域ＴＡのいずれかの辺に一致した段階で、再配置画像ＲＩの拡大が終了する。即ち、この場合、拡大画像のサイズが目標領域ＴＡのサイズよりも小さくなる。
【０１００】
続いて、（５）に示されるように、再配置画像ＲＩを表わす再配置画像データが拡大された拡大画像データが、スキャン画像データＳＩＤの目標領域ＴＡ内に上書きされる（図２のＳ５００）。この結果、処理済み画像ＰＩを表わす処理済み画像データＰＩＤが完成する。
【０１０１】
図１１に示されるように、（１）のスキャン画像ＳＩでは、修飾線は、文字列「ＦＧＨ」の近傍に配置されている。そして、文字列「Ｆ〜Ｊ」と修飾線が１行の修飾文字列として扱われるので、結合画像ＣＩでも、修飾線は、文字列「ＦＧＨ」の近傍に配置されている。即ち、スキャン画像ＳＩ内での文字列「ＦＧＨ」と修飾線との修飾関係が維持されている結合画像ＣＩが得られる。また、結合画像ＣＩから（４）の再配置画像ＲＩが生成され、再配置画像ＲＩから（５）の処理済み画像ＰＩが生成されるので、再配置画像ＲＩ及び処理済み画像ＰＩでも、修飾線は、文字列「ＦＧＨ」の近傍に配置されている。即ち、スキャン画像ＳＩ内での文字列「ＦＧＨ」と修飾線との修飾関係が維持されている再配置画像ＲＩ及び処理済み画像ＰＩが得られる。
【０１０２】
また、（１）のスキャン画像ＳＩでは、符号ｈ１、符号ｈ２は、それぞれ、修飾線が付されている文字列「ＦＧＨ」の縦方向の長さ、文字列「ＦＧＨ」と修飾線との間の縦方向の長さ（以下では単に「間隔の長さ」と呼ぶ）である。文字列「Ｆ〜Ｊ」と修飾線が１行の修飾文字列として扱われるので、結合画像ＣＩでも、文字列「ＦＧＨ」の縦方向の長さ、間隔の長さは、それぞれ、ｈ１、ｈ２である。同様に、（４）の再配置画像ＲＩでも、文字列「ＦＧＨ」の縦方向の長さ、間隔の長さは、それぞれ、ｈ１、ｈ２である。また、（５）の拡大画像ＰＩでは、拡大された文字列「ＦＧＨ」の縦方向の長さ、拡大された間隔の長さは、それぞれ、ｈ１×ｔ、ｈ２×ｔである（ｔは拡大倍率である）。従って、いずれの画像ＳＩ，ＣＩ，ＲＩ，ＰＩにおいても、文字列「ＦＧＨ」の縦方向の長さに対する間隔の長さの比は、ｈ２／ｈ１である。即ち、各画像ＳＩ，ＣＩ，ＲＩ，ＰＩにおいて、文字列「ＦＧＨ」の縦方向の長さに対する間隔の長さの比は等しい。
【０１０３】
（第１実施例の効果）
本実施例によると、図５に示されるように、画像処理サーバ５０は、４個の帯状領域ＬＡ１１〜ＬＡ１４の縦方向に沿った４個の長さｈ１１〜ｈ１４に基づいて、４個の帯状領域ＬＡ１１〜ＬＡ１４の中から修飾物帯状領域ＬＡ１３を特定する（Ｓ１８４でＹＥＳ）。そして、画像処理サーバ５０は、修飾物帯状領域ＬＡ１３を文字列帯状領域ＬＡ１２に結合して、修飾文字列帯状領域ＬＡ１２’を決定する（Ｓ１９５）。これにより、画像処理サーバ５０は、文字列帯状領域ＬＡ１２内の文字列「Ｆ〜Ｊ」と、修飾物帯状領域ＬＡ１３内の修飾線と、を１行の修飾文字列として扱うことができる。この結果、図６に示されるように、画像処理サーバ５０は、文字列「ＦＧＨ」が修飾線によって修飾されている結合文字列「Ａ〜Ｍ」を含む結合画像ＣＩを表わす結合画像データを生成することができる。特に、画像処理サーバ５０は、２個以上の文字を含み得る帯状領域を単位として処理を実行して、結合画像データを生成する。従って、画像処理サーバ５０は、スキャン画像ＳＩ内の１個の文字を単位として処理を実行せずに済み、この結果、結合画像データを迅速に生成することができる。このように、画像処理サーバ５０は、スキャン画像ＳＩ内での文字列「ＦＧＨ」と修飾線との修飾関係が維持されている結合画像ＣＩを表わす結合画像データを迅速に生成することができる。そして、図１１に示されるように、画像処理サーバ５０は、結合画像データを利用して再配置画像データ及び処理済み画像データＰＩＤを生成するので、スキャン画像ＳＩ内での文字列「ＦＧＨ」と修飾線との修飾関係が維持されている再配置画像ＲＩ及び処理済み画像ＰＩを表わす再配置画像データ及び処理済み画像データＰＩＤを適切に生成することができる。
【０１０４】
（対応関係）
画像処理サーバ５０が、「画像処理装置」の一例である。スキャン画像ＳＩ、結合画像ＣＩが、それぞれ、「原画像」、「対象画像」の一例である。図１１では、スキャン画像ＳＩにおいて、３行の文字列「Ａ〜Ｍ」、文字列「ＦＧＨ」、修飾線が、それぞれ、「Ｍ行の文字列」、「被修飾文字」、「修飾物」の一例である。図５では、４個の帯状領域ＬＡ１１〜ＬＡ１４、３個の帯状領域ＬＡ１１，ＬＡ１２，ＬＡ１４、１個の帯状領域ＬＡ１３が、それぞれ、「複数個の帯状領域」、「Ｍ個の主帯状領域」、「副帯状領域」の一例である。また、帯状領域ＬＡ１２が、「近傍主帯状領域」の一例である。図５のＳ１８２の閾値Ｔｈが、「設定値」の一例である。図４では、Ｓ１６２で生成される射影ヒストグラム、Ｓ１７０で算出される合計下辺長さが、それぞれ、「第２の射影ヒストグラム」、「評価値」の一例である。また、横方向、左側、右側が、それぞれ、「第１方向」、「第１方向の第１側」、「第１方向の第２側」の一例である。縦方向、上側、下側が、それぞれ、「第２方向」、「第２方向の第１側」、「第２方向の第２側」の一例である。
【０１０５】
（第２実施例；図１２）
本実施例では、図５のＳ１８１及びＳ１８２の処理に代えて、図１２のＳ１８１及びＳ１８２の処理が実行される。即ち、本実施例では、閾値Ｔｈを設定するための手法が第１実施例とは異なる。
【０１０６】
Ｓ１８１では、ＣＰＵ６２は、長さ（即ち画素数）を示す横軸と出現頻度を示す縦軸とによって画定される平面上に、４個の帯状領域ＬＡ１１〜ＬＡ１４の４個の長さｈ１１〜ｈ１４の出現頻度を示す各点を上記の平面上にプロットして、当該各点を直線で結んだグラフ（即ち図１２内のグラフ）を生成する。当該グラフでは、３個の範囲Ｒ１〜Ｒ３が得られる。範囲Ｒ１は、１個の修飾物帯状領域ＬＡ１３の１個の長さｈ１３の出現頻度（即ち「１」）を示す点がピークを構成する範囲である。範囲Ｒ２は、出現頻度ゼロを示す範囲である。範囲Ｒ３は、３個の文字列帯状領域ＬＡ１１，ＬＡ１２，ＬＡ１４の３個の長さｈ１１，ｈ１２，ｈ１４の出現頻度（即ち「３」）を示す点がピークを構成する範囲である。より具体的には、範囲Ｒ３は、最高の出現頻度（即ち「３」）を含む範囲である。
【０１０７】
Ｓ１８２では、ＣＰＵ６２は、Ｓ１８１で生成されたグラフを利用して、最高の出現頻度（即ち「３」）を含み、かつ、出現頻度がゼロより高い範囲Ｒ３を特定し、次いで、横軸が示す長さが範囲Ｒ３よりも小さく、かつ、出現頻度がゼロである範囲Ｒ２を特定する。そして、ＣＰＵ６２は、横軸上の範囲Ｒ２と範囲Ｒ３との境界の位置に対応する長さを閾値Ｔｈとして設定する。
【０１０８】
本実施例では、修飾物帯状領域の数（図１２の例では１個）が、文字列帯状領域の数（図１２の例では３個）よりも少ないという状況を想定している。そして、出現頻度がゼロである範囲Ｒ２と最高の出現頻度を含む範囲Ｒ３との境界の位置に対応する長さを閾値Ｔｈとして設定すれば、修飾物帯状領域と文字列帯状領域とを区別することができる。即ち、修飾物帯状領域ＬＡ１３の長さｈ１３は、通常、閾値Ｔｈ以下であり（範囲Ｒ１参照）、各文字列帯状領域ＬＡ１１，ＬＡ１２，ＬＡ１４の各長さｈ１１，ｈ１２，ｈ１４は、通常、閾値Ｔｈよりも大きい（範囲Ｒ３参照）。従って、本実施例でも、Ｓ１８４において、画像処理サーバ５０は、対象帯状領域が、修飾物帯状領域であるのか、文字列帯状領域であるのか、を適切に判断することができる。本実施例では、範囲Ｒ３、範囲Ｒ２が、それぞれ、「第１の範囲」、「第２の範囲」の一例である。
【０１０９】
（第３実施例；図１３）
本実施例では、図５のＳ１８１及びＳ１８２の処理に代えて、図１３のＳ１８１及びＳ１８２の処理が実行される。本実施例では、修飾物帯状領域の数が、文字列帯状領域の数よりも多い状況でも、対象帯状領域が、修飾物帯状領域であるのか、文字列帯状領域であるのか、を適切に判断することができる。
【０１１０】
Ｓ１８１は、図１２の第２実施例のＳ１８１と同様である。ただし、修飾物帯状領域の数が多いので、各修飾物帯状領域の各長さの出現頻度を示す点がピークを構成する範囲Ｒ４が、最高の出現頻度を含む。範囲Ｒ５は、出現頻度ゼロを示す範囲である。範囲Ｒ６は、各文字列帯状領域の各長さの出現頻度を示す点がピークを構成する範囲である。
【０１１１】
Ｓ１８２では、ＣＰＵ６２は、Ｓ１８１で生成されたグラフを利用して、出現頻度がゼロより高い複数個の範囲Ｒ４，Ｒ６のうち、横軸が示す長さが最大である範囲Ｒ６を特定し、次いで、横軸が示す長さが範囲Ｒ６よりも小さく、かつ、出現頻度がゼロである範囲Ｒ５を特定する。そして、ＣＰＵ６２は、横軸上の範囲Ｒ５と範囲Ｒ６との境界の位置に対応する長さを閾値Ｔｈとして設定する。
【０１１２】
本実施例によると、修飾物帯状領域の数が、文字列帯状領域の数よりも多くても、閾値Ｔｈを適切に設定することができる。本実施例では、範囲Ｒ６、範囲Ｒ５が、それぞれ、「第１の範囲」、「第２の範囲」の一例である。
【０１１３】
（第４実施例；図１４）
本実施例では、図５の修飾物解析処理に代えて、図１４の修飾物解析処理が実行される。図１４に示されるように、本実施例では、スキャン画像ＳＩは、日本語のセンテンスを含む。当該センテンスは、漢字を含む文字列Ｃ２２（即ち「私の名前は」）を含んでおり、当該文字列の上側に平仮名のルビＣ２１（即ち「なまえ」）が付されている。即ち、ルビは、漢字を修飾するための修飾物である。この場合、図４のＳ１６４では、３個の帯状領域ＬＡ２１〜ＬＡ２３が決定される。帯状領域ＬＡ２１は、ルビＣ２１を含み、修飾物帯状領域である。また、帯状領域ＬＡ２２，ＬＡ２３は、それぞれ、文字列Ｃ２２，Ｃ２３を含む文字列帯状領域である。
【０１１４】
Ｓ１８１〜Ｓ１８４は、図５のＳ１８１〜Ｓ１８４と同様である。従って、Ｓ１８１では、３個の帯状領域ＬＡ２１〜ＬＡ２３の縦方向に沿った３個の長さｈ２１〜ｈ２３の平均値ｈａが算出され、Ｓ１８２では、閾値Ｔｈが算出される。ルビを含む帯状領域ＬＡ２１の縦方向の長さｈ２１は、通常、閾値Ｔｈ以下である。ＣＰＵ６２は、対象帯状領域が修飾物帯状領域（例えばＬＡ２１）であると判断する場合（Ｓ１８４でＹＥＳ）には、Ｓ１９６において、対象帯状領域と下行の帯状領域とを結合する。下行の帯状領域は、対象帯状領域の下側において、対象帯状領域の隣に存在する帯状領域である。そして、本実施例では、ＣＰＵ６２は、修飾物帯状領域であると判断される帯状領域ＬＡ２１と、下行の帯状領域である帯状領域ＬＡ２２と、を結合して、１個の修飾文字列帯状領域ＬＡ２２’を決定する。この際に、ＣＰＵ６２は、修飾文字列帯状領域ＬＡ２２’の基準位置として下行の帯状領域ＬＡ２２の基準位置を利用し、帯状領域ＬＡ２１の基準位置を利用しない。Ｓ１９８は、図５のＳ１９８と同様である。
【０１１５】
仮に、帯状領域ＬＡ２１と帯状領域ＬＡ２２とが結合されなければ、図６のＳ２２０では、文字列Ｃ２２（即ち「名前」）がルビＣ２１によって修飾されていない結合文字列が得られる。これに対し、本実施例では、帯状領域ＬＡ２２’内に文字列Ｃ２２とルビＣ２１との双方が含まれることになり、以降の処理では、文字列Ｃ２２とルビＣ２１とが１行の修飾文字列として扱われる。この結果、図６のＳ２２０では、文字列Ｃ２２がルビＣ２１によって修飾されている結合文字列が得られる。従って、画像処理サーバ５０は、スキャン画像ＳＩ内の修飾関係が維持されている結合画像ＣＩを表わす結合画像データを適切に生成することができる。また、画像処理サーバ５０は、スキャン画像ＳＩ内の修飾関係が維持されている処理済み画像ＰＩを表わす処理済み画像データを適切に生成することができる。
【０１１６】
本実施例では、２行の文字列Ｃ２２，Ｃ２３、ルビＣ２１、ルビＣ２１が付されている漢字が、それぞれ、「Ｍ行の文字列」、「修飾物」、「被修飾文字」の一例である。３個の帯状領域ＬＡ２１〜ＬＡ２３、２個の帯状領域ＬＡ２２，ＬＡ２３、１個の帯状領域ＬＡ２１が、それぞれ、「複数個の帯状領域」、「Ｍ個の主帯状領域」、「副帯状領域」の一例である。また、帯状領域ＬＡ２２が、「近傍副帯状領域」の一例である。
【０１１７】
（第５実施例；図１５）
本実施例では、図５の修飾物解析処理に代えて、図１５の修飾物解析処理が実行される。図１５に示されるように、本実施例では、スキャン画像ＳＩは、日本語のセンテンスを含む。第４実施例（図１４参照）と同様に、当該センテンスは、漢字を含む文字列Ｃ３３とルビＣ３２とを含む。また、当該センテンスは、文字列Ｃ３３を修飾するための修飾線を含む。この場合、図４のＳ１６４では、５個の帯状領域ＬＡ３１〜ＬＡ３５が決定される。帯状領域ＬＡ３２は、ルビＣ３２を含み、修飾物帯状領域である。帯状領域ＬＡ３４は、修飾線を含み、修飾物帯状領域である。また、各帯状領域ＬＡ３１，ＬＡ３３，ＬＡ３５は、それぞれ、文字列Ｃ３１，Ｃ３３，Ｃ３５を含む文字列帯状領域である。
【０１１８】
Ｓ１８１〜Ｓ１８４は、図５のＳ１８１〜Ｓ１８４と同様である。ＣＰＵ６２は、対象帯状領域が修飾物帯状領域（例えばＬＡ３２，ＬＡ３４）であると判断する場合（Ｓ１８４でＹＥＳ）には、Ｓ１８５において、距離ｄ１と距離ｄ２とを算出する。距離ｄ１は、対象帯状領域と上行の帯状領域との間の縦方向に沿った距離である。距離ｄ２は、対象帯状領域と下行の帯状領域との間の縦方向に沿った距離である。
【０１１９】
Ｓ１８６では、ＣＰＵ６２は、距離ｄ１が距離ｄ２未満であるのか否かを判断する。ＣＰＵ６２は、距離ｄ１が距離ｄ２未満であると判断する場合（Ｓ１８６でＹＥＳ）には、Ｓ１９５において、対象帯状領域と上行の帯状領域とを結合する。一方、ＣＰＵ６２は、距離ｄ１が距離ｄ２以上であると判断する場合（Ｓ１８６でＮＯ）には、Ｓ１９６において、対象帯状領域と下行の帯状領域とを結合する。Ｓ１９５、Ｓ１９６は、それぞれ、図５のＳ１９５、図１４のＳ１９６と同様である。また、Ｓ１９８は、図５のＳ１９８と同様である。
【０１２０】
本実施例では、帯状領域ＬＡ３２が修飾物帯状領域であると判断される対象帯状領域である場合には、ＣＰＵ６２は、帯状領域ＬＡ３１と帯状領域ＬＡ３２との間の距離ｄ１と、帯状領域ＬＡ３２と帯状領域ＬＡ３３との間の距離ｄ２と、を算出する（Ｓ１８５）。そして、ＣＰＵ６２は、距離ｄ１が距離ｄ２以上であると判断するので（Ｓ１８６でＮＯ）、帯状領域ＬＡ３２を下行の帯状領域ＬＡ３３に結合して、１個の修飾文字列帯状領域を決定する（Ｓ１９６）。また、帯状領域ＬＡ３４が修飾物帯状領域であると判断される対象帯状領域である場合には、ＣＰＵ６２は、帯状領域ＬＡ３４と上記の修飾文字列帯状領域との間の距離ｄ１と、帯状領域ＬＡ３４と帯状領域ＬＡ３５との間の距離ｄ２と、を算出する（Ｓ１８５）。そして、ＣＰＵ６２は、距離ｄ１が距離ｄ２未満であると判断するので（Ｓ１８６でＹＥＳ）、帯状領域ＬＡ３４を上行の帯状領域である上記の修飾文字列帯状領域に結合して、新たな１個の修飾文字列帯状領域ＬＡ３３’を決定する（Ｓ１９５）。このように、ＣＰＵ６２は、距離ｄ１及び距離ｄ２に基づいて、修飾物帯状領域と判断される対象帯状領域を上行の帯状領域及び下行の帯状領域のどちらに結合すべきかを適切に決定することができる。
【０１２１】
最終的に得られる修飾文字列帯状領域ＬＡ３３’は、文字列Ｃ３３とルビＣ３２と修飾線との全てを含むことになり、以降の処理では、これらの全てが１行の修飾文字列として扱われる。従って、画像処理サーバ５０は、スキャン画像ＳＩ内の修飾関係が維持されている結合画像ＣＩを表わす結合画像データを適切に生成することができる。この結果、画像処理サーバ５０は、スキャン画像ＳＩ内の修飾関係が維持されている処理済み画像ＰＩを表わす処理済み画像データを適切に生成することができる。本実施例では、例えば、帯状領域ＬＡ３２が修飾物帯状領域であると判断される対象帯状領域である場合に、上行の帯状領域ＬＡ３１、下行の帯状領域ＬＡ３３が、それぞれ、「第１の主帯状領域」、「第２の主帯状領域」の一例である。そして、距離ｄ１、距離ｄ２が、それぞれ、「第１の距離」、「第２の距離」の一例である。
【０１２２】
（第６実施例；図１６）
本実施例では、図５の修飾物解析処理に代えて、図１６の修飾物解析処理が実行される。本実施例では、スキャン画像ＳＩは、図１５の第５実施例と同じ日本語のセンテンスを含む。
【０１２３】
Ｓ１８１〜Ｓ１８４は、図５のＳ１８１〜Ｓ１８４と同様である。ＣＰＵ６２は、対象帯状領域が修飾物帯状領域（例えばＬＡ３２，ＬＡ３４）であると判断する場合（Ｓ１８４でＹＥＳ）には、Ｓ１８７において、対象帯状領域に対応する射影ヒストグラムを生成する。具体的には、ＣＰＵ６２は、まず、スキャン画像データＳＩＤの中から、対象帯状領域を表わす部分画像データを取得し、当該部分画像データに対して二値化処理を実行する。当該二値化処理の内容は、図３のＳ１１０と同様である。そして、ＣＰＵ６２は、二値データを利用して、射影ヒストグラムを生成する。当該射影ヒストグラムは、二値データを構成する各画素を縦方向に射影する場合におけるＯＮ画素（即ち「１」を示す画素）の頻度の分布を示す。当該射影ヒストグラムでは、ルビ又は修飾線が、頻度がゼロより高い範囲で表わされる。
【０１２４】
Ｓ１８８では、ＣＰＵ６２は、Ｓ１８７で生成された射影ヒストグラムを利用して、修飾物帯状領域に含まれる修飾物が、修飾線であるのか、ルビであるのか、を判断する。具体的には、ＣＰＵ６２は、射影ヒストグラムが特定の分布を示す場合には、修飾物が修飾線であると判断し、射影ヒストグラムが特定の分布を示さない場合には、修飾物がルビであると判断する。上記の特定の分布は、修飾線の特徴を示す分布であり、ゼロより高い頻度値が横方向に沿って所定の長さ以上に亘って連続する分布である。上記の所定の長さは、修飾線の存在を特定可能な長さであればどのような値であってもよいが、例えば、１個の文字の横方向の長さよりも大きい値である。なお、変形例では、特定の分布は、ゼロより高い一定の頻度値が横方向に沿って所定の長さ以上に亘って連続する分布であってもよい。
【０１２５】
ＣＰＵ６２は、修飾物が修飾線であると判断する場合（Ｓ１８８で「修飾線」）には、Ｓ１９５において、対象帯状領域と上行の帯状領域とを結合する。一方、ＣＰＵ６２は、修飾物がルビであると判断する場合（Ｓ１８８で「ルビ」）には、Ｓ１９６において、対象帯状領域と下行の帯状領域とを結合する。Ｓ１９５、Ｓ１９６は、それぞれ、図５のＳ１９５、図１４のＳ１９６と同様である。また、Ｓ１９８は、図５のＳ１９８と同様である。
【０１２６】
本実施例では、ＣＰＵ６２は、修飾物帯状領域であると判断される対象帯状領域に対応する射影ヒストグラムを利用して、修飾線とルビとを判別することができる。例えば、帯状領域ＬＡ３２に対応する射影ヒストグラムが特定の分布を示さないので、ＣＰＵ６２は、帯状領域ＬＡ３２内の修飾物がルビであると判断することができる。また、例えば、帯状領域ＬＡ３４に対応する射影ヒストグラムが特定の分布を示すので、ＣＰＵ６２は、帯状領域ＬＡ３４内の修飾物が修飾線であると判断することができる。このように、ＣＰＵ６２は、修飾物帯状領域であると判断される対象帯状領域に対応する射影ヒストグラムを利用して、対象帯状領域を上行の帯状領域及び下行の帯状領域のどちらに結合すべきかを適切に決定することができる。本実施例では、Ｓ１８７で生成される射影ヒストグラムが、「第１の射影ヒストグラム」の一例である。
【０１２７】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【０１２８】
（変形例１）ＣＰＵ６２は、結合画像ＣＩ（図１１）を表わす結合画像データを生成することなく、再配置画像ＲＩを表わす再配置画像データを生成してもよい。具体的には、ＣＰＵ６２は、スキャン画像データＳＩＤから、３個の帯状領域ＬＡ１１，ＬＡ１２’，ＬＡ１４（図５参照）を表わす３個の部分画像データを取得する。そして、ＣＰＵ３２は、帯状領域ＬＡ１２’を表わす第２の部分画像データを分断して、文字列「Ｆ」を表わす第１の分断画像データと、文字列「Ｇ〜Ｊ」を表わす第２の分断画像データと、を生成する。また、ＣＰＵ６２は、帯状領域ＬＡ１４を表わす第３の部分画像データを分断して、文字列「ＫＬ」を表わす第３の分断画像データと、文字列「Ｍ」を表わす第４の分断画像データと、を生成する。次いで、ＣＰＵ６２は、帯状領域ＬＡ１１を表わす第１の部分画像データと第１の分断画像データとを結合して、文字列「Ａ〜Ｆ」を表わす第１の中間画像データを生成し、第２の分断画像データと第３の分断画像データとを結合して、文字列「Ｇ〜Ｌ」を表わす第２の中間画像データを生成する。そして、ＣＰＵ６２は、文字列「Ａ〜Ｆ」と文字列「Ｇ〜Ｌ」と文字列「Ｍ」とが縦方向に沿って並ぶように、第１の中間画像データと第２の中間画像データと第４の分断画像データとを再配置領域ＲＡ内に再配置して、再配置画像ＲＩを表わす再配置画像データを生成する。本変形例では、再配置画像データが、「対象画像データ」の一例である。なお、上記の各実施例では、再配置画像データが拡大されて処理済み画像データＰＩＤが生成されるが、再配置画像データがそのままスキャン画像データＳＩＤ内に上書きされることによって、処理済み画像データが生成されてもよい。本変形例では、処理済み画像データが、「対象画像データ」の一例であると考えることもできる。
【０１２９】
（変形例２）「修飾線」は、一重線でなくてもよく、二重線、破線、波線等であってもよい。また、例えば、図１４の第４実施例では、日本語の漢字に平仮名のルビＣ２１が付される状況を想定している。これに代えて、例えば、中国語の漢字にピンインのルビが付されていてもよい。即ち、「漢字」は、日本語の漢字に限られず、中国語の漢字も含む。また、「修飾物」は、上記の各実施例で例示されるもの（即ち、修飾線、漢字に付されるルビ）に限られず、例えば、文字の上側に付されるベクトル、日本語の片仮名（例えばソフトウェア）の上側に付される平仮名のルビ（例えばそふとうぇあ）等であってもよい。また、「修飾物」は、例えば、第１の言語（例えば英語のsoftware）の上側に付される第２の言語のルビ（例えば日本語のソフトウェア）等であってもよい。
【０１３０】
（変形例３）例えば、縦方向の上側から下側に向かって、第１の文字列、当該第１の文字列を修飾するための修飾線、ルビ、当該ルビが付されている漢字を含む第２の文字列が順に並んでいる状況を想定する。このような状況では、図１５の修飾物解析処理において、ＣＰＵ６２は、修飾線を含む帯状領域が修飾物帯状領域であると判断する（Ｓ１８４でＹＥＳ）。次いで、Ｓ１８５では、ＣＰＵ６２は、修飾線を含む修飾物帯状領域と第１の文字列を含む文字列帯状領域との間の距離ｄ１を算出し、さらに、修飾線を含む修飾物帯状領域とルビを含む修飾物帯状領域との間の距離ではなく、修飾線を含む修飾物帯状領域と第２の文字列を含む文字列帯状領域との間の距離ｄ２を算出する。この場合、ＣＰＵ６２は、距離ｄ１が距離ｄ２未満であると判断し（Ｓ１８６でＹＥＳ）、第１の文字列を含む文字列帯状領域と、修飾線を含む修飾物帯状領域と、を結合する（Ｓ１９５）。また、ＣＰＵ６２は、ルビを含む帯状領域が修飾物帯状領域であると判断する（Ｓ１８４でＹＥＳ）。次いで、Ｓ１８５では、ＣＰＵ６２は、ルビを含む修飾物帯状領域と修飾線を含む修飾物帯状領域との間の距離ではなく、ルビを含む修飾物帯状領域と第１の文字列を含む文字列帯状領域との間の距離ｄ１を算出し、さらに、ルビを含む修飾物帯状領域と第２の文字列を含む文字列帯状領域との間の距離ｄ２を算出する。この場合、ＣＰＵ６２は、距離ｄ１が距離ｄ２以上であると判断し（Ｓ１８６でＮＯ）、第２の文字列を含む文字列帯状領域と、ルビを含む修飾物帯状領域と、を結合してもよい（Ｓ１９６）。本変形例では、修飾線を含む修飾物帯状領域とルビを含む修飾物帯状領域とが「副帯状領域」の一例である。また、第１の文字列を含む文字列帯状領域、第２の文字列を含む文字列帯状領域が、それぞれ、「第１の主帯状領域」、「第２の主帯状領域」の一例である。
【０１３１】
（変形例４）図４のＳ１６６〜Ｓ１７４では、最大の合計下辺長さが算出された評価範囲内の中間位置が基準位置として決定される。これに代えて、ＣＰＵ６２は、最大の合計下辺長さが算出された評価範囲内の最上端の位置又は最下端の位置を基準位置として決定してもよい。本変形例では、評価範囲内の最上端の位置又は最下端の位置が、「最大の評価値に対応する１個の評価範囲のうちの第２方向に沿った特定位置」の一例である。また、別の変形例では、ＣＰＵ６２は、例えば、対象帯状領域の縦方向の予め決められた位置（例えば、中間位置、上端位置、下端位置等）を基準位置として決定してもよい。即ち、「基準位置」は、Ｍ行の文字列を結合するための基準の位置であればよい。
【０１３２】
（変形例５）上記の実施例では、画像処理サーバ５０が、スキャン画像データＳＩＤに対して画像処理（即ち図２のＳ１００〜Ｓ５００の各処理）を実行して処理済み画像データＰＩＤを生成し、当該処理済み画像データＰＩＤを多機能機１０に送信する（Ｓ６００）。これに代えて、多機能機１０が、スキャン画像データＳＩＤに対して画像処理を実行して処理済み画像データＰＩＤを生成してもよい（即ち画像処理サーバ５０が存在しなくてもよい）。本変形例では、多機能機１０が、「画像処理装置」の一例である。
【０１３３】
（変形例６）画像処理サーバ５０によって実行される画像処理の対象は、スキャン画像データＳＩＤでなくてもよく、文書作成ソフト、表編集ソフト、描画作成ソフト等によって生成されるデータであってもよい。即ち、「原画像データ」は、スキャン対象シートのスキャンによって得られるデータに限られず、他の種類のデータであってもよい。
【０１３４】
（変形例７）上記の実施例では、スキャン画像ＳＩは、横方向の左側から右側に向かってセンテンスが進むと共に、縦方向の上側から下側に向かってセンテンスが進む文字列（即ち横書きの文字列）を含む。これに代えて、スキャン画像ＳＩは、縦方向の上側から下側に向かってセンテンスが進むと共に、横方向の右側から左側に向かってセンテンスが進む文字列（即ち縦書きの文字列）を含んでいてもよい。この場合、画像処理サーバ５０は、図４のＳ１６２及びＳ１６４において、横方向の射影ヒストグラムに基づいて、通常、帯状領域を決定することができない。従って、画像処理サーバ５０は、縦方向の射影ヒストグラムを生成して、帯状領域を決定する。その後、画像処理サーバ５０は、横方向の代わりに縦方向を利用し、縦方向の代わりに横方向を利用して、上記の実施例と同様の処理を実行すればよい。本変形例では、縦方向、上側、下側が、それぞれ、「第１方向」、「第１方向の第１側」、「第１方向の第２側」の一例である。横方向、右側、左側が、それぞれ、「第２方向」、「第２方向の第１側」、「第２方向の第２側」の一例である。
【０１３５】
（変形例８）上記の実施例では、画像処理サーバ５０のＣＰＵ６２がプログラム６６（即ちソフトウェア）を実行することによって、図２〜図１６の各処理が実現される。これに代えて、図２〜図１６の各処理のうちの少なくとも１つの処理は、論理回路等のハードウェアによって実現されてもよい。
【０１３６】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１３７】
２：通信システム、４：インターネット、１０：多機能機、５０：画像処理サーバ、５２：ネットワークインターフェース、６０：制御部、６２：ＣＰＵ、６４：メモリ、６６：プログラム、ＳＩ：スキャン画像、ＰＩ：処理済み画像、ＴＯＢ：テキストオブジェクト、ＰＯＢ：写真オブジェクト、ＴＯＡ：テキストオブジェクト領域（テキスト領域）、ＰＯＡ：写真オブジェクト領域、ＬＡ１１〜ＬＡ１４：帯状領域、ｈ１１〜ｈ１４：縦方向の長さ、ＴＡ：目標領域、ＲＡ：再配置領域、ＣＩ：結合画像、ＤＩ１，ＤＩ２，ＤＩ３：分断画像、ＲＩ：再配置画像
【図１】
2015170981.tif 000003
【図２】
2015170981.tif 000004
【図３】
2015170981.tif 000005
【図４】
2015170981.tif 000006
【図５】
2015170981.tif 000007
【図６】
2015170981.tif 000008
【図７】
2015170981.tif 000009
【図８】
2015170981.tif 000010
【図９】
2015170981.tif 000011
【図１０】
2015170981.tif 000012
【図１１】
2015170981.tif 000013
【図１２】
2015170981.tif 000014
【図１３】
2015170981.tif 000015
【図１４】
2015170981.tif 000016
【図１５】
2015170981.tif 000017
【図１６】
2015170981.tif 000018