JP5115124B2 - バーコード読取装置及びプログラム - Google Patents

バーコード読取装置及びプログラム Download PDF

Info

Publication number
JP5115124B2
JP5115124B2 JP2007260098A JP2007260098A JP5115124B2 JP 5115124 B2 JP5115124 B2 JP 5115124B2 JP 2007260098 A JP2007260098 A JP 2007260098A JP 2007260098 A JP2007260098 A JP 2007260098A JP 5115124 B2 JP5115124 B2 JP 5115124B2
Authority
JP
Japan
Prior art keywords
character
bar
barcode
character width
width
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007260098A
Other languages
English (en)
Other versions
JP2009093214A (ja
Inventor
哲也 黒松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2007260098A priority Critical patent/JP5115124B2/ja
Publication of JP2009093214A publication Critical patent/JP2009093214A/ja
Application granted granted Critical
Publication of JP5115124B2 publication Critical patent/JP5115124B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、バーコード読取装置及びプログラムに関する。
従来、一次元バーコードを読み取るバーコード読取機能を有するHT(Handy Terminal)等のバーコード読取装置が知られている。例えば、コンビニエンスストア等の店舗において、会計(売上登録)処理、棚卸時に、商品に付されたバーコードをバーコード読取装置で読み取り、そのバーコードに記録された商品の識別情報を取得していた。
バーコード読取装置は、記憶部、制御部及びバーコードイメージ読み取り部を備える。また、バーコード読取装置において、バーコードイメージ読み取り部でバーコードイメージを読み取り、バーコードの印刷品質不良やバーコードの汚れにより、そのバーコードイメージにバーコード条件不成立部分が含まれる場合には、そのバーコード条件不成立部分を、他のバーコードイメージのバーコード条件成立部分に置き換えて、読み取り可能にするようにバーコード合成を行っていた(例えば、特許文献1参照)。
特開2001−43300号公報
しかし、上記従来のバーコード合成方式では、バーコードの印刷品質不良等のためにバーコード中のあるバー全体が壊れていたり欠けていたりすると、読み取られる全てのバーコードデータの該当バー部分が分割されるため、バーコード成立条件部分が存在せず、デコードすることができないという問題があった。
本発明の課題は、バーコードの読み取り性能を向上することである。
上記課題を解決するために、請求項1に記載の発明のバーコード読取装置は、
バーコードから、当該バーコードの複数のバー及びスペースをまとめたバーの幅を示すバーデータからなるバーコードイメージを読み取る読取手段と、
前記読み取られたバーコードイメージをデコードし、当該デコードしたバーコードイメージの各キャラクタのキャラクタ幅の一致を判別し、当該バーコードイメージのキャラクタ幅が一致しているキャラクタ部分までをデコード済領域に設定する設定手段と、
前記デコード済領域に設定されたデコード済領域以外のキャラクタ幅とデコード済領域の最終のキャラクタ幅が一致するように、デコード済領域以外のキャラクタに加えるバーの加算本数を検出し、前記バーの加算本数に対応する分割本数を決定し、当該キャラクタのバーデータに続く前記分割本数分のバーデータを合成し、当該合成したバーデータを含むバーコードイメージを復元してデコードする合成手段と、を備える。
請求項2に記載の発明は、請求項1に記載のバーコード読取装置において、
前記合成手段は、前記デコード済領域のキャラクタのキャラクタ幅と前記デコード済領域以外のキャラクタのキャラクタ幅を比較し、当該2つのキャラクタ幅が一致するまで前記デコード済領域以外のキャラクタのバーデータに続くバーデータを2本ずつ加算していき、当該加算したバーデータの組数をバーの分割本数として検出する。
請求項3に記載の発明は、請求項1又は2に記載のバーコード読取装置において、
前記合成手段は、前記デコード済領域以外のキャラクタの左側をマイナス側、デコード済領域以外の右側をプラス側とし、前記デコード済領域以外のキャラクタのキャラクタ幅と、前記デコード済領域以外のキャラクタのマイナス側及び/又はプラス側に加算したバーを含めたキャラクタ幅とを比較した場合に、最も小さい差に対応する加算したバーの分割本数を検出し、前記バーの加算本数に対応する分割本数を決定する。
請求項4に記載の発明は、請求項1から3のいずれか一項に記載のバーコード読取装置において、
分割本数に対応する複数の合成パターンを記憶する記憶手段を備え、
前記合成手段は、前記検出した分割本数に対応する複数の合成パターンを前記記憶手段から読み出し、当該読み出した複数の合成パターンに基づいて、デコード容易性を表す評価式により前記デコード済領域以外のキャラクタのバーデータ合成後の評価値を算出し、当該算出した評価値のうち最も評価値の高い合成パターンに応じて前記分割本数分のバーを当該キャラクタのバーデータに合成する。
請求項5に記載の発明のプログラムは、
コンピュータを、
バーコードから、当該バーコードの複数のバー及びスペースをまとめたバーの幅を示すバーデータからなるバーコードイメージを読み取る読取手段、
前記読み取られたバーコードイメージをデコードし、当該デコードしたバーコードイメージの各キャラクタのキャラクタ幅の一致を判別し、当該バーコードイメージのキャラクタ幅が一致しているキャラクタ部分までをデコード済領域に設定する設定手段、
前記デコード済領域に設定されたデコード済領域以外のキャラクタ幅とデコード済領域の最終のキャラクタ幅が一致するように、デコード済領域以外のキャラクタに加えるバーの加算本数を検出し、前記バーの加算本数に対応する分割本数を決定し、当該キャラクタのバーデータに続く前記分割本数分のバーデータを合成し、当該合成したバーデータを含むバーコードイメージを復元してデコードする合成手段、
として機能させる。
本発明によれば、特定又は不特定のバーが分割された場合にもバーコードイメージを正しく復元してデコードでき、バーコードの読み取り性能を向上できる。
以下、添付図面を参照して本発明に係る好適な実施の形態を詳細に説明する。なお、本発明は、図示例に限定されるものではない。
図1〜図9を参照して本発明に係る実施の形態を説明する。先ず、図1を参照して本実施の形態の装置構成を説明する。図1に、本実施の形態のハンディターミナル1の構成を示す。
本実施の形態のバーコード読取装置としてのハンディターミナル1は、バーコード読取機能を有する携帯端末である。図1に示すように、ハンディターミナル1は、CPU(Central Processing Unit)11、入力部12、RAM(Random Access Memory)13、表示部14、記憶手段としての記憶部15、通信部16、電源部17、読取手段としてのスキャナ部18等を備えて構成され、各部がバス19を介して接続される。スキャナ部18は、レーザ走査部181、レーザ受光部182及びバーカウンタ抽出部183を備えて構成される。
CPU11は、ハンディターミナル1の各部を中央制御する。CPU11は、記憶部15に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをRAM13に展開し、RAM13に展開されたプログラムとの協働で、各種処理を実行する。CPU11は、プログラムとの協働により設定手段及び合成手段として機能する。
CPU11は、後述するデコードプログラムとの協働により、スキャナ部18により読み取られデコードされたバーコードイメージに対して、キャラクタ幅が一致しているデコード済領域を取得し、デコード済領域の最終のキャラクタとその次のデコード済領域以外のキャラクタとのキャラクタ幅が一致するような加算本数を検出する。そして、CPU11は、検出した加算本数(に対応する分割本数)に対応する合成パターンデータを用いて、全ての合成バーパターン及びそのデコード容易性を表す評価値を算出し、最も評価値が高い合成バーパターンを含むバーコードイメージを復元してデコードする。ここで、一つのバーコードに対し、スキャナ部18における一回のレーザ光走査で取得した全てのバー(及びスペース)の幅(カウンタ値)をバーコードイメージという。また、一つ一つのバー(又はスペース)の幅をバーデータという。
入力部12は、スキャン実行を入力するためのトリガキーと、カーソルキー、数字キー及び各種機能キー等を有するキーパッドとを備え、操作者から押下入力された各キーの入力信号をCPU11に出力する。
RAM13は、揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納するワークエリアを有し、情報を一時的に格納する。表示部14は、LCD(Liquid Crystal Display)、ELD(ElectroLuminescent Display)等で構成され、CPU11からの表示信号に従って画面表示を行う。
記憶部15は、各種プログラム及び各種データを読み出し可能に記憶するROM(Read Only Memory)を備えて構成される。また、記憶部15には、各種情報を読み出し及び書き込み可能に記憶するフラッシュメモリをさらに含める構成としてもよい。記憶部15は、デコード合成プログラム及び合成パターンテーブルを記憶する。
通信部16は、無線又は有線の通信方式で外部機器と各種情報の通信を行う。電源部17は、ハンディターミナル1の各部に電源電力を供給する。電源部17は、例えば、CPU11の指示により、電源供給のオフ等を行う。
スキャナ部18は、CPU11の指示に基づいて、バーコードを光学的に読み取り、バーコードイメージ(バーデータ)を取得する。レーザ走査部181は、レーザ光の発光部と可動式のミラー部とを備える。レーザ走査部181は、発光部からレーザ光を発光してミラー部に反射させて出射し、その際ミラー部を駆動してレーザ光の反射角度を変化させることにより、レーザ光がバーコード上を走査する。
レーザ受光部182は、レーザ走査部181から出射されたレーザ光がバーコードで反射された反射光を受光し、その受光した光信号を電気信号に変換する。バーカウンタ抽出部183は、レーザ受光部182により取得された電気信号から、予め定められた閾値を用いてバーコードの黒白の2値のカウンタ値を検出し、そのカウンタ値から、各バー(黒)、各スペース(白)の幅を示すバーデータを取得し、一回のレーザ走査で得られる全バーデータをバーコードイメージとして取得する。以下、特に断らない限り、バー及びスペースをまとめて“バー”と表現する。
次いで、図2を参照して、バーコードイメージ及びバーデータの具体例を説明する。図2(a)に、バーコードB及び各バーの幅の一例を示す。図2(b)に、バーコードイメージ及びバーデータの一例を示す。
図2(a)に示すような一次元のバーコードBが左から右への矢印の向きに、スキャナ部18によりバーコード読み取りされるものとする。バーコードBの各バーの幅は、順にバーデータC1〜C17であるものとする。このとき、図2(b)に示すように、一回のレーザ走査で、各バーデータC1〜C17を含むバーコードイメージが得られる。
次に、図3〜図11を参照して、ハンディターミナル1の動作を説明する。先ず、図3を参照して、本実施の形態におけるキャラクタ幅の概念について説明する。図3に、バーコードB1及び取得したバーデータを示す。
バーコードは、基本的に複数のバーで構成されるキャラクタが連続する構成になっており、1キャラクタ内のバー幅の合計値をキャラクタ幅という。キャラクタは、バーコードに含まれる数字、アルファベット等の各記号に対応する部分である。キャラクタ幅は、前後のキャラクタでほぼ同一と考えられる。キャラクタ幅は、バーコードの規格により異なる。バーコードの規格としては、例えば、キャラクタ内に9本のバーデータ(黒5本、白4本)を有するCode39や、キャラクタ内に7本のバーデータ(黒4本、白3本)を有するNW7等がある。本実施の形態では、バーコードの規格として、Code39の例を説明するが、これに限定されるものではない。
バーコードの読み取りにおいては、バーコード読み取り時のノイズ、バーコードの品質不良(掠れ)、バーコードの傷、汚れ等により、本来一本であるはずのバーが複数に分割されたバーとして読み取られることが発生しうる。このため、本実施の形態でのバーコードの分割検出では、デコード不可直前のキャラクタとデコード不可分のキャラクタのキャラクタ幅の差を算出し、差がある場合にはバーの分割が発生していると認識するものとする。例えば、図3に示すように、バーコードB1を読み取りってバーコードイメージ(バーデータ)を取得したものとする。最初のキャラクタのキャラクタ幅をキャラクタ幅CWAとし、次のキャラクタのキャラクタ幅をキャラクタ幅CWBとする。取得したバーデータのキャラクタ幅CWBがキャラクタ幅CWAに比べて細く、キャラクタ幅CWB内の部分には、分割が発生していると認識される。
次いで、図4及び図5を参照して、分割本数の算出について説明する。図4(a)に、バーの分割を示す。図4(b)に、キャラクタ幅へのバーの加算を示す。図5に、キャラクタ分割による分割本数の算出の様子を示す。
図4(a)に示すように、バーコードの1つのバーが分割する場合、1つの分割に対してスペース(白)とバー(黒)とが1つずつ、計2本増加する。従って、図4(b)に示すように、キャラクタ幅が細い場合は、前のキャラクタ幅と一致するまで現在のキャラクタ幅にバーデータを2本づつ加算していく。なお、この分割により増えたスペース及びバーの組数を分割本数とし、分割により増えたスペース及びバーの本数を加算本数とする。
例えば、図5に示すように、バーコードB2を含む正しいバーコードを読み取って、バーデータを取得した場合に、正しいキャラクタ幅CWCと、分割によりキャラクタ幅CWCよりも細いキャラクタ幅CWDとが得られたものとする。正しいキャラクタ幅を得るため、キャラクタ幅CWDにバーデータ2本分ずつ加算していくと、バーデータ4本分の加算でキャラクタ幅CWCと一致する。このため、加算本数が4本となり、分割本数は2本となる。
次いで、図6を参照して、キャラクタ幅の許容範囲について説明する。図6に、スキャナ部18のレーザ光走査とキャラクタ幅との関係を示す。
図6に示すように、スキャナ部18のレーザ走査部181はレーザ光を左右に振って照射している。このため、照射される位置によりキャラクタ幅が異なる。従って、本実施の形態では、一走査内での2つのキャラクタ幅の差がある値以下である場合には一致しているとみなすことを可能とする。
また、レーザ光照射開始側ではレーザ光を振る速度が加速されているため、キャラクタ幅が短くなっていき、レーザ光照射終了側ではレーザ光を振る速度が減速されているため、キャラクタ幅が長くなっていく。そのため、キャラクタ幅を比較する場合は、下記の条件が成立するものを一致しているとみなすことを可能とする。
・前キャラクタ幅に対する差がマイナス値で一番近いキャラクタ幅。
・前キャラクタ幅に対する差がプラス値で一番近いキャラクタ幅。
次いで、図7を参照して、上記算出した分割本数による合成パターンテーブル生成と最適合成パターンの選択を説明する。図7に、合成パターンテーブル及び合成パターンの選択の一例を示す。
バーコードイメージにおいて、バー又はスペースが分割した際の合成パターンは、分割本数により決定する。例えば、Code39のバーコードで、分割箇所が1箇所から3箇所の場合は、下記のパターン数が存在する。
・1分割:9パターン
・2分割:45パターン
・3分割:165パターン
記憶部15には、予め構成した合成パターンを含む合成パターンテーブルを記憶している。上記分割本数決定後、記憶部15に記憶された合成パターンテーブルの合成パターンを用いてキャラクタのバーデータを再構築する。その後、再構築したキャラクタのバーコードに対して、評価式による評価値を算出する。最も評価値の高いものを採用し、デコード対象とする。
ここで、Code39のバーコードにおいて、1キャラクタ内のバーの分割本数が1本である場合を考える。分割本数が1本であるため、1キャラクタ内のバーが9本から11本に増える。従って、その11本を9本に戻す処理が必要となる。
このケースでは、記憶部15に記憶されている合成パターンテーブルのうち、図7に示す分割本数が1本(加算本数が2本)に対応する合成パターンテーブルT1が用いられる。合成パターンテーブルT1において、「1」、「0」で示される位置が、1キャラクタ内の各バーの位置に対応し、「1」と記載される部分が前のバーに合成される部分である。
合成パターンテーブルT1において、例えばNo.1のパターンでは、図7に示すように、一番目のバーに、二番目、三番目のバーを合成し、合成パターンを作成する。同様にNo.1〜N0.9の合成パターンを用いて合計9つの合成パターンを作成する。
次いで、図8〜図10を参照して、ハンディターミナル1で実行されるデコード合成処理を説明する。図8に、デコード合成処理の流れを示す。図9に、図8のデコード合成処理の流れの続きを示す。図10に、デコード合成処理内のキャラクタ幅確認処理の流れを示す。
ハンディターミナル1において、スキャナ部18によりバーコードが読み取られる場合に、バーコードにレーザ光が複数回走査される。スキャナ部18において、レーザ走査部181によりバーコードにレーザ光が走査され、レーザ受光部182及びバーカウンタ抽出部183によりバーコードイメージ(全バーコードデータ)が取得されデコードされる毎に、デコード合成処理が実行される。このように、ハンディターミナル1において、スキャナ部18により、バーコードにレーザ光が一回走査されてバーコードイメージが取得されデコードされ、デコードが失敗したことをトリガとして、記憶部15から読み出されて適宜RAM13上に展開されたデコード合成プログラムと、CPU11との協働で、デコード合成処理が実行される。スキャナ部18により取得されたバーコードイメージ及びそのデコード桁数(デコードが成功した桁数)は、RAM13に格納されているものとする。
図8及び図9に示すように、先ず、スキャナ部18により取得されたデコード済のバーコードイメージの各キャラクタ幅を取得するキャラクタ幅確認処理が実行される(ステップS1)。デコード済キャラクタの中には、分割したバー等によって不正なキャラクタにデコードされている可能性がある。従って、バーコードイメージのデコード済領域に対して、スタートキャラクタを比較し、キャラクタ幅に差がないことを確認する。キャラクタ幅に差があった場合には、差があったキャラクタより前までをキャラクタ幅確認済のデコード済領域(デコード済桁)として、ステップS2以降の処理を行う。キャラクタ幅確認処理は、詳細に後述する。
そして、ステップS1により取得されたキャラクタ幅確認済のデコード済領域のバーコードイメージの最終のキャラクタのキャラクタ幅が最終キャラクタ幅Aとして算出される(ステップS2)。そして、キャラクタ幅Aの次のキャラクタのキャラクタ幅が次キャラクタ幅a1として算出される(ステップS3)。そして、次キャラクタ幅a1が最終キャラクタ幅A以上であるか否かが判別される(ステップS4)。次キャラクタ幅a1が最終キャラクタ幅A以上である場合(ステップS4;YES)、デコード合成処理が終了する。
次キャラクタ幅a1が最終キャラクタ幅Aより小さい場合(ステップS4;NO)、バーデータの加算回数が3回以下であるか否かが判別される(ステップS5)。ステップS5の加算回数の判別基準は、3回に限定されるものではない。バーデータの加算回数が3回以下である場合(ステップS5;YES)、次キャラクタ幅a1に次の2本分のバーデータが加算され、キャラクタ幅a2として算出される(ステップS6)。
そして、キャラクタ幅a2が最終キャラクタ幅A以下であるか否かが判別される(ステップS7)。キャラクタ幅a2が最終キャラクタ幅A以下である場合(ステップS7;YES)、ステップS6で加算されたバーの加算本数(デコード済領域のキャラクタ幅のマイナス側(左側))が加算本数N1としてRAM13に記憶され(ステップS8)、ステップS5に移行される。再度ステップS8を通る場合には、RAM13に記憶された加算本数N1が更新される。キャラクタ幅a2が最終キャラクタ幅Aより大きい場合(ステップS7;NO)、ステップS6で加算されたバーの加算本数(デコード済領域のキャラクタ幅のプラス側(右側))が加算本数N2としてRAM13に記憶される(ステップS9)。このようにして、加算本数N1,N2が検出される。
バーデータの加算回数が4回以上の場合(ステップS5;NO)、又はステップS9の実行後、加算本数N1又はN2に対応する分割本数に対応する合成パターンテーブルが記憶部15から読み出され、読み出された合成パターンテーブルに対応する全合成バーパターンが作成されたか否かが判別される(ステップS10)。
全合成バーパターンが作成されていない場合(ステップS10;NO)、ステップS10で読み出された加算本数N1又はN2の分割本数に対応する合成パターンテーブルから、未選択のレコードの合成パターンが選択され、当該合成パターンで合成したキャラクタ幅のバーデータ(以下、合成バーパターンとする)が生成される(ステップS11)。そして、評価式に基づいて、ステップS11で生成された1つの合成バーパターンに対し評価値Rが算出される(ステップS12)。
評価式としては、例えば、バーコードの規格ANSI X 3.182の中にあるデコード容易性を参考にした次式(1)〜(3)を使用する。
V1=(RT−e)/(RT−Z) …(1)
V2=(E−RT)/(N−RT) …(2)
V3=(RT−e)/(RT−Z) …(3)
但し、RT:バー(黒)の閾値(バーデータの太い、細いの閾値であり、この閾値で分けた細い方のバーを細バーといい、同じく太い方のバーを太バーという)、Z:細バーの平均値、N:太バーの平均値、e:最も太い細バーの幅値、e:最も細い太バーの幅値、とする。
式(1)〜(3)を用いて、1つの合成バーパターンに対し、値(V1+V2)、値V3が算出され、値(V1+V2)と値V3とのうち高い方の値を評価値Rとして採用する。
そして、ステップS12で算出された評価値Rが、RAM13に記憶された評価値R0と比較される(ステップS13)。ステップS13で評価値R0が存在しない場合には、比較が行われない。そして、評価値Rが評価値R0より大きいか否かが判別される(ステップS14)。但し、ステップS13で評価値R0が存在しない場合には、ステップS14でYESとする。
評価値Rが評価値R0以下の場合(ステップS14;NO)、ステップS10に移行される。評価値Rが評価値R0より大きい場合(ステップS14;YES)、評価値R及びその合成バーパターンが、評価値R0及びその合成バーパターンとして、RAM13に記憶され(ステップS15)、ステップS10に移行される。
全合成バーパターンが作成された場合(ステップS10;YES)、デコード済領域の次のキャラクタ幅としての評価値R0の合成バーパターンを含むバーコードイメージが復元される(ステップS16)。そして、ステップS16で復元されたバーコードイメージがデコードされる(ステップS17)。そして、ステップS17でのデコードが完全にできたか否かが判別される(ステップS18)。ステップS18において、ステップS17のデコードのデコード桁数が取得される。
デコードが完全にできた場合(ステップS18;YES)、デコード合成処理が終了する。デコードが完全にできていない場合(ステップS18;NO)、ステップS18で取得されたデコード桁数とRAM13に記憶されたデコード合成処理実行前のデコード桁数とが比較され、デコード合成処理を実行する前に比べて、デコード対象のバーコードイメージのデコード桁数が増えたか否かが判別される(ステップS19)。デコード桁数が増えていない場合(ステップS19;NO)、デコード合成処理が終了する。デコード桁数が増えた場合(ステップS19;YES)、デコード対象のバーコードイメージのデコード済領域が増え、ステップS2に移行される。
次いで、図10を参照して、デコード合成処理のステップS1のキャラクタ幅確認処理を説明する。先ず、スキャナ部18により取得されたデコード済のバーコードイメージのバーデータn本(Code39だと9本)の合計値としてのキャラクタ幅CW1が算出される(ステップS21)。nとは、バーコードイメージ内の1キャラクタ分のバーデータの数である。また、デコード済領域のスタート位置Xからの1キャラクタ内のバーデータをそれぞれ、wX1,…,wXnとする。すると、キャラクタ幅CW1は、CW=wX1+…+wXnで算出される。
そして、キャラクタ幅を確認するためのデコード桁数の変数としてのキャラクタ幅確認済桁数Dが1に設定される(ステップS22)。そして、キャラクタ幅確認済桁数Dがデコード済桁数に一致し、キャラクタ幅確認がデコード済桁数分終了したか否かが判別される(ステップS23)。キャラクタ幅確認がデコード済桁数分終了した場合(ステップS23;YES)、デコード済領域内に分割部分が存在しなく、バーコードイメージのうちデコード合成処理実行前のデコード済領域をキャラクタ幅確認済のデコード済領域とし(設定し)、キャラクタ幅確認が終了する。
キャラクタ幅確認がデコード済桁数分終了していない場合(ステップS23;NO)、バーコードイメージのキャラクタ幅確認済の次のバーデータn本(Code39だと9本)の合計値としてのキャラクタ幅CW2が算出される(ステップS24)。nとは、バーコードイメージ内の1キャラクタ分のバーデータの数である。また、キャラクタ幅確認済の次からの1キャラクタ内のバーデータをそれぞれ、wXn1,…,wXnnとする。すると、キャラクタ幅CW2は、CW2=wXn1+…+wXnnで算出される。
そして、キャラクタ幅CW1がキャラクタ幅CW2よりも大きいか否かが判別される(ステップS25)。キャラクタ幅CW1がキャラクタ幅CW2よりも大きい場合(ステップS25;YES)、キャラクタ幅の差d1=CW1−CW2が算出される(ステップS26)。そして、バーコードイメージのキャラクタ幅CW2の次の2本のバーデータwXnn1、wXnn2を用いて、キャラクタ幅の差d2=|CW1−(CW2+wXnn1+wXnn2)|が算出される(ステップS27)。
そして、差d2が差d1より小さいか否かが判別される(ステップS28)。差d2が差d1より小さい場合(ステップS28;YES)、キャラクタ幅CW2内で分割が発生しており、バーコードイメージのうち、キャラクタ幅CW2の1つ前のキャラクタ幅までをキャラクタ幅確認済のデコード済領域とし(設定し)、キャラクタ幅確認処理が終了する。
キャラクタ幅CW1がキャラクタ幅CW2以下である場合(ステップS25;NO)、又は差d2が差d1以上である場合(ステップS28;NO)、キャラクタ幅CW1にキャラクタ幅CW2の値が代入される(ステップS29)。そして、キャラクタ幅確認済桁数Dが1インクリメントされ(ステップS30)、ステップS23に移行される。
ここで、図11を参照して、キャラクタ幅確認処理の具体例を説明する。図11に、バーコードB3並びにそのバーデータ及びキャラクタ幅を示す。
先ず、図11に示すように、Code39のバーコードB3からバーデータw1〜w21が取得され、そのデコードがなされているものとする。そして、バーデータw1〜w21〜においてキャラクタ幅確認処理が実行される。スタート位置Xをw2として、最初のバーデータ9本(黒5本、白4本)のキャラクタ幅CWa(バーデータw2〜w10の合計)が算出される。同様に、キャラクタ幅CWb(バーデータw11〜w19の合計)が算出され、キャラクタ幅CWaとキャラクタ幅CWbとが比較される。キャラクタ幅CWaとキャラクタ幅CWbとは一致し、キャラクタ幅CWbに分割は発生していない。
同様にして、キャラクタ幅CWbとキャラクタ幅CWcが比較され、一致し、キャラクタ幅CWcに分割は発生していない。そして、キャラクタ幅CWcとキャラクタ幅CWdとが比較され、CWc>CWdで且つd2<d1であり、キャラクタ幅CWdに分割が発生されているものとみなされる。キャラクタ幅CWdで分割が発生していることが確認され、それ以後のキャラクタ幅CWeの比較、確認はなされない。そして、デコード合成処理のステップS2以降において、キャラクタ確認済のデコード済領域がバーコードイメージのうちキャラクタ幅CWa,CWb,CWcに対応する部分として各ステップが実行される。
以上、本実施の形態によれば、ハンディターミナル1は、スキャナ部18により読み取られたバーコードイメージをデコードし、当該デコードしたバーコードイメージの各キャラクタのキャラクタ幅の一致を判別し、当該バーコードイメージのキャラクタ幅が一致しているキャラクタ部分までを、分割が発生していないデコード済領域とし、このデコード済領域以外のキャラクタのバーの加算本数(分割本数)を検出し、当該キャラクタのバーデータに続く分割本数分のバーデータを合成し、合成したバーデータを含むバーコードイメージを復元してデコードする。このため、ノイズ、バーコードの印刷品質不良、傷、汚れ等により、特定又は不特定のバーが分割された場合にもバーコードイメージを正しく復元してデコードでき、バーコードの読み取り性能を向上できる。
また、キャラクタ幅確認処理により確認されたデコード済領域のキャラクタのキャラクタ幅Aと当該キャラクタの次のキャラクタ幅a1とを比較し、当該2つのキャラクタ幅が一致するまでキャラクタ幅a1のバーデータに続くバーデータを2本ずつ(スペース及びバー)加算していき、当該加算したバーデータの数をバーの加算本数として検出する。このため、適切なバーの加算本数(分割本数)を容易に検出できる。
また、デコード済領域のキャラクタのキャラクタ幅Aに対する、デコード済領域以外のキャラクタのキャラクタ幅a1又はa2のマイナス側又はプラス側の最も小さい差に対応する加算本数N1又はN2を検出する。このため、スキャナ部18の構造に基づく、読み取るキャラクタのキャラクタ幅の増減によらず、適切に加算本数を検出できる(適切にキャラクタ幅の一致を判別できる)。
また、デコード済領域以外のキャラクタに合成するバーの分割本数に対応する複数の合成パターンを記憶部15から読み出し、当該分割本数に応じて読み出した合成パターンごとに、デコード容易性を表す評価式により当該キャラクタの評価値Rを算出し、最も高い評価値R0の合成パターンに応じて前記分割本数分のバーを当該キャラクタのバーデータに合成してバーコードイメージを復元する。このため、最も評価値の高い適切な合成パターンでバーコードイメージを適切に復元できる。
なお、上記実施の形態における記述は、本発明に係るバーコード読取装置及びプログラムの一例であり、これに限定されるものではない。
上記実施の形態では、バーコード読取装置としてハンディターミナルを用いる構成としたが、ECR(Electronic Cash Register)、POS(Point Of Sales System)端末等に接続されるバーコード読取装置等、他のバーコード読取装置としてもよい。
また、上記実施の形態では、デコード済領域以外のキャラクタのキャラクタ幅の許容範囲として、デコード済領域のキャラクタのキャラクタ幅Aに対するマイナス側の最も小さい差(加算本数N1に対応)又はプラス側の最も小さい差(加算本数N2に対応)に応じたキャラクタ幅としたが、これに限定されるものではない。例えば、デコード済領域以外のキャラクタのキャラクタ幅の許容範囲として、ある一定値以下(例えば、キャラクタ幅の差がバーの1/10以下)としてもよい。さらに、デコード済領域以外のキャラクタのキャラクタ幅の許容範囲を、複数の許容範囲からユーザ操作等により自在に設定可能としてもよい。
また、上記実施の形態では、分割本数に応じた複数の合成パターンに応じて評価式による評価値Rを算出し、最大の評価値R0の合成パターンに応じてキャラクタ幅にバーデータを合成する構成としたが、これに限定されるものではない。例えば、算出した複数の評価値Rのうち、上位から所定数の評価値(例えば、上位から3位)の合成パターンを採用する構成としてもよい。このとき、例えば、(仮)採用された合成パターンのうち、デコード済部分の長さが最大の合成パターンを本採用する。
また、上記実施の形態では、最初に読み取ったバーコードイメージのデコードが失敗した場合に、デコード合成処理を実行する構成としたが、これに限定されるものではない。例えば、最初に読み取ったバーコードイメージのデコードが完全に成功した場合にも、検証の目的でデコード合成処理をさらに実行する構成としてもよい。
また、上記実施の形態におけるハンディターミナル1の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。
本発明に係る実施の形態のハンディターミナルの構成を示すブロック図である。 (a)は、バーコード及び各バーの幅の一例を示す図である。(b)は、バーコードイメージ及びバーデータの一例を示す図である。 バーコード及び取得したバーデータを示す図である。 (a)は、バーの分割を示す図である。(b)は、キャラクタ幅へのバーの加算を示す図である。 キャラクタ分割による分割本数の算出の様子を示す図である。 スキャナ部のレーザ光走査とキャラクタ幅との関係を示す図である。 合成パターンテーブル及び合成パターンの選択の一例を示す図である。 デコード合成処理を示すフローチャートである。 図8のデコード合成処理の続きを示すフローチャートである。 デコード合成処理内のキャラクタ幅確認処理を示すフローチャートである。 バーコード並びにそのバーコードデータ及びキャラクタ幅を示す図である。
符号の説明
1 ハンディターミナル
11 CPU
12 入力部
13 RAM
14 表示部
15 記憶部
16 通信部
17 電源部
18 スキャナ部
181 レーザ走査部
182 レーザ受光部
183 バーカウンタ抽出部
19 バス

Claims (5)

  1. バーコードから、当該バーコードの複数のバー及びスペースをまとめたバーの幅を示すバーデータからなるバーコードイメージを読み取る読取手段と、
    前記読み取られたバーコードイメージをデコードし、当該デコードしたバーコードイメージの各キャラクタのキャラクタ幅の一致を判別し、当該バーコードイメージのキャラクタ幅が一致しているキャラクタ部分までをデコード済領域に設定する設定手段と、
    前記デコード済領域に設定されたデコード済領域以外のキャラクタ幅とデコード済領域の最終のキャラクタ幅が一致するように、デコード済領域以外のキャラクタに加えるバーの加算本数を検出し、前記バーの加算本数に対応する分割本数を決定し、当該キャラクタのバーデータに続く前記分割本数分のバーデータを合成し、当該合成したバーデータを含むバーコードイメージを復元してデコードする合成手段と、
    を備えるバーコード読取装置。
  2. 前記合成手段は、前記デコード済領域のキャラクタのキャラクタ幅と前記デコード済領域以外のキャラクタのキャラクタ幅を比較し、当該2つのキャラクタ幅が一致するまで前記デコード済領域以外のキャラクタのバーデータに続くバーデータを2本ずつ加算していき、当該加算したバーデータの組数をバーの分割本数として検出する請求項1に記載のバーコード読取装置。
  3. 前記合成手段は、前記デコード済領域以外のキャラクタの左側をマイナス側、デコード済領域以外の右側をプラス側とし、前記デコード済領域以外のキャラクタのキャラクタ幅と、前記デコード済領域以外のキャラクタのマイナス側及び/又はプラス側に加算したバーを含めたキャラクタ幅とを比較した場合に、最も小さい差に対応する加算したバーの分割本数を検出し、前記バーの加算本数に対応する分割本数を決定する請求項1又は2に記載のバーコード読取装置。
  4. 分割本数に対応する複数の合成パターンを記憶する記憶手段を備え、
    前記合成手段は、前記検出した分割本数に対応する複数の合成パターンを前記記憶手段から読み出し、当該読み出した複数の合成パターンに基づいて、デコード容易性を表す評価式により前記デコード済領域以外のキャラクタのバーデータ合成後の評価値を算出し、当該算出した評価値のうち最も評価値の高い合成パターンに応じて前記分割本数分のバーを当該キャラクタのバーデータに合成する請求項1から3のいずれか一項に記載のバーコード読取装置。
  5. コンピュータを、
    バーコードから、当該バーコードの複数のバー及びスペースをまとめたバーの幅を示すバーデータからなるバーコードイメージを読み取る読取手段、
    前記読み取られたバーコードイメージをデコードし、当該デコードしたバーコードイメージの各キャラクタのキャラクタ幅の一致を判別し、当該バーコードイメージのキャラクタ幅が一致しているキャラクタ部分までをデコード済領域に設定する設定手段、
    前記デコード済領域に設定されたデコード済領域以外のキャラクタ幅とデコード済領域の最終のキャラクタ幅が一致するように、デコード済領域以外のキャラクタに加えるバーの加算本数を検出し、前記バーの加算本数に対応する分割本数を決定し、当該キャラクタのバーデータに続く前記分割本数分のバーデータを合成し、当該合成したバーデータを含むバーコードイメージを復元してデコードする合成手段、
    として機能させるためのプログラム。
JP2007260098A 2007-10-03 2007-10-03 バーコード読取装置及びプログラム Active JP5115124B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007260098A JP5115124B2 (ja) 2007-10-03 2007-10-03 バーコード読取装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007260098A JP5115124B2 (ja) 2007-10-03 2007-10-03 バーコード読取装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2009093214A JP2009093214A (ja) 2009-04-30
JP5115124B2 true JP5115124B2 (ja) 2013-01-09

Family

ID=40665194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007260098A Active JP5115124B2 (ja) 2007-10-03 2007-10-03 バーコード読取装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5115124B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015141447A (ja) * 2014-01-27 2015-08-03 日立オムロンターミナルソリューションズ株式会社 バーコード読取装置及びバーコードの読取方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2740418B2 (ja) * 1992-07-14 1998-04-15 富士通株式会社 バーコード読取復調方法
JP2002133363A (ja) * 2000-10-20 2002-05-10 Fujitsu Kiden Ltd バーコード復調方式

Also Published As

Publication number Publication date
JP2009093214A (ja) 2009-04-30

Similar Documents

Publication Publication Date Title
CN107092849B (zh) 用于使用多个数据源来读取光学标记的方法和设备
US7422153B2 (en) Decoding with data from multiple scans
US5241164A (en) Method of decoding bar code symbols from partial scans
US5278398A (en) Decoding bar code symbols by determining the best alignment of partial scans
JP3115003B2 (ja) モジュール・サイズの比率解析を用いてバーコード記号を解読する方法および装置
EP0647916A1 (en) Bar code scan stitching
US20020185540A1 (en) Setting bar code of optical information reader, method for generating the same, method for changing setting of optical information reader and computer-readable medium
US20110309150A1 (en) Intelligent indicia reader
US7950581B2 (en) System and method of acquiring a machine-readable symbol
US8579198B2 (en) Enhanced laser barcode scanning
JP5115124B2 (ja) バーコード読取装置及びプログラム
JP4337597B2 (ja) コードシンボル読取装置、および、プログラム
JP2017182455A (ja) 画像解析装置
US8757492B2 (en) Scanner device and computer program product
JPH08263585A (ja) コード読取装置
JP5115123B2 (ja) バーコード読取装置及びプログラム
US8960550B2 (en) Minimizing misdecodes in electro-optical readers
EP3754579A1 (en) Barcode generation device and barcode generation method
US20090084849A1 (en) Method and apparatus for reading indicia
JP5341951B2 (ja) コード読取装置及びプログラム
JP5768260B2 (ja) イメージ処理装置及びシンボル読取方法
JP2001307013A (ja) バーコード読取装置
JP5534053B2 (ja) コード読取装置及びプログラム
US8746567B2 (en) Barcode reader and computer program product
JP2001005907A (ja) バーコード読取装置、及び記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100921

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100921

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120918

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121001

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5115124

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3