<手書き入力装置の比較例について>
本実施形態における手書き入力装置の説明の便宜上、まず、手書き入力装置の操作手順の比較例について簡単に説明する。
図1は、手書き入力装置2が表示する操作メニューの比較例を示す。操作パネル全体101にはペン機能メニュー102を表示させるペン機能メニューボタン1021、編集機能メニュー103を表示させる編集機能メニューボタン1031、入出力機能メニュー104を表示させる入出力機能メニューボタン1041等が表示されている。ペン機能メニュー102ではユーザーがペンの色、太さ、動作モードを選択できる。ペン機能メニュー102は手書き入力モードボタン1022、及び、清書入力モードボタン1023を有している。また、編集機能メニュー103では、オブジェクトの消去、選択、切り取り、コピー、及び貼り付けを選択でき、入出力機能メニュー104ではテンプレートの読み込み、ファイルの読み込み、ファイルへの保存、及び印刷等を実行できる。
手書き入力モードボタン1022が押下されるとユーザーが手書きした情報(ペンの座標)がそのまま入力され、清書入力モードボタン1023が押下されるとユーザーが手書きした文字、数字、記号、アルファベット等(以下単に、文字等という)が認識され文字等に変換(清書)されたテキストデータが表示される。
従来の手書き入力装置2の操作手順の一例として、ユーザーが直線又は曲線(以下、ストローク、と呼ぶ)を手書きしている状態で、複数のストロークを消去して、再びペンで書き始めるには、以下の操作手順が必要となる。なお、特に明記しない場合、ペンで押下するとはペン先で押下することを意味する。
(A1) 編集機能メニューボタン1031をペンで押下して編集機能メニュー103を表示する。
(A2) 編集機能メニュー103の「消去する」ボタン1032をユーザーが押下すると、手書き入力装置2は自動的に編集機能メニュー103を消去する。
(A3) ユーザーが消去対象の複数のストロークを跨ぐようにペンで書き込むとストロークが消去される。
(A4) ペン機能メニューボタン1021をペンで押下する。
この手順で消去対象のストロークが消去され、引き続き、ユーザーはペンでストロークを手書きできるようになる。ストロークを消去するだけで4ステップもの操作手順が必要になる。ステップ数や画面の遷移に差異はあっても手書き入力装置2は同様の操作体系であることが多い。またこのような操作体系はコンピュータ製品全般に共通しており、ユーザーが必要な機能を呼び出す操作体系が基本になっている。ユーザーが機能の呼び出し方法を知らなければ全く操作ができないため、チュートリアル機能やヘルプ機能によって、手書き入力装置2が機能の呼び出し方法を提供する手法が一般的である。
同様に、ファイルや印刷などの入出力が必要になった場合、ユーザーは入出力機能メニュー104を開く。例えば、テンプレートを読み込むには、以下の操作手順が必要になる。
(B1) 入出力機能メニューボタン1041をユーザーがペンで押下すると入出力機能メニュー104が開く。
(B2) 入出力機能メニュー104の「テンプレート選択」ボタン1042をユーザーがペンで押下すると入出力機能メニューが閉じてテンプレート選択ウィンドウが開く。
(B3) 所望のテンプレートが表示されるまでスクロールさせるため左右ボタン等をペンで押下する。
(B4) 所望のテンプレートをペンで押下するとそのテンプレートが読み込まれてテンプレート選択ウィンドウが閉じる。
同様に、ユーザーが手書きした文字等をテキストデータに変換するには、以下の操作手順が必要になる。
(C1) ユーザーがペン機能メニューボタン1021をペンで押下する。
(C2) ユーザーが清書入力モードボタン1023をペンで押下する。
清書入力モードボタン1023が押下された状態では、図1(b)に示すように、手書きした「abcde」がテキストデータの「abcde」に変換されている。テキストデータはフォントで表示されるので清書された状態となる。
このように、従来の手書き入力装置2ではユーザーがステップバイステップで操作する操作手順が必要となる。つまり、手書き入力装置2が説明的に次のステップに導く操作体系が基本となっているため、ユーザーは直感的に操作することが困難であった。
<手書き入力装置の利用形態の一例>
手書き入力装置2は床などに対し垂直に保持された状態で使用されるだけでなく、床などに水平に平置きされた状態でも使用される場合がある。
図2は、手書き入力装置2の使用例を示す図である。図2(a)では机の上にディスプレーを上向きにして手書き入力装置2が設置されている(このような設置の態様を平置きという)。手書き入力装置2の周り(図2(a)では対面)に椅子に座って向かい合ったユーザーがそれぞれ手書きをしている。
この場合、通常のユーザーは自分に対して上下方向に文字等を手書きする(図2(b))。しかし、清書入力モードでは、ある決まった場所(手書き入力装置2から見て決まった方向)のユーザーが文字を手書きした場合にのみ正しく手書き認識できる。図2(b)である決まった場所のユーザーをAさんとすると、BさんとCさんが手書きした文字等は正しく認識されない。
この理由は、現在の手書き認識エンジンは手書きの天地がある決まった方向である場合しか正しく認識できないためである。正しく認識とは実用性がある程度の認識率で認識が可能であることを言う。また、ある決まった方向は、例えば、手書き入力装置2が床などに対し垂直に保持された状態の天地方向である(後述する図5(a)の状態の天地方向)。
手書き入力装置2が床などに対し垂直に保持された状態(壁掛けやスタンドなどで保持された状態)で使用されている場合、ユーザーが上下逆さまに手書きすることはなかったため不都合は生じにくかった。しかし、図2のような使用例では、手書き認識エンジンから見るとBさんとCさんの文字等は180度回転(天地が逆)しているので正しく手書き認識できない。
コンピュータやOS(Operating System)によっては、所定の操作(例えば、Ctrl+Alt+矢印キー)で画面全体を90度単位で回転することができる。つまり、自分が書いた文字等を手書き認識する場合、ユーザーは画面全体を回転すればよい。しかしこの方法では例えば向かい合った複数のユーザーがそれぞれ手書きした文字等を正しく手書き認識することはできない。
<本実施形態における手書き入力装置の処理の概略>
そこで、本実施形態の手書き入力装置2では、ユーザーに応じて異なる設定で手書き入力することを可能にする。
図3は、手書き入力装置2の処理の概略を説明する図の一例である。手書き入力装置2の周辺(4辺)にそれぞれ4人のユーザー(A〜D)が存在している。説明の便宜上、
Aさんの位置から文字等を手書きする場合の文字の角度を0度、
Bさんの位置から文字等を手書きする場合の文字の角度を90度、
Cさんの位置から文字等を手書きする場合の文字の角度を180度、
Dさんの位置から文字等を手書きする場合の文字の角度を270度、
とする。
各ユーザーはそれぞれペン2500を保持し、ペン2500で手書きする。このペン2500は識別情報(以下、ペンIDという)を記憶している。これを利用して、手書き入力装置2はペンIDと、ユーザーが文字等を手書きする角度情報を対応付けておく。すなわち、ユーザーは手書き入力装置2の使用を開始するに当たって、ペン2500を使用して、自分が文字等を手書きする時の角度情報(90度、180度、270度)を入力する(0度の場合は入力不要)。詳細は後述するが、簡単な操作で自分が文字等を書く時の角度情報を入力でき、ペンIDと角度情報を対応付けておくことができる。
図3では各ユーザーが「abc」という文字等を手書きしている。手書き入力装置2は、「abc」を手書きしたペン2500のペンIDで角度情報を特定し、手書きした「abc」を角度情報だけ、時計回りに回転させてから文字認識を行う。回転は内部的に行われ、表示されている文字等は回転しない。内部的にとは手書き入力装置がデータを処理することをいう。ただし、後述する操作ガイドは反時計回りに回転して表示される。図3では一例として、Cさんが手書きした「abc」という文字等を180度回転させた「abc」を示す(内部的に回転するだけなので表示はされない)。回転により文字等が天地方向を向くので(角度が0度になる)、手書き入力装置2は正しく文字認識することができる。
このように、本実施形態では、ペン(又はユーザー)に応じて異なる設定(ここでは角度情報)で手書き入力することが可能であるため、平置きされた手書き入力装置2の周囲のユーザーが文字等を手書きしても正しく文字認識できる。角度情報以外にも、文字の太さ、色、テクスチャなどをユーザーごとに設定できる。
<用語について>
入力手段とはタッチパネルに手書きが可能な手段であればよい。例えば、ペン、人の指や手、棒状部材などがある。また、視線入力が可能でもよい。
ストロークデータとは自由に手書きされた線である。連続した点の集合を有し、適宜、補間されてよい。
操作コマンドとは手書き入力装置2を操作するために用意されている、特定の処理の実行を指示する命令をいう。本実施形態では一例として、編集系、修飾系、入出力系、ペン状態の操作コマンドを例にするが、画面反転、ページ切り替え、動作モードの設定など、手書き入力装置2を操作する全てのコマンドが対象となる。
入力手段の制御データは、入力手段で入力されたストロークデータをどのように処理するかに関する情報である。例えば、色、太さ、パターン、及び、角度などがある。本実施形態ではペンID制御データとして説明される。これらは、ストロークデータに反映される。
ストロークデータに基づく情報は、ストロークデータに基づいて生成される情報であればよい。例えば、手書き認識後の変換可能候補、操作コマンドなどがある。
<ペンの外観の一例>
図4は、ペン2500の斜視図の一例を示す。図4は多機能なペン2500の一例を示す。電源を内蔵して手書き入力装置2に命令を送信できるペン2500をアクティブペンという(電源を内蔵しないペンをパッシブペンという)。図4のペン2500は、物理的なスイッチがペン先に一つ、ペン尻に一つ、ペン側面に二つあり、ペン先が筆記用、ペン尻が消去用、ペン側面はユーザー機能割り当て用である。本実施形態のペン2500は不揮発性のメモリーを有しており、他のペンと重複しないペンIDを記憶している。
なお、スイッチ付きのペンであれば、ユーザーの手書き入力装置2の操作手順を減らすことも可能である。スイッチ付きのペンとは主にアクティブペンを言うが、電磁誘導方式では電源を内蔵しないパッシブペンでもLC回路だけで電力を発生できるため、アクティブペンだけでなく電磁誘導方式のパッシブペンを含む。電磁誘導方式以外の光学方式、赤外線方式、及び、静電容量方式のスイッチのあるペンはアクティブペンである。
ユーザーはペン側面スイッチのうちの一つをペン機能メニュー102、もう一つを編集機能メニュー103に割り当てることができる。ユーザーが手に持ったペン2500の側面ボタンを押すことによってペン機能メニュー102又は編集機能メニュー103を表示させることができる点で便利にはなるが、操作の対象となるオブジェクトを変更するたびにユーザーが側面ボタンを押下してペン機能メニュー102又は編集機能メニュー103を開く煩雑さは変わらない。
一方、消去用のペン尻のスイッチを使用すると、図1で説明した(A1)(A2)(A4)のステップが不要になり、前記の(A3)のステップでペン先の代わりにペン尻を使えばよく、消去に要する操作手順を1ステップに短縮できる。
なお、ペン2500のハードウェア構成は、通信機能とマイコンを備えた一般的な制御方式と同様であるとする。ペン2500の座標の入力方式には、電磁誘導方式、アクティブ静電結合方式などがある。また、ペン2500は、筆圧検知、傾き検知、ホバー機能(ペンが触れる前にカーソルを表示)、などの機能を有していてよい。
<装置の全体構成>
図5を用いて、本実施形態に係る手書き入力装置2の全体構成を説明する。図5は、手書き入力装置2の全体構成図を示した図である。図5(a)では、手書き入力装置2の一例として、壁につり下げられた横長の電子黒板として使用される手書き入力装置2を示している。
図5(a)に示されているように、手書き入力装置2の上部には表示装置の一例としてのディスプレー220が設置されている。ユーザーUは、ペン2500を用いて、ディスプレー220に文字等を手書きする(入力、描画ともいう)ことができる。
図5(b)は壁につり下げられた縦長の電子黒板として使用される手書き入力装置2を示している。
図5(c)は机230に平置きされた手書き入力装置2を示す。手書き入力装置2は厚みが1cm程度なので、一般の机に平置きしても机の高さを調整する必要がない。また、容易に移動できる。
<装置のハードウェア構成>
続いて、図6を用いて、手書き入力装置2のハードウェア構成を説明する。手書き入力装置2は図示するように情報処理装置又はコンピュータの構成を有している。図6は、手書き入力装置2のハードウェア構成図の一例である。図6に示されているように、手書き入力装置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が図5(a)、図5(b)、又は、図5(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は、図6に示されているCPU201等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
なお、タッチセンサー216は、光学式に限らず、静電容量の変化を検知することにより接触位置を特定する静電容量方式のタッチパネル、対向する2つの抵抗膜の電圧変化によって接触位置を特定する抵抗膜方式のタッチパネル、接触物体が表示部に接触することによって生じる電磁誘導を検知して接触位置を特定する電磁誘導方式のタッチパネルなどの種々の検出手段を用いてもよい。タッチセンサー216は、ペン先のタッチの有無を検知するのに電子ペンが必要ない方式であってよい。この場合はタッチ操作をするのに指先やペン型の棒を使用できる。なお、ペン2500は、細長いペン型である必要はない。
<装置の機能について>
次に、図7を用いて、手書き入力装置2とペン2500が有する機能について説明する。図7(a)は手書き入力装置2が有する機能をブロック状に示す機能ブロック図の一例である。手書き入力装置2は、手書き入力部21、表示部22、手書き入力表示制御部23、候補表示タイマー制御部24、手書き入力保存部25、手書き認識制御部26、手書き認識辞書部27、文字列変換制御部28、文字列変換辞書部29、予測変換制御部30、予測変換辞書部31、操作コマンド認識制御部32、操作コマンド定義部33、及び、ペンID制御データ保存部36、を備えている。手書き入力装置2が有する各機能は、図6に示されている各構成要素のいずれかが、SSD204からRAM203上に展開されたプログラムに従ったCPU201からの命令によって動作することで実現される機能又は手段である。
手書き入力部21はタッチセンサー216等により実現されており、ユーザーによる手書き入力を受け付け、ペンIDを受信する。手書き入力部21はユーザーのペン入力d1をペンID付きのペン操作データd2(ペンアップ、ペンダウン、又はペン座標データ)に変換し、手書き入力表示制御部23に送信する。ペン座標データは離散値として定期的に送信され、離散値間の座標は補完計算される。
表示部22はディスプレー220等により実現され、手書きされたオブジェクトや操作メニューを表示する。表示部22は手書き入力表示制御部23がビデオメモリーに書き込んだ描画データd3をディスプレー220の特性に応じたデータに変換し、ディスプレー220に送信する。表示部22は、ユーザーの位置に応じてストロークデータに基づく情報を表示する。
手書き入力表示制御部23は手書き入力と表示に関する全体的な制御を行う。手書き入力表示制御部23は手書き入力部21からのペン操作データd2を処理し、表示部22に送信することで表示させる。ペン操作データd2の処理及びストロークの表示の詳細は後述の図26〜図32にて説明する。
候補表示タイマー制御部24は、選択可能候補の表示制御タイマーである。タイマーを開始又は停止して選択可能候補の表示を開始するタイミングと表示を消去するタイミングを生成する。選択可能候補とは、後述する操作ガイドに選択可能に表示される手書き認識文字列/言語文字列候補、変換文字列候補、文字列/予測変換の候補、操作コマンドの候補、である。候補表示タイマー制御部24は手書き入力表示制御部23からタイマー開始要求d4(タイマー停止要求の場合もある)を受信し、タイムアウトイベントd5を手書き入力表示制御部23に送信する。
手書き入力保存部25はユーザーデータ(手書きオブジェクト/文字列オブジェクト)を保存しておくストレージの機能を有する。手書き入力保存部25は手書き入力表示制御部23からユーザーデータd6−1を受信し、手書き入力保存部25に保存する。手書き入力保存部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から受信する。予測変換制御部30は手書き認識文字列、言語文字列候補d10及び変換文字列候補d16それぞれについて予測変換辞書部31を使用して予測文字列候補に変換しておく。予測変換文字列とは手書き認識文字列、言語文字列又は変換文字列を含んで生成される可能性が高い文字列である。別途、取得要求d19を手書き入力表示制御部23から受信した場合、予測文字列候補d20を手書き入力表示制御部23に送信する。
予測変換辞書部31は予測変換用の辞書データである。予測変換辞書部31は手書き認識文字列及び言語文字列候補と変換文字列候補d21を予測変換制御部30から受信し、予測文字列候補d22を予測変換制御部30に送信する。
操作コマンド認識制御部32は手書き認識文字列及び言語文字列候補d30を手書き認識制御部26から受信し、変換文字列候補d28を文字列変換制御部28から受信する。操作コマンド認識制御部32は予測文字列候補d29を予測変換制御部30から受信する。そして、それぞれについて操作コマンド変換要求d26を操作コマンド定義部33に送信し、操作コマンド定義部33から操作コマンドの候補d27を受信する。操作コマンド認識制御部32は操作コマンドの候補d27を保持しておく。
操作コマンド定義部33は操作コマンド変換要求d26が操作コマンド定義と部分一致(一部又は全体で一致すること)している場合は操作コマンドの候補d27を操作コマンド認識制御部32に送信する。
また、操作コマンド認識制御部32はペン操作データd24−1を手書き入力表示制御部23から受信し、過去に入力され確定した確定オブジェクトの位置情報取得要求d23を手書き入力保存部25に送信する。操作コマンド認識制御部32はペン操作データが指定している確定オブジェクトを選択オブジェクト(位置情報を含む)として保持しておく。操作コマンド認識制御部32はペン操作データd24−1の位置と所定の基準を満たす選択オブジェクトを特定する。別途、取得要求d24−2を手書き入力表示制御部23から受信した場合、保持している操作コマンドの候補と特定した選択オブジェクトd25を手書き入力表示制御部23に送信する。
ペンID制御データ保存部36は、ペンID制御データを保持している(記憶手段といってもよい)。手書き入力表示制御部23が表示部22に表示データを送信する前に、ペンID制御データ保存部36はペンID制御データd41を手書き入力表示制御部23に送信する。手書き入力表示制御部23は、ペンIDに対応付けて保存されている動作条件で表示データを描画する。また、手書き認識制御部26が手書き認識を実行する前に、ペンID制御データ保存部36は手書き認識制御部26にペンID制御データの角度情報d44を送信して、手書き認識制御部26はペンIDに対応づけて保存されている角度情報でストロークを回転して手書き認識を実行する。
また、手書き認識制御部26が、ユーザーが文字等を手書きする時の角度情報を設定するための直線を認識した後、手書き認識制御部26はペンID制御データの角度情報d43をペンID制御データ保存部36に送信して、ペンIDに対応付けて角度情報d43を保存する。また、手書き入力表示制御部23が角度情報を設定する操作コマンドを実行後に、手書き入力表示制御部23はペンID制御データd42をペンID制御データ保存部36に送信して、操作コマンドの実行結果(ユーザーが設定した角度情報)をペンIDに対応付けて保存する。以降、そのペンIDのストロークは設定した角度情報で回転してから手書き認識が実行される。
図7(b)は、ペン2500の機能をブロック状に示す機能ブロック図である。ペン2500はペンイベント送信部41を有している。ペンイベント送信部41はペンアップ、ペンダウン、ペン座標のイベントデータにペンIDをつけて手書き入力装置2に送信する。
<ユーザー認証について>
本実施形態ではユーザー認証の結果を用いた制御が行われるため、手書き入力装置2がユーザー認証する機能を有することが好ましい。このため、図8を用いてユーザー認証に関する機能について説明する。
図8は、手書き入力装置2が有するユーザー認証に関する機能をブロック状に示す図である。なお、図8ではユーザー認証部34(ユーザー認証手段)と関連する機能として手書き入力表示制御部23のみを示したが、ユーザーの認証結果は図7に示した各機能が利用できてよい。
認証情報取得部35はユーザーUから認証情報d31を取得する。認証情報d31はICカードのカード番号、ユーザーIDとパスワード、又は、指紋などの生体情報などでよい。ユーザー認証部34は認証情報d32を認証情報取得部35から取得して、認証情報d33をユーザー情報DB37で検索する。検索に適合するユーザーが存在する場合はユーザー情報d34をユーザー情報DB36から取得する。ユーザー情報はユーザーの属性を表す情報であればよく、例えば、ユーザー名、パスワード、ユーザーのコンピュータ名、部署、権限、などでよい。
ユーザー認証部34はユーザー情報d35を手書き入力表示制御部23に送信するので、手書き入力表示制御部23はユーザー情報を用いて操作コマンドを実行できるようになる。ユーザー情報を用いた操作コマンドに関しては図13にて説明される。
なお、認証機能は手書き入力装置2が有する他、外部の認証サーバー等が有していてもよい。この場合、手書き入力装置2は認証情報を認証サーバーに送信し、認証結果とユーザー情報を取得する。
<定義済み制御データについて>
次に、図9を用いて、手書き入力装置2が各種の処理に使用する定義済み制御データについて説明する。図9は定義済み制御データの一例を示す。図9の例では制御項目ごとに制御データを示す。
選択可能候補表示タイマー401は、選択可能候補を表示するまでの時間を定義する(第一の時間の一例)。手書き中に選択可能候補を表示しないためである。図9では、ペンアップからTimerValue=500〔ms〕以内にペンダウンが発生しなければ選択可能候補が表示されることを意味している。選択可能候補表示タイマー401は候補表示タイマー制御部24が保持している。選択可能候補表示タイマー401は、後述する図28のステップS18−2において選択可能候補表示タイマー開始時に使用される。
選択可能候補消去タイマー402は表示した選択可能候補を消去するまでの時間を定義する(第二の時間の一例)。ユーザーが選択可能候補を選択しない場合に選択可能候補を消去するためである。図9では、選択可能候補の表示からTimerValue=5000〔ms〕以内に選択可能候補が選択されなければ選択可能候補表示データが消去されることを意味している。選択可能候補消去タイマー402は候補表示タイマー制御部24が保持している。選択可能候補消去タイマー402は図30のステップS54において選択可能候補表示消去タイマー開始時に使用される。
手書きオブジェクト近傍矩形領域403は手書きオブジェクトの近傍とみなす矩形領域を定義する。図9の例では、手書きオブジェクト近傍矩形領域403は、手書きオブジェクトの矩形領域を水平方向に推定文字サイズの50%(Horizontal)拡大し、垂直方向に推定文字サイズの80%(Vertical)拡大した矩形領域となる。図9の例では推定文字サイズの割合(%指定)となっているが、単位を"mm"等とすれば固定長にすることも可能である。手書きオブジェクト近傍矩形領域403は手書き入力保存部25が保持している。推定文字サイズ405は図27のステップS10において、手書きオブジェクト近傍矩形領域とストローク矩形領域の重なり状況の判定で使用される。
推定書字方向/文字サイズ判定条件404は、書字方向と文字サイズの測定方向を判定するための定数を定義する。図9の例では、手書きオブジェクト矩形領域の最初にストロークが追加された時刻と最後にストロークが追加された時刻の差分がMinTime=1000〔ms〕以上で、手書きオブジェクト矩形領域の水平距離(幅)と垂直距離(高さ)の差分がMinDiff=10〔mm〕以上あり、水平距離が垂直距離より長い場合は、推定書字方向は「横書き」、推定文字サイズは垂直距離と判定することを意味する。水平距離が垂直距離より短い場合は、推定書字方向は「縦書き」、推定文字サイズは水平距離と判定することを意味する。以上の条件を満たさない場合は、推定書字方向は「横書き」(DefaultDir="Horizontal")、推定文字サイズは水平距離と垂直距離の長い方の距離と判定する。推定書字方向/文字サイズ判定条件404は手書き入力保存部25が保持している。推定書字方向/文字サイズ判定条件404は図30のステップS50における推定書字方向取得と、図32のステップS72における文字列オブジェクトフォント取得で使用される。
推定文字サイズ405は文字等のサイズを推定するためのデータを定義する。図9の例では、推定書字方向/文字サイズ判定条件404で判定された推定文字サイズが、推定文字サイズ405の小さめ文字405a(以下、最小フォントサイズ、と呼ぶ)と大きめ文字405c(以下、最大フォントサイズ)と比較されることを意味する。推定文字サイズが最小フォントサイズより小さい場合、推定文字サイズは最小フォントサイズと判定される。推定文字サイズが最大フォントサイズより大きい場合、推定文字サイズは最大フォントサイズと判定される。それ以外は、中くらい文字405bの文字サイズと判定される。推定文字サイズ405は手書き入力保存部25が保持している。推定文字サイズ405は、図32のステップS72における文字列オブジェクトフォント取得で使用される。
手書き入力保存部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は複数のオブジェクトが選択されたか否かの判定に使用されるデータを定義する。手書きオブジェクトが単数のストロークであり、図9の例では、手書きオブジェクトの長辺の長さが100〔mm〕以上(MinLenLongSide="100mm")、かつ、短辺の長さが50〔mm〕以下(MaxLenShortSide="50mm")、かつ、手書きオブジェクトとの長辺方向と短辺方向の重なり率が80〔%〕以上(MinOverLapRate="80%")のオブジェクトがあれば、複数のオブジェクトが選択された(選択オブジェクト)と判定する。跨ぎ線判定条件406は操作コマンド認識制御部32が保持している。跨ぎ線判定条件406は図29のステップS41における選択オブジェクトの判定の跨ぎ線判定で使用される。
囲み線判定条件407は、オブジェクトが囲み線か否かの判定に使用されるデータを定義する。図9の例では、操作コマンド認識制御部32は手書きオブジェクトの長辺方向と短辺方向の重なり率が100%以上(MinOverLapRate="100%")の確定オブジェクトを選択オブジェクトと判定する。囲み線判定条件407は、操作コマンド認識制御部32が保持している。囲み線判定条件407は、図29のステップS41における選択オブジェクトの判定の囲み線判定で使用される。
なお、跨ぎ線判定条件406と囲み線判定条件407はどちらが優先して判定されてもよい。例えば、跨ぎ線判定条件406を緩やかにして(跨ぎ線を選択しやすくした場合)、囲み線判定条件407は厳密にした場合(囲み線のみを選択できるような値とした場合)、操作コマンド認識制御部32は囲み線判定条件407を優先して判定するのがよい。
<辞書データの一例>
図10〜図12を用いて辞書データについて説明する。図10は手書き認識辞書部27の辞書データの一例である。図11は文字列変換辞書部29の辞書データの一例である。図12は予測変換辞書部31の辞書データの一例である。なお、これらの辞書データはそれぞれ図29のステップS24〜S33で使用される。
本実施形態では、図10の手書き認識辞書部27の辞書データによる変換結果を言語文字列候補、図11の文字列変換辞書部29の辞書データによる変換結果を変換文字列候補、図12の予測変換辞書部31の辞書データによる変換結果を予測文字列候補と呼ぶ。各辞書データの「変換前」は辞書データを検索する文字列、「変換後」は検索する文字列に対応した変換後の文字列、「確率」はユーザーが選択する確率を表す。確率は過去にユーザーが各文字列を選択した結果から算出されている。したがって、ユーザーごとに確率が算出されてもよい。確率の計算方法として様々なアルゴリズムが考案されているが、適宜、適切な方法で計算するものとすればよく、詳細は割愛する。本実施形態では、推定書字方向から文字列候補を選択確率降順で表示することを特徴とする。
図10の手書き認識辞書部27の辞書データでは、手書きされた「ぎ」は、確率0.55で「議」、確率0.4で「技」、手書きされた「ぎし」は、確率0.5で「技士」、確率0.45で「技師」に変換されることを示す。その他の「変換前」の文字列についても同様である。図10では「変換前」の文字列が手書きされた平仮名となっているが、平仮名以外を「変換前」に登録してもよい。
図11の文字列変換辞書部29の辞書データでは、文字列「議」は確率0.95で「議事録」に、文字列「技」は確率0.85で「技量試」に変換されることを示す。その他の「変換前」の文字列についても同様である。
図12の予測変換辞書部31の辞書データでは、文字列「議事録」は確率0.65で「議事録の送付先」に、文字列「技量試」は確率0.75で「技量試を決裁」に変換されることを示す。図12の例では変換前の文字列がすべて漢字になっているが、漢字以外を登録してもよい。
なお、辞書データに言語依存はなく、変換前と変換後にどのような文字列が登録されていてもよい。
<操作コマンド定義部が保持する操作コマンド定義データ>
次に、図13、図14を用いて操作コマンド認識制御部32が使用する操作コマンド定義データについて説明する。図13は、操作コマンド定義部33が保持する操作コマンド定義データとシステム定義データの一例を示す。
図13(a)は操作コマンド定義データの一例を示す。図13(a)の操作コマンド定義データは、手書きオブジェクトにより選択された選択オブジェクトがない場合の操作コマンド定義データ例であり、手書き入力装置2を操作する全ての操作コマンドが対象となる。図13(a)の操作コマンドは操作コマンド名(Name)、文字列候補と部分一致する文字列(String)、実行する操作コマンド文字列(Command)を有する。操作コマンド文字列内の「%〜%」は変数であり、図13(b)に示すようにシステム定義データと対応付けられている。つまり、「%〜%」は図13(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に対応付けてファイルの入出力が可能になる。
操作コマンド定義データ709、710、711は、ペン状態を変更する操作コマンドである。ペン状態とはペンの種類と称してもよい。操作コマンド定義データ709、710、711それぞれの操作コマンド名は「細ペン」「太ペン」「マーカー」、文字列候補と部分一致する文字列が「細」、「ペン」、「太」「ペン」、「マーカー」又は「ペン」、操作コマンド文字列が「ChangePen fine」「ChangePen bold」又は「Changepen marking」である。この操作コマンドが実行されると、ペン状態はペンID制御データ保存部36に保存されるので、ユーザーは設定したペン状態でストロークを手書きできる。
操作コマンド定義データ712は、テキストデータの方向を一定方向に揃えるための操作コマンドである。操作コマンド定義データ712の操作コマンド名は「テキスト方向を揃える」、文字列候補と部分一致する文字列が「テキスト」「向き」又は「方向」、操作コマンド文字列が「AlignTextDirection」である。ユーザーが天地方向以外から書き込んだテキストデータは向きがばらばらなので、ある1つの方向から全てを読み取りにくい。操作コマンド定義データ712をユーザーが実行すると、手書き入力装置2は手書き認識した文字列を同一方向(例えば、天地方向)に揃える。この場合の揃えるとは、テキストデータを角度情報だけ回転させることをいう。
続いて、図14に基づいて手書きオブジェクトがある場合の操作コマンド定義データ、つまり編集系及び修飾系の操作コマンド定義データについて説明する。図14は手書きオブジェクトにより選択された選択オブジェクトがある場合の操作コマンド定義データの一例を示す。図14の操作コマンド定義データは、操作コマンド名(Name)、操作コマンドの候補のグループ名(Group)、実行する操作コマンド文字列(Command)を有する。
操作コマンド定義データ707は編集系(Group="Edit")の操作コマンドを定義しており、編集系の操作コマンド名「消去」「移動」「回転」「選択」の定義データ例である。つまり、選択オブジェクトに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。
操作コマンド定義データ708は修飾系(Group="Decorate")の操作コマンドを定義しており、修飾系の操作コマンド名「太く」「細く」「大きく」「小さく」「下線」の定義データ例である。選択オブジェクトに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。この他、色の操作コマンドが表示されてもよい。
したがって、ユーザーが選択オブジェクトを手書きオブジェクトで選択することで、操作コマンド定義データ707、708が特定されるため、ユーザーが手書きすることで操作コマンドを表示させることができる。
<手書き入力保存部が保存する手書き入力保存データ>
次に、図15を用いて、手書き入力保存データについて説明する。図15は、手書き入力保存部25が保存する手書き入力保存データの一例を示す。図15の1行が1つのストロークを表す。1つの手書き入力保存データは、DataId、Type、PenId, Color, Width, Pattern, Angle、StartPoint、StartTime、EndPoint、EndTime、Point、及び、Pressureの各項目を有している。
DataIdはストロークの識別情報である。Typeはストロークの種別である。種別にはストローク(Stroke)、グループ(Group)、及びテキスト(Text)がある。手書き入力保存データ801、802の種別はStrokeであり、手書き入力保存データ803の種別はGroupである。Groupとは他のストロークをグループ化することを意味し、種別がGroupの手書き入力保存データは、DataIdでグループ化の対象のストロークを指定する。PenId、Color, Width, Pattern, Angleは次述するペンID制御データが転記されたものである。StartPointはストロークの始点座標であり、StartTimeはストロークの始点時刻である。EndPointはストロークの終点座標であり、EndTimeはストロークの終点時刻である。Pointは始点から終点までの座標列であり、Pressureは始点から終点までの筆圧である。Angleに示すように、手書き入力保存データ804,805はそれぞれ180度、270度だけ時計回りに回転してから手書き認識されたことを示す。
<ペンID制御データ保存部が保存するペンID制御データ>
次に、図16を用いて、ペンID制御データについて説明する。図16は、ペンID制御データ保存部36が保存するペンID制御データを説明する図である。図16(a)の1行が1つのペンのペンID制御データを示す。また、図16(b)は手書き入力装置2に対しユーザーが手書きする時の角度情報を説明する図である。角度情報はユーザーが存在する方向の角度とも言えるし、ペンが使用される方向の角度とも言えるし、ユーザーが手書きした文字の回転に関する角度とも言える。手書き入力装置2の所定の方向(例えば天地方向)を0度(基準)として、各ユーザーの角度情報は反時計回りに45度、90度、135度、180度、225度、270度、315度、である。
ユーザーの角度情報は、手書き入力装置2が平置きされた場合に、手書き入力装置2に対しユーザーが存在する位置である。すなわちユーザーの角度情報は位置に関する情報ということができる。手書き入力装置2から見てどの方向にユーザーがいるかを特定できる。角度情報の他、手書き入力装置2から見た方向を時計に見立て、0度:6時方向、45度:4時方向と5時方向の間、90度:3時方向、135度:1時方向と2時方向の間、180度:12時方向、225度:10時方向と11時方向の間、270度:9時方向、315度:7時方向と8時方向の間、と表現してもよい。
なお、角度情報はユーザーの位置によって自動的に決まるわけではなく、各ユーザーが角度情報を入力する(指定する)。指定可能な角度情報の分解能(図16では45度)は一例に過ぎず、より小さい5度〜30度などでもよい。ただし、45度くらいで回転した文字であれば、ユーザーは読めると考えられる。
ペンID制御データは、PenId、Color、Width、Pattern、及び、Angleを有している。PenIdはペン内部に保存されている識別情報である。Colorはこのペンに設定されているストロークの色である(ユーザーが任意に変更可能)。Widthはこのペンに設定されているストロークの太さである(ユーザーが任意に変更可能)。Patternはこのペンに設定されているストロークの線種である(ユーザーが任意に変更可能)。Angleはこのペンに設定されているストロークの角度情報である(ユーザーが任意に変更可能)。図16(a)の例では、各ペンの角度情報は、反時計回りに0度、90度、180度、270度となっている。
ペンID制御データ901はペンIDが1の制御データで、色は黒(Black)、太さは1ピクセル(1 px)、パターンはベタ塗り(Solid)、角度情報は0度である。同様に、ペンID制御データ902はペンIDが2、色は黒、太さは1ピクセル、パターンはベタ塗り、角度情報は90度である。ペンID制御データ903は、ペンIDが3、色は黒、太さは10ピクセル、パターンはベタ塗り、角度情報は180度である。ペンID制御データ904は、色が黒、太さは10ピクセル、パターンはハーフトーンドット、角度情報は270度である。
このデータは、図26のステップS5(ペンID制御データ取得)、図28のステップS20(ペンID制御データの角度情報を保存)、ステップS21(ペンID制御データの角度情報を取得)、図30のステップS51(ペンID制御データの取得)、図32のステップS78(ペンID制御データの角度情報を保存)、で使用される。
<選択可能候補の表示例>
図17は操作ガイド500と操作ガイドが表示する選択可能候補530の一例である。ユーザーが手書きオブジェクト504を手書きすることで(選択可能候補表示タイマーのタイムアウトにより)、操作ガイド500が表示される。操作ガイド500は、操作ヘッダー520、操作コマンドの候補510、手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508、及び、手書きオブジェクト矩形領域表示503を有している。選択可能候補530は、操作コマンドの候補510、手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508である。この例では言語変換文字列がないが表示される場合がある。また、操作コマンドの候補510を除く選択可能候補530を文字列候補539という。
操作ヘッダー520はボタン501、509、502、505を有する。ボタン501は予測変換とカナ変換の切り替え操作を受け付ける。図17の例ではユーザーが「予測」と表示されているボタン509を押下すると手書き入力部21がそれを受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が「かな」というボタン509に表示を変更する。変更後は、文字列候補539が「カナ変換」の確率降順で並ぶ。
ボタン502は候補表示のページ操作をする。図17の例では候補表示ページは3ページあり、現在は1ページ目を表示している。ボタン505は操作ガイド500の消去を受け付ける。ユーザーがボタン505を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が手書きオブジェクト以外の表示を消去する。ボタン509は一括表示消去を受け付ける。ユーザーがボタン509を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知する。表示部22は手書きオブジェクトを含め、図17に示されているすべての表示を消去する。ユーザーは最初から手書きしなおすことができる。
手書きオブジェクト504はユーザーが手書きした「ぎ」という文字である。手書きオブジェクト504を囲む手書きオブジェクト矩形領域表示503が表示される。表示の手順は図26〜図32のシーケンス図で説明する。図17の例では点線枠で手書きオブジェクト矩形領域表示503が表示されている。
手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508にはそれぞれの文字列候補が確率降順で並んでいる。手書き認識文字列候補506の「ぎ」は認識結果の候補である。この例では正しく「ぎ」を認識している。
変換文字列候補507は言語文字列候補から変換された変換文字列候補である。この例の「技量試」とは「技術量産試作」の略名である。文字列/予測変換の候補508は言語文字列候補又は変換文字列候補から変換された予測文字列候補である。この例では「技量試を決裁」と「議事録の送付先」が表示されている。
操作コマンドの候補510は図13(a)の操作コマンド定義データ701〜703、709〜712に基づいて選択された操作コマンドの候補である。図17の例では行頭文字の「》」511が操作コマンドの候補であることを示している。図17では手書きオブジェクト504である「ぎ」が選択する選択オブジェクトがなく、「ぎ」の文字列候補である「議事録」が、図13(a)の操作コマンド定義データ701,702と部分一致したため、操作コマンドの候補510として表示されている。
ユーザーが「議事録テンプレートを読み込む」を選択すると、操作コマンド定義データ701で定義された操作コマンドが実行され、「議事録フォルダーに保存する」を選択すると、操作コマンド定義データ702で定義された操作コマンドが実行される。このように操作コマンドの候補は、変換された文字列を含む操作コマンド定義データが見つかる場合に表示されるため、常に表示されるとは限らない。
図17に示すように、文字列候補と操作コマンドの候補が同時に(共に)表示されるため、ユーザーは自分が入力しようとした文字列候補と操作コマンドのどちらも任意に選択できる。
<操作ガイドの位置と手書きオブジェクト矩形領域表示の位置の関係>
表示部22は、ストロークデータの位置に応じた位置にテキストデータを含む操作ガイド500を表示する。表示部22は、ストロークデータの位置に基づいた画面内の位置に、テキストデータを含む操作ガイド500を表示する。このように、操作ガイド500の位置はストロークデータの位置によって定まる。
図18は、操作ガイドの位置と手書きオブジェクト矩形領域表示の位置の関係を説明する図である。まず、操作ガイド500の横幅A及び高さH1は一定である。手書きオブジェクト矩形領域表示503の右端と操作ガイド500の右端は一致する。
手書きオブジェクト矩形領域表示503の横幅Bは、ユーザーが手書きした手書きオブジェクト504の長さによって定まる。図18(a)では、手書きオブジェクト矩形領域表示503の横幅Bが1文字分であり、A>Bなので、操作ガイド500の左上コーナーPの座標(x0、y0)は以下のように算出される。なお、手書きオブジェクト矩形領域表示503の左上コーナーQの座標を(x1、y1)とする。手書きオブジェクト矩形領域表示503の高さをH2とする。
x0 = x1 −(A−B)
y0 = y1+H2
一方、図18(b)に示すように、手書きオブジェクト矩形領域表示の横幅BがAより大きい場合、操作ガイド500の左上コーナーPの座標(x0、y0)は以下のように算出される。
x0 = x1+(B−A)
y0 = y1+H2
なお、図18等では手書きオブジェクト矩形領域表示503の下方に操作ガイド500が表示されているが、操作ガイド500は手書きオブジェクト矩形領域表示503の上方に表示されてもよい。
図19は、手書きオブジェクト矩形領域表示503の上方に表示された操作ガイド500を示す。x1の算出方法は図18と同様であるが、y0の算出方法が変わる。
y0 = y1− H1
なお、操作ガイド500は手書きオブジェクト矩形領域表示503の右側又は左側に表示されてもよい。また、ユーザーがディスプレーの端に手書きしたため操作ガイド500の表示スペースがない場合、操作ガイド500は表示スペースがある側に表示される。
<選択オブジェクトの指定例>
本実施形態の手書き入力装置2は確定オブジェクトをユーザーが手書きにより選択することで選択オブジェクトを指定できる。選択オブジェクトは編集又は修飾の対象となる。
図20は、選択オブジェクトの指定例を説明する図の一例である。図20では、手書きオブジェクト11は黒色実線、手書きオブジェクト矩形領域12を灰色網掛け、確定オブジェクト13を黒線、選択オブジェクト矩形領域14を点線でそれぞれ表示している。なお、それぞれを区別する場合に小文字のアルファベットを符号に付加する。また、確定オブジェクトを選択オブジェクトと判定するための判定条件(所定の関係にあるか否か)として、図9に示した定義済み制御データの跨ぎ線判定条件406又は囲み線判定条件407を使用している。
図20(a)は横書きの2つの確定オブジェクト13a、13bをユーザーが跨ぎ線(手書きオブジェクト11a)で指定した例である。この例では、手書きオブジェクト矩形領域12aの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしており、確定オブジェクト13a、13bとの重なり率が跨ぎ線判定条件406の条件を満たしているため、「議事録」と「ぎじ」の両方の確定オブジェクト13a、13bが選択オブジェクトとして指定されている。
図20(b)は横書きの確定オブジェクト13cを囲み線(手書きオブジェクト11b)で指定した例である。この例では、確定オブジェクト13cと手書きオブジェクト矩形領域12cの重なり率が囲み線判定条件407の条件を満たしている「議事録」という確定オブジェクト13cだけが選択オブジェクトとして指定されている。
図20(c)は縦書きの複数の確定オブジェクト13d、13eを跨ぎ線(手書きオブジェクト11c)で指定した例である。この例では、図20(a)と同様に、手書きオブジェクト矩形領域12dの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしており、「議事録」と「ぎじ」という2つの確定オブジェクト13d、13eそれぞれとの重なり率が跨ぎ線判定条件406の条件を満たしているため、「議事録」と「ぎじ」の両方の確定オブジェクト13d、13eが選択オブジェクトとして指定されている。
図20(d)は縦書きの確定オブジェクト13fを囲み線(手書きオブジェクト11d)で指定した例である。この例では、図20(b)と同様に、「議事録」という確定オブジェクト13fだけが選択オブジェクトとして指定されている。
<操作コマンドの候補の表示例>
図21は、図14に示した手書きオブジェクトがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図21(a)は編集系の操作コマンドの候補であり、図21(b)は修飾系の操作コマンドの候補である。また、図21(a)は図20(a)の手書きオブジェクト11aで選択オブジェクトが指定された例を示す。
図21(a)(b)に示すように、行頭文字「》」511に続いて表示された操作コマンドの候補がメインメニュー550である。メインメニュー550には最後に実行された操作コマンド名又は操作コマンド定義データで先頭の操作コマンド名が表示される。1行目の行頭文字「》」511aは編集系の操作コマンドの候補であり、2行目の行頭文字「》」511bは修飾系の操作コマンドの候補である。
行末の「〉」512はサブメニューがあることを示す(サブメニューボタンの一例)。1行目の「〉」512aは編集系の操作コマンドの候補についてサブメニュー(最後に選択された)を表示させる。2行目の「〉」512bは修飾系の操作コマンドの候補について残りのサブメニューを表示させる。ユーザーが「〉」512を押下すると、その右側にサブメニュー560が表示される。サブメニュー560には操作コマンド定義データで定義されている全ての操作コマンドが表示される。図21(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)の認識結果であり、ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
図21(b)では2行目の「〉」512bの押下により、図21(b)のサブメニューが表示される。図21(b)の表示例も図21(a)と同様にメインメニュー550とサブメニュー560が表示されている。図14の操作コマンド定義データに基づいて、「太く」531が選択されると「Thick」、「細く」532が選択されると「Thin」、「大きく」533が選択されると「Large」、「小さく」534が選択されると「Small」、下線535が選択されると「Underline」を手書き入力表示制御部23が選択オブジェクトに対してそれぞれ実行する。
なお、「太く」531が選択された場合にどのくらい太くするか、「細く」532が選択された場合にどのくらい細くするか、「大きく」533が選択された場合にどのくらい大きくするか、「小さく」534が選択された場合にどのくらい小さくするか、下線535が選択された場合の線種等は、固定値が別途定義されている。あるいは、図21(b)のサブメニューが選択されると別途、選択メニューが開かれユーザーが調整できるようになっているとなおよい。
ユーザーが「太く」531をペンで押下すると「議事録」と「ぎじ」という確定オブジェクト13a、13bを構成する線を手書き入力表示制御部23が太くする。「細く」532をペンで押下すると、「議事録」と「ぎじ」を構成する線を手書き入力表示制御部23が細くでき、「大きく」533をペンで押下すると手書き入力表示制御部23が大きくでき、「小さく」534をペンで押下すると手書き入力表示制御部23が小さくでき、「下線」535をペンで押下すると下線を手書き入力表示制御部23が追加できる。
図22は、図14に示した手書きオブジェクトがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図21(a)(b)との相違は、図22(a)(b)は図20(b)の手書きオブジェクト11b(囲み線)で選択オブジェクトが指定された例を示す。図21と図22を比較すると分かるように手書きオブジェクトが線か囲み線かによって表示される操作コマンドの候補に違いはない。手書き入力表示制御部23は選択オブジェクトが指定されると操作コマンドの候補を表示部22に表示させるためである。しかし、手書きオブジェクトを認識して手書きオブジェクトに応じて表示する操作コマンドの候補を変更してもよい。この場合、認識された手書きオブジェクト(一や○など)に図14のような操作コマンド定義データを対応付けておく。
図22において操作コマンドの候補以外の文字列候補である「○」551、「∞」552、「0」553、「00」554、「ロ」555は囲み線(手書きオブジェクト11b)の認識結果であり、ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
<角度情報の入力例>
次に、図23を用いて角度情報の入力方法を説明する。図23は、角度情報の入力方法を説明する図の一例である。図23では手書き入力装置2の3時の方向に存在するユーザーが角度情報を入力する場合を説明する。3時の方向から手書きされた文字等は時計回りに90度回転されると正しく認識されるので、90度の角度情報が入力されるとよい。
図23(a)は、ペンID制御データの角度情報が0度(初期値)の状態で、手書き入力装置2の3時の方向に存在するユーザーが「ぎ」を手書きしたため、操作ガイド500が表示された状態を示す。手書き入力装置2は3時の方向から手書きした「ぎ」を、角度情報が0度のまま文字認識するため、期待とは違う選択可能候補530が表示されている。
角度情報を入力する場合、ユーザーは操作ガイド500内に(所定範囲の一例)、ユーザーから見て上から下方向に直線を手書きする。図23(b)はこの直線521の一例を示す。角度情報が0度である6時の方向とこの直線521との反時計回りのなす角αが角度情報である。すなわち、始点Sから6時の方向に下ろした直線522と、ユーザーが入力した直線521の反時計回りのなす角αが角度情報である。簡単には、直線521の終点方向が角度情報である。したがって、図23(b)でユーザーが入力した角度情報は90度である。
なお、直線の検出には、例えば、始点Sから終点Eまでの座標を最小二乗法で直線に変換し、得られた相関係数と閾値を比較して直線か否かを判定する方法がある。
ユーザーが直線521を書き始めた直後(ペン2500を直線521の始点Sに触れた直後)、手書き入力装置2は操作ガイド500を消去する。また、直線521を書き終わった直後(ペン2500を直線521の終点Eから離した直後)、手書き入力装置2は、45度、90度、135度、180度、215度、270度、315度、360度から上記のなす角αが最も近い値を探してそれを角度情報に決定する。なす角αそのものを角度情報としてもよい。ペンID制御データのAngleには決定した角度情報が設定される。ペン2500のペンイベント送信部41は、手書きなどのためにペン先が押圧されると、ペンIDを手書き入力装置2に送信するので、手書き入力装置2はペンID制御データに角度情報を対応付けることができる。
なお、ユーザーが直線を手書きして角度情報を入力できるのは操作ガイド500に限られている。これにより、ユーザーが操作ガイド500以外で直線を手書きすると「1」や「一」などと認識され、操作ガイド500で直線を手書きすると角度情報を入力できる。すなわち、手書き認識制御部26は、所定範囲から直線を検出し、所定範囲外に手書きされたストロークデータをテキストデータに変換する。
図23(c)は、図23(b)の操作直後の操作ガイド500を示す。ペンID制御データには角度情報(Angle)として90度が設定されたので、手書きオブジェクト(ストロークデータ)が内部的に90度だけ時計回りに回転して手書き認識され、操作ガイド500は90度だけ反時計回りに回転して表示されている。
図24は、45度の角度情報の入力方法を説明する図の一例である。図24では手書き入力装置2の4時と5時の中間の方向に存在するユーザーが角度情報を入力する場合を説明する。4時方向と5時方向の中間から手書きされた文字等は時計回りに45度回転されると正しく認識されるので、45度の角度情報が入力されるとよい。
図24(a)は、角度情報が0度(初期値)の状態で、手書き入力装置2の4時方向と5時方向の中間の方向に存在するユーザーが「ぎ」を手書きしたため、操作ガイド500と選択可能候補が表示された状態を示す。手書き入力装置2は4時方向と5時方向の中間の方向から手書きした「ぎ」を、角度情報が0度のまま文字認識するため、期待とは違う選択可能候補が表示されている。
角度情報を入力する場合、ユーザーは操作ガイド500内に、ユーザーから見て上から下方向に直線を手書きする。図24(b)はこの直線521の一例を示す。角度情報が0度の6時の方向とこの直線521との反時計回りのなす角αが角度情報である。したがって、図24(b)でユーザーが入力した角度情報は45度である。ペンID制御データのAngleにはこの角度情報(45度)が設定される。
図24(c)は、図24(b)の操作直後の操作ガイド500を示す。ペンID制御データには角度情報(Angle)として45度が設定されたので、手書きオブジェクトが内部的に45度だけ時計回りに回転して手書き認識され、操作ガイド500は45度だけ反時計回りに回転して表示される。
図25は、角度情報の別の入力方法を説明する図の一例である。図25では手書き入力装置2の3時の方向にユーザーが存在するものとする。図25は、角度情報が0度(初期値)の状態で、手書き入力装置2の3時の方向に存在するユーザーが「ぎ」を手書きしたため、操作ガイド500が表示されている。また、図25の操作ガイド500は操作ヘッダー520に回転操作ボタン511を有している。回転操作ボタン511のアイコンは円形になっており、ユーザーがどの方向から見ても回転操作ボタン511を認識しやすくなっている。
回転操作ボタン511は、ユーザーがペン2500で押下するたびに、ペンID制御データの角度情報を90度ずつ加算して360度で割った余りに変更するボタンである。この余りが角度情報となる。なお、回転操作ボタン511の1回の押下で加算される角度を45度としてもよい。また、押下のたびに現在の角度情報が分かる表示(例えば、角度情報をポップアップ表示する)をするとよい。
<動作手順>
以上の構成と図26〜図32を用いて、手書き入力装置2の動作について説明する。図26〜図32は手書き入力装置2が文字列候補と操作コマンドの候補を表示する処理を説明する一例のシーケンス図である。図26の処理は、手書き入力装置2が起動すると(アプリケーションが起動すると)スタートする。なお、図26〜図32ではスペースの都合上、符号で図7の機能を示した。
S1:まず、手書き入力表示制御部23が手書きオブジェクト開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト領域(手書きオブジェクトを保存するメモリー領域)を確保する。ユーザーがペンを手書き入力部21に接触させてから手書きオブジェクト領域を確保してもよい。
S2:次にユーザーが手書き入力部21にペンを接触させる。手書き入力部21はペンダウンを検出して手書き入力表示制御部23に送信する。
S3:手書き入力表示制御部23は手書き入力保存部25にストローク開始を送信し、手書き入力保存部25はストローク領域を確保する。
S4:ユーザーがペンを手書き入力部21に接触させたまま移動させると、手書き入力部21はペン座標を手書き入力表示制御部23に送信する。
S5:手書き入力表示制御部23は座標の入力と同時にペン2500から受信したペンIDを指定して、ペンID制御データ保存部36に保存されている現在のペンID制御データを取得する。ペンIDは座標の入力時に送信されるので、ストロークとペンIDが対応付けられる。ペンID制御データ保存部36はペンID制御データ(色、太さ、パターン、角度情報)を手書き入力表示制御部23に送信する。なお、角度情報はまだ初期値のゼロである。
S6:手書き入力表示制御部23はペン座標補完表示データ(離散的なペン座標を補間したストロークデータ)を表示部22に送信する。表示部22はペン座標補完表示データを用いてペン座標を補間して線を表示する。
S7:手書き入力表示制御部23はペン座標とその受信時刻を手書き入力保存部25に送信する。手書き入力保存部25はペン座標をストロークに追加する。ユーザーがペンを動かしている間は、手書き入力部21は定期的に手書き入力表示制御部23へのペン座標の送信を繰り返すため、ステップS4〜S7の処理がペンアップされるまで繰り返される。
S4:ユーザーが手書き入力部21からペンを離すと、手書き入力部21はペンアップを手書き入力表示制御部23に送信する。
S9:手書き入力表示制御部23は手書き入力保存部25にストローク終了を送信し、手書き入力保存部25はストロークのペン座標を確定させる。ストロークのペン座標の確定により以降はストロークにペン座標を追加できなくなる。
S10:次に、手書き入力表示制御部23は手書きオブジェクト近傍矩形領域403に基づいて、手書きオブジェクト近傍矩形領域とストローク矩形領域の重なり状況取得を手書き入力保存部25に送信する。手書き入力保存部25は重なり状況を計算して重なり状況を手書き入力表示制御部23に送信する。
続く、ステップS11〜S17は、手書きオブジェクト近傍矩形領域とストローク矩形領域が重なっていない場合に実行される。
S11:手書きオブジェクト近傍矩形領域とストローク矩形領域が重なっていない場合、1つの手書きオブジェクトが確定するので、手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S12〜14:手書き認識制御部26は保持データクリアをそれぞれ文字列変換制御部28、予測変換制御部30、操作コマンド認識制御部32に送信する。手書き認識制御部26、文字列変換制御部28、予測変換制御部30及び操作コマンド認識制御部32がこれまでに保持している文字列候補と操作コマンドの候補に係るデータをクリアする。なお、クリアの時点では最後に手書きされたストロークは手書きオブジェクトに追加されていない。
S15:手書き入力表示制御部23は手書きオブジェクト終了を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクトを確定させる。手書きオブジェクトの確定とは1つの手書きオブジェクトが完成したこと(これ以上、ストロークが追加されないこと)をいう。
S16:手書き入力表示制御部23は手書きオブジェクト開始を手書き入力保存部25に送信する。次の手書きオブジェクトの手書きが開始(ペンダウン)されることに備えて、手書き入力保存部25は新しい手書きオブジェクト領域を確保する。
S17:次に手書き入力表示制御部23はステップS9で終了したストロークに関してストローク追加を手書き入力保存部25に送信する。ステップS11〜S17が実行された場合、追加されるストロークは手書きオブジェクトの最初のストロークであり、手書き入力保存部25は開始中の手書きオブジェクトにストロークデータを追加する。ステップS11〜S17が実行されてない場合、追加されるストロークはすでに手書き中の手書きオブジェクトに追加される。
S18:続いて手書き入力表示制御部23はストローク追加を手書き認識制御部26に送信する。手書き認識制御部26は文字列候補が格納されるストロークデータ保持領域(ストロークデータが一時的に格納される領域)にストロークデータを追加する。
S19:手書き認識制御部26はストロークデータ保持領域に対してジェスチャー手書き認識を実行する。ジェスチャー手書き認識とは、直線から角度情報を認識することをいう。なお、ジェスチャー手書き認識は操作ガイド500の内部で行われるため、手書き認識制御部26は操作ガイド500の内部の直線を検出する。操作ガイド500の位置情報は後述するステップS57で手書き認識制御部26に送信される。
S20:操作ガイド500内の直線が検出された場合、直線の始点から6時の方向に下ろした直線522と、ユーザーが入力した直線521の反時計回りのなす角αを、45度単位で決定する。そして、手書き認識制御部26は、決定した角度情報を直線521のストロークデータが有するペンIDに対応付けてペンID制御データ保存部36に保存する。なお、ステップS20は操作ガイド500内で直線が検出された場合に実行される。
S21:次に、手書き認識制御部26は、手書き入力部21から受信したペンIDを指定して、ペンID制御データ保存部36からペンID制御データの角度情報を取得する。
S22:手書き認識制御部26は、ストロークデータ保持領域のストロークデータを取得した角度情報で時計回りに回転する。
S23:これにより、ストロークデータが天地方向に対し0度になるので、手書き認識制御部26はストロークデータに手書き認識を実行する。
S24:手書き認識制御部26はこの実行結果である手書き認識文字列候補を手書き認識辞書部27に送信する。手書き認識辞書部27は言語的に確からしい言語文字列候補を手書き認識制御部26に送信する。
S25:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を文字列変換制御部28に送信する。
S26:文字列変換制御部28は手書き認識文字列候補及び言語文字列候補を文字列変換辞書部29に送信する。文字列変換辞書部29は変換文字列候補を文字列変換制御部28に送信する。
S27:文字列変換制御部28は受信した変換文字列候補を予測変換制御部30に送信する。
S28:予測変換制御部30は受信した変換文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S29:予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S30:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
以降ステップS31〜S38で説明される操作コマンドの候補の送信まで同様に処理を行う。
S31:文字列変換制御部28は受信した変換文字列候補を操作コマンド認識制御部32に送信する。
S32:操作コマンド認識制御部32は受信した変換文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は変換文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S33:手書き認識制御部26は手書き認識文字列候補及び言語文字列候補を予測変換制御部30に送信する。
S34:予測変換制御部30は手書き認識文字列候補及び受信した言語文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S35:予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S36:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S37:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド認識制御部32に送信する。
S38:操作コマンド認識制御部32は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は言語文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S39:次に手書き認識制御部26はストローク追加を操作コマンド認識制御部32に送信する。
S40:操作コマンド認識制御部32は確定オブジェクトの位置情報取得を手書き入力保存部25に送信する。手書き入力保存部25は確定オブジェクトの位置情報を操作コマンド認識制御部32に送信する。
S41:操作コマンド認識制御部32は選択オブジェクトの判定のため、ステップS39のストローク追加で手書き認識制御部26から受信したストロークの位置情報と、手書き入力保存部25から受信した確定オブジェクトの位置情報が所定の関係にあるか否かを跨ぎ線判定条件406及び囲み線判定条件407に基づいて判定し、選択されていると判定できる確定オブジェクトを選択オブジェクトとして保存しておく。また、この場合、選択オブジェクトが特定されるので入出力系の操作コマンドの候補を操作コマンド定義部33から取得する。
また、手書き認識制御部26、文字列変換制御部28、予測変換制御部30、及び、操作コマンド認識制御部32はそれぞれ手書き認識文字列候補、言語文字列候補、変換文字列候補、予測文字列候補、操作コマンドの候補、及び、選択オブジェクトに係るデータを後段のステップS46〜S49で取得できるよう保持しておく。
S18−2:手書き入力表示制御部23はステップS18でストローク追加を手書き認識制御部26に送信した直後、選択可能候補表示タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。
続く、ステップS42〜S44は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生した場合に実行される。
S42:タイマーがタイムアウトする前に、ユーザーが手書き入力部21にペンを接触させた場合、手書き入力部21はペンダウン(ステップS2と同じイベント)を手書き入力表示制御部23に送信する。
S43:手書き入力表示制御部23はストローク開始(ステップS3と同じ)を手書き入力保存部25に送信する。この後のシーケンスはステップS3以降と同じである。
S44:更に手書き入力表示制御部23は選択可能候補表示タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はタイマーを停止させる。ペンダウンが検出されたのでタイマーが不要になるからである。
ステップS45〜S79は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生しない場合に実行される。したがって、図17に示した操作ガイド500が表示される。
S45:選択可能候補表示タイマー開始中にユーザーが手書き入力部21にペンを接触させなかった場合、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
S46:手書き入力表示制御部23は手書き認識文字列/言語文字列候補取得を手書き認識制御部26に送信する。手書き認識制御部26は現在保持している手書き認識文字列/言語文字列候補を手書き入力表示制御部23に送信する。
S47:手書き入力表示制御部23は変換文字列候補取得を文字列変換制御部28に送信する。文字列変換制御部28は現在保持している変換文字列候補を手書き入力表示制御部23に送信する。
S48:手書き入力表示制御部23は予測文字列候補取得を予測変換制御部30に送信する。予測変換制御部30は現在保持している予測文字列候補を手書き入力表示制御部23に送信する。
S49:手書き入力表示制御部23は操作コマンドの候補取得を操作コマンド認識制御部32に送信する。操作コマンド認識制御部32は現在保持している操作コマンドの候補と選択オブジェクトを手書き入力表示制御部23に送信する。
S50:更に、手書き入力表示制御部23は推定書字方向取得を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト矩形領域のストローク追加時間と水平距離と垂直距離から判定して、推定書字方向を手書き入力表示制御部23に送信する。
S51:次に、手書き入力表示制御部23は、手書き入力部21から受信したペンIDを指定して、ペンID制御データ保存部36から現在のペンID制御データの角度情報を取得する。選択可能候補と操作ガイド500を回転させるためである。
S52:手書き入力表示制御部23はこれらの手書き認識文字列候補(図17では「ぎ」)、言語文字列候補(図17では表示がないが例えば「議」)、変換文字列候補(図17では「議事録」「技量試」)、予測文字列候補(図17では「技量試を決済」「議事録の送付先」)、操作コマンドの候補(図17では「議事録テンプレートを読み込む」「議事録フォルダーに保存する)、各選択確率、及び、推定書字方向から図17のような選択可能候補表示データを作成する。また、手書き入力表示制御部23はステップS51で取得した角度情報で選択可能候補表示データ(操作ガイド500)を反時計回りに回転させ、回転後の選択可能候補表示データ(操作ガイド500)を表示部22に送信することで表示させる。
S53:また、手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ(矩形枠)(図17では手書きオブジェクト矩形領域表示503)を、ステップS51で取得した角度情報で反時計回りに回転させ、表示部22に送信することで表示させる。
S54:手書き入力表示制御部23は選択可能候補表示データの表示から一定時間後に消去するため選択可能候補表示消去タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。
ステップS55〜S60は、選択可能候補消去タイマー開始中に、ユーザーが表示部22に表示された選択可能候補表示を消去したか、手書きオブジェクトの変化が発生した場合(即ち手書きオブジェクトのストロークの追加、削除、移動、変形又は分割された場合)、又は、タイムアウトまでに候補が選択されなかった場合に実行される。
更に、ステップS55、S56、S57は、候補表示が消去されるか、又は、手書きオブジェクトの変化が発生した場合に実行される。
S55:手書き入力部21は選択可能候補表示消去又は手書きオブジェクトの変化の発生を手書き入力表示制御部23に送信する。
S56:手書き入力表示制御部23は選択可能候補消去タイマー停止を送信する。候補表示タイマー制御部24はそのタイマーを停止する。一定時間内に手書きオブジェクトに対し操作があったためタイマーが不要になるからである。
S57:手書き入力表示制御部23は、ステップS19のジェスチャー手書き認識のジェスチャー判定で使用できるよう、操作ガイド500の位置情報を手書き認識制御部26に保存する。位置情報は例えば左上コーナーと右下コーナーの座標又はこれと同等の座標である。これにより、手書き認識制御部26は角度情報の入力に使用される直線が操作ガイド500内かどうかを判定できる。
S59:手書き入力表示制御部23は選択可能候補表示データ消去を表示部22に送信することで、表示を消去させる。
S60:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を表示部22に送信することで、表示を消去させる。したがって、操作コマンド候補が選択される以外の条件で、操作コマンド候補の表示を消去した場合、手書きオブジェクトはそのまま表示が維持される。
S58:一方、選択可能候補消去タイマー開始中に、選択可能候補表示消去又は手書きオブジェクトの変化が発生しなかった場合(ユーザーがペン操作をしなかった場合は)、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
選択可能候補表示消去タイマーのタイムアウトの後も同様に、手書き入力表示制御部23はステップS59とS60を実行する。一定時間の経過で選択可能候補表示データ、手書きオブジェクトと選択オブジェクトの矩形領域表示データを消去してよいためである。
選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、ステップS61〜S79が実行される。
S61:選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、手書き入力部21は文字列候補又は操作コマンドの候補選択を手書き入力表示制御部23に送信する。
S62:手書き入力表示制御部23は選択可能候補表示消去タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを停止する。
S63:次に手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S64:手書き認識制御部26は保持データクリアを文字列変換制御部28に送信する。
S65:手書き認識制御部26は保持データクリアを予測変換制御部30に送信する。
S66:手書き認識制御部26は保持データクリアを操作コマンド認識制御部32に送信する。
手書き認識制御部26、文字列変換制御部28、予測変換制御部30、及び、操作コマンド認識制御部32はこれまで保持していた文字列候補及び操作コマンドの候補に係るデータをクリアする。
S67:次に手書き入力表示制御部23は選択可能候補表示データ消去を表示部22に送信することで表示を消去させる。
S68:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を表示部22に送信することで表示を消去させる。
S69:手書き入力表示制御部23は手書きオブジェクト表示データ消去及びステップS5で送信したペン座標補完表示データ消去を表示部22に送信することで表示を消去させる。文字列候補又は操作コマンドの候補が選択されたため、手書きオブジェクト等が不要になるためである。
S70:手書き入力表示制御部23は手書きオブジェクト削除を手書き入力保存部25に送信する。
文字列候補が選択された場合、ステップS71〜S73が実行される。
S71:文字列候補が選択された場合、手書き入力表示制御部23は文字列オブジェクト追加を手書き入力保存部25に送信する。
S72:更に手書き入力表示制御部23は文字列オブジェクトフォント取得を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクトの推定文字サイズから定義済みフォントを選択して手書き入力表示制御部23に送信する。
S73:次に手書き入力表示制御部23は手書き入力保存部25から受信した定義済みフォントを使用して、手書きオブジェクトと同じ位置に表示させる文字列オブジェクト表示データを表示部22に送信させることで、表示させる。
操作コマンドの候補が選択された場合、ステップS74〜S78が実行される。更に、選択オブジェクトがある場合はステップS74〜S76が実行される。
S74:選択オブジェクトへの操作コマンドの候補が選択された場合(選択オブジェクトが存在する場合)は、手書き入力表示制御部23は選択オブジェクト表示データ消去を表示部22に送信することで表示を消去させる。いったん、元の選択オブジェクトを消去するためである。
S75:次に、手書き入力表示制御部23は選択オブジェクトへの操作コマンド実行を手書き入力保存部25に送信する。手書き入力保存部25は新しい選択オブジェクトの表示データ(編集又は修飾後の表示データ)を手書き入力表示制御部23に送信する。
S76:次に手書き入力表示制御部23は選択オブジェクト表示データを表示部22に送信することで、操作コマンド実行後の選択オブジェクトを再表示させる。
選択オブジェクトがない場合(入出力系の操作コマンドが選択された場合)はステップS77、S78が実行される。
S77:入出力系の操作コマンドが選択された場合、手書き入力表示制御部23はユーザーが選択した操作コマンドに対応する操作コマンド定義データの操作コマンド文字列(Command)を実行する。なお、ユーザー認証部34がユーザーの認証に成功した場合、手書き入力表示制御部23は認証に成功したユーザーに関する情報を操作コマンドの%〜%に設定して実行する。
S78:図25に示したように、操作ヘッダー520の回転操作ボタン511をユーザーが押下した場合、手書き入力表示制御部23は回転操作ボタン511の押下数によって、角度情報を受け付ける。手書き入力表示制御部23は受け付けた角度情報を、回転操作ボタン511の押下時にペン2500から受信したペンIDに対応付けてペンID制御データ保存部36に保存する。
S79:次の手書きオブジェクトのために手書き入力表示制御部23は手書きオブジェクト開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト領域を確保する。これ以降、ステップS2〜S79の処理が繰り返される。
<複数のテキストデータを揃えて表示する>
ユーザーが図17のような選択可能候補表示データから言語文字列候補、変換文字列候補又は、文字列/予測変換の候補を選択した場合、表示部22は選択された言語文字列候補、変換文字列候補、又は文字列/予測変換の候補をテキストデータとして表示する。
図33(a)は、6時、3時、12時、9時の位置のユーザーが手書きしたストロークデータが変換されたテキストデータの一例を示す。図33(a)では、「abc」というテキストデータが、それぞれの位置のユーザーに対し表示されている。このようなテキストデータをあるユーザーが読みたい場合、テキストデータの向きがまとめて揃えられたら読みやすい。そこで、本実施形態では操作コマンド定義部33にテキスト方向を揃えるという操作コマンド定義データ712が用意されている。この操作コマンドが実行されると、手書き入力表示制御部23は、手書き入力保存部25に保存されている文字列オブジェクトを、文字列オブジェクトと対応付けられている手書き入力保存データの角度(Angle)を用いて、各ストロークを時計回りに回転させる。
図33(b)は時計回りに回転された各テキストデータを示す。各テキストデータの角度が天地方向に対し0度になっている。したがって、Aさんは場所を移動せずにテキストデータを読むことができる。
<まとめ>
以上説明したように、本実施形態の手書き入力装置2は、各ユーザーが異なる設定で手書き入力することが可能であるため、水平に置かれた手書き入力装置2の周囲のユーザーが文字等を手書きしても正しく文字認識できる。すなわち、複数のユーザーがペン2500で同時に入力や操作をしても、それぞれ独立してペンIDの動作条件に反映されるので、他のユーザーのペン操作に影響されずに、自分のペン操作に集中できる。各ユーザーの位置(角度情報)を独立して設定できるので、それぞれのユーザーが同時に異なる角度から手書きしても、正しく手書き認識でき、操作ガイドを表示できる。また、角度情報の設定を、操作ガイド内に直線を手書きすればよいので、直感的に操作することができる。
また、本実施形態の手書き入力装置2は、操作メニューを選択してボタンのリストから操作を選択するという作業が必要なく、文字等を手書きする場合と同様に操作コマンドを入力できる。操作ガイドには操作コマンドと選択可能候補530が同時に表示されるので、ユーザーは文字等の入力と操作コマンドの選択を区別せずに手書き入力装置2を使用できる。ユーザーが手書きオブジェクトを手書きしたり確定オブジェクトを囲み線で囲んだりすることで、任意の操作コマンドの候補を表示させることができる。したがって、手書きした状態から任意の機能(編集機能、入出力機能、又はペン機能等)を呼び出すことができる。これにより、メニューボタンを押下して所望の機能を呼び出すステップバイステップの操作を不要にでき、ユーザーが手書きしている状態から任意の機能を呼び出すまでの操作手順を低減できる。
<<手書き入力装置の構成の別の例1>>
本実施形態の手書き入力装置は大型のタッチパネルを有するものとして説明されているが、手書き入力装置はタッチパネルを有するものに限られない。
図34は、手書き入力装置の他の構成例を示す図である。図34では、通常のホワイトボード413の上辺にプロジェクター411が設置されている。このプロジェクター411が手書き入力装置に相当する。通常のホワイトボード413とは、タッチパネルと一体のフラットパネルディスプレーではなく、ユーザーがマーカーで直接、手書きするホワイトボードである。なお、ホワイトボードは黒板でもよく、映像を投影するだけの広さの平面であればよい。
プロジェクター411は超短焦点の光学系を有しており、10cm程度から歪みの少ない映像をホワイトボード413に投影できる。この映像は、無線又は有線で接続されたPC400ー1から送信されてもよいし、プロジェクター411が記憶していてもよい。
ユーザーは専用の電子ペン2501を使ってホワイトボード413に手書きする。電子ペン2501は、ユーザーが手書きのためにホワイトボード413に押しつけるとスイッチがONになり発光する発光部を例えば先端部に有している。光の波長は近赤外や赤外なのでユーザーの目には見えない。プロジェクター411はカメラを有しており、発光部を撮像して画像を解析し電子ペン2501の方向を特定する。また、電子ペン2501は発光と共に音波を発信しており、プロジェクター411は音波の到達時間により距離を算出する。方向と距離により電子ペン2501の位置を特定できる。電子ペン2501の位置にはストロークが描画(投影)される。
プロジェクター411はメニュー430を投影するので、ユーザーが電子ペン2501でボタンを押下すると、プロジェクター411が電子ペン2501の位置とスイッチのON信号により押下されたボタンを特定する。例えば、保存ボタン431が押下されると、ユーザーが手書きしたストローク(座標の集合)がプロジェクター411で保存される。プロジェクター411は、予め定められたサーバー412又はUSBメモリー2600等に手書き情報を保存する。手書き情報はページごとに保存されている。画像データではなく座標のまま保存されるので、ユーザーが再編集することができる。ただし、本実施形態では操作コマンドを手書きで呼び出せるのでメニュー430は表示されなくてもよい。
<<手書き入力装置の構成の別の例2>>
図35は、手書き入力装置の他の構成例を示す図である。図35の例では、手書き入力装置として、端末装置600、画像投影装置700A、及び、ペン動作検出装置810を有する。
端末装置600は、画像投影装置700A及びペン動作検出装置810と有線で接続されている。画像投影装置700Aは、端末装置600により入力された画像データをスクリーン800に投影させる。
ペン動作検出装置810は、電子ペン820と通信を行っており、スクリーン800の近傍における電子ペン820の動作を検出する。具体的には、電子ペン820は、スクリーン800上において、電子ペン820が示している点を示す座標情報を検出し、端末装置600へ送信する。
端末装置600は、ペン動作検出装置810から受信した座標情報に基づき、電子ペン820によって入力されるストローク画像の画像データを生成する。画像投影装置700Aによってストローク画像をスクリーン800に描画させる。
また、端末装置600は、画像投影装置700Aに投影させている背景画像と、電子ペン820によって入力されたストローク画像とを合成した重畳画像を示す重畳画像データを生成する。
<<手書き入力装置の構成の別の例3>>
図36は、手書き入力装置の構成例を示す図である。図36の例では、手書き入力装置として、端末装置600とディスプレー800Aと、ペン動作検出装置810とを有する。
ペン動作検出装置810は、ディスプレー800Aの近傍に配置される。ペン動作検出装置810はディスプレー800A上に電子ペン820Aが示している点を示す座標情報を検出し、端末装置600へ送信する。なお、図36の例では、電子ペン820Aは、端末装置600によってUSBコネクタを介して充電されても良い。
端末装置600は、ペン動作検出装置810から受信した座標情報に基づき、電子ペン820Aによって入力されるストローク画像の画像データを生成する。端末装置600はストローク画像をディスプレー800Aに表示させる。
<<手書き入力装置の構成の別の例4>>
図37は、手書き入力装置の構成例を示す図である。図37の例では、手書き入力装置として、端末装置600と、画像投影装置700Aとを有する。
端末装置600は、電子ペン820Bと無線通信(Bluetooth(登録商標)等)を行って、スクリーン800上において電子ペン820Bが示す点の座標情報を受信する。そして、端末装置600は、受信した座標情報に基づき、電子ペン820Bにより入力されるストローク画像の画像データを生成する。端末装置600は画像投影装置700Aにストローク画像を投影させる。
また、端末装置600は、画像投影装置700Aに投影させている背景画像と、電子ペン820によって入力されたストローク画像とを合成した重畳画像を示す重畳画像データを生成する。
以上のように、上記した各実施形態は、様々なシステム構成において適用することができる。
本実施例では、ネットワーク上の情報処理システムが手書き認識等の処理を行って、処理の結果を手書き入力装置2に返すシステム形態の手書き入力システムについて説明する。
なお、本実施例の説明においては、実施例1で同一の符号を付した構成要素又は図の内容については同様の機能を果たすので、一度説明した構成要素の説明を省略あるいは相違点についてのみ説明する場合がある。
図38は、手書き入力システム100のシステム構成図の一例である。手書き入力システム100はネットワークNを介して通信可能な手書き入力装置2と情報処理システム10とを有している。
手書き入力装置2は社内などの施設に配置されており、施設内に敷設されたLANやWi−Fiに接続されている。情報処理システム10は例えばデータセンタ等に配置されている。手書き入力装置2はファイアウォール8を介してインターネットiと接続しており、情報処理システム10もデータセンタ内の高速なLAN等を経由してインターネットiに接続している。
手書き入力装置2は電話回線網等の無線通信を使用してインターネットiに接続してもよい。この場合、無線通信は、3G(3rd Generation)、4G(4rd Generation)、5G(5rd Generation)、LTE(Long Term Evolution)、WiMAX(Worldwide Interoperability for Microwave Access)等である。
情報処理システム10は1つ以上の情報処理装置を有しており、1つ以上の情報処理装置がサーバーとして手書き入力装置2にサービスを提供する。サーバーとは、クライアントからの要求に対して情報や処理結果を提供する機能を果たすコンピュータやソフトウェアである。情報処理システム10は後述するように手書き入力装置2からペン座標を受信して、図17に示した操作ガイド500を表示するために必要な情報を手書き入力装置2に送信する。
サーバー側のシステムをクラウドシステムという場合がある。クラウドシステムとは、クラウドコンピューティングを利用したシステムであり、クラウドコンピューティングは、特定ハードウェア資源が意識されずにネットワーク上のリソースが利用される利用形態をいう。クラウドシステムはインターネット上に配置されるとは限らない。図38では情報処理システムがインターネット上に配置されているが、ローカルネットワーク(この場合をオンプレミスという)に配置される場合がある。
更に、ある実施形態では、情報処理システム10は、サーバークラスタといった複数のコンピューティングデバイスを含む。複数のコンピューティングデバイスは、ネットワークや共有メモリなどを含む任意のタイプの通信リンクを介して互いに通信するように構成されており、本明細書に開示された処理を実施する。
手書き入力装置2の構成は実施例1と同様でよいが、本実施例ではタッチパネル、ディスプレイ、及び、通信機能を有していればよい。手書き入力装置2は、互いに通信するように構成された複数のコンピューティングデバイスを含むことができる。
本実施例ではPCやタブレットなどの一般的な情報処理装置がWebブラウザや専用のアプリケーションを実行することができる。Webブラウザや専用のアプリケーションは情報処理システム10と通信する。Webブラウザが動作する場合、ユーザーが情報処理システム10のURLを入力又は選択して、手書き入力装置を情報処理システム10に接続させる。手書き入力装置2は情報処理システム10が提供するWebアプリをWebブラウザで実行する。Webアプリとは、Webブラウザ上で動作するプログラミング言語(たとえばJavaScript(登録商標))によるプログラムとWebサーバー側のプログラムが協調することによって動作し、Webブラウザ上で実行されるソフトウェア又はその仕組みを言う。
専用のアプリケーションが動作する場合、予め登録されている情報処理システム10のURLに接続する。専用のアプリケーションはプログラムやユーザインタフェースを有しているので、プログラムが必要な情報を情報処理システム10と送受信してユーザインタフェースに表示する。
通信方法は、HTTP、HTTPs、WebSocketなど汎用の通信プロトコルでもよいし、専用の通信プロトコルで通信してもよい。
<ハードウェア構成例>
手書き入力装置2のハードウェア構成は図5と同様でよい。本実施例では情報処理システム10のハードウェア構成例を説明する。
図39は、情報処理システム10のハードウェア構成図である。図39に示されているように、情報処理システム10は、コンピュータによって構築されており、図39に示されているように、CPU601、ROM602、RAM603、HD604、HDD(Hard Disk Drive)コントローラ605、ディスプレイ606、外部機器接続I/F(Interface)608、ネットワークI/F609、バスライン610、キーボード611、ポインティングデバイス612、DVD−RW(Digital Versatile Disk Rewritable)ドライブ614、メディアI/F616を備えている。
これらのうち、CPU601は、情報処理システム10全体の動作を制御する。ROM602は、IPL等のCPU601の駆動に用いられるプログラムを記憶する。RAM603は、CPU601のワークエリアとして使用される。HD604は、プログラム等の各種データを記憶する。HDDコントローラ605は、CPU601の制御にしたがってHD604に対する各種データの読み出し又は書き込みを制御する。ディスプレイ606は、カーソル、メニュー、ウィンドウ、文字、又は画像などの各種情報を表示する。外部機器接続I/F608は、各種の外部機器を接続するためのインターフェースである。この場合の外部機器は、例えば、USB(Universal Serial Bus)メモリーやプリンター等である。ネットワークI/F609は、通信ネットワークを利用してデータ通信をするためのインターフェースである。バスライン610は、図39に示されているCPU601等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
また、キーボード611は、文字、数値、各種指示などの入力のための複数のキーを備える。ポインティングデバイス612は、各種指示の選択や実行、処理対象の選択、カーソルの移動などを行う入力手段の一種である。DVD−RWドライブ614は、着脱可能な記録媒体の一例としてのDVD−RW613に対する各種データの読み出し又は書き込みを制御する。なお、DVD−RWに限らず、DVD−R等であってもよい。メディアI/F616は、フラッシュメモリー等の記録メディア615に対するデータの読み出し又は書き込み(記憶)を制御する。
<装置の機能について>
次に、図40を用いて、手書き入力システム100が有する機能について説明する。図40は手書き入力システム100が有する機能をブロック状に示す機能ブロック図の一例である。なお、図40の説明では、主に図6との相違を説明する。なお、ペン2500の機能は実施例1と同様でよい。
本実施例では、手書き入力装置2は表示部22、表示制御部44、手書き入力部21、及び、通信部42を有している。手書き入力装置2が有する各機能は、図39に示されている各構成要素のいずれかがSSD204からRAM203上に展開されたプログラムに従ったCPU201からの命令によって動作することで実現される機能又は手段である。
本実施例の手書き入力部21の機能は実施例1と同様でよい。手書き入力部21はユーザーのペン入力d1をペン操作データda(ペンアップ、ペンダウン、又はペン座標データ)に変換し、表示制御部44に送信する。
表示制御部44は、手書き入力装置2の表示に関する制御を行う。まず、表示制御部44は、離散値であるペン座標データの離散値間の座標を補完計算してペンダウンからペンアップまでのペン座標データを1本のストロークdbにして表示部22に送信する。
また、表示制御部44はペン操作データdcを通信部42に送信し、通信部42から各種の表示データddを取得する。表示データは、図17の操作ガイド500を表示するための情報を含んでいる。表示制御部44は表示データdeを表示部22に送信する。
通信部42は、ペン操作データdcを情報処理システム10に送信し、情報処理システム10から各種の表示データddを受信して表示制御部44に送信する(第一の通信部の一例)。通信部42は例えばJSON形式やXML形式などでデータを送受信する。
表示部22の機能は実施例1と同様でよい。表示部22はストロークdbや表示データdeを表示する。表示部22は表示制御部44がビデオメモリーに書き込んだストロークdbや表示データdeをディスプレー220の特性に応じたデータに変換し、ディスプレー220に送信する。
<<情報処理システムの機能>>
情報処理システム10は、通信部43、手書き入力表示制御部23、候補表示タイマー制御部24、手書き入力保存部25、手書き認識制御部26、手書き認識辞書部27、文字列変換制御部28、文字列変換辞書部29、予測変換制御部30、予測変換辞書部31、操作コマンド認識制御部32、操作コマンド定義部33、及び、ペンID制御データ保存部36、を備えている。情報処理システム10が有する各機能は、図39に示されている各構成要素のいずれかが、HD604からRAM603上に展開されたプログラムに従ったCPU601からの命令によって動作することで実現される機能又は手段である。
通信部43は、ペン操作データdcを手書き入力装置2から受信し、手書き入力表示制御部23にペン操作データdfを送信する。通信部43は手書き入力表示制御部23から表示データddを受信して、手書き入力装置2に送信する(第二の通信部の一例)。通信部43は例えばJSON形式やXML形式などでデータを送受信する。
その他の機能については実施例1と同様か、異なるとしても本実施形態の説明の上では支障がないものとする。
<動作手順>
以上の構成と図41〜図48を用いて、手書き入力システム100の動作について説明する。図41〜図48は手書き入力装置2が文字列候補と操作コマンドの候補を表示する処理を説明する一例のシーケンス図である。図41の処理は、手書き入力装置2が起動して(Webブラウザ又は専用のアプリケーションが起動して)、情報処理システム10との通信が確立するとスタートする。なお、図41〜図48の全体的な流れは図30〜図36と同様でよい。
S1:通信が確立すると手書き入力装置2のメモリー領域を確保するため、手書き入力表示制御部23が手書きオブジェクト開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト領域(手書きオブジェクトを保存するメモリー領域)を確保する。ユーザーがペンを手書き入力部21に接触させてから手書きオブジェクト領域を確保してもよい。
S2a:次にユーザーが手書き入力部21にペンを接触させる。手書き入力部21はペンダウンを検出して表示制御部44に送信する。
S2b:表示制御部44はペンダウンを情報処理システム10に通知するため、ペンダウンを通信部42に送信する。
S2c:通信部42はペンダウンを情報処理システム10に送信する。
S2d:情報処理システム10の通信部43はペンダウンを受信して、手書き入力表示制御部23に送信する。
S3:手書き入力表示制御部23は手書き入力保存部25にストローク開始を送信し、手書き入力保存部25はストローク領域を確保する。
S4a:ユーザーがペンを手書き入力部21に接触させたまま移動させると、手書き入力部21はペン座標を表示制御部44に送信する。
S4b:表示制御部44はペン座標を情報処理システム10に通知するため、ペン座標を通信部42に送信する。
S4c:通信部42はペン座標を情報処理システム10に送信する。
S4d:情報処理システム10の通信部43はペン座標を受信して、手書き入力表示制御部23に送信する。
S5:表示制御部44はペン座標補完表示データ(離散的なペン座標を補間するデータ)を表示部22に送信する。表示部22はペン座標補完表示データを用いてペン座標を補間して線を表示する。ステップS6の処理は実施例1と同様になる。
S8a:ユーザーが手書き入力部21からペンを離すと、手書き入力部21はペンアップを表示制御部44に送信する。
S8b:表示制御部44はペンアップを情報処理システム10に通知するため、ペンアップを通信部42に送信する。
S8c:通信部42はペンアップを情報処理システム10に送信する。
S8d:情報処理システム10の通信部43はペンアップを受信して、手書き入力表示制御部23に送信する。
以降のステップS9〜S17、及び、ステップS18〜S41については実施例1と同様になる。
S42a:タイマーがタイムアウトする前に、ユーザーが手書き入力部21にペンを接触させた場合、手書き入力部21はペンダウン(ステップS2と同じイベント)を表示制御部44に送信する。ステップS42b〜S42dの処理はステップS2b〜S2dと同様でよい。また、ステップS43〜S51の処理は実施例1と同様になる。
S52a:手書き入力表示制御部23は図17に示した各文字列候補、操作コマンドの候補、各選択確率、及び、推定書字方向を含む選択可能候補表示データを作成し、文字列候補と操作コマンドの候補からなる選択可能候補表示データを通信部43に送信する。
S52b:通信部43は手書き入力装置2に選択可能候補表示データを送信する。
S52c:手書き入力装置2の通信部42は選択可能候補表示データを受信し、表示制御部44に送信する。
S52d:表示制御部44は選択可能候補表示データを受信したので、表示部22に送信することで表示させる。
S53a:また、手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ(矩形枠)(図17では手書きオブジェクト矩形領域表示503)を通信部43に送信する。
S53b:通信部43は手書き入力装置2に矩形領域表示データを送信する。
S53c:手書き入力装置2の通信部42は矩形領域表示データを受信し、表示制御部44に送信する。
S53d:表示制御部44は矩形領域表示データを受信したので、表示部22に送信することで表示させる。ステップS54の処理は実施例1と同様になる。
S55a:ユーザーが選択可能候補を消去したり、手書きオブジェクトに追加で手書きしたりすると、手書き入力部21は選択可能候補表示消去又は手書きオブジェクトの変化の発生を表示制御部44に送信する。
S55b:表示制御部44は選択可能候補表示消去又は手書きオブジェクトの変化の発生を情報処理システム10に通知するため、通信部42に送信する。
S55c:通信部42は選択可能候補表示消去又は手書きオブジェクトの変化の発生を情報処理システム10に送信する。
S55d:情報処理システム10の通信部43は選択可能候補表示消去又は手書きオブジェクトの変化の発生を受信して、手書き入力表示制御部23に送信する。ステップS56、S57、S58の処理は実施例1と同様になる。
S59a:手書き入力表示制御部23は選択可能候補表示データ消去を通信部43に送信する。
S59b:通信部43は手書き入力装置2に選択可能候補表示データ消去を送信する。
S59c:手書き入力装置2の通信部42は選択可能候補表示データ消去を受信し、表示制御部44に送信する。
S59d:表示制御部44は選択可能候補表示データ消去を受信したので、表示部22に送信することで選択可能候補を消去させる。
S60a:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を通信部43に送信する。
S60b:通信部43は手書き入力装置2に手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を送信する。
S60c:手書き入力装置2の通信部42は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を受信し、表示制御部44に送信する。
S60d:表示制御部44は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を受信したので、表示部22に送信することで手書きオブジェクトと選択オブジェクトの矩形領域を消去させる。したがって、操作コマンド候補が選択される以外の条件で、操作コマンド候補の表示を消去した場合、手書きオブジェクトはそのまま表示が維持される。
選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、ステップS61〜S79が実行される。
S61a:選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、手書き入力部21は文字列候補又は操作コマンドの候補選択を表示制御部44に送信する。
S61b:表示制御部44は文字列候補又は操作コマンドの候補選択を情報処理システム10に通知するため、通信部42に送信する。
S61c:通信部42は文字列候補又は操作コマンドの候補選択を情報処理システム10に送信する。
S61d:情報処理システム10の通信部43は文字列候補又は操作コマンドの候補選択を受信して、手書き入力表示制御部23に送信する。ステップS62〜S66の処理は実施例1と同様になる。
S67a: 次に手書き入力表示制御部23は選択可能候補表示データ消去を通信部43に送信する。
S67b:通信部43は選択可能候補表示データ消去を手書き入力装置2に送信する。
S67c:手書き入力装置2の通信部42は選択可能候補表示データ消去を受信し、表示制御部44に送信する。
S67d:表示制御部44は選択可能候補表示データ消去を受信したので、表示部22に選択可能候補を消去させる。
S68a:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を通信部43に送信する。
S68b:通信部43は矩形領域表示データ消去を手書き入力装置2に送信する。
S68c:手書き入力装置2の通信部42は矩形領域表示データ消去を受信し、表示制御部44に送信する。
S68d:表示制御部44は矩形領域表示データ消去を受信したので、表示部22に矩形領域を消去させる。
S69a:手書き入力表示制御部23は手書きオブジェクト表示データ消去を通信部43に送信する。
S69b:通信部43は手書きオブジェクト表示データ消去を手書き入力装置2に送信する。
S69c:手書き入力装置2の通信部42は手書きオブジェクト表示データ消去を受信し、表示制御部44に送信する。
S69d:表示制御部44は手書きオブジェクト表示データ消去を受信したので、表示部22に手書きオブジェクトとペン座標補完表示データを消去させる。ステップS70の処理は実施例1と同様でよい。
文字列候補が選択された場合、ステップS71〜S73が実行される。ステップS71、S72の処理は実施例1と同様でよい。
S73a: 次に手書き入力表示制御部23は手書き入力保存部25から受信した定義済みフォントを使用して、手書きオブジェクトと同じ位置に表示させる文字列オブジェクト表示データを通信部43に送信する。
S73b:通信部43は文字列オブジェクト表示データを手書き入力装置2に送信する。
S73c:手書き入力装置2の通信部42は文字列オブジェクト表示データを受信し、表示制御部44に送信する。
S73d:表示制御部44は文字列オブジェクト表示データを受信したので、表示部22に文字列オブジェクトを表示させる。
操作コマンドの候補が選択された場合、ステップS74〜S78が実行される。更に、選択オブジェクトがある場合はステップS74〜S76が実行される。
S74a:選択オブジェクトへの操作コマンドの候補が選択された場合(選択オブジェクトが存在する場合)は、手書き入力表示制御部23は選択オブジェクト表示データ消去を通信部43に送信する。いったん、元の選択オブジェクトを消去するためである。
S74b:通信部43は選択オブジェクト表示データ消去を手書き入力装置2に送信する。
S74c:手書き入力装置2の通信部42は選択オブジェクト表示データ消去を受信し、表示制御部44に送信する。
S74d:表示制御部44は選択オブジェクト表示データ消去を受信したので、表示部22に選択オブジェクトを消去させる。
S75:次に、手書き入力表示制御部23は選択オブジェクトへの操作コマンド実行を手書き入力保存部25に送信する。手書き入力保存部25は新しい選択オブジェクトの表示データ(編集又は修飾後の表示データ)を手書き入力表示制御部23に送信する。
S76a: 次に手書き入力表示制御部23は選択オブジェクト表示データを通信部43に送信する。
S76b:通信部43は選択オブジェクト表示データを手書き入力装置2に送信する。
S76c:手書き入力装置2の通信部42は選択オブジェクト表示データを受信し、表示制御部44に送信する。
S76d:表示制御部44は選択オブジェクト表示データを受信したので、表示部22に操作コマンド実行後の選択オブジェクトを再表示させる。ステップS77〜S79の処理は実施例1と同様でよい。
このように、手書き入力装置2と情報処理システム10とが通信するシステム形態でも、実施例1と同様の効果を奏することができる。なお、図41〜図48の処理の流れは一例であって、手書き入力装置2と情報処理システム10とが通信することにより生じる処理が含まれていたり、又は、処理が省略されたりしてもよい。また、情報処理システム10が行う処理の一部を手書き入力装置2が行ってもよい。例えば、削除に関する処理を手書き入力装置2が行ってもよい。
<その他の適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、本実施形態では電子黒板を一例として説明したが、タッチパネルを有する情報処理装置であれば好適に適用できる。タッチパネルを搭載した情報処理装置としては、例えば、PJ(Projector:プロジェクター)、デジタルサイネージ等の出力装置、HUD(Head Up Display)装置、産業機械、撮像装置、集音装置、医療機器、ネットワーク家電、ノートPC(Personal Computer)、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブルPC又はデスクトップPC等であってもよい。
また、本実施形態ではペン先の座標をタッチパネルで検知する方法でペンの座標を検出したが、ペン先の座標を超音波により検出してもよい。また、ペンは発光と共に超音波を発信しており、手書き入力装置2は超音波の到達時間により距離を算出する。方向と距離によりペンの位置を特定できる。ペンの軌跡をストロークとしてプロジェクターが描画(投影)する。
また、本実施形態では、選択オブジェクトがある場合に編集系及び修飾系の操作コマンドの候補を表示し、選択オブジェクトがない場合に入出力系の操作コマンドの候補を表示した。しかし、編集系及び修飾系の操作コマンドの候補と入出力系の操作コマンドの候補を同時に表示してもよい。
また、図7などの構成例は、手書き入力装置2による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。手書き入力装置2の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、1つの処理単位が更に多くの処理を含むように分割することもできる。
また、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスを含むものとする。
ペンID制御データ保存部36は制御データ保存手段の一例である。手書き入力表示制御部23は表示制御手段の一例である。手書き認識制御部26は手書き認識制御手段の一例である。通信部42は第一の通信手段の一例である。通信部43は第二の通信手段の一例である。