<スキャンシステムの構成>
図1に、本願に係る実施形態として例示されるスキャンシステム1のブロック図を示す。スキャンシステム1は、PC(情報処理装置の一例)10、スキャナ(情報処理装置の一例)50を備える。
PC10は、CPU(コンピュータ及びコントローラの一例)12、メモリ14、LCD(ユーザインタフェースの一例)16、入力インタフェース(ユーザインタフェースの一例)18、ネットワークインタフェース20を主に備えている。これらの構成要素は、バス22を介して互いに通信可能とされている。なお、「インタフェース」は、「I/F」と記載しても良い。
CPU12は、メモリ14内のアプリケーションプログラム(制御プログラムの一例)26、スキャナドライバ(制御プログラムの一例)28、オペレーティングシステム(以下、「OS」と略す)32に従って処理を実行する。アプリケーションプログラム26は、例えば、入力I/F18を介して受け付けた内容に基づいてスキャナドライバ28に対する指示を出力する、あるいはスキャナドライバ28から取得したデータをLCD16に表示する。従って、アプリケーションプログラム26は、スキャナドライバ28への指示やスキャナドライバ28からのデータを出力するインタフェースとして機能する。
また、スキャナドライバ28は、スキャナ50のデバイスドライバであり、スキャナ50の作動を制御する。スキャナドライバ28は、アプリケーションプログラム26との間でデータの入出力を行い、例えば、TWAIN規格に準拠した通信をスキャナ50との間で行う。なお、スキャナドライバ28はTWAIN規格以外(例えば、WIA規格)のドライバでも良い。また、スキャナドライバ28は、スキャンの設定を行う設定画面の表示を行う。また、スキャナドライバ28は、スキャナ50から取得したスキャンデータSDに対する画像処理を実行可能となっている。
また、OS32は、アプリケーションプログラム26、スキャナドライバ28に利用される基本的な機能を提供するプログラムである。なお、以下の説明では、アプリケーションプログラム26等を実行するCPU12のことを、単にプログラム名でも記載する場合がある。例えば、「アプリケーションプログラム26が」という記載は、「アプリケーションプログラム26を実行するCPU12が」ということを意味する場合がある。
また、メモリ14は、データ記憶領域34を備える。データ記憶領域34は、アプリケーションプログラム26等の実行に必要なデータなどを記憶する領域である。なお、メモリ14は、RAM、ROM、フラッシュメモリ、HDD、CPU12が備えるバッファなどが組み合わされて構成されている。
メモリ14は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。後述するスキャナ50のメモリ54についても同様である。
LCD16は、PC10の各種機能を表示する。入力I/F18は、キーボード,マウス等を含み、ユーザ操作を入力するためのインタフェースである。ネットワークI/F20は、ネットワーク56に接続され、ネットワーク56を介して、スキャナ50のネットワークインタフェース51に接続されている。これにより、PC10はスキャナ50との間で情報の送受信を行う。
スキャナ50は、原稿に印刷された画像を読み取ってスキャンデータSDを生成する装置であり、上記したネットワークI/F51の他に、CPU52、メモリ54、読取インタフェース55、原稿センサ59、入力インタフェース57、LCD58等を備えている。これらの構成要素は、バス53を介して互いに通信可能とされている。
CPU52は、メモリ54内のプログラム61(制御プログラムの一例)に従って処理を実行する。メモリ54は、RAM、ROMなどが組み合わされて構成されている。また、メモリ54は、データ記憶領域54Aを備える。データ記憶領域54Aは、プログラム61の実行に必要なデータなどを記憶する領域である。
プログラム61は、スキャナ50を統括的に制御するプログラムである。スキャナ50は、PC10によって制御され、読み取ったスキャンデータSDをPC10へ送信する。スキャナ50のCPU52は、プログラム61に従って、スキャンデータSDの生成処理やスキャンデータSDに対する画像処理を実行する。
読取I/F55は、例えば、CCDやCISなどの画像を読み取るデバイスを備える。また、読取I/F55は、ADF(Auto Document Feederの略)を備えており、ADFにセットされた原稿を1枚ずつ順次搬送しながら読み取ることが可能となっている。なお、読取I/F55は、いわゆるフラットベッド式の原稿台を備え、手作業により原稿を1枚ずつセットする構成でも良い。
原稿センサ59は、例えば、原稿の副走査方向の長さを検知する物理的なセンサである。ここでいう物理的なセンサとは、例えば、ローラ型のセンサであり、画像の読み取り時に原稿の上を副走査方向へと回転しながら移動し、原稿の端部の段差に基づいて原稿の高さを検知するものである。このような原稿センサ59による原稿サイズの検知では、センサの検知精度によっては数ミリ程度(例えば、3ミリ~5ミリ)の誤差が生じる虞がある。例えば、原稿センサ59による原稿サイズの検知では、搬送方向における原稿の後端の検知タイミングと、読取I/F55のADFによる原稿の搬送タイミングとのずれによって後端の検知に誤差が生じる。その結果、後述するように、生成されたスキャンデータSDの後端には、原稿を背面側から抑える原稿カバーをスキャンした画像が付加される。なお、原稿の主走査方向の長さのことを原稿の幅という場合がある。また、原稿の副走査方向の長さのことを原稿の高さという場合がある。
入力I/F57は、液晶ディスプレイや各種スイッチ等を含み、ユーザ操作を入力するためのインタフェースである。LCD58は、スキャナ50の各種機能を表示する。
<画像の読み取りの作動シーケンス>
ここで、本実施形態のスキャンシステム1は、原稿サイズを自動で検知し、検知した原稿サイズのスキャンデータ(後述する、第3スキャンデータSD3)を生成するスキャン処理(以下、原稿サイズ自動検知スキャン処理という場合がある)を実行することができる。原稿サイズ自動検知スキャン処理には、スキャナ50が原稿サイズを自動検知する方式(以下、サイズ自動検知方式という場合がある)で生成したスキャンデータ(後述する、図2のS43で出力される第2スキャンデータSD2)を用いて、スキャナドライバ28が第3スキャンデータSD3を生成する処理である「第1スキャン処理」(後述する、図2のS39~S45)と、スキャナ50が原稿サイズを自動検知しない方式(以下、オーバースキャン方式という場合がある)生成したスキャンデータ(後述する、図3のS55で出力される第2スキャンデータSD2)を用いて、スキャナドライバ28が原稿サイズを自動検知し、スキャナドライバ28が第3スキャンデータSD3を生成する処理である「第2スキャン処理」(後述する、図3のS51~S59)と、がある。また、スキャンシステム1は、プレスキャンを実行して表示した画像から抽出すべき範囲(以下、抽出範囲という場合がある)を受け付け、最終的なスキャンにおいて受け付けた抽出範囲のスキャンデータSDを出力することができる。ここでいうプレスキャンとは、最終的なスキャンデータSDを出力するためのスキャンに先立って実行されるスキャンである。以下の説明では、プレスキャンで生成するスキャンデータSDを第1スキャンデータSD1と称し、最終的なスキャンにおいて抽出前のスキャンデータSDを第2スキャンデータSD2と称し、第2スキャンデータSD2から抽出したスキャンデータSD、即ち、最終的に出力するスキャンデータSDを第3スキャンデータSD3と称して説明する。なお、第1~第3スキャンデータSD1,SD2,SD3を含むスキャンデータを総称する場合は、スキャンデータSDと称して説明する。
後述するように、本実施形態のスキャナドライバ28は、S37において、第1スキャン処理と第2スキャン処理のどちらを実行するのかを自動で選択する。また、スキャナドライバ28は、スキャンの設定として原稿のサイズの指定を受け付けた場合、即ち、原稿サイズ自動検知スキャン処理を実行しない場合、別のスキャン処理(以下、第3スキャン処理という場合がある)を実行する。第3スキャン処理については、後述する(図7参照)。なお、図2、図3及び図7に示す作動シーケンスの内容は、一例である。
まず、図2に示す第1スキャン処理の作動シーケンスについて説明する。なお、本明細書のシーケンスチャートは、基本的に、プログラムに記述された命令に従ったCPU12、52の処理を示す。即ち、以下の説明における「判断」、「抽出」、「選択」、「決定」、「取得」、「受付」、「制御」「設定」等の処理は、CPU12、52の処理を表している。CPU12による処理は、OS32を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。即ち、CPU12が要求することなくデータを受信するという処理も、「CPU12がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
図2に示す作動シーケンスは、例えば、ユーザがPC10を操作してアプリケーションプログラム26を起動することで開始される。まず、図2のステップ(以下、単に「S」と記載する)11において、PC10の入力インタフェース18を介した操作入力に従って、アプリケーションプログラム26が起動する。例えば、ユーザは、LCD16に表示されたアプリケーションプログラム26のアイコンを入力I/F18のマウスでクリックすることで、スキャナドライバ28を起動させる。アプリケーションプログラム26は、スキャナドライバ28へ、設定画面の表示を要求する(S13)。この設定画面は、スキャン処理に対する設定を受け付けるものである。スキャナドライバ28は、アプリケーションプログラム26からの要求に応じて設定画面をPC10のLCD16に表示する(S14)。スキャナドライバ28は、LCD16に表示した設定画面による受け付けを実行する(S17)。なお、設定画面の表示処理は、スキャナドライバ28に限らず、アプリケーションプログラム26が実行しても良い。例えば、アプリケーションプログラム26は、設定画面に表示する設定値をスキャナドライバ28から取得し、取得した設定値に基づいて設定画面を表示しても良い。
図4は、LCD16に表示される設定画面の一例を示している。図4に示すように、設定画面71には、スキャン条件選択部73、詳細設定ボタン74、プレビュー開始ボタン75、スキャン開始ボタン76、プレビューウィンドウ77、検知情報欄79が表示されている。スキャン条件選択部73には、解像度バー73A、カラー設定バー73B、原稿サイズバー73Cが表示されている。解像度バー73Aは、入力I/F18を介して、スキャン解像度を、例えば、100dpi*100dpi、300dpi*300dpi、600dpi*600dpiなどから選択させるための表示である。
カラー設定バー73Bは、カラー設定を選択させるための表示である。原稿サイズバー73Cは、原稿サイズを選択する操作を受け付けるための表示である。選択可能な原稿サイズは、例えば、ハガキサイズ、B6、B5、A4などの定型サイズである。また、本実施形態では、原稿サイズとして、原稿サイズ自動検知スキャンを実行させる原稿サイズ自動検知を選択することができる。図4では、一例として、解像度として300*300dpi、色数として1677万色カラー、原稿サイズとして原稿サイズ自動検知が選択された状態を示している。
詳細設定ボタン74は、スキャン条件選択部73の項目以外のスキャンの設定を行うためのボタンである。スキャナドライバ28は、詳細設定ボタン74をクリック操作されることに応じて、例えば、後処理の設定を行うための画面(図示略)をLCD16に表示する。ここでいう後処理とは、生成されたスキャンデータSDに対して、例えば、カラー変換、傾き補正、原稿ふち補正などの補正を行う処理である。カラー変換は、スキャンデータSDの色数を変換する処理である。傾き補正は、スキャンデータSDに含まれる原稿の画像の傾きを補正する処理である。原稿ふち補正とは、例えば、スキャンデータSDの周囲に張り込んだ背景画像を、原稿の色に合うように補正する処理である。あるいは、スキャンデータSDの周囲の画像をなめらかな形状に補正する処理である。これにより、スキャンデータSDの外周部分、即ち、原稿のふちを補正することができる。
プレビュー開始ボタン75は、プレスキャンを実行させるためのボタンである。プレスキャンでは、第3スキャンデータSD3は生成されない。スキャン開始ボタン76は、第3スキャンデータの生成を伴う、通常のスキャンを実行させるためのボタンである。スキャナドライバ28は、プレビュー開始ボタン75をクリックされずに、いきなりスキャン開始ボタン76をクリックされた場合、プレスキャンを実行せず、通常のスキャンを実行する。
プレビューウィンドウ77は、プレスキャンで生成した第1スキャンデータSD1が示す画像を表示するウィンドウである。なお、データAが示す画像を表示するという概念を、以降、単に「データAを表示する」と記載する場合もある。アプリケーションプログラム26は、このプレビューウィンドウ77に第1スキャンデータSD1を表示した後、抽出範囲を受け付ける。抽出範囲の受け付け処理については後述する。検知情報欄79は、原稿サイズ自動検知スキャンで検知したスキャンデータSDのサイズや画素数を示す表示欄である。図4は、プレスキャンが実行され、第1スキャンデータSD1が表示されている状態を示している。プレビューウィンドウ77および検知情報欄79は、プレスキャンが実行される前は空欄である。
例えば、図2のS17において、プレビュー開始ボタン75がクリックされる。スキャナドライバ28は、プレビュー開始ボタン75をクリックされると、スキャナ50に対してプレスキャンの開始を指示するスキャン命令を送信する(S23)。
プレスキャンの第1スキャンデータSD1は、最終的な第3スキャンデータSD3を抽出する抽出範囲の選択を受け付けるための画像であり、受付後は不要となる。換言すれば、第1スキャンデータSD1は、LCD16に表示した場合に抽出範囲の選択できる程度の画質があれば良い。そこで、本実施形態のスキャナドライバ28は、具体的には、S23において、設定可能な解像度のうち、最も低い解像度(例えば、100dpi*100dpi)の第1スキャンデータSD1をサイズ自動検知方式で生成することを示すスキャン命令をスキャナ50へ送信する。これにより、第1スキャンデータSD1を処理する時間を短縮でき、第1スキャンデータSD1をより迅速に表示できる。なお、スキャナドライバ28は、プレスキャンにおいて、最も低い解像度以外、例えば、S17の設定画面71で設定された解像度により第1スキャンデータSD1を生成するスキャン命令を送信しても良い。
スキャナ50のプログラム61は、S23で、プレスキャンの開始を指示するスキャン命令を取得すると、読取I/F55のADFにセットされた原稿を搬送し、最も低い解像度で原稿をスキャンする(S25)。プログラム61はスキャンして生成したスキャンデータSDから第1スキャンデータSD1を抽出する(S25)。以下の説明では、スキャナ50の読み取り可能な原稿サイズのうち、最大のサイズがA4サイズであり、スキャナ50に載置された原稿のサイズがハガキサイズである場合について説明する。
図5は、サイズ自動検知方式で生成される第1スキャンデータSD1の状態を示している。まず、プログラム61は、主走査方向において最大サイズのA4サイズでスキャンを行う。主走査方向において最大サイズでスキャンすることで、図5に示すように、主走査方向における原稿スキャンデータ81の両側には、主走査方向付加データ83が発生する。主走査方向付加データ83は、A4サイズとして足りない部分に対応しており、例えば、スキャナ50の原稿をスキャンする際に、原稿を背面側から抑える原稿カバーをスキャンした画像である。例えば、原稿カバーの内側(原稿側)には、グレー色が塗られている。
また、スキャナ50の原稿センサ59は、読取I/F55のADFのどの位置まで原稿が挿入されているかを検知する。プログラム61は、原稿センサ59により検知した位置を含むよう、読取I/F55による、副走査方向の読み取り長さを決定する。原稿センサ59の位置検知の誤差によって、副走査方向における原稿スキャンデータ81の後端には、後端誤差データ85が発生する。後端誤差データ85は、原稿センサ59の位置検知に誤差が生じることによって、原稿の後端から副走査方向に沿って原稿カバーをスキャンした画像である。後端誤差データ85の副走査方向に沿った長さL1は、例えば、3ミリ~5ミリ程度である。なお、後端誤差データ85の発生原因は、原稿センサ59の誤差に限らず、例えば、原稿センサ59による読み取り長さの決定に一定の余裕を持たせることでも発生する。読取I/F55が、主走査方向は最大のA4で、副走査方向は決定した長さまで原稿を読み取ることで、プログラム61は、主走査方向付加データ83及び後端誤差データ85を有するスキャンデータ(以下、中間スキャンデータという場合がある)SD5を出力する。
次に、プログラム61は、図5に示す中間スキャンデータSD5に対する画像処理を行い、図5の下図に示す第1スキャンデータSD1を生成する(S25)。プログラム61は、例えば、色の識別によって主走査方向付加データ83を検知して削除する。プログラム61は、原稿カバーの内側の色である、グレー色に該当し、且つ主走査方向における中間スキャンデータSD5の外側部分に配置された画像を、主走査方向付加データ83の画像として検知する。プログラム61は、中間スキャンデータSD5のうち検知した主走査方向付加データ83を除く部分を、第1スキャンデータSD1として抽出する画像処理を行う(S25、図5参照)。第1スキャンデータSD1の画像形式は、特に限定されないが、例えば、ビットマップ形式の画像データである。
図2に示すように、プログラム61は、生成した第1スキャンデータSD1を、ネットワークI/F51(図1参照)を介してスキャナドライバ28へ送信する(S27)。プログラム61は、例えば、第1スキャンデータSD1を圧縮してデータ量を少なくしてスキャナドライバ28へ送信する。なお、第1スキャンデータSD1の圧縮方式は、特に限定されない。また、プログラム61は、非圧縮で第1スキャンデータSD1をスキャナドライバ28へ送信しても良い。
スキャナドライバ28は、プログラム61から取得した第1スキャンデータSD1をデコードし(S29)、デコードした第1スキャンデータSD1を表示する命令をアプリケーションプログラム26に対して行う(S31)。図4に示すように、アプリケーションプログラム26は、設定画面71のプレビューウィンドウ77に第1スキャンデータSD1を表示する(S33)。
アプリケーションプログラム26は、プレビューウィンドウ77において抽出範囲を受け付ける。図4のプレビューウィンドウ77において破線で示す枠は、抽出範囲87を示している。アプリケーションプログラム26は、例えば、プレビューウィンドウ77において入力I/F18のマウスをドラッグした範囲を抽出範囲87として受け付ける。ユーザは、例えば、読取I/F55のADFで読み込みの終了した原稿を再度ADFの読み込みトレイにセットした後、設定画面71のスキャン開始ボタン76をクリックする。アプリケーションプログラム26は、抽出範囲87を選択され、読取I/F55のADFに原稿をセットされた状態でスキャン開始ボタン76をクリックする操作を受け付けると、最終的なスキャンの命令を受け付ける(S33)。アプリケーションプログラム26は、選択された抽出範囲87の情報やスキャン条件選択部73の設定情報を、例えば、データ記憶領域34に記憶する(S33)。
アプリケーションプログラム26は、抽出範囲87やスキャン条件選択部73の設定情報を含むスキャン命令をスキャナドライバ28へ送信する(S35)。スキャナドライバ28は、抽出範囲87を含むスキャン命令を取得すると(S35)、第1又は第2スキャン処理のいずれを実行するのか判断する(S37)。なお、スキャナドライバ28は、抽出範囲87を設定されていないスキャン命令を取得すると、抽出範囲87を抽出しないスキャン命令をスキャナ50へ送信する。従って、S33で抽出範囲87を選択しない場合、あるいは、プレスキャンを実行せずにいきなりスキャン開始ボタン76をクリックした場合、スキャナドライバ28は、抽出範囲87を抽出せずに原稿の全体をスキャンする通常のスキャン命令をスキャナ50へ送信する。
S37において、スキャナドライバ28は、抽出範囲87の設定された位置(条件情報の一例)に基づいて、図2の第1スキャン処理、又は図3の第2スキャン処理を選択する。上記したように、サイズ自動検知方式では、原稿センサ59の誤差により原稿の後端に後端誤差データ85が付加される(図5参照)。例えば、図5の下図の破線で示すように、後端誤差データ85を含む範囲を抽出範囲87として選択された場合、最終的な第3スキャンデータSD3には、後端誤差データ85が不要なデータとして含まれることとなる。このような不要なデータが第3スキャンデータSD3に含まれるのを抑制するため、本実施形態のスキャナドライバ28は、第1スキャンデータSD1のうち、副走査方向の後端から所定距離の領域を抽出範囲87が含んでいない場合には、S37において第1スキャン処理を選択する(S37:YES)。所定距離としては、原稿センサ59の誤差によって生じる長さL1を採用することができる。また、スキャナドライバ28は、副走査方向の後端から所定距離の領域を抽出範囲87が含んでいる場合には、S37において第2スキャン処理(図3参照)を選択する(S37:NO)。これにより、後述するオーバースキャン方式で生成した第2スキャンデータSD2を元に第3スキャンデータSD3を生成することで、第3スキャンデータSD3に後端誤差データ85が含まれるのを抑制できる。
なお、S37において、スキャナドライバ28は、抽出範囲87以外の条件情報に基づいて、第1スキャン処理又は第2スキャン処理を選択しても良い。第2スキャン処理は、後述するように実際の原稿サイズよりも大きな第2スキャンデータSD2を処理するため、第1スキャン処理に比べてメモリ14,54の使用量の増大やCPU12,52の処理負荷の増大を招く可能性がある。このため、第2スキャン処理のレスポンスタイムは、第1スキャン処理に比べて長くなる。ここでいうレスポンスタイムとは、例えば、S33において、スキャン開始ボタン76をクリックされ最終的な第3スキャンデータSD3の生成の命令を受け付けてから、S47の第3スキャンデータSD3の出力を完了するまでに必要な時間である。
また、例えば、高解像度を設定されたスキャン処理の場合、読取I/F55により原稿をスキャンするのに必要な時間が長くなる可能性がある。また、例えば、PC10の処理性能が低い場合、PC10におけるスキャンデータSDの処理時間が長くなる可能性がある。また、例えば、PC10とスキャナ50とを接続する通信回線の速度が遅い場合、スキャンデータSDの送信時間が長くなる可能性がある。従って、このような高解像度、低スペック、低速通信回線の場合、スキャンデータSDの処理時間(画像処理の時間など)が長くなる。そこで、本実施形態のスキャナドライバ28は、S37においてスキャンデータSDの処理時間が短くなる判断した場合(第1処理条件の)は、レスポンスタイムが比較的に短い第1スキャン処理を選択する。これにより、レスポンスタイムをより短縮することができる。
一方で、スキャナドライバ28は、S37においてスキャンデータSDの処理時間が長くなると判断した場合(第2処理条件の一例)は、レスポンスタイムが比較的に長い第2スキャン処理を選択する。これにより、例えば、ADFで複数の原稿を読み込む場合など、前の原稿のスキャンに時間が掛かっている間に、スキャン済みの原稿に対する第2スキャン処理を完了させることができる。即ち、スキャンデータSDの処理時間を利用して、処理時間の長い第2スキャン処理を実行できる。
S37において、スキャナドライバ28は、例えば、予め設定された所定の解像度よりも低い解像度の設定情報を取得した場合、第1スキャン処理を選択しても良い。スキャナドライバ28は、例えば、図4の設定画面71の解像度バー73Aにおいて所定の解像度(例えば、300*300dpi)以下の解像度が選択された場合に、第1スキャン処理を選択しても良い。同様に、スキャナドライバ28は、例えば、PC10のCPU12の処理能力が所定の処理能力以下であった場合、第1スキャン処理を選択しても良い。スキャナドライバ28は、CPU12のコア数やクロック周波数を取得し、取得した情報に基づいてCPU12の処理能力を判断しても良い。また、スキャナドライバ28は、PC10とスキャナ50と接続する通信回線の通信速度が所定の速度以下の場合、第1スキャン処理を選択しても良い。あるいは、スキャナドライバ28は、通信速度を判断せずに、有線通信であれば第1スキャン処理を選択し、無線通信であれば第2スキャン処理を選択しても良い。即ち、通信方式で、第1又は第2スキャン処理を選択しも良い。なお、上記した第1スキャン処理及び第2スキャン処理を選択する条件情報は、一例である。例えば、スキャナドライバ28は、カラーのスキャンかモノクロのスキャンかによって第1又は第2スキャン処理を選択しても良い。
また、スキャナドライバ28は、例えば、設定画面71の詳細設定ボタン74(図4参照)で設定した後処理の内容に基づいて第1又は第2スキャン処理を選択しても良い。例えば、S33において第3スキャンデータSD3に対するカラー変換、原稿ふち補正、傾き補正などの後処理が設定された場合、第3スキャンデータSD3の出力までに掛かる時間、即ち、レスポンスタイムが長くなる。従って、スキャナドライバ28は、このような後処理の処理時間が長い場合に、第2スキャン処理を選択しても良い。
まず、S37において第1スキャン処理を選択した場合について、図2を用いて説明する。スキャナドライバ28は、S37において第1スキャン処理を選択すると、スキャン条件選択部73の設定情報に従ってサイズ自動検知方式を実行するスキャン命令をスキャナ50に送信する(S39)。スキャナ50のプログラム61は、スキャナドライバ28からスキャン命令を取得すると、スキャン条件選択部73の設定情報(例えば、解像度が300dpi*300dpi)に従って第2スキャンデータSD2を生成する(S41)。プログラム61は、上記したS25と同様に、サイズ自動検知方式により原稿サイズを検知し第2スキャンデータSD2を生成する(図5参照)。この第2スキャンデータSD2は、上記した最低解像度で生成した中間スキャンデータSD5とは異なり、図4の解像度バー73Aで設定された解像度でスキャンしたデータである。
プログラム61は、生成した第2スキャンデータSD2を圧縮し、圧縮した第2スキャンデータSD2をスキャナドライバ28へ送信する(S43)。スキャナドライバ28は、S43でプログラム61から取得した第2スキャンデータSD2の中から、抽出範囲87に相当するデータのみをデコードする(S45)。抽出範囲87を抽出する方法は特に限定されない。例えば、プログラム61は、主走査方向及び副走査方向の座標(各列や行の情報)を第2スキャンデータSD2に付加しても良い。そして、スキャナドライバ28は、この座標の情報と、S33で受け付けた抽出範囲87の設定情報とに基づいて、抽出範囲87に相当するデータのみをデコードし、抽出範囲87のみを抽出しても良い。なお、スキャナドライバ28は、第2スキャンデータSD2の一部のみをデコードせずに、第2スキャンデータSD2の全体をデコードし、デコードした全体の第2スキャンデータSD2から抽出範囲87を抽出しても良い。
スキャナドライバ28は、抽出範囲87のみをデコードしたデータを第3スキャンデータSD3としてアプリケーションプログラム26へ送信する(S47)。このため、図2に示す第1スキャン処理において、スキャナドライバ28は、抽出範囲87のみをデコードして、抽出範囲87に相当する第3スキャンデータSD3を出力する。これにより、後述する図3の第2スキャン処理に比べて、メモリ14の使用量やCPU12の処理負荷の軽減を図ることができる。
アプリケーションプログラム26は、S47においてスキャナドライバ28から第3スキャンデータSD3を取得すると、第3スキャンデータSD3をLCD16へ表示する。あるいは、アプリケーションプログラム26は、第3スキャンデータSD3をメモリ14へ保存する処理等を実行する(S49)。これにより、原稿サイズの自動検知を実行しつつ、抽出範囲87を示す第3スキャンデータSD3の表示等を行うことができる。
なお、上記した説明では、1つ原稿に対応する第3スキャンデータSD3を出力する処理の流れについて説明したが、複数の原稿のそれぞれの第3スキャンデータSD3を出力する場合についても同様に実行できる。例えば、スキャナドライバ28は、S23においてADFにセットされた複数の原稿についてサイズ自動検知方式を実行する命令を送信する。スキャナ50は、複数の原稿を順次スキャンしながらS25、S27の処理を実行する。スキャナドライバ28は、スキャナ50から第1スキャンデータSD1を取得するごとにS29~S33の処理を実行する。ユーザは、S33で抽出範囲87を設定し、原稿をADFにセットしつつ、スキャン開始ボタン76を選択する。これにより、複数の原稿の1つ1つについて第3スキャンデータSD3を出力できる。
次に、第2スキャン処理について図3を用いて説明する。なお、以下の説明では、上記した図2の第1スキャン処理と同様の内容については、同一符号を付し、その説明を適宜省略する。上記したように、スキャナドライバ28は、S37において第1スキャン処理又は第2スキャン処理を選択する。このため、図3は、図2のS37で第2スキャン処理を選択された後のS51以降の処理内容を示している。S37において、スキャナドライバ28は、例えば、副走査方向の後端から所定距離の領域を抽出範囲87が含んでいると判断すると、第2スキャン処理を選択する(S37:NO)。
S51において、スキャナドライバ28は、スキャン条件選択部73の設定情報に従ってオーバースキャン方式を実行するスキャン命令をスキャナ50に送信する。スキャナ50のプログラム61は、スキャナドライバ28からスキャン命令を取得すると、スキャン条件選択部73の設定情報に従ってオーバースキャン方式を実行し、第2スキャンデータSD2を生成する(S53)。図6は、オーバースキャン方式で生成される第2スキャンデータSD2の状態を示している。プログラム61は、図6に示すように、ハガキサイズの原稿に相当する原稿スキャンデータ81を、主走査方向及び副走査方向において最大サイズのA4サイズでスキャンする。従って、プログラム61は、第1スキャン処理のサイズ自動検知スキャン方式とは異なり、原稿センサ59による副走査方向のサイズ検知を実行せずに、副走査方向においても最大サイズでスキャンする。主走査方向において最大サイズでスキャンすることで、図6に示すように、主走査方向における原稿スキャンデータ81の両側には、主走査方向付加データ83が発生する。主走査方向付加データ83は、A4サイズとして足りない部分に対応している。
また、副走査方向においても最大サイズでスキャンすることで、副走査方向における原稿スキャンデータ81の両側には、副走査方向付加データ89が発生する。副走査方向付加データ89は、主走査方向付加データ83と同様に、A4サイズとして足りない部分に対応している。副走査方向における原稿の前端より手前の位置からスキャンを開始し原稿カバーを読み取ることで、原稿スキャンデータ81の前端にも副走査方向付加データ89が発生する。また、読み込みを開始した位置からA4サイズ(最大サイズ)の位置までスキャンすることで、原稿の後端に副走査方向付加データ89が発生する。
プログラム61は、主走査方向付加データ83及び副走査方向付加データ89を有する第2スキャンデータSD2を生成し(S53)、生成した第2スキャンデータSD2を圧縮してスキャナドライバ28へ送信する(S55)。スキャナドライバ28は、スキャナ50から取得した第2スキャンデータSD2をデコードし(S57)、原稿のサイズを検知して第2スキャンデータSD2から原稿スキャンデータ81を抽出する(S59)。スキャナドライバ28は、例えば、色の識別によって主走査方向付加データ83及び副走査方向付加データ89を検知して削除する。プログラム61は、原稿カバーの内側の色である、グレー色に該当し、且つ第2スキャンデータSD2の主走査方向における外側部分に配置された画像を、主走査方向付加データ83の画像として検知する。同様に、スキャナドライバ28は、原稿カバーの内側の色に該当し、且つ第2スキャンデータSD2の副走査方向における外側部分に配置された画像を、副走査方向付加データ89として検知する。スキャナドライバ28は、第2スキャンデータSD2のうち検知した主走査方向付加データ83及び副走査方向付加データ89を除く部分(図6の下方に示す原稿スキャンデータ81)を抽出する(S59)。
次に、スキャナドライバ28は、生成した原稿スキャンデータ81(処理後の第2スキャンデータSD2)の中から、抽出範囲87に相当するデータを抽出し、第3スキャンデータSD3を生成する(S59)。例えば、スキャナドライバ28は、第2スキャンデータSD2に対して主走査方向及び副走査方向に沿った座標を設定し、S33で受け付けた抽出範囲87の設定情報(主走査方向、副走査方向における位置)に基づいて抽出範囲87を抽出する(S59)。
スキャナドライバ28は、抽出したデータを第3スキャンデータSD3としてアプリケーションプログラム26へ送信する(S47)。アプリケーションプログラム26は、S47においてスキャナドライバ28から第3スキャンデータSD3を取得すると、第3スキャンデータSD3の表示処理や保存処理等を行う(S49)。これにより、原稿サイズの自動検知を実行しつつ、抽出範囲87を示す第3スキャンデータSD3の表示等を行うことができる。
上記したように、図3に示す第2スキャン処理において、スキャナドライバ28は、2回目の最終的なスキャン処理でオーバースキャン方式を実行し、第2スキャンデータSD2から抽出範囲87を抽出する画像処理を行う。第2スキャン処理では、スキャナ50の原稿センサ59による原稿サイズの検知を実行しない。また、第2スキャン処理では、副走査方向においても副走査方向付加データ89を付加し、画像処理によって後から削除する。これにより、図5に示す後端誤差データ85が付加されていない原稿スキャンデータ81を生成できる。そして、この後端誤差データ85のない原稿スキャンデータ81を対象として抽出範囲87の抽出を行うことができる。これにより、仮に、S33において後端誤差データ85を含む領域を抽出範囲87として設定された場合であっても、後端誤差データ85を含まず、且つ原稿の後端の位置に合わせて抽出範囲87を抽出した第3スキャンデータSD3を生成できる。
一方で、第2スキャン処理では、原稿サイズよりも大きな第2スキャンデータSD2を生成しスキャナ50からPC10へ送信する。また、スキャナドライバ28は、データ量の大きい第2スキャンデータSD2の全体をデコードし、デコードした全体の第2スキャンデータSD2から原稿スキャンデータ81を抽出する。そして、抽出した原稿スキャンデータ81から抽出範囲87を抽出する。このため、第2スキャン処理は、PC10とスキャナ50との間で送信するデータ量、CPU12による処理の負荷、メモリ14の使用量が第1スキャン処理に比べて増大する可能性がある。そこで、本実施形態では、S37において後端誤差データ85を含む領域を抽出範囲87として設定されない限り、第1スキャン処理を実行し、サイズ自動検知方式により第3スキャンデータSD3を生成する。これにより、レスポンスタイムの短縮等を図ることができる。
<第3スキャン処理>
次に、原稿サイズの指定を受け付けた場合に実行する第3スキャン処理について図7を参照して説明する。第3スキャン処理では、指定された原稿サイズを用いてスキャン処理を実行するため、原稿サイズの自動検知を実行しない。以下の説明では、上記した第1スキャン処理及び第2スキャン処理と同様の処理内容については同一符号を付し、その説明を適宜省略する。
まず、図7に示すように、図2の第1スキャン処理と同様にS11~S14を実行する。S17において、スキャナドライバ28は、設定画面71の原稿サイズバー73Cにおいて原稿サイズの指定を受け付ける(S17)。例えば、原稿サイズバー73Cでハガキサイズを選択される。S17において、スキャナドライバ28は、設定画面71のプレビュー開始ボタン75をクリックされると、原稿サイズとしてハガキサイズを指定したプレスキャンのスキャン命令をスキャナ50へ送信する(S63)。スキャナドライバ28は、解像度として最も低い解像度を指定し、原稿サイズとしてハガキサイズを指定したスキャン命令をスキャナ50に送信する(S63)。
スキャナ50のプログラム61は、S63でサイズ指定のスキャン命令を取得すると、主走査方向のスキャンの幅をハガキサイズに設定し、且つ副走査方向のスキャンの高さをハガキサイズに設定してスキャンを実行する(S65)。これにより、プログラム61は、第1スキャンデータSD1を生成する。なお、サイズ指定のスキャンにおいて読取I/F55の誤差が生じると、図5の下図と同様に第1スキャンデータSD1には、後端誤差データ85が発生する。
プログラム61は、生成した第1スキャンデータSD1をスキャナドライバ28へ送信する(S27)。スキャナドライバ28及びアプリケーションプログラム26は、第1スキャン処理と同様に、S29~S33の処理を実行する。S33において、アプリケーションプログラム26は、抽出範囲87の設定と、設定画面71の原稿サイズバー73Cによりハガキサイズの指定を受付ける。アプリケーションプログラム26は、スキャン開始ボタン76をクリックされるのに応じて、抽出範囲87や指定された原稿サイズの設定情報を含むスキャン命令をスキャナドライバ28へ送信する(S67)。
スキャナドライバ28は、S67でスキャン命令を取得すると、指定サイズや抽出範囲87の設定情報を含むスキャン命令をプログラム61へ送信する(S69)。従って、第3スキャン処理において、スキャナドライバ28は、図2や図3に示すS37の判断処理を実行せず、S67で取得した指定サイズの設定情報や抽出範囲87の設定情報(座標、幅、高さなど)をプログラム61へ送信する(S69)。なお、スキャナドライバ28は、第1スキャン処理及び第2スキャン処理と同様に、抽出範囲87の位置等に基づいて、スキャン方式を変更しても良い。具体的には、抽出範囲87に後端誤差データ85が含まれているような場合には、スキャナドライバ28は、オーバースキャン方式のスキャン命令をプログラム61へ送信しても良い。
スキャナ50のプログラム61は、S69のスキャン命令を取得すると、S65と同様に指定されたハガキサイズによるスキャンを実行する(S71)。この際、プログラム61は、解像度としてS33で設定された解像度でスキャンを実行する。また、プログラム61は、S69でスキャナドライバ28から取得した抽出範囲87の設定情報に基づいて、抽出範囲87の抽出を行う(S71)。例えば、プログラム61は、主走査方向及び副走査方向において、S33で指定された抽出範囲87に相当する位置のみをスキャンしても良い。これにより、抽出範囲87に相当する第2スキャンデータSD2を生成することができる。あるいは、プログラム61は、S65と同様に、指定されたサイズに基づいて原稿の全体をスキャンし、スキャンして生成した原稿スキャンデータ81から抽出範囲87の抽出を実行しても良い。
従って、第3スキャン処理では、プログラム61が、抽出範囲87の抽出処理までを実行する。これは、第1及び第2スキャン処理において、原稿サイズの検知処理と、抽出範囲87の抽出処理との両方を、スキャナ50に実行させることは、スキャナ50の処理能力やコストの面から考えて難しいためである。なお、スキャナ50の処理能力が高い場合、第1及び第2スキャン処理において、スキャナ50側で抽出範囲87の抽出まで実行しても良い。
プログラム61は、抽出範囲87に相当する第2スキャンデータSD2を圧縮してスキャナドライバ28へ送信する(S43)。スキャナドライバ28は、S43で取得した第2スキャンデータSD2をデコードし、デコードしたデータを第3スキャンデータSD3としてアプリケーションプログラム26へ送信する(S47)。このため、図7に示す第3スキャン処理において、スキャナドライバ28は、第2スキャンデータSD2のデコードのみを実行すれば、第3スキャンデータSD3の出力を実行することができる。アプリケーションプログラム26は、取得した第3スキャンデータSD3を表示等する(S49)。このようにして、サイズを指定された場合の第3スキャンデータSD3の表示等を行うことができる。
因みに、PC10、スキャナ50は、情報処理装置の一例である。CPU12,52は、コンピュータ、コントローラの一例である。LCD16,58は、ディスプレイの一例である。入力I/F18,57は、ユーザインタフェースの一例である。アプリケーションプログラム26、スキャナドライバ28、プログラム61は、制御プログラムの一例である。サイズ自動検知スキャン方式は、第1スキャン方式の一例である。オーバースキャン方式は、第2スキャン方式の一例である。
<実施例の効果>
上記した実施形態によれば、以下の効果を奏する。
本実施形態のスキャナドライバ28は、原稿サイズ自動検知スキャンの設定を受け付けた状態で(S17)、スキャナ50から第1スキャンデータSD1を取得し(S27)、第1スキャンデータSD1が示す画像をLCD16に表示させる(S31)。また、スキャナドライバ28は、表示した第1スキャンデータSD1の画像における抽出範囲87を受け付ける(S35)。スキャナドライバ28は、スキャナ50へ第2スキャンデータSD2のスキャン命令を送信し(S39,S51)、スキャナ50から取得した第2スキャンデータSD2のうち、抽出範囲87の画像を示すデータを第3スキャンデータSD3として抽出する(S45,S59)。スキャナドライバ28は、抽出した第3スキャンデータSD3を出力する(S47)。
これによれば、第1スキャンデータSD1の画像を事前に表示し、抽出範囲87を受け付ける。第2スキャンデータSD2は、原稿のサイズを自動で検知した処理後のデータや、自動検知に用いる処理前のデータなど、原稿サイズ自動検知スキャンの設定に対応するデータとして用いられる。そして、第2スキャンデータSD2のうち、受け付けた抽出範囲87のデータを第3スキャンデータSD3として抽出し出力する。このため、原稿のサイズを自動で検知する命令を受け付けた場合であっても、原稿のサイズを自動で検知しつつ、スキャンデータSDから指定された抽出範囲87を抽出できる。
また、サイズ自動検知スキャン方式(第1スキャン方式の一例)は、スキャナ50が備える原稿センサ59による原稿のサイズの検知と、検知されたサイズの原稿を示す第2スキャンデータSD2の生成と、をスキャナ50において行う方式である。これによれば、スキャナ50が、原稿センサ59により原稿サイズを自動で検知する。このため、スキャナドライバ28は、サイズの検知処理が不要となり、検知後の第2スキャンデータSD2を対象として抽出範囲87の抽出を実行できる。
また、オーバースキャン方式(第2スキャン方式の一例)は、原稿の画像を含み且つ原稿のサイズよりも大きな範囲の画像を示す第2スキャンデータSD2の生成をスキャナ50において行う方式である。スキャナドライバ28は、第2スキャンデータSD2から原稿のサイズを検知し、原稿の画像を抽出した後に、抽出したデータから第3スキャンデータSD3を抽出する。これによれば、スキャナドライバ28により原稿サイズを自動で検知する。このため、スキャナ50側の処理負担を軽減することができる。
また、スキャナドライバ28は、スキャン命令を送信する(S39,S51)以前のS37においてスキャンの条件を示す条件情報(抽出範囲87の位置など)に基づいて、サイズ自動検知スキャン又はオーバースキャン方式を選択する。これによれば、条件情報に基づいて、サイズ自動検知スキャン方式を実行すべきか、あるいはオーバースキャン方式を実行すべきかを選択できる。
また、スキャナドライバ28は、抽出範囲87の情報を条件情報として用い、抽出範囲87が、スキャンの搬送方向における原稿の後端から所定の範囲を含まない場合にはサイズ自動検知スキャンを選択し、抽出範囲87が所定の範囲を含む場合にはオーバースキャン方式を選択する(図5参照)。
スキャナ50の原稿センサ59は、例えば、読取I/F55のADFによる原稿の自動搬送と検知タイミングのずれによって、原稿の後端の検知位置に誤差が生じる可能性がある。その結果、生成された第2スキャンデータSD2の後端には、原稿を背面側から抑える原稿カバーの後端誤差データ85が入り込む虞がある。これに対し、第2スキャン処理では、オーバースキャン方式により原稿サイズよりも大きな第2スキャンデータSD2を生成しておき、そこからサイズを自動検知したデータを用いて抽出範囲87の抽出、即ち、第3スキャンデータSD3の生成を実行する。このため、第2スキャン処理は、第1スキャン処理に比べて原稿の後端に後端誤差データ85が入り込む可能性が低い。一方で、第2スキャン処理は、実際の原稿サイズよりも大きなスキャンデータSDを処理するため、第1スキャン処理に比べてメモリ14の使用量の増大やCPU12の処理負荷の増大を招く可能性がある。そこで、抽出範囲87が、原稿の後端から所定の範囲を含まない場合には、サイズ自動検知スキャン方式のスキャンを実行する第1スキャン処理を選択することで、メモリ14の使用量やCPU12の処理負荷の増大を抑制できる。一方で、抽出範囲87が所定の範囲を含む場合には、オーバースキャン方式のスキャンを実行する第2スキャン処理を選択することで、第3スキャンデータSD3に後端誤差データ85などの不要なデータが含まれるのを抑制できる。
また、スキャナドライバ28は、S17で入力I/F18により設定された解像度や後処理(条件情報の一例)を、スキャン方式を選択する条件情報として用いても良い。これによれば、入力I/F18を介して条件情報を受け付けることで、サイズ自動検知スキャン方式を実行すべきか、あるいはオーバースキャン方式を実行すべきかを入力I/F18で受け付けることができる。
また、スキャナドライバ28は、条件情報が第1処理条件を示す場合にはサイズ自動検知スキャン方式を選択し、条件情報が第2処理条件を示す場合にはオーバースキャン方式を選択しても良い。ここでいう第2処理条件は、第2処理条件で所定のスキャンデータSDを処理した場合にかかる処理時間が、第1処理条件で所定のスキャンデータSDを処理した場合にかかる処理時間よりも長くなる処理条件である。
高解像度のスキャン処理の場合、読取I/F55により原稿を読み取るのに必要な時間(スキャンデータSDの処理時間)が長くなる。また、PC10の処理性能が低い場合、抽出処理など(スキャンデータSDの処理時間)が長くなる。また、PC10とスキャナ50とを接続する通信回線の速度が遅い場合、スキャンデータSDの送信時間(スキャンデータSDの処理時間)が長くなる。そこで、スキャンデータSDを処理した場合にかかる処理時間がより短い第1処理条件(低解像度、CPU12の処理能力が高い、高速通信回線など)の場合は、画像処理に必要な時間が比較的短い第1スキャン処理のサイズ自動検知スキャン方式を選択する。これにより、第3スキャンデータSD3を出力するまでのレスポンスタイムをより短縮することができる。また、スキャンデータSDの処理時間がより長い第2処理条件(高解像度、CPU12の処理能力が低い、低速通信回線など)の場合は、画像処理に必要な時間が比較的に長い第2スキャン処理のオーバースキャン方式を選択する。これにより、例えば、複数の原稿をADFで読み込む場合など、前の原稿のスキャンに時間が掛かっている間に、スキャン済みの原稿に対する第2スキャン処理を完了させることができる。即ち、スキャンデータSDの処理時間を利用して、処理時間の長い第2スキャン処理を実行できる。
また、スキャナドライバ28は、条件情報が第1解像度でのスキャンを示す場合にはサイズ自動検知スキャン方式を選択し、条件情報が第2解像度でのスキャンを示す場合にはオーバースキャン方式を選択しても良い。ここでいう第2解像度は、第1解像度よりも高い解像度である。これによれば、スキャンの解像度で変動するスキャンデータSDの処理時間に合わせて適切なスキャン方式を選択できる。
また、スキャナドライバ28は、原稿のサイズの指定を受け付けた場合(図7のS17)、第1スキャン命令を送信する。ここでいう第1スキャン命令は、指定された原稿のサイズと、抽出範囲87とをスキャン命令としてスキャナ50へ送信し、抽出範囲87の画像のみを示す第2スキャンデータSD2をスキャナ50へ生成させる命令である。原稿サイズを指定された場合、原稿サイズの検知処理が不要となり、指定された原稿サイズに基づいて処理ができるため、スキャン処理の負担が低減する。このため、PC10等に比べて処理能力の低いスキャナ50でも、指定された原稿サイズに基づいて抽出範囲87の画像のみを示す第2スキャンデータSD2を生成することが可能となる。
なお、S27,S29,S31,S33を実行するCPU12は、表示手段の一例である。S33を実行するCPU12は、記憶手段の一例である。S37,S39,S51を実行するCPU12は、命令手段の一例である。S45,S59を実行するCPU12は、抽出手段の一例である。S47を実行するCPU12は、出力手段の一例である。
また、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。
具体的には、例えば、上記実施形態では、サイズ自動検知方式において、PC10のスキャナドライバ28が、第2スキャンデータSD2から抽出範囲87の抽出(一部デコード)を実行したが(S45)、スキャナ50のプログラム61が抽出範囲87の抽出まで実行しても良い。同様に、オーバースキャン方式において、スキャナドライバ28が、抽出範囲87の抽出を実行したが、プログラム61が抽出範囲87の抽出までを実行しても良い。この場合、スキャナ50は、本願の情報処理装置の一例である。また、プログラム61は、本願の制御プログラムの一例である。
また、上記実施形態では、S33の第1スキャンデータSD1の表示処理や受付けた抽出範囲87の抽出情報をメモリ14へ記憶する処理をアプリケーションプログラム26が実行したが、スキャナドライバ28が実行しても良い。
また、上記実施形態では、第1スキャン処理及び第2スキャン処理は、プレスキャンにおいてサイズ自動検知方式を実行したが、これに限らない。プレスキャンとしてオーバースキャン方式を実行しても良い。また、スキャナドライバ28は、プレスキャンにおいて、S37と同様に、S17で設定された解像度、PC10の処理能力、通信回線の速度などに基づいて、サイズ自動検知方式かオーバースキャン方式かを選択してプレスキャンを実行しても良い。例えば、解像度が低い場合、スキャナドライバ28は、レスポンスタイムの短いサイズ自動検知方式によりプレスキャンを実行しても良い。
また、上記実施形態では、スキャナドライバ28は、自動で第1スキャン処理か第2スキャン処理かを選択したが、設定を受け付けて実行しても良い。例えば、図8に示すように、スキャナドライバ28は、サイズ自動検知方式又はオーバースキャン方式を選択する方式選択欄91を設定画面71に表示しても良い。スキャナドライバ28は、方式選択欄91に表示したサイズ自動検知方式又はオーバースキャン方式のチェックボックにチェックを入れられたことに応じて、チェックを入れられた方式を実行するスキャン命令をスキャナ50へ送信しても良い。これにより、プレスキャンや最終的なスキャンの方式を選択できる。また、方式の選択は、設定画面71のようなユーザインタフェースを用いた方法に限らず、例えば、メモリ14に記憶された設定ファイルを用いても良い。スキャナドライバ28は、設定ファイルに書き込まれた方式に基づいて、実行する方式を選択しても良い。
また、上記実施形態では、CPU12によってPC10側の処理が実行される例を説明したが、これに限らない。PC10は、デコード処理などを、CPU12に限らず、ASICや他の論理集積回路により実行しても良いし、CPU等やASIC、他の論理集積回路を協働させて実行しても良い。