(57)【要約】【課題】スキャナで読み取った画像データを残りの原稿が読み取り中であっても送信する場合にスキャナエラーが発生しても、送信先のサーバの負荷を抑えた送信処理を実行すること。【解決手段】送信モジュール３０４は、スキャンモジュール３０２よる制御に従い原稿の読み取りが行われている間に、セッションを開始して、既にファイル変換モジュール３０３により変換処理が行われたデータについては、前記ネットワークを介したサーバ１０２への送信を実行し、前記原稿の読み取りに際して前記スキャナでエラーが発生した場合に、前記開始されたセッションを切断し（Ｓ９０５）、前記エラーが解消した場合（Ｓ９０８でＴＲＵＥの場合）に、前記セッションを再度、接続して（Ｓ９０９）、前記変換処理が行われたデータについて、サーバ１０２への送信を実行する。【選択図】図９
2020088683.tif 000002
【特許請求の範囲】
【請求項１】
スキャナを備える送信装置であって、
画像データを生成するために、前記スキャナを用いた複数ページの原稿の読み取りを制御する第１制御手段と、
前記生成された画像データの変換処理を行う第２制御手段と、
前記変換処理が行われたデータのネットワークを介した外部装置への送信を制御する第３制御手段と、を有し、
前記第３制御手段は、前記第１制御手段による制御に従い原稿の読み取りが行われている間に、セッションを開始して、既に前記変換処理が行われたデータについては、前記ネットワークを介した外部装置への送信を実行し、
さらに前記第３制御手段は、前記原稿の読み取りに際して前記スキャナでエラーが発生した場合に、前記開始されたセッションを切断し、前記エラーが解消した場合に、前記セッションを再度、接続して、前記変換処理が行われたデータについて、前記ネットワークを介した外部装置への送信を実行する、ことを特徴とする送信装置。
【請求項２】
前記第３制御手段は、前記エラーが解消した場合に、前記複数ページの原稿の残りの全てのページの読み取りが完了した後に、前記セッションを再度、接続して、前記変換処理が行われたデータについて、前記ネットワークを介した外部装置への送信を実行する、ことを特徴とする請求項１に記載の送信装置。
【請求項３】
前記第３制御手段は、前記変換処理の設定が数ページ毎にファイルを分割して生成する設定であれば、前記原稿の読み取りに際して前記スキャナでエラーが発生した場合に前記開始されたセッションを切断する場合、前記外部装置に対して前記外部装置へ送信されたデータの削除指示を行い、前記エラーが解消した場合に、前記セッションを再度、接続して、前記変換処理が行われた全てのデータについて、前記ネットワークを介した外部装置への送信を実行することを特徴とする請求項１又は２に記載の送信装置。
【請求項４】
前記外部装置へ送信されたデータを前記外部装置から削除している旨をユーザに通知する通知手段を有することを特徴とする請求項３に記載の送信装置。
【請求項５】
前記第３制御手段は、前記変換処理の設定が数ページ毎にファイルを分割して生成する設定であれば、前記エラーが解消した場合に、前記セッションを再度、接続して、前記変換処理が行われたデータの中で、送信が未完了のページのデータについて、前記ネットワークを介した外部装置への送信を実行する、ことを特徴とする請求項１又は２に記載の送信装置。
【請求項６】
前記第３制御手段は、前記スキャナでエラーが発生した場合に、前記変換処理の設定が数ページ毎にファイルを分割して生成する設定であれば、エラー発生する直前のページに対応する前記変換処理が行われたデータまで、前記ネットワークを介した外部装置への送信を実行し、前記セッションを切断する、ことを特徴とする請求項５に記載の送信装置。
【請求項７】
前記第３制御手段は、前記スキャナでエラーが発生した場合に、一定時間が経過した後に、前記外部装置とのセッションを切断することを特徴とする請求項１〜６のいずれか１項に記載の送信装置。
【請求項８】
前記第３制御手段は、前記一定時間が経過する前に、前記スキャナでエラーが解除された場合、前記外部装置とのセッションの切断をすることなく、前記外部装置へのデータの送信を継続する、ことを特徴とする請求項７に記載の送信装置。
【請求項９】
スキャナを備える送信装置の制御方法であって、
画像データを生成するために、前記スキャナを用いた複数ページの原稿の読み取りを制御する第１制御ステップと、
前記生成された画像データの変換処理を行う第２制御ステップと、
前記変換処理が行われたデータのネットワークを介した外部装置への送信を制御する第３制御ステップと、を有し、
前記第３制御ステップでは、前記第１制御ステップによる制御に従い原稿の読み取りが行われている間に、セッションを開始して、既に前記変換処理が行われたデータについては、前記ネットワークを介した外部装置への送信を実行し、
さらに前記第３制御ステップでは、前記原稿の読み取りに際して前記スキャナでエラーが発生した場合に、前記開始されたセッションを切断し、前記エラーが解消した場合に、前記セッションを再度、接続して、前記変換処理が行われたデータについて、前記ネットワークを介した外部装置への送信を実行する、ことを特徴とする送信装置の制御方法。
【請求項１０】
コンピュータを、請求項１〜８のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャナで読み取った画像を指定された画像フォーマットのファイルに変換してネットワーク上の送信宛先に送信する送信装置、送信装置の制御方法及びプログラムに関する。
【背景技術】
【０００２】
スキャナで読み取った画像を指定された画像フォーマットのファイルに変換してネットワーク上の送信宛先に送信するＭＦＰ（Multi Function Perripheral）等の画像処理装置がある。ＭＦＰは、複数のユーザに使用されるため、文書を高速に読み取り、データ送信終了を待たずに、次のユーザに早く明け渡すことが望まれる。このためにスキャン速度を高速に処理することを中心に設計され、送信速度について重要視されていなかった。
【０００３】
しかし、昨今では、ＭＦＰでの画像ファイル送信後のワークフローで、作業者がファイルの内容を確認するといったケースが増加している。このため、送信宛先に対してなるべく高速にファイルを送信したいという要求が高まってきている。
【０００４】
このため、ＭＦＰでは、原稿スキャン中に並行して送信処理を実行することで送信完了を早めることが検討されている。加えて、このようなスキャンと送信処理を並行して実施している中で、ＭＦＰでスキャン中にジャム等のスキャナエラーが発生した場合にも、時間のロスを少なく送信を実行する提案がされている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１５１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の技術では、スキャナエラー発生中に送信先のサーバとの通信セッションが接続状態のままになってしまっていた。すなわち、ユーザがエラー解除している間も、サーバのネットワークリソースを占有することになってしまっていた。このため、サーバにとって負荷が高くなってしまうという課題があった。
【０００７】
本発明は、上記の課題を解決するためになされたものである。本発明は、スキャナで読み取った画像データを残りの原稿が読み取り中であっても送信する場合にスキャナエラーが発生しても、送信先の装置の負荷を抑えた送信処理を実行することができる仕組みを提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明は、スキャナを備える送信装置であって、画像データを生成するために、前記スキャナを用いた複数ページの原稿の読み取りを制御する第１制御手段と、前記生成された画像データの変換処理を行う第２制御手段と、前記変換処理が行われたデータのネットワークを介した外部装置への送信を制御する第３制御手段と、を有し、前記第３制御手段は、前記第１制御手段による制御に従い原稿の読み取りが行われている間に、セッションを開始して、既に前記変換処理が行われたデータについては、前記ネットワークを介した外部装置への送信を実行し、さらに前記第３制御手段は、前記原稿の読み取りに際して前記スキャナでエラーが発生した場合に、前記開始されたセッションを切断し、前記エラーが解消した場合に、前記セッションを再度、接続して、前記変換処理が行われたデータについて、前記ネットワークを介した外部装置への送信を実行する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、スキャナで読み取った画像データを残りの原稿が読み取り中であっても送信する場合にスキャナエラーが発生しても、送信先の装置の負荷を抑えた送信処理を実行することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の画像処理システムの構成図。
【図２】本実施形態の画像処理全体のハードウェア構成図。
【図３】画像形成装置のソフトウェア構成図。
【図４】送信ジョブ管理テーブル、文書管理テーブルの一例を示す図。
【図５】送信ジョブ管理モジュールの処理の一例を示すフローチャート。
【図６Ａ】スキャンモジュールの処理の一例を示すフローチャート。
【図６Ｂ】スキャンモジュールの処理の一例を示すフローチャート。
【図７Ａ】ファイル変換モジュールの処理の一例を示すフローチャート。
【図７Ｂ】ファイル変換モジュールの処理の一例を示すフローチャート。
【図８Ａ】送信モジュールの全体の処理の一例を示すフローチャート。
【図８Ｂ】送信モジュールの全体の処理の一例を示すフローチャート。
【図９】第１実施形態における送信中断処理の詳細を説明するフローチャート。
【図１０】第２実施形態における送信中断処理の詳細を説明するフローチャート。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。
〔第１実施形態〕
図１は、本発明の送信装置の一実施形態に係る画像処理装置を含む画像処理システムの構成の一例を説明する図である。
図１に示すように、本実施形態に係る画像処理システムでは、画像処理装置としてのＭＦＰ１０１が、ファイアウォール（ＦＷ）１０３、ネットワーク（Network）１０４等を介して、サーバ１０２と通信可能である。本実施例では、ＭＦＰ１０１は、例えばＦＴＰ（File Transfer Protocol）により、サーバ１０２と通信を行う通信機能を備えている。なお、通信プロトコルはＦＴＰに限定されるものではない。
【００１２】
ＭＦＰ１０１は、ファイアウォール１０３を通じてネットワーク１０４に接続されている。本実施例では、サーバ１０２はＦＴＰサーバとして動作し、ＭＦＰ１０１はＦＴＰクライアントとして動作する。サーバ１０２は、ＭＦＰ１０１から送信された画像ファイルを保存する画像ファイリングサーバとして機能する。
【００１３】
また、本実施例では、ＭＦＰ１０１は、ネットワーク１０４に対してファイアウォール１０３を介して通信する構成であるが、ファイアウォール１０３を介さないネットワーク構成でもよい。また、ネットワーク１０４には、図示したよりも多くのファイアウォール１０３、ＭＦＰ１０１、サーバ１０２が接続されてもよい。また、本実施例では、通信プロトコルはＦＴＰのみでなく、ＳＭＢ（Server Message Block）、ＷｅｂＤＡＶ（Web-based Distributed Authoring and Versioning）などでもよい。また、通信プロトコルは、ＳＭＴＰ（Simple Mail Transfer Protocol）といったメール通信のプロトコルでもよい。
【００１４】
図２は、本実施形態に係る画像処理システム全体のハードウェア構成の一例を示すブロック図である。
ＭＦＰ１０１において、ＣＰＵ２０２は、ＲＯＭ２０３またはハードディスク（ＨＤＤ）２０５に記憶された制御プログラムに基づいてシステムバス２０６に接続される各種のデバイスとのアクセスを総括的に制御する。ＲＯＭ２０３は、ＣＰＵ２０２が実行可能な制御プログラム等を記憶している。ＲＡＭ２０４は、主としてＣＰＵ２０２の主メモリ、ワークエリア等として機能し、不図示の増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００１５】
ＨＤＤ２０５は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶する。なお、本実施例ではＨＤＤ２０５を用いたが、ＨＤＤの代わりに又は併用してソリッドステートドライブ（ＳＳＤ）を用いてもよい。さらに、ＨＤＤ２０５等の他にＳＤカードや、フラッシュメモリなどを外部記憶装置として利用してもよい。
【００１６】
スキャナＩ／Ｆ２０１は、スキャナ２１１からの画像入力を制御する。プリンタＩ／Ｆ２０７は、プリンタ２１２への画像出力を制御する。パネル操作Ｉ／Ｆ２０８は、オペレーションパネル２１０の表示制御および、オペレーションパネル２１０で設定される各種設定情報の入力を制御する。ネットワークＩ／Ｆ２０９は、ネットワークケーブルを経由して外部ネットワークとデータ通信を行う。
【００１７】
スキャナ２１１は、原稿台上に載置された複数の原稿を順次給紙して原稿上の画像を読み取り、該読み取った画像データをページ毎に順に出力する。プリンタ２１２は、画像データに基づく画像を記録媒体上に印刷する。オペレーションパネル２１０は、タッチパネル付きＬＣＤ表示パネルと、スタートキー、テンキー等のハードキーを有し、ＬＣＤ上にソフトウェアによりボタンを表示し、そのボタンをユーザが指等でタッチすることを検出してユーザオペレーションを円滑に実行可能なものである。
【００１８】
サーバ１０２において、ＣＰＵ２２１は、ＲＯＭ２２２またはハードディスク（ＨＤＤ）２２４に記憶された制御プログラムに基づいてシステムバス２２５に接続される各種のデバイスとのアクセスを総括的に制御する。ＲＯＭ２２２は、ＣＰＵ２２１が実行可能な制御プログラム等を記憶している。ＲＡＭ２２３は、主としてＣＰＵ２２１の主メモリ、ワークエリア等として機能し、不図示の増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００１９】
ＨＤＤ２２４は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶する。なお、本実施例ではＨＤＤ２２４を用いたが、ＨＤＤの代わりに又は併用してソリッドステートドライブ（ＳＳＤ）を用いてもよい。さらに、ＨＤＤ２２４の他にＳＤカードや、フラッシュメモリなどを外部記憶装置として利用してもよい。
ネットワークＩ／Ｆ２２６は、ネットワークケーブルを経由して外部ネットワークとデータ通信を行う。
【００２０】
図３は、ＭＦＰ１０１のソフトウェア構成の一例を示すブロック図である。
図３に示すように、ＭＦＰ１０１は、ソフトウェアモジュールとして、送信ジョブ管理モジュール３０１、スキャンモジュール３０２、ファイル変換モジュール３０３、送信モジュール３０４等を有する。モジュール３０１〜３０４は、ＭＦＰ１０１のＣＰＵ２０２がＲＯＭ２０３又はＨＤＤ２０５等に格納されたプログラムを実行することにより実現されるソフトウェアモジュールである。
また、ＭＦＰ１０１のＨＤＤ２０５には、送信ジョブ管理テーブル３０５、文書管理テーブル３０６等が保存されており、ソフトウェアモジュール３０１〜３０４は、これらのテーブルのデータを扱いながら動作する。
【００２１】
本実施例では、ＭＦＰ１０１において原稿のスキャンを行って画像を読み取り、指定された画像フォーマットに変換した画像ファイルをサーバ１０２に送信する。全体の動作の中での、ＭＦＰ１０１の各モジュールの動作時の役割を説明する。
【００２２】
送信ジョブ管理モジュール３０１は、スキャン、ファイル変換、送信といった全体の処理を管理するモジュールであり、ユーザ操作をトリガにして送信ジョブを生成する。
スキャンモジュール３０２は、スキャナＩ／Ｆ２０１を介してスキャナ２１１を制御し、画像データを作成する。スキャンモジュール３０２は、送信ジョブ管理モジュール３０１から起動される。なお、スキャナ２１１は、図示しないフィーダ（自動原稿給送装置）を備え、原稿台上に載置された複数の原稿を順次給紙して原稿上の画像を読み取り、該読み取った画像データをページ毎に順に出力する。スキャンモジュール３０２は、画像データを生成するために、スキャナ２１１を用いた複数ページの原稿の読み取りを制御する。
【００２３】
ファイル変換モジュール３０３は、スキャンモジュール３０２が作成した画像データを所定のファイル形式に変換し文書ファイルを生成するモジュールである。ファイル変換モジュール３０３も、送信ジョブ管理モジュール３０１から起動される。
送信モジュール３０４は、ファイル変換モジュール３０３が作成した文書ファイルを、サーバ１０２に送信するモジュールである。送信モジュール３０４も、送信ジョブ管理モジュール３０１から起動される。
【００２４】
送信ジョブ管理テーブル３０５には、各モジュールが動作する際のパラメータが送信ジョブレコードとして保存されている。
図４（ａ）は、送信ジョブ管理テーブル３０５の一例を示す図である。
送信ジョブ管理テーブル３０５は、例えば、送信ジョブＩＤ、スキャン設定、スキャン状態、ファイル種別、ファイル分割設定、変換前文書ＩＤ、変換後文書ＩＤリスト、ファイル変換状態、宛先設定、送信状態、ジョブ停止フラグ等の項目で構成されている。
【００２５】
文書管理テーブル３０６は、スキャンモジュール３０２がスキャンした画像データや、ファイル変換モジュール３０３が変換した文書ファイルが保存されるテーブルである。
図４（ｂ）は、文書管理テーブル３０６の一例を示す図である。
文書管理テーブル３０６は、例えば、文書ＩＤ、文書完成フラグ、ヘッドデータ、１ページ目データ、・・・、Ｎページ目データ、フッタデータ等の項目で構成されている。
【００２６】
スキャンモジュール３０２、ファイル変換モジュール３０３、送信モジュール３０４は、各々並列に処理が可能である。すなわち、例えば２枚の原稿をスキャンして送信する場合において、スキャナが２枚目の原稿をスキャンしている間に、１枚目の画像データをファイル変換し、サーバ１０２に送信するということが可能である。
【００２７】
以下、フローチャートを用いて、各モジュールの処理を詳細に説明する。
図５は、送信ジョブ管理モジュール３０１の処理の一例を示すフローチャートである。なお、本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出されＣＰＵ２０２によって実行されることで実現される。
【００２８】
本フローチャートの処理は、ユーザがＭＦＰ１０１のオペレーションパネル２１０を操作することで開始される。処理が開始されると、まず送信ジョブ管理モジュール３０１は、オペレーションパネル２１０から、スキャン、送信の設定のためのユーザ入力を受け付ける（Ｓ５０１）。この設定には、スキャン設定として解像度・原稿の種類の設定等、ファイル設定としてファイル形式やファイル分割設定等、送信設定として宛先設定等が含まれる。
【００２９】
次に、送信ジョブ管理モジュール３０１は、オペレーションパネル２１０から、スキャン及び送信の開始のためのユーザ入力を受け付ける（Ｓ５０２）。
該スキャン及び送信の開始のためのユーザ入力を受け付けると、送信ジョブ管理モジュール３０１は、ＨＤＤ２０５上の送信ジョブ管理テーブル３０５に新しい送信ジョブレコードを追加する（Ｓ５０３）。この時、上記Ｓ５０１で入力された設定を新しい送信ジョブレコードに保存し、加えて、送信ジョブ管理テーブル３０５の中で唯一になるように、送信ジョブＩＤを発行し、新しい送信ジョブレコードに保存する。
【００３０】
送信ジョブレコードが作成されると、送信ジョブ管理モジュール３０１は、上記Ｓ５０３において発行した送信ジョブＩＤをパラメータとして、スキャンモジュール３０２を起動する（Ｓ５０４）。起動されたスキャンモジュール３０２の動作は図６Ａ、図６Ｂで詳細に説明する。
【００３１】
次に、送信ジョブ管理モジュール３０１は、上記Ｓ５０３において発行した送信ジョブＩＤをパラメータとして、ファイル変換モジュール３０３を起動する（Ｓ５０５）。起動されたファイル変換モジュール３０３の動作は図７Ａ及び図７Ｂで詳細に説明する。
【００３２】
次に、送信ジョブ管理モジュール３０１は、上記Ｓ５０３において発行した送信ジョブＩＤをパラメータとして、送信モジュール３０４を起動する（Ｓ５０６）。起動された送信モジュール３０４の動作は図８Ａ、図８Ｂ及び図９で詳細に説明する。
【００３３】
以後、送信ジョブ管理モジュール３０１は、上記Ｓ５０４〜Ｓ５０６で、各モジュールを起動した後は、各モジュールに処理を任せ、各モジュールが処理を完了するのを待つ。
送信ジョブ管理モジュール３０１は、送信ジョブ管理テーブル３０５の中の作成した送信ジョブレコードのスキャン状態・ファイル変換状態・送信状態の全てが「完了」になったかどうかを判定する（Ｓ５０７）。
【００３４】
スキャン状態・ファイル変換状態・送信状態の全てが「完了」になった場合（Ｓ５０７でＴＲＵＥの場合）、送信ジョブ管理モジュール３０１は、送信成功という履歴情報をＨＤＤ２０５に記録する（Ｓ５０８）。
【００３５】
一方、スキャン状態・ファイル変換状態・送信状態の少なくともいずれかが「完了」でない場合（Ｓ５０７でＦＡＬＳＥの場合）、送信ジョブ管理モジュール３０１は、Ｓ５０９に処理を進める。
Ｓ５０９において、送信ジョブ管理モジュール３０１は、送信ジョブ管理テーブル３０５の中の作成した送信ジョブレコードのスキャン状態・ファイル変換状態・送信状態の全てが「完了」または「エラー終了」になったかどうかを判定する。
【００３６】
スキャン状態・ファイル変換状態・送信状態の少なくともいずれかが「完了」でも「エラー終了」でもない場合（Ｓ５０９でＦＡＬＳＥの場合）、送信ジョブ管理モジュール３０１は、Ｓ５０７に処理を戻し、各モジュールの終了を待つ。
一方、スキャン状態・ファイル変換状態・送信状態の全てが「完了」または「エラー終了」になった場合（Ｓ５０９でＴＲＵＥの場合）、送信ジョブ管理モジュール３０１は、送信エラーという履歴情報をＨＤＤ２０５に記録する（Ｓ５１０）。
【００３７】
なお、Ｓ５０７がＴＲＵＥになるのは全てが「完了」の場合のみで、Ｓ５０９がＴＲＵＥになるのは「エラー終了」と「完了」の組み合わせである。このため、Ｓ５０７では「正常終了」を判定し、Ｓ５０９では「異常終了」を判定していることになる。
【００３８】
上記Ｓ５０８又はＳ５１０で履歴情報をＨＤＤ２０５に保存した後、送信ジョブ管理モジュール３０１は、送信ジョブ管理テーブル３０５の中から、上記Ｓ５０３で作成した送信ジョブレコードを削除し（Ｓ５１１）、本フローチャートの処理を終了する。なお、上記Ｓ５１１では、送信ジョブレコードの変換前文書ＩＤと変換後文書ＩＤリストに記載されている各文書ＩＤに該当する全ての文書管理テーブル３０６の文書レコードも同時に削除する。
【００３９】
図６Ａ、図６Ｂは、スキャンモジュール３０２の処理の一例を示すフローチャートである。本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出され、ＣＰＵ２０２によって実行されることで実現される。
【００４０】
本フローチャートの処理は、送信ジョブ管理モジュール３０１が図５のＳ５０４の処理においてスキャンモジュール３０２を起動することで開始される。処理が開始されると、まずスキャンモジュール３０２は、起動時に送信ジョブ管理モジュール３０１から渡された送信ジョブＩＤを受け取り、送信ジョブ管理テーブル３０５から該当する送信ジョブＩＤの送信ジョブレコードを特定する（Ｓ６０１）。この処理により、スキャンモジュール３０２は、処理対象の送信ジョブレコードを特定することができる。
【００４１】
次に、スキャンモジュール３０２は、ＨＤＤ２０５上の文書管理テーブル３０６に新しい文書レコードを作成する（Ｓ６０２）。この時、文書管理テーブル３０６の中で唯一になるように文書ＩＤを発行し、該新しい文書レコードに保存する。
【００４２】
次に、スキャンモジュール３０２は、上記Ｓ６０１で特定した送信ジョブレコード（以下単に「送信ジョブレコード」という）の変換前文書ＩＤの項目に、上記Ｓ６０２で作成した新しい文書レコード（以下単に「文書レコード」という）の文書ＩＤを保存する（Ｓ６０３）。
【００４３】
次に、スキャンモジュール３０２は、送信ジョブレコードからスキャン設定の項目の値を読み取る（Ｓ６０４）。
次に、スキャンモジュール３０２は、原稿読取枚数カウントを示す変数Ｘに「１」を設定し（Ｓ６０５）、送信ジョブレコードのスキャン状態の項目に「スキャン中」を保存する（Ｓ６０６）。
【００４４】
この後、スキャンモジュール３０２は、スキャナ２１１を動作させていく。
まず、スキャンモジュール３０２は、上記Ｓ６０４で読み取ったスキャン設定に従って、一枚分の原稿をスキャンするために、スキャナ２１１を動作させる（Ｓ６０７）。
【００４５】
ここで、スキャンモジュール３０２は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ６０８）。ジョブ停止フラグは、当該送信ジョブを中止する際にスキャンモジュール３０２、ファイル変換モジュール３０３、送信モジュール３０４の動作を止めるために利用される項目であり、各モジュールにおいて必要なタイミングで度々判定を行う。例えば、ジョブ停止フラグは、後述するＳ６１７（図６Ｂ）でキャンセルを受け付けた場合に「Ｔｒｕｅ」が設定される。また、図示しないが、ファイル変換モジュールや送信モジュールにおいてエラーが発生した場合等にも、ジョブ停止フラグに「Ｔｒｕｅ」が設定される。
【００４６】
送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ６０８でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６０９に処理をすすめる。
Ｓ６０９において、スキャンモジュール３０２は、上記Ｓ６０７で動作させたスキャナ２１１がエラーを発生させていないか否かを判定する。ここでスキャナ２１１が発生させるエラーの例としては、ジャム（原稿詰まり）が挙げられる。他にも、エラーには、ＭＦＰ１０１の送信機能における読み取り面数の上限に達した場合などがある。上記Ｓ６０９で発生したエラーは、ユーザ操作によって、エラーを除去して継続するか、または、一旦ジョブをキャンセルするかを選択することが可能なエラーを指す。該ユーザ操作は、オペレーションパネル２１０から行うことができる。
【００４７】
上記Ｓ６０９において、スキャナがエラーを発生させていないと判定した場合（Ｓ６０９でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６１０に処理を進める。
Ｓ６１０において、スキャンモジュール３０２は、スキャナ２１１が読み取った画像データを、文書レコードのＸページ目データとして保存する。さらに、スキャンモジュール３０２は、変数Ｘをインクリメントし（Ｓ６１１）、Ｓ６１２に処理を進める。
【００４８】
Ｓ６１２において、スキャンモジュール３０２は、スキャンすべき原稿がなくなったかどうかを判定する。この処理は、例えばスキャナ２１１に搭載されているセンサ等でフィーダーに原稿が残っているかどうかの判定を行う。
【００４９】
まだスキャンすべき原稿が残っている場合（Ｓ６１２でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６０７に処理を戻し、次の原稿の読み取りを継続するように制御する。
【００５０】
一方、スキャンすべき原稿がなくなったと判定した場合（Ｓ６１２でＴＲＵＥの場合）、スキャンモジュール３０２は、文書レコードの文書完成フラグの項目に「Ｔｒｕｅ」を保存する（Ｓ６１３）。
次に、スキャンモジュール３０２は、送信ジョブレコードのスキャン状態の項目に「完了」を保存し（Ｓ６１４）、本フローチャートの処理を終了する。
【００５１】
また、上記Ｓ６０９において、スキャナ２１１がエラーを発生させたと判定した場合（Ｓ６０９でＴＲＵＥの場合）、スキャンモジュール３０２は、エラーのリカバリを行うため、Ｓ６１５（図６Ｂ）に処理を進める。
【００５２】
Ｓ６１５において、スキャンモジュール３０２は、送信ジョブレコードのスキャン状態の項目に「エラー発生中」を保存する。
次に、スキャンモジュール３０２は、発生したエラーの解除方法をオペレーションパネル２１０上に表示すると同時に、ジョブのキャンセルを受け付けるボタン（キャンセルボタン）を表示する（Ｓ６１６）。
【００５３】
次に、スキャンモジュール３０２は、上記Ｓ６１６で表示したキャンセルを受け付けた（キャンセルボタンが押下された）かどうかを判定する（Ｓ６１７）。キャンセルを受け付けていないと判定された場合（Ｓ６１７でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６１８に処理を進める。
【００５４】
Ｓ６１８において、スキャンモジュール３０２は、上記Ｓ６０９で発生したと判定されたエラーが、ユーザ等によって解除されたか否かを判定する。まだエラーが解除されていないと判定された場合（Ｓ６１８でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６１５に処理を戻し、再度、キャンセル押下またはエラー解除を待つように制御する。
【００５５】
一方、エラーが解除されたと判定した場合（Ｓ６１８でＴＲＵＥの場合）、スキャンモジュール３０２は、Ｓ６１９に処理を進める。
Ｓ６１９において、スキャンモジュール３０２は、スキャンエラー復旧時に１枚目から原稿を置きなおす設定となっているか否かを判定する。この設定は、例えば、予めＭＦＰ１０１に設定されＨＤＤ２０５に保存されているものとするが、図５のＳ５０１で入力される設定に含まれていてもよい。
【００５６】
スキャンエラー復旧時に１枚目から原稿を置きなおす設定ではない場合（Ｓ６１９でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６０６（図６Ａ）に処理を戻し、スキャンを再開するように制御する。この時、変数Ｘはエラーが発生した原稿のページ数を指したままであるため、この後、スキャンモジュール３０２は、エラーが発生した原稿からスキャンを再開するように動作することになる。
【００５７】
一方、スキャンエラー復旧時に１枚目から原稿を置きなおす設定の場合（Ｓ６１９でＴＲＵＥの場合）、スキャンモジュール３０２は、Ｓ６２０に処理を進める。
Ｓ６２０において、スキャンモジュール３０２は、空スキャンページ数を示す変数Ｙに「１」を設定する。
次にスキャンモジュール３０２は、変数Ｙの値とエラー発生ページで止まっている変数Ｘの値が一致しているかどうかを判定する（Ｓ６２１）。変数Ｙと変数Ｘの値が一致しているということは、後述するＳ６２３のスキャナを通紙した枚数が上記Ｓ６０９でエラーが発生したページの直前の枚数まで到達したという意味となり、次にスキャンするページがエラーが発生したページということになる。
【００５８】
変数Ｙの値と変数Ｘの値が一致していない場合（Ｓ６２１でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６２２に処理を進める。
スキャンモジュール３０２は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ６２２）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ６２２でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６２３に処理を進める。
【００５９】
Ｓ６２３において、スキャンモジュール３０２は、原稿を一枚通紙させるためにスキャナを動作させる。この処理は、原稿をエラー発生原稿まで空送りするために行う処理のため、画像データは作成されない。
【００６０】
次に、スキャンモジュール３０２は、スキャナがエラーを発生させたか否かを判定する（Ｓ６２４）。Ｓ６２４のエラー判定ではＳ６０９と同じエラー判定を行う。スキャナがエラーを発生させていないと判定した場合（Ｓ６２４でＦＡＬＳＥの場合）、スキャンモジュール３０２は、Ｓ６２５に処理を進める。
Ｓ６２５において、スキャンモジュール３０２は、変数Ｙをインクリメントし、Ｓ６２１に処理を戻し、次の原稿の空送り処理に移行する。
【００６１】
そしてＳ６２１において、変数Ｙの値と変数Ｘの値が一致していると判定した場合（Ｓ６２１でＴＲＵＥの場合）、スキャンモジュール３０２は、Ｓ６０６（図６Ａ）に処理を戻し、スキャンを再開するように制御する。以上Ｓ６１５〜Ｓ６２５の処理によって、スキャン中のエラーを除去した後、１枚目から置きなおし、又は、１枚目から置きなおしすることなく、エラー箇所からスキャン処理を継続することが可能となる。
【００６２】
なお、上述した空おくり処理中に、スキャナがエラーを発生させたと判定した場合（Ｓ６２４でＴＲＵＥの場合）、スキャンモジュール３０２は、Ｓ６１５に処理を戻し、再度エラーの解除を待つ。
【００６３】
また上記Ｓ６１７において、キャンセルを受け付けたと判定された場合（Ｓ６１７でＴＲＵＥの場合）、スキャンモジュール３０２は、Ｓ６２６に処理を進める。
Ｓ６２６において、スキャンモジュール３０２は、送信ジョブレコードのジョブ停止フラグの項目に「Ｔｒｕｅ」を保存する。
さらに、スキャンモジュール３０２は、送信ジョブレコードのスキャン状態の項目に「エラー終了」を保存し（Ｓ６２７）、本フローチャートの処理を終了する。この場合、送信ジョブが中止される。
【００６４】
なお、上記Ｓ６０８又はＳ６２２で、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」の場合、スキャンモジュール３０２は、送信ジョブレコードのスキャン状態の項目に「エラー終了」を保存し（Ｓ６２７）、本フローチャートの処理を終了する。この場合、送信ジョブが中止される。
【００６５】
図７Ａ、図７Ｂは、ファイル変換モジュール３０３の処理の一例を示すフローチャートである。なお、本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出されＣＰＵ２０２によって実行されることで実現される。
【００６６】
本フローチャートの処理は、送信ジョブ管理モジュール３０１がＳ５０５の処理においてファイル変換モジュール３０３を起動することで開始される。処理が開始されると、まずファイル変換モジュール３０３は、起動時に送信ジョブ管理モジュール３０１から渡された送信ジョブＩＤを受け取り、送信ジョブ管理テーブル３０５から該当する送信ジョブＩＤの送信ジョブレコードを特定する（Ｓ７０１）。この処理により、ファイル変換モジュール３０３は、処理対象の送信ジョブレコードを特定することができる。
【００６７】
次に、ファイル変換モジュール３０３は、上記Ｓ７０１で特定した送信ジョブレコード（以下単に「送信ジョブレコード」という）のファイル種別とファイル分割設定の項目を読み取る（Ｓ７０２）。ファイル種別には、例えば、ＰＤＦ(Portable Document Formant)、ＸＰＳ(XML Paper Specification)などがある。また、さらに高圧縮ＰＤＦやＯＣＲ(Optical Character Recognition)−ＰＤＦなどのオプションが付いたファイル種別も含む。ファイル分割設定とは、数ページ毎にファイルを分割する設定である。例えば、１０ページの原稿をスキャンした場合に、「３ページ毎にファイル分割する」という設定では、３ページのファイルが３つと１ページのファイルが１つ、全部で４つのファイルが作られる。
【００６８】
次に、ファイル変換モジュール３０３は、送信ジョブレコードのファイル変換状態の項目に「変換中」を保存する（Ｓ７０３）。
次に、ファイル変換モジュール３０３は、変換しようとする変換前文書のページ番号を示す変数Ｘに「１」を設定する（Ｓ７０４）。
次に、ファイル変換モジュール３０３は、送信ジョブレコードの変換前文書ＩＤの項目の値を読み取る（Ｓ７０５）。
【００６９】
次に、ファイル変換モジュール３０３は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ７０６）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ７０６でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７０７に処理を進める。
【００７０】
Ｓ７０７において、ファイル変換モジュール３０３は、上記Ｓ７０５で読み取った文書ＩＤの文書レコードを文書管理テーブル３０６から検索し、該検索した文書レコードのＸページ目データが存在するかどうかを判定する。この判定は、スキャンモジュール３０２がＳ６１０（図６Ａ）で保存したページデータが存在するかどうかの判定に対応する。
【００７１】
上記文書レコードのＸページ目データが存在する場合（Ｓ７０７でＴＲＵＥの場合）、ファイル変換モジュール３０３は、Ｓ７０８に処理を進める。
Ｓ７０８において、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストが空かどうかを判定する。この判定は、処理中の送信ジョブについて、まだ変換後の文書が一つもないかどうかの判定に対応する。また、この判定は、処理中の送信ジョブに対応するファイル変換処理の最初の一回のみ「ＴＲＵＥ」となり、以後「ＦＡＬＳＥ」となる。
【００７２】
送信ジョブレコードの変換後文書ＩＤリストが空の場合（Ｓ７０８でＴＲＵＥの場合）、ファイル変換モジュール３０３は、Ｓ７０９に処理を進める。
Ｓ７０９において、ファイル変換モジュール３０３は、文書管理テーブル３０６に新しい文書レコードを作成する。この時、文書管理テーブル３０６の中で唯一になるように、文書ＩＤを発行し、新しい文書レコードに保存する。
【００７３】
次に、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストの項目に、上記Ｓ７０９で新しく作成した文書レコードの文書ＩＤを追加する（Ｓ７１０）。
次に、ファイル変換モジュール３０３は、上記Ｓ７０２で読み取ったファイル種別の設定に従って文書ファイルのヘッダデータを作成する（Ｓ７１１）。
【００７４】
次に、ファイル変換モジュール３０３は、上記Ｓ７１１で作成したヘッダデータを、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードのヘッダデータとして保存する（Ｓ７１２）。ここで、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードは、Ｓ７１０で追加した文書ＩＤと一致する。
次に、ファイル変換モジュール３０３は、変換している文書ファイルのページ番号を示す変数Ｙに「１」を設定し（Ｓ７１３）、Ｓ７１５に処理を進める。
【００７５】
また、上記Ｓ７０８において、送信ジョブレコードの変換後文書ＩＤリストが空でないと判定された場合（Ｓ７０８でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７１４に処理を進める。
Ｓ７１４において、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目が「Ｔｒｕｅ」かどうかを判定する。この判定は、該当する文書レコードが作成途中であるかどうかの判定に対応する。
【００７６】
上記Ｓ７１４において、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ７１４でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７１５に処理を進める。この場合は、文書レコードが作成途中の場合に対応する。
【００７７】
Ｓ７１５において、ファイル変換モジュール３０３は、上記Ｓ７０２で読み取ったファイル種別に従って、送信ジョブレコードの変換前文書ＩＤの文書レコードのＸページ目データに変換処理を実施する。
次に、ファイル変換モジュール３０３は、上記Ｓ７１５で変換したページデータを、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードのＹページ目データとして保存する（Ｓ７１６）。
次に、ファイル変換モジュール３０３は、変数Ｘをインクリメントする（Ｓ７１７）。
【００７８】
次に、ファイル変換モジュール３０３は、上記Ｓ７０２で読み取ったファイル分割設定が「ファイル分割をする」であり、かつ、変数Ｙを「ファイル分割するページ数」で割った余りが「０」であるかどうかを判定する（Ｓ７１８）。この判定は、例えば、「３ページ毎にファイル分割する」設定である場合、現在作成している文書のページ数が２ページであれば「ＦＡＬＳＥ」となり、３ページであれば「ＴＲＵＥ」となる。また、ファイル分割しない設定である場合は常に「ＦＡＬＳＥ」となる。この判定は、文書ファイルのフッタ作成処理を行うかどうかの判定に対応する。
【００７９】
上記Ｓ７１８において、ファイル分割設定が「ファイル分割をする」であり且つ変数Ｙを「ファイル分割するページ数」で割った余りが「０」でない場合（Ｓ７１８でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７１９に処理を進める。
Ｓ７１９において、ファイル変換モジュール３０３は、変数Ｙをインクリメントし（Ｓ７１９）、Ｓ７０６に処理を戻し、次のページの変換処理に移行する。
【００８０】
一方、上記Ｓ７１８において、ファイル分割設定が「ファイル分割をする」であり且つ変数Ｙを「ファイル分割するページ数」で割った余りが「０」である、又は、ファイル分割設定が「ファイル分割をする」でないと判定した場合（Ｓ７１８でＴＲＵＥの場合）、ファイル変換モジュール３０３は、Ｓ７２０に処理を進める。
【００８１】
Ｓ７２０において、ファイル変換モジュール３０３は、上記Ｓ７０２で読み取ったファイル種別の設定に従って、フッタデータを作成する。この時、ファイル種別によっては、フッタデータは、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードのヘッダデータとページデータを参照しながら作成することもある。
【００８２】
次に、ファイル変換モジュール３０３は、上記Ｓ７２０で作成したフッタデータを送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードのフッタデータとして保存する（Ｓ７２１）。
該フッタデータを保存した後、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目に「Ｔｒｕｅ」を保存し（Ｓ７２２）、Ｓ７０６に処理を戻す。
【００８３】
また、上記Ｓ７１４において、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目が「Ｔｒｕｅ」の場合（Ｓ７１４でＴＲＵＥの場合）、ファイル変換モジュール３０３は、Ｓ７０９に処理を進める。この場合、新しい変換後文書レコードを作成する必要があるため、ファイル変換モジュール３０３は、上記Ｓ７０９〜Ｓ７１３を実行した後、上記Ｓ７１５以降の処理を実行する。
【００８４】
また、上記Ｓ７０７において、送信ジョブレコードの変換前文書ＩＤの文書レコードのＸページ目データが存在しないと判定した場合（Ｓ７０７でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７２３に処理を進める。
【００８５】
Ｓ７２３において、ファイル変換モジュール３０３は、送信ジョブレコードの変換前文書ＩＤに該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」かどうかを判定する。上記Ｓ７０７で次に変換しようとする画像データが存在しないと判定される場合には二つの可能性がある。一つは、まだスキャンモジュール３０２が新しいページを保存する前であるという可能性で、もう一つは、すでにスキャンモジュール３０２がスキャンした全ての画像データをファイル変換し終わっている可能性である。よって、Ｓ７２３ではこの二つのケースの判定を、変換前文書ＩＤの文書レコードの文書完成フラグを用いて行う。
【００８６】
上記Ｓ７２３において、送信ジョブレコードの変換前文書ＩＤに該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」でない場合（Ｓ７２３でＦＡＬＳＥ）の場合、まだ次の画像データがスキャンモジュール３０２によって生成される可能性がある。よって、この場合、ファイル変換モジュール３０３は、Ｓ７０６に処理を戻す。
【００８７】
一方、送信ジョブレコードの変換前文書ＩＤに該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」の場合（Ｓ７２３でＴＲＵＥ）の場合、スキャンモジュール３０２の原稿スキャンは完了し、かつ全ての変換前文書ＩＤの文書レコードの画像データをファイル変換した場合に対応する。この場合、ファイル変換モジュール３０３は、Ｓ７２４に処理を進める。
【００８８】
Ｓ７２４において、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目が「Ｔｒｕｅ」であるかを判定する。Ｓ７２４の処理時には、上記Ｓ７２２で文書完成フラグが「Ｔｒｕｅ」であるケースが存在する。この場合、Ｓ７２４でＴＲＵＥとなり、ファイル変換モジュール３０３は、後述するＳ７２５〜Ｓ７２７の処理をスキップし、Ｓ７２８に処理を進める。
【００８９】
一方、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ７２４でＦＡＬＳＥの場合）、ファイル変換モジュール３０３は、Ｓ７２５に処理を進める。
【００９０】
Ｓ７２５において、ファイル変換モジュール３０３は、上記Ｓ７０２で読み取ったファイル種別の設定に従って、フッタデータを作成する。
次に、ファイル変換モジュール３０３は、上記Ｓ７２５で作成したフッタデータを送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードのフッタデータとして保存する（Ｓ７２６）。
フッタデータを保存した後、ファイル変換モジュール３０３は、送信ジョブレコードの変換後文書ＩＤリストの最後尾要素の文書ＩＤに該当する文書レコードの文書完成フラグの項目に「Ｔｒｕｅ」を保存し（Ｓ７２７）、Ｓ７２８に処理を進める。
【００９１】
Ｓ７２８において、ファイル変換モジュール３０３は、送信ジョブレコードのファイル変換状態の項目に「完了」を保存し（Ｓ７２８）、本フローチャートの処理を終了する。
【００９２】
また、上記Ｓ７０６において、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」と判定した場合（Ｓ７０６でＴＲＵＥの場合）、ファイル変換モジュール３０３は、Ｓ７２９に処理を進める。該Ｓ７０６でＴＲＵＥになる場合は、いずれかのモジュールでエラーが発生したため、送信ジョブを継続せず中止する場合である。
Ｓ７２９において、ファイル変換モジュール３０３は、送信ジョブレコードのファイル変換状態の項目に「エラー終了」を保存し、本フローチャートの処理を終了する。
【００９３】
図８Ａ、図８Ｂは、送信モジュール３０４の全体の処理の一例を示すフローチャートである。なお、本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出されＣＰＵ２０２によって実行されることで実現される。
【００９４】
本フローチャートの処理は、送信ジョブ管理モジュール３０１がＳ５０６の処理において送信モジュール３０４を起動することで開始される。処理が開始されると、まず送信モジュール３０４は、起動時に送信ジョブ管理モジュール３０１から渡された送信ジョブＩＤを受け取り、送信ジョブ管理テーブル３０５から該当する送信ジョブＩＤの送信ジョブレコードを特定する（Ｓ８０１）。この処理により、ファイル変換モジュール３０３は、処理対象の送信ジョブレコードを特定することができる。
【００９５】
次に、送信モジュール３０４は、上記Ｓ８０１で特定した送信ジョブレコード（以下単に「送信ジョブレコード」という）から宛先設定の項目を読み取る（Ｓ８０２）。
次に、送信モジュール３０４は、送信ジョブレコードの送信状態の項目に「送信中」を保存する（Ｓ８０３）。
次に、送信モジュール３０４は、上記Ｓ８０２で読み取った送信宛先設定に従って、送信先のサーバ１０２とのネットワークセッションを開始する（Ｓ８０４）。ここでのネットワークセッションとは、ＴＣＰ／ＩＰのセッションであってもよいし、例えばＦＴＰクライアントとＦＴＰサーバ間でコントロールコネクションを接続し、さらにデータコネクションを接続するところまでであってもよい。すなわち、本実施例では、送信先のサーバ１０２に対してファイルデータを送る前までのハンドシェイクの一部または全てをネットワークセッションと呼ぶものとする。なお、通信プロトコルは上記の例に限定されるものではない。
【００９６】
ネットワークセッションを開始した後、送信モジュール３０４は、送信している文書ファイルの番号を示す変数Ｘに「１」を設定する（Ｓ８０５）。
次に、送信モジュール３０４は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ８０６）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ８０６でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８０７に処理を進める。
【００９７】
Ｓ８０７において、送信モジュール３０４は、送信ジョブレコードのスキャン状態が「エラー発生中」かどうかを判定する。送信ジョブレコードのスキャン状態が「エラー発生中」でない場合（Ｓ８０６でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８０８に処理を進める。
【００９８】
Ｓ８０８において、送信モジュール３０４は、送信ジョブレコードの変換後文書ＩＤリストにＸ個目が存在するかどうかを判定する。送信ジョブレコードの変換後文書ＩＤリストにＸ個目が存在する場合（Ｓ８０８でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ８０９に処理を進める。
Ｓ８０９において、送信モジュール３０４は、送信ジョブレコードの変換後文書ＩＤリストにＸ個目の文書ＩＤに該当する文書レコードにヘッダデータあるかを判定する（Ｓ８０９）。ヘッダデータがない場合（Ｓ８０９でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８０６に処理を戻す。
【００９９】
一方、ヘッダデータがある場合（Ｓ８０９でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ８１０に処理を進める。
【０１００】
Ｓ８１０において、送信モジュール３０４は、上記Ｓ８０４で開始されているネットワークセッションを使用して、ヘッダデータをサーバ１０２に対して送信する。
次に、送信モジュール３０４は、送信中の文書ファイルの送信中のページ番号を示す変数Ｙに「１」を設定する（Ｓ８１１）。
【０１０１】
次に、送信モジュール３０４は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ８１２）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ８１２でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８１３に処理を進める。
【０１０２】
Ｓ８１３において、送信モジュール３０４は、送信ジョブレコードのスキャン状態が「エラー発生中」かどうかを判定する。送信ジョブレコードのスキャン状態が「エラー発生中」でない場合（Ｓ８１３でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８１４に処理を進める。
【０１０３】
Ｓ８１４において、送信モジュール３０４は、送信ジョブレコードの変換後文書ＩＤリストのＸ個目の文書ＩＤに該当する文書レコードのＹページ目データがあるかどうかを判定する。該当する文書レコードのＹページ目データがある場合（Ｓ８１４でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ８１５に処理を進める。
Ｓ８１５において、送信モジュール３０４は、上記開始されているネットワークセッションを使用して、Ｙページ目データをサーバ１０２に対して送信する。
送信後、送信モジュール３０４は、変数Ｙをインクリメントして（Ｓ８１６）、Ｓ８１２に処理を戻し、次のページデータの送信処理に移行するように制御する。
【０１０４】
一方、上記Ｓ８１４において、送信ジョブレコードの変換後文書ＩＤリストのＸ個目の文書ＩＤに該当する文書レコードのＹページ目データがないと判定した場合（Ｓ８１４でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８１７に処理を進める。
【０１０５】
Ｓ８１７において、送信モジュール３０４は、送信ジョブレコードの変換後文書ＩＤリストのＸ個目の文書ＩＤに該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」かどうかを判定する。該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」でない場合（Ｓ８１７でＦＡＬＳＥの場合）、該当する文書レコードに次のページデータが追加される可能性があるため、送信モジュール３０４は、Ｓ８１２に処理を戻す。
【０１０６】
一方、上記Ｓ８１７において、該当する文書レコードの文書完成フラグが「Ｔｒｕｅ」と判定された場合（Ｓ８１７でＴＲＵＥの場合）、該当する文書レコードが完成し、かつ全てのページデータがサーバ１０２に送信されたことを示す。よって、この場合、送信モジュール３０４は、送信ジョブレコードの変換後文書ＩＤリストのＸ個目の文書ＩＤに該当する文書レコードのフッタデータがあるかを判定する（Ｓ８１８）。
【０１０７】
上記Ｓ８１８において、該当する文書レコードのフッタデータがないと判定された場合（Ｓ８１８でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８１２に処理を戻し、フッタデータが作成されるのを待つように制御する。
【０１０８】
一方、上記Ｓ８１８において、該当する文書レコードのフッタデータがあると判定された場合（Ｓ８１８でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ８１９に処理を進める。
Ｓ８１９において、送信モジュール３０４は、上記開始されているネットワークセッションを使用して、上記フッタデータをサーバ１０２に対して送信する。
次に、送信モジュール３０４は、変数Ｘをインクリメントし（Ｓ８２０）、Ｓ８０６に処理を戻し、次の文書ファイルの送信処理に移行するように制御する。
【０１０９】
また、上記Ｓ８０８において、文書ＩＤリストにＸ個目が存在しないと判定された場合（Ｓ８０８でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８２１に処理を進める。
Ｓ８２１において、送信モジュール３０４は、送信ジョブレコードのファイル変換状態が「完了」かどうかを判定する。
【０１１０】
上記Ｓ８２１において、送信ジョブレコードのファイル変換状態が「完了」でないと判定した場合（Ｓ８２１でＦＡＬＳＥの場合）、ファイル変換モジュール３０３によって文書ＩＤリストのＸ個目が追加される可能性がある。よって、この場合、送信モジュール３０４は、Ｓ８０６に処理を戻す。
一方、上記Ｓ８２１において、送信ジョブレコードのファイル変換状態が「完了」であると判定した場合（Ｓ８２１でＴＲＵＥの場合）、文書ＩＤリストのＸ個目が追加される可能性はなくなり全ての文書を送信し終わったことを意味する。よって、この場合、送信モジュール３０４は、Ｓ８２２に処理を進める。
【０１１１】
Ｓ８２２において、送信モジュール３０４は、上記開始されていたネットワークセッションを終了する（Ｓ８２２）。
その後、送信モジュール３０４は、送信ジョブレコードの送信状態の項目に「完了」を保存し（Ｓ８２３）、本フローチャートの処理を終了する。
【０１１２】
また、上記Ｓ８０６又はＳ８１２において、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」と判定した場合（Ｓ８０６又はＳ８１２でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ８２５に処理を進め、送信ジョブを継続せず中止するように制御する。
【０１１３】
Ｓ８２５において、送信モジュール３０４は、上記開始されていたネットワークセッションを終了する。Ｓ８２５では、ネットワークセッションの終了とともに、送信モジュール３０４は、サーバ１０２に残った送信途中の文書ファイルを削除するように制御する。例えばＦＴＰであれば、ＤＥＬＥコマンド（削除指示）をサーバ１０２に送信することで行う。
その後、送信モジュール３０４は、送信ジョブレコードの送信状態の項目に「エラー終了」を保存して（Ｓ８２６）、本フローチャートの処理を終了する。
【０１１４】
また、上記Ｓ８０７又はＳ８１３において、送信ジョブレコードのスキャン状態が「エラー発生中」と判定された場合（Ｓ８０７又はＳ８１３でＴＲＵＥの場合）、送信モジュール３０４は、送信中断処理を実施し（Ｓ８２４）、Ｓ８０６に処理を戻す。
【０１１５】
ここで、図９を用いて送信中断処理（Ｓ８２４）について詳細に説明する。
図９は、第１実施形態における送信中断処理（Ｓ８２４）の詳細を説明するフローチャートである。なお、本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出されＣＰＵ２０２によって実行されることで実現される。
【０１１６】
送信中断処理が開始されると、送信モジュール３０４は、現在時刻をスキャンエラー発生時刻として例えばＲＡＭ２０４に記録する（Ｓ９０１）。
次に、送信モジュール３０４は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ９０２）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ９０２でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０３に処理を進める。
【０１１７】
Ｓ９０３において、送信モジュール３０４は、送信ジョブレコードのスキャン状態が「スキャン中」かどうかを判定する（Ｓ９０３）。ここでは、スキャンエラー発生後、一定時間内にエラーが解除されてスキャン状態が「スキャン中」に戻ったかどうかを判定している。
【０１１８】
上記Ｓ９０３において、送信ジョブレコードのスキャン状態が「スキャン中」でないと判定した場合（Ｓ９０３でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０４に処理を進める。
Ｓ９０４において、送信モジュール３０４は、現在時刻と、上記Ｓ９０１で記録したエラー発生時刻を比較し、設定されたタイムアウト時間を超えているか否かを判定する。ここでのタイムアウト時間として、一定時間が例えば予めＭＦＰ１０１に設定されていてもよい。
【０１１９】
上記Ｓ９０４において、タイムアウト時間を超えていないと判定した場合（Ｓ９０４でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０２に処理を戻す。
【０１２０】
なお、上記Ｓ９０３において、送信ジョブレコードのスキャン状態が「スキャン中」と判定した場合（Ｓ９０３でＴＲＵＥの場合）、送信モジュール３０４は、送信中断処理を抜けて、Ｓ８０６（図８Ａ）に処理を戻す。この場合、タイムアウト時間が経過する前にエラーが解除された場合に対応する。
【０１２１】
また、上記Ｓ９０４において、タイムアウト時間を超えていると判定した場合（Ｓ９０４でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９０５に処理を進める。
Ｓ９０５において、送信モジュール３０４は、上記開始されていたネットワークセッションを一旦終了する。なお、ネットワークセッションの終了とともに、送信モジュール３０４は、サーバ１０２に残った送信途中の文書ファイルを削除するように制御する。さらに、Ｓ９０５では、送信モジュール３０４は、文書ファイルをサーバ１０２から削除している旨をオペレーションパネル２１０上に表示してユーザに通知するように制御する。
【０１２２】
ネットワークセッションを終了後、送信モジュール３０４は、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」かどうかを判定する（Ｓ９０６）。送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」でない場合（Ｓ９０６でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０７に処理を進める。
Ｓ９０７において、送信モジュール３０４は、設定された送信再開タイミングが、「スキャン完了後」であるか、「エラー復旧後」であるかを判定する（Ｓ９０７）。この送信再開タイミングの設定は、例えば、予めＭＦＰ１０１に設定されていてもよいし、図５のＳ５０１の設定に含まれていてもよい。
【０１２３】
上記Ｓ９０７において、設定された送信再開タイミングが「エラー復旧後」と判定された場合（Ｓ９０７でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０８に処理を進める。
Ｓ９０８において、送信モジュール３０４は、送信ジョブレコードのスキャン状態が「スキャン中」であるかどうかを判定する（Ｓ９０８）。送信ジョブレコードのスキャン状態が「スキャン中」でない場合（Ｓ９０８でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０６に処理を戻し、スキャンエラーの解除を待つように制御する。
【０１２４】
一方、送信ジョブレコードのスキャン状態が「スキャン中」であると判定した場合（Ｓ９０８でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９０９に処理を進める。
【０１２５】
また、上記Ｓ９０７において、設定された送信再開タイミングが「スキャン完了後」と判定された場合（Ｓ９０７でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９１１に処理を進める。
Ｓ９１１において、送信モジュール３０４は、送信ジョブレコードのスキャン状態が「完了」であるかどうかを判定する。送信ジョブレコードのスキャン状態が「完了」でないと判定した場合（Ｓ９１１でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ９０６に処理を戻し、スキャンエラーの解除を待つように制御する。
【０１２６】
一方、上記Ｓ９１１において、送信ジョブレコードのスキャン状態が「完了」であると判定した場合（Ｓ９１１でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９０９に処理を進める。
【０１２７】
上記Ｓ９０８又はＳ９１１の判定がＴＲＵＥの場合、送信モジュール３０４は、上記Ｓ８０２で読み取った送信宛先設定に従って、送信先のサーバ１０２とのネットワークセッションを開始（再開）する（Ｓ９０９）。
次に、送信モジュール３０４は、変数Ｘに「１」を設定し直し（Ｓ９１０）、送信中断処理を抜けて、Ｓ８０６（図８Ａ）に処理を戻す。
【０１２８】
また、上記Ｓ９０２、Ｓ９０６の判定でＴＲＵＥとなる場合（ジョブ停止フラグの項目が「Ｔｒｕｅ」の場合）には、送信中断処理を抜けずに、送信モジュール３０４の処理全体が終了する。以下、詳細に説明する。
【０１２９】
上記Ｓ９０２において、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」であると判定した場合（Ｓ９０２でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９１２に処理を進める。
Ｓ９１２において、送信モジュール３０４は、上記開始されていたネットワークセッションを終了し、Ｓ９１３に処理を進める。Ｓ９１２では、ネットワークセッションの終了とともに、ＭＦＰ１０１はサーバ１０２に残った送信途中の文書ファイルを削除する。
【０１３０】
また、上記Ｓ９０６において、送信ジョブレコードのジョブ停止フラグの項目が「Ｔｒｕｅ」であると判定した場合（Ｓ９０６でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ９１３に処理を進める。
【０１３１】
Ｓ９１３において、送信モジュール３０４は、送信ジョブレコードの送信状態の項目に「エラー終了」を保存し、本フローチャート及び図８Ａ，図８Ｂのフローチャートの処理を終了する。
【０１３２】
以上のように、第１実施形態では、図９で説明した送信中断処理により、スキャンモジュール３０２でのスキャンエラー発生検知時に、送信モジュール３０４ではネットワークセッションを開放する処理が実施される。これにより、ユーザがスキャンエラーの解除オペレーションに時間がかかる場合であっても、ＭＦＰ１０１がサーバ１０２のネットワークリソースを占有することがなくなる。加えて、スキャンエラーが解除された後は、ユーザの手間なく送信処理を再開することが可能となる。
【０１３３】
〔第２実施形態〕
第２実施形態では、上述した第１実施形態と同様の構成については説明を省略し、異なる構成を中心に説明する。
図１０は、第２実施形態における送信中断処理（Ｓ８２４）の詳細を説明するフローチャートである。なお、本フローチャートの処理はＨＤＤ２０５に格納されたプログラムがＲＡＭ２０４に読み出されＣＰＵ２０２によって実行されることで実現される。
【０１３４】
送信中断処理が開始されると、送信モジュール３０４は、変数Ｚに、スキャンエラーが発生する前まででスキャン完了した画像データ数だけで、作成することが可能な文書ファイル数を設定する（Ｓ１００１）。具体的には、この処理は、送信ジョブレコードの変換前文書ＩＤに該当する文書レコードのページデータの数を、送信ジョブレコードのファイル分割設定のページ数で除算した数値を変数Ｚに保存することで達成できる。変数Ｚは整数値であり、小数点は切り捨てて計算する。また、ファイル分割設定が分割しない設定となっていた場合は、変数Ｚに「０」を設定する。例えば、原稿９ページ目でスキャンエラーが発生し、３ページ毎にファイル分割する設定であった場合、変数Ｚは「８÷３」の値で「２」となり、８ページ目までで２つの文書ファイルは作ることが可能である、ということを示す。また、例えば、原稿９ページ目でスキャンエラーが発生し、ファイル分割しない設定であった場合は、変数Ｚは「０」となり、８ページ目まででは一つも文書ファイルは作ることができないことを示す。
【０１３５】
次に、送信モジュール３０４は、現在送信中の文書ファイルの番号である変数Ｘが変数Ｚよりも大きいかどうかを判定する（Ｓ１００２）。変数Ｘが変数Ｚよりも大きいということは、スキャンエラーが解消しないと完成しない文書ファイルの送信中である、ことを意味する。
一方、変数Ｘが変数Ｚ以下であるということは、スキャンエラーが解消せずとも完成する文書ファイルの送信中であることを意味する。
【０１３６】
上記Ｓ１００１において、変数Ｘが変数Ｚ以下と判定した場合（Ｓ１００２でＦＡＬＳＥの場合）、送信モジュール３０４は、Ｓ８０８（図８Ａ）に処理を戻す。これにより、送信処理が継続され、スキャンエラーが解消せずとも完成する文書ファイルがサーバ１０２に送信される。
【０１３７】
一方、上記Ｓ１００１において、変数Ｘが変数Ｚよりも大きいと判定した場合（Ｓ１００２でＴＲＵＥの場合）、送信モジュール３０４は、Ｓ１００３に処理を進める。Ｓ１００３〜Ｓ１０１１及びＳ１０１４〜Ｓ１０１５の処理は、図９のＳ９０１〜Ｓ９０９及びＳ９１１〜Ｓ９１２の処理と同様であるため、説明を割愛する。
【０１３８】
なお、Ｓ１０１２において、送信モジュール３０４は、変数Ｘに変数Ｚ＋１の値を保存し、送信中断処理を抜けて、Ｓ８０６（図８Ａ）に処理を戻す。
Ｓ１０１２の処理では、送信再開時に何番目の文書ファイルから再送信するかを決定する。変数Ｘを変数Ｚ＋１とすることで、送信を中断した文書ファイルから送信を再開することができる。すなわち、本実施形態の送信モジュール３０４は、スキャナのエラーが解消した場合、セッションを再開し、変換処理が行われたデータの中で、送信が未完了のページのデータについてサーバ１０２への送信を実行する。
【０１３９】
以上、第２実施形態によれば、図１０で説明した送信中断処理により、スキャンモジュール３０２でのスキャンエラー発生検知時にも、送信モジュール３０４では可能な限り文書ファイルを送信する処理が実施される。そして、スキャンエラー解除なしでは完成する見込みがない文書ファイルの送信まできたら、ネットワークセッションを開放する処理が実施される。これにより、ユーザがスキャンエラーの解除オペレーションに時間がかかる場合であっても、ＭＦＰ１０１がサーバ１０２のネットワークリソースを占有することがなくなる。加えて、スキャンエラーが解除された後は、ユーザの手間なく送信処理を再開することが可能となる。さらに加えて、再開後に送信する文書ファイルは最小限に抑えられ、ジョブ終了までの時間を早くできる。
【０１４０】
以上、各実施形態によれば、スキャナで読み取った画像データを残りの原稿が読み取り中であっても送信する場合にスキャナエラーが発生しても、送信先の装置の負荷を抑えた送信処理を実行することができる。
【０１４１】
よって、従来では、スキャンと送信処理を並行して実施している最中にスキャナエラーが発生した場合、送信先のサーバとの通信セッションが接続状態のままになってしまっていた。このため、ユーザがエラー解除している間、ＭＦＰがサーバのネットワークリソースを占有することになってしまっていた。このため、サーバにとって負荷が高くなってしまう、という課題があった。そこで、スキャンと送信処理を並行して実施している最中にスキャナエラーが発生した場合にはサーバとの接続を切断することで、ユーザのエラー除去操作中のサーバの負荷を少なくする送信処理を実行できる。
【０１４２】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施形態を組み合わせた構成も全て本発明に含まれるものである。
【０１４３】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図１】
2020088683.tif 000003
【図２】
2020088683.tif 000004
【図３】
2020088683.tif 000005
【図４】
2020088683.tif 000006
【図５】
2020088683.tif 000007
【図６Ａ】
2020088683.tif 000008
【図６Ｂ】
2020088683.tif 000009
【図７Ａ】
2020088683.tif 000010
【図７Ｂ】
2020088683.tif 000011
【図８Ａ】
2020088683.tif 000012
【図８Ｂ】
2020088683.tif 000013
【図９】
2020088683.tif 000014
【図１０】
2020088683.tif 000015