"レーザ光を出射して反射光を受光することによりバーコードをスキャンしてイメージデータを取得するスキャナ部と、前記スキャナ部により取得されたイメージデータのうち、前記レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない部分をデータ安定範囲として判定する判定部と、前記判定部により判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードし、前記判定部により判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードするデコード部と、を備えるスキャナ装置。前記判定部は、前記スキャナ部により取得されたイメージデータのうち、左端から所定の第1の割合のデータ幅と、右端から所定の第2の割合のデータ幅と、を前記データ不安定範囲と判定する請求項1に記載のスキャナ装置。前記デコード部は、前記スキャナ部により取得されたイメージデータについて、前記バーコードの1キャラクタ内の前記誤差の許容度を同じ値に設定し、前記データ不安定範囲及び前記データ安定範囲の境界上のキャラクタの前記誤差の許容度を低く設定する請求項1又は2に記載のスキャナ装置。コンピュータを、レーザ光を出射して反射光を受光することによりバーコードをスキャンしてイメージデータを取得するスキャナ部と、前記スキャナ部により取得されたイメージデータのうち、前記レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない部分をデータ安定範囲として判定する判定部、前記判定部により判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードし、前記判定部により判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードするデコード部、として機能させるためのプログラム。しかし、従来のスキャナ装置では、レーザ光の振れ幅照射幅の両端部分で反射光が不十分となることがあり、取得するイメージデータが不安定となるため、黒バー及び白スペースの比率を正しく取得できないおそれがあるという特性があった。そのため、レーザ光の振れ幅の両端部分でバーコードをスキャンすると、黒バー及び白スペースの比率が崩れて見えてしまい、そのイメージデータをデコードした結果、誤読してしまうおそれがあった。誤読を回避する方法として、従来のスキャナ装置において、閾値をきつく調整する方法が考えられる。閾値をきつく調整するとは、閾値に対するイメージデータの誤差許容度を低く調整することである。しかし、閾値を単純にきつく調整した場合、黒バー及び白スペースの比率の正しいレーザ光の振れ幅の中央部分のスキャンデータに対する読み取りもきつくなるため、同じ幅の黒バーや白スペースの印刷比率に少しでも誤差がある場合や、読み取り距離が離れた場合などに読み取りができなくなってしまうおそれがあった。本発明の課題は、バーコード読み取りの正確性及びレスポンスを向上することである。上記課題を解決するために、本発明のスキャナ装置は、レーザ光を出射して反射光を受光することによりバーコードをスキャンしてイメージデータを取得するスキャナ部と、前記スキャナ部により取得されたイメージデータのうち、前記レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない部分をデータ安定範囲として判定する判定部と、前記判定部により判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードし、前記判定部により判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードするデコード部と、を備える。本発明によれば、バーコード読み取りの正確性及びレスポンスを向上することができる。以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。なお、本発明は、図示例に限定されるものではない。先ず、図1及び図2を参照して、本実施の形態の装置構成を説明する。図1に、本実施の形態のスキャナ装置10の構成を示す。図2に、スキャナ部18の構成を示す。図1に示すように、本実施の形態のスキャナ装置10は、読み取り対象物としての1次元のバーコードを読み取り管理するハンディターミナルである。スキャナ装置10は、例えば、倉庫や、小売店の店舗等で使用される。バーコードは、例えば、倉庫や店舗等に並べられた商品に付されているものとする。スキャナ装置10は、CPUCentralProcessingUnit11と、操作部12と、RAMRandomAccessMemory13と、表示部14と、ROMReadOnlyMemory15と、無線通信部16と、フラッシュメモリ17と、スキャナ部18と、報知部19と、電源部20と、を備える。電源部20を除くスキャナ装置10の各部は、バス21を介して互いに接続されている。CPU11は、スキャナ装置10の各部を制御する。CPU11は、各種プログラムのうち指定されたプログラムをROM15から読み出してRAM13に展開し、展開されたプログラムとの協働で各種処理を実行する。CPU11は、スキャンプログラム151に従い、スキャナ部18により取得されたイメージデータのうち、レーザ光の振れ幅の両端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない中央部分をデータ安定範囲として判定する。そして、CPU11は、前記判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードする。そして、CPU11は、前記判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードする。操作部12は、文字入力キー等の各種キーからなるキー群を備え、ユーザからの各キーの押下入力に応じた操作情報をCPU11に出力する。操作部12は、少なくとも、スキャナ部18を用いたバーコードスキャンのトリガキーを有する。RAM13は、揮発性の半導体メモリであり、各種データ及び各種プログラムを格納するワークエリアを有する。表示部14は、LCDLiquidCrystalDisplay、ELElectroLuminescentディスプレイ等の表示パネルを備える表示部であり、CPU11から入力される表示情報に応じて表示パネルに各種表示を行う。ROM15は、各種データ及び各種プログラムを記憶する読み出し専用の半導体メモリである。ROM15には、スキャンプログラム151が記憶されている。無線通信部16は、携帯電話通信方式の無線通信部である。無線通信部16は、アンテナ、変調部、復調部、信号処理部等を備え、基地局と無線通信を行う。無線通信部16は、送信する情報の信号を、信号処理部で信号処理し、変調部により変調してアンテナから無線電波として基地局に送信する。この基地局は、通信先の機器と通信ネットワークを介して接続されている。また、無線通信部16は、アンテナにより基地局から受信した無線電波の受信信号を復調部により復調し、信号処理部で信号処理して受信情報を得る。このようにして、無線通信部16は、基地局を介して、通信先の機器と通信を行う。また、無線通信部16は、無線LANLocalAreaNetwork方式の無線通信部とし、アクセスポイントを介して、通信先の機器と通信を行うこととしてもよい。フラッシュメモリ17は、情報を読み出し及び書き込み可能に記憶する不揮発性の半導体メモリである。スキャナ部18は、CPU11の制御信号に従い、一次元のバーコードをスキャンして、バーコードのイメージデータを取得し、そのイメージデータをCPU11に出力するレーザスキャナ部である。図2に示すように、スキャナ部18は、発光部181と、バイブレーションミラー182と、受光部183と、ゲイン回路184と、二値化回路185と、を備える。発光部181は、レーザ光Lを発光して出射する。バイブレーションミラー182は、CPU11の制御信号に従い、モータ図示略等によりバイブレートされることにより、発光部181から出射されたレーザ光Lを反射して左右に広げる。受光部183は、バイブレーションミラー182により反射されたレーザ光Lが実際に読み取り対象物バーコードに当たった反射光を受光して電気信号に変換するモジュールである。ゲイン回路184は、受光部183で受光した反射光の電気信号を増幅して波形を最適化する。二値化回路185は、ゲイン回路184で最適化された電気信号をバーコードのイメージデータとしての二値データに変換してCPU11に出力する。CPU11は、二値化回路185から入力されたイメージデータをデコードする。報知部19は、CPU11の制御に応じて、ブザー音を出力する報知部である。報知部19は、バーコードスキャンが成功した場合に、ブザー音出力するよう制御される。電源部20は、リチウム電池等の二次電池であり、スキャナ装置10の各部に電源供給を行う。次に、図3~図9を参照して、スキャナ装置10の動作を説明する。図3に、スキャン処理を示す。図4に、スキャン処理の初期化処理を示す。図5に、バーコードBに関する全イメージデータ幅T、データ不安定範囲T1、データ不安定及び安定範囲T2、バーコード開始位置Pos1を示す。図6に、スキャン処理のバーコード開始位置解析処理を示す。図7に、バーコードBに関する1キャラクタのデータ幅Char、キャラクタ開始位置Pos、左端からキャラクタ開始位置Posまでのデータ幅Sumを示す。図8に、スキャン処理のデータ不安定範囲判定処理を示す。図9に、スキャン処理の4値化処理を示す。スキャナ装置10で実行されるスキャン処理は、読み取り対象のバーコードをスキャンして情報を読み取る処理である。予め、ユーザにより、スキャナ部18のレーザ光の出射方向に、読み取り対象のバーコードが合わせられるように、スキャナ装置10の位置及び姿勢が調整される。より具体的には、スキャナ部18のレーザ光の振れ幅の方向が、バーコードの長手方向に合わせられる。ここでは、バーコードに含まれる各キャラクタが6本のエレメント3本の黒バー及び3本の白スペースで構成される規格であるCode128のバーコードを読み取る例を説明する。しかし、これに限定されるものではなく、バーコードに含まれる各キャラクタがCode128以外の6本のエレメントからなる規格や、各キャラクタが6以外の本数のエレメントからなる規格のバーコードを読み取る構成としてもよい。スキャナ装置10において、ユーザにより操作部12のバーコードスキャンのトリガボタンが押下されたことをトリガとして、CPU11は、ROM15から読み出されて適宜RAM13に展開されたスキャンプログラム151との協働で、スキャン処理を実行する。CPU11は、スキャン処理の開始とともに、タイマのカウントを開始する。先ず、CPU11は、タイマのカウント値に応じて、スキャン処理開始から予め設定された所定時間を経過してタイムアウトしたか否かを判別するステップS11。この所定時間は、スキャン処理を終了するためのタイムアウトの時間である。タイムアウトした場合ステップS11;YES、スキャン処理が終了する。タイムアウトしていない場合ステップS11;NO、CPU11は、スキャナ部18からバーコードのイメージデータの取得を完了するステップS12。イメージデータは、バーコードのイメージの左から右へ並んだ黒バー及び白スペースの各データ幅の配列Dat[0],Dat[1],Dat[2]...を有するものとする。例えば、バーコードの左横の白スペースのデータ幅が配列Dat[0]となり、バーコードの最も左の黒バーのデータ幅が配列Dat[1]となる。そして、CPU11は、ステップS12で取得したバーコードのイメージデータについて、初期化処理を行うステップS13。ここで、図4及び図5を参照して、ステップS13の初期化処理を説明する。先ず、CPU11は、イメージデータのデータ幅の変数Tに0を設定し、ループカウンタiに0を設定するステップS131。そして、CPU11は、ループカウンタiが、ステップS12で取得したイメージデータの黒バー及び白スペースの本数DatNumより小さいか否かを判別するステップS132。i<DatNumである場合ステップS132;YES、CPU11は、変数Tに配列Dat[i]を加算して新たな変数Tを算出し、ループカウンタiを1インクリメントしステップS133、ステップS132に移行される。i≧DatNumである場合ステップS132;NO、CPU11は、変数Tに、予め設定された定数aを乗算して、データ不安定範囲のデータ幅T1を算出するステップS134。そして、CPU11は、変数Tに、予め設定された定数bを用いた1-bを乗算して、データ不安定及び安定範囲のデータ幅T2を算出しステップS135、初期化処理を終了する。図5に示すように、ステップS134の時点で、変数Tは、ステップS12で取得されたイメージデータの全イメージデータ幅Tとなる。バーコードBは、ステップS12でのイメージデータ読み取り対象のバーコードとする。また、レーザ光の振れ幅の軌跡L1は、スキャナ部18から出射されバーコードBを含む紙上に照射されたレーザ光の振れ幅の軌跡である。軌跡L1は、バーコードBの全ての黒バーを横切るようにとられている。また、ステップS12で軌跡L1に対応する長さのイメージデータが取得されている。データ不安定範囲T1は、軌跡L1の左端部分でデコードが不安定になる範囲のデータ幅である。データ不安定及び安定範囲T2は、全イメージデータ長Tから、軌跡L1の右端部分でデコードが不安定になる範囲を除いた範囲のデータ幅である。つまり、不安定範囲及び安定範囲T2は、軌跡L1上におけるデータ不安定範囲T1とデコードが安定するデータ安定範囲との長さである。また、軌跡L1の右端部分のデータ不安定範囲は、T×aの値となる。定数a,bは、それぞれ、レーザ光の振れ幅の軌跡L1全体に対するデータ不安定範囲の割合を表す値で、0~1.00の間の値となる。また、定数a,bは、スキャナ部18スキャナ装置10の光学的特性とレーザ光の振れのスピード特性とに応じて決定される値で、予めスキャンプログラム151に記憶させる含まれる値となる。レーザ光の振れのスピード特性とは、スキャナ部18のレーザ光の振れ幅において、バーコード上のレーザ光の振れのスピードが一定にならない特性である。より具体的には、例えば左から右へレーザ光が振れる場合に、バーコード上のレーザ光の振れのスピードは、加速→安定→減速のように変化する。このため、レーザ光の振れ幅の両端において、イメージデータの黒バー及び白スペースのデータ幅の比率誤差が大きくなるおそれがある。図3に戻り、ステップS13の実行後、CPU11は、バーコード開始位置解析処理を実行するステップS14。ここで、図6を参照して、ステップS14のバーコード開始位置解析処理を説明する。先ず、CPU11は、バーコード開始位置の変数Pos1を1に設定するステップS141。そして、CPU11は、変数Sumに配列Dat[0]を設定するステップS142。変数Sumは、イメージデータのうち、左端から変数Pos1の黒バー又は白スペースの1つ左の黒バー又は白スペースまでの幅の値の変数である。そして、CPU11は、変数Pos11が本数DatNumより小さいか否かを判別するステップS143。ステップS143では、変数Pos11がイメージデータのバーコードの右端を超えておらず正常か、同じく超えており異常かが判別されている。Pos11<DatNumである場合ステップS143;YES、正常であり、CPU11は、配列Dat[Pos11]×10が配列Dat[Pos1-1]より小さいか否かを判別するステップS144。ステップS144では、配列Dat[Pos11]の10倍の値が、これと同じ色で左隣の配列Dat[Pos1-1]より小さく、その同じ色で左隣の配列Dat[Pos1-1]がイメージデータのバーコードの左隣の大きな白スペース部分であるか否かが判別されている。Dat[Pos11]×10≧Dat[Pos1-1]である場合ステップS144;NO、配列Dat[Pos1-1]が大きな白スペース部分でなく、CPU11は、変数Sumに配列Dat[Pos1]を加算して新たな変数Sumを算出するステップS145。そして、CPU11は、変数Pos1を1インクリメントしステップS146、ステップS143に移行される。Dat[Pos11]×10<Dat[Pos1-1]である場合ステップS144;YES、配列Dat[Pos1-1]が大きな白スペース部分であり、CPU11は、キャラクタ開始位置の変数Posに、バーコード開始位置である変数Pos1を設定するステップS147。図7に示すように、変数Posは、後述するデータ不安定範囲判定処理において、バーコード開始位置Pos1から右側に移動させるキャラクタ開始位置の変数となる。そして、CPU11は、バーコード開始位置を検出した旨を設定しステップS148、バーコード開始位置解析処理を終了する。Pos11≧DatNumである場合ステップS143;NO、異常であり、CPU11は、バーコード開始位置を未検出の旨を設定しステップS149、バーコード開始位置解析処理を終了する。図3に戻り、ステップS14の実行後、CPU11は、ステップS14ステップS148,S149での設定結果に基づいて、バーコード開始位置を検出したか否かを判別するステップS15。バーコード開始位置を検出した場合ステップS15;YES、CPU11は、変数Pos6の値が本数DatNumより小さいか否かを判別するステップS16。ステップS16で加算する6は、バーコードの1キャラクタ分の黒バー及び白スペースの数である。Pos6<DatNumである場合ステップS16;YES、CPU11は、データ不安定範囲判定処理を実行するステップS17。ここで、図8を参照して、ステップS17のデータ不安定範囲判定処理を説明する。先ず、CPU11は、配列Dat[Pos],Dat[Pos1],Dat[Pos2],Dat[Pos3],Dat[Pos4],Dat[Pos5]を加算して、1キャラクタ分のイメージデータのデータ幅の変数Charを算出するステップS171。そして、CPU11は、変数Sumが、データ不安定範囲T1よりも小さいか否かを判別するステップS172。図7に示すように、変数Sumは、イメージデータのうち、左端から変数Posの黒バー又は白スペースの左隣の黒バー又は白スペースまでのデータ幅の変数である。ステップS172では、変数Posのキャラクタを含まないデータ幅の変数Sumが、軌跡L1の左側のデータ不安定範囲T1内にあるか否かが判別されている。Sum≧T1である場合ステップS172;NO、変数Sumがデータ不安定範囲T1外にあると判定される。そして、CPU11は、変数SumにステップS171で算出した変数Charを加算して新たな変数Sumを算出するステップS173。そして、CPU11は、変数Sumが、データ不安定及び安定範囲T2より大きい否かを判別するステップS174。ステップS174では、変数Posのキャラクタを含むデータ幅の変数Sumが、軌跡L1の右側のデータ不安定範囲内にあるか否かが判別されている。T2≧Sumである場合ステップS174;NO、変数Sumが右側のデータ不安定範囲外にあり、CPU11は、現在の変数Posのキャラクタ位置がデータ不安定範囲外データ安定範囲内であるとして判定しステップS175、データ不安定範囲判定処理を終了する。Sum<T1である場合ステップS172;YES、変数Sumがデータ不安定範囲T1内にあり、CPU11は、変数SumにステップS171で算出した変数Charを加算して新たな変数Sumを算出するステップS176。さらに、CPU11は、現在の変数Posのキャラクタ位置がデータ不安定範囲内であるとして判定しステップS177、データ不安定範囲判定処理を終了する。T2<Sumである場合ステップS174;YES、変数Sumが右側のデータ不安定範囲内にあり、ステップS177に移行される。データ不安定範囲判定処理では、変数Posに対応するキャラクタがデータ不安定範囲T1又は右側のデータ不安定範囲に一部でも含まれていれば、当該キャラクタがデータ不安定範囲内にあると判定される。図3に戻り、ステップS17の実行後、CPU11は、ステップS17ステップS175,S176の判定結果に基づいて、イメージデータの1キャラクタ分変数Posに対応する変数Charの分のイメージデータがデータ不安定範囲内にあるか否かを判別するステップS18。イメージデータの1キャラクタ分がデータ不安定範囲内にない場合ステップS18;NO、1キャラクタ分が軌跡L1の中央部分のデータ安定範囲にあり、CPU11は、変数cに0を設定するステップS19。イメージデータの1キャラクタ分がデータ不安定範囲内にある場合ステップS18;YES、CPU11は、変数cに0.25を設定するステップS20。変数cは、黒バー及び白スペースの比率誤差について、どこまで許容するのかを表すパラメータである。変数cが小さいほど誤差を許容してイメージデータの解析を行うことになる。つまり、変数cは、イメージデータのデコードにおける黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度に対応する変数である。そして、CPU11は、4値化判定処理を行うステップS21。ここで、図9を参照して、ステップS21の4値化判定処理を説明する。Code128の規格において、黒バー及び白スペースのデータ幅は、4種類の値太さが設定されている。4値化判定処理は、1キャラクタ分のイメージデータにおいて、閾値及び変数cを用いて、3本の各黒バー及び3本の各白スペースのデータ幅を4種類の値のいずれであるかを判定する処理である。先ず、CPU11は、変数Charを11で除算した値を変数Mとして設定するステップS211。Code128の規格において、1キャラクタ分のイメージデータのデータ幅は、11値で一定である。ステップS211では、1キャラクタ分の変数Charを11値で除算することにより、1値に対応するイメージデータのデータ幅を変数Mとして算出している。そして、CPU11は、変数Mを0.5倍した値を変数B05として設定し、変数Mを1.5倍した値を変数B15として設定し、変数Mを2.5倍した値を変数B25として設定し、変数Mを3.5倍した値を変数B35として設定し、変数Mを4.5倍した値を変数B45として設定するステップS212。変数B05,B15,B25,B35,B45は、順に、1値の0.5、1.5、2.5、3.5、4.5倍に対応するイメージデータのデータ幅の変数である。4値化判定処理において、変数B05,B15,B25,B35,B45は、黒バー及び白スペースのデータ幅を判定する4値化するための閾値として使用される。そして、CPU11は、ループカウンタiに変数Posを設定するステップS213。そして、CPU11は、ループカウンタiが変数Pos6よりも小さいか否かを判別するステップS214。i<Pos6である場合ステップS214;YES、CPU11は、配列Dat[i]が変数B15よりも小さいか否かを判別するステップS215。Dat[i]<B15である場合ステップS215;YES、CPU11は、ループカウンタiに対応する黒バー又は白スペースのデータ幅の4値の配列R[i]に1を設定するステップS216。そして、CPU11は、配列Dat[i]から変数B05を減算した値を変数W1として設定し、変数B15から配列Dat[i]を減算した値を変数W2として設定するステップS217。変数W1は、配列Dat[i]と、配列Dat[i]の左側の閾値変数B05,B15,B25又はB35と、の間の距離の変数である。変数W2は、配列Dat[i]の右側の閾値変数B15,B25,B35又はB45と、配列Dat[i]と、の間の距離の変数である。Dat[i]≧B15である場合ステップS215;NO、CPU11は、配列Dat[i]が変数B25よりも小さいか否かを判別するステップS218。Dat[i]<B25である場合ステップS218;YES、CPU11は、配列R[i]に2を設定するステップS219。そして、CPU11は、配列Dat[i]から変数B15を減算した値を変数W1として設定し、変数B25から配列Dat[i]を減算した値を変数W2として設定するステップS220。Dat[i]≧B25である場合ステップS218;NO、CPU11は、配列Dat[i]が変数B35よりも小さいか否かを判別するステップS221。Dat[i]<B35である場合ステップS221;YES、CPU11は、配列R[i]に3を設定するステップS222。そして、CPU11は、配列Dat[i]から変数B25を減算した値を変数W1として設定し、変数B35から配列Dat[i]を減算した値を変数W2として設定するステップS223。Dat[i]≧B35である場合ステップS221;NO、CPU11は、配列R[i]に4を設定するステップS224。そして、CPU11は、配列Dat[i]から変数B35を減算した値を変数W1として設定し、変数B45から配列Dat[i]を減算した値を変数W2として設定するステップS225。ステップS217,S220,S223,S225の実行後、CPU11は、変数W1が、変数Mに変数cを乗算した値よりも小さいか否かを判別するステップS226。W1≧M×cである場合ステップS226;NO、変数W1配列Dat[i]が許容誤差内にあり、CPU11は、変数W2が、変数Mに変数cを乗算した値よりも小さいか否かを判別するステップS227。W2≧M×cである場合ステップS227;NO、変数W2配列Dat[i]が許容誤差内にあり、CPU11は、ループカウンタiを1インクリメントしステップS228、ステップS214に移行される。W1<M×cである場合ステップS226;YES、CPU11は、変数Posに対応する1キャラクタの黒バー及び白スペースの4値化が失敗した旨を設定しステップS229、4値化処理を終了する。W2<M×cである場合ステップS227;YES、ステップS229に移行される。変数W1,W2が小さい場合、1値と2値との差や、2値と3値との差等、本来異なるレベルとなるべきデータ幅の差異が小さく、比率があいまいになり、誤読の危険性が高くなるため、ステップS229で4値化が失敗した旨が設定されている。i≧Pos6である場合ステップS214;NO、CPU11は、変数Posに対応する1キャラクタの黒バー及び白スペースの4値化が成功した旨を設定しステップS230、4値化処理を終了する。図3に戻り、CPU11は、ステップS21ステップS229,S230の4値化処理の結果に応じて、変数Posに対応する1キャラクタの黒バー及び白スペースの4値化が成功したか否かを判別するステップS22。4値化が成功した場合ステップS22;YES、CPU11は、ステップS21の4値化判定処理で得られたキャラクタの配列R[i]をキャラクタコードに変換するステップS23。そして、CPU11は、ステップS23で変換したキャラクタコードが、バーコードの右端を示すストップコードであるか否かを判別するステップS24。ストップコードでない場合ステップS24;NO、CPU11は、変数Posを6インクリメントしステップS25、ステップS15に移行される。ストップコードである場合ステップS24;YES、CPU11は、ステップS23で変換されたキャラクタコードを用いてチェックデジット等のチェック処理を行い、そのチェック結果に応じて、最終的にデコードが成功したか否かを判別するステップS26。ステップS18~S26が一連のデコード処理となる。デコードが失敗した場合ステップS26;NO、CPU11は、スキャナ部18から次のイメージデータが入力されるのを待ちステップS27、ステップS11に移行される。バーコード開始位置を検出していない場合ステップS15;NO、Pos6≧DatNumである場合ステップS16;NO、又は4値化が失敗した場合ステップS22;NO、ステップS27に移行される。デコードが成功した場合ステップS26;YES、CPU11は、ステップS23で得られたキャラクタコードを含むデコード結果を表示部14に表示し、報知部19にブザー音を出力させステップS28、スキャン処理を終了する。ステップS28において、デコード結果は、例えば、フラッシュメモリ17に記憶される。以上、本実施の形態によれば、スキャナ装置10は、スキャナ部18により取得されたバーコードのイメージデータのうち、レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲以外の中央部分をデータ安定範囲として判定する。そして、スキャナ装置10は、前記判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースの太さを判定するための閾値変数B05,B15,B25,B35,B45に対するイメージデータの誤差の許容度を低く変数cを高く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードする。また、スキャナ装置10は、前記判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く変数cを低く設定通常レベルに設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードする。このため、バーコードのデータ不安定範囲の読み取りの正確性を向上できるとともに、バーコードのデータ安定範囲の読み取りのレスポンスを向上できる。また、スキャナ装置10は、スキャナ部18により取得されたイメージデータのうち、左端から所定の第1の割合変数aのデータ幅と、右端から所定の第2の割合変数bのデータ幅と、をデータ不安定範囲と判定する。このため、スキャナ部18の光学的特性とレーザ光の振れのスピード特性とに応じて変数a,bを設定して、左端及び右端のデータ不安定範囲を判定できる。また、変数a=変数bだけでなく、変数a≠変数bとしても設定できる。また、スキャナ装置10は、スキャナ部18により取得されたイメージデータについて、バーコードの1キャラクタ内の閾値に対するイメージデータの誤差の許容度を同じ値に設定し、データ不安定範囲及びデータ安定範囲の境界上のキャラクタの誤差の許容度を低く設定する。このため、データ不安定範囲及びデータ安定範囲の境界にバラツキが発生しても、境界上のキャラクタの読み取りの正確性を向上することができる。以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてROM15を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ等の不揮発性メモリ、CD-ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ搬送波も本発明に適用される。なお、上記実施の形態における記述は、本発明に係るスキャナ装置及びプログラムの一例であり、これに限定されるものではない。上記実施の形態では、スキャナ装置10がハンディターミナルである構成としたが、これに限定されるものではない。スキャナ装置10としては、レーザ方式のスキャナ部を有するPDAPersonalDigitalAssistant、ECRElectronicCashRegisterに接続されたスキャナ装置等、他のスキャナ装置を用いる構成としてもよい。また、上記実施の形態では、バーコードの1キャラクタ内の誤差の許容度を同じに設定し、データ不安定範囲及びデータ安定範囲の境界上のキャラクタの閾値に対応する誤差の許容度を低く設定することとしたが、これに限定されるものではない。例えば、データ不安定範囲及びデータ安定範囲の境界上のキャラクタの閾値に対応する誤差の許容度を高く設定する構成としてもよい。また、バーコードのエレメント黒バー及び白スペース毎に誤差の許容度を設定する構成としてもよい。また、上記実施の形態におけるスキャナ装置10の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。本発明の実施の形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。付記<請求項1>レーザ光を出射して反射光を受光することによりバーコードをスキャンしてイメージデータを取得するスキャナ部と、前記スキャナ部により取得されたイメージデータのうち、前記レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない部分をデータ安定範囲として判定する判定部と、前記判定部により判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードし、前記判定部により判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードするデコード部と、を備えるスキャナ装置。<請求項2>前記判定部は、前記スキャナ部により取得されたイメージデータのうち、左端から所定の第1の割合のデータ幅と、右端から所定の第2の割合のデータ幅と、を前記データ不安定範囲と判定する請求項1に記載のスキャナ装置。<請求項3>前記デコード部は、前記スキャナ部により取得されたイメージデータについて、前記バーコードの1キャラクタ内の前記誤差の許容度を同じ値に設定し、前記データ不安定範囲及び前記データ安定範囲の境界上のキャラクタの前記誤差の許容度を低く設定する請求項1又は2に記載のスキャナ装置。<請求項4>コンピュータを、レーザ光を出射して反射光を受光することによりバーコードをスキャンしてイメージデータを取得するスキャナ部と、前記スキャナ部により取得されたイメージデータのうち、前記レーザ光の振れ幅の端部分をデータ不安定範囲として判定し、当該データ不安定範囲でない部分をデータ安定範囲として判定する判定部、前記判定部により判定されたデータ不安定範囲について、前記バーコードの黒バー及び白スペースのデータ幅を判定するための閾値に対するイメージデータの誤差の許容度を低く設定し、当該閾値及び許容度を用いて当該データ不安定範囲をデコードし、前記判定部により判定されたデータ安定範囲について、前記閾値に対するイメージデータの誤差の許容度を高く設定し、当該閾値及び許容度を用いて当該データ安定範囲をデコードするデコード部、として機能させるためのプログラム。"