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