<表示装置の動作の概略>
図1は、本実施形態の表示装置が行う文字列の追加方法を説明する図である。図1では「本日の議事」という確定データ573の末尾に、「メモ」という文字列を追加し、「本日の議事メモ」を表示する場合を説明する。確定データ573は文字認識により変換された後のデータである。
(1) 「本日の議事」という確定データ573がすでに表示されている。確定データ573の周囲に(末尾の近傍に)、ユーザーは「め」という手書きデータ504(第二の手書きデータの一例)を追記する。手書きデータは手書きされた状態のデータである。
(2) 表示装置は、確定データ573に対し手書きデータ504が所定の条件を満たすか否かを判定する。所定の条件は、手書きデータ504と確定データとの距離が閾値以下であるか否かである。所定の条件を満たす場合、追加文字列候補580を操作ガイド500に含めて表示すると判定する。追加文字列候補は、確定データ573に手書きデータに基づく文字列候補が追加された文字列である。また、表示装置は、通常の手書き入力と同様に「め」の認識で得られた文字列候補を表示する。したがって、表示装置は、「本日の議事メモ」という追加文字列候補580、手書きデータ504の認識結果である「め」という手書き認識文字列候補506、及び、「メモ」「メカ」という変換文字列候補507、を選択可能候補として表示する。
(3) ユーザーが「本日の議事メモ」を選択した場合、確定データ573は「本日の議事メモ」という追加文字列候補580に置き換えられる。置き換えられた後の文字列を追加文字列581という。
(4) ユーザーが「本日の議事メモ」を選択せず、例えば「メモ」を選択した場合、「メモ」という文字列が「め」という手書きデータ504に代わって表示される。
(5) ユーザーが何も選択しない場合は手書きした「め」という手書きデータ504がそのまま表示される。
このように、本実施形態の表示装置は、確定データ573に対し手書きデータ504が所定の条件を満たすか否かを判定するので、文字列の追加を、特別な操作なく実施することができる。また、追加文字列候補580と共に、手書き認識文字列候補506、及び、変換文字列候補507を選択可能に表示するので、ユーザーは手書きデータを確定データ573に追加することもできるし、手書きデータから変換された文字列を単独で表示することもできる。
<用語について>
入力手段とはタッチパネルに手書きが可能な手段であればよい。例えば、ペン、人の指や手、棒状部材などがある。また、視線入力が可能でもよい。
確定データとは文字認識によりテキストデータに変換済みの文字列である。正しい変換か否かは問わない。なお、文字には、数値、記号、アルファベットなども含まれる。
手書きデータとは手書きされた1つ以上のストロークをいう。
追加とは後から更に加えることを言う。
<装置の全体構成>
図2を用いて、本実施形態に係る表示装置2の全体構成を説明する。図2は、表示装置2の全体構成図を示した図である。図2(a)では、表示装置2の一例として、壁につり下げられた横長の電子黒板として使用される表示装置2を示している。
表示装置2は、タッチパネルに接触している入力手段の位置に基づいて手書きされた手書きデータを表示する装置である。ユーザーが手で書いたデータを入力できるので手書き入力装置とも呼ばれる。
図2(a)に示されているように、表示装置2の上部にはディスプレー220が設置されている。ユーザーUは、ペン2500を用いて、ディスプレー220に文字等を手書きする(入力、描画ともいう)ことができる。
図2(b)は壁につり下げられた縦長の電子黒板として使用される表示装置2を示している。
図2(c)は机230に平置きされた表示装置2を示す。表示装置2は厚みが1cm程度なので、一般の机に平置きしても机の高さを調整する必要がない。また、容易に移動できる。
<ペンの外観の一例>
図3は、ペン2500の斜視図の一例を示す。図3は多機能なペン2500の一例を示す。電源を内蔵して表示装置2に命令を送信できるペン2500をアクティブペンという(電源を内蔵しないペンをパッシブペンという)。図3のペン2500は、物理的なスイッチがペン先に一つ、ペン尻に一つ、ペン側面に二つあり、ペン先が筆記用、ペン尻が消去用、ペン側面はユーザー機能割り当て用である。本実施形態のペン2500は不揮発性のメモリーを有しており、他のペンと重複しないペンIDを記憶している。
なお、スイッチ付きのペンであれば、ユーザーの表示装置2の操作手順を減らすことも可能である。スイッチ付きのペンとは主にアクティブペンを言うが、電磁誘導方式では電源を内蔵しないパッシブペンでもLC回路だけで電力を発生できるため、アクティブペンだけでなく電磁誘導方式のパッシブペンを含む。電磁誘導方式以外の光学方式、赤外線方式、及び、静電容量方式のスイッチのあるペンはアクティブペンである。
なお、ペン2500のハードウェア構成は、通信機能とマイコンを備えた一般的な制御方式と同様であるとする。ペン2500の座標の入力方式には、電磁誘導方式、アクティブ静電結合方式などがある。また、ペン2500は、筆圧検知、傾き検知、ホバー機能(ペンが触れる前にカーソルを表示)、などの機能を有していてよい。
<装置のハードウェア構成>
続いて、図4を用いて、表示装置2のハードウェア構成を説明する。表示装置2は図示するように情報処理装置又はコンピュータの構成を有している。図4は、表示装置2のハードウェア構成図の一例である。図4に示されているように、表示装置2は、CPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、及び、SSD(Solid State Drive)204を備えている。
これらのうち、CPU201は、表示装置2全体の動作を制御する。ROM202は、CPU201やIPL(Initial Program Loader)等のCPU201の駆動に用いられるプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される。SSD204は、表示装置2用のプログラム等の各種データを記憶する。
また、表示装置2は、ディスプレーコントローラー213、タッチセンサーコントローラー215、タッチセンサー216、ディスプレー220、電源スイッチ227、チルトセンサー217、シリアルインタフェース218、スピーカー219、マイク221、無線通信装置222、赤外線I/F223、電源制御回路224、ACアダプター225、及びバッテリー226を備えている。
ディスプレーコントローラー213は、出力画像をディスプレー220等へ出力するために画面表示の制御及び管理を行う。タッチセンサー216は、ディスプレー220上にペン2500やユーザーの手等(ペンやユーザーの手は入力手段となる)が接触したことを検知する。また、タッチセンサー216はペンIDを受信する。
タッチセンサーコントローラー215は、タッチセンサー216の処理を制御する。タッチセンサー216は、座標の入力及び座標の検出を行う。この座標の入力及び座標の検出する方法は、例えば、光学式の場合、ディスプレー220の上側両端部に設置された2つ受発光装置が、ディスプレー220に平行して複数の赤外線を放射し、ディスプレー220の周囲に設けられた反射部材によって反射されて、受光素子が放射した光の光路と同一の光路上を戻って来る光を受光する方法である。タッチセンサー216は、物体によって遮断された2つの受発光装置が放射した赤外線の位置情報をタッチセンサーコントローラー215に出力し、タッチセンサーコントローラー215が、物体の接触位置である座標位置を特定する。また、タッチセンサーコントローラー215は通信ユニット215aを有しており、ペン2500と無線で通信することができる。例えば、Bluetooth(登録商標)などの規格で通信している場合は、市販されているペンを使用することができる。通信ユニット215aに予め1つ以上のペン2500を登録しておくと、ユーザーはペン2500を表示装置2と通信させる接続設定を行わなくても通信できる。
電源スイッチ227は、表示装置2の電源のON/OFFを切り換えるためのスイッチである。チルトセンサー217は、表示装置2の傾き角度を検出するセンサーである。主に、表示装置2が図2(a)、図2(b)、又は、図2(c)のいずれかの設置状態で使用されているかを検出するために使用され、設置状態に応じて文字等の太さを自動で変更することができる。
シリアルインタフェース218はUSBなどの外部との通信インタフェースである。外部からの情報の入力などに使用される。スピーカー219は音声の出力に使用され、マイク221は音声の入力に使用される。無線通信装置222は、ユーザーが携帯する端末と通信し、例えばインターネットへの接続を中継する。無線通信装置222はWi-FiやBluetooth(登録商標)などで通信するが、通信規格は問われない。無線通信装置222はアクセスポイントを形成しており、ユーザーが入手したSSID(Service Set Identifier)とパスワードをユーザーが携帯する端末に設定すると、アクセスポイントに接続できる。
なお、無線通信装置222には2つのアクセスポイントが用意されているとよい。
a. アクセスポイント→インターネット
b. アクセスポイント→社内ネットワーク→インターネット
aのアクセスポイントは社外のユーザー用で、ユーザーは社内ネットワークにはアクセスできないが、インターネットを利用できる。bのアクセスポイントは社内のユーザー用で、ユーザーは社内ネットワーク及びインターネットを利用できる。
赤外線I/F223は隣りに配置された表示装置2を検出する。赤外線の直進性を利用して、隣りに配置された表示装置2のみを検出できる。赤外線I/F223は各辺に1つずつ設けられることが好ましく、表示装置2のどの方向に他の表示装置2が配置されたのかを検出できる。これにより画面が広がり、隣りの表示装置2に過去に手書きされた手書き情報(1つのディスプレー220の広さを1ページとして別のページの手書き情報)等を表示できる。
電源制御回路224は表示装置2の電源であるACアダプター225とバッテリー226を制御する。ACアダプター225は商用電源が共有する交流を直流に変換する。
ディスプレー220がいわゆる電子ペーパーの場合、画像の表示を維持するためにほとんど又は一切電力を消費しないので、バッテリー226による駆動も可能である。これにより、屋外など電源を接続しにくい場所でもデジタルサイネージなどの用途で表示装置2を使用することが可能になる。
更に、表示装置2は、バスライン210を備えている。バスライン210は、図4に示されているCPU201等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
なお、タッチセンサー216は、光学式に限らず、静電容量の変化を検知することにより接触位置を特定する静電容量方式のタッチパネル、対向する2つの抵抗膜の電圧変化によって接触位置を特定する抵抗膜方式のタッチパネル、接触物体が表示部に接触することによって生じる電磁誘導を検知して接触位置を特定する電磁誘導方式のタッチパネルなどの種々の検出手段を用いてもよい。タッチセンサー216は、ペン先のタッチの有無を検知するのに電子ペンが必要ない方式であってよい。この場合はタッチ操作をするのに指先やペン型の棒を使用できる。なお、ペン2500は、細長いペン型である必要はない。
<装置の機能について>
次に、図5を用いて、表示装置2が有する機能について説明する。図5は表示装置2が有する機能をブロック状に示す機能ブロック図の一例である。表示装置2は、手書き入力部21、表示部22、手書き入力表示制御部23、候補表示タイマー制御部24、手書き入力保存部25、手書き認識制御部26、手書き認識辞書部27、文字列変換制御部28、文字列変換辞書部29、予測変換制御部30、予測変換辞書部31、操作コマンド認識制御部32、操作コマンド定義部33、及び、文字列追加制御部41を備えている。表示装置2が有する各機能は、図4に示されている各構成要素のいずれかが、SSD204からRAM203上に展開されたプログラムに従ったCPU201からの命令によって動作することで実現される機能又は手段である。
手書き入力部21はタッチセンサー216等により実現されており、ユーザーによる手書き入力を受け付ける。手書き入力部21はユーザーのペン入力d1をペン操作データd2(ペンアップ、ペンダウン、又はペン座標データ)に変換し、手書き入力表示制御部23に送信する。ペン座標データは離散値として定期的に送信され、離散値間の座標は補完計算される。
表示部22はディスプレー220等により実現され、手書きされたデータや操作メニューを表示する。表示部22は手書き入力表示制御部23がビデオメモリーに書き込んだ描画データd3をディスプレー220の特性に応じたデータに変換し、ディスプレー220に送信する。
手書き入力表示制御部23は手書き入力と表示に関する全体的な制御を行う。手書き入力表示制御部23は手書き入力部21からのペン操作データd2を処理し、表示部22に送信することで表示させる。
候補表示タイマー制御部24は、選択可能候補の表示制御タイマーである。タイマーを開始又は停止して選択可能候補の表示を開始するタイミングと表示を消去するタイミングを生成する。候補表示タイマー制御部24は手書き入力表示制御部23からタイマー開始要求d4(タイマー停止要求の場合もある)を受信し、タイムアウトイベントd5を手書き入力表示制御部23に送信する。
手書き入力保存部25はユーザーデータ(手書きデータ/文字列データ)を保存しておくストレージの機能を有する。手書き入力保存部25は手書き入力表示制御部23からユーザーデータd6-1を受信し、手書き入力保存部25に保存し、手書き入力表示制御部23から取得要求d6-2を受け取って、手書き入力保存部25に保存されたユーザーデータd7を送信する。手書き入力保存部25は、確定データの位置情報d36を操作コマンド認識制御部32に送信する。
手書き認識制御部26はオンライン手書き認識を行う認識エンジンである。一般的なOCR(Optical Character Reader)とは異なり、ユーザーのペン操作と並行して文字(日本語だけでなく英語などの多国語)、数字、記号(%、$、&など)、図形(線、丸、三角など)等を認識していく。認識方法については様々なアルゴリズムが考案されているが、本実施形態では公知の技術を利用できるとして詳細を割愛する。
手書き認識制御部26はペン操作データd8-1を手書き入力表示制御部23から受信し、手書き認識を実行して手書き認識文字列候補を保持する。また、手書き認識制御部26は手書き認識辞書部27を使用して手書き認識文字列候補d12から変換した言語文字列候補を保持しておく。別途、取得要求d8-2を手書き入力表示制御部23から受信した場合、手書き認識制御部26は保持している手書き認識文字列候補及び言語文字列候補d9を手書き入力表示制御部23に送信する。
手書き認識辞書部27は手書き認識の言語変換用の辞書データである。手書き認識辞書部27は手書き認識文字列候補d12を手書き認識制御部26から受信し、言語的に確からしい言語文字列候補d13に変換して手書き認識制御部26に送信する。例えば、日本語の場合は、平仮名を漢字や片仮名へ変換する。
文字列変換制御部28は変換文字列候補の文字列への変換を制御する。変換文字列とは手書き認識文字列又は言語文字列を含んで生成される可能性が高い文字列である。文字列変換制御部28は手書き認識文字列及び言語文字列候補d11を手書き認識制御部26から受信し、文字列変換辞書部29を使用して変換文字列候補に変換して保持しておく。別途、取得要求d14を手書き入力表示制御部23から受信した場合、保持している変換文字列候補d15を手書き入力表示制御部23に送信する。
文字列変換辞書部29は文字列変換用の辞書データである。文字列変換辞書部29は文字列変換制御部28から手書き認識文字列及び言語文字列候補d17を受信し、変換文字列候補d18を文字列変換制御部28に送信する。
予測変換制御部30は手書き認識文字列及び言語文字列候補d10を手書き認識制御部26から受信し、変換文字列候補d16を文字列変換制御部28から受信し、それぞれについて予測変換辞書部31を使用して予測文字列候補に変換しておく。予測変換文字列とは手書き認識文字列、言語文字列又は変換文字列を含んで生成される可能性が高い文字列である。別途、取得要求d19を手書き入力表示制御部23から受信した場合、予測文字列候補d20を手書き入力表示制御部23に送信する。
予測変換辞書部31は予測変換用の辞書データである。予測変換辞書部31は手書き認識文字列及び言語文字列候補と変換文字列候補d21を予測変換制御部30から受信し、予測文字列候補d22を予測変換制御部30に送信する。
操作コマンド認識制御部32は手書き認識文字列及び言語文字列候補d30を手書き認識制御部26から受信し、変換文字列候補d28を文字列変換制御部28から受信し、予測文字列候補d29を予測変換制御部30から受信する。そして、それぞれについて操作コマンド変換要求d26を操作コマンド定義部33に送信し、操作コマンド定義部33から操作コマンドの候補d27を受信する。操作コマンド認識制御部32は操作コマンドの候補d27を保持しておく。
操作コマンド定義部33は操作コマンド変換要求d26が操作コマンド定義と部分一致している場合は操作コマンドの候補d27を操作コマンド認識制御部32に送信する。
また、操作コマンド認識制御部32はペン操作データd24-1を手書き入力表示制御部23から受信し、過去に入力され確定した確定データの位置情報取得要求d23を手書き入力保存部25に送信し、ペン操作データが指定している確定データを選択データ(位置情報を含む)として保持しおく。操作コマンド認識制御部32はペン操作データd24-1の位置と所定の基準を満たす選択データを特定する。別途、取得要求d24-2を手書き入力表示制御部23から受信した場合、保持している操作コマンドの候補と特定した選択データd25を手書き入力表示制御部23に送信する。
文字列追加制御部41はペン操作データd43を手書き入力表示制御部23から受信し、過去に入力され確定した確定データの取得要求d37を手書き入力保存部25に送信し、手書きデータのペン操作データと確定データ(位置情報を含む)を保持しておく。文字列追加制御部41は手書きデータのペン操作データと確定データの位置を比較して、追加判定条件408を満たすか否かを判定する。
また、文字列追加制御部41は手書き入力表示制御部23から距離判定結果取得d38を受信し、距離判定結果d39を手書き入力表示制御部23に送信する。距離判定結果が追加ありの場合、手書き入力表示制御部23は過去に入力され確定した確定データの取得要求d40を手書き入力保存部25に送信し、確定データ(位置情報を含む)を取得する。手書き入力表示制御部23は使用例登録判定要求d41を予測変換制御部30に送信し、予測変換制御部30から使用例文字列d42を取得する。
<ユーザー認証について>
本実施形態ではユーザー認証の結果を用いた制御が行われるため、表示装置2がユーザー認証する機能を有することが好ましい。このため、図6を用いてユーザー認証に関する機能について説明する。
図6は、表示装置2が有するユーザー認証に関する機能をブロック状に示す図である。なお、図6ではユーザー認証部34(ユーザー認証手段)と関連する機能として手書き入力表示制御部23のみを示したが、ユーザーの認証結果は図5に示した各機能が利用できてよい。
認証情報取得部35はユーザーUから認証情報d31を取得する。認証情報d31はICカードのカード番号、ユーザーIDとパスワード、又は、指紋などの生体情報などでよい。ユーザー認証部34は認証情報d32を認証情報取得部35から取得して、認証情報d33をユーザー情報DB36で検索する。検索に適合するユーザーが存在する場合はユーザー情報d34をユーザー情報DB36から取得する。ユーザー情報はユーザーの属性を表す情報であればよく、例えば、ユーザー名、パスワード、ユーザーのコンピュータ名、部署、権限、などでよい。
ユーザー認証部34はユーザー情報d35を手書き入力表示制御部23に送信するので、手書き入力表示制御部23はユーザー情報を用いて操作コマンドを実行できるようになる。ユーザー情報を用いた操作コマンドに関しては図11にて説明される。
なお、認証機能は表示装置2が有する他、外部の認証サーバー等が有していてもよい。この場合、表示装置2は認証情報を認証サーバーに送信し、認証結果とユーザー情報を取得する。
<定義済み制御データについて>
次に、図7を用いて、表示装置2が各種の処理に使用する定義済み制御データについて説明する。図7は定義済み制御データの一例を示す。図7の例では制御項目ごとに制御データを示す。
選択可能候補表示タイマー401は、選択可能候補を表示するまでの時間を定義する(第一の時間の一例)。手書き中に選択可能候補を表示しないためである。図7では、ペンアップからTimerValue=500〔ms〕以内にペンダウンが発生しなければ選択可能候補が表示されることを意味している。選択可能候補表示タイマー401は候補表示タイマー制御部24が保持している。選択可能候補表示タイマー401は、後述する図22のステップS18において選択可能候補表示タイマー開始時に使用される。
選択可能候補消去タイマー402は表示した選択可能候補を消去するまでの時間を定義する(第二の時間の一例)。ユーザーが選択可能候補を選択しない場合に選択可能候補を消去するためである。図7では、選択可能候補の表示からTimerValue=5000〔ms〕以内に選択可能候補が選択されなければ選択可能候補表示が消去されることを意味している。選択可能候補消去タイマー402は候補表示タイマー制御部24が保持している。選択可能候補消去タイマー402は図23のステップS57において選択可能候補表示消去タイマー開始時に使用される。
手書きデータ近傍矩形領域403は手書きデータの近傍とみなす矩形領域を定義する。図7の例では、手書きデータ近傍矩形領域403は、手書きデータの矩形領域を水平方向に推定文字サイズの50%(Horizontal)拡大し、垂直方向に推定文字サイズの80%(Vertical)拡大した矩形領域となる。図7の例では推定文字サイズの割合(%指定)となっているが、単位を"mm"等とすれば固定長にすることも可能である。手書きデータ近傍矩形領域403は手書き入力保存部25が保持している。推定文字サイズ405は図21のステップS9において、手書きデータ近傍矩形領域とストローク矩形領域の重なり状況の判定で使用される。
推定書字方向/文字サイズ判定条件404は、書字方向と文字サイズの測定方向を判定するための定数を定義する。図7の例では、手書きデータ矩形領域の最初にストロークが追加された時刻と最後にストロークが追加された時刻の差分がMinTime=1000〔ms〕以上で、手書きデータ矩形領域の水平距離(幅)と垂直距離(高さ)の差分がMinDiff=10〔mm〕以上あり、水平距離が垂直距離より長い場合は、推定書字方向は「横書き」、推定文字サイズは垂直距離と判定することを意味する。水平距離が垂直距離より短い場合は、推定書字方向は「縦書き」、推定文字サイズは水平距離と判定することを意味する。以上の条件を満たさない場合は、推定書字方向は「横書き」(DefaultDir="Horizontal")、推定文字サイズは水平距離と垂直距離の長い方の距離と判定する。推定書字方向/文字サイズ判定条件404は手書き入力保存部25が保持している。推定書字方向/文字サイズ判定条件404は図23のステップS51における推定書字方向取得と、図25のステップS75、S81における文字列データフォント取得で使用される。
推定文字サイズ405は文字等のサイズを推定するためのデータを定義する。図7の例では、推定書字方向/文字サイズ判定条件404で判定された推定文字サイズが、推定文字サイズ405の小さめ文字405a(以下、最小フォントサイズ、と呼ぶ)と大きめ文字405c(以下、最大フォントサイズ)と比較されることを意味する。推定文字サイズが最小フォントサイズより小さい場合、推定文字サイズは最小フォントサイズと判定される。推定文字サイズが最大フォントサイズより大きい場合、推定文字サイズは最大フォントサイズと判定される。それ以外は、中くらい文字405bの文字サイズと判定される。推定文字サイズ405は手書き入力保存部25が保持している。推定文字サイズ405は、図25のステップS75、S81における文字列データフォント取得で使用される。
手書き入力保存部25は具体的には、推定書字方向/文字サイズ判定条件404で判定された推定文字サイズを推定文字サイズ405のFontSizeと比較して、最も近いサイズのフォントを使用する。例えば、推定文字サイズが25〔mm〕(小さめ文字のFontSize)以下の場合は「小さめ文字」、推定文字サイズが25mm超50mm(中くらい文字のFontSize)以下の場合は「中くらい文字」、推定文字サイズが100mm(大きめ文字のFontSize)超の場合は「大きめ文字」と判定する。「小さめ文字」405aは明朝体の25mmフォント(FontStyle="明朝体" FontSize="25mm")、「中くらい文字」405bは明朝体の50mmフォント(FontStyle="明朝体" FontSize="50mm")、「大きめ文字」405cはゴシック体の100mmフォント(FontStyle="ゴシック体" FontSize="100mm")を使用する。もっとフォントのサイズ又はスタイルの種類を増やしたい場合は、推定文字サイズ405の種類を増やせばよい。
跨ぎ線判定条件406は複数の確定データが選択されたか否かの判定に使用されるデータを定義する。手書きデータが単数のストロークであり、図7の例では、手書きデータの長辺の長さが100〔mm〕以上(MinLenLongSide="100mm")、かつ、短辺の長さが50〔mm〕以下(MaxLenShortSide="50mm")、かつ、手書きデータとの長辺方向と短辺方向の重なり率が80〔%〕以上(MinOverLapRate="80%")の確定データがあれば、複数の確定データが選択された(選択データ)と判定する。跨ぎ線判定条件406は操作コマンド認識制御部32が保持している。跨ぎ線判定条件406は図22のステップS39における選択データの判定の跨ぎ線判定で使用される。
囲み線判定条件407は、手書きデータが囲み線か否かの判定に使用されるデータを定義する。図7の例では、操作コマンド認識制御部32は手書きデータの長辺方向と短辺方向の重なり率が100%以上(MinOverLapRate="100%")の確定データを選択データと判定する。囲み線判定条件407は、操作コマンド認識制御部32が保持している。囲み線判定条件407は、図22のステップS39における選択データの囲み線判定で使用される。
なお、跨ぎ線判定条件406と囲み線判定条件407はどちらが優先して判定されてもよい。例えば、跨ぎ線判定条件406を緩やかにして(跨ぎ線を選択しやすくした場合)、囲み線判定条件407は厳密にした場合(囲み線のみを選択できるような値とした場合)、操作コマンド認識制御部32は囲み線判定条件407を優先して判定するのがよい。
追加判定条件408は、手書きデータが確定データに追加されるか否かの判定に使用される閾値を定義する。図7の例では、文字列追加制御部41は手書きデータと確定データの最短距離が"2mm"以内の場合、手書きデータが確定データに追加される可能性があると判定する。なお、閾値は一例である。
<辞書データの一例>
図8~図10を用いて辞書データについて説明する。図8は手書き認識辞書部27の辞書データの一例であり、図9は文字列変換辞書部29の辞書データの一例であり、図10は予測変換辞書部31の辞書データの一例である。なお、これらの辞書データはそれぞれ図22のステップS20~S30で使用される。
本実施形態では、図8の手書き認識辞書部27の辞書データによる変換結果を言語文字列候補、図9の文字列変換辞書部29の辞書データによる変換結果を変換文字列候補、図10の予測変換辞書部31の辞書データによる変換結果を予測文字列候補と呼ぶ。各辞書データの「変換前」は辞書データを検索する文字列、「変換後」は検索する文字列に対応した変換後の文字列、「確率」はユーザーが選択する確率を表す。確率は過去にユーザーが各文字列を選択した結果から算出されている。したがって、ユーザーごとに確率が算出されてもよい。確率の計算方法として様々なアルゴリズムが考案されているが、適宜、適切な方法で計算するものとすればよく、詳細は割愛する。本実施形態では、推定書字方向から文字列候補を選択確率降順で表示することを特徴とする。
図8の手書き認識辞書部27の辞書データでは、手書きされた「ぎ」は、確率0.55で「議」、確率0.4で「技」、手書きされた「ぎし」は、確率0.5で「技士」、確率0.45で「技師」に変換されることを示す。その他の「変換前」の文字列についても同様である。図8では「変換前」の文字列が手書きされた平仮名となっているが、平仮名以外を「変換前」に登録してもよい。
図9の文字列変換辞書部29の辞書データでは、文字列「議」は確率0.95で「議事録」に、文字列「技」は確率0.85で「技量試」に変換されることを示す。その他の「変換前」の文字列についても同様である。
図10の予測変換辞書部31の辞書データでは、文字列「議事録」は確率0.65で「議事録の送付先」に、文字列「技量試」は確率0.75で「技量試を決裁」に変換されることを示す。図10の例では変換前の文字列がすべて漢字になっているが、漢字以外を登録してもよい。
なお、辞書データに言語依存はなく、変換前と変換後にどのような文字列が登録されていてもよい。
<操作コマンド定義部が保持する操作コマンド定義データ>
次に、図11、図12を用いて操作コマンド認識制御部32が使用する操作コマンド定義データについて説明する。図11は、操作コマンド定義部33が保持する操作コマンド定義データ、及びシステム定義データの一例を示す。
図11(a)は操作コマンド定義データの一例を示す。図11(a)の操作コマンド定義データは、手書きデータにより選択された選択データがない場合の操作コマンド定義データ例であり、表示装置2を操作する全ての操作コマンドが対象となる。図11(a)の操作コマンドは操作コマンド名(Name)、文字列候補と部分一致する文字列(String)、実行する操作コマンド文字列(Command)を有する。操作コマンド文字列内の「%~%」は変数であり、図11(b)に示すようにシステム定義データと対応付けられている。つまり、「%~%」は図11(b)に示すシステム定義データで置き換えられる。
まず、操作コマンド定義データ701は、操作コマンド名が「議事録テンプレートを読み込む」、文字列候補と部分一致する文字列が「議事録」又は「テンプレート」、実行する操作コマンド文字列が「ReadFile https://%username%:%password%@server.com/template/minutes.pdf」であることを示す。この例では、実行する操作コマンド文字列に「%~%」のシステム定義データが含まれており「%username%」「%password%」はそれぞれシステム定義データ704、705で置き換えられることを示す。したがって、最終的に実行する操作コマンド文字列は「ReadFile https://taro.tokkyo:x2PDHTyS@server.com/template/minutes.pdf」という文字列となり、「https://taro.tokkyo:x2PDHTyS@server.com/template/minutes.pdf」というファイルを読み込む(ReadFile)ことを示す。
操作コマンド定義データ702は、操作コマンド名が「議事録フォルダーに保存する」、文字列候補と部分一致する文字列が「議事録」又は「保存」、実行する操作コマンド文字列が「WriteFile https://%username%:%password%@server.com/minutes/%machinename%_%yyyy-mm-dd%.pdf」であることを示す。操作コマンド定義データ701と同様に、操作コマンド文字列の「%username%」「%password%」「%machinename%」はそれぞれシステム定義データ704~706で置き換えられる。なお、「%yyyy-mm-dd%」は現在日で置き換えることを示す。例えば、現在日が2018年9月26日であれば「2018-09-26」で置き換えることを示す。最終的に実行する操作コマンドは「WriteFile https://taro.tokkyo:x2PDHTyS@server.com/minutes/%My-Machine_2018-09-26.pdf」となり、議事録を「https://taro.tokkyo:x2PDHTyS@server.com/minutes/%My-Machine_2018-09-26.pdf」というファイルに保存する(WriteFile)ことを示す。
操作コマンド定義データ703は、操作コマンド名が「印刷する」、文字列候補と部分一致する文字列が「印刷」又は「プリント」、実行する操作コマンド文字列が「PrintFile https://%username%:%password%@server.com/print/%machinename%-"%yyyy-mm-dd%.pdf」であることを示す。操作コマンド定義データ702と同様に操作コマンド文字列を置き換えると、最終的に実行する操作コマンドは「PrintFile https://taro.tokkyo:x2PDHTyS@server.com/print/%My-Machine_2018-09-26.pdf」となり、「https://taro.tokkyo:x2PDHTyS@server.com/print/%My-Machine_2018-09-26.pdf」というファイルを印刷する(PrintFile)ことを示す。つまり、ファイルがサーバーに送信される。ユーザーがプリンターをサーバーと通信させ、ファイルを指定するとプリンターが用紙にファイルの内容を印刷する。
このように、文字列候補から操作コマンド定義データ701~703を特定できるため、ユーザーが手書きすることで操作コマンドを表示させることができる。また、ユーザーの認証が成功した場合にはユーザー情報で操作コマンド定義データの「%username%」「%password%」等が置き換えられるので、ユーザーに対応付けてファイルの入出力が可能になる。
ユーザーの認証が行われない場合(認証が失敗したがユーザーが表示装置2を使用できる場合は認証失敗の場合も含む)、表示装置2は、予め設定されている表示装置2の「%username%」「%password%」等に置き換える。したがって、ユーザー認証なしでも表示装置2に対応付けてファイルの入出力が可能になる。
続いて、手書きデータがある場合の操作コマンド定義データ、つまり編集系及び修飾系の操作コマンド定義データについて説明する。図12は手書きデータにより選択された選択データがある場合の操作コマンド定義データの一例を示す。図12の操作コマンド定義データは、操作コマンド名(Name)、操作コマンドの候補のグループ名(Group)、実行する操作コマンド文字列(Command)を有する。
操作コマンド定義データ707は編集系(Group="Edit")の操作コマンドを定義しており、編集系の操作コマンド名「消去」「移動」「回転」「選択」の定義データ例である。つまり、選択データに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。
操作コマンド定義データ708は修飾系(Group="Decorate")の操作コマンドを定義しており、修飾系の操作コマンド名「太く」「細く」「大きく」「小さく」「下線」の定義データ例である。選択データに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。この他、色の操作コマンドが表示されてもよい。
したがって、ユーザーが選択データを手書きデータで選択することで、操作コマンド定義データ707、708が特定されるため、ユーザーが手書きすることで操作コマンドを表示させることができる。
<選択可能候補の表示例>
図13は操作ガイド500と操作ガイド500が表示する選択可能候補530の一例である。ユーザーが手書きデータ504を手書きすることで(選択可能候補表示タイマーのタイムアウトにより)、操作ガイド500が表示される。操作ガイド500は、操作ヘッダー520、操作コマンドの候補510、追加文字列候補580、手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、文字列/予測変換の候補508、及び、手書きデータ矩形領域表示503を有している。選択可能候補530は、操作コマンドの候補510、追加文字列候補580、手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、及び、文字列/予測変換の候補508である。また、操作コマンドの候補510を除く選択可能候補530を文字列候補539という。
操作ヘッダー520はボタン501、509、502、505を有する。ボタン501は予測変換とかな変換の切り替え操作を受け付ける。図13の例ではユーザーが「予測」と表示されているボタン509を押下すると手書き入力部21がそれを受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が「かな」というボタン509に表示を変更する。変更後は、文字列候補539が「かな変換」の確率降順で並ぶ。
ボタン502は候補表示のページ操作をする。図13の例では候補表示ページは3ページあり、現在は1ページ目を表示している。ボタン505は操作ガイド500の消去を受け付ける。ユーザーがボタン505を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が手書きデータ以外の表示を消去する。ボタン509は一括表示消去を受け付ける。ユーザーがボタン509を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が手書きデータを含め、図13に示されているすべての表示を消去して、ユーザーが最初から手書きをしなおすことを可能にする。
図13において手書きデータ504はユーザーが手書きした「め」という文字である。点線枠で手書きデータ504を囲む手書きデータ矩形領域表示503が表示されている。これらの表示の手順は図20~図25のシーケンス図で説明する。
追加文字列候補580は、確定データ573に手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、又は、文字列/予測変換の候補508が追加された文字列候補である。複数の追加文字列候補580が表示される場合もある。手書き認識文字列候補506、言語文字列候補571、変換文字列候補507又は文字列/予測変換の候補508を「手書きデータ504に基づく文字列」という場合がある。
手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、文字列/予測変換の候補508にはそれぞれの文字列候補が確率降順で並んでいる。手書き認識文字列候補506の「め」は手書き認識結果の候補である。この例では正しく「め」を認識している。言語文字列候補571は手書き認識候補がかな変換された文字列候補である。この例では「め」が「目」に変換されている。変換文字列候補507は手書き認識文字列候補、言語文字列候補571から変換された変換文字列候補である。この例では言語文字列候補「め」から変換された「メカ」「メモ」が表示されている。文字列/予測変換の候補508は手書き認識文字列候補506、言語文字列候補571又は変換文字列候補507から変換された予測文字列候補である。この例では「メモを取る」が表示されている。
操作コマンドの候補510は図11(a)の操作コマンド定義データ701~703に基づいて選択された操作コマンドの候補である。図13の例では行頭文字の「》」511が操作コマンドの候補であることを示している。「め」「目」「メカ」「メモ」と部分一致する操作コマンド定義データがあれば、操作コマンドの候補510として表示されている。このように操作コマンドの候補は、変換された文字列を含む操作コマンド定義データが見つかる場合に表示されるため、常に表示されるとは限らない。
図13に示すように、文字列候補539と操作コマンドの候補510が同時に(共に)表示されるため、ユーザーは自分が入力しようとした文字列候補と操作コマンドのどちらも任意に選択できる。
<選択データの指定例>
本実施形態の表示装置2は確定データをユーザーが手書きにより選択することで選択データを指定できる。選択データは編集又は修飾の対象となる。
図14は、選択データの指定例を説明する図の一例である。図14では、手書きデータ11は黒色実線、手書きデータ矩形領域12を灰色網掛け、確定データ13を黒線、選択データ矩形領域14を点線でそれぞれ表示している。なお、それぞれを区別する場合に小文字のアルファベットを符号に付加する。また、確定データを選択データと判定するための判定条件(所定の関係にあるか否か)として、図7に示した定義済み制御データの跨ぎ線判定条件406又は囲み線判定条件407を使用している。
図14(a)は横書きの2つの確定データ13a、13bをユーザーが跨ぎ線(手書きデータ11a)で指定した例である。この例では、手書きデータ矩形領域12aの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしており、確定データ13a、13bとの重なり率が跨ぎ線判定条件406の条件を満たしているため、「議事録」と「ぎじ」の両方の確定データ13a、13bが選択データとして指定されている。
図14(b)は横書きの確定データ13cを囲み線(手書きデータ11b)で指定した例である。この例では、確定データ13cと手書きデータ矩形領域12cの重なり率が囲み線判定条件407の条件を満たしている「議事録」という確定データ13cだけが選択データとして指定されている。
図14(c)は縦書きの複数の確定データ13d、13eを跨ぎ線(手書きデータ11c)で指定した例である。この例では、図14(a)と同様に、手書きデータ矩形領域12dの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしており、「議事録」と「ぎじ」という2つの確定データ13d、13eそれぞれとの重なり率が跨ぎ線判定条件406の条件を満たしているため、「議事録」と「ぎじ」の両方の確定データ13d、13eが選択データとして指定されている。
図14(d)は縦書きの確定データ13fを囲み線(手書きデータ11d)で指定した例である。この例では、図14(b)と同様に、「議事録」という確定データ13fだけが選択データとして指定されている。
<操作コマンドの候補の表示例>
図15は、図14に示した手書きデータがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図15(a)は編集系の操作コマンドの候補であり、図15(b)は修飾系の操作コマンドの候補である。また、図15(a)は図14(a)の手書きデータ11aで選択データが指定された例を示す。
図15(a)(b)に示すように、行頭文字「》」511に続いて表示された操作コマンドの候補がメインメニュー550である。メインメニュー550には最後に実行された操作コマンド名又は操作コマンド定義データで先頭の操作コマンド名が表示される。1行目の行頭文字「》」511aは編集系の操作コマンドの候補であり、2行目の行頭文字「》」511bは修飾系の操作コマンドの候補である。
行末の「〉」512はサブメニューがあることを示す(サブメニューボタンの一例)。1行目の「〉」512aは編集系の操作コマンドの候補のサブメニュー(最後に選択された)を表示させ、2行目の「〉」512bは修飾系の操作コマンドの候補の残りのサブメニューを表示させる。ユーザーが「〉」512を押下すると、その右側にサブメニュー560が表示される。サブメニュー560には操作コマンド定義データで定義されている全ての操作コマンドが表示される。図15(a)の表示例ではメインメニューが表示された時から1行目の「〉」512aに対応したサブメニュー560も表示されている。1行目の「〉」512aの押下により表示されてもよい。
ユーザーがペンでいずれかの操作コマンド名を押下すると、操作コマンド名に対応付けられた操作コマンド定義データのCommandを手書き入力表示制御部23が選択データに対して実行する。すなわち「消去」521が選択されると「Delete」、「移動」522が選択されると「Move」、「回転」523が選択されると「Rotate」、「選択」524が選択されると「Select」をそれぞれ実行する。
例えば、ユーザーが「消去」521をペンで押下すると「議事録」と「ぎじ」を消去でき、「移動」522,「回転」523、「選択」524を押すとバウンディングボックス(選択データの外接矩形)が表示され、「移動」522と「回転」523ではペンのドラッグ動作で移動又は回転でき、「選択」524ではその他のバウンディングボックスの操作を実行できる。
操作コマンドの候補以外の文字列候補である「一」541、「一、」542、「~」543、「→」544、「⇒」545は跨ぎ線(手書きデータ11a)の認識結果であり、ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
図15(b)では2行目の「〉」512bの押下により、図15(b)のサブメニューが表示される。図15(b)の表示例も図15(a)と同様にメインメニュー550とサブメニュー560が表示されている。図14の操作コマンド定義データに基づいて、「太く」531が選択されると「Thick」、「細く」532が選択されると「Thin」、「大きく」533が選択されると「Large」、「小さく」534が選択されると「Small」、下線535が選択されると「Underline」を手書き入力表示制御部23が選択データに対してそれぞれ実行する。
なお、「太く」531が選択された場合にどのくらい太くするか、「細く」532が選択された場合にどのくらい細くするか、「大きく」533が選択された場合にどのくらい大きくするか、「小さく」534が選択された場合にどのくらい小さくするか、下線535が選択された場合の線種等は、固定値が別途定義されている。あるいは、図15(b)のサブメニューが選択されると別途、選択メニューが開かれユーザーが調整できるようになっているとなおよい。
ユーザーが「太く」531をペンで押下すると「議事録」と「ぎじ」という確定データ13a、13bを構成する線を手書き入力表示制御部23が太くする。「細く」532をペンで押下すると、「議事録」と「ぎじ」を構成する線を手書き入力表示制御部23が細くでき、「大きく」533をペンで押下すると手書き入力表示制御部23が大きくでき、「小さく」534をペンで押下すると手書き入力表示制御部23が小さくでき、「下線」535をペンで押下すると下線を手書き入力表示制御部23が追加できる。
図16は、図14に示した手書きデータがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図15(a)(b)との相違は、図16(a)(b)は図14(b)の手書きデータ11b(囲み線)で選択データが指定された例を示す。図15と図16を比較すると分かるように手書きデータが線か囲み線かによって表示される操作コマンドの候補に違いはない。手書き入力表示制御部23は選択データが指定されると操作コマンドの候補を表示部22に表示させるためである。しかし、手書きデータを認識して手書きデータに応じて表示する操作コマンドの候補を変更してもよい。この場合、認識された手書きデータ(一や○など)に図14のような操作コマンド定義データを対応付けておく。
図16において操作コマンドの候補以外の文字列候補である「○」551、「∞」552、「0」553、「00」554、「ロ」555は囲み線(手書きデータ11b)の認識結果であり、ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
<距離判定>
図17は確定データに手書きデータに基づく文字列を追加した追加文字列候補580を操作ガイド500に表示するか否かの判定を説明する図である。図17(a)は確定データ573と手書きデータ504の一例を示し、図17(b)は確定データ573と手書きデータ504の最近接部の拡大図を示す。
文字列追加制御部41は手書きデータ504の最近接部601と確定データ573の最近接部602との距離D1が、追加判定条件408が定義する値以下の場合、文字列追加制御部41は手書きデータ504に基づく文字列(手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、又は、文字列/予測変換の候補508など、変換されたテキストデータ)を追加する(追加あり)と判定する。これにより、追加文字列候補の使用例の有無が判定される。
また、追加する位置は、確定データ573の先頭又は末尾である。手書き入力表示制御部23は確定データ573が縦書きか横書きかを手書き入力保存部25から取得して確定データ573の先頭又は末尾のうち手書きデータ504からの距離が近い方に手書きデータ504に基づく文字列を追加する。
図17(c)は横書きの場合に、先頭又は末尾のうちどちらに追加するかの判定方法を説明する図である。横書きの場合、手書き入力表示制御部23は、確定データ573の外接矩形610を生成し、手書きデータ504の重心611と確定データ573の外接矩形610の2つの短辺との距離D2、D3をそれぞれ算出する。文字列追加制御部41は距離D2、D3のうち近い方の短辺に手書きデータ504に基づく文字列を追加すると判定する。
図17(d)は縦書きの場合に、先頭又は末尾のうちどちらに追加するかの判定方法を説明する図である。縦書きの場合、手書き入力表示制御部23は、確定データ573の外接矩形610を生成し、手書きデータ504の重心611と確定データ573の外接矩形610の2つの短辺との距離D4、D5をそれぞれ算出する。文字列追加制御部41は距離D4、D5のうち近い方の短辺に手書きデータ504に基づく文字列を追加すると判定する。
<使用例登録判定>
距離判定結果が追加ありの場合、文字列追加制御部41は予測変換制御部30に使用例登録判定を要求する。
図18は、予測変換制御部30による使用例登録判定を説明する図である。予測変換制御部30には、確定データ573と、手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、文字列/予測変換の候補508が送信される。予測変換制御部30は、確定データ573の先頭又は末尾のうち追加すると判定された方に、手書き認識文字列候補506、言語文字列候補571、変換文字列候補507、文字列/予測変換の候補508を追加した場合、それらの使用例が登録されているかを判定する。
図18の例では「本日の議事」+「め」、「本日の議事」+「目」、「本日の議事」+「メモ」、「本日の議事」+「メカ」、「本日の議事」+「メモを取る」、の使用例が登録されているか、登録されている場合はどの位の確率(頻度)かを判定する。予測変換制御部30は確率が閾値以上の使用例文字列を決定する。例えば、「本日の議事」+「目」、「本日の議事」+「メカ」、は使用例が登録されておらず確率がゼロであるが、「本日の議事」+「め」の確率が0.1、「本日の議事」+「メモ」の確率が0.8、「本日の議事」+「メモを取る」の確率が0.5のような使用例文字列を出力する。
手書き入力表示制御部23は、他の文字列候補539の数や確率に基づいて使用例文字列の一部又は全てを追加文字列候補580として表示する。
<先頭に追加する場合の追加文字列の位置>
確定データ573の先頭に手書きデータ504に基づく文字列を追加する場合、表示装置2が行頭の位置を維持する場合と変更する場合がある。
図19は、確定データ573の先頭に手書きデータ504に基づく文字列が追加された場合の追加文字列581の位置を説明する図である。図19(a)に示すように、「本日の議事」という確定データ573の先頭の近くに「前回の」という手書きデータが手書きされた。この場合、文字列追加制御部41は確定データの先頭に手書きデータに基づく文字列を追加すると判定する。
手書き入力表示制御部23は、図19(b)に示すように追加文字列581の行頭の位置を確定データ573の先頭の位置と同じにすることもできるし、図19(c)に示すように追加文字列581の行頭の位置を手書きデータ504に合わせることもできる。どちらで処理されるかは予めユーザーが設定しておいてもよいし、操作ヘッダー520からユーザーが都度選択してもよい。あるいは、確定データ573の先頭からディスプレー220の枠までのスペースと、確定データ573の末尾からディスプレー220の枠までのスペースのうち広い方を自動で手書き入力表示制御部23が選択するとよい。
<動作手順>
以上の構成と図20~図25を用いて、表示装置2の動作について説明する。図20~図25は表示装置2が文字列候補と操作コマンドの候補を表示する処理を説明する一例のシーケンス図である。図20の処理は、表示装置2が起動すると(アプリケーションが起動すると)スタートする。なお、図20~図25ではスペースの都合上、符号で図5の機能を示した。
S1:まず、手書き入力表示制御部23が手書きデータ開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きデータ領域(手書きデータを保存するメモリ領域)を確保する。ユーザーがペンを手書き入力部21に接触させてから手書きデータ領域を確保してもよい。
S2:次にユーザーが手書き入力部21にペンを接触させる。手書き入力部21はペンダウンを検出して手書き入力表示制御部23に送信する。
S3:手書き入力表示制御部23は手書き入力保存部25にストローク開始を送信し、手書き入力保存部25はストローク領域を確保する。
S4:ユーザーがペンを手書き入力部21に接触させたまま移動させると、手書き入力部21はペン座標を手書き入力表示制御部23に送信する。
S5:手書き入力表示制御部23はペン座標補完表示データ(離散的なペン座標を補間するデータ)を表示部22に送信する。表示部22はペン座標補完表示データを用いてペン座標を補間して線を表示する。
S6:手書き入力表示制御部23はペン座標とその受信時刻を手書き入力保存部25に送信する。手書き入力保存部25はペン座標をストロークに追加する。ユーザーがペンを動かしている間は、手書き入力部21は定期的に手書き入力表示制御部23へのペン座標の送信を繰り返すため、ステップS3~S6の処理がペンアップされるまで繰り返される。
S7:ユーザーが手書き入力部21からペンを離すと、手書き入力部21はペンアップを手書き入力表示制御部23に送信する。
S8:手書き入力表示制御部23は手書き入力保存部25にストローク終了を送信し、手書き入力保存部25はストロークのペン座標を確定させる。ストロークのペン座標の確定により以降はストロークにペン座標を追加できなくなる。
S9:次に、手書き入力表示制御部23は手書きデータ近傍矩形領域403に基づいて、手書きデータ近傍矩形領域とストローク矩形領域の重なり状況取得を手書き入力保存部25に送信する。手書き入力保存部25は重なり状況を計算して重なり状況を手書き入力表示制御部23に送信する。
続く、ステップS10~S15は、手書きデータ近傍矩形領域とストローク矩形領域が重なっていない場合に実行される。
S10:手書きデータ近傍矩形領域とストローク矩形領域が重なっていない場合、1つの手書きデータが確定するので、手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S11~S13:手書き認識制御部26は保持データクリアをそれぞれ文字列変換制御部28、予測変換制御部30、操作コマンド認識制御部32に送信する。手書き認識制御部26、文字列変換制御部28、予測変換制御部30及び操作コマンド認識制御部32がこれまでに保持している文字列候補と操作コマンドの候補に係るデータをクリアする。なお、クリアの時点では最後に手書きされたストロークは手書きデータに追加されていない。
S14:手書き入力表示制御部23は手書きデータ終了を手書き入力保存部25に送信する。手書き入力保存部25は手書きデータを確定させる。手書きデータの確定とは1つの手書きデータが完成したこと(これ以上、ストロークが追加されないこと)をいう。
S15:手書き入力表示制御部23は手書きデータ開始を手書き入力保存部25に送信する。次の手書きデータの手書きの開始(ペンダウン)に備えて、手書き入力保存部25は新しい手書きデータ領域を確保する。
S16:次に手書き入力表示制御部23はステップS8で終了したストロークに関してストローク追加を手書き入力保存部25に送信する。ステップS10~S15が実行された場合、追加されるストロークは手書きデータの最初のストロークであり、手書き入力保存部25は開始中の手書きデータにストロークデータを追加する。ステップS10~S15が実行されてない場合、追加されるストロークはすでに手書き中の手書きデータに追加される。
S17:続いて手書き入力表示制御部23はストローク追加を手書き認識制御部26に送信する。手書き認識制御部26は文字列候補が格納されるストロークデータ保持領域にストロークデータを追加する。
S19:手書き認識制御部26はこのストロークデータ保持領域に対して手書き認識を実行する。
S20:手書き認識制御部26はこの実行結果である手書き認識文字列候補を手書き認識辞書部27に送信する。手書き認識辞書部27は言語的に確からしい言語文字列候補を手書き認識制御部26に送信する。
S21:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を文字列変換制御部28に送信する。
S22:文字列変換制御部28は手書き認識文字列候補及び言語文字列候補を文字列変換辞書部29に送信する。文字列変換辞書部29は変換文字列候補を文字列変換制御部28に送信する。
S23:文字列変換制御部28は受信した変換文字列候補を予測変換制御部30に送信する。
S24:予測変換制御部30は受信した変換文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S25: 予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S26:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
以降ステップS27~S35の操作コマンドの候補の送信まで同様に処理を行う。
S27:文字列変換制御部28は受信した変換文字列候補を操作コマンド認識制御部32に送信する。
S28:操作コマンド認識制御部32は受信した変換文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は変換文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S30:手書き認識制御部26は手書き認識文字列候補及び言語文字列候補を予測変換制御部30に送信する。
S31:予測変換制御部30は手書き認識文字列候補及び受信した言語文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S32: 予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S33:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S34:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド認識制御部32に送信する。
S35:操作コマンド認識制御部32は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は言語文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S36: 次に手書き認識制御部26はストローク追加を操作コマンド認識制御部32に送信する。
S37:手書き認識制御部26はストローク追加を文字列追加制御部41に送信する。ストローク追加により手書きデータを構成するストロークが得られる。
S38:操作コマンド認識制御部32は確定データの位置情報取得を手書き入力保存部25に送信する。手書き入力保存部25は確定データの位置情報を操作コマンド認識制御部32に送信する。
S39: 操作コマンド認識制御部32は選択データの判定のため、ステップS38のストローク追加で手書き認識制御部26から受信したストロークの位置情報と、手書き入力保存部25から受信した確定データの位置情報が所定の関係にあるか否かを跨ぎ線判定条件406及び囲み線判定条件407に基づいて判定し、選択されていると判定できる確定データを選択データとして保存しておく。また、この場合、選択データが特定されるので入出力系の操作コマンドの候補を操作コマンド定義部33から取得する。
S40:文字列追加制御部41は確定データ取得を手書き入力保存部25に送信する。複数の確定データが表示されていることが通常なので、手書きデータに最も近い確定データを手書き入力保存部25が特定する。手書き入力保存部25はこの確定データを文字列追加制御部41に送信する。
S41:文字列追加制御部41は、ステップS37のストローク追加で手書き認識制御部26から受信した手書きデータと手書き入力保存部25から受信した確定データが追加判定条件408を満たすか否か判定する。満たしていると判定した場合、先頭又は末尾のどちらに追加するかを示す追加位置を保存しておく。また、追加判定条件408を満たす確定データの識別情報を保持しておく(追加先の確定データを特定するため)。
また、手書き認識制御部26、文字列変換制御部28、予測変換制御部30、及び、操作コマンド認識制御部32はそれぞれ手書き認識文字列候補、言語文字列候補、変換文字列候補、予測文字列候補、操作コマンドの候補、及び、選択データに係るデータを後段のステップS47~S50で取得できるよう保持しておく。文字列追加制御部41は、距離判定結果、追加位置、及び、確定データの識別情報、を後段のステップS52のために保持しておく。
S18:手書き入力表示制御部23はステップS17でストローク追加を手書き認識制御部26に送信した直後、選択可能候補表示タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。
続く、ステップS43~S45は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生した場合に実行される。
S43:タイマーがタイムアウトする前に、ユーザーが手書き入力部21にペンを接触させた場合、手書き入力部21はペンダウン(ステップS2と同じイベント)を手書き入力表示制御部23に送信する。
S44: 手書き入力表示制御部23はストローク開始(ステップS3と同じ)を手書き入力保存部25に送信する。この後のシーケンスはステップS3以降と同じである。
S45:更に手書き入力表示制御部23は選択可能候補表示タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はタイマーを停止させる。ペンダウンが検出されたのでタイマーが不要になるからである。
ステップS46~S87は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生しない場合に実行される。したがって、図13に示した操作ガイド500が表示される。
S46:選択可能候補表示タイマー開始中にユーザーが手書き入力部21にペンを接触させなかった場合、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
S47:手書き入力表示制御部23は手書き認識/言語文字列候補取得を手書き認識制御部26に送信する。手書き認識制御部26は現在保持している手書き認識/言語文字列候補を手書き入力表示制御部23に送信する。
S48:手書き入力表示制御部23は変換文字列候補取得を文字列変換制御部28に送信する。文字列変換制御部28は現在保持している変換文字列候補を手書き入力表示制御部23に送信する。
S49:手書き入力表示制御部23は予測文字列候補取得を予測変換制御部30に送信する。予測変換制御部30は現在保持している予測文字列候補を手書き入力表示制御部23に送信する。
S50:手書き入力表示制御部23は操作コマンドの候補取得を操作コマンド認識制御部32に送信する。操作コマンド認識制御部32は現在保持している操作コマンドの候補と選択データを手書き入力表示制御部23に送信する。
S51: 更に、手書き入力表示制御部23は推定書字方向取得を手書き入力保存部25に送信する。手書き入力保存部25は手書きデータ矩形領域のストローク追加時間と水平距離と垂直距離から判定して、推定書字方向を手書き入力表示制御部23に送信する。
S52:手書き入力表示制御部23は距離判定結果取得を文字列追加制御部41に送信する。手書き入力表示制御部23は距離判定結果と、距離判定結果が追加ありの場合は追加位置と、及び、確定データの識別情報を文字列追加制御部41から取得する。
距離判定結果が追加ありの場合、ステップS53,S54が実行される。
S53:距離判定結果が追加ありの場合、手書き入力表示制御部23は、確定データの識別情報を指定して確定データ取得を手書き入力保存部25に送信する。手書き入力保存部25は確定データを手書き入力表示制御部23に送信する。この確定データは手書きデータ504との距離が追加判定条件408を満たすと判定された確定データである。
S54:また、距離判定結果が追加ありの場合、手書き入力表示制御部23は、使用例登録判定要求(確定データ、手書き認識文字列候補、言語文字列候補、変換文字列候補、文字列/予測変換の候補)を予測変換制御部30に送信する。これにより、手書き入力表示制御部23は使用例がある使用例文字列を確率と共に受信する。
S55:手書き入力表示制御部23はこれらの手書き認識文字列候補(図13では「め」)、言語文字列候補(図13では例えば「目」)、変換文字列候補(図13では「メカ」「メモ」)、予測文字列候補(図13では「メモを取る」)、操作コマンドの候補(図13では「○○を××する」)、各選択確率、及び、推定書字方向から図13のような操作ガイド500の表示データを作成し、文字列候補と操作コマンドの候補からなる操作ガイド500を表示部22に送信することで表示させる。また、使用例文字列を追加文字列候補580として表示部22に送信することで表示させる。
S56:また、手書き入力表示制御部23は手書きデータと選択データの矩形領域表示データ(矩形枠)(図13では手書きデータ矩形領域表示503)を表示部22に送信する。
S57: 手書き入力表示制御部23は操作ガイド500の表示から一定時間後に消去するため選択可能候補表示消去タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。
ステップS58~S62は、選択可能候補消去タイマー開始中に、ユーザーが表示部22に表示された選択可能候補表示を消去したか、手書きデータの変化が発生した場合(即ち手書きデータのストロークの追加、削除、移動、変形又は分割された場合)、又は、タイムアウトまでに候補が選択されなかった場合に実行される。
更に、ステップS58~S59は、候補表示が消去されるか、又は、手書きデータの変化が発生した場合に実行される。
S58:手書き入力部21は選択可能候補表示消去又は手書きデータの変化の発生を手書き入力表示制御部23に送信する。
S59:手書き入力表示制御部23は選択可能候補消去タイマー停止を送信する。候補表示タイマー制御部24はそのタイマーを停止する。一定時間内に手書きデータに対し操作があったためタイマーが不要になるからである。
S61:手書き入力表示制御部23は操作ガイド500の消去を表示部22に送信することで、表示を消去させる。
S62:手書き入力表示制御部23は手書きデータと選択データの矩形領域表示データ消去を表示部22に送信することで、表示を消去させる。したがって、操作コマンド候補が選択される以外の条件で、操作コマンド候補の表示を消去した場合、手書きデータはそのまま表示が維持される。
S60:一方、選択可能候補消去タイマー開始中に、選択可能候補表示消去又は手書きデータの変化が発生しなかった場合(ユーザーがペン操作をしなかった場合は)、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
選択可能候補表示消去タイマーのタイムアウトの後も同様に、手書き入力表示制御部23はステップS61とS62を実行する。一定時間の経過で操作ガイド500、手書きデータと選択データの矩形領域表示データを消去してよいためである。
選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、ステップS63~S87が実行される。
S63:選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、手書き入力部21は文字列候補又は操作コマンドの候補選択を手書き入力表示制御部23に送信する。
S64: 手書き入力表示制御部23は選択可能候補表示消去タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを停止する。
S65: 次に手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S66: 手書き認識制御部26は保持データクリアを文字列変換制御部28に送信する。
S67:手書き認識制御部26は保持データクリアを予測変換制御部30に送信する。
S68:手書き認識制御部26は保持データクリアを操作コマンド認識制御部32に送信する。
S69:手書き認識制御部26は保持データクリアを文字列追加制御部41に送信する。
手書き認識制御部26、文字列変換制御部28、予測変換制御部30、操作コマンド認識制御部32、及び、文字列追加制御部41はこれまで保持していた文字列候補及び操作コマンドの候補に係るデータをクリアする。
S70: 次に手書き入力表示制御部23は操作ガイド500の消去を表示部22に送信することで操作ガイド500の表示を消去させる。
S71:手書き入力表示制御部23は選択データの矩形領域表示データ消去を表示部22に送信することで手書きデータ矩形領域表示503を消去させる。
追加文字列候補580が選択された場合、ステップS72~S77が実行される。
S72:手書き入力表示制御部23は手書きデータ表示データ消去及びステップS5で送信したペン座標補完表示データ消去を表示部22に送信することで手書きデータ504を消去させる。追加文字列候補580が選択されたため、手書きデータ504が不要になるためである。
S73:手書き入力表示制御部23は、手書きデータの削除を手書き入力保存部25に送信する。また確定データも不要になるため、確定データ削除を手書き入力保存部25に送信する。
S74:手書き入力表示制御部23は、追加文字列候補580の追加データ追加を手書き入力保存部25に送信する。追加データは例えば、確定データ573が「本日の議事」で、手書きデータ504が「め」の場合、「本日の議事メモ」である。
S75:手書き入力表示制御部23は追加データフォント取得を手書き入力保存部25に出力する。追加データフォントは操作ガイド500に表示された追加文字列候補580を表示するためのフォントデータである。
S76:追加文字列候補580が選択された場合、確定データ573は追加文字列候補580に置き換わるので、手書き入力表示制御部23は確定データ573の消去を表示部22に要求する。
S77:手書き入力表示制御部23は追加データフォントを使用して、消去した確定データ573と同じ位置に追加データ(追加文字列581)を表示させる追加データ表示データを表示部22に送信させることで、表示させる。追加文字列581は例えば「本日の議事メモ」である。例えば、追加文字列581の先頭文字と消去された確定データ573の先頭文字の位置は一致するように表示される。
追加文字列候補580が選択されない場合(追加文字列候補以外の文字列候補539が選択された場合)、ステップS78~S82が実行される。
S78:手書き入力表示制御部23は、手書きデータ表示データ消去及びステップS5で送信したペン座標補完表示データ消去を表示部22に送信することで手書きデータ504を消去させる。
S79:手書き入力表示制御部23は、手書きデータ削除を手書き入力保存部25に送信する。確定データ573は削除しない。
S80: 追加文字列候補580以外の文字列候補539が選択されたので、手書き入力表示制御部23は選択された文字列候補539の文字列データ追加を手書き入力保存部25に送信する。例えば「メモ」が選択された場合、「メモ」が手書き入力保存部25に保存される。
S81:更に手書き入力表示制御部23は選択された文字列候補の文字列データフォント取得を手書き入力保存部25に送信する。手書き入力保存部25は手書きデータの推定文字サイズから定義済みフォントを選択して手書き入力表示制御部23に送信する。
S82: 次に手書き入力表示制御部23は手書き入力保存部25から受信した定義済みフォントを使用して、手書きデータ504と同じ位置に表示させる文字列データ表示データ(例えば「メモ」)を表示部22に送信させることで、表示させる。
操作コマンドの候補が選択された場合、ステップS83~S86が実行される。更に、選択データがある場合はステップS83~S85が実行される。
S83:選択データへの操作コマンドの候補が選択された場合(選択データが存在する場合)は、手書き入力表示制御部23は選択データ表示データ消去を表示部22に送信することで表示を消去させる。いったん、元の選択データを消去するためである。また、手書きデータも消去する。
S84:次に、手書き入力表示制御部23は選択データへの操作コマンド実行を手書き入力保存部25に送信する。手書き入力保存部25は新しい選択データの表示データ(編集又は修飾後の表示データ)を手書き入力表示制御部23に送信する。
S85: 次に手書き入力表示制御部23は選択データ表示データを表示部22に送信することで、操作コマンド実行後の選択データを再表示させる。
選択データがない場合(入出力系の操作コマンドが選択された場合)はステップS86が実行される。
S86:入出力系の操作コマンドが選択された場合、手書き入力表示制御部23はユーザーが選択した操作コマンドに対応する操作コマンド定義データの操作コマンド文字列(Command)を実行する。なお、ユーザー認証部34がユーザーの認証に成功した場合、手書き入力表示制御部23は認証に成功したユーザーに関する情報を操作コマンドの%~%に設定して実行する。
S87:次の手書きデータのために手書き入力表示制御部23は手書きデータ開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きデータ領域を確保する。これ以降、ステップS2~S87の処理が繰り返される。
<まとめ>
以上説明したように本実施形態の表示装置2は、確定データ573に対し手書きデータ504が所定の条件を満たすか否かを判定するので、文字列の追加を、特別な操作なく実施することができる。また、追加文字列候補580と共に、手書き認識文字列候補506、及び、変換文字列候補507を選択可能に表示するので、ユーザーは手書きデータを確定データ573に追加することもできるし、手書きデータから変換された文字列を単独で表示することもできる。