JP3710164B2 - 画像処理装置及び方法 - Google Patents
画像処理装置及び方法 Download PDFInfo
- Publication number
- JP3710164B2 JP3710164B2 JP10853495A JP10853495A JP3710164B2 JP 3710164 B2 JP3710164 B2 JP 3710164B2 JP 10853495 A JP10853495 A JP 10853495A JP 10853495 A JP10853495 A JP 10853495A JP 3710164 B2 JP3710164 B2 JP 3710164B2
- Authority
- JP
- Japan
- Prior art keywords
- character
- character line
- image
- area
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Character Input (AREA)
- Character Discrimination (AREA)
Description
【産業上の利用分野】
本発明は画像処理装置及び方法、詳しくは入力された原稿画像中の文字種を判定し下位の処理に渡す画像処理装置及び方法に関するものである。
【0002】
【従来の技術】
情報が溢れる現代社会において情報管理、検索が容易になる情報の電子化が早急に望まれている。情報の電子化には、スキャナなどの入力装置で読み取った画像である文字を文字コードに変換するOCR(光学的文字認識)が必須であり、その精度はどんどん向上してきている。
【0003】
OCRは日本語(漢字、ひらがな、カタカナ)と英語その他(アルファベット)の特性の違いのため、アルファベット(特に小文字)を日本語OCRで認識するのは困難であることから、それぞれ別の認識アルゴリズムを用いたり、アルゴリズムは同じでも辞書の切り替えを行ったりする。従って、アルファベットと日本語を判別するための技術が必要になる。
【0004】
従来、アルファベットと日本語を判別する方法はなかったため、ユーザがオペレーションパネルやキーボード或いはポインティングデバイス等を操作して、それらを区別するための指示を行っていた。
【0005】
【発明が解決しようとする課題】
しかしながら、これではユーザの手間が多大であるし、さらに以下のような問題点がある。
【0006】
複数枚のデータを読み込む際、ADF(オートドキュメントフィーダ)がユーザに原稿指し替え作業を削減するが、その複数ページ中に英語のドキュメント、日本語のドキュメントが入り混じっている可能性がある。一枚読み込む毎にユーザの指示を待っていたのでは、ADFの利点が台無しになってしまう。また、全ページ読み込んだ後にユーザの指示を受ける形式にするには大量のメモリが必要になる。
【0007】
【課題を解決するための手段】
及び
【作用】
本発明はかかる問題点に鑑みなされたものであり、入力された原稿画像中の文字種を効率良く判定することで、下位の処理、例えば文字認識処理における処理精度を上げることを可能にする画像処理装置及び方法を提供しようとするものである。
【0008】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
入力された原稿画像中の文字の種別を判定し下位の処理に渡す画像処理装置であって、
入力された原稿画像中の文字画像を含む文字行の領域を判別する判別手段と、
判別された文字行領域を、当該文字行の方向と垂直な方向に並んだ4つの領域に分割する分割手段と、
前記分割手段で分割された各領域中の有意なドットを計数する計数手段と、
前記計数手段で計数された各領域の有意なドット数を上の領域から順にB1,B2,B3,B4とした場合、(B2+B3)と(B1+B4)との比に基づいて第1ドット分布R1を算出し、(B3+B4)と(B1+B2)との比に基づいて第2ドット分布R2を算出する算出手段と、
前記算出された第1ドット分布R1が第1の閾値T1以上であるか或いは前記算出された第2ドット分布R2が第2の閾値T2以上であると判断された場合は、当該文字行領域をアルファベット文字行であると判定し、
前記第1ドット分布R1が前記第1の閾値T1より小さく且つ前記第2ドット分布R2が前記第2の閾値T2より小さいと判断された場合は、当該文字行領域を漢字圏文字行であると判定する判定手段とを備える。
【0009】
また、本発明の好適な実施態様に従えば、前記下位処理は文字認識処理であって、前記判定手段で判定された結果に応じて認識処理するときに使用する認識アルゴリズム、又は、認識アルゴリズムと認識辞書、或いは認識辞書を選択させることが望ましい。これによって、認識処理で使用される認識アルゴリズム又は認識辞書を予め選択できるので認識速度及び認識の精度を高めることが可能になる。
【0011】
また、前記判別手段は、文字列パターンの並び方向に投影したドット分布に基づいて行を判別することが望ましい。これによって、精度良く行を判別することが可能になる。
【0012】
また、更に、前記入力された原稿画像中のノイズ除去するノイズ除去手段を備えることが望ましい。この結果、ノイズによる影響をなくすことができるので、行の判別をより精度良く行なえる。
【0013】
また、更に、前記入力された画像を所定角度だけ回転させて、正立画像としての方向を決定する手段を備えることが望ましい。これによって、原稿画像の入力方向に応じて判定することが可能になる。
【0014】
また、更に、前記入力された画像が傾いているときに、傾きを補正する手段を備えることが望ましい。これによって、傾いて入力された原稿画像もより精度良く処理できる。
【0015】
【実施例】
以下、添付図面に従って本発明に係る実施例を詳細に説明する。
【0016】
実施例における文字認識装置のブロック構成を図12に示す。図中、1は装置全体の制御を司るCPU、2はブートプログラム等を記憶しているROM、3はCPU1が実行処理するプログラムやオペレーティングシステム(OS)を記憶するRAMである。4は例えばハードディスク装置等の外部記憶装置であって、ここにOS、文字認識処理に係るプログラム、更には認識辞書(日本語文字用と英語文字用)が格納されている。5はキーボードやポインティングデバイス等で構成される入力装置、6は原稿画像を読み取るイメージスキャナである。7は読み取った画像を一時的に記憶する画像メモリ、8は各種メッセージや認識された情報を表示する表示装置である。
【0017】
上記の構成における実施例の処理を説明する前に、まず、日本語と英語の文字列について考察する。
【0018】
日本語における文字は、概して、その文字高さ一杯に書かれているのに対して、英語ではlやyなどが存在するため高さを数等分した真ん中の部分にその線分(すなわちドット)が集中する。そのため、この集中の度合でもって、認識対象の文字列が日本語であるのか英語であるのかを判別できる。
【0019】
日本語と英語の一例を図7に示す。図7(a)は日本語の一例であり、同図(b)が英語の一例であるが、英語(b)が4等分した場合の領域(2)(3)に黒画素が集中しているのに対して、同図(a)の如く日本語では比較的全体的に分布している。同図(c)はyのような下に出っ張る文字が存在しない場合の英語である。この場合は領域(3)(4)に黒画素が集中する。
【0020】
以上の原理に基づいて、第1の実施例の動作処理を図1のフローチャートに従って説明する。尚、同フローチャートに基づくプログラムは外部記憶装置4に格納されていて、それをRAM3上にロードすることで実行する。
【0021】
本実施例では、1行を小領域に分ける時のその分割数nを4とし、その黒画素分布の比の計算を黒画素分布R1、R2を以下のようにして決定する。
【0022】
R1=(B2+B3)/(B1+B4)
R2=(B3+B4)/(B1+B2)
尚、B1〜B4は、それぞれの領域における黒画素数を示している。従って、黒画素分布R1は領域(2)、(3)が領域(1)、(4)に対してどの程度の黒画素を有しているのかを示す値を、R2は領域(3)、(4)が領域(1)、(2)に対してどの程度の黒画素を有しているのかを示す値を意味することになる。尚、特定の領域が占める黒画素の多さを算出するものとしては、上記に限定されるものではなく、それ以外の尺度でもって算出しても良いのは勿論である。さて、スキャナなどの画像入力装置により入力されたビットマップ画像は、ステップS101でブロック分けが行われる。
【0023】
1画素1ビットの2値ビットマップ画像の一例を図2(a)に示す。本実施例では単純2値化された2値画像が好ましい。そのビットマップ画像を図2(b)の形にするのが、ステップS101の領域分離処理である。
【0024】
領域分離処理の一例のフローチャートを図3に示す。ステップS301でビットマップ画像にm×m画素サイズのウインドウを定義し、このウインドウ内に所定数(実施例では“1”とした)の黒画素があったら、該当するウインドウを黒とし、解像度を大幅に減らし文字部分を連結させる。ステップS301の解像度変換した様子を図4に示す。次にステップS302で輪郭線追跡をすると、文字特有の細長いパターンとその他の図形を区別することができる。最後のステップS303では、同一グループ連結処理で、隣接するテキスト部を結合させることによって図2(b)のように領域分離することができる。
【0025】
実施例においては、各ブロックを定義するために、ブロック定義用のデータ構造体を決めた。図5(a)がその構造体であり、ブロックの種別を定義する要素“type”(short 型)、ブロックの左上隅位置x座標及びy座標を定義する要素“startx”,“starty”(各々をshort 型)、ブロックの幅と高さを定義する要素“width”,“height”(各々short型)、そして、次のブロックのアドレスを記憶するための要素“next_address”で構成される。
【0026】
ここで、要素“type”は、0〜2のいずれかの数値が割り当てられ、“0”が該当するブロックは“タイトル”であることを、“1”は“テキスト”、“2”は“その他(図形や写真等)”であることを示す。
【0027】
尚、各ブロックの種別を判定する手法であるが、実施例では図4に示すように解像度を下げて処理した場合(このとき文字パターンどうしは互いに連結されてしまい一塊の黒画素領域になる)、その領域の輪郭を追跡していって、細長い連なりかどうかを判定し、細長い(縦横比が所定条件を満たしている)とき該当する領域は文字列領域であると判定する。ここで、文字列には、タイトル(見出し)と本文のテキストの二種類に分けられるが、前者(タイトル)は一般にその文字サイズが大きい。そこで、文字領域であると判定された細長い黒画素領域の長手方向にほぼ直角な断面の長さが所定以上のとき、タイトルとして判定するようにした。また、一般にタイトルは、本文の上方にある場合が多いので、その存在位置に従ってタイトルかテキストかを判断するようにしても良い。但し、ブロックの判定そのものは本発明の主要な部分ではないので、これ以上の説明は省略する。
【0028】
図5(b)は、上記の構造体で表されるデータの例を示している。各ブロックの要素next_addressには、次のブロックのアドレスが格納され、最後はNULLを代入しておくことでそれ以降のデータは存在しないことを明示させておく。
【0029】
図1の説明に戻る。ステップS101でブロックデータが抽出されると、処理はステップS102に進み、未処理のブロックがなくなるまで(構造体のnext_addressがNULLになるまで)ループする。もし、未処理のブロックがなくなったら本処理を終了するが、未処理のブロックがあるならばステップS103に移る。
【0030】
ステップS103では現在処理しようとするブロックが文字を含んでいれば(要素typeが0又は1)、ステップS104に進み、含んでいなければ102に戻る。
【0031】
ステップS104ではブロック内のデータをY軸に斜影を行い文字の存在するY軸(行)抽出を行う。Y軸への斜影を例として図2(b)のテキスト2に対して行うと図6に示すようになる。Y軸への斜影をもっと具体的に説明するために図9にフローチャートを示す。
【0032】
尚、以下の説明に先立ち、変数line_h[]、line_sy[]は共にRAMに確保された配列変数であり、line_h[]は1行分の文字列の高さ情報を格納し、line_sy[]は各行の左上隅の、注目ブロックの左上隅座標からの相対的なy座標を記憶する。また、変数iはブロック内における相対的なx座標を、変数jは同y座標を示す。また、flagは、1行分の切り出し処理を行っている最中か否かを示す変数ものであり、kuroは着目している1ドットライン中に黒画素があるか否かの情報を記憶する変数である。また、nlineは、注目ブロック中に何行分の文字列行があるかをカウントする変数である。
【0033】
さて、ステップS901においては、変数nline、flag,jをそれぞれ“0”クリアする。そして、ステップS902で変数i,ステップS903で変数kuroをそれぞれ“0”クリアする。
【0034】
次いで、ステップS904に進んで、変数jが注目ブロックの高さ(注目ブロックがk番目である場合には、BLK[K].heightで得られる)を越えたか否かを判断する。もし、超えていれば、注目ブロック内の全てのラインに対しての処理が完了したことになるから、本処理を終える。
【0035】
従って、ここでは変数jの値が注目ブロックの高さに満たないとして、説明を続ける。
【0036】
この場合、処理はステップS905に進み、画像メモリ7に格納された画像データのx座標がstartx+i,y座標がstarty+jの位置の画素データを読み出し、それが黒画素かどうかを判断する。ここで、startx、startyは注目ブロックの構造体の要素名であることは理解できよう。
【0037】
さて、変数i,jで示される位置の画素が黒画素でないと判断した場合には、ステップS906に進み、その時の変数iと注目ブロックの横幅widthを比較する。この結果、i<widthであると判断した場合には、ステップS907に進んで、変数iを“1”だけインクリメントする。
【0038】
こうして、注目ブロックの第jラインにおいて、変数iが順次インクメントさせていって注目画素が黒画素であると判断されると、処理はステップS908に進み、変数kuroを“1”を代入し、注目ライン(変数jで示されるライン)には少なくとも黒画素が存在したことを示すようにする。
【0039】
この後、処理はステップS909に進み、flagが“0”であるかどうかを判断する。flagが“0”というのは、直前までのラインは空白部分であって、変数jで示されるラインになってはじめて黒画素が発生したことを意味する。従って、この場合には、ステップS910に進み、文字列パターンの発生を検出したことになるから、その時点での変数jを配列変数line_sy[nline]に代入する。文字パターンは複数のドットラインに存在するから、次のラインでステップS910の処理を行なわないように、flagに“1”を代入させておく。
【0040】
また、変数jで示されるライン中に黒画素の存在を検出した場合には、同ラインにおけるそれより右側に位置する画素の状態を検出することは不要になるのでステップS907の処理を行わず、注目ラインの処理を終えたものとして、ステップS912に進む。
【0041】
ステップS912では、kuro=0、且つ、flag=1であるかどうかを判断する。
【0042】
つまり、黒画素が存在するラインが連続して検出されている最中に、空白ラインが検出されたかどうかを判断する。より分かりやすく説明すると、1行分の文字列パターンの領域が決定したかどうかを判断する。
【0043】
否の場合には、ステップS913に進んで、変数jを“1”だけインクリメントし、ステップS902以降の処理を繰り返す。
【0044】
こうして、1行分の文字列パターンの検出がなされたと判断した場合には、ステップS914に進んで、配列変数line_h[nline]に、そのときの変数jからline_sy[nline]を引いた値をセットする。先に説明したように、line_sy[nline]には文字列パターンの左上隅のy座標が格納されているから、line_h[nline]には黒画素が連続するラインの本数、すなわち、文字列パターンの高さ情報が格納されることになる。
【0045】
次いで、ステップS915で、次の文字列パターン(文字列行)の検出に備えて変数flagを“0”クリアし、nlineを“1”だけインクリメントする。
【0046】
以上の結果、最終的に変数jが注目ブロックの高さheightを越えることになり、その時点で本処理を終了する。このとき、nlineは注目ブロックにおいて検出された文字列行数が格納され、line_sy[0]〜line_sy[nline]には各文字列パターンの左上隅のy座標値が、line_h[0]〜line[nline]には各文字列パターンの高さ情報が格納されることになる。
【0047】
以上の図9の処理により各ブロックの文字画像から行数、各行のスタート点および高さを抽出することができる。
【0048】
図1の説明に戻る。ステップS105では抽出された行データの処理のためにループを回す。全ての行の処理が終わっていない場合にはステップS102に戻り、それ以外はステップS106に進む。
【0049】
ステップS106では図11のように、ステップS104で抽出された行をラスタ順次に見て、領域(1)内の黒画素数を数えB1を得、続いて領域(2)内の黒画素数を数えB2を得、領域(3)内の黒画素数を数えB3を得、最後に領域(4)内の黒画素数を数えB4を得る(領域1から4の定義は図7参照)。
【0050】
ここで各領域は、先に説明したように、行の高さ情報line_h[]で示される高さを4分割した領域を意味する。
【0051】
その処理の一例のフローチャートを図10に示す。図7に示すようにステップS104の行抽出処理で抽出された行画像の左上を座標(0,0)とし、行画像の幅をW、画素高さをHとする。従って右下の座標は(W−1,H−1)となる。尚、以下の示す各変数もRAM3に確保されているものである。
【0052】
ステップS1001で黒画素カウンタcounter(0)〜counter(3)を“0”クリアする。ここでcounter[0]がB1を、counter[1]がB2を、counter[2]がB3を、counter[3]がB4をそれぞれ係数する変数である。
【0053】
ステップS1002で、二次元の画像を処理するための縦座標カウンタjをリセットする。ステップS1003で縦座標カウンタjが行画像高さHを超えていないかどうかチェックし、超えていたらendに進み本処理を終える。また、超えていなかったらステップS1004に進む。
【0054】
ステップS1004で二次元の画像を処理するための横座標カウンタiをリセットする。ステップS1005で横座標カウンタiが行画像幅Wを超えていないかどうかチェックし、超えていたらステップS1009に進み、超えていなかったらステップS1006に進む。ステップS1006でpixel[i][j]が黒かどうかチェックし、黒ならばステップS1007に進み、白ならばステップS1008に進む。
【0055】
ステップS1007ではpixel[i][j]が黒ということでcounter[j/4]をインクリメントする。
【0056】
但し、“j/4”は整数部分のみを有効する。従って、j/4は0、1、2、3の4つの値のいずれかであり、それでもって、counter[0]〜[3]のいずれか1つがインクリメントする。
【0057】
つまり、小領域(1)中の黒画素はcounter[0]に加算され、小領域2中の黒画素はcounter[1]に加算され、小領域3中の黒画素はcounter[2]に加算され、小領域4中の黒画素はcounter[3]に加算されていく。
【0058】
ステップS1008では、横座標カウンタiをインクリメントし、ステップS1005に戻る。ステップS1009で縦座標カウンタjをインクリメントし、ステップS1003に戻る。
【0059】
以上の処理の結果、B1=counter[0],B2=counter[1],B3=counter[2],B4=counter[3]として各小領域中の黒画素がカウントされる。
【0060】
図1の説明に戻る。ステップS107では、(B2+B3)/(B1+B4)が予め設定されている閾値T1以上であるか否か、或いは、(B3+B4)/(B1+B2)が予め設定されている閾値T2以上であるかを判定する。これらいずれかのを判定が肯定されれば、注目ブロックの注目行は英文字列と判断されるので、ステップS108で、その行に対しての属性を“英語”にする。また、いずれの判定も否定された場合には、注目行は日本語であると判定されるので、その旨の属性を与える。
【0061】
以上説明したように本実施例によれば、行単位に英語か日本語かを判断できるので、後の文字認識処理においては、適正な認識辞書が選択させることが可能となり、認識率を向上させることが可能になる。また、場合によっては、認識アルゴリズム自身を切り替えるようにしても良い。
【0062】
<第2の実施例の説明>
上記第1の実施例においてアルファベット/日本語判別を文字画像の1行毎に行ったがその限りではない。
【0063】
例えば、文字画像の1行目を抽出し、その1行目の黒画素分布を算出しアルファベット日本語判別を行ったらその結果をその画像全体の判別結果としてもよい。
【0064】
または文字画像をY軸への斜影により行切りを行ない、X軸への斜影により文字切りを行ったあと、任意にm文字分選びだし、m文字の黒目分布の平均を算出しその文字画像全体のアルファベット日本語判別を行う方法もある。
【0065】
これらの方法により、計算時間の短縮が計れる。
【0066】
また、上述の第1の実施例において行抽出手段は文字画像に対するY軸への斜影としたが、その限りではなく、例えば、図1におけるステップS101の領域分離により行っても良い。具体的には図3のステップS301の解像度変換、ステップS302の輪郭線追跡を行った後、輪郭線追跡により抽出されたオブジェクトのうち細長いものを文字と判定するが、ステップS303の同一グループ結合を行わずに、行として領域分離をする。この処理により図2(a)を実行した結果は図8の様になり、Y軸への斜影は必要なくなる。しかし、解像度変換の影響で抽出された行の精度が低いのでそれを考慮して閾値Tの値をチューニングする必要がある。この閾値Tは原稿画像にもよるので、入力装置5から適宜調整するようにする。
【0067】
また、入力した原稿画像中にノイズとして、本来空白部分に1画素だけの孤立画素が存在すると、上記処理は正常に行われない可能性がある。そこで、孤立画素については、それを判別し、それを除去する処理を設ける処理が望まれる。孤立画素の判定は、黒画素のまわりの所定距離以内に他の黒画素があるかどうかを判断すれば良いだろう。または、画像をウインドリングしパターンマッチングで消去する方法などを用いても良い。
【0068】
また、第1の実施例では、ステップS101の領域分離処理を施す画像は1画素1ビットの画像としたがその限りでなく、例えば1画素8ビットの多値画像でもよい。その場合、領域分離は微分フィルタをかけて高周波成分を抽出し、文字部、写真部に分ける方法がある。本アルファベット日本語判別を実施するには上記1画素8ビットの多値画像を一定の閾値で2値化すれば良い。
【0069】
また、本アルファベット/日本語自動判別法を施す前に、文字画像の傾きを補正することによって、原稿が傾いた画像に対してより良好な結果を得ることができる。傾き補正は例えば抽出した行の傾きを求めて、座標変換することによって実現できるので、その説明は省略する。
【0070】
また、本アルファベット/日本語自動判別法を施す前に、文字画像の方向を検出することによって、原稿の方向に依存しない結果を得ることができる。文字画像方向の検出は例えば領域分割によって抽出した文字画像を行抽出、文字抽出を実行し、抽出した数画像を0°回転、90°回転、180°回転、270°回転を行いOCRを行う。OCRの確信度が得られるのでそれを利用して文字画像の方向を検出し原画像を行えば良い。
【0071】
また、各小領域中の黒画素数カウントを行画像を抽出した後に行ったが、その限りでなく、例えば、Y軸方向の斜影を行って行画像を抽出する時に同時にカウントしてもよい。その場合、行画像の高さがまだ未明であるのでその行の黒画素数を保持しておいて高さが判明した後に小領域中の黒画素を加算して求めることができる。
【0072】
<第3の実施例の説明>
上記実施例では、文字列の行を4等分に、その中の黒画素の個数比でもって該当する行が日本語か英語かを判別するものであったが、本第3の実施例では、一般に日本語の文字パターンは単位面積当たりのドット数が英語より多いという点に着目し、文字種を判定する例を説明する。
【0073】
尚、装置構成は先に説明した第1の実施例と同様であるものとし、ここではその処理内容について説明する。
【0074】
図13のフローチャートに従って本第3の実施例における処理手順を説明する。
【0075】
図13のフローチャート中、ステップS3101〜S3105までは、図1のステップS101〜S105と同じである。すなわち、ブロック化、及び各ブロック内のテキストもしくは見出しの行数の検出にかかる処理は同じであるものとする。
【0076】
ステップS3101〜S3105では、原稿画像の入力からブロック分け、そして、着目しているブロックがタイトルもしくはテキストであって、その行の抽出処理を行う。未処理の行が存在すると判断された場合には、ステップS3106に進む。
【0077】
ステップS3106では図14のように行中の黒画素を見て、文字幅を検出するとともに黒画素数をカウントする。
【0078】
図15にステップS3106の処理内容のフローチャートを示し、以下説明する。
【0079】
尚、図14に示すように、ステップS3104(図9参照)の行抽出処理で抽出された行画像の左上位置を座標(0,0)とし、行画像の画素幅をIW、画素高さをHとする。従って右下の座標は(IW−1,H−1)となる。また、本処理の詳細は以下の説明から明らかになるが、要するに、着目している行の実際に文字列パターンその存在する位置の開始位置(行頭)と、終了位置(行末)の座標及び、それらの間にあるドット数を計数する処理を行うものである。
【0080】
ステップS4001で、黒画素の開始位置を検出した際に、その位置を記憶保持する変数startx(x座標)を更新し、それ以降の処理で当該変数startxを更新しないように制御する変数flag_blkを“0”クリアする。そして、ステップS4002では、黒画素数を計数する変数conterを“0”クリアする。次いで、ステップS4003では、注目画素位置のx座標位置を特定するための変数iを“0”クリアする。次の、ステップS4004では、flag_line2にflag_lineの内容を代入し、次いで、flag_lineを“0”クリアする。尚、最初の段階では、flag_lineには“0”が格納されているものとする。従って、flag_line2は、最初の段階では“0”クリアされることになる。
【0081】
また、flag_lineは現在の変数iで示される縦1ドット列に黒画素があったかどうかを示す情報が格納され、flag_line2には直前の縦1ドット列に黒画素があったかどうかを示す情報が格納される。従って、黒画素が連続して検出されている最中に、文字パターンが途絶えた場合にはflag_line2=1(直前の縦1ドット列に黒画素有り)で、且つ、flag_line=0(注目している縦1ドット列に黒画素無し)の場合であることを判定すれば良い。
【0082】
さて、ステップS4005では、抽出する画素位置のy座標を記憶保持する変数jを“0”クリアする。
【0083】
次いで、ステップS4006で、注目行中の変数i,jで示される位置の画素を画像メモリ7から読み出し、それが黒画素がどうかを判定する。白画素であった場合には、ステップS4012にジャンプし、変数j、すなわち、y座標を1つインクリメントし、ステップS4013で変数jが注目行の高さ以下であると判断されるまで上記ステップS4005以下の処理を繰り返す。
【0084】
こうして、変数jで示される縦1ドット列につき、1つも黒画素が発見できなかった場合、ステップS4013の判定は“NO”になるので、ステップS4014に進み、flag_line2が“1”で、且つ、flag_lineが“0”か否かを判断する。すなわち、文字パターンの終端を見つけたか否かを判断する。否の場合には、変数iをインクリメントし、次の列位置に備える。そして、ステップS4017で変数iと行幅とを比較し、行幅分の処理が終えていないと判断した場合には、ステップS4004の処理に戻り、上記処理を繰り返す。
【0085】
さて、この過程で、最初に黒画素が検出されると、ステップS4007でflag_blkが“0”であると判断されるので、処理はステップS4008に進み、そのときの変数iの値を変数startxに代入する。これにより、文字列パターンの最初のドット位置のx座標がstartxに格納されることになる。
【0086】
次いで、このstartxに代入する処理は、これ以降行なわないようにするため、変数flag_blkに“1”を代入する。
【0087】
次いで、黒画素が1つ検出されたことになるから、変数counterを“1”インクリメントし、且つ、注目縦1ドット列中に黒画素が検出されたわけであるから、flag_lineに“1”を代入し、ステップS4012に進む。
【0088】
以上の結果、注目行中の最初の黒画素が検出された場合には変数startxにそのときのx座標値である変数iを代入し、後はこの処理は行わない。そして、黒画素が検出される度に変数counterが“1”ずつインクリメントされることになる。
【0089】
さて、1つの文字の黒画素を検出していく過程で、その隣の文字パターンとの間に処理は移ると、当然、その間には空白部分があるので、黒画素は検出されなくなる。
【0090】
このとき、ステップS4014の判断は、“Yes”になる。つまり、その時の変数iの値が注目している文字パターンの終わり位置になるから、その位置を仮の行末位置であるとしてendxにその値を代入する。従って、endxの内容は、注目行中に含まれる文字数分だけ更新させるが(図14参照)、最終的に注目行の行末位置にある文字の終わりのx座標値がendxに格納されることになる。
【0091】
以上の結果、注目ブロック内の注目行の行頭文字パターンの開始位置がstartxに、行末文字パターンの終わりがendxに格納され、counterにはその間の黒画素数が格納されることになる。
【0092】
図13の説明に戻る。
【0093】
ステップS3107で白画素数(WN)を
WN=行高さ(H)×行幅(W)−黒画素数(BN)
により求め、黒画素比Rを
R=黒画素数(BN)/白画素数(WN)
によって求める。
【0094】
ここで、行の高さは、先の第1の実施例で説明した通りであり、行幅はendx−startxで得られる値である。
【0095】
ステップS4108であらかじめ決めたあったしきい値TよりRが大きいかどうか(黒画素が多いかどうか)チェックし、R>Tの時はステップS3109に進み、R<=Tの時はステップS3110に進む。ステップS3109ではその文字画像は日本語であると判定し、ステップS3105に戻る。また、ステップS3110ではその文字画像はアルファベットであると判定し、ステップS3105に戻る。
【0096】
以上説明したように本第3の実施例によれば、文字パターンは日本語の場合、そのドット数が多く、逆に英語の場合にはドット数が少ないという特徴を利用して、各ブロック内の行単位の字種を判別できる。従って、文字認識処理に移る場合には、その認識辞書を予め決めておく、もしくは優先する辞書を決めておくことが可能になり、文字認識率を高めることが可能になる。
【0097】
<第4の実施例の説明>
第3の実施例においてアルファベット日本語判別を文字画像の1行毎に行ったがその限りではない。例えば、文字画像の1行目を抽出し、その1行目の黒画素分布を算出しアルファベット日本語判別を行ったらその結果をその画像全体の判別結果としてもよい。
【0098】
または文字画像をX軸への斜影により行切りを行い、Y軸への斜影により文字切りを行ったあと、任意にm文字分選びだし、m文字のRの平均を算出しその文字画像全体のアルファベット日本語判別を行う方法もある。これらの方法により、計算時間の短縮が計れる。
【0099】
また、先に説明した第1の実施例と第3の実施例とを組み合わせて字種を判定するようにしても良い。このようにすると、字種判定に関する精度を向上させることが可能になる。
【0100】
また、文字には様々なフォントや、スタイルがある。そのため、日本語のほうが文字幅の細いフォントで英語のほうが太いフォントだった場合誤判別のおそれが出てくる。そこで、第1の実施例のような処理を行う前に文字の細線処理を行えば、そのような誤判別の危険はなくなる。但し、厳密な細線化処理は、非常に複雑な処理を伴う。しかし、本第3の実施例では、単純に文字の種別を一義的な状態にさせすれば良いので、単純な細線化処理を行なえば良い。
【0101】
以下、簡単な細線処理について説明する。
【0102】
簡単な細線処理はパターンマッチングによる黒画素消去によって可能である。2画像を例えば3×3画素単位に着目し、あらかじめ決めてある消去パターンとウィンドウ中の画像パターンが一致した場合、その注目画素(ウィンドウ中の中央の画素)を黒から白に強制変換する。その処理を反復して細線処理を行う。消去パターンの一例は例えば図16の通りである。
【0103】
また、第3の実施例において、行抽出手段は文字画像に対するY軸への斜影としたが、その限りでなく、例えば、図13のステップS3101の領域分離により行ってもいい。
【0104】
具体的には、先の第1の実施例と同様に、解像度変換、輪郭線追跡を行った後、輪郭線追跡により抽出されたオブジェクトのうち細長いものを文字と判定するが、同一グループ結合を行わずに、行として領域分離をする。この処理により図2(a)を実行した結果は図8の様になり、Y軸への斜影は必要なくなく。しかし、解像度変換の影響で抽出された行の精度が低いのでそれを考慮してしきい値Tの値をチューニングしなければならない。
【0105】
また、上述の第3の実施例において、本処理を施す1画素1ビットの画像にノイズが存在していては本アルファベット日本語判別の能力を生かせられない。従って明らかにノイズとわかる孤立ドットなどを除去すると良いだろう。孤立ドット除去の方法としては画像をウインドリングしパターンマッチングで消去する方法などがある。
【0106】
また、上述の第3の実施例において、図13のステップS3101の領域分離処理を施す画像は1画素1ビットの画像としたがその限りでなく例えば1画素8ビットの多値画像でもよい。その場合、領域分離は微分フィルタをかけて高周波成分を抽出し、文字部、写真部に分ける方法がある。本アルファベット日本語判別を実施するには上記1画素8ビットの多値画像を一定しきい値で二値化する必要がある。
【0107】
また、本アルファベット日本語自動判別法を施す前に、文字画像の傾きを補正することによって、原稿が傾いた画像に対してより良好な結果を得ることができる。傾き補正は例えば抽出した行の傾きを求めて、座標変換することによって実現できる。
【0108】
また、本アルファベット日本語自動判別法を施す前に、文字画像の方向を検出することによって、原稿の方向に依存しない結果を得ることができる。文字画像方向の検出は例えば領域分割によって抽出した文字画像を行抽出、文字抽出を実行し、抽出した数画像を0°回転、90°回転、180°回転、270°回転を行いOCRを行う。OCRの確信度が得られるのでそれを利用して文字画像の方向を検出し原画像を行う。
【0109】
以上説明したように本第1〜第4の実施例に従えば、日本語と英語の文字パターンの分布あるいは密度に応じて文字種を判定することが可能になる。従って、文字認識する前処理として認識するときに使用する辞書を予め決める、もしくはその優先順位を決めることが可能になるので、文字認識率を向上させることが可能になる。
【0110】
尚、第1〜第4の実施例では、いずれも日本語と英語について説明したが、英語の代わりにドイツ語やフランス語を用いても同様であり、且つ、日本語の代わりに漢字圏(例えば中国語)にしても同様であるので、上記例によって本発明が限定されるものではない。
【0111】
また、実施例ではイメージスキャナ6から入力される画像に対して処理を行なったが、画像は例えば通信回線を介して送られてきても良いし、例えば所定の記憶媒体(例えばフロッピーディスク等)に記憶させておいて、そこから画像を読出しても同様に処理できるので、上記実施例によって限定されるものではない。
【0112】
更に、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。
【0113】
【発明の効果】
以上説明したように本発明によれば、入力された原稿画像中の文字種を効率良く判定することで、下位の処理、例えば文字認識処理における処理精度を上げることが可能になる。
【0114】
また、本発明の好適な実施態様に従えば、前記下位処理は文字認識処理であって、前記判定手段で判定された結果に応じて認識処理するときに使用する認識アルゴリズム、又は、認識アルゴリズムと認識辞書、或いは認識辞書を選択させるので、認識速度及び認識の精度を高めることが可能になる。
【0115】
また、分割された各領域のほぼ中央の領域に対するドットの存在割合を算出し、前記判定手段は、算出された割合が所定以上の場合には、注目行はアルファベット文字であると判定し、所定以下の場合には漢字圏文字であると判定するので、漢字圏の文字とアルファベットの文字を精度良く判定することが可能になる。
【0116】
また、文字列パターンの並び方向に投影したドット分布に基づいて行を判別するので、精度良く行を判別することが可能になる。
【0117】
また、更に、前記入力された原稿画像中のノイズ除去するノイズ除去手段を備えることにより、ノイズによる影響をなくすことができるので、行の判別をより精度良く行なえる。
【0118】
また、更に、前記入力された画像を所定角度だけ回転させて、正立画像としての方向を決定する手段を備えることにより、原稿画像の入力方向に応じて判定することが可能になる。
【0119】
また、前記入力された画像が傾いているときに、傾きを補正するので、傾いて入力された原稿画像もより精度良く処理できる。
【0120】
【図面の簡単な説明】
【図1】実施例における処理手順を示すフローチャートである。
【図2】原稿画像とブロック分け処理の関係を示す図である。
【図3】実施例のブロック分け処理の一例を示すフローチャートである。
【図4】図3における解像度変換処理を施した様子を示す図である。
【図5】実施例におけるブロック変数の構造体の構造及びそのデータの例を示す図である。
【図6】行判別の概念を示す図である。
【図7】日本語と英語の文字列の一例と、文字識別の原理を説明するための図である。
【図8】実施例におけるブロック分け処理後の各ブロックの属性の一例を示す図である。
【図9】実施例の行識別処理のフローチャートである。
【図10】実施例の画素計数処理内容を示すフローチャートである。
【図11】実施例の画素計数処理の走査内容を示す図である。
【図12】実施例における文字認識装置のブロック構成を示す図である。
【図13】第3の実施例の動作処理手順を示すフローチャートである。
【図14】第3の実施例における処理過程の概要を示す図である。
【図15】第3の実施例における黒画素分布算出処理を示すフローチャートである。
【図16】細線化処理で使用されるパターンの例を示す図である。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 外部記憶装置
5 入力装置
6 イメージスキャナ
7 画像メモリ
8 表示装置
Claims (10)
- 入力された原稿画像中の文字の種別を判定し下位の処理に渡す画像処理装置であって、
入力された原稿画像中の文字画像を含む文字行の領域を判別する判別手段と、
判別された文字行領域を、当該文字行の方向と垂直な方向に並んだ4つの領域に分割する分割手段と、
前記分割手段で分割された各領域中の有意なドットを計数する計数手段と、
前記計数手段で計数された各領域の有意なドット数を上の領域から順にB1,B2,B3,B4とした場合、(B2+B3)と(B1+B4)との比に基づいて第1ドット分布R1を算出し、(B3+B4)と(B1+B2)との比に基づいて第2ドット分布R2を算出する算出手段と、
前記算出された第1ドット分布R1が第1の閾値T1以上であるか或いは前記算出された第2ドット分布R2が第2の閾値T2以上であると判断された場合は、当該文字行領域をアルファベット文字行であると判定し、
前記第1ドット分布R1が前記第1の閾値T1より小さく且つ前記第2ドット分布R2が前記第2の閾値T2より小さいと判断された場合は、当該文字行領域を漢字圏文字行であると判定する判定手段と
を備えることを特徴とする画像処理装置。 - 前記下位処理は文字認識処理であって、前記判定手段でアルファベット文字行と判定されたのか漢字圏文字行と判定されたのかに応じて、当該文字行領域を文字認識処理するときに使用する認識辞書を選択させることを特徴とする請求項第1項に記載の画像処理装置。
- 前記下位処理は文字認識処理であって、前記判定手段でアルファベット文字行と判定されたのか漢字圏文字行と判定されたのかに応じて、当該文字行領域を文字認識処理するときに使用する認識アルゴリズムを選択させることを特徴とする請求項第1項に記載の画像処理装置。
- 前記判別手段は、文字行方向に投影したドット分布に基づいて行を判別することを特徴とする請求項第1項に記載の画像処理装置。
- 前記判別手段で文字行領域を判別する前に、前記入力された原稿画像中のノイズを除去するノイズ除去処理、前記入力された原稿画像の傾きを補正する傾き補正処理、前記入力された原稿中の文字が正立する方向を決定する処理のうち、少なくともいずれかの処理が行われることを特徴とする請求項第1項に記載の画像処理装置。
- 入力された原稿画像中の文字の種別を判定し下位の処理に渡す画像処理方法であって、
入力された原稿画像中の文字画像を含む文字行の領域を判別する判別工程と、
判別された文字行領域を、当該文字行の方向と垂直な方向に並んだ4つの領域に分割する分割工程と、
前記分割工程で分割された各領域中の有意なドットを計数する計数工程と、
前記計数工程で計数された各領域の有意なドット数を上の領域から順にB1,B2,B3,B4とした場合、(B2+B3)と(B1+B4)との比に基づいて第1ドット分布R1を算出し、(B3+B4)と(B1+B2)との比に基づいて第2ドット分布R2を算出する算出工程と、
前記算出された第1ドット分布R1が第1の閾値T1以上であるか或いは前記算出された第2ドット分布R2が第2の閾値T2以上であると判断された場合は、当該文字行領域をアルファベット文字行であると判定し、
前記第1ドット分布R1が前記第1の閾値T1より小さく且つ前記第2ドット分布R2 が前記第2の閾値T2より小さいと判断された場合は、当該文字行領域を漢字圏文字行であると判定する判定工程と
を備えることを特徴とする画像処理方法。 - 前記下位処理は文字認識処理であって、前記判定工程でアルファベット文字行と判定されたのか漢字圏文字行と判定されたのかに応じて、当該文字行領域を文字認識処理するときに使用する認識辞書を選択させることを特徴とする請求項第6項に記載の画像処理方法。
- 前記下位処理は文字認識処理であって、前記判定工程でアルファベット文字行と判定されたのか漢字圏文字行と判定されたのかに応じて、当該文字行領域を文字認識処理するときに使用する認識アルゴリズムを選択させることを特徴とする請求項第6項に記載の画像処理方法。
- 前記判別工程では、文字行方向に投影したドット分布に基づいて行を判別することを特徴とする請求項第6項に記載の画像処理方法。
- 前記判別工程で文字行領域を判別する前に、前記入力された原稿画像中のノイズを除去するノイズ除去処理、前記入力された原稿画像の傾きを補正する傾き補正処理、前記入力された原稿中の文字が正立する方向を決定する処理のうち、少なくともいずれかの処理が行われることを特徴とする請求項第6項に記載の画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10853495A JP3710164B2 (ja) | 1995-05-02 | 1995-05-02 | 画像処理装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10853495A JP3710164B2 (ja) | 1995-05-02 | 1995-05-02 | 画像処理装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08305792A JPH08305792A (ja) | 1996-11-22 |
JP3710164B2 true JP3710164B2 (ja) | 2005-10-26 |
Family
ID=14487254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10853495A Expired - Fee Related JP3710164B2 (ja) | 1995-05-02 | 1995-05-02 | 画像処理装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3710164B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6125464B2 (ja) * | 2014-05-30 | 2017-05-10 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
CN107481238A (zh) * | 2017-09-20 | 2017-12-15 | 众安信息技术服务有限公司 | 图像质量评估方法及装置 |
-
1995
- 1995-05-02 JP JP10853495A patent/JP3710164B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08305792A (ja) | 1996-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5539841A (en) | Method for comparing image sections to determine similarity therebetween | |
US5410611A (en) | Method for identifying word bounding boxes in text | |
US4903312A (en) | Character recognition with variable subdivisions of a character region | |
US5280544A (en) | Optical character reading apparatus and method | |
JP3343864B2 (ja) | 語体の分離方法 | |
EP0063454B1 (en) | Method for recognizing machine encoded characters | |
EP2569930B1 (en) | Segmentation of a word bitmap into individual characters or glyphs during an ocr process | |
US7164795B2 (en) | Apparatus for extracting ruled line from multiple-valued image | |
EP0381773B1 (en) | Character recognition apparatus | |
US5129012A (en) | Detecting line segments and predetermined patterns in an optically scanned document | |
US6947596B2 (en) | Character recognition method, program and recording medium | |
JP3411472B2 (ja) | パターン抽出装置 | |
US5625710A (en) | Character recognition apparatus using modification of a characteristic quantity | |
US5982952A (en) | Optical character reader with tangent detection for detecting tilt of image data | |
JP3710164B2 (ja) | 画像処理装置及び方法 | |
JP2917427B2 (ja) | 図面読取装置 | |
EP0767941B1 (en) | Automatic determination of landscape scan in binary images | |
JP3428504B2 (ja) | 文字認識装置 | |
JPH08161432A (ja) | 文字切り出し方法および文字切り出し装置 | |
JP4439054B2 (ja) | 文字認識装置及び文字枠線の検出方法 | |
JPH08339424A (ja) | 画像処理装置及び方法 | |
JP3277977B2 (ja) | 文字認識方法 | |
JP2000207491A (ja) | 文字列読取方法及び装置 | |
JP3210224B2 (ja) | 文字認識装置 | |
JPH0757047A (ja) | 文字切出し方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050324 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050624 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050729 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050809 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080819 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090819 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090819 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100819 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110819 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120819 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |