(57)【特許請求の範囲】
【請求項１】
ラインセンサが印字媒体の印字が予定されている行を走査する際に、黒画素と白画素に対応して出力する“１”“０”の２値画素データからなるスキャンデータを取込み、そのスキャンデータに対して所定の解析を行って、当該行に印字がされているか否かを判定する印字有無判定方法において、
前記ラインセンサによりスキャンして得られる“１”“０”の２値画素データからなるスキャンデータが表す文字パターンを傾斜させて傾斜文字パターンを生成し、その傾斜文字パターンを縦方向に投影させて、その投影情報の中の“１”ビットを計数し、その計数値と基準値とを比較して計数値≧基準値の場合は印字あり行と判定し、計数値＜基準値の場合は印字なし行と判定することを特徴とする印字有無判定方法。
【請求項２】
１走査分のスキャンデータを格納する一次レジスタと、前記一次レジスタから読出して後記処理をした後のデータを格納する二次レジスタとを備え、
行の走査を行うに先立ち、使用する上記二つのレジスタの初期化を行う第１ステップ、  副走査するたびにラインセンサによりスキャンして得られる１走査分のスキャンデータを前記一次レジスタに格納する第２ステップ、
前記一次レジスタから一定単位量のスキャンデータを順次読み出してそのスキャンデータと前記二次レジスタのデータとをオア処理して、その結果であるオアデータを前記二次レジスタに格納する第３ステップ、
前記第３ステップを終了するたびに、前記第３ステップの一定単位量のスキャンデータの読出しとオア処理を、前記一次レジスタの１走査分のすべてのスキャンデータに対して終了したか否かを調べる第４ステップ、
終了していないときは、前記第３ステップに戻る第５ステップ、
終了したときは、前記第３ステップから前記第５ステップまでの処理を１行分のスキャンデータに対して終了したか否かを調べる第６ステップ、
終了していないときは、前記二次レジスタに格納されたオアデータを１ビットシフトし、かつ、前記第２ステップに戻る第７ステップ、
終了したときは、前記二次レジスタに格納されたオアデータの中の”１”ビットを計数する第８ステップ、
第８ステップにおいて得られた計数値を１行分の基準値と比較して、計数値が基準値よりも多いか少ないかにより、当該印字行が印字あり行又は印字なし行と判定する第９ステップ、を行うことを特徴とする印字有無判定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通帳などの印字媒体（以下、通帳という）の印字が予定されている行に文字、数字、記号など（以下、代表的に文字という）を印字するプリンタにおいて、前記行にすでに印字されているか否かを判定するための印字有無判定方法に関する。
【０００２】
【従来の技術】
従来は、通帳を搬送しながらラインセンサ（ＣＣＤ）を用いて特定のエリア（通常は日付欄）を走査して、印字有無判断用画素情報を取込み、印字有無判断用情報は１回の走査の受光量の少ない部分、すなわち黒の画素の数を計数し、その計数値が一定値を越えたものを印字あり走査として記憶し、これを１行分繰り返し行い、１行中の印字あり走査の数が所定値以上の場合に、その行を印字あり行と判定していた。
上記従来方法によると、印字の濃度が低くなった場合は、１回の走査で得られる印字有無判断用画素情報が減少し、黒の画素の計数値が一定値を越えなくなってしまう場合があり、印字有無判断が困難になる。これについて、以下に具体的に説明する。
【０００３】
図１４は、見開き状態の通帳の平面図である。プリンタにより印字される通帳には、一般的に、図１４に示すような印字フォーマットが設定されている。すなわち、見開き状態の通帳Ａの上頁Ｐ１の先端（帳票基準辺）から一定範囲を上端印字禁止帯Ｚ１とし、その上端印字禁止帯に続いて所定数の印字行を設け、綴じ目Ｍを境としてその前後にそれぞれ１印字行（計２印字行）相当の範囲を中央印字禁止帯Ｚ２とし、下頁Ｐ２には上頁Ｐ１と同数の印字行を設け、その最終行に続く下頁Ｐ２の終端までの一定範囲を下端印字禁止帯Ｚ３としている。
【０００４】
通帳に取引内容を印字する際には、各印字行について印字の有無を判定し、印字のない行（未印字行）の最初の行に印字を行う必要がある。このため、プリンタは、見開き状態で挿入された通帳の先端を検出した時点から上端禁止帯Ｚ１に相当する所定送り量だけ通帳を搬送した位置を読取り開始位置とし、上頁の第１行から下頁の最終行に至るまでの所定読取り範囲を帳票基準辺と平行な方向に長いラインセンサ７で通帳Ａを図１４においてＦ方向に１ステップ搬送するたびに横方向に読取り（主走査）、その主走査により得られるアナログ信号を１ビット単位で“０”“１”の２値画素データに変換し、通帳を１印字行に対応する所定ステップの搬送（副走査）の間に得られた２値データを所定の解析方法により解析することにより、印字の有無を判断している。
【０００５】
従来の印字有無判定方法の一例を説明する。
図１５は、通帳処理機のプリンタの主として機構部分の構成を示す概略図で、図１６は、同プリンタの制御部分の構成を示すブロック図である。
プリンタ１は、通帳Ａに対して１行づつ印字動作を行うものである。プリンタ１は、通帳Ａが挿入排出口２に挿入されたことを検知するための挿入検知器２ａと、搬送路Ｌを挟んで対設された複数の送りローラ３及び押えローラ４と、送りローラ３を正逆回転するモータ５と、挿入された通帳Ａの先端を検知するための先端検知器６と、通帳Ａの所定領域を走査して文字を読取るＣＣＤ群からなるラインセンサ７と、印字行に沿って往復移動しながら印字を行う印字ヘッド８と、印字ヘッド８に対向して設けられているプラテン９と、搬送路Ｌの終端部に設けられて通帳Ａの頁をめくるための頁めくり部１０とを有している。
【０００６】
プリンタ１は、図１６に示すように、各部を制御するＣＰＵ２０と、その制御プログラム等を格納しているＲＯＭ２１と、ワークエリア等を提供するＲＡＭ２２、モータ５を制御して通帳Ａの搬送を行うための搬送部２３と、印字ヘッド８及びプラテン９等を制御して通帳Ａに対する印字を行うための印字部２４と、ラインセンサ７の読取り動作を制御して読取りデータ（以下、スキャンデータという）を取得するためのセンサ制御部２５と、ホスト装置（コンピュータ等）から印字データを受信するためのインタフェース（Ｉ／Ｆ部）２６とを有している。前記ラインセンサ７とセンサ制御部２５とで、光学的読取装置（ＯＳＵ）を構成している。また、ＣＰＵ２０は、先端検知器６からの検知信号を入力して通帳Ａの先端が先端検知器６の位置に到達したことを検知するようになっている。
ラインセンサ７の読取り領域Ｚｒは、図１４に示すように、各行において必ず印字される位置、例えば、取引年月日が印字される日付欄に設定されている。
【０００７】
図１７は、日付欄の走査位置及び一部の印字ドットパターンを示す説明図である。図１７に示すように、センサ制御部２５による制御により、ラインセンサ７は、搬送部３が通帳Ａを１ステップ搬送するたびに搬送方向と直角方向に主走査を行う。そして、各主走査において受光量の少ない場合は論理値“１”に、受光光量が多い場合は論理値“０”に、すなわち、２値の画素データからなるスキャンデータに変換して出力する。図１７のＳｄは、ラインセンサ７の走査ラインＬｂにおける印字ドットパターンであり、白丸はラインセンサの受光量が多い部分、すなわち、印字されていない部分を示し、黒丸は受光量の少ない部分、すなわち、印字されている部分を示している。
【０００８】
より詳しく説明すると、図１８（イ）に示すように、数字「１」が十分な濃度で印字されている場合の主走査によりラインセンサ７の各ＣＣＤが出力するアナログ信号は、レベル検知器により所定レベルＶｓで検出され（同図ａ）、所定レベルＶｓを越えた場合の検知出力（同図ｂ）によりゲートが開放される間にクロック発生回路の出力するクロック信号（同図ｃ）が前記ゲートを通過するようにしてある。ゲートの出力はカウンタに入力されて（同図ｄ）、計数される（同図ｅ）。
通帳の日付欄のラインセンサ７による読取り範囲は、１走査で２８バイト、すなわち２２４ビットとされている。そして、図１８（ロ）（ｄ）に示すように、印字文字の１ドットに対して前記ゲートは４個のクロックパルスを通過させる。すなわち、ラインセンサ７は、文字部分の１ドットの読取りタイミングにおいて、４ビットの“１”データを出力する。
【０００９】
搬送部３が通帳Ａの１行分を搬送（副走査）するのに例えば２４ステップ必要な場合は、上記主走査が２４回行われる。そして、各主走査において得られた２値データ（スキャンデータ）の中に、“１”が所定値、例えば１２以上の場合は当該走査は印字有り走査と判定し、１２未満の場合は当該走査は印字タなし走査と判定し、さらに、１行分の走査（２４回）のうち、印字有り走査と判定されたものが８以上の場合は当該印字行を印字有り行と判定し、８未満の場合は当該行を印字なし行と判定するようにしている。
主走査におけるスキャンデータから印字有無判定の基準値を１２以上とする理由は、図１７に示すように、年月日の数字構成要素のうち、スキャンデータの最少数は図１７の例えば走査ラインＬａにおける走査時のスキャンデータであり、そのときのスキャンデータのビット数は、印字文字の縦成分が１ドットであるとすると、１ドット×４ビット×３か所＝１２ビットとなるからである。
【００１０】
【発明が解決しようとする課題】
上記１走査におけるスキャンデータの中の“１”ビット数を基準値と比較して印字有無判定をする方法は、印字文字の濃度が適正な場合には、問題がない。
問題は、印字濃度が薄い場合に発生する。すなわち、印字濃度が薄い場合は、図１９に示すように、ラインセンサ７からの出力レベルが所定レベルＶｓよりも総体的に低くなり（同図ａ）、例えば、数字１の印字濃度が正常の場合は、図１８（イ）のように、スキャンデータは、数字１の印字パターンに忠実なものが得られるのに対し、印字濃度が薄い場合は、図１９（イ）のように、スキャンデータが朽ちた形態になり、印字パターンに対する忠実度が低下するため、１走査により得られるスキャンデータの中の論理値“１”のビット数が忠実度が高い場合に比して減少し、前記基準値（１２）よりも低下することとなる。このように、ＰＣＳ値が低くなるに従い、ラインセンサからの印字有無判断用画素情報量が少なくなり、当該行に印字があるか否かの判定が困難になる。また、１印字行において得られる“１”ビットの数も基準値を下回り、実際は印字が有るのに、印字なしと誤判定する場合がある。
【００１１】
そこで、本発明は、印字濃度が低下した場合、１回の走査で得られる印字有無判断用画素情報量が減少しても、これに左右されること無く、確実に印字の有無を判定することができる印字有無判定方法を提供することにある。
【００１２】
【課題を解決するたるの手段】
本発明は、上記課題を解決するため、原理的には、次のようなコンセプトに基づいている。すなわち、年月日として印字される数字は、横成分よりも縦成分の割合が多い。この点に着目し、ラインセンサによりスキャンして得られる文字パターンを傾斜させて傾斜文字パターンを生成し、その傾斜文字パターンを縦方向に投影させることにより情報量を増大させて、その増大された情報量を基準値と比較して、有無判定を行うようにしたことを特徴としている。
【００１３】
基本的には、幅ａビット×高さｂビットの文字パターンを、１走査ごとに左右いずれか一方の横方向にシフトして得られる傾斜文字パターンを縦方向に投影して得られる情報量は、（ａ＋ｂ−１）ビットになる。この傾斜文字パターンの投影情報から得られる情報量は、元の正姿文字パターンの投影により得られる情報量（ａビット）に比べ、（ａ＋ｂ−１）／ａ倍となるが、文字パターンのコーナー部が丸くなっていたりするので、実際は、これより低い値となる。しかし、通常、ＡＮＫフォントはａ《ｂであるので、得られる情報量は２倍以上となる。
図１は、簡明化のため、ラインセンサにより１主走査で８ビットの画素を読取り、５走査で１行分の読取りを行う設例について、本発明方法の処理内容を概念的に示す。同図（ａ）は、媒体からラインセンサによる走査により得られ、バッファメモリに格納されたスキャンデータである。同図（ｂ）はバッファメモリから一定単位量（８ビット）のスキャンデータをレジスタに取込むたびに、前の状態を順次１画素分、右方向にシフトさせて、スキャンデータに含まれる文字を傾斜文字に変形させた状態のデータ（シフトデータ）である。同図（ｃ）は、それぞれシフトさせた一定単位量ごとのシフトデータの論理和（ＯＲ）である。図２の（ａ´）〜（ｃ´）は、媒体から数字１を読取った場合の処理内容を具体的なイメージで示す。
【００１４】
本発明は、好ましい実施の形態として、１走査分のスキャンデータを格納する一次レジスタと、前記一次レジスタから読出して後記処理をした後のデータを格納する二次レジスタとを備え、行の走査を行うに先立ち、使用する上記二つのレジスタの初期化を行う第１ステップ、副走査するたびにラインセンサによりスキャンして得られる１走査分のスキャンデータを格納する第２ステップ、前記一次レジスタから一定単位量のスキャンデータを順次読み出してそのスキャンデータと前記二次レジスタのデータとをオア処理して、その結果であるオアデータを前記二次レジスタに格納する第３ステップ、前記第３ステップを終了するたびに、前記第３ステップの一定単位量のスキャンデータの読出しとオア処理を、前記一次レジスタの１走査分のすべてのスキャンデータに対して終了したか否かを調べる第４ステップ、終了していないときは、前記第３ステップに戻る第５ステップ、終了したときは、前記第３ステップから前記第５ステップまでの処理を１行分のスキャンデータに対して終了したか否かを調べる第６ステップ、終了していないときは、前記二次レジスタに格納されたオアデータを１ビットシフトし、かつ、前記第２ステップに戻る第７ステップ、終了したときは、前記二次レジスタに格納されたオアデータの中の”１”ビットを計数する第８ステップ、第８ステップにおいて得られた計数値を１行分の基準値と比較して、計数値が基準値よりも多いか少ないかにより、当該印字行が印字あり行又は印字なし行と判定する第９ステップ、を行うことを特徴としている（請求項２）。
１印字行分の基準値は、スキャンデータ全体に対して四分の一程度が適正値である。
【００１５】
【発明の実施の形態】
続いて、本発明の実施の形態について、実施例に基づいて説明する。
プリンタの構成は、図１６に示されたものと同一である。従って、以下の説明においても、必要な範囲で、図１６を用いる。
また、プリンタに挿入された通帳が先端検知器６により検知された時点から所定距離搬送された時点にＯＳＵのラインセンサ７による主走査が開始され、そのセンサによる１主走査の読取範囲である１０２４ビット中、通帳の日付欄に対応する所定範囲である２２４ビットが切り出されて、バッファメモリを構成するＲＡＭ２２の一部に格納され、通帳が続いて１ステップ搬送されるたびに、主走査が反復され、２４回の走査により、日付欄の１行分の走査が終了し、図１４の日付欄の斜線が付された１〜２４行分のスキャンデータがバッファメモリに格納されることは、上記従来技術と同一である。
【００１６】
図３は本発明方法に用いられるＲＡＭの構成を示す概念図、図４は本実施例によるスキャンデータの処理内容を図示する模式図、図５は同実施例のＣＰＵによる処理の手順を示すフローチャートである。
【００１７】
本発明においては、図３に示すように、ＲＡＭ２２の中に、バッファメモリ２２ａのほかに、さらに一次レジスタ２２ｂと二次レジスタ２２ｃとを備え、ＣＰＵ２０による演算処理及び制御により、一次レジスタ２２ｂと二次レジスタ２２ｃを用いて、図４及び図５に示すように、一次レジスタ２２ｂと二次レジスタ２２ｃをクリア（Ｒ１）した後、バッファメモリ２２ａからスキャンデータを１走査単位で一次レジスタ２２ｂに取込む取込み処理（Ｒ２）、その１走査分のスキャンデータに対して１バイト単位で一次レジスタ２２ｂのデータと二次レジスタ２２ｃのデータをオア（論理和演算）するオア処理（Ｒ３）、オア処理された二次レジスタ２２ｃのデータを１ビット、左又は右にシフトするシフト処理（Ｒ４）、及び、１走査分のスキャンデータに対するデータの取込み処理、オア処理及びシフト処理を１行分のすべてに対して終了した後、１行分のデータの中の“１”ビットを計数するビットカウント処理（Ｒ５）を行うことにより、原スキャンデータを傾斜文字に対応するシフトデータに変形し、かつ、そのシフトデータの投影データ（オアデータ）を得て、その中の“１”ビット（黒ビットという場合がある。）数を計数し、その計数値を基準値と比較して（Ｐ２）、当該行が印字あり行か、印字なし行かの判定（Ｐ３，Ｐ４）を行うようにしている。
以下、各処理について詳述する。
【００１８】
図６は図５の中のスキャンデータ取込みルーチンＲ２の詳細を示すフローチャート、図７は図５の中のオア処理ルーチンＲ３の詳細を示すフローチャート、図８は図５の中の１ビットシフト処理ルーチンＲ４の詳細を示すフローチャート、図９は図５の中のビットカウント処理ルーチンＲ５の詳細を示すフローチャートである。
【００１９】
ＣＰＵ２０は、ＯＳＵ（図１５の７及び図１６の７，２５）を介して通帳から読取ったスキャンデータをバッファメモリ２２ａに格納する制御を終了すると、一次レジスタ２２ｂと二次レジスタ２２ｃをクリアするための制御（Ｒ１，図４参照）に引き続き、バッファメモリ２２ａから１走査分のスキャンデータを一次レジスタ２２ｂに取込む処理（Ｒ２，図４丸１参照）を行う。
このスキャンデータ取込み処理は、図６に示す手順に従って行われる。すなわち、まず、図３に示す一次レジスタ２２ｂのポインタＲＰ１を初期化（ｐｃ，ｐｐ，ｓｐを０にする。ｐｃ：ペンディングカウンタ  ｐｐ：ペンディングポインタ  ｓｐ：ストアドポインタ）し（ｐ１１）、バッファメモリ２２ａの１走査分のスキャンデータ（２２４ビット＝２８バイト）から最初の８ビット（１バイト）、すなわち、８画素分のデータを取得し（Ｐ１２）、これを一次レジスタ２２ｂの格納ポインタ（ｐｃ及びｓｐ）により指定される記憶エリアに格納する（Ｐ１３）。この最初の格納を終了すると、ＣＰＵは一次レジスタ２２ｂの格納ポインタ（ｐｃ，ｓｐ）を更新し（Ｐ１４）、その更新の結果、格納ポインタが所定値、すなわち、２８になったか否かにより、１走査分（２８バイト）のデータの取得を終了したか否かを判定する（Ｐ１５）。
【００２０】
そして、１走査分のデータ取得を終了していない場合（Ｐ１５でＮ）は、終了するまで、ステップＰ１２，１３，１４，１５を繰り返し実行し、取得を終了した場合（Ｐ１５でＹ）は、図５のメインフローに戻る。これにより、バッファメモリ２２ａから１走査分のスキャンデータを一次レジスタ２２ｂに取得する処理を終了する。
【００２１】
ＣＰＵ２０は、次に、一次レジスタ２２ｂと二次レジスタ２２ｃのデータを１バイト単位でデータのオア処理を行い（図４丸２参照）、その結果を二次レジスタ２２ｃに格納する処理を行う（図４丸３参照）。このオア処理を実行する際は、図７に示すように、まず、一次レジスタ２２ｂと二次レジスタ２２ｃの取出しポインタ（ｐｃ及びｐｐ）を初期化（Ｐ２１）した後、一次レジスタ２２ｂの１バイトのデータを読出してテンポラリーレジスタの一部に取得し（Ｐ２２）、続いて、二次レジスタ２２ｃのデータを読出して同一のテンポラリーレジスタの他部に取得し（Ｐ２３）、次に、両レジスタ（２２ｂ，２２ｃ）から取得したデータのオアを取る（Ｐ２４）。そして、そのオア処理の結果を二次レジスタ２２ｃに、その格納ポインタ（ｐｃ，ｓｐ）の指定により再格納する（Ｐ２５）。二次レジスタ２２ｃに対しては、オア処理前のデータの取り出しと、オア処理後のデータの格納とを相前後して行う。その後、一次レジスタ２２ｂと二次レジスタ２２ｃの取出しポインタ（ｐｃ，ｐｐ）を更新し（Ｐ２６）、その結果、格納ポイントが所定値、すなわち、２８になったか否かにより、１走査分（２８バイト）のデータオア処理が終了したかを判定する（Ｐ２７）。そして、１走査分のオア処理が終了しない場合（Ｐ２７ではＮ）は、終了するまでＰ２２、Ｐ２３、Ｐ２４Ｐ、２５Ｐ、Ｐ２６を繰り返し実行し、１走査分のオア処理が終了した場合（Ｐ２７ではＹ）は図５のメインフローに戻る。
【００２２】
１走査分のオア処理に引き続き、ＣＰＵ２０は、１バイトごとのデータの取り出し及びオア処理を２４走査分、すなわち、１行分についてすべて実行したか否かを判断し（図５のＰ１）、判断結果が否定（Ｎ）の場合は、二次レジスタ２２ｃに格納されたデータを１ビットシフトする処理（Ｒ４）を実行する（図４丸４参照）。
【００２３】
１ビットシフト処理は、図８に示す手順に従って実行される。すなわち、まず、二次レジスタ２２ｂの取出しポインタ（ｐｃ，ｐｐ）とキャリー（ＣＹ）を初期化する（Ｐ３１）。次に、二次レジスタの１バイトのデータを取得し（Ｐ３２）、その取得したデータをキャリーと一緒に１ビットだけシフト（Ｐ３３）した後、二次レジスタ２２ｃに、その格納ポインタ（ｐｃ，ｓｐ）により指定されたエリアに格納する（Ｐ３４）。続いて、二次レジスタ２２ｃの取出しポインタ（ｐｃ，ｐｐ）を更新し（Ｐ３５）、ポインタ値に基づいて１走査分のデータについて１ビットシフトが終了したか否かを判断し（Ｐ３６）、未終了の場合は、ステップＰ３２に移行し、終了するまで、ステップＰ３３，３４，３５，３６を繰り返す。そして、終了したときは、図５のメインフローに戻る。
これにより、オア処理された１走査分のスキャンデータが１ビットだけシフトされて、二次レジスタ２２ｃに格納される。
【００２４】
ここで、一次レジスタ２２ｂは、１走査分のデータを取込み、これを１バイトずつ二次レジスタ２２ｃのデータとオアし、かつ、シフトされて、そのシフトデータが二次レジスタに格納された後は、一次レジスタ２２ｂには次の１走査分のデータが取込まれるから、バッファメモリ２２ａから取込まれる１走査分のデータ数と等しいビット数のレジスタを用いれば良い。しかし、二次レジスタ２２ｃには、１走査分のデータ単位で１ビットずつシフトされたデータが順次格納されるので、１走査分のデータに最大シフト数を加えたビット数以上のレジスタ、具体的には、１走査２２４ビット＋（２４走査−１）＝２４７ビット構成のレジスタを用いることが望ましい。
その理由は、もし、一次レジスタと同一の２２４ビット構成の二次レジスタを用いる場合は、情報が欠落する不具合が生じ、あるいは正常な評価ができなくなるからである。１走査分のデータに最大シフト数を加えたビット数以上（例えば２４８ビット以上）のレジスタを用いる場合は、上記不具合が生じない。
【００２５】
図４のＲ２において、１走査分のスキャンデータについて１ビットシフト処理が終了すると、メインフローに戻ってルーチンＲ２に移行し、さらにルーチンＲ３及びステップＰ１が実行されて、１行分の最終までオア処理と１ビットシフト処理がなされる。
【００２６】
そして、図５のメインフローにおいて、ステップＰ１で最終まで処理が終了したことが判定されると、二次レジスタ２２ｃのデータの“１”ビットをカウントする処理（Ｒ５）を行う。このビットカウント処理は、図９に示す手順に従って実行される。すなわち、まず、二次レジスタ２２ｃのポインタ（ｐｃ，ｓｐ）及びＣＰＵ２０により構成されたカウンタを初期化（Ｐ４１）するとともに、二次レジスタ２２ｃから８画素（ビット）分のデータを取得し（Ｐ４２）、その８画素の中の黒の画素（黒ビット）の数を前記カウンタにより計数する（Ｐ４３）。そして、その計数値を先の計数値に加算して累積する（Ｐ４４）。この加算処理を終了したときは、二次レジスタ２２ｃのポインタ（ｐｃ，ｓｐ）を更新して（Ｐ４５）、黒ビットの計数を終了したか否かをポインタ値から判断し（Ｐ４６）、計数を終了したときは、図５のメインフローに戻る。
【００２７】
次に、ＣＰＵ２０はビットカウント処理により得られた黒ビットの計数値をＲＯＭ２１に記憶してある基準値と比較して、計数値≧基準値の場合は、当該印字行には印字があると判定し（Ｐ３）、また、計数値＜基準値の場合は、当該印字行には印字が無いと判定する（Ｐ４）。
【００２８】
本発明方法は、上記のように、原理的には、ラインセンサからの１走査分のスキャンデータ（原データ）を１ビットシフトさせ、１行分のすべてのシフトされたスキャンデータをオアし、そのオアされたデータの中の“１”のビット数を計数し、その計数値と基準値とを比較して、計数値が基準値よりも多いか少ないかにより、その行には印字があると判定し、又は印字がないと判定するものであるから、図１０に示すように、スキャンデータの取込みの際のシフト方向は、左右いずれでも良い。図１０において、（ａ）は原データ、（ｂ）は右シフトデータ、（ｃ）は左シフトデータであり、それぞれの文字パターンの下側に投影されたデータが示されている。数字は黒ビットの数である。右シフト方式（左に傾く）と左シフト方式（右に傾く）の優劣はつけ難いが、左シフト方式において、「１」「２」「７」の文字の重なり具合が少ないので、縦方向のドットの重なり具合が多そうな右シフト方式を採用した方が良いと考えられる。
【００２９】
続いて、上記本発明方法をハードウェアで実現する場合の実施例について、図１１以下の図面に基づいて説明する。
図１１は、ＯＳＵ（ラインセンサ）が出力するスキャンデータの取込み、シフト処理、オア処理及び黒ビットカウント処理を行う中枢回路のブロック構成図、図１２は第１カウンタのデータ切出し作用及び第１ゲートの動作の説明図、図１３は中枢回路の動作を説明するタイミングチャートである。
【００３０】
ＯＳＵは、例えば１０２４ビットの読取り能力を有するＣＣＤ群で構成されたラインセンサ７を用いる光学読取装置であり、挿入検知器（図１６の２ａ）からの通帳挿入検知信号に基づき、搬送部２３が搬送を開始し、これにより先端検知器６が通帳の先端を検知した時点から所定ステップ数搬送された時に、ＣＰＵ２０はＯＳＵに対して、その通帳に対するスキャンを開始させるための信号（OSU ON）を出力するとともに、同信号を第１カウンタＣＴ１にも出力するようになっている。
第１カウンタＣＴ１は、ＯＳＵの先端のＣＣＤから終端のＣＣＤまでが出力するデータのうち、通帳の日付欄に対応するスキャンデータのみを切り出すためのものであり、ＣＰＵ２０から基本クロック信号SCLKを常時与えられているとともに、取込み開始指定値（ｓｓ）と取込み停止指定値（ｓｅ）が設定されている。そして、ＣＰＵからスキャン開始信号（OSU ON）を入力すると、クロック信号の計数を開始し、図１２に示すように、その計数値が０からｓｓになるまでは、Ｑ１出力信号の状態がＬレベルのままに維持され、計数値がｓｓになると、Ｑ１出力信号の状態がＨレベルに変化され、かつ、計数値がｓｅになると、Ｑ２出力信号がＨレベルになり、これに基づいてＱ１出力信号の状態が再びＬレベルに変化し、計数値が１０２４になるまで、その状態が維持されるようになっている。
【００３１】
ＯＳＵからのスキャンデータは、第１カウンタＣＴ１のＱ１出力信号により開閉を制御されるアンドゲートＧ１に入力される。従って、アンドゲートＧ１は、ＯＳＵが出力するデータのうち、日付欄に対応するスキャンデータのみを通過させる。
【００３２】
アンドゲートＧ１の出力は、一定単位量のデータ、一例として、１バイトのデータ分に相当する８個のフリップフロップをシリアル接続して構成された第１ラッチ回路Ｌ１に入力される。第１ラッチ回路Ｌ１に、タイミング生成回路ＴＧから第１ラッチ信号LAT1を入力した時は、アンドゲートＧ１からのデータが保持され、そのままオアゲートＧ２に出力される。これに対して、タイミング生成回路ＴＧから第１ラッチ信号LAT1を入力しない時は、アンドゲートＧ１からのデータは第１ラッチ回路Ｌ１からオアゲートＧ２に出力されない。オアゲートＧ２の出力端子は、ＲＡＭ（２２）で構成されたレジスタ２２Ａの入力端子に接続されている。
オアゲートＧ２のもう一つの入力端子には、第１ラッチ回路Ｌ１と同様に、一定単位量のデータ、一例として、１バイトのデータ分に相当する８個のフリップフロップをシリアル接続して構成された第２ラッチ回路Ｌ２の出力端子が接続されている。第２ラッチ回路Ｌ２の入力端子には、レジスタ２２Ａの出力端子OUT が接続されている。第２ラッチ回路Ｌ２は、タイミング生成回路ＴＧから第２ラッチ信号LAT2を入力した時は、レジスタ２２Ａからのデータを保持してオアゲートＧ２に出力して、レジスタ２２Ａの入力端子に与えられる。これに対して、タイミング生成回路ＴＧから第２ラッチ信号LAT2を入力しない時は、レジスタ２２ＡからのデータをオアゲートＧ２に出力されない。
【００３３】
レジスタ２２Ａは、ＯＳＵによる１走査分のスキャンデータと、１バイトごとのスキャンデータを１ビットシフトし、オアした後のデータを格納することができる記憶容量を有し、また、オアゲートＧ２から出力されるデータを入力する入力端子(IN)と、第２ラッチ回路Ｌ２の入力端子に接続された出力端子(OUT) と、タイミング生成回路ＴＧから書込み／読出しを切替えるための切替え信号(R/W) を入力する入力端子とを有している。
【００３４】
タイミング生成回路ＴＧは、ＣＰＵ２０から与えられる基本クロックSCLKを用いて、第１ラッチ回路Ｌ１、第２ラッチ回路Ｌ２にラッチ信号LAT1,LAT2 を与えるタイミング、レジスタ２２Ａに書込み／読出し動作をさせるタイミング、アドレス生成回路ＡＧにそのアドレスの更新（−１する）又はクリアをさせるタイミング、及びセレクタＳＥに対するセレクトタイミング指定する信号(SEL) を生成するものである。
【００３５】
アドレス生成回路ＡＧは、レジスタ２２Ａに対してデータの書込み又は読出しを行う際の記憶エリアを指定するためのものであり、アドレスバスＡＢ１〜ＡＢ３によりセレクタＳＥを介してレジスタ２２Ａに接続されている。アドレス生成回路ＡＧとセレクタＳＥとの間のアドレスバスはＹ字形に分岐され、セレクタ側は書込み用バスＡＢ１と読出し用バスＡＢ２とに分けられて、セレクタＳＥとレジスタ２２Ａの間では一つのアドレスバスＡＢ３に統合されている。
また、書込み用バスＡＢ１の途中には、“１”を加算する加算器ＡＤが挿入されており、アドレス生成回路ＡＧがバスに出力するアドレスに“１”を加算して置換されたアドレスがセレクタＳＥに与えられるようにしてある。すなわち、書込みをする際に、データを１ビットシフトする動作を行う。これにより、セレクタの読出し用バスＡＢ２には、例えば、０２２４番地が、セレクタの書込み用バスＡＢ１には、加算器ＡＤにより＋１された、例えば、０２２５番地が与えられ、次のクロックに基づいて更新（−１）されて、セレクタの読出し用バスＡＢ２には、例えば、０２２３番地が、セレクタの書込み用バスＡＢ１には、加算器ＡＤにより＋１された、例えば、０２２４番地が与えられ、以後、同様にして、順次０２２２，０２２３；０２２１，０２２２；…のようにアドレスが指定される。
【００３６】
そして、セレクタＳＥは、タイミング生成回路ＴＧからの切替信号(R/W) と同期して出力される選択信号(SEL) に基づいて、書込み用バスＡＢ１と読出し用バスＡＢ２のいずれか一方をバスＡＢ３と接続する選択動作を行う。すなわち、タイミング生成回路ＴＧが書込みのための切替え信号(W) を出力するときは、セレクタＳＥに第１選択信号(SEL1)が与えられて、書込み用バスＡＢ１がアドレスバスＡＢ３と接続され、また、タイミング生成回路ＴＧが読出しのための切替え信号(R) を出力するときは、セレクタＳＥに第２選択信号(SEL2)が与えられて、読出し用バスＡＢ２がアドレスバスＡＢ３と接続されるようになっている。
【００３７】
レジスタ２２Ａの出力端子(OUT) から出力されるデータは、第２カウンタＣＴ２の入力端子にも入力される。第２カウンタＣＴ２は、レジスタ２２Ａから読み出されるデータのうちの黒ビット（“１”）の数を計数するためのものであり、ＣＰＵ２０から基本クロック信号SCLKを常時与えられているとともに、ＣＰＵからスキャン開始信号（OSU ON）を入力すると、レジスタ２２Ａから入力するデータの中の、クロック信号と同期する黒ビットを計数し、データバスＤＢを介してＣＰＵから第２カウンタＣＴ２の計数値を読み出すことができるようになっている。
【００３８】
次に、図１３のタイミングチャートに基づいて、作用を説明する。
ＣＰＵ２０からの基本クロック(SCLK)は、図１３（ａ）に記載された周期（１μｓ）をもって出力され、第１カウンタＣＴ１、第２カウンタＣＴ２及びタイミング生成回路ＴＧに与えられている。ＯＳＵからは図１３の（ｂ）に示すように１バイトずつのスキャンデータ（ＩＭＡＧ）が出力されているとする。通帳先端検知器からの検知信号に基づき、ＣＰＵが搬送部に所定ステップ数の搬送制御信号のうち最後の搬送制御信号を与えた後、カウント開始信号（OSU ON) を第１カウンタＣＴ１に入力して、スキャンデータ取込み開始時点（ｓｓ）にアンドゲートＧ１を開放させ、ＯＳＵからのスキャンデータを第１ラッチ回路Ｌ１に入力する。そして、タイミング生成回路ＴＧから第１ラッチ回路Ｌ１に第１ラッチ信号LAT1を与えることにより、１バイトのスキャンデータをラッチし、そのデータをオアゲートＧ２に出力する。
タイミング生成回路ＴＧは、第１ラッチ回路Ｌ１に対するセット信号の出力と同期して、アドレス生成回路ＡＧに対してクリア信号CLR を出力して、アドレス生成回路ＡＧのアドレスを初期化し、引き続き、所定タイミングでアドレスを更新させる。すなわち、セレクタの読出し用バスＡＢ２に、例えば、０２２４番地を与える。
【００３９】
この時点においては、タイミング生成回路ＴＧからの第１選択信号(SEL1)によりセレクタＳＥは、読出し用バスＡＢ２を選択してバスＡＢ３と接続している。また、タイミング生成回路ＴＧは切替信号のうち、読出を指定する信号(R) をレジスタ２２Ａに入力している。従って、レジスタ２２ＡはセレクタＳＥを介して読出し用バスＡＢ２から与えられるアドレスにより指定される番地の記憶エリアから１バイトのデータを読出して第２ラッチ回路Ｌ２に入力する。第２ラッチ回路Ｌ２はその直前にタイミング生成回路ＴＧから第２ラッチ信号(LAT2)を与えられているので、レジスタ２２Ａから入力したデータをラッチし、オアゲートＧ２に出力する。
【００４０】
これにより、オアゲートＧ２には、第１ラッチ回路Ｌ１からのスキャンデータと、第２ラッチ回路Ｌ２からの先にレジスタに格納されていたデータとが同期して入力されてオア処理され、そのオア結果がオアゲートＧ２から出力される。このタイミングにおいては、タイミング生成回路ＴＧはレジスタ２２Ａに対しては書込み指定信号(W) を与え、セレクタＳＥには第２選択信号(SEL2)を与えているので、セレクタＳＥはレジスタ２２Ａに０２２５番地を指定するアドレスを与えるため、オアゲートＧ２から出力されるオアデータがレジスタ２２Ａに入力されて、指定された番地に上書きにより格納されることにより、レジスタ２２Ａには順次シフトされたデータが格納される。
【００４１】
一方、レジスタ２２Ａからの読出タイミングにおいて、その出力端子から出力される一定単位のデータ、例えば、１バイトのデータは、第２カウンタＣＴ２に入力されて、その中の黒ビット（“１”のビット）が計数される。そして、その計数値がＣＰＵにより読み取られ、２８バイト分（１走査分）のスキャンデータの中の黒ビットの計数を終了するまで積算するために用いられる。
【００４２】
上記第１実施例において、一次レジスタのスキャンデータを二次レジスタのデータとオア処理する場合の、一次レジスタ側から読み出すデータの一定単位量は、通常の処理単位である１バイトが好適であるが、これに限らない。また、シフト処理は１走査分のデータ単位で行うならば、１回のオア処理のたびにシフト処理を行うか、すべてシフト処理を終了した後にオア処理を行うかは、任意である。結果的に傾斜文字パターンの投影情報が得られれば良い。
【００４３】
【発明の効果】
本発明は、ラインセンサによりスキャンして得られるスキャンデータが表す文字パターンを傾斜させて傾斜文字パターンを生成し、その傾斜文字パターンを縦方向に投影させて、その投影情報の中の“１”ビットを計数し、その計数値と基準値とを比較して計数値≧基準値の場合に印字あり行と判定し、計数値＜基準値の場合に印字なし行と判定するようにしたので、印字濃度が薄い等して、各走査におけるスキャンデータ量が少ない場合でも、１行分全体ではデータ量が増加されるため、従来と異なり、実際は印字されているのに、印字なしと誤判定されることが、確実に防止される。
【００４４】
また、請求項２の発明は、１走査分のスキャンデータを格納する一次レジスタと、前記一次レジスタから読出して後記処理をした後のデータを格納する二次レジスタとを備え、行の走査を行うに先立ち、使用する上記二つのレジスタの初期化を行う第１ステップと、副走査するたびにラインセンサによりスキャンして得られる１走査分のスキャンデータを前記一次レジスタに格納する第２ステップと、前記一次レジスタから一定単位量のスキャンデータを順次読み出してそのスキャンデータと前記二次レジスタのデータとをオア処理して、その結果であるオアデータを前記二次レジスタに格納する第３ステップと、前記第３ステップを終了するたびに、前記第３ステップの一定単位量のスキャンデータの読出しとオア処理を、前記一次レジスタの１走査分のすべてのスキャンデータに対して終了したか否かを調べる第４ステップと、終了していないときは、前記第３ステップに戻る第５ステップと、終了したときは、前記第３ステップから前記第５ステップまでの処理を１行分のスキャンデータに対して終了したか否かを調べる第６ステップと、終了していないときは、前記二次レジスタに格納されたオアデータを１ビットシフトし、かつ、前記第２ステップに戻る第７ステップと、終了したときは、前記二次レジスタに格納されたオアデータの中の”１”ビットを計数する第８ステップと、第８ステップにおいて得られた計数値を１行分の基準値と比較して、計数値が基準値よりも多いか少ないかにより、当該印字行が印字あり行又は印字なし行と判定する第９ステップとを行うので、一次レジスタには一定単位量のデータ記憶容量を有するものを用い、二次レジスタには一定単位量にシフト回数を加えた記憶容量を有するものを用いることにより、必要な処理を行うことができるから、経済的である。
【図面の簡単な説明】
【図１】  本発明方法の処理内容を概念的に示す説明図。
【図２】  媒体から数字１を読取った場合の処理内容を具体的なイメージで示す説明図。
【図３】  本発明方法に用いられるＲＡＭの構成を示す概念図。
【図４】  本実施例による処理内容を図示する模式図。
【図５】  同実施例のＣＰＵによる処理の手順を示すフローチャート。
【図６】  図５の中のスキャンデータ取込みルーチンの詳細を示すフローチャート。
【図７】  図５の中のオア処理ルーチンの詳細を示すフローチャート。
【図８】  図５の中の１ビットシフト処理ルーチンの詳細を示すフローチャート。
【図９】  図５の中のビットカウント処理ルーチンの詳細を示すフローチャート。
【図１０】  スキャンデータの投影情報とシフト方向の関係を示す参考図。
【図１１】  ＯＳＵが出力するスキャンデータの取込み、シフト処理、オア処理及び黒ビットカウント処理を行う中枢回路のブロック構成図。
【図１２】  第１カウンタのデータ切出し作用及び第１ゲートの動作の説明図。
【図１３】  中枢回路の動作を説明するタイミングチャート。
【図１４】  見開き状態の通帳の印刷フォーマットを説明する正面図。
【図１５】  通帳処理機のプリンタの主として機構部分の構成を示す概略図。
【図１６】  同プリンタの制御部分の構成を示すブロック図。
【図１７】  日付欄の走査位置及び一部の印字ドットパターンを示す説明図。
【図１８】  正常に印字された「１」の形態と、そのスキャンデータの処理内容を示す説明図。
【図１９】  薄い濃度で印字された場合の「１」の形態と、そのスキャンデータの処理内容を示す説明図。
【符号の説明】
図３において
２２ａ      バッファメモリ
２２ｂ      一次レジスタ
２２ｃ      二次レジスタ
図１５，１６において
７，２５    ＯＳＵ
７          ラインセンサ
２５        センサ制御部
【図１】
0003756012.tif 000002
【図２】
0003756012.tif 000003
【図３】
0003756012.tif 000004
【図４】
0003756012.tif 000005
【図５】
0003756012.tif 000006
【図６】
0003756012.tif 000007
【図７】
0003756012.tif 000008
【図８】
0003756012.tif 000009
【図９】
0003756012.tif 000010
【図１０】
0003756012.tif 000011
【図１１】
0003756012.tif 000012
【図１２】
0003756012.tif 000013
【図１３】
0003756012.tif 000014
【図１４】
0003756012.tif 000015
【図１５】
0003756012.tif 000016
【図１６】
0003756012.tif 000017
【図１７】
0003756012.tif 000018
【図１８】
0003756012.tif 000019
【図１９】
0003756012.tif 000020