(57)【要約】      （修正有）【課題】各種の処理の実行タイミングを設定することで、バーコードデータの検出処理を適切に実行する制御プログラム、情報処理装置及びスキャンシステムを提供する。【解決手段】スキャナドライバは、スキャナから取得した原稿スキャンデータを対象に、第１群画像処理を実行（Ｓ２１５）し、第１群画像処理を実行した原稿スキャンデータからバーコードデータを検出する（Ｓ２１９）。また、スキャナドライバは、原稿スキャンデータに基づいて、ユーザインタフェースによって特定した第２画像処理を実行する（Ｓ２２９）。スキャナドライバは、検出したバーコード情報と、第２画像処理を実行した原稿スキャンデータを出力する。【選択図】図７
2019047253.tif 000002
【特許請求の範囲】
【請求項１】
ユーザインタフェースを備えた情報処理装置のコンピュータが読み取り可能な制御プログラムであって、
前記コンピュータを、
前記ユーザインタフェースを介して第１操作入力を受け付ける第１受付手段と、
前記第１受付手段が受け付けた前記第１操作入力に基づいて、複数の画像処理のうちから、対象画像処理を特定する第１特定手段と、
スキャンデータを取得する第１取得手段と、
前記第１取得手段により取得された前記スキャンデータに、第１画像処理を実行する第１実行手段として機能させ、前記第１画像処理は、前記複数の画像処理のうち、予め定められた第１群の画像処理であり、
前記コンピュータを、
前記第１実行手段により前記第１画像処理が実行された前記スキャンデータから、バーコードを示す画像データであるバーコードデータを検出する検出手段と、
前記第１取得手段により取得された前記スキャンデータに基づいて、第２画像処理を実行する第２実行手段として機能させ、前記第２画像処理は、前記第１特定手段が特定した前記対象画像処理に含まれる画像処理であり、
前記コンピュータを、
前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを出力する出力手段と、
して機能させることを特徴とする制御プログラム。
【請求項２】
前記第１実行手段は、
前記第１画像処理として、前記対象画像処理に含まれ、且つ前記第１群の画像処理に含まれる処理を実行し、
前記第２実行手段は、
前記第２画像処理として、前記対象画像処理に含まれ、且つ前記第１群の画像処理とは異なる処理を実行することを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記第２実行手段は、
前記第１実行手段により前記第１画像処理が実行された前記スキャンデータに、前記第２画像処理を実行することを特徴とする請求項１又は請求項２に記載の制御プログラム。
【請求項４】
前記第１実行手段は、
前記第１画像処理として、前記第１群の画像処理のうち実行可能な処理の全てを実行し、
前記第２実行手段は、
前記第２画像処理として、前記対象画像処理の全てを実行することを特徴とする請求項１に記載の制御プログラム。
【請求項５】
前記第２実行手段は、
前記第１取得手段により取得された前記スキャンデータに、前記第２画像処理を実行することを特徴とする請求項１に記載の制御プログラム。
【請求項６】
前記第１画像処理は、
前記検出手段による前記バーコードデータを検出する処理の精度を上げる処理であることを特徴とする請求項１乃至請求項５の何れか１項に記載の制御プログラム。
【請求項７】
前記第１実行手段は、
前記第１画像処理として、パンチ穴除去処理、地色・裏移り色除去処理、カラートーン調整処理、カラードロップアウト処理、エッジ強調処理、モノクロ化レベル調整処理、誤差拡散グレー濃淡調整処理のうち、少なくとも１つの処理を実行し、
前記第２実行手段は、
前記第２画像処理として、文字補正処理、ノイズ除去処理、及び罫線除去処理のうち、少なくとも１つの処理を実行することを特徴とする請求項１乃至請求項６の何れか１項に記載の制御プログラム。
【請求項８】
当該制御プログラムは、アプリケーションプログラムにより前記スキャンデータを処理する命令を受け付け、
前記出力手段は、前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを、前記アプリケーションプログラムに出力することを特徴とする請求項１乃至請求項７の何れか１項に記載の制御プログラム。
【請求項９】
前記コンピュータを、
前記検出手段による前記バーコードデータの検出において要求される検出精度を特定する第２特定手段として機能させ、
前記第１実行手段は、
前記第２特定手段により特定した前記検出精度が高いことに応じて、前記第１取得手段により取得された前記スキャンデータに、前記第１群の画像処理のうち実行可能な処理の全てを実行し、
前記第２特定手段により取得した前記検出精度が低いことに応じて、前記第１取得手段により取得された前記スキャンデータに、前記対象画像処理に含まれ、且つ前記第１群の画像処理に含まれる処理を実行することを特徴とする請求項１乃至請求項８の何れか１項に記載の制御プログラム。
【請求項１０】
ユーザインタフェースと、
コントローラと、
を備える情報処理装置であって、
前記コントローラは、
前記ユーザインタフェースを介して第１操作入力を受け付ける第１受付手段と、
前記第１受付手段が受け付けた前記第１操作入力に基づいて、複数の画像処理のうちから、対象画像処理を特定する第１特定手段と、
スキャンデータを取得する第１取得手段と、
前記第１取得手段により取得された前記スキャンデータに、第１画像処理を実行する第１実行手段と、を有し、前記第１画像処理は、前記複数の画像処理のうち、予め定められた第１群の画像処理であり、
前記コントローラは、
前記第１実行手段により前記第１画像処理が実行された前記スキャンデータから、バーコードを示す画像データであるバーコードデータを検出する検出手段と、
前記第１取得手段により取得された前記スキャンデータに基づいて、第２画像処理を実行する第２実行手段と、を有し、前記第２画像処理は、前記第１特定手段が特定した前記対象画像処理に含まれる画像処理であり、
前記コントローラは、
前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを出力する出力手段を、
有することを特徴とする情報処理装置。
【請求項１１】
スキャナと、
情報処理装置と、
を備えるスキャンシステムであって、
前記スキャンシステムに含まれるコントローラは、
ユーザインタフェースを介して第１操作入力を受け付ける第１受付手段と、
前記第１受付手段が受け付けた前記第１操作入力に基づいて、複数の画像処理のうちから、対象画像処理を特定する第１特定手段と、
スキャンデータを取得する第１取得手段と、
前記第１取得手段により取得された前記スキャンデータに、第１画像処理を実行する第１実行手段と、を有し、前記第１画像処理は、前記複数の画像処理のうち、予め定められた第１群の画像処理であり、
前記コントローラは、
前記第１実行手段により前記第１画像処理が実行された前記スキャンデータから、バーコードを示す画像データであるバーコードデータを検出する検出手段と、
前記第１取得手段により取得された前記スキャンデータに基づいて、第２画像処理を実行する第２実行手段と、を有し、前記第２画像処理は、前記第１特定手段が特定した前記対象画像処理に含まれる画像処理であり、
前記コントローラは、
前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを出力する出力手段を、
有することを特徴とするスキャンシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿から読み取ったスキャンデータを処理する制御プログラム等に関する。
【背景技術】
【０００２】
下記特許文献には、原稿を読み取ってスキャンデータを作成するスキャナ装置と、該スキャナ装置からスキャンデータを取得して所定の画像処理を施す画像処理サーバと、を有する画像処理システムについて記載されている。画像処理サーバは、スキャンデータに含まれるバーコードデータを検出する。画像処理サーバは、バーコードデータの検出前に、黒強調や白強調を行うためのパラメータに基づいて階調変換を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−９６０９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献に記載の技術によれば、バーコードデータの検出前に階調変換を行うことで、バーコードデータの検出精度を向上させることが可能である。しかしながら、スキャンデータに対して実行可能な処理には、様々な種類があり、バーコードデータの検出処理前に実行すべき処理や、逆に、検出処理前に実行すべきでない処理もある。そこで、各種の処理の実行タイミングを設定することで、バーコードデータの検出処理を適切に実行することを課題とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、実施例に開示する制御プログラムは、ユーザインタフェースを備えた情報処理装置のコンピュータが読み取り可能な制御プログラムであって、前記コンピュータを、前記ユーザインタフェースを介して第１操作入力を受け付ける第１受付手段と、前記第１受付手段が受け付けた前記第１操作入力に基づいて、複数の画像処理のうちから、対象画像処理を特定する第１特定手段と、スキャンデータを取得する第１取得手段と、前記第１取得手段により取得された前記スキャンデータに、第１画像処理を実行する第１実行手段として機能させ、前記第１画像処理は、前記複数の画像処理のうち、予め定められた第１群の画像処理であり、前記コンピュータを、前記第１実行手段により前記第１画像処理が実行された前記スキャンデータから、バーコードを示す画像データであるバーコードデータを検出する検出手段と、前記第１取得手段により取得された前記スキャンデータに基づいて、第２画像処理を実行する第２実行手段として機能させ、前記第２画像処理は、前記第１特定手段が特定した前記対象画像処理に含まれる画像処理であり、前記コンピュータを、前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを出力する出力手段と、して機能させることを特徴とする。
【発明の効果】
【０００６】
実施例に開示の制御プログラムにより、複数の画像処理のうち、予め設定された第１群の画像処理をバーコードデータの検出処理前に実行する。このため、第１群の画像処理として、バーコードデータの検出精度を上げる処理など、検出処理に有益な処理を事前に実行することができる。
【図面の簡単な説明】
【０００７】
【図１】スキャンシステム１のブロック図である。
【図２】画像の読み取りの作動状態を示すシーケンス図である。
【図３】画像の読み取りの作動状態を示すシーケンス図である。
【図４】画像の読み取りの処理の流れを示す図である。
【図５】バーコードの検出を設定するための設定画面８１を示す図である。
【図６】画像処理を選択する選択画面９１を示す図である。
【図７】検出精度として「早い」を設定した場合のドライバ画像処理モジュール２８Ｅによる画像処理を示すフローチャートである。
【図８】検出精度として「高精度」を設定した場合のドライバ画像処理モジュール２８Ｅによる画像処理を示すフローチャートである。
【図９】検出精度として「普通」を設定した場合のドライバ画像処理モジュール２８Ｅによる画像処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
＜スキャンシステムの構成＞
図１に、本願に係る実施形態として例示されるスキャンシステム１のブロック図を示す。スキャンシステム１は、ＰＣ（本発明の情報処理装置の一例）１０、スキャナ（本発明の情報処理装置の一例）５０、ルータ５６を備える。
【０００９】
ＰＣ１０は、ＣＰＵ（本発明のコンピュータ及びコントローラの一例）１２、メモリ１４、ＬＣＤ（本発明のユーザインタフェースの一例）１６、入力インタフェース（本発明のユーザインタフェースの一例）１８、ネットワークインタフェース２０を主に備えている。これらの構成要素は、バス２２を介して互いに通信可能とされている。なお、「インタフェース」は、「Ｉ／Ｆ」と記載しても良い。
【００１０】
ＣＰＵ１２は、メモリ１４内のアプリケーションプログラム２６、スキャナドライバ（本発明の制御プログラムの一例）２８、オペレーティングシステム（以下、「ＯＳ」と略す）３２に従って処理を実行する。アプリケーションプログラム２６は、例えば、スキャナ５０でスキャンされたスキャンデータＤ１に対して、公知のＯＣＲ技術で利用される文字認識処理を実行するためのプログラムであり、具体的には、Ａｄｏｂｅ  Ｐｈｏｔｏｓｈｏｐ（登録商標）などの画像編集ソフトである。
【００１１】
また、スキャナドライバ２８は、スキャナ５０のデバイスドライバであり、スキャナ５０の作動を制御する。スキャナドライバ２８は、ＤＳＭ２８Ａ、ドライバメイン処理モジュール２８Ｂ、ドライバＵＩモジュール２８Ｄ、ドライバ画像処理モジュール２８Ｅを有している。ＤＳＭ２８Ａは、データソースマネージャーであり、ＴＷＡＩＮ規格に準拠した通信を行うスキャナドライバ２８において、アプリケーションプログラム２６とのデータの入出力を行うインタフェースとして機能するプログラムである。なお、上記したスキャナドライバ２８の構成は一例であり、スキャナドライバ２８の種類等に応じて適宜変更される。例えば、スキャナドライバ２８がＴＷＡＩＮ規格以外（例えば、ＷＩＡ規格）のドライバである場合、スキャナドライバ２８は、ＤＳＭ２８Ａを備えなくとも良い。この場合、後述するＤＳＭ２８Ａが行う処理は、ＯＳ３２が代わりに実行しても良い。
【００１２】
ドライバメイン処理モジュール２８Ｂ、ドライバＵＩモジュール２８Ｄ、ドライバ画像処理モジュール２８Ｅは、スキャナドライバ２８に含まれる処理モジュールであり、各種の処理を実行する。ドライバメイン処理モジュール２８Ｂは、スキャナ５０とのデータの送受信や、スキャナ５０に対する命令を実行する。ドライバＵＩモジュール２８Ｄは、設定画面の表示等を行う。ドライバ画像処理モジュール２８Ｅは、スキャンデータＤ１に対する画像処理を実行する。
【００１３】
また、ＯＳ３２は、アプリケーションプログラム２６、スキャナドライバ２８に利用される基本的な機能を提供するプログラムである。なお、以下の説明では、アプリケーションプログラム２６等を実行するＣＰＵ１２のことを、単にプログラム名でも記載する場合がある。例えば、「アプリケーションプログラム２６が」という記載は、「アプリケーションプログラム２６を実行するＣＰＵ１２が」ということを意味する場合がある。
【００１４】
また、メモリ１４は、データ記憶領域３４を備える。データ記憶領域３４は、アプリケーションプログラム２６等の実行に必要なデータなどを記憶する領域である。なお、メモリ１４は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＨＤＤの略）、ＣＰＵ１２が備えるバッファなどが組み合わされて構成されている。
【００１５】
メモリ１４は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。後述するスキャナ５０のメモリ５４についても同様である。
【００１６】
ＬＣＤ１６は、ＰＣ１０の各種機能を表示する。入力Ｉ／Ｆ１８は、キーボード，マウス等を含み、ユーザ操作を入力するためのインタフェースである。ネットワークＩ／Ｆ２０は、ルータ５６を介して、スキャナ５０のネットワークインタフェース５１に接続されている。これにより、ＰＣ１０はスキャナ５０との間で情報の送受信を行う。
【００１７】
スキャナ５０は、原稿に印刷された画像などを読み取ってスキャンデータＤ１を生成する装置であり、上記したネットワークＩ／Ｆ５１の他に、ＣＰＵ５２、メモリ５４、読取インタフェース５５、入力インタフェース５７、ＬＣＤ５８等を備えている。これらの構成要素は、バス５９を介して互いに通信可能とされている。
【００１８】
ＣＰＵ５２は、メモリ５４内のプログラム６１に従って処理を実行する。メモリ５４は、ＲＡＭ、ＲＯＭなどが組み合わされて構成されている。また、メモリ５４は、データ記憶領域５４Ａを備える。データ記憶領域５４Ａは、プログラム６１の実行に必要なデータなどを記憶する領域である。
【００１９】
プログラム６１は、スキャナ５０を統括的に制御するプログラムであり、デバイスメイン処理モジュール６５、デバイス画像処理モジュール６６を有する。スキャナ５０は、ＰＣ１０によって制御され、読み取ったスキャンデータＤ１をＰＣ１０へ送信する。ＣＰＵ５２は、デバイスメイン処理モジュール６５やデバイス画像処理モジュール６６に従って、スキャンデータＤ１の生成処理やスキャンデータＤ１に対する画像処理を実行する。デバイスメイン処理モジュール６５やデバイス画像処理モジュール６６の詳細については後述する。読取Ｉ／Ｆ５５は、例えば、ＣＣＤやＣＩＳなどの画像を読み取るデバイスである。入力Ｉ／Ｆ５７は、液晶ディスプレイや各種スイッチ等を含み、ユーザ操作を入力するためのインタフェースである。ＬＣＤ５８は、スキャナ５０の各種機能を表示する。
【００２０】
＜画像の読み取りの作動シーケンス＞
次に、ユーザがＰＣ１０を操作してスキャナ５０によって画像の読み取りを行った場合のスキャンシステム１の作動シーケンスについて説明する。図２、図３は、画像読み取りの作動シーケンスの一例を示している。
【００２１】
本明細書のシーケンスチャートは、基本的に、プログラムに記述された命令に従ったＣＰＵ１２、５２の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」「設定」等の処理は、ＣＰＵ１２、５２の処理を表している。ＣＰＵ１２による処理は、ＯＳ３２を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ１２が要求することなくデータを受信するという処理も、「ＣＰＵ１２がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【００２２】
まず、ＰＣ１０の入力インタフェース１８を介した操作入力に従って、アプリケーションプログラム２６が起動する（Ｓ１０１）。アプリケーションプログラム２６は、スキャナドライバ２８のＤＳＭ２８Ａを介してドライバメイン処理モジュール２８Ｂに対しスキャナ５０との接続を命令する（Ｓ１０３，Ｓ１０５）。ドライバメイン処理モジュール２８Ｂは、ルータ５６を介してスキャナ５０への接続要求を送信する（Ｓ１０７）。
【００２３】
スキャナ５０のデバイスメイン処理モジュール６５は、ＰＣ１０のドライバメイン処理モジュール２８Ｂから接続要求を受信すると、接続を確立するための応答をする（Ｓ１０９）。これにより、ＰＣ１０とスキャナ５０との通信が確立される。ドライバメイン処理モジュール２８Ｂは、デバイスメイン処理モジュール６５との通信が確立すると、デバイスメイン処理モジュール６５に対してデバイス能力値の要求を送信する（Ｓ１１１）。
【００２４】
ここでいうデバイス能力値は、スキャナ５０で実行可能な複数の処理の各々を示す値であり、例えば、原稿サイズに関する能力値である。原稿サイズに関する情報は、スキャナ５０で読み取り可能な原稿サイズに関する情報及び、読取対象の原稿サイズをユーザ操作により指定することなく、当該原稿のサイズを自動的に検知する処理（以下、「原稿検知処理」と記載する）を実行可能であるかを示す情報である。
【００２５】
また、例えば、デバイス能力値は、スキャナが作成可能なスキャンデータの色のスケールに関する能力値を含んでよい。色のスケールは、例えば、ビットマップ画像データにおける１ピクセルに対して設定可能な色数を示す値であり、２４ｂｉｔ（１６６７７７２１６色）のカラースケール，８ｂｉｔ（２５６色）のグレースケール，１ｂｉｔ（２色：白と黒）のモノクロスケール等である。色のスケールのことを色深度ともいう。そして、色のスケールに関する能力値は、スキャナが作成するスキャンデータの色のスケールを示すパラメータとして設定可能な値を示す情報、スキャナがスキャン原稿に含まれる色数を自動的に検知する処理（以下、「スケール検知処理」と記載する）（本発明の特性情報取得処理の一例）を実行可能であるかを示す情報、及び、検知した色数に適した色のスケールを自動的に決定する処理を実行可能であるかを示す情報を含んでよい。
【００２６】
また、例えば、デバイス能力値は、白原稿の検知処理に関する能力値を含んでよい。原稿が読み取られる際に、白紙の原稿、つまり、白原稿が読み取られる場合がある。白原稿の検知処理に関する能力値は、原稿の読み取りにより作成されたスキャンデータが、白原稿のスキャンデータを含むか否かを検知する処理（以下、「白紙検知処理」と記載する）（本発明の特性情報取得処理の一例）を実行可能であるかを示す情報を含んでよい。なお、スキャナ５０は、原稿検知処理，スケール検知処理，白紙検知処理の何れも実行可能である。
【００２７】
デバイスメイン処理モジュール６５は、ドライバメイン処理モジュール２８Ｂからデバイス能力値の要求を受信すると、自身のデバイス能力値を示す値を送信する（Ｓ１１３）。ドライバメイン処理モジュール２８Ｂは、デバイスメイン処理モジュール６５からデバイス能力値を受信すると、スキャナドライバ２８のドライバＵＩモジュール２８Ｄに対して設定画面の表示を命令する（Ｓ１１５）。この設定画面は、デバイスメイン処理モジュール６５から受信したデバイス能力値に基づいて表示されるものであり、画像の読み取りにおいてスキャナ５０で実行可能な処理に対する設定を受け付けるものである。
【００２８】
具体的には、原稿検知処理を実行するか否かを指示する設定操作、及び、原稿サイズを指示する設定操作に従ってパラメータを受け付けるための設定画面が、原稿サイズに関する能力値に基づいて表示される。また、スケール検知処理を実行するか否かを指示する設定操作、及び、色のスケールを指示する設定操作に従ってパラメータを受け付けるための設定画面が、色のスケールに関する能力値に基づいて表示される。また、白紙検知処理を実行するか否かを指示する設定操作に従ってパラメータを受け付けるための設定画面が、白原稿の検知処理に関する能力値に基づいて表示される。
【００２９】
ドライバＵＩモジュール２８Ｄは、ドライバメイン処理モジュール２８Ｂからの命令に応じて、ＰＣ１０のＬＣＤ１６に設定画面を表示する（Ｓ１１７）。ドライバＵＩモジュール２８Ｄは、表示された設定画面の「ＯＫ」ボタンが操作されると、「ＯＫ」ボタンが操作されるまでの、ユーザによる、入力インタフェース１８を介した設定操作に従って、画像の読み取りにおける設定値（以下、「スキャンパラメータ」という場合がある）（本発明の設定パラメータの一例）をメモリ１４に記憶させる（本発明の受付手段の一例）。ＣＰＵ１２が設定操作に従ってパラメータをメモリ１４に記憶することを「パラメータを受け付ける」もしくは「パラメータを設定する」と記載してもよい。ＬＣＤ１６に表示された設定画面のボタンを押下する操作は、設定操作の一例である。スキャンパラメータは設定操作によって直接的に指示されるパラメータであってもよい。例えば、解像度「６００ｄｐｉ」を指示する設定操作に従って、解像度「６００ｄｐｉ」というパラメータをメモリ１４に記憶させてもよい。スキャンパラメータは、設定操作によって間接的に指示されるパラメータであってもよい。例えば、「高品質」を指示する設定操作に従って、解像度「６００ｄｐｉ」というパラメータをメモリ１４に記憶させてもよい。また、後述するように、スキャンパラメータを受け付ける方法は、ＬＣＤ１６に表示した設定画面を用いた方法に限らず、例えば、スキャンパラメータを記載した設定ファイルを読み込む方法でも良い。
【００３０】
なお、スキャンパラメータは、原稿サイズに関するパラメータとして、原稿検知処理の実行の有無を示すパラメータ，ユーザ操作により原稿サイズが設定された場合に設定された原稿サイズを示すパラメータを含む。また、スキャンパラメータは、色のスケールに関するパラメータとして、スケール検知処理の実行の有無を示すパラメータ，ユーザ操作により色のスケールが設定された場合に設定された色のスケールを示すパラメータを含む。また、スキャンパラメータは、白原稿の検知処理に関するパラメータとして、白紙検知処理の実行の有無を示すパラメータを含む。また、スキャンパラメータは、原稿に印刷等されたバーコードに関するパラメータとして、スキャンデータＤ１からバーコードを検出するか否かを示すパラメータ、ユーザが実行してほしい画像処理の種類を示すパラメータなどを含む。
【００３１】
そして、ドライバＵＩモジュール２８Ｄは、パラメータの受け付けを終了すると、受け付けたスキャンパラメータをドライバメイン処理モジュール２８Ｂに出力し、ドライバメイン処理モジュール２８Ｂに対してスキャンパラメータの記憶を命令する（Ｓ１２１）。ドライバメイン処理モジュール２８Ｂは、ドライバＵＩモジュール２８Ｄから受信したスキャンパラメータを、例えば、メモリ１４のデータ記憶領域３４に記憶する。
【００３２】
次に、ドライバＵＩモジュール２８Ｄは、ユーザからスキャンの開始命令を受け付ける（Ｓ１２３）。ドライバＵＩモジュール２８Ｄは、例えば、上記したＳ１１７で表示した設定画面に対して、ユーザからスキャンを開始することを示す操作を受け付けると、ドライバメイン処理モジュール２８Ｂへスキャンの開始命令を出力する（Ｓ１２５）。
【００３３】
ドライバメイン処理モジュール２８Ｂは、ドライバＵＩモジュール２８Ｄからスキャン開始命令を受け取ると、まず、上記したＳ１２１で記憶したスキャンパラメータ、即ち、設定画面において受け付けたスキャンパラメータを、デバイスメイン処理モジュール６５へ送信する（Ｓ１２７）。この際、ドライバメイン処理モジュール２８Ｂは、例えば、ユーザから受け付けたスキャンパラメータのうち、スキャナ５０側で実行する処理に係わるスキャンパラメータをデバイスメイン処理モジュール６５へ送信する。
【００３４】
次に、ドライバメイン処理モジュール２８Ｂは、デバイスメイン処理モジュール６５へスキャンの開始命令を送信する（Ｓ１２９）。デバイスメイン処理モジュール６５は、Ｓ１２９においてドライバメイン処理モジュール２８Ｂからスキャンの開始命令を受信すると、読取Ｉ／Ｆ５５を駆動して原稿の画像を読み取る処理を実行する（Ｓ１３１）。
【００３５】
デバイスメイン処理モジュール６５は、読取Ｉ／Ｆが原稿を読み取って出力したデータに基づいて作成されたスキャンデータＤ１に対する画像処理をデバイス画像処理モジュール６６へ命令する（Ｓ１３３）。デバイスメイン処理モジュール６５は、読み取ったスキャンデータＤ１と、Ｓ１２７で受信したスキャンパラメータとを、デバイス画像処理モジュール６６へ出力する（Ｓ１３３）。デバイス画像処理モジュール６６は、受け取ったスキャンパラメータに基づいてスキャンデータＤ１に対する画像処理を実行する（Ｓ１３４）。デバイス画像処理モジュール６６は、画像処理後のスキャンデータＤ１をデバイスメイン処理モジュール６５へ出力する（Ｓ１３５）。
【００３６】
デバイスメイン処理モジュール６５は、デバイス画像処理モジュール６６によって画像処理が終了したスキャンデータＤ１を、ドライバメイン処理モジュール２８Ｂへ送信する（Ｓ１３７）。デバイスメイン処理モジュール６５は、例えば、デバイス画像処理モジュール６６から１ライン分のスキャンデータＤ１を受け取ると、受け取ったスキャンデータＤ１をドライバメイン処理モジュール２８Ｂに送信する。即ち、デバイスメイン処理モジュール６５は、１ラインの画像処理が完了するごとにスキャンデータＤ１を送信する。なお、デバイスメイン処理モジュール６５は、１ラインごとにスキャンデータＤ１を送信する構成に限らない。例えば、デバイスメイン処理モジュール６５は、１枚の原稿の画像処理が終了するごとにスキャンデータＤ１を送信しても良い。あるいは、デバイスメイン処理モジュール６５は、全ての原稿の画像を読み取った後に、まとめてスキャンデータＤ１を送信しても良い。
【００３７】
また、デバイスメイン処理モジュール６５は、ドライバメイン処理モジュール２８Ｂへ送信するスキャンデータＤ１を圧縮処理し、データ量を削減しても良い。この場合、例えば、ドライバメイン処理モジュール２８Ｂは、デバイスメイン処理モジュール６５から受信した圧縮されたスキャンデータＤ１を解凍し、解凍したスキャンデータＤ１をその後の処理に用いる。
【００３８】
次に、図３に示すように、ドライバメイン処理モジュール２８Ｂは、スキャナドライバ２８のモジュールであるドライバ画像処理モジュール２８Ｅに対してスキャンデータＤ１の画像処理を命令する（Ｓ１３９）。ドライバメイン処理モジュール２８Ｂは、図２のＳ１３７でデバイスメイン処理モジュール６５から受信したスキャンデータＤ１を、ドライバ画像処理モジュール２８Ｅに出力する（Ｓ１３９）。また、ドライバメイン処理モジュール２８Ｂは、図２のＳ１２１で記憶したスキャンパラメータをドライバ画像処理モジュール２８Ｅへ出力する（Ｓ１３９）。この際、ドライバメイン処理モジュール２８Ｂは、設定画面で受け付けたスキャンパラメータのうち、ＰＣ１０側の画像処理に係わるスキャンパラメータをドライバ画像処理モジュール２８Ｅへ出力する。
【００３９】
ドライバ画像処理モジュール２８Ｅは、ドライバメイン処理モジュール２８Ｂから受け取ったスキャンパラメータに基づいてスキャンデータＤ１を画像処理し（Ｓ１４１）、処理後のスキャンデータＤ１をドライバメイン処理モジュール２８Ｂへ出力する（Ｓ１４３）。また、ドライバ画像処理モジュール２８Ｅは、スキャンパラメータとして、バーコードを検出することを示すパラメータが設定されていた場合、スキャンデータＤ１の画像処理において、バーコードの検出処理を実行する。ドライバ画像処理モジュール２８Ｅは、検出したバーコードに係わるバーコード情報をドライバメイン処理モジュール２８Ｂへ出力する。ここでいうバーコード情報とは、例えば、検出したバーコードが示す文字の情報、その文字数、スキャンデータＤ１に含まれるバーコードの数、バーコードの種類である。また、バーコード情報は、例えば、原稿においてバーコードを印刷した方向を示す角度である。より具体的には、１次元バーコードであれば、例えば、バーが並ぶ方向と、画像を読み取る主走査方向とがなす角度（０度、９０度など）である。また、ドライバ画像処理モジュール２８Ｅは、スキャンデータＤ１からバーコードを検出できなかった場合、例えば、検出できなかったことを示す値を設定したバーコード情報を、ドライバメイン処理モジュール２８Ｂに出力する（Ｓ１４３）。
【００４０】
一方で、アプリケーションプログラム２６は、ドライバメイン処理モジュール２８Ｂへ定期的なスキャンデータＤ１の問い合わせを実行する（Ｓ１４５）。アプリケーションプログラム２６は、例えば、図２のＳ１２５においてドライバＵＩモジュール２８Ｄからドライバメイン処理モジュール２８Ｂに対してスキャンの開始命令が出力された後、ドライバメイン処理モジュール２８Ｂへ定期的にスキャンデータＤ１を問い合わせる（Ｓ１４５）。アプリケーションプログラム２６は、Ｓ１４５において、スキャナ５０から受信したスキャンデータＤ１の転送準備が完了したか否かをドライバメイン処理モジュール２８Ｂに定期的に問い合わせる。なお、アプリケーションプログラム２６は、ドライバメイン処理モジュール２８Ｂに対して定期的な問い合わせを実行せず、ドライバメイン処理モジュール２８ＢからスキャンデータＤ１が出力されるまで待機する構成でも良い。
【００４１】
アプリケーションプログラム２６は、Ｓ１４５の問い合わせに対応する応答をドライバメイン処理モジュール２８Ｂから受け取ると（Ｓ１４７）、ドライバメイン処理モジュール２８Ｂに対してスキャンデータＤ１の出力を命令する（Ｓ１４９）。ドライバメイン処理モジュール２８Ｂは、アプリケーションプログラム２６からスキャンデータＤ１の出力命令を受け取ると、スキャンデータＤ１をアプリケーションプログラム２６へ出力する（Ｓ１５１）。
【００４２】
次に、アプリケーションプログラム２６は、スキャンデータＤ１をドライバＵＩモジュール２８Ｄから受け取ると、スキャンデータＤ１に係わるバーコード情報をドライバ画像処理モジュール２８Ｅに問い合わせる（Ｓ１５３）。従って、本実施形態のアプリケーションプログラム２６は、原稿にバーコードが含まれているか否かに係わらず、ドライバ画像処理モジュール２８Ｅに対してバーコード情報を問い合わせる。なお、アプリケーションプログラム２６は、ドライバメイン処理モジュール２８Ｂに対してバーコード情報を問い合わせず、ドライバメイン処理モジュール２８Ｂからバーコード情報を受け取った場合のみ、バーコード情報を処理する構成でも良い。
【００４３】
ドライバメイン処理モジュール２８Ｂは、アプリケーションプログラム２６からバーコード情報の問い合わせを受け取ると、アプリケーションプログラム２６に対してバーコード情報を出力する（Ｓ１５５）。ドライバメイン処理モジュール２８Ｂは、ドライバ画像処理モジュール２８Ｅによってバーコードを検出できた場合、バーコードの文字数などをバーコード情報としてアプリケーションプログラム２６へ出力する。また、ドライバメイン処理モジュール２８Ｂは、ドライバ画像処理モジュール２８Ｅによってバーコードを検出できなかった場合、そのことを示す値を設定したバーコード情報をアプリケーションプログラム２６に出力する。
【００４４】
アプリケーションプログラム２６は、ドライバメイン処理モジュール２８Ｂから受け取ったスキャンデータＤ１及びバーコード情報を用いた所定の処理を実行する（Ｓ１５７）。ここでいう所定の処理とは、例えば、ユーザから要求された処理であり、スキャンデータＤ１を印刷する処理である。あるいは、アプリケーションプログラム２６は、スキャンデータＤ１をＰＣ１０（メモリ１４）へ記憶する処理、スキャンデータＤ１をＬＣＤ１６へ表示する処理、スキャンデータＤ１の画像処理、他のアプリケーションプログラムにスキャンデータＤ１を転送する処理、サーバにスキャンデータＤ１を転送する処理などを実行しても良い。また、アプリケーションプログラム２６は、バーコードの文字情報の表示、バーコードが示すデータの記憶先（フォルダパスやＵＲＬ）へのアクセス、記憶先のデータの表示などを実行しても良い。
【００４５】
アプリケーションプログラム２６は、Ｓ１５７の処理を完了させると、ＤＳＭ２８Ａを介して、ドライバメイン処理モジュール２８Ｂへ切断命令を出力する（Ｓ１５９、Ｓ１６１）。アプリケーションプログラム２６は、ＤＳＭ２８Ａを介してドライバメイン処理モジュール２８Ｂに対し、デバイスメイン処理モジュール６５（スキャナ５０）との通信の接続を切断するように命令する（Ｓ１５９、Ｓ１６１）。ドライバメイン処理モジュール２８Ｂは、アプリケーションプログラム２６からの命令に応じて、デバイスメイン処理モジュール６５との通信を切断する（Ｓ１６３）。このようにして、スキャンシステム１は、ＰＣ１０のアプリケーションプログラム２６の制御に基づいたスキャナ５０による画像の読み取り処理を終了する。
【００４６】
＜画像の読み取り処理について＞
次に、上記した作動シーケンスにおける画像の読み取り処理の一例について説明する。本実施形態のスキャンシステム１は、様々なサイズの原稿の画像を読み取ることが可能となっている。スキャンシステム１は、上記したスキャンパラメータとして、原稿サイズの自動検知を実行することを示すパラメータが設定された場合、ＰＣ１０側において原稿サイズの検知処理を実行する。スキャンシステム１は、大きさの異なる原稿について、その原稿のサイズよりも大きな画像をスキャナ５０でスキャンデータＤ１として生成し、ＰＣ１０においてそのスキャンデータＤ１から原稿の画像を切り出す処理を行う。
【００４７】
詳述すると、図４は、画像の読み取り処理の一例を示している。図４に示す例では、スキャンパラメータには、原稿サイズを自動で検知し、原稿の画像を自動で抽出することを示すパラメータが設定されている。また、スキャンパラメータには、読み取り原稿の色を自動検知することを示すパラメータが設定されている。また、スキャンパラメータには、白紙検知を実行することを示すパラメータが設定されている。また、以下の説明では、スキャナ５０の読み取り可能な原稿サイズのうち、最大のサイズがＡ４サイズであり、実際に読み取りを行う原稿のサイズがハガキサイズである場合について説明する。この場合、スキャナ５０は、Ａ４サイズよりも小さいハガキサイズの原稿を、読み取り可能な最大のサイズであるＡ４サイズの原稿として画像の読み取りを実行する。
【００４８】
まず、スキャナ５０は、図４に示すように、ハガキサイズの原稿の原稿スキャンデータ７１を、Ａ４サイズのスキャンデータＤ１として読み取る。スキャナ５０は、原稿スキャンデータ７１の外縁の外側に外側スキャンデータ７３を付加したスキャンデータＤ１を生成する。この外側スキャンデータ７３は、Ａ４サイズとして足りない部分に対応しており、例えば、スキャナ５０の原稿を読み取る読み取り台において、原稿を背面側から抑える原稿カバーを読み取った画像である。例えば、原稿カバーの内側（原稿側）には、グレー色が塗られている。この場合、スキャナ５０は、原稿の背景色であるグレー色を、原稿スキャンデータ７１の周囲の外側スキャンデータ７３として読み取り、原稿スキャンデータ７１の外周に付加する。
【００４９】
スキャナ５０は、原稿スキャンデータ７１に外側スキャンデータ７３を付加したスキャンデータＤ１を、ＰＣ１０へ送信する。この送信処理は、図２に示すＳ１３７に対応する。ＰＣ１０側では、上記したようにドライバ画像処理モジュール２８ＥによってスキャンデータＤ１に対する画像処理を行う（図３のＳ１４１）。本実施形態のスキャナ５０は、ＰＣ１０側で原稿サイズを検知する場合、即ち、外側スキャンデータ７３を原稿スキャンデータ７１に付加したスキャンデータＤ１をＰＣ１０へ送信する場合、色のスケールの最も大きい２４ｂｉｔカラーのスキャンデータＤ１をＰＣ１０へ送信する。これにより、ＰＣ１０側の原稿を検知する原稿検知処理（Ｓ２０１）において、色の識別によって外側スキャンデータ７３を容易に検知することができる。また、後述するスケール変換処理（Ｓ２０７）において、色要素の数を適切に削減して最適化することができる。換言すれば、本実施形態のスキャンシステム１では、仮に、スキャンパラメータの色のスケールの設定としてモノクロが設定された場合であっても、原稿サイズを自動検知する設定であれば、ＰＣ１０からスキャナ５０へ２４ｂｉｔカラーのスキャンデータＤ１を要求することとなる。なお、スキャナ５０からＰＣ１０へ送信するスキャンデータＤ１は、２４ｂｉｔカラーのスキャンデータＤ１に限らない。例えば、ＰＣ１０側で８ビットのグレースケールのスキャンデータＤ１に基づいて、外側スキャンデータ７３を検知可能であれば、スキャナ５０からＰＣ１０へグレースケールのスキャンデータＤ１を送信しても良い。
【００５０】
まず、ドライバ画像処理モジュール２８Ｅは、図３のＳ１４１の画像処理として、スキャンデータＤ１から原稿スキャンデータ７１を検知する原稿検知処理を実行する（図４に示すＳ２０１）。ドライバ画像処理モジュール２８Ｅは、外側スキャンデータ７３の色（例えば、グレー色）に基づいてスキャンデータＤ１の画像を処理し、スキャンデータＤ１に含まれる外側スキャンデータ７３を検知する。外側スキャンデータ７３の色は、例えば、上記した図２におけるスキャナ５０のデバイス能力値の取得処理（Ｓ１１１、Ｓ１１３）において、デバイスメイン処理モジュール６５からドライバメイン処理モジュール２８Ｂへ送信される。ドライバ画像処理モジュール２８Ｅは、例えば、この取得処理で得た外側スキャンデータ７３の色に該当し、且つスキャンデータＤ１の外周部分に配置された画像を、外側スキャンデータ７３の画像として検知する。ドライバ画像処理モジュール２８Ｅは、スキャンデータＤ１のうち検知した外側スキャンデータ７３を除く部分を、原稿スキャンデータ７１として抽出する画像処理を行う。尚、画像データを抽出する画像処理のことを、画像データを切り取る画像処理ともいう。
【００５１】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２０１で抽出した原稿スキャンデータ７１、即ち、画像を読み取った原稿に対して、白紙原稿に基づくスキャンデータであるか否かを判断する白紙検知処理を実行する（Ｓ２０３）。ドライバ画像処理モジュール２８Ｅは、例えば、抽出した原稿スキャンデータ７１が全て白色である場合、白紙の原稿であると検知する。なお、ドライバ画像処理モジュール２８Ｅは、Ｓ２０３で白紙を検知した場合、ドライバメイン処理モジュール２８Ｂやアプリケーションプログラム２６を介してユーザへ白紙を検知したことを示す通知をしても良い。あるいは、ドライバ画像処理モジュール２８Ｅは、Ｓ２０３で白紙を検知した場合、スキャンデータＤ１の中から白紙に該当する原稿スキャンデータ７１のみを除去し、白紙以外の原稿スキャンデータ７１を処理後のスキャンデータＤ１としてドライバメイン処理モジュール２８Ｂへ出力しても良い。
【００５２】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２０１で抽出した原稿スキャンデータ７１に含まれる色要素の数、即ち、色のスケールを検知する（Ｓ２０５）。色のスケールの検知方法としては、公知の画像処理方法を用いることができる。ドライバ画像処理モジュール２８Ｅは、例えば、原稿スキャンデータ７１に含まれる色要素の数に基づいて、原稿スキャンデータ７１が、２４ｂｉｔのカラー画像、８ｂｉｔのグレースケール画像、あるいはモノクロ画像のいずれの色のスケールの画像であるかを判断する。
【００５３】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２０５で検知した色のスケールに基づいて、原稿スキャンデータ７１の色のスケールを変換するスケール変換処理を実行する（Ｓ２０７）。例えば、ドライバ画像処理モジュール２８Ｅは、Ｓ２０５において、原稿スキャンデータ７１の色のスケールがモノクロである、即ち、原稿スキャンデータ７１に白色と黒色しか含まれていないことを検知すると、Ｓ２０７においてカラーの原稿スキャンデータ７１をモノクロの原稿スキャンデータ７１Ａに変換する。これにより、スキャナ５０から受信したカラーの原稿スキャンデータ７１を最適な色のスケールに変換し色要素の数を削減することで、原稿スキャンデータ７１のデータ量を削減することができる。ドライバ画像処理モジュール２８Ｅは、色のスケールを変換した原稿スキャンデータ７１Ａを出力する。この出力処理は、上記した図３のＳ１４３の処理に対応する。従って、ドライバ画像処理モジュール２８Ｅは、色のスケールを変換した原稿スキャンデータ７１Ａを、画像処理後のスキャンデータＤ１としてドライバ画像処理モジュール２８Ｅに出力する（Ｓ１４３）。
【００５４】
ここで、スキャナ５０側で原稿サイズの検知を実行する場合について説明する。スキャナ５０は、例えば、原稿の主走査方向の長さを、読取Ｉ／Ｆ５５の画像データに基づいて検知する。また、スキャナ５０は、例えば、原稿の副走査方向の長さを、物理的な用紙センサによって検知する。原稿の主走査方向の長さのことを原稿の幅ともいう。原稿の主走査方向の長さのことを原稿の高さともいう。ここでいう物理的な用紙センサとは、例えば、ローラ型のセンサであり、画像の読み取り時に原稿の上を副走査方向へと回転しながら移動し、原稿の端部の段差に基づいて原稿の高さを検知するものである。このような用紙センサによる原稿サイズの検知では、センサの検知精度によっては数ミリ程度の誤差が生じる虞がある。これに対し、本実施形態のスキャンシステム１では、ＰＣ１０側の画像処理によって原稿サイズを検知し、原稿スキャンデータ７１を抽出することで原稿スキャンデータ７１を精度良く抽出できる。
【００５５】
また、原稿の原稿スキャンデータ７１に外側スキャンデータ７３を付加した場合、外側スキャンデータ７３を付加したスキャンデータＤ１に対して白紙検知処理（Ｓ２０３）やスケール検知処理（Ｓ２０５）を実行すると、精度良く白紙検知等を実行できない虞がある。これは、例えば、外側スキャンデータ７３としてグレー色を付加すると、仮に、原稿スキャンデータ７１が白紙であったとしても、スキャンデータＤ１には、白色を示す原稿スキャンデータ７１）とグレー色を示す外側スキャンデータ７３の２色が含まれることとなる。その結果、白紙検知処理において、スキャンデータＤ１にグレー色が含まれるため、白紙であることを精度良く検知できなくなる虞がある。また、スケール検知処理において、グレー色を示すデータが原稿スキャンデータ７１に含まれると検知してしまうなど、原稿の色のスケールを精度良く検知できなくなる虞がある。これに対し、本実施形態のスキャンシステム１では、原稿検知処理（Ｓ２０１）によって外側スキャンデータ７３を取り除いた原稿スキャンデータ７１を用いて、白紙検知処理（Ｓ２０３）やスケール検知処理（Ｓ２０５）を実行する。これにより、白紙検知や色のスケールの検知の検知精度を向上することができる。
【００５６】
尚、上記した図４に示す例では、ＰＣ１０側で原稿サイズの検知や原稿スキャンデータ７１の抽出を実行したが、例えば、スキャンパラメータとして原稿サイズを設定された場合には、ＰＣ１０側で原稿検知処理を実行する必要がなくなる。この場合、白紙検知処理（Ｓ２０３）やスケール検知処理（Ｓ２０５）をスキャナ５０側で実行しても良い。これにより、ユーザによってスキャンパラメータに指定された原稿サイズに基づいて画像処理を実行し、ＰＣ１０側での不要な原稿検知処理を実行しないことで、読み取り処理の高速化を図ることができる。
【００５７】
＜バーコードデータの検出処理＞
次に、上記した作動シーケンスにおいて、バーコードが印刷された原稿をスキャンした場合の作動について説明する。本実施形態のスキャナドライバ２８は、例えば、アプリケーションプログラム２６からの要求に応じて、原稿に印刷されたバーコードやバーコードに係わる文字列をスキャンデータＤ１から検出し、検出したバーコードなどをアプリケーションプログラム２６へ出力する。また、本実施形態のスキャナドライバ２８は、ユーザによって設定された検知精度に応じて、バーコードの検出前に実行する画像処理（本発明の第１画像処理の一例）を変更する。この検出前の画像処理は、バーコードの検出処理に有益な処理（本発明の第１群の画像処理の一例）である。なお、本願におけるバーコードとは、バーで構成された１次元コードだけでなく、ＱＲコード（登録商標）のような２次元コードを含む概念である。
【００５８】
詳述すると、スキャナドライバ２８のドライバＵＩモジュール２８Ｄは、図２のＳ１１７において、バーコードの検出の有無を確認するための設定画面を表示させる。図５は、設定画面の一例を示している。ドライバＵＩモジュール２８Ｄは、Ｓ１１７においてスキャンパラメータを受け付けるために表示する画面の１つとして、図５に示す設定画面８１をＬＣＤ１６に表示させる。
【００５９】
図５に示すように、設定画面８１の最上部には、バーコードの読み取りを実行するか否かを設定するためのチェックボックス８３が表示されている。ユーザは、例えば、入力Ｉ／Ｆ１８のマウスを操作して、チェックボックス８３にチェックを入れることで、バーコードの読み取りの実行を設定する。図５は、チェックボックス８３にチェックが入った状態を示している。
【００６０】
また、チェックボックス８３の下には、バーコードの種類を指定するチェックボックス８４が表示されている。チェックボックス８４には、ＵＰＣ−Ａなどのバーコードの種類ごとにチェックボックスが表示されている。ユーザは、チェックボックス８４にチェックを入れることで、検出すべきバーコードの種類を設定できる。
【００６１】
チェックボックス８４の下には、バーコードを検出する範囲を設定するための入力ボックス８５が表示されている。ユーザは、入力ボックス８５を設定することで、スキャンデータＤ１の全範囲からバーコードを検出すべきか、あるいはスキャンデータＤ１の指定範囲からバーコードを検出すべきかを設定できる。指定範囲の欄には、スキャンデータＤ１の上端や左端から起点となる位置までの距離（ＸＹ座標）、その起点となる位置からの横幅、高さを、数値で指定可能となっている。また入力した数値の単位として、センチやインチを、単位の欄に指定可能となっている。これにより、スキャンデータＤ１における特定の領域を指定することが可能となっている。
【００６２】
また、入力ボックス８５の下には、バーコードの検出精度を設定する設定欄８６が表示されている。設定欄８６には、検出精度を選択するための選択矢印８７が表示されている。ユーザは、選択矢印８７を移動させることで、例えば、検出精度として、「早い」、「普通」、「高精度」のいずれかを設定する。図５に示す状態では、選択矢印８７は、「早い」の下に表示されており、検出精度として「早い」が選択された状態となっている。なお、検出精度が「早い」とは、高精度の場合に比べてバーコードの検出精度を低くし、画像処理の結果を早く出力する設定である。
【００６３】
また、設定欄８６の下には、決定ボタン８８が表示されている。また、チェックボックス８４の下で、入力ボックス８５の右には、画像処理選択画面ボタン８９が表示されている。ドライバＵＩモジュール２８Ｄは、ユーザによって画像処理選択画面ボタン８９を選択されると、図６に示す選択画面９１をＬＣＤ１６に表示させる。なお、図５に示す設定画面８１は、一例であり、設定可能なスキャンパラメータに応じて適宜変更される。例えば、検出精度は、３種類に限らず、２種類、あるいは４種類以上でも良い。
【００６４】
図６に示すように、選択画面９１には、第１群画像処理９５と、第２群画像処理９６とを含む実行可能画像処理９７（本発明の複数の画像処理の一例）が表示されている。この実行可能画像処理９７は、ドライバ画像処理モジュール２８Ｅによって実行可能な画像処理である。実行可能画像処理９７の各画像処理の左側には、チェックボックス９３が表示されている。ユーザは、チェックボックス９３のいずれかにチェックを入れことで、実行したい画像処理を設定できる。
【００６５】
第１群画像処理９５には、パンチ穴除去処理からモノクロ化レベル調整処理までが含まれる。第１群画像処理９５は、バーコードの検出処理に有益な処理であり、バーコードの検出精度を高めることが可能な処理として予め定められた画像処理である。パンチ穴除去処理は、スキャンデータＤ１に含まれる画像のうち、パンチ穴に相当する画像を、スキャンデータＤ１から除去する処理である。これにより、バーコードの検出に不要なパンチ穴の画像を除去できるため、バーコードの検出精度を向上させることができる。
【００６６】
地色除去処理は、例えば、スキャンする原稿の色（地色）がカラーである場合に、そのカラー色（地色）を白色に変換する処理である。これにより、バーコードの色合いが地色に近い場合に、バーコードの回りを白色に変換することで、バーコードの検出精度を向上させることができる。また、裏移り色除去処理は、例えば、原稿の裏側に印刷された画像が表側に移って画像として認識される場合に、その裏移りしている色を除去する処理である。これにより、裏移りした色とバーコードとが重なってしまう場合に、裏移りした色を除去することで、バーコードの検出精度を向上させることができる。
【００６７】
カラートーン調整処理は、スキャンデータＤ１の色合い、明るさやコントラストを調整する処理である。これにより、スキャンデータＤ１の色合いなどを統一することで、バーコードの検出精度を向上させることができる。
【００６８】
カラードロップアウト処理は、例えば、スキャンする原稿には印刷されているが、スキャンデータＤ１としては読み取りたくない所望の図形等を消去する処理である。例えば、画像の読み取りをするときに所望の枠線を消したい場合、その枠線を特定の色（例えば、赤色）で描く。そして、カラードロップアウト処理でこの特定の色を除去することで、枠線（所望の図形等）を除去することができる。これにより、所望の図形等、即ち、バーコードの検出には不要な図形等を消した状態のスキャンデータＤ１を生成することができ、バーコードの検出精度を向上させることができる。
【００６９】
エッジ強調処理は、文字や線などのエッジを検出し、文字などの輪郭を明確化する処理である。これにより、文字や線などの輪郭がはっきりするため、バーコードの検出精度を向上させることができる。
【００７０】
モノクロ化レベル調整処理は、白色と黒色の色合いや明るさなどを調整する処理である。モノクロ化レベル調整処理では、例えば、カラーの画像をモノクロとしてスキャンした際に、スキャンデータＤ１の各部分の色を、予め設定された閾値に基づいて、白色として認識すべきか、黒色として認識すべきかを判定する。そして、判定結果に基づいて、スキャンデータＤ１の各部分の色合いなどを調整する。この場合にも、スキャンデータＤ１の色合いなどを統一することで、バーコードの検出精度を向上させることができる。
【００７１】
上記した第１群画像処理９５は、スキャンデータＤ１の色のスケールによっては実行できない、あるいは実行する必要がないものがある。このため、ドライバＵＩモジュール２８Ｄは、スキャンパラメータとして設定された色のスケールに基づいて、有効なチェックボックス９３、即ち、ユーザによってチェック可能なチェックボックス９３を変更する。ドライバＵＩモジュール２８Ｄは、スキャンパラメータとしてカラースケールが設定された場合、例えば、パンチ穴除去処理、地色・裏移り色除去処理、カラートーン調整処理、カラードロップアウト処理、エッジ強調処理のチェックボックス９３を有効にする。また、ドライバＵＩモジュール２８Ｄは、スキャンパラメータとしてグレースケールが設定された場合、例えば、カラートーン調整処理、エッジ強調処理のチェックボックス９３を有効にする。また、ドライバＵＩモジュール２８Ｄは、スキャンパラメータとしてモノクロスケールが設定された場合、例えば、エッジ強調処理、モノクロ化レベル調整処理のチェックボックス９３を有効にする。これにより、ユーザは、カラースケールに応じて実行可能な画像処理を考えることなく、実行可能な画像処理の中から所望の画像処理を選択できる。
【００７２】
なお、上記した第１群画像処理９５の種類は、一例であり、他の画像処理でも良い。例えば、カラースケールとして誤差拡散グレーのスケールを含める場合、第１群画像処理９５は、誤差拡散グレーの画像を対象に、バーコードの検出に有益となる処理を含でも良い。ここでいう誤差拡散グレーとは、例えば、誤差拡散法により白色と黒色を用いてグレーを擬似的に表現した１ｂｉｔ疑似グレーである。この場合、例えば、誤差拡散グレーの濃淡調整処理として、１ｂｉｔ疑似グレーのスキャンデータＤ１に対して、色合いや明るさなどを調整する処理が可能となる。そして、誤差拡散グレーのスキャンデータＤ１の色合いなどを統一することで、バーコードの検出精度を向上させることができる。
【００７３】
また、第２群画像処理９６は、文字補正処理から罫線除去処理までが含まれる。第２群画像処理９６は、バーコードの検出処理に有益となる可能性が低い、バーコードの検出処理に影響を与えない、あるいは、バーコードの検出処理に不利益となる処理である。文字補正処理は、例えば、スキャンデータＤ１に含まれる文字を太くする補正や、かすれている文字の色を濃くする補正を行う処理である。また、ノイズ除去処理は、スキャンデータＤ１に含まれる画像のうち、元々の原稿の画像以外のノイズを除去する処理である。罫線除去処理は、ＯＣＲ処理で不要な罫線を除去する処理である。これらの第２群画像処理９６は、スキャンデータＤ１に含まれるバーコードデータを、変更、削除等する可能性がある。このため、後述するように、バーコードの検出処理の後に実行することが好ましい。
【００７４】
また、図６の下部には、決定ボタン９８が表示されている。ドライバＵＩモジュール２８Ｄは、ユーザによって決定ボタン９８を選択されると、選択画面９１の表示をなくし、図５に示す設定画面８１を表示させる。そして、ドライバＵＩモジュール２８Ｄは、ユーザによって設定画面８１の決定ボタン８８を選択されると、図５の設定画面８１及び図６の選択画面９１で設定されたスキャンパラメータを、図２のＳ１２１においてドライバメイン処理モジュール２８Ｂへ出力する（本発明の第１受付手段、第１特定手段の一例）。これにより、図３のＳ１４１において、ドライバ画像処理モジュール２８Ｅは、ドライバメイン処理モジュール２８Ｂを介してドライバＵＩモジュール２８Ｄから受け取ったスキャンパラメータ、即ち、ユーザが設定画面８１及び選択画面９１で設定したスキャンパラメータに基づいて、バーコードの検出処理を実行する。
【００７５】
＜検出精度として「早い」が設定された場合＞
次に、図５に示す設定欄８６の検出精度として「早い」が設定された場合の画像処理の流れについて説明する。図７は、ドライバ画像処理モジュール２８Ｅによる画像処理の一例を示している。図７の処理は、図３のＳ１４１の画像処理に対応する。以下の説明では、一例として、カラーのスキャンデータＤ１を対象に、画像処理を行う場合について説明する。なお、ドライバ画像処理モジュール２８Ｅは、例えば、スキャンデータＤ１に複数の原稿のデータが含まれている場合、１枚の原稿のデータごとに図７に示す処理を実行する。
【００７６】
検出精度として「早い」が設定された場合、ドライバ画像処理モジュール２８Ｅは、ユーザによってチェックボックス９３（図６参照）で選択された実行可能画像処理９７（本発明の対象画像処理の一例）のうち、バーコードの検出に有益な第１群画像処理９５に含まれるものを、バーコードの検出処理（Ｓ２１９）の前に第１画像処理として実行する（Ｓ２１５）。また、ドライバ画像処理モジュール２８Ｅは、ユーザによって選択された実行可能画像処理９７のうち、第２群画像処理９６に含まれるものを、バーコードの検出処理（Ｓ２１９）の後に第２画像処理として実行する（Ｓ２２９）。
【００７７】
詳述すると、まず、ドライバ画像処理モジュール２８Ｅは、図７のＳ２１１において、図４のＳ２０１と同様に、原稿検知処理を実行し、スキャンデータＤ１から原稿スキャンデータ７１を検出する。次に、ドライバ画像処理モジュール２８Ｅは、図４のＳ２０３，Ｓ２０５と同様に、白紙検知処理、スケール検知処理を実行する（Ｓ２１３）。なお、仮にＳ２１３の白紙検知処理において、原稿スキャンデータ７１が白紙原稿のデータであった場合、ドライバ画像処理モジュール２８Ｅは、画像処理中の原稿スキャンデータ７１を破棄し、次のページの原稿スキャンデータ７１に対してＳ２１１からの処理を実行する。
【００７８】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１５において、Ｓ２１３の画像処理を実行した原稿スキャンデータ７１を対象に、第１画像処理を実行する。上記したように、ドライバ画像処理モジュール２８Ｅは、Ｓ２１５において、ユーザによって選択された実行可能画像処理９７のうち、バーコードの検出に有益な第１群画像処理９５に含まれるものを実行する。これにより、後述するＳ２１９におけるバーコードの検出処理の検出精度を向上することができる。また、ユーザは、選択した画像処理がバーコードの検出処理に与える影響や、選択した画像処理を実行すべきタイミングを考える必要がなく、所望の実行可能画像処理９７を任意に選択できる。
【００７９】
次に、ドライバ画像処理モジュール２８Ｅは、第１画像処理を実行した原稿スキャンデータ７１をメモリ１４（図１参照）に記憶する（Ｓ２１６）。これは、次の二値化処理において原稿スキャンデータ７１のスケールを変更するためである。
【００８０】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１６で記憶した原稿スキャンデータ７１をメモリ１４から読み出して二値化処理を実行する（Ｓ２１７）。ドライバ画像処理モジュール２８Ｅは、カラーの原稿スキャンデータ７１を、白色及び黒色の２色に２値化する。これにより、カラー画像をモノクロ画像に変換することで、バーコードの検出精度を向上させることができる。
【００８１】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１７で二値化した原稿スキャンデータ７１からバーコードを検出する処理を実行する（Ｓ２１９）。ドライバ画像処理モジュール２８Ｅは、例えば、原稿スキャンデータ７１からバーコードを示す画像データであるバーコードデータを検出し、そのバーコードデータから上記したバーコード情報（バーコードの文字情報など）を検出する。バーコードデータの検出方法は、例えば、バーコードの所定規格に準拠したバーの集合（配列）や、スタートキャラクタなどが原稿スキャンデータ７１に含まれているか否かについて、パターンマッチング技術等を用いて判断する方法でもよい。また、２次元コードのバーコードデータの検出方法は、例えば、所定のファインダパターンが原稿スキャンデータ７１に含まれているか否かについて、パターンマッチング技術等を用いて判断する方法でもよい。また、ドライバ画像処理モジュール２８Ｅは、上記した図５に示すチェックボックス８４において、バーコードの種類を選択された場合、その選択された種類のバーコードのみを検出する処理を実行する。また、例えば、図５のチェックボックス８３をチェックされ、チェックボックス８４をチェックされなかった場合、ドライバ画像処理モジュール２８Ｅは、全ての種類のバーコードの検出を試みる。
【００８２】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１９において正常にバーコードを検出できたか否かを判断する（Ｓ２２１）。例えば、ドライバ画像処理モジュール２８Ｅは、上記したパターンマッチングの処理において、所望のパターンと一致する画像を検出できた場合に、正常にバーコードを検出できたと判断する。ドライバ画像処理モジュール２８Ｅは、正常にバーコードを検出できたことに応じて（Ｓ２２１：ＹＥＳ）、検出したバーコード情報をメモリ１４に記憶する（Ｓ２２７）。
【００８３】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１６で記憶した原稿スキャンデータ７１、即ち、二値化処理（Ｓ２１７）によってモノクロ化する前の原稿スキャンデータ７１をメモリ１４から読み出し、第２画像処理を実行する（Ｓ２２９）。上記したように、ドライバ画像処理モジュール２８Ｅは、Ｓ２２９において、ユーザに選択された実行可能画像処理９７のうち、第２群画像処理９６に含まれるものを実行する。これにより、仮に、バーコードの検出処理に影響を与える画像処理（文字補正処理など）がユーザに選択された場合であっても、その選択された画像処理をバーコードの検出処理後に実行することで、検出精度の低下を抑制できる。例えば、仮に、アプリケーションプログラム２６のＯＣＲ処理の精度を上げるために、ユーザが文字補正処理やノイズ除去処理を選択したとしても、それらの処理がバーコードの検出処理後に実行される。これにより、ユーザは、選択する画像処理がバーコードの検出処理に与える影響を考える必要がなく、所望の実行可能画像処理９７を任意に選択できる。
【００８４】
次に、ドライバ画像処理モジュール２８Ｅは、図４に示すスケール変換処理と同様に、上記したＳ２１３で検出した色のスケールに基づいて、第２画像処理後の原稿スキャンデータ７１を対象にスケール変換処理を実行する（Ｓ２３１）。次に、ドライバ画像処理モジュール２８Ｅは、スケール変換処理を実行した原稿スキャンデータ７１を対象として、その他の処理を実行する（Ｓ２３３）。ここでいうその他の処理とは、原稿スキャンデータ７１に対して実行することで有益な処理であり、例えば、ユーザによる選択を受け付けずに強制的に実行する処理である。その他の処理としては、例えば、原稿後端自動検知処理、原稿ふち補正処理、向き自動判別処理がある。原稿後端自動検知処理は、例えば、スキャンパラメータとしてＡ４サイズを指定されたにも係わらず、Ａ４サイズに比べて小さい原稿が読み込まれた場合、原稿スキャンデータ７１をＡ４のサイズにするように、原稿の後端の足りない部分に白色の画像を追加する処理である。原稿ふち補正処理は、原稿スキャンデータ７１に含まれる原稿（ページ）の外周を、所定の色（白色や黒色）で塗りつぶす処理である。向き自動判別処理は、原稿スキャンデータ７１の原稿の向きを検出する処理である。
【００８５】
ドライバ画像処理モジュール２８Ｅは、Ｓ２３３を実行し図７の処理を終了させると、その他の画像処理が終了した原稿スキャンデータ７１と、Ｓ２１９で検出したバーコード情報を、ドライバメイン処理モジュール２８Ｂへ出力する。この処理は、図３のＳ１４３の処理に対応する。上記したように、ドライバメイン処理モジュール２８Ｂは、アプリケーションプログラム２６からバーコード情報の問い合わせを受け取ると、アプリケーションプログラム２６に対してバーコード情報を出力する（図３のＳ１５５）。そして、アプリケーションプログラム２６は、ドライバメイン処理モジュール２８Ｂから受け取ったスキャンデータＤ１及びバーコード情報を用いた所定の処理を実行する（Ｓ１５７）。これにより、アプリケーションプログラム２６は、高い検出精度で検出されたバーコード情報を取得でき、所定の処理（バーコードが示すデータの記憶先へのアクセなど）を精度良く実行できる。
【００８６】
一方で、ドライバ画像処理モジュール２８Ｅは、図７のＳ２２１において、正常にバーコードを検出できなかった場合（Ｓ２２１：ＮＯ）、ループＬ１を３回連続して実行したか否かを判断する（Ｓ２２３）。ここでいうループＬ１とは、図７に破線で示すように、Ｓ２１７、Ｓ２１９、Ｓ２２１、Ｓ２２３、Ｓ２２５を繰り返し実行する処理である。ループＬ１の詳細は後述する。
【００８７】
ドライバ画像処理モジュール２８Ｅは、ループＬ１を３回連続で実行していないと判断した場合（Ｓ２２３：ＮＯ）、Ｓ２１７の二値化処理で用いるパラメータ（以下、二値化パラメータという）を調整する（Ｓ２２５）。ドライバ画像処理モジュール２８Ｅは、例えば、Ｓ２１７の二値化処理において白色か黒色かを判断するための基準となる二値化パラメータ（色のビット値など）を変更する（Ｓ２２５）。ドライバ画像処理モジュール２８Ｅは、Ｓ２２５で二値化パラメータを調整した後、Ｓ２１７において、改めてメモリ１４から読み出した原稿スキャンデータ７１を対象に、調整後の二値化パラメータに基づいて二値化処理を実行する。これにより、バーコードの検出精度の向上が期待できる。ドライバ画像処理モジュール２８Ｅは、Ｓ２１７、Ｓ２１９の処理を再度実行し、Ｓ２２１の判断処理を実行する。即ち、Ｓ２２３のループＬ１を判断する処理は、バーコード検出処理が３回連続して失敗されるまで繰り返し実行される。
【００８８】
ドライバ画像処理モジュール２８Ｅは、ループＬ１を３回連続で実行した、即ち、バーコードの検出処理に３回失敗したと判断した場合（Ｓ２２３：ＹＥＳ）、Ｓ２２７以降の処理を実行する。この場合、ドライバ画像処理モジュール２８Ｅは、バーコード情報として、検出できなかったことを示す設定をする（Ｓ２２７）。
【００８９】
なお、図７に示す処理の内容や順番は、一例であり、適宜変更可能である。例えば、ドライバ画像処理モジュール２８Ｅは、Ｓ２１７の二値化処理や、それに関連するＳ２２３，Ｓ２２５の処理を実行しなくとも良い。この場合、ドライバ画像処理モジュール２８Ｅは、バーコードの検出の判断（Ｓ２２１）を一回だけ実行することとなる。
【００９０】
また、図７に示す例では、図６の選択画面９１においてユーザが個別に選択した実行可能画像処理９７を対象として、バーコードの検出処理の前に実行すべきか否かを判断した。しかしながら、例えば、ドライバ画像処理モジュール２８Ｅは、ユーザが選択した処理に含まれる画像処理を対象として、バーコードの検出処理の前に実行すべきか否かを判断しても良い。例えば、アプリケーションプログラム２６においてユーザがＯＣＲ処理の精度を選択し、その選択結果に応じて実行する画像処理が自動的に決定される場合、ドライバ画像処理モジュール２８Ｅは、その自動的に決定された画像処理群に含まれる画像処理を対象に、バーコードの検出処理の前に実行すべきか否かを判断してもよい。
【００９１】
また、上記した例では、カラーの原稿スキャンデータ７１を対象に画像処理を行う場合について説明したが、他のカラースケールの原稿スキャンデータ７１を対象に画像処理を実行する場合は、第１画像処理（Ｓ２１５）の内容を適宜変更しても良い。例えば、モノクロスケールの原稿スキャンデータ７１の場合には、第１画像処理として、エッジ強調処理、モノクロ化レベル調整処理を実行しても良い。
【００９２】
また、スキャンパラメータとしてモノクロスケールが設定された場合、ユーザは、モノクロスケールの原稿スキャンデータ７１の出力を望んでいる。この場合、二値化処理後（モノクロ化後）の原稿スキャンデータ７１を、そのままＳ２２９以降の処理に用いて、出力データとして用いることが可能となる。これにより、第２画像処理を開始する前に、Ｓ２１６で記憶した二値化処理（Ｓ２１７）前の原稿スキャンデータ７１をメモリ１４から読み出す必要がなくなり、二値化処理（Ｓ２１７）及びバーコード検出処理（Ｓ２２１）を実行した後の原稿スキャンデータ７１を用いて、第２画像処理を迅速に開始できる。
【００９３】
＜検出精度として「高精度」が設定された場合＞
次に、図５に示す設定欄８６の検出精度として「高精度」が設定された場合の画像処理の流れについて、図８を用いて説明する。なお、以下の説明では、上記した図７と同様の内容については、同一符号を付し、その説明を適宜省略する。
【００９４】
検出精度として「高精度」が設定された場合、ドライバ画像処理モジュール２８Ｅは、ユーザの選択内容に係わらず、バーコードの検出に有益な第１群画像処理９５の全て（ただし、カラースケールに応じて実行可能な処理）を、バーコードの検出処理（Ｓ２１９）の前に第１画像処理として実行する（図８のＳ２４３）。また、ドライバ画像処理モジュール２８Ｅは、ユーザによって選択された実行可能画像処理９７の全てを、バーコードの検出処理（Ｓ２１９）の後に第２画像処理として実行する（Ｓ２４５）。
【００９５】
詳述すると、まず、ドライバ画像処理モジュール２８Ｅは、図８のＳ２１１の原稿検知処理、Ｓ２１３の白紙検知処・スケール検知処理を実行する。次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２１３の画像処理を実行した原稿スキャンデータ７１をメモリ１４に記憶する（Ｓ２４１）。
【００９６】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２４３において、メモリ１４に記憶したスケール検知処理後の原稿スキャンデータ７１を読み出し、読み出した原稿スキャンデータ７１を対象に、第１画像処理を実行する。上記したように、ドライバ画像処理モジュール２８Ｅは、Ｓ２４３において、第１群画像処理９５の全てを実行する。例えば、スキャンパラメータとして２４ｂｉｔのカラースケールが設定されていた場合、ドライバ画像処理モジュール２８Ｅは、第１画像処理として、パンチ穴除去処理、地色・裏移り色除去処理、カラートーン調整処理、カラードロップアウト処理、エッジ強調処理を全て実行する。これにより、ユーザによって高精度が選択された場合に、その要望に応えてバーコードの検出精度をより確実に向上することができる。
【００９７】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２４３の第１画像処理を実行した原稿スキャンデータ７１を対象に二値化処理を実行し（Ｓ２１７）、二値化した原稿スキャンデータ７１からバーコードを検出する（Ｓ２１９）。ドライバ画像処理モジュール２８Ｅは、Ｓ２１９において正常にバーコードを検出できたか否かを判断する（Ｓ２２１）。ドライバ画像処理モジュール２８Ｅは、正常にバーコードを検出できたことに応じて（Ｓ２２１：ＹＥＳ）、検出したバーコードに係わるバーコード情報をメモリ１４に記憶する（Ｓ２２７）。
【００９８】
次に、ドライバ画像処理モジュール２８Ｅは、Ｓ２４１で記憶した、即ち、第１画像処理（Ｓ２１７）前の原稿スキャンデータ７１をメモリ１４から読み出し、第２画像処理を実行する（Ｓ２４５）。上記したように、ドライバ画像処理モジュール２８Ｅは、ユーザによって選択された実行可能画像処理９７の全てを実行する（Ｓ２４５）。これにより、バーコードの検出処理に影響を与える画像処理をバーコードの検出処理後に実行することで、検出精度の低下を抑制することができる。従って、ユーザの選択に係わらず、上記したＳ２４３の第１画像処理で実行可能な第１群画像処理９５のすべてを実行する。その一方で、出力する原稿スキャンデータ７１に対しては、Ｓ２４５の第２画像処理において、ユーザによって選択された実行可能画像処理９７を実行する。そして、ドライバ画像処理モジュール２８Ｅは、第２画像処理後の原稿スキャンデータ７１を対象にスケール変換処理（Ｓ２３１）を実行し、スケール変換処理を実行した原稿スキャンデータ７１を対象にその他の処理を実行する（Ｓ２３３）。
【００９９】
一方で、ドライバ画像処理モジュール２８Ｅは、Ｓ２２１において、正常にバーコードを検出できなかった場合（Ｓ２２１：ＮＯ）、ループＬ１を５回連続して実行したか否かを判断する（Ｓ２２３）。ここでいうループＬ１とは、図８に示すＳ２１７、Ｓ２１９、Ｓ２２１、Ｓ２２３、Ｓ２２５を繰り返し実行する処理である。ドライバ画像処理モジュール２８Ｅは、ループＬ１を５回連続で実行していないと判断した場合（Ｓ２２３：ＹＥＳ）、二値化パラメータを調整し（Ｓ２２５）、Ｓ２１７以降の処理を実行する。従って、高精度の場合、ドライバ画像処理モジュール２８Ｅは、バーコード検出処理を５回連続して失敗するまで繰り返し実行する。これにより、図７に示す「早い」を設定された場合に比べて、二値化パラメータの調整処理の回数を多くする。その結果、二値化パラメータの調整によってバーコードを検出する可能性が高くなる。
【０１００】
また、ドライバ画像処理モジュール２８Ｅは、ループＬ１を５回連続で実行したと判断した場合（Ｓ２２３：ＮＯ）、ループＬ２を３回実行したか否かを判断する（Ｓ２４７）。ここでいうループＬ２とは、図８に示すＳ２４３、Ｓ２１７、Ｓ２１９、Ｓ２２１、Ｓ２２３、Ｓ２４７、Ｓ２４９を繰り返し実行する処理である。ドライバ画像処理モジュール２８Ｅは、ループＬ２を３回実行していないと判断した場合（Ｓ２４７：ＹＥＳ）、Ｓ２４３で実行するカラートーン調整処理のパラメータ（以下、トーン調整パラメータという）を調整する（Ｓ２４９）。ドライバ画像処理モジュール２８Ｅは、Ｓ２４９でトーン調整パラメータを調整した後、Ｓ２４３（第１画像処理）以降の処理を実行する。ドライバ画像処理モジュール２８Ｅは、Ｓ２４３において、改めてメモリ１４から読み出した原稿スキャンデータ７１を対象に、調整後のトーン調整パラメータに基づいてカラートーン調整処理を実行する。また、ドライバ画像処理モジュール２８Ｅは、第１群画像処理９５に含まれる他の画像処理（パンチ穴除去処理など）を実行する。
【０１０１】
本実施形態のドライバ画像処理モジュール２８Ｅは、Ｓ２４９におけるパラメータ調整を最大で３回実行する。ドライバ画像処理モジュール２８Ｅは、例えば、１回目のＳ２４９の処理として、コントラストを大きくするトーン調整パラメータを設定する。これにより、Ｓ２４３のカラートーン調整処理においてバーコードを他の画像に比べて浮き出させて、バーコードの検出精度を向上できる。また、ドライバ画像処理モジュール２８Ｅは、例えば、２回目のＳ２４９の処理として、コントラストを小さくするトーン調整パラメータを設定する。これにより、Ｓ２４３のカラートーン調整処理においてバーコード以外の不要な文字等をぼかして、バーコードの検出精度を向上できる。また、ドライバ画像処理モジュール２８Ｅは、例えば、３回目のＳ２４９の処理として、ハイライトを小さくするトーン調整パラメータを設定する。これにより、Ｓ２４３のカラートーン調整処理においてバーコード以外の不要な文字等を白飛びさせて、バーコードの検出精度を向上できる。なお、Ｓ２４９のトーン調整パラメータの調整は、上記した内容に限定されない。また、上記したループＬ１を実行する回数やループＬ２を実行する回数は、一例であり、適宜変更可能である。
【０１０２】
また、ドライバ画像処理モジュール２８Ｅは、Ｓ２４７において、ループＬ２を３回実行したと判断した場合（Ｓ２４９：ＮＯ）、Ｓ２２７以降の処理を実行する。従って、ドライバ画像処理モジュール２８Ｅは、Ｓ２４３から再度実行する処理（ループＬ２）を３回実行してもバーコードを検知できない場合（Ｓ２１９を合計で１５回実行した場合）、バーコード情報として検出できなかったことを示す設定をする（Ｓ２２７）。
【０１０３】
＜検出精度として「普通」が選択された場合＞
次に、図５に示す設定欄８６の検出精度として「普通」が設定された場合の画像処理の流れについて、図９を用いて説明する。なお、以下の説明では、上記した図８と同様の内容については、同一符号を付し、その説明を適宜省略する。
【０１０４】
図９に示すように、検出精度として「普通」が設定された場合、ドライバ画像処理モジュール２８Ｅは、図８におけるＳ２４７及びＳ２４９を実行しない。詳述すると、ドライバ画像処理モジュール２８Ｅは、Ｓ２２３において、ループＬ１を５回連続で実行したと判断した場合（Ｓ２２３：ＮＯ）、Ｓ２２７以降の処理を実行する。即ち、検出精度として「普通」が設定された場合、ドライバ画像処理モジュール２８Ｅは、二値化パラメータを５回調整するものの、トーン調整パラメータの調整は実行しない。これにより、図７に示す検出精度が「早い」場合に比べてバーコードの検出精度の向上が期待できる。また、バーコードが検出できない場合に、図８に示す「高精度」に比べて処理を迅速に終了できる。
【０１０５】
上記したように、本実施形態のドライバ画像処理モジュール２８Ｅでは、実行可能画像処理９７（複数の画像処理の一例）のうち、予め設定された第１群画像処理９５（第１群の画像処理）をバーコードの検出処理（Ｓ２１９）の前に実行する。このため、第１群画像処理９５として、バーコードデータの検出精度を上げる処理など、検出処理に有益な処理を事前に実行することができる。これにより、各種の処理の実行タイミングを設定することで、バーコードデータの検出処理を適切に実行できる。
【０１０６】
因みに、ＬＣＤ１６、入力Ｉ／Ｆ１８は、ユーザインタフェースの一例である。ＰＣ１０は、情報処理装置の一例である。スキャナドライバ２８は、制御プログラムの一例である。ドライバメイン処理モジュール２８Ｂは、第１取得手段、出力手段の一例である。ドライバＵＩモジュール２８Ｄは、第１受付手段、第１特定手段、第２特定手段の一例である。ドライバ画像処理モジュール２８Ｅは、第１実行手段、検出手段、第２実行手段、出力手段の一例である。
【０１０７】
＜実施例の効果＞
上記した実施形態によれば、以下の効果を奏する。
【０１０８】
前記第１実行手段は、前記第１画像処理として、前記対象画像処理に含まれ、且つ前記第１群の画像処理に含まれる処理を実行し、前記第２実行手段は、前記第２画像処理として、前記対象画像処理に含まれ、且つ前記第１群の画像処理とは異なる処理を実行する。これにより、第１操作入力に基づいて特定された対象画像処理に含まれ、且つバーコードデータの検出処理に有益な処理を、第１画像処理として事前に実行することができる。
【０１０９】
前記第２実行手段は、前記第１実行手段により前記第１画像処理が実行された前記スキャンデータに、前記第２画像処理を実行する。これにより、第２実行手段は、第１実行手段の処理結果を利用して、処理の効率化、高速化を図ることができる。
【０１１０】
前記第１実行手段は、前記第１画像処理として、前記第１群の画像処理のうち実行可能な処理の全てを実行し、前記第２実行手段は、前記第２画像処理として、前記対象画像処理の全てを実行する。これにより、第１操作入力の内容に係わらず、バーコードデータの検出処理に有益な全ての処理を、第１画像処理として実行することで、バーコードの検出精度の向上などを確実に図ることができる。
【０１１１】
前記第２実行手段は、前記第１取得手段により取得された前記スキャンデータに、前記第２画像処理を実行する。これにより、第２実行手段は、第１実行手段によって第１画像処理が実行される前のスキャンデータを用いる。このため、第２実行手段は、第１実行手段による第１画像処理の影響を受けずに、第２画像処理を実行できる。
【０１１２】
前記第１画像処理は、前記検出手段による前記バーコードデータを検出する処理の精度を上げる処理である。これにより、バーコードの検出処理の前に、第１画像処理を実行することで、バーコードの検出精度を向上できる。
【０１１３】
前記第１実行手段は、前記第１画像処理として、パンチ穴除去処理、地色・裏移り色除去処理、カラートーン調整処理、カラードロップアウト処理、エッジ強調処理、モノクロ化レベル調整処理、誤差拡散グレー濃淡調整処理のうち、少なくとも１つの処理を実行し、前記第２実行手段は、前記第２画像処理として、文字補正処理、ノイズ除去処理、及び罫線除去処理のうち、少なくとも１つの処理を実行する。これにより、バーコードの検出処理に有益な処理を第１画像処理として、バーコードの検出処理に影響を与える虞がある処理を第２画像処理として適切に設定できる。
【０１１４】
当該制御プログラムは、アプリケーションプログラムにより前記スキャンデータを処理する命令を受け付け、前記出力手段は、前記検出手段により検出された前記バーコードデータと、前記第２実行手段により前記第２画像処理が実行された前記スキャンデータとを、前記アプリケーションプログラムに出力する。これにより、バーコードデータを必要とするアプリケーションプログラムに対し、バーコードを精度良く検出して出力できる。
【０１１５】
前記コンピュータを、前記検出手段による前記バーコードデータの検出において要求される検出精度を特定する第２特定手段として機能させ、前記第１実行手段は、前記第２特定手段により特定した前記検出精度が高いことに応じて、前記第１取得手段により取得された前記スキャンデータに、前記第１群の画像処理のうち実行可能な処理の全てを実行し、前記第２特定手段により取得した前記検出精度が低いことに応じて、前記第１取得手段により取得された前記スキャンデータに、前記対象画像処理に含まれ、且つ前記第１群の画像処理に含まれる処理を実行する。これにより、要求される検出精度が高い場合、バーコードの検出処理に有益な処理を全て実行し、検出精度を高めることができる。また、要求される検出精度が低い場合、対象画像処理に含まれる処理のみを実行し、処理結果を迅速に出力できる。従って、要求される検出精度に応じた適切な処理が実行できる。
【０１１６】
また、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。
具体的には、例えば、上記実施形態では、ＰＣ１０のスキャナドライバ２８が、第１画像処理などを実行したが、スキャナ５０のプログラム６１が第１画像処理などを実行しても良い。この場合、スキャナ５０は、本願の情報処理装置の一例である。また、プログラム６１は、本願の制御プログラムの一例である。
また、上記実施形態では、ＣＰＵ１２によってＰＣ１０側の処理が実行される例を説明したが、これに限らない。ＰＣ１０は、図７に示す第１画像処理などを、ＣＰＵ１２に限らず、ＡＳＩＣや他の論理集積回路により実行しても良いし、ＣＰＵ等やＡＳＩＣ、他の論理集積回路を協働させて実行しても良い。
また、本願のコントローラは、ＰＣ１０のＣＰＵ１２だけに限らず、スキャナ５０のＣＰＵ５２でも良く、あるいは、ＣＰＵ１２とＣＰＵ５２とを協働させて処理する構成でも良い。
【符号の説明】
【０１１７】
１  スキャンシステム、１０  ＰＣ、１６  ＬＣＤ、１８  入力Ｉ／Ｆ、２８  スキャナドライバ、２８Ｂ  ドライバメイン処理モジュール、２８Ｄ  ドライバＵＩモジュール、２８Ｅ  ドライバ画像処理モジュール
【図１】
2019047253.tif 000003
【図２】
2019047253.tif 000004
【図３】
2019047253.tif 000005
【図４】
2019047253.tif 000006
【図５】
2019047253.tif 000007
【図６】
2019047253.tif 000008
【図７】
2019047253.tif 000009
【図８】
2019047253.tif 000010
【図９】
2019047253.tif 000011