(57)【要約】【課題】所望のバーコード全体長を得ることができるバーコードの構成情報を比較的短時間にかつ容易に決定する。【解決手段】少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成しておく。バーコード化する文字列およびバーコード全体長の入力を受け、バーコードの基準となるバー（例えば最も細い黒バー）の幅を構成するドット数が与えられたとき、前記文字列をバーコード化した場合の全体長を、関係テーブルを参照して算出する。バーコード全体長の算出値が入力値に納まる範囲で最大となるバーコード構成情報を求める。【選択図】図９
2010046921.tif 000002
【特許請求の範囲】
【請求項１】
バーコードを生成するバーコード生成システムであって、
少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成する手段と、
バーコード化する文字列およびバーコード全体長の入力を受ける入力手段と、
前記バーコードの基準となるバーの幅を構成するドット数が与えられたとき、前記文字列をバーコード化した場合の全体長を前記関係テーブルを参照して算出する手段と、
出力するバーコードの全体長の算出値が入力値に納まる範囲で最大となるバーコード構成情報を求める手段と
を備えたバーコード生成システム。
【請求項２】
前記算出手段は、バーコードの黒バーと白スペースのキャラクタ構成を基に前記バーコード全体長を算出することを特徴とする請求項１に記載のバーコード生成システム。
【請求項３】
バーコードを構成するすべてのバーおよびスペースの幅を前記関係テーブルを参照して求め、当該すべてのバーおよびスペースの実際の幅の総和をバーコード全体長の算出値とする請求項１または２に記載のバーコード生成システム。
【請求項４】
バーコードを生成するバーコード生成システムにおけるバーコード構成情報を求めるコンピュータプログラムであって、
（ａ）少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成するステップと、
（ｂ）バーコードの種類、バーコード化する文字列およびバーコード全体長の入力を受けるステップと、
（ｃ）前記バーコードの基準となるバーの幅を構成する所定のドット数を初期値として、前記文字列をバーコード化した場合のバーコード全体長を前記関係テーブルを参照して算出するステップと、
（ｄ）前記バーコード全体長の算出値が入力値に納まるか否かを判定するステップと、
（ｅ）前記バーコード全体長の算出値と入力値の大小関係が逆転するまで、少なくとも前記バーコード全体長の算出値が入力値に接近した範囲で１ドットずつ前記基準となるバーの幅を変化させて、ステップ（ｃ）に戻るステップと、
（ｆ）ステップ（ｃ）に戻った後、ステップ（ｄ）で前記バーコード全体長の算出値と入力値の大小関係が逆転したと判定されたとき、前記基準となるバーの幅の現在値に基づいて前記基準となるバーの幅の値を確定するステップと、
（ｇ）前記確定された前記基準となるバーの幅に対応するバーコード構成情報を目的のバーコード構成情報として決定するステップと
をコンピュータに実行させるコンピュータプログラム。
【請求項５】
ステップ（ｃ）において前記バーコードの基準となるバーの幅を構成する所定のドット数を初期値として用い、ステップ（ｅ）において前記バーコード全体長の算出値が入力値を越えるまで、少なくとも前記バーコード全体長の算出値が入力値に接近した範囲で１ドットずつ前記基準となるバーの幅を増加させ、ステップ（ｆ）において前記基準となるバーの幅の現在値より１ドット小さい値を前記基準となるバーの幅として確定する請求項４に記載のコンピュータプログラム。
【請求項６】
ステップ（ｃ）において前記バーコードの基準となるバーの幅を構成する所定の大ドット数を初期値として用い、ステップ（ｅ）において前記バーコード全体長の算出値が入力値より小さくなるまで、少なくとも前記バーコード全体長の算出値が入力値に接近した範囲で１ドットずつ前記基準となるバーの幅を減少させ、ステップ（ｆ）において前記基準となるバーの幅の現在値を前記基準となるバーの幅として確定する請求項４に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インクジェット記録方式の記録ヘッドを用いて画像の記録を行うバーコード生成システムおよびコンピュータプログラムに関する。
【背景技術】
【０００２】
一般にバーコードを生成するバーコード生成システムでは、バーコードの種類や、バーコードの線幅、およびバーコード化する文字列等の情報を設定することでバーコードが生成される(特許文献１）。
【０００３】
またその際に、生成されたバーコードの読取率を向上させるために、補正値の異なるバーコードを幾つも作成して実際に印刷し、バーコード検証機で読取ることで個々の使用環境に合ったバーコード生成を可能にする方法が提案されている（特許文献２）。
【特許文献１】特開平０７−９３４４８号公報
【特許文献２】特開平０８−４４８０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ユーザが望んだバーコードサイズ（すなわちバーコード全体長）を作成するのは、バー幅を変更しつつ印刷出力してみる、という試行錯誤を繰り返す必要があり、ユーザにとって煩雑かつ時間を要する作業が必要であった。
【０００５】
本発明はこのような背景においてなされたものであり、その目的は、所望のバーコード全体長を得ることができるバーコードの構成情報を比較的短時間にかつ容易に決定することが可能なバーコード生成システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明によるバーコード生成システムは、バーコードを生成するバーコード生成システムであって、少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成する手段と、バーコード化する文字列およびバーコード全体長の入力を受ける入力手段と、前記バーコードの基準となるバーの幅を構成するドット数が与えられたとき、前記文字列をバーコード化した場合の全体長を前記関係テーブルを参照して算出する手段と、バーコード全体長の算出値が入力値に納まる範囲で最大となるバーコード構成情報を求める手段とを備えたものである。
【０００７】
あるバーコード種類のバーコードの生成に先立って、バーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成しておくことにより、当該バーコード化する文字列およびバーコード全体長の入力を受けて、前記バーコードの基準となる特定のバーの幅を構成するドット数が与えられたとき、前記文字列をバーコード化した場合の全体長を算出することができる。このバーコード全体長の算出値と入力値とを比較して、バーコード全体長の算出値が入力値に納まる範囲で最大となるバーコード構成情報を求めることができる。
【０００８】
このように関係テーブルを用いることにより、与えられた条件におけるバーコード全体長の実際の値を迅速かつ容易に算出できるので、目標となるバーコード全体長の入力値を越えない範囲で最大の全体長のバーコードを構成する構成情報が容易に得られる。
【０００９】
本発明によるコンピュータプログラムは、バーコードを生成するバーコード生成システムにおけるバーコード構成情報を求めるコンピュータプログラムであって、
（ａ）少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値とを対応づけた関係テーブルを生成するステップと、
（ｂ）バーコードの種類、バーコード化する文字列およびバーコード全体長の入力を受けるステップと、
（ｃ）前記バーコードの基準となるバーの幅を構成する所定のドット数を初期値として、前記文字列をバーコード化した場合のバーコード全体長を前記関係テーブルを参照して算出するステップと、
（ｄ）前記バーコード全体長の算出値が入力値に納まるか否かを判定するステップと、
（ｅ）前記バーコード全体長の算出値と入力値の大小関係が逆転するまで、少なくとも前記バーコード全体長の算出値が入力値に接近した範囲で１ドットずつ前記基準となるバーの幅を変化させて、ステップ（ｃ）に戻るステップと、
（ｆ）ステップ（ｃ）に戻った後、ステップ（ｄ）で前記バーコード全体長の算出値と入力値の大小関係が逆転したと判定されたとき、前記基準となるバーの幅の現在値に基づいて前記基準となるバーの幅の値を確定するステップと、
（ｇ）前記確定された前記基準となるバーの幅に対応するバーコード構成情報を目的のバーコード構成情報として決定するステップと
をコンピュータに実行させるものである。
【００１０】
「前記基準となるバーの幅の現在値に基づいて前記基準となるバーの幅の値を確定する」とは、「前記基準となるバーの幅の現在値」をそのまま「前記基準となるバーの幅の値」の値にするだけでなく、「前記基準となるバーの幅の現在値」と所定の関係にある（例えば１小さい）値も含みうる。
【発明の効果】
【００１１】
本発明によればバーコード化する文字列とバーコードの種類、およびバーコード全体長を設定すれば、短時間で設定したバーコード全体長内に納まるようなバーコードの構成情報を得ることが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。尚、以下に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１３】
図１に、本実施の形態におけるバーコード生成システムの概略構成を示す。このシステムは情報処理装置（ＰＣ）１００とイメージスキャナ１０７と印刷装置２００とを備える。
【００１４】
図１に、本実施の形態におけるバーコード生成システムの概略図を示す。このシステムは情報処理装置１００とイメージスキャナ１０７と印刷装置２００とを備える。
【００１５】
本実施の形態における印刷装置２００は、熱エネルギーを利用したインク吐出方式を採用したインクジェット印刷装置であり、記録媒体の一種としての用紙１０３を搬送する搬送ユニット１０４と、用紙１０３の搬送速度を検出するエンコーダ１０５と、画像データを記録するインクジェット記録方式の記録ユニット１０１で構成される。この記録ユニット１０１は、ＵＳＢなどのインタフェースケーブル１０２を介して情報処理装置１００と接続されている。情報処理装置１００はパーソナルコンピュータ（ＰＣ)などの装置であり、この装置から印刷装置２００に対して、画像データの転送やクリーニングなどの制御コマンドの転送が行われる。情報処理装置１００には、その周辺装置の一つとして、後述するテストパターンを記録したテストチャートを光学的に読み取るためのイメージスキャナ１０７がインタフェースケーブル１０８を介して接続される。
【００１６】
記録ユニット１０１による画像データの記録は、搬送ユニット１０４における用紙センサ（図示せず）からの用紙検出信号をトリガにして、エンコーダ１０５の用紙速度信号に同期しながら、搬送された用紙１０３に対してインク滴を吐出することにより行われる。図１の例では用紙１０３に１次元バーコード１０６を印刷した様子を示している。
【００１７】
図２は、図１のシステムにおける情報処理装置１００と印刷装置２００の制御ハードウェアの構成例を示すブロック図である。
【００１８】
情報処理装置１００は、中央処理装置（ＣＰＵ）等により構成される制御部１１１を備え、この制御部１１１により記憶部１１２に格納されている制御プログラムを実行し、各部を制御する。記憶部１１２は、ＲＯＭ，ＲＡＭ，ＨＤＤ等を含みうる。表示部１１３はＬＣＤ，ＣＲＴ等のディスプレイを含み、ユーザに対して表示画面上に情報を提示する。操作部１１４は、キーボード、マウス等を含み、ユーザからの操作や情報の入力を受け付ける。ＵＳＢインタフェース１１５は、情報処理装置１００を印刷装置２００と接続するためのプリンタインタフェースの一例として示してある。但し、プリンタインタフェースはＵＳＢに限るものではない。
【００１９】
印刷装置２００の制御部２０１は、中央処理装置（ＣＰＵ）２０２を備え、このＣＰＵ２０２により不揮発性メモリ（ＲＯＭ）２０３に格納されている制御プログラムを実行し、各部を制御する。また、制御部２０１は、ＣＰＵ２０２により各種データ処理のワークエリアや受信バッファとして使用されるメモリ（ＲＡＭ）２０４や、制御回路２０９を介して、画像展開部として使用されるイメージメモリ２０５を備える。更に、ＣＰＵ２０２は、制御回路２０９を介して、記録ヘッド２１４〜２１７を駆動するヘッド駆動回路２１０や、各記録ヘッドを記録に適正な状態に保つためのクリーニング動作や記録動作を制御する各種モータ２０６を駆動するモータドライバ２１１、記録ヘッド下に給紙を行うための搬送制御Ｉ／Ｆ２０７の入出力インタフェース制御部（Ｉ／Ｏ）２１２を制御する構成となっている。本例では、図１内のエンコーダ１０５は搬送制御Ｉ／Ｆ２０７に含まれているものとする。
【００２０】
また、印刷装置２００は、基本的に、外部装置である情報処理装置１００から送信された画像データやクリーニングコマンドなどをインタフェースケーブル１０２を介して受信するＵＳＢコントローラ２０８を有し、この受信した各種コマンドに従って動作する。
【００２１】
図３は、印刷された黒バーの太り細りの状態を確認するために、黒バーの幅を計測するためのテストチャートに記録されるテストパターンである。
【００２２】
テストパターン３００は、それぞれ１〜１０ドットの各幅サイズで構成された、各黒バーが用紙搬送方向に垂直な黒バー群３０１と、各黒バーが用紙搬送方向に平行な黒バー群３０２とを含んでいる。本例では、１０種類の異なる幅サイズを使用したが、このテストパターン３００における黒バーの異なる幅の種類は、最低３種類あればよい。
【００２３】
図４は、非記録部で構成される白スペース（白バーともいう）の太り細りの状態を確認するために、白スペースの幅を計測するためのテストチャートに記録されるテストパターンである。「白」とは用紙の地色を意味している。
【００２４】
テストパターン４００は、それぞれ１〜１０ドットの各幅サイズで構成された、各白スペースが用紙搬送方向に垂直な白スペース群４０１と、各白スペースが用紙搬送方向に平行な白スペース群４０２とを含んでいる。本例では、１０種類の異なる幅サイズを使用したが、このテストパターン４００における白スペースの異なる幅の種類は、最低３種類あればよい。
【００２５】
図３および図４で説明したテストパターンは、印刷された紙面上の各幅サイズを実測することにより、幅ドット数と紙面上の実幅サイズの関係を掌握することが出来る構成である。つまり、実際の使用条件（装置、環境、用紙等）で本実施の形態のテストパターンを印刷すれば、記録ヘッドの個体差に起因する吐出量の違いや、用紙の種類に起因する滲み率の違いを考慮した実幅サイズを知ることができ、その測定結果に応じて黒バー／白スペースの幅サイズを補正したバーコードを生成することが可能である。テストパターンの読み取り結果の解析手法に関しては後述する。
【００２６】
なお、図３と図４に示したテストパターン３００，４００は１ページの用紙上に配置して、１ページのテストチャートとしてもよい。
【００２７】
図５は、本実施の形態に係るバーコード生成システムの概略構成を示している。この構成は基本的には図１で説明したとおりである。ここでは、上述したテストパターン３００，４００を印刷したテストチャート５００を用いた本実施の形態におけるバーコード生成システムの概略動作について説明する。
【００２８】
情報処理装置１００の記憶装置にはテストパターン３００，４００に対応するテストチャート画像データ５０６が格納されている。ユーザの指示に応じて、情報処理装置１００はＵＳＢケーブル１０２を介して印刷装置２００に転送し、テストチャート５００を印刷出力する。テストパターン３００，４００を別々のシートに印刷する場合には２ページを印刷出力する。このテストチャートをイメージスキャナ１０７にセットして読み取り、解析し、黒バーと白スペースの各ドット幅を測定する。情報処理装置１００は、この測定結果を解析処理して、関係テーブル７００を生成し、さらに当該バーコード種類に応じたバーコード補正値８００を求める。これらは情報処理装置１００内に記憶される。以後、当該バーコードの生成時にバーコード補正値８００を用いて、補正したバー幅のバーコードを印刷装置２００で印刷出力することができる。
【００２９】
図６は、バーコードを測定し、補正データを検証するためのバーコード検証画面６００を示している。
【００３０】
バーコード検証画面６００は、入力パラメータ領域６１０と出力パラメータ領域６２０を有する。
【００３１】
入力パラメータ領域６１０には、黒バー群のテストパターン３００の読み取り結果である画像データのファイル名６１１と、白スペース群のテストパターン４００の読み取り結果である画像データのファイル名６１２と、画像取り込み方法６１３、印刷方向６１４、傾き補正有無６１５、二値化閾値６１６、解析開始ボタン６１９等が配置されている。
【００３２】
画像取り込み方法６１３は、イメージスキャナ１０７による画像スキャンの他、取り込み済のファイルの選択による方法も用意されている。印刷方向６１４には、解析対象としてのバーコード方向を指定するためのものであり、「ストレート」と「コンベックス」がある。傾き補正有無６１５は、読み込んだバーコードの傾きを補正を行うかどうかを指定するチェックボックスである。二値化閾値６１６は、読み取ったバーコードのバー幅解析のための二値化用の閾値であり、ユーザが設定できるようになっている。解析開始ボタン６１９は、読み取ったテストパターンについてユーザが解析開始を指示するためのボタンである。
【００３３】
所定の入力設定の後、解析開始ボタン６１９が押されると、テストパターンの読み込みが行われ、そのイメージが解析される。さらにこの解析の結果、上記のような関係テーブル７００が生成される。
【００３４】
出力パラメータ領域６２０には、バーコード種類６２１、太細比率６２２、ナローバードット数６２３、全体長６２４、入力コード６２５、補正値決定方法６２６、バーコード補正値領域６２７、検討開始ボタン６２９が配置されている。バーコード種類６２１にはバイナリレベル（２値）とマルチレベル（４値）とがある。バイナリレベルのバーコードとは、細黒バーと太黒バー、および細白スペースと太白スペースの種類で構成されたバーコードのことであり、代表的なバーコードとしてＣｏｄｅ３９、ＩＴＦ等がある。一方、マルチレベル（４値）のバーコードとは、４種類の太さの黒バーと、４種類の太さの白スペースで構成されたバーコードのことを意味し、代表的なバーコードとしてＪＡＮ、ＥＡＮ１２８、Ｃｏｄｅ１２８等がある。太細比率６２２は、太バーと細バーの比率である。ナローバードット数６２３は細バー幅のドット数である。全体長６２４（ここではｍｍ）はバーコード全体の長さである。入力コード６２５はバーコード化する文字列に相当するコードである。補正値決定方法６２６は、ナローバーを基準にした他のバーの幅の決定時の誤差への対処方法の選択肢である。例えば、求める幅に対応するドット数が存在しない場合、その求める幅に対する大小を問わずに近い幅のドット数を選択する、その求める幅より小さい側で近い幅に対応するドット数を選択する、その求める幅より大きい側で近い幅に対応するドット数を選択する、などの選択肢がありうる。バーコード補正値領域６２７は、求めようとするバーコードの補正後の各バーおよびスペースのドット数である。検討開始ボタン６２９は、所定の条件においてバーコード補正値領域６２７を求めることをユーザが指示するためのボタンである。
【００３５】
その後、バーコード種類６２１の指定、バイナリレベル（２値）の場合の太細比率６２２、全体長６２４、入力コード６２５の入力、および補正値決定方法６２６の指定の後、検討開始ボタン６２９が押されると、各バー幅およびスペース幅のドット数がバーコード補正値領域６２７に表示される。バーコード補正値領域６２７に表示された補正値でバーコードを生成すれば、全体長６２４で設定した長さに納まるようなバーコードを生成することができる。
【００３６】
図７は、図３および図４で示したテストパターンをイメージスキャナで読み込んだ黒バーおよび白スペースの各幅ドット数に対して、実際に紙面上に着弾し滲んだ黒バーおよび白スペースの実幅サイズ（単位マイクロメートル）を測定した結果得られた関係テーブル７００の一例を示している。換言すれば、関係テーブル７００は、少なくとも１つのバーコード種類についてそのバーコードを構成する黒バーおよび白スペースの１ドット単位の幅ドット数と、その幅ドット数で印刷した場合の黒バーおよび白スペースの実幅値（μｍ）とを対応づけたデータテーブルである。関係テーブル７００は、バーコード方向（垂直および水平）毎に作成することができる。
【００３７】
例えば、図示の例によれば、１０ドットで構成した黒バー幅は、紙面上で５１３μｍであり、１０ドットで構成した白スペース幅は３３１μｍになることが示されている。なお、図７の例ではドット数１〜３０までのデータを用意している。図３，図４のテストパターンは１ドットから１０ドットまでの幅についてのみのものであったが、その読み取り結果から推測して残りの幅ドット数のデータを得ることが可能である。
【００３８】
図８は、このバーコード生成システムで得られるバーコード補正値８００の例を示している。バーコード補正値８０１はバイナリレベルのバーコードにおけるバーコード補正値を表したものである。バイナリレベルのバーコードを補正する場合、バーコードの太細比率は１：２．５で構成されているため、図７で示した黒バーと白スペースの関係テーブル７００から１：２．５となる黒太バーのドット数を選び、尚かつ黒バーと白スペースの実サイズ幅が同じとなるドット数を選ぶ。これにより、読取り品位の高い適正なバーコード補正値を得ることができる。
【００３９】
また、例えば、細バー幅が４ドットの時、図７から実サイズは２５０μｍである。細スペースは、細バー幅と同じ実サイズである２５０μｍに最も近いドット数を関係テーブル７００から探し出すことにより、８ドットと決定される。また太バーおよび太スペースは、太細比率１：２．５より２５０μｍ×２．５  ＝  ６２５μｍに最も近いドット数を図７の関係テーブル７００から探し出し、太バーは１３ドット、太スペースは１６ドットと決定される。これによりバーコードの読取り率の重要要素である『細バー幅×２．５＝太バー幅』、および『黒バー幅＝白スペース幅』を紙面上の実サイズで保証することができる。また、基準となる細バーの幅を３ドットから、４ドット、５ドット・・・と増やしていくことで、各細バー幅に対応した他のバー幅およびスペース幅の適正な補正値が決定される。
【００４０】
また、バーコード補正値８０２は、マルチレベルのバーコードにおけるバーコード補正値を表したものである。マルチレベルのバーコード補正値８０２については、黒バーの太さの比が１：２：３：４となる４値の各黒バーのドット数を選び、尚かつ黒バーと白スペースの実サイズ幅が同じとなるドット数を選ぶ。これにより読取り品位の高い適正なバーコード補正値を算出することができる。例えば細バー幅が４ドットの時、実サイズは２５０μｍなので４値の黒バーの実サイズ幅が１：２：３：４となる４値の各黒バーの幅サイズは、２５０μｍ、５００μｍ、７５０μｍ、１０００μｍとなる。図７の関係テーブル７００から実サイズ幅に最も近い幅サイズとなるドット数は、それぞれ、４、１０、１６、２１となる。同様に、各スペース幅のドット数は８、１４、２０、２６となる。これにより、バーコード読取り率の重要ファクターの一つである『１：２：３：４の比率』、および『黒バー幅＝白スペース幅』という幅の条件を紙面上の実サイズで保証することが出来る。また以上の方法で細バー幅を３ドットから、４ドット、５ドット・・・と増やしていくことで各細バー幅に対応する適正なバーコード補正値が決定される。
【００４１】
このような補正値は、関係テーブル７００からいつでも求めることができる。したがって、必要に応じて必要な補正値のみをその都度、関係テーブル７００を参照して求めてもよいし、主要な補正値を予め求めて記憶しておいてもよい。
【００４２】
図９は、本実施の形態のバーコード生成システムにおいて、バーコード全体長を算出する方法を説明するための図である。入力情報９００として、ユーザが入力コードを“４９９３７４”と入力し、描画するバーコードの種類をＣＯＤＥ１２８、バーコード全体長を１２ｍｍにそれぞれ設定したとする。バーコード９０１はこの条件で描画されたバーコードの具体的な形態を表したものである。ＣＯＤＥ１２８はマルチレベルのバーコードであり、入力コードの前後に所定のスタートコードおよびストップコードが必ず付加される。バーコード９０１の全体長を求めるためにまず４種類の（すなわち幅の異なる）黒バーおよび白スペースがそれぞれいくつあるかを数える。４種類の黒バーおよび白スペースを数えた結果は枠９０２内に示したとおりである。この結果と図７の関係テーブル７００を用いて、まず一番細い黒バーが３ドットの補正値を用いた時のバーコード全体長を、次のように計算し求める。
（バーコード全体長）  ＝  （１９９×７  ＋  ３９０×５  ＋  ６００×３  ＋  ７７３×１）  ＋  （１８５×８  ＋  ３７１×４  ＋  ６１６×２  ＋  ７８７×１）
【００４３】
計算式９０３に示すように、最も細いバー幅のドット数が３ドットの場合のバーコード全体長は１０．９０ｍｍとなり、ユーザが設定したバーコード全体長である１２ｍｍに納まる。計算したバーコード全体長が、ユーザが設定したバーコード全体長に納まる場合は、一番細い黒バーに１ドット加え、１ドット加えた一番細いバーを基準とした補正値とバーコード全体長を求める。最も細いバー幅のドット数が４ドットの場合のバーコード全体長は１３．９３ｍｍとなり、ユーザが設定したバーコード全体長（入力バーコード全体長）である１２ｍｍを越える。このように計算したバーコード全体長が、ユーザが設定したバーコード全体長を超えるまで、最も細いバー幅のドット数を増加させていき、算出した全体長が越えたときドット数を１ドット減らした黒バーを基準とした補正値からバーコードを作成する。このようにすることにより、入力バーコード全体長に納まるという条件下で最大長のバーコードを得ることができる。
【００４４】
図１０は、本実施の形態のバーコード生成システムが画面６００で設定された入力バーコード全体長に該当するバーコードを作成するためのバーコード構成情報を得るための処理の流れを表したフローチャートである。この処理の実行手順を表すプログラムは記憶部１１２内に格納され、制御部１１１がこれを解釈実行することにより、この処理が実現される。
【００４５】
この処理は、印刷しようとするバーコードの種類や方向について、図７に示した関係テーブル７００が生成されていることを前提とする。
【００４６】
まず、図６の画面６００においてユーザから、バーコード種類、太細比率、入力コード、バーコード全体長（入力値）の設定を受ける（Ｓ１１）。但し、太細比率は、バーコード種類によってデフォルト値が決まっている場合、変更の必要がなければ入力する必要はない。
【００４７】
次に、設定されたバーコードの種類と入力コード（文字列）に基づいて、１文字毎に黒バーと白スペースのキャラクタ構成（すなわちバーおよびスペースの種類および個数）を解析する（Ｓ１２）。その後、異なる細バー幅ドット数毎に、各細バー幅を基準に対応するバーコード補正値を算出する（Ｓ１３）。
【００４８】
その後、出力するバーコード全体長の算出値が入力値に納まる範囲で最大となるバーコード構成情報を求めるための処理を行う。
【００４９】
まず、細バー幅ｉをその初期値である３ドットに設定する（Ｓ１４）。ここでは、印刷解像度が６００ｄｐｉの場合を想定しており、その場合、通常３ドットが細バー幅の許容される最小値である。その後、ステップＳ１５〜Ｓ１７のループ処理を実行する。
【００５０】
ループ処理では、前述した例と同様に、細バー幅ｉに対応するバーコード補正値に基づいて、当該バーコード全体長を算出する（Ｓ１５）。具体的には、バーコードを構成するすべてのバーおよびスペースの幅を、関係テーブル７００を参照して求め、当該すべてのバーおよびスペースの実際の幅の総和をバーコード全体長の算出値とする。このバーコード全体長の算出値が入力値に納まるか否かを判定する（Ｓ１６）。バーコード全体長の算出値がバーコード全体長の入力値を越えない場合、細バー幅ｉを１ドット増加させ（Ｓ１７）、ステップＳ１５に戻って新たな細バー幅ｉについてバーコード全体長を改めて算出する。ステップＳ１６で算出されたバーコード全体長の入力値がバーコード全体長の入力値を越えたとき、現在のｉ値より１ドット小さい細バー幅に対応するバーコード補正値を画面６００のバーコード補正値領域６２７に表示する（Ｓ２０）。ただし、１ドット減じる前のｉが３ドットより小さい場合（すなわち４ドットに達していない場合）（Ｓ１８）、１ドット減じると細バー幅の最小値より細くなってしまうので、エラーメッセージを出力する（Ｓ１９）。ユーザはその場合、設定をやり直す。
【００５１】
なお、ステップＳ１６において、バーコード全体長の算出値と入力値との差分を求め、その差分が所定値以上である場合には、ステップＳ１７での増加数単位を複数ドット（例えば２ドットまたはそれ以上）とするようにしてもよい。これは１ドットの増加では新たなバーコード全体長の算出値が入力値を越えないことが明らかな場合に一度に複数ドットの増分を行うことによりループ処理回数を低減させる効果がある。なお、このループ処理はバーコード全体長の算出値が入力値を越える直前の最大の細バー幅を求めることが目的なので、上記差分が０になる前に１ドット単位の増加に戻すことが必要である。
【００５２】
図１１は、図１０のフローチャートの処理の変形例を示したフローチャートである。この処理は基本的には図１０の処理と同様であり、主として相違点のみを説明する。すなわち、ステップＳ２１〜Ｓ２３，Ｓ２５，Ｓ２７〜Ｓ２９は、それぞれ、図１０のステップＳ１１〜Ｓ１３，Ｓ１５，Ｓ１７〜Ｓ１９と同じである。相違点の趣旨は、図１０の処理では細バー幅ｉを所定の小ドット数（例えば全ドット数のうちの最小のもの）から開始したが、図１１の処理では所定の大ドット数（例えば全ドット数のうちの最大のもの）から開始する点である。そのために、ステップＳ２４では、細バー幅ｉの初期値として所定の大ドット数（ここでは３０ドット）を用い、ステップＳ２６では、バーコード全体長の算出値が入力値以下となったかどうかをチェックする。また、ステップＳ２７では、細バー幅ｉを１ドットだけ減少させる。ステップＳ３０では細バー幅ｉの現在値に対応するバーコード補正値を表示する。
【００５３】
図１１の処理においても、ステップＳ２６において、バーコード全体長の算出値と入力値との差分を求め、その差分が所定値以上である場合には、ステップＳ１７での減少数単位を複数ドット（例えば２ドット）とするようにしてもよい。
【００５４】
図１０，図１１に共通な特徴は、バーコード全体長の算出値と入力値の大小関係が逆転するまで、少なくとも前記バーコード全体長の算出値が入力値に接近した範囲で１ドットずつ前記基準となるバーの幅を変化させて、前記バーコード全体長の算出値と入力値の大小関係が逆転する境界点を見つけ出し、前記基準となるバーの幅の現在値に基づいて前記基準となるバーの幅の値を確定するものである。
【００５５】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。
【００５６】
例えば、基準となるバーコード要素を最も細いバーとしたが、他のバーコード要素としてもよい。
【００５７】
上記実施の形態で説明した機能をコンピュータで実現するための、コンピュータにインストールされるプログラムコード自体も本発明を構成するものである。つまり、本発明における特許請求の範囲に記載した要件を満たす機能を実現するコンピュータプログラム自体も本願発明に含まれる。なお、プログラムとしては、プロセッサが直接に解釈し実行可能なオブジェクトコードプログラム、および、インタプリタにより実行されるプログラム、ＯＳまたはアプリケーション上で動作するスクリプトデータ形式のプログラム等、プログラムの形態は問わない。また、プログラムを供給するための「記録媒体」としては、例えば、磁気記憶媒体（フレキシブルディスク、ハードディスク、磁気テープ等）、光ディスク（ＭＯやＰＤ等の光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等）、半導体ストレージ、紙テープ、などを挙げることができる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施の形態におけるバーコード生成システムの概略構成を示す図である。
【図２】図１のシステムにおける情報処理装置と印刷装置の制御ハードウェアの構成例を示すブロック図である。
【図３】本発明の実施の形態において用いる黒バーの幅を計測するためのテストチャートに記録されるテストパターンを示す図である。
【図４】本発明の実施の形態において用いる白スペースの幅を計測するためのテストチャートに記録されるテストパターンを示す図である。
【図５】本発明の実施の形態に係るバーコード生成システムの概略構成を示す図である。
【図６】本発明の実施の形態におけるバーコード検証画面の一例を示した図である。
【図７】本発明の実施の形態における関係テーブルの一例を示した図である。
【図８】本発明の実施の形態におけるバーコード生成システムで得られるバーコード補正値の例を示した図である。
【図９】本発明の実施の形態のバーコード生成システムにおいて、バーコード全体長を算出する方法を説明するための図である。
【図１０】本発明の実施の形態においてバーコード構成情報を得るための処理の流れを表したフローチャートである。
【図１１】図１０のフローチャートの処理の変形例を示したフローチャートである。
【符号の説明】
【００５９】
１００…情報処理装置
１０１…記録ユニット
１０３…用紙
１０４…搬送ユニット
１０６…１次元バーコード
１０７…イメージスキャナ
１１１…制御部
１１２…記憶部
１１３…表示部
１１４…操作部
２００…印刷装置
２０１…制御部
２０５…イメージメモリ
３００…テストパターン
３０１，３０２…黒バー群
４００…テストパターン
４０１，４０２…白スペース群
５００…テストチャート
５０６…テストチャート画像データ
６００…バーコード検証画面
６１０…入力パラメータ領域
６１１，６１２…ファイル名
６１３…画像取り込み方法
６１４…印刷方向
６１５…傾き補正有無
６１６…二値化閾値
６１９…解析開始ボタン
６２０…出力パラメータ領域
６２１…バーコード種類
６２２…太細比率
６２３…ナローバードット数
６２４…全体長
６２５…入力コード（入力文字列）
６２６…補正値決定方法
６２７…バーコード補正値領域
６２９…検討開始ボタン
７００…関係テーブル
８００，８０１，８０２…バーコード補正値
９００…入力情報
９０１…バーコード
【図２】
2010046921.tif 000003
【図３】
2010046921.tif 000004
【図４】
2010046921.tif 000005
【図７】
2010046921.tif 000006
【図８】
2010046921.tif 000007
【図９】
2010046921.tif 000008
【図１０】
2010046921.tif 000009
【図１１】
2010046921.tif 000010
【図１】
2010046921.tif 000011
【図５】
2010046921.tif 000012
【図６】
2010046921.tif 000013