(57)【特許請求の範囲】
【請求項１】
複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコード手段と、
前記各コード体系によるデコード中に、前記コードを読み取るための１つの読取線から取得されるデータに文字列を対応付ける過程で生成される処理内容データを記憶させる記憶手段と、
前記処理内容データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出手段と、 
前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力手段と、
を含むことを特徴とするコード認識装置。
【請求項２】
請求項１のコード認識装置において、
前記処理内容データは、前記各コード体系が用いる少なくとも１つの種類の図形要素であると認識された図形要素の前記媒体における表示態様に従って決定される値であって、
前記尤度算出手段は、前記値のばらつきが小さくなるほど前記尤度が高くなるように前記尤度を算出する、
ことを特徴とするコード認識装置。
【請求項３】
請求項２のコード認識装置において、
前記媒体に表されたコードが、複数種類の幅のバー又はスペースの配列からなるバーコードであって、
前記処理内容データは、前記各コード体系が用いる少なくとも１つの種類のバー又はスペースであると認識されたバー又はスペースの前記媒体に表された前記バーコードにおける幅に従って決定される値である、
ことを特徴とするコード認識装置。
【請求項４】
請求項３のコード認識装置において、
前記値が、前記バー又はスペースの前記媒体に表された前記バーコードにおける幅に従って、前記バーコードの所定領域毎に決定される、前記バーコードのバー又はスペースの幅の種類を判定するための閾値を示す、
ことを特徴とするコード認識装置。
【請求項５】
複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコード手段と、
前記各コード体系について、前記コードをデコードするために要した演算の量を示す処理内容データを記憶させる記憶手段と、
前記処理内容データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出手段と、
前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力手段と、を含み、
前記尤度算出手段は、前記演算の量が少なくなるほど前記尤度が高くなるように前記尤度を算出する、
ことを特徴とするコード認識装置。
【請求項６】
請求項５のコード認識装置において、
前記媒体に表されたコードが、複数種類の幅のバー又はスペースの配列からなるバーコードであって、
前記デコード手段は、前記バーコードにおける複数の読取線から読み取られるバー及びスペースの配置に基づいてデコード処理を施し、
前記演算の量は、前記バーコードをデコードするまでに要した前記読取線の本数に従って導出される、
ことを特徴とするコード認識装置。
【請求項７】
複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコードステップと、
前記各コード体系によるデコード中に、前記コードを読み取るための１つの読取線から取得されるデータに文字列を対応付ける過程で生成される処理内容データを記憶手段に記憶させる記憶ステップと、
前記処理内容データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出ステップと、 
前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力ステップと、 
をコンピュータに実行させるためのプログラム。
【請求項８】
複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコードステップと、
前記各コード体系について、前記コードをデコードするために要した演算の量を示す処理内容データを記憶手段に記憶させる記憶ステップと、
前記処理内容データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出ステップと、 
前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力ステップと、 
をコンピュータに実行させるためのプログラムであって、
前記尤度算出ステップでは、前記演算の量が少なくなるほど前記尤度が高くなるように前記尤度を算出する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード認識装置及びプログラムに関し、特に、適切なコード体系によるデコード処理に関する。
【背景技術】
【０００２】
バーコード認識装置には、例えば、郵便物等のバーコードのように複数種類のバーコードが付されている場合等に、バーコードのコード体系を峻別してデコードする処理が必要とされている。
【０００３】
特許文献１は、かかる必要性に鑑みてなされた発明であって、所定のバーコードの一部に他種類のバーコードが含まれる場合であっても、バーコードを適切に認識する方法が開示されている。図１は、かかる場合のバーコードを示すひとつの例である。読取対象となったバーコードは、その上下を判断することができないため、まずは左右両側から様々なコード体系でデコードされる。同図は、当該バーコードが、左側からデコードする場合にはＣＯＤＥ３９として、右側からデコードする場合にはその一部がＮＷ７としてデコードできたことを示している。
【特許文献１】特開２００６−２２７７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、図２に示すように、本来はＣＯＤＥ１２８でデコードされるべきバーコードの全体が、ＮＷ７で表現される値の理論値とも近似するようなことがある。この場合には、読取対象のバーコード（ａ）が、ＮＷ７で記載されたバーコードの理論値（ｂ）を示すのか、ＣＯＤＥ１２８で記載されたバーコードの理論値（ｃ）を示すのかについて、従来の技術では判別できず、誤ったコード体系でバーコードが認識される可能性がある。
【０００５】
本発明は、上記課題に鑑みてなされたものであって、その目的は、読取対象のバーコード全体が複数種類のバーコードとしてデコードできる場合に、いずれのコード体系で記載されたバーコードであるかを判別することにより、適切なコード体系でバーコードを認識する装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１の発明は、複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコード手段と、前記各コード体系について、デコード中にデコード処理の内容の少なくとも一部を示す処理内容データを記憶させる記憶手段と、前記処理内容データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出手段と、前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力手段と、を含むことを特徴とするコード認識装置である。
【０００７】
請求項２の発明は、請求項１のコード認識装置において、前記処理内容データは、前記各コード体系が用いる少なくとも１つの種類の図形要素であると認識された図形要素の前記媒体における表示態様に従って決定される値であって、前記尤度算出手段は、前記値のばらつきが小さくなるほど前記尤度が高くなるように前記尤度を算出する、ことを特徴とする。
【０００８】
請求項３の発明は、請求項２のコード認識装置において、前記媒体に表されたコードが、複数種類の幅のバー又はスペースの配列からなるバーコードであって、前記処理内容データは、前記各コード体系が用いる少なくとも１つの種類のバー又はスペースであると認識されたバー又はスペースの前記媒体に表された前記バーコードにおける幅に従って決定される値である、ことを特徴とする。
【０００９】
請求項４の発明は、請求項３のコード認識装置において、前記値が、前記バー又はスペースの前記媒体に表された前記バーコードにおける幅に従って、前記バーコードの所定領域毎に決定される、前記バーコードのバー又はスペースの幅の種類を判定するための閾値を示す、ことを特徴とする。
【００１０】
請求項５の発明は、請求項１のコード認識装置において、前記処理内容データは、前記コードをデコードするために要した演算の量を示し、前記尤度算出手段は、前記演算の量が少なくなるほど前記尤度が高くなるように前記尤度を算出する、ことを特徴とする。
【００１１】
請求項６の発明は、請求項５のコード認識装置において、前記媒体に表されたコードが、複数種類の幅のバー又はスペースの配列からなるバーコードであって、前記デコード手段は、前記バーコードにおける複数の読取線から読み取られるバー及びスペースの配置に基づいてデコード処理を施し、前記演算の量は、前記バーコードをデコードするまでに要した前記読取線の本数に従って導出される、ことを特徴とする。
【００１２】
請求項７の発明は、複数種類の図形要素の配列からなり、媒体に表されたコードに対し、それぞれ所定種類の図形要素を用いる複数コード体系でデコード処理を施すデコードステップと、前記各コード体系について、デコード中にデコード処理の内容の少なくとも一部を示すデータを記憶手段に記憶させる記憶ステップと、前記データに従って、前記各コード体系で記述されたことの尤度を算出する尤度算出ステップと、前記尤度に従って、いずれかのコード体系でのデコード結果を出力する出力ステップと、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１３】
請求項１及び請求項７の発明によれば、各コード体系によるデコード処理の内容の少なくとも一部を示す処理内容データに従って、コード体系で記載されたことの尤度を算出することにより、コードが記載されたコード体系を判断するので、適切なコード体系でコードを認識することができる。
【００１４】
請求項２の発明によれば、各コード体系で用いられる少なくとも１つの種類の図形要素が、媒体上で表示されている態様に従って決定される値のばらつきを処理内容データとするため、コード体系ごとのデコード処理中に、コード体系で記載されたことの尤度を算出できる。
【００１５】
請求項３の発明によれば、媒体上に表示されているバーコードのバー又はスペースのうちの少なくとも１つの種類の幅に従って決定される値のばらつきから、コード体系で記載されたことの尤度を算出するので、バーコードの場合に、精度よく尤度を算出することができる。
【００１６】
請求項４の発明によれば、媒体上に表示されているバーコードのバー又はスペースのうちの少なくとも１つの種類の幅に従って、所定領域毎に決定される閾値のばらつきから、コード体系で記載されたことの尤度を算出するので、バーコードのデコード処理過程で生じる値を活用して尤度を算出することができる。
【００１７】
請求項５の発明によれば、デコードできたコード体系で要した演算量に従って、コード体系で記載されたことの尤度を算出するので、デコードできたコード体系から適切なコード体系を効率的に判断することができる。
【００１８】
請求項６の発明によれば、バーコードを複数の読取線から読み取られるバー及びスペースの配置に基づいてデコード処理を施す場合に、デコードできた各コード体系で要した読取線の本数に従って、コード体系で記載されたことの尤度を算出するので、適切なコード体系を効率的に判断することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の好適な実施の形態について図面に基づき詳細に説明する。
【００２０】
図３は、本発明の実施形態にかかるバーコード認識装置３におけるハードウェア構成と機能的構成を示すブロック図である。ここで、コードとは、複数の図形要素の配列により数値や文字等を表す符号のことをいう。複数種類の幅のバー及びスペースの配列からなるバーコードを認識するバーコード認識装置３は、コード認識装置の一態様である。また、コード体系とは、複数の図形要素の配列と、数値や文字等とを対応付ける規則のことをいう。
【００２１】
バーコード認識装置３は、制御部３１、記憶部３２、バーコード取得部３３、通信部３４を含んで構成される。本実施形態におけるバーコード認識装置３は、手持ち型、あるいは据え置き型のいずれのバーコードリーダであってもよい。
【００２２】
制御部３１は、ＣＰＵ（Central Processing Unit）等のプログラム制御デバイスである。制御部３１は、デコード部３１Ａ、デコード内容記憶処理部３１Ｂと、尤度算出部３１Ｃ、出力部３１Ｄの各機能ブロックを含んでおり、本発明の実施形態にかかるプログラムを実行することによって各機能が実現される。このプログラムは、例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のコンピュータ読取可能な各種の情報記憶媒体に格納されて提供されてもよいし、インターネット等の通信手段を介して提供されてもよい。各機能の詳細については後述する。
【００２３】
記憶部３２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等のメモリ素子、ならびにハードディスク等によって構成される。この記憶部３２は、制御部３１が実行する上記プログラム（ソフトウェア）を格納している。また、この記憶部３２は、制御部３１の処理の過程で利用される種々のデータを保持するワークメモリとしても動作する。また本実施形態における記憶部３２は、デコード内容記憶部３２Ａとして用いられる。
【００２４】
バーコード取得部３３は、認識する対象のバーコードが表された媒体に光を照射するＬＥＤ等の光源、及び、当該バーコードからの反射光を取り込むＣＣＤ等の受光素子からなる。バーコード取得部３３は、バーコードが表された媒体に光を照射し、その反射光がＣＣＤ等の受光素子に受光させてバーコードが取得される。また、バーコード取得部３３は、紙媒体等に表されたバーコードを全体的に捉えた画像形式のデータ（以下、バーコード画像）により、バーコードを取得する。バーコード取得部３３に取得されたバーコードは、デコード処理等の対象として制御部３１に提供される。
【００２５】
通信部３４は、ネットワークボード等によって構成される。この通信部３４は、例えば、記憶部３２に蓄積されるデコード処理の結果を、ネットワークを介して他のサーバ等に送信する等の各種データのやり取りをする等の機能を担う。
【００２６】
ここで、バーコード認識装置３の制御部３１に含まれる、デコード部３１Ａ、デコード内容記憶処理部３１Ｂ、尤度算出部３１Ｃ、出力部３１Ｄが実現する各機能を、図４および図５を用いて説明する。図４は、認識対象のバーコードの画質が悪く、各バー又は各スペースが各位置によって異なる幅を有しているバーコード画像を示している。さらに同図では、バー又はスペースの配置を示すラインデータを７本の読取線から読み取る様子が示されている。次に図５は、図４のバーコード画像を、ＮＷ７のコード体系によってデコード処理する過程とその結果（図５（ａ））、と、ＣＯＤＥ１２８のコード体系によってデコード処理する過程とその結果（図５（ｂ））とを示す図である。
【００２７】
デコード部３１Ａは、バーコード取得部３３で読み取られたバーコードを、予めデコード処理を行うように設定されている複数のコード体系に従ってデコードする。ここでデコード処理とは、媒体から読み取られた複数の図形要素の配列からなるコードを所定のコード体系に従って復号する処理をいう。具体的には、このデコード部３１Ａは、バーコード画像に対して、図４に示すようにバー及びスペースの配置を読み取るための読取線を複数箇所に設定し、読取線から取得されるバー及びスペースの配置を示す複数箇所のラインデータに従って、バーコードをデコードする。この読取線は、少なくとも１画素の幅で、バーコードの開始位置からバーコードが終了する位置まで、バーコードの長さ方向（バーコードの長手方向）に仮想的に引かれる線のことをいう。デコード部３１Ａは、バーコード画像の各読取線から読み取られるラインデータを、各コード体系に従って文字や数字を表すバー及びスペースの配列に対応付けることにより、各読取線のデコード結果を得て、バーコードをデコードする。
【００２８】
図５（ａ）は、各読取線に従って読み取られたラインデータが示すバー又はスペースの配置を、ＮＷ７のコード体系に従ってデコードし（読取線のデコード結果）、バーコードをデコードした結果（読取線１〜７から判断されたデコード結果）を示している。また図５（ｂ）は、同様にＣＯＤＥ１２８のコード体系に従ってデコードしている場合である。図５（ａ）及び図５（ｂ）で示される各読取線に対応づけられている文字列は、デコード部３１Ａのデコード処理により、各キャラクタ毎に、ラインデータにおけるバー又はスペースの配置と、文字列を示すバー又はスペースの配列とが対応付けられて得られたものである。また、図５における「×」印は、そのキャラクタにおけるバー又はスペースの配置に、対応付けられる文字列を示すバー又はスペースの配列がなかったことを示している。
【００２９】
同図で示されるように、各ラインデータで異なる文字列として識別されたり、ラインデータによっては識別できないキャラクタを含む場合がある。そこで、デコード部３１Ａは、複数の読取線によるデコード結果に従って、キャラクタ毎に文字を判断している。この判断は、図５で示すように、バーコードにおける全てのキャラクタにおいて、複数の各読取線のデコード結果のうちで最多となる文字に決定することにより行われる。また、最多となる文字を決定できない場合に、デコード部３１Ａは、新たに読取線を設定してそのデコード結果を取得し、再びキャラクタ毎に最多となる文字を決定する処理を繰り返す。デコードがきた場合には、デコード部３１Ａは、デコードできたコード体系とバーコードのデコード結果とを関連付けて記憶部３２に記憶する。
【００３０】
なお、デコード部３１Ａは、所定本数の読取線のデコード結果を取得してもバーコードをデコードできない場合には、他のコード体系によるデコード処理を行うこととする。なお、キャラクタ毎に文字を判断する際に、上記では複数の読取線によるデコード結果において最多となる文字か否かにより判断しているが、例えば３本以上の複数の読取線によるデコード結果において過半数を占める文字があるか否かにより判断する等、その他の方法で判断してもよい。
【００３１】
デコード内容記憶処理部３１Ｂは、デコード部３１Ａによる各コード体系のデコード処理の際に、デコード処理の内容の少なくとも一部を処理内容データとしてデコード内容記憶部３２Ａに記憶させる。この処理内容データは、バーコードのデコード処理で用いられたり処理の過程で発生する情報、及び、デコード処理自体を示す情報である。具体的には、処理内容データは、バーコードにおけるバーの幅等の、媒体における図形要素の表示態様に従って決定されるデータ、デコード処理に要した演算の量を示すデータである。ここで、デコード内容記憶処理部３１Ｂは、ＮＷ７によるデコード処理（図５（ａ））の場合には、読取線の本数である「７」を、デコード処理に要した演算の量を示すデータとしてデコード内容記憶部３２Ａに記憶させる。また、同様に、ＣＯＤＥ１２８によるデコード処理（図５（ｂ））の場合には、読取線の本数である「４」を、デコード内容記憶部３２Ａに記憶させる。
【００３２】
尤度算出部３１Ｃは、デコード内容記憶部３２Ａに記憶された処理内容データから、バーコードがいずれのコード体系で記載されているかを判断するために、各コード体系で記述されたことの尤度を算出する。ここで、尤度とは、尤もらしさの尺度のことをいう。各コード体系で記述されたことの尤度とは、具体的には、図５（ａ）で示されるＮＷ７のコード体系でデコードした場合のデコード結果である「Ｄ２＋／＄．／＋：Ｂ」の、バーコード本来のバー又はスペースを示す配列から復号できる文字列としての尤もらしさを判断するための尺度である。バーコードが本来記述されているコード体系でデコードする場合と、そのコード体系と異なるコード体系でデコードする場合とでは、一般的に、デコード処理に要した読取線の本数は後者のほうが多くなる。従って、尤度算出部３１Ｃは、例えば、デコードに要した読取線の本数の逆数をとることにより、ＮＷ７で記述されたことの尤度とＣＯＤＥ１２８で記述されたことの尤度とでは、ＣＯＤＥ１２８の尤度を高くなるように算出する。
【００３３】
出力部３１Ｄは、尤度算出部３１Ｃにおいて算出された尤度が最も高いコード体系によるバーコードのデコード結果を、記憶部３２に出力する。具体的には、出力部３１Ｄは、ＣＯＤＥ１２８によるバーコードのデコード結果を、尤度が最も高いコード体系によるバーコードのデコード結果として「Ｂ０１２３４５６７８９ｎ」を出力する。
【００３４】
図６は、上記のデコード処理のフローの一例を示す図である。まず、バーコードをデコードするコード体系とデコードする方向とを決定する（Ｓ６０１）。次に、デコード部３１Ａは、読取線を設定してラインデータを取得する（Ｓ６０２）。さらにデコード部３１Ａは、取得されたラインデータをデコードする（Ｓ６０３）。Ｓ６０４では、Ｓ６０３のラインデータのデコード結果を用いて、バーコードをデコードできたか否かを判断する。Ｓ６０４で、バーコードをデコードできた場合（ＹＥＳ）には、読取線を設定してラインデータを取得した回数とバーコードのデコード結果とを記憶部３２に記憶し（Ｓ６０５）、Ｓ６０７の処理を実行する。一方、Ｓ６０４でバーコードをデコードできなかった場合（ＮＯ）には、当該コード体系によるデコード処理に費やされているラインデータの取得回数が所定回数を超えているか否かを判断し（Ｓ６０６）、所定回数を超えない場合（ＮＯ）には再びラインデータを取得して（Ｓ６０２）、当該コード体系によるデコード処理を継続する。Ｓ６０６で所定回数を超える場合（ＹＥＳ）には、当該コード体系ではバーコードがデコードできないと判断し、次のＳ６０７における処理を実行する。
【００３５】
そして、Ｓ６０７では、予めデコードするように設定されている全てのコード体系を左右両側から、バーコードのデコード処理を実行したか否かを判断し、まだ実行されていないデコード処理が残っている場合（ＮＯ）にはＳ６０１に戻る。全てのコード体系で左右からデコード処理を実行している場合（ＹＥＳ）には、Ｓ６０５で記憶されたラインデータの取得回数から尤度を判断して、最も尤度の高いデコード結果を出力する（Ｓ６０８）。
【００３６】
なお、上記では、各コード体系のデコード処理に要した読取線の本数を処理内容データとして、尤度算出部３１Ｃがコード体系で記載されたことの尤度を判断しているが、下記では処理内容データを、図形要素の媒体における表示態様に従って決定されるデータとする場合について説明する。
【００３７】
デコード部３１Ａは、読取線からバー又はスペースの配置を読み取り、バー又はスペースの配置と、文字列を示すバー又はスペースの配列とを、各キャラクタ毎に対応付ける。この対応付けの際には、デコード部３１Ａは、まず、読取線から読み取られた各バー及び各スペースの種類を判断するための閾値を設定する。これにより、読取線から読み取られたバーのうち、閾値の幅を超えるバーと、閾値の幅を超えないバーとで、異なる種類の図形要素として認識されることとなる。この閾値は、各コード体系において所定の方法で決定されるものであるが、本実施形態におけるＮＷ７のコード体系であれば、バーの種類が２種類であることから、各キャラクタにおける最も太いバーと最も細いバーとの幅の平均値を閾値として、各キャラクタごとに決定している。
【００３８】
図７は、ＮＷ７のコード体系で右側から左側にデコードする場合の各キャラクタ毎に決定される閾値と（図７（ａ））、ＣＯＤＥ１２８のコード体系で左側から右側にデコードする場合の各キャラクタ毎に決定される閾値とを示している（図７（ｂ））。同図（ａ）に示されているＮＷ７の閾値は、２種類のバーを判断するための閾値である。また、同図（ｂ）に示されているＣＯＤＥ１２８の閾値は、４種類のバーのうちの一番細いバーと二番目に細いバーとを判断するための閾値である。
【００３９】
デコード内容記憶処理部３１Ｂは、各コード体系でデコードする場合の各キャラクタ毎の閾値を、デコード部３１Ａによるデコード処理の過程で発生した処理内容データとして、デコード内容記憶部３２Ａに記憶させる。
【００４０】
次に、尤度算出部３１Ｃは、デコード内容記憶部３２Ａに記憶されている各キャラクタ毎の閾値から、当該閾値の標準偏差をばらつき量として求める。ここで、バーコードが本来記述されているコード体系でデコードする場合と、そのコード体系と異なるコード体系でデコードする場合とでは、各々のコード体系で用いられる一種類のバーとして認識されるバーの幅等のばらつき量は、一般的に後者のほうが大きくなる傾向にある。従って、尤度算出部３１Ｃは、標準偏差の逆数を、各コート体系で記述されたことの尤度として算出する。なお、この閾値のばらつき量は、分散のような他の統計量であってもよいし、閾値のレンジのような値等のばらつきを表現する値であれば何でもよい。
【００４１】
そして、出力部３１Ｄは、ＮＷ７と比べて各キャラクタ毎の閾値の標準偏差が小さいために尤度が高いコード体系となるＣＯＤＥ１２８によるデコード結果を、記憶部３２に出力する。
【００４２】
なお、以上説明した実施形態では、各キャラクタごとに閾値を求めることとしているが、バーコード内の複数キャラクタをひとつの領域とした所定領域毎に閾値を求めることとしてもよい。また、上記では、ラインデータから求められるバー又スペースの幅に従って決定された閾値としているが、例えば少なくとも１種類の図形要素である各バーの幅の大きさ自体を、媒体に表示されたバーコードの表示態様に従って決定される値として、尤度算出部３１Ｃがその値のばらつき量から尤度を求めることとしてもよい。
【００４３】
なお、デコード部３１Ａのデコード処理において複数の読取線からバー及びスペースの配置を読み取る場合には、いずれかひとつの読取線において各キャラクタ毎に求めた閾値をデコード内容記憶処理部３１Ｂに記憶させることとしてもよいし、すべての読取線における閾値を記憶させてもよい。また、すべての読取線から求められる閾値の平均値を、閾値として記憶させることとしてもよい。
【００４４】
また図８は、本実施形態における制御部３１の処理のフローの一例を示す図である。まず、初期設定として記憶部３２に記憶されている複数のコード体系の中から、バーコード取得部３３に取得されたバーコードをデコードするコード体系を設定する（Ｓ８０１）。次に、デコード部３１ＡはＳ８０１で設定されたコード体系に従ってバーコードをデコードする（Ｓ８０２）。Ｓ８０３では、バーコードをデコードできたか否かを判断する。デコードできた場合（ＹＥＳ）には、バーコードの左右に所定幅のマージンが存在するか否かをさらに判断する（Ｓ８０４）。ここで、このようなバーコードの左右のマージンチェックを行うのは、バーコードの一部のみを誤ってデコードしている場合を、デコードができたものとして扱われるのを防ぐためである。左右のマージンが確認される場合（ＹＥＳ）には、制御部３１はデコード結果を一時的に記憶部３２に保存する（Ｓ８０５）。ここで、デコードに使用されたバーの種類を識別するためにキャラクタ毎に導出された閾値を、処理内容データとしてデコード内容記憶部３２Ａに保存する（Ｓ８０６）。さらに、デコード処理が終了するまでに設定した読取線の本数を、処理内容データとしてデコード内容記憶部３２Ａに保存する（Ｓ８０７）。
【００４５】
Ｓ８０３でデコードできなかった場合（ＮＯ）、Ｓ８０４のマージンチェックで所定幅のマージンが存在しなかった場合（ＮＯ）、そしてＳ８０５等のステップでデコード結果等が記憶された場合には、Ｓ８０８で、初期設定されている全てのコード体系によるデコード処理を終了しているか否かを判断する。デコード処理が終了していないコード体系が存在する場合（ＮＯ）には、再びＳ８０１に戻り、その他のコード体系によるデコード処理等を行う。
【００４６】
Ｓ８０８で全てのコード体系によるデコード処理が終了していると判断される場合（ＹＥＳ）には、まず、複数のコード体系によってデコードされているか否かを判断する（Ｓ８０９）。ひとつのコード体系のみでデコードされている場合（ＮＯ）には、出力部３１Ｄが、当該コード体系によるデコード結果を記憶部３２に出力する（Ｓ８１５）。しかし、複数のコード体系でデコードできた場合（ＹＥＳ）には、いずれのコード体系によるデコード結果を、バーコードが本来示している内容であるかを判断する必要がある。そこで、Ｓ８０６やＳ８０７で記憶されたデコード処理内容データから、デコード結果を得るべきコード体系を判断する（Ｓ８１０等）。
【００４７】
まずＳ８１０で、デコードされた複数のコード体系において、各キャラクタ毎に求められたバーの種類を識別するための閾値の分散を求める。そして、求められた分散値のうち最も小さい値が、他の分散値に対して一定以上の差がある場合（ＹＥＳ）に、分散の小さいコード体系に決定して（Ｓ８１１）、そのコード体系によるデコード結果を記憶部３２に出力する（Ｓ８１５）。
【００４８】
また、分散値の比較が困難である場合（ＮＯ）には、デコード完了までに要した読取線の本数を比較する（Ｓ８１２）。そして、求められた読取線の本数のうち最も少ない本数が、他に対して一定以上の差がある場合（ＹＥＳ）に、読取線の本数が最も少ないコード体系に決定して（Ｓ８１３）、そのコード体系によるデコード結果を記憶部３２に出力する（Ｓ８１５）。さらに、読取線の本数を比較したにも関わらずコード体系を決定できない場合（ＮＯ）には、デコードできた複数のコード体系のうち、コード体系の特性上、誤認識が最も発生しづらいものに決定することとして（Ｓ８１４）、デコード結果を記憶部３２に出力する（Ｓ８１５）。
【００４９】
なお、上記の実施例では、デコード部３１Ａがバーコード画像において読取線を設定し、ラインデータを取得して、デコード処理を行うこととしているが、バーコード画像を取得せずに、デコード部３１Ａが、媒体に表示されているバーコードに読取線を設定して直接ラインデータを取得してデコード処理を行うこととしてもよい。
【００５０】
なお、本発明における技術的思想は、バーコードのみに限定されることはなく、複数種類の図形要素の配列からなるコードであればよく、所謂ＱＲ（Quick Response）コードのような２次元コードであってもよいし、カラーコードであってもよい。
【図面の簡単な説明】
【００５１】
【図１】所定のバーコードの一部に他種類のバーコードが含まれる場合の一例を示す図である。
【図２】所定のバーコードが２種類のコード体系で認識できる場合の一例を示す図である。
【図３】本実施形態にかかる、バーコード認識装置が実現する機能を示す機能ブロックの一例を示す図である。
【図４】本実施形態にかかる、バーコード画像の一例を示す図である。
【図５】本実施形態にかかる、バーコード画像をデコード処理する過程と結果の例を示す図である。
【図６】本実施形態にかかる、デコード処理のフローの一例を示す図である。
【図７】本実施形態にかかる、デコード処理で発生する各キャラクタ毎に決定される閾値の様子を示す図である。
【図８】本実施形態にかかる、バーコード認識装置の処理のフローの一例を示す図である。
【符号の説明】
【００５２】
３  バーコード認識装置、３１  制御部、３１Ａ  デコード部、３１Ｂ  デコード内容記憶処理部、３１Ｃ  尤度算出部、３１Ｄ  出力部、３２  記憶部、３２Ａ  デコード内容記憶部、３３  バーコード取得部、３４  通信部。
【図１】
0005092732.tif 000002
【図２】
0005092732.tif 000003
【図３】
0005092732.tif 000004
【図４】
0005092732.tif 000005
【図５】
0005092732.tif 000006
【図６】
0005092732.tif 000007
【図７】
0005092732.tif 000008
【図８】
0005092732.tif 000009