(57)【要約】【課題】  読取領域が比較的狭く、一度に読み取りたい情報を全て収めることが難しい場合でも、複数項目の読取結果の出力を容易に行うことができるようにする。【解決手段】情報の入力書式を複数設定しておき、読取領域内の情報を入力情報として読み取って、読み取った入力情報のうち、設定した上記各入力書式のいずれかに当てはまる入力情報から、該入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として読取結果テーブルに登録し（Ｓ１４〜Ｓ１６）、読取結果テーブルに必須の項目全てについて読取結果が登録されている場合に（Ｓ１９）、その登録した読取結果を読み出して所定の出力先装置へ出力するようにした（Ｓ２０，Ｓ２１）。【選択図】        図３
2013179436.tif 000002
【特許請求の範囲】
【請求項１】
読取領域内の情報を入力情報として読み取る読取手段と、
情報の入力書式を設定する入力設定手段と、
前記読取手段が読み取った入力情報のうち、前記入力設定手段が設定した各入力書式のいずれかに当てはまる入力情報から、該入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する登録手段と、
前記登録手段により必須の項目全てについて読取結果が登録されている場合に、前記登録手段が登録した読取結果を前記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手段とを備えることを特徴とする読取装置。
【請求項２】
請求項１に記載の読取装置であって、
前記第１の出力手段による読取結果の出力書式を設定する出力設定手段と、
前記第１の出力手段がどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、前記出力設定手段が設定した出力書式に基づき特定する出力項目特定手段とを備え、
前記第１の出力手段は、前記登録手段が登録した読取結果のうち前記出力項目特定手段が特定した項目の読取結果を、前記出力設定手段が設定した出力書式に従った書式の情報として出力する手段であることを特徴とする読取装置。
【請求項３】
請求項２に記載の読取装置であって、
前記登録手段は、前記入力情報から取り出した情報を、項目毎に前記入力書式に基づき特定される識別情報を付して登録する手段であることを特徴とする読取装置。
【請求項４】
請求項３に記載の読取装置であって、
前記入力書式は、前記入力情報から前記１以上の項目の情報を取り出してそれぞれに前記識別情報を付すための第１のアルゴリズムの情報を含み、
前記登録手段は、該情報が示す第１のアルゴリズムに従って、前記入力情報から前記１以上の項目の情報を取り出すことを特徴とする読取装置。
【請求項５】
請求項２乃至４のいずれか一項に記載の読取装置であって、
前記出力書式は、前記出力項目特定手段が特定した項目の読取結果から、前記出力設定手段が設定した出力書式に従った書式の情報を生成するための第２のアルゴリズムの情報を含み、
前記第１の出力手段は、該情報が示す第２のアルゴリズムに従って、前記所定の出力先装置へ出力する情報を生成することを特徴とする読取装置。
【請求項６】
請求項５に記載の読取装置であって、
前記入力書式及び前記出力書式の設定によらず、前記記憶手段に、前記登録手段による前記読取結果の登録先として、項目の識別情報と該項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手段を備え、
前記出力書式は、前記項目の識別情報により、前記第１の出力手段が登録結果を出力する項目及び必須の項目を特定する情報を含み、
前記第１の出力手段は、前記所定の記憶領域から、前記出力書式により特定される識別情報が示す項目の読取結果を、出力のために読み出すことを特徴とする読取装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の読取装置であって、
前記登録手段がまだ読取結果を登録していない項目について新たに読取結果を登録する度にその旨の通知を行う通知手段を備えることを特徴とする読取装置。
【請求項８】
請求項１乃至７のいずれか一項に記載の読取装置であって、
前記読取手段が読み取った入力情報が、前記入力設定手段が設定した入力書式のいずれにも当てはまらない場合に、該入力情報を前記所定の出力先装置へ出力する第２の出力手段を備えることを特徴とする読取装置。
【請求項９】
プロセッサ又はプロセッサに制御されるハードウェアが、
読取領域内の情報を入力情報として読み取る読取手順と、
情報の入力書式を設定する入力設定手順と、
前記読取手順で読み取った入力情報のうち、前記入力設定手順で設定した各入力書式のいずれかに当てはまる入力情報から、該入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する登録手順と、
前記登録手順により必須の項目全てについて読取結果が登録されている場合に、前記登録手順で登録した読取結果を前記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手順とを実行することを特徴とする読取結果出力方法。
【請求項１０】
請求項９に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記第１の出力手順による読取結果の出力書式を設定する出力設定手順と、
前記第１の出力手順でどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、前記出力設定手順で設定した出力書式に基づき特定する出力項目特定手順とを実行し、
前記第１の出力手順は、前記登録手順で登録した読取結果のうち前記出力項目特定手順で特定した項目の読取結果を、前記出力設定手順で設定した出力書式に従った書式の情報として出力する手順であることを特徴とする読取結果出力方法。
【請求項１１】
請求項１０に記載の読取結果出力方法であって、
前記登録手順は、前記入力情報から取り出した情報を、項目毎に前記入力書式に基づき特定される識別情報を付して登録する手順であることを特徴とする読取結果出力方法。
【請求項１２】
請求項１１に記載の読取結果出力方法であって、
前記入力書式は、前記入力情報から前記１以上の項目の情報を取り出してそれぞれに前記識別情報を付すための第１のアルゴリズムの情報を含み、
前記登録手順では、該情報が示す第１のアルゴリズムに従って、前記入力情報から前記１以上の項目の情報を取り出すことを特徴とする読取結果出力方法。
【請求項１３】
請求項１０乃至１２のいずれか一項に記載の読取結果出力方法であって、
前記出力書式は、前記出力項目特定手段が特定した項目の読取結果から、前記出力設定手順で設定した出力書式に従った書式の情報を生成するための第２のアルゴリズムの情報を含み、
前記第１の出力手順では、該情報が示す第２のアルゴリズムに従って、前記所定の出力先装置へ出力する情報を生成することを特徴とする読取結果出力方法。
【請求項１４】
請求項１３に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記入力書式及び前記出力書式の設定によらず、前記記憶手段に、前記登録手順による前記読取結果の登録先として、項目の識別情報と該項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手順を実行し、
前記出力書式は、前記項目の識別情報により、前記第１の出力手順で登録結果を出力する項目及び必須の項目を特定する情報を含み、
前記第１の出力手順では、前記所定の記憶領域から、前記出力書式により特定される識別情報が示す項目の読取結果を、出力のために読み出すことを特徴とする読取結果出力方法。
【請求項１５】
請求項９乃至１４のいずれか一項に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記登録手順でまだ読取結果を登録していない項目について新たに読取結果を登録する度にその旨の通知を行う通知手順を実行することを特徴とする読取結果出力方法。
【請求項１６】
請求項９乃至１５のいずれか一項に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記読取手順で読み取った入力情報が、前記入力設定手順で設定した入力書式のいずれにも当てはまらない場合に、該入力情報を前記所定の出力先装置へ出力する第２の出力手順を実行することを特徴とする読取結果出力方法。
【請求項１７】
コンピュータに、読取領域内の情報を入力情報として読み取る読取手段を備える読取装置を制御させて、請求項１乃至８のいずれか一項に記載の読取装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、読取領域内の情報を入力情報として読み取り、その読取結果を出力する読取装置及び読取結果出力方法、並びにコンピュータにこのような読取装置を制御させるためのプログラムに関する。
【背景技術】
【０００２】
従来から、バーコードや２次元コード等のコード記号の画像を読み取り、その読取結果をコンピュータ等の外部装置に出力する読取装置が知られている。このような読取装置において、図３８に示すような複数のコード記号を一括して読み取り、それらの読取結果を一括して出力できるようにする技術も知られている。
このような技術に関連する文献としては、例えば以下の特許文献１が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４０５８４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来知られている一括読み取りの技術では、読取結果を正しく出力するためには、図３８に符号Ｘで示すように、読み取り対象の全てのコードを一度に読取領域に収める必要があった。読取領域を撮像した画像をデコードしても、予め設定されている全てのコードについて正しく読取結果が得られない場合、読み取りエラーとして、デコード結果を廃棄していたためである。
従って、図３８に符号Ｙ及び符号Ｚで示すように、読取領域に読み取り対象のコード記号の一部しか収められなかった場合、読取結果の出力を得ることはできなかった。【０００５】
しかしながら、例え手持ち式の読取装置でエイミング機能を備えていたとしても、読取装置がその読取領域に目的の全てのコード記号を収めるように対象物に対する向きや距離を調整することは、注意深い操作が必要となる。従って、作業効率の低下を招くという問題があった。【０００６】
また、固定式の読取装置で、読取対象物が読取領域内を移動する場合には、読取領域に目的の全てのコード記号が収まるタイミングで撮像を行えるようなタイミング調整が難しいという問題があった。また、この問題に対処するために読取領域を広げたり撮像頻度を高めたりすれば、それだけデコード処理負荷の増加に繋がるという問題もあった。
このような問題は、読み取るべき情報がコード記号以外のものである場合にも、同様に発生するものである。【０００７】
この発明は、このような背景に鑑みてなされたものであり、読取領域内の情報を入力情報として読み取り、その読取結果を出力する場合において、読取領域が比較的狭く、一度に読み取りたい情報を全て収めることが難しい場合でも、複数項目の読取結果の出力を容易に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、この発明の読取装置は、読取領域内の情報を入力情報として読み取る読取手段と、情報の入力書式を設定する入力設定手段と、上記読取手段が読み取った入力情報のうち、上記入力設定手段が設定した各入力書式のいずれかに当てはまる入力情報から、その入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する登録手段と、上記登録手段により必須の項目全てについて読取結果が登録されている場合に、上記登録手段が登録した読取結果を上記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手段とを設けたものである。【０００９】
このような読取装置において、上記第１の出力手段による読取結果の出力書式を設定する出力設定手段と、上記第１の出力手段がどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、上記出力設定手段が設定した出力書式に基づき特定する出力項目特定手段とを設け、上記第１の出力手段を、上記登録手段が登録した読取結果のうち上記出力項目特定手段が特定した項目の読取結果を、上記出力設定手段が設定した出力書式に従った書式の情報として出力する手段とするとよい。【００１０】
さらに、上記登録手段を、上記入力情報から取り出した情報を、項目毎に上記入力書式に基づき特定される識別情報を付して登録する手段とするとよい。
さらに、上記入力書式を、上記入力情報から上記１以上の項目の情報を取り出してそれぞれに上記識別情報を付すための第１のアルゴリズムの情報を含むものとし、上記登録手段が、その情報が示す第１のアルゴリズムに従って、上記入力情報から上記１以上の項目の情報を取り出すようにするとよい。
さらに、上記出力書式を、上記出力項目特定手段が特定した項目の読取結果から、上記出力設定手段が設定した出力書式に従った書式の情報を生成するための第２のアルゴリズムの情報を含むものとし、上記第１の出力手段が、該情報が示す第２のアルゴリズムに従って、上記所定の出力先装置へ出力する情報を生成するようにするとよい。【００１１】
さらにまた、上記入力書式及び上記出力書式の設定によらず、上記記憶手段に、上記登録手段による上記読取結果の登録先として、項目の識別情報とその項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手段を設け、上記出力書式に、上記項目の識別情報により、上記第１の出力手段が登録結果を出力する項目及び必須の項目を特定する情報を含め、上記第１の出力手段が、上記所定の記憶領域から、上記出力書式により特定される識別情報が示す項目の読取結果を、出力のために読み出すようにするとよい。【００１２】
また、上記の各読取装置において、上記登録手段がまだ読取結果を登録していない項目について新たに読取結果を登録する度にその旨の通知を行う通知手段を設けるとよい。
さらに、上記読取手段が読み取った入力情報が、上記入力設定手段が設定した入力書式のいずれにも当てはまらない場合に、その入力情報を上記所定の出力先装置へ出力する第２の出力手段を設けるとよい。【００１３】
さらに、上記入力設定手段に、上記入力書式を、外部から入力された情報に基づき設定する手段を設けるとよい。
さらに、上記出力設定手段に、上記出力書式を、外部から入力された情報に基づき設定する手段を設けるとよい。
また、この発明は、装置として実現する他、システム、方法、プログラム、媒体等、任意の形式で実現することができる。
【発明の効果】
【００１４】
以上のようなこの発明の読取装置によれば、読取領域内の情報を入力情報として読み取り、その読取結果を出力する場合において、読取領域が比較的狭く、一度に読み取りたい情報を全て収めることが難しい場合でも、複数項目の読取結果の出力を容易に行うことができるようにすることができる。
【図面の簡単な説明】
【００１５】
【図１】この発明の読取装置の一実施形態の概略ハードウェア構成を示す図である。
【図２】その読取装置における読取領域について説明するための図である。
【図３】図１に示した制御回路のＣＰＵが実行する読取結果の出力のための処理のフローチャートである。
【図４】読取結果テーブルの例を示す図である。
【図５】第１の例で読み取るコード記号の例を示す図である。
【図６】第１の例において用いる入力書式を示す図である。
【図７】図６に示した入力書式の別の記載例を示す図である。
【図８】第１の例でＩＤ＝０の入力書式と対応する照合処理の例を示す図である。
【図９】同じくＩＤ＝１の入力書式と対応する照合処理の例を示す図である。
【図１０】第１の例における読取結果テーブルへの読取結果の登録例を示す図である。
【図１１】その別の例を示す図である。
【図１２】第１の例において用いる出力書式を示す図である。
【図１３】図１２に示した出力書式が設定されている場合の登録判定処理の例を示す図である。
【図１４】同じく出力データ生成処理の例を示す図である。
【図１５】図１４の処理により生成される出力データの例を示す図である。
【図１６】第２の例で読み取るコード記号の例を示す図である。
【図１７】第２の例において用いる入力書式を示す図である。
【図１８】図１７に示した入力書式と対応する照合処理の例を示す図である。
【図１９】第２の例における読取結果テーブルへの読取結果の登録例を示す図である。
【図２０】第２の例において用いる出力書式を示す図である。
【図２１】図２０の処理により生成される出力データの例を示す図である。
【図２２Ａ】第３の例で読み取るコード記号の例を示す図である。
【図２２Ｂ】その別の例を示す図である。
【図２２Ｃ】そのさらに別の例を示す図である。
【図２３】アプリケーション識別子を用いた情報の記載フォーマットを示すテーブルの例を示す図である。
【図２４】第３の例において用いる入力書式を示す図である。
【図２５】第３の例でＩＤ＝２の入力書式と対応する照合処理の例を示す図である。
【図２６】第３の例における読取結果テーブルへの読取結果の登録例を示す図である。
【図２７】その別の例を示す図である。
【図２８】第３の例において用いる出力書式を示す図である。
【図２９】図２８に示した出力書式が設定されている場合の登録判定処理の例を示す図である。
【図３０】同じく出力データ生成処理の例を示す図である。
【図３１】図３０の処理により生成される出力データの例を示す図である。
【図３２】第４の例において用いる入力書式を示す図である。
【図３３】図３２に示した入力書式と対応する照合処理の例を示す図である。
【図３４】第４の例における読取結果テーブルへの読取結果の登録例を示す図である。
【図３５】その別の例を示す図である。
【図３６】第４の例において用いる出力書式を示す図である。
【図３７】その別の例を示す図である。
【図３８】従来の一括読取の問題点について説明するための図である。
【発明を実施するための形態】
【００１６】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
まず図１に、この発明の読取装置の一実施形態の概略ハードウェア構成を示す。
この読取装置１００は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールが配列されたコード記号を読み取る装置であり、光学ヘッド部１１０、デコーダ部１２０、パネル基板１３１、インジケータ１３２、ブザー１３３を有する。これらに加え、ユーザの操作を受け付けるためのボタン等の操作部も有するが、その図示は省略する。なお、コード記号の形式は任意であり、１次元のバーコードや、２次元バーコード、ＱＲコード（登録商標、以下同様）等、デコーダ部１２０の設定に応じて任意の形式のコードを読み取り可能である。
【００１７】
また、光学ヘッド部１１０は、レンズ１１１、固体撮像素子の一例であるＣＭＯＳ (Complementary Metal Oxide Semiconductor)イメージセンサ（以下単に「ＣＭＯＳ」という)１１２、投光ＬＥＤ（発光ダイオード）１１３及びエイミング光学系１１４を備える。
レンズ１１１は例えば光学レンズであり、読取対象物の画像を光学ヘッド部１１０に取り入れ、ＣＭＯＳ１１２の撮像エリア上に結像させるためのものである。
【００１８】
ＣＭＯＳ１１２は、レンズ１１１が取り入れた読取対象物（コード記号を含むと想定される）からの反射光により、読取対象物を撮像し、その撮像で得たアナログの画像信号からデジタルの輝度値で表現される画像データを生成してデコーダ部１２０に出力する。
投光ＬＥＤ１１３は、照射する光により読取対象物を照明して、ＣＭＯＳ１１２により鮮明な画像を撮像できるようにするための照明手段である。ただし、装置の構造によってはＬＥＤ１１３は設けなくてもよい。
【００１９】
エイミング光学系１１４は、ＣＭＯＳ１１２により撮像可能な範囲、すなわちコード記号の読取領域の目印を、読取対象物への光の照射により表示する照射手段である。具体的には、読取範囲の中心、四隅、周囲等に可視光のビームを照射したり、これらの位置をビームにより走査したりする。
【００２０】
なお、読取装置１００の読取領域は、図２に模式的に符号１５０で示すように、レンズ１１１の光軸を中心に広がる、ＣＭＯＳ１１２の撮像エリア内に読取対象物からの反射光を結像させることのできる範囲である。読み取りたいコード記号１６０がこの読取領域内に収まっていれば、その画像を撮像してデコードし、読み取ることができる。
読取領域の広さは、読取装置１００から読取対象物までの距離や、相対的な向きなどにより変化する。
【００２１】
次に、デコーダ部１２０は、第１入出力インタフェース（第１Ｉ／Ｏ）１２１，制御回路１２２，ＲＡＭ１２３，不揮発メモリ１２４，第２入出力インタフェース（第２Ｉ／Ｏ）１２５を備える。
このうち第１Ｉ／Ｏ１２１は、光学ヘッド部１１０とデコーダ部１２０との間で、制御信号やＣＭＯＳ１１２が出力する画像データなどを送受信するためのインタフェースである。
【００２２】
制御回路１２２は、ＣＭＯＳ１１２及びＬＥＤ１１３の制御、ＣＭＯＳ１１２から第１Ｉ／Ｏ１２１を介して入力される読取対象物の画像データに対し、ノイズ除去のためのフィルタ処理や、デコード準備のためのデータ加工処理、加工後の画像データに基づくコード記号のデコード処理、デコード後の読取結果の蓄積、加工及び出力処理等を行う。ハードウェアとしては、ＡＳＩＣ（Application Specific Integrated Circuit）やＣＰＵにより構成することができる。なお、デコード処理の詳細については、例えば特開２００５−２５４１７号公報に記載の手法など、公知の任意の手法を採用すればよい。また、デコード後の読取結果の蓄積、加工及び出力処理は、この実施形態の特徴に係る処理であり、この処理の内容については後に詳述する。
【００２３】
ＲＡＭ１２３は、ＣＭＯＳ１１２から入力される画像データを一時的に記憶したり、デコード準備のためのデータ加工処理の際にワークメモリとして用いたり、デコード後の読取結果を一時的に蓄積したり、その他読取装置１００の動作に必要なデータなど動的に変更するデータを記憶したりする記憶手段である。一部を不揮発性としてもよい。
【００２４】
不揮発メモリ１２４は、読取装置１００を起動させるプログラムや、制御回路１２２のＣＰＵに実行させるためのプログラムなどを記憶する不揮発性の記憶手段である。また、読取装置１００においては、デコード後の読取結果の蓄積、加工及び出力処理に関するアルゴリズムをユーザが任意に設定できるようにしており、この設定も、不揮発メモリ１２４に記憶させる。
第２Ｉ／Ｏ１２５は、不図示のホストコンピュータ等の外部装置とデータ通信を行うためのインタフェースであり、制御回路１２２によるデコード及び加工後の読取結果を第２Ｉ／Ｏ１２５を介して外部装置に出力することができる。また、制御回路１２２からの制御信号をパネル基板１３１へ送信するためのインタフェースも備える。
【００２５】
パネル基板１３１は、読取装置１００のユーザインタフェースとなる操作パネル（必ずしもパネル状でなくてもよい）を制御するための基板である。
インジケータ１３２は、制御回路１２２による制御に基づきＬＥＤランプ等により読取装置１００の動作状態を視覚的にユーザに通知するための表示手段である。
ブザー１３３は、制御回路１２２による制御に基づき音により読取装置１００の動作状態をユーザに通知するための音声出力手段である。
【００２６】
次に、以上のような構成を有する読取装置１００において、制御回路１２２のＣＰＵが、読取結果の出力のために実行する処理について説明する。
図３は、制御回路１２２のＣＰＵが実行する読取結果の出力のための処理のフローチャートである。この処理は、主として複数項目の読取結果を一括して出力する一括出力のために実行するものである。
制御回路１２２のＣＰＵは、外部装置からの信号あるいはユーザの操作等により、コード記号の読み取り開始を指示されると、図３のフローチャートに示す処理を開始する。
【００２７】
そしてまず、ＣＭＯＳ１１２が読取領域を撮像して得た１フレームの画像を取得して処理対象画像とする（Ｓ１１）。次に、処理対象画像中の未デコードのコード記号を１つデコードする（Ｓ１２）。このデコードの手法は、上述の通り公知のものを適宜採用すればよい。また、処理対象画像中に複数のコード記号が含まれる場合でも、それらの中でのデコードの順序は任意である。すなわち、画像のサーチで最初に発見したものから順番にデコードする等、自動で定めて構わない。
【００２８】
そして、ステップＳ１２でのデコードが成功した場合（Ｓ１３のＹｅｓ）、そのデコード結果に基づく読取結果の登録に関する処理を行うべく、ステップＳ１４以下の処理（入力処理Ｓｉｎ）に進む。
この部分の処理ではまず、デコード結果が設定されている入力書式のいずれかを満たすか否か判断する（Ｓ１４）。入力書式は例えば図６に示すようなものであり、複数項目の読取結果を一括出力するために設定するものであるが、この点については後述する。
【００２９】
そして、ステップＳ１４でＹｅｓであれば、デコード結果から該当の入力書式により指定された１又は複数の箇所を取り出し（Ｓ１５）、取り出した各箇所に、入力書式に基づいて定めたそれぞれ異なるＩＤを付して、そのＩＤの項目の読取結果として読取結果テーブルに登録する（Ｓ１６）。読取結果テーブルは例えば図４に示すものであるが、その内容やＩＤについては後述する。
【００３０】
なお、ステップＳ１５の取り出し処理と、ステップＳ１６の登録処理と、ステップＳ１４の判断とは、別々の処理として行ってもよいが、一つの処理としてまとめて行うようにしてもよい。例えば、デコード結果の文字列に対し、先頭から順に、入力書式の設定が示すアルゴリズムに従って所定箇所を取り出し、必要に応じて加工を行って読取結果テーブルへ登録する処理を行っていき、これが末尾まで正常に行えた場合に、デコード結果は入力書式を満たしていた、と判断する等である。入力書式を満たしていない場合には、それが判明した時点で、そこまでに読取結果テーブルに登録した文字列を削除すればよい。
このようにしても、別々に処理を行う場合と同様な結果を得ることができる。
【００３１】
なお、ステップＳ１４でＮｏの場合、制御回路１２２のＣＰＵは、今回デコードしたコード記号は一括出力の対象となるものでないと判断する。そこで、このような場合に単独出力を行う旨の設定がなされているか否か判断する（Ｓ２４）。そして、なされていれば、デコード結果を第２Ｉ／Ｏ１２５から接続先の外部装置へ出力する（Ｓ２５）。その後、読取結果テーブルに登録されている読取結果をクリアして（Ｓ２２）、ステップＳ１１へ戻り処理を繰り返す。
【００３２】
この処理により、特に動作モードを切り替えなくても、一括出力の対象外のコード記号については、読取結果をそのまま出力することができ、この点で高い操作性を得ることができる。
また、ステップＳ２４でＮｏの場合には、一括出力に関する処理を続けるため、ステップＳ１１に戻って処理を繰り返す。
【００３３】
一方、ステップＳ１６の後は、制御回路１２２のＣＰＵは、読取結果テーブルに新たな項目のデータを登録したか否か判断する（Ｓ１７）。そして、これがＹｅｓであれば、新たな項目のデータを読み取った旨を、所定の通知先へ通知する（Ｓ１８）。通知の手法としては、通知先がユーザである場合には、読取装置１００が備える不図示のスピーカにより確認音を鳴らしたり、不図示のランプを点灯や点滅させたりすることが考えられる。また、通知先が装置である場合には、その装置に対して所定のデータを送信することが考えられる。
なお、ステップＳ１７の判断において、既に読取結果の登録されている項目にそれまでと異なる値を登録した場合にもＹｅｓと判断するようにするとよい。
【００３４】
ステップＳ１７でＮｏの場合あるいはステップＳ１８の通知を行った後は、読取結果の出力に関するステップＳ１９以下の処理（出力処理Ｓｏｕｔ）へ進む。
この部分の処理において、制御回路１２２のＣＰＵはまず、設定されている出力書式が示す必須項目のデータが全て読取結果テーブルに登録されているか否か判断する（Ｓ１９）。出力書式は例えば図１２に示すようなものであり、複数項目の読取結果を一括出力するために設定するものであるが、この点については後述する。
【００３５】
そして、ステップＳ１９でＹｅｓであれば、設定されている出力書式に従い、読取結果テーブルから必要な項目の読取結果を読み出して加工し、出力データを生成する（Ｓ２０）。その後、生成した出力データを、第２Ｉ／Ｏ１２５から接続先の外部装置へ出力する（Ｓ２１）。
以上で複数項目の読取結果の一括出力に関する一連の処理は完了である。そこで、次の出力に関する処理を行うべく、読取結果テーブルに登録されている読取結果をクリアして（Ｓ２２）、ステップＳ１１へ戻り処理を繰り返す。
【００３６】
また、ステップＳ１９でＮｏの場合、まだ必須項目の読取結果が揃っていない旨を、所定の通知先へ通知する（Ｓ２３）。この通知の手法は、ステップＳ１８の場合と同様でよい。また、ステップＳ１８の通知と同時に行うようにしたり、両方の意味を合わせた１つの通知を行うようにしたりしてもよい。
ステップＳ２３の後は、ステップＳ１２に戻って処理を繰り返す。この場合、同じ処理対象画像中で未デコードのコード記号があれば、それをデコードすることになる。また、もしこのようなコード記号がない場合、ステップＳ１３でＮｏとなり、ステップＳ１１に戻って、次のフレームの画像を取得して処理対象とし、処理を繰り返す。
【００３７】
以上の処理において、ステップＳ１４乃至Ｓ１６では、制御回路１２２のＣＰＵが登録手段として機能する。ステップＳ１９乃至Ｓ２１では、同ＣＰＵが第１の出力手段として機能する。ステップＳ１８では、同ＣＰＵが通知手段として機能する。ステップＳ２５では、同ＣＰＵが第２の出力手段として機能する。
【００３８】
以下、図３の処理に従った読取結果の登録及び出力の処理について、具体例を用いてより詳細に説明する。
まず、図４に、読取結果テーブルの例を示す。
図４に示す読取結果テーブルは、読取結果の項目を特定するための３種のＩＤと、そのＩＤが示す項目の読取結果とを登録するためのテーブルであり、ＲＡＭ１２３に設ける。このテーブルのデータ形式は、読取装置１００のファームウェアにより定めておき、入力処理Ｓｉｎや出力処理Ｓｏｕｔのアルゴリズムによらず、一定の形式のものを用いる。
【００３９】
このようにすれば、入力処理Ｓｉｎや出力処理Ｓｏｕｔのアルゴリズムを設定するための入力書式及び出力書式の記述において、データ形式の定義を行う必要がない。従って、あまり知識のないユーザが入力書式及び出力書式を作成する場合でも、比較的簡単に書式を作成することができる。
また、設定の不備等により、読取結果テーブルのサイズが過大となることも防止できる。読取装置１００においてメモリ容量の制約が大きい場合、登録可能な読取結果の個数や、格納可能な読取結果の最大容量を、予め定めておくようにしてもよい。
【００４０】
読取結果テーブルに登録する３種のＩＤは、全て読取結果の項目を特定するための識別情報であり、図４の例では入力書式ＩＤ、括弧ＩＤ及び取出ＩＤとしている。
これらのうち入力書式ＩＤは、ステップＳ１４でデコード結果が満たした入力書式のＩＤである。
【００４１】
括弧ＩＤは、詳細については第２の例及び第３の例において後述するが、入力書式中の、文字の取り出しを指示する括弧のＩＤである。読取装置１００においては、１つの入力書式に複数個の取り出し指示を含めることができるが、括弧ＩＤは、取り出した各文字列が、どの指示により取り出したものかを区別するためのＩＤである。なお、この括弧ＩＤの欄は、第３の例で説明するアプリケーションＩＤを登録する場合にも用いることができる。
【００４２】
取出ＩＤは、詳細については第２の例及び第３の例において後述するが、同じ入力書式の同じ括弧に係る取り出し指示に従って複数回の取り出しを行う場合に、取り出した各文字列が、当該指示により何度目に取り出したものかを区別するためのＩＤである。
【００４３】
以下の説明及び図面において、特に断らない限り、読取結果の項目を特定するためのＩＤは、入力書式ＩＤ、括弧ＩＤ、取出ＩＤの順で、「[1,2,3]」のように表記する。
読取結果の欄には、入力書式に従ってデコード結果から取り出された文字列を、そのまま、あるいは入力書式により加工が指示されている場合にはその加工を行って登録する。
【００４４】
〔第１の例：図５乃至図１５〕
次に、読取結果の登録及び出力の第１の例について説明する。
この第１の例は、図５に示すような、４つのバーコード記号で表される情報を出力する例である。なお、コード記号の下に示した文字列は、そのコード記号をデコードして得られる文字列を示す。他の図についても同様である。
【００４５】
図６に、第１の例においてデコード結果の照合及び読取結果の登録に用いる入力書式を示す。
読取装置１００においては、図６に示す通り、入力書式は、一般的な正規表現に一部機能を追加した書式を用いて記述するようにしている。また、複数の入力書式を登録可能である。また、図６の例では、図５に示した４つのバーコード記号それぞれと対応する入力書式を用意している。入力書式ＩＤは、そのそれぞれの入力書式を区別するためのＩＤであり、図４に示した読取結果テーブルにおいて読取結果の項目を特定するためのＩＤとしても用いる。
【００４６】
そして、入力書式ＩＤ＝０の入力書式において、「\SB」は、デコード結果がＪＡＮコードの形式であることを示す記号である。この記号は、デコード結果の形式を示すものであり、デコード結果に特定の文字が含まれることを示すものではない。次の「4」は、何ら修飾がなく、半角数字の「4」そのものを示す。次の「[0-9]」は、いずれかの半角数字を示し、「{12}」は、{}の中に記載した回数だけ直前の文字を繰り返すことを示す。「$」は文字列終端を示す。
【００４７】
従って、この入力書式は、ＪＡＮコードで、半角数字の「4」の後に半角数字１２文字のみが記載されている、という書式を示すものである。これは、図５の左上のコード記号と対応する書式である。
【００４８】
次のＩＤ＝１の入力書式において、「\ST」は、デコード結果がＣｏｄｅ１２８の形式であることを示す記号である。この記号も、デコード結果の形式を示すものであり、デコード結果に特定の文字が含まれることを示すものではない。また、「"-"」は、読取結果を読取結果テーブルに登録する際に、""の中に記載した文字をデコード結果に追加することを示す。その他の記号は、ＩＤ＝０の入力書式について述べたものと同様である。
【００４９】
従って、この入力書式は、Ｃｏｄｅ１２８で、半角数字で６文字、２文字、６文字、１文字の計１５文字のみが記載されている、という書式を示すものである。また、読取結果を登録する際に、６文字目、８文字目及び１４文字目の後ろに、それぞれ「-」を挿入することを示すものである。これは、図５の右上のコード記号と対応する書式である。
【００５０】
次のＩＤ＝２の入力書式において、「<L>」は、<>内に記載した文字は、デコード結果には含まれているが、読取結果を読取結果テーブルに登録する際には、その文字を削除することを示す。また、「[0-9A-Z]」は、いずれかの半角数字又は半角英大文字を示す。その他の記号は、ＩＤ＝０の入力書式について述べたものと同様である。
【００５１】
従って、この入力書式は、Ｃｏｄｅ１２８で、「L」の後に、半角数字又は半角英大文字８文字のみが記載されている、という書式を示すものである。また、読取結果を登録する際に、初めの「L」を削除することを示すものである。これは、図５の左下のコード記号と対応する書式である。
【００５２】
ＩＤ＝３の入力書式において用いている記号も同様な意味であり、この入力書式は、Ｃｏｄｅ１２８で、「S」の後に、半角数字又は半角英大文字１４文字のみが記載されている、という書式を示すものである。また、読取結果を登録する際に、初めの「S」を削除することを示すものである。これは、図５の右下のコード記号と対応する書式である。
【００５３】
なお、以上の４つの入力書式において、文字の取り出しを指示する括弧は登場していない。しかし、削除を指定されていない文字については、括弧ＩＤ＝０かつ取出ＩＤ＝０の項目の読取結果として読取結果テーブルに登録することを指示しているものとする。これは、文字の取り出しを指示する括弧がある場合でも同様である。すなわち、この場合も、デコード結果から括弧に従って取り出した部分を、括弧と対応する括弧ＩＤの項目の読取結果として登録すると同時に、デコード結果全体のうち削除を指定されていない文字を、括弧ＩＤ＝０かつ取出ＩＤ＝０の読取結果として登録する。
【００５４】
以上のような入力書式は、図７で示すように、「/」で区切って複数並べて記載することもできる。この場合、並べられた書式のうちいずれか１つを満たせば、デコード結果が入力書式を満たす、という判断となる。
ただし、説明を簡単にするため、読取装置１００においては、このように「/」で区切られた入力書式が設定された場合、その区切られた１つ１つの入力書式に対してそれぞれ入力書式ＩＤを付し、個別に照合を行うようにしている。
【００５５】
また、読取装置１００は、所定の入力設定モードが選択された状態で、図７に示したような入力書式の文字列をコード化したコード記号を読み取った場合、その文字列に従って入力書式を設定する機能を備えている。「/」で区切られた入力書式が設定された場合には、各々の入力書式に対して自動で入力書式ＩＤを付し、図６に示す形式でそれらを登録する。なお、入力書式ＩＤを付す順は、初めに記載されたものから昇順とする等、予め決めておくことが好ましい。出力データの生成の際に所望の項目を選択するために指定すべき入力書式ＩＤを把握できるようにするためである。
【００５６】
以上の機能により、読取装置１００を操作するユーザは、図５に示したような読み取り対象のコード記号を読み取る場合とほぼ同じ操作により、入力書式の文字列をコード化したコード記号を読み取るだけで、入力書式の設定を行うことができる。
なお、この設定は、外部装置からのデータ送信によって行うことができるようにしてもよい。
【００５７】
次に、デコード記号と入力書式との照合処理について説明する。
図３に示した処理のうち入力処理Ｓｉｎにおいて、制御回路１２２のＣＰＵは、設定されている全ての入力書式について、デコード結果と入力書式との照合処理を行う。図６のような入力書式が設定されている場合、ＩＤ＝０からＩＤ＝３の入力書式について、順次照合処理を行うことになる。
【００５８】
ここで、図８に、入力書式ＩＤ＝０の入力書式について行う照合処理の例を示す。
この処理のアルゴリズムは、入力書式が設定されたとき、あるいは入力書式に基づいて図３の処理を実行するときなど、適当なタイミングで、制御回路１２２のＣＰＵが所定のファームウェアを実行することにより入力書式の文字列を解釈して、自動的に生成するものである。以降の例の照合処理についても同様である。また、図８の処理は、照合と並行して、デコード結果からの読取結果の取り出しと、読取結果テーブルへの登録を行う処理である。
【００５９】
図８の処理において、制御回路１２２のＣＰＵはまず、デコード結果がＪＡＮコードの書式を満たしているか否か判断する（Ｓ３１）。
ここでＹｅｓであれば、変数ｉの値を１に設定する（Ｓ３２）と共に、デコード結果のｉ文字目（ここでは１文字目）が半角数字の「4」であるか否か判断する（Ｓ３３）。これがＹｅｓであれば、ここまではデコード結果が入力書式を満たしていると判断し、ｉ文字目（ここでは１文字目）を、ＩＤが[0,0,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ３４）。ここで用いる項目のＩＤについて、入力書式ＩＤ＝０は、照合に用いた入力書式のＩＤに従って定めたものであり、括弧ＩＤ＝０と取出ＩＤ＝０については、図６の説明で述べた通りである。
【００６０】
なお、読取結果テーブルに[0,0,0]の項目がなければ、新たにその項目を追加する。また、既に[0,0,0]の項目に確定した読取結果が登録されていれば、その読取結果を削除して、新たに記録を行う。ただし、ここで削除した読取結果は、後で復元できるように適当なメモリに待避させておくとよい。
【００６１】
次に、制御回路１２２のＣＰＵは、ｉの値をインクリメントしつつ（Ｓ３５，Ｓ３８）、デコード結果のｉ文字目が半角数字である場合にはその文字をＩＤが[0,0,0]の項目の読取結果として読取結果テーブルに記録する処理（Ｓ３６，Ｓ３７）を、ｉが２から１３まで繰り返す。すなわち、「4」の後ろに半角数字が１２文字あることを確認する。ｉは処理中の文字の位置を示すポインタとして機能する。
【００６２】
そして、１３文字目の処理が終了すると、ｉの値が１４になるので、ステップＳ３９でＮｏとなり、ｉ文字目（１４文字目）がデータ終端であるか否か判断する（Ｓ４０）。
これがＹｅｓであれば、デコード結果はＩＤ＝０の入力書式を満たすことがわかるので、ここまでに読取結果テーブルの各項目（ここでは[0,0,0]のみ）に記録した文字を、読取結果として確定させ（Ｓ４１）、ＩＤ＝０の入力書式に関する照合処理を終了する。
【００６３】
一方、ステップＳ３１、Ｓ３３、Ｓ３６及びＳ４０のいずれかでＮｏの場合、デコード結果がＩＤ＝０の入力書式を満たさないことがわかる。そこで、ここまでの処理（図８の処理）で読取結果テーブルの各項目（ここでは[0,0,0]のみ）に記録した文字をクリアして（Ｓ４２）、ＩＤ＝０の入力書式に関する照合処理を終了する。なお、ここまでの処理で読取結果テーブルへの項目の追加を行っている場合には、その項目自体を削除する。また、確定した読取結果の削除を行っている場合には、これを復元する。
【００６４】
また、ステップＳ４２に進んだ場合は、次にＩＤ＝１の入力書式に関する照合処理に進む。しかし、この実施形態では、デコード結果が２以上の入力書式を同時に満たすことはないことを前提とし、ステップＳ４１に進んだ場合は、他の入力書式に関する照合処理は行わない。ただし、デコード結果が２以上の入力書式を同時に満たすこともあり得るとし、ステップＳ４１に進んだ場合でも他の入力書式に関する照合処理をさらに行う構成も、採り得る。
【００６５】
次に、図９に、入力書式ＩＤ＝１の入力書式について行う照合処理の例を示す。
図９の処理において、制御回路１２２のＣＰＵはまず、デコード結果がＣｏｄｅ１２８の書式を満たしているか否か判断する（Ｓ５１）。
ここでＹｅｓであれば、変数ｉの値を１に設定する（Ｓ５２）と共に、ｉの値をインクリメントしつつ（Ｓ５５）、デコード結果のｉ文字目が半角数字である場合にはその文字をＩＤが[1,0,0]の項目の読取結果として読取結果テーブルに記録する処理（Ｓ５３，Ｓ５４）を、ｉが１から６まで繰り返す。すなわち、デコード結果の先頭６文字が半角数字であることを確認する（Ｓ５６）。項目のＩＤについては、入力書式ＩＤが１である点以外は、図８の場合と同様である。
【００６６】
次に、入力書式中の「"-"」と対応して、「-」をＩＤが[1,0,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ５７）。
次に、ステップＳ５３乃至Ｓ５６の場合と同様、ｉ＝７及び８について、デコード結果のｉ文字目が半角数字である場合にはその文字をＩＤが[1,0,0]の項目の読取結果として読取結果テーブルに記録する処理を行う（Ｓ５８〜Ｓ６１）。すなわち、デコード結果の７文字目及び８文字目が半角数字であることを確認する。
【００６７】
その後、制御回路１２２のＣＰＵはさらに、ステップＳ５７と同様な「-」の記録（Ｓ６２）、９文字目から１４文字目の確認と記録（Ｓ６３〜Ｓ６６）、「-」の記録（Ｓ６７）、および１５文字目の確認と記録（Ｓ６８〜Ｓ７０）を行う。
その後、１６文字目がデータ終端であることが確認できると（Ｓ７１：この時点でｉ＝１６）、デコード結果はＩＤ＝１の入力書式を満たすことがわかるので、ここまでに読取結果テーブルの各項目（ここでは[1,0,0]のみ）に記録した文字を、読取結果として確定させ（Ｓ７２）、ＩＤ＝１の入力書式に関する照合処理を終了する。
【００６８】
一方、ステップＳ５１、Ｓ５３、Ｓ５８、Ｓ６３、Ｓ６８及びＳ７１のいずれかでＮｏの場合、デコード結果がＩＤ＝１の入力書式を満たさないことがわかる。そこで、図８のステップＳ４２の場合と同様に、ここまでの処理（図９の処理）で読取結果テーブルの各項目（ここでは[1,0,0]のみ）に記録した文字をクリアして（Ｓ７３）、ＩＤ＝１の入力書式に関する照合処理を終了する。
【００６９】
以下、ＩＤ＝２及び３の入力書式についての照合処理を順次行うが、その詳細についての説明は省略する。
いずれにせよ、制御回路１２２のＣＰＵは、図６に示した入力書式が設定されている場合、図３のステップＳ１４乃至Ｓ１６の処理として、ステップＳ１２で得られたデコード結果の文字列に対し、ＩＤ＝０〜３の入力書式に関する照合処理を順次行う。そして、その結果、デコード結果が満たす入力書式に基づいて取り出した情報を、入力書式に基づいて特定したＩＤを持つ項目の読取結果として、読取結果テーブルに登録することができる。
【００７０】
そして、この登録は、デコードしたコード記号１つ１つについて個別に行うため、図５に符号Ｙ及びＺで示すように、読み取るべきコード記号を一度に全て読取領域に収めることができない場合でも、読取領域内に収まっているコード記号について、読取結果を登録することができる。
【００７１】
例えば、制御回路１２２のＣＰＵが図３のステップＳ１１で、符号Ｙで示す読取領域の画像を取得した場合、上側のコード記号のデコード結果はＩＤ＝０の入力書式を満たし、下側のコード記号のデコード結果はＩＤ＝２の入力書式を満たす。従って、読取結果テーブルに、図１０に示す状態でこれらのコード記号の読取結果を登録することができる。
【００７２】
次に、符号Ｚで示す読取領域の画像を取得した場合、上側のコード記号のデコード結果はＩＤ＝１の入力書式を満たし、下側のコード記号のデコード結果はＩＤ＝３の入力書式を満たす。従って、これらのコード記号に関する読取結果を図１０に示した状態に追加して、図１１に示す状態で読取結果を登録することができる。
従って、読み取るべきコード記号を一度に全て読取領域に収めることができない場合でも、複数の読取領域における読取結果を合わせて、出力に必要な読取結果を揃えることができる。
【００７３】
次に、図１２に、第１の例においてデコード結果の出力に用いる出力書式を示す。
読取装置１００においては、出力書式には、出力データに含める固定の文字列、出力データに含める読取結果の項目の指定、及び特殊記号を記載することができる。
図１２に示した例において、[]で囲まれた３つ組のＩＤが、出力データに含める読取結果の項目の指定である。該当の箇所に、３つ組のＩＤで示される項目の読取結果として読取結果テーブルに登録されている文字列を配置することを示す。例えば、読取結果テーブルが図１１に示す状態の場合、出力書式に[0,0,0]と記載された位置には、「4123456789018」の文字列を配置することになる。
【００７４】
また、読取結果の項目を指定するデータは、読取装置１００がどの項目の読取結果を出力し、またそのいずれが必須の項目であるかを定めるデータでもある。例えば、出力書式に[0,0,0]と記載されていれば、読取装置１００はＩＤが[0,0,0]の項目の読取結果を出力し、また[0,0,0]の項目は必ず出力に含めるべき必須の項目であることがわかる。
出力に含まれる可能性はあるが必須ではない項目もあり得るが、この点については第３及び第４の例で説明する。
また、図１２に示した例において、「\x0D」は、改行コードを示す特殊記号である。
【００７５】
以上の出力書式は、入力書式の場合と同様な手法により、設定することができる。
すなわち、読取装置１００は、所定の出力設定モードが選択された状態で、図１２に示したような出力書式の文字列をコード化したコード記号を読み取った場合、その文字列に従って出力書式を設定する機能を備えている。
ここでは示していないが、入力書式の場合と同様、「/」で区切られた出力書式の設定が指示された場合には、各々の出力書式に対して自動で出力書式ＩＤを付し、図６と同様な形式でそれらを登録する。ただし、同時に使える出力書式は１つのみであり、複数の出力書式が設定された場合には、そのうち１つを、ユーザからの指示により使用する出力書式として選択する。
【００７６】
以上の機能により、読取装置１００を操作するユーザは、図５に示したような読み取り対象のコード記号を読み取る場合とほぼ同じ操作により、出力書式の文字列をコード化したコード記号を読み取るだけで、出力書式の設定を行うことができる。
なお、この設定や使用する出力書式の選択は、外部装置からのデータ送信によって行うことができるようにしてもよい。
また、入力書式と出力書式を繋げた文字列を１つのコード記号としてコード化し、これを読取装置１００に読み取らせて、入力書式と出力書式をまとめて設定させることができる。この場合、「/」で区切られた文字列のうち最初又は最後の１つを出力書式とするように予め規則を定めておいたり、各書式に、当該書式が入力書式であるか出力書式であるかを示す識別子を付したりして、これらを区別できるようにすることが考えられる。
【００７７】
次に、以上の出力書式を用いた出力処理について説明する。
図３に示した処理のうち出力処理Ｓｏｕｔにおいて、制御回路１２２のＣＰＵは、設定されている出力書式に基づいて、ステップＳ１９及びＳ２０の処理を行う。これらの処理のアルゴリズムは、出力書式が設定されたとき、あるいは出力書式に基づいて図３の処理を実行するときなど、適当なタイミングで、制御回路１２２のＣＰＵが所定のファームウェアを実行することにより出力書式の文字列を解釈して、自動的に生成するものである。以降の例の場合についても同様である。
なお、以下に示す例は、ステップＳ１９の処理とステップＳ２０の処理とを別々に行う場合の例である。
【００７８】
まず、図１３に、図１２に示した出力書式が設定されている場合の、ステップＳ１９と対応する登録判定処理のフローチャートを示す。
図１３の処理において、制御回路１２２のＣＰＵは、出力書式に基づいて必須と認識する、ＩＤが[0,0,0]、[1,0,0]、[2,0,0]、[3,0,0]の各項目について、当該項目の読取結果が読取結果テーブルに登録されているか否かをそれぞれ判断する（Ｓ８１〜Ｓ８４）。
【００７９】
そして、全て登録されていれば、必須項目のデータが全て読取結果テーブルに登録されていると判断し（Ｓ８５）、処理を終了する。この場合、図３のステップＳ１９の判断はＹｅｓとなる。一方、１つでも登録されていなければ、必須項目のデータが揃っていないと判断し（Ｓ８６）、処理を終了する。この場合、図３のステップＳ１９の判断はＮｏとなる。
【００８０】
図３からわかるように、図１３の処理がステップＳ８５に進んだ場合のみ、次のステップＳ２０と対応する処理に進む。
図１４に、図１２に示した出力書式が設定されている場合の、ステップＳ２０と対応する出力データ生成処理のフローチャートを示す。この処理は、出力データが空白の状態からスタートする。
【００８１】
図１４の処理において、制御回路１２２のＣＰＵはまず、出力書式の先頭にある「商品コード:」の文字列を、出力データに追加する（Ｓ１０１）。次に、出力書式のうちステップＳ１０１で追加した文字列の次に記載されている読取結果の指定に対応して、読取結果テーブルに登録されている、ＩＤが[0,0,0]の項目の読取結果の文字列を、出力データに追加する（Ｓ１０２）。次に、その後ろの特殊記号「\x0D」に対応して、改行コードを出力データに追加する（Ｓ１０３）。
【００８２】
その後も、出力書式に記載されている順に、「IMEI:」の文字列（Ｓ１０４）、[1,0,0]の項目の読取結果の文字列（Ｓ１０５）、改行コード（Ｓ１０６）、「Lot No:」の文字列（Ｓ１０７）、[2,0,0]の項目の読取結果の文字列（Ｓ１０８）、改行コード（Ｓ１０９）、「Serial No:」の文字列（Ｓ１１０）、[3,0,0]の項目の読取結果の文字列（Ｓ１１１）、および改行コード（Ｓ１１２）を、順次出力データに追加して、処理を終了する。
【００８３】
以上の図１３及び図１４に示した処理のアルゴリズムを生成する制御回路１２２のＣＰＵが、出力項目特定手段として機能する。
また、読取結果テーブルが図１１に示す状態の場合、以上により生成される出力データは、図１５に示すものとなる。すなわち、出力を予定している項目のデータをコードするコード記号を一度に読取領域内に収められない場合でも、複数回に分けて必要なデータを読み取ることができれば、それらの読取結果を合わせて、予定している全ての項目の読取結果を含む出力データを生成することができる。
【００８４】
制御回路１２２のＣＰＵは、この出力データを、図３のステップＳ２１の処理により、所定の外部装置へ出力する。この出力は、ＲＳ−２３２ＣやＵＳＢ（Universal Serial Bus）やBluetooth（登録商標）等を用いて双方向通信によって行ってもよいし、ＵＳＢ−ＨＩＤ（Human Interface Device）やKeyboard Wedgeなどを用いて読取装置１００から外部装置へ一方的に情報を送信するのみの単方向通信によって行ってもよい。
【００８５】
〔第２の例：図１６乃至図２１〕
次に、読取結果の登録及び出力の第２の例について説明する。
この第２の例は、図１６に示すような、１つの２次元バーコード記号で表される情報を出力する例である。また、１つの入力書式に従い、複数項目の読取結果の取り出しを行う例である。
【００８６】
なお、この例では説明を簡単にするために２次元バーコード記号を１つのみとし、これに対応して入力書式を１つのみ設定しているが、２次元バーコード記号複数で表される情報を出力することとし、それらに対応して入力書式を複数設定することも、当然可能である。
【００８７】
図１７に、第２の例においてデコード結果の照合及び読取結果の登録に用いる入力書式を示す。
この入力書式において、まず、丸括弧「()」は、図４で説明した、文字の取り出しを指示する括弧である。すなわち、括弧内の記載に該当する箇所の文字列を、括弧の出現順に応じた括弧ＩＤを有する項目の読取結果として登録する旨の指定である。ただし、「(?:)」のように、括弧内の文字列の先頭に「?:」がある場合、文字列の取り出し及び登録は行わない。従って、図１７に示す入力書式中で、実際に文字の取り出しを指示する括弧は、符号Ａで示す部分のみである。
【００８８】
なお、いずれの場合も、括弧内の文字列は、以下の繰り返し等を考慮する際に、ひとかたまりの文字列とみなす。
また、符号Ａで示す括弧内の、「.」は、任意の１文字を、「*」は、直前の文字の０回以上の繰り返しを、「?」は、直前の文字の０又は１回の繰り返しを示す。さらに、符号Ｂで示す括弧内の、「,」は、特殊な意味はなく半角カンマという文字を、「|」は、その前後のいずれかが含まれていればよいということ（オア）を、「$」はデータ終端を示す。末尾の「+」は、直前の文字の１回以上の繰り返しを示す。
【００８９】
以上から、図１７に示した入力書式のうち符号Ｂで示す部分は、カンマ又はデータ終端を示し、符号Ａで示す部分は、そのカンマ又はデータ終端で区切られた任意の文字数（０でも可）の文字列を示す。そして、末尾の「+」により、これらのかたまりが１以上あることを示す。
【００９０】
すなわち、図１７に示した入力書式は、デコード結果が、カンマで区切られた任意の数（１でもよい）の文字列であることを示す（カンマがない場合、全体として１つの文字列と認識する）。また、符号Ａの部分の括弧により、その各文字列を、括弧ＩＤが１の項目の読取結果として取り出すことを示す。さらに、その括弧に従って１度目に取り出した文字列（先頭の文字列）は取出ＩＤ＝０、次に取り出した文字列は取出ＩＤ＝１、というように文字列ごとに項目に昇順で取出ＩＤを付すことも示す。
【００９１】
次に、デコード記号と入力書式との照合処理について説明する。
図１８に、図１７に示した入力書式と対応する照合処理の例を示す。
図１８の処理において、制御回路１２２のＣＰＵはまず、変数ｉの値を１に、変数ｊの値を０にそれぞれ設定する（Ｓ１３１）。ｉは処理中の文字の位置を示すポインタとして機能する。
【００９２】
次に、デコード結果のｉ文字目がカンマ又はデータ終端であるか否か判断する（Ｓ１３２）。いずれでもなければ、そのｉ文字目を、ＩＤが[0,1,j]の項目の読取結果として読取結果テーブルに記録する（Ｓ１３３）。項目のＩＤについて、入力書式ＩＤ＝０は、照合に用いた入力書式のＩＤに従って定めたものであり、括弧ＩＤ＝１は、該当文字の取り出しを指定する入力書式中の括弧の位置に従って定めたものであり、取出ＩＤ＝ｊは、取り出しの回数に従って定めたものである。
【００９３】
また、ｉ文字目は、ＩＤが[0,0,0]の項目の読取結果としても読取結果テーブルに記録する（Ｓ１３４）。これは、括弧による取り出しと関係なく、デコード結果全体を登録するためのものである。
以上の後、ｉの値をインクリメントして（Ｓ１３５）、ステップＳ１３２に戻り、処理を繰り返す。
【００９４】
また、ステップＳ１３２でＹｅｓの場合も、ｉ文字目がデータ終端でなければ（Ｓ１３６でＮｏ）、すなわちカンマであれば、ｉ文字目（すなわちカンマ）をＩＤが[0,0,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ１３７）。そして、ｉ及びｊの値をインクリメントして（Ｓ１３８）、ステップＳ１３２に戻り、処理を繰り返す。この場合、ステップＳ１３３において文字を記録する項目のＩＤが変化するため、以後の文字列は、それまでの文字列と異なる項目の読取結果として登録することになる。
【００９５】
そして、処理がデータ終端まで到達してステップＳ１３６でＹｅｓとなると、デコード結果がＩＤ＝０の入力書式を満たすと判断し、ここまでに読取結果テーブルの各項目に記録した文字を、読取結果として確定させ（Ｓ１３９）、照合処理を終了する。
図１８の処理においては、デコード結果に含まれているカンマで区切られた文字列を、それぞれ異なる項目の読取結果として登録することができる。すなわち、１つの入力書式に従い、複数項目の情報を取り出して、その項目の読取結果として登録することができる。
【００９６】
なお、図１７に示した入力書式の場合、デコード結果がいかなる文字列であっても入力書式を満たすので、入力書式を満たさない場合の処理は設けていない。
また、図１６に示したコード記号を読み取って図１８に示した照合処理を行った場合、読取結果テーブルへの登録結果は、図１９に示すようになる。図１６に示したコード記号には、カンマで区切られた文字列が４つ含まれるため、そのそれぞれが、ＩＤが[0,1,0-3]の項目の読取結果として登録される。また、デコード結果そのものが、ＩＤが[0,0,0]の項目の読取結果として登録される。なお、[0,0,0]への登録は、<>による除外や""による挿入が指定されていればその影響は受ける。
【００９７】
次に、図２０に、第２の例においてデコード結果の出力に用いる出力書式を示す。
この出力書式についても、記載形式は図１２に示したものと同様である。そして、制御回路１２２のＣＰＵは、この出力書式に基づき、図３のステップＳ１９及びＳ２０の処理と対応するアルゴリズムを生成する。
【００９８】
その内容をフローチャートで示すことは省略するが、概要は以下の通りである。
まず、ステップＳ１９と対応する登録判定処理においては、[0,1,0]、[0,1,1]、[0,1,2]、[0,1,3]の各項目が必須項目であるとする。
ステップＳ２０と対応する出力データ生成処理においては、「POST:」の文字列、[0,1,0]の項目の読取結果の文字列、改行コード、[0,1,1]の項目の読取結果の文字列、改行コード、「TEL:」の文字列、[0,1,2]の項目の読取結果の文字列、改行コード、「FAX:」の文字列、[0,1,3]の項目の読取結果の文字列、および改行コードを、この順で含む出力データを生成する。
【００９９】
[0,0,0]の項目の読取結果については、登録は行うが、出力データの生成には使用しない。
読取結果テーブルが図１９に示す状態の場合、以上により生成される出力データは、図２１に示すものとなる。その出力方式は、第１の例の場合と同様である。
【０１００】
〔第３の例：図２２Ａ乃至図３１〕
次に、読取結果の登録及び出力の第３の例について説明する。
この第３の例は、出力すべき情報を示すコード記号が図２２Ａ乃至図２２Ｃに示すように場合によって異なる形式である場合の例である。また、読取結果の項目の特定に、括弧ＩＤに代えてアプリケーション識別子（ＡＩ）を用いる例である。
【０１０１】
アプリケーション識別子とは、ＧＳ１という機関が定義した、商品情報の記載フォーマットで用いる識別子である。このフォーマットでは、図２３に示すように、コード記号で表現したい情報の内容毎に、アプリケーション識別子と、当該情報の記載に用いる文字種及び桁数が規定されている。
そして、使用するフォーマットについて図２３に示すようなアプリケーション識別子毎のデータの記載形式を示すテーブルを不揮発メモリ１２４に記憶させておけば、制御回路１２２のＣＰＵは、コード記号をデコードして得た文字列にどのような情報がどのような記載形式で含まれているかを、当該テーブルと、文字列に含まれるアプリケーション識別子とに基づき把握することができる。
【０１０２】
ここで、図２４に、第３の例においてデコード結果の照合及び読取結果の登録に用いる入力書式を示す。
この第３の例においては、これらの入力書式も、上述のアプリケーション識別子を利用して記載している。具体的には、「\A」に続く半角数字２文字により、当該アプリケーション識別子で示されるデータがデコード結果に含まれるべきことを示している。例えば、「\A01」は、アプリケーション識別子が「０１」のデータを示す。
【０１０３】
また、「\s80」は、可変長データの末尾を示す「<FNC1>」という特殊文字を示す。この特殊文字は、図２２Ａ乃至２１Ｃに示すコード記号の下側には記載していない。
「$」がデータ終端を示すことは、第１及び第２の例の場合と同様である。
【０１０４】
以上に基づけば、ＩＤ＝０の入力書式は、アプリケーション識別子が「０１」、「１７」、「３０」、「１０」のデータがそれぞれこの順で並ぶことを示す。また、アプリケーション識別子が「３０」のデータは可変長であるので、末端に<FNC1>が来る。アプリケーション識別子が「１０」のデータも可変長であるが、これは文字列全体の末端に位置するため、可変長データの末尾は、データ終端により示すことができ、<FNC1>は用いない。
【０１０５】
また、データの特定にアプリケーション識別子を用いる場合、アプリケーション識別子の記載は、当該アプリケーション識別子と対応するデータ部分の文字列を取り出し、その文字列を読取結果として読取結果テーブルに登録することも示す。この場合、項目を特定するＩＤは、括弧ＩＤとしてそのアプリケーション識別子を用い、取出ＩＤは０とする。入力書式ＩＤは、照合に用いている入力書式のＩＤに従う。
なお、この例では括弧ＩＤとしてアプリケーション識別子を用いているが、アプリケーション識別子については先頭に「ＡＩ」を付すようにすれば、同じ「括弧ＩＤ」の項目を、第１及び第２の例におけるような括弧ＩＤとアプリケーション識別子とで共用することができる。アプリケーション識別子が「０１」の場合には「ＡＩ０１」と記載する等である。
【０１０６】
次に、ＩＤ＝１の入力書式は、アプリケーション識別子が「０１」のデータのみが含まれることを示す。
ＩＤ＝２の入力書式は、アプリケーション識別子が「１７」、「３０」、「１０」のデータがそれぞれこの順で並ぶことを示す。
【０１０７】
ところで、詳しくは出力書式の説明で述べるが、第３の例は、アプリケーション識別子が「０１」、「１７」、「３０」及び「１０」のデータを出力する例である。
そして、ＩＤ＝０の入力書式は、これらの全てのデータが１つのコード記号に記載されていることを想定した書式である。ただし、制御回路１２２においてデコード可能な形式であれば、コード記号の形式は問わない。図２２Ａに示すようなバーコードであっても、図２２Ｃに示すような２次元コードであっても、デコード結果の文字列さえ得られれば、同じように入力書式と照合することができる。
【０１０８】
また、ＩＤ＝１及びＩＤ＝２の入力書式は、出力すべきデータが図２２Ｂに示すように複数のコード記号に分散して記載されていることを想定した書式である。ＩＤ＝１の入力書式は下側のコード記号と対応し、ＩＤ＝２の書式は上側のコード記号と対応する。
この第３の例においても、制御回路１２２のＣＰＵは、入力処理Ｓｉｎにおいて、設定されている全ての入力書式について順次照合処理を行う。
従って、図２２Ａあるいは図２２Ｃに示すコード記号を読み取った場合には、ＩＤ＝０の入力書式を満たすと判断し、１度の読み取りで、必要な４つの項目の読取結果が揃うことになる。
【０１０９】
一方、図２２Ｂの下側に示すコード記号を読み取った場合には、ＩＤ＝１の入力書式を満たすと判断し、アプリケーション識別子が「０１」の項目の読取結果のみ登録する。しかし、その後図２２Ｂの上側に示すコード記号を読み取れば、ＩＤ＝２の入力書式を満たすと判断し、残り３つの項目の読取結果を登録し、必要な４つの項目の読取結果が揃うことになる。もちろん、一度の読み取りで図２２Ｂに示す２つのコード記号の双方が読取領域に収まっていれば、デコード結果との照合は個別に行うものの、１フレームの画像データにより、必要な４つの項目の読取結果が揃う。
そして、読取結果を１つのコード記号から得たか、２つのコード記号から得たかによらず、同じ出力を行うことができる。
【０１１０】
ここで、図２５に、第３の例におけるデコード記号と入力書式との照合処理について説明する。図２５には、代表としてＩＤ＝２の入力書式と対応する処理を示し、他の入力書式と対応する処理については図示及び詳細な説明を省略する。
なお、制御回路１２２のＣＰＵは、図２５に示すアルゴリズムを生成する際には、図２３に示したテーブルも参照する。
【０１１１】
図２５の処理において、制御回路１２２のＣＰＵはまず、初めの２文字が「17」であるか否か判断する（Ｓ１５１）。これは、先頭にアプリケーション識別子が「１７」のデータがあることを示す記載と対応する処理である。
そして、これがＹｅｓであれば、その「17」を、ＩＤが[2,0,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ１５２）。これは、アプリケーション識別子による取り出しと関係なく、デコード結果全体を登録するためのものである。
【０１１２】
その後、制御回路１２２のＣＰＵは、デコード結果において初めの２文字の次に６文字の数字が続くか否か判断する（Ｓ１５３）。これは、図２３のテーブルに、アプリケーション識別子が「１７」は、６桁の数字である旨が登録されていることと対応する処理である。
【０１１３】
そして、これがＹｅｓであれば、アプリケーション識別子が「１７」のデータが正しく含まれていたことがわかるので、その６文字の数字を、ＩＤが[2,AI17,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ１５４）。また、ＩＤが[2,0,0]の項目の読取結果としても記録する（Ｓ１５５）。なお、ステップＳ１５４で用いる２番目のＩＤ「AI17」は、アプリケーション識別子である１７に、当該文字列がアプリケーション識別子であることを示す符号として「AI」を付したものである。このようにしておけば、括弧ＩＤの項目に登録されているＩＤが、括弧ＩＤそのものであるのかアプリケーション識別子であるのかを、容易に識別することができる。
【０１１４】
以下、同様に、アプリケーション識別子が「３０」のデータに関する処理（Ｓ１５６〜Ｓ１６０）と、プリケーション識別子が「１０」のデータに関する処理（Ｓ１６１〜Ｓ１６５）を実行する。なお、ステップＳ１５９では<FNC1>は記録しない。
そして、処理がステップＳ１６５まで終わると、デコード結果がＩＤ＝２の入力書式を満たすと判断し、ここまでの処理で読取結果テーブルの各項目に記録した文字を読取結果として確定させ（Ｓ１６６）、処理を終了する。
【０１１５】
一方、ステップＳ１５１、Ｓ１５３、Ｓ１５６、Ｓ１５８、Ｓ１６１及びＳ１６３のいずれかでＮｏの場合、デコード結果がＩＤ＝２の入力書式を満たさないことがわかる。そこで、図８のステップＳ４２の場合と同様に、ここまでの処理（図２５の処理）で読取結果テーブルの各項目に記録した文字をクリアして（Ｓ１６７）、処理を終了する。
【０１１６】
以上のような照合処理を、他の入力書式と対応するものも合わせて適用すると、図２２Ａ又は図２２Ｃに示すコード記号を読み取った場合の読取結果テーブルへの登録結果は、図２６に示すようになる。また、図２２Ｂに示す２つのコード記号を読み取った場合の登録結果は、図２７に示すようになる。
これらの登録結果について、各アプリケーション識別子と対応する読取結果は、適用した入力書式に応じて入力書式ＩＤが異なるが、他のＩＤについては共通である。また、図２７では、デコード結果全体の登録もコード記号毎に行われるが、この登録内容は出力データには含めないので、この点での差異に特に意味はない。
【０１１７】
次に、図２８に、第３の例においてデコード結果の出力に用いる出力書式を示す。
この出力書式についても、記載形式は基本的に図１２に示したものと同様である。ただし、出力データに含める読取結果の指定について、３つ組のＩＤのうち、アプリケーション識別子（括弧ＩＤ）を、[]の外に出して、「\A」とこれに続く数字で示している。後ろの[]の中には、入力書式ＩＤと取出ＩＤを記載している。従って、例えば\A01[0,0]は、[0,AI01,0]の指定と同じ意味である。また、「\Dx」は、直前にアプリケーション識別子を用いて指定した項目のデータを出力する、という意味である。また、出力書式の記載に、図１７の説明で上述したオアの記号も用いている。
【０１１８】
次に、図２９に、図２８に示した出力書式と対応する登録判定処理のフローチャートを示す。
図２９の処理において、制御回路１２２のＣＰＵは、まず\A01[0,0]又は\A01[1,0]の項目の読取結果が読取結果テーブルに登録されているか否か判断する（Ｓ１７１）。これらは、出力書式中の最初の括弧内にオアの記号を挟んで列挙された項目である。これらのいずれかが登録されていれば、最初の括弧内の出力データを生成することができるので、次に進む。
【０１１９】
次のステップでは、\A10[0,0]又は\A10[2,0]の項目の読取結果が読取結果テーブルに登録されているか否か判断する（Ｓ１７２）。これは、出力書式中の２番目の括弧内の記載と対応するものである。
これがＹｅｓであれば、同様に、３番目及び４番目の括弧内の記載と対応させて、\A17[0,0]又は\A17[2,0]、及び\A30[0,0]又は\A30[2,0]の項目の読取結果が読取結果テーブルに登録されているか否か判断する（Ｓ１７３，Ｓ１７４）。
【０１２０】
そして、いずれもＹｅｓであれば、必須項目のデータが全て読取結果テーブルに登録されていると判断し（Ｓ１７５）、処理を終了する。この場合、図３のステップＳ１９の判断はＹｅｓとなる。一方、１つでもＮｏであれば、必須項目のデータが揃っていないと判断し（Ｓ１７６）、処理を終了する。この場合、図３のステップＳ１９の判断はＮｏとなる。
なお、必須項目について、図２９の処理では、オアで結ばれた項目のいずれかについて読取結果が登録されていることが必須、と考える。あるいは、特定のアプリケーション識別子と対応する項目が必須、と考えることもできる。
【０１２１】
次に、図３０に、図２８に示した出力書式と対応する出力データ生成処理のフローチャートを示す。この処理は、出力データが空白の状態からスタートする。
図３０の処理において、制御回路１２２のＣＰＵはまず、出力書式の先頭にある「GTIN:」の文字列を、出力データに追加する（Ｓ２０１）。
【０１２２】
次に、\A01[0,0]の項目の読取結果が読取結果テーブルに登録されているか否か判断する（Ｓ２０２）。そして、登録されていれば、その\A01[0,0]の項目の読取結果の文字列を、出力データに追加する（Ｓ２０３）。登録されていなければ、\A01[1,0]の項目の読取結果の文字列を、出力データに追加する（Ｓ２０４）。これらは、出力書式中の最初の括弧内の記載と対応する処理である。オアで結ばれた複数の書式については、初めに記載されている書式に従って出力データを生成可能な場合にはそちらを採用し、そうでない場合に次の書式にトライする。
【０１２３】
次に、その後ろの特殊記号「\x0D」に対応して、改行コードを出力データに追加する（Ｓ２０５）。
その後も、出力書式に記載されている順に、「ロット番号:」の文字列（Ｓ２０６）を追加し、\A10[0,0]の項目の読取結果が登録されていればそれを、無ければ\A10[2,0]の項目の読み取り結果を追加する（Ｓ２０７〜Ｓ２０９）。さらに改行コードを追加する（Ｓ２１０）。
【０１２４】
これより後ろの処理については図示を省略したが、「有効期限:」の文字列、\A17[0,0]の項目の読取結果が登録されていればそれ、無ければ\A17[2,0]の項目の読み取り結果、改行コード、「個数:」の文字列、\A30[0,0]の項目の読取結果が登録されていればそれ、無ければ\A30[2,0]の項目の読み取り結果、改行コード、の順で出力データに追加して、処理を終了する。
【０１２５】
読取結果テーブルが図２６又は図２７に示す状態の場合、以上により生成される出力データは、図３１に示すものとなる。読取結果テーブルの状態がどちらであっても、生成される出力データは同じである。
すなわち、読取結果を１つのコード記号から得たか、２つのコード記号から得たかによらず、同じ出力を行うことができる。
【０１２６】
なお、この例で用いるアプリケーション識別子については、読み取り対象のコード記号を作成する側と、読み取りに用いる読取装置１００を設定する側とで、図２３に示したテーブルの内容が共有できていれば、広く世間で通用する識別子でなくても構わない。すなわち、ユーザが作成したオリジナルの識別子を用いることも考えられる。
【０１２７】
〔第４の例：図３２乃至図３７〕
次に、読取結果の登録及び出力の第４の例について説明する。
この第４の例は、出力すべき情報を示すコード記号は第３の例の場合と同じであり、用いる入力書式が異なる例である。そこで、第３の例と共通する部分については、説明を省略するか簡単にする。
【０１２８】
図３２に、第４の例においてデコード結果の照合及び読取結果の登録に用いる入力書式を示す。
この入力書式で用いている記号の意味は、基本的にここまでの例で説明してきたものと同じであるが、「\Ax」は、任意のアプリケーション識別子と対応するデータを示す。従って、この入力書式は、デコード結果には任意のアプリケーション識別子と対応するデータが１以上並び、その各データの後ろには、<FNC1>が１つまであってもよい、ということを示している。
【０１２９】
図３３に、第４の例におけるデコード記号と入力書式との照合処理について説明する。この処理の開始時点では、処理位置はデコード結果の１文字目であるとする。
図３３の処理において、制御回路１２２のＣＰＵはまず、現在の処理位置を基準にアプリケーション識別子の文字数を判別し、その文字数分を変数ＡＩへ代入する（Ｓ２２１）。アプリケーション識別子の文字数は、ここまでに例示している２文字とは限らないが、先頭から１文字ずつ読んで行けば、何文字のＩＤかを識別できるようになっている。その後、ＡＩの値をＩＤが[0,0,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ２２２）。これは、アプリケーション識別子による取り出しと関係なく、デコード結果全体を登録するものである。
【０１３０】
その後、制御回路１２２のＣＰＵは、ＡＩの次に、ステップＳ２２１で代入したＡＩが示す書式の文字列が続くか否か判断する（Ｓ２２３）。例えば、ステップＳ２２１で「01」を代入していれば、その後に、アプリケーション識別子が「０１」のデータ、すなわち１４桁の数字が続くか否か判断する。
【０１３１】
ここでＹｅｓであれば、該当の文字列を、[0,AI,0]の項目の読取結果として読取結果テーブルに記録する（Ｓ２２４）。なお、２番目のＩＤは、図では単に「AI」と表記したが、これがアプリケーション識別子であることを示すため、変数ＡＩの値の先頭に文字列「AI」を付したものを用いる。このステップＳ２２４では、<FNC1>のような特殊文字は記録から除外するとよい。また、該当の文字列は、ＩＤが[0,0,0]の項目の読取結果としても記録する（Ｓ２２５）。
【０１３２】
そして、処理位置を、該当文字列の末端の次の文字まで進める（Ｓ２２６）と共に、処理位置の文字がデータ終端であるか否か判断する（Ｓ２２７）。ここでＮｏであれば、ステップＳ２２１に戻って処理を繰り返すが、Ｙｅｓであれば、デコード結果がＩＤ＝０の入力書式を満たすと判断し、ここまでに各項目に記録した文字を読取結果として確定させ（Ｓ２２８）、処理を終了する。
【０１３３】
一方、ステップＳ２２３でＮｏの場合、デコード結果がＩＤ＝０の入力書式を満たさないことがわかる。そこで、図８のステップＳ４２の場合と同様に、ここまでの処理（図３３の処理）で読取結果テーブルの各項目に記録した文字をクリアして（Ｓ２２９）、処理を終了する。
なお、ステップＳ２２３では、ＡＩの値がアプリケーション識別子として適当な値でない場合もＮｏとする。
【０１３４】
以上の入力書式及び照合処理を用いても、図２２Ａ及び図２２Ｃのように４項目のデータを含むコード記号を読み取った場合、図２６に示した登録結果が得られる。
また、図２２Ｂのように２つのコード記号に分けて記載されている場合、まず上側のコード記号を読み取ると、図３４に示した登録結果が得られる。その状態でさらに下側のコード記号を読み取ると、図３５に示した登録結果が得られる。この状態では、[0,0,0]の項目の登録内容は、２度目に読み取った下側のコード記号の情報が、図３４で登録されていた情報に上書きされている。また、下側のコード記号に記載されている、アプリケーション識別子が「０１」の情報が、図３４の状態から追加登録されている。
【０１３５】
結果的に、図２２Ｂの２つのコード記号を読み取った場合も、アプリケーション識別子と対応する読取結果としては、図２６に示したものと同じ文字列が登録される。項目を示すＩＤも、図２６に示したものと全く同じである。
このため、第４の例においては、出力書式は図３６のように記載することができる。すなわち、図２２Ａ又は図２２Ｃのコード記号を読み取った場合も、図２２Ｂのコード記号を読み取った場合も、どちらも同じ入力書式に基づき読取結果を取り出すため、出力内容を記述する際に、第３の例の場合のようなオアを用いた記述が不要である。
【０１３６】
詳細な処理の説明は省略するが、読取結果テーブルの内容が図２６又は図３５に示す状態のとき、図３６の出力書式に基づき出力データを生成すると、図３１に示したものと同じ出力データが完成する。
【０１３７】
このように、入力書式や出力書式の記載内容を工夫することにより、同じコード記号から、より短い書式で同じ出力データを得られるようにすることができる。
なお、図３６の例では、アプリケーション識別子が「０１」、「１０」、「１７」及び「３０」の項目を、全て出力に必須の項目としている。しかし、例えば「３０」の項目が必須でない場合、図３７に示すように、オア記号を用いてこれを表現することができる。
【０１３８】
図３７に示す出力書式中の最後の括弧において、「??」は、単にクエスチョンマークを２つ出力することを示す。従って、図３７に示す出力書式を用いた場合、アプリケーション識別子が「３０」の項目の読取結果がなければ代わりに「??」を入れた出力データを生成することになり、この項目が必須でないことを表現することができる。
【０１３９】
以上で実施形態の説明を終了するが、装置の構成、具体的な処理内容、データの形式、記載方法等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、上述した実施形態では、読取結果テーブルにおいて項目を特定するためのＩＤとして、３つのＩＤの組み合わせを用いたが、項目と直接対応する専用のＩＤを用いるようにしてもよい。
【０１４０】
また、上述した実施形態では、読取装置を、コード記号を読み取る装置として構成したが、ＯＣＲ（Optical Character Recognition）によって文字を読み取る装置として構成してもよい。
また、出力データ（読取結果）の出力先は、別筐体の装置であることは必須ではない。例えば、読取装置を、光学ヘッド部とデータ処理用の小型チップとを備えた読取モジュールとして構成し、携帯型コンピュータや携帯電話装置等の基板上に搭載して、その携帯型コンピュータや携帯電話装置等の主制御部に対して出力データを出力するようにすることも考えられる。この場合、主制御部が出力先装置であると考えることができる。
【０１４１】
また、入力書式や出力書式の記載規則も、上述した実施形態のものに限られることはない。
また、この発明は、読取領域内の情報を読み取る装置であれば、携帯型、据え置き型、何らかの装置に内蔵されるもの、等を問わず、任意の装置に適用可能である。
【０１４２】
また、この発明のプログラムは、コンピュータに読取装置を制御させて、上述の実施形態において説明した機能を実現させるためのプログラムとして構成することができる。このようなプログラムは、予めコンピュータのメモリに記憶させておく他、記録媒体であるＣＤ−ＲＯＭあるいはフレキシブルディスク，ＳＲＡＭ，ＥＥＰＲＯＭ，メモリカード等の不揮発性記録媒体（メモリ）に記録したり、ネットワークを介してダウンロードできるようにしたりして提供することもできる。そして、そのプログラムをインストールしてＣＰＵに実行させるか、ＣＰＵにメモリあるいはダウンロードサーバからこのプログラムを取得させて実行させることにより、上述した各機能を実現させることができる。
また、以上述べてきた構成及び変形例は、矛盾しない範囲で適宜組み合わせて適用することも可能である。
【産業上の利用可能性】
【０１４３】
以上の説明から明らかなように、この発明の読取装置、読取結果出力方法及びプログラムによれば、読取領域内の情報を入力情報として読み取り、その読取結果を出力する場合において、読取領域が比較的狭く、一度に読み取りたい情報を全て収めることが難しい場合でも、複数項目の読取結果の出力を容易に行うことができる。
従って、この発明を適用することにより、読取装置の操作性あるいは運用効率を向上させることができる。
【符号の説明】
【０１４４】
１００…読取装置、１１０…光学ヘッド部、１１１…レンズ部、１１２…ＣＭＯＳ、１１３…ＬＥＤ、１２０…デコーダ部、１２１…第１Ｉ／Ｏ、１２２…制御回路、１２３…ＲＡＭ、１２４…不揮発メモリ、１２５…第２Ｉ／Ｏ
【図１】
2013179436.tif 000003
【図２】
2013179436.tif 000004
【図３】
2013179436.tif 000005
【図４】
2013179436.tif 000006
【図５】
2013179436.tif 000007
【図６】
2013179436.tif 000008
【図７】
2013179436.tif 000009
【図８】
2013179436.tif 000010
【図９】
2013179436.tif 000011
【図１０】
2013179436.tif 000012
【図１１】
2013179436.tif 000013
【図１２】
2013179436.tif 000014
【図１３】
2013179436.tif 000015
【図１４】
2013179436.tif 000016
【図１５】
2013179436.tif 000017
【図１６】
2013179436.tif 000018
【図１７】
2013179436.tif 000019
【図１８】
2013179436.tif 000020
【図１９】
2013179436.tif 000021
【図２０】
2013179436.tif 000022
【図２１】
2013179436.tif 000023
【図２２Ａ】
2013179436.tif 000024
【図２２Ｂ】
2013179436.tif 000025
【図２２Ｃ】
2013179436.tif 000026
【図２３】
2013179436.tif 000027
【図２４】
2013179436.tif 000028
【図２５】
2013179436.tif 000029
【図２６】
2013179436.tif 000030
【図２７】
2013179436.tif 000031
【図２８】
2013179436.tif 000032
【図２９】
2013179436.tif 000033
【図３０】
2013179436.tif 000034
【図３１】
2013179436.tif 000035
【図３２】
2013179436.tif 000036
【図３３】
2013179436.tif 000037
【図３４】
2013179436.tif 000038
【図３５】
2013179436.tif 000039
【図３６】
2013179436.tif 000040
【図３７】
2013179436.tif 000041
【図３８】
2013179436.tif 000042
【手続補正書】
【提出日】平成27年4月21日(2015.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
読取領域内の情報を入力情報として読み取る読取手段と、
情報の入力書式を設定する入力設定手段と、
前記読取手段が読み取った入力情報のうち、前記入力設定手段が設定した各入力書式のいずれかに当てはまる入力情報から、該入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する手段であって、前記取り出した情報のうち、前記記憶手段にまだ読取結果が登録されていない項目の情報を、既に登録された読取結果に追加して登録する登録手段と、
前記読取手段による入力情報の読み取りと、前記登録手段による読取結果の登録とを、前記記憶手段に必須の項目全てについて読取結果が登録されるまで繰り返す制御を行う制御手段と、
前記記憶手段に前記必須の項目全てについて読取結果が登録された場合に、該登録された読取結果を前記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手段とを備えることを特徴とする読取装置。
【請求項２】
請求項１に記載の読取装置であって、
前記第１の出力手段による読取結果の出力書式を設定する出力設定手段と、
前記第１の出力手段がどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、前記出力設定手段が設定した出力書式に基づき特定する出力項目特定手段とを備え、
前記第１の出力手段は、前記記憶手段に登録されている読取結果のうち前記出力項目特定手段が特定した項目の読取結果を、前記出力設定手段が設定した出力書式に従った書式の情報として出力する手段であることを特徴とする読取装置。
【請求項３】
請求項２に記載の読取装置であって、
前記登録手段は、前記入力情報から取り出した情報を、項目毎に前記入力書式に基づき特定される識別情報を付して登録する手段であることを特徴とする読取装置。
【請求項４】
請求項１に記載の読取装置であって、
前記入力情報は、前記読取領域内の任意の数のコード記号のデコード結果であり、
前記入力設定手段が設定した入力書式に基づき、ひとつのコード記号のデコード結果から１以上の項目の情報を取り出してそれぞれに前記識別情報を付すための第１のアルゴリズムを生成する第１アルゴリズム生成手段を備え、
前記登録手段は、前記入力情報に含まれる各コード記号のデコード結果に対してそれぞれ、共通の前記第１のアルゴリズムを適用することにより、前記入力情報から前記１以上の項目の情報を取り出すことを特徴とする読取装置。
【請求項５】
請求項２又は３に記載の読取装置であって、
前記出力設定手段が設定した出力書式に基づき、前記出力項目特定手段が特定する項目の読取結果から、その出力書式に従った書式の情報を生成するための第２のアルゴリズムを生成する第２アルゴリズム生成手段を備え、
前記第１の出力手段は、該第２のアルゴリズムに従って、前記所定の出力先装置へ出力する情報を生成することを特徴とする読取装置。
【請求項６】
請求項５に記載の読取装置であって、
前記入力書式及び前記出力書式の設定によらず、前記記憶手段に、前記登録手段による前記読取結果の登録先として、項目の識別情報と該項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手段を備え、
前記出力項目特定手段は、前記出力書式に含まれる、前記項目の識別情報により、前記第１の出力手段が登録結果を出力する項目及び必須の項目を特定し、
前記第１の出力手段は、前記所定の記憶領域から、前記出力項目特定手段により特定された識別情報が示す項目の読取結果を、出力のために読み出すことを特徴とする読取装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の読取装置であって、
前記登録手段が、前記記憶手段にまだ読取結果が登録されていない項目について新たに読取結果を登録する度にその旨の通知を行う通知手段を備えることを特徴とする読取装置。
【請求項８】
請求項１乃至７のいずれか一項に記載の読取装置であって、
前記読取手段が読み取った入力情報が、前記入力設定手段が設定した入力書式のいずれにも当てはまらない場合に、該入力情報を前記所定の出力先装置へ出力する第２の出力手段を備えることを特徴とする読取装置。
【請求項９】
プロセッサ又はプロセッサに制御されるハードウェアが、
読取領域内の情報を入力情報として読み取る読取手順と、
情報の入力書式を設定する入力設定手順と、
前記読取手順で読み取った入力情報のうち、前記入力設定手順で設定した各入力書式のいずれかに当てはまる入力情報から、該入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する手順であって、前記取り出した情報のうち、前記記憶手段にまだ読取結果が登録されていない項目の情報を、既に登録された読取結果に追加して登録する登録手順と、
前記読取手順による入力情報の読み取りと、前記登録手順による読取結果の登録とを、前記記憶手段に必須の項目全てについて読取結果が登録されるまで繰り返す制御を行う制御手順と、
前記記憶手段に前記必須の項目全てについて読取結果が登録された場合に、該登録された読取結果を前記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手順とを実行することを特徴とする読取結果出力方法。
【請求項１０】
請求項９に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記第１の出力手順による読取結果の出力書式を設定する出力設定手順と、
前記第１の出力手順でどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、前記出力設定手順で設定した出力書式に基づき特定する出力項目特定手順とを実行し、
前記第１の出力手順は、前記記憶手段に登録されている読取結果のうち前記出力項目特定手順で特定した項目の読取結果を、前記出力設定手順で設定した出力書式に従った書式の情報として出力する手順であることを特徴とする読取結果出力方法。
【請求項１１】
請求項１０に記載の読取結果出力方法であって、
前記登録手順は、前記入力情報から取り出した情報を、項目毎に前記入力書式に基づき特定される識別情報を付して登録する手順であることを特徴とする読取結果出力方法。
【請求項１２】
請求項９に記載の読取結果出力方法であって、
前記入力情報は、前記読取領域内の任意の数のコード記号のデコード結果であり、
前記プロセッサ又は前記ハードウェアがさらに、
前記入力設定手順で設定した入力書式に基づき、ひとつのコード記号のデコード結果から１以上の項目の情報を取り出してそれぞれに前記識別情報を付すための第１のアルゴリズムを生成する第１アルゴリズム生成手順を実行し、
前記登録手順では、前記入力情報に含まれる各コード記号のデコード結果に対してそれぞれ、共通の前記第１のアルゴリズムを適用することにより、前記入力情報から前記１以上の項目の情報を取り出すことを特徴とする読取結果出力方法。
【請求項１３】
請求項１０又は１１に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記出力設定手順で設定した出力書式に基づき、前記出力項目特定手順で特定した項目の読取結果から、その出力書式に従った書式の情報を生成するための第２のアルゴリズムを生成する第２アルゴリズム生成手順を実行し、
前記第１の出力手順では、該第２のアルゴリズムに従って、前記所定の出力先装置へ出力する情報を生成することを特徴とする読取結果出力方法。
【請求項１４】
請求項１３に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記入力書式及び前記出力書式の設定によらず、前記記憶手段に、前記登録手順による前記読取結果の登録先として、項目の識別情報と該項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手順を実行し、
前記出力項目特定手順では、前記出力書式に含まれる、前記項目の識別情報により、前記第１の出力手順で登録結果を出力する項目及び必須の項目を特定し、
前記第１の出力手順では、前記所定の記憶領域から、前記出力項目特定手順により特定された識別情報が示す項目の読取結果を、出力のために読み出すことを特徴とする読取結果出力方法。
【請求項１５】
請求項９乃至１４のいずれか一項に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記登録手順で前記記憶手段にまだ読取結果を登録していない項目について新たに読取結果を登録する度にその旨の通知を行う通知手順を実行することを特徴とする読取結果出力方法。
【請求項１６】
請求項９乃至１５のいずれか一項に記載の読取結果出力方法であって、
前記プロセッサ又は前記ハードウェアがさらに、
前記読取手順で読み取った入力情報が、前記入力設定手順で設定した入力書式のいずれにも当てはまらない場合に、該入力情報を前記所定の出力先装置へ出力する第２の出力手順を実行することを特徴とする読取結果出力方法。
【請求項１７】
コンピュータに、読取領域内の情報を入力情報として読み取る読取手段を備える読取装置を制御させて、前記コンピュータ及び前記読取装置に協働して請求項９乃至１６のいずれか一項に記載の読取結果出力方法を実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上記の目的を達成するため、この発明の読取装置は、読取領域内の情報を入力情報として読み取る読取手段と、情報の入力書式を設定する入力設定手段と、上記読取手段が読み取った入力情報のうち、上記入力設定手段が設定した各入力書式のいずれかに当てはまる入力情報から、その入力書式に基づいて取り出した１以上の項目の情報を、その項目の読取結果として所定の記憶手段に登録する手段であって、上記取り出した情報のうち、上記記憶手段にまだ読取結果が登録されていない項目の情報を、既に登録された読取結果に追加して登録する登録手段と、上記読取手段による入力情報の読み取りと、上記登録手段による読取結果の登録とを、上記記憶手段に必須の項目全てについて読取結果が登録されるまで繰り返す制御を行う制御手段と、上記記憶手段に上記必須の項目全てについて読取結果が登録された場合に、その登録された読取結果を上記記憶手段から読み出して所定の出力先装置へ出力する第１の出力手段とを設けたものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
このような読取装置において、上記第１の出力手段による読取結果の出力書式を設定する出力設定手段と、上記第１の出力手段がどの項目の登録結果を出力し、またそのいずれを必須の項目にするかを、上記出力設定手段が設定した出力書式に基づき特定する出力項目特定手段とを設け、上記第１の出力手段を、上記記憶手段に登録されている読取結果のうち上記出力項目特定手段が特定した項目の読取結果を、上記出力設定手段が設定した出力書式に従った書式の情報として出力する手段とするとよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
さらに、上記登録手段を、上記入力情報から取り出した情報を、項目毎に上記入力書式に基づき特定される識別情報を付して登録する手段とするとよい。
さらに、上記入力情報を、上記読取領域内の任意の数のコード記号のデコード結果とし、上記入力設定手段が設定した入力書式に基づき、ひとつのコード記号のデコード結果から１以上の項目の情報を取り出してそれぞれに前記識別情報を付すための第１のアルゴリズムを生成する第１アルゴリズム生成手段を設け、上記登録手段が、上記入力情報に含まれる各コード記号のデコード結果に対してそれぞれ、共通の上記第１のアルゴリズムを適用することにより、上記入力情報から上記１以上の項目の情報を取り出すようにするとよい。
さらに、上記出力設定手段が設定した出力書式に基づき、上記出力項目特定手段が特定する項目の読取結果から、その出力書式に従った書式の情報を生成するための第２のアルゴリズムを生成する第２アルゴリズム生成手段を設け、上記第１の出力手段が、その第２のアルゴリズムに従って、上記所定の出力先装置へ出力する情報を生成するようにするとよい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
さらにまた、上記入力書式及び上記出力書式の設定によらず、上記記憶手段に、上記登録手段による上記読取結果の登録先として、項目の識別情報とその項目の読取結果とを対応付けて記憶するための所定の記憶領域を確保する手段を設け、上記出力項目特定手段は、上記出力書式に含まれる、上記項目の識別情報により、上記第１の出力手段が登録結果を出力する項目及び必須の項目を特定し、上記第１の出力手段が、上記所定の記憶領域から、上記出力項目特定手段により特定された識別情報が示す項目の読取結果を、出力のために読み出すようにするとよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
また、上記の各読取装置において、上記登録手段が、上記記憶手段にまだ読取結果が登録されていない項目について新たに読取結果を登録する度にその旨の通知を行う通知手段を設けるとよい。
さらに、上記読取手段が読み取った入力情報が、上記入力設定手段が設定した入力書式のいずれにも当てはまらない場合に、その入力情報を上記所定の出力先装置へ出力する第２の出力手段を設けるとよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
エイミング光学系１１４は、ＣＭＯＳ１１２により撮像可能な範囲、すなわちコード記号の読取領域の目印を、読取対象物への光の照射により表示する照射手段である。具体的には、読取領域の中心、四隅、周囲等に可視光のビームを照射したり、これらの位置をビームにより走査したりする。
【国際調査報告】
2013179436.tif 000043
2013179436.tif 000044