以下に、本願の開示する文字認識装置、文字認識装置制御プログラム、文字認識装置制御方法及び携帯端末装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する技術が限定されるものではない。
図1は、実施例1に係る文字認識装置のブロック図である。図1に示すように、本実施例に係る文字認識装置は、カメラ1、画像取得部2、文字認識処理部3、文字補正処理部4、出力部5、辞書検索部6、OCR辞書データ記憶部7及び辞書データ記憶部8を有する。
カメラ1は、画像取得部2からの指示を受けて対象の撮像を行う撮像装置である。例えば、カメラ1は、英語文章が記載されている本の1ページの撮像を行い、文字の画像を取得する。以下では、英語の文章が記載されている本を用いて文字認証を行う場合で説明する。
画像取得部2は、操作者から入力された文字認識開始の命令を受けて、カメラ1に撮影を指示する。そして、画像取得部2は、カメラ1が撮影した画像を取得する。そして、画像取得部2は、カメラ1が撮影した画像から例えばYUV形式などの画像データを取得する。そして、画像取得部2は、取得した画像データを文字認識処理部3へ出力する。以下、本実施例の説明ではYUV形式の画像データ(YUVデータと称呼する)を用いる例を説明する。
OCR辞書データ記憶部7は、複数の画像パターンを記憶している。そして、OCR辞書データ記憶部7は、各画像パターンに対応する文字コードである候補文字を画像パターンに対応させたOCR辞書データを記憶している。さらに、OCR辞書データ記憶部7は、各候補文字のその候補文字に対応する画像パターンとの類似度を記憶している。このOCR辞書データ記憶部7が「文字データ記憶部」の一例にあたる。
文字認識処理部3は、英文が写った画像のYUVデータの入力を画像取得部2から受ける。文字認識処理部3は、YUVデータから文字列を抽出する。ここで、本実施例では、文字認識処理部3は、英文中の空白から次の空白までを1単語とし、1単語を1つの文字列として抽出している。
そして、文字認識処理部3は、認識した各文字列にインデックスを割り振る。このインデックスは文字列を識別できる識別子であれば特に制限はなく、例えば連番の数字でも良い。
さらに、文字認識処理部3は、文字列に含まれる各文字の画像パターンを抽出する。そして、文字認識処理部3は、認識した各文字列の文字数を取得する。
さらに、文字認識処理部3は、抽出した文字の画像パターンの候補文字をOCR辞書データ記憶部7が記憶しているOCR辞書データから検索する。そして、文字認識処理部3は、検出した候補文字の文字コードを取得する。本実施例では、文字認識処理部3は、10個を候補文字の上限として候補文字の文字コードの取得を行う。具体的には、文字認識処理部3は、画像パターンに対応する候補文字を全て検索し、検索でヒットした候補文字が10個以上の場合には、その中から類似度の高い順に10個取得する。
そして、文字認識処理部3は、取得した候補文字のうち最も類似度が高い候補文字を認識文字とし、認識文字の文字コードを画像に写っている文字の文字コードとする。さらに、文字認識処理部3は、残りの候補文字の文字コードを次候補文字の文字コードとする。例えば、文字認識処理部3は、画像に写った文字の画像パターンから5個の候補文字を取得した場合、最も類似度が高い1つの候補文字を画像に写った文字の認識文字とし、残りの4つの候補文字を次候補文字とする。
文字認識処理部3は、各文字列に対応するインデックス、インデックスに対応する文字列の文字数及びインデックスに対応する各文字列を構成する文字の文字コードを文字補正処理部4へ出力する。さらに、文字認識処理部3は、インデックスに対応する各文字列を構成する文字の次候補文字の文字コード及び各次候補文字の類似度を文字補正処理部4へ出力する。この文字認識処理部3が「文字認識処理部」及び「文字列作成部」の一例にあたる。
辞書データ記憶部8は、メモリやハードディスクなどの記憶装置である。そして、辞書データ記憶部8は、複数の文字列と各文字列の意味を対応させた辞書データを記憶している。
辞書検索部6は、辞書データ記憶部8が記憶している辞書データを用いて、削除処理部41又は付加処理部42から入力された文字列の前方一致検索を行う。そして、辞書検索部6は、検索ができたか否かの検索結果を文字列の入力元へ出力する。
文字補正処理部4は、削除処理部41及び付加処理部42を有する。文字補正処理部4は、各文字列に対応するインデックス、インデックスに対応する文字列の文字数及びインデックスに対応する各文字列を構成する文字の文字コードの入力を文字認識処理部3から受ける。また、文字補正処理部4は、インデックスに対応する各文字列を構成する文字の次候補文字の文字コード及び各次候補文字の類似度を文字認識処理部3から受信する。
そして、文字補正処理部4は、図2のような、各文字列に対応する認識文字及び次候補文字が記載された認識文字表を作成する。図2は、認識文字表の一例の図である。図2では、紙面に向かって左端の欄が各文字列に割り当てられたインデックスである。本実施例では、インデックスを文の先頭の文字列から順番にChar No.1、Char No.2、Char No.3・・・としている。図2では「Archaeological research indicates that people」という文章の文字認識を行った場合の表である。図2は、文字認識処理部3によって「Archaeological research indicates that people」という文章が「Archae{logic1| research Indecates that people」と認識されたことを表している。図2では、各インデックスの後に文字認識処理部3によって認識された文字列を構成する認識文字が並んでいる。この一番上に並んだ点線101で囲われている文字は後述する文字の削除及び追加を把握するための文字である。この一番上に並んだ認識文字を「補正制御用文字」という。そして、図2の各文字の紙面に向かって下側に、認識文字の文字コードを再度並べ、さらに類似度の高い順に下に向かって次候補文字が並べられている。例えば、Char No.1の文字列の6番目の文字である補正制御文字102に対する、認識文字は「e」であり、次候補文字は「c」「g」である。また、Char No.1の文字列の7番目の文字である文字103では、認識文字及び次候補文字合わせて10個の文字が記載されている。上述したように、本実施例では、文字認識処理部3が文字を検出し取得するときに10個を上限としている。すなわち、本来であれば文字103の候補文字は10個以上あるのだが、認識文字表では上限の10個の文字が記載されている。ここで、図2では、分かりやすいように認識文字及び次候補文字として実際の文字が記載されているが、これは実際には文字コードが記載されている。
文字補正処理部4は、作成した認識文字表を削除処理部41に送信する。そして、文字補正処理部4は、削除処理部41及び付加処理部42による文字列の検索を用いた認識文字の補正が行われた認識文字表を付加処理部42から受信する。削除処理部41及び付加処理部42による文字列の検索を用いた認識文字の補正の詳細ついては後で説明する。
文字補正処理部4は、あるインデックスを有する文字列の削除処理部41及び付加処理部42による補正が終わると、次のインデックスを有する文字列の補正を削除処理部41及び付加処理部42に行わせる。また、文字補正処理部4は、削除処理部41又は付加処理部42のいずれかから検索不可の通知を受け取った場合にも、次のインデックスを有する文字列の補正を削除処理部41及び付加処理部42に行わせる。そして、文字補正処理部4は、削除処理部41及び付加処理部42による文字列の補正を繰返し、認識文字表に記載されている全てのインデックスに対応した文字列について補正を実行する。
そして、文字補正処理部4は、全てのインデックスに対応した文字列の補正が完了した認識文字表を付加処理部42から受信する。そして、文字補正処理部4は、全てのインデックスに対応した文字列の補正が完了した認識文字表に記載されている各文字列を構成する文字の文字コードを、画像に写っている文字列の認識文字として出力部5へ出力する。
削除処理部41は、文字補正処理部4が作成した認識文字表を受信する。そして、削除処理部41は、認識文字を並べた文字列を辞書検索部6に送信する。そして、削除処理部41は、辞書検索部6から文字列の検索結果を取得する。文字補正処理部4から受信した認識文字表の認識文字列がそのまま辞書検索部6により検索された場合には、削除処理部41は、文字補正処理部4から受け取った状態と同じ状態の認識文字表及び現在検索による補正処理を行っている文字列のインデックスを付加処理部42へ出力する。
また、認識文字を並べた文字列を辞書検索部6が検索できない場合には、削除処理部41は、認識文字を並べた文字列の末尾の1文字を削る。そして、削除処理部41は、認識文字を並べた文字列の末尾の1文字を削った文字列を辞書検索部6に送信する。このとき削除処理部41は、認識文字表の補正制御文字の文字列の末尾の1文字を削除する。そして、削除処理部41は、辞書検索部6から文字列の検索結果を取得する。辞書検索部6により文字列の検索ができた場合には、削除処理部41は、補正制御文字の文字列の末尾の1文字が削除された状態の認識文字表及び現在検索による補正処理を行っている文字列のインデックスを付加処理部42へ出力する。
また、認識文字を並べた文字列の末尾の1文字を削った文字列を辞書検索部6が検索できない場合には、削除処理部41は、認識文字を並べた文字列の末尾の1文字を削った文字列の末尾の1文字をさらに削る。すなわち、この状態では、認識文字を並べた文字列は、末尾から2つの文字が削られている。そして、削除処理部41は、認識文字を並べた文字列から末尾から2つの文字を削除した文字列を辞書検索部6に送信する。このとき削除処理部41は、認識文字表の補正制御文字の文字列の末尾から2文字目を削除する。そして、削除処理部41は、辞書検索部6から文字列の検索結果を取得する。
削除処理部41は、上記のような検索できなかった文字列の末尾の1文字の削除を、辞書検索部6が検索できるまで繰り返す。このとき、削除処理部41は、末尾の1文字の削除にあわせて、認識文字表の補正制御文字を並べた文字列から1文字ずつ削除して行く。そして、削除処理部41は、辞書検索部6が検索できた時点での認識文字表及び現在検索による補正処理を行っている文字列のインデックスを付加処理部42へ出力する。
ここで、削除処理部41は、文字列が1文字になっても辞書検索部6が検索できない場合には、検索を行っているインデックスに対応する文字列を検索不可と判定し、文字補正処理部4に検索付加の通知を送信する。
このように、削除処理部41は、順次末尾の1文字を削って行う検索を認識文字表に記載された文字列について行っていく。この削除処理部41及び辞書検索部6の機能の一部が「文字削除部」の一例にあたる。
ここで、削除処理部41の処理を、図2のChar No.1を有する文字列である「Archae{logic1|」を例に具体的に説明する。
まず、削除処理部41は、「Archae{logic1|」を辞書検索部6に検索させる。「Archae{logic1|」は辞書データ記憶部8には無いので、削除処理部41は、検索不可という検索結果を受け取る。
次に、削除処理部41は、「Archae{logic1|」の末尾の1文字を削除し「Archae{logic1」という文字列にする。そして、削除処理部41は、この「Archae{logic1」を辞書検索部6に検索させる。このように、削除処理部41は、「Archae{logic1|」の末尾から1文字ずつ削除していき、「Archae{logic1」、「Archae{logic」、「Archae{logi」、「Archae{log」・・・「Archae{l」、「Archae」を順次辞書検索部6に検索させていく。ここで、「Archae」は元の文字列「Archaeological」の一部であるので、辞書検索部6は、前方一致検索で「Archae」を辞書データ記憶部8の中から検索できる。
このとき、削除処理部41は、認識文字表の点線101で囲われた補正制御文字のうち範囲104の部分の文字を既に削除している。そこで、削除処理部41は、点線101で囲われた補正制御文字のうち範囲104の部分の文字が削除された状態、すなわち、点線101の中には「Archae」だけが残っている認識文字表を記憶する。
そして、削除処理部41は、補正制御文字の文字列が削除された状態、例えば、点線101で囲われた補正制御文字の文字列が「Archae」とされた状態の認識文字表を付加処理部42に出力する。
付加処理部42は、削除処理部41により補正制御文字が削除された認識文字表を、削除処理部41から受信する。そして、付加処理部42は、残っている補正制御文字の文字列に対応する認識文字の文字列を取得する。そして、付加処理部42は、取得した認識文字の文字列の末尾に、次の文字の最も類似度が高い次候補文字を付加する。そして、付加処理部42は、取得した認識文字の文字列に次候補文字を付加した文字列を候補文字列とする。そして、付加処理部42は、候補文字列を辞書検索部6に送信する。そして、付加処理部42は、候補文字列の検索結果を辞書検索部6から受信する。
候補文字列が検索できない場合、付加処理部42は、末尾に付加している次候補文字を削除し、次に類似度が高い次候補文字を文字列の末尾に付加した文字列を候補文字列とする。付加処理部42は、候補文字列とした文字列を辞書検索部6に送信する。そして、付加処理部42は、候補文字列の検索結果を辞書検索部6から受信する。付加処理部42は、候補文字列が辞書検索部6により検索されるまで、候補文字列の末尾の文字を順に類似度の低い次候補文字へ置き換える。認識文字表に記載された全ての次候補文字に置き換えても検索できない場合、付加処理部42は、検索不可と判定し、検索不可の通知を文字補正処理部4に送信する。
候補文字列が辞書検索部6により検索されると、付加処理部42は、検索された次候補文字を認識文字表の補正制御文字の文字列の末尾に記載する。これにより、認識文字表における削除処理部41により削除された補正制御文字の文字列が1文字増えることになる。
さらに、付加処理部42は、辞書検索部6により検索された文字列の末尾に認識文字を付加し、候補文字とする。付加処理部42は、候補文字列とした文字列を辞書検索部6に送信する。そして、付加処理部42は、候補文字列の検索結果を辞書検索部6から受信する。候補文字列が検索できない場合、付加処理部42は、末尾に付加している認識文字を削除し、最も類似度が高い次候補文字を付加し候補文字列とする。付加処理部42は、候補文字列とした文字列を辞書検索部6に送信する。そして、付加処理部42は、候補文字列の検索結果を辞書検索部6から受信する。付加処理部42は、候補文字列が辞書検索部6により検索されるまで、候補文字列の末尾の文字を順に類似度の低い次候補文字へ置き換える。この場合も、認識文字表に記載された全ての次候補文字に置き換えても検索できなければ、付加処理部42は、検索不可と判定し、検索不可の通知を文字補正処理部4に送信する。
付加処理部42は、検索を行っているインデックスを有する文字列の文字数に一致するまで、検索された文字列の末尾に認識文字及び次候補文字を順次加えた文字列を候補文字としていくことを繰り返す。そして、付加処理部42は、検索を行っているインデックスを有する文字列の文字数と一致する文字数を有する候補文字を辞書検索部6が辞書データから検索すると、その時点での認識文字表を記憶する。
そして、付加処理部42は、記憶した認識文字表を文字補正処理部4へ出力する。この付加処理部42及び辞書検索部6の機能の一部が「文字付加部」の一例にあたる。
ここで、付加処理部42の処理を、図2のChar No.1を有する文字列である「Archae{logic1|」を例に具体的に説明する。以下の説明では、上述した削除処理部41の処理により、「Archae」となるまで補正制御文字の削除が行われた状態の認識文字表を付加処理部42が受信したものとする。
付加処理部42は、残っている補正制御文字の文字列「Archae」の末尾に次の文字103の次候補文字のうち最も類似度の高い次候補文字である「<」を加えて「Archae<」を候補文字とする。そして、付加処理部42は、「Archae<」を辞書検索部6に検索させる。このように、付加処理部42は、次に類似度の高い次候補文字を順次付加していき、「Archae<」、「Archaet」、「Archae(」、「Archaeo」を辞書検索部6に検索させていく。ここで、辞書検索部6は、「Archae<」、「Archaet」、「Archae(」は辞書データ記憶部8に無いためそれらを検索することができないが、「Archaeo」は元の文字列「Archaeological」の一部であり、検索できる。
次に、付加処理部42は、文字列「Archaeo」の末尾に次の文字105の認識文字「l」を加えて「Achaeol」を次候補文字とする。この場合、「Achaeol」は、元の文字列「Archaeological」の一部であり、辞書検索部6は「Achaeol」を検索できる。この後、付加処理部42は、末尾に認識文字を加え検索ができなければ次候補文字の類似度の高いものから順に置き換えていくことを、辞書検索部6が検索できるまで繰り返すという処理を、文字列が「Archaeological」になるまで繰り返す。
この時、付加処理部42は、認識文字表の点線101で囲われた補正制御文字のうち範囲104の部分の文字を「ological」に置き換えている。すなわち、点線101で囲われた補正制御文字の文字列は「Archaeological」と記載されている。
そして、付加処理部42は、補正制御文字の文字列が書き換えられた状態、例えば、点線101で囲われた補正制御文字の文字列は「Archaeological」と書き換えられた状態の認識文字表を文字補正処理部4に送信する。
ここで、本実施例では検索処理を軽減するため、付加処理部42は、文字列に最初に文字を付加する場合、認識文字の付加は行わず、次候補文字から付加を始めている。この点、1回分検索回数は多くなるが、文字列に最初に文字を付加する場合にも、付加処理部42は認識文字の付加からはじめても良い。
出力部5は、画像に写された文字列の認識文字の文字コードの入力を文字補正処理部4から受ける。そして、出力部5は、受信した画像に映された文字列の認識文字の文字コードを認識文字とともに出力する。認識文字及び文字コードの出力として、例えば、出力部5は、モニタなどの表示画面に認識文字及び文字コードを表示させてもよいし、プリンタなどを用いて紙に認識文字及び文字コードを印刷してもよい。さらに、出力部5は、他の装置などに認識文字及び文字コードのデータを出力しても良い。
次に、図3を参照して本実施例に係る文字認識装置の文字認識処理の全体的な流れについて説明する。図3は、実施例1に係る文字認識装置の文字認識処理及び補正処理のフローチャートである。ここで、文字認識処理とは単に画像に写っている文字の対応する文字コードを特定する処理を指し、補正処理とは文字認識処理で特定された認識文字に対して補正を行う処理を指す。
画像取得部2は、文字認識処理の開始命令を受けて、カメラ1に撮像を行わせる。そして、画像取得部2は、カメラ1が撮像した画像を取得し、取得した画像からYUVデータを取得する(ステップS1)。
文字認識処理部3は、YUVデータの入力を画像取得部2から受ける。そして、文字認識処理部3は、OCR辞書データ記憶部7を参照し、YUVデータを用いて文字認識を行う(ステップS2)。さらに、文字認識処理部3は、認識した文字を1単語毎に分割し文字列を抽出する(ステップS3)。
文字認識処理部3は、各文字列の文字数、各文字列を構成する文字の認識結果である認識文字の文字コード、各文字列を構成する文字の次候補文字の候補数及び各文字列を構成する文字の次候補文字の文字コードを求める(ステップS4)。
文字補正処理部4は、各文字列の文字数、各文字列を構成する文字の認識結果である認識文字の文字コード、各文字列を構成する文字の次候補文字の候補数及び各文字列を構成する文字の次候補文字の文字コードの入力を文字認識処理部3から受ける。そして、文字補正処理部4は、受信したデータを用いて認識文字表を作成する(ステップS5)。
文字補正処理部4は、検索による補正を行う文字列のインデックスの番号をaとし、まず、a=1とする。本実施例でインデックスとしてChar No.を用いているので、Char No.がそのままインデックスの番号aとなるので、Char No.=1とする(ステップS6)。以下では、インデックスの番号をChar No.として表す。
文字補正処理部4は、削除処理部41及び付加処理部42を用いて文字列の検索処理を行い、文字認識処理部3により認識された画像に写っている文字の認識文字を補正する(ステップS7)。
文字補正処理部4は、Char No.を1つインクリメントする(ステップS8)。文字補正処理部4は、Char No.が文字認識処理部3から受信した認識した文字列の文字列数以下か否かを判定する(ステップS9)。Char No.が認識した文字列の文字数以下の場合(ステップS9肯定)、ステップS7及びステップS8を繰り返す。
これに対して、Char No.が認識した文字列の文字数以下の場合(ステップS9否定)、文字補正処理部4は、認識文字表を出力部5に出力する。そして、出力部5は、認識文字表に記載されている各文字列を構成する文字の文字コードを、画像に写っている文字の認識文字として出力する(ステップS10)。
次に、図4を参照して、文字列の検索処理による認識文字の補正について説明する。図4は、文字列の検索処理による認識文字の補正のフローチャートである。図4のフローチャートは図3のステップS7で行われる処理を詳細にしたものである。
削除処理部41は、検索対象の文字列の文字数をnとする(ステップS701)。例えば、検索対象の文字列が「Archaeological」であれば、n=14とする。ここで、本実施例では、インデックスとしてChar No.が与えられているので、以下では、検索対象としている認識文字表における文字列のことを現在のChar No.の文字列という。そして、実際に検索を行う対象となる文字列(文字が削除される前の文字列や文字が削除された状態の文字列を含む)のことを「現在の検索対象の文字列」と言う。
削除処理部41は、検索対象の文字列を辞書検索部6に出力する。そして、辞書検索部6は、受信した現在の検索対象の文字列を辞書データ記憶部8において前方一致検索する(ステップS702)。
削除処理部41は、辞書検索部6からの検索結果を受けて、辞書データ記憶部8に対する検索で現在の検索対象の文字列が見つかったか否かを判定する(ステップS703)。検索で文字列が見つからない場合(ステップS703否定)、削除処理部41は、現在の検索対象の文字数が1より大きいか(n>1)を判定する(ステップS704)。現在の検索対象の文字列が1より小さい場合(ステップS704否定)、すなわち現在の検索対象の文字列が1文字になってしまっている場合、削除処理部41は、検索不可と判定する。そして、削除処理部41は、検索不可の通知を文字補正処理部4に出力し(ステップS719)、検索による認識文字の修正処理を終了する。
これに対して、n>1と判定された場合(ステップS704肯定)、削除処理部41は、現在のChar No.の補正制御文字の末尾の1文字を削除する(ステップS705)。そして、削除処理部41は、文字を削った補正制御文字で構成される文字列を検索対象の文字列とする。さらに、削除処理部41は、nを1つインクリメントする(n=n+1)(ステップS706)。その後、ステップS702に戻る。
一方、検索で文字列が見つかった場合(ステップS703肯定)、付加処理部42は、次候補文字の番号mを1(m=1)とする(ステップS707)。
付加処理部42は、nが現在のChar No.の文字列の元の文字数より小さいか否かを判定する(ステップS708)。nが現在のChar No.の文字列の元の文字数より小さくない場合(ステップS708否定)、具体的にはnが現在のChar No.の文字列の元の文字数と一致する場合、付加処理部42は、現在のChar No.の文字列の修正が終わった認識文字表を文字補正処理部4へ出力し(ステップS720)、現在のChar No.の文字列の検索を終了する。
これに対して、nが現在のChar No.の文字列の元の文字数より小さい場合(ステップS708肯定)、付加処理部42は、現在のChar No.の文字列に対して文字の付加は初めてか否かを判定する(ステップS709)。付加が初めての場合(ステップS709肯定)、付加処理部42は、n+1番目の文字として認識文字を追加する(ステップS710)。そして、付加処理部42は、n+1番目の文字として認識文字を追加した文字列を辞書検索部6に出力する。そして、辞書検索部6は、辞書データ記憶部8に対してn+1番目の文字として認識文字を追加した文字列の前方一致検索を行う(ステップS711)。付加処理部42は、辞書検索部6から検索結果を受けて、n+1番目の文字として認識文字を追加した文字列が見つかったか否かを判定する(ステップS712)。n+1番目の文字として認識文字を追加した文字列が見つかった場合(ステップS712肯定)、付加処理部42は、nを1つインクリメントし(ステップS718)、ステップS708に戻る。
また、付加が初めてではない場合(ステップS709否定)、付加処理部42は、n+1番目の文字としてm番目の次候補文字を追加する(ステップS713)。また、検索でn+1番目の文字として認識文字を追加した文字列が見つからなかった場合(ステップS712否定)も、付加処理部42は、n+1番目の文字としてm番目の次候補文字を追加する(ステップS713)。そして、付加処理部42は、n+1番目の文字としてm番目の次候補文字を追加した文字列を辞書検索部6に出力する。そして、辞書検索部6は、辞書データ記憶部8に対してn+1番目の文字としてm番目の次候補文字を追加した文字列の前方一致検索を行う(ステップS714)。付加処理部42は、辞書検索部6から検索結果を受けて、n+1番目の文字としてm番目の次候補文字を追加した文字列が見つかったか否かを判定する(ステップS715)。n+1番目の文字としてm番目の次候補文字を追加した文字列が見つかった場合(ステップS715肯定)、付加処理部42は、nを1つインクリメントし(ステップS718)、ステップS708に戻る。
これに対して、n+1番目の文字としてm番目の次候補文字を追加した文字列が見つからなかった場合(ステップS715否定)、付加処理部42は、m+1番目の次候補文字があるか否かを判定する(ステップS716)。m+1番目の次候補文字がある場合(ステップS716肯定)、付加処理部42は、mを1つインクリメント(m=m+1)し(ステップS717)、ステップS713へ戻る。
一方、m+1番目の次候補文字が無い場合(ステップS716否定)、付加処理部42は、検索不可と判定する。そして、付加処理部42は、検索不可の通知を文字補正処理部4へ出力し(ステップS719)、現在のChar No.の文字列の修正を終了する。
以上に説明したように、本実施例に係る文字認識装置は、OCRなどの文字認識処理で認識した文字列に対して、末尾の文字列を1文字ずつ削除しながら辞書で前方一致検索を行う。さらに、本実施例に係る文字認識装置は、削除による検索で見つかった文字に対して文字を1文字ずつ増やしながら辞書で前方一致検索を行い、検索で見つかった文字に文字列を修正する。これにより、本実施例に係る文字認識装置は、認識文字を辞書に載っている適切な文字列に修正することができ、適切な文字認識を行うことができる。また、1文字ずつ削除しながら検索することで、先頭から認識が正確にできていない文字までの部分を特定することができ、先頭部分の検索の手間を省けるので、検索のスピードを向上させることができる。さらに、文字の付加による検索も、先頭部分の文字認識が正確にできている部分に対して行うので、先頭の文字から順に付加して検索を行う場合に比べて検索スピードを向上させることができる。
さらに、本実施例に係る文字認識装置は、文末の1文字を削除していく検索で、検索されなかった認識文字を、文末の1文字を追加していく検索の実行において再度利用している。そのため、単に文末の1文字を削除していく検索と、文末に1文字を付加していく検索とを組み合わせた場合に比べて、より迅速により適切な文字列の認識を行うことができる。
ここで、以上の説明では、文字認識装置が、カメラ1、画像取得部2、文字認識処理部3及びOCR辞書データ記憶部7を備え、それらを用いて画像に含まれる文字に対して文字認識処理を行い文字列を取得したが、その処理を外部の装置が行ってもよい。の場合、文字認識装置は、文字補正処理部4、出力部5、辞書検索部6及び辞書データ記憶部8を備えればよい。そして、OCR装置などの外部の装置で読み込まれ文字認識された文字列を、文字認識装置が取得する。その取得した文字に対して、文字認識装置が上述した検索を用いた文字列の補正を行うことになる。
図5は、実施例2に係る文字認識装置のブロック図である。本実施例に係る文字認識装置は、カメラで文字を撮影するときに、モバイルライトをONの状態とOFFの状態の2つの状態で撮影を行い、その2つの画像を用いて文字認識を行うことが実施例1と異なるものである。ここで、文字認識とは文字が写っている画像から文字を認識する処理のみ指し、それ以降の処理は文字補正処理と言う。そこで、以下では、文字の撮影及び2つの画像を用いた文字認識について主に説明する。図5において、図1と同じ符号を有する各部は特に説明の無い限り同じ機能を有するものとする。
以下では、本実施例に係る文字認識装置として携帯電話を例に説明する。図5に示すように、本実施例に係る文字認識装置は、実施例1に係る文字認識装置にモバイルライト9を加えたものである。
画像取得部2は、操作者から入力された文字認識開始の命令を受けて、まず、モバイルライト9をOFFにする。そして、画像取得部2は、モバイルライト9がOFFの状態で、カメラ1に撮影を指示する。そして、画像取得部2は、モバイルライト9がOFFの状態でカメラ1が撮影した画像を取得する。そして、画像取得部2は、モバイルライト9がOFFの状態で写した画像からYUVデータを取得する。そして、画像取得部2は、モバイルライト9がOFFの状態で写した画像のYUVデータを文字認識処理部3へ出力する。
次に、画像取得部2は、モバイルライト9をONにする。そして、画像取得部2は、モバイルライト9がONの状態で、カメラ1に撮影を指示する。そして、画像取得部2は、モバイルライト9がONの状態でカメラ1が撮影した画像を取得する。そして、画像取得部2は、モバイルライト9がONの状態で写した画像からYUVデータを取得する。そして、画像取得部2は、モバイルライト9がONの状態で写した画像のYUVデータを文字認識処理部3へ出力する。
文字認識処理部3は、モバイルライト9がOFFの状態で写した画像のYUVデータ及びモバイルライト9がONの状態で写した画像のYUVデータを画像取得部2から受信する。
文字認識処理部3は、まず、モバイルライト9がOFFの状態で写した画像のYUVデータに対してOCR辞書データ記憶部7が記憶しているOCR辞書データを用いて文字認識処理を行う。そして、文字認識処理部3は、文字認識ができない文字列がある場合には、文字認識ができない文字列が先頭から何番目の文字列かを記憶する。
次に、文字認識処理部3は、モバイルライト9がONの状態で写した画像のYUVデータに対してOCR辞書データ記憶部7が記憶しているOCR辞書データを用いて文字認識処理を行う。文字認識処理部3は、記憶している先頭から何番目の文字列かの情報を用いて、モバイルライト9がONの状態で写した画像から認識した文字列のから、モバイルライトがOFFの状態で写した画像のYUVデータで認識できなかった文字列を特定する。そして、文字認識処理部3は、モバイルライトがOFFの状態で写した画像のYUVデータで認識できなかった文字列とモバイルライト9がONの状態で写した画像のYUVデータから認識した文字列とを置き換える。
ここで、文字認識ができない文字列がある場合について具体的に説明する。例えば、文字がマーカーなどでマーキングされている場合には、光を当てない場合コントラスト差が十分に出ない。そして、コントラスト差が閾値を超えなければ、文字認識処理部3は、文字認識ができないと判断する。そのため、モバイルライト9がOFFの場合には、文字認識処理部3は、マーキングされた文字列の文字認識ができない場合がある。これに対して、マーカーなどでマーキングされた文字列に対して、光を当てた場合、コントラスト差が十分に出る。そのため、モバイルライト9がONの場合には、文字認識処理部3は、マーキングされた文字列を認識することができる。そこで、モバイルライト9がOFFの場合に認識できなかった文字列を、モバイルライト9がONの場合に認識した文字列に置き換えることで、文字認識処理部3の文字認識の精度を向上させることができる。
そして、本実施例に係る文字認識装置は、上述した文字認識処理によって認識した認識文字列に対して、実施例1で説明した検索による認識文字の修正を加える文字補処理を行う。
次に、図6を参照して、本実施例に係る文字認識装置における文字認識処理について説明する。図6は、実施例2に係る文字認識装置における文字認識処理のフローチャートである。
画像取得部2は、操作者から入力された文字認識開始の命令を受けて、モバイルライト9をOFFにする(ステップS11)。
次に、画像取得部2は、モバイルライト9がOFFの状態でカメラ1に撮像を行わせ、撮影された画像を取得する。そして、画像取得部2は、モバイルライト9がOFFの状態で撮影された画像からYUVデータを取得する(ステップS12)。
文字認識処理部3は、モバイルライト9がOFFの状態で写した画像のYUVデータを画像取得部2から取得する。そして、文字認識処理部3は、モバイルライト9がOFFの状態で写した画像のYUVデータに対してOCR辞書データを用いて文字認識を行う(ステップS13)。
文字認識処理部3は、認識した文字を文字列単位に分割する(ステップS14)。そして、文字認識処理部3は、文字認識ができなかった文字列が何番目の文字列かを記憶する(ステップS15)。
画像取得部2は、モバイルライト9をONにする(ステップS16)。
次に、画像取得部2は、モバイルライト9がONの状態でカメラ1に撮像を行わせ、撮影された画像を取得する。そして、画像取得部2は、モバイルライト9がONの状態で撮影された画像からYUVデータを取得する(ステップS17)。
文字認識処理部3は、モバイルライト9がONの状態で写した画像のYUVデータを画像取得部2から取得する。そして、文字認識処理部3は、モバイルライト9がONの状態で写した画像のYUVデータに対してOCR辞書データを用いて文字認識を行う。そして、文字認識処理部3は、認識できなかった文字列が何番目の文字列かの情報を用いて、モバイルライト9がOFFの場合に認識できなかった文字列を、モバイルライト9がONの場合に認識した文字列に置き換える(ステップS18)。
以上に説明した文字認識処理によって認識した認識文字列に対して、実施例1で説明した検索による認識文字の修正を加える文字補処理を行うことで、より正確な文字の認識を行うことができ、文字の認識の精度を向上させることが可能となる。
ここで、本実施例では、携帯電話に付属しているモバイルライトを例に説明したが、光を被写体にあてる光源であれば他のものを用いても良い。さらに、本実施例では、ライトがOFFの状態で認識できない文字をライトがONの状態で認識した文字に置き換えたが、これは逆に、ライトがONの状態認識できない文字をライトがOFFの状態で認識した文字に置き換えてもよい。
図7は、実施例3に係る文字認識装置のブロック図である。本実施例に係る文字認識装置は、認識した文字列を用いて単語帳を自動的に作成しさらにその単語帳を基にした問題を作成することが実施例1と異なるものである。そこで、以下では、認識した文字列を用いて単語帳の作成及びその単語帳を用いた問題の作成について主に説明する。図7において、図1と同じ符号を有する各部は特に説明の無い限り同じ機能を有するものとする。以下の説明では、カメラ1で英文を撮影した場合について説明する。本実施例では、実際には出力部5が携帯電話の表示画面に各種画面を表示させるが、説明の都合上、各部が表示画面に表示させるように説明する場合がある。
図7に示すように、本実施例に係る文字認識装置は、キー制御部10、単語帳作成部11及び問題作成部12を実施例1に係る文字認識装置に加えたものである。
カメラ1、画像取得部2、文字認識処理部3、文字補正処理部4、辞書検索部6、OCR辞書データ記憶部7及び辞書データ記憶部8は実施例1と同様の文字認識処理及び文字補正処理を行う。
キー制御部10は、操作者が操作キーを用いて入力したデータを各部へ出力する。ただし、以下では説明の都合上操作者が操作キーを用いて入力したデータが各部へ直接入力されるように説明する場合がある。
単語帳作成部11は、文字補正処理部4が補正を加えた認識文字の文字列の入力を受ける。そして、単語帳作成部11は、受信した文字列を辞書検索部6に出力する。そして、単語帳作成部11は、受信した文字列の意味の入力を辞書検索部6から受ける。そして、単語帳作成部11は、図8に示すような関係付けテーブルを作成する。図8は、関係付けテーブルの一例の図である。単語帳作成部11は、図8に示すように、新たなインデックスを作成し、そのインデックスに文字列及び文字列の意味を対応付けた関係付けテーブルを作成する。本実施例では、単語帳作成部11は、1つの文に含まれる文字列に対して通し番号を有するインデックスを割り当てる。そして、単語帳作成部11は、作成した関係付け表を記憶する。
そして、単語帳作成部11は、関連付けテーブルを問題作成部12へ出力する。
問題作成部12は、問題定義ファイルのフォーマットを記憶している。図9は、英語問題定義ファイルの一例の図である。本実施例では、問題作成部12は、図9で示すような英語問題定義ファイル200を作成するためのフォーマットを記憶している。ここで、図9は、既に問題が作成された状態を表しているが、実際には、問題作成部12が記憶しているフォーマットに対して以下で説明するような処理を問題作成部12が実施することにより、図9の状態が完成する。
まず、図9を参照して、問題作成部12が英語の問題を作成する手順を説明する。問題作成部12は、単語帳作成部11から関連付けテーブルを取得する。そして、問題作成部12は、ピリオドとピリオドとの間の文字列を関連付けテーブルから取得することで1文を構成する文字列を抽出する。そして、問題作成部12は、1文毎に問題番号201を割り当て、英語問題定義ファイル200に記載する。例えば、撮影した画像の中に10個の文がある場合には、問題番号201は、No:1〜No:10が割り振られる。そして、問題作成部12は、単語帳作成部11が作成した関係付けテーブルを参照し、各問題で用いられる単語群定義文202を作成する。具体的には、問題作成部12は、各問題番号の下にその文に含まれる単語のインデックスを一行毎に記載する。さらに、問題作成部12は、各インデックスの後ろに、そのインデックスを有する文字列の文字コード221を記載する。さらに、文字コード221の後ろに、その文字列の意味を並べて記載していく。図9の点線222で囲われた部分が文字列の意味を記載した部分である。
次に、問題作成部12は、操作者が操作キーを用いて指定した作成する問題形式の入力を受ける。本実施例では、操作者は、問題形式として、穴埋め、並び替え又は選択問題の3つが選べる。
穴埋め問題の作成が指定された場合、問題作成部12は、操作者からどの文字列を穴埋めにするかという文字列の指定の入力を受ける。例えば、操作者は、操作キーを用いて文章の先頭から3番目、6番目及び8番目の文字列を穴埋めする文字列として指定したものとする。そして、問題作成部12は、穴埋定義文205を作成する。具体的には、問題作成部12は、図9の点線251のように、先頭から何番目の文字列かという指定された番号をBlankの欄の後ろに記載する。
また、選択問題の作成が指定された場合、問題作成部12は、選択問題の対象とする文字列は先頭から数えて何番目の文字列かという入力を受ける。例えば、操作者は、操作キーを用いて文章の先頭から3番目の文字列を選択問題の対象とすると指定する。問題作成部12は、選択問題定義文204のSelectの後ろに、先頭から何番目の文字列かという指定された番号を記載する。さらに、問題作成部12は、ユーザが選択肢を入力した場合には、図9の点線241で囲われた部分のように、指定された番号の後に、入力された選択肢を記載する。ここで、本実施例では、操作者から選択肢の入力が無い場合には、問題作成部12は、スペルが似ている単語を辞書データ記憶部8から取得し、指定された番号の後に、取得した単語を選択肢として記載する。そして、問題作成部12は、選択肢の後ろに正解の文字コード242を記載する。
また、並び替え問題の作成が指定された場合、問題作成部12は、インデックスをシャッフルし適当な順番に並び替える。そして、問題作成部12は、並び替え定義文203のOrderの後ろに、点線231で囲われた部分のように、並び替えたインデックスを記載する。この並び替えでは、インデックスを元の順番に並べたものが正解となる。
このようにして、問題作成部12は、英語問題定義ファイル200を作成して記憶する。
問題作成部12は、操作者からの操作キーを用いた出題の命令を受ける。この出題の命令には、どの形式の問題を出題するかという情報も付加されている。そして、問題作成部12は、穴埋め問題の出題が指示された場合、英語問題定義ファイル200を参照し、Blankの後に定義されている穴埋めする文字列を抜いた文章を表示画面に表示させる。そして、操作者からの穴埋めの文字列の入力を受けて、問題作成部12は、正誤の判定を表示画面に表示させる。
また、問題作成部12は、並び替え問題が指定された場合、英語問題定義ファイル200を参照し、Orderの後に定義されているインデックスの順番で、文字列を表示画面に表示させる。そして、操作者からの並び替えの入力を受けて、問題作成部12は、正誤の判定を表示画面に表示させる。
また、問題作成部12は、選択問題が指定された場合、英語問題定義ファイル200を参照し、Selactの後に定義されている番号の文字列の場所に、点線241に記載されている選択肢及び文字コード242を有する正解を選択できるように画面に表示する。そして、操作者からの選択の入力を受けて、問題作成部12は、正誤の判定を表示画面に表示させる。
次に、図10及び図11を参照して、英語の問題の作成の処理の流れについて説明する。図10は、英語問題作成における単語帳及び単語群の定義の作成処理のフローチャートである。図11は、英語問題作成における各問題の定義の作成処理のフローチャートである。まず、図10を参照して、単語帳及び単語群の定義の作成処理について説明する。
単語帳作成部11は、文字補正処理部4から受信した文字認識表から文字列を取得する(ステップS201)。
単語帳作成部11は、辞書検索部6に各文字列を出力する。そして、辞書検索部6は、入力された文字列を検索条件として辞書データ記憶部8が記憶している辞書データを用いて辞書引きする(ステップS202)。
単語帳作成部11は、認識文字表及び辞書検索部6が取得した文字列に対応する意味を用いて関連付けテーブルを作成する(ステップS203)。
問題作成部12は、自己が記憶している英語問題定義ファイル200のCategoryの後にENを記載する(ステップS204)。
問題作成部12は、認識した文字列の集合を文単位に分割する(ステップS205)。ここで、K個の文章に分割されたものとする。
問題作成部12は、文の番号k=1とする(ステップS206)。そして、問題作成部12は、Noの後にkを加えたものを問題番号として英語問題定義ファイル200に記載する(ステップS207)。
問題作成部12は、文字列の番号p=1とする(ステップS208)。そして、問題作成部12は、単語群定義文202のIndexにインデックス番号としてpを付加する(ステップS209)。そして、問題作成部12は、インデックス番号の後に、k番目の文章のp番目の文字列の文字コードを付加する(ステップS210)。さらに、問題作成部12は、p番目の文字列の文字コードの後に、p番目の文字列の辞書引き結果を付加する(ステップS211)。
問題作成部12は、pがk番目の文章の文字列の数より小さいか否かを判定する(ステップS212)。pがk番目の文章の文字列の数より小さい場合(ステップS212肯定)、問題作成部12は、pを1つインクリメント(p=p+1)する(ステップS213)。そして、ステップS209に戻る。
これに対して、pがk番目の文章の文字列の数と同じ場合(ステップS212否定)、問題作成部12は、kがKより小さい(k<K)か否かを判定する(ステップS214)。k<Kの場合(ステップS214肯定)、問題作成部12は、kを1つインクリメント(k=k+1)する(ステップS215)。そして、ステップS207に戻る。
一方、kがKと同じ場合(ステップS214否定)、問題作成部12は、問題作成の定義ファイルを参照し、文字列を表示画面に表示させる(ステップS216)。
さらに、図11を参照して、問題作成の処理について説明する。
操作者は、表示画面に表示されている問題作成画面を参照し、操作キーを用いて問題形式の選択を行う(ステップS301)。
問題作成部12は、選択された問題形式が穴埋め問題か否かを判定する(ステップS302)。穴埋め問題の場合(ステップS302肯定)、問題作成部12は、操作者から穴埋めさせる文字列の指定を受けて、対応するインデックスを特定する(ステップS303)。そして、問題作成部12は、英語問題定義ファイル200における穴埋定義文205のBlankの後に特定したインデックスを記載する(ステップS304)。そして、問題作成部12は、英語問題定義ファイル200を記憶して保存する(ステップS312)。
これに対して、穴埋め問題でない場合(ステップS302否定)、問題作成部12は、選択された問題形式が並び替え問題か否かを判定する(ステップS305)。並び替え問題の場合(ステップS305肯定)、問題作成部12は、インデックスをシャッフルして並び替え、英語問題定義ファイル200における並び替え定義文203のOrderの後に並び替えたインデックスを記載する(ステップS306)。そして、問題作成部12は、英語問題定義ファイル200を記憶して保存する(ステップS312)。
これに対して、並び替え問題でない場合(ステップS305否定)、問題作成部12は、選択された問題形式を選択問題と判定し、選択させる文字列の指定を操作者から受けて、選択させる文字列のインデックスを特定する(ステップS307)。そして、問題作成部12は、英語問題定義ファイル200における選択問題定義文204のSelectの後に特定したインデックスを記載する(ステップS308)。
問題作成部12は、操作者からの選択肢の指定があるか否かを判定する(ステップS309)。選択肢の指定がある場合(ステップS309肯定)、問題作成部12は、指定された選択肢をSelect文に追加する(ステップS310)。これに対して、選択肢の指定が無い場合(ステップS309否定)、問題作成部12は、スペルが似ている類義語の文字列を辞書データから取得し、取得した文字列を選択肢としてSelect文に追加する(ステップS311)。そして、問題作成部12は、問題定義ファイルを記憶して保存する(ステップS312)。
以上では英語の文字列を認識し、英語の問題を作成する場合について説明したが、本実施例に係る文字認識装置は日本語の問題も作製できる。そこで、次に、問題作成部12が日本語の問題を作成する場合について説明する。
図12は、日本語問題定義ファイルの一例の図である。問題作成部12は、図19で示すような日本語問題定義ファイル300を作成するためのフォーマットを記憶している。
問題作成部12は、画像に写っている1ページ毎に問題番号301を割り当てる。例えば、撮影した画像が10ページある場合には、問題番号301は、No:1〜No:10が割り振られる。そして、問題作成部12は、日本語問題定義ファイル300に問題番号を行を変えて記載する。
次に、問題作成部12は、操作者から選択領域の指定を受ける。具体的には、操作者は操作キーを用いて文章中において始点となる文字及び終点となる文字を指定し、その始点から終点までを選択領域として入力する。そして、問題作成部12は、指定された各選択領域をそれぞれ一つの単語として、各問題で用いられる単語群定義文302を作成する。具体的には、問題作成部12は、日本語問題定義ファイル300の各問題番号の下に1ページ中の各行の行番号を一行毎に記載する。図12では、「Line:m」が行番号がmの行を表している。さらに、問題作成部12は、行番号の後ろに、その行を構成する文字の文字コード321を記載する。さらに、文字コード321の後ろに、その行の中の操作者に指定された選択領域に対応する各単語の文字列の文字コードを並べて記載していく。図12の点線322で囲われた部分が各単語の文字列の文字コードを並べて記載した部分である。
次に、問題作成部12は、操作者が操作キーを用いて指定した作成する問題形式の入力を受ける。本実施例では、操作者は、問題形式として、穴埋め又は選択問題の2つが選べる。
穴埋め問題の作成が指定された場合、問題作成部12は、操作者からどの文字列を穴埋めにするかという文字列の指定の入力を受ける。例えば、操作者は、操作キーを用いて2行目の3番目の文字列を穴埋めする文字列とするといった入力を行う。そして、問題作成部12は、穴埋定義文304を作成する。具体的には、問題作成部12は、図12の点線341のように、入力された何行目の何番目という情報をBlankの欄の後ろに記載する。例えば、穴埋めする文字列として2行目の3番目の文字列が指定された場合、問題作成部12は、点線341に囲われた部分に示すように、「2−3」という記載をBlankの後に追加する。
また、選択問題の作成が指定された場合、問題作成部12は、選択問題の対象とする文字列は何行目の何番目の文字列かという入力を受ける。例えば、操作者は、操作キーを用いて1行目の3番目の文字列を選択問題の対象とすると指定する。問題作成部12は、選択問題定義文303のSelectの後ろに、何行目の何番目の文字列かという番号を記載する。例えば、1行目の1番目の文字列が選択問題の対象として指定された場合、問題作成部12は、Selectの後に「1−1」という記載を追加する。さらに、問題作成部12は、ユーザから選択肢の入力を受ける。この選択肢の入力は、例えば、操作者が、問題作成部12により表示画面に表示された選択肢の入力画面を参照しながら、操作キーを用いて選択肢の入力を行うことにより実行される。そして、問題作成部12は、図12の点線331で囲われた部分に示されるように、指定された文字列の番号の後に、入力された選択肢を並べて記載する。さらに、問題作成部12は、選択肢の後ろに正確の文字列の文字コード332を記載する。
このようにして、問題作成部12は、日本語問題定義ファイル300を作成して記憶する。
問題作成部12は、操作者からの日本語問題の出題の命令を受けて、日本語問題定義ファイル300を参照し、指定された問題形式にあわせて問題を出題する。
次に、図13及び図14を参照して、英語の問題の作成の処理の流れについて説明する。図13は、日本語問題作成における単語群の定義の作成処理のフローチャートである。図14は、日本語問題作成における各問題の定義文の作成処理のフローチャートである。まず、図13を参照して、単語群の定義の作成について説明する。
単語帳作成部11は、文字補正処理部4から受信した文字認識表から文字列を取得する(ステップS401)。
問題作成部12は、自己が記憶している日本語問題定義ファイル300のCategoryの後にJPを記載する(ステップS402)。
問題作成部12は、単語帳作成部11から文字列を受信し、受信した文字列の集合をページ単位に分割する(ステップS403)。ここで、T個のページに分割されたものとする。
問題作成部12は、ページ番号t=1とする(ステップS404)。そして、問題作成部12は、Noの後にtを加えたものを問題番号として日本語問題定義ファイル300に記載する(ステップS405)。
問題作成部12は、行番号=1とする(ステップS406)。そして、問題作成部12は、日本語問題定義ファイル300のLineの後に行番号としてtを付加する(ステップS407)。そして、問題作成部12は、行番号の後に、t番目のページのq行目の文の文字コードを付加する(ステップS408)。さらに、問題作成部12は、q行目の文字列の文字コードの後に、q行目の行の中の指定された選択範囲にあたる文字列の文字コードを付加する(ステップS409)。
問題作成部12は、qがt番目のページの列の数より小さいか否かを判定する(ステップS410)。qがt番目のページの列の数より小さい場合(ステップS410肯定)、問題作成部12は、qを1つインクリメント(q=q+1)する(ステップS411)。そして、ステップS407に戻る。
これに対して、qがt番目のページの列の数と同じ場合(ステップS410否定)、問題作成部12は、tがTより小さい(t<T)か否かを判定する(ステップS412)。t<Tの場合(ステップS412肯定)、問題作成部12は、tを1つインクリメント(t=t+1)する(ステップS413)。そして、ステップS405に戻る。
一方、tがTと同じ場合(ステップS412否定)、問題作成部12は、単語群の定義の作成を終了する。
さらに、図14を参照して、問題作成の処理について説明する。
操作者は、表示画面に表示されている問題作成画面を参照し、操作キーを用いて問題形式の選択を行う(ステップS501)。
問題作成部12は、選択された問題形式が穴埋め問題か否かを判定する(ステップS502)。穴埋め問題の場合(ステップS502肯定)、問題作成部12は、操作者から穴埋めさせる文字列の指定を受ける(ステップS503)。そして、問題作成部12は、日本語問題定義ファイル300における穴埋定義文304のBlankの後に指定された行番号及び何番目の文字列かを記載する(ステップS504)。そして、問題作成部12は、日本語問題定義ファイル300を記憶して保存する(ステップS509)。
これに対して、穴埋め問題でない場合(ステップS502否定)、問題作成部12は、選択された問題形式を選択問題と判定し、選択させる文字列の指定を操作者から受ける(ステップS505)。そして、問題作成部12は、日本語問題定義ファイル300における選択問題定義文303のSelectの後に指定された行番号及び何番目の文字列かを記載する(ステップS506)。問題作成部12は、操作者から選択肢の入力を受ける(ステップS507)。そして、問題作成部12は、選択問題定義文303のSelect文に入力された選択肢を追加する(ステップS508)。そして、問題作成部12は、日本語問題定義ファイル300を記憶して保存する(ステップS509)。
以上に説明したように、本実施例に係る文字認識装置は、認識した文字列を用いて穴埋め問題や選択肢問題などを作成することができる。これにより、認識した文章を基にした問題を容易に生成することができ、問題作成の手間が省け、記載してある文章を用いて学習しようとした場合に、効率よく学習を行うことができる。
さらに、本実施例に係る文字認識装置では、効率的な学習を考慮して、認識した文字列を用いた問題作成までを行ったが、問題作成が必要の無い場合には、単語帳を生成するだけでもよい。この場合、問題作成部12を特に設けなくてもよく、単語帳作成部11が作成した単語帳を出力してもよい。この単語帳とは、具体的には単語帳作成部11が作成した関連付けテーブルにおける文字列とその文字列の意味との組み合わせのことである。
例えば、操作者が、操作キーを用いて単語帳の表示を命令した場合、単語帳作成部11は、単語帳の表示命令を受けて、関係付けテーブルを参照し、単語帳を表示画面に表示させる。ここで、単語帳作成部11の単語帳の表示方法には特に制限は無い。例えば、次のような方法で単語帳の表示が実現できる。単語帳作成部11は、まずインデックスの順番に対応した英語を表示画面に表示させる。そして、その後操作者による操作キーを用いた回答表示の命令を受けて、単語帳作成部11は、表示している文字列に対応する日本語を表示する。また、単語帳作成部11は、インデックスの順に文字列を表示画面に表示させてもよいし、ランダムにインデックスを選択し文字列を表示画面に表示させてもよい。さらに、単語帳作成部11は、操作キーから入力されたインデックスの指定を受けて、指定されたインデックスに対応する文字列を表示画面に表示させてもよい。
このように、撮影した英語の文章から単語帳を自動的に生成することにより、英文から単語帳を手書きなどで作成する手間が省け、学習効率を向上させることができる。また、単に辞書があるだけでは、一度調べた単語でも、その単語を調べようとする場合には再度辞書から目的の単語を探さ無くてはならない。これに対して、本実施例に係る文字認識装置では、英語の文章を撮影すれば、その文章に含まれる単語の単語帳が作成できるので、その文章に含まれる単語を何度も辞書で調べる手間を軽減することができる。
さらに、本実施例において作成した問題や単語帳をインターネット上のサーバなどにアップしてもよい。そして、様々な人からアップされた問題や単語帳のデータを集約して問題集や単語帳集を作成し、インターネットを経由してそれらの問題集や単語帳集を閲覧できるようにしてもよい。
また、以上の各実施例においては、文字認識装置として携帯電話を例に説明したが、これは他の装置でも良く、例えばパーソナルコンピュータなどでも良い。
[プログラム]
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図15を参照して、上記各実施例で説明した文字認識処理、単語帳作成処理及び問題作成処理などの各種処理を実行する機能を有する文字認識装置制御プログラムを実行するコンピュータについて、携帯端末装置を例に説明する。
図15は、文字認識装置制御プログラムを実行する携帯端末装置のハードウェア構成図である。図15に示すように、携帯端末装置1000は、アンテナ1010、無線通信部1020、表示部1030、音声入出力部1040、マイク1041、スピーカ1042、キー入力部1050、記憶部1060、プロセッサ1070及びカメラ1080を有する。
無線通信部1020、表示部1030、音声入出力部1040、キー入力部1050、記憶部1060及びカメラ1080は、プロセッサ1070と接続される。また、アンテナ1010は、無線通信部1020と接続される。また、マイク1041及びスピーカ1042は、音声入出力部1040と接続される。
無線通信部1020は、通話における呼制御などを行う。また、表示部1030は、例えば、図1に示した出力部5に対応する。音声入出力部1040、マイク1041及びスピーカ1042は、他の携帯端末などから受信した音声の出力及び操作者の声などを収集しプロセッサ1070に対して入力する。キー入力部1050は、例えば、操作キーなどである。
記憶部1060及びプロセッサ1070は、図1に示した文字認識処理部3及び文字補正処理部4、辞書検索部6、OCRデータ記憶部7及び辞書データ記憶部8等の機能を実現する。具体的には、記憶部1060のプログラム記憶部1061は、図1に例示した文字認識処理部3及び文字補正処理部4及び辞書検索部6等による処理を実現する文字認識装置制御プログラム等の各種プログラムを記憶しており、プロセッサ1070がこれらのプログラムを読み出して実行することで、上述の各機能を実現するプロセスを生成する。また、データ記憶部1062は、例えば、図1に示したOCRデータ記憶部7及び辞書データ記憶部8の一例である。また、RAM(Random Access Memory)1063は、例えば、文字認識表や関連付けテーブル等を記憶する。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)文字列と該文字列の意味とを対応付けて記憶する辞書データ記憶部と、
画像に含まれる文字を文字認識することで得られた文字列を取得し、該文字列の末尾の文字を削除して前記辞書データ記憶部に対して前方一致検索を行い、検索できるまで前記削除を繰り返す文字削除部と、
前記画像に含まれる文字の文字認識において各文字の認識結果の候補となった候補文字を取得し、前記文字削除部により検索された文字列の末尾に、削除された文字に対応する前記候補文字を順に付加して前記辞書データ記憶部に対して前方一致検索を行い、検索されるまで前記付加を繰り返す文字付加検索を行い、且つ検索された文字列を次の検索対象の文字列として、前記文字列を削除する前の前記文字列の当初文字数になるまで前記文字付加検索を繰り返す文字付加部と、
前記文字付加部により前記辞書データ記憶部から検索された前記当初文字数を有する文字列を前記画像に含まれる文字の認識文字列として出力する出力部と
を備えたことを特徴とする文字認識装置。
(付記2)前記文字削除部は、取得した前記文字列が前記辞書データ記憶部から検索できない場合に、該文字列の末尾の文字を削除して前記辞書データ記憶部に対して前方一致検索を行うことを特徴とする付記1に記載の文字認識装置。
(付記3)文字の形状に対応する一つ又は複数の候補文字を記憶する文字データ記憶部と、
複数の文字を含む画像を取得する画像取得部と、
前記文字データ記憶部を参照し、前記画像に写っている各文字の形状に対応する前記候補文字を取得し、該候補文字の中から前記画像に写っている文字の認識文字を特定する文字認識処理部と、
前記文字認識処理部により取得された前記認識文字を所定の単位に分け文字列を作成する文字列作成部とをさらに備え、
前記文字削除部は、前記文字列作成部が作成した文字列を取得し
前記文字付加部は、前記文字認識処理部から前記候補文字を取得する
ことを特徴とする付記1又は付記2に記載の文字認識装置。
(付記4)前記辞書データ記憶部は、文字の形状に類似する一つ又は複数の候補文字を、各候補文字が前記文字の形状に一致する度合いである類似度とともに各文字の形状に対応させて記憶し、
前記文字認識処理部は、前記画像に写っている各文字の形状に類似する一つ又は複数の候補文字を前記類似度とともに取得し、最も類似度の高い候補文字を認識文字とし、
前記文字削除部は、前記辞書データ記憶部から前記文字列の前方一致検索を行い、前記辞書データ記憶部から前記文字列が検索できない場合、検索できなかった文字列の末尾の文字を削除して検索文字列とし、該検索文字列の前方一致検索を行うことを、該検索文字列が前記辞書データ記憶部から検索されるまで順次繰り返し、
前記文字付加部は、前記検索文字列が前記辞書データ記憶部から検索された場合、検索された検索文字列の末尾に、削除された文字に対応する候補文字を前記類似度の高い順に付加して候補文字列とし、該候補文字列の前方一致検索を行う前記文字付加検索を、該候補文字列が前記辞書データ記憶部から検索されるまで順次繰り返し、且つ、前記候補文字列が前記辞書データ記憶部から検索された場合、前記当初文字数になるまで、検索された前記候補文字列を次の検索文字列として前記文字付加検索を繰り返す
ことを特徴とする付記3に記載の文字認識装置。
(付記5)前記文字列作成部は、1単語を前記所定の単位とすることを特徴とする付記1〜付記4のいずれか一つに記載の文字認識装置。
(付記6)前記文字列作成部は、1文を前記所定の単位とすることを特徴とする付記1〜付記4のいずれか一つに記載の文字認識装置。
(付記7)前記画像取得部は、カメラ及びライトを有し、前記ライトを消した状態で前記カメラにより撮影した複数の文字からなる第1画像を生成し、前記ライトをつけた状態で前記カメラにより撮影した複数の文字からなる第2画像を生成し、
前記文字認識処理部は、前記第1画像又は前記第2画像の一方の画像を用いて文字の認識を行い、前記一方の画像に写っている文字のうち認識できない文字がある場合、他方の画像を用いて文字の認識を行う
ことを特徴とする付記1〜付記6のいずれか一つに記載の文字認識装置。
(付記8)前記認識文字列に対応する意味を前記辞書データ記憶部から取得し、前記認識文字列と取得した意味とを対応させて記憶する単語帳作成部をさらに備えたことを特徴とする付記1〜付記7のいずれか一つに記載の文字認識装置。
(付記9)前記認識文字列に対応する意味を前記辞書データ記憶部から取得し、前記文字形状取得部で取得された画像に写っている文字列を基に問題を作成する問題作成部をさらに備えたことを特徴とする付記1〜付記8のいずれか一つに記載の文字認識装置。
(付記10)前記問題作成部は、前記文字形状取得部で取得された画像に写っている文字列の中から文字列の指定を受けて、指定された文字列を穴埋め問題とすることを特徴とする付記9に記載の文字認識装置。
(付記11)前記問題作成部は、前記文字形状取得部で取得された画像に写っている文字列の中から文字列の指定をうけ、さらに選択肢の入力の受信又は前記辞書データ記憶部から類義語を選択肢として取得し、指定された文字列と前記選択肢と組み合わせて選択問題とすることを特徴とする付記9に記載の文字認識装置。
(付記12)前記問題作成部は、前記文字形状取得部で取得された画像に写っている複数の文字列によって構成される文における該文字列を並び替えることによって、並び替え問題を作成することを特徴とする付記9に記載の文字認識装置。
(付記13)画像に含まれる文字を文字認識することで得られた文字列を取得し、該文字列の末尾の文字を削除して、文字列とその文字列の意味とを対応付けて記憶する辞書データに対して前方一致検索を行い、検索できるまで前記削除を繰り返し、
前記画像に含まれる文字の文字認識において各文字の認識結果の候補となった候補文字を取得し、前記文字の削除を用いた検索において検索された文字列の末尾に、削除された文字に対応する前記候補文字を順に付加して前記辞書データに対して前方一致検索を行い、検索されるまで前記付加を繰り返し、
前記文字列を削除する前の前記文字列の当初文字数になるまで、前記文字の付加を用いた検索において検索された文字列を次に検索を行う文字列として、前記文字の付加を用いた検索を繰り返し、
前記文字の付加を用いた検索において前記辞書データから検索された前記当初文字数を有する文字列を前記画像に含まれる文字の認識文字列として出力する
処理をコンピュータに実行させることを特徴とする文字認識装置制御プログラム。
(付記14)コンピュータによって実行される文字認識装置制御方法であって、
画像に含まれる文字を文字認識することで得られた文字列を取得し、該文字列の末尾の文字を削除して、文字列とその文字列の意味とを対応付けて記憶する辞書データに対して前方一致検索を行い、検索できるまで前記削除を繰り返し、
前記画像に含まれる文字の文字認識において各文字の認識結果の候補となった候補文字を取得し、前記文字の削除を用いた検索において検索された文字列の末尾に、削除された文字に対応する前記候補文字を順に付加して前記辞書データに対して前方一致検索を行い、検索されるまで前記付加を繰り返し、
前記文字列を削除する前の前記文字列の当初文字数になるまで、前記文字の付加を用いた検索において検索された文字列を次に検索を行う文字列として、前記文字の付加を用いた検索を繰り返し、
前記文字の付加を用いた検索において前記辞書データから検索された前記当初文字数を有する文字列を前記画像に含まれる文字の認識文字列として出力する
ことを特徴とする文字認識装置制御方法。
(付記15)文字列とその文字列の意味とを対応付けて記憶する辞書データ記憶部と、
カメラで取得した画像に含まれる文字を文字認識することで得られた文字列を取得し、該文字列の末尾の文字を削除して前記辞書データ記憶部に対して前方一致検索を行い、検索できるまで前記削除を繰り返す文字削除部と、
前記画像に含まれる文字の文字認識において各文字の認識結果の候補となった候補文字を取得し、前記文字削除部により検索された文字列の末尾に、削除された文字に対応する前記候補文字を順に付加して前記辞書データ記憶部に対して前方一致検索を行い、検索されるまで前記付加を繰り返す文字付加検索を行い、且つ検索された文字列を次の検索対象の文字列として、前記文字列を削除する前の前記文字列の当初文字数になるまで前記文字付加検索を繰り返す文字付加部と、
前記文字付加部により前記辞書データ記憶部から検索された前記当初文字数を有する文字列を前記画像に含まれる文字の認識文字列として表示する表示部と
を備えたことを特徴とする携帯端末装置。