(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-24
(45)【発行日】2023-06-01
(54)【発明の名称】プログラム、誤り文字検出装置及び誤り文字検出方法
(51)【国際特許分類】
G09B 19/00 20060101AFI20230525BHJP
G06V 30/19 20220101ALI20230525BHJP
G09B 11/00 20060101ALI20230525BHJP
G09B 19/06 20060101ALN20230525BHJP
【FI】
G09B19/00 H
G06V30/19
G09B11/00
G09B19/06
(21)【出願番号】P 2021148618
(22)【出願日】2021-09-13
【審査請求日】2021-11-09
(73)【特許権者】
【識別番号】512095668
【氏名又は名称】アイラボ株式会社
(74)【代理人】
【識別番号】100090398
【氏名又は名称】大渕 美千栄
(74)【代理人】
【識別番号】100090387
【氏名又は名称】布施 行夫
(72)【発明者】
【氏名】グエン トゥアン クーン
(72)【発明者】
【氏名】ハ ダン リン
(72)【発明者】
【氏名】中川 正樹
(72)【発明者】
【氏名】ファン ヴァン チューエン
【審査官】池田 剛志
(56)【参考文献】
【文献】特開2009-163009(JP,A)
【文献】特開2009-276709(JP,A)
【文献】米国特許出願公開第2014/0245137(US,A1)
【文献】中国特許出願公開第104063176(CN,A)
【文献】Victor Carbune et al.,Fast multi-language LSTM-based online handwriting recognition,International Journal on Document Analysis and Recognition (IJDAR),Vol.23, No.2,2020年02月08日,p.89-102
【文献】高橋 諒ほか,Bidirectional LSTMを用いた誤字脱字検出システム,2019年度人工知能学会全国大会論文集,2019年,第33回,3C4-J-9-03
(58)【調査した分野】(Int.Cl.,DB名)
G09B 19/00
G06V 30/19
G09B 11/00
G09B 19/06
(57)【特許請求の範囲】
【請求項1】
手書き入力された文字列パターンから文字列を認識する認識部と、
認識された文字列における誤り文字を検出する誤り検出部と、
前記文字列パターンを文字毎に分割する分割部と、
前記誤り検出部による誤り文字の検出結果と前記分割部による分割の結果とに基づいて、検出された誤り文字の前記文字列パターンにおける位置を特定し、検出された誤り文字を前記文字列パターンにおいて識別可能に表示する表示制御部と
、
前記文字列パターンから特徴を抽出する特徴抽出部としてコンピュータを機能させ
、
前記認識部は、
抽出された時系列又は空間系列の特徴系列から候補文字クラスとその確率を求め、時系列又は空間系列の候補文字クラスとその確率から認識結果の文字列を決定し、
前記分割部は、
時系列又は空間系列の候補文字クラスとその確率に基づいて、候補文字クラス第一位の確率の系列を求め、当該系列におけるピークの位置に基づいて、前記文字列パターンを分割することを特徴とするプログラム。
【請求項2】
請求項1において、
前記表示制御部は、
検出された誤り文字が誤字又は衍字である場合に、前記文字列パターンにおける誤字又は衍字に対応する文字を識別可能に表示することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記表示制御部は、
検出された誤り文字が脱字である場合に、前記文字列パターンにおける脱字の箇所を識別可能に表示することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれか1項において、
前記表示制御部は、
検出された誤り文字が誤字である場合に、前記文字列パターンにおける誤字に対応する
文字の近傍に正解文字を表示することを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれか1項において、
前記表示制御部は、
検出された誤り文字が脱字である場合に、前記文字列パターンにおける脱字の箇所の近傍に正解文字を表示することを特徴とするプログラム。
【請求項6】
手書き入力された文字列パターンから文字列を認識する認識部と、
認識された文字列における誤り文字を検出する誤り検出部と、
前記文字列パターンを文字毎に分割する分割部と、
前記誤り検出部による誤り文字の検出結果と前記分割部による分割の結果とに基づいて、検出された誤り文字の前記文字列パターンにおける位置を特定し、検出された誤り文字を前記文字列パターンにおいて識別可能に表示する表示制御部と
、
前記文字列パターンから特徴を抽出する特徴抽出部とを含
み、
前記認識部は、
抽出された時系列又は空間系列の特徴系列から候補文字クラスとその確率を求め、時系列又は空間系列の候補文字クラスとその確率から認識結果の文字列を決定し、
前記分割部は、
時系列又は空間系列の候補文字クラスとその確率に基づいて、候補文字クラス第一位の確率の系列を求め、当該系列におけるピークの位置に基づいて、前記文字列パターンを分割することを特徴とする誤り文字検出装置。
【請求項7】
手書き入力された文字列パターンから文字列を認識する認識ステップと、
認識された文字列における誤り文字を検出する誤り検出ステップと、
前記文字列パターンを文字毎に分割する分割ステップと、
前記誤り検出ステップでの誤り文字の検出結果と前記分割ステップでの分割の結果とに基づいて、検出された誤り文字の前記文字列パターンにおける位置を特定し、検出された誤り文字を前記文字列パターンにおいて識別可能に表示する表示制御ステップと
、
前記文字列パターンから特徴を抽出する特徴抽出ステップとを含
み、
前記認識ステップでは、
抽出された時系列又は空間系列の特徴系列から候補文字クラスとその確率を求め、時系列又は空間系列の候補文字クラスとその確率から認識結果の文字列を決定し、
前記分割ステップでは、
時系列又は空間系列の候補文字クラスとその確率に基づいて、候補文字クラス第一位の確率の系列を求め、当該系列におけるピークの位置に基づいて、前記文字列パターンを分割することを特徴とする誤り文字検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、誤り文字検出装置及び誤り文字検出方法に関する。
【背景技術】
【0002】
タブレットやPCを利用して、ユーザ(学習者)に文字や単語、語句などを筆記させ、その正誤を表示する学習ソフトウェアが開発され、利用され始めている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような学習ソフトウェアは、お手本をなぞらせて、画像や電子インク(時系列の筆点座標系列)とのずれを表示するもの、文字等を認識して正解と違うかどうかを出力するもの等がほとんどであり、どの手書き文字が誤っているかを誤り手書き文字の近傍に(或いは、誤り手書き文字に直接に)表示するソフトウェアはない。これでは、学習者は誤りの位置を探さなくてはならない。
【0005】
一般に、検出した誤りの視覚的なフィードバックは重要である。ワードプロセッシングソフトウェアでは、綴りや文法の誤りを、その箇所にアンダーラインを引いたり色を変えたりして表示する。従来の教室でも、ノートや黒板への生徒の回答に対して、教師は直接手書きをして、その誤り位置を指摘している。手書き文字認識を文字学習や語彙学習などの言語学習に適用する場合、学習者が犯した誤りとその位置を指摘する方が、学習者が誤りを知覚し易い。
【0006】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、手書き入力した文字の誤りをユーザが認識し易くすることが可能なプログラム、誤り文字検出装置及び誤り文字検出方法を提供することにある。
【課題を解決するための手段】
【0007】
(1)本発明は、手書き入力された文字列パターンから文字列を認識する認識部と、認識された文字列における誤り文字を検出する誤り検出部と、前記文字列パターンを文字毎に分割する分割部と、前記誤り検出部による誤り文字の検出結果と前記分割部による分割の結果とに基づいて、検出された誤り文字の前記文字列パターンにおける位置を特定し、検出された誤り文字を前記文字列パターンにおいて識別可能に表示する表示制御部としてコンピュータを機能させるためのプログラムに関する。また、本発明は、上記各部を含む誤り文字検出装置に関係する。
【0008】
また本発明は、手書き入力された文字列パターンから文字列を認識する認識ステップと、認識された文字列における誤り文字を検出する誤り検出ステップと、前記文字列パターンを文字毎に分割する分割ステップと、前記誤り検出ステップでの誤り文字の検出結果と前記分割ステップでの分割の結果とに基づいて、検出された誤り文字の前記文字列パターンにおける位置を特定し、検出された誤り文字を前記文字列パターンにおいて識別可能に表示する表示制御ステップとを含む誤り文字検出方法に関する。
【0009】
本発明によれば、手書き入力された文字列パターンを文字毎に分割し、誤り文字の検出
結果と分割の結果とに基づいて誤り文字を文字列パターンにおいて識別可能に表示することで、手書き入力した文字の誤りをユーザが認識し易くすることができる。
【0010】
(2)また本発明に係るプログラム、プログラム、誤り文字検出装置及び誤り文字検出方法では、前記表示制御部は、検出された誤り文字が誤字又は衍字である場合に、前記文字列パターンにおける誤字又は衍字に対応する文字を識別可能に表示してもよい。
【0011】
本発明によれば、手書き文字列のうちどの文字が誤字又は衍字であるかをユーザが認識し易くすることができる。
【0012】
(3)また本発明に係るプログラム、プログラム、誤り文字検出装置及び誤り文字検出方法では、前記表示制御部は、検出された誤り文字が脱字である場合に、前記文字列パターンにおける脱字の箇所を識別可能に表示してもよい。
【0013】
本発明によれば、手書き文字列のどこに脱字があるかをユーザが認識し易くすることができる。
【0014】
(4)また本発明に係るプログラム、プログラム、誤り文字検出装置及び誤り文字検出方法では、前記表示制御部は、検出された誤り文字が誤字である場合に、前記文字列パターンにおける誤字に対応する文字の近傍に正解文字を表示してもよい。
【0015】
本発明によれば、手書き文字列のうちどの文字が誤字で、どう誤っているかをユーザが認識し易くすることができる。
【0016】
(5)また本発明に係るプログラム、プログラム、誤り文字検出装置及び誤り文字検出方法では、前記表示制御部は、検出された誤り文字が脱字である場合に、前記文字列パターンにおける脱字の箇所の近傍に正解文字を表示してもよい。
【0017】
本発明によれば、手書き文字列のどこに脱字があり、どう誤っているかをユーザが認識し易くすることができる。
【図面の簡単な説明】
【0018】
【
図1】手書き入力された英単語の文字列パターンにおいて誤り文字がある場合の表示例を示す図。
【
図2】手書き入力された英単語の文字列パターンにおいて複数の誤り文字がある場合の文字表示と筆画表示の例を示す図。
【
図3】本実施形態の誤り文字検出装置の機能ブロック図の一例を示す図。
【
図4】オンライン方式での処理の流れを示すフローチャート。
【
図7】時系列の候補文字クラスとその確率を出力する処理の一例を示す図。
【
図10】オンライン方式での分割の処理例を示す図。
【
図11】2つの文字が書き足されたときの分割の処理例を示す図。
【
図12】文字分割後の遅延筆画に対応する処理例を示す図。
【
図14】オンライン方式での誤り訂正の表示例を示す図。
【
図15】オフライン方式での処理の流れを示すフローチャート。
【
図16】空間系列の候補文字クラスとその確率を出力する処理の一例を示す図。
【
図17】オフライン方式での分割の処理例を示す図。
【
図18】オフライン方式での誤り訂正の表示例を示す図。
【
図19】誤り訂正の表示における確信度による色調整の一例を示す図。
【発明を実施するための形態】
【0019】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0020】
1.概要
本実施形態の誤り文字検出装置(誤り文字検出方法)では、ユーザがタブレット等で筆記した、或いは、紙等に筆記してカメラ等で読み取った文字列パターン(文字、単語、語句、文など)から文字列を認識し、その正誤を判定し、1つ以上の誤り文字を検出した場合に、その誤り文字を文字列パターンにおいて識別できるように表示する。例えば、誤り文字に対応する手書き文字に下線や矢印を付して表示する(文字表示と呼ぶ)ようにしてもよいし、誤り文字に対応する筆画を他の筆画とは異なる色(強調色)で表示する(筆画表示と呼ぶ)ようにしてもよい。
【0021】
図1に、手書き入力された英単語の文字列パターンにおいて誤り文字(誤字、脱字、衍字)がある場合の文字表示と筆画表示の例を示す。
図1の左側の例は、「acceptable」の2つ目の「a」を「i」と筆記した誤字の例であり、文字表示では、手書き文字「i」に下線を付して表示し、筆画表示では、手書き文字「i」の筆画を赤色で表示(強調表示、図中では、グレーで表示)している。また、手書き文字「i」の近傍に正解文字「a」を表示している。これにより、ユーザは、どの文字が誤字でありどう誤ったかを容易に認識することができる。
図1の中央の例は、「recommend」の「m」が1つ抜けた脱字の例であり、文字表示では、脱字の箇所に矢印を付して表示し、筆画表示では、脱字箇所の直前の筆画の終点を赤色で表示し、矢印も付している。また、脱字箇所の近傍に正解文字「m」を表示している。これにより、ユーザは、どこに脱字がありどう誤ったかを容易に認識することができる。
図1の右側の例は、「writing」の「t」を1つ多く筆記した衍字の例であり、文字表示では、2つ目の手書き文字「t」に下線を付して表示し、筆画表示では、2つ目の手書き文字「t」の筆画を赤色で表示している。これにより、ユーザは、どの文字が衍字であるかを容易に認識することができる。
【0022】
図2は、手書き入力された英単語の文字列パターンにおいて複数の誤り文字がある場合の文字表示と筆画表示の例である。
図2の左側の例は、「achieve」の「c」を1つ多く筆記し、「i」を「e」と筆記した衍字及び誤字の例であり、文字表示では、1つ目の手書き文字「c」と「e」に下線を表示し、筆画表示では、1つ目の手書き文字「c」と「e」の筆画を赤色で表示している。また、手書き文字「e」の近傍に正解文字「i」を表示している。
図2の右側の例は、「consciously」の2つ目の「c」と「o」が抜け、「l」を1つ多く筆記した脱字及び衍字の例であり、2つの脱字の箇所それぞれに矢印を付して正解文字「c」と「o」を表示し、文字表示では、1つ目の手書き文字「l」に下線を付して表示し、筆画表示では、1つ目の手書き文字「l」の筆画を赤色で表示している。
【0023】
2.構成
図3に本実施形態の誤り文字検出装置の機能ブロック図の一例を示す。なお本実施形態の誤り文字検出装置は
図1の構成要素(各部)の一部を省略した構成としてもよい。
【0024】
入力部160は、ユーザが筆記媒体(ペン、指先等)で手書き文字(文字列パターン)を入力するためのものであり、その機能は、タブレット、タッチパネル等の筆記面などに
より実現できる(オンライン方式の場合)。入力部160は、筆記媒体が筆記面に触れてから離れるまでの筆記媒体の位置を表す座標データを一定時間間隔で検出し、検出された座標データ列(座標点系列、電子インク)をストローク(筆画)のデータとして処理部100に出力する。なお、ストロークの終点から次のストロークの始点までのベクトルをオフストローク(運筆)と呼び、ストロークとオフストロークの連続する系列をストローク列と呼ぶ。なお、オフライン方式では、入力部160は、紙等に筆記された文字列を、カメラやスキャナー等で白黒画像或いは濃淡画像として読み取る。
【0025】
記憶部170は、処理部100の各部としてコンピュータを機能させるためのプログラムや各種データを記憶するとともに、処理部100のワーク領域として機能し、その機能はハードディスク、RAMなどにより実現できる。
【0026】
表示部190は、処理部100で生成された画像を出力するものであり、その機能は、LCD或いはCRTなどのディスプレイにより実現できる。
【0027】
処理部100(プロセッサ)は、プログラムなどに基づいて各種処理を行う。この処理部100は記憶部170内の主記憶部をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。処理部100は、認識部110、誤り検出部112、分割部114、表示制御部116を含む。
【0028】
認識部110は、入力部160で入力された文字列パターンから文字列を認識する。認識部110の出力は、文字コード列である。
【0029】
誤り検出部112は、認識部110で認識された文字列における誤り文字(誤字、脱字、衍字)を検出する。回答すべき正解の文字列が指定されている場合は、それを参照テキストとし、指定されていない場合は、言語モデルを用いて最もそれらしい認識結果を選び、それを参照テキストとする。誤り検出部112は、認識部110で認識された文字列を参照テキストと照合することで、誤り文字を特定する。言語モデルとしては、語彙辞書、n文字連接の確率を示すn-gramモデル、深層ニューラルネットワークで確からしさを表現したRNN(Recurrent Neural Network)、文法解析等を利用することができる。正確な筆記を求めたい単語や語句の学習には語彙辞書が適当であり、より長い単位での誤り検出では、n-gramやRNN、文法解析、或いは、それらと語彙辞書の組み合わせが利用できる。語彙辞書は、ユーザ(学習者)のレベルや学習範囲に応じて、限定された語彙辞書を利用することで、誤り検出の精度を上げることができる。
【0030】
分割部114は、入力部160で入力された文字列パターンを文字毎に分割する。分割部114は、続け書き、筆順違い、単語や語句等を書いた後で書き足される遅延筆画を処理できるように、時間情報と空間情報の両方を使用する。なお、認識部110は、分割部114で分割された文字パターンのそれぞれに対して文字認識を行うことで、文字列パターンから文字列を認識するようにしてもよい。また、文字パターンの分割し過ぎを許容し分割漏れを極力低減する過分割を行い、言語モデルを利用して過分割を統合する方式(過分割方式)を用いて、認識部110の処理と分割部114の処理を一体で実行するようにしてもよい。すなわち、認識部110と分割部114の適用順序や方法は問わない。
【0031】
表示制御部116は、誤り検出部112による誤り文字の検出結果と分割部114による分割の結果とに基づいて、検出された誤り文字の文字列パターンにおける位置を特定し、検出された誤り文字を文字列パターンにおいて識別可能に表示部190に表示させる制御を行う。より詳細には、表示制御部116は、検出された誤り文字が誤字又は衍字である場合に、文字列パターンにおける誤字又は衍字に対応する文字を識別可能に表示し(例
えば、当該文字に下線を付す、当該文字の筆画を強調色で表示する)、検出された誤り文字が脱字である場合に、文字列パターンにおける脱字の箇所を識別可能に表示する(例えば、当該箇所に矢印を付す)。また、表示制御部116は、検出された誤り文字が誤字である場合に、文字列パターンにおける誤字に対応する文字の近傍に正解文字を表示し、検出された誤り文字が脱字である場合に、文字列パターンにおける脱字の箇所の近傍に正解文字を表示する。
【0032】
3.処理
3-1.オンライン方式
次に、
図4のフローチャートを用いて、オンライン方式での処理の流れについて説明する。まず、処理部100は、入力部160で入力された文字列パターン(電子インク)を取得する(ステップS10)。
図5は、電子インクの一例を画像として示した図である。電子インクは、時系列の筆画列であり、各筆画は時系列の筆点座標列で表現される。
図5の各点は筆点を示し、筆記媒体が筆記面に接触している間は、それらを直線で連結して示している。
【0033】
次に、処理部100(前処理部)は、入力された文字列パターンに対して、平滑化、正規化、ペジエ近似、再標本化の4つのステップからなる前処理(Preprocessing)を適用する(ステップS11)。この処理によって、入力筆点列から微小変動やノイズを除去し、ほぼ一定間隔の筆点列に加工し、文字の認識率を高めることができる。前処理の一部又は全部のステップを省略したり、同様の効果のある処理に変更したりしてもよい。平滑化のステップでは、不要な微小変動を除去するために、次式により、時刻tにおける筆点座標(x(t),y(t))を、その前後の筆点座標の重み付き平均(x’(t),y’(t))に置き換える。ここで、α、βは、係数であり、2α+β=1とする。
【0034】
【数1】
正規化ステップでは、入力された文字列パターンを一定の高さに揃えるために、全ての筆画の高さの平均h_avgを求め、平均の高さがN_hとなるように、各筆画の幅と高さを同じ割合のN_h/h_avg倍する。ベジエ近似のステップでは、ベジエ曲線に近似することで、手書きの軌跡から不要なノイズを除去する。ベジエ近似としては、次の文献に記載の方法を用いることができる:V. Carbune et al., “Fast Multi-language LSTM-based Online Handwriting Recognition,” ArXiv190210525 Cs Stat, Jan. 2020, Accessed: Oct. 27, 2020. [Online]. Available: http://arxiv.org/abs/1902.10525。再標本化のステップでは、離れた筆点間を補ったり、近接した筆点を省いたりして、ほぼ一定間隔の筆点列に再標本化(Resampling)する。再標本化としては、次の文献に記載の方法を用いることができる:S. Jaeger, S. Manke, J. Reichert, and A. Waibel, “Online handwriting recognition: the NPen++ recognizer. Int J Doc Anal Recognit 3:169-180,” IJDAR, vol. 3, pp. 169-180, Mar. 2001, doi: 10.1007/PL00013559。
図6に、入力された文字列パターンに対する前処理の結果の一例を示す。
【0035】
次に、処理部100(特徴抽出部)は、前処理された文字列パターンにおいて、全ての筆画に渡る全筆点数をNとして、全ての2つの連続する座標点(pi,pi+1)(1<=i<=N-1)から、Δx=pi+1(x)-pi(x)、Δy=pi+1(y)-pi(y)として、次式の4つの特徴F0、F1、F2、F3を抽出する(ステップS12)。もし、前後の特徴点が重なる場合(前の筆画の終点と次の筆画の始点が重なる場合な
ど)、すなわち、F0=0のときは、この連続点からの特徴を除く。
【0036】
【数2】
次に、認識部110は、時系列の特徴系列の各時点で、全字種に空白文字クラスを加えた候補文字クラスとその確率(厳密には疑似確率)を出力する(ステップS13)。これは、特徴系列と候補文字との対応を示す。ここでは、時系列認識器として、3層のBLSTM(Bidirectional Long Short Term Memory)を利用する。このBLSTMの各層は、128セルの左右LSTMと128セルの右左LSTMで構成されている。
図7に示す例は、前処理された文字列パターンからBLSMによって候補文字とその確率を出力する過程を、いくつかの筆点を選んで示している。各筆点での最高確率の候補文字の値をグレーで示す。それらを連結すると下側に示す文字列になる。なお、「blank」は、空白クラス文字クラスを示し、「・・・」は、省略を示す。
【0037】
次に、認識部110は、ステップS13の出力(時系列の候補文字クラスとその確率)から、CTC(Connectionist Temporal Classification)を用いて、認識結果の文字列(最良パス)を決定する(ステップS14)。時系列の候補文字クラスとその確率の列は、複数の分割や認識の可能性を示している。その中から最適な認識結果の文字列を決定する。ここでは、言語モデルによる確からしさを含めずに、尤もらしい文字列を認識する。これは、誤り文字があるのに言語モデルで正しい文字列を認識してしまうことを防ぐためである。
【0038】
次に、誤り検出部112は、認識部110の出力から、言語モデルを用いて、最もそれらしい認識結果を選択し、選択した認識結果を参照テキストとして決定し(ステップS15)、ステップS14で決定した認識結果の文字列における誤り文字を検出する(ステップS16)。なお、回答すべき正解の文字列が指定されている場合には、指定された文字列を参照テキストとする。ここでは、言語モデルとして、一番単純な英語の語彙辞書(英単語の原型だけでなく活用型も含み、82,765単語を頻度情報とともに記録したもの)を用い、最もそれらしい語彙の検索のためには、編集距離(Damerau-Levenshtein distance)を用いる。編集距離は、2つの文字列間の距離、置換、挿入、削除のそれぞれのコストと回数の積和で測るアルゴリズムであり、そのときの編集履歴(どの文字をどの文字に置換し、どの文字を挿入し、どの文字を削除するかの履歴)は、ステップS14で決定した認識結果の文字列をどう訂正すれば参照テキストになるかを示しており、逆の見方をすれば、正しい文字列をどう間違ったかを示している。なお、認識結果の文字列と参照テキストの役割を反対にして、参照テキストを認識結果の文字列に訂正するための編集履歴を求め、これを誤り文字の検出結果とするようにしてもよい。
図8に、編集履歴の一例を示す。
図8は、認識結果の文字列が「extoracson」であり、参照テキストが「extraction」である場合の例であり、この編集履歴は、参照テキストの3番目の文字と4番目の文字の間に「o」を挿入し、参照テキストの7番目の文字「t」を削除し、参照テキストの8番目の文字「i」を「s」に置換すれば、認識結果の文字列になることを示している。すなわち、
図8の編集履歴は、認識結果の文字列において、4番目の
文字「o」が衍字であり、7番目の文字と8番目の文字の間に脱字(正解文字「t」)があり、8番目の文字「s」が誤字(正解文字「i」)である、という誤り文字の検出結果を示している。
【0039】
次に、分割部114は、ステップS13の出力(時系列の候補文字クラスとその確率)に基づいて、ステップS11で前処理された文字列パターンを文字毎に分割する(ステップS17)。文字列パターンは横書き1行で筆記されることを前提とするが、複数行になることが想定される場合は、Y軸(縦軸)への射影や改行のための長い運筆で行ごとに区切る。縦書きの場合は、X軸(横軸)への射影や改行のための長い運筆で行ごとに区切る。以下、横書き1行を前提に説明する。なお、分割部114の処理(ステップS17の処理)は、ステップS14~ステップS16の処理の前に行ってもよいし、ステップS14~ステップS16の処理と並行して行ってもよい。また、ここでは、認識部110の処理結果を利用して文字への分割を行うが、認識部110の処理とは別個に分割処理を実行してもよい。
【0040】
図9は、分割部114の処理の流れを示すフローチャートである。まず、前処理された文字列パターンの筆点ごとに、空白文字を含めた候補文字クラス第一位(トップ候補)の確率のlog値(log確率)を求め、この値の系列(空白込みトップ候補log確率系列)を作成する(ステップS20)。この系列におけるピーク(極大値)は、空白文字を含む候補文字である確率が最も高いところを示す。但し、空白文字がトップ候補のピークは無視する。次に、同一の候補文字が連続する場合は、空白込みトップ候補log確率が最も高いものをピークとし、残りはピークから除外する(ステップS21)。実際に同じ文字を続けて筆記した場合でも、ステップS13では、その文字、空白文字、その文字が候補として出力されるため、これらをまとめてしまう問題は生じない。次に、文字列パターンをブロックへ分割する(ステップS22)。ここでは、2つの連続するピークの間が運筆の場合は、そこで文字列パターンを区切り、区切られた文字列パターンをブロックとする。また、2つの連続するピークの間に、運筆、筆画、運筆などといった、系列に運筆が2つ以上ある場合は、2つの連続するピーク間の筆画について、そのX軸への射影がそれぞれのピークを含む筆画の射影との重なりの大きい方に統合し、残りの運筆で文字列パターンをブロックに区切る。ブロック内の空白込みトップ候補log確率系列のピーク数から、そのブロック内に何文字含まれているかが分かる。次に、空白込みトップ候補log確率系列とは別に、空白文字を除いたトップ候補のlog確率の系列(空白抜きトップ候補log確率系列)を作成する(ステップS23)。次に、ブロック内の空白込みトップ候補log確率系列に複数のピークがある場合は、ブロックに区切り線を付加し、ブロックを文字ごとに区切る(ステップS24)。ここでは、空白抜きトップ候補log確率系列からトップ候補の文字列を求め、ブロック内の2つの連続するピークの間に他の文字が1つ以上ある場合は、それぞれのピークに位置する文字のX軸への射影が挟む区間の中央に区切り線を入れる。また、2つの連続するピークの間に他の文字がない場合は、その2つのピーク間の中央に区切り線を入れる。次に、ブロックと区切り線の交点(文字分割点)を求めて、文字に分割する(ステップS25)。
【0041】
図10の(a)~(e)に、分割の処理例を示す。
図10の(a)に、前処理された文字列パターンを示す。水平軸はX座標、垂直軸はY座標である。
図10の(b)に、空白込みトップ候補log確率系列を示す。ここでは、2つの連続するピークである、「f」のピークと「t」のピークの間、「r」のピークと「n」のピークの間、「n」のピークと「o」のピークの間、この「o」のピークと次の「o」のピークの間、その「o」のピークと「n」のピークの間にそれぞれ運筆が1つあるため、それらの運筆でブロックに区切っている。また、「t」のピークと「e」のピークの間には2つの運筆があり、その間の「t」の横棒の筆画については、そのX軸への射影がその後の「e」の筆画よりも「t」の縦棒の筆画に大きく重なるため、「t」の縦棒の筆画に統合し、残りの運筆(「t」
の横棒の筆画の後の運筆)でブロックに区切っている。
図10の(c)に、ブロックへの分割を示す。図中の矩形は、それぞれ1つのブロックを示している。
図10の(d)に、空白抜きトップ候補log確率系列を示す。図中の黒塗り点の位置で、トップ候補の文字が変わることを示している。ここでは、1つ目のブロック内の「a」のピークと「f」のピークの間(図中の実線)に他の文字が1つあるため、「a」のX軸への射影と「f」のX軸への射影が挟む区間の中央に区切り線(図中の1点鎖線)を入れている。また、3つ目のブロック内の「e」のピークと「r」のピークの間(図中の実線)には他の文字がないため、「e」のピークと「r」のピーク間の中央に区切り線を入れている。
図10の(e)に、文字分割の結果を示す。1番目のブロックと2番目のブロックがそれぞれ区切り線で2つの文字に分割されている。図中の矩形は、それぞれ1つの文字の筆画(1つの文字パターン)に対応している。
【0042】
上述の分割の処理は、文字が遅延筆画なしに筆記されることを前提としている。遅延筆画があることを前提とする場合は、後述する方法で遅延筆画を検出し、それを正しい文字区切りの位置に挿入する。もし、文字の一部の筆画でなく、文字そのものが遅延して筆記される場合、それが複数の文字であったとしても、分割の処理に問題はない。
図11に、2つの文字が書き足されたときの分割の処理例を示す。後から筆記される2つの文字(「e」と「a」)は別のブロックになり、それぞれが更に文字に分割される。一方、ある文字の一部の筆画が書き足される場合は、上述の文字分割が想定通りに機能しないため、遅延筆画の処理が必要となる。遅延筆画は、文字分割点がない筆画が先行する文字分割幅と重なることで検出する。或いは、筆記方向とは反対の長い運筆を検出するようにしてもよい。X軸への射影において、文字分割点がない筆画と、それまでに区切られた文字分割幅との重なりを調べ、最も重なる文字に当該筆画を統合する。
図12は、文字分割後の遅延筆画に対応する処理例を示す。ここでは、「t」の2番目の筆画(「t」の横棒)が遅延して(最後に)筆記され、2番目の「l」から「t」の横棒の筆画までの文字分割が機能しない(
図12の(a))。もし、「t」の横棒に文字分割点がなく、「t」の縦棒、「a」、1番目の「l」のいずれかの文字分割幅に重なる場合は、これを遅延筆画とする(
図12の(b))。ここでは、「t」の横棒が「t」の縦棒の文字分割幅に重なるため、「t」の横棒の筆画を遅延筆画として検出する。そして、これらの文字分割幅のうち「t」の縦棒の文字分割幅に最も重なるため、遅延筆画を「t」の縦棒の筆画に統合する(
図12の(c))。なお、遅延筆画を検出した場合、
図13に示すように、検出された遅延筆画を文字列パターンにおいて識別可能に表示するようにしてもよい。ここでは、遅延筆画(「t」の横棒)を囲む矩形を表示し且つ当該矩形を強調色で表示している。
【0043】
図4のフローチャートの説明に戻ると、表示制御部116は、ステップS16の誤り文字の検出結果(編集履歴)とステップS17の分割の結果とに基づいて、検出された誤り文字の文字列パターンにおける位置(誤り文字に対応する筆画)を特定し(ステップS18)、誤り文字及び正解文字を文字列パターンにおいて識別可能に表示する(ステップS19)。
【0044】
図14に、誤り文字及び正解文字(誤り訂正)の表示例を示す。
図14の上から1番目の例では、入力された文字列パターンから認識した文字列「amater」において5番目の文字と6番目の文字の間に脱字(正解文字「u」)があることが検出されたため、当該文字列パターンの分割の結果を用いて、5番目の文字「e」に対応する筆画と6番目の文字「r」に対応する筆画の間を脱字箇所として特定し、当該脱字箇所に矢印を付すとともに、当該矢印の下側に正解文字「u」を強調色で表示している。また、この例では、4番目の文字「t」の横棒に対応する遅延筆画を識別可能に表示している。また、
図14の上から2番目の例では、入力された文字列パターンから認識した文字列「allowwance」において5番目の文字が衍字であることが検出されたため、当該文字列パターンの分割の結果を用いて、5番目の文字「w」に対応する筆画を特定し、当該筆画を強調色
で表示し当該筆画の下側に下線を付している。また、
図14の上から3番目の例では、入力された文字列パターンから認識した文字列「grocerry」において6番目の文字が衍字であることが検出されたため、当該文字列パターンの分割の結果を用いて、6番目の文字「r」に対応する筆画を特定し、当該筆画を強調色で表示し当該筆画の下側に下線を付している。また、
図14の上から4番目の例では、入力された文字列パターンから認識した文字列「belerve」において4番目の文字が誤字(正解文字「i」)であり5番目の文字が誤字(正解文字「e」)であることが検出されたため、当該文字列パターンの分割の結果を用いて、4番目の文字「e」に対応する筆画を特定し、当該筆画を強調色で表示し当該筆画の下側に下線を付すとともに、当該筆画の下側に正解文字「i」を強調色で表示し、5番目の文字「r」に対応する筆画を特定し、当該筆画を強調色で表示し当該筆画の下側に下線を付すとともに、当該筆画の下側に正解文字「e」を強調色で表示している。
【0045】
このように、本実施形態の手法によれば、手書き入力された文字列パターンを文字毎に分割し、誤り文字の検出結果と分割の結果とに基づいて誤り文字(及び、正解文字)を文字列パターンにおいて識別可能に表示することで、手書き入力した文字列の誤り(どの文字が誤字又は衍字であるか、どこに脱字があるか、どう誤っているか)をユーザが認識し易くすることができる。
【0046】
3-2.オフライン方式
次に、
図15のフローチャートを用いて、オフライン方式での処理の流れについて説明する。なお、
図4のフローチャート(オンライン方式)と同様の処理については適宜説明を省略する。まず、処理部100は、入力部160で入力された文字列パターン(紙等に筆記された文字列をカメラ等で読み取った画像情報)を取得する(ステップS30)。
【0047】
次に、処理部100(前処理部)は、入力された文字列パターンに対して、微小点除去、平滑化、正規化の3ステップからなる前処理を適用する(ステップS31)。微小点除去のステップでは、画像読み取り等により発生する、背景の中の微小な黒点と文字領域の中の微小な白点を、ラベリングやモルフォロジー等により除去する。平滑化のステップでは、画像読み取り等で発生する文字輪郭のギザギザを、平滑化フィルタ等によって滑らかにしたりする。正規化のステップでは、入力された画像を、縦横比を保持しつつ拡大或いは縮小して、入力された文字列パターンを一定の高さに揃える。
【0048】
次に、処理部100(特徴抽出部)は、畳み込みニューラルネットワーク(CNN:Convolutional Neural Networks)を利用して、前処理された文字列パターンから空間特徴を抽出する(ステップS32)。
【0049】
次に、認識部110は、文字列パターンを左から右(縦書きの場合は、上から下)にスライスする一定幅のスライディングウィンドウに含まれる空間特徴から、空間系列の特徴系列を構成し、これをオンライン方式と同様の時系列認識器(BLSTM)に入力して、全字種に空白文字クラスを加えた候補文字クラスとその確率を出力する(ステップS33)。
図16に示す例は、前処理された文字列パターンからCNNで空間特徴を抽出し、BLSTMによって候補文字とその確率を出力する過程を、いくつかのスライディングウィンドウを選んで示している。各スライディングウィンドウでの最高確率の候補文字の値をグレーで示す。それらを連結すると下側に示す文字列になる。
【0050】
次に、認識部110は、ステップS33の出力(空間系列の候補文字クラスとその確率)から、CTCを用いて、認識結果の文字列を決定する(ステップS34)。これは、
図4のステップS14と同様の処理である。
【0051】
次に、誤り検出部112は、認識部110の出力から、言語モデルを用いて、最もそれらしい認識結果を選択し、選択した認識結果を参照テキストとして決定する(ステップS35)。なお、回答すべき正解の文字列が指定されている場合には、指定された文字列を参照テキストとする。次に、ステップS34で決定した認識結果の文字列における誤り文字を検出する(ステップS36)。これは、
図4のステップS15、S16と同様の処理である。
【0052】
次に、分割部114は、ステップS33の出力(空間系列の候補文字クラスとその確率)に基づいて、ステップS31で前処理された文字列パターンを文字毎に分割する(ステップS37)。この処理では、前処理された文字列パターンのスライディングウィンドウごとに空白文字を含めた候補文字クラス第一位(トップ候補)のlog確率を求めて空白込みトップ候補log確率系列を作成し、空白込みトップ候補log確率系列におけるピークとピーク間の中央で文字列パターンを分割する。同一の候補文字が連続する場合は、空白込みトップ候補log確率が最も高いものをピークとし、残りはピークから除外する。
図17に、分割の処理例を示す。
図17の(a)に、前処理された文字列パターンを示し、
図17の(b)に、空白込みトップ候補log確率系列を示し、
図17の(c)に、文字分割の結果を示す。
【0053】
次に、表示制御部116は、ステップS36の誤り文字の検出結果(編集履歴)とステップS37の分割の結果とに基づいて、検出された誤り文字の文字列パターンにおける位置(誤り文字に対応する領域)を特定し(ステップS38)、誤り文字及び正解文字を文字列パターンにおいて識別可能に表示する(ステップS39)。
【0054】
図18に、誤り文字及び正解文字(誤り訂正)の表示例を示す。
図18の上から1番目の例では、入力された文字列パターンから認識した文字列「amater」において5番目の文字と6番目の文字の間に脱字(正解文字「u」)があることが検出されたため、当該文字列パターンの分割の結果を用いて、5番目の文字「e」に対応する領域と6番目の文字「r」に対応する領域の間を脱字箇所として特定し、当該脱字箇所に矢印を付すとともに、当該矢印の下側に正解文字「u」を強調色で表示している。また、
図18の上から2番目の例では、入力された文字列パターンから認識した文字列「allowwance」において5番目の文字が衍字であることが検出されたため、当該文字列パターンの分割の結果を用いて、5番目の文字「w」に対応する領域を特定し、当該領域の下側に下線を付している。また、
図18の上から3番目の例では、入力された文字列パターンから認識した文字列「grocerry」において6番目の文字が衍字であることが検出されたため、当該文字列パターンの分割の結果を用いて、6番目の文字「r」に対応する領域を特定し、当該領域の下側に下線を付している。また、
図18の上から4番目の例では、入力された文字列パターンから認識した文字列「belerve」において4番目の文字が誤字(正解文字「i」)であり5番目の文字が誤字(正解文字「e」)であることが検出されたため、当該文字列パターンの分割の結果を用いて、4番目の文字「e」に対応する領域を特定し、当該領域の下側に下線を付すとともに、当該領域の下側に正解文字「i」を強調色で表示し、5番目の文字「r」に対応する領域を特定し、当該領域の下側に下線を付すとともに、当該領域の下側に正解文字「e」を強調色で表示している。
【0055】
このように、オフライン方式においても、オンライン方式と同様に、手書き入力した文字列の誤り(どの文字が誤字又は衍字であるか、どこに脱字があるか、どう誤っているか)をユーザが認識し易くすることができる。
【0056】
なお、文字列パターンにおける誤り文字や正解文字を強調色で表示する場合に、誤りの確信度(Confident)に基づいて強調色を変化させ、確信度が低い場合は、強調度の低い色(例えば、薄い色、透明度の高い色)で誤り文字や正解文字を表示するようにしてもよ
い。確信度は、文字認識における認識スコア(確からしさ)、確率、疑似確率などから求めることができる。例えば、誤った文字の候補が第一位で、その認識スコアが閾値T1以上である場合には強調色を濃い赤色とし、認識スコアが閾値T1未満で閾値T2(T2<T1)以上である場合には強調色を中ぐらいの濃さの赤色とし、認識スコアが閾値T2未満である場合には強調色を薄い赤色とする。或いは、誤った文字の候補であるが、その認識スコアと正解文字の認識スコアの差が閾値D1以上である場合には強調色を濃い赤色とし、認識スコアの差が閾値D1未満で閾値D2(D2<D1)以上である場合には強調色を中ぐらいの濃さの赤色とし、認識スコアの差が閾値D2未満である場合には強調色を薄い赤色とするようにしてもよい。
図19に、誤り訂正の表示における確信度による強調色の色調整の一例を示す。
図19の上側の例では、誤り文字である候補「i」の確信度(Confident)が高いため、正解文字「a」を濃い赤色で表示し、下側の例では、誤り文字である候補「e」の確信度(Confident)が低いため、正解文字「c」を薄い赤色で表示している。
【0057】
本発明は、上述の実施の形態に限定されるものではなく、種々の変更が可能である。本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【0058】
100…処理部、110…認識部、112…誤り検出部、114…分割部、116…表示制御部、160…入力部、170…記憶部、190…表示部