A.一般的な説明(図1及び図2):
図1を参照すると、システム10のブロック図が示されており、このシステム10は、メモリ(MEM)12と処理ユニット(PU)14とを含み、それぞれが、PU14上で動いている複数の処理ルーチン(PR)18の制御の下で、データ構造(DS)16を記憶しその上で動作し、更に、MEM12においてPU14によって作業がなされるDS16とPR18とを記憶し提供する大容量記憶装置(MS)20を含む。示されているように、システム10は、更に、文字から成る走査されたイメージを含む第1の入力と、デジタイジング・タブレット(DT)26上の電子ペン(EP)24のサンプリングされた位置によって表されたものとして文字のイメージを含む第2のリアルタイムの入力とを提供するイメージ・スキャナ(IS)22を含む。
システム10上で動いているDS16とPR18とは、例えばIS12によって走査された文書からの文字の走査されたイメージと、EP24及びDT26の入力として提供される文字のリアルタイムの認識との両方の認識のための文字認識システム(CRS)28を含む。PR18は、それぞれが、PU14の動作を制御して特定の文字認識動作を実行し、それぞれのPR18は、従って、PU14を、対応する専用の目的のプロセッサに変換して、対応する文字認識動作を実行し、他方で、DS16は、文字認識動作を実行する際に、PR18とPU14とによって構成されるデータ構造を含む。
図2に示されているように、CRS28は、4つの主要な機能要素から構成される。これらは、走査イメージ細字化(Thinning)プロセッサ(SITP)30と、時間順序誘導プロセッサ(TOIP)32、低レベル認識プロセッサ(LLRP)34、及び言語(学)的ポスト・プロセッサ(LPP)36である。本発明のこの構成では、走査イメージ細字化プロセッサ(SITP)30、時間順序誘導プロセッサ(TOIP)32、低レベル認識プロセッサ(LLRP)34、及び言語的ポスト・プロセッサ(LPP)36は、それぞれが、プロセス、すなわち、PU14上で動き、MEM12内にあるDS16に作用するルーチン群として、実現されている。
走査イメージ細字化プロセッサ(SITP)30は、イメージ・スキャナ(IS)22から接続されており、文字の走査されたイメージである走査文字イメージ(SCI)38を受け取る。それぞれの走査文字イメージ(SCI)38は、文書、文書の中の1つのページ、又はページの中の一部分を表し、反復的(reiterative)な態様で機能して、複数の走査文字イメージ(SCI)38を、1又は複数の同等のスケルタル・イメージ(SKI)40に還元する。それぞれのスケルタル・イメージ(SKI)40は、走査文字イメージ(SCI)38において現れる、シンボル又は文字などの手書きのストローク又は手書きストローク群を表しており、1又は複数のスケルタル・イメージ・アーク(SARC)42から構成される。それぞれのスケルタル・イメージ・アーク(SARC)42は、ストロークを表す1ピクセル幅のイメージ、すなわち、文字のラインから構成されており、走査文字イメージ(SCI)38に現れる手書きのストロークとその走査文字イメージ(SCI)38に対応するスケルタル・イメージ(SKI)40のスケルタル・イメージ・アーク(SARC)42との間の、トポロジカルな及び幾何学的な類似は保たれている。
TOIP32は、スケルタル・イメージ(SKI)40のスケルタル・イメージ・アーク(SARC)42を受け取り、そのSARC42を順序付けして、手書きストロークの時間順序付きの発生をシミュレートする空間的なシーケンスにおけるクラスタを作り、SARC42の中の選択されたものの端部を、EP24及びDT26から提供され得るようなリアルタイムの手書き文字入力をエミュレートするような態様で結合させる。SARC42の結合は、結合されるアーク(弧)のそれぞれの対(ペア)、すなわち、結合されるSARC42のそれぞれの対の間の角度の変化が最小になるように誘導する弾道運動型の近似によって実行され、手書き文字の作成において生じる自然な手の動きをエミュレートする。TOIP32は、次に、1又は複数のSCI38に対応する順序付きのクラスタ・アレー(OCA)44を発生する。ここで、それぞれのOCA44は、SARC42に沿った点を定義しそれに対応する座標の順序付きのアレーであり、同等な手書き文字イメージに対してデジタイジング・タブレットから受け取られるサンプリングされた座標をシミュレートしそれに対応する。
LLRP34は、EP24及びDT26から接続されており、EP24及びDT26からタブレット文字(TABC)46を受け取る。それぞれのTABC46は、そのTABC46を形成するラインに沿った点を定義しそれに対応するサンプリングされた座標(SCORD)48の組から構成される。LLRP34は、更に、TOIP32から接続され、順序付きのクラスタ・アレー(OCA)44を受け取る。ただし、既に説明したように、それぞれのOCA44は、EP24及びDT26から受け取られたサンプリングされた座標をシミュレートするようにSCI38を表しているSARC42に沿った点を定義しそれに対応する座標の順序付きのアレーである。従って、TABC46とOCA44とのLLRP34への入力は、同等であり、共に、入力された文字を形成するラインを定義する座標の組又はアレーから構成されている。
次に、LLRP34は、いずれかの入力、すなわち、IS22から又はEP24及びDT26からの入力からのそれぞれの文字表現に対する文字リスト(CL)52を含むシーケンシャルな文字アレー(SCA)50を発生する。ここで、それぞれのCL52は、1又は複数の文字識別(CID)54を含み、CID54のそれぞれは、タブレット文字(TABC)46又は順序付きのクラスタ・アレー(OCA)44によって表されるものとして対応する入力文字の可能性のある解釈である文字を表す。それぞれのクラスタ識別(CID)54には、信頼性レベル(CL)56が伴っているが、これは、対応するクラスタ識別(CI)54が対応する手書き文字の真の解釈を表すことの蓋然性又は確率の尺度である。
最後に、LPP36は、LLRP34から文字リスト(CL)50を受け取り、この文字リスト(CL)50を2つ又はそれより多くの文字から成る文字ストリングに構成して、その文字ストリングに対して言語的な及び字句的な処理を実行し、当該手書き入力文字の最も蓋然性の高く正確な解釈を、単語の要素又は成分として、決定する。LPP36は、次に、単語の要素又は成分としての手書き入力文字の最も蓋然性の高く正確な解釈を表す対応する出力ストリング(OS)58を発生する。
B.走査イメージ細字化プロセッサ(SITP)30の説明:
1.一般的な説明:
手書きされた英数字テキストは、走査されたものでもリアルタイムに作成されたものでも、接続されている又はそれ以外の場合には空間的に関連したストローク又はライン群によって特徴付けられるものとして見なされる。すなわち、メッセージ又はテキストは、単語と文字又は数字の群とから構成されており、単語と数字とは、文字から構成されている。更に、文字は、接続された片部(piece)、すなわち、複数の方向又は順序、又はシーケンスにおいて作成されるストローク又はラインから成るトポロジカル又は幾何学的な関係から構成されており、これらのストロークやラインは、文字を構成する上の規則に従う。
手書きの情報を含む文書は、文字を構成するストロークに関して、おおよそのトポロジカル又は幾何学的な関係を提供するが、文字の自動的な認識において有用な2つの性質が欠けている。第1は、幾何学的な正確さである。すなわち、手で書かれたという事実のためと、ストロークを形成する際に種々の道具が用いられるために、文字を構成するストロークの幾何学配列と幅とが変動する。第2に、この場合のように、文字作成プロセスの最終的な結果だけが利用できる場合、すなわち、文字が既に作成された文書から走査される場合には、文字を構成するストロークの作成に関する時間的な順序が欠けている。本発明によるSITP30は、第1の問題に関しては、あたかもその文字が1ピクセル幅のペンを用いて書かれたかのように、文字ストロークを1ピクセル幅のイメージに還元することによって手書き文字を理想化する方法及び装置を提供して対応し、それによって、ある程度の幾何学的正確さを与え、文字が、ストロークの相互接続に関する位置と幾何学的及びトポロジカルな関係とにおいて、確率に関係するストローク群として記述されることを可能にする。本発明による文字認識システムのこれ以外のメカニズムによれば、ストロークの作成及び方向の時間的順序が推論され、また、この再構成されたデータを更に解析する別の文字認識方法が用いられる。
SITP30は、従って、入力される文字に対して3つの動作を実行する。SITP30は、特に、走査された文字の解析のためのCRS28において実現されるが、SITP30の動作は、ペン及びタブレットを用いて入力される文字であるリアルタイムの文字にも同じく適用できることに注意すべきである。これらの動作とは、1又は複数の文字をストロークから構成される接続された対象物に最初にセグメント化すること、文字ストロークを種々のイメージ解像度でのスケルタルな(骨組みの)形式に細字化すること、及び、スケルタルなストロークをトポロジカル又は幾何学的な入力としてトランスクライブ(読み取る)すること、である。
a.セグメント化(Segmentation):
最初に、1又は複数の文字や1つの文字の一部分を、ラインやアークなどのストロークから構成される接続された対象物(object)にセグメント化することを考える。ここでは、ストロークは、背景である「白い」ピクセルに対するものとしての前景である「黒い」ピクセルから構成されているものと定義される。接続された対象物は1又は複数のストロークから構成されており、更にここでは、前景の、すなわち「黒い」ピクセルの集合物として定義される。ここで、前景の黒いピクセルは、それぞれが、隣接する前景ピクセルを亘る連続的なステップの経路を介して、別の前景ピクセルから到達することが可能であり、それぞれのステップは、8つの方向の中の任意の1つであり、すなわち、正方形の3×3アレーにおける与えられた中央のピクセルに隣接する8つのピクセルの中の任意の1つの方向である。接続された対象物は、完全な文字、1文字の一部分、2つ又はそれより多くの文字あるいは1文字の部分の組合せ、などから構成される。そして、十分な質を有するデータがスキャナ又はペン及びタブレットから与えられると、1つの接続された対象物は、1つのペンダウンからペンアップ・ストローク、又は、接触又は交差ストロークからきていることがしばしばであることが予測されうる。
走査されたページからのデータを接続された対象物にセグメント化することは、従って、1ページのデータを、前景のデータから構成される接続された対象物から成るページの部分を識別することによって、取り扱いが可能でおそらく意味を有する部分又は成分に分割することへの第1の近似を表す。走査文字イメージ(SCI)38のデータを接続された対象物にまずセグメント化することによって、このようにして作成された対象物が、種々の解像度で、すなわち、種々の表現で解析されることが可能になり、従って、それ以後の解析のために別のデータ・セットのグループを提供し、このデータのそれぞれは、同じデータ・サブセットすなわち接続された対象物から導かれる。
セグメント化は、走査文字イメージ(SCI)38をその入力として取り、そこで見いだされるそれぞれの接続された対象物に対して、接続された対象物から構成される連続的な前景のピクセルのスパンをリストにするプロセスによって、達成される。ここで、接続された対象物(connected object)は、ピクセルから成る交差する又は接続されたラインの組のグループとして定義される。セグメント化のプロセスは、前景ピクセルの集合体又はグループの対象物への結合及び分離を認識し、そのページが完全に走査されるときを判断し、結果的なデータをそれ以後の処理のために出力ファイルに書き込む。このステップは、従って、ページ上に現れる接続された対象物を利用可能な空間的な順序で表すデータを発生する。また、このステップは、通常は背景の空間の比率の大きな大木のテキスト・ページに対して、かなりのデータ圧縮を提供する。
上述のように、走査文字イメージ(SCI)38は、1ページの又は1ページの一部分の走査されたイメージを含み、セグメント化が、走査文字イメージ(SCI)38の全体に対して、又は、走査文字イメージ(SCI)38におけるイメージ・データの一部分に対して、実行される。従って、セグメント化は、走査及びセグメント化プロセス自体に対して、また、以下で説明するこれ以降のプロセスに対して最も効果的な態様で、1ページの例えば頂部から底部までの1つの通過として又は1ページ当たり複数の通過として、効果的に達成され、現在処理されるべき全ての対象物に対するデータを集積する。
最終的に、走査文字イメージ(SCI)38は、好ましくは、例えば、302ドット・パー・インチ(dpi)での、イメージの高解像度の表現であり、以下で述べるような様々な解像度での、走査文字イメージ(SCI)38の表現の発生及び処理を容易にする。
セグメント化プロセスは、図3に示されている。セグメンタ(SEG)60が、現在の走査文字イメージ(SCI)38を、走査プロセッサ(SCANP)62から、走査文字イメージ(SCI)ファイル(SCIF)64として受け取るが、ここで、走査文字イメージ・ファイル(SCIF)64は、走査されたイメージの前景及び背景のピクセルを識別する情報を記憶するデータ構造である。走査文字イメージファイル(SCIF)64のデータ構造は、どの形式がセグメンタ(SEG)60による処理のために最も効果的であるかに応じて、複数の異なる形式の中の1つを選択する。例えば、走査文字イメージ・ファイル(SCIF)64がビットマップ・アレーであって、そのアレーの中のそれぞれのビットが走査文字イメージ(SCI)38のイメージの1つのピクセルを表しており、ビットの状態(0又は1)が対応するピクセルが背景ピクセルであるか前景ピクセルであるかを表し、アレーにおけるビットの位置がイメージにおける対応するピクセルの座標を表すようにしてもよい。
セグメンタ(SEG)60は、次に、現在の走査文字イメージ・ファイル(SCIF)64を走査して、前景のピクセルを、そして、後で平滑化及び細字化プロセスに関する説明で述べるように、関連する背景ピクセルを識別し、それぞれの前景のピクセルの内容を定義する。セグメンタ(SEG)60は、また、それぞれの前景ピクセルに対して、全ての関連する連続的な前景ピクセルを識別して、それぞれの走査文字イメージ(SCI)38に対して、対象物リスト(OL)66の組を発生する。ここで、それぞれの対象物リスト(OL)66は、接続された対象物(CO)68に対応する。接続された対象物(CO)68は、連続的な前景ピクセルのグループとして、すなわち、走査文字イメージ(SCI)38によって表されるイメージのストローク、又は、そのようなストロークの接続されたグループとして、定義される。
再び、対象物リスト(OL)66は、後に説明する細字化プロセスの実現のために最も効果的な形式に応じて、複数の可能性のある形式の中から1つを選択し得る。例えば、ある対象物リスト(OL)66は、連続的な前景ピクセルとその前景ピクセルの局所的な内容を形成する関連の背景ピクセルとのグループのビットマップと、走査文字イメージ(SCI)38におけるビットマップの位置を識別する座標の組と、から構成される。別の構成では、対象物リスト(OL)66は、接続された対象物の前景ピクセルと内容的な背景ピクセルとの座標のリストと、前景又は背景ピクセルとしてのピクセルの状態と、から構成される。
セグメンタ(SEG)60は、次に、走査文字イメージ(SCI)38に現れるストロークを表す対象物リスト(OL)66を、細字化プロセッサ70に与える。
b.細字化(Thinning):
文字ストロークは、イメージから走査されたかタブレット及びペンを介してリアルタイムで個別に入力されたかに関係なく、複数のピクセル幅であることが多く、ストロークの幅は、1つのストローク内においても複数のストロークの間においても著しく変動する。しかし、ストロークが、SITP30の細字化動作によって与えられるような1ピクセル幅のラインなどの均一なフォーマット又は幅に変換されると、文字ストロークを表すデータは、文字認識のために、より容易に処理される。
細字化動作は、基本的には、ストロークの「外側エッジ」すなわち外側ピクセルを、接続された対象物としてのストロークを破壊することなく「取り去り」、それぞれのストロークを接続されたすなわち隣接して位置する単一のピクセル群から成るラインに還元することによって、実行される。しかし、細字化動作は、高速でなければならない。その理由は、このプロセスは、本質的に反復的なものであって、多数のピクセルとその近接するものに適用されなければならないからである。また、細字化動作は、例えば、複数ピクセル幅のストロークを用いる認識プロセスの使用など異なる条件にも対応できるように容易に修正可能でなければならない。
従って、本発明による細字化動作は、3×3のデータ・カーネル(核)を想定するセルラ処理方法において実現される。すなわち、それぞれの反復において実行される動作は、中央ピクセルとそれに隣接する8つのピクセルから成るピクセルの3×3の正方形のアレーであるカーネルに作用する。このように実現される動作は、また、テーブルに導かれる、すなわち、ルックアップ・テーブルを用いてそれぞれの3×3アレーのピクセルに対する細字化の結果を決定し、4つのピクセルとその隣接するピクセルに対して一度に作用する。ただし、これは、実現ごとに変動する。このように実現される動作は、異なる条件又は要件に適応するために新たな又は修正されたイメージ変更規則を受け入れるセットアップ・プロセス又はルーチンによって、更に定義及び再定義される。
細字化動作は、細字化プロセッサ70によって実現されるが、このプロセッサ(処理系)は、PU14上で動くPR18を介して実現される2つのサブプロセッサ(副処理系)から構成される。第1は、図3ではテーブル・コンストラクタ(TBLC)72として表されており、図3で平滑化(スムージング)規則(SMR)76及び細字化規則(THR)78として示されているストロークの平滑化及び細字化のための1組の規則を現実化し定義するルックアップ規則テーブル(LRT)74の動作時間構成を、制御するものである。第2のものは、図3ではイメージ細字化系(Image Thinner)IMGTH78として表されているが、ルックアップ規則テーブル(LRT)74から規則を読み出し、それぞれの対象物リスト(OL)66に対する動作を順に、すなわち、走査文字イメージ(SCI)38の中のそれぞれの接続された対象物(CO)68に対する動作を順に、実行する。更に、それぞれの接続された対象物に対して、対応する接続された対象物のスケルタライズ(骨格化)された表現を含み平滑化及び細字化動作を定義する、対応する細字化されたイメージ(THIM)78を発生して、例えば、ある1つの接続された対象物を定義する前景及び背景ピクセル上のピクセルから成る特定の領域の全体に関して、テーブルにおいて定義された規則を実行する。
細字化処理の基本的な動作は、まとめると、接続された対象物のエッジを平滑化し、次に、その接続された対象物の左、下、右、及び上のそれぞれの側から、ピクセルの除去が対象物の接続関係を破壊しないように、その対象物にそれ以上の変化を及ぼすことのない完全なサイクルが実行されるまで、ピクセルの層を除去すること、ということができる。従って、細字化動作の結果は、最大に接続された対象物であり、そこでは、2より多くの隣接する又は近接の前景ピクセルを有する唯一の残存する前景ピクセルは、そうでなければ1ピクセル幅の複数の経路又はラインの接合点に位置するピクセルである。
平滑化規則(SMR)76と細字化規則(THR)78のこの構成は、SITP30に関する以下の詳細な説明において、更に述べることにする。
最後に、細字化動作の結果として、文字認識において又は必要以上の情報の保有において有用な情報が失われる可能性があること、及び、細字化プロセスの後でそれぞれのストロークに対して保持される情報の量は、部分的には、75dpi、150dpi、302dpiなどの、そのストロークが表現されている解像度に依存することに、注意すべきである。すなわち、ストロークの外部からの突入や内部における空洞は偶然であるか、又は、有意味であり得るが、そのような情報の価値は、認識プロセスの後の時点までわからない。逆に、あまりに多くの情報を保有すると、追加的であるが不必要な情報を処理しなければならないので、認識プロセスは、遅くなる。
従って、このように構成されたSITP30は、302dpiなどのそれぞれの入力された接続された対象物(CO)68の高解像度の表現に対して、細字化動作を発生及び実行し、次に、接続された対象物に関するそれぞれの細字化動作の結果から、75dpiや150dpiのより低い解像度での2つの追加的な表現を発生する。示されているように、この動作は、多重解像度ジェネレータ(MRG)80によって実行さえるが、この多重解像度ジェネレータ(MRG)80は、この技術分野において通常理解されているように、302dpi表現から1つおきのピクセルを有効に除去して対応する150dpi表現を発生し、また、302dpi表現から4つのうちの3つのピクセルを除去して対応する75dpi表現を発生する。多重解像度ジェネレータ(MRG)80は、また、やはりこの技術分野で広く知られているように、これ以外の解像度で接続された対象物のスケルタライズされた表現を発生する。
示されているように、多重解像度ジェネレータ(MRG)80が様々な解像度で発生したそれぞれの走査文字イメージ(SCI)38の複数のスケルタライズされた表現は、トランスクライバ・プロセッサ84による後続の動作のために、対応するスケルタライズされた走査文字イメージ(SSCI)82に記憶される。これは、与えられた走査文字イメージ(SCI)38に対しては、SSCI82a、82b、82cで表されている。
c.トランスクライブ(転写)動作:
図4に示されるように、元の走査文字イメージ(SCI)38の入力イメージを構成するストロークのスケルタライズされた表現は、スケルタライズされた走査文字イメージ(SSCI)82から読み出され、PU14上で動作する対応するPR18を介して実現されるトランスクライバ・プロセッサ(トランスクライバ)84によって、スケルタル・イメージ・ファイル(SIF)86と称され、SIF86a、86b、86cとして対応して識別される対応するデータ構造にトランスクライブ(転写)される。
このプロセスでは、トランスクライバ・プロセッサ(トランスクライバ)84は、それぞれのスケルタライズされた走査文字イメージ(SSCI)82に対して、スケルタライズされた走査文字イメージ(SSCI)82の中に存在するスケルタライズされたイメージのラインを構成するピクセルの座標を読み取り、そのスケルタライズされたイメージのスケルタル・イメージ・アーク(SARC)42を識別し、そのスケルタライズされたイメージの中のスケルタル・イメージ・アーク(SARC)42に対してスケルタル・イメージ・アーク記述子(SIAD)88を構成して、そのスケルタル・イメージ・アーク記述子(SIAD)88を、スケルタライズされた走査文字イメージ(SSCI)82に対応するスケルタル・イメージ・ファイル(SIF)86に記憶する。
セグメンタ(SEG)60、細字化プロセッサ(THINP)70、及びトランスクライバ・プロセッサ(トランスクライバ)84の動作は、図5及び図6に図解されている。図5は、Xを形成する2本の交差したラインから成る元の走査されたイメージを表している。図6は、それに対して、セグメント化及び細字化動作の結果を図解しており、従って、元のイメージは、他のイメージから、1つの接続された対象物(CO)68から構成されるようにセグメント化され、この対象物のストロークは、1ピクセル幅であるラインに、細字化(細く)される、すなわち、スケルタライズされる。
図5及び図6の例では、トランスクライバ・プロセッサ(トランスクライバ)84は、接続された対象物(CO)68を、ノード90で出会う4つのスケルタル・イメージ・アーク(SARC)42から構成されるものとして識別する。スケルタル・イメージ・アーク(SARC)42は、図6では、スケルタル・イメージ・アーク(SARC)42a、42b、42c、42dとして識別されている。トランスクライバによる動作によって識別されるように、スケルタル・イメージ・アーク(SARC)42aから42dのそれぞれは、ノード90と称される接合点又は合致点において開始する又は終了するピクセルの連続的な経路から構成され、また、別のスケルタル・イメージ・アーク(SARC)42から成るピクセルの別の連続的な経路が、2又はそれよりも多くのスケルタル・イメージ・アーク(SARC)42に共有されるピクセルの発生によって、又は、「スペース」がある、すなわち、ピクセルの連続的な経路に沿ってそれ以上ピクセルが存在しない点において、決定される。スケルタル・イメージ・アーク(SARC)42が終点を有し次のスケルタル・イメージ・アーク(SARC)42が開始点を有すると考えられるのは、ピクセルの経路が著しい方向の変化を含む点においてであり、そこで、ピクセルの経路は、方向の変化が生じているピクセルにおいて出会う2つのスケルタル・イメージ・アーク(SARC)42に分離される。
図4に図解されるように、それぞれのスケルタル・イメージ・ファイル(SIF)86は、スケルタライズされた走査文字イメージ(SSCI)82において見いだされるそれぞれの接続された対象物(CO)68のそれぞれのスケルタル・イメージ・アーク(SARC)42に対応するスケルタル・イメージ・アーク記述子(SIAD)88を含む。図7及び図8に示されるように、それぞれのスケルタル・イメージ・アーク(SARC)42は、ノード90、リンク92、及びリンク92に沿った増加ステップ(INCS)94から構成され、それぞれのスケルタル・イメージ・アーク記述子(SIAD)88は、ノード記述子(NODD)96と、その中に表されているそれぞれのスケルタル・イメージ・アーク(SARC)42に対応する増加ステップのリンク・リスト(LLIS)98と、を含む。
ノード90は、接続された対象物(CO)68のスケルタル・イメージ・アーク(SARC)42に沿った場所であり、特に、例えば、接続された対象物(CO)68のラインが終端する又はラインが接続された対象物(CO)68の別のラインと接続又は交差するスケルタル・イメージ・アーク(SARC)42の終点において生じるし、又は、接続された対象物(CO)68のラインが方向を変更し、従って、別のスケルタル・イメージ・アーク(SARC)42の出発点を定義している点で生じる。従って、与えられたノード90に対応するスケルタル・イメージ・アーク記述子(SIAD)88は、対応するスケルタル・イメージ・アーク(SARC)42のそれぞれのノード90に対するノード記述子(NODD)96を含み、それぞれのノード記述子(NODD)96は、対応するノード90の座標を含む。
リンク92は、スケルタル・イメージ・アーク(SARC)42を定義する連続的なピクセルの経路から構成され、すなわち、接続された対象物(CO)68の2つのノード90の間の接続された対象物(CO)68のライン又はストロークであり、リンク92の経路又はラインに沿った増加ステップ(INCS)94を記述する増加ステップのリンク・リスト(LLIS)98によって記述される。ここで、それぞれの増加ステップ(INCS)94は、経路に沿った次の連続的なピクセルの方向及び位置を記述し、増加ステップのリンク・リスト(LLIS)98は、経路に沿ったどちらの方向にも読み出され、経路の連続的なピクセルを位置決めする。
この構成では、それぞれの増加ステップ(INCS)94は、単一のピクセルのものであり、すなわち、増加ステップのリンク・リスト(LLIS)98は、リンク92の経路に沿った継続的な単一のピクセルの位置と方向とを記述し、それぞれの増加ステップ(INCS)94は、従って、リンク92の経路に沿った両方の方向への次のピクセルへの方向だけを記述することが要求される。別の実施例では、それぞれの増加ステップ(INCS)94は、一度に2又はそれより多くのピクセルから成る継続的なグループの位置を記述する。この場合には、それぞれの増加ステップ(INCS)94は、リンク92の経路に沿った両方の方向への2又はそれ以上のピクセルから成る次のグループへの方向と距離とを記述する。最後に、更に別の構成では、それぞれの増加ステップ(INCS)94は、リンク92の経路の対応するピクセルの座標と、リンク92の経路の両方への方向の次のピクセル又はピクセル群の座標と、を含む場合もある。
ノード記述子(NODD)96とそれに関連するスケルタル・イメージ・アーク記述子(SIAD)88の増加ステップのリンク・リスト(LLIS)98とは、従って、その中に表されている接続された対象物(CO)68のスケルタル・イメージ・アーク(SARC)42を記述する。スケルタル・イメージ・ファイル(SIF)86は、このようにして、それぞれの接続された対象物(CO)68がその中で表していたスケルタルな表現のそれぞれのストロークの、すなわち、元の走査文字イメージ(SCI)38の中に元々存在した接続されたそれぞれのストローク及び接続されたストローク群の、ノード90と増加ステップ(INCS)94とに関する、完全な記述を含む。
接続された対象物(CO)68が2又はそれ以上の接続された又は連続的なストロークから構成されている場合には、接続された対象物(CO)68のスケルタル・イメージ・アーク(SARC)42は、更に、リンク・ポインタによって接続されて、接続された対象物(CO)68のスケルタル・イメージ・アーク(SARC)42のノード90の巡回的に接続されたリングとなる。そのような接続された対象物(CO)68のそれぞれのスケルタル・イメージ・アーク記述子(SIAD)88は、従って、次の4つのポインタを含む。第1に、ノード・ポインタ100であって、これは、通常は接続された対象物(CO)68に最も近い他のノード90である、接続された対象物(CO)68のノード90の循環的に接続されたリングの中の別のノード90の、ノード記述子(NODD)96へのノード・ポインタ102を含む。第2に、この他のノード90に関連する増加ステップのリンク・リスト(LLIS)98の終点(エンド)へのリンク・エンド・ポインタ104であり、ここでは、この他のノード90のリンク・ポインタ100は、スケルタル・イメージ・アーク記述子(SIAD)88の増加ステップのリンク・リスト(LLIS)98への逆リンク・エンド・ポインタ104を含む。第3は、ノード90の循環的に接続されたリングに沿った次のノード90に関連する増加ステップのリンク・リスト(LLIS)98の終点への次リンク・エンド・ポインタ106であり、これは、スケルタル・イメージ・アーク記述子(SIAD)88の増加ステップのリンク・リスト(LLIS)98の終点へのリンク・エンド・ポインタを含む。第4は、スケルタル・イメージ・アーク記述子(SIAD)88の増加ステップのリンク・リスト(LLIS)98のリンク・リストへのリンク・リスト・ポインタ108である。
トランスクライバ・プロセッサ(トランスクライバ)84は、様々なプロセスを用いて、スケルタライズされた走査文字イメージ(SSCI)82の中に存在するスケルタル・イメージから、スケルタル・イメージ・アーク記述子(SIAD)88を構成する。トランスクライバ・プロセッサ(トランスクライバ)84の特定の構成は、部分的には、スケルタル・イメージ・データが、スケルタライズされた走査文字イメージ(SSCI)82において与えられている形式に依存する。例えば、スケルタライズされた走査文字イメージ(SSCI)82におけるスケルタル・イメージ・データは、ビットマップとして、又は、ピクセル座標の組として記憶されるが、それぞれのビットマップやピクセル座標の組は、接続された対象物(CO)68に対応し、それを表す。
どのような表現が用いられている場合でも、トランスクライバ・プロセッサ(トランスクライバ)84は、それぞれのスケルタル・イメージ・アーク(SARC)42に対して、スケルタル・イメージ・アーク(SARC)42の1つの終点ピクセルを見つけることから開始する。これは、ただ1つの隣接するピクセルしか有していないピクセル、すなわち、(1)「空間」にある終点を表しているピクセルを見つけることによって、又は、(2)隣接するピクセルを2又はそれ以上有しているピクセル、従って、そのラインが1又は複数の他のラインと接続している地点にあるラインの中のピクセルを表しているピクセルを見つけることによって、更に又は、(3)相互に直交している2つの隣接するピクセルを有するピクセル、従って、そのラインが著しい方向の変化を示すラインの地点を表すピクセルを見つけることによって、なされる。そこでは、2つの隣接するピクセルは、従って、新たなスケルタル・イメージ・アーク(SARC)42の第1のピクセルになっている。このステップは、これらの基準を満足するピクセルを直接に探知することによって、又は、出発ピクセルを選択し隣接するピクセルの経路に沿ってこれらの基準を満たすピクセルに到達するまで移動することによって、達成される。
「終点」であるピクセル、すなわち、スケルタル・イメージ・アーク(SARC)42のノード90を見つけると、トランスクライバ・プロセッサ(トランスクライバ)84は、次に、ノード90のピクセルから出発して、この経路の他方のノード90を表す、ラインの他方の「終点」のピクセルに到達するまで、ピクセルの経路を移動していく。経路の移動の間には、関連する増加ステップのリンク・リスト(LLIS)98を構成する。
その経路の一方又は両方のノード90が別のスケルタル・イメージ・アーク(SARC)42との交点又は接続点である場合には、すなわち、接続された対象物(CO)68が、2又はそれ以上のスケルタル・イメージ・アーク(SARC)42を含む場合には、トランスクライバ・プロセッサ(トランスクライバ)84は、その次のスケルタル・イメージ・アーク(SARC)42に沿っても継続していって、結果的には、接続された対象物(CO)68のすべてのスケルタル・イメージ・アーク(SARC)42を移動する。そうしている間に、接続された対象物(CO)68のスケルタル・イメージ・アーク記述子(SIAD)88が完了するまで、ノード・ポインタ100、ノード記述子(NODD)96、及び増加ステップのリンク・リスト(LLIS)98を構成する。トランスクライバ・プロセッサ(トランスクライバ)84は、次に、このプロセスを、スケルタライズされた走査文字イメージ(SSCI)82において表されているそれぞれの接続された対象物(CO)68に対して反復する。
この時点で、元の走査されたイメージの手書き文字又はシンボル(記号)は、スケルタル形式に還元されており、このスケルタル形式は、個別のスケルタル・イメージ・アーク(SARC)42に分離されている。そして、それぞれのスケルタル・イメージ・アーク(SARC)42と、他のスケルタル・イメージ・アーク(SARC)42との関係とは、スケルタル・イメージ・ファイル(SIF)86において、対応するスケルタル・イメージ・アーク記述子(SIAD)88によって記述されている。
スケルタル・イメージ・ファイル(SIF)86のデータ構造は、次に、時間順序誘導プロセッサ(TOIP)32に与えられ、このプロセッサ32は、このデータを、後続の文字認識において用いるために、時間的なストロークの作成順序を推論又は演繹する。それによって、電子ペン及びデジタイジング・タブレットによって提供されるような、リアルタイムの文字認識入力によって得られるものと類似する又は対比できる文字ストローク情報を発生する。
2.SITP30の平滑化及び細字化規則の詳細な説明:
a.イメージに対する平滑化及び細字化の規則及び動作:
次には、上述したように、SITP30がバイナリ・イメージから成る3×3のカーネル・アレーに対して作用する動作について考察する。ここで、ピクセルに対する動作の結果は、そのピクセル自体と周囲の8つの隣接するピクセルとの状態に依存する。これらの動作は、一回でも反復的にでも、又は、異なる動作のシーケンスの一部としてでも用いることができる。更には、例えば、「漂遊(stray)」ピクセルすなわちノイズを除去するためにも、イメージのエッジを平滑化するためにも、又は、上述したように、結果的に得られる抽象化されたイメージに基づいて後続の認識を行う目的で接続された対象物をスケルタルな表現に還元するためにも、用いられる。以下では、これらの動作を実行するための、テーブルを用いる方法を2つ説明する。一方の方法は、一度に1つのピクセルを扱うものであり、他方の方法は、ピクセルの2×2の組を扱うものである。
ここで用いる基本的なイメージ処理方法は、基本的には、隣接するピクセルによって定義される内容に応じて、背景ピクセルを前景ピクセルに変換し、前景ピクセルを背景ピクセルに変換するという動作を実行するものである。例えば、隣接ピクセルとして前景ピクセルをただ1つ有しているすべての前景の(1)ピクセルを、背景の(0)ピクセルに変化させることが望まれることがある。その場合には、図9に示されている8つの構成のすべてにおいて、中央のピクセルは、背景ピクセルに変換されることになる。
実際には、与えられた条件においてどのピクセルを変化させるかの規則は、より複雑であるのが通常であるが、それぞれの規則は、この図に示されているような構成に対して、どのピクセルが状態を変化させるべきかを定めている。しかし、あり得る規則の数は非常に多く、例えば、3×3のピクセル・アレーには、512通りの構成があり得るので、512の2乗通りの規則が可能である。元のイメージのスケルタルな表現を生じさせる際のように、エッジを平滑化し、次に、エッジ・ピクセルを除去する規則を反復的に適用するなど、異なる処理規則のシーケンスを用いると、この複雑さは、更に増加する。
以下で説明する方法は、インテル社の80468マイクロプロセッサのようなバイト指向(byte oriented)なPU14のための構成であるが、本発明は、専用のビット・アドレス指定可能(bit addressable)なグラフィクス・プロセッサや、3つまでのイメージ走査線を並列して処理する能力を有する特別目的のプロセッサを用いても実現できることに注意すべきである。
後に更に詳細に説明するように、この方法では、バイト指向のプロセッサを想定しており、処理されるイメージは、整数ビットの幅である。この方法では、更に、イメージが、例えば、バイトに対して8つのピクセルというように、稠密に詰め込まれている(densely packed)ことを想定している。また、表されているイメージは、背景ピクセルから成る少なくとも1つの層又は境界によって包囲され、「隣接する」ピクセルすなわち隣接ピクセル群を、そのイメージのエッジ上のピクセルに対して確立する。
この方法は、更に、一度に、元のイメージの走査線の組に対して作用するが、走査線の現在の(処理されている)組は、一時的な作業バッファの中に保持される。走査線の現在の組は、好ましくは、現時点で作用されている1又は複数のピクセルを含むラインの先の少なくとも1本のラインを含み、現在の動作の結果として生じる効果の不所望の空間的な伝播を阻止する。プロセスは、必要であれば、この目的のために、「オフ・イメージの」(イメージから外れた)ピクセルを発生する。
最後に、一度に1バイトずつイメージが処理されるそれぞれの反復の間に、それぞれのイメージ・バイトの処理の結果は、対応する動作バイトの中に集積されるが、動作バイトの中のビットは、状態が変化するイメージ・ピクセルを表す。次に、動作バイトは、イメージ・バイトとの排他的論理和(exclusive OR)がとられ、動作バイトがゼロでない場合には、元のイメージ・バイトに代わる修正されたイメージ・バイトを生じる。
一度に1ビットに作用する本発明の構成を説明するために、この構成では、ピクセルのそれぞれの3×3の局所的な構成に対して、9ビットのインデクス・アレーを生じ、サブジェクト・アレーと称する。インデクス・アレーは、現に処理されているライン、現に処理されているラインの上の又は先のライン、及び、現に処理されているラインの下の又はそれに続くライン、のそれぞれからの3ビットを含む。これらは、現在、上、下のラインとそれぞれ称される。インデクス・アレーと処理されている現在のサブジェクト・アレーとの関係は、図10に図解されている。ここで、defは、現在のラインのピクセルであり、abcは、上のラインのピクセルであり、ghiは、下のラインのピクセルである。
3×3のピクセル・インデクス・アレーから、インデクスabcdefghiが発生され、abcdefghiの順に読み出されると、インデクス・アレーの1又は0の状態を含み、テーブルのインデクスを作るのに用いられる。テーブルは、それぞれのインデクスに対して、動作アレーと称するエントリを含む。この例でのそれぞれの動作アレーは、ピクセルeに対応する1ビットを含み、1又は0などの動作アレーのビットの状態は、現在の中央のピクセルであるeがその現在の状態を保持すべきか変更すべきかを指示する。動作アレーの1ビットは、次に、eピクセルと排他的論理和の演算がなされ、元のeピクセルに代わる修正されたeピクセルを決定する。
以下の説明に関しては、処理規則にとって適切である場合に、イメージの処理を加速させる方法は複数存在する。例えば、図11に示されているように、8つの隣接バイトの近傍において、バイトxxxxxxxxを考えよ。
xxxxxxxxによって表される8つのピクセル・バイトは、現在の処理規則が複数の条件の中の任意のものに対応する場合には、詳細な処理によって、「上を通過」(passed over)されうる。例えば、背景ピクセルはどのような条件の下でも前景ピクセルには変換されないことを規則が定めている場合には、有しているのがすべて背景ピクセルであるバイトは、上を通過される。同様に、前景ピクセルは決して背景ピクセルには変換されないと規則が定めている場合には、有しているのがすべて前景ピクセルであるバイトは、上を通過される。更に、完全に前景ピクセルによって包囲されている前景ピクセルは決して背景ピクセルに変換されないと規則が定めているとすると、有しているのがすべて前景ピクセルであるバイトは、隣接の8バイトもまたすべて前景ピクセルである場合には、上を通過される。最後に、完全に背景ピクセルによって包囲されている背景ピクセルは決して前景ピクセルに変換されないと規則が定めているとすると、有しているのがすべて背景ピクセルであるバイトは、隣接の8バイトもまたすべて背景ピクセルである場合には、上を通過される。
現在の規則に対して適切である場合には、これ以外の加速処理も可能であるが、近傍のピクセルごとの検査を要求する条件に必要な処理コストの上昇も考慮すべきである。
最後に、同じ規則を用いた同じイメージの反復処理に適用できる加速方法も存在する。例えば、ある規則が1つのイメージに反復的に作用する場合には、最初の反復以降の任意の反復において、最後の反復の間に変化しなかったイメージのピクセルは、直前の反復の間に変化しなかったピクセル又はそのようなピクセルに隣接するピクセルでなければ、現在の反復の間に変化することはあり得ない。
与えられた規則に従うプロセスの効果は反復によって多くとも1ピクセルだけ伝播するという原理を、この加速方法は認めており、この加速方法を、本発明の場合のように、1又は複数の現在の規則に従った処理の間のイメージ・ピクセルの変化を追跡することによって、実現することができる。
この理由により、変化追跡のメカニズムは、走査されたイメージのそれぞれのラインに対してリターン・アレーを発生し、それぞれのリターン・アレーは、対応するラインに対して、現在の反復において変化した最も左及び最も右のバイトによって定義される「スパン」を示す。このメカニズムは、リターン・アレーを初期化して、あるプロセスの最初の反復の開始時においてイメージ全体を包囲し、そのプロセスの終了時では、現在の反復においては変化が生じていないことによってそのことは示されるが、最も右のバイトの右に位置する最も左のバイトを有する「不可能な」スパンを有するリターン・アレーを発生することによって、反復の有用な終了を指示する。
変化追跡メカニズムは、リターン・アレーを用いて、最初以外のすべての反復の間のプロセスの範囲の限度を決定する。しかし、それぞれのリターン・アレーの現在の内容が現在の反復において処理されるスパンを1ピクセルによってあまりに強く拘束することを想定しており、これは、先の反復の結果として可能性がある。従って、変化追跡メカニズムは、指示されたスパンの左右の両側において1バイト、そして、走査線に平行なすべてのエッジに沿った1バイト、処理されるスパンを拡張する、又は、「太くする」。ここで、太くする動作は、イメージの実際の境界によって、画定又は限定される。
変化追跡メカニズムは、更に、変更されたスパンがゼロであったかどうかを示すフラグを発生又は設定し、反復の間に変更されたピクセルの数を表す数又は値を与える。こうして、このメカニズムは、プロセスの反復に結果生じる変更がそれ以上ないので反復を停止すべきときを知っていることになる。
最後に、上述したように、SITP30は、イメージに対して、恐らくは循環的な態様で、規則のシーケンシャルな組を適用し、リターン・アレーを用いて同様の態様でこれらのプロセスを好適に境界付け、この規則のシーケンシャルな組の反復を制御する。この場合には、SITP30は、それぞれの規則に対してリターン・アレーを発生し、規則のシーケンスにおけるそれぞれの新たな規則の最初において、先の規則の最後の反復の論理的な結合であるリターン・アレーを、その新たな現在の規則に与える。従って、結合アレーは、規則のそれぞれの後続の反復の適用の結果を表し、新たな現在の規則の最初の現在の反復のための開始のリターン・アレーとして用いられる。新たな現在の規則は、従って、それ自身の先の適用と規則のシーケンスにおける他の規則の先の反復との結果として生じるスパンの最も左及び最も右のエッジにおいて、その左の及び右のエッジを設定する。
以上で説明したように、SITP30のこの構成は、好ましくは、テーブルを用いたものであり、テーブルは、ピクセルのグループ又は組に対する処理結果を規則又は参照するのに用いられる。その理由は、テーブルを利用する処理によって獲得される処理速度の向上のためである。原理的には、処理に用いられるテーブルのサイズには制限はないが、メモリ及び処理の限度に起因する制限はあり得る。
例えば、イメージ・ピクセルの4×4のインデクス・アレーから生じるインデクスを用いて2×2のサブジェクト・アレーをテーブルを用いて同時に処理する構成は、図12に示されているアレーによって図解されうる。この図では、ピクセルF、G、J、Kから成る2×2のサブジェクト・アレーに対する個別のピクセル動作は、A、B、C、D、E、F、G、H、I、J、K、M、N、O、Pから成る4×4のインデクス・アレーから生じるインデクスを、テーブルの中へのインデクスとして用いて決定されうる。これらのアレーを基にして作られるテーブルは、入力される処理アレーのピクセルであるf、g、j、kに個別に対応し2×2のサブジェクト・アレーの4つのピクセルと排他的論理和演算がなされ2×2のサブジェクト・アレーの個々のピクセルの状態を選択的に「フリップ」(反転)させたり、フリップさせなかったりする4ビットの動作アレーを提供する。この構成では、サブジェクト・アレーの4つの個別のピクセルのそれぞれに対して実行されるフリップ又は非フリップの個別の動作を定義する動作アレーを提供することができるが、これは、インデクス・アレーが、サブジェクト・アレーの4つのピクセルのそれぞれの局所的な内容を完全に定義するのに必要な情報を含むからである。
このテーブルは、64キロバイトの動作アレー情報を含むが、これは、その中の情報をより稠密に詰め込むことによって、32キロバイトにすることができる。例えば、インデクスからピクセルAを除去することによって、インデクスを15ビットに還元することができ、テーブルの中のそれぞれのエントリは2つの動作アレーを記憶することができる。テーブルのそれぞれのエントリには、ピクセルAの状態が1であるときには、一方の動作アレーであるf−g−j−kが適用され、ピクセルAの状態が0であるときには他方の動作アレーであるf’−g’−j’−k’が適用される。
この構成は、一度にイメージの2つのラインを処理し、4回のテーブル参照の後では、2バイトの動作アレーを生じ、これは、非ゼロであれば元のイメージと排他的論理和演算がなされて修正されたイメージの修正されたピクセルを生じる。
再び、何らかの加速方法が利用可能であり要求される処理を減らすことができる。これは、図13のピクセル・アレーによって示されている。
この例では、xxxxxxxxとyyyyyyyyとが共にすべて背景ピクセルである場合には背景ピクセルは決して前景ピクセルに変化しないと規則によって定められているとすると、xxxxxxxx及びyyyyyyyyは処理されるされる必要がない。同様に、xxxxxxxxとyyyyyyyyとが共にすべて前景ピクセルである場合には前景ピクセルは決して背景ピクセルに変化しないというのが規則であるならば、xxxxxxxx及びyyyyyyyyは処理されるされる必要がない。また、完全に背景ピクセルに包囲されている背景ピクセルは決して前景ピクセルには変化しないと規則が定めており、xxxxxxxx及びyyyyyyyyが背景ピクセルであるならば、包囲している10個のピクセルのすべてが背景ピクセルである場合には、xxxxxxxx及びyyyyyyyyは処理の必要がない。最後に、完全に前景ピクセルに包囲されている前景ピクセルは決して背景ピクセルには変化しないと規則が定めており、xxxxxxxx及びyyyyyyyyが前景ピクセルであるならば、包囲している10個のピクセルのすべてが前景ピクセルである場合には、xxxxxxxx及びyyyyyyyyは処理の必要がない。
b.規則を特定する:
上述のように、SITP30のこの構成は、1×1のサブジェクト・アレーを有する3×3のインデクス・アレーに作用し、よって、512通りの規則の組から構成される処理規則によって定義される。ここで、それぞれの規則は、可能なインデクス・アレーのそれぞれに対するサブジェクト・アレーに実行される動作を定義している。処理規則は、規則テーブル又はリストに、「真理値」として記憶されうるが、それぞれの真理値は、処理規則の中の1つの規則に対応し、特定の又は特別の処理規則が、最初に規則テーブルにおいて現実化されていた基本的な又は開始時の処理規則への継続的な修正によって発生する。以下では、部分的に例を用いて、処理規則テーブルの構成について説明する。その際には、ピクセルの3×3アレーの有意味な組の二次元記号(notation)と処理規則に従ってそれぞれの3×3アレーの中央のピクセルに対して実行する動作を特定する対応の真理値とを用いる。
以下で用いる記号によれば、Bは黒いすなわち前景ピクセルを表し、−は白いすなわち背景ピクセルを表す。また、eは、そのピクセルが、前景ピクセル又は背景ピクセルのどちらかであることを表す。従って、図14に図解されている以下のパターンを見ると、左側のアレーでは、すべての前景(黒)ピクセルは、対角線方向のピクセルの状態とは無関係に、4つの直交する背景(白)ピクセルを有している。これに対して、右側のアレーでは、背景(白)ピクセルは2つの前景(黒)ピクセルの間に垂直方向に挟まれて位置している。左側のアレーに表現されている条件を満たすアレーは、16通りが可能であり、右側のアレーに表現されている条件を満たすアレーは、64通りが可能である。
上で示したような基本的なアレー・パターンの組は、拡張が可能であり、基本のアレー・パターンを回転させたり鏡映させたりした結果として得られる種々のバージョン、変更、又は修正を含む。鏡映や回転の例は、図15において数値コードで示されている。
この数値コードは、基本アレー・パターンの中の選択されたピクセルがそれぞれの回転や鏡映に対して写像(マップ)する図における位置の値を加算したものに基づいている。この際、基本アレー・パターンは、図の1の位置において選択されたピクセルを用いて図に重畳されることから開始される。従って、数値コード1+128は、1と128との位置における値の和であり、1におけるその元の位置での基本アレー・パターンを指示又は表現し、このパターンは、図の垂直軸に対して鏡映されているものである。他方で、数値コード1+4+16+64は、位置1、4、16、64における値の和であり、1における元の位置での基本アレー・パターンに対応し、位置4及び64に対する+90度及び−90度の回転と、位置16に対する180度の回転とによるものである。明らかに、この図を用いて得られた数値コードの値は、基本アレー・パターンの、90度、180度、270度の回転と、左右及び/又は上下の鏡映とを表現するのに十分である。
拡張された基本アレー・パターンの2つの例と拡張されたパターンの解釈とが、図16及び図17に示されている。図16では、すべてのピクセルが、前景ピクセル及び背景ピクセルを含めて、示されており、ただ1つの対角線方向の前景ピクセルがあり、直交するピクセルの任意の組合せが示されている。図17では、2つの直径方向に対向する背景ピクセルの間に1つの前景ピクセルが表されており、アレーでの残りのピクセルの組合せも示されている。
最後に、3×3アレーの中央のピクセルに対して実行しうる4つの動作がある。すなわち、ピクセルをその反対の状態にフリップできるし、ピクセルを前景ピクセルに変換できるし、ピクセルを背景ピクセルに変換できるし、又は、ピクセルを、元の状態に保つこともできる。ある条件の場合には、これらの動作の間には、恒等的な変換(equivalences)もある。例としては、ピクセルを背景ピクセルに変換する場合に、そのピクセルが既に背景ピクセルである場合である。しかし、このような恒等的な変換は、無意味でも冗長でもない。その理由は、処理規則を前進的(progressively)に発展させることによって、そのような恒等的な変換も処理規則の発展方法の結果であるようにするのがこの構成の意図であるからである。
上述したように発展される例は、コンピュータ・プログラム型のステートメントすなわちコマンドを介して実現され得るが、そのコマンドでの第1のパラメータは、特定の規則テーブル又は規則テーブルの組に向けられたポインタである。そのようなステートメントは、用いるべき特定のオリエンテーションや変更されるべき処理規則を異なる時点で特定するより高級レベルのコードによってコールされるルーチンに組み込むことができる。この例には、C言語で書かれた2つのコマンドの例が図18に示されている。ここでは、第1のコマンドは、規則テーブルをクリアして、その内容に関係なく前景ピクセルも背景ピクセルも変換されないことを有効に命じている。第2のコマンドは、孤立している及び投射的(projecting)な前景ピクセルは背景ピクセルに変換される、すなわち、接続された対象物のエッジから「トリム」されるべきことを命じている。
c.規則テーブルの自動構成:
既に述べたように、3×3のインデクス・アレーにおける1×1のサブジェクト・アレーに作用する規則テーブルは、512のエントリを含む。ここで、それぞれのエントリのインデクスは、3×3のインデクス・アレーのピクセル・ビット・パターンを表現し、エントリの値、すなわち、1×1の動作アレーにおける1ビットの状態は、対称となるピクセルが不変であることを規則が命じる場合には、例えば0であり、対称となるピクセルが反対の状態にフリップされることを規則が命じる場合には、例えば1である。
既に説明した方法に従う既存の規則テーブルの修正は、直線的で単純であり、アレー・パターンにおけるeの状態が意味するアレー・パターンの多重性と、数値コードによって決まるオリエンテーションの組によって特定されるオリエンテーションの多重性との発生だけから生じる複雑性があるだけである。
アレー・パターンとオリエンテーション(配向)との多重性は、図19の疑似コードによって示される入れ子状の反復(nested iteration)によって発生する。ここでは、(おそらく4つの)ショートカット・フラグを設定しノー・エラー・コードをリターンするという値を決定する。
修正規則の動作における一貫性を維持するために、ショートカットがそれぞれの修正規則の動作の終了時に再度確立される。結果的なショートカット・フラグは、規則テーブルへの付属物となる。3×3インデクス・アレーの場合には、4つのショートカットがある。これらは、次のように示される。
1)背景ピクセルが前景ピクセルに変換されうるかを判断するためには、規則位置である*_*_*_*_1_*_*_*_*の任意の位置に非ゼロのエントリがあるかどうかを判断する。ここで、*は0又は1の値をとる。
2)前景ピクセルが背景ピクセルに変換されうるかを判断するためには、規則位置である*_*_*_*_1_*_*_*_*の任意の位置に非ゼロのエントリがあるかどうかを判断する。
3)背景ピクセルによって完全に包囲されている背景ピクセルが前景ピクセルに変換されるかどうかを判断するには、規則位置0_0_0_0_0_0_0_0_0が非ゼロであるかどうかをテストする。
4)前景ピクセルによって完全に包囲されている前景ピクセルが背景ピクセルに変換されるかどうかを判断するには、規則位置1_1_1_1_1_1_1_1_1が非ゼロであるかどうかをテストする。
d.2×2のピクセル・インデクス・アレーを処理するための規則テーブルの自動的な構成:
2×2のインデクス・アレーを処理するための32キロバイトのテーブルは、512バイトのテーブルと全く同じ情報を含むが、情報は、処理速度を上げるために、再配置され、冗長度を含んでいる。しかし、2×2インデクス・アレーのテーブルは、3×3のインデクス・アレーのためのものとは、プロセスがバイトではなく個々のビットを設定し、512バイトのテーブルではバイトは1又は0に設定されるが、32キロバイトのテーブルではテーブルは512個のそれぞれのビットを1又は0に設定する点で、異なる。
例えば、図20に示されているインデクス・アレーを考察する。このインデクス・アレーは、ピクセルの2×2アレーに対する複数の異なる位置を占め、2×2アレーのピクセルの近傍では、図21に示されているように、任意の*は、0又は1の値をとりうる。
これらのパターンのそれぞれは、規則テーブルにおける128ビットのアドレスを表すが、これは、512ビットの全体に対して、それぞれの規則の特定に貢献するそれぞれの修正規則コマンドのそれぞれのパターンのそれぞれのオリエンテーションに対して、設定されなければならない。規則テーブルの発展はこのように深く入れ子状になっているので、すなわち、多くの反復を必要とするので、用いられる度にテーブルを発展させるには、著しい処理時間が要求され、従って、必要とされるものを用いるためには、テーブルを予め作成し記憶しておくことが望ましい。
この大きな方の32キロバイトのテーブルに対しては、小さい方の512バイトのテーブルの場合のように、可能な処理ショートカットに対する真理値を自動的に決定することが好ましい。上述のように、これは、規則テーブルの結果的な状態を調べることによって、修正規則コマンドの実行の最後に行われる。ショートカットの例を次に挙げる。
1)背景ピクセルが前景ピクセルに変換され得るかどうかを判断するには、図22に示されたパターンにおけるpのような特定のピクセルを選択し、0_0_0_0_0_*_*_*_0_*_0_*_0_*_*_*が意味する256ビット位置の中の任意の位置において値1を有するビットがあるかどうかを判断する。
2)前景ピクセルが背景ピクセルに変換され得るかどうかを判断するには、同じパターンに対して、0_0_0_0_0_*_*_*_0_*_1_*_0_*_*_*が意味する位置において値1を有するビットがあるかどうかを判断する。
3)背景ピクセルによって完全に包囲されている背景ピクセルが前景ピクセルに変換されるかどうかを判断するには、図23に示されたパターンが意味する位置に置いての値を有するビットがあるかどうかを判断する。
4)前景ピクセルによって完全に包囲されている前景ピクセルが背景ピクセルに変換されるかどうかを判断するには、図24に示されたパターンが意味する位置に置いての値を有するビットがあるかどうかを判断する。
e.対象物をスケルタルな形式に抽象化する際のテーブル構成:
既に述べたように、規則テーブルに従うイメージ・ピクセルの上述の処理が、この構成で適用されて、手書きされた又は手で印刷された文字などの白い背景上の黒い前景ラインのビットマップ・イメージに作用し、1ピクセル幅のラインに変化させる。このプロセスは、既に述べたが、第1に、対象物と称する文字の外側の周辺部すなわちエッジを平滑化し、次に、対象物の左、上、右、下などからピクセルの層を反復的に除去することによって、本発明によって実行される。この除去の際には、他の前景ピクセルへの本質的な接続である前景(黒)ピクセルは除去せず、すなわち、対象物を接続された対象物として保持するような態様でなされる。一般的に、このプロセスは、例えば4回の連続的な処理の反復など、所定の回数の連続的な処理の反復の後で対象物に変化が生じなくなったときに、終了する。
1回又は数回実行することのできる平滑化動作は、必要に応じて、図25に示されている疑似コードによって定義できる。ここで用いられている用語のいくつかは、既に定義され、説明されたものである。
最後に、2×2のピクセル・アレーを処理するための規則テーブルを構成し使用するためのC言語による例示的なコードのリストが図解されている。一度に1ピクセルを処理するための対応するコードは、当業者であれば、このコードから、容易に導くことができるであろう。
C.時間順序誘導プロセッサ(TOIP)32の説明:
1.TOIP32の一般的な説明:
既に述べたように、SITP30は、反復的な態様で機能して、走査文字イメージ(SCI)38によって表現される入力文字イメージを、既に及びこれ以降でもスケルタル・イメージ(SKI)40と称されている、それと同等のスケルタル・イメージに還元する。それぞれのスケルタル・イメージ(SKI)40は、1又は複数のスケルタル・イメージ・アーク(SARC)42から成り、スケルタル・イメージ(SKI)40を、スケルタル・イメージ・ファイル(SIF)86の中に、スケルタル・イメージ・アーク記述子(SIAD)88として記憶する。SITP30は、更に、それぞれの走査文字イメージ(SCI)38から複数のスケルタル・イメージ・ファイル(SIF)86を発生する。それぞれのスケルタル・イメージ・ファイル(SIF)86は、スケルタライズされた文字の同等の表現を、しかし、異なる解像度で含む。
図26を参照すると、TOIP32が、与えられた走査文字イメージ(SCI)38に対応するそれぞれのスケルタル・イメージ・ファイル(SIF)86に作用して、ストロークを、すなわち、スケルタル・イメージ・アーク記述子(SIAD)88において表現されているスケルタル・イメージ・アーク(SARC)42に順序を付け、ストローク・クラスタ(SC)110を作る。ここで、それぞれのストローク・クラスタ(SC)110は、幾何学的及びトポロジカルな関係を有するスケルタル・イメージ・アーク(SARC)42を記述する情報を含む1又は複数のストローク記述子(SD)112のグループである。ストローク・クラスタ(SC)110のスケルタル・イメージ・アーク(SARC)42は、文字の1又は複数のストローク又は文字の一部としての潜在的な意味を有している。次に、TOIP32は、スケルタル・イメージ・ファイル(SIF)86のストローク・クラスタ(SC)110に順序を付けて、ページを横切る左から右への順序を表す空間的なシーケンスを作り、ストローク・クラスタ(SC)110を、対応する順序付きクラスタ・アレー(OCA)44に書き込む。それぞれのストローク・クラスタ(SC)110は、このように、少なくとも1つのスケルタル・イメージ・アーク(SARC)42を含み、従って、1又は複数の接続された対象物(CO)68を表現する。接続された対象物(CO)68とストローク・クラスタ(SC)110との間の空間的な関係は、接続された対象物(CO)68が、文字の意味のあるストローク又はストローク群又は文字の一部分を形成するようになっている。
TOIP32がそれぞれのスケルタル・イメージ・ファイル(SIF)86から導かれたストローク・クラスタ(SC)110を対応する順序付きクラスタ・アレー(OCA)44に書き込むプロセスは、図26に示されている。この図において、それぞれのストローク記述子(SD)112の参照番号に付けられた添え字は、その中に記述されているスケルタル・イメージ・アーク(SARC)42の間の空間的な関係を示している。すなわち、ストローク記述子(SD)112bは、左から右へ、ストローク記述子(SD)112cにおいて表されているものよりも前であって、ストローク記述子(SD)112aにおいて表されているものよりも後に生じるストロークの記述を含む。
TOIP32は、次に、ストランド動作(stranding operation)を、それぞれの順序付きクラスタ・アレー(OCA)44におけるストローク・クラスタ(SC)110のスケルタル・イメージ・アーク(SARC)42に対して実行する。2又はそれより多くの交差するスケルタル・イメージ・アーク(SARC)42を含むストローク・クラスタ(SC)110においては、TOIP32は、スケルタル・イメージ・アーク(SARC)42の選択されたものの端部を結合して、選択されたストロークの「ストランド」を、すなわち、対応するストランド済ストローク記述子(SSD)114に記憶されている接続されているスケルタル・イメージ・アーク(SARC)42のストランドを、生じる。この点で、SITP30は、2つ又はそれより多くの接続されているが個別的に識別可能なピクセルの経路から成る接続された対象物(CO)68に作用して、その接続された経路を、別々に定義されたスケルタル・イメージ・アーク(SARC)42に分離するという、先に述べた議論を思い出してほしい。ストランド動作においては、従って、TOIP32は、元々2又はそれより多くの接続されたスケルタル・イメージ・アーク(SARC)42から成る接続された対象物(CO)68のスケルタル・イメージ・アーク(SARC)42の中の選択されたものを有効に再度結合させて、対応する1つのストランドされたスケルタル・イメージ・アーク(SARC)42を作り、従って、元の接続された対象物(CO)68を部分的に又は全体として、有効に再構成する。
TOIP32は、次に、図26に示すように、ストランド済ストローク記述子(SSD)114を、対応する順序付きクラスタ・アレー(OCA)44の中に、すなわち、対応するストランドされていないストロークを含む順序付きクラスタ・アレー(OCA)44の中に書き込む。図26では、スケルタル・イメージ・アーク記述子(SIAD)88を接続している破線は、ストランドされ1つのストランド済みのスケルタル・イメージ・アーク(SARC)42になっているスケルタル・イメージ・アーク(SARC)42を含むスケルタル・イメージ・アーク記述子(SIAD)88を表す。ストローク記述子(SD)112を対応するストランド済ストローク記述子(SSD)114と接続している矢印線は、対応するストローク記述子(SD)112がストランドされ、ストランド済ストローク記述子(SSD)114になる様子を示している。図示されているように、ストランド済ストローク記述子(SSD)114xは、スケルタル・イメージ・アーク記述子(SIAD)88a及び88bに対応するストローク記述子(SD)112a及び112bから作られ、ストランド済ストローク記述子(SSD)114yは、スケルタル・イメージ・アーク記述子(SIAD)88d、88e、88fに対応するストローク記述子(SD)112d、112e、112fから作られる。
2.TOIP32の詳細な説明:
a.ストローク記述子ジェネレータ(SDG)116(図27A及び図27B):
図27Aを参照すると、TOIP32は、PU14の上で動き、選択されたスケルタル・イメージ・ファイル(SIF)86のそれぞれのスケルタル・イメージ・アーク(SARC)42を記述する情報を読み出して、それぞれのスケルタル・イメージ・ファイル(SIF)86に対応するストローク・アレー(SA)118を構成する対応のプログラム・ルーチン(PR)18として実現されたストローク記述子ジェネレータ(SDG)116を含む。それぞれのストローク・アレー(SA)118は、対応するスケルタル・イメージ・ファイル(SIF)86におけるそれぞれのスケルタル・イメージ・アーク(SARC)42に対するストローク記述子(SD)112を含む。
図27Bに示されているように、それぞれのストローク記述子(SD)112は、対応するスケルタル・イメージ・アーク(SARC)42のスケルタル・イメージ・アーク記述子(SIAD)88を含んでおり、ノード記述子(NODD)96における端部(エンド)ノード90の座標と、増加ステップのリンク・リスト(LLIS)98と誘導された方向ストリング(IDIRS)120とにおいて記述されたリンク92経路に沿ったピクセルの座標とを含む。以下で述べるように、ストローク記述子(SD)112において表現されたストローク経路に沿ったそれぞれのピクセルに対するストローク方向エントリ(SDE)122を含み、ストローク記述子(SD)112において表現されたそれぞれのピクセルに対して、そのピクセルにおける想像上のペンの想定された運動方向を、対応するストローク記述子(SD)112によって記述されるストロークを形成する際に表現する。運動の方向は、ほとんどの書き手によって文字のストロークが形成される上から下へ右から左へのペンの動きの想定される規則に従ってそれぞれのストロークに課せられる。このプロセスは、与えられた走査文字イメージ(SCI)38に対応するそれぞれのスケルタル・イメージ・ファイル(SIF)86に対して、従って、与えられた走査文字イメージ(SCI)38のスケルタライズされたイメージの表現のそれぞれの解像度に対して、反復される。
この構成では、ストローク記述子ジェネレータ(SDG)116は、あるノード90から始まり、増加ステップのリンク・リスト(LLIS)98によって記述される経路に沿ったピクセルの対応するxy座標位置まで増加ステップ(INCS)94をカバーするスケルタル・イメージ・アーク(SARC)42のピクセル経路に沿った関連する増加ステップのリンク・リスト(LLIS)98の増加ステップ(INCS)94を読み出すことによって、また、その際に、開始点の端部ノード90から得られる開始の座標までの継続的な増加ステップ(INCS)94における方向と距離とを集積的に加算することによって、リンク92の経路に沿ったそれぞれのピクセルの座標を決定する。
増加ステップ(INCS)94の情報は、また、ストローク記述子(SD)112の誘導された方向ストリング(IDIRS)120に対する対応するストローク方向エントリ(SDE)122を発生するのに用いられる。ストローク記述子ジェネレータ(SDG)116のこの構成では、ストロークの作成運動の課された方向は、4つの方向に、すなわち、左右上下に分けられ、増加ステップのリンク・リスト(LLIS)98からの方向情報だけから、又は、ピクセル座標から、1つのピクセル位置から次へのxy座標の最大の変化はx座標において生じるのかy座標において生じるのかを判断することによって、更に、どの方向に最大の変化が生じるのか、すなわち、最大の変化はその軸の+方向にと−方向とのどちらにおいて生じるのかを判断することによって、決定される。他の構成では、運動の方向は、必要であれば、文字及び記号の一貫し正確な識別のために、より高い解像度まで分けられる。当業者であれば理解することであるが、例えば、運動の方向は、左、左上、上、右上、右、右下、下、左下から成る8つの方向に、あるピクセルから次のピクセルへのx及びy軸に沿った座標位置の変化の大きさを知り、これらの大きさをこれらの方向を構成する90度及び45度に丸めて比を計算することによって、又は、再び、増加ステップのリンク・リスト(LLIS)98による方向情報から、決定することができる。
既に述べたように、SITP30の構成によっては、それぞれの増加ステップ(INCS)94は、増加ステップのリンク・リスト(LLIS)98のそれぞれの経路に沿った継続的なピクセル又はピクセル群までの方向及び距離ではなく、増加ステップのリンク・リスト(LLIS)98のそれぞれの経路に沿ったピクセル又はピクセル群の位置の座標を記憶する。SITP30がこのように構成されている場合には、ストローク記述子ジェネレータ(SDG)116が増加ステップ(INCS)94の方向及び距離情報をピクセル座標に変換する必要はなく、その理由は、この情報が増加ステップ(INCS)94から直接に入手可能であるからである。しかし、ストローク記述子ジェネレータ(SDG)116は、ピクセルの継続的な座標から方向ストリング(DIRS)122を発生する必要がある。
b.ストランド・プロセッサ(STRP)124(図27A、図28A、図28B):
TOIP32は、更に、ストランド・プロセッサ(STRP)124を含み、このプロセッサは、既に述べたように、それぞれのストローク・アレー(SA)118のストローク記述子(SD)112を読み出し、ストローク記述子(SD)112において記述されているスケルタル・イメージ・アーク(SARC)42が交差していることを示しているようなストロークを識別して、対応するストランド済ストローク記述子(SSD)114を構成する。
この点では、既に述べたことであるが、SITP30のトランスクライバ・プロセッサ(トランスクライバ)84が、接続された対象物(CO)68のピクセル経路を、ピクセル経路が接続された対象物(CO)68の別のピクセル経路に出会う、又は、ピクセル経路の方向が著しく変化する地点において、別々のスケルタル・イメージ・アーク(SARC)42に分割する。そのようにして、文字の単一のピクセル経路すなわち単一のストロークは、2又はそれより多くの別々に識別され記述されるストロークに転写(トランスクライブ)される。
このプロセスは図28Aに図解されている。この図では、接続された対象物(CO)68が、2つの交差するスケルタル・イメージ・アーク(SARC)42u、42vから成る元のスケルタライズされた形式で示されている。トランスクライバ・プロセッサ(トランスクライバ)84は、図28Aでは交点126として示されている、スケルタル・イメージ・アーク(SARC)42uとスケルタル・イメージ・アーク(SARC)42vとの共通のピクセルでの交差すなわち結合を検出し、スケルタル・イメージ・アーク(SARC)42u及びスケルタル・イメージ・アーク(SARC)42vを、スケルタル・イメージ・アーク(SARC)42w、42x、42y、42zとしてトランスクライブする。
既に述べたように、ストローク記述子ジェネレータ(SDG)116は、スケルタル・イメージ・アーク(SARC)42w、42x、42y、42zのそれぞれを、ストローク・アレー(SA)118の別のストローク記述子(SD)112において記述する。
簡単には述べたことであるが、ストランド・プロセッサ(STRP)124は、それぞれのストローク・アレー(SA)118のストローク記述子(SD)112において記述されているスケルタル・イメージ・アーク(SARC)42のいくつかに作用して、スケルタル・イメージ・アーク(SARC)42の中尾選択された対の端部を1つの接続されたストロークに結合して、すなわち、それぞれの選択された対を結合して単一のスケルタル・イメージ・アーク(SARC)42を作る。スケルタル・イメージ・アーク(SARC)42の対は、それぞれのストローク・アレー(SA)118におけるストローク記述子(SD)112に記述されている交差するスケルタル・イメージ・アーク(SARC)42の対から選択されるが、それぞれの対は、その交点においてストロークの間の交差角度が最小となるように選択されている。このプロセスは、人間の手は通常のテキスト文字や記号を書く際には、そのストロークを形成するのに必要でない限りは、ストロークに沿った運動方向における急激で急峻な変化を避ける弾道的(ballistic)な運動に従う、という事実に基づく。このプロセスは、このようにして、トランスクライバ・プロセッサ(トランスクライバ)84によって2つの別個に識別されたストロークに分割されている接続された対象物(CO)68のストロークのいくつかを、単一のストロークに復元するが、この際には、ストロークが、人間により手書きされたようなストローク、例えば、ペンとタブレットとを用いてリアルタイムで書かれた元のイメージに似せるような態様で復元される。
ストランド・プロセッサ(STRP)124によって実行されるプロセスは、図28Cに図解されている。この図では、ストランド・プロセッサ(STRP)124は、交差するストロークの6つの対を、ストローク・クラスタ(SC)110の実際の又は可能性のある構成要素として識別している。ストロークのこれらの対は、スケルタル・イメージ・アーク(SARC)42xを伴うスケルタル・イメージ・アーク(SARC)42w、スケルタル・イメージ・アーク(SARC)42yを伴うスケルタル・イメージ・アーク(SARC)42w、スケルタル・イメージ・アーク(SARC)42zを伴うスケルタル・イメージ・アーク(SARC)42w、スケルタル・イメージ・アーク(SARC)42yを伴うスケルタル・イメージ・アーク(SARC)42x、スケルタル・イメージ・アーク(SARC)42zを伴うスケルタル・イメージ・アーク(SARC)42x、及び、スケルタル・イメージ・アーク(SARC)42zを伴うスケルタル・イメージ・アーク(SARC)42yによって表現される。ストランド・プロセッサ(STRP)124は、角度(A)128wx、128wy、128wz、128xy、128xz、128yzとして表される、ストロークの可能性のある対の間の交差角度を決定する。図28Dに示されているように、ストランド・プロセッサ(STRP)124は、スケルタル・イメージ・アーク(SARC)42wとスケルタル・イメージ・アーク(SARC)42xとから成りその交差角度がA128wxである対と、スケルタル・イメージ・アーク(SARC)42yとスケルタル・イメージ・アーク(SARC)42zとから成りその交差角度がA128yzである対とを、それぞれの対のストロークの間の交差角度が最小になっている結合されたストローク対を表現するものと識別する。次に、ストランド・プロセッサ(STRP)124は、スケルタル・イメージ・アーク(SARC)42w及びスケルタル・イメージ・アーク(SARC)42xの対に対する新たな第1のストランド済ストローク記述子(SSD)114wxと、スケルタル・イメージ・アーク(SARC)42y及びスケルタル・イメージ・アーク(SARC)42zの対に対する新たな第2のストランド済ストローク記述子(SSD)114yzとを発生(生成、ジェネレート)するが、これらの2つの新たなストランド済ストローク記述子(SSD)114は、あらゆる点でストローク記述子(SD)112に類似しているが、ストロークを、結合されたすなわちストランドされた単一のエントリとして記述している。すなわち、それぞれの対において、交点に位置するノード90は、結合された経路に沿った別のピクセル点として結合されており、誘導された方向ストリング(IDIRS)120は、結合されて、単一の誘導された方向ストリング(IDIRS)120となる。
上で述べたストランド動作では、ストランド・プロセッサ(STRP)124が、ストローク記述子(SD)112のそれぞれの可能性のある対のピクセル経路の間の交差角度を決定し、その終点のノード90における交点でのその経路の方向の間の角度が最小になる交差しているピクセル経路の対を識別することが要求される。
ストランド・プロセッサ(STRP)124は、ストロークの可能性のある対のピクセル経路の間の交差角度を、ピクセル経路の共通の終点ノード90を形成するピクセルに隣接するそれぞれのピクセル経路に沿った第1のピクセルの方向を決定することによって、決定する。しかし、この方法は、それぞれのピクセル経路の方向をただ8通りの角度の中の1つとして数量化するので、スキャナによって文書イメージをピクセル・マップに最初に数量化する際にノイズを受け、また、細字化プロセスにおいて導入されるノイズも受ける。
従って、ストランド・プロセッサ(STRP)124のこの構成では、それぞれのストロークのより大きな長さを用いることによって、その共通の共有された終点ノード90位置における相互の間のストロークの角度を決定する。ある構成では、ストランド・プロセッサ(STRP)124は、2又はそれより多くの交差しているストローク群の中のそれぞれのストロークに対して、xy座標平面の選択された軸とストローク群の中の選択された1つとのどちらか一方と、共有されている終点ノード90の位置とその共通の終点ノード90の位置から離れる方向のストロークに沿って所定の距離の位置にある地点とを結ぶラインとの間の角度を決定することによって、この動作を行う。それぞれのストロークに沿った選択された点と共有された終点ノード90の位置とを接続するラインは、従って、xy座標平面の選択された軸又は経路の中の選択されたものに対する、ストロークの運動又は方向の平均角度を表し、次に、ストローク群の角度は、比較されて、共有された終点ノード90の位置において最小の交差角度を有する対を決定する。
この構成では、ストランド・プロセッサ(STRP)124は、ストローク群の中のそれぞれのストロークに沿った単一のピクセルを、ストロークに沿った選択された点として用いる。この場合には、ピクセルは、例えば、それぞれのストロークの他方の終点ノード90におけるものとして、又は、共有された終点ノード90から離れる方向に経路に沿って所定の距離だけすなわち所定の数のピクセル分だけの位置にあるピクセル、又は再び、そのストロークが所定の距離だけ進む前に終わっている場合には、そのノード90の端部における点におけるピクセルとして、選択されうる。別の構成では、ストランド・プロセッサ(STRP)124は、共通の終点ノード90から離れる方向においてストロークに沿って選択される2又はそれより多くピクセルから決定される平均から、ストロークの相対的な角度を決定する。これらのピクセルは、例えば、それぞれのストロークの他方の終点ノード90と、例えばそれぞれのストロークに沿ってピクセルを数えることにより識別されるそれぞれのストロークの終点ノード90の間の中間にあるピクセルとから構成され、又は、共通の終点ノード90位置から離れる方向にそれぞれのストロークに沿って所定の距離にある1又は複数のピクセルから構成される。それぞれのストロークのラインに沿って2又はそれより多くの点の座標位置が与えられた場合には、その中の1つは、ストロークの交点における共有された終点ノード90である。ストランド・プロセッサ(STRP)124は、xy座標平面に対する、又は、ストロークの中の選択された1つに対するストロークの交差角度を、当業者には広く知られた方法によって、しかし本質的には、ラインに沿った2又はそれより多くの点の座標から、xy軸の一方に沿ったラインの、xy軸の他方に沿ったラインの位置変化に対する、位置変化を決定することによって、決定する。
別の実施例では、ストランド・プロセッサ(STRP)124は、xy座標平面又はストローク群の中の選択されたものに対するそれぞれのストロークの交差角度を、共有された終点ノード90のy又はx座標にそれぞれ対するy又はx軸に沿った所定の増加距離に対して、共有された終点ノード90のx又はy座標に対するストローク経路位置のx又はy座標の増加変化分を決定することによって、決定する。すなわち、例えば、ストランド・プロセッサ(STRP)124は、共有された終点ノード90のy座標を決定し、所定の距離だけx軸に沿って移動し、x軸に沿ったその点におけるストロークのy座標を決定する。従って、y座標位置の変化は、x軸に対するストロークの移動の方向の角度を表すことになる。
既に述べたように、ストランド・プロセッサ(STRP)124は、それぞれのストローク・アレー(SA)118におけるストローク記述子(SD)112の対応する対によって記述されたストロークのそれぞれの対に対して、結合動作を実行する。ストランド・プロセッサ(STRP)124は、次に、構成されているストローク記述子(SD)112を含むストローク・アレー(SA)118に、ストランド済ストローク記述子(SSD)114を書き込む。そうする際には、ストランド・プロセッサ(STRP)124が、ストランドされた識別子を、ストランド済ストローク記述子(SSD)114を構成する際に用いられたそれぞれのストローク記述子(SD)112に付属させることが好ましい。また、ストランド・プロセッサ(STRP)124は、それぞれのストランド済ストローク記述子(SSD)114に、構成されているストローク記述子(SD)112の成分識別子を付属させることが好ましい。
しかし、別の実施例では、LLRP34の特定の構成に少なくとも部分的には依存するが、ストランド・プロセッサ(STRP)124は、ストランドされているストロークを含むそれぞれのストローク・アレー(SA)118のコピーから、ストランドされたストロークを形成するために別のストロークと合成されたそれぞれのストロークを除去して、その代わりにストランド済ストローク記述子(SSD)114を与えることによって、ストランドされたストローク・アレー(SA)118を構成することができる。この実施例では、従って、ストランドが可能なストローク、すなわち、ストランドされていないストローク・アレー(SA)118とストランドされたストローク・アレー(SA)118を有するそれぞれのスケルタル・イメージ・ファイル(SIF)86に対して、2つの種類のストローク・アレー(SA)118が存在する。
最後に、ストランド・プロセッサ(STRP)124は、上述のプロセスを反復的に実行し、更に、シーケンシャルなストロークの連続的な対を単一のストロークに形成することによって、そして、ストロークの対から形成される単一のストロークを更なるストローク対に合成することによって、3又はそれより多くのストロークのシーケンスを合成して単一のストロークにすることができる。これは、記号#を参照することによって説明できる。つまり、この記号におけるストロークのそれぞれは、3つの別個のストロークとしてトランスクライブされている。すなわち、例えば、この記号の上側の水平方向のストロークは、最も左の縦向きストロークの左へ延びる第1のストロークとしてトランスクライブされており、第2のストロークは、2つの右上のストロークの間に延びており、第3のストロークは、最も右の縦向きストロークの右に延びている。ストランド・プロセッサ(STRP)124は、第1及び第2のストロークを結合して第1の結合されたストロークにし、第2及び第3のストロークを結合して第2の結合されたストロークにする。そして、第1及び第2の結合されたストロークを合成して、この記号の元の上側の水平方向のストロークを表す第3の結合されたストロークとする。
c.クラスタ・レコグナイザ(CLR)130:
図27Aに示されるように、TOIP32は、クラスタ・レコグナイザ(認識手段)(CLR)130を含む。このクラスタ・レコグナイザ(CLR)130は、やはり、プロセッサ・ユニット(PU)14の上で動くプログラム・ルーチン(PR)18であり、ストロークのクラスタの構成要素として、すなわち、文字又は文字の一部分として、潜在的な意義を有する1又は複数のストロークのグループの構成要素であるそれぞれのストローク・アレー(SA)118の中のスケルタル・イメージ・アーク(SARC)42を識別する。クラスタ・レコグナイザ(CLR)130は、その経路が実際に接続されているスケルタル・イメージ・アーク(SARC)42を、すなわち、ストランド済ストローク記述子(SSD)114を構成するのに用いられたストローク記述子(SD)112を識別し、第2に、その位置と範囲とによって空間的に関係していることが示されているスケルタル・イメージ・アーク(SARC)42を識別して文字又は記号もしくは文字又は記号の一部分を形成するストロークのクラスタの構成要素とすることによって、ストローク・クラスタ(SC)110を形成する。
第1の場合には、クラスタ・レコグナイザ(CLR)130は、ストランド済ストローク記述子(SSD)114の構成において用いられたストローク記述子(SD)112に関連する識別子を読み出す。クラスタ・レコグナイザ(CLR)130は、次に、共通の原点を有するすなわち交差しておりストランド済ストローク記述子(SSD)114の中に組み入れられているスケルタル・イメージ・アーク(SARC)42のストローク記述子(SD)112を、そのストロークを含むスケルタル・イメージ・ファイル(SIF)86に対応するクラスタ・アレー(CA)132に記憶されている対応するストローク・クラスタ(SC)110の中に、その位置と範囲との空間的な順序で、書き込む。
ストローク記述子(SD)112がストランド済ストローク記述子(SSD)114の構成において用いられていないものとしてしきべつされている、すなわち、他のストローク記述子(SD)112のストロークと交差しているものとは識別されていないような実施例では、クラスタ・レコグナイザ(CLR)130は、ストローク・アレー(SA)118のそれぞれのストローク記述子(SD)112において表現されている終点ノード90の座標を読み出して、それを、ストローク・アレー(SA)118の他方のストローク記述子(SD)112の終点ノード90の座標と比較する。クラスタ・レコグナイザ(CLR)130は、同一の座標を共有する終点ノード90を有するスケルタル・イメージ・アーク(SARC)42を、共通の原点すなわち共通に配置された終点ノード90を有するスケルタル・イメージ・アーク(SARC)42を表すものとして識別し、それらのストローク記述子(SD)112を、ストローク・クラスタ(SC)110のクラスタ・アレー(CA)132に書き込む。
クラスタ・レコグナイザ(CLR)130は、実際に交差はするが最小の交差角度の選択の理由でストランドされたストロークを構成するのに選択されなかったストロークと、交差はしていないがストローク・クラスタ100の構成要素となるような空間的な位置及び範囲を有するストロークとを、現在のストローク・アレー(SA)118の対応するストローク記述子(SD)に含まれておりそこから読み出された情報からのそれぞれのスケルタル・イメージ・アーク(SARC)42の位置と範囲(locations and extents)とを決定し比較することによって、識別する。この点では、2又はそれより多くのスケルタル・イメージ・アーク(SARC)42は、ストロークが重なるか交差するときに、又はスケルタル・イメージ・アーク(SARC)42の範囲が重なるか又は十分に接近しているときに、それらがクラスタの構成要素になるように、空間的に関係しているものと見なされる。スケルタル・イメージ・アーク(SARC)42の範囲は、クラスタ・レコグナイザ(CLR)130の種々の実施例において、スケルタル・イメージ・アーク(SARC)42のピクセル及び終点ノード90のx又はy座標の最大の範囲によって、決定される。
ある実施例では、クラスタ・レコグナイザ(CLR)130は、スケルタル・イメージ・アーク(SARC)42の範囲を、スケルタル・イメージ・アーク(SARC)42の終点ノード90のx座標によって定義されているものと判断する。ここで、スケルタル・イメージ・アーク(SARC)42の終点ノード90のx座標は、ページの左から右へ水平方向に延長するものとして定義されたx軸に沿ったスケルタル・イメージ・アーク(SARC)42の終点ノード90の位置に関するものである。この構成では、2つのスケルタル・イメージ・アーク(SARC)42は、そのx軸の範囲が相互に重なる又は所定の距離内にあるときに、ストローク・クラスタ(SC)100の構成要素と見なされる。既に述べたように、この距離は、固定されていてもよいし、決定されてもよいし、又は、スケルタル・イメージ・アーク(SARC)42の範囲に比例したものでもよい。
しかし、長い垂直方向のストロークは、水平方向に比較的短いストロークよりも大きな実際の範囲を有すると考えられうる。例えば、文字1と文字eとがその例であるが、文字eは、文字1よりも、x軸に沿ってより大きな範囲を有するものと判断される。従って、x軸座標だけを考慮して範囲を判断するのが不十分であるような場合もあり、従って、クラスタ・レコグナイザ(CLR)130の別の実施例では、それぞれのスケルタル・イメージ・アーク(SARC)42の終点ノード90のx及びyの両方の座標を考慮して、スケルタル・イメージ・アーク(SARC)42の範囲を判断し比較する。
文字B、D、Rなどの右側に延長しているループなどのストロークは、その終点ノード90のx及びy座標によって示されるより大きな実際の範囲を有し、これは、スケルタル・イメージ・アーク(SARC)42の範囲をけっけいする際の重要なファクタになり得る。よって、クラスタ・レコグナイザ(CLR)130の更に他の実施例では、対応するストローク記述子(SD)112において記述されている実際のスケルタル・イメージ・アーク(SARC)42のピクセル経路の最大及び最小のx及びy座標を判断することによって、それぞれのスケルタル・イメージ・アーク(SARC)42の実施の全体の範囲を決定し比較する。
最後に、クラスタ・レコグナイザ(CLR)130は、交差はしていないがストローク・クラスタの構成要素である可能性が高いと識別されるスケルタル・イメージ・アーク(SARC)42のストローク記述子(SD)112を、クラスタ・アレー(CA)132の適切なストローク・クラスタ(SC)110に、書き込む。この際に、そのスケルタル・イメージ・アーク(SARC)42がその空間的な位置及び範囲の順序において交差するので構成要素であると識別されている他のストロークも共に書き込まれる。
d.クラスタ順序プロセッサ(COP)134:
TOIP32は、更に、クラスタ順序プロセッサ(COP)134を含む。このクラスタ順序プロセッサ(COP)134は、プロセッサ・ユニット(PU)14の上で動くプログラム・ルーチン(PR)18として実現されており、それぞれのクラスタ・アレー(CA)132のストローク・クラスタ(SC)110のストローク記述子(SD)112とストランド済ストローク記述子(SSD)114とを読み出し、それぞれのクラスタ・アレー(CA)132のストローク・クラスタ(SC)110に順序を付けて、x軸に沿ったストローク・クラスタ(SC)110の「重心」(center of mass)の増加する位置に従って、推測される作成の時間的順序を作成し、順序付きのストローク・クラスタ(SC)110を、対応する順序付きクラスタ・アレー(OCA)44に書き込む。
ストローク記述子(SD)112とストランド済ストローク記述子(SSD)114との論理的な順序付けに用いられるx軸は、文書又はイメージのページを水平方向に横切って延長するものとして定義され、クラスタ順序プロセッサ(COP)134によるストローク・クラスタ(SC)110の順序付けにも用いられる。ストローク・クラスタ(SC)110の上に課せられるx軸座標のシーケンスは、それによって、文字を書く上での最も平凡な規則に従ってページ又はイメージを左から右に横切る元の文字のストローク作成の時間的な順序をシミュレートする。しかし、任意の他の軸及び1つの軸に沿った方向を、ストローク・クラスタ(SC)110におけるストローク記述子(SD)112の順序付けと、順序付きクラスタ・アレー(OCA)44におけるストローク・クラスタ(SC)110の順序付けとの両方に、与えられた文書又はイメージに対する好適な規則に応じて、用いることができる。
TOIP32のある構成においては、クラスタ順序プロセッサ(COP)134は、ストローク記述子(SD)112によって記述されるスケルタル・イメージ・アーク(SARC)42のx座標の範囲の平均を決定することによって、それぞれのストローク・クラスタ(SC)110の「重心」を決定し、ストローク記述子(SD)112からスケルタル・イメージ・アーク(SARC)42の終点ノード90のx座標を読み出すことによってそこに含まれるストランド済ストローク記述子(SSD)114を決定し、その中の終点ノード90のすべてから見いだされる最大及び最小のx座標値の平均を見つけることによって、ストランド済ストローク記述子(SSD)114を決定する。しかし、このアプローチでは、ストロークによっては、重心の正確な表現が得られない場合もある。その例として、文字B、D、Rなどのように右側に延長するループを有する文字があるが、これらでは、経路の実際の範囲と比較して、スケルタル・イメージ・アーク(SARC)42の経路の終点ノード90のx座標の間にはほとんど差がないからである。
この理由により、クラスタ順序プロセッサ(COP)134の別の好適な構成では、ストローク・クラスタ(SC)110に含まれるストローク記述子(SD)112とストランド済ストローク記述子(SSD)114とによって記述されるスケルタル・イメージ・アーク(SARC)42の経路の全体に沿ったピクセルのx及びy座標位置を読み出し、ストローク記述子(SD)112とストランド済ストローク記述子(SSD)114とによって記述されるピクセル経路の中で生じるx軸座標の最大及び最小の値を決定し、それによって、ストローク記述子(SD)112とストランド済ストローク記述子(SSD)114とによって記述される実際のストロークのx軸に沿った重心をより正確に決定する。
更に別の構成では、クラスタ順序プロセッサ(COP)134は、ストローク・クラスタ(SC)110の中のストローク記述子(SD)112及びストランド済ストローク記述子(SSD)114によって記述されるスケルタル・イメージ・アーク(SARC)42の経路に沿ったピクセルのそれぞれのx軸の値を集積して、その経路の重心を、集積されたx軸座標の平均として決定する。この例では、従って、特に、単一のストロークとして作成される文字Sのようなより複雑な経路を有するストロークに対しては、与えられたストローク・クラスタ(SC)110のストロークの重心の更により正確な決定を提供することができる。
既に述べたように、クラスタ順序プロセッサ(COP)134は、ストローク・クラスタ(SC)110を順序付きクラスタ・アレー(OCA)44の中に記憶し、それぞれのスケルタル・イメージ・ファイル(SIF)86に対しては、順序付きクラスタ・アレー(OCA)44が存在する。TOIP32は、次に、順序付きクラスタ・アレー(OCA)44をLLRP34に提供し、LLRP34は、後で述べるように、それぞれのストローク・クラスタに可能性のある意味を割り当てる。
D.低レベル認識プロセッサ(LLRP)34の説明(図29):
既に述べたように、LLRP34は、TOIP32と、EP24及びDT26とから接続されており、TOIP32からの走査文字イメージと、EP24及びDT26からのリアルタイムでの手書き文字入力との両方を受け取り、それらに可能性のある意味を割り当てる。ここで、TOIP32から受け取られる操作文字と記号データとは、EP24及びDT26から受け取られるサンプリングされたペン書きの座標をシミュレートする。走査された及びリアルタイムの文字及び記号入力に割り当てられた可能性のある意味は、次に、言語的ポスト・プロセッサ(LPP)36に与えられ、言語的ポスト・プロセッサ(LPP)36は、ストロークから文字ストリングを発生し、走査された及びリアルタイムのストロークを文字及び記号としての可能性のある意味の間で区別して選択し、それぞれの走査された又はリアルタイムの入力文字の最も可能性のある(蓋然性の高い)解釈を表す最終の出力を提供する。
上述のように、TOIP32は、走査された文字及び記号データを、順序付きクラスタ・アレー(OCA)44の形式で、LLRP34に提供するが、その中には、それぞれのスケルタル・イメージ・ファイル(SIF)86に対応する順序付きクラスタ・アレー(OCA)44が存在する。ストロークの中のそれぞれのクラスタに対応するストローク・クラスタ(SC)110を含むそれぞれの順序付きクラスタ・アレー(OCA)44は、対応するスケルタル・イメージ・ファイル(SIF)86において識別され、それぞれのストロークは、祖おなかにおいて表されているストロークを作成する際のペンの移動の想定された又は課された方向を表す対応するストローク記述子(SD)112又はストランド済ストローク記述子(SSD)114によって記述される。
既に述べたように、EP24及びDT26は、文字及び記号データを、タブレット文字(TABC)46の形式で、LLRP34に提供する。それぞれのタブレット文字(TABC)46は、タブレット文字(TABC)46を形成するラインに沿った点を定義しそれに対応するサンプリングされた座標(SCORD)48から成り、サンプリングされた座標(SCORD)48は、一般的には、TOIP32からのストローク記述子(SD)112又はストランド済ストローク記述子(SSD)114に対応する。
1.リアルタイムのEP24及びDT26からの入力の低レベル認識:
A.ストローク・プロセッサ(STKP)136及びリアルタイムの文字入力(図29、図30及び図31):
最初に、LLRP34によるEP24及びDT26からのリアルタイムの入力の処理について考える。LLRP34は、ストローク特徴プロセッサ(SEP)138とストローク認識プロセッサ(SRP)140とから構成されるストローク・プロセッサ(STKP)136を含む。ストローク特徴プロセッサ(SEP)138は、ストロークの認識の際に用いられる特徴を、EP24及びDT26からのストローク入力から抽出し、そのストロークの特徴の記述を構成する。ストローク認識プロセッサ(SRP)140が、次に、可能性のある意味を、ストロークの特徴の記述に基づいて、ストロークに割り当てる。
a.ストローク特徴プロセッサ(SEP)138(図30及び図31):
図31に示されているように、ストローク特徴プロセッサ(SEP)138は、EP24及びDT26から接続され、タブレット及びペンを介してのユーザ入力を検出して指示するペン入力ディテクタ(PID)142を含む。ここで、ユーザ入力は、ペン・ストロークとペン状態とを含む。入力ストローク・バッファ(ISB)144は、ペン入力ディテクタ(PID)142から接続されており、タブレット文字(TABC)46のサンプリングされた座標(SCORD)48を、ユーザによってストロークが入力される際に、記憶する。それぞれのサンプリングされた座標(SCORD)48は、ストロークがEP24及びDT26上に入力される際のペン・ストロークの連続的な座標位置を表すサンプリングされた座標の組から成る。次に、ポイント・バッファ(PBUF)146は、入力ストローク・バッファ(ISB)144から接続されており、ペン状態に応答して、それぞれの現在のストロークに関するサンプリングされた座標(SCORD)48のストローク記述子情報を、ポイント・バッファ(PBUF)146に転送してそこに記憶する。
ストローク特徴プロセッサ(SEP)138は、更に、ストローク特徴レコグナイザ(SFR)148を含む。ストローク特徴レコグナイザ(SFR)148は、入力ストローク・バッファ(ISB)144とポイント・バッファ(PBUF)146とから接続され、EP24のペン状態に応答して、現在のストロークのストローク記述子情報から、ストローク認識特徴を、現在のストローク新見を割り当てる目的で抽出する。図に示されているように、ストローク特徴レコグナイザ(SFR)148は、入力ストローク・バッファ(ISB)144から接続された動的ストローク特徴エクストラクタ(抽出手段)(DSFE)150と、ポイント・バッファ(PBUF)146から接続された静的ストローク特徴エクストラクタ(SSFE)152とを含む。
動的ストローク特徴エクストラクタ(DSFE)150は、ペンの下向きの状態(pen down state)などのEP24の状態に応答して、現在のストロークがユーザによってに入力される際に、現在のストロークのストローク記述子情報から、動的ストローク認識特徴(DSRF)154を抽出する。図30に示されているように、動的ストローク認識特徴(DSRF)154は、ユーザによるストロークのエントリの間に、すなわち、ストロークが完了する前に、抽出されうるストロークの記述的な特徴を含む。LLRP34のこの構成では、動的ストローク認識特徴(DSRF)154は、例えば、少なくとも、ラインの最初の点の座標と、ラインに沿った点のシーケンスであって、ラインの最後の点には至らないシーケンスと、入力方向ストリング(EDIRS)156とを含み、これらはすべて、対応する記述子(DESC)218に記憶される。ラインに沿った点の座標は、記述子(DESC)218の対応する点記述子(PDSC)158に記憶され、記述子(DESC)218の入力方向ストリング(EDIRS)156は、入力される際のラインのそれぞれの点に対するストローク方向エントリ(STDE)162を含む。それぞれのストローク方向エントリ(STDE)162は、その点におけるストロークのラインの運動(移動)方向を示す。それぞれの点におけるラインの運動方向は、その点におけるEP24の運動によって、例えば、EP24が前の点から次の点へ向かってその点を通過する際の、その点におけるEP24のxy位置座標の増分によって、決定する。動的ストローク特徴エクストラクタ(DSFE)150のこの構成では、EP24の運動方向は、左右上下の4つの方向に分けられ、EP24の位置のxy座標の最大の変化がx軸とy軸とのどちらに関して生じるか、そして、最大の変化がどの方向に生じるのか、すなわち、最大の変化がその軸に沿った+の方向と−の方向とのどちらに生じるのかによって決定される。動的ストローク特徴エクストラクタ(DSFE)150の別の構成では、運動方向は、文字及び記号の一貫し正確な識別のために必要な場合には、より高い解像度(分解能)に分解される。例えば、当業者であれば理解することであるが、EP24の運動方向は、左、左上、上、右上、右、右下、下、左下から成る8つの方向に、x及びy軸に沿ったEP24の位置の変化の大きさを知り、これらの大きさをこれらの方向を構成する90度及び45度に丸めて比を計算することによって、分解できる。
静的ストローク特徴エクストラクタ(SSFE)152は、ポイント・バッファ(PBUF)146から接続され、ペンの上向きの状態(pen up state)などのEP24の状態に応答して、現在のストロークが完了したときに現在のストロークの静的ストローク認識特徴(SSRF)164を抽出して、これらの特徴を、対応する記述子(DESC)218に書き込む。図30に示されているように、静的ストローク認識特徴(SSRF)164は、少なくとも、現在のストロークのラインに沿った最後の点の座標と、その現在のストロークのラインに沿った最後の点に対応するストローク方向エントリ(STDE)162とを含み、動的ストローク特徴エクストラクタ(DSFE)150によって抽出されたストローク認識特徴のすべてを含みうる。すなわち、動的ストローク認識特徴(DSRF)154は、静的ストローク認識特徴(SSRF)164の部分集合であり、静的ストローク特徴エクストラクタ(SSFE)152のある構成では、動的ストローク特徴エクストラクタ(DSFE)150によって実行されるストローク認識特徴の抽出のすべてを実行する。しかし、動的ストローク特徴エクストラクタ(DSFE)150は、LLRP34のこの好適実施例では、ストロークが完了するまで待つのではなく、ストロークが入力されつつある間にもストローク認識特徴の少なくともいくらかを抽出することを可能にすることによって、現在のストロークからストローク認識特徴を抽出するのに必要になる時間を削減するために、提供されている。
図31に示されているように、動的ストローク特徴エクストラクタ(DSFE)150と静的ストローク特徴エクストラクタ(SSFE)152とによって生成され、動的ストローク認識特徴(DSRF)154と静的ストローク認識特徴(SSRF)164とを含むストローク記述子(STKD)160は、ストローク認識特徴データ構造(SRFDS)166に記憶されている。
以下で説明するストローク認識ステップをたどる目的で、それぞれのストロークは、対応するセグメント記述子(SEGDE)168においてそれぞれが記述されている1又は複数のセグメントに分割される。ストロークのセグメントは、ここでは、本質的に直線状であるか又は比較的均一(even)な曲線であるストロークの一部分として定義される。すなわち、ストロークのセグメントは、そのストロークのラインの運動方向の変化を含まないストロークの部分である。ストロークのセグメントは、従って、方向の著しい又は急な変化を含まないストロークの部分であり、ストロークの端部又はストロークが著しい又は急な方向の変化を有する点のどちらかによって、一方又は両方の端部が境界付けられる。
この理由のために、ストローク特徴レコグナイザ(SFR)148は、更に、セグメント・アナライザ(SEGAZ)170を含み、ストローク認識特徴データ構造(SRFDS)166からストローク記述子(STKD)160を読み出し、それぞれのストロークのセグメントを識別し、対応するセグメント記述子(SEGD)を生成する。これらの動作は、方向アナライザ(DIRAZ)172と、セグメント・アナライザ(SEGAZ)170に含まれるセグメント・コンストラクタ(SEGCON)174とによって実行される。
方向アナライザ(DIRAZ)172は、現在のストロークの記述子(DESC)218を読み出し、ストロークのラインの運動方向の変化を識別する。ストロークのラインの運動方向の変化は、ストロークのラインに沿った3つの連続的な点の間にありこれらの点を接続するストロークのラインによって定義されるストロークのライン任意の2つの連続的なセクションの間の角度が所定の境界値を超えるときに、生じる。境界値は、3つの点の中の第1の点からその点でのペンの運動方向に延長する境界円錐線によって定義される境界円錐(boundary cone)によって定義され、従って、この境界値は、その点におけるペンの運動方向に沿った座標軸に直交する座標軸に沿った所定の変位によって定義される。
セグメント・コンストラクタ(SEGCON)174は、方向アナライザ(DIRAZ)172に応答して、ストロークのラインの方向変化が円錐境界値を超えるような任意の点において、ストロークのラインのそのような方向変化に追加的な点を挿入することによってストロークのラインを2つのセグメントに分割し、ストロークの新たに生成されたセグメントのそれぞれに対して対応するセグメント記述子(SEGDE)168を生成(ジェネレート、発生)する。この追加的な点は、ストロークのラインの方向変化の前のセグメントの端部に位置し、ストロークのラインの方向変化に続くセグメントの開始点として機能する。セグメント記述子(SEGDE)168は、対応して、少なくとも、セグメントの開始点とセグメントの終点との座標を含み、また、セグメントに沿った1又は複数の中間点の座標も含み得る。それによって、そのストロークの点記述子(PDSC)158の一部分を含み、セグメントの点に対応する入力方向ストリング(EDIRS)156の一部分を含む。従って、図30に示されているように、セグメント記述子(SEGDE)168は、本質的に記述子(DESC)218と同等であり、又は、逆に、記述子(DESC)218は、単一のセグメントから成るストロークに対しては、セグメント記述子(SEGDE)168である。
現在のストロークから抽出されたセグメント認識特徴は、ストローク認識特徴データ構造(SRFDS)166に記憶され、そこでは、既に述べたように、ストローク認識特徴は、以下で述べる後続のストローク及びセグメント認識処理のために、それぞれのセグメントを、様々な程度の階層的な近似を用いて記述している。
ストローク認識特徴データ構造(SRFDS)166に記憶されているストローク及びセグメント記述の階層的なレベルは、そのストローク又はセグメントのラインに沿った点に対してそれぞれの点のストロークのラインの運動方向を示す方向ストリングで始まり、更に、ストロークのライン又はストロークのセグメントのラインの少なくとも始点と終点との座標と、タブレットから入力座標として受け取ったストローク又はセグメントのラインに沿ったすべての点の座標のアレーとを含む。
B.ストローク認識プロセッサ(SRP)140、リアルタイム及び走査された文字入力:
図29、図31及び図32に示され、以下で説明するように、本発明によるシステムの2つの手書き文字認識経路、すなわち、第1の、EP24及びDT26とストローク特徴プロセッサ(SEP)138とから入力されるリアルタイムの文字がとる経路と、第2の、イメージ・スキャナ(IS)22、走査イメージ細字化プロセッサ(SITP)30、及び時間順序誘導プロセッサ(TOIP)32から入力される走査されたイメージがとる経路とは、ストローク認識プロセッサ(SRP)140において、収束(converge)する。従って、両方のソースからの手書きの文字及び記号は、同じ態様で、シーケンシャルに処理される。
図32に示されているように、ストローク認識プロセッサ(SRP)140は、ストローク表現ジェネレータ(SREPG)180、ストローク表現セレクタ(SREPS)182、ストローク・プロポーション・プロセッサ(SPP)184、及びクラスタ認識プロセッサ(CRP)186から構成される。
以下で説明するように、ストローク表現ジェネレータ(SREPG)180は、ストローク認識特徴データ構造(SRFDS)166のストローク記述子(STKD)160及びセグメント記述子(SEGDE)168からのストローク又はセグメントのそれぞれのリアルタイム入力の表現を生成し、他方で、ストローク表現セレクタ(SREPS)182は、ストローク表現ジェネレータ(SREPG)180からリアルタイムの文字表現を、SITP30及びTOIP32から走査された文字表現を受け取り、それぞれのストロークの最適な表現を選択する。ストローク・プロポーション・プロセッサ(SPP)184は、ストローク表現セレクタ(SREPS)182から接続されており、それぞれのストローク又はセグメントの選択された表現の可能な意味を識別する。クラスタ認識プロセッサ(CRP)186は、次に、文字及び記号又は文字及び記号の一部分を形成するクラスタとしてのストローク及びセグメントに、意味を割り当て、この情報を、言語的ポスト・プロセッサ(LPP)36に与える。
この点において、そして、以下で述べるように、LLRP34のこの好適な構成では、ストローク表現プロセッサ(SRP)176は、そして特に、ストローク・プロポーション・プロセッサ(SPP)184は、ストロークの複数の理想化された表現のただ1つのコピーを記憶しているが、他方で、ストローク表現ジェネレータ(SREPG)180及びTOIP32は、それぞれの現在のリアルタイム入力ストロークとそれぞれの走査された入力ストロークとの複数のバージョンを生成し、理想化された表現と比較して現在のリアルタイム入力ストロークの可能な意味を識別する。この方法は、それぞれの可能性のある入力ストローク又はセグメントの理想化された表現の複数のコピーを記憶して、それぞれの入力ストローク又はセグメントのただ1つのコピーを、それぞれの可能性のある入力ストローク又はセグメントの複数の理想化された表現と比較する場合よりも、必要になるメモリ及びデータ記憶装置のスペースが著しく少ないという理由で、選択されている。この方法は、また、必要とする処理資源(resources)が少ないので、入力ストロークのただ1つのコピーを用い、それぞれの可能性のある入力の複数の理想化されたコピーを、必要に応じて、すなわち、認識プロセスの間に生成する場合よりも、高速である。
C.ストローク表現ジェネレータ(SREPG)180:
ストローク表現ジェネレータ(SREPG)180は、それぞれのストローク又はセグメントに関するストローク記述子(STKD)160及びセグメント記述子(SEGDE)168の表現を、ストローク認識特徴データ構造(SRFDS)166から読み出し、対応するストローク及びセグメント特徴の記述から、それぞれの入力ストローク又はセグメントの複数の表現を生成するが、これは、それぞれのストロークに関する複数の縮尺済(scaled)トポロジカル表現(STOPREP)188を生成することによる。それぞれの縮尺済トポロジカル表現(STOPREP)188は、現在のストロークのストローク表現特徴から生成された現在のストロークに関する複数の連続的(progressively)に平滑化された表現の中の1つであり、それぞれの縮尺済トポロジカル表現(STOPREP)188は、ストローク又はセグメントを表す多数の点の先の縮尺済トポロジカル表現(STOPREP)188の還元又は組合せから、生成される。
第1の最も高い解像度の縮尺済トポロジカル表現(STOPREP)188は、例えば、対応する記述子(DESC)218又はセグメント記述子(SEGDE)168において元々表現されていたストローク又はセグメントの表現から構成されており、そのストローク又はセグメントを元々定義しているすべての点を表現する記述子(DESC)218の又はセグメント記述子(SEGDE)168の点記述子(PDSC)158と、そのストローク又はセグメントの方向ストリングから成る入力方向ストリング(EDIRS)156と、を含む。第2のより粗い縮尺済トポロジカル表現(STOPREP)188は、例えば、ストローク又はセグメントを表現する記述子(DESC)218又はセグメント記述子(SEGDE)168からの3つおき(every fourth)であるがそのストローク又はセグメントの最初と最後とを含む点を選択することによって、生成され、従って、対応して縮尺されたバージョンの点記述子(PDSC)158と入力方向ストリング(EDIRS)156とを含む。次に粗い縮尺済トポロジカル表現(STOPREP)188は、先の第2の縮尺済トポロジカル表現(STOPREP)188における3つおきの点を選択し、そして再び、その縮尺済トポロジカル表現(STOPREP)188の少なくとも最初と最後の点を用いることによって、その先の第2の縮尺済トポロジカル表現(STOPREP)188から生成され、従って、対応して縮尺されたバージョンの点記述子(PDSC)158と入力方向ストリング(EDIRS)156とを含む。
ストローク表現ジェネレータ(SREPG)180のこの構成によれば、それぞれ縮尺済トポロジカル表現(STOPREP)188a、188b、188cとして表される、3つの縮尺済トポロジカル表現(STOPREP)188が生成され、最も解像度の高い縮尺済トポロジカル表現(STOPREP)188aは、対応する記述子(DESC)218又はセグメント記述子(SEGDE)168において元々定義されているストローク又はセグメントのすべての点から構成されている。それに続くそれぞれの縮尺済トポロジカル表現(STOPREP)188は、表現されているストローク又はセグメントの、連続的に、より滑らか(平滑化された)で単純な表現になっており、それぞれの縮尺済トポロジカル表現(STOPREP)188は、連続的により少ない点によって表現され、ストローク又はセグメントの連続的により少ない詳細を含むようになっている。
D.ストローク表現セレクタ(SREPS)182、リアルタイム及び走査された文字入力を結合及び選択:
従って、明らかなのは、ストローク表現ジェネレータ(SREPG)180が実行する機能は、動作においては相違するが、走査イメージ細字化プロセッサ(SITP)30と類似している。SITP30に関して既に説明したように、SITP30は、走査された文字又は記号のそれぞれのストローク又はセグメントを1ピクセルの幅まで「細く」(細字化)して、その次に、302、150、75dpiなどの異なる解像度で、それぞれのストローク又はセグメントの複数の表現を生成する。SITP30によって与えられるストローク又はセグメントのそれぞれの解像度は、従って、ピクセルの数が連続的に少なくなり細かな詳細も連続的に減少する、そのストロークを表す連続的に「滑らか」なそして単純な表現を提供する。EP24及びDT26からのリアルタイムの入力はxy座標位置のシーケンスの形式であるから、ストローク表現ジェネレータ(SREPG)180が「細字化」動作を実行する必要はない。リアルタイムのストローク及びセグメントの入力は、LLRP34がEP24及びDT26から受け取る時点で、既に、1ピクセル幅のストローク及びセグメントの形式になっている。
更に、2つの経路からストローク表現セレクタ(SREPS)182に提供されるストローク及びセグメントの表現は、類似している。すぐ上で述べたように、ストローク表現ジェネレータ(SREPG)180は、リアルタイム入力のそれぞれのストローク又はセグメントの表現を生成するが、それぞれのストローク又はセグメント対応する記述子(DESC)218又はセグメント記述子(SEGDE)168によって表現される。それぞれの記述子(DESC)218及びセグメント記述子(SEGDE)168は、ストローク又はセグメントのラインに沿った点に対してそれぞれの点におけるストロークのラインの運動方向を示す入力方向ストリング(EDIRS)156と、ストローク又はそのセグメントのラインの少なくとも始点と終点の座標とそのストローク又はセグメントのラインに沿った点の座標のアレーとを有する点記述子(PDSC)158と、から構成される。
比較してみると、既に論じたように、TOIP32は、順序付きクラスタ・アレー(OCA)44の形式で、走査された文字表現をLLRP34に提供するが、それぞれのスケルタル・イメージ・ファイル(SIF)86に対しては、対応する順序付きクラスタ・アレー(OCA)44が1つ存在する。それぞれの順序付きクラスタ・アレー(OCA)44は、スケルタル・イメージ・ファイル(SIF)86において識別されるそれぞれのクラスタに対して対応するストローク・クラスタ(SC)110を含む。そこでは、それぞれのストロークは、そのストロークに沿った点を定義しそれに対応する座標から成る順序付きのアレーとして、ストランド済ストローク記述子(SSD)114の対応するストローク記述子(SD)112によって記述される。また、増加ステップのリンク・リスト(LLIS)98と、そのストロークを作成する際のペンの動きの課された方向を表す対応する誘導された方向ストリング(IDIRS)120とによって、記述される。
ストローク表現セレクタ(SREPS)182は、EP24及びDT26からのリアルタイムの文字及び記号のストローク及びセグメント入力と、TOIP32からの順序付きクラスタ・アレー(OCA)44との縮尺済トポロジカル表現(STOPREP)188を調べて、ストロークの縮尺されたトポロジカルな表現を選択し、そのストローク又はセグメントの最適な表現を提供する。ただし、最適な表現とは、「最大のSN比」を与えるものとして、定義される。ここでのストローク又はセグメント認識の目的のためには、「最大のSN比」を与える表現は、そのストローク又はセグメントの点の位置を含むxy座標平面の最大の面積を占める表現として、定義される。従って、選択された表現では、白い背景の空間と黒い線の点とによって占められるピクセル又は点は、主要でなく(minor)無関係の(extraneous)ピクセルによって占められるピクセル又は点の数に対して、最大化されており、それぞれの曲線状のストローク又はセグメントの曲率の見かけの鋭さは、その曲線はストローク又はセグメントの表現における長い空間を占めるので、減少されている。
E.ストローク・プロポーション・プロセッサ(SPP)184:
既に述べたように、ストローク・プロポーション・プロセッサ(SPP)184は、ストローク表現セレクタ(SREPS)182から接続されており、理想プロトタイプ表現データ構造(IPRDS)190、ストローク境界ディスクリミネータ(SBD)192、及びストローク・プロポーション・ディスクリミネータ(SPD)194を含み、これらは、それぞれのストローク又はセグメントの選択された表現の、文字又は記号の要素としての、可能性のある意味を識別するように動作する。
理想プロトタイプ表現データ構造(IPRDS)190は、それぞれの可能なストローク又はストローク・セグメントの文字又は記号の要素としての可能性のある意味に対応する理想プロトタイプ表現(IPR)196の組を記憶する。ストローク・プロポーション・プロセッサ(SPP)184のこの構成においては、理想プロトタイプ表現データ構造(IPRDS)190は、Bツリー(木)型のデータベース構造として実現されており、ツリーのノード及びリーフ(leaf)は、そのストローク又はセグメントの、ストローク記述子(STKD)160/セグメント記述子(SEGDE)168の入力方向ストリング(EDIRS)156と、ストローク記述子(SD)112/ストランド済ストローク記述子(SSD)114の誘導された方向ストリング(IDIRS)120とによって、インデクスされている。図33に概括的に図解されているように、現在のストローク又はセグメントにおそらく一致する理想のプロトタイプ表現にそれぞれが対応する理想プロトタイプ表現(IPR)196を含む理想プロトタイプ表現データ構造(IPRDS)190のエントリであるツリーのノード及びリーフは、境界記述子(BND)198と、対応するストローク意味(STKM)200とを含む。それぞれのストローク意味(STKM)200は、1又は複数の文字又は記号を含み、そのそれぞれは、図32では、対応するストローク又はセグメントがその要素であり得る、文字(CHAR)202として示されている。
それぞれの境界記述子(BND)198は、ストロークの理想のプロトタイプ表現の1又は複数の特徴から成る1又は複数の線形結合(linear combination)を、その理想のプロトタイプ・ストロークのラインに沿った座標の組として定義する。ここで、特徴のそれぞれの線形結合は、ストローク又はセグメントの理想化され抽象化された表現である。それぞれの境界記述子(BND)198は、これによって、それぞれの理想化されたプロトタイプ・ストローク又はセグメントに対する「境界」(boundary)の組を識別する。ただし、境界とは、ストローク又はセグメントの理想化された表現の座標によって表され、そのプロトタイプ・ストローク又はセグメントの、相対的な向き(オリエンテーション)、長さ、及び曲率の次元又は方向を定義する、ストローク又はセグメントの特性の組である。プロトタイプ・ストローク又はセグメントの表現、すなわち、そのストローク及びセグメントのラインを記述する座標群は、均一の縮尺及び座標系として構成される。例えば、文字L、R、B、l、r、bの縦方向のストローク及びループの表現は、すべて、相互に比例させたサイズになっている。また、それぞれのプロトタイプ・ストローク又はセグメントのラインに沿った位置を記述する座標は、そのストローク又はセグメントの端部(end)などのストローク又はセグメントの局所的な原点を定め、そのストローク又はセグメントに沿ったそれ以外の点の座標は、局所的な原点との関係によって決定されるようにする点で、抽象化されている。
ストローク境界ディスクリミネータ(SBD)192は、現在のストロークの縮尺されたトポロジカルな表現に応答する、すなわち、ストローク表現セレクタ(SREPS)182から受け取られる、記述子(DESC)218、セグメント記述子(SEGDE)168、ストローク記述子(SD)112又はストランド済ストローク記述子(SSD)114に応答して、そこに含まれている入力方向ストリング(EDIRS)156又は誘導された方向ストリング(IDIRS)120を用いて、理想プロトタイプ表現データ構造(IPRDS)190をインデクス化し、その現在のストローク又はセグメントの入力方向ストリング(EDIRS)156の全体又は一部分に対応する可能な一致(PMATCH)206の可能なストローク一致リスト(PML)204を構成する。ここで、それぞれの可能な一致(PMATCH)206は、それらの対応する文字(CHAR)202と共に、境界記述子(BND)198とストローク意味(STKM)200とを含む。
この点で、ストローク・プロポーション・プロセッサ(SPP)184のこの好適な構成は、更に逆プロトタイプ・ジェネレータ(RPG)208を含む。この逆プロトタイプ・ジェネレータ(RPG)208は、それぞれの理想プロトタイプ表現(IPR)196からそれに対する、対応する逆向きのストリングを有する逆理想プロトタイプ表現(IPR)210を生成し、それによって、ストローク表現セレクタ(SREPS)182から受け取られたストローク又はセグメントの入力方向ストリング(EDIRS)156又は誘導された方向ストリング(IDIRS)120が、理想プロトタイプ表現データ構造(IPRDS)190の中の可能な一致エントリの順方向及び逆方向ストリングの両方と比較される。
ストローク境界ディスクリミネータ(SBD)192は、次に、それぞれの現在のストローク又はセグメントのトポロジカルな表現を、すなわち、それぞれの現在のストローク又はセグメントの方向ストリングとラインの点座標とを、可能なストローク一致リスト(PML)204の中の可能な一致(PMATCH)206の理想的なプロトタイプ表現の境界と比較して、現在のストローク又はセグメントと、可能な一致(PMATCH)206の理想的なプロトタイプ表現との間の一致の程度を決定する。
この比較のプロセスは、複数の方法での実現が可能である。例えば、ストローク境界ディスクリミネータ(SBD)192は、現在のストローク又はセグメントのトポロジカルな表現を、すなわち、その現在のストローク又はセグメントの方向ストリングとラインの点座標の組とを、その中では理想的なプロトタイプ表現が構成される縮尺及び座標系に、縮尺する(スケールを与える)。この構成では、ストローク境界ディスクリミネータ(SBD)192は、現在のストローク又はセグメントのトポロジカルな表現の原点を、プロトタイプ表現の原点に最も近接して一致するように選択し、現在のストローク又はセグメントとプロトタイプとのトポロジカルな表現の点座標の、最大及び最小のx及びy座標のずれの間の比を決定する。
次に、ストローク境界ディスクリミネータ(SBD)192は、トポロジカルな表現の座標を選択された原点を中心とする座標系に変換し、その原点に対するトポロジカルな表現の座標を決定する。ただし、これは、現在のストローク又はセグメントとプロトタイプとのトポロジカルな表現の点座標の、最大及び最小のx及びy座標のずれ(deviation)の間の比に比例するように縮尺されている。ストローク境界ディスクリミネータ(SBD)192は、また、トポロジカルな表現の入力方向ストリング(EDIRS)156を同じ態様で縮尺し、入力方向ストリング(EDIRS)156の中にステップを挿入することによって、プロトタイプの方向ストリングに最も近接し比例的な一致を達成できる。
ストローク境界ディスクリミネータ(SBD)192は、次に、縮尺されたトポロジカルな表現と可能な一致(PMATCH)206とを比較して、表現の間の一致の程度を決定する。一致の程度は、可能なストローク一致リスト(PML)204の中のそれぞれの可能な一致(PMATCH)206に対して、縮尺されたトポロジカルな表現のそれぞれの座標点とそれぞれのプロトタイプ表現の最も近接して一致する座標点との間の座標のずれすなわち差を決定し、2つのストリングの中の一致するステップの数を比較することによって、決定される。一致の程度は、従って、可能なストローク一致リスト(PML)204の中の可能な一致(PMATCH)206において表現されているそれぞれの理想化されたプロトタイプに対して、可能なストローク一致リスト(PML)204の中の与えられたプロトタイプが現在のストローク又はセグメントと一致する、すなわち、現在のストローク又はセグメントがそのプロトタイプに関連する意味を有する蓋然性(確率)(probability)を表している。
別の実施例では、ストローク境界ディスクリミネータ(SBD)192は、トポロジカルな表現の(複数の)端点を識別し、プロトタイプ表現の原点に最も近接して一致する(最良の一致を有する)トポロジカルな表現の端点を1つをそのトポロジカルな表現の原点として選択し、x及びy座標のずれが最大であるトポロジカル及びプロトタイプ表現の点を識別することによって、プロポーショナルな比較を行い得る。ストローク境界ディスクリミネータ(SBD)192は、次に、トポロジカルな表現のこれらの点の座標を縮尺(スケーリング)して、その中で理想のプロトタイプ表現が構成される縮尺及び座標系を作る。ストローク境界ディスクリミネータ(SBD)192は、次に、現在のストローク又はセグメントのトポロジカルな表現と、可能なストローク一致リスト(PML)204において表現されている理想化されたそれぞれのプロトタイプとの相対的な比率(プロポーション)を決定する。トポロジカルな表現と、可能なストローク一致リスト(PML)204において表現されている理想化されたそれぞれのプロトタイプとの相対的な比率は、トポロジカルな表現とそれぞれのプロトタイプ表現との識別された点のx及びyの範囲の間の関係(proportionality)又は比を決定することによって見つけられる。ここで、x及びyの範囲は、これらの表現の全体的な長さ及び曲率(curvature)を表す座標系を定義する。可能なストローク一致リスト(PML)204において表現されたそれぞれのプロトタイプ表現に対するこのようにして決定された関係は、現在のストローク又はセグメントのトポロジカルな表現と可能なストローク一致リスト(PML)204において表現されたそれぞれのプロトタイプ表現との間の一致の程度に関する1つの尺度を与える。ストローク境界ディスクリミネータ(SBD)192は、また、トポロジカルな表現と可能なストローク一致リスト(PML)204において表現されたそれぞれのプロトタイプ表現との方向ストリングを比較し、それによって、現在のストローク又はセグメントのトポロジカルな表現と可能なストローク一致リスト(PML)204において表現されたそれぞれのプロトタイプ表現との間の一致の程度に関する別の尺度を与える。
関係又は関係と方向ストリングの比較との組合せは、次に、可能なストローク一致リスト(PML)204において表現されたそれぞれのプロトタイプ表現に対して、可能なストローク一致リスト(PML)204における与えられたプロトタイプが現在のストローク又はセグメントと一致することの、すなわち、現在のストローク又はセグメントがそのプロトタイプと関連する意味を有することの、一致確率(Match Probability)(MATCHP)210を決定するのに用いられ得る。ストローク境界ディスクリミネータ(SBD)192は、次に、それぞれの一致確率(MATCHP)210を、可能なストローク一致リスト(PML)204の中の対応する可能な一致(PMATCH)206に書き込む。
ストローク・プロポーション・ディスクリミネータ(SPD)194は、次に、可能なストローク一致リスト(PML)204から、可能な一致(PMATCH)206を読み出し、それぞれの現在のストローク又はセグメントに対して決定された一致確率(MATCHP)210から、現在のストローク又はセグメントに最も近接して一致する1又は複数の理想のプロトタイプを決定し、現在のストロークに対して、その現在のストロークの縮尺されたトポロジカルな表現に一致する境界を有する理想的なプロトタイプ表現を割り当てる。一致する理想的なプロトタイプ表現の割り当てられた識別は、現在のストロークに割り当てられたストロークの意味を表している。
次に、ストローク・プロポーション・ディスクリミネータ(SPD)194は、現在のストローク又はセグメントに最も近接して一致するものとして選択された可能な一致(PMATCH)206のそれぞれに対して、ストローク識別子エントリ(SIE)214を含むストローク識別子データ構造(SIDS)212を構成する。ストローク識別子エントリ(SIE)214は、ストローク識別子(STID)216によって識別され、対応するストローク又はセグメントの記述子(DESC)218、セグメント記述子(SEGDE)168、ストローク記述子(SD)112又はストランド済ストローク記述子(SSD)114、それぞれがストローク意味(STKM)200とその文字(CHAR)202とを含む1又は複数のストローク識別(SIDNT)220、及び、対応する現在のストローク又はセグメントに最も近接して一致するストローク意味の一致確率(MATCHP)210を含む。それぞれの現在のストローク又はセグメントのストローク識別子(STID)216は、クラスタ認識プロセッサ(CRP)186に送られる。
クラスタ認識プロセッサ(CRP)186に関する議論に進む前に、次のことを注意しておく。すなわち、既に述べたことだが、ストローク表現セレクタ(SREPS)182は、文字又は記号の要素としてのストローク又はセグメントの可能な意味を識別するために、ストローク・プロポーション・プロセッサ(SPP)184に送られるべきそれぞれの現在のストローク又はセグメントの1つの最適な表現を選択する。しかし、定義の及び書かれている明瞭度が低い文字を扱うような他のアプリケーションでは、ストローク表現セレクタ(SREPS)182は、現在のストローク又はセグメントの縮尺済トポロジカル表現(STOPREP)188のそれぞれを、ストローク・プロポーション・プロセッサ(SPP)184に送り、ストローク・プロポーション・プロセッサ(SPP)184が、現在のストローク又はセグメントの複数の縮尺表現のそれぞれに上述の意味識別動作を実行して、現在のストローク又はセグメントの可能な意味と、最適な識別結果を与える縮尺済トポロジカル表現(STOPREP)188の縮尺とを決定する。このようにして、縮尺済トポロジカル表現(STOPREP)188の最適な縮尺は、現在のストローク又はセグメントと理想的なプロトタイプ表現との間の最も可能性のある一致を最も少なく与える特定の縮尺として決定される。最初の現在のストローク又はセグメント又はそのサンプルの組に対する縮尺済トポロジカル表現(STOPREP)188の最適な縮尺を識別したので、ストローク・プロポーション・プロセッサ(SPP)184は、ストローク表現セレクタ(SREPS)182に対する最適の縮尺を識別し、ストローク表現セレクタ(SREPS)182は、その後で、その縮尺における縮尺済トポロジカル表現(STOPREP)188を、ストローク・プロポーション・プロセッサ(SPP)184に送る。
2.クラスタ認識プロセッサ(CRP)186(図34):
既に述べたように、ストローク・プロポーション・プロセッサ(SPP)184は、それぞれの現在のストローク又はセグメントのストローク識別子(STID)216を、クラスタ認識プロセッサ(CRP)186に送る。ストローク識別子(STID)216は、その入力(エントリ)の時間的な順序で、クラスタ認識プロセッサ(CRP)186に送られるが、ここで、上述のように、それぞれの現在のストロークの入力の時間的順序は、EP24及びDT26を介するストローク作成のリアルタイムの順序であり、又は、作成の誘導された時間的順序である。
図34に示されているように、クラスタ認識プロセッサ(CRP)186は、(1)ストロークを時間的及び空間的シーケンスに順序付けし、ストローク又はセグメントの意味あるクラスタを、すなわち、可能な文字又は記号又はその組合せとして形成するクラスタ認識子(CLREC)222と、(2)意味を文字又は記号としてのストロークのクラスタに割り当てる位置ディスクリミネータ(POSDIS)224と、を含む。
クラスタ認識子(CLREC)222は、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228、第2の前ストローク・バッファ(SPSB)230、及びストローク・バッファ・コントローラ(SBC)232を含む。現在ストローク・バッファ(CSB)226は、ストローク・プロポーション・プロセッサ(SPP)184から接続されており、ストロークの現在クラスタ(CC)234のストローク識別子(STID)216を受け取って、ストローク・プロポーション・プロセッサ(SPP)184から受け取った順序で記憶する。現在クラスタ(CC)234において表現されているストロークの数は、少なくとも、1つのストローク又はセグメントを含むと予想されるストロークの最大の数を含むのに十分である。第1の前ストローク・バッファ(FPSB)228は、ストロークの直前クラスタ(IPC)236のストローク識別子(STID)216を記憶する。直前クラスタ(IPC)236とは、現在ストローク・バッファ(CSB)226において表現されたストロークの直前にあり、ストロークの現在クラスタ(CC)234の文字又は記号を実際に又は潜在的に含むものとして識別されたストロークのクラスタ群であり、文字又は記号を実際に又は潜在的に含むものとして識別された1又は複数のストロークのクラスタを含む。第2の前ストローク・バッファ(SPSB)230は、ストロークの先行クラスタ(PPC)238のストローク識別子(STID)216を記憶する。先行クラスタ(PPC)238とは、第1の前ストローク・バッファ(FPSB)228において表現されたストロークの直前にあり、ストロークの現在クラスタ(CC)234の文字又は記号を実際に又は潜在的に含むものとして識別されたストロークのクラスタ群である。
ストローク・バッファ・コントローラ(SBC)232は、ストローク・プロポーション・プロセッサ(SPP)184から接続されており、ストローク・プロポーション・プロセッサ(SPP)184から受け取ったそれぞれのストローク識別子(STID)216に応答して、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228及び第2の前ストローク・バッファ(SPSB)230の間の現在の及び以前のストロークのストローク識別子(STID)216を順序付け、組織化する。ストローク・バッファ・コントローラ(SBC)232は、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228及び第2の前ストローク・バッファ(SPSB)230におけるストローク識別子(STID)216を、ストロークがストローク・プロポーション・プロセッサ(SPP)184から受け取られる順序に従って順序付ける。また、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228及び第2の前ストローク・バッファ(SPSB)230の間では、文字又は記号を実際に及び潜在的に含むクラスタにおけるストロークの潜在的な構成要素(membership)に従う。
ストローク・バッファ・コントローラ(SBC)232は、また、影響リスト(INFL)240を構成し、そこでは、現在クラスタ(CC)234は、その空間的な座標及び範囲に従って、例えば、ページのx軸すなわち水平方向軸に沿って左から右へ順序付けられる。ストローク・バッファ・コントローラ(SBC)232は、これにより、ストローク・プロポーション・プロセッサ(SPP)184から受け取られたストロークを、時間的及び空間的関係において、順序付けるように動作する。
ストローク・プロポーション・プロセッサ(SPP)184からそれぞれの新たなストローク識別子(STID)216を受け取ると直ちに、ストローク・バッファ・コントローラ(SBC)232は、ストローク識別子データ構造(SIDS)212における対応するストローク識別子エントリ(SIE)214から記述子(DESC)218を読み出し、ストロークに対する対応する影響エリア(AINF)242を決定し、影響リスト(INFL)240の中に対応する影響リスト・エントリ(INFE)244を構成する。一般に、あるストロークの影響エリア(AINF)242は、そのストロークの範囲、すなわち、ストローク又はセグメントに沿った点の最大及び最小のx及びy座標を包囲するフレームを定義する4つの座標点であって、複数の端点とそれらの端点を接続する直線からの最大のx又はyのずれを有する中間点とを含むもの、を決定することによって、定められる。
ストローク・バッファ・コントローラ(SBC)232は、影響リスト(INFL)240における影響リスト・エントリ(INFE)244を、影響リスト・エントリ(INFE)244によって表されるストローク又はセグメントの範囲の空間的な関係に従って、順序付ける。これは、例えば、x軸に沿って、そのストローク又はセグメントの範囲の最も左側の点の位置を増加させることによる。それぞれの影響リスト・エントリ(INFE)244は、そのストロークのストローク識別子(STID)216、ストローク識別(SIDNT)220、及び影響エリア(AINF)242を含む。以下で説明するが、影響エリア(AINF)242は、あるストロークが、そのx/y座標とその範囲とによって、実際に又は潜在的に文字又は記号のストローク又はセグメントを含むような態様で、他のストロークに空間的に関連しているかどうかを決定するのに用いられる。
ストローク・バッファ・コントローラ(SBC)232は、それぞれの新たな現在のストロークの影響エリア(AINF)242を、現在ストローク・バッファ(CSB)226の中に存在するストローク識別子(STID)216を有する先に受け取られたストロークの影響エリア(AINF)242との関係で、調べる。現在のストロークの影響エリア(AINF)242が、その現在のストロークは潜在的に現在クラスタ(CC)234の構成要素であることを示すときには、ストローク・バッファ・コントローラ(SBC)232は、現在のストロークのストローク識別子(STID)216を現在ストローク・バッファ(CSB)226の中に書き込む。現在のストロークの影響エリア(AINF)242が、その現在のストロークはおそらく現在クラスタ(CC)234の構成要素ではないことを示すときには、ストローク・バッファ・コントローラ(SBC)232は、現在ストローク・バッファ(CSB)226の中に存在する先のストローク識別子(STID)216を第1の前ストローク・バッファ(FPSB)228の中へ転送し、第1の前ストローク・バッファ(FPSB)228の中に存在するストローク識別子(STID)216を第2の前ストローク・バッファ(SPSB)230の中に転送し、現在のストロークのストローク識別子(STID)216を現在ストローク・バッファ(CSB)226に書き込んで、新たな現在クラスタ(CC)234を開始する。
位置ディスクリミネータ(POSDIS)224は、影響リスト(INFL)240を走査し読み出すことを他の機能に加えて実行するストローク・バッファ・スキャナ(SBSC)246を含む。ストローク・バッファ・コントローラ(SBC)232は、ストローク・バッファ・スキャナ(SBSC)246からの指示であって、現在のストロークは時間的に先行するストロークの間に空間的に位置する空間的な座標又は範囲を有しているという指示に応答して、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228及び第2の前ストローク・バッファ(SPSB)230におけるストローク識別子(STID)216を、現在のストロークの空間的座標又は範囲に従って、再度順序付け、それによって、バッファにおけるストロークの時間的な関係をその空間的な関係に従って再度順序付ける。
ストローク・バッファ・コントローラ(SBC)232は、2つのストロークを、それらのストロークの範囲が重なる又は相互の与えられた関係距離以内にあるときには、潜在的な構成要素(member)として識別する。この点で、一般に、ストローク・バッファ・コントローラ(SBC)232が、同じ近傍の中にある、すなわち、相互に、限定されたx/y座標の範囲内にあるストロークだけを考慮することが必要である。例えば、ストローク・バッファ・コントローラ(SBC)232は、現在のストロークの両方の側の2又は4のストロークを考慮すれば、現在のストロークがこれらのストロークを伴うクラスタの構成要素であるかどうかを判断するには十分である。また、第1のストロークを、第2のストロークを伴うクラスタの構成要素であると識別することは、同時に、第2のストロークを、第1のストロークを伴うクラスタの構成要素であると識別することであり、従って、ストロークのそれぞれの対のそれぞれのストロークに対しては、クラスタ識別プロセスを反復する必要はない。
ストローク・バッファ・コントローラ(SBC)232は、現に考慮しているストロークのx及びyの範囲と影響リスト(INFL)240における位置によって示されるのと同じ近傍におけるそれぞれのストロークとを比較してそれらの範囲が重なるかどうかを判断することによって、ストロークの間の重なりを決定する。例えば、現に考慮しているストロークとその右側に位置する第2のストロークとの重なりは、現に考慮しているストロークの最も右の範囲が第2のストロークの最も左の範囲の右側に延長している場合には、重なりがあるものと判断される。
重複(重なり)比較プロセスは、一般的には、ストローク又はセグメントの範囲のx座標を調べて比較することによって、ストロークのただ1つの座標の次元に沿って実行することで十分である。その理由は、ほとんどの手書きの文字及び記号は、ページの水平方向の軸であるx軸に沿った方向に向けられており、ストロークの順序及び関係が混乱しないからである。しかし、他の構成では、この比較は、ストロークのx及びyの両方の軸に沿って同じ原理に従って実行することもできる。二次元的な比較へのプロセスの拡張は、当業者には明らかである。
クラスタの1又は複数の別のストロークと重複する範囲を有しないストロークが、その別のストロークと同じ文字又は記号の一部である蓋然性が大きいとして、そのクラスタに含まれることも、現に考慮しているストロークの範囲がその別のストロークの範囲と「重複している」と定義できるほどに近接している場合には、可能である。このような例としては、文字Rがあり、この文字では、右側に延長する上側のループと右側に延長する右下のラインとの範囲は、文字の縦方向のラインとは重ならない場合があるが、これらの2つのストロークは、実際には、この文字の部分を構成している。
ストローク・バッファ・コントローラ(SBC)232は、ストロークの範囲が特定された影響距離だけ分離しているときには、そのような重ならないストロークを、1つのクラスタに含める。この影響距離は、特定のピクセルの数やx及び/又はy座標に沿った距離によって任意に定義することができるし、また、動的(dynamically)に決定することもできる。後者の場合には、ストローク・バッファ・コントローラ(SBC)232は、例えば、この影響距離を、範囲の平均として、ストロークの重心の座標からの平均の離間に比例させて、又は、範囲に比例させて、決定できる。そうすることにより、影響距離は、比較的大きな範囲のストローク又はセグメント、すなわち、大きな文字に対しては大きくなり、小さな範囲を有するストローク又はセグメント、すなわち、小さな文字に対しては、小さくなる。
位置ディスクリミネータ(POSDIS)224は、上述のように、文字又は記号としてのストロークのクラスタに意味を割り当てる。位置ディスクリミネータ(POSDIS)224のストローク・バッファ・スキャナ(SBSC)246は、影響リスト(INFL)240を走査して、その中に存在するストローク識別子(STID)216のウィンドウ部分集合(サブセット)(WINSET)248を、ウィンドウ・バッファ(WINBUF)250の中に書き込む。ストローク識別子(STID)216それぞれの現在のウィンドウ部分集合(WINSET)248は、例えば、水平方向のx軸に関して左から右の対応するストロークの空間的な順序で書き込まれ、従って、ページ上に文字又は記号が形成される差異のストロークの順序を反映する。ストローク・バッファ・スキャナ(SBSC)246は、ウィンドウ・バッファ(WINBUF)250において表現されるストロークを、その空間的な関係に従って、文字又は記号としての可能性のある意味を有するストロークのクラスタを有するものとして選択する。
この点では、ストローク・バッファ・スキャナ(SBSC)246は、現在ストローク・バッファ(CSB)226ではなく影響リスト(INFL)240を走査して、ストロークの意味のあるクラスタを識別することに注意すべきである。その理由は、これによって、文字認識動作をストローク順序付け動作から切り離すことができるからである。これによって、文字認識を新たなストロークの入力とは独立に、従って、新たなストロークの入力からの干渉を受けずに実行することが可能になり、また、新たなストロークが、先のストロークの位置とは無関係に、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228、第2の前ストローク・バッファ(SPSB)230、及び影響リスト(INFL)240の中に順序付けることが可能になる。
位置ディスクリミネータ(POSDIS)224は、更に、ウィンドウ・バッファ(WINBUF)250とストローク識別子データ構造(SIDS)212とから接続され、ウィンドウ・バッファ(WINBUF)250からストローク識別子(STID)216の組合せを読み出す、位置ディスクリミネータ・プロセッサ(PDISP)252を含む。ストローク識別子(STID)216のそれぞれの組合せは、文字又は記号を潜在的に形成するストロークから成る潜在的文字クラスタ(POTCC)254と、ストローク識別子データ構造(SIDS)212からの対応するストローク識別子エントリ(SIE)214とを含む。
既に述べたように、ストローク識別子データ構造(SIDS)212から読み出された対応するストローク識別子エントリ(SIE)214は、ストローク識別子(STID)216、記述子(DESC)218、及び、そのストローク識別子(STID)216が潜在的文字クラスタ(POTCC)254の中に存在するストロークのストローク識別(SIDNT)220から構成される。位置ディスクリミネータ・プロセッサ(PDISP)252は、ストロークのそれぞれの選択された組合せの記述子(DESC)218の組合せを用いて、文字識別子データ構造(CIDS)256をインデクスする、又は、これにアクセスする。文字識別子データ構造(CIDS)256は、Bツリー型のデータベース構造から成り、このデータベースは、そのノード及びリーフにおいて、記述子(DESC)218の組合せに対応する文字識別エントリ(CIE)258を含む。それぞれの文字識別エントリ(CIE)258は、記述子(DESC)218の可能な組合せの中の1つに対応する文字又は記号の1又は複数の文字識別(CHID)260と、対応する記述子(DESC)218とを含み、記述子(DESC)218の組合せを用いてアクセスされると、1又は複数の一致が見つかると、1又は複数の対応する文字識別エントリ(CIE)258を与える。
位置ディスクリミネータ・プロセッサ(PDISP)252は、ストローク識別子データ構造(SIDS)212から読み出されウィンドウ・バッファ(WINBUF)250からのストロークの選択された組合せに対応する記述子(DESC)218と、文字識別子データ構造(CIDS)256から読み出された文字識別エントリ(CIE)258の記述子(DESC)218とを比較して、ウィンドウ・バッファ(WINBUF)250において表現されたストロークの組合せと文字識別エントリ(CIE)258によって表現されたストロークの組合せとの間の一致の程度を決定する。一致の程度は、例えば、ストロークの相対的な位置と範囲とを含む複数のファクタの組合せを比較することによって決定される。ストローク識別子エントリ(SIE)214から読み出されたストローク識別(SIDNT)220が、本発明の特定の構成においては、比較動作において用いられることがあることに注意すべきである。
位置ディスクリミネータ・プロセッサ(PDISP)252は、ウィンドウ・バッファ(WINBUF)250において表現されるストロークのそれぞれの組合せに対する、アクセス及び比較一致動作を実行し、ウィンドウ・バッファ(WINBUF)250において表現されたストロークの組合せと文字識別子データ構造(CIDS)256の中の対応する文字識別との間の最良の1又は複数の一致を決定する。最良の1又は複数の一致を有するストロークの組合せを識別すると直ちに、位置ディスクリミネータ・プロセッサ(PDISP)252は、対応する文字リスト(CLST)262を生成し、この文字リスト(CLST)262を、シーケンシャル文字アレー(SCA)264の中に、その文字を含むストロークのクラスタが影響リスト(INFL)240において生じるシーケンスに対応する空間的なシーケンスで、書き込む。それぞれの文字リスト(CLST)262は、関連する信頼性レベル(CNL)266を伴う少なくとも1つの文字識別(CHID)260から構成される。それぞれの文字識別(CHID)260は、ストロークの対応するクラスタとの著しい程度の一致と、関連する信頼性レベル(CNL)266とを有する文字を識別する。信頼性レベル(CNL)266は、位置ディスクリミネータ・プロセッサ(PDISP)252によって比較動作において決定され、対応する文字がストロークのクラスタと一致する信頼性のレベル、すなわち、一致の程度を示す。与えられた文字リスト(CLST)262は、関連した信頼性レベル(CNL)266を伴う複数の文字識別(CHID)260を含むことがあるが、含まれる文字識別(CHID)260は、少なくとも、最も高い一致の程度を有する文字と、その最も高い一致の程度を有する文字と比較してやはり著しい一致の程度を有する任意の他の文字と、から構成される。ストローク・クラスタの中には、どれも高い一致の程度は有してはいないが複数の一致する文字を有するものもあり、この場合は、文字リスト(CLST)262は、比較的一致の程度の低い、すなわち、比較的信頼性レベルの低い対応する文字を複数含む。
位置ディスクリミネータ・プロセッサ(PDISP)252は、次に、ストロークの識別された組合せの中のストロークのストローク識別子(STID)216をストローク・バッファ・コントローラ(SBC)232に提供し、ウィンドウ・バッファ(WINBUF)250からストローク識別子(STID)216を除去し、そして、再び影響リスト(INFL)240を走査して、ウィンドウ・バッファ(WINBUF)250の中にストロークの新たな組を構成する。ストローク・バッファ・コントローラ(SBC)232は、位置ディスクリミネータ・プロセッサ(PDISP)252によってある文字に対応するものとして識別されたストローク識別子(STID)216に、ストローク識別子(STID)216を、現在ストローク・バッファ(CSB)226から第1の前ストローク・バッファ(FPSB)228に、文字又は記号を含むストロークのクラスタとして移動させることによって、応答する。ストローク・バッファ・コントローラ(SBC)232は、また、先には第1の前ストローク・バッファ(FPSB)228の中に存在したストローク識別子(STID)216を、第2の前ストローク・バッファ(SPSB)230に移動させ、必要であれば、第2の前ストローク・バッファ(SPSB)230からのストロークの最も古いクラスタを廃棄する。
最後に、ストローク・バッファ・スキャナ(SBSC)246は、影響リスト(INFL)240の中に新たに入力され、時間的に先行するストロークの間に空間的に位置する空間的な座標又は範囲を有する現在のストロークに応答して、この事象をストローク・バッファ・コントローラ(SBC)232に指示する。そして、ストローク・バッファ・コントローラ(SBC)232は、この指示に応答して、現在ストローク・バッファ(CSB)226、第1の前ストローク・バッファ(FPSB)228、及び第2の前ストローク・バッファ(SPSB)230におけるストローク識別子(STID)216を、現在のストロークの空間的な座標又は範囲に従って、再び順序付けし、それによって、それらの空間的な関係に従って、バッファにおけるストロークの時間的な関係を、再び順序付けする。ストローク・バッファ・スキャナ(SBSC)246は、また、現在ストローク・バッファ(CSB)226と第1の前ストローク・バッファ(FPSB)228との再度の順序付けに応答して、影響リスト(INFL)240を再び走査して、ウィンドウ・バッファ(WINBUF)250の内容を、必要に応じて、ストロークの新たな組を伴う対応する新たな空間的な順序で、再度書き込む。位置ディスクリミネータ・プロセッサ(PDISP)252は、ウィンドウ・バッファ(WINBUF)250の再書き込みに応答して、ウィンドウ・バッファ(WINBUF)250におけるストロークの新たな組合せから新たなクラスタの意味を決定し、それにより、ユーザは、新たなストロークを、先に入力された一連のストロークに沿って任意の位置に書き込むことができる。最後に、クラスタ認識プロセッサ(CRP)186が、シーケンシャル文字アレー(SCA)264を、言語的ポスト・プロセッサ(LPP)36に提供する。
E.言語的ポスト・プロセッサ(LPP)36の説明(図35A及び図35B):
既に述べたように、言語的ポスト・プロセッサ(LPP)36は、シーケンシャル文字アレー(SCA)264を低レベル認識プロセッサ(LLRP)34から受け取り、それぞれが文字又は記号としてのストロークの与えられたクラスタの1又は複数の解釈を表している文字リスト(CLST)262から、2又はそれより多くの文字から成る文字ストリングを組み立てる。言語的ポスト・プロセッサ(LPP)36は、次に、言語(学)的な原理(linguistic principles)を用いて、シーケンシャル文字アレー(SCA)264において表現されている文字のストリングに関する、語(word)としての最も可能性の高い解釈を選択する。言語的ポスト・プロセッサ(LPP)36は、こうして、シーケンシャル文字アレー(SCA)264において表現されているものとしての手書き入力文字の曖昧で誤りを含む解釈の間で区別を行い、それぞれの入力文字に対して、対応するシーケンシャル文字アレー(SCA)264に含まれるそれぞれの入力文字の可能性のある解釈から、語又は文字の組合せの中の要素としての文字の内容に基づいてそれぞれの入力文字の最も可能性(蓋然性)の高い解釈を選択することによって、手書き入力文字の解釈の正確性を著しく向上させる。
これらの目的のために、言語的ポスト・プロセッサ(LPP)36は、自然言語における文字と語の性質に基づいて、2つの主要な動作を実行する。図35A及び図35Bにそれぞれ示されているように、第1の動作は、言語(学)的プロセッサ(LNGP)266によって実行される言語的解析であり、曖昧な文字の可能性の間で、任意の自然言語(この場合には英語)に存在する文字の言語的な関係に基づいて、選択を行い、手書き文字に関する複数の同様にランクの付けられた解釈の間での選択を実行する。第2の動作は、字句アナライザ(LEXAZ)290によって実行される字句解析であり、まず、語と同様の手段とから成るルックアップ・テーブルを用いて、文字ストリングにおいて生じる可能性のある語を識別し分析する。字句アナライザ(LEXAZ)290が実行する動作は、更に、代替エラー訂正を含み、これは、必要に応じて、頻繁に取り違えられる文字や文字の組合せに関する訂正と確認とを行い、正しい文字が誤認識されている、すなわち、手書き文字認識のそれまでの段階で、誤った文字と取り違えられているような問題を解決する。
1.言語的及び字句的な解析の一般論:
最初に、言語的解析を考えると、一般的に知られ理解されていることであるが、英語などの自然言語を含むすべての言語は、言語的な特性(linguistic properties)を示しており、ある言語の言語的特性は、その言語の語(words)において、文字のある組合せがより高い又はより低い頻度で生じる傾向として、記述される。すなわち、ある文字が頻繁に他の文字の後に続き又は付随し、また、ある文字は頻繁に組合せとして現れ、また、ある文字又は文字の組合せが、例えば、語の他の位置においてよりも、語の最初、最後、又は中間においてより頻繁に生じる、などである。例えば、低レベル認識プロセッサ(LLRP)34によって識別された可能性のある解釈において、uの文字とaの文字との間に曖昧性が残り、この問題になっている文字の前にqがあり、後にはickがある場合であれば、英語の言語的な特性によれば、おそらく正しい選択は、uであることが示される。
この関係は、以下で説明するように、この技術分野において広く知られているマルコフ(Markov)過程として捉えられ実現されており、言語的ポスト・プロセッサ(LPP)36は、低レベル認識プロセッサ(LLRP)34からのそれぞれの入力文字の可能性のある解釈の間で、特に、曖昧な文字の間で、選択を行う。この選択は、1つの文字のそれぞれの潜在的な解釈に関連して、マルコフ・テーブルに記憶されている蓋然性測度(likelihood measures)と、低レベル認識プロセッサ(LLRP)34が提供する信頼性レベル又は格付け(レーティング、ratings)とに基づいて行われる。
字句解析(lexical analysis)は、これに対して、ある語の知られている識別可能な綴り(スペリング)などの、ある言語の語彙、語、又は形態素(morpheme)に基づく。その例としては、ある言語において生じる少なくとも平凡な語の綴りであり、例えば、cat、rat、boatなどや、人名や地名などの固有名詞の綴りなどがある。字句解析はまた、ある文字を別の文字に取り違える置き換え又は誤認識から生じるいくつかの一般的なエラーの識別を含む。例としては、5のストロークを、sのストロークとして誤認識する場合や、組合せであるin又はniをmとして誤認識する場合や、mを組合せであるiwとして誤認識する場合などがある。
2.言語的プロセッサ(LNGP)266(図35A):
図35Aを参照すると、言語的プロセッサ(LNGP)266の概括的な表現が示されている。図に記載されているように、低レベル認識プロセッサ(LLRP)34は、言語的ポスト・プロセッサ(LPP)36に、シーケンシャル文字アレー(SCA)264の中の文字リスト(CLST)262を与え、それぞれの文字リスト(CLST)262は、低レベル認識プロセッサ(LLRP)34によって、文字としての意味又は潜在的な意味を有するものとして認識されているストロークのクラスタに対応しており、それぞれの262は、1又は複数の文字識別(CHID)260を含む。それぞれの文字識別(CHID)260は、ストロークのクラスタの可能性のある解釈を、文字として識別し、それに対して、対応する文字がストロークの対応するクラスタの正しい解釈である信頼性の度合いを示す信頼性レベル(CNL)を対応させる。
言語的プロセッサ(LNGP)266は、初期文字ストリング・セレクタ(ICSS)270を含み、この初期文字ストリング・セレクタ(ICSS)270は、低レベル認識プロセッサ(LLRP)34から文字リスト(CLST)262を受け取り、文字リスト(CLST)262を、受け取ったシーケンスで、初期文字ストリング(ICS)272に構成する。初期文字ストリング(ICS)272は、2又はそれより多くの文字リスト(CLST)262を含み、潜在的には、語を含む。初期文字ストリング・セレクタ(ICSS)270は、一般的には、最初に、文字リスト(CLST)262のシーケンスにおける語の先の識別の後に生じる次の2つのシーケンシャルな文字リスト(CLST)262を選択することによって、低レベル認識プロセッサ(LLRP)34から受け取られた文字リスト(CLST)262のシーケンスにおいて生じている語を認識しよう試み、次に、それぞれの選択された初期文字ストリング(ICS)272に対する言語的な解析の結果に基づいて、文字リスト(CLST)262のシーケンスを、連続的に長く構成する。
言語的アナライザ(LINAZ)274は、初期文字ストリング(ICS)272の文字リスト(CLST)262を読み出し、2つの言語的な解析をシーケンシャルに実行する。第1の解析は、語の最初及び最後において文字対が生じる相対的な頻度に基づき、第2の解析は、潜在的に語を構成する文字ストリングにおける任意の地点で文字の組合せが生じる相対的な頻度に基づく。図35に示すように、言語的アナライザ(LINAZ)274に関連して2つの対応するマルコフ・テーブルが存在している。第1のものが、開始/終了マルコフ・テーブル(BEMT)276であり、第2のものが、場所任意(Anywhere)マルコフ・テーブル(AMT)278として、示されている。
第1の解析は、語の開始部分及び終了部分に、語の文字の可能な対作成(ペアリング)に対する最初の及び追加的な制約を与えるものとして、現れる文字に基づく。例えば、文字対ltはある語の中に現れることは可能であるが、この文字対が語の開始部分で生じるであろう可能性は非常に低い。他方で、文字対thがその位置に生じる可能性は比較的高い。これに対応して、図35に示されているように、開始/終了マルコフ・テーブル(BEMT)276は、英語などの与えられた言語における可能性(蓋然性)のある開始文字対のそれぞれに対して、開始文字対可能性ウェイト(BPPW)280を含み、可能性のある終了文字対のそれぞれに対して、終了文字対可能性ウェイト(EPPW)282を含む。
語の開始部分又は終了部分において生じる文字対の可能性に基づく最初の言語的解析は、また、低レベル認識プロセッサ(LLRP)34から受け取った文字リスト(CLST)262のシーケンスで生じている与えられた語の開始部分又は終了部分を識別し、更に、文字リスト(CLST)262から語を構成する初期文字ストリング(ICS)272を作る際にも、価値を有する。
言語的アナライザ(LINAZ)274は、初期文字ストリング(ICS)272からその中で生じている最初の2つ及び最後の2つの文字リスト(CLST)262を識別して読み出し、文字リスト(CLST)262の開始部分及び終了部分の対のそれぞれに含まれる文字識別(CHID)260を読み出し、開始部分の文字識別(CHID)260のそれぞれの可能な対と、終了部分の文字識別(CHID)260のそれぞれの可能な対とを形成することによって、初期の開始部分及び終了部分の解析を実行する。言語的アナライザ(LINAZ)274は、次に、開始部分の文字識別(CHID)260のそれぞれの可能な組合せと終了部分の文字識別(CHID)260のそれぞれの可能な組合せとをを用いて、開始/終了マルコフ・テーブル(BEMT)276にアクセスし、開始/終了マルコフ・テーブル(BEMT)276から、開始部分の文字の可能な対のそれぞれに対して開始文字対可能性ウェイト(BPPW)280を読み出し、終了部分の文字識別(CHID)260の対のそれぞれに対して終了文字対可能性ウェイト(EPPW)282を読み出す。
言語的アナライザ(LINAZ)274は、次に、選択された開始部分と終了部分との文字識別(CHID)260の対を、中間文字ストリング(IMCS)284の中に、初期文字ストリング(ICS)272におけるそれらの位置に対応する位置において、それらの文字識別(CHID)260と共に書き込む。この処理は、図35Aでは、中間文字ストリング(IMCS)284の文字識別(CHID)260の間の、a及びbで指示されたラインによって表されている。
しかし、言語的アナライザ(LINAZ)274は、それぞれの文字識別(CHID)260に関連した信頼性レベル(CNL)266を、開始/終了マルコフ・テーブル(BEMT)276から読み出された開始文字対可能性ウェイト(BPPW)280及び終了文字対可能性ウェイト(EPPW)282を用いて修正し、それぞれの文字識別(CHID)260に関連する新たな中間信頼性レベル(ICL)286を生じる。この修正は、元の信頼性レベル(CNL)266を、対応する開始文字対可能性ウェイト(BPPW)280又は終了文字対可能性ウェイト(EPPW)282によって単に代替することであり得るが、また、例えば、元の信頼性レベル(CNL)266に、対応する開始文字対可能性ウェイト(BPPW)280又は終了文字対可能性ウェイト(EPPW)282を乗算することによっても得られ、その場合には、中間信頼性レベル(ICL)286が、低レベル認識プロセッサ(LLRP)34によって実行されたストローク・クラスタ/文字の可能性評価が維持される。
言語的アナライザ(LINAZ)274が、選択された開始部分の文字リスト(CLST)262対又は選択された終了部分の文字リスト(CLST)262あるいはその両方と、開始/終了マルコフ・テーブル(BEMT)276のエントリとの間に一致を見いだせないこともあり得る。あるいは、見つけられた一致が、すべて低いレベルである、すなわち、低い確率であることもあり得る。例えば、選択された初期文字ストリング(ICS)272が不完全な語である場合や、初期文字ストリング(ICS)272が2つの語の部分からそれぞれ構成されている場合、更には、この後者の場合において、ストリングの中の文字の1つが、AやIなどの1文字の語である場合などに、これは生じる。最初の2つの場合には、言語的アナライザ(LINAZ)274は、初期文字ストリング・セレクタ(ICSS)270に命じて、少なくとも1つの追加的な文字リスト(CLST)262を含む次の初期文字ストリング(ICS)272を構成させるか、又は、初期文字ストリング(ICS)272の中の文字リスト(CLST)262の数に応じて、現在の1つの初期文字ストリング(ICS)272から、最も左側の文字リスト(CLST)262を除去させる。言語的アナライザ(LINAZ)274は、初期文字ストリング(ICS)272が、ある語の開始部分及び終了部分を構成する受け入れられる可能性を有する開始部分及び終了部分の文字対を有するものとして識別されるまで、この開始部分/終了部分解析を反復する。
初期文字ストリング(ICS)272に含まれる1文字の語の場合は、文字識別(CHID)260によって、おそらく、A又はIなどの大文字として示されており、この文字は、中間文字ストリング(IMCS)284の中に、中間信頼性レベル(ICL)286が元の信頼性レベル(CNL)266であるか、又は開始/終了マルコフ・テーブル(BEMT)276から入手可能である場合には、中間信頼性レベル(ICL)286が、語の開始/終了対として受け入れられた1文字を示す開始文字対可能性ウェイト(BPPW)280又は終了文字対可能性ウェイト(EPPW)282によって修正されているものとして、書き込まれる。しかし、これは、開始/終了マルコフ・テーブル(BEMT)276が、当初の大文字を含み1文字の語として生じる著しい可能性を有する対に対するウェイトに対応しそれを与えるエントリを含んでいることを必要とする。
言語的アナライザ(LINAZ)274は、いったん、初期文字ストリング(ICS)272の開始部分及び終了部分の文字対に対する受け入れられる解釈を達成し、中間文字ストリング(IMCS)284において対応するエントリを生成した場合には、場所任意マルコフ・テーブル(AMT)278を用いた第2の言語的解析を実行する。場所任意マルコフ・テーブル(AMT)278は、文字ストリングの任意の位置で生じるすべての可能な文字組合せが生じる可能性を反映する場所任意文字対可能性ウェイト(APPW)288を含む。このプロセスでは、言語的アナライザ(LINAZ)274は、最初に、開始部分の文字対と終了部分の文字対との間で生じ最も高い元の信頼性レベル(CNL)266を有する初期文字ストリング(ICS)272において文字リスト(CLST)262を選択するが、この文字リスト(CLST)262は、開始部分対又は終了部分対、もしくはその両方の構成要素であることがわかる。言語的アナライザ(LINAZ)274は、次に、当初の文字リスト(CLST)262のどちらかの側に生じている文字リスト(CLST)262を選択し、当初の文字リスト(CLST)262の文字識別(CHID)260と隣接する文字リスト(CLST)262の文字識別(CHID)260との可能な対の組合せを形成する。
言語的アナライザ(LINAZ)274は、文字識別(CHID)260残れらの組合せを用いて場所任意マルコフ・テーブル(AMT)278にアクセスし、場所任意マルコフ・テーブル(AMT)278から、文字識別(CHID)260のそれぞれの組合せに対する場所任意文字対可能性ウェイト(APPW)288を読み出す。言語的アナライザ(LINAZ)274は、次に、文字識別(CHID)260とそれに隣接し最も高い信頼レベルを有する文字識別(CHID)260とを、初期文字ストリング(ICS)272でのそれらの位置に対応する位置において、中間文字ストリング(IMCS)284に書き込み、再び、対応する場所任意文字対可能性ウェイト(APPW)288に従い、上述した態様で、それぞれの元の信頼性レベル(CNL)266を修正して、対応する中間信頼性レベル(ICL)286を生じる。
言語的アナライザ(LINAZ)274は、当初の文字リスト(CLST)262の隣接する文字リスト(CLST)262を、次の文字リスト(CLST)262として選択し、隣接する文字リスト(CLST)262を有する対を形成し、上述のプロセスを反復して、プロセスのそれぞれの反復の際に、最も高い信頼レベルを有する文字リスト(CLST)262の最も高い連続的な対を選択し、上述の態様で中間文字ストリング(IMCS)284における対応するエントリを生成しながら、当初の文字リスト(CLST)262から、初期文字ストリング(ICS)272の最後まで進む。
ここで説明した言語的な処理に関しては、次のことがいえる。すなわち、当初の処理動作は、すなわち、開始部分/終了部分の処理は、開始部分及び終了部分の文字組合せに関する言語的に可能な組合せにおけるより制限的な制約を利用しており、語のこれらの地点で現れる文字を正確に識別する際の、また、語の開始部分及び終了部分を識別する際の正確さを向上させる。第2の言語的解析は、最も高い信頼性レベルを、従って、低レベル認識プロセッサ(LLRP)34によるストロークのクラスタの最も可能性のある(蓋然性の高い)解釈を有する低レベル認識プロセッサ(LLRP)34からの文字リスト(CLST)262と共に開始され、この文字を、隣接する文字や、更に隣接する文字を識別するための文字を識別するための基礎として用い、それによって、文字ストリングの中の曖昧に識別された文字を解決する最も高い可能性を提供する。最後に、この言語的な処理は、文字対と共に動作するものとして説明したが、特に第2の処理動作においては、3文字の組にも拡張できる。その際の態様は、この技術分野では広く知られている。しかし、この構成では、文字対を用いる言語的処理は、処理時間及び複雑さに関して受け入れられるコスト条件の下での受け入れられる性能と、マルコフ・テーブルに関して受け入れられるサイズを与えるものとして、選択された。
最後に、言語的プロセッサ(LNGP)266によって実行される言語的解析の結論として、中間文字ストリング(IMCS)284は、字句処理のために、字句アナライザ(LEXAZ)290に対し、利用可能である。
3.字句プロセッサ(LEXP)268(図35B):
既に述べたように、中間文字ストリング(IMCS)284の字句的な処理は、2つの段階で行われる。図35Bに図解されている第2の段階は、字句アナライザ(LEXAZ)292によって、字句プロセッサ(LEXP)268において実行される語の字句的(lexical)な解析である。字句アナライザ(LEXAZ)292は、開始扱いテーブル(SHT)294と、その言語の通常用いられる語と人名や地名である固有名詞である語とを含む、3つの「文字位置」リストの多忙リスト(BUSY)296、通常リスト(REGULAR)298、及び希薄リスト(SPARSE)300とから構成される字句ルックアップ・テーブル(LLT)292と関連して動作する。
既に述べたように、中間文字ストリング(IMCS)284は、文字リスト(CLST)262の順序付きのシーケンスすなわちストリングから構成され、それぞれの文字リスト(CLST)262は、それぞれが関連する中間信頼性レベル(INL)を有する、1又は複数の文字識別(CHID)260を含む。また、明らかに、依然として、おそらく、中間文字ストリング(IMCS)284において表現された文字の間には曖昧さが存在する、すなわち、中間文字ストリング(IMCS)284において表現された1又は複数の文字に対して、複数の可能性のある解釈が残っている。
字句アナライザ(LEXAZ)290によって実行される動作は、不確実な入力、すなわち、低い信頼性レベルを有する任意の数の文字を含む入力を伴う字句的なルックアップ(参照)と考えられる。この点で、標準的な字句的なルックアップ方法は、文字ストリングの最初の文字を、効果的なルックアップのための一次キー(primary key)として用いることに注意すべきである。しかし、明らかに、光学的又は手書き文字認識システムでは、それぞれの文字における信頼性のレベルは文字ごとに変動し、最初の文字は、実際には、その語の他の文字よりも信頼性レベルが低い可能性がある。結果的に、標準的な字句的なルックアップ方法は、最初の文字の信頼性レベルが低い場合には、受け入れ可能な結果を与えない可能性がある。従って、そのような場合に用いられるルックアップ方法は、このシステムにおけるように、一次キーを選択する際に融通性をもたなければならず、一次キーは、その文字の語の中における相対的な位置とは関係なく、最も高い信頼性レベルを有する文字から作らなければならない。
この段階では、字句アナライザ(LEXAZ)290は、中間文字ストリング(IMCS)284から、最も高い関連する中間信頼性レベル(ICL)286を有する文字識別(CHID)260から構成される語である(*H*)のような、一次キー文字認識(PRKEY)302を識別して読み出す。字句アナライザ(LEXAZ)290は、次に、一次キー文字認識(PRKEY)302を用いて字句ルックアップ・テーブル(LLT)292にアクセスし、字句ルックアップ・テーブル(LLT)292から、(P/T)HE、(P/T)HA、(P/T)HI、(P/T)HOなどの中間文字ストリング(IMCS)284と同じ位置に選択された一次キー文字を有するその中の潜在的な語をすべて読み出し、これらの語から、潜在的リスト(POTLST)304を構成する。
字句アナライザ(LEXAZ)290は、中間文字ストリング(IMCS)284から、もしある場合には、TH*及びPH*などの、1又は複数の二次キー文字認識(SECKEY)306を識別し読み出す。それぞれの二次キー文字認識(SECKEY)306は、一次キー文字認識(PRKEY)302よりは低いが受け入れ可能なスレショルドよりは高い中間信頼性レベル(ICL)286を有する文字識別(CHID)260から構成される潜在的な語である。字句アナライザ(LEXAZ)290は、次に、潜在的リスト(POTLST)304を、一次キー文字認識(PRKEY)302及び二次キー文字認識(SECKEY)306を用いて走査し、一次キー文字認識(PRKEY)302及び二次キー文字認識(SECKEY)306を、潜在的リスト(POTLST)304の中のそれぞれの語における対応する位置に現れる文字と比較する。字句アナライザ(LEXAZ)290は、次に、一次キー文字認識(PRKEY)302及び二次キー文字認識(SECKEY)306と同じ位置に生じる同じ文字を有する潜在的リスト(POTLST)304の語から成る候補リスト(CADL)308を構成する。
最後に、字句アナライザ(LEXAZ)290は、(P/T)HE、(P/T)HA、(P/T)HI、(P/T)HOなどの中間文字ストリング(IMCS)284において表現された文字との類似性に従って、候補リスト(CADL)308の語をランク付けし、中間文字ストリング(IMCS)284において表現された文字に関連する中間信頼性レベル(ICL)286を考慮する。字句アナライザ(LEXAZ)290は、好ましくは、そして、当初は、最も高い中間信頼性レベル(ICL)286を有する中間文字ストリング(IMCS)284における任意の位置において表現された文字を用いるが、それぞれの位置における別の文字解釈を考慮して、最も高い全体的な信頼性レベルを有する一致を決定する。
字句アナライザ(LEXAZ)290は、候補リスト(CADL)308の語と中間文字ストリング(IMCS)284における文字識別(CHID)260によって表現された文字の組合せとの間の完全な一致を見つけた場合には、この語を、対応する元の手書き入力された語の正確な解釈として受け入れて、後続の表示、記憶、印刷等のために、識別された語(IDWORD)312として、出力ストリング(OUTS)310の中に書き込む。
完全な一致が見つからない場合には、訂正プロセッサ(CORRP)314が呼び出され、候補リスト(CADL)308の中の1又は複数の語に最も近接して一致する文字識別(CHID)260によって表現される文字の組合せに対して作用する。一致が全く見つからない場合には、訂正プロセッサ(CORRP)314がやはり呼び出されて、しかしこの場合には、中間信頼性レベル(ICL)286を有する候補リスト(CADL)308のエントリ、すなわち、言語的解析と低レベル認識プロセッサ(LLRP)34によって決定されたストローク文字とに基づき、最も高い可能性を有する言語的解析の結果が、提供される。
訂正プロセッサ(CORRP)314に進む前に、図(LPPに関する図)に、字句ルックアップ・テーブル(LLT)292の構造が図解されている。既に述べたように、不確実な入力を有する字句ルックアップを容易にするためには、字句ルックアップ・テーブル(LLT)292のような辞書(lexicon)に、最初の1又は複数の文字だけではなく、一次キーとして入力された語の中の任意の文字を用いて、アクセスできることが必要である。これは、本発明のシステムにおいて、開始扱いテーブル(SHT)294を介してアクセスされ又はインデクスされる多忙リスト(BUSY)296、通常リスト(REGULAR)298、及び希薄リスト(SPARSE)300として図において識別されている「文字位置」(letter-in-position、特定の位置に、ある文字が位置している意味)リストの中の語に関する辞書を記憶することによって、達成される。これらの3つのタイプの、多忙、通常、希薄のリストは、辞書すなわち字句ルックアップ・テーブル(LLT)292の中の、与えられた位置に与えられた文字を有する語の数に基づく。この構成では、与えられた位置に与えられた文字を有する語の数が10よりも少ない場合には、それは「希薄」であると考えられ、希薄リスト(SPARSE)300に記憶される。語の数が10と100の間である場合には、それは、「通常」であると考えられ、通常リスト(REGULAR)298に記憶される。そして、語の数が100よりも多い場合には、それは、「多忙」であると考えられ、多忙リスト(BUSY)296に記憶される。この構造は、ルックアップの効率を最大にし、字句ルックアップ・テーブル(LLT)292を記憶するのに要求されるスペースを最小にするように、実現されている。
図(LPPに関する図)に示されているように、開始扱いテーブル(SHT)294は、すべての可能な位置におけるアルファベットのそれぞれの文字に対する開始エントリ(START)316を含み、それぞれの開始エントリ(START)316は、一次キー・タイプ(PKT)318であるB、R又はSを含み、対応する語が多忙リスト(BUSY)296、通常リスト(REGULAR)298、又は希薄リスト(SPARSE)300の中に存在するかどうかを識別する。更に、それぞれの開始エントリ(START)316は、多忙リスト(BUSY)296、通常リスト(REGULAR)298、又は希薄リスト(SPARSE)300の中の対応するエントリに対するポインタ・ハンドル(PTRH)320を含む。一次キー・タイプ(PKT)318が、どのリストをポインタ・ハンドル(PTRH)320が指しているかを決定する。
多忙リスト(BUSY)296では、同じ長さと同じ一次キーとを有する語が、多忙ブロック(BUSYB)322に集められ、二次インデクス・テーブル(SIT)324が、どの部分又は多忙ブロック(BUSYB)322が属するのかを決定する。例えば、図に示されているように、「aが2番目の位置にあり、名前であり、5文字の長さ」(a-in-the-second-position for names 5 character long)は、Aaron、Bambi、Bardoなどに関係する。しかし、通常の長さを持たない語は、単一の多忙ブロック(BUSYB)322に集められる。
多忙リスト(BUSY)296の文字位置リストは、最後の多忙ブロック(BUSYB)322の終点におけるデータ終点マーカ(ENDD)326か、又は、ブロック終点マーカ(ENDB)328かのどちらかがそれぞれの後に来る語を含み、その後には、最後の多忙ブロック(BUSYB)322ではなく、多忙ブロック(BUSYB)322に対する先の多忙ブロック(BUSYB)322の開始点に向いた先のブロック・ポインタ(PBP)330が続く。リストは、ソートされたり、アルファベット順に並べる必要はなく、その理由は、一致したストリング全部が、字句アナライザ(LEXAZ)290に戻されなければならないからである。
通常リスト(REGULAR)298に対しては、語の長さは、リストを構成する際のファクタではない。任意の長さの、「通常」とされる特定の一次キーを有する語は、通常ブロック(REGB)332に記憶され、従って、通常リスト(REGULAR)298に関連する二次インデクス・テーブル(SIT)324は存在しない。通常リスト(REGULAR)298の中の文字位置ブロックのフォーマットは、それ以外の場合には、多忙リスト(BUSY)296の場合と同じである。
最後に、希薄リスト(SPARSE)300においては、語の長さも文字の位置も、リストを構成する際に用いられず、「希薄」とされた一次キーを有するすべての語は、希薄ブロック(SPARSEB)334に集められる。例えば、「uが3番目に位置する」(u-in-the-third-position)と「zが8番目に位置する」(z-in-the-eighth-position)とは、共に、同じ希薄ブロック(SPARSEB)334の中にあり、従って、希薄リスト(SPARSE)300に関連する二次インデクス・テーブル(SIT)324は存在しない。
4.訂正プロセッサ(CORRP)314:
既に述べたように、中間文字リスト(CLST)の解釈と候補リスト(CADL)308の語との間に完全な一致が見つからない場合には、訂正プロセッサ(CORRP)314が呼び出され、候補リスト(CADL)308の1又は複数の語に最も近接して一致する文字識別(CHID)260によって表される文字の組合せに対して作用する。
また、先に論じたように、手書き文字の認識において生じるエラーは、タイプされたテキストで現れるタイプ上のエラーとは、ほとんどの手書き文字のエラーは代替エラーである、すなわち、その形状及び形態の誤認識に起因するある文字の別の文字での置き換えである点で、異なっている。綴りに関する訂正手段の使用は、従って、手書き文字の認識では効果的でない。
図35に示されるように、訂正プロセッサ(CORRP)314は、候補リスト(CADL)308の1又は複数の語に最も近接して一致する文字識別(CHID)260によって表された文字の組合せを読み出し、一致していない文字を識別する。次に、訂正プロセッサ(CORRP)314は、文字認識における一般的な誤りのリストをまとめたものを含むスマッジ・テーブル(SMG)336と、(P/T)などの、その種のエラーを訂正する訂正規則(RULE)338とにアクセスして、スマッジ・テーブル(SMG)336の中に、一致していない文字に適用可能な訂正規則(RULE)338が存在するかどうかを判断する。
再帰的(recursive)なプロセスにおいて、訂正プロセッサ(CORRP)314は、適用可能な訂正規則(RULE)338によって指示される中間文字ストリング(IMCS)284の一致していない文字に、置換を試み、THE、THA、THI、THOなどの中間文字ストリング(IMCS)284の結果的に訂正されたバージョンを用いて、訂正辞書(CORLEX)340にアクセスし又はインデクスする。THA、THI、THOなどのように訂正辞書(CORLEX)340において未知の語を結果として生じる訂正は、結果的に一致を生じることはなく、考慮から除かれる。他方で、訂正辞書(CORLEX)340の中の1又は複数の語と一致する中間文字ストリング(IMCS)284の訂正されたバージョンは、THEなどのように、中間文字ストリング(IMCS)284の潜在的に正確なバージョンとして識別される。訂正プロセッサ(CORRP)314は、中間文字ストリング(IMCS)284の訂正されたバージョンの文字と関連する中間信頼性レベル(ICL)286から決定された最も高い総計としての信頼性レベルを有する中間文字ストリング(IMCS)284の訂正されたバージョンを、対応する手書き入力文字の正しい解釈として、受け入れ、THEのようなその語を、出力ストリング(OUTS)310の中に、後の表示、記憶、印刷等のために、書き込む。
図(LPPに関する図)を参照すると、訂正辞書(CORLEX)340は、文字ツリー構造から構成されるものとして表されている。訂正プロセスは、スマッジ・テーブル(SMG)336からのデータを用いて、可能性のある文字ストリングの置換を、すなわち、可能性のある訂正を、評価する。ストリングの置換は、訂正辞書(CORLEX)340の中の語との関係で評価され、このツリー構造によって、訂正プロセッサ(CORRP)314が、一般的な語のサブストリングを同時に解析し訂正することが可能になる。特に、ツリーが文字ストリングの置換バージョンを用いて横断されるにつれて、すべての無効な経路は自動的に無効な訂正として排除されるが、他方で、すべての有効な経路は、可能性のある正しい訂正と考えられる。訂正プロセッサ(CORRP)314が、経路の終点に到達し、スマッジ・テーブル(SMG)336によって指示された置換が行われると、語の訂正されたバージョンが、成功裏に訂正されたと考えられる。しかし、述べてきたように、このプロセスは、複数の可能性のある成功した訂正を結果的に生じることがあり、訂正プロセッサ(CORRP)314は、訂正されたバージョンと中間文字ストリング(IMCS)284の元のバージョンとの間の信頼性レベルや類似性の比較などの他の基準を用いて、最終的な結論に到達し得る。
本発明は、特に、それによる装置及び方法の好適な実施例を参照して示され説明されてきたが、種々の変更や、改変や、形式、詳細及び構成の修正が、請求の範囲によって定義される本発明の技術的思想及び範囲から離れることなく行い得ることは、当業者には、明らかである。従って、本発明の技術的思想及び範囲の範囲内に含まれるものとして本発明のそのような改変や修正をすべてカバーすることが、請求の範囲の目的である。