説明

バーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラム

【課題】文字数があらかじめ決まっているバーコードの場合、傾きがあっても傾き補正を行うことなく読み取り可能な安価なバーコード読取装置を提供する。
【解決手段】規定文字数Nのバーコード40を対象ライン数M本だけカメラ23で撮像したバーコード画像をメモリ22に保存し、ラインごとのデコード処理の際に、開始文字Startが存在するラインにてデコードされたキャラクタ群Aの中に終了文字Stopがない場合、Stopが存在する他のラインを検索し、検索したStopが存在する他のラインにてデコードされたキャラクタ群Bの中にStartがなく、かつ、キャラクタ群Aとキャラクタ群Bとの文字数の合計が、規定文字数Nを上回る場合であって、キャラクタ群Aとキャラクタ群Bとの重複領域内にあるキャラクタが同じキャラクタの場合、該同じキャラクタを利用して、キャラクタ群Aとキャラクタ群Bとを連結して規定文字数Nのバーコードを得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムに関し、特に、傾きがあるバーコードを読み取ることが可能なバーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムに関する。
【背景技術】
【0002】
現在までのバーコード読取装置として、カメラにて取得されるバーコード画像の傾き補正を行わないバーコード読取装置においては、スキャン機構の搭載位置が読み取り対象のバーコードの想定の位置から外れると、バーコードの読み取りに失敗するため、バーコードを複数ラインスキャンすることにより撮像したバーコード画像を確実に取得することができるようにするのみならず、あらかじめ、組み込み時や機械設計時に、バーコード読取装置を高精度に傾かないように取り付けることが必要であった。
【0003】
現状のバーコード読取装置における課題を図2の模式図を参照して説明する。図2は、画像の傾き補正を行わない現状のバーコード読取装置の課題を説明するための模式図であり、バーコード読取装置が、画像読み取り対象の一次元バーコードに対して傾斜角度αの傾きを持って配置されている場合を示している。
【0004】
図2の模式図に示すように、スキャンライン1,2,3,…,Nのいずれについても、水平方向のスキャン画像に、画像読み取り対象のバーコード全体が掛かっていないような場合、例えば、特許文献1の特開2000−259759号公報「バーコード読取装置、方法およびプログラムを記憶した記憶媒体」や特許文献2の特開平9−16708号公報「シンボル情報読取り装置」のように、読み取り対象の画像全体を取得して、傾き補正をしなければ、バーコードのデコードを行うことができなかった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−259759号公報(第7−8頁)
【特許文献2】特開平9−16708号公報(第4−7頁)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、現状のバーコード読取装置において、傾きがあるバーコードをデコードする際には、次のような課題がある。
【0007】
第1の課題は、実装スペースの問題やコストの関係から、バーコード読取装置のメモリ容量が少ない場合、画像の傾き補正を行うために必要十分なメモリ領域を確保することができない。
【0008】
第2の課題は、画像の傾き補正を行う場合には、高速のデコード処理能力が必要であり、バーコード読取装置のコストやデコード処理時間において不利である。
【0009】
(本発明の目的)
本発明は、かかる事情に鑑みてなされたものであり、組み込み時に機械的に或る程度の範囲内の傾斜角度で読み取り対象のバーコードに対して傾いた状態で取り付けられた場合であっても、文字数があらかじめ決まっているバーコードについては、傾き補正を行うことなく読み取ることが可能な仕組みを、安価な構成で実装スペースとして小さく実現することができるバーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムを提供することを、その目的としている。
【課題を解決するための手段】
【0010】
前述の課題を解決するため、本発明によるバーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムは、次のような特徴的な構成を採用している。
【0011】
(1)本発明によるバーコード読取装置は、あらかじめ決められた規定バーコード文字数からなっている読み取り対象のバーコードに対してあらかじめ定めた傾斜角度内の傾きを有して取り付けられたバーコード読取装置であって、あらかじめ定めた読み取り対象ライン数分だけ同一方向のラインを移動させつつ前記バーコードを撮像したバーコード画像を、あらかじめ定めた順番に前記ラインごとにデコード処理を行った際に、前記バーコードの開始文字パターンである'Start'キャラクタが存在する前記ラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタAの中に、前記バーコードの終了文字パターンである'Stop'キャラクタが存在していない場合、前記'Stop'キャラクタが存在する他のラインを検索し、検索した前記'Stop'キャラクタが存在する該他のラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタBの中に前記'Start'キャラクタが検出されなかった場合であって、かつ、前記バーコードキャラクタAの文字数と前記バーコードキャラクタBの文字数との合計が、前記規定バーコード文字数を上回り、前記バーコードキャラクタAと前記バーコードキャラクタBとの間で重複する文字領域が存在することが判明した場合には、前記バーコードキャラクタAと前記バーコードキャラクタBとの前記重複する文字領域内にあるキャラクタが同じキャラクタであるか否かを確認し、同じキャラクタであった場合は、前記重複する文字領域内にある該キャラクタを利用して、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して、前記規定バーコード文字数の文字数からなるバーコードを取得することを特徴とする。
【0012】
(2)本発明によるバーコード読み取り方法は、あらかじめ決められた規定バーコード文字数からなっている読み取り対象のバーコードに対してあらかじめ定めた傾斜角度内の傾きを有して取り付けられたバーコード読取装置におけるバーコード読み取り方法であって、あらかじめ定めた読み取り対象ライン数分だけ同一方向のラインを移動させつつ前記バーコードを撮像したバーコード画像を、あらかじめ定めた順番に前記ラインごとにデコード処理を行った際に、前記バーコードの開始文字パターンである'Start'キャラクタが存在する前記ラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタAの中に、前記バーコードの終了文字パターンである'Stop'キャラクタが存在していない場合、前記'Stop'キャラクタが存在する他のラインを検索し、検索した前記'Stop'キャラクタが存在する該他のラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタBの中に前記'Start'キャラクタが検出されなかった場合であって、かつ、前記バーコードキャラクタAの文字数と前記バーコードキャラクタBの文字数との合計が、前記規定バーコード文字数を上回り、前記バーコードキャラクタAと前記バーコードキャラクタBとの間で重複する文字領域が存在することが判明した場合には、前記バーコードキャラクタAと前記バーコードキャラクタBとの前記重複する文字領域内にあるキャラクタが同じキャラクタであるか否かを確認し、同じキャラクタであった場合は、前記重複する文字領域内にある該キャラクタを利用して、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して、前記規定バーコード文字数の文字数からなるバーコードを取得することを特徴とする。
【0013】
(3)本発明によるバーコード読み取りプログラムは、上記(2)に記載のバーコード読み取り方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とする。
【発明の効果】
【0014】
本発明のバーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムによれば、以下のような効果を奏することができる。
【0015】
第1の効果は、組み込み時に、読み取り対象のバーコードに対して或る程度の範囲内の傾斜角度で傾いて取り付けられたバーコード読取装置であっても、つまり、傾いた状態で取り付けられたバーコード読取装置にて該バーコードを撮像してメモリ内に保存したバーコード画像が傾いていたとしても、読み取り対象のバーコードの文字数があらかじめ決められた規定バーコード文字数であれば、メモリ内のバーコード画像の傾き補正をすることなしに、正しいバーコードをデコードすることができるため、メモリとして十分なメモリ領域を確保しなくても良くなり、実装スペースとして小型化が可能であり、かつ、コストの低減を図ることができるという効果が得られることである。
【0016】
第2の効果は、バーコードを撮像してメモリ内に保存したバーコード画像の傾き補正を行わないバーコード読取装置として、従来技術とは異なり、組み込み時や機械設計時にバーコード読取装置を高精度に取り付けることが不要になり、バーコード読取装置の構成を安価な構成とすることができるという効果が得られることである。
【図面の簡単な説明】
【0017】
【図1】本発明に係るバーコード読取装置のブロック構成の一例を示すブロック構成図である。
【図2】画像の傾き補正を行わない現状のバーコード読取装置の課題を説明するための模式図である。
【図3】図1に示した媒体上のバーコードを読み取ってメモリ内に保存したバーコード画像の輝度を黒白に2値化した輝度分布状態を模式的に示すグラフである。
【図4】図1のバーコード読取装置がメモリに保存したバーコード画像のデコード処理を行う動作の一例を説明するフローチャートである。
【図5】図1のバーコード読取装置がメモリに保存したバーコード画像のデコード処理を行う動作の他の例を説明するフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明によるバーコード読取装置、バーコード読み取り方法およびバーコード読み取りプログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるバーコード読取装置およびバーコード読み取り方法について説明するが、かかるバーコード読み取り方法をコンピュータにより実行可能なバーコード読み取りプログラムとして実施するようにしても良いし、あるいは、バーコード読み取りプログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。
【0019】
(本発明の特徴)
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、或る程度の範囲内で傾いた状態で取り付けられたバーコード読取装置にて、あらかじめ定めた限られた複数本だけ同一方向(例えば水平方向)のラインスキャンを行うことによって、文字数があらかじめ決まっているバーコードを読み取った場合に、撮影されたバーコード画像が、従来技術では、傾き補正を行わないと、バーコードのデコードを行うことができない場合であっても、傾き補正を行うことなく、かつ、再び、バーコードをスキャンすることもなく、スキャン済みのデータを用いて、バーコードのデコード処理を行うことを可能とする仕組みを実現することを特徴としている。
【0020】
より具体的には、本発明は、次のような仕組みを実現している。すなわち、スキャン機構にて、複数本の位置が異なる同一方向(例えば水平方向)にラインスキャンすることによってバーコード画像を取得してメモリ等に保存した後に、該複数本のラインからなるバーコード画像を用いて、あらかじめ決めた順番に、傾きがあるバーコード画像のデコードを開始し、開始文字パターン'Start'キャラクタが検出されたライン上に終了文字パターン'Stop'キャラクタが存在していない場合、当該ラインにてデコードすることができたキャラクタ群であるバーコードキャラクタAとデコードすることができた文字数A(num)とを記憶しておく。
【0021】
しかる後、開始文字パターン'Start'キャラクタが検出されたラインとは位置の異なる他のラインにて終了文字パターン'Stop'キャラクタを検出した際に、今度は、該終了文字パターン'Stop'キャラクタが検出された他のライン上に開始文字パターン'Start'キャラクタが存在していなかった場合、当該他のラインにてデコードすることができたキャラクタ群であるバーコードキャラクタBとデコードすることができた文字数B(num)とを記憶する。
【0022】
ここで、読み取り対象のバーコードについて、あらかじめ決まっている規定バーコード文字数をNとした場合、まず、バーコードキャラクタAの文字数A(num)とバーコードキャラクタBの文字数B(num)との合計文字数が、規定バーコード文字数よりも大きいか否かを確認する。大きくなかった場合は、さらに異なるラインのバーコード画像を用いて、前述のようなバーコードキャラクタAまたはバーコードキャラクタBに関するデコード処理を繰り返す。
【0023】
バーコードキャラクタAの文字数A(num)とバーコードキャラクタBの文字数B(num)との合計文字数が、規定バーコード文字数よりも大きかった場合は、バーコードキャラクタAとバーコードキャラクタBとには重複する文字領域が存在している場合であり、バーコードキャラクタAとバーコードキャラクタBとのそれぞれの重複する文字領域に存在するキャラクタ同士を比較する。両者が一致していた場合、一致していた当該重複する文字領域のキャラクタを利用して、バーコードキャラクタAとバーコードキャラクタBとから正常なバーコードを生成することができるものと判断する。すなわち、重複する文字領域に存在するそれぞれの同一のキャラクタを重ね合わせるようにして、バーコードキャラクタAとバーコードキャラクタBとを連結することによって、規定バーコード文字数Nの文字数からなるバーコードを一意に生成することができる。
【0024】
なお、既に、メモリ上に複数のバーコード画像が存在する場合は、前述のようなバーコードキャラクタAおよびバーコードキャラクタBに関するデコード処理を、複数のバーコード画像について実施して、同一のバーコードが得られるか否かを照合することにより、デコード処理の正常性をさらに確認するようにしても良い。
【0025】
(本発明の実施形態の構成例)
次に、本発明に係るバーコード読取装置の構成について、その一例を、図1のブロック構成図を用いて説明する。図1は、本発明に係るバーコード読取装置のブロック構成の一例を示すブロック構成図であり、当該バーコード読取装置が、磁気テープライブラリ装置のハンド機構(磁気テープ媒体の出し入れを操作する機構)に搭載されていて、磁気テープ媒体に貼付された一次元バーコードをバーコード画像として撮像してデコードする場合を例にとって示している。なお、磁気テープライブラリ装置そのものは、当業者に良く知られた通常の磁気テープライブラリ装置で構わなく、本発明に係るバーコード読取装置の使用形態の一例を示しているだけであって、本発明に係るバーコード読取装置とは直接関係しないので、磁気テープライブラリ装置の詳細な構成の説明は、ここでは省略する。
【0026】
図1において、図1(A)は、媒体30上に読み取り対象のバーコード40が貼付されている様子を示し、図1(B)は、磁気テープライブラリ装置のハンド機構10のブロック構成を示している。図1(A)のバーコード40は、図1(B)のハンド機構10に搭載されているバーコード読取装置20のカメラ23により撮像され、演算装置21によりデコードされる。図1(B)に示すように、ハンド機構10に搭載されたバーコード読取装置20は、演算装置21、メモリ22、カメラ23を少なくとも備えている他、媒体30上に貼付されたバーコード40を照射するための光源24も備えている。
【0027】
ここで、媒体30上に貼付されたバーコード40の文字数は、バーコードとしてあらかじめ決められた規定バーコード文字数Nであり、バーコード読取装置20は、該規定バーコード文字数Nの一次元バーコードを認識してデコードする機構を備えている。なお、媒体30上のバーコード40は、バーコード読取装置20のカメラ23によってバーコード画像として撮像されて、メモリ22に保存される。したがって、バーコード読取装置20の演算装置21は、メモリ22に保存されているバーコード画像を読み出して、一次元バーコードの認識処理を実施して、規定バーコード文字数N分のキャラクタを識別するデコード処理を行う。
【0028】
また、ハンド機構10に搭載されるバーコード読取装置20は、取り付け時に、磁気テープライブラリ装置の保管棚に載置されている媒体30に対して、正対している状態にはなく、あらかじめ定めた範囲内の傾斜角度αだけいずれかの方向に傾斜した状態で、機械的に固定されており、媒体30上に貼付されたバーコード40を或る同一方向(例えば水平方向)にスキャンして撮像されたバーコード画像は、傾斜角度αだけ傾いた状態で、メモリ22に保存される。
【0029】
つまり、画像の傾き補正を行わない現状のバーコード読取装置の課題を説明するための模式図として図2にて説明したように、バーコード読取装置20のスキャンラインが、画像読み取り対象のバーコード40に対して傾斜角度αだけ傾きを持って配置されることになる。
【0030】
なお、図2には、バーコード読取装置20に取り付けられたカメラ23によって撮像されたバーコード40の全画像領域のバーコード画像を示しているが、実際には、メモリ22に保存することが可能な画像データ量の限界から、バーコード40の全画像領域から適宜間引いた状態で保存されることになり、図2の横方向の破線にて示しているライン1、ライン2、ライン3、…、ラインMのM本分に相当する複数本の限られたライン数(読み取り対象ライン数M)に対応するバーコード画像のみが、メモリ22に保存される。なお、ライン1、ライン2、ライン3、…、ラインMは、バーコード読取装置20の演算装置21にてバーコード40のデコード処理を行う際のバーコードラインの位置を示している。
【0031】
図3は、図1に示した媒体30上のバーコード40を読み取ってメモリ22内に保存したバーコード画像の輝度を黒白に2値化した輝度分布状態を模式的に示すグラフである。図3(A)は、バーコードライン位置が図2に示したライン1におけるバーコード画像の2値化分布を示し、右から左方向に向かって、'Start'、'a'、'b'の3つの文字パターンが、バーコードキャラクタA(chara)としてデコードされる場合を示している。また、図3(B)は、バーコードライン位置が図2に示したライン4におけるバーコード画像の2値化分布を示し、右から左方向に向かって、'b'、'c'、'd'、'e'、'Stop'の5つの文字パターンが、バーコードキャラクタB(chara)としてデコードされる場合を示している。
【0032】
なお、図2に示したように、本実施形態においては、ライン1、ライン2、ライン3、…、ラインMの読み取り対象ライン数M本分のバーコード画像がメモリ22に保存されているが、演算装置21がデコード処理を行う際に、バーコードライン位置のあらかじめ決められた順番に(例えば若番側から)順次バーコード画像を取り出して、一次元バーコードの'Start'または'Stop'を示す開始文字パターンまたは終了文字パターンが存在するラインを検出し、かつ、検出された該ライン上をスキャンしてデコードすることができたキャラクタ群の中に、検出された'Start'または'Stop'を示す開始文字パターンまたは終了文字パターンとは反対側に位置する、一次元バーコードの'Stop'または'Start'を示す終了文字パターンまたは開始文字パターンが存在していなかった場合、該ライン上をスキャンしてデコードすることができたキャラクタ群を、バーコードキャラクタA(chara)として記憶する。
【0033】
一方、複数本のラインからなるバーコード画像において、検出された'Start'または'Stop'を示す開始文字パターンまたは終了文字パターンとは反対側に位置する、一次元バーコードの'Stop'または'Start'を示す終了文字パターンまたは開始文字パターンが存在するラインを検出した場合において、検出された該ライン上をスキャンしてデコードすることができたキャラクタ群の中に、検出された'Stop'または'Start'を示す終了文字パターンまたは開始文字パターンとは反対側に位置する、一次元バーコードの'Start'または'Stop'を示す開始文字パターンまたは終了文字パターンが存在していなかった場合、該ライン上をスキャンしてデコードすることができたキャラクタ群を、バーコードキャラクタB(chara)として記憶する。
【0034】
つまり、図3においては、図3(A)が、一次元バーコードの'Start'を示す開始文字パターンが最初に検出されたラインが、ライン1であり、バーコードキャラクタA(chara)として、'Start'、'a'、'b'をデコードした場合を示し、図3(B)が、一次元バーコードの'Stop'を示す終了文字パターンが最初に検出されたラインが、ライン4であり、バーコードキャラクタB(chara)として、'b'、'c'、'd'、'e''Stop'をデコードした場合を示している。
【0035】
(実施形態の動作の説明)
次に、図1ないし図3において説明したバーコード読取装置の動作について、その一例を、図4、図5のフローチャートを用いてさらに詳細に説明する。図4は、図1のバーコード読取装置20がメモリ22に保存したバーコード画像のデコード処理を行う動作の一例を説明するフローチャートであり、図3(A)に示したバーコードキャラクタAをデコードする場合を示している。また、図5は、図1のバーコード読取装置20がメモリ22に保存したバーコード画像のデコード処理を行う動作の他の例を説明するフローチャートであり、図4に示すフローチャートに引き続いて動作するものであり、図3(B)に示したバーコードキャラクタBをデコードする場合を示している。
【0036】
なお、図4、図5のフローチャートにおいては、図2に示すように、バーコード読取装置20が取り付けられた傾斜角度αが、反時計方向であり、カメラ23によって撮像される媒体30のバーコード40が、右肩上がりの傾いた状態で撮像されて、傾きがあるバーコード画像としてメモリ22に保存されている場合を示している。つまり、例えばバーコードライン位置の若番側から順次バーコード画像を取り出して、デコードを行う際に、最初に、'Start'を示す開始文字パターンが検出され、しかる後に、'Stop'を示す終了文字パターンが検出される場合を示している。
【0037】
ここで、前述したように、図1のバーコード読取装置20は、カメラ23にて、図2のように、複数(1〜M)個の異なるバーコードライン位置で、同一方向(例えば水平方向)にラインスキャンすることによって、媒体30上のバーコード40を、複数本(M本)のラインからなるバーコード画像として取得して、メモリ22に保存している。また、メモリ22に保存されるバーコード画像は、図2に示したように、それぞれのライン1〜Mのバーコード画像の輝度について、演算装置21にて黒白の2値化判定処理を行うことにより、黒白2値化情報として保存されている。
【0038】
まず、図4のフローチャートを用いて、バーコード読取装置20の演算装置21が行うバーコード画像のデコード処理について説明する。まず、メモリ22に保存されているバーコード画像をあらかじめ定めた順番として例えばバーコードライン位置の若番側から順次取り出すために、ライン番号を示すラインL(変数)に'1'を初期設定する(ステップS1)。次に、ラインLが示すバーコードライン位置のバーコード画像をメモリ22から取り出して、該バーコード画像に開始文字パターンである'Start'が存在しているか否かを確認するために、該バーコード画像のあらかじめ決めた一定方向例えば右端から左方向に向かってバーコードのデコード処理を行う(ステップS2)。
【0039】
次いで、デコード処理結果、'Start'のキャラクタが検出されたか否かを確認する(ステップS3)。'Start'キャラクタが検出されなかった場合は(ステップS3のNo)、バーコード画像の次のラインのキャラクタをデコードするために、まず、ラインL(変数)が読み取り対象ライン数Mよりも小さい値か否かを確認し(ステップS4)、小さい値であった場合は(ステップS4のYes)、まだ、デコードすべき次のラインが残っているので、ラインL(変数)に'1'を加えて、バーコード画像の次のバーコードライン位置に移行した後(ステップS5)、ステップS2に戻って、同様の'Start'キャラクタ検出処理を繰り返す。
【0040】
また、ラインL(変数)が読み取り対象ライン数M以上の値であった場合は(ステップS4のNo)、デコードすべき次のラインが残っていないので、メモリ22に保存されているバーコード画像からは'Start'キャラクタを検出することができなく、バーコードが存在していないものと看做して、デコードしたバーコードキャラクタAの文字数を示す変数A(num)を'0'に設定し、デコードしたバーコードキャラクタAを格納する変数A(chara)を"Null"に設定して(ステップS12)、ステップS14に移行する。
【0041】
また、ステップS3において、'Start'キャラクタが検出された場合は(ステップS3のYes)、'Start'キャラクタ以降に引き続くバーコードのキャラクタを読み取るために、当該ラインLが示すバーコード画像のバーコードライン位置において、左側方向に次のキャラクタのデコードを試みて(ステップS6)、デコード結果として有意な次のキャラクタが得られたか否かを確認する(ステップS7)。
【0042】
デコード結果として有意な次のキャラクタが得られた場合は(ステップS7のYes)、当該キャラクタを、バーコード画像の'Start'キャラクタが検出されたバーコードライン位置に存在している次の文字パターンとして確定して、デコードしたバーコードキャラクタAの文字数を示す変数A(num)をカウントアップするとともに、デコードしたバーコードキャラクタAを格納する変数A(chara)に確定した当該キャラクタを格納する(ステップS8)。
【0043】
しかる後、確定したキャラクタが、バーコードの終了文字パターンである'Stop'キャラクタであったか否かを確認して(ステップS9)、'Stop'キャラクタであった場合には(ステップS9のYes)、当該ラインLが示すバーコード画像において、バーコードの開始文字パターンである'Start'キャラクタから終了文字パターンである'Stop'キャラクタまでの一連のバーコードのデコードが完了した場合である。
【0044】
したがって、バーコードキャラクタAとして格納された変数A(chara)を、正常なバーコードデータとして確定して(ステップS10)、バーコードデコード処理が成功した旨を示す'OK'表示を付して、デコード処理を終了する(ステップS11)。
【0045】
また、ステップS9において、確定したキャラクタが、'Stop'キャラクタではなかった場合は(ステップS9のNo)、ステップS6に戻って、当該ラインLが示すバーコード画像のバーコードライン位置において、さらに以降に続くバーコードのキャラクタを読み取る動作を繰り返す。
【0046】
一方、ステップS7において、以降に続くバーコードのキャラクタを読み取る動作を行っても、デコード結果として有意な次のキャラクタが得られなかった場合は(ステップS7のNo)、メモリ22に保存されているバーコード画像には傾きがあるために、開始文字パターンである'Start'キャラクタが存在していた当該ラインLが示すバーコード画像のバーコードライン位置には、バーコードの開始文字パターンである'Start'キャラクタは存在しているものの、バーコードの終了文字パターンである'Stop'キャラクタが存在していなかったものと看做す。
【0047】
而して、開始文字パターンである'Start'キャラクタを検出した当該ラインLが示すバーコード画像のバーコードライン位置にて、正常にデコードされたキャラクタをバーコードキャラクタAとして確定するために、それまでに正常にデコードしたキャラクタが格納されている変数A(chara)の内容とデコードしたキャラクタの文字数が格納されている変数A(num)とをバーコードキャラクタAとして確定する(ステップS13)。
【0048】
しかる後、当該ラインL(変数)を、図4のデコード処理における最終ラインを示す情報として、次の処理に引き継ぐための引継ぎ変数βに設定した後(ステップS14)、図5に示すフローチャートへ移行する(ステップS15)。
【0049】
次に、図5のフローチャートを用いて、バーコード読取装置20の演算装置21が行うバーコード画像のデコード処理として図4に引き継ぐ処理について説明する。まず、図4のデコード処理で対象とした最終ラインの次のラインから、'Stop'キャラクタの検出処理を開始するために、図4のデコード処理における最終ラインを示す情報を引き継ぎ変数βから取り出して、該最終ラインに'1'を加えた結果を、ライン番号を示すラインL(変数)に設定する(ステップS21)。次に、ラインLが示すバーコードライン位置のバーコード画像をメモリ22から取り出して、該バーコード画像に終了文字パターンである'Stop'が存在しているか否かを確認するために、図4におけるデコード方向(あらかじめ決めた一定方向)とは逆向きに、該バーコード画像の左端から右方向に向かってバーコードのデコード処理を行う(ステップS22)。
【0050】
次いで、デコード処理結果、'Stop'のキャラクタが検出されたか否かを確認する(ステップS23)。'Stop'キャラクタが検出されなかった場合は(ステップS23のNo)、バーコード画像の次のラインのキャラクタをデコードするために、まず、ラインL(変数)が読み取り対象ライン数Mよりも小さい値か否かを確認し(ステップS24)、小さい値であった場合は(ステップS24のYes)、まだ、デコードすべき次のラインが残っているので、ラインL(変数)に'1'を加えて、バーコード画像の次のバーコードライン位置に移行した後(ステップS25)、ステップS22に戻って、同様の'Stop'キャラクタ検出処理を繰り返す。
【0051】
また、ラインL(変数)が読み取り対象ライン数M以上の値であった場合は(ステップS24のNo)、デコードすべき次のラインが残っていないので、メモリ22に保存されているバーコード画像からは終了文字パターンの'Stop'キャラクタを検出することができなく、開始文字パターンの'Start'キャラクタのみが検出された異常なバーコードが存在していたものと看做して、デコード処理が失敗した旨の表示を設定して、デコード処理を終了する(ステップS32)。
【0052】
また、ステップS23において、'Stop'キャラクタが検出された場合は(ステップS23のYes)、'Stop'キャラクタ以前に遡って続いているバーコードのキャラクタを読み取るために、当該ラインLが示すバーコード画像のバーコードライン位置において、引き続いて右側方向に次のキャラクタのデコードを試みて(ステップS26)、デコード結果として有意な次のキャラクタが得られたか否かを確認する(ステップS27)。
【0053】
デコード結果として有意な次のキャラクタが得られた場合は(ステップS27のYes)、当該キャラクタを、バーコード画像の'Stop'キャラクタが検出されたバーコードライン位置に存在している次の文字パターンとして確定して、デコードしたバーコードキャラクタBの文字数を示す変数B(num)をカウントアップするとともに、デコードしたバーコードキャラクタBを格納する変数B(chara)に確定した当該キャラクタを格納する(ステップS28)。
【0054】
しかる後、確定したキャラクタが、バーコードの開始文字パターンである'Start'キャラクタであったか否かを確認して(ステップS29)、'Start'キャラクタであった場合には(ステップS29のYes)、当該ラインLが示すバーコード画像において、バーコードの終了文字パターンである'Stop'から逆に遡ってキャラクタ開始文字パターンである'Start'キャラクタまでの一連のバーコードのデコードが完了した場合である。
【0055】
したがって、バーコードキャラクタBとして格納された変数B(chara)を、正常なバーコードデータとして確定して(ステップS30)、バーコードデコード処理が成功した旨を示す'OK'表示を付して、デコード処理を終了する(ステップS31)。
【0056】
また、ステップS29において、確定したキャラクタが、'Start'キャラクタではなかった場合は(ステップS29のNo)、ステップS26に戻って、当該ラインLが示すバーコード画像のバーコードライン位置において、さらに以降に続くバーコードのキャラクタを読み取る動作を繰り返す。
【0057】
一方、ステップS27において、以降に続くバーコードのキャラクタを読み取る動作を行っても、デコード結果として有意な次のキャラクタが得られなかった場合は(ステップS27のNo)、メモリ22に保存されているバーコード画像には傾きがあるために、終了文字パターンである'Stop'キャラクタが存在していた当該ラインLが示すバーコード画像のバーコードライン位置には、バーコードの終了文字パターンである'Stop'キャラクタは存在しているものの、バーコードの開始文字パターンである'Start'キャラクタが存在していなかったものと看做す。
【0058】
而して、終了文字パターンである'Stop'キャラクタを検出した当該ラインLが示すバーコード画像のバーコードライン位置にて、正常にデコードされたキャラクタをバーコードキャラクタBとして確定するために、それまでに正常にデコードしたキャラクタが格納されている変数B(chara)の内容とデコードしたキャラクタの文字数が格納されている変数B(num)とをバーコードキャラクタBとして確定する(ステップS33)。
【0059】
しかる後、ステップS33において確定したバーコードキャラクタBの文字数を示す変数B(num)と図4のステップS13において確定していたバーコードキャラクタAの文字数を示す変数A(num)との合計文字数が、バーコードとしてあらかじめ決められた規定バーコード文字数Nよりも大きいか否かを判定する(ステップS34)。
【0060】
変数B(num)と変数A(num)との合計文字数が規定バーコード文字数N以下であった場合(ステップS34のNo)、ステップS33においてバーコードキャラクタBとして確定した変数B(chara)の内容と図4のステップS13においてバーコードキャラクタAとして確定していた変数A(chara)の内容とには重複する文字領域(重複領域)が存在していない場合である。かかる場合には、バーコードキャラクタBとバーコードキャラクタAとの連結処理を行うことができなく、'Stop'キャラクタを最初に検出した当該ラインLが示すバーコードライン位置のバーコード画像からは、正しい一連のバーコードにデコードすることができないものと判定する。そのため、バーコード画像の次のラインのキャラクタをデコードするために、ステップS24に戻って、'Stop'キャラクタの検出動作を繰り返す。
【0061】
一方、変数B(num)と変数A(num)との合計文字数が規定バーコード文字数Nよりも大きい場合には(ステップS34のYes)、バーコードキャラクタBとして確定した変数B(chara)の内容とバーコードキャラクタAとして確定していた変数A(chara)の内容とに重複する文字領域(重複領域)が存在している場合であり、該重複領域を利用して、バーコードキャラクタBとバーコードキャラクタAとの連結処理を行うことによって、メモリ22に傾きがある状態で保存されているバーコード画像を、正しい一連のバーコードにデコードすることができるものと判断して、次の連結処理へ移行する(ステップS35)。
【0062】
次の連結処理においては、まず、バーコードキャラクタAとバーコードキャラクタBとの重複文字数γを次の式(1)により算出して、該重複文字数γが示す文字数だけ、バーコードキャラクタAを格納した変数A(chara)の最終キャラクタと、バーコードキャラクタBを格納した変数B(chara)の最終キャラクタとからそれぞれ遡って、両者の重複領域内のキャラクタとして抽出する。
γ={変数B(num)+変数A(num)−N} …(1)
【0063】
しかる後、バーコードキャラクタBから抽出した重複文字数γの重複領域内のキャラクタの並びが、バーコードキャラクタAから抽出した重複文字数γの重複領域内のキャラクタの並びとは逆順になっているため、バーコードキャラクタBから抽出した重複領域内のキャラクタの並びを逆順に並び替えた後、バーコードキャラクタAから抽出した重複領域内のキャラクタと一致しているか否かを照合する。
【0064】
両者が一致していなかった場合は、正しい一連のバーコードにデコードすることができない異常なバーコードが存在していたものと看做して、デコード処理が失敗した旨の表示を設定して、デコード処理を終了する。
【0065】
一方、バーコードキャラクタAから抽出した重複文字数γの重複領域内のキャラクタとバーコードキャラクタBから抽出した重複文字数γの重複領域内のキャラクタを逆順に並び替えたキャラクタとの両者が一致していた場合は、該重複領域に存在するキャラクタを利用して、正しい一連のバーコードにデコードすることができるものと判定する。
【0066】
すなわち、変数B(chara)に格納したバーコードキャラクタBの最終キャラクタから重複文字数γ分だけ遡るまでのキャラクタをバーコードキャラクタAと重複している(重複領域内の)キャラクタとして削除する。しかる後、バーコードキャラクタAの並びに揃えるために、重複領域内のキャラクタを削除したバーコードキャラクタBを逆順に並び替えてバーコードキャラクタCを生成した後、変数A(chara)に格納したバーコードキャラクタAの最終キャラクタと連結することによって、(バーコードキャラクタA+バーコードキャラクタC)からなる合計文字数が規定バーコード文字数Nと等しい正しいバーコードとして合成する。この結果、メモリ22内に傾きがあるバーコード画像として保存されている場合であっても、該バーコード画像のデコード結果として、正しい一連のバーコードを取得することができる。
【0067】
なお、前述の図5のフローチャートにおいては、ステップS27において、デコード結果として有意な次のキャラクタが得られなかった場合に、初めて、ステップS33において、バーコードキャラクタBとして、そのキャラクタを示す変数B(chara)の内容とその文字数を示す変数B(num)とを確定する動作を行う場合について説明したが、本発明は、かかる場合に限るものではない。
【0068】
例えば、バーコードキャラクタBとバーコードキャラクタAとの重複領域の重複文字数γを最小の1個のみとするように動作させても良い。つまり、あらかじめ決められた規定バーコード文字数Nのバーコードに関するデコード処理としては、図5の動作に先行する図4のフローチャートにおいて、既に、バーコードキャラクタAとして、そのキャラクタを示す変数A(chara)の内容とその文字数を示す変数A(num)とが確定しているので、図5のフローチャートにおいては、規定バーコード文字数Nに対する残りの文字数{N−A(num)}に最低限の重複領域を与えるための1個の文字数を加えた文字数{N−A(num)+1}だけの有意なキャラクタを取得すれば良い。
【0069】
したがって、ステップS27の判定に先立って、または、ステップS27の判定が'Yes'であった場合に、デコードに成功した文字数が{N−A(num)+1}に達したか否かを確認し、達していた場合には、ステップS33に移行して、バーコードキャラクタBとして、そのキャラクタを示す変数B(chara)の内容とその文字数を示す変数B(num)とを確定する動作を行うようにしても良い。
【0070】
かくのごとく、重複領域の重複文字数γ=1の場合においては、バーコードキャラクタAを格納した変数A(chara)の第A(num)番目に相当する最終キャラクタと、バーコードキャラクタBを格納した変数B(chara)の第{N−A(num)+1}番目に相当する最終キャラクタとの1文字だけの照合動作を行うことにすれば良い。
【0071】
また、先行する図4においては、バーコード画像に開始文字パターンである'Start'が存在しているか否かを確認するために、該バーコード画像の右端から左方向に向かってバーコードのデコード処理を行い、後続する図5においては、バーコード画像に終了文字パターンである'Stop'が存在しているか否かを確認するために、該バーコード画像の左端から右方向に向かってバーコードのデコード処理を行う場合を示したが、本発明は、かかる順番に限るものではなく、終了文字パターンである'Stop'を検出する動作を先行させ、開始文字パターンである'Start'を検出する動作を後続させるようにしても良い。
【0072】
また、前述した図4、図5において、開始文字パターンである'Start'、終了文字パターンである'Stop'が、互いに同一の文字パターンであっても良いし、互いに異なる文字パターンであっても良い。
【0073】
また、図1の媒体30上の同一のバーコード40として、メモリ22に複数のバーコード画像が保存されている場合には、デコード処理の正常性を向上させるために、メモリ22内に保存されている複数のバーコード画像について、前述したようなバーコードデコード処理を行って、それぞれから得られたバーコードの一致判定処理を行うようにしても良い。
【0074】
さらには、メモリ22に保存されている複数のバーコード画像それぞれについて、バーコードキャラクタA、バーコードキャラクタBを検出するためのバーコード画像のバーコードライン位置の検索順序を変更しても良いし、バーコードのデコード処理を行う方向を変更するようにしても良い。
【0075】
(実施形態の効果の説明)
以上に詳細に説明したように、本実施形態においては、以下に記載するような効果が得られる。
【0076】
第1の効果は、組み込み時に、読み取り対象のバーコード40に対して或る程度の範囲内の傾斜角度αで傾いて取り付けられたバーコード読取装置であっても、つまり、傾いた状態で取り付けられたバーコード読取装置20にて該バーコード40を撮像してメモリ22内に保存したバーコード画像が傾いていたとしても、読み取り対象のバーコード40の文字数があらかじめ決められた規定バーコード文字数Nであれば、演算装置21にて、メモリ22内のバーコード画像の傾き補正をすることなしに、正しいバーコードをデコードすることができるため、メモリ22として十分なメモリ領域を確保しなくても良くなり、実装スペースとして小型化が可能であり、かつ、コストの低減を図ることができるという効果が得られることである。
【0077】
第2の効果は、バーコード40を撮像することによりメモリ22内に保存したバーコード画像の傾き補正を行わないバーコード読取装置20として、従来技術とは異なり、組み込み時や機械設計時にバーコード読取装置20を高精度に取り付けることが不要になり、バーコード読取装置20の構成を安価な構成とすることができるという効果が得られることである。
【0078】
以上、本発明の好適実施例の構成を説明した。しかし、斯かる実施例は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【0079】
10 ハンド機構
20 バーコード読取装置
21 演算装置
22 メモリ
23 カメラ
24 光源
30 媒体
40 バーコード

