以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
(1.技術概要)
オペレータの作業負担を軽減する文字認識システムの技術概要を説明する。文字認識システムは、対象文字に対する複数の文字読込装置から得られる読込結果と、該文字読込装置とは異なる文字認識装置から得られる認識結果と、を用いる。さらに、文字認識システムは、それらの読込結果および認識結果から推定される推定文字列を生成し、該推定文字列と、過去に入力されたことのある文字列とをマッチングして、対象文字を推定して検証を行う。この検証にて確定された確定文字列は、コンピュータシステム等に入力され得る。
(2.実施形態)
図1〜6を参照して、本実施形態にかかる文字認識システムに関して説明する。本実施形態においては、文字認識システムの機能および構成が文字認識装置に集約される場合を説明する。文字認識システムの機能および構成は、かかる例に限定されず、複数の装置に分散して設けられてもよい。
(2.1.機能と構成)
まず、図1を参照して、文字認識システムの機能と構成を説明する。図1は、本実施形態にかかる文字認識システムを含めた情報処理システム1000の機能および構成の一例を示したブロック図である。
情報処理システム1000は、文字読込エンジン110と、文字認識エンジン120と、文字認識装置130と、表示装置140と、を有する。情報処理システム1000は、文字読込エンジン110および文字認識エンジン120から得られる情報を文字認識装置130にて処理して、対象文字に対する推定結果を検証して、確定文字列を生成する。確定文字列または、確定文字列から得られる情報は、例えば、表示装置140を用いて、ユーザに呈示される。
文字読込エンジン110は、第1読込エンジン112と、第2読込エンジン114と、第3読込エンジン116と、を有する。文字読込エンジン110は、第1読込エンジン112と、第2読込エンジン114と、第3読込エンジン116と、から得られた情報を文字認識装置130に出力する機能を有する。第1読込エンジン112と、第2読込エンジン114と、第3読込エンジン116と、は、それぞれ読込のアルゴリズムが異なる読込装置であり、それぞれの読込アルゴリズムにより、対象文字を読み込む。なお、本実施形態では、3つの読込エンジンを例に挙げたが、数はかかる例に限られず、4つ以上であってもよい。
文字読込エンジン110を構成する第1読込エンジン112〜第3読込エンジン116は、対象文字を読み込んで、それぞれ文字を想定する機能を有する。具体的に、第1読込エンジン112〜第3読込エンジン116は、手書き、または印刷された文字等の筆跡画像を読込み、想定される文字の特徴情報へ変換する。そして、文字読込エンジン110は、記憶している文字の集合体である辞書を用いて、第1読込エンジン112〜第3読込エンジン116から得られた特徴情報を使用して、該辞書から特徴情報に対応する文字を抽出して、ユーザが理解可能な文字へ変換する。例えば、第1読込エンジン112〜第3読込エンジン116は、光学式文字読取装置OCR(Optical Character Recognition)であってもよい。このようにして第1読込エンジン112〜第3読込エンジン116が、対象文字を読み込んで取得した情報を読込結果と称する。
第1読込エンジン112〜第3読込エンジン116は、ユーザが理解可能な文字へ変換できた場合には、読込結果として該文字を出力する。第1読込エンジン112〜第3読込エンジン116は、対象文字の存在を検知しなかった場合には、検知しなかったことを示す情報を読込結果として出力する。また、第1読込エンジン112〜第3読込エンジン116が、対象文字を検知しなかった場合には、読込結果を出力しなくともよい。第1読込エンジン112〜第3読込エンジン116が、対象文字の存在を検知したものの、認識不能であった場合には、認識不能であったことを示すリジェクト情報を読込結果として出力する。具体的には、認識不能であった文字をリジェクト文字として出力する。すなわち読込結果とは読み込んだ文字画像を予め用意した辞書により認識した結果データである。文字読込エンジン110は、このような上記読込結果を文字認識装置130へ出力する。
一方、文字認識エンジン120は、対象文字を画像解析して認識して、認識結果を文字認識装置130に出力する機能を有する。そして、文字認識エンジン120は、対象文字であるユーザが書いた文字の筆跡画像に対する機械学習結果を用いて認識結果を導出する。文字認識エンジン120は、ユーザが書いた文字の筆跡画像を取得して、該筆跡画像を3次元画像に変換して、文字を立体画像として記憶し、文字の体積および高さを特徴として記憶する。文字認識エンジン120は、この特徴と正解文字とを蓄積および機械学習し、機械学習結果を用いて、認識結果を出力する。すなわち認識結果とは対象文字の文字画像を機械学習により蓄積した機械学習結果により認識した結果データである。正解文字は、テキストデータとして、筆跡画像と紐づけられてもよい。
文字認識装置130は、取得部132と、多数決結果出力部134と、推定文字列生成部136と、検証確定部138と、を有する。文字認識装置130は、文字読込エンジン110から得られる読込結果と、文字認識エンジン120から得られる認識結果とを処理することで、推定される対象文字の文字列を確定文字列として確定する機能を有する。
取得部132は、文字読込エンジン110が出力した読込結果と、文字認識エンジン120が出力した認識結果と、を取得する機能を有する。また、取得部132は、上記確定文字列を確定する際に使用されるパラメータ、ユーザ指示等を取得する機能も有する。
多数決結果出力部134は、文字読込エンジン110が出力した読込結果に基づいて、多数決を取り、多数決結果を出力する機能を有する。読込結果には、第1読込エンジン112〜第3読込エンジン116が対象文字を読み込んだ結果が含まれている。多数決結果出力部134は、これらの結果に対して多数決を取り、より読込結果が一致する文字を多数決結果として出力する。多数決結果の出力に関する詳細は後述する。
推定文字列生成部136は、多数決結果と、文字認識エンジン120より得られた認識結果に基づいて推定される推定文字列を生成する機能を有する。また、推定文字列生成部136は、生成された推定文字列を、検証確定部138に出力する機能も有する。
推定文字列生成部136は、多数決結果、認識結果、または多数決結果および認識結果の一部を含む混合結果、の少なくとも一つ以上を含む推定文字列を生成する。推定文字列生成部136は、例えば、ユーザが設定する条件に応じて、推定文字列として、多数決結果、認識結果、多数決結果および認識結果の一部を含む混合結果を生成する。各条件と、生成される推定文字列と、に関しては後述する。このように、条件に応じて多様な推定文字列が生成され得る。
推定文字列生成部136は、一つの推定文字列を生成してもよく、複数の推定文字列を生成してもよい。推定文字列生成部136は、複数の推定文字列を検証確定部138に出力してもよい。
検証確定部138は、上記推定文字列と、履歴データベースが保有するデータベース文字列と、のマッチングを行い、対象文字を推定して検証確定した確定文字列を生成する機能を有する。履歴データベースとは、対象文字をコンピュータシステム等に入力する際に用いられた文字列を記憶しているデータベースである。履歴データベースに記憶されている文字列をデータベース文字列と称する。
検証確定部138は、推定文字列に基づいて、データベース文字列を検索して、推定文字列として想定され得る実績文字列を抽出する。検証確定部138は、抽出可能な実績文字列がない場合、実績文字列の該当がないとして処理を行う。一方、検証確定部138は、抽出可能な実績文字列がある場合、推定文字列と実績文字列とを用いて、マッチングを行う。なお、検証確定部138は、一つの実績文字列を抽出してもよく、複数の実績文字列を抽出してもよい。
検証確定部138は、推定文字列と、実績文字列と、の類似率を用いてマッチングを行ってよい。類似率は、公知な手法で求められ得る。具体的には、検証確定部138は、後述するレーベンシュタイン距離を使用した類似率を用いてもよい。レーベンシュタイン距離を使用した類似率の算出方法の詳しくは、後述する。
表示装置140は、文字認識装置130にて生成された確定文字列をユーザに呈示する機能を有する。表示装置140は、文字認識装置130にて出力された確定結果をユーザに呈示する機能も有してよい。
表示装置140は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ(Liquid Crystal Display:LCD)装置、OLED(Organic Light Emitting Diode)装置などの表示装置であってよい。
さらに、表示装置140にて呈示された確定文字列は、ユーザにより正読か、または誤読かが判断されてよい。
(2.2.動作フロー)
以上までで、文字認識システムを含む情報処理システムの機能と構成の一例の説明を行った。本項では、図2を参照して、上記の構成が動作する動作フローS100に関して説明する。
まず、取得部132が、文字読込エンジン110による読込結果を取得する(S102)。
次に、取得部132が、文字認識エンジン120による認識結果を取得する(S104)。なお、取得部132が取得する順番はかかる例に限られない。また、同時に読込結果と認識結果とが取得されてもよい。
次に、多数決結果出力部134が、読込結果に基づいて、多数決結果を出力する(S106)。
次に、推定文字列生成部136が、多数決結果と認識結果とに基づいて、推定文字列を生成する(S108)。
次に、検証確定部138が、推定文字列とデータベース文字列とを用いて、マッチングを行い、対象文字を推定して検証確定した確定文字列を生成する(S110)。なお、確定文字列は、コンピュータシステム等に出力されて登録され得る。確定文字列の生成過程において、文字認識装置130等が処理を中断した場合には、コンピュータシステム等に出力されず、処理が中断された旨が呈示される。
また、確定文字列が表示装置140等でユーザに呈示されることで、確定文字列が正読されているか、誤読されているか、をユーザは確認可能である。ユーザはこのように確認作業を行うことにより、確定文字列生成の動作を修正したり、既に登録された確定文字列に対して、修正作業等をしたりすることが可能となる。
このようにして、文字認識システムは確定文字列を生成して、対象文字を精度高くコンピュータシステム等に入力可能である。そして、確定文字列の精度が高くなることにより、オペレータの負担を軽減することができる。
(2.3.多数決結果の出力)
本項では、図3および図4を参照して、多数決結果の出力に関して説明する。図3および図4は、多数決結果を決める際の場合分けを示した図である。
図3および図4に示したように、多数決結果を決める際の場合分けは例えば7ケース考えられる。ここでは、それぞれのケースに関して説明する。図3および図4に示したケースはすべて、対象文字を、「あいうえお」の文字列としている。多数決結果出力部134は、第1読込エンジン112と、第2読込エンジン114と、第3読込エンジン116と、読込結果の多数決により、多数決結果を生成し出力する。
多数決結果出力部134は、3つの読込エンジンの読込結果が同じ文字であれば、その文字を多数決結果として出力する。多数決結果出力部134は、3つの読込エンジンのうち、2つの読込結果が同じ文字であれば、2つの読込結果が同じであった文字を多数決結果として出力する。多数決結果出力部134は、3つの読込エンジンのそれぞれの読込結果が異なる文字であれば、リジェクトである旨を多数決結果として出力する。以下では、多数決結果の様々なケースを例示して説明する。
ケース1は、第1読込エンジン112と、第2読込エンジン114と、第3読込エンジン116と、がそれぞれ、対象文字を「あいうえお」と読み込んでいる。ケース1は、全ての読込エンジンの対象文字に対する読込結果が一致している。ケース1では、多数決結果出力部134は、多数決結果として「あいうえお」を出力する。
ケース2は、第1読込エンジン112が対象文字を「あいきえお」と読込み、第2読込エンジン114が対象文字を「かいうえお」と読込み、第3読込エンジン116が対象文字を「あいうけお」と読込んでいる。多数決結果出力部134は、各列の文字に対して、多数決を取り、多数決結果を出力する。具体的に、多数決結果出力部134は、1列目に対して多数決を取り、第1読込エンジン112と第3読込エンジン116とが読み込んだ「あ」を多数決結果としている。この手法を3列目、4列目に対しても用いることで、各列で一部の文字が異なるケース2では、多数決結果出力部134は、多数決結果として「あいうえお」を出力する。
ケース3は、第1読込エンジン112が対象文字を「あいうえお」と読込み、第2読込エンジン114が対象文字を「あいう」と読込み、第3読込エンジン116が対象文字を「あいうえお」と読込んでいる。第2読込エンジン114は、対象文字の「えお」の文字を検知しておらず読込んでいない。多数決結果出力部134は、読み込んだ文字数が一部異なる場合には、読み込んだ文字数が異なる読込エンジンの読込結果を多数決評価の対象外として、残りの読込エンジンの読込結果に対して多数決結果を取ってもよい。ケース3では、多数決結果出力部134は、多数決結果として「あいうえお」を出力する。
ケース4は、第1読込エンジン112が対象文字を「あい」と読込み、第2読込エンジン114が対象文字を「あいう」と読込み、第3読込エンジン116が対象文字を「あいうえお」と読込んでいる。このように、全ての読込エンジンによる読込結果の文字数がすべて異なる場合には、多数決結果出力部134は、複数の読込エンジンの中から、任意の読込エンジンを選択し、任意の読込エンジンの読込結果を多数決結果として出力してよい。ケース4は、第1読込エンジン112による読込結果が選択され、多数決結果出力部134は、多数決結果として「あい」を出力する。
ケース5は、第1読込エンジン112が対象文字を「あ?うえお」と読込み、第2読込エンジン114が対象文字を「あいうえお」と読込み、第3読込エンジン116が対象文字を「あいう?お」と読込んでいる。このように一部の文字がリジェクトされて読み込まれている場合には、多数決結果出力部134は、リジェクト文字を除いて多数決を取り、多数決結果を出力してもよい。ケース5は、各列に対して、リジェクト文字を除く読込結果で多数決がとられており、多数決結果出力部134は、多数決結果として「あいうえお」を出力する。
ケース6は、第1読込エンジン112が対象文字を「??うえお」と読込み、第2読込エンジン114が対象文字を「???かお」と読込み、第3読込エンジン116が対象文字を「あ?う?お」と読込んでいる。4列目ように各読込エンジンによる読込結果がすべて異なる場合には、多数決結果出力部134は、リジェクト文字として多数決結果を出力してもよい。なお、ケース6の4列目以外の列は、それぞれ多数決を取り、多数決結果を出力する。よって、ケース6では、多数決結果出力部134は、多数決結果として「??う?お」を出力する。
ケース7は、第1読込エンジン112が対象文字を「あいうえお」と読込み、第2読込エンジン114が対象文字を「かきくけこ」と読込み、第3読込エンジン116が対象文字を「さしすせそ」と読込んでいる。このようにリジェクト文字は無く、読込結果が全て異なる場合には、多数決結果出力部134は、リジェクト文字として多数決結果を出力してもよい。よって、ケース7では、多数決結果出力部134は、多数決結果として「?????」を出力する。
このようにして、多数決結果出力部134は、多数決結果を出力する。なお、本実施形態において説明した上記の多数決結果の出力の場合分けは、ユーザにより適宜場合分け手法が決定されてよく、上記の例は一例に過ぎない。
(2.4.推定文字列の生成と検証確定)
本項では、図5および図6を参照して、推定文字列の生成と検証確定とに関して説明する。図5および図6は、推定文字列の生成と検証確定とに関して説明する図である。
図5および図6に示したように、例えば推定文字列の生成と検証確定とのケースとして12ケース考えられる。ここでは、それぞれのケースに関して説明する。図5および図6に示したケースはすべて、対象文字を、「あいうえお」の文字列としている。推定文字列生成部136は、多数決結果と、文字認識エンジン120による認識結果と、に基づいて推定文字列を生成する。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース1は、多数決結果が「あいうえお」であり、認識結果が「あいうえお」である。ケース1は、多数決結果と認識結果とがともに、各列がすべて一致している。この場合には、推定文字列生成部136は、多数決結果を選択して、推定文字列として、「あいうえお」を生成する。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース2は、多数決結果が「あいうえお」であり、認識結果が「あかうけお」である。このように、多数決結果と認識結果とで一部の文字が異なる場合には、推定文字列生成部136は、多数決結果の文字列と認識結果の文字列との両方を推定文字列として生成してもよい。推定文字列生成部136は、複数の文字列を推定文字列として生成する場合、検証確定部138に、優先して処理される推定文字列を選択して出力してもよい。
具体的には、ケース2では、推定文字列生成部136は、優先的に多数決結果を選択して検証確定部138に出力する。このとき、検証確定部138における処理で、推定文字列に基づいて抽出される実績文字列があるか否かにより、残りの推定文字列である認識結果が出力されるか否かが判断されてもよい。また、検証確定部138で得られる類似率を用いて、残りの推定文字列である認識結果が出力されるか否かが判断されてもよい。例えば、ケース2では、検証確定部138が多数決結果に基づいて実績文字列を抽出する場合に、該当する実績文字列が0件であるときに、推定文字列生成部136は、認識結果を検証確定部138に出力する。
ケース3は、多数決結果が「あいう」であり、認識結果が「あいうえお」である。このように、リジェクト文字はなく、それぞれの結果の文字数が異なる場合には、推定文字列生成部136は、ケース2と同様に多数決結果の文字列と認識結果の文字列との両方を推定文字列として生成してもよい。推定文字列生成部136は、複数の文字列を推定文字列として生成する場合、検証確定部138に、優先して処理される推定文字列を選択して出力してもよい。
ケース3は、ケース2と同様に、推定文字列生成部136は、優先的に多数決結果を選択して検証確定部138に出力する。このとき、検証確定部138における処理で、推定文字列に基づいて抽出される実績文字列があるか否かにより、残りの推定文字列である認識結果が出力されるか否かが判断されてもよい。また、検証確定部138で得られる類似率を用いて、残りの推定文字列である認識結果が出力されるか否かが判断されてもよい。例えば、ケース3では、検証確定部138が多数決結果に基づいて実績文字列を抽出する場合に、該当する実績文字列が0件であるときに、推定文字列生成部136は、認識結果を検証確定部138に出力する。
さらに、検証確定部138により多数決結果に基づいて実績文字列を抽出する場合の、該当する実績文字列の件数と、類似率とに応じて、推定文字列生成部136は、認識結果を出力してもよい。具体的には、多数決結果で、実績文字列の抽出が1件である場合に、推定文字列生成部136は、類似率が80%以上であれば、認識結果を検証確定部138に出力せず実績文字列を出力し、類似率が80%未満であれば、認識結果を検証確定部138に出力してもよい。また、多数決結果で、実績文字列の抽出が2件以上である場合には、推定文字列生成部136は、多数決結果と認識結果との両方を検証確定部138に出力してもよい。検証確定部138は、多数決結果と認識結果とのそれぞれの結果に基づいて抽出される実績文字列の全てに対して類似率を算出し、最も高い類似率である実績文字列を確定文字列として生成してよい。
ケース4は、多数決結果が「あ?う?お」であり、認識結果が「あいうえお」である。このように、多数決結果の一部の文字がリジェクト文字であり、かつ、リジェクト文字以外の多数決結果は、認識結果と一致する場合には、推定文字列生成部136は、リジェクト文字を認識結果にて補正して推定文字列を生成してもよい。具体的には、推定文字列生成部136は、多数決結果のリジェクト文字を認識結果で補完して、推定文字列として「あいうえお」を生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース5は、多数決結果が「あ?う?お」であり、認識結果が「かいきえお」である。このように、多数決結果の一部の文字がリジェクト文字であり、かつリジェクト文字以外の文字が認識結果と少なくとも一部が一致しない場合には、推定文字列生成部136は、多数決結果のリジェクト文字となった箇所をリジェクト文字の存在を示す記号「_」へ変換して、検証確定部138へ出力してもよい。これにより、検証確定部138は、リジェクト文字を考慮して、推定文字列とデータベース文字列とのマッチングを行える。
また、この場合、推定文字列生成部136は、上記のような多数決結果の一部を変換した文字列と認識結果との文字列の両方を推定文字列として生成してもよい。推定文字列生成部136は、複数の文字列を推定文字列として生成する場合、検証確定部138に、優先して処理される推定文字列を選択して出力してもよい。
具体的には、ケース5では、推定文字列生成部136は、多数決結果の一部を変換した推定文字列を優先的に選択して検証確定部138に出力してもよい。このとき、検証確定部138における処理で、推定文字列に基づいて抽出される実績文字列があるか否かにより、残りの推定文字列である認識結果が出力されるか否かが判断されてもよい。また、実績文字列が抽出される件数に応じて、残りの推定文字列である認識結果が検証確定部138に出力されるか否かが判断されてもよい。例えば、ケース5では、検証確定部138が多数決結果の一部を変換した推定文字列に基づいて実績文字列を抽出する場合に、該当する実績文字列が0件であるときに、推定文字列生成部136は、認識結果を検証確定部138に出力してもよい。
ケース5では、さらに検証確定についても詳しく説明する。ケース5では、検証確定部138は、多数決結果の一部を変換した推定文字列に基づいて実績文字列を抽出するときに、該当する実績文字列が1件以上抽出された場合には、多数決結果の一部を変換した推定文字列に対して類似率を算出し、さらに認識結果を用いた推定文字列に対して類似率を算出してもよい。また、検証確定部138は、多数決結果および認識結果を用いた推定文字列に対して、抽出された実績文字列の全てに対して、類似率を算出しそれらの類似率で最も高い実績文字列を確定文字列として生成してよい。
ケース6は、多数決結果が「?????」であり、認識結果が「あいうえお」である。このように、多数決結果の全ての文字がリジェクト文字である場合には、推定文字列生成部136は、認識結果を選択して推定文字として生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース7は、多数決結果が「あいうえお」であり、認識結果が「あ??えお」である。このように、多数決結果にリジェクト文字が無く、認識結果にはリジェクト文字があり、認識結果のリジェクト文字以外の文字が多数決結果と一致している場合には、推定文字列生成部136は、多数決結果を推定文字列として生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース8は、多数決結果が「あいうえお」であり、認識結果が「か??えこ」である。このように、多数決結果にリジェクト文字が無く、認識結果にはリジェクト文字があり、認識結果のリジェクト文字以外で多数決結果と一部異なる文字がある場合には、推定文字列生成部136は、多数決結果を推定文字列として生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース9は、多数決結果が「あいうえお」であり、認識結果が「?????」である。このように、多数決結果にリジェクト文字が無く、認識結果が全てリジェクト文字である場合には、推定文字列生成部136は、多数決結果を推定文字列として生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース10は、多数決結果が「あ?うえお」であり、認識結果が「あき?え?」である。このように、多数決結果の一部にリジェクト文字を含み、認識結果の一部にもリジェクト文字を含み、それぞれのリジェクト文字の位置が異なる場合には、推定文字列生成部136は、多数決結果の一部および認識結果の一部を含む混合結果を用いて、推定文字列を生成してよい。この時、推定文字列生成部136は、多数決結果と認識結果とが一致する文字はその文字を生成し、リジェクト文字の箇所は、リジェクト文字となっていない方の結果を使用して文字を生成してよい。具体的にケース10で説明すると、推定文字列生成部136は、「あきうえお」を推定文字列として生成してよい。そして、検証確定部138は、推定文字列とデータベース文字列とをマッチングする。
ケース11は、多数決結果が「あ?うえお」であり、認識結果が「か??えお」である。このように、多数決結果の一部にリジェクト文字を含み、認識結果の一部にもリジェクト文字を含み、かつリジェクト文字以外の文字で多数決結果と認識結果とに不一致がある場合、推定文字列生成部136は、多数決結果を推定文字列として生成してよい。また、この場合に、推定文字列生成部136は、多数決結果でのリジェクト文字を変換して、推定文字列として生成する。具体的に、推定文字列生成部136は、「あ_うえお」を推定文字列として生成する。
ケース11に関してさらに説明すると、推定文字列生成部136が多数決結果のリジェクト文字を変換した推定文字列を検証確定部138に出力すると、検証確定部138は、推定文字列に基づいて、実績文字列を抽出する。このとき、実績文字列の抽出が0件の場合には、推定文字列生成部136は、認識結果をさらに検証確定部138に出力してよい。検証確定部138は、さらに認識結果から生成された推定文字列に基づいて、実績文字列を抽出する。このとき、実績文字列の抽出が1件の場合には、多数決結果および認識結果ともにリジェクト文字を含んでいるため、類似率を算出しても確定文字列として正しい文字を認識している可能性が低下していることがある。よって、ケース11では、認識結果に対する実績文字列の抽出が1件である場合には、検証確定部138は、文字認識装置130の処理を中断してもよい。さらに、実績文字列の抽出が2件以上の場合には、リジェクト文字を除いた実績文字列に対して、類似率を算出する。この場合、検証確定部138は、類似率の最も高い実績文字列を確定文字列として生成する。
ケース12は、多数決結果が「?????」であり、認識結果が「?????」である。このように、多数決結果および認識結果がともに全部リジェクト文字である場合、推定文字列生成部136は、推定文字列を生成せず、文字認識装置130の処理を中断してよい。
このようにして、推定文字列生成部136は、推定文字列生成し、検証確定部138は、推定文字列とデータベース文字列とをマッチングさせ、確定文字列を生成する。なお、本実施形態において説明した上記のケースは、ユーザにより適宜ケースが定義されてよく、上記の例は一例に過ぎない。
(2.5.類似率の算出)
本項では、レーベンシュタイン距離を使用した類似率の算出に関して詳しく説明する。この類似率は、類似率を算出する評価文字と正解文字とを用いて算出する。ここでいう評価文字が推定文字列であり、正解文字が実績文字列である。
検証確定部138は、推定文字列にリジェクト文字を含まない場合には、推定文字列と実績文字列とをそのまま使用して、類似率を算出する。検証確定部138は、推定文字列にリジェクト文字を含む場合には、リジェクト文字を除いた推定文字列と実績文字列とを使用して、類似率を算出する。
具体的に説明するため、ユーザが書いた対象文字を「イライニン」としたときの類似率の算出を一例として説明する。推定文字列生成部136で生成された推定文字列が「1ラクニン」であり、実績文字列が「イライニン」とする。この時、検証確定部138は、推定文字列である「1ラクニン」が、実績文字列である「イライニン」になるまでの文字変換の数をカウントする。この回数が編集距離と呼ばれる。この場合、推定文字列中の「1」が実績文字列中の「イ」になるのに1回、推定文字列中の「ク」が実績文字列中の「イ」になるのに1回とカウントされ編集距離は、2となる。
検証確定部138は、この編集距離に加えて指数関数を使用することで、類似率を求める。検証確定部138は、例えば、自然対数の底を(編集距離/(−5))の値で累乗した値を類似率としてよい。上記具体例にて、自然対数の底であるネイピア数は2.7182であり、編集距離が2であるため、類似率は0.67032(≒67.03%)となる。このようにして、検証確定部138は類似率を求めてよい。なお、係数の(−5)はユーザにより適宜設定されてよい。
検証確定部138は、上記具体例の他に、リジェクト文字を除いた推定文字列と実績文字列とを使用して、類似率を算出する場合がある。以下では、その場合に関して説明する。
具体的に説明するため、ユーザが書いた対象文字を「イライニンジロウタロウ」とし、「ジロウ」部分が取り消し線で消されたときの類似率の算出を一例として説明する。推定文字列生成部136で生成された推定文字列が「イライニン???タロウ」であり、ジロウ部分は認識不能であるためリジェクト文字を示す?により示されている。また、実績文字列が「イライニンタロウ」とする。
このとき検証確定部138は、リジェクト文字を認識して、リジェクト文字を削除して、リジェクト文字を含まない推定文字列と実績文字列とを用いて類似率を算出する。つまり、検証確定部138は、推定文字列である「イライニンタロウ」が、実績文字列である「イライニン▲タロウ」になるまでの文字変換の数をカウントする。実績文字列は、空白情報を含み、姓名の間が区別可能である。ここで、▲は空白であることを示している。この場合、推定文字列の「イライニンタロウ」が実績文字列の「イライニン▲タロウ」になるまでに空白を削除する編集が必要なため、編集距離は1である。こうして求められた編集距離を用いて、上記の具体例と同様に類似率を算出する。本具体例にて、自然対数の底であるネイピア数は2.7182であり、編集距離が1であるため、類似率は0.81873(≒81.87%)となる。このようにして、検証確定部138は類似率を求めてよい。
検証確定部138は、上記で求めたような類似率が閾値以上である場合、最も類似率の高い実績文字列を確定文字列として生成する。つまり、検証確定部138は、複数の実績文字列が抽出される場合には、各実績文字列と推定文字列との類似率を算出して、最も類似率の高い実績文字列を確定文字列として生成する。閾値は、ユーザにより適宜決定されてよく、例えば80%であってよい。80%を閾値とすることで、検証確定部138は、より精度高く確定文字列を生成できる。
検証確定部138は、上記類似率と、推定文字列および実績文字列の生成過程と、を検証して、確定文字列と、確定文字列に関する情報と、を含む確定結果を出力する機能も有する。具体的には、以下の5パターンの確定結果の出力であってよい。確定文字列に関する情報とは、確定文字列に関するパラメータまたは値等の情報であってよい。
検証確定部138は、実績文字列の該当があり、かつ類似率が閾値以上である場合には、類似率の最も高い実績文字列を確定文字列として生成してよい。この場合、確定文字列と確定文字列に関する情報を確定結果として出力してよい。出力された確定結果に含まれる確定文字列は、新たに履歴データベースに登録されてもよい。
また、検証確定部138は、実績文字列の該当があり、かつ類似率が閾値未満であり、かつ推定文字列にリジェクト文字が無い場合には、類似率の最も高い実績文字列を確定文字列として生成してよい。この場合、確定文字列と確定文字列に関する情報とを確定結果として出力してよい。出力された確定結果に含まれる確定文字列は、新たに履歴データベースに登録されてもよい。
また、検証確定部138は、実績文字列の該当があり、かつ類似率が閾値未満であり、かつ推定文字列にリジェクト文字がある場合には、確定結果を出力しなくともよい。検証確定部138が確定結果を出力しない場合には、文字認識装置130が行う処理が中断され得る。
また、検証確定部138は、実績文字列の該当がなく、かつ推定文字列にリジェクト文字が無い場合には、推定文字列を確定文字列として生成してよい。この場合、検証確定部138は、確定文字列と確定文字列に関する情報とを確定結果として出力してよい。出力された確定結果に含まれる確定文字列は、新たに履歴データベースに登録されてもよい。
また、検証確定部138は、実績文字列の該当がなく、かつ推定文字列にリジェクト文字がある場合には、確定結果を出力しなくともよい。検証確定部138が確定結果を出力しない場合には、文字認識装置130が行う処理が中断され得る。
このようにして、文字認識装置130は確定文字列を生成する。また、生成された確定文字列は、様々な態様で、ユーザに呈示され得る。
(3.帳票を用いた確定文字列の生成)
以上までで、文字認識システムの詳細に関して説明した。本項では、銀行における帳票に書かれた文字を対象文字として、文字認識システムによる処理を行う一例を説明する。銀行にて使用される帳票には振込依頼書がある。
履歴データベースには、振込依頼書に記載される依頼人に関する情報が記憶されている。履歴データベースには、依頼人に関する情報を格納する依頼人マスタと受取人に関する情報を格納する受取人マスタが記憶されている。依頼人マスタに登録される情報とは、依頼人が過去為替取引をした履歴の情報、依頼人の氏名および電話番号等が含まれる。依頼人の氏名はカナで記憶されている。
また、受取人マスタには、一人の依頼人に対して、例えば、最大で9人の受取人を登録可能である。受取人マスタに登録される情報は、依頼人と同様に受取人の氏名および電話番号等が含まれ得る。受取人の氏名はカナで記憶されている。
帳票に記載される項目は、依頼人の電話番号、依頼人の氏名カナ、科目、口座番号、受取人氏名カナ、振込銀行名カナ、振込支店名カナ、振込指定日等が挙げられる。文字認識システムはこれらの情報が手書きされた文字を認識する。
依頼人の電話番号は、依頼人マスタから依頼人情報を検索する際に検索キーとして用いられる。依頼人の氏名カナは、電話番号により検索された依頼人マスタからデータベース文字列の取得が可能である。ここで一般に、数字のみからなる電話番号は、カナよりも文字認識の精度が高くなる。このため、電話番号を文字認識した結果に基づき依頼人マスタから取得した依頼人の氏名カナの文字列により、文字認識した依頼人の氏名カナを検証または置換することで精度を向上することが可能である。科目は、普通、当座、貯蓄、その他の科目種別を示しており、受取人マスタを検索する際に検索キーとして用いられる。受取人氏名カナ、振込銀行名カナ、振込支店名カナ、は、受取人マスタからデータベース文字列の取得が可能である。
まず、文字読込エンジン110が帳票全体を読み込む。文字読込エンジン110が帳票に記載される対象文字を読み込む際には、文字読込エンジン110は文字の読込に不要な線などは削除して、文字を読込やすくする。
文字読込エンジン110は、対象文字を項目毎にイメージに切り出して、記憶している文字の集合体である辞書と対象文字とを照合させて対象文字の読込結果を生成する。対象文字が数字である場合には、文字読込エンジン110は、読み込んだ数字の文字画像と辞書に記憶される数字とを照合させて、読込結果を生成する。対象文字がカナである場合には、文字読込エンジン110は、読み込んだカナの文字画像と辞書に記憶されるカナとを照合させて、読込結果を生成する。文字読込エンジン110は、対象文字が漢字である場合、読み込んだ漢字の文字画像と辞書に記憶される漢字とを照合して、カナに変換して読込結果を生成する。この時カナへの変換は、辞書中に1つまたは複数の漢字の組み合わせからなる単語と対応するカナの情報を予め記憶しておき、読み込んだ漢字の組み合わせと辞書中の単語とを比較し、一致する単語のカナを取得することによって行う。文字読込エンジン110は、対象文字が図形等によるマークである場合、読み込んだ図形の位置等を使用して、マーク変換を行い図形の位置に対応する数字を読込結果として生成する。あるいは、図形の位置に対応する文字列を読込結果として生成してもよい。例えば、科目については、マーク変換が行われ得る。
次に、文字認識エンジン120は、対象文字を項目ごとにイメージに切り出して、機械学習の結果を用いて、認識結果を生成する。具体的には、対象文字が文字列であれば、1文字単位に分割して、それぞれの文字に対して、認識結果を生成する。文字認識エンジン120は、さらに、各文字のイメージを2値化する。具体的には、グレースケールあるいはモノクロで筆跡のある部分を黒として1とし、筆跡の無い部分を白として0とする。
文字認識エンジン120は、2値化した情報から、機械学習の結果を用いて筆跡が近い文字を1文字単位で複数選択する。文字認識エンジン120は、選択した文字と選択した文字の確信度とを出力する。文字認識エンジン120は、閾値以上の確信度を示す文字を認識結果として出力する。文字認識エンジン120は、選択した文字が複数ある場合には、閾値以上でありかつ最も高い確信度を示す文字を認識結果として出力する。なお、文字認識エンジン120は、選択した文字の確信度が全て閾値未満である場合には、リジェクト文字として認識結果を出力する。閾値はユーザにより適宜設定されるが、例えば、80%であってよい。
以上のように得られた、文字読込エンジンの読込結果と文字認識エンジンの認識結果と、に基づいて、検証確定部138が推定文字列を生成し、推定文字列とデータベース文字列とをマッチングして、確定文字列を生成する。
(依頼人の電話番号に対する適用例)
具体的に、依頼人の電話番号に対して、文字認識システムを適用する。この場合、文字認識システムに基づいて、確定された確定文字列である電話番号を用いて、依頼人のマスタ情報を特定する。
例えば、依頼人の電話番号を、文字読込エンジン110と文字認識エンジン120とが読み込んで、読込結果と認識結果とを出力する。文字認識装置130は、これらの読込結果と認識結果を取得する。文字認識装置130は、読込結果と認識結果とを用いて、推定文字列生成部136にて、推定文字列を生成する。推定文字列は、多数決結果を優先的に選択して、検証確定部138に出力する。
ここで、検証確定部138が、多数決結果に基づいて、データベース文字列から実績文字列を抽出する。抽出された実績文字列が、1件である場合には、検証確定部138は、さらに推定文字列と実績文字列との類似率を求める。類似率が80%以上であれば、認識結果を使用することなく、多数決結果がそのまま確定文字列として生成される。一方、類似率が80%未満であれば、推定文字列生成部136から認識結果が新たに検証確定部138に出力され、検証確定部138は、認識結果に基づいて、データベース文字列から実績文字列を抽出する。そして、類似率を新たに求める。
また、検証確定部138が、多数決結果に基づいて、データベース文字列から実績文字列を抽出し、抽出された実績文字列が2件以上である場合を説明する。この場合には、検証確定部138は、多数決結果に基づいた実績文字列の抽出と、認識結果に基づいて実績文字列の抽出とを行い、抽出されたすべての実績文字列に対して、類似率の算出を行う。この場合には、類似率の最も高かった実績文字列が、確定文字列として生成される。
検証確定部138における実績文字列の抽出は、例えば、推定文字列生成部136が依頼人の電話番号を、「090????????」と生成した場合、検証確定部138は、変換された「090________」を履歴データベースから検索し、実績文字列を抽出する。このように、検証確定部138では、090から始まる任意の8文字を含む実績文字列を抽出する。例えば、2件の実績文字列が抽出されれば、その2件に対して、検証確定部138が、類似率を算出する。
リジェクト文字を含まず、実績文字列が抽出されない場合には、検証確定部138は、文字認識装置130における処理を中断してよい。処理が中断されたことは、表示装置140等でユーザへ呈示され得る。また、リジェクト文字を含まず、実績文字列が抽出されたが類似率が80%未満である場合にも、検証確定部138は、文字認識装置130における処理を中断してよい。
(依頼人の電話番号、受取人の口座の科目と番号とに対する適用例)
上記の適用例では、文字認識システムが依頼人の電話番号を確定させる例に関して説明した。しかしながら、同じ電話番号に対して、複数の口座が登録されていたりすることがある。この時には、電話番号以外の口座情報等に対して、文字認識システムを適用して、確定文字列を生成して、口座を特定することができる。
例えば、依頼人の電話番号に加え、受取人の口座の科目と番号と、に対して、文字認識システムを適用する。履歴データベースには、具体的に、銀行コード、銀行名カナ、銀行名漢字、支店コード、支店名カナ、支店名漢字等が登録されている。文字認識システムは、依頼人の電話番号に加え、受取人の口座の科目と番号と、を文字認識して、履歴データベースのデータベース文字列から実績文字列を抽出する。さらに、文字認識システムは、依頼人の電話番号と受取人の口座の科目および番号等の他に、帳票に記載されたカナを文字認識する。具体的には、文字認識システムは、銀行名カナ、支店名カナ受取人名カナ等に対して、上記の適用例と同様に、推定文字列を生成し、履歴データベース(全銀ファイルとも称する)から実績文字列を抽出して、類似率を算出する。言い換えると、銀行名漢字、支店名漢字に関しては、文字認識システムにより、類似率等は算出されない。
このように、文字認識システムは、例えば、銀行の帳票に適用され得る。銀行の帳票に適用されることにより、銀行の行員が帳票に記載されたユーザの筆跡から、コンピュータシステムに入力された文字列を再度確認する負担をより軽減できる。
(4.ハードウェア構成例)
本発明の上記実施形態に係る文字認識装置130を主とした情報処理システム1000のハードウェア構成について説明する。
図7は、本発明の実施形態に係る文字認識装置130のハードウェアを構成し得る情報処理装置900のハードウェア構成を示す図である。情報処理装置900は、CPU(Central Processing Unit)901と、ROM(Read Only Memory)902と、RAM(Random Access Memory)903と、ホストバス904と、ブリッジ905と、外部バス906と、インタフェース907と、入力装置908と、出力装置909と、ストレージ装置910と、通信装置911と、を備える。
CPU901は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置900内の動作全般を制御する。また、CPU901は、マイクロプロセッサであってもよい。ROM902は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM903は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはCPUバス等から構成されるホストバス904により相互に接続されている。例えば、CPU901は、図1に示す文字認識装置130の多数決結果出力部134、推定文字列生成部136、検証確定部138の機能を実行し得る。
ホストバス904は、ブリッジ905を介して、PCI(Peripheral Component Interconnect/Interface)バス等の外部バス906に接続されている。なお、必ずしもホストバス904、ブリッジ905および外部バス906を分離構成する必要はなく、1つのバスにこれらの機能を実装してもよい。
入力装置908は、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチおよびレバー等ユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、CPU901に出力する入力制御回路等から構成されている。情報処理装置900を操作するユーザは、この入力装置908を操作することにより、情報処理装置900に対して各種のデータを入力したり処理動作を指示したりすることができる。例えば、入力装置908は、図1に示す表示装置140に搭載され、ユーザ等の支持を文字認識装置130等に出力する等の機能を実行し得る。
出力装置909は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ(LCD)装置、OLED(Organic Light Emitting Diode)装置、ランプ等の表示装置およびスピーカ等の音声出力装置を含む。例えば、出力装置909は、図1に示す表示装置140の機能を実行し得る。
ストレージ装置910は、データ格納用の装置である。ストレージ装置910は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置等を含んでもよい。ストレージ装置910は、例えば、HDD(Hard Disk Drive)で構成される。このストレージ装置910は、ハードディスクを駆動し、CPU901が実行するプログラムや各種データを格納する。例えば、ストレージ装置910は、図1に示す文字認識装置130が取得部132により取得した各種情報を記憶する機能を実行し得る。
通信装置911は、例えば、ネットワークに接続するための通信デバイス等で構成された通信インタフェースである。また、通信装置911は、無線通信または有線通信のどちらに対応してもよい。例えば、通信装置911は、図1に示す文字認識装置130および文字読込エンジン110間の各種情報の送受、文字認識装置130および文字認識エンジン120間の各種情報の送受、文字認識装置130および表示装置140間の各種情報の送受の機能を実行し得る。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。