(57)【特許請求の範囲】
【請求項１】
コンピュータが、
あるデータに対応する第１の符号画像を含む第１の画像データから、前記第１の符号画像に対応するデータを抽出し、
符号画像中に含まれる構成要素のサイズが前記第１の画像データのドットサイズの整数倍であり、且つ抽出した前記データに対応する第２の符号画像を生成し、
前記第１の画像データが示す画像と、さらに、生成した前記第２の符号画像と、を含む画像を示す第２の画像データを生成し、
前記抽出する処理は、前記第１の符号画像の各構成要素のサイズに基づいて、前記各構成要素をグループに分類し、前記グループごとにサイズの平均値を算出し、該平均値と符号画像の規格に応じて記憶部が記憶する、符号画像の構成情報とを比較して、前記第１の符号画像の規格を選択し、選択された規格の中で当該規格に基づいて前記第１の符号画像に対応するデータを抽出できた規格が、前記第１の符号画像に係る規格であると判定する、
ことを特徴とする画像生成方法。
【請求項２】
前記生成する処理は、前記第１の画像データに含まれる前記第１の符号画像が、生成した前記第２の符号画像に置き換えられた第２の画像データを生成する、
ことを特徴とする請求項１記載の画像生成方法。
【請求項３】
コンピュータが、
第一のバーコード又は第一の２次元コードを描画要素として含む電子データから前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出し、
前記第一のバーコード又は前記第一の２次元コードを前記電子データから除去し、
前記第一のバーコード又は前記第一の２次元コードの最小の構成要素のサイズを、前記電子データの出力先のプリンタの解像度におけるドット数に変換した場合に整数値となる値を算出し、
前記値の整数倍のサイズで、前記情報を示す第二のバーコード又は第二の２次元コードの各構成要素を前記電子データに描画する処理を実行し、
前記抽出する処理は、前記第一のバーコード又は前記第一の２次元コードの各構成要素のサイズに基づいて、前記各構成要素をグループに分類し、前記グループごとにサイズの平均値を算出し、該平均値と、バーコード又は２次元コードの規格に応じて記憶部が記憶する、バーコード又は２次元コードの構成情報とを比較して、前記第一のバーコード又は前記第一の２次元コードの規格を選択し、選択された規格の中で当該規格に基づいて前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出できた規格が、前記第一のバーコード又は前記第一の２次元コードに係る規格であると判定する情報処理方法。
【請求項４】
前記描画する処理は、相互に異なる複数のドット数ごとに印字後のドット数を記憶した補正値記憶部を参照して前記値の整数倍のサイズを補正し、前記第二のバーコード又は前記第二の２次元コードの構成要素を描画する請求項３記載の情報処理方法。
【請求項５】
コンピュータに、
第一のバーコード又は第一の２次元コードを描画要素として含む電子データから前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出し、
前記第一のバーコード又は前記第一の２次元コードを前記電子データから除去し、
前記第一のバーコード又は前記第一の２次元コードの最小の構成要素のサイズを、前記電子データの出力先のプリンタの解像度におけるドット数に変換した場合に整数値となる値を算出し、
前記値の整数倍のサイズで、前記情報を示す第二のバーコード又は第二の２次元コードの各構成要素を前記電子データに描画する処理を実行させ、
前記抽出する処理は、前記第一のバーコード又は前記第一の２次元コードの各構成要素のサイズに基づいて、前記各構成要素をグループに分類し、前記グループごとにサイズの平均値を算出し、該平均値と、バーコード又は２次元コードの規格に応じて記憶部が記憶する、バーコード又は２次元コードの構成情報とを比較して、前記第一のバーコード又は前記第一の２次元コードの規格を選択し、選択された規格の中で当該規格に基づいて前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出できた規格が、前記第一のバーコード又は前記第一の２次元コードに係る規格であると判定するプログラム。
【請求項６】
第一のバーコード又は第一の２次元コードを描画要素として含む電子データから前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出する抽出部と、
前記第一のバーコード又は前記第一の２次元コードを前記電子データから除去する除去部と、
前記第一のバーコード又は前記第一の２次元コードの最小の構成要素のサイズを、前記電子データの出力先のプリンタの解像度におけるドット数に変換した場合に整数値となる値を算出する算出部と、
前記値の整数倍のサイズで、前記情報を示す第二のバーコード又は第二の２次元コードの各構成要素を前記電子データに描画する描画部とを有し、
前記抽出部は、前記第一のバーコード又は前記第一の２次元コードの各構成要素のサイズに基づいて、前記各構成要素をグループに分類し、前記グループごとにサイズの平均値を算出し、該平均値と、バーコード又は２次元コードの規格に応じて記憶部が記憶する、バーコード又は２次元コードの構成情報とを比較して、前記第一のバーコード又は前記第一の２次元コードの規格を選択し、選択された規格の中で当該規格に基づいて前記第一のバーコード又は前記第一の２次元コードが示す情報を抽出できた規格が、前記第一のバーコード又は前記第一の２次元コードに係る規格であると判定する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成方法、情報処理方法、プログラム、及び情報処理装置に関する。
【背景技術】
【０００２】
各種のアプリケーションプログラムによって生成される文書データ（ラスターデータ又はベクトルデータであるかは問わない。）は、プリンタドライバによって出力先のプリンタに対応した印刷データに変換される。変換元の文書データが解像度の概念を有さないデータ形式である場合、又は変換元の文書データの解像度が出力先のプリンタの解像度と異なる場合、変換後の印刷データの内容は、変換元の文書データの内容に対して誤差を含む可能性がある。すなわち、文書データが紙に出力された結果（以下、「紙文書」という。）は、元の文書データの内容に対して誤差を含む可能性がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２７２６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
文書データがバーコードや２次元コード（以下、「バーコード等」という。）を含む場合、斯かる誤差は、バーコード等に関しても発生する可能性がある。【０００５】
図１は、バーコードの印刷時の誤差の例を説明するための図である。図１において、矩形Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、及びＢ６は、バーコードの黒い線（バー）を示す。入力座標系とは、文書データに含まれているバーコードの座標系をいう。出力座標系とは、出力先のプリンタの解像度に応じた座標系をいう。図１における格子は、出力座標系における１ドットを表現している。【０００６】
入力座標系において、矩形Ｂ２の左右両側、矩形Ｂ４右側、矩形Ｂ６の両側は、ドットの区切りに一致していない。例えば、入力座標系の単位がインチである場合や、入力座標系における解像度が出力座標系における解像度と異なる場合にこのような状態が生じうる。この場合、プリンタドライバは、出力座標系に合うように、各矩形の幅を補正する。例えば、矩形Ｂ２及び矩形Ｂ６は、両側方向に拡張されて３ドットに補正されている。また、矩形Ｂ４は、右方向に拡張されて３ドットに補正されている。このような機械的な補正により、印刷後のバーコードは、文書データに含まれているバーコードに対して誤差を有することになる。【０００７】
また、図２は、２次元コードの印刷時の誤差の例を説明するための図である。図２においても、図１において説明した原理と同様の原理によって、入力座標系における２次元コードと出力座標系における２次元コードとの間には、誤差が発生する可能性がある。【０００８】
図１や図２において示したような誤差は、出力後の紙文書に印字されたバーコード等を読み取る際に影響を及ぼす可能性が有る。すなわち、当該バーコード等が表現する本来の値を正しく読み取れない可能性がある。【０００９】
そこで、一側面では、画像データに含まれる符号画像に誤差が含まれる可能性を低減させることのできる画像生成方法、情報処理方法、プログラム、及び情報処理装置を目的とする。
【課題を解決するための手段】
【００１０】
一つの案では、画像生成方法は、コンピュータが、あるデータに対応する第１の符号画像を含む第１の画像データから、前記第１の符号画像に対応するデータを抽出し、符号画像中に含まれる構成要素のサイズが前記第１の画像データのドットサイズの整数倍であり、且つ抽出した前記データに対応する第２の符号画像を生成し、前記第１の画像データが示す画像と、さらに、生成した前記第２の符号画像とを含む画像を示す第２の画像データを生成する。
【発明の効果】
【００１１】
一態様によれば、画像データに含まれる符号画像に誤差が含まれる可能性を低減させることができる。
【図面の簡単な説明】
【００１２】
【図１】バーコードの印刷時の誤差の例を説明するための図である。
【図２】２次元コードの印刷時の誤差の例を説明するための図である。
【図３】第一の実施の形態における情報処理システムの構成例を示す図である。
【図４】第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図５】第一の実施の形態における情報処理装置の機能構成例を示す図である。
【図６】第一の実施の形態における情報処理装置が実行する処理手順の一例を説明するためのフローチャートである。
【図７】中点画像を説明するための図である。
【図８】第一の実施の形態のコード領域情報の構成例を示す図である。
【図９】第一の実施の形態の規約情報記憶部の構成例を示す図である。
【図１０】バーコード構成情報の構成例を示す図である。
【図１１】補正バーコードの基本情報の構成例を示す図である。
【図１２】第一の実施の形態のパターン情報記憶部の構成例を示す図である。
【図１３】第一の実施の形態における補正後のバーコードの描画例を示す図である。
【図１４】第一の実施の形態の規格判定処理の処理手順の一例を説明するためのフローチャートである。
【図１５】文書データのデータ構造の一例を示す図である。
【図１６】第二の実施の形態における情報処理装置が実行する処理手順の一例を説明するためのフローチャートである。
【図１７】ＱＲコード（登録商標）とマキシコードの一例を示す図である。
【図１８】第二の実施の形態のコード領域情報の構成例を示す図である。
【図１９】第二の実施の形態の規約情報記憶部の構成例を示す図である。
【図２０】２次元コード構成情報の構成例を示す図である。
【図２１】補正２次元コードの基本情報の構成例を示す図である。
【図２２】第二の実施の形態における補正後のバーコードの描画例を示す図である。
【図２３】プリンタのドットゲインを説明するための図である。
【図２４】第三の実施の形態における情報処理システムの構成例を示す図である。
【図２５】第三の実施の形態における情報処理装置の機能構成例を示す図である。
【図２６】キャリブレーションデータの印刷処理の処理手順の一例を説明するためのフローチャートである。
【図２７】キャリブレーションデータの一例を示す図である。
【図２８】ドットゲインに対する補正値の生成処理の処理手順の一例を説明するためのフローチャートである。
【図２９】補正値記憶部の構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、第一の実施の形態における情報処理システムの構成例を示す図である。図３において、情報処理装置１０とプリンタ２０とは、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して通信可能に接続されている。
【００１４】
情報処理装置１０は、符号画像の一例であるバーコードを含む文書データの印刷データの生成等を実行するコンピュータである。情報処理装置１０は、生成された印刷データをプリンタ２０に送信する。
【００１５】
プリンタ２０は、情報処理装置１０より送信された印刷データを印刷用紙に印字する。
【００１６】
図４は、第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。図４の情報処理装置１０は、それぞれバスBで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１７】
情報処理装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１８】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
【００１９】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００２０】
図５は、第一の実施の形態における情報処理装置の機能構成例を示す図である。図５において、情報処理装置１０は、コード領域抽出部１１、コード情報抽出部１２、補正コード情報算出部１３、コード領域除去部１４、補正コード描画部１５、印刷データ生成部１６、及び印刷データ送信部１７等を有する。これら各部は、情報処理装置１０にインストールされたプログラムがＣＰＵ１０４に実行させる処理により実現される。情報処理装置１０は、また、規約情報記憶部１２１及びパターン情報記憶部１２２等を有する。これら各記憶部は、補助記憶装置１０２又は情報処理装置１０とネットワークを介して接続される記憶装置等を用いて実現可能である。
【００２１】
コード領域抽出部１１は、印刷対象とされた文書データから、バーコードを含む矩形領域を抽出する。文書データは、電子データの一例であり、そのデータ形式は、所定のものに限定されない。また、便宜上、「文書」という用語が用いられているが、文書データの描画内容は、文書でなくてもよい。例えば、画像が含まれていてもよいし、図形が含まれていてもよいし、帳票形式の文書であってもよい。なお、ここでは、便宜上、文書データは、ラスターデータ（イメージデータ）であるとし、その一部分に一以上のバーコード（のイメージ）が描画されていることとする。
【００２２】
コード情報抽出部１２は、コード領域抽出部１１によって抽出された領域から、バーコードの構成情報や、バーコードが示す情報（バーコードに埋め込まれた情報又はバーコードが表現する情報）等を抽出する。補正コード情報算出部１３は、補正バーコードを構成するバーのサイズ（幅）等を算出する。補正バーコードとは、文書データがプリンタ２０に印刷された際に、バーコードの印字状態が、バーコードの示すべき情報に対して誤差を含まないようにするために、バーの幅等が補正されたバーコードをいう。
【００２３】
コード領域除去部１４は、文書データに描画されているバーコードを文書データから除去する。補正コード描画部１５は、補正バーコードを文書データに描画する。印刷データ生成部１６は、文書データについて、プリンタ２０に対応した印刷データ（ＰＤＬ（Page Description Language）データ）を生成する。印刷データ送信部１７は、印刷データをプリンタ２０に送信する。
【００２４】
規約情報記憶部１２１は、バーコードの規格ごとに、バーコードの規約情報（構成情報）を記憶する。バーコードの規約情報には、バーコードの構成要素（バー）の幅等が規定されている。パターン情報記憶部１２２は、バーコードの規格ごとに、パターン情報を記憶する。パターン情報とは、バーの配列と、当該配列が表現するキャラクタ（文字）との対応情報をいう。なお、キャラクタの集合（キャラクタ群）は、バーコードの示す情報である。
【００２５】
以下、情報処理装置１０が実行する処理手順について説明する。図６は、第一の実施の形態における情報処理装置が実行する処理手順の一例を説明するためのフローチャートである。
【００２６】
例えば、補助記憶装置１０２に記憶されている文書データの印刷指示の入力に応じ、コード領域抽出部１１は、印刷指示の対象として指定された文書データをメモリ装置１０３に読み込む（Ｓ１０１）。続いて、コード領域抽出部１１は、文書データに関して、中点画像を生成する（Ｓ１０２）。中点画像とは、文書データの水平方向又は垂直方向において連続している黒ドットの中点を抽出し、抽出された中点のドットによって形成される画像をいう。
【００２７】
図７は、中点画像を説明するための図である。例えば、図７において（１）が、文書データに含まれているバーコードの一部であるとすると、当該バーコードに関しては、（２）に示されるような中点画像が抽出される。
【００２８】
なお、文書データには、バーコード以外に、文字、画像、又は図形等も含まれているが、これらの描画要素に関しても、中点が抽出され、当該中点に対応するドットが中点画像に含められる。
【００２９】
続いて、コード領域抽出部１１は、中点画像に関して、直線の認識処理を実行する（Ｓ１０３）。直線の認識処理によって、文字等の不規則な描画要素より抽出された中点画像に係るドットが除去される。バーコードに関して抽出された中点画像は、図７の（２）に示されるように、直線を形成する。したがって、バーコードに関して抽出された中点画像は、直線の認識処理によって除去されずに残る。なお、文書データが、帳票である場合や、表を含む場合、帳票又は表の罫線より抽出された中点画像も直線を形成するため、除去されずに残る。以降の説明における中点画像は、直線以外は除去された中点画像をいう。
【００３０】
続いて、コード領域抽出部１１は、中点画像において、直線の集合の密度が閾値を超える領域（以下、「コード領域」という。）の有無を判定する（Ｓ１０４）。一般的に、バーコードより抽出された直線の密度は、罫線より抽出された直線の集合よりも密度が高い。閾値は、これらの密度の相違を区別可能な値であればよい。すなわち、ステップＳ１０４では、バーコード領域である可能性の高い領域の有無が判定される。
【００３１】
コード領域が一以上有る場合（Ｓ１０４でＹｅｓ）、コード領域抽出部１１は、一つのコード領域を処理対象（以下、「対象領域」という。）とする。コード領域抽出部１１は、文書データにおいて、対象領域内に含まれる各矩形の幅及び矩形間の間隔を抽出する（Ｓ１０５）。ここでは、中点画像ではなく、文書データが処理対象とされる。例えば、図７の例では、（１）に示されるような画像から、各矩形の幅及び矩形間の間隔が抽出される。
【００３２】
続いて、コード領域抽出部１１は、抽出された情報（以下、「コード領域情報」という。）をメモリ装置１０３に記憶する（Ｓ１０６）。
【００３３】
図８は、第一の実施の形態のコード領域情報の構成例を示す図である。図８において、一つ（一行）のコード領域情報は、一つのコード領域に対応し、範囲情報及び配列情報等を含む。
【００３４】
範囲情報は、例えば、文書データの左上頂点を（０，０）とした場合の、コード領域の左上頂点（Ｘ１，Ｙ１）と右下頂点（Ｘ２，Ｙ２）の座標値（単位はドット（画素））である。配列情報は、範囲情報が示す範囲における黒い幅と白い幅との配列である。ステップＳ１０５において抽出された矩形の幅は、黒い幅として記憶される。ステップＳ１０５において抽出された矩形間の間隔は、白い幅として記憶される。なお、幅の単位はドットである。
【００３５】
図８では、３つ以上のコード領域に関するコード領域情報が抽出されている状態が示されているが、ステップＳ１０６が最初に実行された直後は、一つのコード領域情報が抽出された状態となる。
【００３６】
コード領域抽出部１１は、全てのコード領域に関してステップＳ１０５及びＳ１０６を実行する。すなわち、文書データに複数のバーコードが含まれている場合、各バーコードに対応するコード領域ごとにステップＳ１０５及びＳ１０６が実行される。
【００３７】
全てのコード領域に関してステップＳ１０５及びＳ１０６の実行が完了すると（Ｓ１０４でＮｏ）、コード情報抽出部１２は、コード領域情報がメモリ装置１０３に記憶されているか否かを判定する（Ｓ１０７）。すなわち、文書データにコード領域（バーコードである可能性の高い領域）が含まれていたか否かが判定される。
【００３８】
コード領域情報がメモリ装置１０３に記憶されていない場合（Ｓ１０７でＮｏ）、印刷データ生成部１６は、文書データに関して、出力先のプリンタ２０に対応した印刷データ（ＰＤＬデータ）を生成する（Ｓ１１８）。
【００３９】
一方、一以上のコード領域情報がメモリ装置１０３に記憶されている場合（Ｓ１０７でＹｅｓ）、コード情報抽出部１２は、出力先のプリンタ２０情報を取得する（Ｓ１０８）出力先のプリンタ２０情報とは、出力先のプリンタ２０の解像度である。当該解像度の取得先は、例えば、印刷指示において選択された論理プリンタ名に係るプリンタドライバでもよい。または、解像度が、論理プリンタ名に対応付けて補助記憶装置１０２に記憶されていてもよい。この場合、印刷指示において選択された論理プリンタ名に対応する解像度が補助記憶装置１０２から取得されてもよい。
【００４０】
続いて、コード情報抽出部１２は、文書データ全体の解像度を、出力先のプリンタ２０解像度に変換する（Ｓ１０９）。例えば、文書データの当初の解像度が４００ｄｐｉであり、出力先のプリンタ２０の解像度が６００ｄｐｉである場合、文書データは、６００ｄｐｉのデータに変換される。以降の説明において、特段の断りが無い場合、文書データは、解像度の変換後の文書データをいう。なお、ラスターデータ（イメージデータ）の解像度の変換ロジックは、公知技術に従えばよい。
【００４１】
続いて、コード情報抽出部１２は、規約情報記憶部１２１が記憶する規約情報をメモリ装置１０３に読み込む（Ｓ１１０）。
【００４２】
図９は、第一の実施の形態の規約情報記憶部の構成例を示す図である。図９に示されるように、規約情報記憶部１２１は、バーコードの規格（又は種別）ごとに、規約情報（構成情報）を記憶する。各規格の規約情報は、当該規格において使用されるモジュールの種類ごとの幅、シンボル長、及びキャラクタセット等を含む。
【００４３】
モジュールとは、バーコードを構成する一つのバー（線）をいう。図９では、ＪＡＮ標準形式バーコード（ＪＡＮコード）の規約情報が示されている。ＪＡＮコードはモジュール（１）〜（３）の３種類のモジュールを有する。モジュール（１）は、最も細いバーであり、基本モジュールと呼ばれる。バーコードの構成要素は、基本モジュールの整数倍のサイズを有する。モジュール（２）は、モジュール（１）の２倍の幅を有するバーである。モジュール（３）は、モジュール（１）の３倍の幅を有するバーである。なお、モジュールごとに黒又は白の別が有るため、ＪＡＮコードは、６種類のモジュールが有することになる。６種類のモジュールの配列順によって、キャラクタ（文字）が表現される。
【００４４】
シンボル長は、バーコード全体の長さである。キャラクタセットは、表現可能なキャラクタのセット（一覧）である。ＪＡＮコードでは、０〜９の数字を表現可能であることが示されている。
【００４５】
なお、図９において、モジュールの幅及びシンボル長の単位はｃｍである。また、モジュールの種類の数、各モジュールの幅、シンボル長、及びキャラクタセット等は、バーコードの規格に応じて異なる。
【００４６】
続いて、コード情報抽出部１２は、メモリ装置１０３が記憶するコード領域情報の一つを処理対象とする（Ｓ１１１）。続いて、コード情報抽出部１２は、処理対象のコード領域情報（以下、「対象コード領域情報」という。）に係るバーコードに関して、規格判定処理を実行する（Ｓ１１２）。規格判定処理では、例えば、対象コード領域情報に基づいて図１０に示されるようなバーコード構成情報が生成される。
【００４７】
図１０は、バーコード構成情報の構成例を示す図である。図１０において、バーコード構成情報は、モジュールごとの幅と、シンボル長をと含む。シンボル長は、バーコードの横方向（左端のバーから右端のバーまで）の長さ（幅）である。すなわち、規格判定処理では、対象コード領域情報に係るバーコードを構成するモジュールの種類の数、及び各モジュールの幅、並びに当該バーコードの幅等が算出される。
【００４８】
規格判定処理では、斯かるバーコード構成情報に基づいて、対象コード領域情報に係るバーコードが適合する（準拠する）規格が判定される。規格の判定の過程において、対象コード領域情報に係るバーコードが示す情報（キャラクタ群）が抽出される。規格判定処理の詳細については後述される。
【００４９】
規格の判定に失敗した場合（Ｓ１１３でＮｏ）、ステップＳ１１８に進む。一方、規格の判定に成功した場合、すなわち、対象コード領域情報に係るバーコードが適合する規格が特定でき、当該バーコードの示す情報（キャラクタ群）が抽出できた場合（Ｓ１１３でＹｅｓ）、補正コード情報算出部１３は、規格判定処理の処理結果等に基づいて、補正後のバーコード（補正バーコード）の基本情報を算出する（Ｓ１１４）。
【００５０】
図１１は、補正バーコードの基本情報の構成例を示す図である。図１１において、基本情報は、規格、範囲、キャラクタ群、基本モジュール幅、及び解像度等を含む。
【００５１】
規格は、これから生成される補正バーコードが準拠すべき規格である。範囲は、文書データにおいて補正バーコードが配置される範囲の左上頂点及び右下頂点の座標値（単位はドット）である。キャラクタ群は、補正バーコードが示すべき（表現すべき）情報である。基本モジュール幅は、補正バーコードを構成するモジュールの中で最も細いモジュールの幅（単位はドット）である。解像度は、出力先のプリンタ２０の解像度である。
【００５２】
上記各項目のうち、規格及びキャラクタ群の値は、ステップＳ１１２における規格判定処理の処理結果から得られる。また、解像度は、ステップＳ１０８において取得された値がそのまま用いられる。したがって、ステップＳ１１４では、基本モジュール幅及び範囲が算出される。
【００５３】
基本モジュール幅は、ステップＳ１１２において生成されるバーコード構成情報における最小の幅（図１０の場合、モジュール（１）の幅）と、文書データの当初の解像度（以下、「当初解像度」という。）と、出力先のプリンタ２０の解像度（以下、「出力先解像度」という。）とに基づいて算出される。具体的には、当該最小の幅（ｃｍ）×（出力先解像度÷当初解像度）の算出結果（ｃｍ）を、出力先解像度のドット数に単純に換算した値に最も近い整数値（ドット）が基本モジュール幅とされる。
【００５４】
範囲の座標値のうち、左上頂点は、対象コード領域情報の範囲情報のうちの（Ｘ１、Ｙ１）について、ステップＳ１０９と同様の解像度の変換ロジックを適用した場合に得られる座標値とすればよい。右下頂点は、当該左上頂点のＸ座標値に対して、補正バーコードの各バーの幅の総和を加算した値をＸ座標値とし、当該左上頂点のＹ座標値に対して、補正バーコードの高さを加算した値をＹ座標値とすればよい。なお、補正バーコードの高さは、例えば、対象コード領域情報の範囲情報の高さに対して、ステップＳ１０９と同様の解像度の変換ロジックを適用した場合に得られる値とすればよい。
【００５５】
続いて、コード領域除去部１４は、文書データにおいて、補正バーコードの基本情報の範囲が示す矩形領域の描画情報を除去する（Ｓ１１５）。すなわち、文書データに埋め込まれていたバーコードが除去される。なお、除去対象の矩形領域は、例えば、補正バーコードの基本情報の範囲が示す矩形領域の数ドット分外側まで拡張されてもよい。続いて、補正コード描画部１５は、補正バーコードの基本情報と、パターン情報記憶部１２２とに基づいて、補正バーコードを文書データに描画する（Ｓ１１６）。
【００５６】
補正バーコードの描画は、補正バーコードの基本情報に含まれているキャラクタ群と、パターン情報記憶部１２２とに基づいて行われる。
【００５７】
図１２は、第一の実施の形態のパターン情報記憶部の構成例を示す図である。図１２に示されるように、パターン情報記憶部１２２は、キャラクタごとに、モジュールの配列パターンを記憶する。なお、図１２に示されるテーブルは、バーコードの規格ごとに記憶されている。図１２は、ＪＡＮコードに対するテーブルの例を示す。当該テーブルでは、「１」というキャラクタは、黒のモジュール（１）、白のモジュール（２）、黒のモジュール（２）、白のモジュール（１）、黒のモジュール（１）の配列パターンによって表現されることが示さされている。
【００５８】
したがって、パターン情報記憶部１２２に基づいて、基本情報のキャラクタ群に含まれるキャラクタごとに配列パターンを特定し、特定された配列パターンをキャラクタ群におけるキャラクタ順に接続することにより、キャラクタ群の配列パターンを得ることができる。当該配列パターンを構成する各モジュールに対応したバー（矩形）を描画することにより、補正コードを描画することができる。
【００５９】
この際、各モジュールの幅は、基本モジュールを整数倍することにより算出される。ここで、基本モジュールの幅は、出力先のプリンタ２０の解像度において整数値のドット数に変換されるように算出されている。したがって、各モジュールの幅は、当該解像度において整数値のドット数に変換される。よって、補正バーコードの各バーは、出力先のプリンタ２０の解像度に変換されている文書データの座標系のドットに対して、小数点以下のずれを有することなく描画される。その結果、補正バーコードは、各モジュールの幅の相対的な関係について、キャラクタ群に対応した関係が維持された状態で文書データに描画される。
【００６０】
図１３は、第一の実施の形態における補正後のバーコードの描画例を示す図である。図１３において、矩形Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、及びＢ６は、バーコードの黒いバーを示す。図１３における最小の格子（目盛り）は、出力先のプリンタ２０の解像度に応じた座標系における１ドット（１画素）を表現している。
【００６１】
図１３では、補正前において、矩形Ｂ２の左右両側の辺、矩形Ｂ４右側の辺、及びＢ６の両側の辺は、ドットの区切りに一致していないが、補正後において、これらの辺は、ドットの区切りに一致している。また、矩形Ｂ１、Ｂ２、Ｂ３、Ｂ５、及びＢ６は、同じ幅の黒いバーであるところ、補正後においても、幅が同じであるという関係は維持されている。更に、各矩形間の間隔（すなわち、白いバー）に関しても、同じ幅の黒いバーに対応する矩形と同じ幅を有する。したがって、文書データに含まれていたバーコードに埋め込まれた情報（キャラクタ群）に対して、補正バーコードに誤差が発生する可能性は低減される。なお、図１３において、バーコード全体の長さは、補正前に比べて補正後の方が長くなっている。但し、規格情報には許容範囲が有るため、バーコード全体の長さが当該許容範囲内において短くなったり長くなったりしたとしても、バーコードの読み取りには影響しない。重要なのは、同じ幅であるべき黒いバーと白いバーとが同じ幅であり、基本モジュールに対してＮ倍であるべきバーが、基本モジュールの幅に対してＮ倍の幅を有することである。
【００６２】
ステップＳ１１１〜Ｓ１１６が、全てのコード領域情報について実行されると（Ｓ１１７でＹｅｓ）、印刷データ生成部１６は、文書データを、出力先のプリンタ２０に対応した印刷データに変換する（Ｓ１１８）。
【００６３】
当該印刷データは、即時的にプリンタ２０に送信されてもよいし、補助記憶装置１０２等に記憶され、例えばユーザの都合の良いときに印刷されてもよい。ここで、印刷用紙に印字されるバーコードは、予めプリンタ２０の解像度に合わせて補正されている。したがって、当該補正を行わない場合に比べて、印字時に誤差が生じる可能性は低い。
【００６４】
続いて、ステップＳ１１２の詳細について説明する。図１４は、第一の実施の形態の規格判定処理の処理手順の一例を説明するためのフローチャートである。
【００６５】
ステップＳ１３１において、コード情報抽出部１２は、対象コード領域情報の配列情報を構成する黒い幅及び白い幅を、文書データの当初の解像度と各幅のドット数とに基づいてセンチメートル（ｃｍ）を単位とした値に変換する。以降において、特段の断りが無い場合、黒い幅及び白い幅の単位はセンチメートルであるとする。
【００６６】
続いて、コード情報抽出部１２は、対象コード領域情報の配列情報における全ての黒い幅及び白い幅の総和（ｃｍ）を求め、当該総和をシンボル長とする（Ｓ１３２）。すなわち、当該値が、バーコード構成情報（図１０）のシンボル長として記録される。
【００６７】
続いて、コード情報抽出部１２は、対象コード領域情報の配列情報における全ての黒い幅及び白い幅の集合の中で最小の幅を仮の基本モジュール幅（以下、「仮基本モジュール幅」という。）とする（Ｓ１３３）。最小の幅は、黒い幅及び白い幅の区別無く特定される。続いて、コード情報抽出部１２は、全ての黒い幅及び白い幅の集合を集合Ａとしてメモリ装置１０３に記憶する（Ｓ１３４）。
【００６８】
続くステップＳ１３５〜Ｓ１４１において、コード情報抽出部１２は、集合Ａに含まれている幅を、複数のグループ（複数種類のモジュール）に分類するための処理を実行する。
【００６９】
まず、コード情報抽出部１２は、変数ｉに１を代入する（Ｓ１３５）。続いて、コード情報抽出部１２は、変数Ｎに２を代入する（Ｓ１３６）。変数ｉ及び変数Ｎは、ステップＳ１３７〜Ｓ１４１のループ処理において利用される変数である。
【００７０】
続いて、コード情報抽出部１２は、集合Ａの中で、（仮基本モジュール幅×Ｎ−α）未満の幅の集合を集合ｉとして、メモリ装置１０３に記憶する（Ｓ１３７）。したがって、最初は、仮基本モジュール幅の２倍からαが減算された値未満の幅の集合が、集合１として記憶される。なお、αは、（仮基本モジュール幅×Ｎ）に満たない幅であっても、（仮基本モジュール幅×（Ｎ−１））よりも（仮基本モジュール幅×Ｎ）に近い幅を、（仮基本モジュール幅×Ｎ）のグループに分類するためのパラメータである。したがって、例えば、αは、（仮基本モジュール幅÷２）未満の値とされればよい。
【００７１】
続いて、コード情報抽出部１２は、集合ｉに含まれた幅を、集合Ａから除去する（Ｓ１３８）。続いて、コード情報抽出部１２は、変数ｉ及び変数Ｎのそれぞれに対して１を加算する（Ｓ１３９）。続いて、コード情報抽出部１２は、集合Ａの中に（仮基本モジュール幅×Ｎ−α）以上の幅が有るか否かを判定する（Ｓ１４１）。集合Ａの中に（仮基本モジュール幅×Ｎ−α）以上の幅が有る場合（Ｓ１４１でＹｅｓ）、コード情報抽出部１２は、ステップＳ１３７以降を繰り返す。集合Ａの中に（仮基本モジュール幅×Ｎ−α）以上の幅が無い場合（Ｓ１４１でＮｏ）、コード情報抽出部１２は、集合Ａに含まれている幅を集合ｉとしてメモリ装置１０３に記憶する（Ｓ１４２）。但し、集合Ａが空である場合、ステップＳ１４２は実行されない。
【００７２】
なお、対象コード領域情報に係るバーコードがＪＡＮコードである場合、対象コード領域情報に含まれている全ての幅は、モジュール（１）に対応する集合１、モジュール（２）に対応する集合２、モジュール（３）に対応する集合３に分類されるはずである。
【００７３】
続いて、コード情報抽出部１２は、分類された集合ごとに、幅の平均値を算出する（Ｓ１４３）。コード情報抽出部１２は、平均値を、当該平均値に係る集合に対応するモジュールの幅として、バーコード構成情報に記録する。その結果、対象コード領域情報に関して、図１０に示されるようなバーコード構成情報が生成される。
【００７４】
続いて、コード情報抽出部１２は、生成されたバーコード構成情報が適合する規約情報が規約情報記憶部１２１（図９）に記憶されているか否かを判定する（Ｓ１４４）。例えば、図１０に示されるバーコード構成情報の場合、モジュールの種類が３つであり、各モジュールの幅の範囲が当該バーコード構成情報に含まれている値を含み、シンボル長の範囲が、当該バーコード構成情報に含まれている値を含む規約情報の有無が判定される。
【００７５】
当該バーコード構成情報が適合する規約情報が無い場合（Ｓ１４４でＮｏ）、コード情報抽出部１２は、対象コード領域情報に関する規格の判定は失敗したと判定する。
【００７６】
当該バーコード構成情報が適合する規約情報（以下、「適合規約情報」という。）が有る場合（Ｓ１４４でＹｅｓ）、コード情報抽出部１２は、対象コード領域情報の配列情報に含まれている黒い幅と白い幅との配列のパターンよりキャラクタ群（バーコードに埋め込まれている情報）を抽出する（Ｓ１４５）。より詳しくは、コード情報抽出部１２は、対象コード領域情報の配列情報に含まれている黒い幅及び白い幅を、モジュールの種類に置き換えて、モジュールの種類の配列のパターンを得る。続いて、コード情報抽出部１２は、パターン情報記憶部１２２に記憶されている、適合規約情報に係る規格のパターン情報に基づいて、モジュールの種類の配列のパターンについて、キャラクタ群への変換を試みる。適合規約情報が複数有る場合、コード情報抽出部１２は、複数の規格のそれぞれのパターン情報に基づいて、キャラクタ群への変換を試みる。
【００７７】
いずれかの規格のパターン情報に基づいて、キャラクタ群の抽出に成功した場合（Ｓ１４６でＹｅｓ）、コード情報抽出部１２は、対象コード領域情報に関する規格の判定は成功したと判定する。すなわち、キャラクタ群の抽出に成功したパターン情報に係る規格が対象コード領域情報に係るバーコードの規格であると判定される。また、抽出されたキャラクタ群は、例えば、メモリ装置１０３に記憶される。
【００７８】
いずれの規格のパターン情報に基づいても、キャラクタ群を抽出できなかった場合（Ｓ１４６でＮｏ）、コード情報抽出部１２は、対象コード領域情報に関する規格の判定は失敗したと判定する。
【００７９】
なお、上記では、文書データが、バーコードのイメージデータをその一部に一体的に含むラスターデータである例について説明したが、文書データのデータ構造は、斯かる形態に限定されない。
【００８０】
図１５は、文書データのデータ構造の一例を示す図である。図１５において、（Ａ）は、解像度を有するラスターデータの文書データ内に、バーコードのイメージデータが含まれている形態である。すなわち、上記の説明に用いた形態である。
【００８１】
（Ｂ）は、解像度を有するラスターデータの文書データ内に、バーコードのベクトルデータが含まれている（貼り付けられている）形態である。この場合、バーコードの位置は、文書データ内のドット数を単位とする座標値であってもよいし、インチ等を単位とする座標値であってもよい。
【００８２】
（Ｃ）は、ベクトルデータの文書データ内に、バーコードのイメージデータが含まれている（貼り付けられている）形態である。この場合、バーコードの位置は、インチ等を単位とする座標値となる。
【００８３】
（Ｄ）は、ベクトルデータの文書データ内に、バーコードのベクトルデータが含まれている（貼り付けられている）形態である。この場合、バーコードの位置は、インチ等を単位とする座標値となる。
【００８４】
（Ｃ）及び（Ｄ）のように、文書データがベクトルデータである場合、図６のステップＳ１０９（文書データの解像度の変換処理）は実行されなくてよい。
【００８５】
また、（Ｂ）及び（Ｄ）のように、バーコードがベクトルデータである場合、コード情報抽出部１２は、ステップＳ１０２及びＳ１０３において、中点画像の生成や直線の認識処理の代わりに、例えば、矩形の描画コマンドを文書データより抽出すればよい。ステップＳ１０４以降では、検索された描画コマンドに係る矩形の密度が閾値を超える領域がコード領域とされて、各コード領域のコード領域情報（図８）がメモリ装置１０３に記憶されればよい。但し、この場合、コード領域情報の範囲情報及び配列情報の単位はドットではなく、例えば、インチとなる。したがって、上記の説明においてドットが単位されて処理されている部分は、インチ等の単位に置き換えて処理されればよい。
【００８６】
例えば、ステップＳ１１４における基本モジュール幅の算出では、バーコード構成情報における最小の幅（インチ）は、出力先のプリンタ２０の解像度のドット数に変換した場合に整数値となるような値であって、当該幅に最も近い値に変換される。当該値をセンチメートルに換算した値が基本モジュール幅とされる。
【００８７】
また、基本情報の範囲の座標値は、例えば、対象コード領域情報の範囲情報（Ｘ１、Ｙ１、Ｘ２、Ｙ２）（インチ）について、出力先のプリンタ２０の解像度のドット数に変換した場合に、整数値となるような値であって、当初の値に最も近い値に変換される。当該値をセンチメートルに換算した値が、基本情報の範囲の座標値とされる。
【００８８】
ステップＳ１１６では、このように算出された基本情報に基づいて、補正バーコード群を示す矩形群の描画コマンドが、文書データ内に記述されればよい。
【００８９】
上述したように、第一の実施の形態によれば、文書データに含まれるバーコードについて、その位置及び各バーの幅等は、出力先のプリンタ２０の解像度に合わせて補正される。したがって、印刷されたバーコードにおいて、幅が同じであるべき各バー（同じモジュールのバー）の間に幅の不均一が生じる可能性を低減させることができる。すなわち、印刷されたバーコードの誤差を低減させることができる。
【００９０】
また、第一の実施の形態では、文書データに含まれるバーコードの規格は、規格ごとの規格情報及びパターン情報等に基づいて自動的に判定される。したがって、文書データに含まれるバーコードが固定でない場合であっても、当該バーコードの補正コードを生成することができる。
【００９１】
なお、運用上、文書データに含まれるバーコードの規格が固定的である場合は、バーコードの規格は判定されなくてもよい。
【００９２】
次に、第二の実施の形態について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態と同様でよい。
【００９３】
第二の実施の形態では、文書データには符号画像の一例として２次元コードが含まれていることとする。したがって、図５に示される各部のうち、第一の実施の形態においてバーコードに関して処理を実行する部分は、第二の実施の形態において２次元コードに関して処理を実行する。
【００９４】
図１６は、第二の実施の形態における情報処理装置が実行する処理手順の一例を説明するためのフローチャートである。なお、図１６において、文書データは、図１５の（Ａ）に示される構造を有することとする。すなわち、文書データは、解像度を有するラスターデータであり、２次元コードのイメージがその一部として一体的に含まれている。
【００９５】
例えば、補助記憶装置１０２に記憶されている文書データの印刷指示の入力に応じ、コード領域抽出部１１は、印刷指示の対象として指定された文書データをメモリ装置１０３に読み込む（Ｓ２０１）。続いて、コード領域抽出部１１は、例えば、文書データを１ライン毎に当該ラインを構成する画素群をスキャン（操作）し、連続する黒い画素群（黒い幅）と連続する白い画素群（白い幅）との画素数の比率（幅の比率）が、所定の比率である部分の有無を判定する（Ｓ２０３）。
【００９６】
ここで、所定の比率とは、「１（黒）：１（白）：３（黒）：１（白）：１（黒）」、又は「１（黒）：１（白）：１（黒）：７（白）：１（黒）：１（白）：１（黒）」である。前者の「１：１：３：１：１」は、２次元コードの一種であるＱＲコード（登録商標）の位置検出パターンにおける、黒い幅と白い幅との比率である。後者の「１：１：１：７：１：１：１」は、２次元コードの一種であるマキシコード（ＭａｘｉＣｏｄｅ）の位置検出パターンの、黒い幅と白い幅との比率である。
【００９７】
図１７は、ＱＲコード（登録商標）とマキシコードの一例を示す図である。図１７において、（Ａ）は、ＱＲコード（登録商標）の一例である。通常、ＱＲコード（登録商標）は、３つの角に位置検出パターンを含む。図１７では、ＱＲコード（登録商標）の上側に、一つの位置検出パターンが拡大されて示されている。当該ＱＲコード（登録商標）の位置検出パターンの黒い幅と白い幅とは、水平方向、垂直方向、及び対角線方向において、「１：１：３：１：１」の比率を有する。
【００９８】
また、（Ｂ）は、マキシコードの一例である。マキシコードは、その中央に位置検出パターンを含む。図１７では、マキシコードの上側に、位置検出パターンが拡大されて示されている。マキシコードの位置検出パターンの黒い幅と白い幅とは、「１：１：１：７：１：１：１」の比率を有する。
【００９９】
したがって、ステップＳ２０３では、ＱＲコード（登録商標）又はマキシコードの位置検出パターンを構成する可能性の有る部分が検出されたか否かが判定される。
【０１００】
連続する黒い画素群（黒い幅）と連続する白い画素群（白い幅）との画素数の比率（幅の比率）が、所定の比率である部分が検出された場合（Ｓ２０３でＹｅｓ）、コード領域抽出部１１は、当該部分を位置検出パターンの所定の位置であると仮定する。そこで、コード領域抽出部１１は、当該部分を基準として、ＱＲコード（登録商標）又はマキシコードの範囲であると予測される矩形領域を、コード領域として抽出する（Ｓ２０４）。
【０１０１】
例えば、ラインごとに処理が行われた場合、ＱＲコード（登録商標）において、「１：１：３：１：１」の比率が最初に検出されるのは、当該ＱＲコード（登録商標）の左上側の位置検出パターンにおいて、内側の黒い矩形の上端の１行目を含むラインＬ１（図１７参照）が処理対象とされているときである。したがって、当該ラインＬ１の位置（何番目のラインか）と「１：１：３：１：１」の比率を構成する画素数（すなわち、位置検出パターンの幅）と、ＱＲコード（登録商標）全体との相対的な位置及びサイズとの関係に基づいて、ＱＲコード（登録商標）の範囲を推定することができる。
【０１０２】
また、ラインごとに処理が行われた場合、マキシコードにおいて、「１：１：１：７：１：１：１」の比率が最初に検出されるのは、当該マキシコードの位置検出パターンの中心を通るラインＬ２（図１７参照）が処理対象とされているときである。したがって、当該ラインＬ２の位置（何番目のラインか）と「１：１：１：７：１：１：１」の比率を構成する画素数（すなわち、位置検出パターンの幅）と、マキシコード全体との相対的な位置及びサイズの関係とに基づいて、マキシコードの範囲を推定することができる。
【０１０３】
続いて、コード領域抽出部１１は、抽出されたコード領域に関して、コード領域情報をメモリ装置１０３に記憶する（Ｓ２０５）。
【０１０４】
図１８は、第二の実施の形態のコード領域情報の構成例を示す図である。図１８において、一つ（一行）のコード領域情報は、一つのコード領域に対応し、位置検出パターン情報及びイメージ配列ポインタ等を含む。
【０１０５】
位置検出パターン情報は、位置検出パターンごとに、その中心点（対角線の交点）の座標値（単位は、ドット（画素））を示す。例えば、ＱＲコード（登録商標）に対応するコード領域情報であれば、３つの位置検出パターンのそれぞれの対角線の交点の座標値が含まれる。
【０１０６】
イメージ配列ポインタは、コード領域の各画素の画素値を要素とする２次元配列（以下、「イメージ配列」という。）に対するポインタである。黒の画素値は「１」、白の画素値は「０」である。
【０１０７】
すなわち、ステップＳ２０５においては、抽出されたコード領域に関して、位置検出パターンの中心点が求められ、かつ、当該コード領域を構成する各画素の画素値がイメージ配列に格納される。
【０１０８】
なお、図１８に示されるイメージ配列の各要素の値は、ＱＲコード（登録商標）に対するイメージ配列を厳密に表現したものではない。また、図１８では、３つ以上のコード領域に関するコード領域情報が抽出されている状態が示されているが、ステップＳ２０５が最初に実行された直後は、一つのコード領域情報が抽出された状態となる。
【０１０９】
ステップＳ２０２〜Ｓ２０５は、文書データの最終ラインに到達するまで繰り返される（Ｓ２０６）。但し、ステップＳ２０４及びＳ２０５は、同一の２次元コードに関して２回以上は実行されない。すなわち、一つの２次元コードに関して記憶されるコード領域情報は一つである。
【０１１０】
なお、ＱＲコード（登録商標）の検出やマキシコード検出には、上記の方法以外の方法が適用されてもよい。また、ＱＲコード（登録商標）及びマキシコード以外の２次元コードを検出対象としたい場合は、当該２次元コードの特徴的な部分を検出することにより、当該２次元コードの検出及び当該２次元コードのコード領域の抽出等が行われればよい。
【０１１１】
文書データの最終ラインに到達すると（Ｓ２０６でＹｅｓ）、コード情報抽出部１２は、コード領域情報がメモリ装置１０３に記憶されているか否かを判定する（Ｓ２０７）。すなわち、文書データにコード領域（２次元コードである可能性の高い領域）が含まれているか否かが判定される。
【０１１２】
コード領域情報がメモリ装置１０３に記憶されていない場合（Ｓ２０７でＮｏ）、印刷データ生成部１６は、文書データに関して、出力先のプリンタ２０に対応した印刷データ（ＰＤＬデータ）を生成する（Ｓ２１８）。
【０１１３】
一以上のコード領域情報がメモリ装置１０３に記憶されている場合（Ｓ２０７でＹｅｓ）、コード情報抽出部１２は、ステップＳ２０８及びＳ２０９において、図６のステップＳ１０８及びＳ１０９と同様の処理を実行する。
【０１１４】
続いて、コード情報抽出部１２は、規約情報記憶部１２１が記憶する規約情報をメモリ装置１０３に読み込む（Ｓ２１０）。
【０１１５】
図１９は、第二の実施の形態の規約情報記憶部の構成例を示す図である。図１９に示されるように、規約情報記憶部１２１は、バーコードの規格（又は種別）ごとに、規約情報（構成情報）を記憶する。図１９では、ＱＲコード（登録商標）の規約情報が例示されている。当該規約情報は、ＱＲコード（登録商標）のバージョンごとに、縦方向及び横方向のセル数及びマスクパターン（の識別情報）等を含む。また、当該規約情報は、全バージョンに共通の情報として、パターン情報を含む。
【０１１６】
セルとは、ＱＲコード（登録商標）の最小の構成要素としての矩形（正方形）である。ＱＲコード（登録商標）の全ての構成要素のサイズは、セルを単位として特定される。
【０１１７】
マスクパターンは、ＱＲコード（登録商標）から符号化領域を抽出するための情報（ピット配列）である。符号化領域とは、キャラクタ群を示す領域である。すなわち、符号化領域は、位置検出パターン等、制御用の領域が除去された領域である。
【０１１８】
パターン情報は、キャラクタごとに、２次元空間におけるセルの配置パターンを示す情報である。すなわち、パターン情報は、第一の実施の形態において、パターン情報記憶部１２２が記憶するパターン情報に対応する。
【０１１９】
続いて、コード情報抽出部１２は、メモリ装置１０３が記憶するコード領域情報の一つを処理対象とする（Ｓ２１１）。続いて、コード情報抽出部１２は、処理対象のコード領域情報（以下、「対象コード領域情報」という。）に係る２次元コードに関して、規格判定処理を実行する（Ｓ２１２）。規格判定処理において、コード情報抽出部１２は、例えば、対象コード領域情報に基づいて図２０に示されるような２次元コード構成情報を生成する。
【０１２０】
図２０は、２次元コード構成情報の構成例を示す図である。図２０において、２次元コード構成情報は、セル数、セルサイズ、及びイメージ配列ポインタ等を含む。イメージ配列ポインタは、対象コード領域情報のイメージ配列ポインタがそのまま用いられる。セルサイズには、例えば、イメージ配列ポインタによって特定されるイメージ配列の横方向及び縦方向において、「１（黒画素）」又は「０（白画素）」が連続する数の最小値が用いられる。セル数は、イメージ配列の横方向のドット数及び縦方向のドット数を、セルサイズによって除することにより求められる。
【０１２１】
コード情報抽出部１２は、生成された２次元コード構成情報が適合する規約情報が規約情報記憶部１２１（図１９）に記憶されているか否かを判定する。当該２次元コード構成情報が適合する規約情報が一以上有る場合、コード情報抽出部１２は、各規約情報のパターン情報に基づいて、当該２次元コード構成情報のイメージ配列からキャラクタ群（情報）の抽出を試みる。コード情報抽出部１２は、キャラクタ群の抽出に成功した場合、規格の判定に成功したと判定する。すなわち、コード情報抽出部１２は、キャラクタ群の抽出に成功した規約情報に係る規格を、対象コード領域情報に係る２次元コードの規格であると判定する。抽出されたキャラクタ群は、例えば、メモリ装置１０３に記憶される。なお、規格の特定に伴って、バージョンも特定される。
【０１２２】
一方、２次元コード構成情報が適合する規約情報が規約情報記憶部１２１に記憶されていない場合、コード情報抽出部１２は、規格の判定は失敗したと判定する。また、２次元コード構成情報が適合するいずれの規約情報に基づいても、キャラクタ群を抽出できなかった場合、コード情報抽出部１２は、規格の判定は失敗したと判定する。
【０１２３】
規格の判定に失敗した場合（Ｓ２１３でＮｏ）、ステップＳ２１８に進む。一方、規格の判定に成功した場合、すなわち、対象コード領域情報に係る２次元コードが適合する規格が特定でき、当該２次元コードの示す情報（キャラクタ群）が抽出できた場合（Ｓ２１３でＹｅｓ）、補正コード情報算出部１３は、規格判定処理の処理結果等に基づいて、補正後の２次元コード（補正２次元コード）の基本情報を算出する（Ｓ２１４）。
【０１２４】
図２１は、補正２次元コードの基本情報の構成例を示す図である。図２１において、基本情報は、規格、バージョン、範囲、キャラクタ群、セルサイズ、シンボルサイズ、クワイエットゾーン、及び解像度等を含む。
【０１２５】
規格及びバージョンは、これから生成される補正２次元コードが準拠すべき規格及びバージョンである。範囲は、文書データにおいて補正２次元コードが配置される範囲の左上頂点及び右下頂点の座標値（単位はドット）である。キャラクタ群は、補正２次元コードが示すべき（表現すべき）情報である。セルサイズは、補正２次元コードのセルのサイズである。シンボルサイズは、補正２次元コードの１辺のサイズ（単位はドット）である。クワイエットゾーンは、補正２次元コードの周囲に設けられる、空白領域の幅（単位はドット）である。解像度は、出力先のプリンタ２０の解像度である。
【０１２６】
上記各項目のうち、規格、バージョン、及びキャラクタ群の値は、ステップＳ２１２における規格判定処理の処理結果から得られる。また、解像度は、ステップＳ２０８において取得された値がそのまま用いられる。したがって、ステップＳ２１４では、セルサイズ、シンボルサイズ、クワイエットゾーン、及び範囲が算出される。
【０１２７】
セルサイズ（以下、「補正後セルサイズ」という。）は、ステップＳ２１２において生成される２次元コード構成情報におけるセルサイズ（以下、「補正前セルサイズ」という。）と、文書データの当初の解像度（以下、「当初解像度」という。）と、出力先のプリンタ２０の解像度（以下、「出力先解像度」という。）とに基づいて算出される。具体的には、補正前セルサイズ×（出力先解像度÷当初解像度）によって算出される値に最も近い整数値が補正後セルサイズとされる。例えば、文書データの当初の解像度が４００ｄｐｉであり、補正前セルサイズが３ドットである場合、補正前セルサイズの実寸は、３÷４００＝０．００７５（インチ）である。出力先のプリンタ２０の解像度が６００ｄｐｉの場合、０．００７５（インチ）は、６００×０．００７５＝４．５（ドット）である。４．５に最も近い整数値は、４又は５である。したがって、４又は５が、補正後セルサイズとされる。
【０１２８】
シンボルサイズは、補正後セルサイズと、規格及びバージョンに基づいて算出される。すなわち、規格及びバージョンによって、セル数（例えば、２１）が特定される。当該セル数をセルサイズに乗ずることにより、シンボルサイズが算出される。
【０１２９】
クワイエットゾーンは、例えば、ＱＲコード（登録商標）であれば、最小で４セル分として規定されているため、セルサイズに基づいて算出することができる。
【０１３０】
範囲の座標値のうち、左上頂点は、対象コード領域情報の位置検出パターン情報に基づいて算出することができる。すなわち、位置検出パターン情報に基づいて、文書データの当初の解像度における、２次元コードの左上頂点の座標値を求め、当該左上頂点の座標値について、ステップＳ２０９と同様の解像度の変換ロジックを適用した場合に得られる値を当該範囲の左上頂点の座標値とすればよい。当該範囲の右下頂点の座標値は、当該左上頂点の座標値に対して、シンボルサイズ＋クワイエットゾーン×２を加算した値とすればよい。
【０１３１】
続いて、コード領域除去部１４は、（解像度の変換後の）文書データにおいて、補正２次元コードの基本情報の範囲が示す矩形領域の描画情報を除去する（Ｓ２１５）。すなわち、文書データに埋め込まれていた２次元コードが除去される。なお、除去対象の矩形領域は、例えば、補正２次元コードの基本情報の範囲が示す矩形領域の数ドット分外側まで拡張されてもよい。続いて、補正コード描画部１５は、補正２次元コードの基本情報と、パターン情報記憶部１２２とに基づいて、補正２次元コードを文書データに描画する（Ｓ２１６）。
【０１３２】
補正２次元コードの描画は、補正２次元コードの基本情報に含まれているキャラクタ群と、補正２次元コードの規格の規約情報に含まれているパターン情報とに基づいて、補正バーコードの描画と同様に行われればよい。
【０１３３】
この際、補正２次元コードの構成要素のサイズは、セルを最小単位として決定される。ここで、セルのサイズは、ステップＳ２１４において、出力先のプリンタ２０の解像度において整数値のドット数として算出されている。したがって、各構成要素の幅及び高さは、出力先のプリンタ２０の解像度において整数値のドット数に変換される。よって、補正２次元コードの各構成要素は、出力先のプリンタ２０の解像度に変換されている文書データの座標系のドットに対して、小数点以下のずれを有することなく描画される。その結果、補正２次元コードは、各構成要素のサイズの相対的な関係について、キャラクタ群に応じた関係が維持された状態で文書データに描画される。
【０１３４】
図２２は、第二の実施の形態における補正後のバーコードの描画例を示す図である。図２２における最小の格子（目盛り）は、出力先のプリンタ２０の解像度に応じた座標系における１ドット（１画素）を表現している。
【０１３５】
図２２では、補正前において、ドットの区切りに一致していない辺を有する構成要素が存在するが、補正後においては、全ての構成要素の辺は、ドットの区切りに一致している。また、各構成要素の相対的なサイズの関係は、補正前の状態が維持されている。したがって、２次元コードに埋め込まれた情報（キャラクタ群）に誤差が発生する可能性は低減される
ステップＳ２１１〜Ｓ２１６が、全てのコード領域情報について実行されると（Ｓ２１７でＹｅｓ）、印刷データ生成部１６は、文書データを、出力先のプリンタ２０に対応した印刷データに変換する（Ｓ２１８）。
【０１３６】
なお、２次元コードの場合であっても、文書データは、図１５の（Ａ）から（Ｄ）のいずれの構造を有していてもよいのは、バーコードの場合と同様である。また、２次元コードがベクトルデータである場合の処理内容は、バーコードがベクトルデータである場合の処理内容の説明から自明であるため、ここでの説明は省略する。
【０１３７】
上述したように、第二の実施の形態によれば、文書データに含まれる２次元コードについて、第一の実施の形態と同様の効果を得ることができる。
【０１３８】
次に、第三の実施の形態について説明する。第三の実施の形態では、プリンタ２０のドットゲインを考慮したキャリブレーション機能について説明する。
【０１３９】
図２３は、プリンタのドットゲインを説明するための図である。図２３における格子は、プリンタ２０の解像度における１ドットを示す。
【０１４０】
一般的に、プリンタ２０は、インク又はトナーを、（Ａ）に示されるように、格子通りに定着させずに、（Ｂ）に示されるように、ドット間に隙間ができないように拡散させて定着させる。その結果、印刷物の網点が理想的な大きさよりも太る現象が発生する。このような現象をドットゲインという。ドットゲインの程度は、プリンタ２０や印刷用紙によって異なる。したがって、プリンタ２０や印刷用紙によっては、ドットゲインが、バーコードの黒いバーの幅の拡大や白いバーの縮小、又は２次元コードのセルの拡大等をもたらす可能性が考えられる。
【０１４１】
そこで、第三の実施の形態では、このようなドットゲインを考慮した、第一の実施の形態や第二の実施の形態のバーコード又は２次元コードの補正処理に対するキャリブレーション機能について説明する。
【０１４２】
図２４は、第三の実施の形態における情報処理システムの構成例を示す図である。図２４中、図３と同一部分には同一符号を付し、その説明は省略する。
【０１４３】
第三の実施の形態では、スキャナ３０が情報処理装置１０とネットワークを介して通信可能に接続されている。スキャナ３０は、紙文書より画像データを読み取り、当該画像データを情報処理装置１０に転送する。
【０１４４】
図２５は、第三の実施の形態における情報処理装置の機能構成例を示す図である。図２５中、図５と同一部分には同一符号を付し、その説明は省略する。
【０１４５】
図２５において、情報処理装置１０は、補正値生成部１８及び補正値記憶部１２３を更に有する。補正値生成部１８は、文書データにおけるドット数と、印字後のドット数との差分を抽出し、当該差分に基づいて、文書データにおけるドット数に対する補正値を生成する。補正値記憶部１２３は、補正値生成部１８によって生成される補正値を記憶する。なお、補正値生成部１８は、情報処理装置１０にインストールされたプログラムがＣＰＵ１０４に実行させる処理により実現される。補正値記憶部１２３は、補助記憶装置１０２又は情報処理装置１０とネットワークを介して接続される記憶装置等を用いて実現可能である。
【０１４６】
図２６は、キャリブレーションデータの印刷処理の処理手順の一例を説明するためのフローチャートである。
【０１４７】
ステップＳ３０１において、キャリブレーションデータの印刷指示が入力されると、印刷データ生成部１６は、補助記憶装置１０２に保存されているキャリブレーションデータをメモリ装置１０３に読み込む。
【０１４８】
図２７は、キャリブレーションデータの一例を示す図である。キャリブレーションデータは、所定のドット数を基本単位とし、当該基本単位の整数倍の幅を有する矩形群が描画されているラスターデータであり、出力先のプリンタ２０と同じ解像度を有する。基本単位は、出力先のプリンタ２０の解像度における、バーコードの基本モジュールの幅（ドット）又は２次元コードのセルのサイズ（ドット）に合致していのが望ましい。但し、各矩形の幅は、基本モジュールの幅やセルのサイズとは無関係に、所定のドット数刻みであってもよい。
【０１４９】
図７のキャリブレーションデータｃ１は、領域ｃ１１及びｃ１２を含む。領域ｃ１１は、横方向又は主走査方向（Ｘ方向）のドットゲインの大きさを計測するために利用される。したがって、基本単位の整数倍の幅を有する縦長の矩形が配列されている。
【０１５０】
領域ｃ１２は、縦方向又は副走査方向（Ｙ方向）のドットゲインの大きさを計測するために利用される。したがって、基本単位の整数倍の高さを有する横長の矩形が配列されている。
【０１５１】
但し、基本単位の整数倍を１辺とする正方形が配列されていてもよい。この場合、当該正方形によって、縦横双方向のドットゲインの大きさが計測されてもよい。
【０１５２】
続いて、印刷データ生成部１６は、キャリブレーションデータｃ１に関して、プリンタ２０に対応した印刷データを生成する（Ｓ３０２）。印刷データ生成部１６は、生成された印刷データをプリンタ２０に転送する。プリンタ２０は、当該印刷データに基づいて印刷を実行する（Ｓ３０３）。その結果、図７のキャリブレーションデータｃ１に示されるような矩形群が印刷用紙に印字される。以下、キャリブレーションデータが印字された用紙を、「キャリブレーション用紙」という。なお、キャリブレーションデータｃ１は、プリンタ２０の解像度と同じ解像度を有するため、生成された印刷データにおいて、各矩形の幅又は高さが、キャリブレーションデータｃ１に対して誤差を有している可能性は低い。
【０１５３】
続いて、図２８に示される処理が実行される。図２８は、ドットゲインに対する補正値の生成処理の処理手順の一例を説明するためのフローチャートである。
【０１５４】
ステップＳ４０１において、スキャナ３０によってキャリブレーション用紙から画像データが読み取られる。以下、読み取られた画像データを「スキャンデータ」という。スキャンデータは、情報処理装置１０に転送され、例えば、メモリ装置１０３に読み込まれる。
【０１５５】
続いて、補正値生成部１８は、キャリブレーションデータｃ１（図７）を補助記憶装置１０２からメモリ装置１０３に読み込む（Ｓ４０２）。補正値生成部１８は、スキャンデータと、キャリブレーションデータｃ１とを比較又は照合して、対応する矩形間の差分を抽出する（Ｓ４０３）。対応する矩形とは、基本単位×Ｎの幅又は高さに関して、Ｎの値が同じである矩形同士をいう。なお、矩形の対応関係を容易に把握できるように、キャリブレーションデータｃ１において、Ｎの値に応じたマーク（図形）が描画されていてもよい。
【０１５６】
差分は、幅又は高さのドット数として抽出される。図７のキャリブレーションデータｃ１では、Ｎの値が同じである矩形が複数含まれている。したがって、Ｎの値が一致する複数の矩形同士を照合し、それぞれの差分を抽出し、当該差分群の平均値（以下、「差分値」という。）が算出されてもよい。
【０１５７】
続いて、補正値生成部１８は、抽出された差分値に基づいて、補正値を算出し、当該補正値を補正値記憶部１２３に記憶する（Ｓ４０４）。
【０１５８】
図２９は、補正値記憶部の構成例を示す図である。図２９に示されるように、補正値記憶部１２３は、補正前の幅又は高さ（ドット数）ごとに、補正値（印字後のドット数）を記憶する。補正前の幅又は高さとは、キャリブレーションデータｃ１の各矩形の幅又は高さである。
【０１５９】
すなわち、図２９において、Ｍは、基本単位のドット数を示す。補正値は、補正前の値に対して、差分値を加算した値である。例えば、３Ｍドットに対する３Ｍ＋１（ドット）とは、キャリブレーションデータｃ１における３Ｍドットについては、３Ｍ＋１ドットで印字される傾向に有ることを示す。
【０１６０】
第三の実施の形態では、例えば、補正バーコードの描画時（図６のステップＳ１１６）や補正２次元コードの描画時（図１４のステップＳ２１６）において、補正値記憶部１２３が記憶する補正値が利用される。
【０１６１】
具体的には、補正コード描画部１５は、描画対象の矩形の幅又は高さに一致する値を、補正値記憶部１２の補正値より検索する。該当する補正値が検索された場合、補正コード描画部１５は、当該補正値に対する補正前の値を参照し、当該補正前の値を描画対象の幅又は高さとして描画する。例えば、描画対象の矩形の幅又は高さが、３Ｍ＋１であったとする。この場合、補正コード描画部１５は、当該矩形の幅又は高さを３Ｍによって描画する。そうすることにより、補正バーコード又は補正２次元コードが印字された際は、３Ｍ＋１で描画され、期待通りの印字結果を得ることができる。
【０１６２】
上述したように、第三の実施の形態によれば、キャリブレーションデータｃ１とその印刷結果との差分に基づく補正値を用いて、補正バーコード又は補正２次元コードの描画時のサイズ（幅又は高さ）を補正することができる。すなわち、プリンタ２０や印刷用紙の特性に合わせて補正バーコード又は補正２次元コードの描画処理を補正することができる。その結果、印字されたバーコード又は２次元コードに誤差が含まれる可能性を更に低減させることができる。
【０１６３】
なお、本実施の形態は、例えば、クラウド環境を介した文書データの印刷等においても有効である。すなわち、クラウド環境を介して印刷が行われる場合、文書データの生成時において、出力先のプリンタは特定されていない。したがって、文書データに含まれるバーコード又は２次元コードの解像度が、出力先として選択されたプリンタの解像度と異なっているという事態が発生する可能性が高くなる。このような状況において、本実施の形態が適用されることにより、誤差を含まないバーコード又は２次元コードが印字される可能性を高めることができる。
【０１６４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１６５】
１０          情報処理装置
１１          コード領域抽出部
１２          コード情報抽出部
１３          補正コード情報算出部
１４          コード領域除去部
１５          補正コード描画部
１６          印刷データ生成部
１７          印刷データ送信部
１８          補正値生成部
２０          プリンタ
３０          スキャナ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１２１        規約情報記憶部
１２２        パターン情報記憶部
１２３        補正値記憶部
Ｂ            バス
【図１】
0005915662.tif 000002
【図２】
0005915662.tif 000003
【図３】
0005915662.tif 000004
【図４】
0005915662.tif 000005
【図５】
0005915662.tif 000006
【図６】
0005915662.tif 000007
【図７】
0005915662.tif 000008
【図８】
0005915662.tif 000009
【図９】
0005915662.tif 000010
【図１０】
0005915662.tif 000011
【図１１】
0005915662.tif 000012
【図１２】
0005915662.tif 000013
【図１３】
0005915662.tif 000014
【図１４】
0005915662.tif 000015
【図１５】
0005915662.tif 000016
【図１６】
0005915662.tif 000017
【図１７】
0005915662.tif 000018
【図１８】
0005915662.tif 000019
【図１９】
0005915662.tif 000020
【図２０】
0005915662.tif 000021
【図２１】
0005915662.tif 000022
【図２２】
0005915662.tif 000023
【図２３】
0005915662.tif 000024
【図２４】
0005915662.tif 000025
【図２５】
0005915662.tif 000026
【図２６】
0005915662.tif 000027
【図２７】
0005915662.tif 000028
【図２８】
0005915662.tif 000029
【図２９】
0005915662.tif 000030