(57)【特許請求の範囲】
【請求項１】
シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、該各走査線上の、シンボルコードに重なる一次元領域を抽出する第１抽出部と、
前記第１抽出部で抽出された、隣接する走査線上の前記一次元領域内の画素の変化パターンの類似性に基づいて該隣接する走査線上の前記一次元領域を互いに統合することにより、前記画像上のシンボルコードが記録された二次元領域を抽出する第２抽出部と
を有する抽出部と、
前記抽出部で抽出された前記二次元領域に記録されているシンボルコードの内容を認識する認識部と
を有することを特徴とするシンボルコード認識装置。
【請求項２】
当該シンボルコード認識装置は、それぞれが複数種類の線幅を有する第１バーおよび第２バーの交互配列により、先頭にスタートコード、該スタートコードに続く一つ以上のキャラクタコード、および末尾にストップコードが記録され、さらに該スタートコードの前および該ストップコードの後ろにバーの配列が存在しないクワイエットゾーンが存在する一次元シンボルコードの内容を認識する装置であることを特徴とする請求項１記載のシンボルコード認識装置。
【請求項３】
前記第１抽出部は、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たし、さらに、前記スタートコードおよび前記ストップコードが認識される一次元領域を抽出するものであることを特徴とする請求項２記載のシンボルコード認識装置。
【請求項４】
前記第２抽出部は、複数の走査線上の、前記第１抽出部で抽出された複数の一次元領域の中から、該一次元領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに、スタートコードおよびストップコードにより表わされるシンボルの種別が一致する複数の一次元領域を抽出し、抽出された複数の一次元領域を互いに統合する第１統合処理を実行することにより、前記二次元領域を抽出するものであることを特徴とする請求項２又は３記載のシンボルコード認識装置。
【請求項５】
前記第１抽出部は、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たす一次元領域を一次候補領域として抽出し、さらに、該一次候補領域の中から、前記スタートコードおよび前記ストップコードが認識される一次候補領域を二次候補領域として抽出するものであり、
前記第２抽出部は、複数の前記走査線上の、前記第１抽出部で抽出された複数の二次候補領域の中から、該二次候補領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに前記スタートコードおよび前記ストップコードにより表わされるシンボルコードの種別が一致する複数の二次候補領域を抽出し、さらに、抽出された複数の二次候補領域に挟まれた一次候補領域が存在し、該抽出された複数の二次候補領域に挟まれた一次候補領域が、該抽出された複数の二次候補領域と比較し、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、かつバーが複数の走査線に跨る方向に連続する場合に、該抽出された複数の二次候補領域と該抽出された複数の二次候補領域に挟まれた一次候補領域とを統合する第２統合処理を実行することにより、前記二次元領域を抽出するものであることを特徴とする請求項４記載のシンボルコード認識装置。
【請求項６】
コンピュータに、
シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、該各走査線上の、シンボルコードに重なる一次元領域を抽出し、
隣接する走査線上の前記一次元領域内の画素の変化パターンの類似性に基づいて該隣接する走査線上の前記一次元領域を互いに統合することにより、前記画像上のシンボルコードが記録された二次元領域を抽出し、
抽出された前記二次元領域に記録されているシンボルコードの内容を認識する処理を実行させることを特徴とするシンボルコード認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード等のシンボルコードを認識するシンボルコード認識装置およびコンピュータにシンボルコードを認識させるシンボルコード認識プログラムに関する。
【背景技術】
【０００２】
従来よりバーコード等のシンボルコードを読み取ってそのシンボルコードの内容を認識する、バーコードリーダ等のシンボルコード認識装置が知られている。また従来、読み取ったシンボルコードを正しく認識する様々な技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３３０９０６号公報
【特許文献２】特開平１０−４９６２２号公報
【特許文献３】特表平９−５０６１９７号公報
【特許文献４】特開２００８−２１００９号公報
【特許文献５】特開２０００−３５７２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、シンボルコードの存在があらかじめ分かっており、そのシンボルコードの領域のみ読み取った場合の正しい認識のための提案は見受けられる。しかしながら例えばＡ４サイズの帳票上のどこかにシンボルコードが印刷あるいは貼付されており、かつその帳票上にはシンボルコード以外にも様々な文字や図形が記録されている場合にそのシンボルコードの位置を如何にして高速かつ正確に特定するかが問題となる。特にノイズによる潰れや擦れなどで汚れた劣悪な画質の画像からであってもシンボルコードの位置を高速かつ正確に特定することが必要となる。また、そのような劣悪な画質のシンボルコードからその内容を正確に認識することも必要である。
【０００５】
そこで、本件のシンボルコード認識装置およびシンボルコード認識プログラムの課題は、画像からシンボルコードを正確に抽出することにある。
【課題を解決するための手段】
【０００６】
本件のシンボルコード認識装置は、抽出部と認識部とを有する。また、この抽出部は、第１抽出部と第２抽出部を有する。
【０００７】
ここで、第１抽出部は、シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、各走査線上の、シンボルコードに重なる一次元領域を抽出する。
【０００８】
また、第２抽出部は、第１抽出部で抽出された、隣接する走査線上の上記一次元領域内の画素の変化パターンの類似性に基づいてそれら隣接する走査線上の一次元領域を互いに統合することにより、画像上のシンボルコードが記録された二次元領域を抽出する。
【０００９】
また、認識部は、抽出部で抽出された二次元領域に記録されているシンボルコードの内容を認識する。
【発明の効果】
【００１０】
本件によれば、画像上からシンボルコードが記録されている二次元領域が正確に抽出され、その抽出された二次元領域に記録されているシンボルコードの内容が認識される。
【図面の簡単な説明】
【００１１】
【図１】本件の一実施形態として動作するノートＰＣを含むシステム概要図である。
【図２】図１に示すシステムの内部構成図である。
【図３】第１実施形態のシンボルコード認識装置のブロック図である。
【図４】シンボルコードの一例を示した図である。
【図５】帳票の一例を示した模式図である。
【図６】走査線を示した図である。
【図７】認識部で採用される第２走査線を示す図である。
【図８】第２実施形態のシンボルコード認識装置のブロック図である。
【図９】図８に示すシンボルコード認識装置で実行される処理を示すフローチャートの前半部分を示した図である。
【図１０】図８に示すシンボルコード認識装置で実行される処理を示すフローチャートの後半部分を示した図である。
【図１１】走査線を示す図である。
【図１２】候補確認処理を示す模式図である。
【図１３】線幅比が規定値を満たすか否かの確認処理の説明図である。
【図１４】キー検出処理の説明図である。
【図１５】統合確認処理の説明図である。
【図１６】統合情報の模式図である。
【図１７】傾き算出処理の説明図である。
【図１８】傾き候補統合部における処理の説明図である。
【図１９】シンボルコードが斜めに記録されていたときの統合情報の模式図である。
【図２０】シンボルデータの一例を示す図である。
【図２１】シンボルデータ補正前のシンボルコードの一例を示した図である。
【図２２】シンボルデータ補正後のシンボルコードの一例を示した図である。
【図２３】マトリックス処理部における処理内容の説明図である。
【図２４】マトリックス処理部における処理内容の説明図である。
【図２５】ラインソート処理部における処理内容の説明図である。
【図２６】認識結果判定部の処理内容の説明図である。
【図２７】認識結果判定部における比較の優先順位を示した図である。
【発明を実施するための形態】
【００１２】
以下、実施形態を説明する。
【００１３】
図１は、本件の一実施形態として動作するノート型パーソナルコンピュータ（以下、「ノートＰＣ」と略記する）を含むシステム概要図である。
【００１４】
この図１にはノートＰＣ１とスキャナ２が示されている。ノートＰＣ１は、本体装置１０と、その本体装置に対し開閉自在な表示装置２０とを有し、本体装置１０にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、記憶部といったプログラムの実行による演算処理を行なうのに必要な要素が備えられている。また、記憶部には、このノートＰＣ１を本件のシンボルコード認識装置の一実施形態として動作させるための、一実施形態としてのシンボルコード認識プログラムが記憶されている。さらに、本体装置１０の上面には、ユーザ操作を受けるキーボード１１０が配備されている。
【００１５】
また、表示装置２０は、表示画面２１０を有し、その表示画面２１０には本体部１０からの指示に応じた画像が表示される。
【００１６】
また、このノートＰＣ１には、ポインティングデバイスの一種であるマウス３が接続されている。
【００１７】
また、スキャナ２は、一部にシンボルコードを含む画像が記録されている帳票等からその画像を読み取って画像データを生成する。以下では、特に概念を分けて説明する必要のないときは、「画像データ」も「画像」と表現する。このスキャナ２はノートＰＣ１に接続されており、このスキャナ２で読み取られた画像がノートＰＣ１に入力される。
【００１８】
ノートＰＣ１では、記憶部に記憶されてシンボルコード認識プログラムが実行され、スキャナ２から画像が入力されると、このノートＰＣ１では、その画像上のシンボルコードの領域が抽出されてそのシンボルコードの内容が認識される。
【００１９】
図２は、図１に示すシステムの内部構成図である。
【００２０】
ここにも、ノートＰＣ１とスキャナ２が示されている。ノートＰＣ１は、ＣＰＵ１１，メモリ１２，記憶部１３，操作部１４，表示部１５およびインタフェース１６を有し、それらはバス１７を介して互いに接続されている。
【００２１】
ＣＰＵ１１は、プログラムを実行する中央演算装置である。
【００２２】
メモリ１２は、ＣＰＵ１１で実行されるプログラムが実行形式に展開されて記憶されるメモリである。また、このメモリ１２は、ＣＰＵ１１で実行中のプログラムの作業エリアとしても使用される。
【００２３】
記憶部１３は、各種のプログラムやデータを不揮発的に記憶しておく、ＨＤＤ（ハードディスクドライブ）等の大容量記憶部である。
【００２４】
また操作部１４は、ユーザから操作を受ける要素であり、図１に示すキーボード１１０やマウス３などを総称している。
【００２５】
また、表示部１５は、図１に示す表示装置２０に備えられており、図１に示す表示画面２１０を有しＣＰＵ１１からの指令を受けてその表示画面２１０上に画像を表示する要素である。
【００２６】
さらにインタフェース１６は、スキャナ２と接続されてスキャナ２で得られた画像（画像データとしての画像）を受信する要素である。
【００２７】
図３は、第１実施形態のシンボルコード認識装置のブロック図である。
【００２８】
このシンボルコード認識装置３０は、図１，図２に示すノートＰＣ１内でシンボルコード認識プログラムが実行されることによりそのノートＰＣ１内に実現する機能を表わしている。
【００２９】
このシンボルコード認識装置３０は、抽出部３１と認識部３２とを有し、さらに、抽出部３１は、第１抽出部３１１および第２抽出部３１２を有し、認識部３２は、補正部３２１、第１認識部３２２、第２認識部３２３、および統合部３２４を有する。
【００３０】
抽出部３１は、画像上のシンボルコード１００が記録されている二次元領域を抽出する。
【００３１】
また、認識部３２は、抽出部３１で抽出された二次元領域に記録されているシンボルコードの内容を認識する。
【００３２】
ここで、図３に示すシンボルコード認識装置３０で認識対象としているシンボルコードを説明しておく。
【００３３】
図４は、シンボルコードの一例を示した図である。
【００３４】
このシンボルコード１００は、それぞれが複数の線幅を有する黒バーおよび白バーの交互配列により構成されている一次元シンボルコードである。このシンボルコード１００の先頭には、スタートコード１０１が記録され、そのスタートコード１０１に続き一つ以上のキャラクタコード１０２が記録され、末尾にはストップコード１０３が記録されている。
【００３５】
シンボルコードの種別は複数存在する。ここに示す種別のシンボルコードの場合、スタートコード１０１，キャラクタコード１０２における各１つのキャラクタのコード、およびストップコード１０３は、いずれも、９本のバーで構成されている。これら９本のバーは、５本の黒バーとそれらの黒バーに挟まれた４本の白バーとからなる。さらにスタートコード１０１の前およびストップコード１０３の後ろには、バーの配列が存在しないクワイエットゾーン１０４，１０５が存在する。スタートコード１０１およびストップコード１０３のパターンはシンボルコード１００の種別ごとに決まっている。したがってスタートコード１０１およびストップコード１０３を調べることにより、このシンボルコード１００の種別が分かる。尚ここでは、黒バー／白バーと称しているが、互いに識別できる明度あるいは色のバーであれば、必ずしも黒／白に限定されるものではない。すなわち、黒バー／白バーは第１バー／第２バーの各一例である。ただし、以降の説明においても典型的なものとして黒バー／白バーと表現する。
【００３６】
また、この図４に示す黒バーおよび白バーは、いずれも細線と太線との２種類の線幅のバーで構成されているが、これも一例であり、現在の規格上は黒バーおよび白バーの線幅がそれぞれ４種類のものまで存在する。以下では主に、細線と太線の２種類の線幅のバーを例に挙げて説明するが、本件は２種類以外の線幅のバーで構成されたシンボルコードにも適用される。
【００３７】
図５は、帳票の一例を示した模式図である。
【００３８】
ここでは、例えばＡ４サイズの用紙２０１上のどこか（図５の例では右下隅）に図４に示すような一次元のシンボルコード１００が印刷又は貼付されている。
【００３９】
また、この帳票には、シンボルコード１００以外にも様々な文字や図形や罫線などが記録されている。
【００４０】
図３に示すシンボルコード認識装置３０は、例えば図５に示すような帳票を読み取って得た画像（画像データからなる画像）からシンボルコード１００が存在する領域を抽出し、その抽出した領域内のシンボルコード１００の内容を認識する装置である。
【００４１】
ここで、図５に一例を示す帳票２００上のシンボルコード１００は、用紙２０１上の右下隅に記録されているが、用紙２０１上のシンボルコード１００の記録位置および数はあらかじめは分かっていない。図３のシンボルコード認識装置３０は、データ上の画像からそのシンボルコード１００が存在する領域を見つけ出して抽出する。
【００４２】
また、帳票２００上のシンボルコード１００は貼付されたものであることを許容している。すなわち、そのシンボルコード１００は、必ずしも用紙２０１の辺と平行又は直角に貼付されているとは限らず、斜めに貼られている場合もある。このシンボルコード認識装置３０は、そのような斜めに貼られたシンボルコード１００も抽出、認識の対象としている。
【００４３】
図６は、走査線を示した図である。
【００４４】
図３に示すシンボルコード認識装置３０の抽出部３１では図１に示すスキャナ２で読み取った画像上に、第１ピッチ（例えば２．５ｍｍピッチ）の走査線３０１を設定する。ただし、スキャナ２で読み取って得た画像の画素は、その第１ピッチ（２．５ｍｍピッチ）よりも十分に細かなピッチ（例えば０．１ｍｍピッチ）で並んでいる。
【００４５】
ここで設定される走査線３０１は、シンボルコード１００の検出を行なう前に設定されるものであり、シンボルコード１００が仮に斜めに記録されているときはそのシンボルコード１００を斜めに横切る走査線となる。
【００４６】
図３に戻って説明を続ける。
【００４７】
図３に示すシンボルコード認識装置３０の第１抽出部３１１は、シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、各走査線上の、シンボルコードに重なる一次元領域を抽出する。具体的には、この第１抽出部３１１では、各走査線３０１（図６参照）上の画素の変化パターンに基づいてその変化パターンが以下の複数の基準を満たすか否かが判定され、それらの基準を満たす、走査線３０１上の領域（一次元領域）が抽出される。
【００４８】
（１）クワイエットゾーン１０４，１０５（図４参照）が前後に存在すること。
【００４９】
（２）黒バーと白バーとの間の線幅比が規定値を満たすこと。
【００５０】
（３）複数種類の線幅のバーどうしの間の線幅比が規定値を満たすこと。
【００５１】
（４）バーの本数が規定値を満たすこと。
【００５２】
（５）スタートコード１０１およびストップコード１０３（図４参照）が認識されること。
【００５３】
これら（１）〜（５）の具体例については後述の第２実施形態の説明に譲る。
【００５４】
図３に示すシンボルコード認識装置３０の第２抽出部３１２は、第１抽出部３１１で抽出された、隣接する走査線上の一次元領域内の画素の変化パターンの類似性に基づいて隣接する走査線上の一次元領域を互いに統合する。この第２抽出部３１２は、この統合により、画像上のシンボルコードが記録された二次元領域を抽出する。具体的には、この第２抽出部３１２では、複数の走査線３０１（図６参照）上の、第１抽出部３０１で抽出された複数の一次元領域の中から以下の複数の基準を満たす一次元領域を抽出し、抽出された複数の一次元領域を二次元領域に統合する第１統合処理を実行する。
【００５５】
（６）それら複数の一次元領域の走査線３０１に沿う方向の位置が規定値内で一致すること。
【００５６】
（７）それら複数の一次元領域の白バーの位置が規定値内で一致すること。
【００５７】
（８）黒バーの本数が規定値内で一致すること。
【００５８】
（９）黒バーが複数の走査線３０１に跨る方向、すなわち黒バーが延びる縦方向（図４参照）に連続していること。
【００５９】
（１０）それら複数の一次元領域のスタートコード１０１およびストップコード１０３（図４参照）で表わされるシンボルの種別が一致すること。
【００６０】
これら（６）〜（１０）の具体例についても後述の第２実施形態の説明に譲る。
【００６１】
シンボルコード１００が帳票用紙２０１（図５参照）の辺に平行に印刷又は貼付されており、かつスキャナ２（図１，図２参照）で読み取って得た画像上のシンボルコード１００（図４，図５参照）の潰れや掠れが少ないときは上記の第１統合処理だけで十分である。しかしながら、ここでは、さらに低画質の画像が得られた場合であっても、シンボルコード１００が印刷又は貼付された二次元領域を正確に抽出するために、以下の第２抽出処理が行なわれる。
【００６２】
すなわち、第１抽出部３１１は、上記（１）〜（５）の基準のうちの、先ずは（１）〜（４）の基準を満たす一次元領域を一次候補領域として抽出し、さらに、一次候補領域の中から、上記（５）の基準を満たす一次候補領域を二次候補領域として抽出する。
【００６３】
また、第２抽出部３１２は、複数の走査線３０１上の、第１抽出部３１１で抽出された複数の二次候補領域の中から、上記（６）〜（１０）の基準を満たす二次候補領域を抽出する。尚、（６）〜（１０）における「一次元領域」は、上記の（１）〜（５）の基準を満たす一次元領域であり、ここでの「二次元候補領域」そのものである。さらに、この第２抽出部３１２は、以下の基準を満たす一次候補領域も統合の対象とする。
【００６４】
（１１）抽出された複数の二次候補領域に挟まれた一次候補領域であること。
【００６５】
（１２）上記（６）〜（１０）の基準のうちの（１０）の基準を除く、（６）〜（９）の基準を満たすこと。
【００６６】
すなわち、ここでは、上記の（６）〜（１０）の基準を満たす二次候補領域と、（１１）〜（１２）の基準を満たす一次候補領域との双方を二次元領域に統合する第２統合処理が実行される。
【００６７】
シンボルコード１００が帳票用紙２０１（図５参照）上に斜めに貼られていた場合、上記の第１統合処理および第２統合処理では、シンボルコードが記録された二次元領域を抽出することができない場合がある。そこで、第２抽出部３１２では、さらに以下の第３統合処理も行なわれる。ここでは、第１抽出部３１１で抽出された一次候補領域のうちの、第２抽出部３１２における第１統合処理および第２統合処理のいずれにおいても統合対象から外れた第３統合処理対象一次候補領域を対象とし、以下の複数の基準を満たす第３統合処理対象一次候補領域が二次元領域に統合される。
【００６８】
（１３）スタートコードが検出されている第３統合処理対象一次候補領域のスタートコードの開始点から黒バーの延びる方向とは直角の方向に延びる直線と交わる第３統合処理対象一次元候補領域であること。
【００６９】
（１４）シンボルコードの傾きが規定値内で一致すること。
【００７０】
（１５）黒バーが複数の走査線に跨る方向に連続すること。
【００７１】
（１６）シンボルコードの種別が一致するか、又はシンボルコードの種別が不明の場合はシンボルコードの種別が一致する複数の第３統合処理対象一次元候補領域に挟まれていること。
【００７２】
これら（１３）〜（１６）の処理の具体例についても、後述の第２実施形態の説明に譲る。
【００７３】
また、図３のシンボルコード認識装置３０の認識部３２では、抽出部３１で抽出されて二次元領域内に記録されているシンボルコード１００（図４参照）の内容が以下のようにして認識される。この認識部３２では、抽出部３１で採用しているピッチの走査線３０１（図６参照）とは異なるピッチの走査線が採用される。
【００７４】
図７は、認識部３２で採用される第２走査線を示す図である。
【００７５】
この第２走査線３０２は、シンボルコード１００のバーが延びる方向に対し直角な方向に延びる走査線である。したがって、シンボルコード１００が図７に示すように画像上で斜めに配置されているときは、斜めの走査線が採用される。また、図６に示す走査線３０１は、例えば２．５ｍｍピッチの走査線であるが、ここで採用される第２走査線３０２は、例えば０．５ｍｍピッチ等、走査線３０１よりも狭ピッチの走査線である。
【００７６】
図３に戻って説明を続ける。
【００７７】
図３に示す認識部３２を構成する補正部３２１では、抽出部３１で抽出された二次元領域内の、第２走査線３０２（図７参照）上のバーの本数を、第２走査線３０２ごとに計測し、計測した本数が規定本数と合致するか否かを判定する。そしてこの補正部３２１では、計測した本数が規定本数と合致しない走査線３０２について、黒バーの分割又は統合によりその第２走査線３０２上のバーの本数を規定本数に合致させる補正処理を実行する。認識部３２を構成する第１認識部３２２および第２認識部３２３は、補正部３２１により補正された後のシンボルコードについて、以下に説明する第１の認識処理および第２の認識処理をそれぞれ実行する。
【００７８】
第１認識部３２２は、抽出部３１で抽出された二次元領域について、各第２走査線３０２（図７参照）上の画素の変化パターンに基づいて、各第２走査線３０２ごとにその二次元領域内のシンボルコードの内容を仮認識する第１認識処理が実行する。
【００７９】
また、第２認識部３２３は、抽出部３１で抽出された二次元領域を、各第２走査線上の画素の変化パターンに基づいて、その二次元領域を各キャラクタの領域に分けるとともに各１つのキャラクタの領域内をさらに複数のサブ領域に分ける。そしてこの第２認識部３２３は、このように分けた各サブ領域ごとにキャラクタを仮認識する第２認識処理を実行する。
【００８０】
さらに、統合部３２４は、第１認識部３２２による仮認識結果と第２認識部３２３による仮認識結果が統合されて、二次元領域内に記録されているシンボルコードの内容が認識される。
【００８１】
これら補正部３２１，第１認識部３２２，第２認識部３２３，および統合部３２４における各処理の具体例については、後述の第２実施形態での説明に譲る。
【００８２】
図３に示す第１実施形態のシンボルコード認識装置３０では、以上の処理を実行した後、帳票用紙を画像上で９０°回転させてもう一度同じ処理を実行する。これは、シンボルコード１００（図５参照）がその図５に示す向きとは９０°異なる向きに印刷又は貼付されている場合があることを考慮したものである。この第１実施形態のシンボルコード認識装置３０では、以上のようにして、帳票用紙上のシンボルコードが記録された領域が抽出され、その領域内のシンボルコードの内容が認識される。
【００８３】
次に、より具体的な第２実施形態を説明する。この第２実施形態においても、図１に示すシステム構成および図２に示すハードウェア構成は、第１実施形態と共通であり、それらの図をそのまま参照することにし、再説明は省略する。また、この第２実施形態では、図４〜図７を参照して説明した内容も第１実施形態と共通であり、それらの図４〜図７を参照しての再説明も省略する。
【００８４】
図８は、第２実施形態のシンボルコード認識装置のブロック図である。
【００８５】
このシンボルコード認識装置５０も、図３に示す第１実施形態のシンボルコード認識装置３０と同様、図１，図２に示すノートＰＣ１内でシンボルコード認識プログラムが実行されることにより、そのノートＰＣ１内に実現する機能を表わしている。
【００８６】
このシンボルコード認識装置５０は、画像入力部５１、画像格納部５２、抽出部５３、抽出結果格納部５４、認識部５５および結果出力部５６を有する。
【００８７】
画像入力部５１は、図１，図２に示すスキャナ２で帳票用紙から読み取られた画像の入力を受ける。この画像入力部５１は、ハードウェア上は、図２に示すインタフェース１６に相当する。あるいは、この画像入力部５１は、スキャナ２から画像の入力を受ける要素に限定されず、例えば、通信回線を介して画像を受け取る要素、可搬型記憶媒体（例えばＤＶＤなど）の装填を受け、その可搬型記憶媒体から画像を受け取る要素、などであってもよい。あるいは、この画像入力部５１は帳票用紙から直接に画像を読み取る要素、例えば図１，図２に示すスキャナ２そのものであってもよい。
【００８８】
画像入力部５１で得られた画像は、画像格納部５２に一旦格納される。この画像格納部５２は、ハードウェア上は、図２に示す記憶部１３に相当する。
【００８９】
抽出部５３は、画像格納部５２に格納されている帳票の画像からその画像上に存在するシンボルコードが記録されている領域を抽出する。この抽出部５３における各種処理は、図２に示すＣＰＵ１１とそのＣＰＵ１１で実行されるシンボルコード認識プログラムとの複合で実現する。この抽出部５３は、抽出制御部５３１、仮抽出部５３２、キー検出部５３３、候補統合部５３４、傾き算出部５３５、および傾き候補統合部５３６を有する。これら各部５３１〜５３６の説明は後に譲る。尚、これら各部５３１〜５３６のうちの、仮抽出部５３２とキー検出部５３３を合わせた要素が、前述の第１実施形態（図３参照）の第１抽出部３１１に対応する。また、候補統合部５３４、傾き算出部５３５、および傾き候補統合部５３６を合わせた要素が、前述の第１実施形態の第２抽出部３１２に対応する。
【００９０】
抽出部５３で抽出された情報は、抽出結果格納部５４に格納される。この抽出結果格納部５４も、画像格納部５２と同様、ハードウェア上は、図２に示す記憶部１３がこれに相当する。
【００９１】
認識部５５は、画像格納部５２に格納されている帳票画像および抽出結果格納部５４に格納されている抽出結果に基づいて、抽出部５３で抽出された領域に記録されているシンボルコードの内容を認識する。この認識部５５における各種処理も、図２に示すＣＰＵ１１と、そのＣＰＵ１１で実行されるシンボルコード認識プログラムとの複合で実現する。ただし、この認識部５５中の認識結果格納部５５２は、ハードウェア上は図２の記憶部１３がこれに相当する。
【００９２】
この認識部５５は、認識制御部５５１、認識結果格納部５５２、シンボルデータ作成部５５３、シンボルデータ補正部５５４、マトリックス処理部５５５、ラインソート処理部５５６、認識結果判定部５５７を有する。ここで、これら各部５５１〜５５７のうち、主にシンボル補正部５５４が前述の第１実施形態（図３参照）の補正部３２１に対応する。また、ラインソート処理部５５６およびマトリックス処理部５５５が、前述の第１実施形態の、それぞれ第１認識部３２２および第２認識部３２３に対応する。さらに、認識結果判定部５５７が前述の第１実施形態の統合部３２４に対応する。
【００９３】
認識部５５を構成するこれらの各部５５１〜５５７の説明も後に譲る。
【００９４】
認識部５５で得られたシンボルコードの認識結果は、結果出力部５６から出力される。この結果出力部５６から出力された認識結果の用途は、その帳票の用途に応じて異なり、ここでは、認識結果が出力されるという説明にとどめる。
【００９５】
図９，図１０は、図８に示すシンボルコード認識装置５０で実行される処理を示すフローチャートの、それぞれ前半部分、後半部分を示す図である。図９は、図８の抽出部５３で実行される処理を示し、図１０は、図８の認識部５５で実行される処理を示している。
【００９６】
以下では、図８のブロック図と図９，図１０のフローチャートの双方を参照しながら説明する。
【００９７】
抽出部５３の抽出制御部５３１は、抽出部５３の各処理全体の制御を担っている。
【００９８】
仮抽出部５３２では、画像から一次候補領域が抽出される（図９ステップＳ１１）。すなわち仮抽出部５３２では、画像格納部５２から１本の走査線３０１（図６参照）上の画像を読み出し、以下のアルゴリズムに従って一次候補領域が抽出される。
（ａ）読み出した一走査線分の画像の先頭からその走査線の終了点に向かって黒画素の検出を行なう。その走査線の終了点まで黒画素が検出されなかった場合は、下記（ｃ）に分岐する。
【００９９】
図１１は、走査線を示す図である。
【０１００】
ここでは、１番目の走査線（以下、「ライン１」と称することがある。２番目以降の走査線についても同様である。）上の画素を左から右に向かって走査し、黒画素の存在が検出される。ライン２以降の各走査線についても同様である。尚ここでは、シンボルマークのみ走査しているように示されているが、図６に示すように、帳票用紙２０１の全体画像について走査され、各走査線について黒画素の検出が行なわれる。
（ｂ）黒画素が検出すると、その黒画素から続く一連の白黒パターンが、一次元シンボルコードとしての候補となり得るか否か確認する。
【０１０１】
下記の、「候補確認」の全ての条件を満たした場合は、一次候補領域としてその抽出情報を抽出結果格納部５４に格納する。
【０１０２】
「候補確認」の条件は、以下に再度示す通り、前述の第１実施形態における（１）〜（４）の条件である。
【０１０３】
（１）クワイエットゾーン１０４，１０５（図４参照）が前後に存在すること。
【０１０４】
（２）黒バーと白バーとの間の線幅比が規定値を満たすこと。
【０１０５】
（３）複数種類の線幅のバーどうしの間の線幅比が規定値を満たすこと。
【０１０６】
（４）バーの本数が規定値を満たすこと。
【０１０７】
図１２は、上記（１）〜（４）による候補確認処理を示す模式図である。
【０１０８】
上記（１）のクワイエットゾーンの存在については、白黒パターンが開始される先頭の黒画素の前にバーが存在しない所定長の空白が存在し、かつ白黒パターン終端の黒画素の後ろにバーが存在しない所定長の空白が存在するか否かが確認される。
【０１０９】
図１３は、上記（２），（３）の、線幅比が規定値を満たすか否かの確認処理の説明図である。
【０１１０】
図１３（Ａ），（Ｂ）は、それぞれ黒バーおよび白バーの、走査線方向の幅のヒストグラムを示した図である。横軸は、線幅（太さ）を表わし、縦軸はその線幅（太さ）のバーの本数を表わしている。
【０１１１】
ここでは、黒バーおよび白バーの線幅が細／太の２種類であるシンボルコードを例に挙げて説明しており、線幅の細／太に対応する２つのピークが存在する。これら２つのピークは、シンボルコードの画像に潰れや掠れ等があっても十分に判別可能である。
【０１１２】
ここでは、各ピークが線幅を表わすものとして、黒バーと白バーの細線どうしの比率（ｐｂ１／ｐｗ１）と太線どうしの比率（ｐｂ２／ｐｗ２）が求められ、以下のように、それらの比率が規定値１．０−α１〜１．０＋α１の範囲内にあるか否かが判定される。
【０１１３】
１．０−α１≦ｐｂ１／ｐｗ１≦１．０＋α１
１．０−α１≦ｐｂ２／ｐｗ２≦１．０＋α１
ここで、α１はあらかじめ定められた、１．０よりも小さい値である。
【０１１４】
ここでは、バーの線幅は細／太の２種類であるとして説明しているが、３種類以上の線幅を持つコマンドコードについても同様にして判定される。
【０１１５】
また、ここでは、黒バーと白バーとのそれぞれについて、細線に対する太線の幅どうしの比率ｐｂ２／ｐｂ１，ｐｗ２／ｐｗ１が求められ、規格上の幅比率をｒ、ｒよりも小さいあらかじめ定められた値をα２としたとき、以下のように、それらの比率が規定値ｒ−α２〜ｒ＋α２の範囲内にあるか否かが判定される。
【０１１６】
ｒ−α２≦ｐｂ２／ｐｂ１≦ｒ＋α２
ｒ−α２≦ｐｗ２／ｐｗ１≦ｒ＋α２
尚、線幅が細／太の２種類よりも種類の多いシンボルコードの場合、最細のバーに対応するピーク（図１３のｐｂ１，ｐｗ１）を基準としたときの各太さのバーに対応するピーク（図１３のｐｂ２，ｐｗ２）が各規定値を満たすか否かが判定基準となる。
【０１１７】
尚、図１３には、各２つのピークの太さｐｂ１，ｐｂ２，ｐｗ１，ｐｗ２の間のボトムの太さｂｂ１，ｂｗ１も示されているが、これらのボトムについては後述する。
【０１１８】
上記（４）については、一本の走査線上の、先頭の黒画素（図１１参照）から所定の最大間隔以内で繰り返す黒バーの本数が計数され、その本数がある規定値以上であるか否かが判定される。黒バーの本数が少な過ぎるときは、シンボルコードではなく、帳票上の文字や図形の黒線がたまたま最大間隔以内で繰り返していたものとしてシンボルコードの候補からは除外される。ただし、黒バーの本数が多いことについての上限は設けられていない。長いコマンドコードも有り得るからである。
【０１１９】
このようにして上記（１）〜（４）の条件が満たされると、その走査線上の、それらの条件を満たした一次元領域を特定する情報が抽出結果格納部５４に格納される。
（ｃ）１本の走査線について、上記（ａ），（ｂ）の処理が終了すると、次の走査線上の画像が読み出され、その走査線について上記（ａ），（ｂ）の処理が行なわれる。
【０１２０】
図８の抽出部５３のキー検出部５３３では、以上のようにして抽出した一次候補領域の情報を抽出結果格納部５４から読み出し、その一次候補領域に対し、
（５）キー検出処理、すなわち、スタートコードおよびストップコードの検出処理が行なわれる（図９のステップＳ１２）。
【０１２１】
図１４は、キー検出処理の説明図である。
【０１２２】
ライン１についてキー、すなわち、スタートコードおよびストップコードが検出されると、そのライン１上の一次候補領域は二次候補領域として抽出結果格納部５４に情報が格納される。この処理が各ライン（走査線）上の各一次候補について行なわれる。
【０１２３】
ここに示す種類のシンボルコードの場合、スタートコード、キャラクタコードを構成する１文字分のコード、およびストップコードのいずれも、５本の黒バーとそれらの黒バーに挟まれた４本の白バーとの合計９本のバーで構成されている。
【０１２４】
ここでは、バーの太さは、図１３に示すボトムの太さｂｂ１，ｂｗ１をしきい値としてその太さよりも細いバーを細線、その太さよりも太いバーを太線として２値化している。この２値化した細線、太線の配列が、スタートコード、ストップコードを構成する９本のバーのうち８本まで一致している場合、又は７本が一致し不一致の２本が互いに隣接している場合に、スタートコード、ストップコードが検出されたものとして扱われる。潰れや掠れにより完全には一致しない場合を考慮したものである。７本まで一致していたときに、不一致の２本が互いに隣接していることを条件としているのは、本来はその２本の一方が細く他方が太いバーであったときに、それらの細、太が逆に検出されることがあるからである。
【０１２５】
次に候補統合部５３４において、二次候補領域、すなわちキー（スタートコードとストップコード）が検出された一次元領域を基準に候補の統合が行なわれる（図９のステップＳ１３）。ここでは、以下に示す、「統合確認」の全ての条件を満たした場合に、シンボルコードが記録されている二次元領域を表わす統合情報が作成される（図１６参照）。
【０１２６】
ここでの「統合確認」の条件は、下記の通りである。これらの条件は、前述の第一実施形態における（６）〜（１０）の条件と同一である。
【０１２７】
（６）複数の二次元候補領域の走査線３０１（図６参照）に沿う方向の位置が規定値内で一致すること。
【０１２８】
（７）複数の二次候補領域の白バーの位置が規定値内で一致すること。
【０１２９】
（８）黒バーの本数が規定値内で一致すること。
【０１３０】
（９）黒バーが複数の走査線３０１に跨る方向、すなわち例えば図４における黒バーが延びる縦方向に連続していること。
【０１３１】
（１０）複数の二次候補領域のスタートコード１０１およびストップコード１０３（図４参照）で表わされるシンボルの種類が一致すること。
【０１３２】
図１５は、統合確認処理の説明図である。
【０１３３】
ここでは、ライン１〜３のいずれにも、上記の（１）〜（５）条件を満たした二次候補領域が存在するものとする。
【０１３４】
このとき、上記（６）の条件として、ライン１の二次候補領域とライン２の二次候補領域の、ラインに沿う左右方向の位置があらかじめ定められた誤差範囲内で互いに一致するか否かが判定される。
【０１３５】
また、上記（７）の白バーの位置の判定方法として、ここでは以下の方法が採用されている。
【０１３６】
ここでは、太線の白バーに着目し、ライン１上の太線の白バーの本数が数えられ、またライン２上の、ライン１上の白バーと同じ位置に存在する太線の白バーの本数が数えられる。そして、例えばライン１上の太線の白バーの本数に対する、そのライン１上の太線の白バーと同じ位置にライン２上の太線の白バーが５０％以上存在すれば、ライン１上の白バーとライン２上の白バーが一致していると判定される。ライン２とライン３、およびそれ以外の隣接するライン上の二次候補領域どうしの間でも同様に調べられる。
【０１３７】
上記（８）の黒バーの本数が一致するか否かについては、各ライン上の黒バーの本数が数えられ、例えばライン１上の黒バーの本数に対しライン２上の黒バーの本数が±１０％以内の程度の範囲内で一致すれば、ライン１の黒バーの本数とライン２の黒バーの本数とが一致していると判定される。他のラインについても同様である。
【０１３８】
上記（９）の黒バーの連続性については、図８の画像格納部５２に格納されている元の画像が参照され、黒バーが、その延在方向、すなわち、図１５の縦方向に隣接するラインまで繋がっているか否かが調べられる。このように、黒バーが複数のラインを跨ぐ方向に連続していることが候補統合の１つの条件となる。
【０１３９】
さらに、上記（１０）の通り、スタートコード／ストップコードが一致するか否か、すなわち、各ライン上のシンボルコードの種別が一致するか否かが調べられる。シンボルコードの種別が一致することが統合の１つの条件となる。
【０１４０】
図１６は、統合情報の模式図である。
【０１４１】
例えば図１５に示すライン１〜３について、上記（６）〜（１０）の条件を満たすと図１６に示すように、それらのライン１〜３を全て含む二次元のシンボル領域を表わす統合情報が作成される。この統合情報は、この二次元のシンボル領域に１つのシンボルコードが記録されていることを表わしている。
【０１４２】
上記（６）〜（１０）の条件を満たさない場合は、以下のように取り扱われる。
【０１４３】
ここでは、図１５に示すライン１とライン３については上記（１）〜（４）の条件を満足し、さらに（５）の条件であるスタートコードおよびストップコードが検出されたものとする。これに対し、それらのライン１，３に挟まれたライン２については、上述の（１）〜（４）は満たすものの、（５）のスタートコードおよびストップコードは検出されなかったものとする。この場合であっても、
（１１）スタートコードおよびストップコードが共に一致する２つのラインに挟まれていること。
（１２）上記（６）〜（１０）の基準のうち（１０）の基準を除く（６）〜（９）の基準を満たすこと。
の２つの条件を満足する場合は、スタートコードおよびストップコードが共に一致する２つのライン上の二次候補領域に挟まれたライン上の一次候補領域も、同じ１つのシンボルコードが記録されたラインとして統合の対象となる。
【０１４４】
次に、未だ統合されていない一次候補領域が存在するか否かが判定される（図９のステップＳ１４）。
【０１４５】
シンボルコードが帳票上に傾きのない姿勢で印刷又は貼付されていたときは、以上の処理で、シンボルコードが記録された二次元領域の抽出処理は終了し、その二次元領域を表わす統合情報が抽出結果格納部５４に格納される（図９ステップＳ１７）。
【０１４６】
一方、未だ統合されなかった一次候補領域が存在する場合は、シンボルコードが斜めに記録されていることが予想され、以下の処理が実行される。
【０１４７】
ここでは、先ず、図８の抽出部５３の傾き算出部５３５において、未だ統合されていない各一次候補領域に対し、傾き算出処理が行なわれる（図９ステップＳ１５）。
【０１４８】
図１７は、傾き算出処理の説明図である。
【０１４９】
この図１７には、各ライン１〜３上の、黒白のパターンが連続している各一次候補領域が示されている。
【０１５０】
ここでは、画像格納部５２に格納されている帳票画像を基にして、各ライン１〜３上の各一次元候補領域の先頭の黒バーの延びる方向が調べられ、この黒バーの延びる方向からこの白黒パターンがシンボルコードを表わしているとした場合の、そのシンボルコードの傾きが算出される。この算出された傾き情報も抽出結果格納部５４に格納される。
【０１５１】
次に、図８の傾き候補統合部５３６において、傾きが検出された一次候補領域に対し、候補統合処理が行なわれる（図９ステップＳ１６）。
【０１５２】
ここでは、傾きが検出された一次候補領域が以下の（１３）〜（１６）の基準を満たす場合に統合され、１つのシンボルコードが記録されたシンボル領域を表わす統合情報が作成される。尚、以下の（１３）〜（１６）の基準は、前述の第１実施形態における（１３）〜（１６）の基準と同一の基準である。
【０１５３】
（１３）スタートコードが検出されている一次候補領域のスタートコードの開始点から黒バーの延びる方向とは直角の方向に延びる直線と交わる一次候補領域であること。
【０１５４】
（１４）一次候補領域どうしの傾きが規定値内で一致すること。
【０１５５】
（１５）黒バーが複数のラインに跨る方向に連続していること。
【０１５６】
（１６）シンボルコードの種別が一致すること。又は、シンボルコードの種別が不明の場合は、シンボルコードの種別が一致する複数の一次候補領域に挟まれていること。
【０１５７】
図１８は、傾き候補統合部５３６における上記（１３）〜（１６）の処理の説明図である。
【０１５８】
ここでは、上記（１３）について調べるために、各ライン上の一次候補領域の先頭の黒バーから、その黒バーの延びる方向に対する直角の方向（傾いたシンボルコードに対し平行な方向）に延ばした直線が隣接するライン上の一次候補領域と交わるか否かが調べられる。図１８に示す例では、ライン２上の一次候補領域の先頭の黒バーからシンボルコードに平行に斜め上に引いた直線は、ライン１上の一次候補領域と交わっている。またライン３上の一次候補領域の先頭の黒バーからシンボルコードに平行に斜め上に引いた直線は、ライン２上の一次候補領域、さらにライン１上の一次候補領域と交わっている。ここでは、このような交わり方をしている場合に、上記（１３）の条件を満足していると判定している。
【０１５９】
上記（１４）の傾きの一致については、画像格納部５２に格納されている画像を基に、各ライン上の一次候補領域の黒バーの延びる方向が調べられ、黒バーの延びる方向が規定値内で一致するか否かが判定される。
【０１６０】
上記（１５）の黒バーの連続性については、画像格納部５２に格納されている画像を基に、各ライン上の一次候補領域の黒バーが隣接するラインを跨いで連続しているか否かが調べられる。この黒バーが連続していることも、統合の１つの条件となる。
【０１６１】
上記（１６）のシンボルコードの種別が一致していること、という条件については、スタートコードとストップコードとの一方しか検出されていない一次候補領域であっても、上記（１３）〜（１５）の各条件に合致し、かつシンボルコードの種別が一致していればよい。
【０１６２】
さらには、スタートコードとストップコードのいずれもが検出されなかった一次候補領域であっても、シンボルコードの種別が一致している一次候補領域に挟まれており、かつ、上記（１３）〜（１５）の各条件に合致していれば統合対象となる。
【０１６３】
図１９は、シンボルコードが斜めに記録されていたときの統合情報の模式図である。
【０１６４】
図１７，図１８を参照して説明しているライン１〜３が上記（１３）〜（１６）の条件を満足する場合、それらのライン１〜３上の一次候補領域が図１９に示す１つのシンボル領域として統合される。
【０１６５】
図８の候補統合部５３４（図９のステップＳ１３）で作成された統合情報（図１６参照）、および図８の傾き候補統合部５３６（図９ステップＳ１６）で作成された統合情報（図１９参照）は、抽出結果格納部５４に格納される（図９ステップＳ１７）。
【０１６６】
以上により、図８に示す第２実施形態のシンボルコード認識装置５０の抽出部５３の説明を終了し、次に、認識部５５について説明する。
【０１６７】
この認識部５５では、画像格納部５２に格納されている画像に基づき、抽出結果格納部５４に格納された統合情報や傾き情報等が参照されて、統合情報により表わされるシンボル領域内の画像パターンが調べられる。この認識部５５では、抽出部５２で採用された走査線３０１（図６参照）よりも細かいピッチの第２走査線が採用される。またこの認識部５５では、傾き情報に基づき、傾いているシンボルコードであっても、その傾いたシンボルコードに対し平行な第２走査線３０２が採用される（図７参照）。
【０１６８】
この認識部５５の認識制御部５５１は、認識部５５の各処理全体の制御を担っている。
【０１６９】
認識結果格納部５５２には、後述するマトリックス処理部５５５、ラインソート処理部５５６、および認識結果判定部５５７で得られた認識結果などが格納される。
【０１７０】
シンボルデータ作成部５５３では、シンボルデータが作成される（図１０ステップＳ２１）。
【０１７１】
図２０は、シンボルデータの一例を示す図である。
【０１７２】
このシンボルデータ作成部５５３では、図７に示す第２走査線３０２のそれぞれについて、各第２走査線３０２を左から右に辿ったときの黒バーの幅、白バーの幅を交互に記録した、例えば図２０（Ａ）に示すようなシンボルデータが作成される。
【０１７３】
図２０（Ａ）と図２０（Ｂ）との関係については後述する。
【０１７４】
シンボルデータ補正部５５４では、シンボルデータ作成部５５３で作成されたシンボルデータが補正される（図１０ステップＳ２２）。
【０１７５】
図２１は、シンボルデータ補正前のシンボルコードの一例を示した図である。また図２２は、シンボルデータ補正後のシンボルコードの一例を示した図である。
【０１７６】
画像上のシンボルコードには、図２１に示すように、潰れや掠れなどが発生している場合がある。
【０１７７】
そこでここでは、各第２走査線（以下、この第２走査線を「ライン」と称する）ごとに黒バーの本数が数えられる。図４を参照して説明したように、ここで例示している種別のシンボルコードの場合、１つのキャラクタは、５本の黒バーとそれらの黒バーに挟まれた４本の白バーとからなる合計９本のバーで構成されている。したがって各ラインごとの黒バーの本数は５の倍数となるはずである。しかしながら実際には、潰れや掠れなどにより、５の倍数から外れた本数が数えられることがある。
【０１７８】
図２１に示す例の場合、ライン１，２の黒バーの本数は１本少ない３４本と数えられている。
【０１７９】
ライン３，４，５については、５の倍数である３５本と数えられている。
【０１８０】
ライン６については、１本多い３６本と数えられている。
【０１８１】
そこでシンボルデータ補正部５５４では、図２２に示すように、規定本数（ここでは３５本）よりも少ない本数が数えられたラインについては、最も太い黒バーから順に１本の黒バーを２本に分割する処理が行なわれる。一方、規定本数よりも多い本数が数えられたラインについては、最も細い白バーから順に黒で埋め、その白バーの両隣の黒バーを１本の黒バーに統合する処理が行なわれる。
【０１８２】
以上のシンボル補正処理は、シンボルデータ作成部５５３で作成されたシンボルデータ上で行なわれる。
【０１８３】
図２０（Ａ）はシンボルデータ補正前のシンボルデータの一例を表わしており、図２０（Ｂ）はシンボルデータ補正後のシンボルデータの一例を表わしている。
【０１８４】
図２０（Ａ）では、左から３番目の欄の、黒バーを意味する「黒」の太さが「１０」と記録されており、この黒バーが最も太い黒バーであるとする。また、このラインについて黒バーの本数を数えた結果、黒バーが１本不足していたとする。
【０１８５】
図２０（Ｂ）では、この「黒：１０」が、「黒：４、白：２、黒：４」に分割されている。
【０１８６】
このようなシンボルデータ補正によって必ずしも正しく補正されるとは限らないが、正しく補正される可能性も高い。また、正しく補正されなかった場合であっても、後の処理により、最終的にはシンボルコードが正確に認識される。
【０１８７】
図８のマトリックス処理部５５５では、シンボルデータが１キャラクタごと、かつ１キャラクタについて複数にマトリックス分割され（図１０ステップＳ２３）、さらにマトリックス分割されたシンボルデータのパターン照合が行なわれる（図１０ステップＳ２４）。
【０１８８】
図２３は、マトリックス処理部における処理内容の説明図である。
【０１８９】
図２３（Ａ）に示すように、シンボルコードを、横方向には１キャラクタごとに分割し、縦方向には、ここでは３つのグループの分割している。ここでは、このように縦横ともに複数に分割することをマトリックス分割と称している。
【０１９０】
次に、図２３（Ａ）のようにマトリックス分割したときの各グループ領域ごとにシンボルデータのパターン照合が行なわれる。ここでパターン照合とは、画像から作成したシンボルデータ（図２０参照）と各キャラクタを表わす正しいパターンとを照合し、シンボルデータがどのキャラクタを表わしているかを認識する処理をいう。
【０１９１】
図２３（Ｂ）は、マトリックス分割されたときの１つのグループ領域を示している。このグループ内にも複数のラインが走っており、各ラインごとにキャラクタが認識される。すなわち、ここに示す例では、ライン１，２，３のいずれも数字の‘０’と認識され、ライン４，５は認識不能であったとする。このときは、図２３（Ｃ）に示すように、多数決でそのグループの認識結果として‘０’が採用される。
【０１９２】
マトリックス処理部５５５では、図２３（Ａ）の各グループについて以上の認識処理が行なわれた後、さらにシンボルコード全体についての認識処理が行なわれる。
【０１９３】
図２４は、マトリックス処理部における処理内容の説明図である。
【０１９４】
上記の各グループごとの認識処理により、各キャラクタごとの３つのグループＩ，ＩＩ，ＩＩＩについて、図２６に示すように、Ｉ：「？１２３４」、ＩＩ：「０１２３４」、ＩＩＩ：「？１？４４」と認識されたものとする。ここで、「？」はそのグループについては認識不能であったことを表わしている。この場合、多数決による優先順位が付され、優先順位の高い順に、１：「０１２３４」、２：「０１２４４」、３：「０１２３５」、４：「０１２４５」と認識される。
【０１９５】
この認識結果は、優先順位の情報とともに、図８の認識結果格納部５５２に格納される。
【０１９６】
なお、ここでは、優先順位は決定されたものの、未だ最終認識結果は得られていない。
【０１９７】
図８のラインソート処理部５５６では、各ラインごとのシンボルデータのパターン照合が行なわれる（図１０ステップＳ２５）。
【０１９８】
図２５は、ラインソート処理部における処理内容の説明図である。
【０１９９】
ここでは各ラインごとにパターン照合が行なわれる。
【０２００】
図５に示す例では、例えばライン１について説明すると、ライン１は「？１２３４」と認識され、認識不能であったキャラクタの数を表わすＮＧ数は「１」である。
【０２０１】
ここでは、ラインごとに、ＮＧ数の少ない順に優先順位が付されている。同じＮＧ数のときは、ここでは、上側のラインほど優先順位を上げている。
【０２０２】
このラインソート処理部５５６における認識結果も、優先順位の情報とともに図８の認識結果格納部５５２に格納される。
【０２０３】
尚、上記のマトリックス処理部５５５における処理（図１０ステップＳ２３〜Ｓ２４）とラインソート処理部５５６における処理（図１０ステップＳ２５）は、時間の先後を問うものではなく、いずれの処理が先に行なわれてもよい。
【０２０４】
図８の認識結果判定部５５７では、マトリックス処理部５５５による認識結果とラインソート処理部５５６による認識結果が総合されて、最終的な認識結果が決定される（図１０ステップＳ２６）。
【０２０５】
図２６は、認識結果判定部の処理内容の説明図である。
【０２０６】
認識結果判定部５５７では、認識結果格納部５５２に格納されている、マトリックス処理部５５５による認識結果とラインソート処理部５５６による認識結果が読み出される。そしてこの認識結果判定部５５７では双方の認識結果が優先順位の高いものから順に比較され、双方の認識結果が一致した場合に、その一致した認識結果が最終の認識結果として決定される。図２６に示す例では、マトリックス処理部の優先順位１位の認識結果「０１２３４」とラインソート処理部の優先順位１位の認識結果「０１２３４」が一致しているため、この「０１２３４」が最終の認識結果となる。
【０２０７】
図２７は、認識結果判定部における比較の優先順位を示した図である。
【０２０８】
この図２７は、先ず最初に、マトリックス処理部での優先順位１位の認識結果とラインソート処理部での優先順位１位の認識結果とが比較されることを示している。そしてそれらの１位どうしの認識結果が不一致であったときは、マトリックス処理部の優先順位１位の認識結果と、ラインソート処理部の優先順位２位の認識結果が比較される。それでも不一致のときは、この図２７に従い、マトリックス処理部における優先順位２位の認識結果とラインソート処理部における優先順位１位の認識結果が比較される。
【０２０９】
ここで、マトリックス処理部における認識結果よりもラインソート処理部における認識結果について先に優先順位の低い認識結果に変更している。これは、ラインソート処理部による認識結果の方が比較的信頼度が高く、このため、ここではマトリックス処理部による認識結果についてはできるだけ優先順位上位の認識結果を利用することとしているのである。
【０２１０】
この第２実施形態においても、前述の第１実施形態と同様、以上の全ての処理を、帳票用紙を画像上で９０°回転させてもう一度実行する。シンボルコード１００（図５参照）が、その図５に示す向きとは９０°異なる向きに印刷又は貼付されている場合があることを考慮したものである。
【０２１１】
以上で第２実施形態の説明を終了する。
【０２１２】
以上の各実施形態によれば、潰れや掠れが発生したシンボルコードであっても、帳票用紙上からそのシンボルコードが記録された領域が抽出され、そのシンボルコードが正確に認識される。
【０２１３】
また、以上の各実施形態によれば、斜めに貼付されたシンボルコードについても同様に、帳票用紙上からそのシンボルコードが記録された領域が抽出され、そのシンボルコードが正確に認識される。
【０２１４】
尚、以上の各実施形態では、黒バー／白バーの線幅が細／太の２種類のシンボルコードの認識を例に挙げて説明したが、本件は３種類以上の線幅を有するシンボルコードの認識にも適用可能である。
【０２１５】
以下、本件の各種形態を付記する。
【０２１６】
（付記１）
シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、該各走査線上の、シンボルコードに重なる一次元領域を抽出する第１抽出部と、
前記第１抽出部で抽出された、隣接する走査線上の前記一次元領域内の画素の変化パターンの類似性に基づいて該隣接する走査線上の前記一次元領域を互いに統合することにより、前記画像上のシンボルコードが記録された二次元領域を抽出する第２抽出部と
を有する抽出部と、
前記抽出部で抽出された前記二次元領域に記録されているシンボルコードの内容を認識する認識部と
を有することを特徴とするシンボルコード認識装置。
【０２１７】
（付記２）
当該シンボルコード認識装置は、それぞれが複数種類の線幅を有する第１バーおよび第２バーの交互配列により、先頭にスタートコード、該スタートコードに続く一つ以上のキャラクタコード、および末尾にストップコードが記録され、さらに該スタートコードの前および該ストップコードの後ろにバーの配列が存在しないクワイエットゾーンが存在する一次元シンボルコードの内容を認識する装置であることを特徴とする付記１記載のシンボルコード認識装置。
【０２１８】
（付記３）
前記第１抽出部は、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たし、さらに、前記スタートコードおよび前記ストップコードが認識される一次元領域を抽出するものであることを特徴とする付記２記載のシンボルコード認識装置。
【０２１９】
（付記４）
前記第２抽出部は、複数の走査線上の、前記第１抽出部で抽出された複数の一次元領域の中から、該一次元領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに、スタートコードおよびストップコードにより表わされるシンボルの種別が一致する複数の一次元領域を抽出し、抽出された複数の一次元領域を互いに統合する第１統合処理を実行することにより、前記二次元領域を抽出するものであることを特徴とする付記２又は３記載のシンボルコード認識装置。
【０２２０】
（付記５）
前記第１抽出部は、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たす一次元領域を一次候補領域として抽出し、さらに、該一次候補領域の中から、前記スタートコードおよび前記ストップコードが認識される一次候補領域を二次候補領域として抽出するものであり、
前記第２抽出部は、複数の前記走査線上の、前記第１抽出部で抽出された複数の二次候補領域の中から、該二次候補領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに前記スタートコードおよび前記ストップコードにより表わされるシンボルコードの種別が一致する複数の二次候補領域を抽出し、さらに、抽出された複数の二次候補領域に挟まれた一次候補領域が存在し、該抽出された複数の二次候補領域に挟まれた一次候補領域が、該抽出された複数の二次候補領域と比較し、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、かつバーが複数の走査線に跨る方向に連続する場合に、該抽出された複数の二次候補領域と該抽出された複数の二次候補領域に挟まれた一次候補領域とを統合する第２統合処理を実行することにより、前記二次元領域を抽出するものであることを特徴とする付記４記載のシンボルコード認識装置。
【０２２１】
（付記６）
前記第２抽出部が、前記第１抽出部で抽出された前記一次候補領域のうちの当該第２抽出部における前記第１統合処理および前記第２統合処理のいずれにおいても統合対象から外れた第３統合処理対象一次候補領域の中から、スタートコードが検出されている第３統合処理対象一次候補領域の該スタートコードの開始点から黒バーの延びる方向とは直角の方向に延びる直線と交わる第３統合処理対象一次元候補領域であり、該第３統合処理対象一次元候補領域内のシンボルコードの傾きが規定値内で一致し、バーが複数の走査線に跨る方向に連続し、シンボルコードの種別が一致するか又はシンボルコードの種別は不明であるがシンボルコードの種別が一致する複数の第３統合処理対象一次元候補領域に挟まれている第３統合処理対象一次元候補領域を統合する第３統合処理を実行することにより、前記二次元領域を抽出するものであることを特徴とする付記５記載のシンボルコード認識処理。
【０２２２】
（付記７）
前記認識部が、
前記抽出部で抽出された二次元領域上の互いに平行な第２ピッチの各第２走査線上の画素の変化パターンに基づいて、各第２走査線ごとに該二次元領域内のシンボルコードの内容を仮認識する第１認識処理を実行する第１認識部と、
前記抽出部で抽出された二次元領域を、前記各第２走査線上の画素の変化パターンに基づいて、該二次元領域を各キャラクタの領域に分けるとともに各１つのキャラクタの領域内をさらに複数のサブ領域に分けたときの該各サブ領域ごとにキャラクタを仮認識する第２認識処理を実行する第２認識部と、
前記第１認識部による仮認識結果と前記第２認識部による仮認識結果を統合して該二次元領域内に記録されているシンボルコードのキャラクタ列を認識する統合部とを有することを特徴とする付記１から６のうちいずれか１項記載のシンボルコード認識装置。
【０２２３】
（付記８）
前記二次元領域内の、前記第２走査線上のバーの本数を、該第２走査線ごとに計測し、計測した本数が規定本数と合致するか否かを判定し、合致しない走査線について、バーの分割又は統合により該第２走査線上のバーの本数を規定本数に合致させる補正処理を実行する補正部を有し、
前記第１認識部および前記第２認識部は、前記補正部により補正された後のシンボルコードについて前記第１の認識処理および前記第２の認識処理をそれぞれ実行するものであること特徴とする付記７記載のシンボルコード認識装置。
【０２２４】
（付記９）
コンピュータに、
シンボルコードが記録された画像を構成する画素のうちの互いに平行な第１ピッチの各走査線上の画素の変化パターンに基づいて、該各走査線上の、シンボルコードに重なる一次元領域を抽出し、
隣接する走査線上の前記一次元領域内の画素の変化パターンの類似性に基づいて該隣接する走査線上の前記一次元領域を互いに統合することにより、前記画像上のシンボルコードが記録された二次元領域を抽出し、
抽出された前記二次元領域に記録されているシンボルコードの内容を認識する処理を実行させることを特徴とするシンボルコード認識プログラム。
【０２２５】
（付記１０）
当該シンボルコード認識プログラムは、コンピュータに、それぞれが複数種類の線幅を有する第１バーおよび第２バーの交互配列により、先頭にスタートコード、該スタートコードに続く複数のキャラクタコード、および末尾にストップコードが記録され、さらに該スタートコードの前および該ストップコードの後ろにバーの配列が存在しないクワイエットゾーンが存在する一次元シンボルコードの内容を認識させるプログラムであることを特徴とする付記９記載のシンボルコード認識プログラム。
【０２２６】
（付記１１）
前記一次元領域の抽出にあたり、コンピュータに、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たし、さらに、前記スタートコードおよび前記ストップコードが認識される一次元領域を抽出させるものであることを特徴とする付記１０記載のシンボルコード認識プログラム。
【０２２７】
（付記１２）
前記二次元領域の抽出にあたり、コンピュータに、複数の走査線上の、抽出された複数の一次元領域の中から、該一次元領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに、スタートコードおよびストップコードにより表わされるシンボルの種別が一致する複数の一次元領域を抽出し、抽出された複数の一次元領域を互いに統合する第１統合処理を実行させることにより、前記二次元領域を抽出させることを特徴とする付記１０又は１１記載のシンボルコード認識プログラム。
【０２２８】
（付記１３）
前記一次元領域の抽出にあたり、コンピュータに、前記各走査線上の画素の変化パターンに基づいて、前記クワイエットゾーンが前後に存在し、第１バーと第２バーとの間の線幅比、前記複数種類の線幅のバーどうしの間の線幅比、およびバーの本数が各規定値を満たす一次元領域を一次候補領域として抽出し、さらに、該一次候補領域の中から、前記スタートコードおよび前記ストップコードが認識される一次候補領域を二次候補領域として抽出する処理を実行させ、
前記二次元領域の抽出にあたり、コンピュータに、複数の前記走査線上の、抽出された複数の二次候補領域の中から、該二次候補領域の、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、バーが複数の走査線に跨る方向に連続し、さらに前記スタートコードおよび前記ストップコードにより表わされるシンボルコードの種別が一致する複数の二次候補領域を抽出し、さらに、抽出された複数の二次候補領域に挟まれた一次候補領域が存在し、該抽出された複数の二次候補領域に挟まれた一次候補領域が、該抽出された複数の二次候補領域と比較し、該走査線に沿う方向の位置、バーの位置、およびバーの本数が各規定値内でそれぞれ一致し、かつバーが複数の走査線に跨る方向に連続する場合に、該抽出された複数の二次候補領域と該抽出された複数の二次候補領域に挟まれた一次候補領域とを統合する第２統合処理を実行させることにより、前記二次元領域を抽出させることを特徴とする付記１２記載のシンボルコード認識プログラム。
【０２２９】
（付記１４）
前記二次元領域の抽出にあたり、コンピュータに、抽出された前記一次候補領域のうちの前記第１統合処理および前記第２統合処理のいずれにおいても統合対象から外れた第３統合処理対象一次候補領域の中から、スタートコードが検出されている第３統合処理対象一次候補領域の該スタートコードの開始点から黒バーの延びる方向とは直角の方向に延びる直線と交わる第３統合処理対象一次元候補領域であり、該第３統合処理対象一次元候補領域内のシンボルコードの傾きが一致し、バーが複数の走査線に跨る方向に連続し、シンボルコードの種別が一致するか又はシンボルコードの種別は不明であるがシンボルコードの種別が一致する複数の第３統合処理対象一次元候補領域に挟まれている第３統合処理対象一次元候補領域を統合する第３統合処理を実行させることにより、前記二次元領域を抽出させるものであることを特徴とする付記１３記載のシンボルコード認識プログラム。
【０２３０】
（付記１５）
前記二次元領域に記録されているシンボルコードの認識にあたり、コンピュータに、
抽出された二次元領域上の互いに平行な第２ピッチの各第２走査線上の画素の変化パターンに基づいて、各第２走査線ごとに該二次元領域内のシンボルコードの内容を仮認識し、
抽出された二次元領域を、前記各第２走査線上の画素の変化パターンに基づいて、該二次元領域を各キャラクタの領域に分けるとともに各１つのキャラクタの領域内をさらに複数のサブ領域に分けたときの該各サブ領域ごとにキャラクタを仮認識し、
前記各第２走査線ごとに前記二次元領域内のシンボルコードの内容を仮認識した結果と前記各サブ領域ごとにキャラクタを仮認識した結果とを統合して該二次元領域内に記録されているシンボルコードのキャラクタ列を認識する認識処理を実行させることを特徴とする付記９から１４のうちいずれか１項記載のシンボルコード認識プログラム。
【０２３１】
（付記１６）
コンピュータに、
前記二次元領域内の、前記第２走査線上のバーの本数を、該第２走査線ごとに計測し、計測した本数が規定本数と合致するか否かを判定し、合致しない走査線について、バーの分割又は統合により該第２走査線上のバーの本数を規定本数に合致させる補正処理を実行させ、
前記補正処理により補正された後のシンボルコードについて前記認識処理を実行させること特徴とする付記１５記載のシンボルコード認識プログラム。
【符号の説明】
【０２３２】
１    ノートＰＣ
２    スキャナ
１０    本体装置
１１    ＣＰＵ
１２    メモリ
１３    記憶部
１４    操作部
１５    表示部
１６    インタフェース
１７    バス
２０    表示装置
３０，５０    シンボルコード認識装置
３１，５３    抽出部
３２，５５    認識部
５１    画像入力部
５２    画像格納部
５４    抽出結果格納部
５６    結果出力部
１００    シンボルコード
１０１    スタートコード
１０２    キャラクタコード
１０３    ストップコード
１０４，１０５    クワイエットゾーン
１１０    キーボード
２００    帳票
２０１    用紙
２１０    表示画面
３０１    走査線
３０２    第２走査線
３１１    第１抽出部
３１２    第２抽出部
３２１    補正部
３２２    第１認識部
３２３    第２認識部
３２４    統合部
５３１    抽出制御部
５３２    仮抽出部
５３３    キー検出部
５３４    候補統合部
５３５    傾き算出部
５３６    傾き候補統合部
５５１    認識制御部
５５２    認識結果格納部
５５３    シンボルデータ作成部
５５４    シンボルデータ補正部
５５５    マトリックス処理部
５５６    ラインソート処理部
５５７    認識結果判定部
【図１】
0005530895.tif 000002
【図２】
0005530895.tif 000003
【図３】
0005530895.tif 000004
【図４】
0005530895.tif 000005
【図５】
0005530895.tif 000006
【図６】
0005530895.tif 000007
【図７】
0005530895.tif 000008
【図８】
0005530895.tif 000009
【図９】
0005530895.tif 000010
【図１０】
0005530895.tif 000011
【図１１】
0005530895.tif 000012
【図１２】
0005530895.tif 000013
【図１３】
0005530895.tif 000014
【図１４】
0005530895.tif 000015
【図１５】
0005530895.tif 000016
【図１６】
0005530895.tif 000017
【図１７】
0005530895.tif 000018
【図１８】
0005530895.tif 000019
【図１９】
0005530895.tif 000020
【図２０】
0005530895.tif 000021
【図２１】
0005530895.tif 000022
【図２２】
0005530895.tif 000023
【図２３】
0005530895.tif 000024
【図２４】
0005530895.tif 000025
【図２５】
0005530895.tif 000026
【図２６】
0005530895.tif 000027
【図２７】
0005530895.tif 000028