(57)【特許請求の範囲】
【請求項１】
ラインセンサが印字媒体の印字が予定されている行を走査する際に、黒画素と白画素に対応して出力する“１”“０”の２値画素データからなるスキャンデータを取込み、そのスキャンデータに対して所定の解析を行って、当該行に印字がされているか否かを判定する印字有無判定方法において、
（ａ）１走査分のスキャンデータに対して１バイトごとの“１”の画素データを計数するバイト画素カウンタを備え、
（ｂ）走査を行うたびに、１バイトごとの“１”の画素データの数を前記バイト画素カウンタのそれぞれに加算累積し、
（ｃ）１行分の全走査を終了した時点で前記各バイト画素カウンタの計数値を基に、その行の比較印字パターンを作成し、
（ｄ）作成された前記比較印字パターンを、実際に印字がある場合について作成され、記憶されている基準印字パターンと比較し、一致するものがある場合にその行を印字あり行と判定すること、
を特徴とする印字有無判定方法。
【請求項２】
（ｃ１）印字媒体の日付欄の１行ごとを走査して得られるスキャンデータの１バイトごとの中の“１”の画素データの数を１バイト単位に副走査方向に加算し、各バイトの中の“１”の画素データの計数値が複数段階の値のいずれに該当するかを分類し、分類結果に対して予め定めてある項タイプを割付けし、その４項ごとの項タイプにより比較印字パターンを生成し、
（ｄ１）前記比較印字パターンを基準印字パターンと照合し、少なくとも一つの比較印字パターンが基準印字パターンと一致するとき、当該行は印字あり行と判定することを特徴とする請求項１に記載された印字有無判定方法。
【請求項３】
（ｃ２１）印字媒体の日付欄の１行ごとを走査して得られるスキャンデータの１バイトごとの中の“１”の画素データの数を１バイト単位に副走査方向に加算し、各バイトの中の“１”の画素データの計数値が複数段階の値のいずれに該当するかを分類し、分類結果に対して予め定めてある項タイプを割付けし、その４項ごとの項タイプにより第１の比較印字パターンを生成し、
（ｄ２１）前記第１の印字比較パターンを第１の基準印字パターンと照合し、
（ｃ２２）全ての４項ごとの照合結果により第２の比較印字パターンを生成し、
（ｄ２２）前記第２の比較印字パターンを１行分の各種印字列に対応して作成してある第２の基準印字パターンと照合し、一致するものがある場合は、当該行が印字あり行と判定すること、
を特徴する請求項１に記載された印字有無判定方法。
【請求項４】
（ｃ３１）印字パターンは、各バイト画素カウンタの値ｘ１を２つの一定値ａ，ｂ（ａ＞ｂ）と比較し、ｘ１≦ｂのときは“０”を、ａ≦ｘ１のときは“１”をそれぞれセットし、ａ＞ｘ１＞ｂのときは前記値ｘ１に次のバイト画素カウンタの値を足して、その値ｘ２が一定値ｃ（ｃ＝ｂ＋ｄ）以上のときは、“１”をセットし、前記値ｘ２が一定値ｃ未満のときは前記値ｘ２に順に次のバイト画素カウンタの値を足して、その値ｘｋが一定値（ｃ＋ｎｄ：ｎは加算したバイト画素カウンタの数に従う値）以上のときは“１”をセットし、加算しようとするバイト画素カウンタの値ｘｍがａ未満になったときは、“０”をセットして、“１”又は“０”の組合せからなる１次比較印字パターンを構成し、
（ｃ３２）前記１次比較印字パターンの“１”と“０”がそれぞれ複数個連続する場合は１個に圧縮して２次比較印字パターンを構成し、
（ｄ３１）前記２次比較印字パターンを基準印字パターンと比較し、一致するものがある場合に、その行を印字あり行と判定すること、
を特徴とする請求項１に記載された印字有無判定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通帳などの印字媒体（以下、通帳という）の印字が予定されている行に文字、数字、記号など（以下、代表的に文字という）を印字するプリンタにおいて、前記行にすでに印字されているか否かを判定するための印字有無判定方法に関する。
【０００２】
【従来の技術】
従来は、通帳を搬送しながらラインセンサ（ＣＣＤ）を用いて特定のエリア（通常は日付欄）を走査して、印字有無判断用画素情報を取込み、印字有無判断用情報は１回の走査の受光量の少ない部分、すなわち黒の画素の数を計数し、その計数値が一定値を越えたものを印字あり走査として記憶し、これを１行分繰り返し行い、１行中の印字あり走査の数が所定値以上の場合に、その行を印字あり行と判定していた。
【０００３】
【発明が解決しようとする課題】
上記従来方法によると、印字の濃度が低くなった場合は、１回の走査で得られる印字有無判断用画素情報が減少し、一定値を越えなくなってしまう場合があり、印字有無判断が困難になる。これについて、以下に具体的に説明する。
【０００４】
図２２は、見開き状態の通帳の平面図である。プリンタにより印字される通帳には、一般的に、図２２に示すような印字フォーマットが設定されている。すなわち、見開き状態の通帳Ａの上頁Ｐ１の先端（帳票基準辺）から一定範囲を上端印字禁止帯Ｚ１とし、その上端印字禁止帯に続いて所定数の印字行を設け、綴じ目Ｍを境としてその前後にそれぞれ１印字行（計２印字行）相当の範囲を中央印字禁止帯Ｚ２とし、下頁Ｐ２には上頁Ｐ１と同数の印字行を設け、その最終行に続く下頁Ｐ２の終端までの一定範囲を下端印字禁止帯Ｚ３としている。
【０００５】
通帳に取引内容を印字する際には、各行について印字の有無を判定し、印字のない行（未印字行）の最初の行に印字を行う必要がある。このため、プリンタは、見開き状態で挿入された通帳の先端を検出した時点から上端禁止帯Ｚ１に相当する所定送り量だけ通帳を搬送した位置を読取り開始位置とし、上頁の第１行から下頁の最終行に至るまでの所定読取り範囲を帳票基準辺と平行な方向に長いラインセンサで通帳Ａを図２２においてＦ方向に１ステップ搬送するたびに横方向に読取り（主走査）、その主走査により得られるアナログ信号を１ビット単位で“１”又は“０”の２値画素データに変換し、通帳を１印字行に対応する所定ステップの搬送（副走査）の間に得られた２値データを所定の解析方法により解析することにより、印字の有無を判断している。
【０００６】
従来の印字有無判定方法の一例を説明する。
図２３は、通帳処理機のプリンタの主として機構部分の構成を示す概略図で、図２４は、同プリンタの制御部分の構成を示すブロック図である。
プリンタ１は、通帳Ａに対して１行ずつ印字動作を行うものである。プリンタ１は、通帳Ａが挿入排出口２に挿入されたことを検知するための挿入検知器２ａと、搬送路Ｌを挟んで対設された複数の送りローラ３及び押えローラ４と、送りローラ３を正逆回転するモータ５と、挿入された通帳Ａの先端を検知するための先端検知器６と、通帳Ａの所定領域を走査して文字を読取るＣＣＤ群からなるラインセンサ７と、印字行に沿って往復移動しながら印字を行う印字ヘッド８と、印字ヘッド８に対向して設けられているプラテン９と、搬送路Ｌの終端部に設けられて通帳Ａの頁をめくるための頁めくり部１０とを有している。
【０００７】
プリンタ１は、図２４に示すように、各部を制御するＣＰＵ２０と、その制御プログラム等を格納しているＲＯＭ２１と、ワークエリア等を提供するＲＡＭ２２、モータ５を制御して通帳Ａの搬送を行うための搬送部２３と、印字ヘッド８及びプラテン９等を制御して通帳Ａに対する印字を行うための印字部２４と、ラインセンサ７の読取り動作を制御してスキャンデータ（画素情報）を取得するためのセンサ制御部２５と、ホスト装置（コンピュータ等）から印字データを受信するためのインタフェース部（Ｉ／Ｆ部）２６とを有している。また、ＣＰＵ２０は、先端検知器６からの検知信号を入力して通帳Ａが先端検知器６の位置に到達したことを検知するようになっている。ラインセンサ７の読取り領域Ｚｒは、各行において印字が必ずなされる位置、例えば、取引年月日が印字される日付欄に設定されている。
【０００８】
図２５に示すように、センサ制御部２５による制御により、ラインセンサ７は、搬送部２３が通帳Ａを１ステップ搬送するたびに搬送方向と直角方向に主走査を行う。そして、各主走査において受光量の少ない場合は論理値“１”に、受光量が多い場合は論理値“０”に、すなわち、２値の画素データからなるスキャンデータに変換して出力する。図２５のＳｄは、ラインセンサ７の走査ラインＬｂにおける印字ドットパターンであり、白丸はラインセンサの受光量が多い部分、すなわち、印字されていない部分を示し、黒丸は受光量の少ない部分、すなわち印字されている部分を示している。
【０００９】
より詳細に説明すると、図２６（イ）に示すように、数字「１」が十分な濃度で印字されている場合の主走査によりラインセンサ７のＣＣＤが出力するアナログ信号は、検出器により所定レベルＶｓで検出され（同図ａ）、所定レベルＶｓを越えた場合の検出出力（同図ｂ）によりゲートが開放される間にクロック発生回路の出力するクロック信号（同図ｃ）が前記ゲートを通過するようにしてある。ゲートの出力はカウンタに入力されて（同図ｄ）、計数される（同図ｅ）。
通帳の日付欄のラインセンサ７による読取り範囲は、１走査で２８バイト、すなわち２２４ビットとされている。そして、図２６（ロ）に示すように、印字文字の１ドットに対してゲートは４個のクロックパルスを通過させる。すなわち、ラインセンサ７は、文字部分の１ドットの読取りタイミングにおいて、４ビットの“１”データを出力する。
【００１０】
搬送部２３が通帳Ａを１行分搬送（副走査）するのに例えば２４ステップ必要な場合は、上記主走査が２４回行われる。そして、各主走査において得られた２値データの中に、“１”が所定値、例えば１２以上の場合は、当該走査は印字有り走査と判定し、１２未満の場合は、当該走査は印字なし走査と判定し、さらに、１行分の走査（２４回）のうち、印字有り走査と判定されたものが８以上の場合は、当該行を印字有り行と判定し、８未満の場合は、当該行を印字なし行と判定するようにしている。
主走査におけるスキャンデータから印字有無判定の基準値を１２以上とする理由は、図２５に示すように、年月日の数字構成要素のうち、スキャンデータの最少数は図２５の例えば走査ラインＬａにおける走査時のスキャンデータであり、そのときのスキャンデータのビット数は、印字文字の縦成分が１ドットであるとすると、１ドット×４ビット×３か所＝１２ビットとなるからである。
【００１１】
上記１走査におけるスキャンデータの中の“１”ビット（以下、黒ビットという場合がある）の数を基準値と比較して印字有無判定をする方法は、印字文字の濃度が適正な場合には、問題がない。
問題は、印字濃度が薄い場合に発生する。すなわち、印字濃度が薄い場合は、図２７に示すように、ラインセンサ７からの出力レベルが所定レベルＶｓよりも相対的に低くなり（同図ａ）、例えば、数字１の印字濃度が正常の場合は、図２６（イ）のように、スキャンデータは、数字１の印字パターンに忠実なものが得られるのに対し、印字濃度が薄い場合は、図２７（イ）のように、スキャンデータが朽ちた形態になり、印字パターンに対する忠実度が低下するため、１走査により得られるスキャンデータの中の論理値“１”のビット数が忠実度が高い場合に比して減少し、前記基準値（１２）よりも低下することとなる。このように、ＰＣＳ値が低くなるに従い、ラインセンサからの印字有無判断用画素情報量が少なくなり、当該行に印字があるか否かの判定が困難になる。また、１印字行において得られる“１”ビットの数も基準値を下回り、実際は印字が有るのに、印字なしと誤判定する場合がある。
【００１２】
そこで、本発明は、印字濃度が低下した場合、１回の走査で得られる印字有無判断用画素情報量が減少しても、これに左右されること無く、確実に印字の有無を判定することができる印字有無判定方法を提供することにある。
【００１３】
【課題を解決するための手段】
上記課題を解決する本発明の原理は、次の通りである。すなわち、日付欄に印字される英数字（主にＡＮＫの数字）は縦長に構成されていて、かつ、縦方向の成分が多く含まれている。ＰＣＳ値が低くなり、スキャンデータの中の黒ビット数が減少しても、縦方向成分の残る割合は大きいので、日付欄を主走査方向の一定範囲ごとに縦に区分し、各縦区分から縦方向成分を抽出し、印字位置の有無判定に使用する。すなわち、走査により得られる画素情報の黒の画素数を１バイト単位に副走査方向（縦方向）に加算し、これにより文字の縦方向成分を量として表す。そして、得られた各バイト列ごとの加算累積データをパターン化し、そのパターンを印字ありパターンと比較し、一致するか否かにより、印字有り行又は印字無し行と判定する。
【００１４】
上記の原理に着目して、本発明による印字有無判定方法は、（ａ）１走査分のスキャンデータに対して１バイトごとの“１”の画素データを計数するバイト画素カウンタを備え、（ｂ）走査を行うたびに、各１バイトごとの“１”の画素データ数を前記バイト画素カウンタのそれぞれに加算累積し、（ｃ）１行分の全走査を終了した時点で前記各バイト画素カウンタの内容を基に、その行の比較印字パターンを作成し、（ｄ）作成された前記比較印字パターンを、実際に印字がある場合について作成され、記憶されている基準印字パターンと比較し、一致するものがある場合にその行を印字あり行と判定することを特徴としている。
上記各バイト画素カウンタは、印字される領域の複数の縦区分のそれぞれについて黒画素の数を計数するので、その計数値には文字構成要素の縦成分が反映される。従って、ＰＣＳ値が低下した文字の場合も、可及的に多くの印字有無判断用画素情報が取得され、正確な印字有無判定を行うことができる。比較印字パターンは、それぞれ１バイト単位で作成されるため、印字ではなく、汚点に対しても作成されうるが、実際に印字がある場合の基準印字パターンと比較するので、汚点は印字と判定されず排除される。
【００１５】
比較印字パターンと基準印字パターンの種類は、判定の精度により次の２通りがありうる。すなわち、第１の種類は、日付欄の１行ごとを走査して得られるスキャンデータの中の“１”の画素数を１バイト単位に副走査方向に加算し、各バイトの中の“１”の画素の計数値が複数段階の値のいずれに該当するかを分類し、分類結果に対して予め定めてある項タイプを割付けし、その４項ごとの項タイプにより比較印字パターンを生成し、また、基準印字パターンはそれぞれ単一の文字に対応して予め作成される。そして、比較印字パターンを複数の印字からなる印字パターンに対応する基準印字パターンと照合し、少なくとも一つの比較印字パターンが基準印字パターンと一致するとき、当該行は印字あり行と判定する方法である。
上記方法の場合は、比較印字パターンは、複数個の文字に対応するものであるので、１文字単位ではなく、一定長の文字列単位で比較するから、汚点を排除することができる。
【００１６】
また、日付欄の１行ごとを走査して得られるスキャンデータの中の“１”の画素数を１バイト単位に副走査方向に加算し、各バイトの中の“１”の画素の計数値が複数段階の値のいずれに該当するかを分類し、分類結果に対して予め定めてある項タイプを割付けし、その４項ごとの項タイプにより第１の比較印字パターンを生成して、その第１の比較印字パターンを第１の基準印字パターンと照合し、全ての４項の照合結果により第２の比較印字パターンを生成し、その第２の比較印字パターンを第２の基準印字パターンと照合し、一致するものがある場合は、当該行が印字あり行と判定することを特徴としている。
上記構成により、１行単位で文字列の比較を行うので、一層、高い精度で印字の有無を判定することができる。
【００１７】
上記印字パターンは、１）各バイト画素カウンタの値Ｘ１を２つの一定値ａ，ｂ（ａ＜ｂ）と比較し、Ｘ１≦ａのときは“０”をセットし、ｂ≦Ｘ１のときは“１”をセットし、ａ＜Ｘ１＜ｂのときは前記値Ｘ１に次のバイト画素カウンタの値を足して、その値Ｘ２が一定値ｃ以上のときは“１”をセットし、前記値Ｘ２が一定値ｃ未満のときは前記値Ｘ２に順に次のバイト画素カウンタの値を足して、その値Ｘ３が一定値（ｃ＋ｎｄ：ｎは加算したバイト画素カウンタの数に従う値）以上のときは“１”をセットし、加算しようとするバイト画素カウンタの値Ｘｉがａ未満になったときは、“０”をセットして、“１”又は“０”の組合せからなる１次印字パターンを構成し、２）前記１次印字パターンの“１”と“０”を圧縮して２次印字パターンを構成し、３）前記２次印字パターンを基本印字パターンと比較し、一致するものがある場合に、その行を印字あり行と判定することを特徴としている。
すなわち、１バイト単位の黒ビット計数値Ｘ１が、“１”又は“０”と判定できる一定値ａ以上でも、一定値ｂ以下でもない、ａ＜Ｘ１＜ｂのときは、すなわち、計数値が印字有無判断のグレイゾーンにあるとき、当該バイトの次のバイトの黒ビット数を加算し、その加算結果を一定値ｃと比較することにより、当該バイトに文字成分があるか否かを判断し易くなる。
【００１８】
【発明の実施の形態】
次に、本発明の実施の形態について、図１ないし図２１を参照して説明する。
図１は、本発明方法を実施するために使用される主要構成を示すブロック図、図２は日付欄の縦区分と各区分の走査の関係をイメージ的に示す概念図、図３は１行分の走査により得られるスキャンデータの格納を説明する模式図、図４は１バイトごとの黒ビット数を２４走査分（縦に）加算して格納する動作を説明する模式図、図５は各縦区分の黒ビット数のパターン化を説明する模式図、図６は本発明方法の基本的動作を説明するフローチャートである。
プリンタの基本的構成自体は、従来と変わらないので、プリンタの構成に関わる説明においては、図２３を参照する。
【００１９】
本発明方法を実施するため、図１に示すように、図２３のプリンタ１のＯＳＵ（ラインセンサ７及びセンサ制御部２５）に、ＯＳＵにより日付欄の読取り範囲に対応して出力されるスキャンデータを格納するためのバッファメモリ３１と、１行分の走査（２４回）を終了した後に、バッファメモリに格納されたスャンデータを各走査分ごとに１バイト単位で、１〜２８バイトまで順次読出し、２８バイトに個々に対応して設けられた出力端子から出力する読出し部３２と、読出し部の各出力端子に接続され、その出力端子に出力される１バイトのスキャンデータに含まれる黒ビットを計数し、加算累積する２８個のバイト画素カウンタ３３1 ，３３2 ，〜３３28と、各バイト画素カウンタの計数値を取り込んで格納する項値バッファ３４と、格納された各縦区分の黒ビット総数が予め設定されている範囲のビット数からなる複数段階の分類のいずれに該当するかにより、当該分類について予め定めてある４ビット２進数で構成された項タイプに変換する変換部３５と、前記複数段階の分類とこれに対応する前記４ビット構成の項タイプを記憶している第１テーブル３６と、前記変換部から出力された項タイプ（パターン）を前記縦区分の数（２８）に対応して記憶する項タイプバッファ３７と、各区分に実際に印字がある場合のパターンを基準印字パターンとして格納している第２テーブル３８と、前記項タイプバッファに格納された各縦区分に対応する項タイプ（パターン）を読出して前記第２テーブル３８に記憶されている基準印字パターンと照合し、一致するものがあるか否かにより、印字あり行と判定し又は印字なし行と判定して判定結果を出力する比較部３９とを有している。
【００２０】
本発明方法は、図１に示された上記構成要素を用いて、図６に示すような基本的動作を行う。すなわち、ラインセンサにより走査して得られるスキャンデータを一時格納する工程（Ｒ１）と、得られたスキャンデータの１バイトごとに黒ビットを計数し、スキャンデータの１バイトごとの黒ビットの計数値を２４走査分（１行分）加算して、横１バイト、縦２４走査を単位とする各縦区分の黒ビットの計数値を得る工程（Ｒ２）と、得られた計数値を予め設定した複数の分類基準に従って分類する工程（Ｒ３）と、分類結果に応じてパターン化する工程（Ｒ４）と、得られた印字パターンを印字あり行の場合の基準印字パターンと比較し、比較の結果に基づいて印字の有無を判定する工程（Ｒ５）とをこの順序で行う。
以下に、各工程を順次、詳細に説明する。
【００２１】
［スキャンデータの取込み（図６のＲ１）］
ＯＳＵがラインセンサ７の１走査において出力する１０２４ビットのうち、日付欄に対応する範囲のみから２２４ビット（２８バイト）分のスキャンデータが取込まれ、１バイトごとに対応してバッファメモリ３１の所定番地の記憶エリアに格納されることは、従来と同様である。そして、１行の日付欄は２４回走査されるので、バッファメモリ３１には、図３に示すように、第１走査目から第２４走査目までのスキャンデータ（ｄ10〜ｄ127 ，ｄ20〜ｄ227 ，……，ｄ240 〜ｄ2427）が格納される。
バッファメモリ３１には、図４に例示するように、ラインセンサ７から入力する８ビット（１バイト）の受光量の多少に応じて“１”又は“０”で表される２値画素データで格納されている。
【００２２】
［１バイトごとの黒ビットの加算（図６のＲ２）］
スキャンデータの取込みを終了すると、読出し部３２がバッファメモリ３１から第１走査によるスキャンデータを第１バイトから第２８バイトまで、１バイトごと順次読出し、各１バイトのスキャンデータに含まれる黒ビットをそれぞれ第１バイト画素カウンタ３３1 から第２８バイト画素カウンタ３３28により計数する。
第１走査によるスキャンデータに対する黒ビットの計数が終了すると、続いて、第２走査によるスキャンデータの各バイトに含まれる黒ビットを、それぞれ前記第１バイト画素カウンタ３３1 から第２８バイト画素カウンタ３３28により計数し、加算する。
以下、同様にして、第２４走査によるスキャンデータまで、第１バイトから第２８バイトについて１バイトごとに黒ビットの数を、第１バイト画素カウンタ３３1 から第２８バイト画素カウンタ３３28により計数・加算を行い、１行分の第１バイトから第２８バイトまでのそれぞれの黒ビットの総数が、項値バッファ３４に、そのポインタにより指定される番地（28) 〜(1) の記憶エリアに格納される。項値バッファ３４の各記憶エリアに格納された黒ビットの数を項値という場合がある。すなわち、日付欄の各縦区分の黒ビット数が、項値バッファ３４に、図４に例示するように、０，５，２０，３０〜５５，１５と格納される。
【００２３】
縦区分ごとの黒ビットの計数は、次のように行うこともできる。すなわち、スキャンデータ取込みの終了後、読出し部３２がバッファメモリ３１から第１走査におけるスキャンデータ（２２４ビット）の中の第１バイトのデータ（ｄ10）を第１バイト画素カウンタ３３1 に入力して黒ビットを計数し、次に、第２走査におけるスキャンデータの第１バイトのデータ（ｄ20）を第１バイト画素カウンタ３３1 に入力して黒ビットを計数累積し、以下同様に、第２４走査における第１バイトのデータ（ｄ240 ）を第１カウンタ３３1 に加算・累積して、１行分の第１バイトの黒ビットの総数を計数して、その計数値を項値バッファ３４に、そのポインタにより指定される番地（28）の記憶エリアに格納する。図４の例では、最初の縦区分の黒ビットの数（項値）は０である。
続いて、読出し部３２がバッファメモリ３１から第１走査におけるスキャンデータの中の第２バイトのデータ（ｄ11）を第２バイト画素カウンタ３３1 に入力して黒ビットを計数し、次に、第１バイトのデータについて行ったのと同様にして、１行分の第２バイトのデータ（ｄ11，ｄ21，…ｄ241 ）の黒ビットの総数を計数して、その計数値を項値バッファ３４に、そのポインタにより指定される番地（27）の記憶エリアに格納する。図４の例では、２番目の縦区分の黒ビットの数（項値）は５である。
以下、同様に、バッファメモリ３１に格納されている各走査におけるスキャンデータの中の第３バイトから第２８バイトまで（ｄ12，ｄ22，ｄ242 ；〜ｄ127 ，ｄ227 〜ｄ2427）のそれぞれ１行分の黒ビットを計数し、その計数値をそれぞれ項値バッファ３４に、そのポインタにより指定された番地の記憶エリアに格納する。
このようにして、項値バッファ３４に、日付欄の各縦区分の黒ビット数が、図４に例示するように、０，５，２０，３０〜５５，１５と格納される。
【００２４】
上記スキャンデータの取込み（Ｒ１）及び黒ビットの縦加算（Ｒ２）は、上述のように、ハードウェアにより実現される。続いて、そのハードウェアの別の実施例を、図７及び図８の図面を参照して説明する。図７は判定装置のブロック構成図、図８は同判定装置の動作タイミングを示すタイミングチャートである。
【００２５】
図７において、ＯＳＵは例えば１０２４ビットの読取り能力を有するＣＣＤ群で構成されたラインセンサ７を用いる光学読取装置であり、図２４における挿入検知器２ａからの通帳挿入検知信号に基づき、搬送部２３に搬送を開始させ、これにより先端検知器６が通帳の先端を検知した時点から所定ステップ数搬送された時に、ＣＰＵはＯＳＵに対して走査を開始させるための信号（OSU ON) を出力するとともに、同信号を第１カウンタＣＴ１に出力するようになっている。
【００２６】
第１カウンタＣＴ１は、ＯＳＵが出力する１０２４ビットのスキャンデータ（IMG ）の中から、日付欄に対応する２２４ビットの一走査分の有効スキャンデータのみを切出すためのものであり、ＣＰＵから与えられる基本クロック(SCLK)を計数し、その計数値がＣＰＵからバスＢ１を介して設定されている取込開始指定値と一致した時から取込停止指定値と一致する時までの間、Ｑ１出力信号を出力して、アンドゲート＆Ｇを開放させる。そして、アンドゲート＆Ｇは、開放している間にＯＳＵが出力するスキャンデータをシリアルパラレル変換回路ＳＰＣに入力する。
シリアルパラレル変換回路ＳＰＣは、８ビットのシリアルデータを入力するたびにこれをパラレルデータに変換して出力する。タイミング生成回路ＴＧは、Ｑ１出力信号を入力してから８ビットのデータがアンドゲート＆Ｇを通過するに必要なクロックパルスを入力した時点に、第１ラッチ回路Ｌ１にラッチ信号（LAT1）を与えるため、シリアルパラレル変換回路ＳＰＣが出力する８ビットのパラレルデータを、次の８ビットのシリアルデータがシリアルパラレル変換回路ＳＰＣに入力されるまでの一定時間（例えば８μＳ）、保持するようになっている。
【００２７】
タイミング生成回路ＴＧは、ＣＰＵから与えられる基本クロック（SCLK) に基づいて、各回路の動作タイミングを設定するものであり、所定タイミングにおいて第１ラッチ回路Ｌ１へのラッチ信号（LAT1）のほか、第２ラッチ回路Ｌ２へのラッチ信号（LAT2）、第１ゲートＧ１への制御信号（DIR ）、ＲＡＭ２２への読出し／書込み切替信号(R/W) 、セレクタＳＥへの選択指令信号（SEL ）をそれぞれ生成して与え、また、アドレス生成回路ＡＧにそのアドレスの更新（−１）又はクリアをさせる制御信号（UP-CLK)(CLR)を与えるものである。
【００２８】
第２カウンタＣＴ２は、第１ラッチ回路Ｌ１に保持された８ビットのスキャンデータの中の黒ビットを計数するカウンタであり、その計数値を８ビット２進数の形式でバスＢ２に出力する。バスＢ２には、第２カウンタＣＴ２が出力する８ビットの計数値と８ビットの数値拡張のためのダミデータとを合わせた１６ビットの計数値の加算ができるように、４ビット４個の加算器ＡＤＤ1 〜ＡＤＤ4 の第１入力側が接続されている。また、各加算器ＡＤＤ1 〜ＡＤＤ4 の第２入力側には、第２ラッチ回路Ｌ２を介して第１ゲートＧ１の読出側が接続されている。各加算器ＡＤＤ1 〜ＡＤＤ4 の出力側はバスＢ３を介して第１ゲートＧ１の入力側に接続されている。第１ゲートＧ１は双方向性のゲートであり、バスＢ４を介してＲＡＭ２２接続され、出力側は第２ラッチ回路Ｌ２を介してバスＢ１に、入力側はバスＢ３に接続されている。
【００２９】
ＲＡＭ２２は、１バイトのスキャンデータの中の黒ビットの計数値を１６ビット２進数の形式で１走査分（２８バイト）格納し得る記憶エリアを有している。第２カウンタＣＴ２が出力する新しい黒ビット計数値と、ＲＡＭの所定番地の記憶エリアから読出した黒ビット計数値とが、それぞれ加算器ＡＤＤ1 〜ＡＤＤ4 において加算されて、新しい黒ビット累積計数値として、同じ記憶エリアに格納されるように構成してある。黒ビット計数値の累積加算とその結果の格納のため、タイミング生成回路ＴＧからＲＡＭに読出し／書込み切替信号(R/W) が与えられ、また、ＲＡＭから読出したデータがバスＢ１方向に出力されるように第１ゲートＧ１を制御したり、バスＢ３からＲＡＭ方向にデータが入力するように切り換えるための入出力方向制御信号（DIR ）が与えられるように構成されている。
【００３０】
また、ＲＡＭは、セレクタＳＥを介してアドレス生成回路ＡＧと、ＣＰＵとに接続されている。アドレス生成回路ＡＧは、ＲＡＭに対してデータの書込み又は読出しを行う際の記憶エリアを指定するためのものである。セレクタＳＥは、タイミング生成回路ＴＧから受ける選択指令信号(SEL) により、ＲＡＭとセレクタＳＥの間のアドレスバスＢ５をアドレスバスＢ６又はアドレスバスＢ７に接続して、ＲＡＭにアドレス生成回路ＡＧからのアドレスを与えたり、ＣＰＵからのアドレスを与えたりするようになっている。
【００３１】
第２ラッチ回路Ｌ２に保持されたデータは、第２ゲートＧ２が挿入されたデータバスＢ１を介してＣＰＵに取込まれるようになっている。すなわち、第２ゲートＧ２は、ＣＰＵからの読出指令信号により開放され、ＣＰＵがセレクタＳＥを介してＲＡＭに与えるアドレスにより指定された番地から黒ビット累積計数値を読出し、これを第１ゲートＧ１及び第２ラッチ回路Ｌ２を経てＣＰＵに取込むことができる。
【００３２】
上記構成による作用を、図８の各構成要件の動作を説明するタイミングチャートに基づいて説明する。
ＣＰＵからの基本クロック (SCLK) は、一定の周期（例えば１μｓ）をもって出力され、第１カウンタＣＴ１とタイミング生成回路ＴＧに与えられる。第１カウンタＣＴ１からのＱ１出力によりアンドゲート＆Ｇが開放されている間に、ＯＳＵが出力する１走査分のスキャンデータがシリアルパラレル変換回路ＳＰＣに入力される。
そして、最初の１バイト（８ビット）のデータがシリアルパラレル変換回路ＳＰＣによりパラレルデータに変換して出力され、その８ビット目がシリアルパラレル変換回路ＳＰＣに入力し終わった時点にタイミング生成回路ＴＧが出力するラッチ信号LAT1が第１ラッチ回路Ｌ１に与えられて、シリアルパラレル変換回路ＳＰＣからのパラレルデータが所定時間保持され、その間に第２カウンタＣＴ２により、その８ビットのデータに含まれる黒ビットが計数され、その計数値が８ビット２進数の形式でバスＢ２に出力され、４個の４ビット加算器ＡＤＤ1 〜ＡＤＤ4 に数値拡張のためのダミデータの“０”の８ビットを付加した１６ビットで入力される。
【００３３】
最初の８ビット目のスキャンデータのシリアルパラレル変換回路ＳＰＣへの入力と同期して、タイミング生成回路ＴＧからアドレス生成回路ＡＧにクリア信号（CLR ）が与えられて、ＲＡＭに対するアドレスが初期化される。そして、その時点ではタイミング生成回路ＴＧがＲＡＭに読出し／書込み切替信号(R/W) のうち、読出し指令信号を与え、第１ゲートＧ１には出力側ゲートを能動化する制御信号（DIR)を与えているので、ＲＡＭのアドレス生成回路ＡＧが出力するアドレスにより指定された記憶エリアから、これに記憶されている累積計数値（この時点では累積計数値は０である。）を読出して、第２ラッチ回路Ｌ２に出力する。今、第２ラッチ回路Ｌ２には第２ラッチ信号(LAT2)が与えられているため、ＲＡＭから読出された累積計数値がバスＢ１を介して、加算器ＡＤＤ1 〜ＡＤＤ4 に入力される。この場合、ＣＰＵのアドレスは、ＲＡＭのアドレス生成回路ＡＧが出力するアドレスと符合している。
【００３４】
従って、加算器ＡＤＤ1 〜ＡＤＤ4 は、今ＯＳＵから入力した最初の８ビット（第一８ビット）のスキャンデータから得た拡張された１６ビットの黒ビット計数値と、ＲＡＭから先の走査において得られ、格納された第一８ビットのスキャンデータから得た黒ビット計数値（１６ビットのデータ）とを累積して、新しい累積計数値を算出し、これをバスＢ３に出力する。この時点になると、タイミング生成回路ＴＧは読出し／書込み切替信号(R/W) のうち、書込み指令信号をＲＡＭに与え、アドレス生成回路ＡＧは、まだ同一のアドレスを出力し、また、タイミング生成回路ＴＧは第１ゲートＧ１に入力側ゲートを能動化する制御信号（DIR)を与えているので、加算器ＡＤＤ1 〜ＡＤＤ4 の新しい累積計数値がＲＡＭの所定番地の記憶エリアに格納される。
【００３５】
この間には、ＯＳＵから第二８ビットのスキャンデータが引き続きアンドゲート＆Ｇを経てシリアルパラレル変換回路ＳＰＣに入力されており、その入力を終了した時に、前回と同様に、第１ラッチ信号（LAT1）によりそのパラレルデータがラッチされて、その中に含まれる黒ビットが第２カウンタＣＴ２により計数され、バスＢ２に出力されて、加算器ＡＤＤ1 〜ＡＤＤ4 に入力される。
続いて、第一８ビットの場合と同様に、ＲＡＭのアドレス生成回路ＡＧが今出力しているアドレス（更新されている）により指定された記憶エリアから、これに記憶されている累積計数値（この時点では累積計数値は０である。）を読出して、第２ラッチ回路Ｌ２に出力する。今、第２ラッチ回路Ｌ２には第２ラッチ信号(LAT2)が与えられているため、ＲＡＭから読出された累積計数値がバスＢ１を介して、加算器ＡＤＤ1 〜ＡＤＤ4 に入力される。
従って、加算器ＡＤＤ1 〜ＡＤＤ4 は、今ＯＳＵから入力した第二８ビットのスキャンデータから得た黒ビット計数値と、ＲＡＭから先の走査において得られ、格納された第一８ビットのスキャンデータから得た黒ビット計数値（１６ビットのデータ）とを累積して、新しい累積計数値を算出し、これをバスＢ３に出力する。この時点になると、タイミング生成回路ＴＧは読出し／書込み切替信号(R/W) のうち、書込み指令信号をＲＡＭに与え、アドレス生成回路ＡＧは、まだ同一のアドレスを出力し、また、タイミング生成回路ＴＧは第１ゲートＧ１に入力側ゲートを能動化する制御信号を与えているので、加算器ＡＤＤ1 〜ＡＤＤ4 の新しい累積計数値がＲＡＭの所定番地の記憶エリアに格納される。
【００３６】
以後、ＯＳＵから入力する第三及び第四８ビットのスキャンデータに対しても、前回と同様に、黒ビットの計数値と、先の走査により取得されＲＡＭに格納されている累積計数値とを、加算器ＡＤＤ1 〜ＡＤＤ4 により累積して、新しい累積計数値をＲＡＭの所定番地に格納する。
【００３７】
第１走査分の２８バイト分の黒ビットの計数及び計数値の格納を終了すると、第２走査分のスキャンデータについても、前述と同様に、８ビットごとに黒ビットが計数され、これが先の走査において得られた各バイトの黒ビット数と加算記録され、２４走査（１行分）まで、同様に、各バイトごとの黒ビットの計数・累積が行われる。
【００３８】
１行分の走査を終了した時は、タイミング生成回路ＴＧからセレクタＳＥに選択指令信号(SEL) が与えられ、ＲＡＭとバスＢ７が結合されるので、ＣＰＵはバスＢ７を介して、ＲＡＭに所定のアドレスを与え、１行分の第１バイトから第２８バイトまでのそれぞれの黒ビット数、すなわち、日付欄の各縦区分に対応する黒ビットの計数値を第１ゲートＧ１、第２ラッチ回路Ｌ２及びバスＢ１を介して図４の項値バッファ３４に取込む。項値バッファ３４は、各１バイトのスキヤンデータの中の黒ビットの計数値が、項値として格納する２８個の記憶エリアを有し、記憶エリアの一端から他端までの各エリアに当該エリアを指定する項数を有している。
その後は、ＣＰＵは、取込んだ黒ビットの計数値に対して、ソフトウェアにより、図６の項値の分類処理（Ｒ３）、パターン化（Ｒ４）、及び判定処理（Ｒ５）を行う。引き続き、これらについて説明する。
【００３９】
［項値の分類（図６のＲ３）］
上記日付欄の各縦区分における黒ビットの計数・格納を終了したならば、次に、項値バッファ３４の各データ項目の値、すなわち、項値の分類（上記各計数値の分類）が実行される。
項値の分類とは、図９に例示するように、一定単位量、例えば１バイト、のスキャンデータの中に含まれる黒ビットの数が、多い、少ないに応じて予め段階的に設定した複数の範囲のいずれに該当するかにより、該当する範囲について予め定めた、相互に識別できる項タイプを付して分類することである。
本実施例においては、図９に示すように、予め段階的に設定した複数の範囲を黒ビット数が０〜２、３〜９，１０〜２５，２６〜３１，３２〜７９，８０以上の６段階に設定し、それぞれに対応する項タイプを「０」「３」「６」「７」「Ｅ」「Ｆ」と定めている。そして、それぞれの項タイプは演算処理上は、４ビット２進数、すなわち、0000，0011，0110，0111，1110，1111で表される。
黒ビット数が３２未満のときは最上位ビットが“０”、３２以上のときは最上位ビットが“１”となるように、項タイプを決定してある。印字される文字が普通の英数字の書体である場合は、３２が文字成分の有無判定の基準とすることができると思われるからである。しかし、「−」（ハイフン）と「．」（ピリオド）の場合は、３２未満が文字成分の有無判定の基準になる。
図１の第１テーブル３６には、上記６段階の黒ビット数と、それぞれに対応する項タイプとが記憶されている。
【００４０】
次に、項値の分類の処理手順を、図１０，図１１のフローチャートに基づいて説明する。図１０は項値の分類の処理手順の一部を示し、図１１はその残部を示す。項値の分類のルーチン（Ｒ３）を実行するには、ＣＰＵ２０により、図１の項値バッファ３４、変換部３５、第１テーブル３６及び項タイプバッファ３７が用いられる。
項値の分類をする際は、まず、項値バッファ３４から読出すべき記憶エリアの位置を特定するため、項値バッファ３４の先頭ポインタが設定され（ｐ１）、続いて、項タイプバッファ３７のデータを格納すべき記憶エリアの位置を特定するため、項タイプバッファ３７の先頭ポインタが設定される（ｐ２）。そして、分類処理回数をカウントするための、ソフトウェアのダウンカウンタで構成されている項数カウンタ（不図示）に両バッファの項数を設定する（ｐ３）。本実施例では各バッファは通帳の日付欄の１行分の２８個の縦区分に対応する２８項分の記憶エリアを用い、また、１項に対する分類処理が終了するたびに項数カウンタがダウンカウントするので、最初は、項数は最大値である「２８」と設定される。
【００４１】
次に、分類を終了したか否かを、前記項数カウンタの値（項数）が０か否かにより判断する（ｐ４）。今は、分類を開始した直後であるので、判断結果は否定（Ｎｏ）となり、項値バッファ３４の先に設定された先頭ポインタに対応する記憶エリアから項値を取得する（ｐ５）。そして、その項値が０か否かを判定し（ｐ６）、肯定（ＹＥＳ）の場合は、変換部３５により第１テーブル３６を参照して、項値０に対応する項タイプ「０」に変換されて、格納の準備がされる（ｐ７）。続いて、その項タイプが項タイプバッファ３７の先に設定された先頭ポインタに対応する記憶エリアに格納される（ｐ８）。これにより、項値バッファの先頭ポインタに対する分類が終了する。
【００４２】
先頭ポインタに対する分類を終了すると、次に、項値バッファのポインタが更新（−１）され（ｐ９）、同様に、項タイプバッファのポインタも更新される（ｐ１０）とともに、項数カウンタの項数も更新（−１）されて（ｐ１１）、ステップｐ４に移行する。
【００４３】
ステップｐ６において項値が０でない場合は、ステップｐ１２に移行して、その項値が８０以上か否かが判定される。肯定（Ｙ）の場合は、変換部３５により第１テーブル３６を参照して、項値８０以上に対応する項タイプ「Ｆ」に変換され（ｐ１３）、続いて、ステップ８に移行し、その項タイプが項タイプバッファ３７の先に設定されたポインタに対応する記憶エリアに格納された後、前述と同様に、ステップ９，１０，１１において項値バッファ３４及び項タイプバッファ３７のポインタの更新（ｐ９，ｐ１０）、並びに項数カウンタの項数の更新（ｐ１１）がされた後、ステップｐ４に戻る。
【００４４】
また、ステップｐ１２における判定結果が否定（Ｎ）の場合はステップｐ１４に移行して、項値バッファ３４から取得した項値が３２以上か否かが判定される。肯定（Ｙ）の場合は、項値３２以上に対応する項タイプ「Ｅ」に変換され（ｐ１５）、ステップｐ８に移行し、その後は前述と同様の処理がなされる。
ステップｐ１４における判定結果が否定（Ｎ）の場合はステップｐ１６（図１１）に移行して、項値が２６以上か否かが判定され、肯定（Ｙ）の場合は、項値２６以上に対応する項タイプ「７」に変換され（ｐ１７）た後、ステップｐ８に移行する。
ステップｐ１６における判定結果が否定（Ｎ）の場合はステップｐ１８に移行して、項値が１０以上か否かが判定され、肯定（Ｙ）の場合は、項値１０以上に対応する項タイプ「６」に変換され（ｐ１９）、ステップｐ８に移行する。
ステップｐ１８における判定結果が否定（Ｎ）の場合はステップｐ２０に移行して、項値が３以上か否かが判定され、肯定（Ｙ）の場合は、項値３以上に対応する項タイプ「３」に変換され（ｐ２１）、ステップｐ８に移行する。否定（Ｎ）の場合は、項タイプ「０」に変換され（ｐ２２）、ステップｐ８に移行する。
【００４５】
ステップｐ１１における項数カウンタの項数の更新の結果、項数が０となった時は、ステップ４において分類終了と判定されて、図６のメインフローに戻る。
【００４６】
以上のようにして、図５に例示するように、項値バッファ３４に格納された１行分の２８個の縦区分における黒ビット数が、数の大小に応じて６段階に分類され、それぞれの段階について予め設定された項タイプに変換され、各項タイプが４ビット２進数に表されて、項タイプバッファ３７に格納される。
【００４７】
項タイプバッファ３７に格納された１〜２８項分の項タイプは、それ自身、個々に又は全体で、通帳の日付欄の２８個の縦区分における印字位置を表す一種の印字パターンを構成している。従って、実際に印字がある場合の各種の４ビット２進数又はその組合わせからなる印字パターンを基準印字パターンとして、第２テーブル３８に用意しておき、１行の走査が終了するたびに、そのスキャンデータに対応する比較印字パターンを前記基準印字パターンと照合し、一致する時に、その行は印字あり行と判定することが可能である。
しかし、項タイプバッファ３７には、黒ビット数（項値）を６段階に分類した場合の該当分類を各項に４ビット２進数で、全部で２８項分記憶されている。そして、該当分類の段階が雑多に表されているので、パターン同士の照合判定が繁雑である。また、一つの項タイプごとに、すなわち、１文字単位で基準印字パターンと照合する方法は、媒体の印字がなく、汚点を読取った場合も、印字ありと誤判定する恐れがある。そこで、本発明の好ましい実施例では、項値の分類（Ｒ３）に引き続いて、項タイプバッファ３７に格納された項タイプを照合判定を単純化できる構成の第２の比較印字パターンに変換するパターン化処理（Ｒ４）を行っている。
【００４８】
［パターン化処理（図６のＲ４）］
続いて、パターン化処理について、図１２及び図１３〜１７を参照しながら説明する。図１２はパターン化の概念図、図１３〜１７は、一つのフローチャートの部分図である。
パターン化処理を行う場合は、ＲＡＭ２２の中に、図１のバッファメモリ３１、項値バッファ３４及び項タイプバッファ３７のほかに、図１２に示すように、パターン化要素バッファ４０が設けられる。パターン化要素バッファ４０は７バイト分の格納エリア（＊１〜＊７）を有している。そして、日付欄の各縦区分に対して４ビット構成のデータ（項タイプ）を記憶している項タイプバッファ３７の４項分（１６ビット、すなわち、２バイト）ごとに一つのパターン化要素に変換して、バッファ４０の各格納エリアに記憶するようにしてある。パターン化要素とは、印字ありの場合の４ビットの基準印字パターンに該当するか否かにより“１”“０”の２値で表す場合の“１”又は“０”である。
また、第２テーブル３８には、このパターン化処理を行う場合に、印字ありの場合の各種の第２の基準印字パターンが予め格納されている。第２の基準印字パターンは、上記図７及び図８に示した実施例により、ＡＮＫ英数字が実際に印字された場合の日付欄を走査した場合に得られた黒ビットの計数値に基づいて、パターン化して得られた印字ありの場合のパターンであり、図１８，１９に示すようなものがある。なお、第２テーブル３８の各項に対応する記憶エリアの中のパターンのデータは、４ビット２進数で構成されているが、図１８，１９には、解り易くするため、１０進数で表されている。また、第２の基準印字パターンは、日付の印字に用いられる文字の書体により多少異なる。
【００４９】
パターン化処理においては、まず、前記パターン化要素バッファ４０の格納エリアがクリアされ（ｐ２３）、次に項タイプバッファ３７から読み出すべき格納エリアを指定するため、項タイプバッファ３７のポインタが先頭ポインタに設定される（ｐ２４）。そして、パターン化処理のための項タイプのチェック回数をカウントするための、ソフトウェアのダウンカウンタで構成されている項数カウンタ（不図示）に両バッファの項数を設定する（ｐ２５）。本実施例では項タイプバッファ３７は２８項分の記憶エリアを用いるので、項数は最大値である「２８」と設定される。
【００５０】
次に、項数カウンタの項数が０か否かにより、項タイプのチェックを終了したか否かを判定する（ｐ２６）。判定結果が否定（Ｎ）の場合は、項タイプバッファ３７の先に設定されたポインタ（先頭ポインタ）の格納エリアから項タイプを取得する（ｐ２７）。そして、その項タイプは０か否かを調べる（ｐ２８）。肯定（Ｙ）の場合は、項タイプバッファ３７のポインタを更新（−１）する（ｐ２９）とともに、項数カウンタの項数を更新（−１）して（ｐ３０）、ステップｐ２６に戻る。
【００５１】
ステップ２８における判定結果が否定（Ｎ）の場合は、ステップ３１（図１４）に移行し、項タイプバッファから４項のタイプ、すなわち、例えば図５の第２８項から第２５項までの１６ビット（２バイト）のデータを取得する。そして、取得した各項タイプの最上位のビットを取得して、各項を４ビットで表した第２の比較印字パターンを生成する（ｐ３２）。すなわち、図５の例では、最上位の０に1000をアンドして得られる0000，0000，0000，0000の第２の比較印字パターン（図１８，１９に合わせて１０進数で表すと、「０，０，０，０」の比較印字パターン）を生成する。
【００５２】
次に、第２テーブル３８の先頭アドレスを指定し（ｐ３３）、引き続き、第２の基準印字パターンの中の、図１８に例示するような一次基準印字パターンを順次取得して、取得した一次基準印字パターンと先に生成した項タイプバッファの４項に対応する第２の比較印字パターンとを照合するパターンマッチング、すなわち、パターン照合ルーチン（Ｒ６）を実行する。そして、取得した一次基準印字パターンの中に、項タイプバッファの最初の４項に対応する第２の比較印字パターン、すなわち、通帳の日付欄の１〜４番目の縦区分に対応するパターンと一致するものがあるか否かを判断する（ｐ３４）。
【００５３】
一致した場合（Ｐ３４において肯定の場合）は、ステップ３５においてパターン化要素設定ルーチンを実行する（Ｒ７）。ここで、パターン化要素設定ルーチン（Ｒ７）について、図１７に基づいて説明する。
図１３〜図１６のメインフローのそれぞれの第１の比較印字パターンと第１の基準印字パターンの照合ステップにおいて一致するものがあった場合に、パターン化要素設定ルーチン（Ｒ７）が起動される。
まず、項タイプバッファ３７の現在チェックしている項の数を取得する（ｐ７１）。次に項数が２８〜２５か否か、すなわち、最初の４項か否かを調べ（ｐ７２）、肯定（Ｙ）ならば、パターン化要素バッファ４０の第１記憶エリア（＊１）にパターン化要素“１”を記憶する（ｐ７３）。ステップｐ７２において否定（Ｎ）ならば、項数が２４〜２１か否か、すなわち、二番目の４項か否かを調べ（ｐ７４）、肯定（Ｙ）ならば、パターン化要素バッファ４０の第２記憶エリア（＊２）にパターン化要素“１”を記憶する（ｐ７５）。また、ステップｐ７４において否定（Ｎ）ならば、項数が２０〜１７か否か、すなわち、三番目の４項か否かを調べ（ｐ７６）、肯定（Ｙ）ならば、パターン化要素バッファ４０の第３記憶エリア（＊３）にパターン化要素“１”を記憶する（ｐ７７）。以下、同様に、項数が１６〜１３か否か（ｐ７８）、１２〜９か否か（ｐ８０）、８〜５か否かを調べ（ｐ８２）、それぞれ肯定の場合に、パターン化要素バッファ４０の第４記憶エリア（＊４）、第５記憶エリア（＊５）又は第６記憶エリア（＊６）に記憶し（ｐ７９，ｐ８１，ｐ８３）、ステップｐ８２において否定（Ｎ）の場合は、第７記憶エリア（＊７）にパターン化要素“１”を記憶する（ｐ８４）するようになっている。
いずれかの記憶エリアへのパターン化要素“１”の記憶を終了すると、パターン化要素設定ルーチンからメインフローに戻る。
【００５４】
図１４のステップｐ３５におけるパターン化要素設定ルーチン（Ｒ７）を終了すると、ステップｐ３６において、項タイプバッファ３７のポインタを更新（＋４）し、次に項タイプバッファ３７から取得すべきデータの記憶エリアを指定し、次に、項数を更新（−４）して、残りの項数を設定する（ｐ３７）。続いて、項タイプバッファ３７から次の４項分の項タイプを取得し（ｐ３８）、その項タイプがＥ（1110）以上か否か、すなわち、黒ビット数が一定値（実施例では３２）以上に多いか否かを判定する（ｐ３９）。
通帳の日付欄に印字されるものには、０〜９の英数字と「−」（ハイフン）と「．」（ピリオド）の記号とがあり、英数字と記号はその黒ビット数の大小により識別可能である。この見地に基づき、本実施例では、両者を識別する目的で、項タイプの識別基準として上記Ｅを用いている。
【００５５】
ステップｐ３９の判定結果が肯定の場合は、項の位置を示す項タイプバッファの項数が５以上か否かを判定する（ｐ４０）。ステップｐ４０の判定結果が否定の場合、すなわち、印字項数が４以下の場合は、次のステップｐ４１において、上述されたパターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッフア４０の第６記憶エリア＊６にパターン化要素を“１”に設定する。
【００５６】
ステップｐ４１のパターン化要素設定ルーチン（Ｒ７）が終了すると、項タイプバッファ３７のポインタが更新（−１）される（ｐ４２）とともに、項数カウンタが更新（＋１）される（ｐ４３）。続いて、項数を更新（−１）した（ｐ４４）の後、項数カウンタの値が０か否かにより、項タイプのチェックが終了したか否かを判定する（ｐ４５）。判定結果が否定の場合は、ステップｐ３８に戻り、項タイプバッファ３７から次の項のタイプを取得して、前述の場合と同様にステップ３９に移行する。これに対して、ステップｐ４５の判定結果が肯定の場合は、図６の基本フローに戻る。
【００５７】
図１４のステップｐ４０における判定結果が肯定の場合は、図１５のステップ４６に移行して、項数が９以上か否かが判定される。そして、否定の場合は、次のステップｐ４７において、パターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッファ４０の第５記憶エリア＊５にパターン化要素が“１”に設定される。その後は、図１４のステップｐ４２に移行する。
また、ステップｐ４６において肯定の判定結果となった場合は、項数が１３以上か否かが判定される（ｐ４８）。否定の場合は、次のステップｐ４９において、パターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッファ４０の第４記憶エリア＊４にパターン化要素が“１”に設定される。その後は、図１４のステップｐ４２に移行する。
ステップｐ４８において肯定の判定結果となった場合は、次は項数が１７以上か否かが判定される（ｐ５０）。否定の場合は、次のステップｐ５１において、パターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッファ４０の第３記憶エリア＊３にパターン化要素が“１”に設定される。その後は、同様に図１４のステップｐ４２に移行する。
ステップｐ５０において肯定の判定結果となった場合は、次は項数が２１以上か否かが判定される（ｐ５２）。否定の場合は、次のステップｐ５３において、同様にパターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッファ４０の第２記憶エリア＊２にパターン化要素が“１”に設定される。その後は、同様に図１４のステップｐ４２に移行する。
さらに、ステップｐ５２において肯定の判定結果となった場合は、次は項数が２５以上か否かが判定される（ｐ５４）。否定の場合は、次のステップｐ５５において、同様にパターン化要素設定ルーチン（Ｒ７）が実行され、パターン化要素バッファ４０の第１記憶エリア＊１にパターン化要素が“１”に設定される。その後は、同様に図１４のステップｐ４２に移行する。
ステップｐ５４の判定結果が肯定の場合は、そのまま図１２のステップｐ４２に移行する。
【００５８】
図１４のステップｐ３４において比較印字パターンが図１８に例示する一次基準印字パターンと一致しない場合は、図１６のステップ５７に移行し、また、図１４のステップｐ３９において項タイプがＥ未満である場合も、図１６のステップｐ５６に移行する。
ステップｐ５６においては、項タイプバッファ３７から次の４項のタイプを取得され、ステップ５７に移行する。ステップ５７においては、第２の基準印字パターンの中から図１９に例示するようなセパレータ文字の１種であるハイフンの二次基準印字パターン（「−」パターン）の先頭アドレスが取得され、次いで、取得された二次基準印字パターンと第２の比較印字パターンの照合処理（Ｒ６）が実行され（ｐ５８）、一致したか否かが判断される（ｐ５９）。
【００５９】
一致した場合は、パターン化要素設定ルーチン（Ｒ７）が実行され（ｐ６０）、そのときの項数に対応する記憶エリアにパターン化要素が“１”に設定されて、そのパターンが記憶される。
引き続き、項タイプバッファのポインタが更新（＋４）される（ｐ６１）とともに、項数が更新（−４）された（ｐ６２）後は、図１３のステップｐ２６に移行する。
【００６０】
また、ステップｐ５９において、否定の判定結果となった場合は、セパレータ文字のもう１種であるピリオドの二次基準印字パターン（「．」パターン）の先頭アドレスが取得され、取得された二次基準印字パターンと第２の比較印字パターンの照合処理（Ｒ６）が実行され（ｐ６４）、一致したか否かが判断される（ｐ６５）。一致した場合は、パターン化要素設定ルーチン（Ｒ７）が実行され（ｐ６６）、そのときの項数に対応する記憶エリアにパターン化要素が“１”に設定されて、そのパターンが記憶される。
引き続き、項タイプバッファのポインタが更新（＋４）される（ｐ６７）とともに、項数が更新（−４）された（ｐ６８）後は、図１３のステップｐ２６に移行する。
これに反し、ステップｐ６５において一致しない場合は、図１３のステップｐ２９に移行する。
【００６１】
要約すると、パターン化要素バッファ４０には、項値バッファの項数と項値に基づき、次のように、パターン化要素“１”又は“０”が格納される。すなわち、項数１〜４に文字あり（項値が３２以上の場合）又は文字なし（項値が３１以下の場合）と判定した場合は、第１記憶エリア＊１に、“１”又は“０”が格納される。項数５〜８に文字あり又は文字なしと判定した場合は、第２記憶エリア＊２に、“１”又は“０”が格納される。項数９〜１２に文字あり又は文字なしと判定した場合は、第３記憶エリア＊３に、“１”又は“０”が格納される。項数１３〜１６に文字あり又は文字なしと判定した場合は、第４記憶エリア＊４に、“１”又は“０”が格納される。項数１７〜２０に文字あり又は文字なしと判定した場合は、第５記憶エリア＊５に、“１”又は“０”が格納される。項数２１〜２４に文字あり又は文字なしと判定した場合は、第６記憶エリア＊６に、“１”又は“０”が格納される。項数２５〜２８に文字あり又は文字なしと判定した場合は、第７記憶エリア＊７に、“１”又は“０”が格納される。
【００６２】
上記実施例では、１バイトのスキャンデータ中に文字成分があるか否かの判定基準として、黒ビット数が３２以上か否かを用いた。しかしながら、文字の形態すなわち書体あるいは通常文字かセパレータ文字かにより、印字文字がある場合にも１バイト中の黒ビット数がある幅をもって変動する。そして、媒体には印字文字でなく、何らかの汚点がある場合にも、黒画素が検出される。このような状況の下で、一の判定基準のみで高精度の印字有無判定を行うことは困難である。
【００６３】
本発明は、上記の事情に鑑み、印字有無判定基準に次のように二つの境界値を用いることを試みた。すなわち、二つの一定値ａ，ｂ（但し、ａ＞ｂ）を判定境界値として設定し、バイト画素カウンタの計数値（すなわち、１バイト中の黒ビット数）ｘが、ｘ≦ｂの場合は印字なしを意味する“０”、ｘ≧ａの場合は印字ありを意味する“１”をレジスタにセットする。このような二つの境界値を用いる場合は、文字と汚点を区別して、明快に印字有無の判定をすることができる反面、単にこれに止どまる時は、ｘが両境界値の間のグレイゾーンに属する場合は、判定不可能になり、判定精度を損なうことになる。例えば、図２０に例示するように、数字「０」の印字範囲を縦方向に３等分割した場合、第１縦区画ａ１と第３縦区画ａ３の黒ビット数ｘ１，ｘ３は、判定境界値ａよりも多いので“１”とセットされるのに対し、第２縦区画ａ２の黒ビット数ｘ２は、判定境界値ａとｂの間に入るため、実際は印字があるにもかかわらず、判定不可能である。
【００６４】
このような不具合を解消するため、本発明方法においては、一つのバイト画素カウンタの計数値ｘ１が、二つの境界値の間に入る場合は、当該バイト画素カウンタの計数値ｘ１に順に次のバイト画素カウンタの計数値ｘ２を加算して、その加算結果（ｘ１＋ｘ２）がもう一つの一定値ｃ（但し、ｃ＝ａ＋ｄ、ｄは微差）以上のときは、“１”をセットし、前記加算値（ｘ１＋ｘ２）が一定値ｃ未満のときはこれに順に次のバイト画素カウンタの値（ｘ３）を足して、その加算値が一定値（ｃ＋ｎｄ：ｎは加算したバイト画素カウンタの数に従う値）以上のときは“１”をセットし、加算しようとするバイト画素カウンタの値ｘｍがａ未満になったときは、“０”をセットして、“１”又は“０”の組合せからなる１次比較印字パターンを構成するようにした。
【００６５】
図２１に例示するように、同図（イ）のバッファメモリ又は項値バッファＢＦに格納された各バイトのスキャンデータに含まれる黒ビット数が、同図（ロ）に示すようにｘ１〜ｘ８…であり、それぞれの二つの境界値ａ，ｂに対する関係が同図（ハ）に示すようなものであると仮定すると、第１及び第２バイトについては“０”がセットされ、第３バイトは境界地位ａ，ｂの中間であるので、第３バイトのバイト画素カウンタの数ｘ３に次の第４バイトのバイト画素カウンタの数ｘ４が加算され、その加算結果がｃ以上であるので、結局、第３バイトについては、“１”とセットされる。
従って、図２０に例示するように、本来「０」が印字されている場合に、印字濃度不足等のために中間部における黒ビット数が二つの境界値の間に属する場合にも、上記加算処理により、その中間部も“１”とセットされるので、実際の印字パターンに沿った判定に修正され、信頼度の高い判定が行われる。
【００６６】
このようにして、図２１（イ）の各バイトに対して、レジスタに“０”“０”“１”“１”“１”“０”“０”“０”“１”…がセットされ、一次比較印字パターンが生成される。
全てのバイトに個々に対応する“０”又は“１”の２８個のデータ集合体を一次比較印字パターンとして、一次基準印字パターンと照合して、一致するか否かにより、最終的な印字有無判定を行うことも可能である。しかし、処理対象データ量は、ＣＰＵの負担軽減のために、可及的に少ないことが望ましい。
そこで、本発明の好ましい実施例では、図２１（ハ）（ニ）に示すように、前記レジスタの前記一次比較印字パターンの“１”又は“０”のいずれか同一の論理値が複数個連続する場合は１個に圧縮して二次比較印字パターンを構成し、前記二次比較印字パターンを印字がある場合の圧縮された論理値からなる二次基準印字パターンと比較し、一致するものがある場合に、その行を印字あり行と判定するようにした。
【００６７】
上記実施例においては、所定位置の所定の文字又は記号の種類ごとの有無の判定を行うことができる。また、１文字単位でなく、１行の文字により構成される書式単位で、印字の有無を判定することが可能であるので、日付欄などの、印字される内容が一定の範囲で予め定まっているような場合には、その印字内容に応じた二次基準印字パターンを作成しておくことにより、高精度の印字有無判定が可能である。
【００６８】
【発明の効果】
以上に説明したように、本発明方法によれば、１走査分のスキャンデータに対して１バイトごとの“１”の画素データを計数するバイト画素カウンタを備え、走査を行うたびに各１バイトごとの“１”の画素データ数を前記バイト画素カウンタのそれぞれに加算累積し、１行分の全走査を終了した時点で前記各バイト画素カウンタの内容を基に、その行の比較印字パターンを作成し、作成された前記比較印字パターンを、実際に印字がある場合について作成され、記憶されている基準印字パターンと比較し、一致するものがある場合にその行を印字あり行と判定するようにしたので、第１に縦長文字は、ＰＣＳ値が低くなってスキャンデータの中の黒ビット数が減少しても、縦方向成分の残る割合が大きいという特性を活用して、印字有無の判定を高い信頼性をもって行うことができる。第２に比較印字パターンは、それぞれ１バイト単位で作成されるため、印字ではなく、汚点に対しても作成されうるが、実際に印字がある場合の基準印字パターンと比較するので、汚点は印字と判定されず排除される。
【００６９】
また、請求項３の発明によれば、一文字単位でなく、１行の文字列単位で、印字の有無を判定することが可能であるので、日付欄などの、印字される内容が一定の範囲で予め定まっているような場合には、その印字内容に応じた二次基準印字パターンを作成しておくことにより、高精度の印字有無判定が可能である。
【００７０】
さらに、請求項４の発明によれば、印字行のバイト数が多い場合にも、判定用データを圧縮して判定するので、ＣＰＵに対する処理負担が軽減され、一定範囲の文字の集合又は書式単位での印字有無の判定を行うことができる。
【図面の簡単な説明】
【図１】  本発明方法を実施するために使用される主要構成を示すブロック図。
【図２】  日付欄の縦区分と各区分の走査の関係をイメージ的に示す概念図。
【図３】  １行分の走査により得られるスキャンデータの格納を説明する模式図。
【図４】  １バイトごとの黒ビット数を２４走査分（縦に）加算して格納する動作を説明する模式図。
【図５】  各縦区分の黒ビット数のパターン化を説明する模式図。
【図６】  本発明方法の基本的動作を説明するフローチャートである。
【図７】  判定装置のブロック構成図。
【図８】  同判定装置の動作タイミングを示すタイミングチャートである。
【図９】  項値の分類における黒ビット数と項タイプの関係を示す概念図。
【図１０】  項値の分類の処理手順の一部を示すフローチャート。
【図１１】  その残部を示すフローチャート。
【図１２】  パターン化の概念図。
【図１３】  パターン化処理の一部を示すフローチャート。
【図１４】  パターン化処理の他の一部を示すフローチャート。
【図１５】  パターン化処理のさらに他の一部を示すフローチャート。
【図１６】  パターン化処理の残部を示すフローチャート。
【図１７】  パターン化要素設定のサプルーチンを示すフローチャート。
【図１８】  印字ありと判定する場合の基準印字パターンの例を示す概念図。
【図１９】  印字ありと判定できない場合の二次基準印字パターンの例を示す概念図。
【図２０】  文字形態と黒ビット数の変動と判定基準の関係を説明する模式図。
【図２１】  本発明の他の実施例を示す説明図。
【図２２】  一般的に使用されている通帳の印字フォーマットを示す正面図。
【図２３】  プリンタの概略構成図。
【図２４】  プリンタのブロック構成図。
【図２５】  日付欄の走査原理を説明する概念図。
【図２６】  適正濃度で印字された「１」を走査した時のスキャンデータを示す説明図。
【図２７】  不適正濃度で印字された「１」を走査した時のスキャンデータを示す説明図。
【符号の説明】
ＯＳＵ      光学的読取装置
３１        バッファメモリ
３２        読出し部
３３1 〜３３28    バイト画素カウンタ
３４        項値バッファ
３５        変換部
３６        第１テーブル
３７        項タイプバッファ
３８        第２テーブル
３９        比較部
【図１】
0003746393.tif 000002
【図２】
0003746393.tif 000003
【図３】
0003746393.tif 000004
【図４】
0003746393.tif 000005
【図５】
0003746393.tif 000006
【図６】
0003746393.tif 000007
【図７】
0003746393.tif 000008
【図８】
0003746393.tif 000009
【図９】
0003746393.tif 000010
【図１０】
0003746393.tif 000011
【図１１】
0003746393.tif 000012
【図１２】
0003746393.tif 000013
【図１３】
0003746393.tif 000014
【図１４】
0003746393.tif 000015
【図１５】
0003746393.tif 000016
【図１６】
0003746393.tif 000017
【図１７】
0003746393.tif 000018
【図１８】
0003746393.tif 000019
【図１９】
0003746393.tif 000020
【図２０】
0003746393.tif 000021
【図２１】
0003746393.tif 000022
【図２２】
0003746393.tif 000023
【図２３】
0003746393.tif 000024
【図２４】
0003746393.tif 000025
【図２５】
0003746393.tif 000026
【図２６】
0003746393.tif 000027
【図２７】
0003746393.tif 000028