(57)【要約】【課題】  オブジェクトを含む原稿のスキャンによって得られる原画像データを利用して、出力データを適切に生成し得る技術を提供すること。【解決手段】  端末装置は、レシート原稿のスキャンによって得られる表面スキャン画像データを取得する。表面スキャン画像データによって表わされる表面スキャン画像ＦＳＩは、文字列オブジェクトを示す文字列オブジェクト画像を含む。端末装置は、表面スキャン画像ＦＳＩの中から２本の直線ＬＬ１，ＬＲ１を検出し、直線ＬＬ１と文字列オブジェクト画像との関係を特定し、当該関係に基づいて、２本の直線ＬＬ１，ＬＲ１の中から直線ＬＬ１を選択する。そして、端末装置は、直線ＬＬ１が伸びる方向に基づいて、表面スキャン画像データを利用して、出力データを生成する。【選択図】図２
2015195428.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
オブジェクトを含む原稿のスキャンによって得られる第１の原画像データを取得する取得部であって、前記第１の原画像データによって表わされる第１の原画像は、前記オブジェクトを示す第１のオブジェクト画像を含む、前記取得部と、
前記第１の原画像の中から２本以上の直線を検出する検出部と、
前記２本以上の直線のうちの第１の直線と、前記第１のオブジェクト画像と、の関係である第１の関係を特定する特定部と、
前記第１の関係に基づいて、前記２本以上の直線の中から特定の直線を選択する選択部と、
前記特定の直線が伸びる方向に基づいて、前記第１の原画像データを利用して、出力データを生成する出力データ生成部と、
を備える、画像処理装置。
【請求項２】
前記特定部は、さらに、前記２本以上の直線のうちの第２の直線であって、前記第１の直線とは異なる前記第２の直線と、前記第１のオブジェクト画像と、の関係である第２の関係を特定し、
前記選択部は、前記第１の関係と前記第２の関係とに基づいて、前記２本以上の直線の中から前記特定の直線を選択する、請求項１に記載の画像処理装置。
【請求項３】
前記第１の原画像データは、前記第１のオブジェクト画像を表わすオブジェクト画素データと、前記第１のオブジェクト画像の背景を表わす背景画素データと、を含み、
前記画像処理装置は、さらに、
前記第１の原画像データを用いて得られる第１の対象画像データを構成する複数個の対象画素データのうちのＫ個（前記Ｋは２以上の整数）の対象画素データを前記第１の直線に直交する方向に沿って射影して、前記オブジェクト画素データに関連する関連対象画素データの出現頻度の分布を表わす第１の射影ヒストグラムを生成する第１の射影ヒストグラム生成部を備え、
前記特定部は、前記第１の射影ヒストグラムを利用して、前記第１の関係を特定する、請求項１又は２に記載の画像処理装置。
【請求項４】
前記画像処理装置は、さらに、
前記第１の原画像データを構成する各原画素データを変換して、所定の閾値よりも高いエッジ強度を有する高強度画素データと、前記所定の閾値以下のエッジ強度を有する低強度画素データと、によって構成される前記第１の対象画像データを生成する対象画像データ生成部を備え、
前記第１の射影ヒストグラム生成部は、前記第１の対象画像データを構成する前記Ｋ個の対象画素データを前記第１の直線に直交する前記方向に沿って射影して、前記高強度画素データである前記関連画素データの出現頻度の分布を表わす前記第１の射影ヒストグラムを生成する、請求項３に記載の画像処理装置。
【請求項５】
前記第１の関係は、前記第１の射影ヒストグラムを生成するための全ての射影ラインのうち、前記関連対象画像データの出現頻度が第１の閾値以下である射影ラインの数である、請求項３又は４に記載の画像処理装置。
【請求項６】
前記第１の射影ヒストグラム生成部は、前記第１の対象画像データを構成する前記複数個の対象画素データのうちの一部である前記Ｋ個の対象画素データを前記第１の直線に直交する前記方向に沿って射影して、前記第１の射影ヒストグラムを生成する、請求項３から５のいずれか一項に記載の画像処理装置。
【請求項７】
前記画像処理装置は、さらに、
前記第１の原画像データを構成する各原画素データを変換して、所定の閾値よりも高いエッジ強度を有する高強度画素データと、前記所定の閾値以下のエッジ強度を有する低強度画素データと、によって構成される前記第１の対象画像データを生成する対象画像データ生成部を備え、
前記第１の射影ヒストグラム生成部は、前記第１の対象画像データを構成する前記Ｋ個の対象画素データを前記第１の直線に直交する前記方向に沿って射影して、前記高強度画素データである前記関連画素データの出現頻度の分布を表わす前記第１の射影ヒストグラムを生成し、
前記画像処理装置は、さらに、
前記第１の対象画像データを構成する前記複数個の対象画素データを予め決められている第１の方向に沿って射影して、前記高強度画素データの出現頻度の分布を表わす第２の射影ヒストグラムを生成する第２の射影ヒストグラム生成部を備え、
前記第１の射影ヒストグラム生成部は、
前記第２の射影ヒストグラムを利用して、前記第１の対象画像データを構成する前記複数個の対象画素データの中から、前記高強度画素データの出現頻度が第２の閾値以下である射影ライン上の各対象画素データを特定し、
前記第１の対象画像データを構成する前記複数個の対象画素データから特定済みの前記各対象画素データが除かれた前記Ｋ個の対象画素データを前記第１の直線に直交する前記方向に沿って射影して、前記第１の射影ヒストグラムを生成する、請求項６に記載の画像処理装置。
【請求項８】
前記検出部は、さらに、
前記第１の原画像データを用いて得られる第２の対象画像データの一部である第１の部分画像データを利用して、前記第１の部分画像データによって表わされる第１の部分画像の中から、前記２本以上の直線のうちの前記第１の直線を検出し、
前記第２の対象画像データの一部である第２の部分画像データであって、前記第１の部分画像データとは異なる前記第２の部分画像データを利用して、前記第２の部分画像データによって表わされる第２の部分画像の中から、前記２本以上の直線のうちの第２の直線であって、前記第１の直線とは異なる前記第２の直線を検出する、請求項１から７のいずれか一項に記載の画像処理装置。
【請求項９】
前記検出部は、さらに、
前記第１の部分画像データを利用して、前記第１の部分画像に含まれる最長の直線である前記第１の直線を検出し、
前記第２の部分画像データを利用して、前記第２の部分画像に含まれる最長の直線である前記第２の直線を検出する、請求項８に記載の画像処理装置。
【請求項１０】
前記検出部は、前記第１の原画像に含まれる最長の直線と、前記第１の原画像に含まれる二番目に長い直線と、である２本の直線を検出することによって、前記２本以上の直線を検出し、
前記２本の直線は、直交の関係及び平行の関係ではなく、互いに対向する、請求項１から９のいずれか一項に記載の画像処理装置。
【請求項１１】
前記検出部は、前記第１の原画像のうち、前記原稿を示す原稿領域の端に対応する２本の直線を検出することによって、前記２本以上の直線を検出し、
前記２本の直線は、直交の関係及び平行の関係ではなく、互いに対向する、請求項１から１０のいずれか一項に記載の画像処理装置。
【請求項１２】
前記特定部は、前記第１の直線が伸びる方向と予め決められている第２の方向との間の差分角度を回転角度として前記第１の原画像を回転させる場合における前記第１のオブジェクト画像の向きの関係である前記第１の関係を特定する、請求項１から１１のいずれか一項に記載の画像処理装置。
【請求項１３】
前記第１のオブジェクト画像は、１行以上の文字列を含む前記オブジェクトを示し、
前記特定部は、前記第１の直線が伸びる方向と、前記第１のオブジェクト画像によって示される前記１行以上の文字列のうちの１行の文字列を構成する複数個の文字が並ぶ方向と、の間の角度の関係である前記第１の関係を特定し、
前記選択部は、前記第１の関係に基づいて、前記２本以上の直線の中から、前記複数個の文字が並ぶ前記方向に直交する前記特定の直線を選択する、請求項１から１２のいずれか一項に記載の画像処理装置。
【請求項１４】
前記出力データ生成部は、
前記特定の直線が伸びる方向に基づく回転角度で前記第１の原画像が回転された回転済み画像を表わす回転済み画像データを生成し、
前記回転済み画像データを利用して、前記出力データを生成する、請求項１から１３のいずれか一項に記載の画像処理装置。
【請求項１５】
前記出力データ生成部は、
前記回転済み画像データを利用して、前記回転済み画像の中から、前記原稿を示す原稿領域を含む出力領域を決定し、
前記回転済み画像データを利用して、前記出力領域以外の領域が除外された除外済み画像を表わす除外済み画像データを生成し、
前記除外済み画像データを利用して、前記出力データを生成する、請求項１４に記載の画像処理装置。
【請求項１６】
前記出力データ生成部は、
前記第１の原画像内の特定の長さであって、矩形形状を有する前記原稿の特定の辺の長さに関係する前記特定の長さを決定し、
前記第１の原画像内の一部の領域である第１の出力対象領域であって、前記特定の直線に直交する方向に沿った前記特定の長さを有する前記第１の出力対象領域を決定し、
前記第１の出力対象領域に基づいて、前記出力データを生成する、請求項１から１５のいずれか一項に記載の画像処理装置。
【請求項１７】
前記第１の原画像は、前記オブジェクトの一部である第１の部分オブジェクトを示す前記第１のオブジェクト画像を含み、
前記取得部は、さらに、前記原稿のスキャンによって得られる第２の原画像データを取得し、
前記第２の原画像データによって表わされる第２の原画像は、前記オブジェクトの一部である第２の部分オブジェクトであって、前記第１の部分オブジェクトとは異なる前記第２の部分オブジェクトを示す第２のオブジェクト画像を含み、
前記出力データ生成部は、前記特定の直線が伸びる方向に基づいて、前記第１の原画像データを利用し、かつ、前記２本以上の直線のうち、前記特定の直線とは異なる直線が伸びる方向に基づいて、前記第２の原画像データを利用して、前記出力データを生成する、請求項１から１６のいずれか一項に記載の画像処理装置。
【請求項１８】
前記出力データ生成部は、前記第１の原画像内の第１の出力対象領域と前記第２の原画像内の第２の出力対象領域とが結合された結合領域を含む出力画像を表わす前記出力データを生成する、請求項１７に記載の画像処理装置。
【請求項１９】
前記第１の部分オブジェクトを含む第１の部分領域と、前記第２の部分オブジェクトを含む第２の部分領域と、の間の境界で、前記原稿が折り返されている状態で、前記原稿の前記第１の部分領域と前記第２の部分領域とのそれぞれが別個にスキャンされる場合に、
前記第１の原画像は、前記第１の部分オブジェクトを示す前記第１のオブジェクト画像を含み、
前記第２の原画像は、前記第２の部分オブジェクトを示す前記第２のオブジェクト画像を含む、請求項１７又は１８に記載の画像処理装置。
【請求項２０】
画像処理装置のためのコンピュータプログラムであって、
前記画像処理装置に搭載されるコンピュータに、以下の各処理、即ち、
オブジェクトを含む原稿のスキャンによって得られる第１の原画像データを取得する取得処理であって、前記第１の原画像データによって表わされる第１の原画像は、前記オブジェクトを示す第１のオブジェクト画像を含む、前記取得処理と、
前記第１の原画像の中から２本以上の直線を検出する検出処理と、
前記２本以上の直線のうちの第１の直線と、前記第１のオブジェクト画像と、の関係である第１の関係を特定する特定処理と、
前記第１の関係に基づいて、前記２本以上の直線の中から特定の直線を選択する選択処理と、
前記特定の直線が伸びる方向に基づいて、前記第１の原画像データを利用して、出力データを生成する出力データ生成処理と、
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、原画像データを利用して、出力データを生成する画像処理装置を開示する。
【背景技術】
【０００２】
特許文献１には、スキャン画像内の原稿画像の傾きを検出して、当該傾きを補正する技術が開示されている。この技術では、スキャン画像に対して二値化処理及びノイズ除去処理が実行され、原稿画像を構成する各部が値「１」で表現され、背景を構成する各部が値「０」で表現される。次いで、値「１」を含む各列の中から、最も左側に存在する値「１」と最も右側に存在する値「１」との間の距離が最も短い列と、全てが値「１」である列と、が検出される。そして、検出済みの２つの列に基づいて、原稿画像の傾きが補正される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−５７６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、原稿画像の傾きが適切に補正されない可能性があるので、出力データが適切に生成されない可能性がある。本明細書では、オブジェクトを含む原稿のスキャンによって得られる原画像データを利用して、出力データを適切に生成し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される画像処理装置は、取得部と検出部と特定部と選択部と出力データ生成部とを備える。取得部は、オブジェクトを含む原稿のスキャンによって得られる第１の原画像データを取得する。第１の原画像データによって表わされる第１の原画像は、オブジェクトを示す第１のオブジェクト画像を含む。検出部は、第１の原画像の中から２本以上の直線を検出する。特定部は、２本以上の直線のうちの第１の直線と、第１のオブジェクト画像と、の関係である第１の関係を特定する。選択部は、第１の関係に基づいて、２本以上の直線の中から特定の直線を選択する。出力データ生成部は、特定の直線が伸びる方向に基づいて、第１の原画像データを利用して、出力データを生成する。上記の構成によると、画像処理装置は、２本以上の直線の中から選択される特定の直線が伸びる方向に基づいて、出力データを適切に生成し得る。
【０００６】
特定部は、さらに、２本以上の直線のうちの第２の直線であって、第１の直線とは異なる第２の直線と、第１のオブジェクト画像と、の関係である第２の関係を特定してもよい。選択部は、第１の関係と第２の関係とに基づいて、２本以上の直線の中から特定の直線を選択してもよい。この構成によると、画像処理装置は、２本以上の直線の中から特定の直線を適切に選択し得る。
【０００７】
第１の原画像データは、第１のオブジェクト画像を表わすオブジェクト画素データと、第１のオブジェクト画像の背景を表わす背景画素データと、を含んでいてもよい。画像処理装置は、さらに、第１の原画像データを用いて得られる第１の対象画像データを構成する複数個の対象画素データのうちのＫ個（Ｋは２以上の整数）の対象画素データを第１の直線に直交する方向に沿って射影して、オブジェクト画素データに関連する関連対象画素データの出現頻度の分布を表わす第１の射影ヒストグラムを生成する第１の射影ヒストグラム生成部を備えていてもよい。特定部は、第１の射影ヒストグラムを利用して、第１の関係を特定してもよい。この構成によると、画像処理装置は、第１の関係を適切に特定し得る。
【０００８】
画像処理装置は、さらに、第１の原画像データを構成する各原画素データを変換して、所定の閾値よりも高いエッジ強度を有する高強度画素データと、所定の閾値以下のエッジ強度を有する低強度画素データと、によって構成される第１の対象画像データを生成する対象画像データ生成部を備えていてもよい。第１の射影ヒストグラム生成部は、第１の対象画像データを構成するＫ個の対象画素データを第１の直線に直交する方向に沿って射影して、高強度画素データである関連画素データの出現頻度の分布を表わす第１の射影ヒストグラムを生成してもよい。この構成によると、画像処理装置は、第１の射影ヒストグラムを適切に生成し得る。
【０００９】
第１の関係は、第１の射影ヒストグラムを生成するための全ての射影ラインのうち、関連対象画像データの出現頻度が第１の閾値以下である射影ラインの数であってもよい。この構成によると、画像処理装置は、第１の関係を適切に特定し得る。
【００１０】
第１の射影ヒストグラム生成部は、第１の対象画像データを構成する複数個の対象画素データのうちの一部であるＫ個の対象画素データを第１の直線に直交する方向に沿って射影して、第１の射影ヒストグラムを生成してもよい。この構成によると、画像処理装置は、第１の射影ヒストグラムを適切に生成し得る。
【００１１】
画像処理装置は、さらに、第１の対象画像データを構成する複数個の対象画素データを予め決められている第１の方向に沿って射影して、高強度画素データの出現頻度の分布を表わす第２の射影ヒストグラムを生成する第２の射影ヒストグラム生成部を備えていてもよい。第１の射影ヒストグラム生成部は、第２の射影ヒストグラムを利用して、第１の対象画像データを構成する複数個の対象画素データの中から、高強度画素データの出現頻度が第２の閾値以下である射影ライン上の各対象画素データを特定し、第１の対象画像データを構成する複数個の対象画素データから特定済みの各対象画素データが除かれたＫ個の対象画素データを第１の直線に直交する方向に沿って射影して、第１の射影ヒストグラムを生成してもよい。この構成によると、画像処理装置は、第１の射影ヒストグラムを適切に生成し得る。
【００１２】
検出部は、さらに、第１の原画像データを用いて得られる第２の対象画像データの一部である第１の部分画像データを利用して、第１の部分画像データによって表わされる第１の部分画像の中から、２本以上の直線のうちの第１の直線を検出し、第２の対象画像データの一部である第２の部分画像データであって、第１の部分画像データとは異なる第２の部分画像データを利用して、第２の部分画像データによって表わされる第２の部分画像の中から、２本以上の直線のうちの第２の直線であって、第１の直線とは異なる第２の直線を検出してもよい。この構成によると、画像処理装置は、第１の直線と第２の直線とを適切に検出し得る。
【００１３】
検出部は、さらに、第１の部分画像データを利用して、第１の部分画像に含まれる最長の直線である第１の直線を検出し、第２の部分画像データを利用して、第２の部分画像に含まれる最長の直線である第２の直線を検出してもよい。この構成によると、画像処理装置は、第１の直線と第２の直線とを適切に検出し得る。
【００１４】
検出部は、第１の原画像に含まれる最長の直線と、第１の原画像に含まれる二番目に長い直線と、である２本の直線を検出することによって、２本以上の直線を検出してもよい。２本の直線は、直交の関係及び平行の関係ではなく、互いに対向してもよい。この構成によると、画像処理装置は、２本以上の直線を適切に検出し得る。
【００１５】
検出部は、第１の原画像のうち、原稿を示す原稿領域の端に対応する２本の直線を検出することによって、２本以上の直線を検出してもよい。この構成によると、画像処理装置は、２本以上の直線を適切に検出し得る。
【００１６】
特定部は、第１の直線が伸びる方向と予め決められている第２の方向との間の差分角度を回転角度として第１の原画像を回転させる場合における第１のオブジェクト画像の向きの関係である第１の関係を特定してもよい。この構成によると、画像処理装置は、第１の関係を適切に特定し得るので、第１の関係に基づいて、特定の直線を適切に選択し得る。
【００１７】
第１のオブジェクト画像は、１行以上の文字列を含むオブジェクトを示していてもよい。特定部は、第１の直線が伸びる方向と、第１のオブジェクト画像によって示される１行以上の文字列のうちの１行の文字列を構成する複数個の文字が並ぶ方向と、の間の角度の関係である第１の関係を特定してもよい。選択部は、第１の関係に基づいて、２本以上の直線の中から、複数個の文字が並ぶ方向に直交する特定の直線を選択してもよい。この構成によると、画像処理装置は、第１の関係を適切に特定し得るので、第１の関係に基づいて、特定の直線を適切に選択し得る。
【００１８】
出力データ生成部は、特定の直線が伸びる方向に基づく回転角度で第１の原画像が回転された回転済み画像を表わす回転済み画像データを生成し、回転済み画像データを利用して、出力データを生成してもよい。この構成によると、画像処理装置は、出力データを適切に生成し得る。
【００１９】
出力データ生成部は、回転済み画像データを利用して、回転済み画像の中から、原稿を示す原稿領域を含む出力領域を決定し、回転済み画像データを利用して、出力領域以外の領域が除外された除外済み画像を表わす除外済み画像データを生成し、除外済み画像データを利用して、出力データを生成してもよい。この構成によると、画像処理装置は、出力データを適切に生成し得る。
【００２０】
出力データ生成部は、第１の原画像内の特定の長さであって、矩形形状を有する原稿の特定の辺の長さに関係する特定の長さを決定し、第１の原画像内の一部の領域である第１の出力対象領域であって、特定の直線に直交する方向に沿った特定の長さを有する第１の出力対象領域を決定し、第１の出力対象領域に基づいて、出力データを生成してもよい。この構成によると、画像処理装置は、出力データを適切に生成し得る。
【００２１】
第１の原画像は、オブジェクトの一部である第１の部分オブジェクトを示す第１のオブジェクト画像を含んでいてもよい。取得部は、さらに、原稿のスキャンによって得られる第２の原画像データを取得してもよい。第２の原画像データによって表わされる第２の原画像は、オブジェクトの一部である第２の部分オブジェクトであって、第１の部分オブジェクトとは異なる第２の部分オブジェクトを示す第２のオブジェクト画像を含んでいてもよい。出力データ生成部は、特定の直線が伸びる方向に基づいて、第１の原画像データを利用し、かつ、２本以上の直線のうち、特定の直線とは異なる直線が伸びる方向に基づいて、第２の原画像データを利用して、出力データを生成してもよい。この構成によると、画像処理装置は、第１の原画像データと第２の原画像データとを利用して、出力データを適切に生成し得る。
【００２２】
出力データ生成部は、第１の原画像内の第１の出力対象領域と第２の原画像内の第２の出力対象領域とが結合された結合領域を含む出力画像を表わす出力データを生成してもよい。この構成によると、画像処理装置は、第１の原画像データと第２の原画像データとを利用して、出力画像を表わす出力データを適切に生成し得る。
【００２３】
第１の部分オブジェクトを含む第１の部分領域と、第２の部分オブジェクトを含む第２の部分領域と、の間の境界で、原稿が折り返されている状態で、原稿の第１の部分領域と第２の部分領域とのそれぞれが別個にスキャンされる場合に、第１の原画像は、第１の部分オブジェクトを示す第１のオブジェクト画像を含み、第２の原画像は、第２の部分オブジェクトを示す第２のオブジェクト画像を含んでいてもよい。
【００２４】
上記の画像処理装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も新規で有用である。
【図面の簡単な説明】
【００２５】
【図１】通信システムの構成を示す。
【図２】表面スキャン画像と裏面スキャン画像との一例を示す。
【図３】端末装置のドライバプログラムの処理のフローチャートを示す。
【図４】直線検出処理のフローチャートを示す。
【図５】直線検出処理で生成される二値画像、ＯＦＦ変換画像、ＯＮ変換画像、及び、検出用画像の一例を示す。
【図６】直線検出処理で生成される検出用画像、及び、各分断画像の一例を示す。
【図７】評価値算出処理のフローチャートを示す。
【図８】評価値算出処理で生成される除去画像、及び、各回転二値画像の一例を示す。
【図９】出力処理のフローチャートを示す。
【図１０】出力処理で生成される第１の回転対象画像の一例を示す。
【図１１】出力処理で生成される回転画像、及び、第２の回転対象画像の一例を示す。
【図１２】出力処理で生成される結合画像の一例を示す。
【図１３】第２実施例の出力処理を説明するための図を示す。
【発明を実施するための形態】
【００２６】
（第１実施例）
（通信システム２の構成）
図１に示されるように、通信システム２は、スキャナＳＣと端末装置ＴＥとを備える。スキャナＳＣと端末装置ＴＥとは、ＬＡＮ（Local Area Networkの略）４を介して、相互に通信可能である。
【００２７】
（端末装置ＴＥの構成）
端末装置ＴＥは、例えば、公知のＰＣ（Personal Computerの略）であり、ネットワークインターフェース１０と、操作部１２と、表示部１４と、制御部２０と、を備える。ネットワークインターフェース１０は、ＬＡＮ４に接続される。操作部１２は、マウス、キーボード等である。ユーザは、操作部１２を操作することによって、様々な指示を端末装置ＴＥに入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。
【００２８】
制御部２０は、ＣＰＵ２２とメモリ２４とを備える。ＣＰＵ２２は、メモリ２４に格納されている各種のプログラム（例えば、ＯＳ（Operating Systemの略）プログラム、後述のドライバプログラム２６等）に従って、様々な処理（例えば後述の図３の処理）を実行するプロセッサである。メモリ２４に格納されているドライバプログラム２６は、スキャナＳＣのベンダによって提供され、スキャナＳＣに関連する各種の処理を実行するためのプログラムである。ドライバプログラム２６は、例えば、スキャナＳＣと共に出荷されるメディアから端末装置ＴＥにインストールされてもよいし、スキャナＳＣのベンダによって提供されるインターネット上のサーバから端末装置ＴＥにインストールされてもよい。
【００２９】
（スキャナＳＣの構成）
スキャナＳＣは、スキャン対象物をスキャンしてスキャン画像データを生成するスキャン機能を実行可能な周辺機器（即ち、端末装置ＴＥの周辺機器）である。例えば、スキャナＳＣは、スキャン画像データをスキャナＳＣ自身のメモリに記憶させることができる。また、スキャナＳＣは、スキャン画像データを端末装置ＴＥに送信して、当該スキャン画像データを端末装置ＴＥに格納させたり、当該スキャン画像データに対する画像処理を端末装置ＴＥに実行させたりすることができる。
【００３０】
スキャナＳＣは、ＡＤＦ（Auto Document Feeder；自動原稿搬送装置）機構と、複数個の光学素子と、を備える（これらは図示省略）。ＡＤＦ機構は、スキャン対象物を各光学素子に向けて搬送する。各光学素子は、スキャン対象物のカラースキャンを実行可能である。各光学素子は、ＣＣＤイメージセンサ（Charge Coupled Device Image Sensor）であってもよいし、ＣＩＳ（Contact Image Sensor）であってもよい。特に、本実施例では、複数個の光学素子は、ＡＤＦ機構によって搬送されるスキャン対象物の表面をスキャンするための複数個の表面用光学素子と、スキャン対象物の裏面をスキャンするための複数個の裏面用光学素子と、を備える。換言すると、表面用光学素子は、スキャン対象物を所定方向からスキャンする光学素子であり、裏面用光学素子は、スキャン対象物を上記の所定方向の反対方向からスキャンする光学素子である。スキャナＳＣは、スキャン対象物がＡＤＦ機構によって搬送される過程において、スキャン対象物の表面と裏面とのそれぞれを別個にスキャンして、スキャン対象物の表面を表わすスキャン画像データ（即ち、１個の画像ファイル）と、スキャン対象物の裏面を表わすスキャン画像データ（即ち、他の１個の画像ファイル）と、を同時的に生成することができる。
【００３１】
また、本実施例では、特に、スキャナＳＣが、ショッピング等によって得られるレシートであるレシート原稿ＲＤをスキャンして、スキャン画像データを生成する状況に着目する。レシート原稿ＲＤは、比較的に薄い紙であるので、そのままＡＤＦ機構によって搬送されると、レシート原稿ＲＤがＡＤＦ機構に詰まる可能性がある。これを避けるために、袋形状を有するキャリアシートＣＳが利用される。キャリアシートＣＳの表面及び裏面のそれぞれは、矩形形状を有すると共に、ほぼ透明の所定色を有する。キャリアシートＣＳの表面は、表面であることを示す黒色のマーク３０を含み、裏面は、上記のマーク３０を含まない。ただし、キャリアシートＣＳの裏面に破線で示されるように、表面のマーク３０が裏面に透けている。スキャナＳＣは、レシート原稿ＲＤがキャリアシートＣＳに収容された状態で、キャリアシートＣＳをＡＤＦ機構によって搬送する。これにより、スキャナＳＣは、レシート原稿ＲＤのスキャンを適切に実行することができる。
【００３２】
レシート原稿ＲＤは、矩形形状を有する。レシート原稿ＲＤの表面は、白色の背景を有し、黒色の複数行の文字列を含む文字列オブジェクトを含む。文字列オブジェクトに含まれる１行の文字列を構成する複数個の文字（例えば「ＦＦＦ  Ｓｈｏｐ」）は、図１の横方向に沿って並んでいる。また、文字列オブジェクトに含まれる複数行の文字列は、図１の縦方向に沿って並んでいる。なお、以下のいずれの画像（例えば後述の図２の表面スキャン画像ＦＳＩ等）及び画像データにおいても、１行の文字列を構成する複数個の文字が並ぶ方向、当該方向に直交する方向を、それぞれ、「横方向（即ち、左右方向）」、「縦方向（即ち、上下方向）」と呼ぶ。また、図１では図示省略しているが、レシート原稿ＲＤの裏面は、白色の背景を有する（即ち、いわゆる白紙である）。
【００３３】
レシート原稿ＲＤの縦方向の長さは、キャリアシートＣＳに収まらない長さである。従って、レシート原稿ＲＤのスキャンが実行されるべき状況では、レシート原稿ＲＤが折り返された状態で、レシート原稿ＲＤがキャリアシートＣＳに収容される。具体的には、以下のようにして、レシート原稿ＲＤのスキャンが実行される。
【００３４】
ユーザは、レシート原稿ＲＤを示す画像を表わす画像データを端末装置ＴＥに保存することを望む場合に、まず、レシート原稿ＲＤの表面が山になるように、図１に示される折り返し位置でレシート原稿ＲＤを折り返す。次いで、ユーザは、レシート原稿ＲＤの前半部分（即ち、「ＦＦＦ  Ｓｈｏｐ」〜「ＨＨＨ  ＄８０」）がキャリアシートＣＳの表面を向くように、即ち、レシート原稿ＲＤの後半部分（即ち、「ＩＩＩ  ＄５００」〜「ＫＫＫ  ＄１０」）がキャリアシートＣＳの裏面を向くように、レシート原稿ＲＤをキャリアシートＣＳに収容する。そして、ユーザは、キャリアシートＣＳの表面が予め決められている向き（例えば上向き）を向くように、キャリアシートＣＳをスキャナＳＣのＡＤＦ機構にセットする。次いで、ユーザは、端末装置ＴＥのドライバプログラム２６を起動して、レシート原稿ＲＤのスキャンのための指示を端末装置ＴＥに入力する。これにより、スキャン指示が端末装置ＴＥからスキャナＳＣに供給される。スキャナＳＣは、端末装置ＴＥからスキャン指示を取得すると、ＡＤＦ機構にセットされているキャリアシートＣＳを搬送し、キャリアシートＣＳの表面と裏面とのそれぞれをカラースキャンして、表面スキャン画像を表わす表面スキャン画像データと、裏面スキャン画像を表わす裏面スキャン画像データと、を生成する。そして、スキャナＳＣは、これらのスキャン画像データを端末装置ＴＥに供給する。
【００３５】
（スキャン画像の一例；図２）
続いて、図２を参照して、各スキャン画像の内容を説明する。例えば、レシート原稿ＲＤの縦方向の長さが大きいと、レシート原稿ＲＤをうまく折り返せないことがある。即ち、図２に示されるように、レシート原稿ＲＤの左上の頂点と左下の頂点とが一致しないように（換言すると、レシート原稿ＲＤの右上の頂点と右下の頂点とが一致しないように）、レシート原稿ＲＤが折り返されることがある。本実施例では、このような状態のレシート原稿ＲＤを収容しているキャリアシートＣＳがスキャンされる状況を想定している。キャリアシートＣＳの表面には、レシート原稿ＲＤの表面の前半部分（即ち、「ＦＦＦ  Ｓｈｏｐ」〜「ＨＨＨ  ＄８０」）が透けており、キャリアシートＣＳの裏面には、レシート原稿ＲＤの表面の後半部分（即ち、「ＩＩＩ  ＄５００」〜「ＫＫＫ  ＄１０」）が透けている。
【００３６】
レシート原稿ＲＤを収容しているキャリアシートＣＳの表面がカラースキャンされる結果として、表面スキャン画像ＦＳＩを表わす表面スキャン画像データが生成され、当該キャリアシートＣＳの裏面がカラースキャンされる結果として、裏面スキャン画像ＢＳＩを表わす裏面スキャン画像データが生成される。表面スキャン画像データと裏面スキャン画像データとのそれぞれは、複数個の画素データによって構成されるビットマップデータである。特に、各画素データは、ＲＧＢ色空間（即ち、ＲＧＢ座標系）内の座標値として表現される画素値を示す。Ｒ値、Ｇ値、Ｂ値は、それぞれ、「０〜２５５」の範囲内の数値である。表面スキャン画像データを構成する画素データの個数と、裏面スキャン画像データを構成する画素データの個数と、は等しい。
【００３７】
キャリアシートＣＳの表面を越える範囲がスキャンされ、当該範囲が白色を示す画素によって表現されるので、表面スキャン画像ＦＳＩは、当該範囲を示す白色のスキャン背景領域ＳＢＡ１を含む。また、表面スキャン画像ＦＳＩは、キャリアシートＣＳの表面を示すキャリアシート領域ＣＳＡ１と、レシート原稿ＲＤを示すレシート原稿領域ＲＤＡ１と、を含む。キャリアシート領域ＣＳＡ１では、大部分が上記の所定色（即ち、キャリアシートＣＳの色）であるが、マーク３０に対応する部分が黒色である。レシート原稿領域ＲＤＡ１は、レシート原稿ＲＤに含まれる文字列オブジェクトのうちの前半部分である部分文字列オブジェクト（即ち、「ＦＦＦ  Ｓｈｏｐ」〜「ＨＨＨ  ＄８０」）を示す文字列オブジェクト画像を含む。レシート原稿領域ＲＤＡ１の左端を構成する直線ＬＬ１、右端を構成する直線ＬＲ１は、それぞれ、レシート原稿ＲＤの端ＥＬ、端ＥＲに対応する。本実施例では、直線ＬＬ１は、直線ＬＲ１よりも長い。２本の直線ＬＬ１，ＬＲ１は、直交の関係及び平行の関係ではなく、互いに対向する。また、縦方向を基準として得られる直線ＬＬ１の傾きの絶対値と、縦方向を基準として得られる直線ＬＲ１の傾きの絶対値と、は異なる。
【００３８】
表面スキャン画像ＦＳＩと同様に、裏面スキャン画像ＢＳＩは、白色のスキャン背景領域ＳＢＡ２と、キャリアシートＣＳの裏面を示す上記の所定色のキャリアシート領域ＣＳＡ２と、レシート原稿ＲＤを示すレシート原稿領域ＲＤＡ２と、を含む。レシート原稿領域ＲＤＡ２は、レシート原稿ＲＤに含まれる文字列オブジェクトのうちの後半部分である部分文字列オブジェクト（即ち、「ＩＩＩ  ＄５００」〜「ＫＫＫ  ＄１０」）を示す文字列オブジェクト画像を含む。レシート原稿領域ＲＤＡ２の左端を構成する直線ＬＬ２、右端を構成する直線ＬＲ２は、それぞれ、レシート原稿ＲＤの端ＥＲ、端ＥＬに対応する。従って、裏面スキャン画像ＢＳＩ内の直線ＬＲ２は、表面スキャン画像ＦＳＩ内の直線ＬＬ１と同じ長さを有し、縦方向を基準として得られる直線ＬＲ２の傾きの絶対値は、縦方向を基準として得られる直線ＬＬ１の傾きの絶対値に等しい。また、裏面スキャン画像ＢＳＩ内の直線ＬＬ２は、表面スキャン画像ＦＳＩ内の直線ＬＲ１と同じ長さを有し、縦方向を基準として得られる直線ＬＬ２の傾きの絶対値は、縦方向を基準として得られる直線ＬＲ１の傾きの絶対値に等しい。
【００３９】
（端末装置ＴＥのドライバプログラム処理；図３）
続いて、図３を参照して、端末装置ＴＥのドライバプログラム２６によって実行される処理の内容を説明する。上述したように、端末装置ＴＥのＣＰＵ２２は、レシート原稿ＲＤのスキャンのための指示がユーザによって入力される場合に、スキャン指示をスキャナＳＣに供給する。これにより、Ｓ１０において、ＣＰＵ２２は、スキャナＳＣから表面スキャン画像データと裏面スキャン画像データとを取得する。
【００４０】
Ｓ２０では、ＣＰＵ２２は、Ｓ１０で取得された表面スキャン画像データと裏面スキャン画像データとのそれぞれに対する縁部除去処理を実行する。具体的には、ＣＰＵ２２は、図２の表面スキャン画像ＦＳＩを表わす表面スキャン画像データを構成する複数個の画素データのうち、上下左右の各縁部に存在する所定個の画素データを除去して、表面対象画像ＦＴＩを表わす表面対象画像データを生成する。表面対象画像ＦＴＩは、上下左右の各縁部が除去されたことに起因して、スキャン背景領域ＳＢＡ１（図２参照）を含まないと共に、キャリアシート領域ＣＳＡ１の一部（例えばマーク３０を示す部分）を含まない。同様に、ＣＰＵ２２は、図２の裏面スキャン画像ＢＳＩを表わす裏面スキャン画像データに対する縁部除去処理を実行して、裏面対象画像ＢＴＩを表わす裏面対象画像データを生成する。表面対象画像データを構成する画素データの個数と、裏面対象画像データを構成する画素データの個数と、は等しい。
【００４１】
Ｓ３０では、ＣＰＵ２２は、Ｓ２０で生成された表面対象画像データに対する輝度値変換処理を実行する。具体的には、ＣＰＵ２２は、表面対象画像データを構成する複数個の画素データのそれぞれについて、当該画素データが示す画素値（即ち、Ｒ値とＧ値とＢ値）をＳ３０内の数式に従って輝度値（即ち、Ｙ値）に変換して、輝度値を示す新たな画素データを生成する。これにより、輝度値を示す複数個の新たな画素データによって構成される輝度画像データが生成される。輝度値は、「０〜２５５」の範囲内の数値である。
【００４２】
Ｓ３２では、ＣＰＵ２２は、Ｓ３０で生成された輝度画像データに対するエッジ強度決定処理を実行する。具体的には、ＣＰＵ２２は、輝度画像データを構成する複数個の画素データのそれぞれについて、Ｓｏｂｅｌフィルタを利用して、当該画素データが示す輝度値をエッジ強度値に変換して、エッジ強度値を示す新たな画素データを生成する。これにより、エッジ強度値を示す複数個の新たな画素データによって構成されるエッジ強度画像データが生成される。なお、変形例では、ＣＰＵ２２は、Ｓｏｂｅｌフィルタに代えて、１次微分フィルタ、２次微分フィルタ、ラプラシアンフィルタ等を利用して、エッジ強度値を算出してもよい。
【００４３】
Ｓ３４では、ＣＰＵ２２は、Ｓ３２で生成されたエッジ強度画像データに対する二値化処理を実行する。具体的には、ＣＰＵ２２は、エッジ強度画像データを構成する複数個の画素データのそれぞれについて、当該画素データが示すエッジ強度値を「１」又は「０」に変換して、「１」又は「０」を示す新たな画素データを生成する。より具体的には、ＣＰＵ２２は、エッジ強度値が予め決められている閾値（当該閾値はゼロより大きい値）よりも大きい場合には、「１」を示す新たな画素データを生成し、エッジ強度値が上記の閾値以下である場合には、「０」を示す新たな画素データを生成する。これにより、「１」又は「０」を示す複数個の新たな画素データによって構成される二値画像データが生成される。以下では、「１」を示す画素データ、「０」を示す画素データのことを、それぞれ、「ＯＮ画素データ」、「ＯＦＦ画素データ」と呼ぶ。
【００４４】
Ｓ４０では、ＣＰＵ２２は、Ｓ３４で生成された二値画像データを利用して、直線検出処理（後述の図４参照）を実行する。即ち、ＣＰＵ２２は、表面対象画像ＦＴＩ内において、レシート原稿領域ＲＤＡ１の左端に対応する直線ＬＬ１（即ち、当該左端を画定する直線ＬＬ１）と、レシート原稿領域ＲＤＡ１の右端に対応する直線ＬＲ１（即ち、当該右端を画定する直線ＬＲ１）と、を検出する。２本の直線ＬＬ１，ＬＲ１は、表面対象画像ＦＴＩに含まれる最長の直線ＬＬ１と、表面対象画像ＦＴＩに含まれる二番目に長い直線ＬＲ１と、である。２本の直線ＬＬ１，ＬＲ１は、直交の関係及び平行の関係ではなく、互いに対向する。
【００４５】
Ｓ６０では、ＣＰＵ２２は、Ｓ４０で検出された２本の直線ＬＬ１，ＬＲ１を利用して、評価値算出処理（後述の図７参照）を実行する。即ち、ＣＰＵ２２は、Ｓ４０で検出された２本の直線ＬＬ１，ＬＲ１に対応する２個の評価値を算出する。そして、ＣＰＵ２２は、２個の評価値を利用して、２本の直線ＬＬ１，ＬＲ１の中から、表面対象画像ＦＴＩを回転させるための基準となるべき一方の直線（例えばＬＬ１）を選択する。ＣＰＵ２２は、さらに、２個の評価値を利用して、２本の直線ＬＬ１，ＬＲ１の中から、裏面対象画像ＢＴＩを回転させるための基準となるべき他方の直線（例えばＬＲ１）を選択する。
【００４６】
Ｓ１００では、ＣＰＵ２２は、表面対象画像データと裏面対象画像データとを利用して、出力処理（後述の図９参照）を実行する。即ち、ＣＰＵ２２は、表面対象画像データと裏面対象画像データとを利用して結合画像データを生成し、当該結合画像データを表示部１４（図１参照）に供給する。これにより、ユーザは、結合画像データによって表わされる結合画像、即ち、折り返された状態でスキャンされたレシート原稿ＲＤを示す出力画像を見ることができる。Ｓ１００が終了すると、図３の処理が終了する。
【００４７】
（直線検出処理；図４）
続いて、図４を参照して、図３のＳ４０の直線検出処理の内容を説明する。Ｓ４２では、ＣＰＵ２２は、図３のＳ３４で生成された二値画像データに対するＯＦＦ変換処理を実行する。具体的には、ＣＰＵ２２は、二値画像データを構成する複数個のＯＦＦ画素データのそれぞれについて、当該ＯＦＦ画素データを中心とする９個の画素データ（即ち、横方向３個×縦方向３個の画素データ）に含まれる全てのＯＮ画素データをＯＦＦ画素データに変更する。これにより、「１」又は「０」を示す複数個の画素データによって構成されるＯＦＦ変換画像データが生成される。
【００４８】
Ｓ４４では、Ｓ４２で生成されたＯＦＦ変換画像データに対するＯＮ変換処理を実行する。具体的には、ＣＰＵ２２は、ＯＦＦ変換画像データを構成する複数個のＯＮ画素データのそれぞれについて、当該ＯＮ画素データを中心とする２５個の画素データ（即ち、横方向５個×縦方向５個の画素データ）に含まれる全てのＯＦＦ画素データをＯＮ画素データに変更する。これにより、「１」又は「０」を示す複数個の画素データによって構成されるＯＮ変換画像データが生成される。
【００４９】
なお、Ｓ４２、Ｓ４４の処理の対象の画素データの個数は、それぞれ、「９」、「２５」に限られず、他の数であってもよい。一般的に言うと、Ｓ４２では、ＣＰＵ２２は、ＯＦＦ画素データを中心とするＭ×Ｍ個の画素データ（Ｍは２以上の整数）に含まれる全てのＯＮ画素データをＯＦＦ画素データに変更すればよい。また、Ｓ４４では、ＣＰＵ２２は、ＯＮ画素データを中心とするＮ×Ｎ個の画素データ（Ｎは２以上の整数）に含まれる全てのＯＦＦ画素データをＯＮ画素データに変更すればよい。また、Ｎは、Ｍより大きい値であることが好ましいが、Ｍ以下の値であってもよい。
【００５０】
Ｓ４６では、ＣＰＵ２２は、図３のＳ３４で生成された二値画像データと、Ｓ４４で生成されたＯＮ変換画像データと、を利用して、検出用画像データを生成する。具体的には、ＣＰＵ２２は、まず、二値画像データを構成する複数個の画素データの中から、ＯＮ変換画像データを構成する各ＯＮ画素データに対応する各位置に存在する各画素データを特定する。そして、ＣＰＵ２２は、特定済みの各画素データのうちの全てのＯＮ画素データをＯＦＦ画素データに変更する。これにより、「１」又は「０」を示す複数個の画素データによって構成される検出用画像データが生成される。
【００５１】
Ｓ４８では、ＣＰＵ２２は、Ｓ４６で生成された検出用画像データによって表わされる検出用画像内において、レシート原稿ＲＤを示すレシート原稿領域の左端位置及び右端位置を決定する。
【００５２】
Ｓ５０では、ＣＰＵ２２は、まず、Ｓ４６で生成された検出用画像データのうち、Ｓ４８で決定された左端位置よりも左側に存在する部分画像データと、Ｓ４８で決定された右端位置よりも右側に存在する部分画像データと、を除去する。そして、ＣＰＵ２２は、各部分画像データが除去された後の検出用画像データの横方向の中間位置、即ち、Ｓ４８で決定された右端位置及び左端位置の中間位置で当該検出用画像データを分断して、左側分断画像データと右側分断画像データとを生成する。
【００５３】
Ｓ５２では、ＣＰＵ２２は、Ｓ５０で生成された左側分断画像データに対するＨｏｕｇｈ変換処理を実行して、左側分断画像データによって表わされる左側分断画像内の最長の直線を検出する。Ｈｏｕｇｈ変換処理は、多数の仮想線を画像内に配置し、各仮想線上の連続するＯＮ画素（即ち、ＯＮ画素データによって表わされる画素）の数を特定し、ＯＮ画素の数が最も多い仮想線を最長の直線として検出する処理である。また、ＣＰＵ２２は、Ｓ５０で生成された右側分断画像データに対するＨｏｕｇｈ変換処理を実行して、右側分断画像データによって表わされる右側分断画像内の最長の直線を検出する。これにより、ＣＰＵ２２は、Ｓ４６で生成された検出用画像データによって表わされる検出用画像内において、最長の直線と、二番目に長い直線と、を検出することができる。換言すると、ＣＰＵ２２は、図２の表面スキャン画像ＦＳＩ内において、最長の直線ＬＬ１と、二番目に長い直線ＬＲ１と、を検出することができる。Ｓ５２が終了すると、図４の処理が終了する。
【００５４】
（直線検出処理の具体的な内容；図５）
続いて、図５を参照して、図４の直線検出処理の具体的な内容を説明する。図５は、図３のＳ３４で生成される二値画像データＢＩＤと、図４のＳ４２で生成されるＯＦＦ変換画像データＯＦＩＤと、Ｓ４４で生成されるＯＮ変換画像データＯＮＩＤと、Ｓ４６で生成される検出用画像データＦＤＩＤと、を示す。これらの各画像データでは、全ての画素データが示されているのではなく、一部の画素データ（即ち、横方向７個×縦方向７個＝４９個の画素データ）のみが示されている。
【００５５】
二値画像データＢＩＤによって表わされる二値画像ＢＩでは、ＯＮ画素データによって表わされるＯＮ画素、ＯＦＦ画素データによって表わされるＯＦＦ画素が、それぞれ、黒色、白色で表現されている。例えば、レシート原稿ＲＤの端を構成する画素、及び、文字列オブジェクトを構成する画素は、エッジ強度が比較的に高くなる。従って、二値画像ＢＩでは、これらの画素が黒色（即ち、ＯＮ画素）で表現されている。ＯＮ画素、ＯＦＦ画素が、それぞれ、黒色、白色で表現される点は、以下の各画像ＯＦＩ，ＯＮＩ，ＦＤＩ等でも同様である。
【００５６】
図４のＳ４２では、ＣＰＵ２２は、二値画像データＢＩＤに対するＯＦＦ変換処理を実行して、ＯＦＦ変換画像データＯＦＩＤを生成する。例えば、二値画像データＢＩＤを構成する１個のＯＦＦ画素データＰ１を中心とする９個の画素データ（即ち、太線で囲まれた各画素データ）に含まれる全てのＯＮ画素データがＯＦＦ画素データに変更される。ＯＦＦ変換処理が実行されると、レシート原稿ＲＤの端を構成するＯＮ画素、及び、文字列オブジェクトを構成する一部のＯＮ画素が、ＯＦＦ画素になり得る。従って、ＯＦＦ変換画像ＯＦＩでは、レシート原稿ＲＤの端が白色で表現されており（即ち、消えており）、文字列オブジェクトのうちの各文字が黒色の細い線で表現されている。
【００５７】
次いで、Ｓ４４では、ＣＰＵ２２は、ＯＦＦ変換画像データＯＦＩＤに対するＯＮ変換処理を実行して、ＯＮ変換画像データＯＮＩＤを生成する。例えば、ＯＦＦ変換画像データＯＦＩＤを構成する１個のＯＮ画素データＰ２を中心とする２５個の画素データ（即ち、太線で囲まれた各画素データ）に含まれる全てのＯＦＦ画素データがＯＮ画素データに変更される。Ｓ４４のＯＮ変換処理の対象の画素数（即ち、２５個）は、Ｓ４２のＯＦＦ変換処理の対象の画素数（即ち、９個）よりも多い。このために、ＯＮ変換画像ＯＮＩに含まれる各文字を構成する線は、二値画像ＢＩに含まれる各文字を構成する線よりも大きくなり得る。従って、ＯＮ変換画像ＯＮＩでは、文字列オブジェクトを構成する各文字が黒色の太い線で表現されている。
【００５８】
次いで、Ｓ４６では、ＣＰＵ２２は、二値画像データＢＩＤを構成する複数個の画素データの中から、ＯＮ変換画像データＯＮＩＤを構成する各ＯＮ画素データに対応する各位置に存在する各画素データを特定する。そして、ＣＰＵ２２は、特定済みの各画素データのうちの全てのＯＮ画素データをＯＦＦ画素データに変更して、検出用画像データＦＤＩＤを生成する。これにより、検出用画像ＦＤＩでは、二値画像ＢＩ内の比較的にＯＮ画素の密度が高い高密度領域がＯＦＦ画素で表現され、二値画像ＢＩ内の比較的にＯＮ画素の密度が低い低密度領域がＯＮ画素で表現される。即ち、検出用画像ＦＤＩでは、文字列オブジェクトを構成する高密度領域がＯＦＦ画素で表現され、二値画像ＢＩ内のレシート原稿ＲＤの端を構成する低密度領域がＯＮ画素で表現される。
【００５９】
Ｈｏｕｇｈ変換処理の対象の画像内のＯＮ画素の数が多いと、通常、Ｈｏｕｇｈ変換処理の処理負荷が高い。検出用画像ＦＤＩでは、レシート原稿ＲＤに含まれる文字列オブジェクトがＯＦＦ画素として表現されるので、図４のＳ５２のＨｏｕｇｈ変換処理の対象の画像内のＯＮ画素の数が少なくなる。このために、ＣＰＵ２２は、Ｈｏｕｇｈ変換処理を迅速に実行し得る。
【００６０】
（直線検出処理の具体的な内容の続き；図６）
続いて、図６を参照して、図５の続きを説明する。図４のＳ４８では、ＣＰＵ２２は、Ｓ４６で生成される検出用画像データＦＤＩＤを利用して、射影ヒストグラムＨ４８を生成する。射影ヒストグラムＨ４８は、検出用画像データを構成する複数個の画素データを縦方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。
【００６１】
次いで、ＣＰＵ２２は、射影ヒストグラムＨ４８の左端から右側に向かう過程において、予め決められている閾値Ｔｈ１（Ｔｈ１はゼロより大きい値）以上の出現頻度を最初に示す位置ＷＬを特定すると共に、射影ヒストグラムＨ４８の右端から左側に向かう過程において、閾値Ｔｈ１以上の頻度を最初に示す位置ＷＲを特定する。これにより、ＣＰＵ２２は、検出用画像ＦＤＩのうち、レシート原稿ＲＤを示すレシート原稿領域の左端の近傍の位置ＷＬと、レシート原稿領域の右端の近傍の位置ＷＲと、を特定することができる。特に、ゼロより大きい閾値Ｔｈ１に基づいて各位置ＷＬ，ＷＲが決定されるので、ゼロより高くかつ閾値Ｔｈ１より低い頻度を有する位置が、レシート原稿領域の左端又は右端の近傍の位置として特定されない。これにより、例えば、汚れ、ゴミ等のノイズがキャリアシートＣＳに存在する場合に、当該ノイズの位置が、レシート原稿領域の左端又は右端の近傍の位置として特定されない。従って、レシート原稿領域の左端の近傍の位置及び右端の近傍の位置が適切に特定される。ただし、ゼロより大きい閾値Ｔｈ１に基づいて各位置ＷＬ，ＷＲが決定されるので、位置ＷＬは、レシート原稿領域の左端よりも右側の位置であり、位置ＷＲは、レシート原稿領域の右端よりも左側の位置である。即ち、各位置ＷＬ，ＷＲは、レシート原稿領域の内側の位置である。従って、ＣＰＵ２２は、位置ＷＬから所定長さ（例えば２０画素）だけ左側の位置をレシート原稿領域の左端位置として決定し、位置ＷＲから上記の所定長さだけ右側の位置をレシート原稿領域の右端位置として決定する。
【００６２】
次いで、Ｓ５０では、ＣＰＵ２２は、左側分断画像ＬＤＩを表わす左側分断画像データと、右側分断画像ＲＤＩを表わす右側分断画像データと、を生成する。検出用画像ＦＤＩのうち、レシート原稿領域の左端位置よりも左側に存在する部分画像が除去されて、左側分断画像ＬＤＩが得られる。また、検出用画像ＦＤＩのうち、レシート原稿領域の右端位置よりも右側に存在する部分画像が除去されて、右側分断画像ＲＤＩが得られる。このように、本実施例では、ＣＰＵ２２は、Ｈｏｕｇｈ変換処理の対象の画像のサイズを小さくするので、Ｈｏｕｇｈ変換処理を迅速に実行し得る。
【００６３】
次いで、Ｓ５２では、ＣＰＵ２２は、左側分断画像ＬＤＩに対するＨｏｕｇｈ変換処理を実行して、左側分断画像ＬＤＩ内の最長の直線ＬＬ１を検出し、右側分断画像ＲＤＩに対するＨｏｕｇｈ変換処理を実行して、右側分断画像ＲＤＩ内の最長の直線ＬＲ１を検出する。直線ＬＬ１と縦方向（即ち、図６の上下方向）との間の角度はαであり、直線ＬＲ１と縦方向との間の角度はβである。仮に、検出用画像ＦＤＩが分断されずに、検出用画像ＦＤＩに対してＨｏｕｇｈ変換処理が実行される構成を採用すると、以下の事象が起こり得る。例えば、レシート原稿ＲＤの左端の直線ＥＬ（図２参照）が、１本の直線として適切にスキャンされずに、２重線としてスキャンされる可能性がある。この場合、検出用画像ＦＤＩ内の左側の領域に最長の直線と２番目に長い直線が存在し得るので、それらの２本の直線が検出され得る。即ち、レシート原稿ＲＤの右端の直線ＥＲ（図２参照）に対応する直線が検出されない事象が起こり得る。この場合、図３のＳ１００において、適切な結合画像が出力されない。これに対し、本実施例では、検出用画像ＦＤＩが左側分断画像ＬＤＩ及び右側分断画像ＲＤＩに分断され、当該画像ＬＤＩ，ＲＤＩのそれぞれから最長の直線ＬＬ１，ＬＲ１が検出される。従って、レシート原稿ＲＤの左端に対応する直線ＬＬ１と、レシート原稿ＲＤの右端に対応する直線ＬＲ１と、が適切に検出される。
【００６４】
（評価値算出処理；図７）
続いて、図７を参照して、図３のＳ６０の評価値算出処理の内容を説明する。Ｓ６２では、ＣＰＵ２２は、図３のＳ３４で生成された二値画像データに対する行間除去処理を実行する。具体的には、ＣＰＵ２２は、二値画像データを構成する複数個の画素データのうち、各文字列の行間を表わす画素データを除去する。これにより、「１」又は「０」を示す複数個の画素データによって構成される除去画像データが生成される。
【００６５】
Ｓ６４では、ＣＰＵ２２は、Ｓ６２で生成された除去画像データと、図４のＳ５２で検出された２本の直線のうちの一方の直線（例えば図６のＬＬ１）が伸びる方向と、を利用して、第１の回転二値画像データを生成する。具体的には、ＣＰＵ２２は、上記の一方の直線が伸びる方向と縦方向とが一致するように、除去画像データによって表わされる除去画像を回転させて得られる第１の回転二値画像を表わす第１の回転二値画像データを生成する。これにより、「１」又は「０」を示す複数個の画素データによって構成される第１の回転二値画像データが生成される。
【００６６】
Ｓ６６では、ＣＰＵ２２は、Ｓ６４で生成された第１の回転二値画像データを利用して、評価値Ｖ１を算出する。評価値Ｖ１は、第１の回転二値画像内における文字列オブジェクト画像の向きに関係する値である。具体的には、評価値Ｖ１は、１行の文字列を構成する複数個の文字が横方向に沿って並ぶ場合に、比較的に大きい値を有し、当該複数個の文字が横方向に沿って並ばない場合（即ち、当該複数個の文字が斜め方向に沿って並ぶ場合）に、比較的に小さい値を示す。
【００６７】
Ｓ７４では、ＣＰＵ２２は、Ｓ６２で生成された除去画像データと、図４のＳ５２で検出された２本の直線のうちの他方の直線（例えば図６のＬＲ１）が伸びる方向と、を利用して、第２の回転二値画像データを生成する。具体的には、ＣＰＵ２２は、上記の他方の直線が伸びる方向と縦方向とが一致するように、除去画像データによって表わされる除去画像を回転させて得られる第２の回転二値画像を表わす第２の回転二値画像データを生成する。これにより、「１」又は「０」を示す複数個の画素データによって構成される第２の回転二値画像データが生成される。
【００６８】
Ｓ７６では、ＣＰＵ２２は、Ｓ７４で生成された第２の回転二値画像データを利用して、評価値Ｖ２を算出する。評価値Ｖ２は、第２の回転二値画像内における文字列オブジェクト画像の向きに関係する値である。
【００６９】
Ｓ７８では、ＣＰＵ２２は、Ｓ６６で算出された評価値Ｖ１がＳ７６で算出された評価値Ｖ２よりも大きいのか否かを判断する。ＣＰＵ２２は、評価値Ｖ１が評価値Ｖ２よりも大きいと判断する場合（Ｓ７８でＹＥＳ）に、Ｓ８０において、表面対象画像ＦＴＩ（図３参照）に対応する直線（以下では「表面の直線」と呼ぶ）として、Ｓ６４で利用された一方の直線（例えばＬＬ１）を選択し、裏面対象画像ＢＴＩに対応する直線（以下では「裏面の直線」と呼ぶ）として、Ｓ７４で利用された他方の直線（例えばＬＲ１）を選択する。また、ＣＰＵ２２は、評価値Ｖ１が評価値Ｖ２以下であると判断する場合（Ｓ７８でＮＯ）に、Ｓ８２において、表面の直線として、Ｓ７４で利用された他方の直線を選択し、裏面の直線として、Ｓ６４で利用された一方の直線を選択する。Ｓ８０又はＳ８２が終了すると、図７の処理が終了する。
【００７０】
（評価値算出処理の具体的な内容；図８）
続いて、図８を参照して、図７の評価値算出処理の具体的な内容を説明する。図７のＳ６２では、ＣＰＵ２２は、まず、二値画像ＢＩを表わす二値画像データを利用して、射影ヒストグラムＨ６２を生成する。射影ヒストグラムＨ６２は、二値画像データを構成する複数個の画素データを横方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。次いで、ＣＰＵ２２は、射影ヒストグラムＨ６２において、ＯＮ画素データの出現頻度が予め決められている閾値Ｔｈ２（Ｔｈ２はゼロより大きい値）以下である各射影ライン（即ち、縦方向の各領域）を除去対象として決定する。当該各領域は、各文字列の行間に対応する領域である。そして、ＣＰＵ２２は、二値画像データを構成する複数個の画素データのうち、除去対象の各領域を表わす各画素データを除去する。これにより、除去画像ＤＩを表わす除去画像データが生成される。なお、図８では、除去画像ＤＩにおいて、レシート原稿ＲＤを示すレシート原稿領域の端に対応する直線が図示省略されている。
【００７１】
Ｓ６４では、ＣＰＵ２２は、検出済みの直線ＬＬ１と縦方向とが一致するように、除去画像ＤＩを回転させて得られる第１の回転二値画像ＲＢＩ１を表わす第１の回転二値画像データを生成する。即ち、第１の回転二値画像ＲＢＩ１は、直線ＬＬ１と縦方向との間の角度αを回転角度として除去画像ＤＩを時計回りに回転させて得られる画像である。
【００７２】
Ｓ６６では、ＣＰＵ２２は、第１の回転二値画像ＲＢＩ１を表わす第１の回転二値画像データを利用して、射影ヒストグラムＨ６６を生成する。射影ヒストグラムＨ６６は、第１の回転二値画像データを構成する複数個の画素データを横方向（即ち、直線ＬＬ１に直交する方向）に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。第１の回転二値画像ＲＢＩ１では、文字列オブジェクト画像がＯＮ画素で表現されるので、射影ヒストグラムＨ６６は、文字列オブジェクト画像を表わす画素データの出現頻度の分布を表わすものであると言える。次いで、ＣＰＵ２２は、射影ヒストグラムＨ６６において、ＯＮ画素データの出現頻度が予め決められている閾値Ｔｈ３（Ｔｈ３はゼロより大きい値）以下である低頻度射影ラインの総数（即ち、縦方向の長さ）を評価値Ｖ１として算出する。当該低頻度射影ラインは、各文字列の行間に対応する。第１の回転二値画像ＲＢＩ１では、１行の文字列を構成する複数個の文字が横方向に沿って並んでいるので、行間に対応する低頻度射影ラインの数が大きくなり、この結果、評価値Ｖ１が大きくなる。
【００７３】
Ｓ７４では、ＣＰＵ２２は、検出済みの直線ＬＲ１と縦方向とが一致するように、除去画像ＤＩを回転させて得られる第２の回転二値画像ＲＢＩ２を表わす第２の回転二値画像データを生成する。即ち、第２の回転二値画像ＲＢＩ２は、直線ＬＲ１と縦方向との間の角度βを回転角度として除去画像ＤＩを反時計回りに回転させて得られる画像である。
【００７４】
Ｓ７６では、ＣＰＵ２２は、Ｓ６６と同様に、第２の回転二値画像ＲＢＩ２を表わす第２の回転二値画像データを利用して、射影ヒストグラムＨ７６を生成し、射影ヒストグラムＨ７６において、低頻度射影ラインの総数を評価値Ｖ２として算出する。なお、射影ヒストグラムＨ６６は、第２の回転二値画像データを構成する複数個の画素データを横方向（即ち、直線ＬＲ１に直交する方向）に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。第２の回転二値画像ＲＢＩ２では、１行の文字列を構成する複数個の文字が斜め方向に沿って並んでいるので、行間に対応する低頻度射影ラインの数が小さく、この結果、評価値Ｖ２が小さくなる（図８の例では評価値Ｖ２がゼロである）。
【００７５】
図８の例では、評価値Ｖ１が評価値Ｖ２よりも大きいと判断されるので（Ｓ７８でＹＥＳ）に、Ｓ８０において、表面の直線として直線ＬＬ１が選択される。換言すると、図２の表面スキャン画像ＦＳＩにおいて、１行の文字列を構成する複数個の文字が並ぶ方向に直交する直線ＬＬ１が表面の直線として選択される。また、裏面の直線として直線ＬＲ１が選択される。この結果、後の処理において、直線ＬＬ１と縦方向との間の角度αに基づいて表面対象画像ＦＴＩの回転が実行され、直線ＬＲ１と縦方向との間の角度βに基づいて裏面対象画像ＢＴＩの回転が実行される（図３のＳ１００、図９のＳ１０２、Ｓ１１２）。
【００７６】
上述したように、本実施例では、二値画像ＢＩそのものを回転させて得られる回転二値画像（以下では「比較例の回転二値画像」と呼ぶ）に基づいて、評価値が算出されるのではなく、除去画像ＤＩを回転させて得られる回転二値画像ＲＢＩ１，ＲＢＩ２に基づいて、評価値が算出される。二値画像ＢＩでは文字列の行間が大きいので、角度βに基づいて二値画像ＢＩを回転させて得られる比較例の回転二値画像でも、低頻度射影ラインの数が比較的に大きくなり、この結果、評価値が比較的に大きくなる。これに対し、本実施例の除去画像ＤＩでは文字列の行間が小さいので、角度βに基づいて除去画像ＤＩを回転させて得られる第２の回転二値画像ＲＢＩ２では、低頻度射影ラインの数が極めて小さくなり、この結果、評価値Ｖ２が極めて小さくなる（図８の例では評価値Ｖ２がゼロである）。このように、比較対象の２個の評価値Ｖ１，Ｖ２のうちの小さい方の評価値Ｖ２の値が極めて小さくなるので、評価値Ｖ１，Ｖ２の比較の精度が高くなる。この結果、ＣＰＵ２２は、表面の直線及び裏面の直線を適切に選択することができる。
【００７７】
（出力処理；図９）
続いて、図９を参照して、図３のＳ１００の出力処理の内容を説明する。Ｓ１０２では、ＣＰＵ２２は、図３のＳ２０で生成された表面対象画像データと、図７のＳ８０又はＳ８２で選択された表面の直線が伸びる方向と、を利用して、第１の回転対象画像データを生成する。具体的には、ＣＰＵ２２は、上記の表面の直線が伸びる方向と縦方向とが一致するように、表面対象画像データによって表わされる表面対象画像ＦＴＩを回転させて得られる第１の回転対象画像を表わす第１の回転対象画像データを生成する。これにより、ＲＧＢ値を示す複数個の画素データによって構成される第１の回転対象画像データが生成される。
【００７８】
Ｓ１０４では、ＣＰＵ２２は、Ｓ１０２で生成された第１の回転対象画像データに対して、輝度値変換処理、エッジ強度決定処理、及び、二値化処理を順次実行する。これらの処理は、図３のＳ３０〜Ｓ３４と同様である。これにより、「１」又は「０」を示す複数個の画素データによって構成される表面二値画像データが生成される。
【００７９】
Ｓ１０６では、ＣＰＵ２２は、Ｓ１０４で生成された表面二値画像データを利用して、Ｓ１０２で生成された第１の回転対象画像データによって表わされる第１の回転対象画像内において、レシート原稿ＲＤを示す表面出力対象領域を決定する。次いで、ＣＰＵ２２は、Ｓ１０２で生成された第１の回転対象画像データのうち、表面出力対象領域を表わす表面部分画像データを取得する。
【００８０】
Ｓ１１０では、ＣＰＵ２２は、図３のＳ２０で生成された裏面対象画像データを１８０度回転させて、回転画像データを生成する。
【００８１】
Ｓ１１２では、ＣＰＵ２２は、Ｓ１１０で生成された回転画像データと、図７のＳ８０又はＳ８２で選択された裏面の直線が伸びる方向と、を利用して、第２の回転対象画像データを生成する。具体的には、ＣＰＵ２２は、上記の裏面の直線が伸びる方向と縦方向とが一致するように、回転画像データによって表わされる回転画像を回転させて得られる第２の回転対象画像を表わす第２の回転対象画像データを生成する。これにより、ＲＧＢ値を示す複数個の画素データによって構成される第２の回転対象画像データが生成される。
【００８２】
Ｓ１１４では、ＣＰＵ２２は、Ｓ１１２で生成された第２の回転対象画像データに対して、輝度値変換処理、エッジ強度決定処理、及び、二値化処理を順次実行する。これらの処理は、図３のＳ３０〜Ｓ３４と同様である。これにより、「１」又は「０」を示す複数個の画素データによって構成される裏面二値画像データが生成される。
【００８３】
Ｓ１１６では、ＣＰＵ２２は、Ｓ１１４で生成された裏面二値画像データを利用して、Ｓ１１２で生成された第２の回転対象画像データによって表わされる第２の回転対象画像内において、レシート原稿ＲＤを示す裏面出力対象領域を決定する。次いで、ＣＰＵ２２は、Ｓ１１２で生成された第２の回転対象画像データのうち、裏面出力対象領域を表わす裏面部分画像データを取得する。
【００８４】
Ｓ１２０では、ＣＰＵ２２は、Ｓ１０６で取得された表面部分画像データと、Ｓ１１６で取得された裏面部分画像データと、を結合して、結合画像を表わす結合画像データを生成する。
【００８５】
Ｓ１２２では、ＣＰＵ２２は、結合画像データを表示部１４（図１参照）に供給する。これにより、ユーザは、結合画像データによって表わされる結合画像、即ち、折り返された状態でスキャンされたレシート原稿ＲＤを示す出力画像を見ることができる。Ｓ１２２が終了すると、図９の処理が終了する。
【００８６】
（出力処理の具体的な内容；図１０）
続いて、図１０を参照して、図９の出力処理の具体例を説明する。図９のＳ１０２では、ＣＰＵ２２は、表面の直線ＬＬ１が伸びる方向と縦方向とが一致するように、表面対象画像ＦＴＩを回転させて得られる第１の回転対象画像ＲＴＩ１を表わす第１の回転対象画像データを生成する。即ち、図６の角度αを回転角度として表面対象画像ＦＴＩを時計回り方向に回転させて得られる第１の回転対象画像ＲＴＩ１を表わす第１の回転対象画像データが生成される。
【００８７】
Ｓ１０６では、ＣＰＵ２２は、Ｓ１０４で生成される表面二値画像データを利用して、射影ヒストグラムＨ１０６Ａを生成する。射影ヒストグラムＨ１０６Ａは、表面二値画像データを構成する複数個の画素データを縦方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。次いで、ＣＰＵ２２は、図６の射影ヒストグラムＨ４８に対して実行された手法と同様の手法を利用して、第１の回転対象画像ＲＴＩ１内において、レシート原稿領域ＲＤＡ１’の左端の近傍の位置ＷＬ１と、レシート原稿領域ＲＤＡ１’の右端の近傍の位置ＷＲ１と、を特定する。各位置ＷＬ１，ＷＲ１は、レシート原稿領域ＲＤＡ１’の内側の位置である。
【００８８】
また、ＣＰＵ２２は、Ｓ１０４で生成される表面二値画像データを利用して、射影ヒストグラムＨ１０６Ｂを生成する。射影ヒストグラムＨ１０６Ｂは、表面二値画像データを構成する複数個の画素データを横方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。次いで、ＣＰＵ２２は、射影ヒストグラムＨ１０６Ｂの上端から下側に向かう過程において、閾値Ｔｈ１以上の出現頻度を最初に示す位置ＨＵ１を特定すると共に、射影ヒストグラムＨ１０６Ｂの下端から上側に向かう過程において、閾値Ｔｈ１以上の頻度を最初に示す位置ＨＬ１を特定する。これにより、ＣＰＵ２２は、第１の回転対象画像ＲＴＩ１内において、レシート原稿領域ＲＤＡ１’の上端の近傍の位置ＨＵ１と、レシート原稿領域ＲＤＡ１’の下端の近傍の位置ＨＬ１と、を特定する。各位置ＨＵ１，ＨＬ１は、レシート原稿領域ＲＤＡ１’の内側の位置である。
【００８９】
次いで、ＣＰＵ２２は、第１の回転対象画像ＲＴＩ１のうち、特定済みの４個の位置ＷＬ１，ＷＲ１，ＨＵ１，ＨＬ１によって画定される矩形領域が上下左右のそれぞれの向きに所定サイズ（例えば２０画素））だけ拡大された拡大領域を、表面出力対象領域ＦＯＡとして決定する。上述したように、各位置ＷＬ１，ＷＲ１，ＨＵ１，ＨＬ１は、レシート原稿領域ＲＤＡ１’の内側の位置である。ただし、各位置ＷＬ１，ＷＲ１，ＨＵ１，ＨＬ１によって画定される矩形領域が拡大された拡大領域が表面出力対象領域ＦＯＡとして決定されるので、レシート原稿領域ＲＤＡ１’の全体を含む表面出力対象領域ＦＯＡが決定される。そして、ＣＰＵ２２は、第１の回転対象画像データのうち、表面出力対象領域ＦＯＡを表わす表面部分画像データを取得する。
【００９０】
（出力処理の具体的な内容の続き；図１１）
続いて、図１１を参照して、図１０の続きを説明する。図９のＳ１１０では、ＣＰＵ２２は、裏面対象画像ＢＴＩを表わす裏面対象画像データを１８０度回転させて、回転画像ＲＩを表わす回転画像データを生成する。
【００９１】
上述したように、図８の例では、裏面の直線として、レシート原稿ＲＤの端ＥＲ（図２参照）に対応する直線ＬＲ１が選択される。そして、回転画像ＲＩでは、直線ＬＬ２がレシート原稿ＲＤの端ＥＲ（図２参照）に対応するので、直線ＬＬ２が裏面の直線である。従って、Ｓ１１２では、表面の直線ＬＬ２が伸びる方向と縦方向とが一致するように、回転画像ＲＩを回転させて得られる第２の回転対象画像ＲＴＩ２を表わす第２の回転対象画像データが生成される。即ち、図６の角度βを回転角度として回転画像ＲＩを時計回り方向に回転させて得られる第２の回転対象画像ＲＴＩ２を表わす第２の回転対象画像データが生成される。
【００９２】
Ｓ１１６では、ＣＰＵ２２は、Ｓ１０４で生成される裏面二値画像データを利用して、射影ヒストグラムＨ１１６Ａと、射影ヒストグラムＨ１１６Ｂと、を生成する。射影ヒストグラムＨ１１６Ａ、射影ヒストグラムＨ１１６Ｂは、それぞれ、裏面二値画像データを構成する複数個の画素データを縦方向、横方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。次いで、ＣＰＵ２２は、図１０と同様の手法を利用して、第２の回転対象画像ＲＴＩ２内において、レシート原稿領域ＲＤＡ２’の左端の近傍の位置ＷＬ２と右端の近傍の位置ＷＲ２と上端の近傍の位置ＨＵ２と下端の近傍の位置ＨＬ２とを特定する。
【００９３】
次いで、ＣＰＵ２２は、第２の回転対象画像ＲＴＩ２のうち、特定済みの４個の位置ＷＬ２，ＷＲ２，ＨＵ２，ＨＬ２によって画定される矩形領域が上下左右のそれぞれの向きに所定サイズだけ拡大された拡大領域を、裏面出力対象領域ＢＯＡとして決定する。これにより、レシート原稿領域ＲＤＡ２’の全体を含む裏面出力対象領域ＢＯＡが決定される。そして、ＣＰＵ２２は、第２の回転対象画像データのうち、裏面出力対象領域ＢＯＡを表わす裏面部分画像データを取得する。
【００９４】
（出力処理の具体的な内容の続き；図１２）
続いて、図１２を参照して、図１１の続きを説明する。図９のＳ１２０では、ＣＰＵ２２は、図１０で決定される表面出力対象領域ＦＯＡを表わす表面部分画像データが上側に配置されると共に、図１１で決定される裏面出力対象領域ＢＯＡを表わす裏面部分画像データが下側に配置されるように、表面部分画像データと裏面部分画像データとを結合して、結合画像ＣＩを表わす結合画像データを生成する。この際に、ＣＰＵ２２は、表面部分画像データと裏面部分画像データとの間に、所定の長さを有する白色の余白を表わす画素データを挿入する。即ち、表面部分画像データと裏面部分画像データとは、余白を表わす画素データを介して結合される。ただし、変形例では、表面部分画像データと裏面部分画像データとは、余白を表わす画素データを介さずに結合されてもよい。また、ＣＰＵ２２は、表面出力対象領域ＦＯＡの横方向の中間位置と裏面出力対象領域ＢＯＡの横方向の中間位置とが、結合画像ＣＩの横方向の同じ位置に存在するように、表面部分画像データと裏面部分画像データとを結合する。なお、表面部分画像データの横方向の長さ（即ち、画素数）と裏面部分画像データの横方向の長さとが異なる場合には、ＣＰＵ２２は、矩形形状を有する結合画像ＣＩを表わす結合画像データが生成されるように、白色の余白を表わす画素データを補充する。
【００９５】
（第１実施例の効果）
本実施例によると、端末装置ＴＥは、図２の表面スキャン画像ＦＳＩ内の２本の直線ＬＬ１，ＬＲ１を検出して（図６参照）、直線ＬＬ１と文字列オブジェクト画像との関係を示す評価値Ｖ１を特定すると共に、直線ＬＲ１と文字列オブジェクト画像との関係を示す評価値Ｖ２を特定する（図８参照）。そして、端末装置ＴＥは、２個の評価値Ｖ１，Ｖ２に基づいて、表面の直線として直線ＬＬ１を選択する（図７のＳ８０）。これにより、端末装置ＴＥは、直線ＬＬ１が伸びる方向に基づいて、１行の文字列を構成する複数個の文字が横方向に沿って並ぶ第１の回転対象画像ＲＴＩ１（図１０参照）を生成することができる。また、端末装置ＴＥは、裏面の直線として直線ＬＲ１を選択する（図７のＳ８０）。これにより、端末装置ＴＥは、直線ＬＲ１が伸びる方向に基づいて、１行の文字列を構成する複数個の文字が横方向に沿って並ぶ第２の回転対象画像ＲＴＩ２（図１１参照）を生成することができる。そして、端末装置ＴＥは、それらの回転対象画像ＲＴＩ１，ＲＴＩ２を利用して、結合画像ＣＩを生成する。このように、端末装置ＴＥは、表面スキャン画像及び裏面スキャン画像の傾きを適切に補正することができ、この結果、適切な結合画像ＣＩを出力することができる。
【００９６】
（第１の比較例）
スキャン画像内の原稿画像の傾きを補正するための以下の第１の比較例の技術が知られている。即ち、第１の比較例の技術では、原稿画像に含まれる１行の文字列を構成する複数個の文字が並ぶ方向（即ち、いわゆる文字列のベースライン）が検出される。そして、文字列のベースラインが横方向に沿って伸びるように原稿画像が回転される。ただし、第１の比較例の技術では、文字列のベースラインを検出するために複雑な処理を要するので、処理時間が長くなり得る。これに対し、本実施例では、端末装置ＴＥは、文字列のベースラインを検出せずに済むので、迅速に処理を実行し得る。また、第１の比較例の技術では、１行の文字列を構成する文字数が少ない場合に、ベースラインを適切に検出することができない可能性があり、この結果、原稿画像の傾きを適切に補正することができない可能性がある。これに対し、本実施例では、端末装置ＴＥは、レシート原稿ＲＤの端に対応する２本の直線ＬＬ１，ＬＲ１に基づいて結合画像ＣＩを生成するので、１行の文字列を構成する文字数に関わらず、適切な結合画像ＣＩを出力することができる。
【００９７】
（第２の比較例）
スキャン画像内の原稿画像の傾きを補正するための以下の第２の比較例の技術が知られている。即ち、第２の比較例の技術では、スキャン画像に対する二値化処理等が実行され、原稿画像を構成する各部が値「１」で表現され、背景を構成する各部が値「０」で表現される。次いで、値「１」を含む各列の中から、最も左側に存在する値「１」と最も右側に存在する値「１」との間の距離が最も短い列と、全てが値「１」である列と、が検出される。そして、検出済みの２つの列に基づいて、原稿画像の傾きが補正される。ただし、第２の比較例の技術では、原稿画像が矩形形状を有することが前提となっている。従って、例えば、図２の表面スキャン画像ＦＳＩのように、レシート原稿領域ＲＤＡ１が矩形形状を有さない状況では、原稿画像の傾きが適切に補正されない可能性がある。これに対し、本実施例では、端末装置ＴＥは、レシート原稿ＲＤの端に対応する２本の直線ＬＬ１，ＬＲ１に基づいて結合画像ＣＩを生成するので、レシート原稿領域ＲＤＡ１が矩形形状を有していなくても、適切な結合画像ＣＩを出力することができる。
【００９８】
（対応関係）
端末装置ＴＥが、「画像処理装置」の一例である。図２において、表面スキャン画像ＦＳＩ、裏面スキャン画像ＢＳＩが、それぞれ、「第１の原画像」、「第２の原画像」の一例である。表面スキャン画像ＦＳＩに含まれる文字列オブジェクト画像、裏面スキャン画像ＢＳＩに含まれる文字列オブジェクト画像が、それぞれ、「第１のオブジェクト画像」、「第２のオブジェクト画像」の一例である。レシート原稿ＲＤにおいて、前半の３行の文字列「ＦＦＦ  Ｓｈｏｐ」〜「ＨＨＨ  ＄８０」、後半の３行の文字列「ＩＩＩ  ｓ＄５００」〜「ＫＫＫ  ＄１０」が、それぞれ、「第１の部分オブジェクト」、「第２の部分オブジェクト」の一例である。表面スキャン画像ＦＳＩ内の直線ＬＬ１，ＬＲ１が、「２本以上の直線」の一例である。直線ＬＬ１が、「第１の直線」及び「特定の直線」の一例である。直線ＬＲ１が、「第２の直線」及び「特定の直線とは異なる直線」の一例である。
【００９９】
図６において、検出用画像ＦＤＩを表わす検出用画像データが、「第２の対象画像データ」の一例である。左側分断画像ＬＤＩ、右側分断画像ＲＤＩが、それぞれ、「第１の部分画像」、「第２の部分画像」の一例である。
【０１００】
図８において、評価値Ｖ１、評価値Ｖ２が、それぞれ、「第１の関係」を示す値、「第２の関係」を示す値の一例である。二値画像ＢＩを表わす二値画像データが、「第１の対象画像データ」の一例である。当該二値画像データを構成する複数個の画素データのうち、除去画像ＤＩを表わす各画素データが、「Ｋ個の対象画素データ」の一例である。当該二値画像データのうちのＯＮ画素データが、「高強度画素データ」及び「関連画素データ」の一例である。当該二値画像データのうちのＯＦＦ画素データが、「低強度画素データ」の一例である。図８の二値画像ＢＩにおいて、横方向、射影ヒストグラムＨ６２、閾値Ｔｈ２が、それぞれ、「第１の方向」、「第２の射影ヒストグラム」、「第２の閾値」の一例である。また、第１の回転二値画像ＲＢＩ１において、縦方向、射影ヒストグラムＨ６６、閾値Ｔｈ３が、それぞれ、「第２の方向」、「第１の射影ヒストグラム」、「第１の閾値」の一例である。角度αが「差分角度」の一例である。
【０１０１】
図１０において、第１の回転対象画像ＲＴＩ１が、「回転済み画像」の一例である。表面出力対象領域ＦＯＡが「出力領域」及び「第１の出力対象領域」の一例である。表面出力対象領域ＦＯＡを表わす表面部分画像データが、「除外済み画像データ」の一例である。図１１において、裏面出力対象領域ＢＯＡが、「第２の出力対象領域」の一例である。図１２において、結合画像ＣＩが、「出力画像」の一例である。
【０１０２】
（第２実施例；図１３）
本実施例では、図９のＳ１２０の処理が第１実施例とは異なる。図１３に示されるように、ＣＰＵ２２は、図３のＳ３４で生成された二値画像データを利用して、射影ヒストグラムＨ１２０を生成する。射影ヒストグラムＨ１２０は、二値画像データを構成する複数個の画素データを横方向に沿って射影する場合におけるＯＮ画素データの出現頻度の分布を表わす。次いで、ＣＰＵ２２は、射影ヒストグラムＨ１２０の下端から上側に向かう過程において、閾値Ｔｈ１以上の頻度を最初に示す位置ＨＬを特定する。そして、ＣＰＵ２２は、二値画像ＢＩ内において、直線ＬＬ１上の位置ＨＬと、直線ＬＲ１上の位置ＨＬと、の間の長さＲＷ（即ち、画素数ＲＷ）を特定する。長さＲＷは、厳密に言うと、レシート原稿ＲＤの短辺の長さよりも若干大きい長さに対応する。ただし、長さＲＷは、レシート原稿ＲＤの短辺の長さに略等しい長さに対応する。従って、長さＲＷは、レシート原稿ＲＤの短辺の長さに関係する長さである。
【０１０３】
次いで、ＣＰＵ２２は、図９のＳ１０６で取得された表面部分画像データによって表わされる表面出力対象領域ＦＯＡにおいて、直線ＬＬ１から右方向に長さＲＷだけ進んだ位置を特定する。そして、ＣＰＵ２２は、表面部分画像データを構成する複数個の画素データから、表面出力対象領域ＦＯＡのうちの上記の特定済みの位置よりも右側の領域を構成する各画素データを除去する。なお、ＣＰＵ２２は、表面出力対象領域ＦＯＡのうちの直線ＬＬ１よりも左側の領域を構成する各画素データが存在する場合には、当該各画素データも除去する。これにより、表面出力対象領域ＦＯＡよりも小さいサイズ、より具体的には、横方向に沿った長さがＲＷであるサイズを有する表面出力画像を表わす表面出力画像データが生成される。
【０１０４】
次いで、ＣＰＵ２２は、図９のＳ１１６で取得された裏面部分画像データによって表わされる裏面出力対象領域ＢＯＡ内において、直線ＬＬ２から左方向に長さＲＷだけ進んだ位置を特定する。そして、ＣＰＵ２２は、裏面部分画像データを構成する複数個の画素データから、裏面出力対象領域ＢＯＡのうちの上記の特定済みの位置よりも左側の領域を構成する各画素データを除去する。なお、ＣＰＵ２２は、裏面出力対象領域ＢＯＡのうちの直線ＬＬ２よりも右側の領域を構成する各画素データが存在する場合には、当該各画素データも除去する。これにより、裏面出力対象領域ＢＯＡよりも小さいサイズ、より具体的には、横方向に沿った長さがＲＷであるサイズを有する裏面出力画像を表わす裏面出力画像データが生成される。
【０１０５】
次いで、ＣＰＵ２２は、上記の表面出力画像データが上側に配置されると共に、上記の裏面出力画像データが下側に配置されるように、余白を表わす画素データを介して、表面出力画像データと裏面出力画像データとを結合して、結合画像ＣＩを表わす結合画像データを生成する。この際に、ＣＰＵ２２は、表面出力画像データを構成する最も左側の画素データと、裏面出力画像データを構成する最も左側の画素データと、が横方向の同じ位置に存在するように、表面出力画像データと裏面出力画像データとを結合する。これにより、横方向に沿った長さがＲＷであるサイズを有する結合画像ＣＩを表わす結合画像データが生成される。
【０１０６】
（第２実施例の効果）
第１実施例では、図１２に示されるように、結合画像ＣＩのアスペクト比が、レシート原稿ＲＤのアスペクト比とは大きく異なり得る。また、結合画像ＣＩ内の横方向において、前半の３行の文字列の左端の位置と、後半の３行の文字列の左端の位置と、が大きく異なり得る。即ち、結合画像ＣＩ内の各文字列のレイアウトが、レシート原稿ＲＤ内の各文字列のレイアウトとは大きく異なり得る。これに対し、本実施例では、結合画像ＣＩの横方向に沿った長さは、レシート原稿ＲＤの短辺の長さに関係する長さＲＷである。従って、レシート原稿ＲＤのアスペクト比に略等しいアスペクト比を有する結合画像ＣＩが出力される。また、本実施例では、結合画像ＣＩ内の横方向において、各文字列の左端の位置が略一致する。即ち、結合画像ＣＩ内の各文字列のレイアウトが、レシート原稿ＲＤ内の各文字列のレイアウトに略等しい。このように、本実施例によると、レシート原稿ＲＤが適切に反映された結合画像ＣＩを出力することができる。
【０１０７】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【０１０８】
（変形例１）図３のＳ４０において、ＣＰＵ２２は、表面スキャン画像ＦＳＩ（図２参照）内の３本以上の直線（例えば、ＬＬ１、ＬＲ１、レシート原稿領域ＲＤＡ１の下辺の直線等）を検出してもよい。この場合、Ｓ６０では、ＣＰＵ２２は、３本以上の直線に対応する３個以上の評価値を算出してもよい。例えば、ＣＰＵ２２は、上記の下辺の直線に対応する評価値を算出する際に、図８の二値画像ＢＩ内の上記の下辺の直線が伸びる方向が横方向に一致するように回転二値画像データを生成し、当該回転二値画像データを利用して評価値を算出してもよい。そして、図７のＳ７８〜Ｓ８２では、ＣＰＵ２２は、３個以上の評価値のうちの最大の評価値に対応する直線を表面の直線として選択してもよい。一般的に言うと、「検出部」は、２本以上の直線を検出すればよい。
【０１０９】
（変形例２）図７のＳ８０において、ＣＰＵ２２は、表面スキャン画像ＦＳＩ内において、直線ＬＬ１と、直線ＬＬ１に略直交する直線（以下では「サブ直線」と呼ぶ）と、である２本の直線を、表面の直線として選択してもよい。そして、ＣＰＵ２２は、例えば、上記のサブ直線が伸びる方向に基づいて直線ＬＬ１が伸びる方向を補正して、上記のサブ直線に直交する補正後の直線を決定し、当該補正後の直線が伸びる方向に基づいて、結合画像データを生成してもよい。本変形例では、上記の２本の直線が、「特定の直線」の一例である。即ち、「特定の直線」は、１本以上の直線であればよい。
【０１１０】
（変形例３）図４のＳ４８及びＳ５０が省略されてもよい。この場合、ＣＰＵ２２は、Ｓ４６で生成された検出用画像データの全体に対してＨｏｕｇｈ変換を実行して、検出用画像ＦＤＩ（図６参照）内において、最長の直線と、二番目に長い直線と、を検出してもよい。即ち、「検出部」は、第１及び第２の部分画像データを利用せずに、２本以上の直線を検出してもよい。
【０１１１】
（変形例４）図７のＳ７４及びＳ７６の処理が省略されてもよい。この場合、ＣＰＵ２２は、Ｓ７８〜Ｓ８２に代えて、以下の処理を実行してもよい。即ち、ＣＰＵ２２は、評価値Ｖ１が所定の閾値以上である場合に、２本の直線ＬＬ１，ＬＲ１のうちの一方の直線ＬＬ１を表面の直線として選択し（即ち、他方の直線ＬＲ１を裏面の直線として選択し）、評価値Ｖ１が所定の閾値未満である場合に、２本の直線ＬＬ１，ＬＲ１のうちの他方の直線ＬＲ１を表面の直線として選択する（即ち、一方の直線ＬＬ１を裏面の直線として選択する）。即ち、「特定部」は、第２の関係を特定しなくてもよい。一般的にいうと、「選択部」は、第１の関係に基づいて、特定の直線を選択すればよい。
【０１１２】
（変形例５）図７のＳ６６において、ＣＰＵ２２は、射影ヒストグラムＨ６６（図８参照）において、ＯＮ画素データの出現頻度が閾値Ｔｈ３以上である高頻度射影ラインの総数を評価値Ｖ１として算出してもよい。同様に、Ｓ７６において、ＣＰＵ２２は、射影ヒストグラムＨ７６（図８参照）において、ＯＮ画素データの出現頻度が閾値Ｔｈ３以上である高頻度射影ラインの総数を評価値Ｖ２として算出してもよい。この場合、ＣＰＵ２２は、Ｓ７８に代えて、評価値Ｖ１が評価値Ｖ２未満である場合にＳ８０に進み、評価値Ｖ１が評価値Ｖ２以上である場合にＳ８２に進むようにしてもよい。本変形例の評価値Ｖ１、評価値Ｖ２も、それぞれ、「第１の関係」を示す値、「第２の関係」を示す値の一例である。また、一般的に言うと、「特定部」は、第１の射影ヒストグラムを利用して、第１の関係を特定すればよい。
【０１１３】
（変形例６）図７のＳ６２の処理が省略されてもよい。この場合、ＣＰＵ２２は、Ｓ６４では、図８の二値画像ＢＩの全体を回転させて得られる第１の回転二値画像を表わす第１の回転二値画像データを生成し、Ｓ７４では、二値画像ＢＩの全体を回転させて得られる第２の回転二値画像データを生成してもよい。そして、ＣＰＵ２２は、以下の（変形例６−１）及び（変形例６−２）のいずれかの処理を実行してもよい。
【０１１４】
（変形例６−１）ＣＰＵ２２は、第１の回転二値画像データを構成する複数個の画素データのうちの一部の各画素データのみ（例えば、文字が存在する可能性が高い中心部のみ、左半分のみ、右半分のみ、上半分のみ、下半分のみ等）を射影して、射影ヒストグラムを生成し、当該射影ヒストグラムを利用して、評価値Ｖ１を算出してもよい。同様に、ＣＰＵ２２は、第２の回転二値画像データを構成する複数個の画素データのうちの一部の各画像データのみを射影して、射影ヒストグラムを生成し、当該射影ヒストグラムを利用して、評価値Ｖ２を算出してもよい。
【０１１５】
（変形例６−２）ＣＰＵ２２は、第１の回転二値画像データを構成する複数個の画素データの全部を射影して、射影ヒストグラムを生成し、当該射影ヒストグラムを利用して、評価値Ｖ１を算出してもよい。また、ＣＰＵ２２は、第２の回転二値画像データを構成する複数個の画素データの全部を射影して、射影ヒストグラムを生成し、当該射影ヒストグラムを利用して、評価値Ｖ２を算出してもよい。
【０１１６】
（変形例７）ＣＰＵ２２は、図３のＳ６０の評価値算出処理（即ち、図７の処理）に代えて、以下の処理を実行してもよい。即ち、ＣＰＵ２２は、図８の二値画像ＢＩ内において、例えば、１行の文字列を構成する複数個の文字が並ぶ方向（即ち、文字列のベースラインが伸びる方向）を特定し、当該方向と直線ＬＬ１との間の第１の角度と、当該方向と直線ＬＲ１との間の第２の角度と、を特定してもよい。この場合、ＣＰＵ２２は、第１の角度と第２の角度とのうち、９０度に近い角度に対応する一方の直線ＬＬ１を表面の直線として選択し、他方の直線ＬＲ１を裏面の直線として選択してもよい。本変形例では、第１の角度、第２の角度が、それぞれ、「第１の関係」を示す値、「第２の関係」を示す値の一例である。
【０１１７】
（変形例８）上記の実施例では、図３のＳ１００において、ＣＰＵ２２は、結合画像ＣＩ（図１２参照）を表わす結合画像データを生成して、当該結合画像ＣＩを表示部１４に表示させる。これに代えて、ＣＰＵ２２は、結合画像データに対してＯＣＲ（Optical Character Recognitionの略）解析を実行して、テキストデータを生成し、当該テキストデータを表示部１４に表示させてもよい。本変形例では、テキストデータが、「出力データ」の一例である。
【０１１８】
（変形例９）上記の（変形例８）において、ＣＰＵ２２は、第１の回転対象画像データ、第２の回転画像データ、及び、結合画像データを生成しなくてもよい。この場合、ＣＰＵ２２は、図２の表面スキャン画像ＦＳＩを表わす表面スキャン画像データに対して、直線ＬＬ１に直交する方向に沿ったＯＣＲ解析を実行して、テキストデータを生成してもよい。また、ＣＰＵ２２は、裏面スキャン画像ＢＳＩを表わす裏面スキャン画像データに対して、直線ＬＬ２に直交する方向に沿ったＯＣＲ解析を実行して、テキストデータを生成してもよい。そして、ＣＰＵ２２は、上記の２個のテキストデータを表示部１４に表示させてもよい。
【０１１９】
（変形例１０）上記の実施例では、ＣＰＵ２２は、折り曲げられているレシート原稿ＲＤのスキャンによって得られる２個のスキャン画像データ（即ち、表面スキャン画像データと裏面スキャン画像データ）を取得する（図３のＳ１０）。これに代えて、ＣＰＵ２２は、例えば、書籍が開かれた状態で書籍がスキャンされることによって得られる１個のスキャン画像を表わす１個のスキャン画像データを取得してもよい。この場合、スキャン画像内の原稿領域の端を構成する２本の直線が、直交の関係及び平行の関係ではなく、互いに対向し得る。そして、ＣＰＵ２２は、２本の直線に対応する２個の評価値に基づいて、スキャン画像内の原稿領域に含まれる１行の文字列を構成する複数個の文字が並ぶ方向に直交する１本の直線を選択し、当該直線が伸びる方向に基づいて、スキャン画像を回転させてもよい。即ち、「取得部」は、第２の原画像データを取得せずに、第１の原画像データを取得してもよい。
【０１２０】
（変形例１１）ＣＰＵ２２は、第２実施例の結合画像ＣＩを表わす結合画像データを生成するために、以下の処理を実行してもよい。長さＲＷを算出する点は、第２実施例と同様である。ＣＰＵ２２は、表面出力対象領域ＦＯＡにおいて、直線ＬＬ１から右方向に長さＲＷだけ進んだ基準位置を特定する。そして、ＣＰＵ２２は、横方向において、上記の基準位置と裏面出力対象領域ＢＯＡ内の直線ＬＬ２とが同じ位置に存在するように、表面部分画像データと裏面部分画像データとを結合して、中間結合画像データを生成する。次いで、ＣＰＵ２２は、中間結合画像データを構成する複数個の画素データのうち、直線ＬＬ１よりも左側の領域を構成する各画素データを除去し、直線ＬＬ２よりも右側の領域を構成する各画素データを除去して、結合画像ＣＩを表わす結合画像データを生成する。なお、ＣＰＵ２２は、直線ＬＬ１に基づいて基準位置を特定することに代えて、裏面出力対象領域ＢＯＡにおいて、直線ＬＬ２から左方向に長さＲＷだけ進んだ基準位置を特定してもよい。そして、ＣＰＵ２２は、横方向において、上記の基準位置と表面出力対象領域ＦＯＡ内の直線ＬＬ１とが同じ位置に存在するように、表面部分画像データと裏面部分画像データとを結合して、中間結合画像データを生成してもよい。
【０１２１】
（変形例１２）ＣＰＵ２２は、結合画像ＣＩを表示しなくてもよく、結合画像データをプリンタに送信して、結合画像ＣＩの印刷をプリンタに実行させてもよい。なお、当該プリンタは、例えば、スキャナＳＣであってもよいし（即ち、スキャナＳＣがスキャン機能と印刷機能とを備える多機能機であってもよいし）、スキャナＳＣとは別体に構成されているプリンタであってもよい。本変形例では、印刷対象の結合画像データが、「出力データ」の一例である。即ち、「出力」という用語は、表示のみならず、印刷を含む。
【０１２２】
（変形例１３）上記の実施例では、端末装置ＴＥが、図３〜図１３の各処理を実行する。これに代えて、スキャナＳＣが、図３〜図１３の各処理を実行して、スキャナＳＣの表示部（図示省略）又は端末装置ＴＥの表示部１４に結合画像ＣＩを表示させてもよい。本変形例では、スキャナＳＣが、「画像処理装置」の一例である。
【０１２３】
（変形例１４）上記の実施例では、端末装置ＴＥのＣＰＵ２２がドライバプログラム２６（即ち、ソフトウェア）を実行することによって、図３〜図１３の各処理が実現される。これに代えて、図３〜図１３の各処理のうちの少なくとも１つの処理は、論理回路等のハードウェアによって実現されてもよい。
【０１２４】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１２５】
２：通信システム、ＳＣ：スキャナ、ＴＥ：端末装置、１０：ネットワークインターフェース、１２：操作部、１４：表示部、２０：制御部、２２：ＣＰＵ、２４：メモリ、２６：ドライバプログラム、３０：マーク、ＣＳ：キャリアシート、ＲＤ：レシート原稿、ＦＳＩ：表面スキャン画像、ＢＳＩ：裏面スキャン画像、ＦＴＩ：表面対象画像、ＢＴＩ：裏面対象画像、ＢＩ：二値画像、ＯＦＩ：ＯＦＦ変換画像、ＯＮＩ：ＯＮ変換画像、ＦＤＩ：検出用画像、ＬＤＩ：左側分断画像、ＲＤＩ：右側分断画像、ＤＩ：除去画像、ＲＢＩ１：第１の回転二値画像、ＲＢＩ２：第２の回転二値画像、ＲＴＩ１：第１の回転対象画像、ＲＴＩ２：第２の回転対象画像、ＲＩ：回転画像、ＣＩ：結合画像、ＬＬ１，ＬＲ１，ＬＬ２，ＬＲ２：直線、ＲＷ：距離、Ｔｈ１，Ｔｈ２，Ｔｈ３：閾値、Ｖ１，Ｖ２：評価値
【図１】
2015195428.tif 000003
【図２】
2015195428.tif 000004
【図３】
2015195428.tif 000005
【図４】
2015195428.tif 000006
【図５】
2015195428.tif 000007
【図６】
2015195428.tif 000008
【図７】
2015195428.tif 000009
【図８】
2015195428.tif 000010
【図９】
2015195428.tif 000011
【図１０】
2015195428.tif 000012
【図１１】
2015195428.tif 000013
【図１２】
2015195428.tif 000014
【図１３】
2015195428.tif 000015