(57)【要約】【課題】種類の異なる複数の画像読取装置において、画像読取装置の組み合わせによって、最適な画像の出力方法を決定するシステムを提供する。【解決手段】第１画像読取装置１の原稿読取方式と第２画像読取装置１０の原稿読取方式は異なっている。これらには情報処理装置４０が接続されている。第１画像読取装置１で読み取って得られる第１画像の向きと第２画像読取装置２０で読み取って得られる第２画像の向きとが異なる場合に、画像整合手段は、第１画像および第２画像の向きを揃える。【選択図】図１
2015103925.tif 000002
【特許請求の範囲】
【請求項１】
原稿の画像を読み取る第１画像読取装置と、
前記第１画像読取装置の原稿読取方式とは異なる原稿読取方式の第２画像読取装置と、
前記第１画像読取装置および前記第２画像読取装置が接続される情報処理装置とを有し、
前記第１画像読取装置で読み取って得られる第１画像の向きと前記第２画像読取装置で読み取って得られる第２画像の向きとが異なる場合において、前記第１画像および前記第２画像の向きを揃える画像整合手段をさらに有することを特徴とする情報処理システム。
【請求項２】
原稿読取方式がそれぞれ異なる第１画像読取装置と第２画像読取装置とから画像を受け取る情報処理装置であって、
前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと異なる場合には前記第２画像読取装置によって取得された画像の向きを回転させ、前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと実質的に一致する場合には前記第２画像読取装置によって取得された画像の向きを回転させない画像整合手段を有することを特徴とする情報処理装置。
【請求項３】
前記第２画像読取装置が原稿を読み取って出力する画像の向きを示す情報として前記第２画像読取装置がサポートしている原稿の読取サイズを示すサイズ情報を取得する取得手段と、
前記第２画像読取装置から取得されたサイズ情報から特定される画像の向きが前記第１画像読取装置について予め想定されている画像の向きと異なるかどうかを判定する判定手段と、をさらに有し、
前記画像整合手段は、前記第２画像読取装置から取得されたサイズ情報から特定される画像の向きが前記予め想定されている画像の向きと異なる場合には前記第２画像読取装置によって取得された画像の向きを９０度回転させ、前記第２画像読取装置から取得されたサイズ情報から特定される画像の向きが前記予め想定されている画像の向きと実質的に一致している場合には前記第２画像読取装置によって取得された画像の向きを回転させないことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記取得手段は、前記第１画像読取装置が原稿を読み取って出力する画像の向きを特定するための情報として前記第１画像読取装置がサポートしている原稿の読取サイズを示すサイズ情報を取得するように構成されており、
前記判定手段は、前記予め想定されている画像の向きとして前記第１画像読取装置から取得されたサイズ情報から特定される画像の向きを用いて、前記第２画像読取装置から取得されたサイズ情報から特定される画像の向きと比較することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記サイズ情報には、原稿の称呼上のサイズを示す称呼情報と、当該原稿の幅を示す幅情報と、当該原稿の長さを示す長さ情報とが含まれており、
前記画像整合手段は、前記第１画像読取装置と前記第２画像読取装置との間で、それぞれがサポートしている原稿の称呼上のサイズが一致しているものの前記原稿の幅と長さが一致していないと前記判定手段が判定した場合に、前記第２画像読取装置によって取得された画像の向きを９０度回転させることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記判定手段は、原稿の称呼上のサイズごとに、前記第１画像読取装置がサポートしている原稿の幅および長さと、前記第２画像読取装置がサポートしている原稿の幅および長さとを比較し、前記第２画像読取装置がサポートしている原稿の幅および長さが前記第１画像読取装置がサポートしている原稿の幅および長さと異なっていれば当該称呼上のサイズについて画像を回転させるようにフラグをセットすることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記画像整合手段は、原稿の称呼上のサイズが同一である場合に前記第２画像読取装置が出力する画像の向きを前記第１画像読取装置が出力する画像の向きに整合させる手段であることを特徴とする請求項２ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
前記画像整合手段は、前記第１画像読取装置がＡ３原稿を読み取ったときにＡ３横長の画像を出力するように想定されており、かつ、前記第２画像読取装置がＡ３原稿を読み取ったときにＡ３縦長の画像を出力する場合に、前記第２画像読取装置が出力するＡ３縦長の画像を回転してＡ３横長の画像を生成することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記画像整合手段を有し、前記第１画像読取装置を制御する第１制御手段と、
前記第２画像読取装置を制御する第２制御手段と、をさらに有し、
前記第１制御手段は、前記第２制御手段を通じて前記第２画像読取装置を制御し、前記第１画像読取装置から受け取った画像と、前記第２制御手段を通じて前記第２画像読取装置から受け取った画像とをアプリケーションプログラムに渡すように構成されていることを特徴とする請求項２ないし８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第１制御手段および前記第２制御手段は前記情報処理装置に備えられたプロセッサが単一のドライバプログラムを実行することによって実現される機能であることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記第１制御手段は前記情報処理装置に備えられたプロセッサが第１ドライバプログラムを実行することによって実現される機能であり、前記第２制御手段は前記プロセッサが第２ドライバプログラムを実行することによって実現される機能であることを特徴とする請求項９に記載の情報処理装置。
【請求項１２】
前記第１ドライバプログラムと前記第２ドライバプログラムとが通信するためのプロトコルは、前記第１ドライバプログラムと前記アプリケーションプログラムとが通信するためのプロトコルと同一のプロトコルであることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記画像整合手段は、前記アプリケーションプログラムによって指定された称呼上のサイズの原稿について、画像の向きを整合することを特徴とする請求項９ないし１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記第２画像読取装置は前記第１画像読取装置を介して前記情報処理装置に接続されることを特徴とする請求項２ないし１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記第１画像読取装置はフラットベッドスキャナであり、前記第２画像読取装置はシートフィードスキャナであることを特徴とする請求項２ないし１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記第１画像読取装置または前記第２画像読取装置によって取得された画像を、予め想定された向きとサイズの画像を格納するよう確保されたバッファ領域に記憶するバッファ手段をさらに有することを特徴とする請求項２ないし１５のいずれか１項に記載の情報処理装置。
【請求項１７】
プログラムであって、
請求項２ないし１６のいずれか１項に記載された情報処理装置の各手段としてコンピュータに機能させることを特徴とするプログラム。
【請求項１８】
画像読取システムであって、
第１画像読取装置と、
前記第１画像読取装置とは原稿読取方式がそれぞれ異なる第２画像読取装置と、
前記第１画像読取装置と前記第２画像読取装置とから画像を受け取る情報処理装置と、を有し、
前記情報処理装置は、
前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと異なる場合には前記第２画像読取装置によって取得された画像の向きを回転させ、前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと実質的に一致する場合には前記第２画像読取装置によって取得された画像の向きを回転させない画像整合手段を有することを特徴とする画像読取システム。
【請求項１９】
原稿読取方式がそれぞれ異なる第１画像読取装置と第２画像読取装置とから画像を受け取る情報処理装置で実行される画像読取方法であって、
前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと異なる場合には前記第２画像読取装置によって取得された画像の向きを回転させ、前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと実質的に一致する場合には前記第２画像読取装置によって取得された画像の向きを回転させないことを特徴とする画像読取方法。
【請求項２０】
原稿読取方式がそれぞれ異なる第１画像読取装置と第２画像読取装置とが出力する画像を受け取る情報処理装置であって、
特定の原稿サイズについて前記第２画像読取装置がサポートしている画像の向きに関する出力仕様が、当該特定の原稿サイズについて前記第１画像読取装置に予め想定されている画像の向きに関する出力仕様と異なる場合には前記第２画像読取装置により当該特定の原稿サイズを読み取ることによって取得された画像の向きを回転させ、前記特定の原稿サイズについて前記第２画像読取装置がサポートしている画像の向きに関する出力仕様が、当該特定の原稿サイズについて前記第１画像読取装置に予め想定されている画像の向きに関する出力仕様と実質的に一致する場合には前記第２画像読取装置により当該特定の原稿サイズを読み取ることによって取得された画像の向きを回転させない画像整合手段を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿の画像情報を読取る画像読取装置、画像読取方法を実行するためのプログラムに関する。
【背景技術】
【０００２】
画像読取装置（以下、スキャナと称す）としては、原稿読取方式の異なるシートフィードスキャナとフラットベッドスキャナとが普及している。一般的には、コンピュータに対して１台のスキャナが接続されるが、特許文献１によれば複数のスキャナを接続することが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−５５１６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、コンピュータに接続された複数のスキャナ間で、同一の原稿サイズであっても画像データの向きが異なってしまうことがある。たとえば、それぞれＡ３原稿を読取可能なフラットベッドスキャナとシートフィードスキャナがコンピュータに接続されたと仮定する。Ａ３原稿は、フラットベッドスキャナでは横長の向きで置かれ、シートフィードスキャナでは縦長の向きで給紙される。その結果、出力される画像データは、フラットベッドスキャナででは横長の向きとなり、シートフィードスキャナででは縦長の向きとなってしまう。これはある問題を引き起こす。画像データを受け取るアプリケーションプログラムは、予め想定された向きの画像データを記憶するためのバッファ領域をメモリに確保する。そのため、フラットベッドスキャナが出力する画像データの向きとシートフィードスキャナが出力する画像データの向きが違うと、一方のスキャナからの画像データをバッファ領域に格納できなくなってしまう。
【０００５】
たとえば、Ａ３原稿をスキャンする場合にアプリケーションプログラムは、スキャン前にドライバから画像データの幅と長さ（縦横サイズ）の情報を取得する。このときドライバは、シートフィードスキャナでスキャンするときの画像情報（幅２９．６ｃｍ、長さ４２ｃｍの縦向き画像）をアプリケーションプログラムに通知する。これにより、アプリケーションプログラムは、ドライバから縦向きＡ３画像を受け取ることができるが、フラットベッドスキャナからの横向きＡ３画像を受け取ることができない。これは、アプリケーションプログラムが、横向きＡ３画像用のバッファを用意していないからである。これとは逆にドライバが、フラットベッドスキャナでスキャンするときの画像情報（幅４２ｃｍ、長さ２９．６ｃｍの横向き画像）をアプリケーションプログラムに通知すると、アプリケーションプログラムはドライバから横向きＡ３画像を受け取ることができるが、シートフィードスキャナによって生成された縦向きＡ３画像（幅２９．６ｃｍ、長さ４２ｃｍ）を受け取ることができない。
【０００６】
そこで、本発明は、複数の画像読取装置が接続された情報処理装置において画像データの向きを整合することで、アプリケーションプログラムがどの画像読取装置からも画像データを受け取れるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、たとえば、情報処理システムであって、
原稿の画像を読み取る第１画像読取装置と、
前記第１画像読取装置の原稿読取方式とは異なる原稿読取方式の第２画像読取装置と、
前記第１画像読取装置および前記第２画像読取装置が接続される情報処理装置とを有し、
前記第１画像読取装置で読み取って得られる第１画像の向きと前記第２画像読取装置で読み取って得られる第２画像の向きとが異なる場合において、前記第１画像および前記第２画像の向きを揃える画像整合手段をさらに有することを特徴とする。
【０００８】
また、本発明は、原稿読取方式がそれぞれ異なる第１画像読取装置と第２画像読取装置とから画像を受け取る情報処理装置であって、
前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと異なる場合には前記第２画像読取装置によって取得された画像の向きを回転させ、前記第２画像読取装置が原稿を読み取って出力する画像の向きが前記第１画像読取装置について予め想定されている画像の向きと実質的に一致する場合には前記第２画像読取装置によって取得された画像の向きを回転させない画像整合手段を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数の画像読取装置が接続された情報処理装置において画像データの向きを整合することで、その後の処理を簡略化することができる。たとえば、アプリケーションプログラムがどの画像読取装置からも画像データを簡単に受け取れるようになり、その後の処理として、画像の向きを揃えた表示や保存等が可能となる。
【図面の簡単な説明】
【００１０】
【図１】画像読取システムの一例を示す図
【図２】アプリケーションプログラムとスキャナドライバの構成を示す図
【図３】スキャナの設置向き、原稿の向きおよび出力画像の向きの一例を示す図
【図４】フラットベッドスキャナの概略断面図
【図５】フラットベッドスキャナの電気回路の概略構成を示すブロック図
【図６】シートフィードスキャナの概略断面図
【図７】シートフィードスキャナの電気回路の概略構成を示すブロック図
【図８】コンピュータの電気回路の概略構成を示すブロック
【図９】アプリケーションプログラムによって実行されるフラットベッドスキャナドライバのロード処理を示したフローチャート
【図１０】フラットベッドスキャナドライバが表示するユーザーインタフェースの一例を示す図
【図１１】自動読取方法についてのフローチャート
【図１２】出力画像の向きの整合処理を示すフローチャート
【図１３】自動サイズ検知が選択項目として追加されたユーザーインタフェースの一例を示す図
【図１４】原稿画像の切り出し処理を含む出力画像の向きの整合処理を示すフローチャート
【図１５】スキャナの設置向き、原稿の向きおよび出力画像の向きの一例を示す図
【図１６】スキャナの設置向き、原稿の向きおよび出力画像の向きの一例を示す図
【図１７】スキャナの設置向き、原稿の向きおよび出力画像の向きの一例を示す図
【図１８】スキャナの設置向き、原稿の向きおよび出力画像の向きの一例を示す図  フラットベッドスキャナの設置向きと原稿と出力画像の向きの説明図である。
【発明を実施するための形態】
【００１１】
以下に本発明の一実施形態を示す。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１２】
＜第１実施形態＞
以下では、それぞれ原稿読取方式の異なる複数の画像読取装置と、これらの画像読取装置が接続可能な情報処理装置とを備えた画像読取システムについて説明する。本発明は、複数の画像読取装置と情報処理装置とを接続した場合において、各画像読取装置から得られる画像の向きが異なる場合に、画像の向きを揃える点を特徴としている。ここで、画像の向きを揃えるとは、たとえば、２つの画像の向きが実質的に一致（合致）するように、一方を他方に合わせて回転させて、画像の向きを実質的に同等とすることを含む。とりわけ、たとえば、本実施形態では、第２画像読取装置が原稿を読み取って出力する画像の向きが第１画像読取装置について予め想定されている画像の向きと異なる場合には、第２画像読取装置によって取得された画像の向きを回転させることを特徴としている。なお、画像の向きは、たとえば、ユーザから指定される情報に基づいて判断してもよいし、ＯＣＲ等を用いた文字向き検知結果に基づいて判断してもよいし、読取サイズなどから判断してもよい。すなわち、画像の向きには、たとえば、画像に含まれる文字の向きを画像の向きとする場合や、画像のサイズを考慮して画像の縦方向あるいは画像の横方向を画像の向きとする場合、ユーザ指定（コンピュータからのユーザ操作指定等）の場合を含む。また、読み取った画像の特徴部分（文字や原稿の枠情報、サイズ等）から一律に画像の向きを揃えるようにしてもよい。
【００１３】
画像読取システムは、３台以上の画像読取装置で構成されてもよく、たとえば、１台のフラットベッドスキャナと２台のシートフィードスキャナで構成されてもよい。情報処理装置と複数の画像読取装置との接続方法は、全ての画像読取装置を情報処理装置に直接接続する形式（パラレル方式）と、全ての画像読取装置を情報処理装置に数珠繋ぎに接続する形式（シーケンシャル方式）などがある。あるいは、これらの直接接続形式と数珠繋接続形式とが混在してもよい。たとえば、１台のフラットベッドスキャナと１台のシートフィードスキャナが情報処理装置に対してそれぞれ直接的に接続され、１台のシートフィードスキャナがフラットベッドスキャナを介して情報処理装置に間接的に接続されてもよい。
【００１４】
図１（Ａ）では、シートフィードスキャナ１とフラットベッドスキャナ１０が情報処理装置の一例であるコンピュータ４０に接続されている。図１（Ｂ）では、シートフィードスキャナ１がフラットベッドスキャナ１０を介してコンピュータ４０に接続されている。とりわけ、図１（Ａ）に示した接続形態が最も基本的な接続形態であるため、以下では、この接続形態を前提として説明する。
【００１５】
図２は、スキャナを制御するソフトウェアの構成を示している。アプリケーションプログラム４８は、ＴＷＡＩＮインタフェースを有している。フラットベッドスキャナドライバ４９ｂは、ＵＳＢインタフェースを有し、ＵＳＢインタフェース介してフラットベッドスキャナ１０を制御し、画像データを取得する。フラットベッドスキャナドライバ４９ｂはＴＷＡＩＮインタフェースを介してアプリケーションプログラム４８に画像データを転送する。シートフィードスキャナドライバ４９ａは、ＴＷＡＩＮインタフェースとＵＳＢインタフェースを有している。シートフィードスキャナドライバ４９ａは、ＵＳＢインタフェース介してシートフィードスキャナ１を制御し、画像データを取得する。シートフィードスキャナドライバ４９ａは、ＴＷＡＩＮインタフェースを介してフラットベッドスキャナドライバ４９ｂに画像データを転送する。フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａから受け取った画像データを、ＴＷＡＩＮインタフェースを介してアプリケーションプログラム４８に転送する。また、アプリケーションプログラム４８がシートフィードスキャナ１を制御するために送出したコマンドは、フラットベッドスキャナドライバ４９ｂによってシートフィードスキャナドライバ４９ａに転送される。
【００１６】
アプリケーションプログラム４８とフラットベッドスキャナドライバ４９ｂの間、および、フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａの間はＴｗａｉｎ規格で決められたプロトコルで通信を行う。また、フラットベッドスキャナドライバ４９ｂとフラットベッドスキャナ１０との間、および、シートフィードスキャナドライバ４９ａとシートフィードスキャナ１との間では、ＵＳＢ規格で決められたプロトコルで通信を行っている。しかし、本発明ではこれら以外のプロトコルが採用されてもよい。なお操作者はコンピュータ４０にアプリケーションプログラム４８とスキャナドライバ４９（シートフィードスキャナドライバ４９ａ、フラットベッドスキャナドライバ４９ｂ）をインストールして使用する。
【００１７】
図３（ａ）は、Ａ３サイズの原稿を読取可能なフラットベッドスキャナ１０と、Ａ４サイズの原稿Ｄ１と、原稿Ｄ１を読み取ることで得られる出力画像Ｉ１との関係を示している。なお、Ａ３やＡ４は称呼上のサイズであり、それぞれの寸法はＩＳＯ  ２１６で297mm×420mmと210mm×297mmと規定されている。なお、本発明は、ＩＳＯのみならず、ＪＩＳ、ＡＮＳＩで規定されている称呼サイズ（例：Ｂ５やＢ４）やデファクトスタンダードとなっている称呼サイズ（例：レターやリーガル）などにも適用可能である。操作者Ｕがフラットベッドスキャナ１０の全体に手が届きやすいように、フラットベッドスキャナ１０は、操作者Ｕから見て横向き（フラットベッドスキャナ１０の長手が横方向となる向き）に設置される。図３（ａ）が示すように、操作者Ｕは、Ａ４サイズの原稿Ｄ１を縦長となるようにプラテン（ガラス面）上に載置する。原稿Ｄ１を読み取ることで得られた出力画像Ｉ１は縦長である。図３（ｂ）は、Ａ３サイズの原稿を読取可能なフラットベッドスキャナ１０と、Ａ３サイズの原稿Ｄ２と、原稿Ｄ２を読み取ることで得られる出力画像Ｉ２との関係を示している。図３（ｂ）が示すようにＡ３原稿は横向きに載置される。原稿Ｄ２を読み取ることで得られた出力画像Ｉ２は横長である。図３（ａ）、図３（ｂ）が示すように、出力画像Ｉ１，Ｉ２の向きは原稿Ｄ１，Ｄ２の向きと一致している。
【００１８】
図３（ｃ）が示すように、シートフィードスキャナ１は、Ａ３サイズの原稿Ｄ３を縦向きに給紙するように設計されている。よって、出力画像Ｉ３は縦長になる。アプリケーションプログラム４８は、Ａ３サイズの原稿Ｄ２，Ｄ３を読み取ったときは横長の画像Ｉ２を受け取ることを想定してバッファ領域をメモリに確保する。よって、通常、縦長の出力画像Ｉ３はバッファ領域に格納することが不可能である。そこで、本実施形態では、シートフィードスキャナドライバ４９ａから縦長の出力画像Ｉ３を受け取ると、フラットベッドスキャナドライバ４９ｂが、出力画像Ｉ３を回転させて横長の出力画像Ｉ２を生成してアプリケーションプログラム４８に渡す。よって、アプリケーションプログラム４８は、どちらのスキャナからもＡ３原稿から得られた出力画像を受け取ってバッファ領域に格納できるようになる。
【００１９】
図４は、実施形態に係る画像読取装置の一例であるフラットベッドスキャナ１０を示す図である。操作者はフラットベッドスキャナカバー１４を開け、ガラス面１１に原稿Ｄを載置する。スキャンが開始されると、フラットベッドスキャナ１０は、ラインイメージセンサ１２で白色の対向部材１５を読取り、シェーディング補正用の補正データを生成する。生成された補正データは画素ごとにメモリに記憶される。ラインイメージセンサ１２は、移動ユニット１３によって図中の右方向である往路方向（副走査方向）に移動しながら、原稿Ｄの下面に形成されている画像を原稿搬送方向と直交する方向（主走査方向）に沿って読取る。フラットベッドスキャナ１０は、メモリから補正データを読み出して、画像にシェーディング補正を実行する。スキャン終了後、ラインイメージセンサ１２は移動ユニット１３によって図中の左方向である復路方向に移動し元の位置に復帰する。
【００２０】
図５は、フラットベッドスキャナ１０の電気回路の概略構成を示すブロック図である。Ａ／Ｄ変換部３１は、ラインイメージセンサ１２からの出力信号にアナログ処理（増幅や黒レベルクランプなど）を施してからデジタルデータ（画像データ）に変換する。画像処理部３２は、ラインイメージセンサ１２およびＡ／Ｄ変換部３１などの制御と、Ａ／Ｄ変換部３１から出力された画像データに各種の画像処理（シェーディング補正等）を実行する。画像メモリ３３は画像データを記憶する記憶装置である。インタフェース部３４は、外部ホスト装置（ＰＣまたは他のスキャナ装置）と通信するためのインタフェースである。インタフェース部３４は、信号ケーブル３５を介して外部ホスト装置と接続される。インタフェース部３４は、無線ＬＡＮ、ワイヤレスＵＳＢ、ブルートゥースなどの無線インタフェースであってもよい。インタフェース部２４は、ＵＳＢインタフェース、有線ＬＡＮインタフェースなど、有線インタフェースであってもよい。ここでは、説明をわかりやすくするために、インタフェース部３４は、ＵＳＢハブ機能を備えたＵＳＢインタフェースであるものと仮定する。ＣＰＵ３６は、フラットベッドスキャナ１０の制御を司る制御部である。画像処理部３２とＣＰＵ３６とはバス３７を介して接続されている。ＣＰＵ３６は画像処理部３２を介して画像メモリ３３にアクセスする。駆動部３９は、移動ユニット１３を駆動するためのモータである。モータドライバ３８は、ＣＰＵ３６からの指示に基づいて駆動部３９を制御する制御回路である。
【００２１】
図６は、実施形態に係る画像読取装置の一例であるシートフィードスキャナ１を示す図である。スキャンが開始されると、シートフィードスキャナ１は原稿検知センサ９を用いて原稿Ｄが存在するか否かを判定する。原稿Ｄが存在していれば、ラインイメージセンサ５が白色の対向部材７を読取り、シートフィードスキャナ１はシェーディング補正用の補正データを生成する。生成された補正データは画素ごとにメモリに記憶される。ピックアップローラ２と給送ローラ３がシートフィードスキャナ１内に原稿Ｄの束を取り込む。分離ローラ４は束を１枚ずつの原稿Ｄに分離する。第１ローラ対８ａは、分離された原稿Ｄを副走査方向（搬送方向）に搬送する。ラインイメージセンサ５は、原稿Ｄの上面に形成されている画像を主走査方向に沿って読み取る。シートフィードスキャナ１は、メモリから読み出した補正用のデータを用いて読取った画像にシェーディング補正を実行する。画像が読取られた後、原稿Ｄは、第２ローラ対８ｂによってシートフィードスキャナ１の外部へ排出される。
【００２２】
図７は、シートフィードスキャナ１の電気回路の概略構成を示すブロック図である。Ａ／Ｄ変換部２１は、ラインイメージセンサ５の出力信号にアナログ処理（増幅や黒レベルクランプなど）を施した後でデジタルデータ（画像データ）に変換する。画像処理部２２は、ラインイメージセンサ５およびＡ／Ｄ変換部２１などの制御と、Ａ／Ｄ変換部２１から出力された画像データに各種の画像処理（シェーディング補正等）を実行する。画像メモリ２３は画像データを記憶する。インタフェース部２４は外部ホスト装置（ＰＣまたは他のスキャナ装置）と通信するためのインタフェースである。インタフェース部２４は、信号ケーブル２５を介して外部ホスト装置と接続されている。なお、インタフェース部２４は無線ＬＡＮ、ワイヤレスＵＳＢ、ブルートゥースなどの無線インタフェースであってもよい。インタフェース部２４は、ＵＳＢインタフェース、有線ＬＡＮインタフェースなど、有線インタフェースであってもよい。ここでは、説明をわかりやすくするために、インタフェース部２４は、ＵＳＢハブ機能を備えたＵＳＢインタフェースであるものと仮定する。ＣＰＵ２６は、シートフィードスキャナ１の制御を司る制御部である。画像処理部２２とＣＰＵ２６とは、バス２７を介して接続されている。ＣＰＵ２６は画像処理部２２を介して画像メモリ２３にアクセスする。駆動部２９は、ピックアップローラ２、給送ローラ３、分離ローラ４、第１ローラ対８ａ、第２ローラ対８ｂを駆動するためのモータである。モータドライバ２８は、ＣＰＵ２６からの指示に基づいて駆動部２９を制御する制御回路である。
【００２３】
図８は、コンピュータ４０の電気回路の概略構成を示すブロック図である。ＣＰＵ４６は、コンピュータプログラムを実行してコンピュータ４０の各ユニットを統括的に制御する制御ユニットである。ＣＰＵ４６は、アプリケーションプログラム４８やスキャナドライバ４９にしたがって、シートフィードスキャナ１やフラットベッドスキャナ１０を制御する。ＲＯＭ４１は、ファームウエアなどの制御プログラムを記憶する不揮発性の記憶ユニットである。ＲＡＭ４２は、ワークエリアとして機能する揮発性の記憶ユニットである。ハードディスクドライブ（ＨＤＤ）４３は、プログラムや画像データを記憶する大容量の記憶ユニットである。表示装置４５は、操作者に対して各種情報を表示するための表示ユニットである。操作部４７は、ポインティングデバイスやキーボードなどの入力ユニットである。通信インタフェース４４は、上述した有線インタフェースや無線インタフェースなどの通信ユニットである。ＣＰＵ４６は、通信インタフェース４４を介してシートフィードスキャナ１やフラットベッドスキャナ１０と通信する。
【００２４】
次にドライバのロード処理について説明する。図９は、アプリケーションプログラム４８がフラットベッドスキャナドライバ４９ｂをロードする処理を示したフローチャートである。なお、以下で説明する処理はＣＰＵ４６がアプリケーションプログラム４８、フラットベッドスキャナドライバ４９ｂおよびシートフィードスキャナドライバ４９ａを実行することで実施される処理である。よって、各ステップのハードウエア上の実行主体はＣＰＵ４６であるが、説明の便宜上、プログラムを実行主体として説明することもある。その方が当業者にとってはわかりやすいからである。また、プログラムにしたがってプロセッサが実行するとは、プログラムを構成するプログラムコードをプロセッサ実行することを見する。
【００２５】
Ｓ９０１で、操作者Ｕが操作部４７を通じてアプリケーションプログラム４８の起動を指示すると、ＣＰＵ４６は、ＨＤＤ４３に記憶されているアプリケーションプログラム４８をＲＡＭ４２へロードして起動する。
【００２６】
Ｓ９０２で、ＣＰＵ４６は、起動したアプリケーションプログラム４８にしたがってフラットベッドスキャナドライバ４９ｂをＨＤＤ４３から読み出し、ＲＡＭ４２へロードする。
【００２７】
Ｓ９０３で、ＣＰＵ４６は、ロードされたフラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナドライバ４９ａがＨＤＤ４３にインストールされているかどうかを判定する。たとえば、フラットベッドスキャナドライバ４９ｂは、ＨＤＤ４３内のシートフィードスキャナドライバ４９ａを検索し、シートフィードスキャナドライバ４９ａが存在すれば、シートフィードスキャナドライバ４９ａがインストールされていると判定する。シートフィードスキャナドライバ４９ａがインストールされていなければ、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａをロードせず、ロード処理を終了する。一方で、シートフィードスキャナドライバ４９ａがインストールされていれば、Ｓ９０４に進む。
【００２８】
Ｓ９０４で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナ１がコンピュータ４０と接続されているかどうかを判定する。シートフィードスキャナ１が接続されていなければ、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａをロードせず、ロード処理を終了する。シートフィードスキャナ１がコンピュータ４０と接続されていれば、Ｓ９０５に進む。
【００２９】
Ｓ９０５で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナドライバ４９ａをＨＤＤ４３から読み出し、ＲＡＭ４２へロードする。
【００３０】
なお、アプリケーションプログラム４８がフラットベッドスキャナドライバ４９ｂをアンロードするときは、フラットベッドスキャナドライバ４９ｂがまずシートフィードスキャナドライバ４９ａをアンロードする。
【００３１】
次にユーザーインタフェースの説明をする。図１０は、スキャナドライバ４９のユーザーインタフェースの一例を示した図である。ユーザーインタフェース５１は、コンピュータ４０にフラットベッドスキャナ１０のみが接続されているときに、フラットベッドスキャナドライバ４９ｂが表示するユーザーインタフェースである。ユーザーインタフェース５２は、シートフィードスキャナ１のみがコンピュータ４０に接続されているときに、シートフィードスキャナドライバ４９ａが表示するユーザーインタフェースである。また、ユーザーインタフェース５３は、フラットベッドスキャナ１０とシートフィードスキャナ１が接続されているときに、フラットベッドスキャナドライバ４９ｂが表示するユーザーインタフェースである。
【００３２】
ユーザーインタフェース５１、５２、５３で、操作者は、カラーモード、読取サイズおよび解像度を設定できる。操作者が操作部４７を通じてスキャンボタン５４を押下すると、フラットベッドスキャナドライバ４９ｂはスキャンを開始する。操作者が操作部４７を通じてＣｌｏｓｅボタン５５押下すると、フラットベッドスキャナドライバ４９ｂは、ユーザーインタフェースの表示を終了する。
【００３３】
ユーザーインタフェース５３では、さらに、読取方法を設定できる。読取方法とは、操作者が使用する画像読取装置を切り替えるための設定項目である。操作者は、「フラットベッド」、「フィーダ（シートフィードスキャナ）」、「自動」といった読取方法から１つを選択する。操作者はフラットベッドスキャナ１０でスキャンを行うときは「フラットベッド」を選択し、シートフィードスキャナ１でスキャンを行うときは「フィーダ」を選択する。操作者が「自動」を選択すると、スキャン開始時に、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａを介してシートフィードスキャナ１に原稿Ｄが載置されているかを確認する。フラットベッドスキャナドライバ４９ｂは、原稿Ｄが載置されている場合はシートフィードスキャナ１でスキャンを行い、原稿Ｄが載置されていない場合はフラットベッドスキャナ１０でスキャンを行う。
【００３４】
図１１は「自動」が選択されたときにフラットベッドスキャナドライバ４９ｂにしたがってＣＰＵ４６が実行する動作を示すフローチャートである。
【００３５】
Ｓ１１０１で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナ１に原稿Ｄが載置されているかどうか判定する。たとえば、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナ１に原稿Ｄが載置されているかどうかをシートフィードスキャナドライバ４９ａに問い合せる。シートフィードスキャナドライバ４９ａは、問い合わせを受信すると、原稿検知センサ９の検知情報を取得し、原稿Ｄの有無をフラットベッドスキャナドライバ４９ｂに通知する。フラットベッドスキャナドライバ４９ｂは、受信した通知に基づき、シートフィードスキャナ１に原稿が載置されているかどうかを判定する。原稿Ｄがシートフィードスキャナ１の原稿台に載置されていれば、Ｓ１１０２に進む。
【００３６】
Ｓ１１０２で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａを介してシートフィードスキャナ１を制御してスキャンを行う。一方、シートフィードスキャナ１に原稿Ｄが載置されていなければ、Ｓ１１０３に進む。
【００３７】
Ｓ１１０３で、フラットベッドスキャナドライバ４９ｂはフラットベッドスキャナ１０を制御してスキャンを行う。
【００３８】
次に、ユーザーインタフェース５３の解像度の選択項目について説明する。フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａがサポートしている解像度をシートフィードスキャナドライバ４９ａに問い合わせて認識し、その中からフラットベッドスキャナドライバ４９ｂもサポートしている解像度のみを抽出する。この結果、解像度の選択項目は、フラットベッドスキャナ（フラットベッドスキャナ１０）ドライバ４９ｂとシートフィードスキャナドライバ４９ａ（シートフィードスキャナ１）の両方がサポートしている解像度のみとなる。なお、本発明では、読取サイズ、カラーモードの選択項目に関しても同様の抽出処理が実行されてもよい。
【００３９】
ユーザーインタフェース５３を通じて操作者が決定した設定（カラーモード、解像度、読取サイズ、読取方法など）の保存は、フラットベッドスキャナドライバ４９ｂが実行する。設定情報は、コンピュータ４０内の所定の場所（例：ＨＤＤ４３内のレジストリファイルなど）に保存される。
【００４０】
次に出力画像について説明する。本実施形態では、フラットベッドスキャナ１０が出力するＡ４画像の向きは縦長の向きであり、Ａ３画像の向きは横長の向きである。シートフィードスキャナ１が出力するＡ４画像とＡ３画像は縦長の向きである。
【００４１】
ここで、Ａ４画像とはＡ４サイズの原稿を読み取って生成された出力画像である。Ａ３画像とはＡ３サイズの原稿を読み取って生成された出力画像である。出力画像の向きとは、長方形をした出力画像の長手が縦であるのか横であるのかを示している。縦長とは、出力画像の縦の辺が横の辺よりも長くなることをいう。横長とは、出力画像の横の辺が縦の辺よりも長くなることをいう。また、出力画像の向きは、出力画像の出力仕様または出力形式と呼ばれてもよい。原稿サイズごとの出力画像の向きは、Ａ３縦長やＡ３横長といったような称呼サイズを示す情報と、どの辺が長いかを示す情報で特定されてもよい。原稿サイズごとの出力画像の向きは、幅（横）４２ｃｍ、長さ（縦）２９．６ｃｍというように、各辺の寸法で特定されてもよい。この場合、ＣＰＵ４６は、４２ｃｍと２９．６ｃｍという寸法からＡ３サイズの原稿であることを認識し、横寸法が縦寸法よりも長いことから横長の出力画像であることを認識する。同様に、原稿サイズごとの出力画像の向きは、２９．６×４２というように寸法のみで特定されてもよい。この場合は、２つの数値が横×縦の順番で並んでいることが前提となる。
【００４２】
前述したように、アプリケーションによっては、フラットベッドスキャナ１０でスキャンしたＡ３画像の向きとシートフィードスキャナ１でスキャンしたＡ３画像の向きが異なると、どちらかの出力画像（画像データ）をアプリケーションが受け取れない。そこで、本実施形態では、シートフィードスキャナ１が出力する画像の向きをフラットベッドスキャナ１０が出力する画像の向きと同じ向きとなるようにＣＰＵ４６とフラットベッドスキャナドライバが制御する。つまり、ＣＰＵ４６とフラットベッドスキャナドライバは、アプリケーションプログラム４８が想定している出力画像の向き（出力仕様）に一致するように、シートフィードスキャナ１の出力画像の向きとフラットベッドスキャナ１０の出力画像の向きとを必要に応じて整合させる。この整合処理は、通常の出力画像を９０度または２７０度回転させることで実現される。
【００４３】
出力画像の向きの制御について図１２のフローチャートを用いて説明する。Ｓ１２０１で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａとからそれぞれサイズ情報を取得する。サイズ情報には、読取サイズ（称呼サイズであるＡ４、Ａ３を示す称呼情報）と、出力画像の向きを明示的または暗示的に示す向き情報（縦長／横長、原稿の縦の寸法および横の寸法など）が含まれているものと仮定する。このように、ＣＰＵ４６は、第２画像読取装置が原稿を読み取って出力する画像の向きを示す情報として第２画像読取装置がサポートしている原稿の読取サイズを示すサイズ情報を取得する取得手段として機能する。また、ＣＰＵ４６は、第１画像読取装置が原稿を読み取って出力する画像の向きを特定するための情報として第１画像読取装置がサポートしている原稿の読取サイズを示すサイズ情報を取得する取得手段として機能する。
【００４４】
Ｓ１２０２で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、複数のスキャナドライバ（フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａ）に共通する称呼サイズを列挙する。たとえば、サイズ情報を参照することで、フラットベッドスキャナドライバ４９ｂがサポートしている称呼サイズがＡ３，Ａ４，Ｂ５であり、シートフィードスキャナドライバ４９ａがサポートしている称呼サイズがＡ３，Ａ４であることが分かったとする。この場合、ＣＰＵ４６は、共通する称呼サイズとしてＡ３，Ａ４を列挙（抽出）する。
【００４５】
Ｓ１２０３で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、共通する称呼サイズのそれぞれについて複数のスキャナドライバ間で出力画像の向きが一致しているかを判定する。このようにＣＰＵ４６は、第２画像読取装置から取得されたサイズ情報から特定される画像の向きが第１画像読取装置について予め想定されている画像の向きと異なるかどうかを判定する判定手段として機能する。また、ＣＰＵ４６は、予め想定されている画像の向きとして第１画像読取装置から取得されたサイズ情報から特定される画像の向きを用いて、第２画像読取装置から取得されたサイズ情報から特定される画像の向きと比較する手段として機能する。たとえば、ＣＰＵ４６は、サイズ情報から出力画像の向きに関する情報を読み出し、称呼サイズごとの出力画像の向きを認識する。なお、縦長か横長かは縦横の寸法から判定できる。あるいは、フラットベッドスキャナドライバ４９ｂから得られた縦横の寸法と、シートフィードスキャナドライバ４９ａから得られた縦横の寸法とが一致しているかどうかを判定することで、実質的に向きの判定を行ってもよい。このように、ＣＰＵ４６は、原稿の称呼上のサイズごとに、第１画像読取装置がサポートしている原稿の幅および長さと、第２画像読取装置がサポートしている原稿の幅および長さとを比較してもよい。
【００４６】
たとえば、フラットベッドスキャナドライバ４９ｂは横長のＡ３画像を出力し、縦長のＡ４画像を出力し、シートフィードスキャナドライバ４９ａは縦長のＡ３画像を出力し、縦長のＡ４画像を出力すると仮定する。よって、ＣＰＵ４６は、Ａ４サイズの原稿については複数のドライバ間で出力画像の向きが一致すると判定するため、Ｓ１２０５に進み、Ａ４についての回転フラグをオフにセットする。一方で、ＣＰＵ４６は、Ａ３サイズの原稿については複数のドライバ間で出力画像の向きが異なると判定するため、Ｓ１２０４に進み、Ａ３サイズについての回転フラグをオンにセットする。これにより、各称呼サイズごとの回転フラグがＲＡＭ４２またはＨＤＤ４３に格納される。
【００４７】
ＣＰＵ４６は、アプリケーションプログラム４８からシートフィードスキャナ１によるＡ３原稿のスキャンを指示されると、ＲＡＭ４２またはＨＤＤ４３に格納されているＡ３サイズについての回転フラグを参照し、回転フラグに応じてシートフィードスキャナ１からの出力画像を回転するかどうかを決定する。つまり、回転フラグがオンであれば、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａから渡された出力画像を９０度回転してから、アプリケーションプログラム４８に出力する。上述した例であれば、Ａ３の出力画像については回転することになる。一方で、回転フラグがオフであれば、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａから渡された出力画像を回転させずに、そのままアプリケーションプログラム４８に出力する。上述した例であればＡ４の画像については回転しないことになる。これにより、シートフィードスキャナ１の出力画像の向きは、フラットベッドスキャナ１０の出力画像の向きに整合して、アプリケーションプログラムに渡されることになる。このように、ＣＰＵ４６は、原稿の称呼上のサイズが同一である場合に第２画像読取装置が出力する画像の向きを第１画像読取装置が出力する画像の向きに整合させる手段として機能する。
【００４８】
図１２に示した出力画像の向きを制御する処理は、フラットベッドスキャナドライバ４９ｂがシートフィードスキャナドライバ４９ａをロードするときに行われる。つまり、シートフィードスキャナ１がコンピュータ４０に接続されていないときは、この処理は実行されなくてよい。
【００４９】
次に自動サイズ検知機能について説明する。自動サイズ検知機能は、スキャンにより得られた出力画像の中から原稿に相当する画像部分（原稿画像）を切り出して出力する機能である。フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａはそれぞれ自動サイズ検知機能を備えている。フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａは、出力画像内で原稿と背景の間にできる影をみつけ（いわゆるコントラスト検出）、原稿画像を切り出す。
【００５０】
図１３は自動サイズ検知機能の選択項目を備えたユーザーインタフェース６０を示す図である。操作者が自動サイズ検知を選択してスキャンを開始したときは、原稿がスキャンされるまで幅情報と長さ情報は確定しない。そこで、フラットベッドスキャナドライバ４９ｂは、読取可能な原稿サイズのうちで最大の原稿サイズ（幅の最大値と長さの最大値）をアプリケーションプログラム４８に通知する。上述した例では、横長のＡ３画像が最大サイズであるため、「幅４２ｃｍ、長さ２９．６ｃｍ」といったサイズ情報がアプリケーションプログラム４８に通知される。「Ａ３、横長」といったサイズ情報が通知されてもよい。なお、Ａ３縦長画像では「幅２９．６ｃｍ、長さ４２ｃｍ」といったサイズ情報となるため、Ａ３縦長画像の長さ（４２ｃｍ）が、通知済みの長さの最大値（２９．６ｃｍ）を超えてしまうことになる。
【００５１】
アプリケーションプログラム４８は、スキャン前にＡ３サイズの出力画像を格納可能なバッファ領域をＲＡＭ４２に確保しておく。フラットベッドスキャナドライバ４９ｂが画像データを送信すると、アプリケーションプログラム４８は受信した画像データをバッファ領域に保存する。バッファ領域は、最大サイズに合わせて確保されているため、それよりも小さな出力画像であればそのまま保存可能である。なお、フラットベッドスキャナドライバ４９ｂは、出力画像から原稿画像を切り出す際に原稿画像から原稿サイズを判別し、判別した原稿サイズを示すサイズ情報をアプリケーションプログラム４８に送信してもよい。アプリケーションプログラム４８は、受信したサイズ情報に基づき出力画像の幅情報と長さ情報を更新して、バッファ領域を調整してもよい。
【００５２】
次に自動サイズ検知が選択された場合に、シートフィードスキャナドライバ４９ａが出力した画像をフラットベッドスキャナドライバ４９ｂが回転する制御処理について説明する。図３によれば、操作者がＡ３サイズの原稿をシートフィードスキャナ１でスキャンした場合、出力画像は縦長のＡ３画像になる。上述したように、フラットベッドスキャナドライバ４９ｂはアプリケーションプログラム４８に読取サイズの最大値（横長のＡ３画像）を通知している。そのため、縦長のＡ３画像をアプリケーションプログラム４８に出力してしまうと、アプリケーションプログラム４８は画像を受け取れない。そこで、フラットベッドスキャナドライバ４９ｂは、Ａ３画像を９０度（横長の向きに）回転して出力画像を生成し、アプリケーションプログラム４８に送信する。Ａ４原稿をシートフィードスキャナ１でスキャンした場合、フラットベッドスキャナドライバ４９ｂは、Ａ４画像を回転せずにそのままアプリケーションプログラム４８に渡す。
【００５３】
図１４は、自動サイズ検知機能がアクティブにセットされているときの回転制御を示すフローチャートである。Ｓ１４０１で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナドライバ４９ａから出力画像を受信する。Ｓ１４０２で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって出力画像から原稿画像を切り出す。Ｓ１４０３で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって原稿画像から原稿サイズを測定する。Ｓ１４０４で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、測定された原稿サイズが、フラットベッドスキャナドライバ４９ｂの最大読取サイズ（本実施形態では横長向きのＡ３サイズ）より小さいかどうかを判定する。最大読取サイズは、アプリケーションプログラム４８に通知済みのサイズであり、バッファ領域のサイズに合致している。測定された原稿サイズが最大読取サイズよりも大きい場合は、Ｓ１４０５に進む。Ｓ１４０５で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナドライバ４９ａの出力画像から切り出した原稿画像を９０度回転し、アプリケーションプログラム４８に渡す。測定された原稿サイズが最大読取サイズ以下であれば、Ｓ１４０６に進む。Ｓ１４０６で、ＣＰＵ４６は、フラットベッドスキャナドライバ４９ｂにしたがって、シートフィードスキャナドライバ４９ａの出力画像から切り出した原稿画像を回転せずにアプリケーションプログラム４８に渡す。
【００５４】
本実施形態によれば、シートフィードスキャナ１でスキャンした画像の向きがアプリケーションプログラム４８で想定している向き（フラットベッドスキャナ１０でスキャンした画像の向き）に整合される。そのため、アプリケーションプログラム４８は、どちらのスキャナからの出力画像であってもバッファ領域に保存できる。
【００５５】
本実施形態では、フラットベッドスキャナドライバ４９ｂを介してシートフィードスキャナドライバ４９ａを使用したが、シートフィードスキャナドライバ４９ａを介してフラットベッドスキャナドライバ４９ｂを使用できる構成にしてもよい。この場合、上述した説明においてフラットベッドスキャナドライバ４９ｂをシートフィードスキャナドライバ４９ａと読み替え、シートフィードスキャナドライバ４９ａをフラットベッドスキャナドライバ４９ｂと読み替えればよい。
【００５６】
本実施形態では、シートフィードスキャナ１が出力するＡ３画像データの向きをフラットベッドスキャナ１０が出力するＡ３画像データの向きに合わせているが、逆でもよい。この場合、アプリケーションプログラム４８が予め想定している向きは、シートフィードスキャナ１が出力するＡ３画像の向きに一致している。つまり、シートフィードスキャナ１が出力するＡ３画像の向きが事前にアプリケーションプログラム４８に通知されることが前提となる。
【００５７】
本実施形態では、シートフィードスキャナ１をシートフィードスキャナドライバ４９ａが制御しているが、シートフィードスキャナドライバ４９ａを利用せず、フラットベッドスキャナドライバ４９ｂが直接的にフラットベッドスキャナ１０とシートフィードスキャナ１を制御するようにスキャナドライバが作成されてもよい。
【００５８】
＜第２実施形態＞
第１実施形態では、図３が示すように、フラットベッドスキャナ１０が出力するＡ４画像は縦長の向き、Ａ３画像は横長の向きであった。また、シートフィードスキャナ１が出力するＡ４画像とＡ３画像は縦長の向きであった。第２形態では、図１５（ａ）、（ｂ）が示すように、操作者Ｕから見てフラットベッドスキャナ１０は縦置きである。これにより、原稿Ｄ１、Ｄ２を置いた向きと、それに対応する出力画像Ｉ１、Ｉ２の向きが同じになる。つまり、Ａ４画像Ｉ２とＡ３画像Ｉ１は縦長となる。また、図１５（ｃ）、（ｄ）が示すように、シートフィードスキャナ１が出力するＡ４画像Ｉ４とＡ３画像Ｉ３は横長である。このときの出力画像について図１２を参照して説明する。
【００５９】
Ｓ１２０１で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａからサイズ情報を取得する。サイズ情報には、Ａ３横長、Ａ４横長を示す情報が含まれている。フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズにそれぞれについて、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像の向きが予め想定された向きに一致するかどうかを判定する（Ｓ１２０２〜Ｓ１２０３）。予め想定された向きは、フラットベッドスキャナドライバ４９ｂのＡ３サイズとＡ４サイズの出力画像の向きである。図１５（ａ）ないし図１５（ｄ）が示すように、Ａ３サイズとＡ４サイズとの両方とも向きが一致しない。そこで、Ｓ１２０４で、フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズとの両方について回転フラグをオンに設定する。これにより、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像は予め想定された向きとなるようにそれぞれ９０度回転される。
【００６０】
＜第３実施形態＞
第１実施形態では、図３が示すように、フラットベッドスキャナ１０が出力するＡ４画像は縦長の向き、Ａ３画像は横長の向きであった。また、シートフィードスキャナ１が出力するＡ４画像とＡ３画像は縦長の向きであった。第３実施形態では、図１６（ａ）、（ｂ）が示すように、第２実施形態同様、フラットベッドスキャナ１０は縦置きであり、Ａ４画像とＡ３画像は縦長である。図１６（ｃ）、（ｄ）が示すように、シートフィードスキャナ１が出力するＡ４画像とＡ３画像も縦長である。このときの出力画像について説明する。
【００６１】
Ｓ１２０１で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａからサイズ情報を取得する。サイズ情報には、Ａ３縦長、Ａ４縦長を示す情報が含まれている。フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズにそれぞれについて、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像の向きが予め想定された向きに一致するかどうかを判定する（Ｓ１２０２〜Ｓ１２０３）。予め想定された向きは、フラットベッドスキャナドライバ４９ｂのＡ３サイズとＡ４サイズの出力画像の向きである。図１６（ａ）ないし図１６（ｄ）が示すように、Ａ３サイズとＡ４サイズとの両方とも向きが一致している。そこで、Ｓ１２０５で、フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズとの両方について回転フラグをオフに設定する。これにより、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像は回転されずに、アプリケーションプログラム４８に送信される。
【００６２】
＜第４実施形態＞
第３実施形態では、図１６（ａ）、（ｂ）が示すように、フラットベッドスキャナ１０は縦置きであり、Ａ４画像とＡ３画像は縦長であった。また、図１６（ｃ）、（ｄ）が示すように、シートフィードスキャナ１が出力するＡ４画像とＡ３画像は縦長であった。第４実施形態では、図１７（ａ）、（ｂ）が示すように、操作者Ｕが原稿Ｄ１、Ｄ２を置いた向きと出力画像Ｉ１、Ｉ２の向きが同じになるように、フラットベッドスキャナ１０は横置きされる。つまり、Ａ４画像とＡ３画像は横長である。一方で、図１７（ｃ）、（ｄ）が示すように、シートフィードスキャナ１が出力するＡ４画像とＡ３画像も横長である。このときの出力画像について説明する。
【００６３】
Ｓ１２０１で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａからサイズ情報を取得する。サイズ情報には、Ａ３横長、Ａ４横長を示す情報が含まれている。フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズにそれぞれについて、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像の向きが予め想定された向きに一致するかどうかを判定する（Ｓ１２０２〜Ｓ１２０３）。予め想定された向きは、フラットベッドスキャナドライバ４９ｂのＡ３サイズとＡ４サイズの出力画像の向きである。図１７（ａ）ないし図１７（ｄ）が示すように、Ａ３サイズとＡ４サイズとの両方とも向きが一致している。そこで、Ｓ１２０５で、フラットベッドスキャナドライバ４９ｂは、Ａ３サイズとＡ４サイズとの両方について回転フラグをオフに設定する。これにより、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像は回転されずに、アプリケーションプログラム４８に送信される。
【００６４】
＜第５実施形態＞
第１実施形態では、図３が示すように、フラットベッドスキャナ１０が出力するＡ４画像は縦長の向き、Ａ３画像は横長の向きであった。また、シートフィードスキャナ１が出力するＡ４画像とＡ３画像は縦長の向きであった。第５実施形態では、図１８（ａ）、（ｂ）が示すように、第１実施形態同様、フラットベッドスキャナ１０は横置きであり、Ａ４画像は縦長であり、Ａ３画像は横長である。一方で、図１８（ｃ）が示すように、シートフィードスキャナ１の最大読取サイズはＡ４サイズであり、出力画像は縦長である。このときのユーザーインタフェースと出力画像について説明する。
【００６５】
第５実施形態では、Ａ３原稿を読み取れるスキャナはフラットベッドスキャナ１０だけである。そのため、図１０に示したユーザーインタフェース５３において、操作者Ｕが読取方法をフラットベッドスキャナに変えたときだけサイズ項目でＡ３を選択できる。読取方法をフラットベッドスキャナ以外に変えたときはサイズ項目でＡ３がグレーアウト、もしくは非表示となる。
【００６６】
Ｓ１２０１で、フラットベッドスキャナドライバ４９ｂは、シートフィードスキャナドライバ４９ａからサイズ情報を取得する。サイズ情報には、Ａ４縦長を示す情報が含まれている。Ｓ１２０３で、フラットベッドスキャナドライバ４９ｂは、共通する称呼サイズとしてＡ４を抽出する。Ｓ１２０３で、フラットベッドスキャナドライバ４９ｂは、Ａ４サイズについて、シートフィードスキャナドライバ４９ａのＡ４サイズの出力画像の向きが予め想定された向きに一致するかどうかを判定する。予め想定された向きは、フラットベッドスキャナドライバ４９ｂのＡ４サイズの出力画像の向きである。図１８（ｂ）、（ｃ）が示すように、フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａとの間でＡ４サイズの原稿についての出力画像の向きが一致している。そこで、Ｓ１２０５で、フラットベッドスキャナドライバ４９ｂは、Ａ４サイズの回転フラグをオフに設定する。これにより、シートフィードスキャナドライバ４９ａのＡ３サイズとＡ４サイズの出力画像は回転されずに、アプリケーションプログラム４８に送信される。
【００６７】
＜まとめ＞
上記の実施形態で、原稿読取方式がそれぞれ異なる第１画像読取装置と第２画像読取装置とから画像を受け取る情報処理装置であるコンピュータ４０の動作について説明した。第１画像読取装置と第２画像読取装置としては、シートフィードスキャナ１とフラットベッドスキャナ１０を一例として採用した。ＣＰＵ４６は、第２画像読取装置がサポートしている原稿の読取サイズが第１画像読取装置について予め想定されている原稿の読取サイズと異なる場合には第２画像読取装置によって取得された画像の向きを回転させる向き整合手段（画像整合手段または画像方向整合手段）として機能する（Ｓ１２０１〜Ｓ１２０４、Ｓ１４０１〜Ｓ１４０５）。一方で、ＣＰＵ４６は、第２画像読取装置がサポートしている原稿の読取サイズが第１画像読取装置について予め想定されている原稿の読取サイズと一致する場合には第２画像読取装置によって取得された画像の向きを回転させない向き整合手段として機能する（Ｓ１２０３⇒Ｓ１２０５；Ｓ１４０４⇒Ｓ１４０６）。よって、複数の画像読取装置が接続されたコンピュータ４０で動作しているアプリケーションプログラム４８は、どの画像読取装置からも予め想定した向きの出力画像（画像データ）を受け取れるようになる。ここで、原稿の読取サイズとは、原稿を読み取って生成される出力画像の向きを特定可能な情報であり、出力仕様や出力形式、出力向きとも呼べる情報である。
【００６８】
ＣＰＵ４６は、シートフィードスキャナ１が原稿を読み取って出力する画像の向きを示す情報としてシートフィードスキャナ１がサポートしている原稿の読取サイズを示すサイズ情報を取得する取得手段として機能してもよい。また、ＣＰＵ４６は、シートフィードスキャナ１から取得されたサイズ情報から特定される画像の向きがフラットベッドスキャナ１０について予め想定されている画像の向きと異なるかどうかを判定する判定手段として機能してもよい。そして、ＣＰＵ４６は、シートフィードスキャナ１から取得されたサイズ情報から特定される画像の向きが予め想定されている画像の向きと異なる場合にはシートフィードスキャナ１によって取得された画像の向きを９０度回転させる。一方で、ＣＰＵ４６は、シートフィードスキャナ１から取得されたサイズ情報から特定される画像の向きが予め想定されている画像の向きと一致している場合にはシートフィードスキャナ１によって取得された画像の向きを回転させない。これによって、原稿の称呼上のサイズが同一である場合には、シートフィードスキャナ１が出力する画像の向きをフラットベッドスキャナ１０が出力する画像の向きに整合させることが可能となる。
【００６９】
なお、ＣＰＵ４６は、フラットベッドスキャナ１０が原稿を読み取って出力する画像の向きを特定するための情報としてフラットベッドスキャナ１０がサポートしている原稿の読取サイズを示すサイズ情報を取得してもよい。この場合、ＣＰＵ４６は、予め想定されている画像の向きとしてフラットベッドスキャナ１０から取得されたサイズ情報から特定される画像の向きを用いて、シートフィードスキャナ１から取得されたサイズ情報から特定される画像の向きと比較することになる。
【００７０】
サイズ情報には、原稿の称呼上のサイズを示す称呼情報（Ａ３，Ａ４，Ｂ４，Ｂ５、レター，リーガルなど）と、当該原稿の幅を示す幅情報（４２ｃｍ）と、当該原稿の長さを示す長さ情報（２９．６ｃｍ）とが含まれていてもよい。ＣＰＵ４６は、フラットベッドスキャナ１０とシートフィードスキャナ１との間で、それぞれがサポートしている原稿の称呼上のサイズが一致しているものの原稿の幅と長さが一致していないと判定した場合に、シートフィードスキャナ１によって取得された画像の向きを９０度回転させてもよい。このように、原稿の幅や長さに基づき、実質的に出力画像の向きが整合されてもよい。つまり、向き自体が明示的に特定されなくてもよい。具体的には、ＣＰＵ４６は、原稿の称呼上のサイズごとに、フラットベッドスキャナ１０がサポートしている原稿の幅および長さと、シートフィードスキャナ１がサポートしている原稿の幅および長さとを比較する。そして、ＣＰＵ４６は、シートフィードスキャナ１がサポートしている原稿の幅および長さが、フラットベッドスキャナ１０がサポートしている原稿の幅および長さと異なっていれば当該称呼上のサイズについて画像を回転させるようにフラグをセットする。
【００７１】
ＣＰＵ４６は、フラットベッドスキャナ１０がサポートしている読取サイズのうち最大読取サイズと、シートフィードスキャナ１がサポートしている読取サイズのうち最大読取サイズとを比較してもよい。たとえば、フラットベッドスキャナ１０の最大読取サイズがＡ３サイズであり、シートフィードスキャナ１の最大読取サイズがＡ４サイズであったと仮定する。この場合、アプリケーションプログラム４８は、フラットベッドスキャナ１０の最大読取サイズにしたがってバッファ領域を確保するため、シートフィードスキャナ１が出力するＡ４サイズの原稿画像であれば、回転せずにバッファ領域に格納可能である。
【００７２】
フラットベッドスキャナドライバ４９ｂおよびＣＰＵ４６は、向き整合手段を有し、フラットベッドスキャナ１０を制御する第１制御手段として機能する。シートフィードスキャナドライバ４９ａおよびＣＰＵ４６は、シートフィードスキャナ１を制御する第２制御手段として機能する。この場合、図２に示すように、第１制御手段は、第２制御手段を通じてシートフィードスキャナ１を制御し、フラットベッドスキャナ１０から受け取った画像と、第２制御手段を通じてシートフィードスキャナ１から受け取った画像とをアプリケーションプログラム４８に渡すように構成されている。このような構成は、ドライバの切り替え時間を短縮する効果がある。シートフィードスキャナドライバ４９ａとフラットベッドスキャナドライバ４９ｂとが完全に独立している場合、フラットベッドスキャナドライバ４９ｂがロードされている状態で、シートフィードスキャナドライバ４９ａに切り替えるためには、フラットベッドスキャナドライバ４９ｂをアンロードしてからシートフィードスキャナドライバ４９ａをロードしなければならない。再び、フラットベッドスキャナドライバ４９ｂを使用するには、シートフィードスキャナドライバ４９ａをアンロードして、フラットベッドスキャナドライバ４９ｂをロードしなければならない。一方で、本実施形態であれば、フラットベッドスキャナドライバ４９ｂをロードしたまま、シートフィードスキャナ１を使用できる。つまり、フラットベッドスキャナドライバ４９ｂのアンロードや再ロードは不要である。
【００７３】
このように、第１制御手段は情報処理装置に備えられたプロセッサが第１ドライバプログラムを実行することによって実現される機能であり、第２制御手段はプロセッサが第２ドライバプログラムを実行することによって実現される機能である。しかしながら、第１制御手段および第２制御手段はコンピュータ４０に備えられたプロセッサ（ＣＰＵ４６）が単一のドライバプログラムを実行することによって実現される機能であってもよい。つまり、シートフィードスキャナドライバ４９ａとフラットベッドスキャナドライバ４９ｂは単一のドライバに統合されてもよい。
【００７４】
また、図２に示したように、フラットベッドスキャナドライバ４９ｂとシートフィードスキャナドライバ４９ａが通信するためのプロトコルは、フラットベッドスキャナドライバ４９ｂとアプリケーションプログラム４８とが通信するためのプロトコル（例：ＴＷＡＩＮ）と同一のプロトコルであってもよい。これは、シートフィードスキャナドライバ４９ａのアプリケーション側のインタフェースをそのまま、フラットベッドスキャナドライバ４９ｂと通信するためのインタフェースとして流用できることを意味する。よって、シートフィードスキャナドライバ４９ａについては、フラットベッドスキャナドライバ４９ｂと通信するための特別のインタフェースを別に用意する必要はない。これは、シートフィードスキャナドライバ４９ａの設計が容易になる利点をもたらす。
【００７５】
なお、ＣＰＵ４６は、アプリケーションプログラム４８によって指定された称呼上のサイズの原稿について、画像の向きを整合すれば十分である。つまり、スキャナドライバ４９がサポートしているすべての称呼サイズのうち、アプリケーションプログラム４８によって指定された称呼上のサイズについてだけ、回転フラグの制御処理を実行してもよい。これは処理を簡潔にできる利点をもたらす。
【００７６】
シートフィードスキャナ１はフラットベッドスキャナ１０を介してコンピュータ４０に接続されてもよいし、それぞれが別々にコンピュータ４０に接続されてもよい。
【００７７】
アプリケーションプログラム４８、ＣＰＵ４６およびＲＡＭ４２は、バッファ手段として機能してもよい。アプリケーションプログラム４８およびＣＰＵ４６は、予め想定された向きとサイズの画像を格納するようバッファ領域をＲＡＭ４２に確保し、フラットベッドスキャナ１０またはシートフィードスキャナ１によって取得された画像をバッファ領域に記憶する。ＲＡＭ４２を有効に活用するには必要最小限のバッファ領域を確保することが望まれる。よって、アプリケーションプログラム４８は、ユーザによって指定された原稿サイズに対応した出力画像であってフラットベッドスキャナドライバ４９ｂから通知された向きの出力画像を保存できるようにバッファ領域を確保する。それゆえに、シートフィードスキャナ１の出力画像の向きがフラットベッドスキャナ１０の出力画像の向きと一致していなければ、シートフィードスキャナ１の出力画像をバッファ領域に保存できない。よって、出力画像の向きの整合処理は極めて有用である。
【００７８】
なお、上述した実施の形態において、画像整合手段を用いた整合処理は、コンピュータ等の情報処理装置で行ってもよいし、いずれかの画像読取装置において行ってもよい。また画像の向きを整合する場合においては、たとえば、画像（原稿）のサイズや画像に含まれる文字情報から画像の向きを特定して、画像の向きを揃えるにあたり、揃える各画像の角部の位置を合わせる処理を含めてもよい。また、揃える画像のサイズが異なる場合には、予め指定された所定のサイズに合うように拡大縮小の処理を施してもよいし、大きい方の画像サイズとなるように小さい方の画像を拡大してサイズを揃えるようにしてもよい。また、原稿が斜行（斜め姿勢で搬送等）して読み取られた場合を考慮すると、原稿画像の斜行補正を行った後に、上述した画像の整合処理を施すようにするのがよい。
【図１】
2015103925.tif 000003
【図２】
2015103925.tif 000004
【図３】
2015103925.tif 000005
【図４】
2015103925.tif 000006
【図５】
2015103925.tif 000007
【図６】
2015103925.tif 000008
【図７】
2015103925.tif 000009
【図８】
2015103925.tif 000010
【図９】
2015103925.tif 000011
【図１０】
2015103925.tif 000012
【図１１】
2015103925.tif 000013
【図１２】
2015103925.tif 000014
【図１３】
2015103925.tif 000015
【図１４】
2015103925.tif 000016
【図１５】
2015103925.tif 000017
【図１６】
2015103925.tif 000018
【図１７】
2015103925.tif 000019
【図１８】
2015103925.tif 000020