<実施形態1>
実施形態1を、図1ないし図14を用いて説明する。
1.複合機の外観構成
図1は本発明の画像形成装置、画像読取装置の一例である複合機1の外観を示す斜視図であり、図2は画像読取ユニット5の断面図である。尚、本明細書を通じて原稿の読み取り方向である主走査方向をX方向とし、原稿の送り方向である副走査方向をY方向とする。
図1に示すように、複合機1はボックス型の本体部2と、本体部2の上方に配置された画像読取ユニット5を備えている。本体部2には印刷ユニット(本発明の「印刷部」の一例)3が収容されている。印刷ユニット3は、例えば、画像読取ユニット5にて読み取った画像データに基づいて紙などの被記録媒体に対してトナー、インクなどを用いて電子写真方式により画像を形成(印刷)する装置である。
画像読取ユニット5は原稿を読み取るものであり、CIS30、ADF40、原稿載置部50を含む。原稿載置部50は、台枠51、透明なガラス板からなる第1プラテンガラス52、第2プラテンガラス53、及びこれらのガラス52、53の中間に配置された中間枠54を含む。原稿カバー48は、原稿載置部50を覆う閉姿勢と原稿載置部50を開放する開姿勢とに回動可能であり、複合機1の本体部2の後側(操作部11、表示部12等が設けられる側を前側とする)に連結されている。原稿カバー48上に、ADF40が設けられている。
図2に示すように、ADF40はADFカバー41、原稿トレイ42、搬送路43、給紙ローラ44A、一対の搬送ローラ44B、一対の排紙ローラ44C等の各種ローラ、これら各種ローラを駆動するADFモータ86、排紙トレイ46、および押圧部材47を含む。ADF40は、原稿トレイ42に載置されている原稿を給紙ローラ44Aにより、一枚ずつ搬送して、第2プラテンガラス53上を通過させ、排紙トレイ46に排出する。押圧部材47は、第2プラテンガラス53上を通過する原稿が第2プラテンガラス53から浮かないように、原稿を第2プラテンガラス53に押圧する。さらに、ADF40には、原稿トレイ42にセットされた原稿を検出するための、フォトセンサ等の原稿センサ49が設けられている。
CIS30は、原稿載置部50の下方に設けられている。CIS30は、複数の受光素子が図2の紙面垂直方向に直線状に配列されているリニアイメージセンサ33、RGB3色の発光ダイオードなどで構成される光源31、原稿で反射された光源31からの反射光をリニアイメージセンサ33の各受光素子に結像させるロッドレンズアレイ32、これらが搭載されるキャリッジ34、およびキャリッジ34を搬送する図示しない搬送機構を含む。リニアイメージセンサ33は、受光素子に結像した反射光の輝度や色度を検出し、原稿の画像に基づくデータを生成する。
画像読取ユニット5は、第1プラテンガラス52にセットされた原稿を読み取るときはFBモータ84によってCIS30を第1プラテンガラス52に平行な副走査方向(図2中のA方向)に搬送しながら原稿を1ラインずつ読み取る。一方、ADF40によって搬送される原稿を読み取るときは、画像読取ユニット5は、FBモータ84によってCIS30を第2プラテンガラス53の直下に移動させ、第2プラテンガラス上の読取位置Pを通過する原稿を、イメージセンサ33によって1ラインずつ読み取る。
さらに、複合機1の前側には、各種のボタンからなり、ユーザからの操作指令を受け付ける操作部11、複合機1の状態を表示する液晶ディスプレイからなる表示部12が設けられている。
2.電気的構成
図3は複合機1の電気的構成を示すブロック図、図4は画像読取ユニットの電気的構成を示すブロック図である。複合機1は、制御部70、印刷ユニット3、画像読取ユニット5及び通信部7を備えて構成されている。制御部70はCPU71a、ROM71b、及びRAM71cを備えている。CPU71aはROM71bに記憶されている各種のプログラムを実行することによって複合機1の各部を制御する。ROM71bはCPU71aが実行する各種のプログラム(例えば、後述する白紙除去シーケンスを実行するためのプログラム)やプログラムの実行に用いるデータ(例えば、後述するOCR辞書)などを記憶している。RAM71cはCPU71aが各種の処理を実行するための主記憶装置として用いられる。また、RAM71cには、画像読取ユニット5にて読み取った原稿の画像データが記憶される。
図4は、画像読取ユニット5の電気的構成を示すブロック図である。画像読取ユニット5は、ASIC80、FBモータ84、FBモータ駆動回路85、ADFモータ86、ADFモータ駆動回路87、CIS30、光源制御回路88、AFE89、原稿センサ49、操作部11、表示部12などを備えて構成されている。
ASIC80には、FBモータ駆動回路85、ADFモータ駆動回路87、光源制御回路88、AFE89、操作部11、表示部12が接続されている。ASIC80はCPU71aの制御下でこれらを制御するとともに、AFE89から出力された出力値(画素値)にガンマ補正やシェーディング補正、その他各種の画像処理を施して画素毎にRGB3つの画素値を持つ画像データを生成する。そして、生成された画像データは、RAM71cに記憶される。
AFE89(Analog Front End)は、イメージセンサ33から出力されるアナログの出力値(電圧)をデジタルの出力値(画素値)に変換する回路である。
3.白紙除去シーケンス
本実施形態の複合機1は、画像読取ユニット5で読み取った原稿のうち「白紙」の原稿を除去する機能を備えている。尚、ここで言う白紙にはファイル名、ページなどいわゆる定型画像のみ印刷され本文画像の印刷がない準白紙原稿と、全面白紙原稿(定型画像、本文画像とも印刷されていない原稿)の双方を含むものとする。
以下、図5を参照して、上記白紙除去を行う白紙除去シーケンスについて詳細を説明する。白紙除去シーケンスは複合機1の起動に伴って実行され、スタート直後、オペレータの入力操作を待つ待機状態となる(S1)。そして、原稿トレイ42に原稿がセットされ操作部11のスタートキーが押されると、S2に移行する。尚、ここでは、原稿トレイ42に対して図6に示す全5枚の原稿がセットされたものとして、以下説明を行う。
S2では、制御部70のCPU71aによりADF40を駆動させる処理が開始される。これにより原稿トレイ42上にセットされた一枚目の原稿が、表面を上に向けた状態で搬送路43に送りだされる。そして、S3では、S2で送り出された原稿(ここでは、1枚目の原稿)の先端が読取位置Pに達したかどうか判定する処理が行われる。原稿の先端が読取位置Pに達するまでの間は、S3でNO判定され、S3の処理を繰り返す状態となる。
そして、送りだされた原稿の先端が読取位置Pに達するとS3でYES判定され、処理はS4に移る。S4では、CIS30による原稿の読み取りが行われる。具体的には、第2プラテンガラス53上の読取位置Pを通過する原稿を、イメージセンサ33が1ラインずつ読み取ってゆく。そして、全ラインについて読み取りが完了すると、その原稿は排紙トレイ46上に排紙される。
S4に続くS5では、CPU71aにより、S4にて読み取った原稿が1枚目の原稿か判定される。S4で読み取った原稿は1枚目であるため、S5ではYES判定される。S5でYES判定されると、次にS6に移行する。S6では、S4にて読み取った原稿の画像データをRAM71cに対して保存する処理がCPU71aにより実行される。これにて、1枚目の原稿の画像データがRAM71cに対して保存(記憶)される。
S7では、保存した画像データから文字テーブルと文字列テーブルを作成する処理が、CPU71aにより実行される。尚、文字テーブルとは、原稿に印刷された文字(数字を含む)や図柄を、座標(原稿上の座標)と関連付けて記憶させたものであり、また文字列テーブルとは、文字がX方向(原稿の主走査方向)に連なった文字列を座標(原稿上の座標)と関連付けて記憶させたものである。尚、これら文字テーブル、文字列テーブル及び後述する共通文字列テーブルはいずれもRAM71cのワーキングエリアに作成される。そして、この文字テーブルと文字列テーブルを作成する処理はサブルーチン化されており、S7では、図7に示すサブルーチン1が読み出される。
サブルーチン1は、図7に示すように、S41〜S49の9つのステップから構成されている。そして、S41では、読み取った原稿について黒画素が探索される。この例では、図8aに示すように、原稿の座標基準を原稿の上縁部左端とし、主走査方向(図8a中の左右方向)をX方向、副走査方向(図8a中の上下方向)をY方向としている。黒画素は、座標基準である原稿上縁部左端を始端として、X方向に探査される。
黒画素が検出されると、S42でYES判定されS43に移る。S43では、黒画素が連続する連続領域が探索され、画像データが切りだされる。具体例を挙げると、図6に示す1枚目の原稿では、原稿左端の上部に「title」なる文字が印刷されている。そのため、初回に行われるS43の処理では「title」のうち、最初の文字「t」を囲む連続領域Uが検出され、連続領域Uの画像データが切り出される。
S44では、S43にて切り出した画像データについて、文字判読する処理がCPU71aにより行われる。具体的には、切り出した画像データから形状を解析し、それをOCR辞書に登録された文字(キャラクタ)の形状を照合して、OCR辞書から形状が最も近い文字を検出することにより、文字判読する。ここでは、S43にて切り出した画像データは文字「t」であると、CPU71aにて判読される。尚、S44の文字判定処理はいわゆる光学文字認識(OCR:Optical Character Recognition)として知られた技術である。また、ここでいう「文字」には、ひらがな、かたかな、ローマ字の他、数字が含まれる。また、CPU71aが実行するS44の処理により、本発明の「判読部」の処理機能が実現されている。
続く、S45では、S43にて切り出した画像データがS44にて文字として判読できたか、判定する処理がCPU71aにて実行される。ここでは、S43にて切り出した画像データは文字として判読できていることから、S45ではYES判定され、処理はS46に移る。
そして、S46では、S44にて判読した文字に関する情報を、文字テーブルに書き込む処理(保存する処理)が行われる。文字テーブルは、図9a、図9bに示すように、文字と、その文字の座標を表としてまとめたものである。そして、この実施形態では、文字の座標を、画像データの切り出しに使用した連続領域(すなわち、文字を囲む矩形領域)Uの座標(X1、X2、Y1、Y2)を使って表すことにしている(図8a参照)。
従って、ここでは、図9aに示す文字テーブルの文字の欄に「t」が書き込まれ、また、文字の座標の欄にX1=10、X2=14、Y1=10、Y2=20がそれぞれ書き込まれる(図8aも参照)。
尚、S44で切り出した画像データについて、文字が判読できなかった場合には、S45の判定処理でNO判定される。そして、S45でNO判定された場合には、S47に移行する。S47では、判読できなかった画像データは図柄であると認識し、その図柄は座標とともに文字テーブルに書き込まれる。尚、図柄の座標としては、文字と同様に図柄を囲む連続領域Uの座標が書き込まれる。
S46、S47の処理が完了すると、次にS48の処理が行われる。S48では、原稿の全画素について黒画素の探索を行ったか判定する処理がCPU71aにより実行される。この段階では、原稿左端の上部しか行っていないことから、S48ではNO判定される。そして、S48でNO判定されると、処理はS41に戻り、CPU71aにより、既に探索済みの領域を除外して、黒画素を探索する処理が再開される。
そして、新たな黒画素が検出されると、S43にて連続領域Uが検出され、更に連続領域Uの画像データが切り出される。そして、S44では切り出した画像データを文字判読する処理が行われる。その後、S45にて、切り出した画像データを文字判読できたか判定する処理が行われ、文字判読できていれば、S46にて、文字テーブルに、文字とその文字の座標が書き込まれる。この例では、2回目に行うS46の処理にて、原稿左端の上部に印刷された「title」なる文字列のうち、2番目の文字である「i」と、「i」を囲む連続領域Uの座標が図9aに示す文字テーブルに書き込まれる。
このような処理が繰り返し行われることで、画像データの切り出しと、切り出した画像データの文字判読が行われ、その結果が文字テーブルに順に書き込まれてゆく。そして、1枚目の原稿には「t」、「i」、「t」、「l」、「e」、「a」、「b」、「c」、「い」、「い」、「え」、「1」、「A」、「.」、「d」、「o」、「c」の合計17の文字が印字されていることから、サブルーチン1の実行により、文字テーブルには、上記した17個の文字と、その文字の座標が書き込まれることとなる。
そして、原稿の全画素について黒画素の探索が終了すると、S48の判定でYES判定され、処理はS49に移行する。S49では、連なっている文字を文字列としてテーブルを再構成することにより、文字列テーブルが作成される(CPU71aにより作成される)。
具体的に説明すると、文字が文字列を構成しているかどうかは、2つの条件を満たしているかどうかにより判断される。
(1)Y座標が概ね一致している。
(2)X座標が連続している。
例えば、1枚目原稿の文字テーブルを構成する17個の文字のうち「t」、「i」、「t」、「l」、「e」の5文字はいずれもY1の座標が「10」、Y2の座標が「20」であり、Y座標が一致している。よって、(1)の条件をクリアしている。
また「t」、「i」、「t」、「l」、「e」の5文字は、X座標が連続している。具体的には、1番目の文字「t」はX2の座標が「14」であるのに対して、2番目の文字「i」はX1の座標が「15」であり、1番目の文字「t」と2番目の「i」のX座標は連続している。また、2番目の文字「i」はX2の座標「19」であるのに対して、3番目の文字「t」のX1の座標「20」であり、2番目の文字「i」と3番目の文字「t」のX座標は連続している。また、3番目の文字「t」と4番目の文字「i」と、4番目の文字「i」と5番目の文字「e」はX座標が連続している。
このように「t」、「i」、「t」、「l」、「e」の5文字は、(1)の条件と(2)の条件の双方を満たしているので、文字列と認識される。
そして、1枚目の原稿のうち、番号1〜番号5の5文字(「t」、「i」、「t」、「l」、「e」)と、番号6〜番号8の3文字(「a」、「b」、「c」)と、番号9〜番号11の3文字(「い」、「い」、「え」)と、番号13〜番号17の5文字(「A」、「.」、「d」、「o」、「c」)は、いずれも(1)の条件と(2)の条件を満たしており、文字列と認識される。
文字列テーブルは、図10a〜図10eに示すように、文字列と、その文字列の座標を表としてまとめたものである。そして、この実施形態では、文字列の座標を、文字列を囲む矩形領域Vの座標(X3、X4、Y3、Y4)を使って表すことにしている(図8b参照)。
以上のことから、図10aに示す文字列テーブル1には「title」、「abc」、「いいえ」、「1」、「A.doc」の5つの文字列と、各文字列の座標がそれぞれ書き込まれることになる。尚、本実施形態では、単独文字を文字列に含めており、文字「1」についても、文字列として文字列テーブルに書き込むようにしている。また、文字テーブル1や文字列テーブル1など、テーブルの末尾に付した添え字は、原稿の枚数を示す。すなわち、文字テーブル1は1枚目原稿の文字テーブルを意味、文字列テーブル1は、1枚目原稿の文字列テーブルを意味する。また、CPU71aが実行するS49の処理により、本発明の「文字列認識部」と「文字列テーブル生成部」の果たす処理機能が実現されている。
そして、S49にて、文字列テーブルが作成されるとサブルーチン1は終了し、処理は図5のメインフローに戻り、S23の処理が行われる。S23では、原稿センサ49の出力に基づいて、原稿トレイ42上に次の原稿があるか判定される。この段階では、1枚目の原稿しか原稿の読み取りを終了しておらず、原稿トレイ42上には、残りの原稿が残されているため、S23ではYES判定される。
そのため、白紙除去シーケンスはS2に戻り、ADF40により、原稿トレイ42上にセットされた二枚目の原稿が、表面を上に向けた状態で搬送路43に送りだされる(S3)。そして、原稿の先端が読取位置Pに達すると、CIS30による原稿の読み取りが行われる(S4)。
S4に続くS5では、CPU71aにより、S4にて読み取った原稿が1枚目の原稿か判定される。S4で読み取った原稿は2枚目であるため、S5ではNO判定される。S5でNO判定されると、次にS8に移行する。S8では、S4にて読み取った原稿が2枚目の原稿か判定される。
ここでは、S4で2枚目の原稿を読み取っているので、S8ではYES判定される。その後、処理はS9に移行して、S4にて読み取った原稿の画像データをRAM71cに対して保存する処理がCPU71aにより実行される。これにて、2枚目の原稿の画像データがRAM71cに対して保存(記憶)される。
S9にて、読み取った画像データをRAM71cに対して記憶すると、次にS10の処理が実行される。S10の処理は、S7と同じ処理であり、図7に示すサブルーチン1が読み出され、2枚目の原稿について、読み取った画像データから文字テーブルと文字列テーブルを作成する処理が行われる。これにより、図9bに示す文字テーブル2と、図10bに示す文字列テーブル2が作成されることとなる。
そして、サブルーチン1の終了後、図5のメインフローに戻り、S10の処理が行われる。S10の処理は、1枚目原稿の文字列テーブル1と2枚目原稿の文字列テーブルから、共通文字列テーブルを作成する処理がCPU71aにより実行される。この共通文字列テーブルを作成する処理はサブルーチン化されており、S11では図11に示すサブルーチン2が読み出される。
サブルーチン2は、図11に示すようにS61〜S74の14ステップから構成されている。このサブルーチン2は、1枚目原稿の文字列テーブル1の「行番号iの文字列」に対し、それに一致する文字列が2枚目原稿の文字列テーブル2に含まれているか検索する処理(S61〜S69)を、文字列テーブル1の「行番号iを更新」しながら繰り返し行うことで、1枚目原稿の文字列テーブル1と2枚目原稿の文字列テーブル2に共通する共通文字列を検出し、共通文字列テーブルを作成するものである。
尚、この実施形態では、下記(3A)の条件と(4)の条件を満たすか、(3B)の条件と(4)の条件を満たした場合に、文字列は共通であると判断する。
(3A)文字列を構成する文字が一致している(S62)。
(3B)文字列が数字で、かつ文字列テーブル1の「i」行の数字+1の値が文字列テーブル2の行にある(S63)。
(4)文字列の座標がほぼ一致している(S64)。
さて、S61では、1枚目原稿の文字列テーブル1について行番号「i」が「1」に設定され、2枚目の文字列テーブルについて行番号「j」が「1」に設定される。
次にS62では、文字列テーブル1の「i」行目の文字列と、文字列テーブル2の「j」行目の文字列について、文字が一致しているかどうか判定される。ここでは、「i」と「j」はいずれも1であるため、文字列テーブル1と文字テーブル2の1行目の文字列について、文字の一致が判定される。
文字列テーブル1と文字列テーブル2の1行目の文字列は、いずれも「title」であることから、S62ではYES判定される。その後、処理はS64に移行する。尚、S62でNO判定された場合には、S63に移行する。S63では、文字列が数字で、かつ文字列テーブル1の「i」行の数字+1の値が文字列テーブル2の行にあるか判定(CPU71aにより判定される)される。
S64では、2つの文字列が同じような座標にあるか判定される(CPU71aにより判定される)。従って、ここでは、文字列テーブル1の1行目に書き込まれた文字列「title」と、文字列テーブル2の1行目に書き込まれた文字列「title」がほぼ同じような座標か判定される。
文字列テーブル1の1行目に書き込まれた文字列「title」と、文字列テーブル2の1行目に書き込まれた文字列「title」の座標は、X1=10、X=14、Y1=10、Y2=20であり、4つの座標は全て一致している(図10a、図10b参照)。そのため、S64ではYES判定され、次にS65に移行(ただし、NO判定された場合には、S68に移行する)する。
尚、S64では、2つの文字列が同じような座標にある場合であれば、YES判定するようになっており、2つの文字列の座標が完全に一致している場合に加えて、同じような座標にある場合(具体的には、2つの文字列の座標に数mm程度の相違がある場合)もYES判定される。このように座標の一致判断に余裕を持たせることで、印刷ズレにより、文字列の座標に数mm程度のズレが発生したとしても、S64でNO判断されない。
さて、S65では、文字列は「数字」か、判定される。文字列「title」は「数字」でないため、S65ではNO判定され、次にS66に移行する。そして、S66では、共通文字列テーブルに、共通文字列と座標を保存する処理が行われる(CPU71aにより行われる)。
共通文字列テーブルとは、共通文字列と、その共通文字列の座標を表としてまとめたもの(別の言い方をすると、共通文字列と、その座標を関連付けて記憶させたもの)である(図12参照)。従って、ここでは、共通文字列テーブルの1行目に、文字列「title」と、その座標が保存される(書き込まれる)。また、S65でYES判定された場合には、S67に移行して共通文字列テーブルに、共通文字列として「数字」と座標が保存される(書き込まれる)。
S66又はS67の処理が終了すると、次にS68の処理が行われる。S68では、文字列テーブル2の行番号である「j」をインクリメント(+1加算)する処理が行われる。従って、ここでは、文字列テーブル2の行番号が「1」から「2」にインクリメントされる。
次に、S69では、文字列テーブル2の最大行数まで検索したか、CPU71aにより判定される。この段階では、文字列テーブル2の1行目までしか検索されていないので、NO判定される。S69でNO判定されると、処理はS62に戻る。
その後、文字列テーブル1の「1」行目の文字列と、文字列テーブル2の「2」行目の文字列を対象にS62〜S67の処理が行われる。文字列テーブル1の「1」行目の文字列と、文字列テーブル2の「2」行目の文字列は、文字が不一致であり、また、数字でもないので、S62、S63でいずれもNO判定され、処理はS68に移行する。
そして、S68では文字列テーブル2の行番号が「2」から「3」にインクリメントされ、続く、S69で文字列テーブル2の最大行数まで検索したかどうかが判定される。この段階では、文字列テーブル2の2行目までしか検索されていないので、NO判定される。S69でNO判定されると、処理はS62に戻る。
その後、文字列テーブル1の「1」行目の文字列と、文字列テーブル2の「3」行目の文字列を対象にS62〜S67の処理が行われる。このような処理が繰り返し行われ、文字テーブル2の最大行数(ここでは、3行目)まで検索が完了すると、S69でYES判定される。
そして、S69でYES判定された場合には、S70にて、文字列テーブル2の行番号である「j」を1に設定する処理が行われる。また、S71で、文字列テーブル1の行番号である「i」をインクリメント(+1加算)する処理が行われる。従って、ここでは、文字列テーブル1の行番号が「1」から「2」にインクリメントされる。
その後、S72では、文字列テーブル1の「i」行の文字列が、原稿の中央領域CTに含まれているか判定する処理が行われる(CPU71aにより行われる)。この実施形態では、原稿の中央領域CTを図6に示す一点鎖線で示す範囲(具体的には、定型画像が印字される原稿の上端から所定範囲(ヘッダ)と、定型画像が印字される原稿の下端から所定範囲(フッタ)を除外した範囲)に設定してあり、「i」行の文字列が中央領域CTに含まれていれば、YES判定される。一方、中央領域に含まれていなければ、NO判定される。尚、原稿の中央領域CTが、本発明の「原稿のうち中央を含む一部の領域」に対応している。また、中央領域CTは座標で設定するとよい。そのようにすれば、文字列テーブル1の「i」行のY座標(文字列のY座標)と、中央領域CTのY座標を比較することにより、文字列テーブル1の「i」行の文字列が、原稿の中央領域CTに含まれているか、簡単に判定できる。
文字列テーブル1の2行目の文字列「abc」は、図6に示すように中央領域CKから外れている。そのため、S72ではNO判定される。S72でNO判定されると、S74に移行する。
そして、S74では、文字列テーブル1の最大行数まで検索したか判定する処理が行われる。この段階では、文字列テーブル1の1行目までしか検索されていないので、NO判定される。S74でNO判定されると、処理はS62に戻る。
その後、文字列テーブル1の「2」行目の文字列と、文字列テーブル2の「1」行目〜「3」行目の各文字列を対象にS62〜S69の処理が行われる。これにて、文字列テーブル1の「2」行目の文字列に対して、それに共通する文字列(すなわち、(3A)と(4)の条件か、(3B)と(4)の条件を満たす文字列)が、文字列テーブル2の「1」行目〜「3」行目に含まれているか、検索される。ただし、文字列テーブル1の「i」行の文字列が、原稿の中央領域に含まれている場合は除く。
そして、(3A)の条件と(4)の条件を満たす場合には、その文字列は座標と共に、共通文字列テーブルに保存される(S66)。また、(3B)の条件と(4)の条件を満たす場合には、共通文字列として「数字」と座標が、共通文字テーブルに保存される(S66、S67)。
このような処理が、文字列テーブル1の「行番号iを更新」しながら繰り返し行なわれる。そして、文字列テーブル1の5行目について、それに共通する文字列が、文字列テーブル2の「1」行目〜「3」行目に含まれているか検索し終わると、S74にてYES判定され、サブルーチン2は終了する。
この実施形態では、1枚目の原稿と2枚目の原稿には「title」、「数字(1、2、3、・・)」、「A.doc」の3つの共通する文字列が含まれているので、共通文字列テーブルに対して、これら3つ文字列とその座標が保存されることになる(図12参照)。
尚、上記した3つの共通文字列のうち、「数字(1、2、3・・)」は、文字列テーブル1の4行目の数字「1」と、文字列テーブル2の2行目の数字「2」を共通した文字列と判断したものである。すなわち、これら両文字列テーブルの2つの数字は座標が一致し、数が連続している。そのため、文字列テーブル1の4行目の数字「1」についてサブルーチン2にかけると、S62でNO判定された後、S63でYES判定される。これら数が連続していることから、文字列テーブル1の「i」行の数字+1の値が文字列テーブル2の行にあるかの条件を満たすからである。
その後、S64、S65でそれぞれYES判定されることから、S67にて、共通文字列テーブルに共通文字列として保存されることになる。このように、共通文字列に、座標が一致し連続する数字を含めるようにしているようにすれば、原稿にふられたページ数を共通文字列に含めることが可能となる。
また、このサブルーチン2では、文字列テーブル1の「i」行の文字列が、原稿の中央領域CKに含まれている場合には、「i」行を中央領域外の値に設定する(S72、S73)。そのため、たとえば、原稿の中央領域CKに含まれる3行目の文字列「いいえ」は検索対象から除外され、2行目の文字列「abc」について、それに共通する文字列が文字列テーブル2側に含まれているか検索すると、次は3行目の文字列「いいえ」を飛ばして、4行目の文字列「1」について、それに共通する文字列が文字列テーブル2側に含まれているか検索する。
このように原稿の中央領域CKを除外して共通文字列を検出すれば、原稿の全領域を対象に共通文字列を検出する場合に比べて共通文字列を検出する処理を短縮できる。また、共通文字列は例えばページ番号、日付、ファイル名等であり、これらは通常、原稿端に印字されることが多い。そのため、原稿の中央領域CKを予め除外しておけば、共通文字列を誤検出することがなくなる。従って、白紙判断を正確に行うことが可能となる。
尚、CPU71aにより実行されるS11の処理(サブルーチン2)により本発明の検出部の果たす機能が実現されている。また、サブルーチン2の実行により、1枚目の原稿の文字列テーブルと2枚目の原稿の文字列テーブルから共通文字列テーブルを作成することにより、本発明の「前記検出部は、前記文字列テーブル生成部にて生成された全文字列テーブルのうち一部の文字列テーブルだけを使用して、前記共通文字列を検出する」を実現させている。
そして、サブルーチン2の終了後、図5のメインフローに戻り、S12にて1枚目の原稿が、白紙か判断する処理がCPU71aにより実行される。この白紙判断処理はサブルーチン化されており、S12では図13に示すサブルーチン3が読み出される。
サブルーチン3は、S11で作成した「共通文字列テーブル」と白紙判断対象となる原稿の「文字列テーブル」を比較することにより白紙判断を行うものであり、図13に示すS81〜S89の9ステップから構成されている。尚、以下の説明において「共通範囲」とは原稿のうち共通文字列が印刷された範囲(4つの座標X1、X2、Y1、Y2で表される範囲)のことである。また、非共通範囲とは原稿のうち共通範囲を除くそれ以外の全範囲を意味する。
S81では、白紙判断対象の原稿について、共通範囲が白紙かどうか判定される。共通範囲が白紙かどうかを判断するには、判断対象となる原稿の文字列テーブルに、共通範囲に対して座標が重なる文字列があるか検索すればよく、重なる文字列がなければ、共通範囲は白紙と判断される(YES)。
S81でYES判定されると、処理はS82に移行する。そして、S82では、白紙判断対象の原稿について、非共通範囲が白紙かどうか判定される。非共通範囲が白紙か判断するには、判断対象となる原稿の文字列テーブルに、非共通範囲に含まれる文字列があるか検索すればよく、非共通範囲に含まれる文字列がなければ、非共通範囲は白紙と判断される(YES)。
そして、S82でYES判定された場合には、S83に移行して、白紙フラグが立てられる(RAM71cに白紙フラグが記憶される)。一方、S82でNO判定された場合には、S84に移行して、非白紙フラグが立てられる(RAM71cに白紙フラグが記憶される)。
また、S81でNO判定された場合には、S85に移行する。S85では、白紙判断の対象となる原稿について、共通範囲に印刷された文字列が、共通文字列テーブル側の共通文字列に対して文字が一致しているか判断される。これは、原稿側の文字列テーブルの文字列と、共通文字列テーブル側の共通文字列を比較することにより判断される。
そして、S85にてYES判定された場合(一致する場合)には、次にS86に移行する。そして、S86では、非共通範囲が白紙かどうか、判定される。非共通範囲が白紙か判断するには、判断対象の原稿の文字列テーブルに、非共通範囲に含まれる文字列があるか、検索すればよい。そして、S86でYES判定された場合には、S87に移行して、白紙フラグが立てられる。一方、S86でNO判定された場合には、S88に移行して、非白紙フラグが立てられる。また、S85でNO判定された場合(不一致と判断された場合)も、S89に移行して、非白紙フラグが立てられる。尚、サブルーチン3のうちS81、S85、S89の処理により、本発明の「前記判断部は、前記文字列テーブルに、前記共通文字列と座標が重なり、文字が異なる文字列が含まれている場合には、非白紙と判断する」が実現されている。
次に、上記のサブルーチン3により、1枚目の原稿の白紙判断が如何様になされるか説明する。1枚目の原稿の文字列テーブル1には、共通範囲に座標が重なる文字列(例えば、「title」など)がある。従って、S81ではNO判定される。また、その文字列(例えば、「title」)は、共通文字列に保存された共通文字列と一致している。そのため、S85では、YES判定される。そして、1枚目の原稿の文字列テーブルには、「abc」や「いいえ」の文字列(座標が共通範囲外の文字列)が含まれていて、非共通範囲は白紙ではない。そのため、S86ではNO判定される。
このように、一枚目の原稿の白紙判断では、S81にてNO判定、S85にてYES判定、S86にてNO判定される。そして、S88にて非白紙フラグが立てられる。S88の処理が終わると、サブルーチン3は終了する。尚、CPU71aに実行されるS12(サブルーチン3)、S21(サブルーチン3)の処理により、本発明の判断部の果たす機能が実現されている。
サブルーチン3の終了後、図5のメインフローに戻り、S13の処理が行われる。S13では、S12の判断結果に応じて、1枚目の原稿を白紙除去する処理がCPU71aにより実行される。この白紙除去処理はサブルーチン化されており、S13では、図14に示すサブルーチン4が読み出される。
サブルーチン4は、S91とS92の2つのステップから構成されていて、S91では、白紙フラグが立っているかどうか判定する処理が行われる。そして、白紙フラグが立っている場合には、その原稿を白紙除去(具体的には、RAM71cに保存したその原稿の画像データを削除する)。一方、白紙フラグが立っていない場合には、S91ではNO判定され、白紙除去する処理をしないまま処理は終了する。そして、1枚目の原稿は、非白紙フラグが立っており、白紙フラグは立っていない。そのため、白紙除去されることなく、サブルーチン4は終了することになる。
サブルーチン4の終了後、図5のメインフローに戻り、S21の処理にて、原稿(ここでは、2枚目の原稿)が白紙か判断する処理がCPU71aにより実行される。S21の処理はS12と同じ処理であり、S21ではS12の場合と同様に図13に示すサブルーチン3が読み出される。
サブルーチン3の説明は既に行ったので、ここでは、2枚目の原稿の白紙判断が如何様に行われるかを簡単に説明する。2枚目の原稿の文字列テーブル2には、共通範囲に座標が重なる文字列(例えば、「title」など)がある。従って、S81ではNO判定される。また、その文字列(例えば、「title」)は、共通文字列に保存された共通文字列と一致している。そのため、S85では、YES判定される。そして、2枚目の原稿の文字列テーブル2には、共通文字テーブルの共通文字列と同じ文字列しか含まれておらず、非共通範囲に含まれる文字列は存在しない。そのため、S86ではYES判定される。
このように、一枚目の原稿の白紙判断では、S81にてNO判定、S85にてYES判定、S86にてYES判定される。そして、S88にて、白紙フラグが立てられる。そして、S88にて白紙フラグを立てる処理が終わると、サブルーチン3は終了する。
サブルーチン3の終了後、図5のメインフローに戻り、S22の処理が行われる。S22では、S21の判断結果に応じて、原稿(ここでは、2枚目の原稿)を白紙除去する処理がCPU71aにより実行される。このS22の白紙除去処理(S13と同じ処理)はサブルーチン化されており、図14に示すサブルーチン4が読み出される。そして、サブルーチン4の実行により、2枚目の原稿は白紙除去される。すなわち、RAM71cに保存した画像データは削除される。
その後、処理はS23に移行する。S23では、原稿センサ49の出力に基づいて、原稿トレイ42上に次の原稿があるか判定される。この段階では、2枚目までしか原稿の読み取りを終了しておらず、原稿トレイ42上には、原稿が残されているため、S23ではYES判定される。
そのため、白紙除去シーケンスはS2に戻り、ADF40により、原稿トレイ42上にセットされた三枚目の原稿が、表面を上に向けた状態で搬送路43に送りだされる。そして、原稿の先端が読取位置Pに達すると、CIS30による原稿の読み取りが行われる。
S4に続くS5では、S4にて読み取った原稿が1枚目の原稿か判定される。S4で読み取った原稿は3枚目であるため、S5ではNO判定される。S5でNO判定されると、次にS8に移行する。S8では、S4にて読み取った原稿が2枚目の原稿か判定される。S4で読み取った原稿は3枚目であるため、S8ではNO判定される。その後、処理はS14に移行して、S4にて読み取った原稿の画像データをRAM71cに対して保存する処理がCPU71aにより実行される。これにて、3枚目の原稿の画像データがRAM71cに対して保存(記憶)される。
S14にて、読み取った画像データをRAM71cに対して記憶すると、次にS15の処理が実行される。S15の処理は、S7、S9と同じ処理であり、図7に示すサブルーチン1が読み出され、3枚目の原稿について、読み取った画像データから文字テーブルと文字列テーブルを作成する処理が行われる。これにより、文字テーブル3と、図10cに示す文字列テーブル3が作成されることとなる。尚、文字テーブル3は図を省略している。
そして、S15の処理が完了すると、次にS21にて3枚目原稿について白紙判断する処理が実行される。そして、S21にて白紙判断が行われると、次にS22に移行して、S21の判断結果に応じてその原稿を白紙除去する処理が行われる。そして、S22の処理が終了すると、再びS23に戻る。
このような処理が繰り返し行われ、原稿トレイ42上にセットされた全原稿(この例では、5枚)について、白紙除去する処理が完了すると、S23にてYES判定されることとなり、白紙除去シーケンスは終了することになる。
以下、3枚目〜5枚目の各原稿について、原稿の白紙判断が如何様に行われるかを簡単に説明する。
図6に示す3枚目原稿の文字列テーブル3には、図10cに示すように、共通範囲に座標が重なる文字列(例えば、「title」など)がある。従って、S81ではNO判定される。また、その文字列(例えば、「title」)は、共通文字列に保存された共通文字列と一致している。そのため、S85では、YES判定される。そして、3枚目の原稿の文字列テーブル3には「あいうえお」なる文字列(座標が共通範囲外の文字列)が含まれており、非共通範囲は白紙ではない。S86ではNO判定される。以上のことから、S88にて非白紙フラグが立てられるので、3枚目の原稿は白紙除去されない。
次に、図6に示す4枚目の原稿、すなわち原稿の左端に「japan」の文字だけが印刷された原稿の場合を説明する。4枚目原稿の文字列テーブル4には、図10dに示すように、文字列「japan」が保存されている。この文字列「Japan」は共通範囲に座標が重っていることから、S81ではNO判定される。一方、この文字列「japan」は、共通範囲に記された共通文字列「title」とは文字列が一致していない。そのため、S85ではNO判定され、S89にて非白紙フラグが立てられる。よって、4枚目の原稿は白紙除去されない。
次に、図6に示す5枚目の原稿、すなわち全面白紙の場合を説明する。5枚目原稿の文字列テーブル5には、図10eに示すように、文字列が一切保存されていない。そのため、S81、S82ではいずれもNO判定される。そのため、S84にて非白紙フラグが立てられ、5枚目の原稿は白紙除去される。
以上説明したように、実施形態1では、全面白紙原稿(図6の5枚目の原稿)を除去できる。また、実施形態1では、共通文字列を除外して白紙判断を行うことから、準白紙原稿(図6の2枚目の原稿であって、共通文字列のみ印字され本文画像の印刷がない原稿)を白紙除去できる。
また、実施形態1では、共通範囲に重なる文字列があったとしても、それが共通文字列と一致しなければ、非白紙フラグを立てるようにしてある(S81、S85、S89)。そのため、図6の4枚目の原稿のように、共通文字列の座標に異なる文字列が印刷されている場合には、白紙除去されない。仮に、従来のように除外範囲を設定すると、図6の4枚目の原稿のように除外範囲である共通文字列の座標に異なる文字列が印刷されていても、それは白紙除去される。本実施形態1では、そのような原稿であっても白紙除去されないため、従来の白紙判断方法に比べて白紙判断精度が高い。また、除外範囲を設けないようにすることで、ユーザの手間を減らすことが出来るというメリットも得られる。
また、実施形態1では、判読した文字に基づいて共通文字列を検出しており、濃度に基づいて検出する場合に比べて、共通文字列を正確に検出できる。従って、白紙判断を正確に行うことが可能となる。
また、実施形態1では、共通文字列に、座標が一致し連続する数字を含めるようにしている。このようにすれば、原稿にふられたページ数を共通文字列に含めることが可能となる。そのため、ページ数を除外して、白紙判定を行うことが可能となり、白紙判断の精度が高まる。
また、実施形態1では、原稿の中央領域CKを除外して共通文字列を検出する。そのため、原稿の全領域を対象に共通文字列を検出する場合に比べて共通文字列を検出する処理を短縮できる。また、共通文字列は例えばページ番号、日付、ファイル名等であり、これらは通常、原稿端に印字されることが多い。そのため、原稿の中央領域CKを予め除外しておけば、共通文字列を誤検出することがなくなる。従って、白紙判断を正確に行うことが可能となる。
また、実施形態1では、1枚目の原稿と2枚目の原稿の文字列テーブルだけを使用して、共通文字列を検出している。そのため、共通文字列を検出した以降は、原稿の読み取りと白紙判断を並行して行うことが可能である。
<実施形態2>
実施形態2を図15ないし図17を用いて説明する。実施形態1では、1枚目の原稿と2枚目原稿の文字列テーブルを比較して、共通文字列テーブルを作成した。そして、1枚目の原稿と2枚目原稿の文字列テーブルを比較して作成した共通文字列テーブルに基づいて、3枚目以降の原稿について白紙判断を行うようにした。
実施形態2は、1枚目の原稿と2枚目原稿の文字列テーブルを比較して共通文字列テーブルを作成する点は、実施形態1と共通している。しかし、実施形態2では、作成した共通文字列テーブルを、3枚目以降の原稿の文字列テーブルと比較して更新する構成となっており、その点が実施形態1と異なっている。そして、この変更に伴って、実施形態2の白紙除去シーケンスでは、実施形態1の白紙除去シーケンスに対してS16の処理(共通文字列テーブル更新処理)を追加している。
また、実施形態1では、原稿の画像を読み取ると、その都度白紙判断を行うようにしていたが、実施形態2では、画像の読み取りをまず全原稿分行い、その後、白紙判断をまとめて行うようにした。そして、この変更に伴って、実施形態2の白紙除去シーケンスでは、実施形態1の白紙除去シーケンスに対してS24〜S28を追加し、S12、S13、S21、S22を削除した内容となっている。
以下、実施形態1との相違点を説明する。
<1点目の相違点>
S16の処理を、3枚目の原稿の読み取りに伴って共通文字列テーブルを更新する場合を例にとって説明する。S16の処理はサブルーチン化されており、S16では、図16に示すサブルーチン5が読み出される。サブルーチン5は、S100〜S107の8つのステップから構成されていてCPU71aにより実行される。尚、以下の説明において「m」とは共通文字列テーブルの行番号を示すものとする。
まず、S100では共通文字列テーブルの行番号「m」が「1」に設定される。続くS101では共通文字列テーブルの「m」行と同じ座標を、3枚目原稿の文字列テーブルから検索する処理が行われる。そして、同じ座標がない場合にはS102でNO判定され、S105にて共通文字列テーブルから「m」行は削除される。
一方、同じ座標が、3枚目原稿の文字列テーブルに含まれていれば、S102でYES判定され、処理はS103に移行する。S103では、3枚目原稿の文字列テーブルから検索された同じ座標の文字列は、共通文字列と同じか判定される。
同じ文字列であれば、S103でYES判定される。一方、同じ文字列でない場合には、S104に移行する。S104では、共通文字列テーブル側の「m」行の文字列は数字で、文字列テーブル側の文字列も数字か、判定される。双方が数字であれば、S104ではYES判定される。
S103、S104でYES判定された場合は、いずれもS106に移行する。S106では、共通文字列テーブルの行番号である「m」をインクリメント(+1加算)する処理が行われる。従って、ここでは、共通文字列テーブルの行番号が「1」から「2」にインクリメントされる。
一方、S104でNO判定された場合には、S102でNO判定された場合と同様に、S105にて共通文字列テーブルから「m」行は削除される。そして、S105の処理に続いてS106に移行し、上記したように共通文字列テーブルの行番号が「1」から「2」にインクリメントされる。
その後、S107では、共通文字列テーブルの全行番について検索を行ったか判定される。ここでは、1行目しか検索されていないので、S107ではNO判定される。そのため、処理はS101に戻り、上記したS101〜S106の処理が、上記した手順に従って実行される。そして、共通文字列テーブルの全行番について検索を行うと、S107でYES判定され、サブルーチン5は終了する。
このサブルーチン5は、共通文字列テーブルに保存された共通文字列のうち、新しく読み込んだ3枚目以降の原稿の文字列テーブル3に含まれていない共通文字列を削除する(S105)。
そのため、共通文字列テーブルは例えば、図17に示すように上段→中段→下段の順に、更新されてゆき、最終的には全原稿に共通する共通文字列とその座標だけが保存された状態となる。尚、CPU71aにて実行されるS16の処理により、本発明の「前記検出部は、前記文字列テーブル生成部にて前記文字列テーブルが生成される度に、新しく生成された文字列テーブルに含まれない共通文字列を削除することにより、前記共通文字列を更新する」が実現されている。
<2点目の相違点>
次に、図15を参照して、2点目の相違点であるS24〜S28の処理を説明する。尚、以下の説明において、「n」とは読み取った原稿のページ数を示すものとする。
S24からS28の処理は、S16にて更新済みの共通文字列テーブルを利用して、画像読取ユニット5で読み取った全n枚の原稿の白紙判断と、白紙除去処理をまとめて行うものである。具体的には、S24〜S28の5つのステップから構成されていて、S24では、原稿のページ数「n」が「0」に設定される。続く、S25では、原稿のページ数である「m」をインクリメント(+1加算)する処理が行われる。従って、ここでは、原稿のページ数が「0」から「1」にインクリメントされる。
S26は、n枚目の原稿を白紙判断する処理が行われる。このS26の処理は、実施形態1のS12やS21と同じ処理であり、S26では、サブルーチン3が読み出される。そして、S16にて更新済みの共通文字列テーブルを利用して、n枚目(ここでは、1枚目)の原稿が白紙か判断される。
S26にて1枚目の原稿について、白紙判断が行われると、次に、S27に移行する。S27では、n枚目の原稿について、白紙除去する処理が行われる。このS27の処理は、実施形態1のS13やS22と同じ処理であり、S27では、サブルーチン4が読み出される。そして、S27では、S26の判断結果に応じて、原稿(ここでは、1枚目の原稿)を白紙除去する処理が実行される。
そして、S28では、白紙判断済みの原稿ページ数nが、画像読取ユニット5で読み取ったページ数に達したか判断される。そして、白紙判断済みの原稿ページ数nが、読み取ったページ数に達していなければ、S28でNO判定され、S25に戻る。
以上のことから、画像読取ユニット5で読み取った各原稿について白紙判断と白紙除去処理が行われる。そして、全原稿について、それらの処理が終了すると、S28でYES判定され、一連の白紙除去シーケンスは終了する。
実施形態2では、画像読取ユニット5で読み取った全原稿の文字列テーブルを対象にして、共通文字列を検出するから、全原稿に共通する文字列を共通文字列として検出することが可能である。従って、全原稿に共通する共通文字列だけを除外して白紙判断を行うことが出来るので、原稿の白紙判断を正確に行うことが可能である。
また、実施形態2では、新たな原稿の読み取りに伴って文字列テーブルが生成される度に、共通文字列テーブルを更新するようにしている。このように共通文字列テーブルを更新するようにしておけば、全原稿を読み取った後に、全原稿の文字列テーブルから共通文字列を作成する場合に比べて、共通文字列の検索に要する手間が少なくて済む。そのため、共通文字列テーブルの作成、及び原稿の白紙判断、除去を効率よく行うことが可能である。
<実施形態3>
実施形態3を説明する。実施形態1では原稿の白紙判断に、サブルーチン3を用いた。実施形態3は、原稿の白紙判断を、実施形態1とは異なる方法で行うようにしたものである。具体的には、実施形態3では、判断対象の原稿の文字列テーブルに対して、共通文字列テーブルに保存された共通文字列以外の文字列が含まれている場合には、非白紙と判断する。
実施形態1と同様に、図6に示す5枚の原稿を白紙判断する場合を例にとって具体的な白紙判断例を説明する。尚、各原稿の文字列テーブルは実施形態1と同様にサブルーチン1を用いて、図10a〜図10eに示す文字列テーブルが生成させたものとし、共通文字列テーブルはサブルーチン2を用いて、図12に示す共通文字列テーブルが作成されているものとする。
さて、図12に示す共通文字列テーブルには「title」、「数字」、「A.doc」の3つの共通文字列が保存されている。一方、図10aに示す文字列テーブル1には、共通文字列に含まれていない文字列「abc」や「いいえ」が含まれている。また、図10cに示す文字テーブル3には、共通文字列に含まれていない文字列「あいうえお」が含まれている。また、図10dに示す文字テーブル4には、共通文字列に含まれていない文字列「japan」が含まれている。
従って、これら文字列テーブル1に対応する1枚目の原稿、文字列テーブル3に対応する3枚目の原稿、文字列テーブル4に対応する4枚目原稿は非白紙と判断できる。
一方、それ以外の文字列テーブル2、4は、共通文字列しか含まれていないか、文字列そのものが含まれていないパターンになるので、文字列テーブル2に対応する2枚目の原稿、文字列テーブル4に対応する4枚目の原稿はいずれも白紙と判断できる。このように実施形態3では、文字列と共通文字列を比較するだけの簡単な処理で原稿が白紙か非白紙か判断できるというメリットがある。
<他の実施形態>
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
(1)実施形態1〜2では、画像読取装置の一例に複合機を例示したが、印刷ユニットが必ずしも必要でなく、少なくとも制御部70と画像読取ユニット5を備えた構成であればよい。
(2)実施形態1〜2では、原稿の白紙判断を文字列テーブルを用いて行った例を示したが、具体的には、文字列テーブルに共通文字列以外の文字列が含まれている場合、原稿を非白紙と判断するようにした。白紙判断は、共通文字列を除外して行うものであればよく、例えば、原稿画像から共通文字列を除外する処理を行い、その後、共通文字列を除外した原稿画像について、画素濃度の出現数を閾値と比較することで、原稿が白紙することも可能である。
(3)実施形態2では、共通文字列テーブルを新しく読み取った原稿の文字列テーブルと比較して更新することにより、全原稿に共通する共通文字列テーブルを作成するようにした。全原稿に共通する共通文字列テーブルの作成方法(CPU71aにて作成される全原稿の全文字列テーブルを対象に共通文字列を検出する方法)は、実施形態2の方法以外に限定されるものではなく、例えば、全原稿を読み取った後に、全原稿の文字列テーブルから共通文字列を作成するようにしてもよい。
(4)実施形態1〜2では、原稿の白紙判断を文字列テーブルを用いて行った例を示したが、具体的には、文字列テーブルに共通文字列以外の文字列が含まれている場合、原稿を非白紙と判断するようにした。白紙判断は、共通文字列を除外して行うものであればよく、例えば、原稿画像から共通文字列を除外する処理を行い、その後、共通文字列を除外した原稿画像について、画素濃度の出現数を閾値と比較することで、原稿が白紙することも可能である。
(5)実施形態1では、文字列テーブルの文字列に数字を含めたが、更に図柄を含めるようにしてもよい。