(57)【特許請求の範囲】
【請求項１】
外部記憶装置を利用するスキャナ装置であって、
内部記憶装置と、
Ｍ枚（前記Ｍは１以上の整数）のスキャン対象物がスキャンされる場合に、前記Ｍ枚のスキャン対象物を表わす元データを、前記内部記憶装置内に生成する元データ生成部と、
前記元データを用いて、ダイジェスト値を算出し、前記元データと前記ダイジェスト値とを用いて、前記Ｍ枚のスキャン対象物を表わすＭページ分の目的データを、前記外部記憶装置内に生成する目的データ生成部と、を備え、
前記元データ生成部は、
前記Ｍ枚のスキャン対象物のうちの１枚のスキャン対象物を表わす対象元データが生成されるべき場合に、前記１枚のスキャン対象物を表わす対象画像データを構成するＮ個（前記Ｎは２以上の整数）の部分画像データのそれぞれを、前記内部記憶装置内に順次生成する画像データ生成部と、
前記Ｎ個の部分画像データのそれぞれについて、スキャン方向に対応する当該部分画像データのサイズである第１種のサイズを示す第１種のサイズ情報を、前記内部記憶装置内に生成する第１種のサイズ情報生成部と、を備え、
前記目的データ生成部は、
前記内部記憶装置内に生成される前記対象元データを構成するＮ個の部分元データのそれぞれを順次用いて、前記ダイジェスト値を算出するための算出処理を順次実行する算出部であって、前記Ｎ個の部分元データのそれぞれは、対応する１個の部分画像データと、前記対応する１個の部分画像データのための前記第１種のサイズ情報と、を含む、前記算出部と、
前記Ｎ個の部分元データのそれぞれを、前記外部記憶装置内に順次書き込む書込部と、を備える、
スキャナ装置。
【請求項２】
前記元データ生成部は、さらに、
前記Ｎ個の部分画像データが前記内部記憶装置内に生成される過程において、前記内部記憶装置内の空き容量が不足することを監視する監視部を備え、
前記画像データ生成部は、前記内部記憶装置内の空き容量が不足する場合に、１個の部分画像データの生成を終了する、請求項１に記載のスキャナ装置。
【請求項３】
前記第１種のサイズ情報生成部は、前記Ｎ個の部分画像データのそれぞれについて、当該部分画像データのための前記第１種のサイズ情報として、前記１枚のスキャン対象物に対する実際のスキャン結果に基づいて得られる値を、前記内部記憶装置内に生成する、請求項１又は２に記載のスキャナ装置。
【請求項４】
前記第１種のサイズ情報生成部は、
前記Ｎ個の部分画像データのうち、最後に生成されるＮ番目の部分画像データを除くＮ−１個の部分画像データのそれぞれについて、当該部分画像データのための前記第１種のサイズ情報として、予め決められている所定値を、前記内部記憶装置内に生成し、
前記Ｎ番目の部分画像データのための前記第１種のサイズ情報として、前記１枚のスキャン対象物に対する実際のスキャン結果に基づいて得られる値を、前記内部記憶装置内に生成し、
前記画像データ生成部は、前記Ｎ−１個の部分画像データのそれぞれの前記第１種のサイズが前記所定値に一致するように、前記Ｎ−１個の部分画像データのそれぞれを、前記内部記憶装置に順次生成する、請求項１に記載のスキャナ装置。
【請求項５】
前記元データ生成部は、さらに、
前記Ｎ個の部分画像データのそれぞれについて、前記対象画像データによって表わされる対象画像内での当該部分画像データによって表わされる部分画像の位置に関係する位置情報を、前記内部記憶装置内に生成する位置情報生成部を備え、
前記Ｎ個の部分元データのそれぞれは、さらに、前記対応する１個の部分画像データのための前記位置情報を含む、請求項１から４のいずれか一項に記載のスキャナ装置。
【請求項６】
前記元データ生成部は、さらに、
前記Ｎ個の部分画像データのそれぞれについて、前記スキャン方向に直交する方向に対応する当該部分画像データのサイズである第２種のサイズを示す第２種のサイズ情報を、前記内部記憶装置内に生成する第２種のサイズ情報生成部を備え、
前記Ｎ個の部分元データのそれぞれは、さらに、前記対応する１個の部分画像データのための前記第２種のサイズ情報を含む、請求項１から５のいずれか一項に記載のスキャナ装置。
【請求項７】
前記目的データ生成部は、さらに、
前記ダイジェスト値を暗号化することによって署名値を生成する署名値生成部を備え、
前記目的データ生成部は、前記元データと前記署名値とを含む前記Ｍページ分の目的データを、前記外部記憶装置内に生成する、請求項１から６のいずれか一項に記載のスキャナ装置。
【請求項８】
前記外部記憶装置が装着される装着部をさらに備える、請求項１から７のいずれか１項に記載のスキャナ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、スキャン対象物を表わす元データを用いて、目的データを生成するスキャナ装置を開示する。
【背景技術】
【０００２】
例えば、特許文献１には、スキャンされた紙情報を用いて、ＰＤＦの文書データを生成するスキャナ装置が開示されている。このスキャナ装置は、ＰＤＦの文書データからハッシュ値を生成し、ハッシュ値からタイムスタンプトークンを生成する。さらに、スキャナ装置は、タイムスタンプトークンを文書データに埋め込むことによって、タイムスタンプ付きの文書データを生成する。なお、ＰＤＦの文書データは、ＪＰＥＧデータを含む。ＪＰＥＧデータは、通常、画像データと、スキャン方向に対応する画像データのサイズを示す高さ情報と、を含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４１６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１には、ハッシュ値を生成するための具体的な手法について、何ら開示されていない。本明細書では、スキャナ装置の内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値（特許文献１の例ではハッシュ値）を迅速に算出し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書では、外部記憶装置を利用するスキャナ装置を開示する。スキャナ装置は、内部記憶装置と、元データ生成部と、目的データ生成部と、を備える。元データ生成部は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物がスキャンされる場合に、Ｍ枚のスキャン対象物を表わす元データを、内部記憶装置内に生成する。目的データ生成部は、元データを用いて、ダイジェスト値を算出し、元データとダイジェスト値とを用いて、Ｍ枚のスキャン対象物を表わすＭページ分の目的データを、外部記憶装置内に生成する。
【０００６】
元データ生成部は、画像データ生成部と、第１種のサイズ情報生成部と、を備える。画像データ生成部は、Ｍ枚のスキャン対象物のうちの１枚のスキャン対象物を表わす対象元データが生成されるべき場合に、上記の１枚のスキャン対象物を表わす対象画像データを構成するＮ個（Ｎは２以上の整数）の部分画像データのそれぞれを、内部記憶装置内に順次生成する。第１種のサイズ情報生成部は、Ｎ個の部分画像データのそれぞれについて、スキャン方向に対応する当該部分画像データのサイズである第１種のサイズを示す第１種のサイズ情報を、内部記憶装置内に生成する。目的データ生成部は、算出部と、書込部と、を備える。算出部は、内部記憶装置内に生成される対象元データを構成するＮ個の部分元データのそれぞれを順次用いて、ダイジェスト値を算出するための算出処理を順次実行する。Ｎ個の部分元データのそれぞれは、対応する１個の部分画像データと、上記の対応する１個の部分画像データのための第１種のサイズ情報と、を含む。書込部は、Ｎ個の部分元データのそれぞれを、外部記憶装置内に順次書き込む。
【０００７】
１枚のスキャン対象物を表わす全ての対象画像データのための第１種のサイズ情報（以下では「全サイズ情報」と呼ぶ）は、上記の１枚のスキャン対象物のスキャンが終了するまでわからない。従って、仮に、対象画像データと全サイズ情報とを含む対象元データを生成する構成を採用すると、上記の１枚のスキャン対象物のスキャンが終了するまで、対象元データを用いてダイジェスト値を算出することができない。しかも、内部記憶装置内の対象元データを用いてダイジェスト値を算出するためには、内部記憶装置は、１枚のスキャン対象物を表わす全ての対象画像データを一度に保持する必要がある。本技術では、スキャナ装置は、１枚のスキャン対象物を表わす対象画像データを構成するＮ個の部分画像データのそれぞれを、内部記憶装置内に順次生成する。さらに、スキャナ装置は、Ｎ個の部分画像データのそれぞれについて、当該部分画像データのための第１種のサイズ情報を、内部記憶装置内に生成する。この構成によると、スキャナ装置は、全ての対象画像データが生成される前に、内部記憶装置内の１個の部分画像データと、内部記憶装置内の当該１個の部分画像データのための第１種のサイズ情報と、を用いて（即ち内部記憶装置内の１個の部分元データを用いて）、ダイジェスト値を算出するための算出処理を実行することができる。従って、内部記憶装置は、１枚のスキャン対象物を表わす全ての対象画像データを一度に保持せずに済み、１個の部分画像データと、当該１個の部分画像データのための第１種のサイズ情報と、を含む１個の部分元データを保持すれば足りる。このために、本技術のスキャナ装置は、内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値を迅速に算出し得る。
【０００８】
なお、上記のスキャナ装置の機能を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記憶媒体も新規で有用である。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成を示す。
【図２】スキャン対象の原稿を模式的に示す。
【図３】ＰＤＦファイルの構成を示す。
【図４】ＰＤＦファイル生成処理のフローチャートを示す。
【図５】第１実施例の部分ＪＰＥＧデータ生成処理のフローチャートを示す。
【図６】ＲＡＭの記憶内容が変化する様子を示す。
【図７】第２実施例の部分ＪＰＥＧデータ生成処理のフローチャートを示す。
【発明を実施するための形態】
【００１０】
（第１実施例）
（システムの構成）
図面を参照して第１実施例を説明する。図１に示すように、通信システム２は、ＰＣ６と、ＰＣ６の周辺機器である多機能機１０と、を備える。ＰＣ６と多機能機１０とは、ネットワークケーブル４を介して、相互に通信可能である。
【００１１】
（多機能機１０の構成）
多機能機１０は、印刷機能及びスキャン機能を含む多機能を実行可能である。多機能機１０は、操作部１２と、表示部１４と、ＵＳＢインターフェイス１６と、ネットワークインターフェイス１８と、制御部２０と、印刷実行部６０と、スキャン実行部７０と、を備える。各部１２〜２０，６０，７０は、バス線１１に接続されている。操作部１２は、複数のキーによって構成されている。ユーザは、操作部１２を操作することによって、様々な情報を多機能機１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。ＵＳＢインターフェイス１６には、ユーザが持ち運び可能な外部メモリであるＵＳＢメモリ８が装着される。ネットワークインターフェイス１８には、ネットワークケーブル４が接続される。
【００１２】
制御部２０は、ＣＰＵ２２と、ＲＯＭ２４と、ＲＡＭ２６と、を備える。ＣＰＵ２２は、ＲＯＭ２４に格納されているプログラムに従って、様々な処理を実行する。ＣＰＵ２２が上記のプログラムに従って処理を実行することによって、元データ生成部３０及び目的データ生成部５０の各機能が実現される。なお、元データ生成部３０は、各部３２〜４０を備える。また、目的データ生成部５０は、各部５２〜５６を備える。ＲＡＭ２６は、ＣＰＵ２２が直接的にアクセス可能なメインメモリであり、制御部２０によって取得又は生成される様々なデータを記憶する。なお、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧ（Joint Photographic Experts Group）データを記憶するための記憶容量よりも大きい記憶容量を有する。なお、上記の「最大のデータサイズを有する１ページ分のＪＰＥＧデータ」は、スキャン実行部７０がスキャン可能な最大の高さ及び幅のサイズを有する１枚のスキャン対象物を、スキャン実行部７０が実行可能な最大のスキャン解像度でスキャンすることによって生成されるＪＰＥＧデータを意味する。スキャン対象物の「高さ」及び「幅」については、後で詳しく説明する。なお、別の実施例では、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧデータを記憶するための記憶容量よりも小さい記憶容量を有していてもよい。
【００１３】
印刷実行部６０は、インクジェット方式、レーザ方式等の印刷機構を備える。ＰＣ６から送信される印刷のためのデータ（以下では「印刷データ」と呼ぶ）がネットワークインターフェイス１８によって受信されると、印刷実行部６０は、受信済みの印刷データに従って印刷を実行する。
【００１４】
スキャン実行部７０は、透明板と、自動原稿搬送装置（ＡＤＦ（Auto Document Feeder））と、スキャン機構と、を備える。スキャン機構は、第１の方向に沿って並んでいる複数個のイメージセンサを備える。各イメージセンサは、ＣＣＤイメージセンサ（Charge Coupled Device Image Sensor）であってもよいし、ＣＩＳ（Contact Image Sensor）であってもよい。スキャン機構は、複数個のイメージセンサが並ぶ方向（上記の第１の方向）に直交する第２の方向に移動可能である。スキャン機構は、スキャン機構自身が第２の方向に移動することによって、透明板に載置されたスキャン対象物（例えば図２の原稿７２，７４）をスキャンすることができる。また、スキャン機構は、スキャン機構自身が静止した状態で、自動原稿搬送装置によって上記の第２の方向に搬送される原稿７２，７４をスキャンすることができる。なお、以下では、透明板に載置されたスキャン対象物７２，７４に対するスキャンのことを「移動スキャン」と呼び、自動原稿搬送装置によって搬送される原稿７２，７４に対するスキャンのことを「静止スキャン」と呼ぶ。
【００１５】
なお、上記の移動スキャン及び静止スキャンのどちらの場合であっても、スキャン対象物の幅方向は、スキャン機構を構成する複数個のイメージセンサが並ぶ方向（上記の第１の方向）である。また、上記の移動スキャンの場合には、スキャン対象物の高さ方向は、スキャン機構の移動方向（上記の第２の方向）である。上記の静止スキャンの場合には、スキャン対象物の高さ方向は、自動原稿搬送装置によって搬送される原稿の搬送方向（上記の第２の方向）である。
【００１６】
図２は、２枚の原稿７２，７４を模式的に示す。上記の移動スキャンが実行されることをユーザが望む場合には、ユーザは、まず、原稿７２を透明板に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、スキャン機構は、上記の第２の方向（図２のスキャン方向）に移動して、原稿７２のスキャンを実行する。この結果、スキャン機構は、原稿７２の部分７２ａ，７２ｂ，７２ｃの順序で、各部分７２ａ，７２ｂ，７２ｃのスキャンを順次実行する（即ちスキャン方向に沿ってスキャンを実行する）。次いで、ユーザは、原稿７２を透明板から取り除き、原稿７４を透明板に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、スキャン機構は、原稿７４のスキャンを実行する。ここでユーザがスキャンの終了の指示を操作部１２に入力する場合には、２枚の原稿７２，７４を表わす２ページ分のＰＤＦ（Portable Document Format）データ（ＰＤＦファイル）が生成される。
【００１７】
また、上記の静止スキャンが実行されることをユーザが望む場合には、ユーザは、原稿７２，７４を自動原稿搬送装置に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、自動原稿搬送装置は、まず、上記の第２の方向（図２のスキャン方向の反対方向）に原稿７２を搬送する。スキャン機構は、原稿７２の部分７２ａ，７２ｂ，７２ｃの順序で、各部分７２ａ，７２ｂ，７２ｃのスキャンを順次実行する（即ちスキャン方向に沿ってスキャンを実行する）。次いで、自動原稿搬送装置は、原稿７４を搬送し、スキャン機構は、原稿７４のスキャンを実行する。この場合も、２枚の原稿７２，７４を表わす２ページ分のＰＤＦデータ（ＰＤＦファイル）が生成される。
【００１８】
（制御部２０によって生成されるＰＤＦファイルの構成）
多機能機１０の制御部２０は、スキャンされたスキャン対象物（例えば原稿７２，７４等の紙媒体）を表わすＪＰＥＧデータを生成し、ＪＰＥＧデータを用いてハッシュ値を生成し、ＪＰＥＧデータとハッシュ値とを用いて、ＵＳＢメモリ８内にＰＤＦファイルを生成する。なお、制御部２０は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物のスキャンが実行される場合には、Ｍページ分のＰＤＦファイルを生成する。図３に示されるように、ＰＤＦファイル１００は、最初のデータ１００ａと、最後のデータ１００ｂと、１ページ分以上のＰＤＦ部分データ１１０と、を含む。最初のデータ１００ａは、ＰＤＦヘッダを含む。最後のデータ１００ｂは、ＰＤＦフッタと、後述の図４のＳ２６で生成される署名値と、多機能機１０に予めインストールされている証明書と、を含む。証明書は、当該証明書に関する証明書情報と、署名値を復号化するための公開鍵と、を含む。証明書情報は、証明書の発行元（認証局（ＣＡ））を示す情報、証明書の発行先（即ち多機能機１０）を示す情報、証明書の発行日時を示す情報等を含む。
【００１９】
１ページ目のＰＤＦ部分データ１１０は、１ページ目の開始データ１１０ａと、ＪＰＥＧデータ１１１と、１ページ目の終了データ１１０ｂと、を含む。開始データ１１０ａは、１ページ目のＰＤＦ部分データ１１０の開始を示す文字列を含む。終了データ１１０ｂは、１ページ目のＰＤＦ部分データ１１０の終了を示す文字列を含む。ＪＰＥＧデータ１１１は、スキャン対象物７２を表わすＪＰＥＧ形式のデータである。なお、ＪＰＥＧデータ１１１は、ページという概念を有していない。ただし、以下では、１ページ目のＰＤＦ部分データ１１０に含まれるＪＰＥＧデータ１１１のことを「１ページ目のＪＰＥＧデータ１１１」と呼ぶことがある。また、スキャン対象物７２，７４も、ページという概念を有していないが、１ページ目のＰＤＦ部分データ１１０によって表わされるスキャン対象物７２のことを「１ページ目のスキャン対象物７２」と呼ぶことがある。同様に、スキャン対象物７４のことを「２ページ目のスキャン対象物７４」と呼ぶことがある。なお、図３では、２ページ目以降のＰＤＦ部分データを図示省略しているが、２ページ目以降のＰＤＦ部分データは、１ページ目のＰＤＦ部分データ１１０と同様の構成を有する。
【００２０】
１ページ目のＪＰＥＧデータ１１１は、複数個の部分ＪＰＥＧデータ１１２，１１４，１１６を含む。部分ＪＰＥＧデータ１１２は、１ページ目のスキャン対象物７２の部分７２ａ（図２参照）を表わすＪＰＥＧ形式のデータである。同様に、部分ＪＰＥＧデータ１１４，１１６は、それぞれ、スキャン対象物７２の部分７２ｂ，７２ｃ（図２参照）を表わすＪＰＥＧ形式のデータである。部分ＪＰＥＧデータ１１２は、位置情報１１２ａと、ヘッダ情報１１２ｂと、部分画像データ１１２ｃと、フッタ情報１１２ｄと、を含む。これらの各情報１１２ａ〜１１２ｄについて、以下に詳しく説明する。
【００２１】
位置情報１１２ａは、スキャン対象物７２のスキャンによって生成される全ての画像データ（部分画像データ１１２ｃと後述の各部分画像データ１１４ｃ，１１６ｃとの集合）によって表わされる全体画像内での部分画像データ１１２ｃによって表わされる部分画像の位置に関係する情報である。具体的に言うと、位置情報１１２ａは、スキャン対象物７２の部分７２ａの左上の頂点の座標Ｐ１に対応する情報である。
【００２２】
ヘッダ情報１１２ｂは、ＳＯＩ（Start Of Image）マーカと、高さ情報と、幅情報と、を含む。ヘッダ情報１１２ｂに含まれる高さ情報、幅情報は、それぞれ、高さ方向に対応する部分画像データ１１２ｃの画素数、幅方向に対応する部分画像データ１１２ｃの画素数を示す。従って、ヘッダ情報１１２ｂに含まれる高さ情報は、部分画像データ１１２ｃによって表わされるスキャン対象物７２の部分７２ａの高さ（即ち上記の第２の方向（スキャン方向）の長さ）が大きい程、大きくなる。また、ヘッダ情報１１２ｂに含まれる高さ情報は、高さ方向のスキャン解像度が高い程、大きくなる。同様に、ヘッダ情報１１２ｂに含まれる幅情報は、スキャン対象物７２の部分７２ａの幅（即ち上記の第１の方向の長さ）が大きい程、大きくなる。また、ヘッダ情報１１２ｂに含まれる幅情報は、幅方向のスキャン解像度が高い程、大きくなる。
【００２３】
部分画像データ１１２ｃは、スキャン対象物７２の部分７２ａを表わす画像データ（本実施例ではビットマップデータ）である。なお、部分画像データ１１２ｃは、圧縮された形式で部分ＪＰＥＧデータ１１２に含まれる。また、フッタ情報１１２ｄは、ＥＯＩ（End Of Image）マーカを含む。なお、ＳＯＩマーカとＥＯＩマーカとの間のデータは、「セグメント」と呼ばれることもある。従って、部分画像データ１１２ｃのことを「セグメント」と呼ぶこともできる。
【００２４】
なお、部分ＪＰＥＧデータ１１４は、１ページ目のスキャン対象物７２の部分７２ｂを表わすＪＰＥＧ形式のデータであり、部分ＪＰＥＧデータ１１２と同様に、位置情報１１４ａと、ヘッダ情報１１４ｂと、部分画像データ１１４ｃと、フッタ情報１１４ｄと、を含む。位置情報１１４ａは、スキャン対象物７２の部分７２ｂの左上の頂点の座標Ｐ２に対応する情報である。ヘッダ情報１１４ｂは、高さ方向に対応する部分画像データ１１４ｃの画素数を示す高さ情報と、幅方向に対応する部分画像データ１１４ｃの画素数を示す幅情報と、を含む。部分画像データ１１４ｃは、スキャン対象物７２の部分７２ｂを表わす画像データである。また、部分ＪＰＥＧデータ１１６は、部分ＪＰＥＧデータ１１２，１１４と同様に、各情報１１６ａ〜１１６ｄを含む。
【００２５】
（多機能機１０が実行する処理）
次いで、ＵＳＢメモリ８内にＰＤＦファイル１００を生成するための処理の内容について説明する。ユーザによって所定の操作が実行されると、制御部２０は、図４に示されるＰＤＦファイル生成処理を実行する。上記の所定の操作は、ＵＳＢメモリ８をＵＳＢインターフェイス１６に装着すること、スキャン対象物を透明板又は自動原稿搬送装置に載置すること、所望のスキャン解像度を指定すること、及び、操作部１２に含まれるスキャン実行キーを操作することを含む。
【００２６】
図４のＳ１０に示されるように、目的データ生成部５０（図１参照）は、まず、ＰＤＦファイル１００の最初のデータ１００ａ（図３参照）をＲＡＭ２６内に生成する。Ｓ１０では、さらに、算出部５２（図１参照）は、ＲＡＭ２６内の最初のデータ１００ａを用いて、ハッシュ値を算出する。なお、本実施例では、算出部５２は、ハッシュ関数としてＳＨＡ（Secure Hash Algorithm）−１を利用するが、ＭＤ４、ＭＤ５等の他のハッシュ関数を利用してもよい。また、以下では、図４のＳ２６で最終的に算出されるハッシュ値のことを「最終ハッシュ値」と呼び、最終ハッシュ値を生成するためにＳ２６よりも前の処理で算出されるハッシュ値のことを「中間ハッシュ値」と呼ぶ。Ｓ１０では、さらに、書込部５４（図１参照）は、ＲＡＭ２６内の最初のデータ１００ａを、ＵＳＢメモリ８に書き込む。
【００２７】
Ｓ１０で最初のデータ１００ａがＵＳＢメモリ８に書き込まれると、Ｓ１２において、目的データ生成部５０は、最初のデータ１００ａをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。なお、Ｓ１２では、Ｓ１０で算出された中間ハッシュ値は、ＲＡＭ２６から消去されない。以下でも、ＲＡＭ２６を解放するための各処理（例えばＳ１６等）において、中間ハッシュ値は、ＲＡＭ２６から消去されない。
【００２８】
次いで、Ｓ１４において、目的データ生成部５０は、対象ページの開始データをＲＡＭ２６内に生成する。１回目のＳ１４では、対象ページは、１ページ目である。従って、１回目のＳ１４では、目的データ生成部５０は、１ページ目の開始データ１１０ａ（図３参照）を生成する。なお、以下では、対象ページが１ページ目である場合を例として、Ｓ１４〜Ｓ２２の処理の内容を説明する。Ｓ１４では、さらに、算出部５２は、Ｓ１０で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の１ページ目の開始データ１１０ａと、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から１ページ目の開始データ１１０ａの最後までの中間ハッシュ値が算出される。Ｓ１４では、さらに、書込部５４は、ＲＡＭ２６内の１ページ目の開始データ１１０ａを、ＵＳＢメモリ８に書き込む。
【００２９】
Ｓ１４で１ページ目の開始データ１１０ａがＵＳＢメモリ８に書き込まれると、Ｓ１６において、目的データ生成部５０は、１ページ目の開始データ１１０ａをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。次いで、Ｓ１８において、元データ生成部３０は、対象ページ（即ち１ページ目）の部分ＪＰＥＧデータ生成処理を実行する。
【００３０】
（部分ＪＰＥＧデータ生成処理）
図５を参照して、部分ＪＰＥＧデータ生成処理の内容について説明する。図示省略しているが、元データ生成部３０は、１ページ目のスキャン対象物７２のスキャンを、スキャン実行部７０に実行させる。この結果、スキャン実行部７０が、１ページ目のスキャン対象物７２のスキャンを実行する。なお、スキャン実行部７０は、スキャンによって得られるＲＧＢのビットマップ形式のスキャンデータを一時的に格納するためのバッファ（図示省略）を備える。バッファは、１ライン分のスキャンデータを記憶するための記憶容量を有する。なお、「１ライン分のスキャンデータ」は、高さ方向の１画素分のスキャンデータである。従って、例えば、ユーザによって指定される幅方向のスキャン解像度が最大のスキャン解像度である場合には、「１ライン分のスキャンデータ」は、スキャン機構が備える複数個のイメージセンサの個数と同じ数の画素数を有する。
【００３１】
なお、図示省略しているが、元データ生成部３０は、部分ＪＰＥＧデータ生成処理を開始する前に、１ライン分のスキャンデータを記憶するための記憶容量を有する記憶領域（以下では「ライン記憶領域」と呼ぶ）を、ＲＡＭ２６内に確保する。スキャン実行部７０のバッファ内の１ライン分のスキャンデータは、ＲＡＭ２６内のライン記憶領域に書き込まれる。これにより、バッファを解放することができ、バッファに次の１ライン分のスキャンデータが格納される。１ライン分のスキャンデータがライン記憶領域に格納されると、図５のＳ４０以降の処理が開始される。
【００３２】
１回目のＳ４０では、位置情報生成部３８（図１参照）は、スキャン対象物７２の部分７２ａの座標Ｐ１（図２参照）を示す位置情報１１２ａ（図３参照）を、ＲＡＭ２６内に生成する。具体的に言うと、１回目のＳ４０の処理では、位置情報生成部３８は、予め決められている座標Ｐ１（例えば座標（１，１））を示す位置情報１１２ａを、ＲＡＭ２６内に生成する。これにより、図６に示されるように、位置情報１１２ａがＲＡＭ２６内に記憶される。
【００３３】
次いで、元データ生成部３０は、１回目のＳ４２の処理を実行することによって、ヘッダ情報１１２ｂ（図３参照）をＲＡＭ２６内に生成する。具体的に言うと、１回目のＳ４２では、元データ生成部３０は、ＳＯＩマーカと、予め決められている仮の高さ情報と、をＲＡＭ２６内に生成する。１回目のＳ４２の時点では、スキャン対象物７２の部分７２ａのスキャンが終了していないために、部分画像データ１１２ａの実際の高さ情報が未定である。従って、元データ生成部３０は、仮の高さ情報をＲＡＭ２６内に生成する。１回目のＳ４２では、さらに、第２種のサイズ情報生成部４０（図１参照）は、ライン記憶領域に記憶されている１ライン分のスキャンデータの画素数を参照することによって、実際の幅情報を取得する。第２種のサイズ情報生成部４０は、実際の幅情報をＲＡＭ２６内に生成する。これにより、図６に示されるように、ＳＯＩマーカと仮の高さ情報と実際の幅情報とを含むヘッダ情報１１２ｂがＲＡＭ２６内に記憶される。
【００３４】
次いで、Ｓ４４において、画像データ生成部３２（図１参照）は、ライン記憶領域内の１ライン分のスキャンデータを、ＪＰＥＧ形式の画像データに変換する。これにより、１ライン分のスキャンデータから生成されるＪＰＥＧ形式の画像データが、ＲＡＭ２６内の空き容量２６ａ（図６参照）に記憶される。なお、図示省略しているが、Ｓ４４の処理が実行されると、元データ生成部３０は、ライン記憶領域内の１ライン分のスキャンデータを消去する（即ちライン記憶領域を解放する）。この結果、ライン記憶領域は、次の１ライン分のスキャンデータを記憶することができる。
【００３５】
次いで、Ｓ４６において、元データ生成部３０は、１ページ目のスキャン対象物７２に対するスキャンが終了したのか否かを判断する。１ページ目のスキャン対象物７２を表わす最後の１ライン分のスキャンデータは、ページの最後であることを示す情報を含む。このような情報を含む１ライン分のスキャンデータに対してＳ４４の処理が実行された場合には、元データ生成部３０は、Ｓ４６でＹＥＳと判断し、Ｓ５８に進む。
【００３６】
一方において、Ｓ４６でＮＯの場合、Ｓ４８において、監視部３６（図１参照）は、ＲＡＭ２６内の空き容量が不足しているのか否かを判断する。具体的に言うと、監視部３６は、ＲＡＭ２６内の未使用の領域の容量（即ち空き容量）が、所定のサイズ（例えば１個のフッタ情報１１２ｄを記憶するためのサイズ）よりも大きいのか否かを判断する。ＲＡＭ２６の空き容量が不足する状況について、次に説明する。
【００３７】
上述したように、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧデータを記憶するための記憶容量よりも大きい記憶容量を有する。従って、制御部２０によって図４のＰＤＦファイル生成処理のみが実行されている状態では、通常、ＲＡＭ２６に十分な空き容量が確保されているために、１ページ目のスキャン対象物７２を表わす全てのスキャンデータが生成されるまで、図５のＳ４８でＮＯと判断され続ける。従って、１ページ目のスキャン対象物７２を表わす全てのＪＰＥＧデータが、ＲＡＭ２６に書き込まれる。ただし、図４のＰＤＦファイル生成処理が実行されている間に、例えば、ＰＣ６から多機能機１０に印刷データが送信される可能性がある。この場合、制御部２０は、図４のＰＤＦファイル生成処理と同時的に（ＰＤＦファイル生成処理に並行して）、図示省略の印刷処理を実行する。
【００３８】
印刷処理において、制御部２０は、印刷データをＲＡＭ２６に書き込む。これにより、図６に示されるように、他の処理のためのデータ（ここでは印刷データ）２００がＲＡＭ２６に書き込まれる。また、制御部２０は、ＲＡＭ２６内の印刷データを、印刷に適した特定の形式のデータ（例えばＣＭＹＫ画像データ）に変換する処理を実行する。これにより、他の処理のためのデータ（ここでは上記の特定の形式のデータ）２００がＲＡＭ２６に書き込まれる。この結果、ＲＡＭ２６内の空き容量が少なくなり、図４のＳ４８において、ＲＡＭ２６内の空き容量が不足していると判断され得る。
【００３９】
なお、ＲＡＭ２６内の空き容量が不足する状況は、制御部２０が印刷処理を実行する場合のみならず、印刷処理以外の処理を実行する場合にも起こり得る。例えば、制御部２０は、ＰＣ６からのアクセスに応じて、ＷＥＢページを示すデータを生成し、当該データをＰＣ６に送信する処理を実行する。即ち、ＲＡＭ２６内の空き容量が不足する状況は、制御部２０が図４のＰＤＦファイル生成処理以外の特定の処理（印刷処理、ＷＥＢページの生成の処理等）を実行する場合に起こり得る。
【００４０】
ＲＡＭ２６内の空き容量が不足しない場合（図５のＳ４８でＮＯの場合）、画像データ生成部３２は、Ｓ４４に戻って、ライン記憶領域に記憶されている次の１ライン分のスキャンデータを用いて、ＪＰＥＧ形式の画像データをＲＡＭ２６内に生成する。ＲＡＭ２６内の空き容量が不足するまで（Ｓ４８でＹＥＳと判断されるまで）、Ｓ４４の処理が繰り返し実行されることによって、図６に示されるように、スキャン対象物７２の部分７２ａを表わす部分画像データ１１２ｃが、ＲＡＭ２６内に記憶される。
【００４１】
ＲＡＭ２６内の空き容量が不足する場合（Ｓ４８でＹＥＳの場合）には、画像データ生成部３２は、１個の部分画像データ１１２ｃの生成を終了し、Ｓ５０に進む。ＲＡＭ２６内の空き容量が不足する場合に１個の部分画像データ１１２ｃの生成を終了する構成を採用すると、予め決められているサイズの部分画像データが生成される場合に１個の部分画像データの生成を終了する特定の構成（例えば後述の第２実施例の構成）と比べて、大きいサイズを有する１個の部分画像データを生成し得る。従って、本実施例によると、上記の特定の構成と比べて、図５のＳ５０〜Ｓ５６の処理の実行回数を低減し得る。
【００４２】
上述したように、Ｓ４２で生成されるヘッダ情報１１２ｂに含まれる高さ情報は、仮の高さ情報である。Ｓ５０では、第１種のサイズ情報生成部３４（図１参照）は、ＲＡＭ２６内のヘッダ情報１１２ｂ内の仮の高さ情報を、実際の高さ情報に変更する。具体的に言うと、第１種のサイズ情報生成部３４は、スキャン実行部７０のスキャンの実行結果に基づいて、実際の高さ情報（部分画像データ１１２ｃの高さ方向の画素数）を取得することができる。即ち、第１種のサイズ情報生成部３４は、Ｓ４４でＪＰＥＧ形式の画像データに変換されたスキャンデータのライン数（即ち１回目のＳ４２が実行された後のＳ４４の実行回数）を、実際の高さ情報として採用する。Ｓ５０が実行されることにより、部分画像データ１１２ｃの実際の高さ情報が、ＲＡＭ２６内に生成される。
【００４３】
次いで、Ｓ５２において、元データ生成部３０は、ＥＯＩを含むフッタ情報１１２ｄ（図３参照）を、ＲＡＭ２６内に生成する。これにより、図６に示されるように、フッタ情報１１２ｄが、ＲＡＭ２６内に記憶される。この結果、部分ＪＰＥＧデータ１１２が、ＲＡＭ２６内に生成される。
【００４４】
次いで、Ｓ５４において、算出部５２は、図４のＳ１４で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の部分ＪＰＥＧデータ１１２（即ち、位置情報１１２ａ、ヘッダ情報１１２ｂ、部分画像データ１１２ｃ、フッタ情報１１２ｄ）と、を用いて、新たな中間ハッシュ値を算出する。なお、算出部５２は、ＲＡＭ２６内の部分ＪＰＥＧデータ１１２の各情報１１２ａ〜１１２ｄの生成順序と同じ順序で、各情報１１２ａ〜１１２ｄを順次用いて、中間ハッシュ値を算出する。従って、算出部５２は、部分画像データ１１２ｃより先に、ヘッダ情報１１２ｂを用いる。Ｓ５４の結果、最初のデータ１００ａの先頭からフッタ情報１１２ｄの最後までの中間ハッシュ値が算出される。Ｓ５４では、さらに、書込部５４は、ＲＡＭ２６内の部分ＪＰＥＧデータ１１２を、ＵＳＢメモリ８に書き込む。
【００４５】
Ｓ５４で部分ＪＰＥＧデータ１１２がＵＳＢメモリ８に書き込まれると、Ｓ５６において、元データ生成部３０は、部分ＪＰＥＧデータ１１２をＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。この結果、図６に示されるように、ＲＡＭ２６内に空き容量２６ｂが形成される。
【００４６】
次いで、位置情報生成部３８は、２回目のＳ４０を実行する。２回目のＳ４０では、位置情報生成部３８は、前回（１回目）のＳ４０で生成された位置情報１１２ａと、部分画像データ１１２ｃの実際の高さ情報と、に基づいて、スキャン対象物７２の部分７２ｂの座標Ｐ２（例えば座標（１，１＋ｙ１（ｙ１＝部分画像データ１１２ｃの実際の高さ情報））を示す位置情報１１４ａを、ＲＡＭ２６内に生成する。これにより、図６に示されるように、位置情報１１４ａが、ＲＡＭ２６内に記憶される。
【００４７】
次いで、元データ生成部３０は、Ｓ４２以降の処理を再び実行する。この結果、図６に示されるように、ヘッダ情報１１４ｂ（仮の高さ情報を含む）と、部分画像データ１１４ｃと、がＲＡＭ２６内に記憶される。Ｓ４８でＲＡＭ２６内の空き容量が不足すると判断される場合（Ｓ４８でＹＥＳの場合）には、Ｓ５０において、第１種のサイズ情報生成部３４は、ＲＡＭ２６内のヘッダ情報１１４ｂ内の仮の高さ情報を、実際の高さ情報（部分画像データ１１４ｃの高さ方向の画素数）に変更する。さらに、Ｓ５２において、元データ生成部３０は、フッタ情報１１４ｄをＲＡＭ２６内に生成する。この結果、図６に示されるように、部分ＪＰＥＧデータ１１４が、ＲＡＭ２６内に生成される。
【００４８】
次いで、Ｓ５４において、算出部５２は、前回（１回目）のＳ５４で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の部分ＪＰＥＧデータ１１４と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭からフッタ情報１１４ｄの最後までの中間ハッシュ値が算出される。Ｓ５４では、さらに、書込部５４は、ＲＡＭ２６内の部分ＪＰＥＧデータ１１４を、ＵＳＢメモリ８に書き込む。次いで、Ｓ５６において、元データ生成部３０は、部分ＪＰＥＧデータ１１４をＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。この結果、図６に示されるように、ＲＡＭ２６内に空き容量２６ｃが形成される。
【００４９】
次いで、位置情報生成部３８は、３回目のＳ４０を実行する。３回目のＳ４０では、位置情報生成部３８は、前回（２回目）のＳ４０で生成された位置情報１１４ａと、部分画像データ１１４ｃの実際の高さ情報と、に基づいて、スキャン対象物７２の部分７２ｃの座標Ｐ３（例えば座標（１，１＋ｙ１＋ｙ２（ｙ２＝部分画像データ１１４ｃの実際の高さ情報））を示す位置情報１１６ａを、ＲＡＭ２６内に生成する。次いで、元データ生成部３０は、Ｓ４２以降の処理を再び実行する。この結果、図６に示されるように、ヘッダ情報１１６ｂ（仮の高さ情報を含む）と、部分画像データ１１６ｃと、がＲＡＭ２６内に記憶される。
【００５０】
Ｓ４６で１ページ目のスキャン対象物に対するスキャンが終了したと判断される場合（Ｓ４６でＹＥＳの場合）には、画像データ生成部３２は、１個の部分画像データ１１６ｃの生成を終了し、Ｓ５８に進む。Ｓ５８において、第１種のサイズ情報生成部３４は、ＲＡＭ２６内のヘッダ情報１１６ｂ内の仮の高さ情報を、実際の高さ情報（部分画像データ１１６ｃの高さ方向の画素数）に変更する。さらに、Ｓ６０において、元データ生成部３０は、フッタ情報１１６ｄをＲＡＭ２６内に生成する。この結果、図６に示されるように、部分ＪＰＥＧデータ１１６が、ＲＡＭ２６内に生成される。
【００５１】
次いで、Ｓ６２において、算出部５２は、前回（２回目）のＳ５４で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の部分ＪＰＥＧデータ１１６と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭からフッタ情報１１６ｄの最後までの中間ハッシュ値が算出される。Ｓ６２では、さらに、書込部５４は、ＲＡＭ２６内の部分ＪＰＥＧデータ１１６を、ＵＳＢメモリ８に書き込む。次いで、元データ生成部３０は、Ｓ６４において、部分ＪＰＥＧデータ１１６をＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。Ｓ６４が終了すると、１ページ目の部分ＪＰＥＧデータ生成処理が終了し、図４のＳ２０に進む。
【００５２】
図４のＳ２０では、目的データ生成部５０は、１ページ目の終了データ１１０ｂ（図３参照）を、ＲＡＭ２６内に生成する。Ｓ２０では、さらに、算出部５２は、図５のＳ６２で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の１ページ目の終了データ１１０ｂと、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から１ページ目の終了データ１１０ｂの最後までの中間ハッシュ値が算出される。Ｓ２０では、さらに、書込部５４は、ＲＡＭ２６内の終了データ１１０ｂを、ＵＳＢメモリ８に書き込む。
【００５３】
Ｓ２０で１ページ目の終了データ１１０ｂがＵＳＢメモリ８に書き込まれると、Ｓ２２に示されるように、目的データ生成部５０は、１ページ目の終了データ１１０ｂをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。次いで、Ｓ２４において、目的データ生成部５０は、全ページのスキャン対象物に対するスキャンが終了したのか否かを判断する。具体的に言うと、目的データ生成部５０は、ＲＡＭ２６内のライン記憶領域に新たな１ライン分のスキャンデータが格納されている場合には、Ｓ２４でＮＯと判断し、ライン記憶領域に新たな１ライン分のスキャンデータが格納されていない場合には、Ｓ２４でＹＥＳと判断する。
【００５４】
Ｓ２４でＮＯの場合には、目的データ生成部５０は、対象ページを２ページ目として、２回目のＳ１４〜Ｓ２４の処理を再び実行する。２回目のＳ１４〜Ｓ２４の処理は、１回目のＳ１２〜Ｓ２４の処理と同様である。２回目のＳ１４〜Ｓ２４の処理の結果、図２のスキャン対象物７４を表わす２ページ目のＰＤＦ部分データ（図示省略）が、ＵＳＢメモリ８に書き込まれる。さらに、最初のデータ１００ａの先頭から２ページ目の終了データ（図示省略）の最後までの中間ハッシュ値が算出される。本実施例では、２枚のスキャン対象物７２，７４を表わす２ページ分のＰＤＦデータが生成された場合に、Ｓ２４でＹＥＳと判断される。
【００５５】
Ｓ２４でＹＥＳの場合には、Ｓ２６において、目的データ生成部５０は、ＰＤＦフッタをＲＡＭ２６内に生成する。Ｓ２６では、さらに、算出部５２は、最後のＳ２０（例えばスキャン対象物が２枚である場合には２回目のＳ２０）で算出された中間ハッシュ値と、ＰＤＦフッタと、を用いて、最終ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭からＰＤＦフッタの最後までの最終ハッシュ値が算出される。Ｓ２６では、さらに、署名値生成部５６（図１参照）は、最終ハッシュ値を予め決められた秘密鍵で暗号化することによって、署名値（即ち署名済みハッシュ値）を生成する。Ｓ２６では、さらに、目的データ生成部５０は、ＰＤＦフッタと、署名値と、予め決められた証明書と、を含む最後のデータ１００ｂ（図３参照）を、ＲＡＭ２６内に生成する。なお、署名値及び証明書は、最終ハッシュ値を算出するための対象（ハッシュ化の対象）ではない。Ｓ２６では、さらに、書込部５４は、最後のデータ１００ｂを、ＵＳＢメモリ８に書き込む。これにより、ＵＳＢメモリ８内に図３に示されるＰＤＦファイル１００が完成する。
【００５６】
（外部装置の処理）
ユーザは、ＰＤＦファイル１００を含むＵＳＢメモリ８を持ち運ぶことができる。ユーザは、例えば、ＰＣ６のＵＳＢインターフェイスにＵＳＢメモリ８を装着することにより、ＵＳＢメモリ８内のＰＤＦファイル１００を外部装置の表示部に表示させることができる。この際に、外部装置は、ＰＤＦファイル１００に含まれる各位置情報１１２ａ，１１４ａ，１１６ａを用いて、各部分画像データ１１２ｃ，１１４ｃ，１１６ｃによって表わされる各部分画像の表示位置を決定することができる。この結果、外部装置は、各部分画像データ１１２ｃ，１１４ｃ，１１６ｃに基づいて、スキャン対象物７２を表わす１ページ分の適切な全体画像を表示させることができる。同様に、外部装置は、スキャン対象物７４を表わす１ページ分の適切な全体画像を表示させることができる。なお、ユーザは、例えば、他の印刷装置のＵＳＢインターフェイスにＵＳＢメモリ８を装着することにより、ＵＳＢメモリ８内のＰＤＦファイル１００の印刷を他の印刷装置に実行させることもできる。この場合も、他の印刷装置は、各位置情報１１２ａ等を用いて、各部分画像データ１１２ｃ等によって表わされる各部分画像の印刷位置を決定することができる。即ち、外部装置（上記のＰＣ６、他の印刷装置等）は、各位置情報１１２ａ等を用いて、各部分画像データ１１２ｃ等によって表わされる各部分画像の出力位置（表示位置、印刷位置等）を決定することができる。
【００５７】
また、外部装置は、最初のデータ１００ａの先頭から、最後のデータ１００ｂ内のＰＤＦフッタの最後までのハッシュ値（以下では「第１のハッシュ値」と呼ぶ）を算出することができる。また、外部装置は、最後のデータ１００ｂに含まれる署名値を、最後のデータ１００ｂに含まれる公開鍵で復号化することよって、ハッシュ値（以下では「第２のハッシュ値」と呼ぶ）を生成することができる。外部装置は、第１のハッシュ値と第２のハッシュ値とを比較することによって、ＰＤＦファイル１００に対する改ざんの有無を判断することができる。例えば、外部装置は、第１のハッシュ値と第２のハッシュ値とが一致しない場合に、ＰＤＦファイル１００が改ざんされた可能性があることを示すメッセージを出力（表示、印刷等）させる。ユーザは、当該メッセージを見ることによって、ＰＤＦファイル１００が改ざんされた可能性があることを知ることができる。
【００５８】
実施例の通信システム２について詳しく説明した。１枚のスキャン対象物７２を表わす全ての画像データ（以下では「全画像データ」と呼ぶ）の高さ情報（以下では「全高さ情報」と呼ぶ）は、スキャン対象物７２のスキャンが終了するまで未定である。しかも、全高さ情報は、全画像データよりも先にハッシュ計算の対象になるヘッダ情報に含まれる。従って、仮に、全画像データと全高さ情報とを含むＪＰＥＧデータ（以下では「対象ＪＰＥＧデータ」と呼ぶ）を生成する構成を採用すると、スキャン対象物７２のスキャンが終了するまで、対象ＪＰＥＧデータを用いてハッシュ値を算出することができない。なお、多機能機１０は、対象ＪＰＥＧデータをＵＳＢメモリ８に書き込むために、ＵＳＢメモリ８内の対象ＪＰＥＧデータを用いて、最終ハッシュ値を算出し得る。しかしながら、ＵＳＢメモリ８内のデータを用いて処理を実行するのに要する時間は、通常、ＲＡＭ２６内のデータを用いて処理を実行するのに要する時間よりも長くなる。ＵＳＢメモリ８内のデータを利用するためには、ＵＳＢメモリ８内のデータをＲＡＭ２６に一時的に書き込むための処理が必要であり、当該処理に時間を要するからである。従って、本実施例では、多機能機１０は、ＲＡＭ２６内に対象ＪＰＥＧデータを生成し、ＲＡＭ２６内の対象ＪＰＥＧデータを用いて最終ハッシュ値を算出する構成を採用している。
【００５９】
ただし、多機能機１０のＲＡＭ２６の記憶容量は比較的に少ないために（ＰＣ６等よりも少ないために）、上述したように、例えば、印刷処理が同時的に実行される状況では、ＲＡＭ２６は、全画像データの全てを一度に（同時的に）保持することができない可能性、即ち、図５のＳ４８でＹＥＳと判断される可能性がある。従って、本実施例では、多機能機１０は、スキャン対象物７２を表わす全画像データを構成する複数個の部分画像データ１１２ｃ，１１４ｃ，１１６ｃのそれぞれを、ＲＡＭ２６内に順次生成する（図５のＳ４４参照）。さらに、多機能機１０は、複数個の部分画像データ１１２ｃ，１１４ｃ，１１６ｃのそれぞれについて、当該部分画像データの実際の高さ情報を、ＲＡＭ２６内に生成する（図５のＳ５０、Ｓ５８参照）。この構成によると、多機能機１０は、全画像データの全てが生成される前に、ＲＡＭ２６の１個の部分ＪＰＥＧデータ１１２（又は１１４）を用いて、最終ハッシュ値を算出するための算出処理を実行することができる（図５のＳ５４参照）。即ち、ＲＡＭ２６は、全画像データの全てを一度に保持せずに済み、１個の部分ＪＰＥＧデータ１１２（又は１１４）を保持すれば足りる。従って、多機能機１０は、ＲＡＭ２６の記憶容量が比較的に少ない場合でも、最終ハッシュ値を迅速に算出することができる。この結果、多機能機１０は、最終ハッシュ値を含むＰＤＦファイル１００を、ＵＳＢメモリ８内に迅速に生成することができる。
【００６０】
なお、上述したように、ＲＡＭ２６内の空き容量が不足しない場合（例えば他の処理のためのデータ２００（図６参照）がＲＡＭ２６に記憶されない場合）には、ＲＡＭ２６は、１ページ分のＪＰＥＧデータの全てを一度に保持することができる。即ち、多機能機１０は、１ページ分のＪＰＥＧデータの全てをＲＡＭ２６内に生成し、その後に、１ページ分のＪＰＥＧデータの全てを用いて、中間ハッシュ値を算出することがあり得る。このことから明らかなように、本明細書によって開示される「スキャナ装置」は、１ページ分のＪＰＥＧデータ１１１を構成する部分ＪＰＥＧデータ１１２，１１４，１１６を順次生成する処理を必ず実行する必要はなく、そのような処理を実行可能であればよい。
【００６１】
実施例の各要素と本発明の各要素との対応関係を記載しておく。多機能機１０が「スキャナ装置」の一例である。ＵＳＢメモリ８、ＲＡＭ２６、ＵＳＢインターフェイス１６が、それぞれ、「外部記憶装置」、「内部記憶装置」、「装着部」の一例である。２枚のスキャン対象物７２，７４を表わす２ページ分のＪＰＥＧデータが「元データ」の一例であり、例えば、スキャン対象物７２を表わす１ページ目のＪＰＥＧデータ１１１が「対象元データ」の一例である。また、例えば、３個の部分画像データ１１２ｃ，１１４ｃ，１１６ｃの集合が「対象画像データ」の一例であり、３個の部分画像データ１１２ｃ，１１４ｃ，１１６ｃが「Ｎ個の部分画像データ」の一例である。従って、３個の部分ＪＰＥＧデータ１１２，１１４，１１６が「Ｎ個の部分元データ」の一例である。また、２枚のスキャン対象物７２，７２を表わすＰＤＦファイル１００が、「Ｍ枚のスキャン対象物を表わすＭページ分の目的データ」の一例である。図４のＳ２６で算出される最終ハッシュ値が、「ダイジェスト値」の一例である。また、図５のＳ５４及びＳ６２の処理が、「ダイジェスト値を算出するための算出処理」の一例である。高さ情報、幅情報が、それぞれ、「第１種のサイズ情報」、「第２種のサイズ情報」の一例である。
【００６２】
（第２実施例）
第２実施例は、部分ＪＰＥＧデータ生成処理の内容が第１実施例と異なる。第１実施例では、図５に示されるように、ＲＡＭ２６の空き容量が不足する場合（Ｓ４８でＹＥＳの場合）に、１個の部分画像データの生成が終了する。これに対し、本実施例では、予め決められているサイズの画像データが生成される場合に、１個の部分画像データの生成が終了する。図３のＰＤＦファイル１００が生成される場合を例として、図７を参照して、本実施例の部分ＪＰＥＧデータ生成処理の内容について説明する。
【００６３】
図示省略しているが、元データ生成部３０は、部分ＪＰＥＧデータ生成処理を開始する前に、ライン記憶領域のみならず、予め決められているサイズの記憶容量を有する記憶領域（以下では「特定記憶領域」と呼ぶ）を、ＲＡＭ２６内に確保する。特定記憶領域の記憶容量は、所定の高さ情報を有する１個の部分画像データを含む１個の部分ＪＰＥＧデータを記憶することが可能な記憶容量である。なお、上記の所定の高さ情報は、２画素分以上の画素数である。
【００６４】
Ｓ１４０は、図５のＳ４０と同様である。１回目のＳ１４２において、元データ生成部３０は、上記の所定の高さ情報と実際の幅情報とを含むヘッダ情報１１２ｂ（図３参照）を、上記の特定記憶領域内に生成する。Ｓ１４４及びＳ１４６は、図５のＳ４４及びＳ４６と同様である。なお、Ｓ１４４において、画像データ生成部３２は、１ライン分のスキャンデータから得られる１ライン分の画像データを、上記の特定記憶領域内に生成する。次いで、Ｓ１４８において、元データ生成部３０は、上記の所定の高さ情報に一致する高さ方向の画素数を有する１個の部分画像データが、上記の特定記憶領域内に生成されたのか否かを判断する。Ｓ１４８でＮＯの場合、Ｓ１４４に戻る。上述したように、ＲＡＭ２６に予め確保される上記の特定記憶領域は、上記の所定の高さ情報を有する１個の部分画像データを含む１個の部分ＪＰＥＧデータを記憶することが可能な記憶容量を有する。従って、本実施例では、１個の部分画像データを生成する過程で、ＲＡＭ２６内の記憶容量が不足することはない。
【００６５】
Ｓ１４８でＹＥＳの場合、画像データ生成部３２は、１個の部分画像データ１１２ｃの生成を終了し、Ｓ１５２に進む。Ｓ１５２〜Ｓ１５６は、図５のＳ５２〜Ｓ５６と同様である。この結果、上記の所定の高さ情報に一致する高さ方向の画素数を有する１個の部分画像データ１１２ｃを含む部分ＪＰＥＧデータ１１２（図３参照）が、ＲＡＭ２６内に生成される。さらに、中間ハッシュ値が算出され、部分ＪＰＥＧデータ１１２がＵＳＢメモリ８に書き込まれる。Ｓ１５６を終えると、Ｓ１４０に進む。この結果、上記の所定の高さ情報に一致する高さ方向の画素数を有する１個の部分画像データ１１４ｃを含む部分ＪＰＥＧデータ１１４（図３参照）が、ＲＡＭ２６内に生成される。さらに、中間ハッシュ値が算出され、部分ＪＰＥＧデータ１１４がＵＳＢメモリ８に書き込まれる。
【００６６】
本実施例でも、第１実施例と同様に、部分画像データ１１６ｃが生成されると、１ページ目のスキャン対象物７２に対するスキャンが終了したと判断される（即ちＳ１４６でＹＥＳと判断される）。この場合、Ｓ１５８において、第１種のサイズ情報生成部３４は、ＲＡＭ２６内のヘッダ情報１１６ｂ内の上記の所定の高さ情報を、実際の高さ情報（部分画像データ１１６ｃの高さ方向の画素数）に変更する。Ｓ１６０〜Ｓ１６４は、図５のＳ６０〜Ｓ６４と同様である。
【００６７】
本実施例では、複数個の部分画像データ１１２ｃ，１１４ｃ，１１６ｃのうちの最後に生成される部分画像データ１１６ｃの実際の高さ情報は、上記の所定の高さ情報と異なるために、多機能機１０は、部分画像データ１１６ｃを含む部分ＪＰＥＧデータ１１４を生成する際に、高さ情報を変更するための処理（Ｓ１５８の処理）を実行する。ただし、多機能機１０は、各部分画像データ１１２ｃ，１１４ｃの高さ方向の画素数が上記の所定の高さ情報に一致するように、各部分画像データ１１２ｃ，１１４ｃを生成する。従って、多機能機１０は、各部分画像データ１１２ｃ，１１４ｃを含む各部分ＪＰＥＧデータ１１２，１１４を生成する際に、高さ情報を変更するための処理を実行せずに済む（即ちＳ１４８でＹＥＳの場合にはＳ１５８に相当する処理が実行されない）。このために、多機能機１０の処理負荷を低減させることができる。
【００６８】
本実施例では、部分画像データ１１２ｃ，１１４ｃが「Ｎ−１個の部分画像データ」の一例であり、部分画像データ１１６ｃが「Ｎ番目の部分画像データ」の一例である。また、上記の所定の高さ情報が「所定値」の一例である。
【００６９】
（変形例１）上記の各実施例では、算出部５２は、ハッシュ化を利用することによって「ダイジェスト値」を生成するが、その代わりに、他のダイジェスト化の手法を利用してもよい。一般的に言うと、「ダイジェスト値」を算出するための手法は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物を表わす元データから得られる値であって、元データの合計データサイズよりも小さいデータサイズを有する値を生成するためのあらゆるダイジェスト化の手法を含む。
【００７０】
（変形例２）上記の各実施例では、目的データ生成部５０は、ＰＤＦの「目的データ」を生成するが、その代わりに、ＰＤＦ以外の形式（例えばＸＰＳ形式）の「目的データ」を生成してもよい。また、上記の実施例では、元データ生成部３０は、ＪＰＥＧ形式の「元データ」を生成するが、その代わりに、ＪＰＥＧ形式以外の形式（例えば、ＴＩＦＦ、ＢＭＰ形式）の「元データ」を生成してもよい。
【００７１】
（変形例３）上記の各実施例では、ＵＳＢメモリ８を「外部記憶装置」として利用しているが、それに代えて、「外部記憶装置」は、多機能機１０に内蔵されるハードディスクであってもよいし、多機能機１０に装着されるＣＤ、ＤＶＤ、フロッピー（登録商標）ディスク等のメディアであってもよいし、多機能機１０と別体に構成される外部装置（例えばサーバ）内の記憶装置であってもよい。
【００７２】
（変形例４）上記の各実施例では、図５のＳ５４及びＳ６２、図７のＳ１５４及びＳ１６２において、まず、算出部５２が中間ハッシュ値を算出し、次いで、書込部５４が部分ＪＰＥＧデータをＵＳＢメモリ８に書き込む。これに代えて、まず、書込部５４が部分ＪＰＥＧデータをＵＳＢメモリ８に書き込み、次いで、算出部５２が中間ハッシュ値を算出してもよい。
【００７３】
（変形例５）上記の第２実施例において、上記の所定の高さ情報が１画素であってもよい。この場合、各部分ＪＰＥＧデータは、高さ方向の画素数が「１」である１個の部分画像データを含む。即ち、本変形例では、例えば、スキャン対象物７２を表わす全ての画像データは、当該画像データの高さ方向の画素数と同じ数（以下では「特定の数」と呼ぶ）の部分画像データ群によって構成される。従って、スキャン対象物７２を表わす１ページ目のＪＰＥＧデータは、上記の特定の数の部分ＪＰＥＧデータ群によって構成される。本変形例では、図７のＳ１５８を実行せずに済む。本変形例も、本明細書によって開示される「スキャナ装置」の構成に含まれる。
【００７４】
（変形例６）上記の変形例５では、算出部５２は、図７のＳ１４４で１ライン分の部分画像データが生成された後に、ヘッダ情報（即ち高さ情報）を用いて中間ハッシュ値を算出するが、それに代えて、算出部５２は、Ｓ１４２でヘッダ情報が生成された際に、位置情報及びヘッダ情報を用いて中間ハッシュ値を算出してもよい。この場合、算出部５２は、Ｓ１５４において、位置情報及びヘッダ情報を用いずに、部分画像データ及びフッタ情報を用いて中間ハッシュ値を算出してもよい。即ち、算出部５２は、Ｓ１４４で１ライン分の部分画像データが生成される前に、ヘッダ情報（即ち高さ情報）を用いて中間ハッシュ値を算出してもよい。本変形例も、本明細書によって開示される「スキャナ装置」の構成に含まれる。
【００７５】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００７６】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００７７】
２：通信システム、８：ＵＳＢメモリ、１０：多機能機、２０：制御部、２６：ＲＡＭ、１００：ＰＤＦファイル、１１１：１ページ目のＪＰＥＧデータ、１１２〜１１６：部分ＪＰＥＧデータ、１１２ａ〜１１６ａ：位置情報、１１２ｂ〜１１６ｂ：ヘッダ情報、１１２ｃ〜１１６ｃ：部分画像データ、１１２ｄ〜１１６ｄ：フッタ情報 
【図１】
0005293693.tif 000002
【図２】
0005293693.tif 000003
【図３】
0005293693.tif 000004
【図４】
0005293693.tif 000005
【図５】
0005293693.tif 000006
【図６】
0005293693.tif 000007
【図７】
0005293693.tif 000008