【特許請求の範囲】
【請求項1】
あらかじめ決められた規定バーコード文字数からなっている読み取り対象のバーコードに対してあらかじめ定めた傾斜角度内の傾きを有して取り付けられたバーコード読取装置において、あらかじめ定めた読み取り対象ライン数分だけ同一方向のラインを移動させつつ前記バーコードを撮像したバーコード画像を、あらかじめ定めた順番に前記ラインごとにデコード処理を行った際に、前記バーコードの開始文字パターンである'Start'キャラクタが存在する前記ラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタAの中に、前記バーコードの終了文字パターンである'Stop'キャラクタが存在していない場合、前記'Stop'キャラクタが存在する他のラインを検索し、検索した前記'Stop'キャラクタが存在する該他のラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタBの中に前記'Start'キャラクタが検出されなかった場合であって、かつ、前記バーコードキャラクタAの文字数と前記バーコードキャラクタBの文字数との合計が、前記規定バーコード文字数を上回り、前記バーコードキャラクタAと前記バーコードキャラクタBとの間で重複する文字領域が存在することが判明した場合には、前記バーコードキャラクタAと前記バーコードキャラクタBとの前記重複する文字領域内にあるキャラクタが同じキャラクタであるか否かを確認し、同じキャラクタであった場合は、前記重複する文字領域内にある該キャラクタを利用して、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して、前記規定バーコード文字数の文字数からなるバーコードを取得することを特徴とするバーコード読取装置。
【請求項2】
前記'Stop'キャラクタが存在する前記他のラインをデコードする際に当該他のライン上をスキャンする方向が、前記'Start'キャラクタが存在する前記ラインをデコードする際に当該ライン上をスキャンする方向と逆の方向とし、前記バーコードキャラクタB、前記バーコードキャラクタAとしてデコードされるそれぞれのキャラクタを、それぞれ、前記'Stop'キャラクタ、前記'Start'キャラクタの後に引き続いてデコードされるキャラクタとして検出することを特徴とする請求項1に記載のバーコード読取装置。
【請求項3】
前記'Stop'キャラクタが存在する前記他のラインをデコードする際に当該他のライン上をスキャンする方向が、前記'Start'キャラクタが存在する前記ラインをデコードする際に当該ライン上をスキャンする方向とは逆の方向であった場合、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して前記規定バーコード文字数の文字数からなるバーコードを取得する際に、前記バーコードキャラクタBの前記重複する文字領域のキャラクタを削除し、該重複する文字領域のキャラクタが削除された前記バーコードキャラクタBの並び順を逆順に並べ替えた後、前記バーコードキャラクタAと連結することを特徴とする請求項2に記載のバーコード読取装置。
【請求項4】
前記'Start'キャラクタが存在する前記ラインにおいてデコードされた前記バーコードキャラクタAの中に、前記'Stop'キャラクタが存在していなく、前記'Stop'キャラクタが存在する他のラインを検索する際に、検索した前記'Stop'キャラクタが存在する該他のラインにおいてデコードされた前記バーコードキャラクタBの中に前記'Start'キャラクタが検出されなかった場合に、前記規定バーコード文字数から前記バーコードキャラクタAの文字数を差引いた文字数よりも1個だけ多い文字数が前記バーコードキャラクタBとしてデコードされた時点で、当該他のラインにおけるデコード処理を打ち切り、前記バーコードキャラクタAと前記バーコードキャラクタBとの前記重複する文字領域内にある1個のキャラクタが同じキャラクタであるか否かを確認し、同じキャラクタであった場合は、前記重複する文字領域内にある該1個のキャラクタを利用して、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して、前記規定バーコード文字数の文字数からなるバーコードを取得することを特徴とする請求項1ないし3のいずれかに記載のバーコード読取装置。
【請求項5】
前記読み取り対象ライン数分だけ同一方向のラインを移動させつつ前記バーコードを撮像した前記バーコード画像を、複数、メモリに保存している場合、複数の前記バーコード画像それぞれについてバーコードのデコード処理を行って前記規定バーコード文字数の文字数からなるバーコードそれぞれを取得し、取得した各バーコードについて一致しているか否かを比較し、一致していた場合に、正しくデコードされたものと判定することを特徴とする請求項1ないし4のいずれかに記載のバーコード読取装置。
【請求項6】
あらかじめ決められた規定バーコード文字数からなっている読み取り対象のバーコードに対してあらかじめ定めた傾斜角度内の傾きを有して取り付けられたバーコード読取装置におけるバーコード読み取り方法であって、あらかじめ定めた読み取り対象ライン数分だけ同一方向のラインを移動させつつ前記バーコードを撮像したバーコード画像を、あらかじめ定めた順番に前記ラインごとにデコード処理を行った際に、前記バーコードの開始文字パターンである'Start'キャラクタが存在する前記ラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタAの中に、前記バーコードの終了文字パターンである'Stop'キャラクタが存在していない場合、前記'Stop'キャラクタが存在する他のラインを検索し、検索した前記'Stop'キャラクタが存在する該他のラインにおいてデコードされたキャラクタ群を意味するバーコードキャラクタBの中に前記'Start'キャラクタが検出されなかった場合であって、かつ、前記バーコードキャラクタAの文字数と前記バーコードキャラクタBの文字数との合計が、前記規定バーコード文字数を上回り、前記バーコードキャラクタAと前記バーコードキャラクタBとの間で重複する文字領域が存在することが判明した場合には、前記バーコードキャラクタAと前記バーコードキャラクタBとの前記重複する文字領域内にあるキャラクタが同じキャラクタであるか否かを確認し、同じキャラクタであった場合は、前記重複する文字領域内にある該キャラクタを利用して、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して、前記規定バーコード文字数の文字数からなるバーコードを取得することを特徴とするバーコード読み取り方法。
【請求項7】
前記'Stop'キャラクタが存在する前記他のラインをデコードする際に当該他のライン上をスキャンする方向が、前記'Start'キャラクタが存在する前記ラインをデコードする際に当該ライン上をスキャンする方向と逆の方向とし、前記バーコードキャラクタB、前記バーコードキャラクタAとしてデコードされるそれぞれのキャラクタを、それぞれ、前記'Stop'キャラクタ、前記'Start'キャラクタの後に引き続いてデコードされるキャラクタとして検出することを特徴とする請求項6に記載のバーコード読み取り方法。
【請求項8】
前記'Stop'キャラクタが存在する前記他のラインをデコードする際に当該他のライン上をスキャンする方向が、前記'Start'キャラクタが存在する前記ラインをデコードする際に当該ライン上をスキャンする方向とは逆の方向であった場合、前記バーコードキャラクタAと前記バーコードキャラクタBとを連結して前記規定バーコード文字数の文字数からなるバーコードを取得する際に、前記バーコードキャラクタBの前記重複する文字領域のキャラクタを削除し、該重複する文字領域のキャラクタが削除された前記バーコードキャラクタBの並び順を逆順に並べ替えた後、前記バーコードキャラクタAと連結することを特徴とする請求項7に記載のバーコード読み取り方法。
【請求項9】
請求項6ないし8のいずれかに記載のバーコード読み取り方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするバーコード読み取りプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−197784(P2011−197784A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−61162(P2010−61162)
【出願日】平成22年3月17日(2010.3.17)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】