<表示装置の比較例について>
本実施形態の表示装置の説明の便宜上、まず、本実施形態の表示装置との比較例について説明する。
図1は、液晶保護プライバシーフィルター102又は匿名データベースについて説明する図である。図1(a)は、PC(Personal Computer)101とPC101に取り付けられる液晶保護プライバシーフィルター102を示す。図1(b)は液晶保護プライバシーフィルター102の視野角を示す。プライバシーフィルターとはディスプレーに垂直な方向の光は通しやすいが、それ以外の方向は通しにくく暗く見えるフィルターのことである。図1(b)に示すように、液晶保護プライバシーフィルター102の視野角は約60度である。
個人用のPC101の場合、ユーザーの目は垂直方向にあるため、ユーザー以外の目からは画面が暗くなり見えにくくなるため、覗き見を防止できる。しかし、複数ユーザーが同時に使用するグループ用途の機器では視野角を広くする必要があり、液晶保護プライバシーフィルター102は使えない。
図1(c)は匿名データベースの1レコードを示す。個人情報(以下、機密情報という)であるメールアドレス103、氏名104、及び、氏名かな105、が匿名化されて表示されており、管理者権限があれば匿名化される前の情報を表示させることができる。匿名データベースであれば、液晶保護プライバシーフィルター102がなくても機密情報は保護されるが、管理者権限をもつユーザーしか機密情報を見ることができないため、やはりグループ用途では使えない。
図1(d)は、ユーザーが表示装置2を平置きして使用する使用例である。この表示装置2は大画面であるため、複数ユーザーが同時に使用することが可能である。壁で仕切られた会議室ではなく、仕切りのないオープンスペース等に表示装置が設置されている場合、表示装置が画面に機密情報を表示すると、第三者から覗き見されるおそれがある。この場合もグループ用途なので、液晶保護プライバシーフィルター102や匿名化したデータベースでは対応できない。
また、ユーザー名とパスワードが表示される一般的なログイン画面等では、ユーザーがキーボードから入力した一文字単位で、マスク表示されてしまうため、ユーザーがパスワードの全体を確認できなかった。また、ユーザーが手書きでパスワードを入力しようとしても、手書き文字はどこまでで1文字か表示装置が変換しないと推測できないので、1文字ずつマスクすることは困難であった。
このように、比較例では、グループ用途で機密情報を表示装置が表示した場合、保護と利用しやすさを両立することが難しかった。
<本実施形態の表示装置における機密情報の入力方法>
そこで、本実施形態の表示装置は、図2に示すように、機密情報の保護と利用しやすさの両立を可能にする。図2は、機密情報の表示例を説明する図である。表示装置2は予め領域に区分されており、領域ごとに手書きで入力された情報の表示態様を制御できる。
図2(a)では名前と性別を入力する領域が用意されている。名前は機密性が高いが、性別はそれほど高くない。ユーザーは領域109に名前を、領域111に性別を手書きする。図2(b)は名前と性別が手書きされた状態を示す。それぞれ後述する文字列候補が表示され、ユーザーがその中から領域109、111に表示する文字列候補を選択できる。図2(c)では、名前が「山田」、性別が「男」と表示されている。
表示装置2は、予め定められた名前の領域109について「山田」を表示後、一定時間が経過すると、文字列をマスク表示に切り替える。従って、一定時間が経過するまでは、図2(d)に示すように、ユーザーは入力した名前を確認できる。しかし、一定時間が経過すると、図2(e)に示すように、名前の領域109はマスク表示に切り替わる。従って、表示装置2は機密情報を第三者の目に触れにくくすることができる。
また、一定時間が経過しても、性別の領域111の文字列はマスク表示されない。これにより、ユーザーはいつでも性別を確認できる。
このように、本実施形態の表示装置2は、機密情報の表示直後、機密情報の全体を短時間だけ表示するので、業務に活用できるようになる。また、機密情報は一定時間の経過後、マスク表示されるので、第三者に対し秘匿できる。
<用語について>
入力手段とはタッチパネルに座標を指定して手書きが可能な手段であればよい。例えば、ペン、人の指や手、棒状部材などがある。ユーザーがディスプレーに入力手段を押しつけてから連続的に移動させた後、ディスプレーから離すという一連の操作をストロークという。ストロークデータとは、入力手段により入力される座標の軌跡に基づいてディスプレーに表示される情報である。ストロークデータは適宜、補間されてよい。ストロークにより手書きされたデータはストロークデータという。手書きデータは1つ以上のストロークデータを有するストロークデータに基づいてディスプレーに表示される表示物をオブジェクトという。
文字列は、手書きデータから変換された1つ以上の文字コードである。文字には、数字、アルファベット、及び、記号等が含まれる。
機密情報は、不特定の者に知られては困る情報である。秘匿情報、個人情報、秘密情報等と呼ばれる場合がある。機密情報は予め定められた領域に入力される。ただし、ユーザーが入力する情報はどのようなものでもよく、機密情報には限られない。本実施形態では所定の領域に入力された情報が機密情報である。
秘匿とは、秘密にして隠しておくことをいう。ユーザーが肉眼で判読困難な状態であればよい。情報の内容の特定が困難であれば少なくとも一部を秘匿してよい。本実施形態ではマスク表示という用語で説明される。マスク表示とは情報を覆うことをいい、例えば少なくとも一部を「●」「*」などの記号で置き換えることである。非表示(スペース)にしてもよい。
白黒対応装置…白若しくは黒、又は、グレースケールしか出力できない装置である。例えば、電子ペーパー、モノクロプリンタなどがある。カラーに対応していない装置とも言える。
カラー対応装置…白黒だけでなくカラーを出力できる装置である。液晶や有機ELディスプレーを有する装置、カラープリンタなどがある。カラー対応機器は白黒対応機器でもある。
白黒強調対応装置…白若しくは黒、又は、グレースケールしか出力できない装置であるが、手書き由来のデータに関して手書きデータに対応付けられている色情報に基づいて、白黒強調表示を行う装置である。本実施形態の表示装置が挙げられる。なお、表示装置は手書き入力が可能であり、入力装置又は手書き入力装置と呼ばれる場合もある。
手書き由来のデータとは、タッチパネルに手書きされたことで入力されたデータをいう。入力後に手書きのままか、テキストデータに変換されたかは問わない。また、外部機器から取得されたデータも手書き由来であることは失われない。手書き由来のデータは文字認識して変換されたテキストデータの他、「済」「秘」などの決まった文字やマークとして表示されるスタンプ、円や星などの図形、直線等、ユーザーの操作に基づいて変換されたデータも含まれてよい。
手書き由来のデータでないデータはタッチパネルに手書きされたことで入力されたデータ以外のデータをいい、例えば、画像(イメージ)データ、白黒強調対応装置でない装置で入力された手書きデータ又はテキストデータをいう。
<ペンの外観の一例>
図3は、ペン2500の斜視図の一例を示す。図3は多機能なペン2500の一例を示す。電源を内蔵して表示装置2に命令を送信できるペン2500をアクティブペンという(電源を内蔵しないペンをパッシブペンという)。図3のペン2500は、物理的なスイッチがペン先に一つ、ペン尻に一つ、ペン側面に二つあり、ペン先が筆記用、ペン尻が消去用、ペン側面はユーザー機能割り当て用である。本実施形態では、更に、不揮発性のメモリーを有しており、他のペンと重複しないペンIDを記憶している。
なお、スイッチ付きのペンであれば、ユーザーの表示装置2の操作手順を減らすことも可能である。スイッチ付きのペンとは主にアクティブペンを言うが、電磁誘導方式では電源を内蔵しないパッシブペンでもLC回路だけで電力を発生できるため、アクティブペンだけでなく電磁誘導方式のパッシブペンを含む。電磁誘導方式以外の光学方式、赤外線方式、及び、静電容量方式のスイッチのあるペンはアクティブペンである。
なお、ペン2500のハードウェア構成は、通信機能とマイコンを備えた一般的な制御方式と同様であるとする。ペン2500は、電磁誘導方式、アクティブ静電結合方式などがある。また、筆圧検知、傾き検知、ホバー機能(ペンが触れる前にカーソルを表示)、などの機能を有していてよい。
<装置の全体構成>
図4を用いて、本実施形態に係る表示装置2の全体構成を説明する。図4は、表示装置2の全体構成図を示した図である。図4(a)では、表示装置2の一例として、壁につり下げられた横長の電子黒板として使用される表示装置2を示している。
図4(a)に示されているように、表示装置2の上部には表示装置の一例としてのディスプレー220が設置されている。ユーザーUは、ペン2500を用いて、ディスプレー220に文字等を手書きする(入力、描画ともいう)することができる。
図4(b)は壁につり下げられた縦長の電子黒板として使用される表示装置2を示している。
図4(c)は机230に平置きされた表示装置2を示す。表示装置2は厚みが1cm程度なので、一般の机に平置きしても机の高さを調整する必要がない。また、容易に移動できる。
なお、チルトセンサーによりどの置き方で使用されているかは自動的に検出される。
<装置のハードウェア構成>
続いて、図5を用いて、表示装置2のハードウェア構成を説明する。表示装置2は図示するように情報処理装置又はコンピュータの構成を有している。図5は、表示装置2のハードウェア構成図の一例である。図5に示されているように、表示装置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は、OSや表示装置2用のプログラム等の各種データを記憶する。なお、このプログラムは汎用的なOS(Windows(登録商標)、Mac OS(登録商標)、Android(登録商標)、iOS(登録商標)等)を搭載した情報処理装置で動作するアプリケーションプログラムでもよい。すなわち、表示装置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が図4(a)、図4(b)又は、図4(c)のいずれかの設置状態で使用されているかを検出するために使用され、設置状態に応じて文字等の太さを自動で変更することができる。
シリアルインターフェース218はUSBやLANインターフェースなどの外部との通信インターフェースである。外部からの情報の入力などに使用される。スピーカー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は、図5に示されているCPU201等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
なお、タッチセンサー216は、光学式に限らず、静電容量の変化を検知することにより接触位置を特定する静電容量方式のタッチパネル、対向する2つの抵抗膜の電圧変化によって接触位置を特定する抵抗膜方式のタッチパネル、又は、接触物体が表示部に接触することによって生じる電磁誘導を検知して接触位置を特定する電磁誘導方式のタッチパネルなどの種々の検出手段を用いてもよい。タッチセンサー216は、ペン先のタッチの有無を検知するのに電子ペンが必要ない方式であってよい。この場合はタッチ操作をするのに指先やペン型の棒を使用できる。なお、ペン2500は、細長いペン型である必要はない。
<装置の機能について>
次に、図6を用いて、表示装置2とペン2500が有する機能について説明する。図6(a)は表示装置2が有する機能をブロック状に示す機能ブロック図の一例である。表示装置2は、手書き入力部21、表示部22、手書き入力表示制御部23、候補表示タイマー制御部24、手書き入力保存部25、手書き認識制御部26、手書き認識辞書部27、文字列変換制御部28、文字列変換辞書部29、予測変換制御部30、予測変換辞書部31、操作コマンド認識制御部32、操作コマンド定義部33、ペンID制御データ保存部36、ファイル送受信制御部37、手書きサイン認証制御部38、手書きサインデータ保存部39、及び、マスク表示タイマー制御部40を備えている。表示装置2が有する各機能は、図5に示されている各構成要素のいずれかが、SSD204からRAM203上に展開されたプログラムに従ったCPU201からの命令によって動作することで実現される機能又は手段である。
手書き入力部21はタッチセンサー216等により実現されており、ユーザーによる手書き入力を受け付け、ペン2500からペンIDを受信する。手書き入力部21はユーザーのペン入力d1をペンID付きのペン操作データd2(ペンアップ、ペンダウン、又はペン座標データ)に変換し、手書き入力表示制御部23に送信する。ペン座標データは離散値として定期的に送信され、離散値間の座標は補完計算される。
表示部22はディスプレー220等により実現され、手書きされたオブジェクトや操作メニュー等を表示する。表示部22は手書き入力表示制御部23がビデオメモリーに書き込んだ描画データd3をディスプレー220の特性に応じたデータに変換し、ディスプレー220に送信する。
手書き入力表示制御部23は手書き入力と表示に関する全体的な制御を行う。手書き入力表示制御部23は手書き入力部21からのペン操作データd2を処理し、表示部22に送信することで表示させる。ペン操作データd2の処理及びストロークの表示の詳細は後述の図45~図53にて説明する。手書き入力表示制御部23は後述する操作ボタン定義データを保持しており、手書き入力部21からのペン操作データd2に基づいて操作された操作メニュー(ボタン)を検出して、操作メニューに応じた制御を行う。
候補表示タイマー制御部24は、選択可能候補の表示制御タイマーである。タイマーを開始又は停止して選択可能候補の表示を開始するタイミングと表示を消去するタイミングを生成する。選択可能候補とは、後述する操作ガイド(図28参照)に選択可能に表示される手書き認識文字列/言語文字列候補、変換文字列候補、文字列/予測変換の候補、及び、操作コマンドの候補、である。候補表示タイマー制御部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は、ペン操作データが指定している確定オブジェクトを選択オブジェクト(位置情報を含む)として保持しておく。操作コマンド認識制御部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に送信する。手書き認識制御部26はペンID制御データ保存部36にペンIDに対応付けて角度情報d43を保存する。また、手書き入力表示制御部23が角度情報を設定する操作コマンドを実行後に、手書き入力表示制御部23はペンID制御データd42をペンID制御データ保存部36に送信する。手書き入力表示制御部23は操作コマンドの実行結果(ユーザーが設定した角度情報)をペンIDに対応付けて保存する。以降、そのペンIDのストロークは設定した角度情報で回転してから手書き認識が実行される。
また、手書き認識制御部26はペンID制御データの角度情報で時計回りに回転させたストロークデータd49を手書きサイン認証制御部38に送信する。これにより、ユーザーの操作位置(表示装置2に対しどの方向から手書きするか)に関わりなく手書きサインの認証が可能になる。
手書きサインデータ保存部39は、手書きサインデータを保持する。手書きサインデータ保存部39は、手書きサインデータ取得要求d45を手書きサイン認証制御部38から受信した場合、手書きサインデータd46を手書きサイン認証制御部38に送信する。手書きサインデータのフォーマットは手書きサイン認証制御部38の手書きサイン認証のアルゴリズムに依存するものとする。手書きサインデータ保存部39のデータについては図15にて説明する。
手書きサイン認証制御部38は手書き認識制御部26から時計回りに回転したストロークデータd49を受信すると、手書きサインデータ保存部39に手書きサインデータ取得要求d45を送信する。手書きサインデータ保存部39は手書きサインデータd46を手書きサイン認証制御部38に送信する。
手書きサイン認証制御部38は手書きサインデータに基づいてユーザーの認証を行う。手書きサインデータに基づくユーザーの認証には様々なアルゴリズムが考案されているが、本実施形態では実用に支障がない認識率で認識できる技術を使用するものとする。手書きサイン認証制御部38は、例えば、手書きサインデータを構成する座標、筆圧、及び、ストロークを書く時間などを要素とする特徴ベクトルを生成する。手書きサイン認証制御部38は、要素に適宜重み付けをして、登録済みの手書きサインデータの特徴ベクトルとサインイン時にユーザーが手書きしたユーザー名等の特徴ベクトルを比較する。一致度が閾値以上の場合、認証成功と判定し、閾値未満の場合、認証失敗と判定する。
手書きサイン認証制御部38はストロークデータd49と手書きサインデータd46の比較結果である手書きサインの認証結果を保持しておき、別途、手書き入力表示制御部23から取得要求d48を受信した場合、保持している手書きサインの認証結果d47を手書き入力表示制御部23に送信する。手書きサインの認証結果は、ストロークデータd49と手書きサインデータd46が一致したと見なせるか否か、及び、一致したと見せる場合は、一致した手書きサインデータd46に対応付けられている後述するSignatureIdを有する。
手書き認識制御部26の手書き認識結果が手書きサイン登録の実行を指示する操作コマンドに適合する場合、手書き認識制御部26は手書き入力保存部25から手書きサイン登録フォーム(後述するように、手書きサインデータが入力される枠)に入力されたデータd52を取得する。手書き認識制御部26は、データd52のうち手書きサインデータd50を手書きサイン認証制御部38に送信する。手書きサイン認証制御部38は受信した手書きサインデータd50を手書きサインデータ保存部39に送信して登録する。
手書き認識制御部26の手書き認識結果が手書きサインの取消指示又は登録の実行の場合、手書き認識制御部26は手書き入力保存部25に手書きサイン登録フォームの削除要求d51を送信して、手書き入力保存部25から手書きサイン登録フォームを削除する。
手書き認識制御部26の手書き認識結果がユーザー定義データ変更の実行指示の場合、手書き認識制御部26は手書き入力保存部25からユーザー定義データ変更フォームに入力されたデータd53を取得し、データd53のうち変更値d54を操作コマンド定義部33に送信し、ユーザー定義データを変更する。ユーザー定義データについては図14にて説明する。
手書き認識制御部26の手書き認識結果がユーザー定義データ変更フォームの取消指示又は登録の実行の場合、手書き認識制御部26は手書き入力保存部25にユーザー定義データ変更フォームの削除要求d55を送信する。手書き認識制御部26は手書き入力保存部25からユーザー定義データ変更フォームを削除する。
ファイル送受信制御部37は、手書き由来のデータ又は手書き由来のデータでないデータの記憶媒体へのファイルの保存及び取得、外部機器との通信(印刷要求、表示要求など)等を行う。ファイル送受信制御部37は手書き入力表示制御部23からファイルの送受信の実行要求d64を受け取る。ファイルの保存又は印刷時、手書き入力表示制御部23はファイル送信要求をファイル送受信制御部37に送信し、ファイル送受信制御部37は手書き入力保存データd61の取得要求を手書き入力保存部25に送信する。
・手書き由来のデータでないデータの場合、手書き入力保存部25は該データが保持する色情報のまま送信する。
・手書き由来のデータの場合、手書き入力保存部25は送信先がカラー対応装置(例えばカラープリンタ)の場合はカラーに変換した手書き入力保存データd62をファイル送受信制御部37に送信する。
・手書き由来のデータの場合、手書き入力保存部25は送信先が白黒対応装置(例えばモノクロプリンタ)の場合は白黒に変換した手書き入力保存データd62をファイル送受信制御部37に送信する。白黒対応装置がグレースケールへの変換が可能な場合もあるので、カラーに変換してから送信してもよい。
・送信先が白黒強調対応装置の場合は後述する手書き入力保存データをファイル送受信制御部37に送信する。
・また、手書き入力保存部25が、手書き由来のデータをファイルに保存する場合は、手書き入力保存データd62をファイル形式に従ってカラーに変換すると共に、手書き入力保存データをファイルのメタデータとして添付する。手書き由来のデータでないデータをファイルに保存する場合は、手書き入力保存データd62をファイル形式に従ってカラーに変換する。
カラー対応装置か白黒対応装置かは、例えば、ネットワーク機器が保持するMIB(Management Information Base)に保存されており、ファイル送受信制御部37はMIBを取得することで判定できる。同様に、MIBが公開する機種名などから白黒強調対応装置かどうかも判定できる。
ファイルの読み込み時は、手書き入力表示制御部23はファイル一覧取得要求d65をファイル送受信制御部37に送信し、ファイル送受信制御部37は外部機器にファイル一覧取得要求を送信する。ファイル送受信制御部37は、ファイル一覧d63を取得し手書き入力表示制御部23に送信する。手書き入力表示制御部23はファイル一覧を表示部22に表示して、手書き入力部21は選択ファイルの表示位置を手書き入力表示制御部23に送信する。手書き入力表示制御部23はファイル受信要求d66をファイル送受信制御部37に送信する。ファイル送受信制御部37は外部機器からファイルを取得して、このファイルd67を手書き入力保存部25に送信する。手書き入力保存部25はファイルのメタデータを解析して、手書き由来のデータであるかどうかを判定し、手書き由来のデータであれば手書き入力保存データ(後述する白黒強調/カラー変換可能データ)を取り出す。手書き由来のデータを白黒強調表示に変換し、手書き由来のデータでなければ変換せずに手書き入力表示制御部23に送信する(グレースケール化で表示される)。手書き入力表示制御部23は手書きオブジェクトの表示データを表示部22に送信する。
マスク表示タイマー制御部40は、マスク表示領域の定義データ(図7参照)に基づいてマスク表示領域のマスク表示タイマーを制御する。マスク表示タイマーは分割されたマスク表示領域ごとに管理されている。以下、一つのマスク表示領域の動作を一例として説明する。手書き入力表示制御部23は手書き認識した文字列オブジェクト表示データを表示部22に送信すると、図7の定義データで定義されているマスク表示タイマー(1)をマスク表示タイマー制御部40に送信する(d71)。マスク表示タイマー制御部40はマスク表示タイマーを開始する。手書き入力部21がマスク表示領域のペンダウンを検出すると、マスク表示タイマー制御部40はマスク表示タイマーを再開する。これによってマスク表示領域への入力中はマスク表示タイマーが延長される。マスク表示タイマーがタイムアウトすると、マスク表示タイマー制御部40はタイムアウトを手書き入力表示制御部23に送信する(d72)。手書き入力表示制御部23は文字列オブジェクト消去と文字列オブジェクトのマスク表示データを表示部22に送信する。表示部22は文字列オブジェクトをマスク表示に切り替える(機密情報にマスクをかけて非表示にする)。また、マスク表示中に手書き入力部21がマスク表示領域へのペンイベントを検出すると、手書き入力表示制御部23はジェスチャー認識要求(タップ、ダブルタップなど)を手書き認識制御部26に送信する。手書き認識制御部26はジェスチャー認識結果を手書き入力表示制御部23に送信する。手書き入力表示制御部23は、手書き認識制御部26から受信したジェスチャーがマスク表示解除ジェスチャーだった場合には、文字列オブジェクトのマスク表示データ消去と文字列オブジェクト表示データを表示部22に送信する。表示部22は文字列オブジェクトを表示し(機密情報を表示し)、図7の定義データで定義されているマスク表示タイマー(2)をマスク表示タイマー制御部40に送信する。マスク表示タイマー制御部40はマスク表示タイマーを開始する。
なお、このジェスチャーはユーザーが機密情報を再表示する入力を行ったかどうかを判断する手書きデータである。後述する表示装置2が直線から角度情報を認識するジェスチャーとは判断内容が異なっている。
図6(b)は、ペン2500の機能をブロック状に示す機能ブロック図である。ペン2500はペンイベント送信部41を有している。ペンイベント送信部41はペンアップ、ペンダウン、ペン座標のイベントデータにペンIDをつけて表示装置2に送信する。
<定義済み制御データについて>
次に、図7を用いて、表示装置2が各種の処理に使用する定義済み制御データについて説明する。図7は定義済み制御データの一例を示す。図7の例では制御項目ごとに制御データを示す。
選択可能候補表示タイマー401は、選択可能候補を表示するまでの時間を定義する。手書き中に選択可能候補を表示しないためである。図7では、ペンアップからTimerValue=500〔ms〕以内にペンダウンが発生しなければ選択可能候補が表示されることを意味している。選択可能候補表示タイマー401は候補表示タイマー制御部24が保持している。選択可能候補表示タイマー401は、後述する図47のステップS18-2において選択可能候補表示タイマー開始時に使用される。
選択可能候補消去タイマー402は表示した選択可能候補を消去するまでの時間を定義する。ユーザーが選択可能候補を選択しない場合に選択可能候補を消去するためである。図7では、選択可能候補の表示からTimerValue=5000〔ms〕以内に選択可能候補が選択されなければ選択可能候補表示データが消去されることを意味している。選択可能候補消去タイマー402は候補表示タイマー制御部24が保持している。選択可能候補消去タイマー402は図49のステップS64において選択可能候補表示消去タイマー開始時に使用される。
手書きオブジェクト近傍矩形領域403は手書きオブジェクトの近傍とみなす矩形領域を定義する。図7の例では、手書きオブジェクト近傍矩形領域403は、手書きオブジェクトの矩形領域を水平方向に推定文字サイズの50%(Horizontal)拡大し、垂直方向に推定文字サイズの80%(Vertical)拡大した矩形領域となる。図7の例では推定文字サイズの割合(%指定)となっているが、単位を"mm"等とすれば固定長にすることも可能である。手書きオブジェクト近傍矩形領域403は手書き入力保存部25が保持している。フォントデータ405は図46のステップS10において、手書きオブジェクト近傍矩形領域とストローク矩形領域の重なり状況の判定で使用される。
推定書字方向/文字サイズ判定条件404は、書字方向と文字サイズの測定方向を判定するための定数を定義する。図7の例では、手書きオブジェクト矩形領域の最初にストロークが追加された時刻と最後にストロークが追加された時刻の差分がMinTime=1000〔ms〕以上で、手書きオブジェクト矩形領域の水平距離(幅)と垂直距離(高さ)の差分がMinDiff=10〔mm〕以上あることが判断される。水平距離が垂直距離より長い場合は、推定書字方向は「横書き」、推定文字サイズは垂直距離と判定することを意味する。水平距離が垂直距離より短い場合は、推定書字方向は「縦書き」、推定文字サイズは水平距離と判定することを意味する。以上の条件を満たさない場合は、推定書字方向は「横書き」(DefaultDir="Horizontal")、推定文字サイズは水平距離と垂直距離の長い方の距離と判定する。推定書字方向/文字サイズ判定条件404は手書き入力保存部25が保持している。推定書字方向/文字サイズ判定条件404は図49のステップS59における推定書字方向取得と、図51のステップS81における文字列オブジェクトフォント取得で使用される。
フォントデータ405は文字等のサイズを推定するためのデータを定義する。図7の例では、推定書字方向/文字サイズ判定条件404で判定された推定文字サイズが、フォントデータ405の小さめ文字405a(以下、最小フォントサイズ、と呼ぶ)と大きめ文字405c(以下、最大フォントサイズ)と比較されることを意味する。推定文字サイズが最小フォントサイズより小さい場合、推定文字サイズは最小フォントサイズと判定される。推定文字サイズが最大フォントサイズより大きい場合、推定文字サイズは最大フォントサイズと判定される。それ以外は、中くらい文字405bの文字サイズと判定される。フォントデータ405は手書き入力保存部25が保持している。フォントデータ405は、図51のステップS81における文字列オブジェクトフォント取得で使用される。
手書き入力保存部25は具体的には、推定書字方向/文字サイズ判定条件404で判定された推定文字サイズをフォントデータ405のFontSizeと比較して、最も近いサイズのフォントを使用する。手書き入力保存部25は、例えば、推定文字サイズが25〔mm〕(小さめ文字のFontSize)以下の場合は「小さめ文字」と判定する。手書き入力保存部25は、推定文字サイズが25mm超50mm(中くらい文字のFontSize)以下の場合は「中くらい文字」と判定する。手書き入力保存部25は、推定文字サイズが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は図48のステップS50における選択オブジェクトの判定の跨ぎ線判定で使用される。
囲み線判定条件407は、オブジェクトが囲み線か否かの判定に使用されるデータを定義する。図7の例では、操作コマンド認識制御部32は手書きオブジェクトの長辺方向と短辺方向の重なり率が100%以上(MinOverLapRate="100%")の確定オブジェクトを選択オブジェクトと判定する。囲み線判定条件407は、操作コマンド認識制御部32が保持している。囲み線判定条件407は、図48のステップS50における選択オブジェクトの判定の囲み線判定で使用される。
なお、跨ぎ線判定条件406と囲み線判定条件407はどちらが優先して判定されてもよい。例えば、跨ぎ線判定条件406を緩やかにして(跨ぎ線を選択しやすくした場合)、囲み線判定条件407は厳密にした場合(囲み線のみを選択できるような値とした場合)、操作コマンド認識制御部32は囲み線判定条件407を優先して判定するのがよい。
マスク表示タイマー(1)408は、表示部22が文字列オブジェクトを表示してから、マスク表示に切り替えるまでのタイマーである。図52のステップS83のマスク表示タイマー開始で使用される。マスク表示タイマー(1)408は、マスク表示領域に5秒間(TimerValueForMaskedDisplay1="5 sec")ペンダウンがなければマスク表示に切り替えることを示す(第一の時間の一例)。マスク表示タイマー(1)408が開始するのは初めて文字列オブジェクトが入力された直後であり、この例ではこの文字列オブジェクトに関連する情報(例えば1領域分)の入力が終わるまでの入力時間を想定した短めの時間としている。
マスク表示タイマー(2)409は、マスク表示がいったん解除された後に、表示部22が再度、マスク表示に切り替えるまでのタイマーである。マスク表示タイマー(2)409は図52のステップS94のマスク表示タイマー開始で使用される。マスク表示タイマー(2)409は、マスク表示解除後、マスク表示領域に30秒間(TimerValueForMaskedDisplay2="30 sec")ペンダウンがでなければマスク表示に切り替えることを示す(第二の時間の一例)。マスク表示タイマー(2)409が開始するのは初めて文字列オブジェクトが入力されて一度以上マスク表示に切り替えられた直後である。当該文字列オブジェクトとは異なる情報との比較又は検証をユーザーが終わるまでの時間を想定した長めの時間としている。このため、TimerValueForMaskedDisplay1とTimerValueForMaskedDisplay2は異なっている。
なお、マスク表示タイマー(1)408とマスク表示タイマー(2)409は、表示装置2が表示する設定画面等からユーザーが任意に設定できる。例えば、マスク表示タイマー(1)408>マスク表示タイマー(2)409としてもよいし、マスク表示タイマー(1)408又はマスク表示タイマー(2)409を無効(無限大)としてもよい。
マスク表示解除ジェスチャー410は、ユーザーがマスク表示を解除するジェスチャーを定義する。マスク表示解除ジェスチャー410は、図52のステップS90、S91のジェスチャー認識要求で返ってくるジェスチャー認識結果の判定に使用される。マスク表示解除ジェスチャー410は、タップ(GestureForCancelMaskedDisplay="Tap")、即ち、マスク表示されたマスク表示領域内をユーザーがタップする(ペンで押してすぐ放す操作をする)とマスク表示が解除される。なお、ジェスチャーの判定方法は、認識結果が「、」=タップ(点)、「゛」=ダブルタップ(濁点)のように、文字認識と同様に行える。すなわち、手書き入力表示制御部23は入力手段により所定の手書きデータが入力された場合、秘匿した文字列を再度、表示する。
ユーザーがタップすることで誤動作になるような場合、ユーザーはより複雑なジェスチャーに変更できる。例えば、ユーザーの所定の手書きで操作ガイド500に操作コマンドが表示され、ユーザーはジェスチャーを変更するコマンドを選択する。すると、ジェスチャーの入力欄が表示され、ユーザーが所望のジェスチャーを登録できる。
<辞書データの一例>
図8~図10を用いて辞書データについて説明する。図8は手書き認識辞書部27の辞書データの一例であり、図9は文字列変換辞書部29の辞書データの一例であり、図10は予測変換辞書部31の辞書データの一例である。なお、これらの辞書データはそれぞれ図48のステップS33~S41で使用される。
本実施形態では、図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を用いて操作コマンド認識制御部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に対応付けてファイルの入出力が可能になる。
操作コマンド定義データ709、710、711、720、721、722、723、724、725、726は、ペン色を変更する操作コマンドである。ペン色とはユーザーが使用しているペンで入力された手書きデータの色である。操作コマンド定義データ709、710、711、720、721、722、723、724、725、726のそれぞれの操作コマンド名は「黒ペン」「赤ペン」「青ペン」「緑ペン」「マゼンタペン」「シアンペン」「黒細ペン」「赤細ペン」「青細ペン」「緑細ペン」である。例えば、「黒ペン」「黒細ペン」の場合、文字列候補と部分一致する文字列が「くろ」又は「ペン」であり、ユーザーが「くろ」と書けば、操作コマンド候補には「黒ペン」「黒細ペン」のみが表示される。一方、「ペン」は「赤ペン」等においても文字列候補と部分一致する文字列(String)に該当するので、ユーザーが「ペン」と書けば、操作コマンド候補には「黒ペン」~「シアンペン」、「黒細ペン」~「緑細ペン」が表示される。これらの操作コマンドが実行されると、図17に示すように、ユーザーが操作に使用したペン2500のペンIDに対応付けられた制御データが更新され、このペンIDのペンの色としてペンID制御データのColorIdに設定される(例えば「Command="ChangePen Black"」のBlackがColorIdになる)。
操作コマンド定義データ719は、操作コマンド名が「ファイルを読み込む」、文字列候補と部分一致する文字列(String)が「ファイル」「読み込む」「読み込み」、実行する操作コマンドが「ReadFile https://%username%:%password%@server.com/files/」である。操作コマンド定義データ702と同様にシステム定義データと置き換えると、操作コマンドは「ReadFile https://taro.tokkyo:x2PDHTyS@server.com/files/」となり、このアドレス(フォルダー)のファイルを読み出す(ReadFile)ことを示す。この操作コマンドが実行されると、図12のようなファイル選択ウィンドウを表示装置2が表示する。図12のファイル選択ウィンドウは、このアドレス(フォルダー)に格納されているファイルの1ページ目などをサムネイルで表示する。
図12は図53のステップS108(ファイル一覧表示データ)で表示部22に表示されるファイル一覧表示データの一例である。図12(a)は、図53のステップS105のファイル一覧情報取得で取得されたファイル一覧情報から作成される。ファイル一覧情報は、ファイルアドレスの一覧を有し、表示部22は各ファイルアドレスからファイル名とサムネイルを抽出してファイル名昇順に並び替えて表示する。図12では4つのサムネイルとファイル名を表示し、左右の矢印アイコン99で前後のサムネイルとファイル名を表示する。表示されたサムネイル又はファイル名がペンで押されると、表示部22は図12の画面を消去し、ペンが押されたファイルアドレスからファイル送受信制御部37がファイルを受信する。
右上隅の閉じるボタン98がペンで押下されると、表示部22は図12の画面を消去して、この操作コマンド定義データ719の実行がキャンセルされる。図12(a)(d)のPDFファイルが選択されると、ファイル送受信制御部37はPDFファイルを受信して手書き入力保存部25に保存する。ファイル送受信制御部37はPDFファイルを解析する。ファイル送受信制御部37は、手書き由来のテキストデータ(メタデータ有り)の場合、例えば図16の手書き入力保存データ801~805のような手書き入力保存データ(白黒強調及びカラー変換可能データ)として保存する。白黒強調及びカラー変換可能データは、白黒強調もカラーへの変換も可能なデータ(主に手書き由来のデータ)である。手書き由来でないテキストデータは、例えば図16の手書き入力保存データ806のような手書き入力保存データに変換して保存し、ディスプレー220に表示する。
図12(b)(c)のPDFファイルが選択されると、ファイル送受信制御部37は画像ファイルを受信して、手書き入力保存部25に例えば図16の手書き入力保存データ807のような手書き入力保存データとして保存して、ディスプレー220に表示する。
図11に戻って説明する。操作コマンド定義データ712は、テキストデータの方向を一定方向に揃えるための操作コマンドである。操作コマンド定義データ712の操作コマンド名は「テキスト方向を揃える」、文字列候補と部分一致する文字列が「テキスト」「向き」又は「方向」、操作コマンド文字列が「AlignTextDirection」である。ユーザーが天地方向以外から書き込んだテキストデータは向きがばらばらなので、ある1つの方向から全てを読み取りにくい。操作コマンド定義データ712をユーザーが実行すると、表示装置2は手書き認識した文字列を同一方向(例えば、天地方向)に揃える。この場合の揃えるとは、テキストデータを角度情報だけ回転させることをいう。
操作コマンド定義データ713は、操作コマンド名が「手書きサイン登録する」、文字列候補と部分一致する文字列が「サイン」と「登録」、操作コマンド文字列が「RegistSignature」であることを示す。RegistSignatureコマンドが実行されると、手書き入力保存部25に手書きサイン登録フォームが追加され、画面に手書きサイン登録フォームが表示される。手書きサイン登録フォームの一例については後述する(図33参照)。
操作コマンド定義データ714は、操作コマンド名が「手書きサインインする」、文字列候補と部分位置する文字列が「%signature%」、操作コマンドが「Signin」であることを示す。ここで「%signature%」はシステム定義データの予約語であり、登録済みの手書きサインデータとユーザー名等のストロークデータが適合した事実を表すものとする。つまり適合すると操作コマンド定義データ714に基づく操作コマンド512が操作ガイド500に表示される(図34参照)。
Singinコマンドが実行されると、ユーザー名等のストロークデータを手書きしたペン2500のペンID制御データに、適合した手書きサインデータのSignatureIdをもつユーザーのAccountIdが保存される。これによってペンIDとAccountIdが対応付けられ、このAccountIdで特定されるユーザー定義データを表示装置2が使用することができる(図17(a)参照)。
操作コマンド定義データ715は、操作コマンド名が「手書きサインアウトする」、文字列候補と部分一致する文字列が「サイン」又は「アウト」、操作コマンドが「Signout」であることを示す。Signoutコマンドが実行されると、手書きサインアウトを操作したペン2500のペンID制御データからAccountIdが削除される。これによってペンIDとAccountIdの対応付けがなくなり、ペン2500を任意のユーザーが使用できるようになる。
操作コマンド定義データ716は、操作コマンド名が「設定変更する」、文字列候補と部分一致する文字列が「設定」又は「変更」、操作コマンドが「ConfigSettings」であることを示す。ConfigSettingsコマンドが実行されると、手書き入力保存部25にユーザー定義データ変更フォームが追加され、画面にユーザー定義データ変更フォームが表示される。ユーザー定義データ変更フォームについては後述する(図35参照)。
操作コマンド定義データ741は、操作コマンド名が「機密情報の入力」、文字列候補と部分一致する文字列が「ロック」又は「機密情報」、操作コマンドが「RecognitionContorol」であることを示す。RecognitionContorolコマンドが実行されると、手書き入力保存部25に入力ウィンドウ110のフォームが追加され、画面に入力ウィンドウ110が表示される(図22参照)。
続いて、手書きオブジェクトがある場合の操作コマンド定義データについて説明する。図13は手書きオブジェクトにより選択された選択オブジェクトがある場合の操作コマンド定義データの一例を示す。図13の操作コマンド定義データは、操作コマンド名(Name)、操作コマンドの候補のグループ名(Group)、実行する操作コマンド文字列(Command)を有する。
操作コマンド定義データ707は編集系(Group="Edit")の操作コマンドを定義しており、編集系の操作コマンド名「消去」「移動」「回転」「選択」の定義データ例である。つまり、選択オブジェクトに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。
操作コマンド定義データ708は修飾系(Group="Decorate")の操作コマンドを定義しており、修飾系の操作コマンド名「太く」「細く」「大きく」「小さく」「下線」の定義データ例である。選択オブジェクトに対してこれらの操作コマンドが表示され、ユーザーが所望の操作コマンドを選択できる。この他、色の操作コマンドが表示されてもよい。
従って、ユーザーが選択オブジェクトを手書きオブジェクトで選択することで、操作コマンド定義データ707、708が特定されるため、ユーザーが手書きすることで操作コマンドを表示させることができる。
操作コマンド定義データ731は、グループ化しない(Group="None") 操作コマンドであり、操作コマンド名が「ページ名に設定」のデータ例である。この操作コマンドの表示例を図30,図31に示す。操作コマンド定義データ731が選択された場合、表示装置2は選択オブジェクトに対して「SetPageName」を実行し、選択オブジェクトの文字列を現在表示中のページのページ名に設定する。このページ名はページナビにリアルタイムに表示される。
<ユーザー定義データ>
次に、図14を用いてユーザー定義データについて説明する。図14は、操作コマンド定義部33が保持するユーザー定義データの一例を示す。図14のユーザー定義データは一人分のユーザーの定義データ例である。ユーザー定義データ717のAccountIdはユーザーごとに自動的に採番されるユーザーの識別情報、AccountUsernameとAccountPasswordはユーザー名とパスワード、SignatureIdは手書きサインデータ登録時に自動的に採番される手書きサインデータの識別情報、username, password, machinenameはそれぞれシステム定義データ704~706の替わりに操作コマンド定義データ701~703に設定される文字列である。これにより、ユーザー定義データを使用した操作コマンドの実行が可能になる。
ユーザーがユーザー名などを手書きしてサインインした場合、ペンIDとAccountIdがペンID制御データに対応付けられていることが利用される(図17(a)参照)。ユーザーが使用するペン2500のペンIDで対応付けられているAccountIdを有するユーザー定義データの文字列が操作コマンドの実行時に使用される。ユーザーがサインアウトした後は、ユーザーがサインインに使用したペン2500を使用しても、システム定義データの文字列が操作コマンドの実行時に使用される。
ユーザー定義データ718は、ユーザー定義データ変更フォームで使用されるデータである。Nameはユーザー定義データ717のAccountUsername、AccountPassword、username, password, 又はmachinenameの項目名であり、DataはAccountUsername、AccountPassword、username, password, 又はmachinenameの変更値になる。この例では、「名前」のデータは「%AccountName%」、「パスワード」のデータは「%AccountPassword%」、「フォルダーユーザー名」のデータは「%username%」、「フォルダーパスワード」のデータは「%password」、「フォルダーファイル名」のデータは「%machinename」であり、ユーザー定義データ717の各項目と対応している。ユーザー定義データ変更フォームで入力されたこれらの項目は、ユーザー定義データ717に反映される。
後述するカラー定義データをユーザー定義データ717にユーザーが登録することも可能であり、ユーザーは自分が定義したカラー定義データで入力できる。
<手書きサインデータ>
次に、図15を用いて、手書きサインデータについて説明する。図15は、手書きサインデータ保存部39が保持する手書きサインデータの一例を示す。手書きサインデータはSignatureIdに対応付けられた手書きサインを表すDataを有する。SignatureIdは手書きサインデータ登録時に自動的に採番される識別情報、Dataは手書きサイン認証制御部38の手書きサイン認証アルゴリズムが、手書きサイン認証制御部38から受信したストロークデータから計算したデータである。
<手書き入力保存部が保存する手書き入力保存データ>
次に、図16を用いて、手書き入力保存データについて説明する。図16は、手書き入力保存部25が保存している手書き入力保存データの一例を示す。図16の1行が1つのストローク、1文(テキスト)、又は画像(イメージ)を表す。
Typeがストロークの場合、1つの手書き入力保存データは、DataId、Type、PenId, ColorId, Angle、StartPoint、StartTime、EndPoint、EndTime、Point、及び、Pressureの各項目を有している。DataIdはストロークの識別情報である。Typeは手書き入力保存データの種別である。種別にはストローク(Stroke)、グループ(Group)、テキスト(Text)、及び、イメージ(Image)がある。手書き入力保存データ801、802の種別はStrokeであり、手書き入力保存データ803の種別はGroupであり、手書き入力保存データ804、805、806の種別はTextであり、手書き入力保存データ807の種別はImageである。
Groupとは他のストロークをグループ化することを意味し、種別がGroupの手書き入力保存データは、DataIdでグループ化の対象のストロークを指定する。PenId、ColorId, Angle、は次述するペンID制御データが転記されたものである。StartPointはストロークの始点座標であり、StartTimeはストロークの始点時刻である。EndPointはストロークの終点座標であり、EndTimeはストロークの終点時刻である。Pointは始点から終点までの座標列であり、Pressureは始点から終点までの筆圧である。Angleに示すように、手書き入力保存データ804,805はそれぞれ180度、270度だけ時計回りに回転してから手書き認識されたことを示す。
また、Typeがテキスト(Text)の手書き入力保存データ804、805、806は、FontName、FontSize、Textを有している。FontNameはテキストのフォント名、FontSizeは文字サイズ、Textはテキストの内容(文字コード)である。
ペンID制御データにFontNameがなければ、図7の定義済み制御データのフォントデータ405のFontStyleを手書き入力保存部25が手書き入力保存データにコピーする。FontSizeは、図7の定義済み制御データのフォントデータ405からコピーする。
手書き入力保存データ801~805は手書き由来のデータとしてファイル保存時にはそのままメタデータとして添付されるとよい。従って、ファイル読み込み時も手書き入力保存データ801~805を表示装置2が取得できる。表示装置2が手書き入力保存データを外部機器に送信する場合は、カラー対応機器では手書き入力保存データをカラーに変換し、白黒対応装置の場合はカラーに変換せずに送信してもカラーに変換して送信してもよい。白黒強調対応装置に送信する場合は、手書き入力保存データを送信すればよい。このように手書き入力保存データ801~805は白黒強調及びカラー変換のいずれにも対応している。
手書き入力保存データ801~805が手書き由来のデータであるのに対し、手書き入力保存データ806、807は手書き由来のデータでない。これらはファイル読み込みコマンドで読み込まれたファイルである。このことはColorIdに後述するカラー定義データが定義するカラーの値が登録されているか否かによって判定される。例えば、手書き入力保存データ801のColorIdは「Black」であるが、手書き入力保存データ806のColorIdは「#e6001200」である。これは#と16進数8桁で表し、2桁ごとにR(赤)、G(緑)、B(青)、A(透明度)の値を表す。
このように、手書き由来のテキストデータでは、ColorIdに色情報を表す文字列が入っているが、手書き由来でないテキストデータでは、ColorIdが「#カラー値」となっている。このように、手書き由来のテキストデータかどうかはColorIdに着目して判定できる。
手書き入力保存部25はファイル送受信制御部37が読み取ったファイルのテキストデータのカラーをColorId="#e6001200"のように保存する。従って手書き入力保存データ806は白黒強調には対応せず、カラー変換にのみ対応している。
手書き入力表示制御部23は、ColorIdで手書き由来のデータかどうかを判定して、手書き由来でない場合はRGBAからグレースケール値を計算して表示する。表示装置2がカラー対応装置の場合はRGBAそのままを表示する。
手書き入力保存データ807もファイル読み込みコマンドで記憶媒体から読み込まれた画像ファイルである。TypeがImageの場合、手書き入力保存データ807はFileId 、FileNameを有する。FileIdは手書き入力保存データ内の管理番号、FileNameはオリジナルのファイル名である。例えば、ファイル送受信制御部37が図12(a)の「color_chart.pdf」のファイルを読み込んだ場合、中心部のRGBCMYのテキストは手書き入力保存データ806の形式により手書き入力保存部25に保存される。リング状のカラー部分は手書き入力保存データ807の形式により手書き入力保存部25に保存される。なお、TypeがImageの手書き入力保存データは当然、手書き由来でない。従って、Typeによって手書き由来かどうかを判断してもよい。
図16では、ColorIdの値で手書き由来のデータか否かを判定しているが、手書き由来かどうかを専用のフラグなどで記録してもよい。また、Typeがストロークの手書きデータに限られるが、機械学習で形状から手書き由来かどうかを判定することもできる。この場合、学習装置はディープラーニングなどで手書き由来かそうでないかの教師データと文字の形状の対応を学習し、入力された文字の形状が手書き由来かそうでないかを出力する。
また、手書き由来のデータには手書きデータが文字認識して変換されたテキストデータだけでなく、「済」「秘」などの決まった文字やマークとして表示されるスタンプ、円や星などの図形、直線等、ユーザーの操作に基づいて変換されたデータが含まれてよい。
手書き入力保存データは、図45のステップS7(ペン座標と受信時刻)、図53のステップS102(手書き入力保存データの取得)、図53のステップS110(ファイル保存)等で使用される。
<ペンID制御データ保存部が保存するペンID制御データ>
次に、図17を用いて、ペンID制御データについて説明する。図17は、ペンID制御データ保存部36が保存するペンID制御データ901~904を説明する図である。ペンID制御データは手書き由来のデータの色などを制御する。図17では4つのペン2500があることを示す。4つは一例であり、1つ以上であればよい。
図17(a)の1行が1つのペンのペンID制御データを示す。また、図17(b)は表示装置2に対しユーザーが手書きする時の角度情報を説明する図である。角度情報は操作位置に相当し、ユーザーが存在する方向の角度とも言えるし、ペンが使用される方向の角度とも言えるし、ユーザーが手書きした文字の回転に関する角度とも言える。表示装置2の所定の方向(例えば天地方向)を0度(基準)として、各ユーザーの角度情報は反時計回りに45度、90度、135度、180度、225度、270度、315度、である。
なお、角度情報はユーザーの操作位置によって自動的に決まるわけではなく、各ユーザーが角度情報を設定する。設定方法には、後述する直線の入力による方法と、操作メニューを選択する方法がある。直線の入力による指定可能な角度情報の分解能(図17では45度)は一例に過ぎず、より小さい5度~30度などでもよい。ただし、45度くらいで回転した文字であれば、ユーザーは読めると考えられる。
ペンID制御データ901~904は、PenId、ColorId、Angle、FontName(フォント指定)、手書き認識候補オフ状態(RecommendMenuOff)、及びAccountIdを有することができる。PenId以外は任意である。AccountIdはユーザーがサインインに使用したペンについて対応付けられる。 PenIdはペン2500のペン内部に保存されている識別情報である。ColorIdはこのペン2500を使用するユーザーが何色を選択したかを示す(ユーザーが任意に変更可能)。ColorIdには後述するカラー定義データのカラーIDが設定される。カラー定義データで各カラーの詳細(太さ等)が定義されている。
Angleはこのペン2500に設定されているストロークの角度情報である(ユーザーが任意に変更可能)。図17(a)の例では、各ペンの角度情報は反時計回りに0度、90度、180度、270度となっている。AccountIdはユーザーの識別情報である。ペンIDにAccountIdが対応付けられることで、ユーザーが使用するペン2500のペンIDに対応付けられているAccountIdを特定でき、ユーザー定義データを使用して操作コマンドを実行できる。
FontNameは、図21のペン色選択ボタンをユーザーが押下すると追加される。FontNameが追加されると、図51のステップS81における文字列オブジェクトフォント取得で、図7の定義済み制御データのフォントデータ405のFontStyleの代わりにFontNameが取得される。文字列オブジェクトはこのFontNameのフォントで表示される。
ペンID制御データ901はPenIdが1のペンID制御データで、色は黒(Black)、角度情報は0度、AccountId=1、FontNameなし、RecommendMenuOffなし、である。AccountId=1のユーザーは図14のユーザー定義データ717のユーザーである。このユーザーがPenId=1のペンでユーザー名などを手書きしてサインインし、黒を選択したことを示す。AccountIdがないペンID制御データはサインアウト状態(ユーザーと対応付けられていない)であることを示す。同様にペンID制御データ902は、PenIdが2のペンID制御データで、色は赤(Red)、角度は90度、AccountIdはなし、FontNameはポップ体、RecommendMenuOffはなし、である。
ペンID制御データ903には、手書き認識候補オフ状態(RecommendMenuOff)が設定されている。手書き認識候補オフ状態(RecommendMenuOff)は、後述する操作ガイド500が文字列候補539を表示しないように制御するか(操作コマンドのみを表示)、又は、操作コマンドの候補510さえも表示しないように制御するための制御データである。後者の場合、操作ガイド500自体が表示されない。手書き認識候補オフ状態(RecommendMenuOff)は後述する手書き認識候補オンオフボタン(図37参照)の押下により設定される。図形など文字認識が必要ない手書きデータをユーザーが入力する場合、操作ガイド500を邪魔に感じるユーザーがいる場合もある。本実施形態では手書き認識候補オフ状態に制御できるため、操作ガイド500を非表示にできるし、表示装置2が文字認識しない場合には処理負荷を低減できる。ペンID制御データ903はPenIDが3、色は青(Blue)、角度は180度、AccountIdはなし、FontNameはなし、である。
ペンID制御データ904は、PenIdが4のペンID制御データで、色は緑(Green)、角度は270度、AccountIdはなし、FontNameはなし、RecommendMenuOffはなし、である。
ペンID制御データにRecommendMenuOff="True"が追加されている場合に、操作コマンドを表示しない制御を採用すると操作コマンドも実行されなくなる。このため、RecommendMenuOff="True"の解除を行うためには図37に示すようなボタン操作が必要になる。
また、図21のペン色選択ボタン、又は、図37のボタンをユーザーが押下したペン2500のペンID制御データは、そのボタンに定義されたColorId, Angle, FontName,及びRecommendMenuOffで更新される。
ペンID制御データは、図45のステップS5(ペンID制御データ取得)、図47のステップS20(ペンID制御データの角度情報を保存)、図47のステップS21(ペンID制御データの角度情報を取得)、及び、図49のステップS60(ペンID制御データの取得)で使用される。
<カラー定義データ>
図18は、カラー定義データの一例を示す。カラー定義データの1行が1つの色を定義する。カラー定義データは、ColorIdに対する白黒対応機器上の白黒強調表示(白黒のパターンと幅(Pattern)と縁取り(Edged)の表示方法)、及び、カラー変換方法(カラー対応機器上の色情報(Color)と幅(Width)の表示方法)を定義している。色情報は#と16進数8桁で表し、2桁ごとに#R(赤)、G(緑)、B(青)、A(透明度)を表し、pxはピクセル幅を表す。なお、カラー定義データは手書き由来のデータのみに適用される。
カラー定義データ1001はColorIdが"Black"の線種又は色の定義例である。カラー表示できない白黒強調対応装置では線種により色を表す。Patternはストローク又はテキストの縁の中身を表し、Edgedは縁の有無を表し、ColorはRGBAの色情報を表し、Widthは線幅を表す。カラー定義データ1001は、白黒強調対応装置ではベタ黒5ピクセル幅+縁なしで手書き入力保存データを表示し、カラー対応装置では黒の透明度0%+5ピクセル幅で表示することを示す。同様に、カラー定義データ1002はColorIdが"Red"の線種又は色の定義例である。白黒強調対応装置は、ベタ黒3ピクセル幅+外側から黒縁1ピクセル幅+白縁2ピクセル幅で表示し、カラー対応装置は、カラーチャートの赤の透明度0%+5ピクセル幅で表示する。カラー定義データ1003はColorIdが"Blue"の線種又は色の定義例である。白黒強調対応装置は、ベタ白4ピクセル幅+黒縁1ピクセル幅で表示し、カラー対応装置は、カラーチャートの青の透明度0%+5ピクセル幅で表示する。カラー定義データ1004はColorIdが"Green"の線種又は色の定義例である。白黒強調対応装置は、黒のドットパターン4ピクセル幅+黒縁1ピクセル幅で表示し、カラー対応装置は、カラーチャートの緑の透明度0%+5ピクセル幅で表示する。カラー定義データ1005はColorIdが"Magenta"の線種又は色の定義例である。白黒強調対応装置は、黒の右上斜線パターンで白は透明の5ピクセル幅+フチなしで表示し、カラー対応装置では、カラーチャートのマゼンタの透明度60%で表示する。カラー定義データ1006はColorIdが"Cyan"の線種又は色の定義例である。白黒強調対応装置は、黒の水平線パターンで白は透明の5ピクセル幅で表示し、カラー対応装置は、カラーチャートのシアンの透明度60%、で表示する。
カラー定義データ1007はColorIdが"ThinBlack"の線種又は色を定義しており、白黒強調対応装置では、ベタ黒3ピクセル幅+縁なし、で表示し、カラー対応装置は、黒の透明度0%+3ピクセル幅で表示する。カラー定義データ1008はColorIdが"ThinRed"の線種又は色を定義している。白黒強調対応装置は、ベタ黒1ピクセル幅+外側から黒縁1ピクセル幅+白縁1ピクセル幅で表示し、カラー対応装置は、カラーチャートの赤の透明度0%+3ピクセル幅で表示する。カラー定義データ1009はColorIdが"ThinkBlue"の線種又は色を定義している。白黒強調対応装置は、ベタ白2ピクセル幅+黒縁1ピクセル幅で表示し、カラー対応装置は、カラーチャートの青の透明度0%+3ピクセル幅で表示する。カラー定義データ1010はColorIdが"ThinGreen"の線種又は色を定義している。白黒強調対応装置は、黒のドットパターン2ピクセル幅+黒縁1ピクセルで表示し、カラー対応装置は、カラーチャートの緑の透明度0%+3ピクセル幅で表示する。
このように、カラー定義データは白黒強調及びカラー変換可能データを有している。カラー定義データは手書き入力保存部25が保持しており、手書き入力保存データの変換に使用される。
カラー定義データをシステム定義データとユーザー定義データに定義しておき、ユーザー定義データにカラー定義データを変更するフォームを追加すれば、サインイン後にユーザーは個人好みのカラー定義に変更することができる。
図19は、図18のカラー定義データを使用して、白黒強調表示されたデータとカラー表示方法で表示されたデータを示す。図19(a)は白黒強調対応装置が白黒強調表示したもので、図19(b)はカラー対応装置がカラーに変換して表示したものである。作図の都合で、図19(b)も白黒(ハッチング)になっている。
符号C1は手書き由来の「黒」「赤」「青」緑」「マゼンタ」「シアン」のテキスト、符号C2は「黒」「赤」「緑」「マゼンタ」「シアン」のストローク(手書き)、符号C3はバネ状の一筆書きのストローク(手書き)、符号C4はドーナツ状のカラーチャート(画像)、符号C5はカラーチャートの内側のRGBCMY(手書き由来ではないテキスト)である。符号C3の下には手書き由来の黒の「Transparent」というテキストがある。
符号C4のカラーチャートと符号C5のRGBCMYというテキストはPDFファイル等から読み込まれたデータであり、手書き由来ではないものとする。従って、図16に示した手書き入力保存部25が保存する手書き入力保存データとして説明すると、符号C2のストローク(手書き)は図16の手書き入力保存データ801、802、として保存される。符号C1の手書き由来のテキストは図16の手書き入力保存データ804,805、として保存される。符号C5の手書き由来でないテキストは図16の手書き入力保存データ806、として保存される。符号C4の画像は図16の手書き入力保存データ807のような手書き入力保存データとして保存される。各手書き入力保存データの色情報はColorIdで定義されている。
図19(a)と(b)を比較すると分かるように、図19(b)の符号C10のカラーチャート内側のテキスト「R」の赤は手書き由来ではないので、図19(a)ではグレースケールで表示されている。これに対し、符号C6のテキスト「赤」は手書き由来なので図19(a)では白黒強調表示される。
また、マゼンタとシアンは透過色であり、図19(b)では「Transparent」が透過して見えており、図19(a)でもマゼンタとシアンでは白が透明のパターンを使用しているため透過して表示される。このように、白黒強調対応装置では目立たせる目的のカラーを白黒強調表示することができ、カラーデバイスではカラーに変換して表示できるようになる。
カラー定義データは、手書き入力表示制御部23が保持しており、図45のステップS6(座標補完表示データ)、図51のステップS82(文字列オブジェクト表示データ)、図53のステップS114(オブジェクトの表示データ)で使用される。
<ペン色選択ボタン定義データ>
次に、図20と図21を用いてユーザーによるペン色の選択方法を説明する。図20は、ペン色選択ボタン定義データの一例である。ペン色選択ボタン定義データは、ディスプレー220に表示されるペンボタンとColorIdを対応付けるデータである。ペン色選択ボタン定義データは、ペンボタンID(PenButtonId)、アイコンファイル(Icon)、カラーID(ColorId)、及び、フォント名(FontName)を有している。
図21は、ディスプレーに表示されるペン色選択ボタン81~86の一例である。ペン色選択ボタン81~86は上記アイコンファイルで表示される。ペン色選択ボタン81~86はペンボタンIDが若い順に左から右に並んで表示されているものとする。ペン色選択ボタン81~86をユーザーがペン2500で押下すると、ペンID制御データにColorIdとFontNameが追加される。以降そのペン2500で入力した手書きオブジェクト又は文字列オブジェクトはColorIdとFontNameを使用して表示される。
ペン色選択ボタン定義データ1101は最も左に表示されるペン色選択ボタン81の定義データである。ユーザーがペン色選択ボタン81をペン2500で押下すると、そのペン2500で手書きされるストロークデータはColorIdが"Black"になり、手書き認識後のテキストのフォントは明朝体となる。ペン色選択ボタン定義データ1102は左から2番目に表示されるペン色選択ボタン82で、ストロークデータのColorIdは"Red"、手書き認識後のテキストのフォントはポップ体となる。同様に、ペン色選択ボタン定義データ1103~1106は、ペン色選択ボタン83から86の、ボタンの表示位置、ColorId、テキストのフォントを定義する。
図21(a)はペン色選択ボタン定義データに基づいて白黒強調表示されたテキストフォント表示例を示す。テキストフォント表示例は説明のための表示であるが、ユーザーがペン2500をホバーさせると表示されてよい。図21(b)はペン色選択ボタン定義データに基づいてカラー対応装置でカラー表示されたテキストフォント表示例を示す(実際はカラーだが作図の都合上白黒となっている)。
図21(a)に示すように、白黒強調だけでなく、フォントを変更することで、より効果的に白黒強調表示することができるようになる。
ペン色選択ボタン定義データもシステム定義データとユーザー定義データに定義しておき、ユーザー定義データにペン色選択ボタン定義データを変更するフォームを追加すれば、手書きサイン認証後に個人好みのペン色選択ボタンに変更することができる。従って、ColorIdとフォントの対応は一例に過ぎない。
ペン色選択ボタンは、手書き入力表示制御部23が保持しており、図45のステップS6(座標補完表示データ)、図51のステップS82(文字列オブジェクト表示データ)、図53のステップS114(オブジェクトの表示データ)で使用される。
<手書き入力領域の定義データ例>
図22は、手書き入力領域の表示例を示す図である。ユーザーは「ロック」又は「機密情報」を手書きして操作ガイド500から選択する。これにより表示装置2が図11(a)の操作コマンド定義データ741の操作コマンド「RecognitionContorol」を実行するので、図22(a)の入力ウィンドウ110が表示される。
手書き入力領域2706には機密情報が入力されることが想定されており、ここでは数字だけからなるユーザーコードをユーザーが手書きで入力する場合を説明する。ユーザーコードとは、ユーザーを識別する識別情報の1つである。アカウントで使用されるユーザーIDはメールアドレスなどであるのに対し、ユーザーコードは数字のみで簡易的にユーザーを識別する。
手書きサインデータによる認証では、管理者が手書きサインデータとアカウントを紐付ける処理が必要になり、コスト増となる。これに対し、ユーザーコードはすでにアカウントと紐付けられているので、コスト増を抑制してユーザー認証が可能になる。すなわち、本実施形態では、手書きサインデータによる認証の代わりにユーザーコードによる認証が可能である。
図22(a)は手書きデータが表示されていない手書き入力領域2706を示す(ストローク表示無効時)。図22(b)は手書きデータが表示されている手書き入力領域2706を示す(ストローク表示有効時)。
ユーザーが入力ウィンドウ110を表示させた直後、表示装置2はストローク表示無効状態である。入力ウィンドウ110は、ガイドメッセージ2702、閉じるボタン2703、マスク表示2704、表示/非表示切り替えボタン2705、手書き入力領域2706、及び、確定ボタン2707、を有する。
・ガイドメッセージ2702は、「ユーザーコードを入力してください」というメッセージである。
・閉じるボタン2703は、ユーザーが入力ウィンドウ110の操作を中止して入力ウィンドウ110を閉じるボタンである。
・マスク表示2704は、手書きデータの認識結果であるが、マスク表示されている。なお、マスク表示は「●」に限らず、「※」「*」、ハッチングパターン等でもよい。「●」の数は文字数と一致しているので、ユーザーは自分が入力した文字数を把握できる。「●」の数は文字数と異なっていてもよい。文字列の推定が困難になる。
・表示/非表示切り替えボタン2705はマスク表示2704と手書き認識の認識結果2709の認識結果を切り替え、更に、手書き入力領域2706のストロークの表示と非表示を切り替えるボタンである。
・手書き入力領域2706はユーザーがユーザーコードの数字を手書き入力する領域である。
・確定ボタン2707は、手書き入力で認識されたユーザーコードをユーザーが確定するボタンである。
ユーザーが表示/非表示切り替えボタン2705を押下すると、図22(b)のように、ストローク表示有効時の状態となる。手書き入力領域2706に、ユーザーが手書きしたユーザーコード2710が表示される。マスク表示2704は、手書きデータの認識結果2709として表示される。認識結果2709は日本語、数字、英語、記号などの文字列であるが、本実施形態では数字に制限されている。
ストローク表示有効時では、ユーザーがこれまで手書きしたストロークと手書き認識の認識結果2709が表示される。以降、ユーザーが追加したストロークと追加した手書きストロークを含めて手書き認識された認識結果の文字列を表示装置2が表示する。
図22(b)の状態で、ユーザーが表示/非表示切り替えボタン2705を押下すると、表示装置2は手書き入力領域2706のユーザーコード2710を非表示にして、マスク表示2704を再度、表示する。
なお、手書き入力領域2706は複数あってもよい。例えば1文字ごとに手書き入力領域2706が用意されていてもよい。
図23は手書き入力領域の定義データ例を示す。図24は手書き入力領域の構成を説明する図である。図23,図24では、3つの領域が定義されている。
(i) 入力ウィンドウ110の外側の領域(後述のシーケンス図で領域Aとする。ただし次の領域B,Cは含まない。))。なお、領域Aは入力ウィンドウ110の周囲に限らず一般的な手書きの領域である。
(x11,y11)~(x12,y12)。定義データ2804が定義する領域である。
(ii) 入力ウィンドウ110のうち手書き入力領域外の領域(後述のシーケンス図で領域Bとする。ただし次の領域Cは含まない。)
(x21,y21)~(x22,y22) 。定義データ2805が定義する領域である。
(iii) 手書き入力領域(後述のシーケンス図で領域Cとする)
(x31,y31)~(x32,y32) 。定義データ2806又は2807が定義する領域である。
(i) 入力ウィンドウ110の外側の領域Aを図23の定義データ2804が定義する。(ii) 入力ウィンドウ110のうち手書き入力領域2706以外の領域Bを図23の定義データ2805が定義する。(iii) 手書き入力領域2706である領域Cを図23の定義データ2806、2807が定義する。定義データ2806は手書きデータ表示無効時の定義データであり、定義データ2807は手書きデータ表示有効時の定義データである。
以下、定義データが有する属性について説明する。
・RegionIdは領域の識別子である。RegionIdは定義データを手書き認識制御部26が参照する場合に使用する。本定義データ例では使用されない。
・Depthは奥行方向の重なり順位である。Depthは値が大きいほど手前の領域を表し、ペンダウンのイベントが発生すると、手書き認識制御部26は、ペンの座標を含むPositionのうちDepthが最も大きい定義データに従って制御を実行する。
・Positionは領域の座標範囲である。Positionは矩形領域の始点座標、終点座標を有する。
・Recognitionは手書き認識モードである。詳細を図25で説明する。
・RecognitionDicは領域で使用される手書き認識辞書ファイル名である。定義データ2804の辞書ファイルはrecognition.doc、conversion.dic、prediction.dicである。それぞれは、汎用的な手書き認識辞書(図6の手書き認識辞書部27)、文字列変換辞書(図6の文字列変換辞書部29)、及び予測変換辞書(図6の予測変換辞書部31)に対応する。すなわち、通常の手書き認識と同じ辞書ファイルが使用される。定義データ2806、2807の辞書ファイル「number.dic」は数字専用の手書き認識辞書ファイルである。「number.dic」は、ユーザーが何を手書きしても数字の0~9のいずれかの認識結果を返す辞書ファイルである。本実施形態では、ユーザーが手書きデータを見ることができないので、見ながら書く場合よりも手書きデータの筆跡が乱れる可能性が高い。このため、ユーザーが見ながら書く場合よりも高い認識精度が必要になる。そこで、本実施形態では、手書き入力領域で使用される辞書を数字入力限定とした。数字入力限定であれば最も認識率が高いため後述する選択可能候補530の表示が不要となる。定義データ2806、2807に文字列変換辞書、予測変換辞書の指定がないのは、数字専用の手書き認識辞書だけで十分実用的であるためである。ただし、手書き認識辞書、文字列変換辞書、及び予測変換辞書を用いて実用的な認識精度が得られる場合は、定義データ2806、2807にこれらの辞書を使用してもよい。
図25は、Recognitionが取りうる値に対して、手書き認識、選択可能候補表示、ストローク表示、ダイアログ制御、及び、UI操作、それぞれの制御が有効か無効かを示す。
・RecognitionがEnableは、手書き認識制御部26が手書き認識を行い、後述する操作ガイド500(選択可能候補530)を表示することを示す。RecognitionがEnableは、
手書きデータを表示し、手書きデータの認識結果の表示/非表示の制御を行わなし(ダイアログ制御)ことを示す。RecognitionがEnableは、UI操作が無効であることを示す。UI操作は、入力ウィンドウ110のボタン操作など、ストロークの入力でない操作を表示装置2が受け付けるかどうかを示す。従って、Enableは通常の入力モード(ストロークを認識して選択可能候補530を表示し、候補が選択されれば選択可能候補の入力を受け付ける)である。
・Disableは、UI操作以外が無効であり、ユーザーは手書きデータを入力できない。ユーザーは操作パネルなどのメニュー操作のみが可能である。
・ForceForDialogは、手書きストロークを認識するが選択可能候補を表示しない。また、手書きストロークを表示し、ダイアログ制御も有効である。ダイアログ制御とは、手書きデータの認識結果を表示部22が、入力ウィンドウ110が規定する位置とフォントで表示することを示す。すなわち、表示/非表示切り替えボタン2705によりマスク表示2704の表示と手書きデータの認識結果2709が切り替えられる。手書きデータの認識結果2709が表示される領域は、ForceForDialogの領域外でよい。また、ストローク表示が有効なので、ユーザーは手書きストロークを見ることができる。従って、ForceForDialogは、図22(b)の手書き入力領域2706に対応する。ForceForDialogの領域は、手書きデータを表示するが、手書きデータを認識して得た文字列の選択可能候補を表示せず、最も認識の確率の高い文字列の入力を受け付ける。
・ForceForDialogWithoutStrokeは、ストローク表示が無効である。ダイアログ制御が有効なので、表示/非表示切り替えボタン2705によりマスク表示2704が表示される。その他はForceForDialogと同じである。従って、ForceForDialogWithoutStrokeは手書きデータが表示されない図22(a)の手書き入力領域2706に対応する。ForceForDialogWithoutStrokeの領域は、手書きデータも変換後の文字列も表示することなく、文字列の入力を受け付ける。
なお、定義データ2806と定義データ2807のRegionIdが等しいのは、同じ領域(図22の2706と2710)を示しているからである。ユーザーが図22(a)の入力ウィンドウ110を開くと、定義データ2806が追加され、表示/非表示切り替えボタン2705が押下されると、手書き認識制御部26が定義データ2806を定義データ2807に変更する。これにより、手書きデータが手書き入力領域2706に表示されるようになる。
図25に示したRecognitionを用いた制御により例えば以下のような制御が可能になる。表示装置2は、予め定められた領域でない領域にペン2500により手書きデータが入力された場合、手書きデータから変換された文字列の選択可能候補を表示する。そして、表示装置2は、選択可能候補から選択された文字列を予め定められた領域でない領域に表示し、文字列の入力を受け付ける。一方、予め定められた領域にペン2500により手書きデータが入力された場合、選択可能候補を表示しない。そして、表示装置2は、手書きデータから変換された文字列の入力を受け付ける。
・Forceは、Enableの選択可能候補表示を無効にした領域である。すなわち、Forceは、最も認識の確率が高い候補を表示装置2が自動的に選択する領域に使用される。例えば、Forceは入力する文字や文字列の範囲が決まっている場合(性別、年齢、地域名など)に使用される。Forceは定義データ2804~2807では使用されていないが、図27のマスク表示領域の定義データで使用される。
このように、表示装置2は、領域に対応付けて、手書きデータの認識の有効と無効、手書きデータを認識して得た文字列の選択可能候補の表示と非表示、及び、手書きデータの表示と非表示が定義された情報を保持している。表示装置2は、情報と手書きデータが入力された領域に基づいて、手書きデータの認識、選択可能候補の表示と非表示、及び、手書きデータの表示と非表示を切り替える。
なお、図25の定義データでは、領域に対しストローク等の表示と非表示が対応づけられているが、時間に対してストローク等の表示と非表示を表示装置2が制御してもよい。例えば、表示装置2の起動直後、機密情報の入力モードがオンになるか、又は、ユーザーがメニューなどから機密情報の入力モードをオンにする。表示装置2は機密情報の入力モードをオンした時刻から一定時間(領域に関係なく)、ForceForDialogWithoutStrokeで動作する。この場合、入力ウィンドウ110の表示も必要ないが、ユーザーが手書きした文字列を確認できるように、表示/非表示切り替えボタン2705が表示されるとよい。一定時間の経過後は、領域Aと同様の状態に戻る。
また、時間でなく、ユーザーの操作でストローク等の表示と非表示を切り替えてもよい。ユーザーがメニューなどから機密情報の入力モードをオンにしてからオフにするまで、表示装置2はForceForDialogWithoutStrokeで動作する。
<マスク表示領域、及び、マスク表示領域の定義データ>
図26は、マスク表示領域の一例である。図27はマスク表示領域の定義データ例を示す。図26、図27は表示装置2が、一例として受付業務で使用された場合に設定されているマスク表示領域である。あくまで一例であり、領域のサイズ、数、又は、位置は任意にユーザーが設定できる。
行見出し(1,2,3,4……)、列見出し(「名前」「ふりがな」「性別」「年齢」)、及び、罫線は固定であり、表示装置2の電源オンで背景のレイヤーに表示される。ユーザーが手書きするのは背景のレイヤーの手前のレイヤーである。
ユーザーは、名前の列、ふりがなの列、性別の列、及び、年齢の列に、来場者から聞き取って各領域に手書き入力する。名前とふりがなは個人情報(機密情報)であるため、表示装置2がマスク表示に切り替えることが好ましい。
図26では以下のように、画面が合計11カ所の領域に分けられている。
・領域2901は、手書き入力を受け付けない領域である(1カ所)。
・領域2902は、名前が手書き入力される領域である(4カ所)。図27の定義データ2907~2910に基づいて、領域2902には、後述する選択可能候補530が表示され、選択可能候補530からユーザーが選択した文字列が表示される。ユーザーが選択した文字列は、一定時間の経過後にマスク表示される。手書きデータのまま(文字認識しない)マスク表示されてもよい。手書き入力表示制御部23は一部の文字(例えば先頭や最後)をマスクせずに、残りの文字をマスク表示してもよい。また、マスク表示は「●」でなく、「※」「*」でもよいし、ハッチングパターン等でもよい。「●」の数は文字数と一致していてもしていなくてもよい。マスク表示は領域2902の内容を秘匿できればよい。
・領域2903は、ふりがなが手書き入力される領域である(4カ所)。領域2903には、ユーザーがひらがなのみを入力するという前提である。図27の定義データ2911~2914に基づいて、領域2903には、選択可能候補530が表示されず、確率が最も高いひらがなが強制的に表示される。領域2903のふりがなは、領域2902にユーザーが入力したひらがなの認識結果が自動で表示されてよい。
・領域2904は、性別が手書き入力される領域である(マスク表示しないためまとめて1カ所)。領域2904には、ユーザーが性別のみを入力するという前提である。図27の定義データ2915に基づいて、領域2904には、選択可能候補530が表示されず、「男」「女」のうち確率が高い方が強制的に表示される。
・領域2905は、年齢が手書き入力される領域である(性別と同様に1カ所)。領域2905には、ユーザーが年齢(数字)のみを入力するという前提である。図27の定義データ2916に基づいて、領域2905には、選択可能候補530が表示されず、確率が最も高い数字が強制的に表示される。
図27は各領域の定義データである。図23の定義データとの相違を説明する。Region, Depth, Recognition, Recognition, RecognitionDic, ConversionDic,及び、PredictionDicは図23と同じ意味である。MaskedDisplayは、手書き入力されたデータを表示装置2がマスク表示する領域を示す。図27の定義データでは、定義データ2907~2910の名前を手書き入力する領域、及び、定義データ2911~2914のひらがなを手書き入力する領域にMaskedDisplay="True"が定義されている。MaskedDisplay="True"があると、その領域はマスク表示領域となり、文字列がマスク表示される。
図26の領域2902、2903はそれぞれ4カ所に領域が分割されているので、各領域への操作状況に応じて個別にマスク表示される。
定義データ2906は、Recognition="Disable"のため手書き入力に関する処理が行われない領域であることを示す。
定義データ2907~2910は、Recognition="Enable"のため最も汎用性の高い手書き入力処理が行われる領域であることを示す。定義データ2907~2910は名前の領域を定義する。辞書ファイルには名前専用の辞書(RecognitionDic="recognition_name.dic", ConversionDic="conversion_name.dic", PredictionDic="prediction_name.dic")が指定されているため、ユーザーが効率よく名前を手書き入力できる。
定義データ2911~2914は、Recognition="Force"のため、認識結果の候補である選択可能候補530を表示装置2が表示することなく最も認識の確率が高い候補を自動的に表示する領域であることを示す。つまり、ユーザーが選択可能候補530から文字列を選択する手間を低減できる。定義データ2911~2914はふりがなの領域を定義する。定義データ2911~2914の辞書ファイルにはひらがな専用の辞書(Recognition="hiragana.dic")が指定されているため、ユーザーはふりがなを効率よく手書き入力できる。
定義データ2915は、Recognition="Force"のため、認識結果の候補である選択可能候補530を表示装置2が表示することなく最も認識の確率が高い候補を自動的に選択する領域であることを示す。定義データ2915は性別の領域を定義する。定義データ2915の辞書ファイルは性別専用の辞書(RecognitionDic="gender.dic")が指定されているため、性別を効率よく手書き入力できる領域であることを示す。すなわち、災害現場など限られた時間でユーザーが入力しなければならない状況で、効率的に入力できる。
定義データ2916は、Recognition="Force"のため、認識結果の候補である選択可能候補530を表示装置2が表示することなく最も認識の確率が高い候補を自動的に選択する領域であることを示す。定義データ2916は年齢の領域を定義する。定義データ2916の辞書ファイルは数字専用の辞書(RecognitionDic="number.dic")が指定されているため、年齢を効率よく手書き入力できる領域であることを示す。すなわち、災害現場など限られた時間でユーザーが入力しなければならない状況で、効率的に入力できる。
このように、本実施形態の表示装置2は、領域にどのような情報が手書きされるかに応じて、領域ごとに、手書き認識制御(手書きストロークを文字認識して文字列変換又は予測変換する制御)、選択可能候補表示制御(手書き認識の結果候補をユーザーに選択させる制御)の有効又は無効、及び、手書き認識に関わる辞書の種類をユーザーが設定することができる。従って、手書き入力されるデータの範囲が決まっている場合に、より効率的な手書き入力と文字列の表示が可能になる。
なお、図27では、Recognition="Force"に設定されているのが、ひらがな、男女、年齢となっているが、住所、地域名等、手書き入力されるデータの範囲が決まっていれば、ユーザーが該領域のRecognitionを"Force"に設定できる。例えば、災害では表示装置2に入力される住所の一部が付近の住所に限定される場合が多い。また、火災現場ではビル名、社名なども火災が起こったビルやそのテナントの企業に制限される場合が多い。更に、地方では消火活動に当たる消防隊の名称をユーザーが地域に分けて入力する状況が生じうる。この場合、手書き入力される文字列は地域名、消防隊の名称等に制限される場合が多い。このように、手書き入力されるデータの範囲に応じて、辞書が用意されていれば効率的な手書き入力と文字列の表示が可能になる。
なお、領域は矩形でなくてもよい。領域は、三角形以上の多角形でもよいし、円形でもよい。
<選択可能候補の表示例>
図28は操作ガイドと操作ガイドが表示する選択可能候補530の一例である。ユーザーが手書きオブジェクト504を手書きすることで(選択可能候補表示タイマーのタイムアウトにより)、操作ガイド500が表示される。操作ガイド500は、操作ヘッダー520、操作コマンドの候補510、手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508、及び、手書きオブジェクト矩形領域表示503を有している。選択可能候補530は、操作コマンドの候補510、手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508である。この例では言語変換文字列がないが表示される場合がある。また、操作コマンドの候補510を除く選択可能候補530を文字列候補539という。
操作ヘッダー520はボタン501、509、502、505を有する。ボタン501は予測変換と、「カナ変換」の切り替え操作を受け付ける。図28の例ではユーザーが「予測」と表示されているボタン501を押下すると手書き入力部21がそれを受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が「かな」というボタンに表示を変更する。手書きオブジェクト504の認識後は、文字列候補539が「カナ変換」の確率降順で並ぶ。
ボタン502は候補表示のページ操作をする。図28の例では候補表示ページは3ページあり、現在は1ページ目を表示している。ボタン505は操作ガイド500の消去を受け付ける。ユーザーがボタン505を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が手書きオブジェクト以外の表示を消去する。ボタン509は一括表示消去を受け付ける。ユーザーがボタン509を押下すると手書き入力部21が受け付けて手書き入力表示制御部23にその旨を通知し、表示部22が手書きオブジェクトを含め、図28に示されているすべての表示を消去して、ユーザーが最初から手書きをしなおすことを可能にする。
手書きオブジェクト504はユーザーが手書きした「ぎ」という文字である。手書きオブジェクト504を囲む手書きオブジェクト矩形領域表示503が表示される。表示の手順は図45~図53のシーケンス図で説明する。図28の例では点線枠で手書きオブジェクト矩形領域表示503が表示されている。
手書き認識文字列候補506、変換文字列候補507、文字列/予測変換の候補508にはそれぞれの文字列候補が確率降順で並んでいる。手書き認識文字列候補506の「ぎ」は認識結果の候補である。この例では正しく「ぎ」を認識している。
変換文字列候補507は言語文字列候補から変換された変換文字列候補である。この例の「技量試」とは「技術量産試作」の略名である。文字列/予測変換の候補508は言語文字列候補又は変換文字列候補から変換された予測文字列候補である。この例では「技量試を決裁」と「議事録の送付先」が表示されている。
操作コマンドの候補510は図11(a)の操作コマンド定義データ701~703、709~716に基づいて選択された操作コマンドの候補である。図28の例では行頭文字の「》」511が操作コマンドの候補であることを示している。図28では手書きオブジェクト504である「ぎ」が選択する選択オブジェクトがなく、「ぎ」の文字列候補である「議事録」が、図11(a)の操作コマンド定義データ701,702と部分一致したため、操作コマンドの候補510として表示されている。
ユーザーが「議事録テンプレートを読み込む」を選択すると、操作コマンド定義データ701で定義された操作コマンドが実行され、「議事録フォルダーに保存する」を選択すると、操作コマンド定義データ702で定義された操作コマンドが実行される。このように操作コマンドの候補は、変換された文字列を含む操作コマンド定義データが見つかる場合に表示されるため、常に表示されるとは限らない。
図28に示すように、文字列候補と操作コマンドの候補が同時に(共に)表示されるため、ユーザーは自分が入力しようとした文字列候補と操作コマンドのどちらも任意に選択できる。
<選択オブジェクトの指定例>
本実施形態の表示装置2は確定オブジェクトをユーザーが手書きにより選択することで選択オブジェクトを指定できる。選択オブジェクトは編集又は修飾の対象、あるいはページ名となる。
図29は、選択オブジェクトの指定例を説明する図の一例である。図29では、手書きオブジェクト11は黒色実線、手書きオブジェクト矩形領域12を灰色網掛け、確定オブジェクト13を黒線、選択オブジェクト矩形領域14を点線でそれぞれ表示している。なお、それぞれを区別する場合に小文字のアルファベットを符号に付加する。また、確定オブジェクトを選択オブジェクトと判定するための判定条件(所定の関係にあるか否か)として、図7に示した定義済み制御データの跨ぎ線判定条件406又は囲み線判定条件407を使用している。
図29(a)は横書きの2つの確定オブジェクト13a、13bをユーザーが跨ぎ線(手書きオブジェクト11a)で指定した例である。この例では、手書きオブジェクト矩形領域12aの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしている。また、この例は、確定オブジェクト13a、13bとの重なり率が跨ぎ線判定条件406の条件を満たしている。このため、「議事録」と「ぎじ」の両方の確定オブジェクト13a、13bが選択オブジェクトとして指定されている。
図29(b)は横書きの確定オブジェクト13cを囲み線(手書きオブジェクト11b)で指定した例である。この例では、確定オブジェクト13cと手書きオブジェクト矩形領域12cの重なり率が囲み線判定条件407の条件を満たしている「議事録」という確定オブジェクト13cだけが選択オブジェクトとして指定されている。
図29(c)は縦書きの複数の確定オブジェクト13d、13eを跨ぎ線(手書きオブジェクト11c)で指定した例である。この例では、図29(a)と同様に、手書きオブジェクト矩形領域12dの短辺の長さH1と長辺の長さW1が跨ぎ線判定条件406の条件を満たしている。また、この例では、「議事録」と「ぎじ」という2つの確定オブジェクト13d、13eそれぞれとの重なり率が跨ぎ線判定条件406の条件を満たしている。このため、「議事録」と「ぎじ」の両方の確定オブジェクト13d、13eが選択オブジェクトとして指定されている。
図29(d)は縦書きの確定オブジェクト13fを囲み線(手書きオブジェクト11d)で指定した例である。この例では、図29(b)と同様に、「議事録」という確定オブジェクト13fだけが選択オブジェクトとして指定されている。
<操作コマンドの候補の表示例>
図30は、図13に示した手書きオブジェクトがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図30(a)は編集系の操作コマンドの候補であり、図30(b)は修飾系の操作コマンドの候補である。また、図30(a)は図29(a)の手書きオブジェクト11aで選択オブジェクトが指定された例を示す。
図30(a)(b)に示すように、行頭文字「》」511に続いて表示された操作コマンドの候補がメインメニュー550である。メインメニュー550には最後に実行された操作コマンド名又は操作コマンド定義データで先頭の操作コマンド名が表示される。1行目の行頭文字「》」511aは編集系の操作コマンドの候補であり、2行目の行頭文字「》」511bは修飾系の操作コマンドの候補である。3行目の行頭文字「》」511cは「ページ名に設定」の操作コマンドの候補である。
行末の「〉」512はサブメニューがあることを示す(サブメニューボタンの一例)。1行目の「〉」512aは編集系の操作コマンドの候補のサブメニュー(最後に選択された)を表示させ、2行目の「〉」512bは修飾系の操作コマンドの候補の残りのサブメニューを表示させる。ユーザーが「〉」512を押下すると、その右側にサブメニュー560が表示される。サブメニュー560には操作コマンド定義データで定義されている全ての操作コマンドが表示される。図30(a)の表示例ではメインメニューが表示された時から1行目の「〉」512aに対応したサブメニュー560も表示されている。1行目の「〉」512aの押下により表示されてもよい。
3行目のページ名設定の操作コマンドの候補はグループ化しないので行末に「〉」が表示されない。
ユーザーがペンでいずれかの操作コマンド名を押下すると、操作コマンド名に対応付けられた操作コマンド定義データのCommandを手書き入力表示制御部23が選択オブジェクトに対して実行する。すなわち「消去」521が選択されると「Delete」、「移動」522が選択されると「Move」、「回転」523が選択されると「Rotate」、「選択」524が選択されると「Select」をそれぞれ実行する。
例えば、ユーザーが「消去」521をペンで押下すると「議事録」と「ぎじ」を消去できる。また、ユーザーが「移動」522,「回転」523、「選択」524を押すとバウンディングボックス(選択オブジェクトの外接矩形)が表示される。「移動」522と「回転」523が選択された場合、ユーザーはペンのドラッグ動作で移動又は回転でき、「選択」524が選択された場合、ユーザーはその他のバウンディングボックスの操作を実行できる。
操作コマンドの候補以外の文字列候補である「一」541、「一、」542、「~」543、「→」544は跨ぎ線(手書きオブジェクト11a)の認識結果であり、ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
図30(b)では2行目の「〉」512bの押下により、図30(b)のサブメニューが表示される。図30(b)の表示例も図30(a)と同様にメインメニュー550とサブメニュー560が表示されている。図13の操作コマンド定義データに基づいて、「太く」531が選択されると「Thick」、「細く」532が選択されると「Thin」、「大きく」533が選択されると「Large」、「小さく」534が選択されると「Small」、下線535が選択されると「Underline」を手書き入力表示制御部23が選択オブジェクトに対してそれぞれ実行する。
なお、「太く」531が選択された場合にどのくらい太くするについて、固定値が別途定義されている。「細く」532が選択された場合にどのくらい細くするかについて固定値が別途定義されている。「大きく」533が選択された場合にどのくらい大きくするかについて、固定値が別途定義されている。「小さく」534が選択された場合にどのくらい小さくするかについて固定値が別途定義されている。下線535が選択された場合の線種は、固定値が別途定義されている。あるいは、図31(b)のサブメニューが選択されると別途、選択メニューが開かれユーザーが調整できるようになっているとなおよい。
ユーザーが「太く」531をペンで押下すると「議事録」と「ぎじ」という確定オブジェクト13a、13bを構成する線を手書き入力表示制御部23が太くする。ユーザーが「細く」532をペンで押下すると、「議事録」と「ぎじ」を構成する線を手書き入力表示制御部23が細くできる。ユーザーが「大きく」533をペンで押下すると手書き入力表示制御部23が文字列を大きくできる。ユーザーが「小さく」534をペンで押下すると手書き入力表示制御部23が文字列を小さくできる。ユーザーが「下線」535をペンで押下すると、手書き入力表示制御部23が文字列に下線を追加できる。
図31は、図13に示した手書きオブジェクトがある場合の操作コマンド定義データに基づく操作コマンドの候補の表示例を示す。図30(a)(b)との相違は、図31(a)(b)は図29(b)の手書きオブジェクト11b(囲み線)で選択オブジェクトが指定された例を示す。図30と図31を比較すると分かるように手書きオブジェクトが線か囲み線かによって表示される操作コマンドの候補に違いはない。手書き入力表示制御部23は選択オブジェクトが指定されると操作コマンドの候補を表示部22に表示させるためである。しかし、手書きオブジェクトを認識して手書きオブジェクトに応じて表示する操作コマンドの候補を変更してもよい。この場合、認識された手書きオブジェクト(一や○など)に図13のような操作コマンド定義データを対応付けておく。
図31において、操作コマンドの候補以外の文字列候補である「○」551、「∞」552、「0」553、「00」554は囲み線(手書きオブジェクト11b)の認識結果である。ユーザーが操作コマンドでなく文字列を入力するつもりであった場合は文字列候補を選択できる。
<角度情報の入力例>
次に、図32を用いて角度情報の入力方法を説明する。図32は、角度情報の入力方法を説明する図の一例である。図32では表示装置2の3時の方向に存在するユーザーが角度情報を入力する場合を説明する。3時の方向から手書きされた文字等は時計回りに90度回転されると正しく認識されるので、90度の角度情報が入力されるとよい。
図32(a)は、ペンID制御データの角度情報が0度(初期値)の状態で、表示装置2の3時の方向に存在するユーザーが「ぎ」を手書きしたため、操作ガイド500が表示された状態を示す。表示装置2は3時の方向から手書きした「ぎ」を、角度情報が0度のまま文字認識するため、期待とは違う選択可能候補530が表示されている。
角度情報を入力する場合、ユーザーは操作ガイド500内に、ユーザーから見て上から下方向に直線を手書きする。図32(b)はこの直線521の一例を示す。角度情報が0度である6時の方向とこの直線521との反時計回りのなす角αが角度情報である。すなわち、始点Sから6時の方向に下ろした直線522と、ユーザーが入力した直線521の反時計回りのなす角αが角度情報である。簡単には、直線521の終点方向が角度情報である。従って、図32(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は、所定範囲から直線を検出し、所定範囲外に手書きされたストロークデータをテキストデータに変換する。
図32(c)は、図32(b)の操作直後の操作ガイド500を示す。ペンID制御データには角度情報(Angle)として90度が設定されたので、手書きオブジェクト(ストロークデータ)が内部的に90度だけ時計回りに回転して手書き認識され、操作ガイド500は90度だけ反時計回りに回転して表示されている。なお、角度情報はメニューからユーザーが手動で入力してもよい。
<手書きサインデータの登録例>
次に、図33を用いて手書きサインデータの登録例を説明する。図33は手書きサインデータの登録方法を説明する図である。まず、図33(a)は「サイン」とユーザーが手書きした場合に表示される選択可能候補530の一例である。「サイン」という文字列と部分一致する、操作コマンド定義データ713,715に基づく「手書きサイン登録する」と「手書きサインアウトする」の二つの操作コマンド513,514と、「サイン」「サイン会」「サイン入り」の文字列候補が表示されている。2つの操作コマンド513,514が表示されたのは、図11の操作コマンド定義データ713,715のStringが「サイン」を有するためである。
ユーザーがペン2500で「手書きサイン登録する」を押下すると、手書き入力保存部25に図33(b)の手書きサイン登録フォーム561が追加され、画面に表示される。例えば、図33(a)の操作ガイド500が消去され、操作ガイド500と同じ場所に手書きサイン登録フォーム561が表示される。手書きサイン登録フォーム561は上段から、名前入力欄561a、サイン入力欄561b~561d、及び、登録確定欄561eを有する。ユーザーは、名前入力欄561aに名前のテキスト、サイン入力欄561b~561dに1回目の手書きサイン、2回目の手書きサイン、3回目の手書きサイン、登録確定欄561eにチェックマーク又は取消マークを入力する。名前のテキストはこのユーザーの表示名であり、テキストデータに変換される。手書きサインが3回も入力されるのは、手書きサインはユーザーが書くたびに異なり完全一致しない前提で特徴量を登録しておくためである。
なお、手書きサインは一般にはユーザー名等、ユーザーに関する文字等であり、ユーザー名の他、社員番号などの数字、ニックネーム、似顔絵などでもよい。また、手書きサインはユーザーに関する文字等に限られず、何らかの手書きオブジェクトであればよい。例えば、丸、三角形、四角形、記号やその組み合わせでもよい。手書きサインは、座標だけが特徴データとなるわけではないので、同姓のユーザー(例えば、鈴木さん)がどちらも「すずき」という手書きサインを登録しても正しく認証できる。
手書きサイン登録フォーム561にユーザーが指示通りに手書きをすると、図33(c)に示す手書きサイン登録フォーム561となる。登録確定欄561eに「チェックマーク」をユーザーが手書きすると手書きサインデータが手書きサインデータ保存部39に登録され手書きサイン登録フォーム561は削除される。登録によりSignatureIdが採番され、同様に採番されたAccountIdと名前入力欄561aに名前のテキストがSignatureIdに対応付けてユーザー定義データに登録される。ユーザーがユーザー名等を手書きしてサインインすると、ユーザー定義データでAccountIdに対応付けられたSignatureIdが取得され手書きサインインに使用したペン2500のペンIDに対応づけてペンID制御データに登録される。以降は、ユーザーがペン2500を使用すればペンIDが表示装置2に送信され、ペンID制御データでペンIDに対応付けられたAccountIdを特定でき、ユーザーが意識しなくてもユーザー定義データを使用した操作コマンドの実行が可能になる。
登録確定欄561eに「×」をユーザーが手書きすると手書きサイン登録は取り消され手書きサイン登録フォーム561は削除される。なお、登録に関して何らかのエラーが発生した場合、画面のシステム予約領域などにその旨が表示される。
このように、手書き入力表示制御部23はフォームへの手書き入力とフォーム以外の手書き入力を区別せずに手書き入力を受け付けることができる。
<手書きよるサインインの一例>
次に、図34を用いて、手書きサインデータの登録後に、ユーザーがサインインする方法を説明する。図34は、ユーザーが登録した手書きサインデータである「すずき」と手書きした場合に表示される操作ガイド500の一例である。「すずき」が手書きサインデータとして操作コマンド定義部33に登録されているので、「すずき」が手書きサインデータと適合する。このため、「手書きサインインする」という操作コマンド512が表示されている。
また、手書きサインデータが適合したので「すずき」を表すSignatureIdが特定され、このSignatureIdに対応付けられているAccountIdを有するユーザー定義データが特定される。
ユーザーが「手書きサインインする」という操作コマンド512を選択すると、使用しているペン2500のペンIDに「すずき」のAccountIdを対応付けてペンID制御データに追加される。また、「すずき」のユーザー定義データが操作コマンドの使用時に使用されるようになる。
図34の手書きサイン登録フォーム561を用いた手書きサインデータの登録は、文字等の通常の手書き入力の一環として制御されるので、手書きサイン登録フォーム561は文字等が手書きされる操作画面と同じ操作画面に表示される。手書きサイン登録フォーム561の内外の手書き操作に違いはなく、ユーザーは手書きサイン登録フォーム561の罫線で区切られた領域に手書き入力するだけで手書きサイン登録フォーム561への入力を完了させることができる。
<ユーザー定義データの変更操作例>
次に、図35を用いて、ユーザー定義データの変更方法を説明する。図35は、ユーザー定義データの変更方法を説明する図である。図35(a)は、ユーザーが「せ」と手書きした時に表示される操作ガイド500の一例である。図11に示した操作コマンド定義データ716はStringに「設定」が定義されており、「せ」の予測文字列に「設定」があったため、「設定変更する」という操作コマンドが表示された。
ユーザーが、手書きでサインインしたペン2500で「設定変更する」を選択すると、ペンID制御データでこのペン2500のペンIDに対応付けられているユーザーのAccountIdが特定される。これにより、サインインしたユーザーのユーザー定義データが特定され、図35(b)のユーザー定義データ変更フォーム562が手書き入力保存部25に追加され、画面に表示される。図35の例では、図14のユーザー定義データ718に従ってユーザー定義データ変更フォーム562が作成される。ユーザー定義データ変更フォーム562は名前欄562a、パスワード欄562b、フォルダーユーザー名欄562c、フォルダーパスワード欄562d、フォルダーファイル名欄562e、及び、登録又は取消欄562fを有する。
なお、予めユーザーが手書きでサインインしていないと表示装置2はユーザーのAccountIdを特定できないのでエラーとなり、画面のシステム予約領域などにエラーメッセージが表示される。
図35(b)のユーザー定義データ変更フォーム562の、パスワード欄562bにパスワードをユーザーが手書きする。フォルダーユーザー名欄562cにフォルダーユーザー名をユーザーが手書きする。フォルダーパスワード欄562dにフォルダーパスワードをユーザーが手書きする。フォルダーファイル名欄562eにフォルダーファイル名をユーザーが手書きする。登録又は取消欄562fに「チェックマーク」又は「×」をユーザーが手書きする。これにより、ユーザー定義データの変更が実行され、ユーザー定義データ変更フォーム562は削除される。
このように、ユーザーはユーザー定義データ変更フォーム562を呼び出すストロークデータを手書きすることで、ユーザー定義データ変更フォーム562を表示させ、ユーザー定義データを任意に変更できる。手書き入力表示制御部23はフォームへの手書き入力とフォーム以外の手書き入力を区別せずに手書き入力を受け付ける。
なお、名前欄562aには、ユーザー定義データが有するAccountUsernameが自動で表示される。また、ユーザー定義データ変更フォーム562は変更だけでなく登録にも使用可能である。
図35のユーザー定義データ変更フォーム562を用いたユーザー定義データの変更は、文字等の通常の手書き入力の一環として制御されるので、ユーザー定義データ変更フォーム562は文字等が手書きされる操作画面と同じ操作画面に表示される。ユーザー定義データ変更フォーム562の内外の手書き操作に違いはなく、ユーザーはユーザー定義データ変更フォーム562の罫線で区切られた領域に手書き入力するだけでユーザー定義データ変更フォーム562への入力を完了させることができる。
<操作メニューの表示例>
続いて、図36を用いて表示位置に応じたデータ処理に関する情報を有する操作メニューについて説明する。図36は平置きされた表示装置2の上面図である。図36では図面の上側と下側にそれぞれユーザー250,251が存在して、二人のユーザーが下側と上側の二方向から同時に操作メニュー301,302を操作できる。ただし、ユーザーは一人でも支障はない。表示装置2は操作ボタン定義データに応じて操作メニューを表示する。操作メニューの数は想定されているユーザーの数と同じになる。
各操作メニュー301,302は、操作メニューの表示位置に応じたデータ処理に関する情報を有している。本実施形態では操作メニューの表示位置に応じた回転角度を有している。操作メニュー301,302のデザイン(アイコンの外観)は同じだが、操作メニューの表示位置に応じたデータ処理に関する情報を有する。
1つの操作メニュー301、302は、ユーザーがペン種選択やペン操作を行うペン操作パネル2001、2008、ユーザーがページ操作を行うページ操作パネル2002、2009、ユーザーがファイル名又はページの一覧表示を操作するページナビ操作パネル2003、2010、及び、ファイル名又はページ名の一覧表示からページ切り替えをするページナビ2004、2011を有している。それぞれ、ユーザーが使いやすいように、下側のユーザー用の操作メニュー301は画面下寄せ(ディスプレー220の下の縁に沿って配置され)、上側のユーザー用は画面上寄せ(ディスプレー220の上の縁に沿って配置され)に配置される。
下側のユーザー用の操作メニュー301は、ペン操作パネル2001、ページ操作パネル2002、ページナビ操作パネル2003、及び、ページナビ2004を有している。ページナビ2004はページナビウィンドウ領域2005を上から下方向に伸びていく。ページナビウィンドウ領域2005を単にページナビウィンドウと呼ぶ場合がある。
同様に、上側のユーザー用の操作メニュー302は、ペン操作パネル2008、ページ操作パネル2009、ページナビ操作パネル2010、及び、ページナビ2011を有している。ページナビ2011はページナビウィンドウ領域2012を上側のユーザーから見て上から下方向に伸びていく。
ディスプレー220の中央付近には、手書きオブジェクトや文字列オブジェクトが表示されている。手書きオブジェクト2006は下側のユーザーが黒ペン(ベタ黒)で書いたものである。文字列オブジェクト2007は下側のユーザーが黒ペンで書いて認識された文字列である。手書きオブジェクト2013は上側のユーザーが青ペン(ベタ白+黒縁)で書いた手書きデータである。
ペン操作パネル2001、2008、ページ操作パネル2002、2009、ページナビ操作パネル2003、2010、ページナビ2004、2011は、下側のユーザー用と上側のユーザー用の2つある。このうち、操作メニュー302に含まれる、上側のユーザー用のアイコン(ボタン)、ファイル名、及び、ページ名は180度回転した状態で表示される。この回転角度は予め操作ボタン定義データ(後述する)に設定されている。
操作メニュー301,302のボタン領域、ページナビ2004、2011のファイル名又はページ名のいずれかをユーザーがペン2500で押下すると、表示装置2は操作ボタン定義データに設定された回転角度をそのペン2500のペンID制御データに保存する。この回転角度がデータ処理に関する情報となる。
<<ペン操作パネル>>
図37は、ペン操作パネル2001,2008を拡大して示す図である。ペン操作パネル2001,2008はユーザーが色などを選択するためのボタンを有している。ボタン2101~2108は不透明の黒、赤、青、緑色の細ペン又は太ペンを表し、ボタン2109、2110は透過色としてマゼンタ、シアン色の太ペンを表す。
ボタン2111、2112はアンドゥー(元に戻す)/リドゥー(やり直す)を表す。ボタン2113はページ消去を表し、ボタン2114はページスウィープ(高速描画モードで劣化した画面を一掃して再表示するボタン)を表す。ボタン2115は文字列候補539の表示のオン又はオフを受け付ける(ペンID制御データの手書き認識候補オフ状態(RecommendMenuOff)の設定を受け付けるボタン)。
図40~図43の操作ボタン定義データに示すように、各ボタンにはボタンの識別子(ButtonId)、ボタンの表示位置(Position)、ボタンのアイコン画像(Icon)、ボタンの回転角度(Angle)、及び、押下時に表示装置2が実行するコマンド(Command)が定義されている。ユーザーがペン2500でボタン2101~2115を押下すると、表示装置2はそのボタンに定義された回転角度をそのペン2500のペンID制御データに保存し、そのボタンに定義されたコマンドを実行する。なお、ボタン2101~2115は左から順番に操作ボタン定義データのButtonId=1~15に対応しているものとする。
ボタン2101~2110に対応する操作ボタン定義データ2401~2410のコマンドは、図11の操作コマンド定義データ709~711、720~726と同じChangePenコマンドに、カラー定義データのColorIdを指定する。表示部22は最後に選択されたペンのボタンには枠260を表示して選択されたことがわかるようにする。図37では、ボタン2101の黒色の細ペンが選択されている。
ボタン2111、2112に対応する操作ボタン定義データ2411,2412はUndo/Redoのコマンドを定義する。ボタン2111、2112(アンドゥー/リドゥー)はそれぞれUndo/Redoのコマンドの実行を受け付ける。Undoは一つ前の操作状態に戻すコマンド、RedoはUndoされた操作状態を一つ先に進めるコマンドである。
ボタン2113に対応する操作ボタン定義データ2413はEragePageのコマンドを定義する。ボタン2113(ページ消去)はEragePageのコマンドの実行を受け付ける。EragePageは現在ページに入力されたすべてのデータを消去して再表示する。
ボタン2114に対応する操作ボタン定義データ2414はSweepPageのコマンドを定義する。ボタン2114(スウィープボタン)はSweepPageのコマンドの実行を受け付ける。電子ペーパー等のディスプレイデバイスでは、高速描画モードでは消え残りが発生する。これを再表示して一掃する。
ボタン2115に対応する操作ボタン定義データ2415はToggleRecommendMenuのコマンドを定義する。ボタン2115(手書き認識候補オンオフ)はToggleRecommendMenuのコマンドの実行を受け付ける。ToggleRecommendMenuは手書き認識で得た文字列候補539の表示のオン及びオフを切り替える。この結果、オフ状態になった場合は、押下したペン2500のペンID制御データにRecommendMenuOff="True"が追加される。文字列候補539の表示がオンの状態では、文字列候補539がすべて表示されるが、オフの状態では、操作コマンドだけが表示される。操作コマンドがなければ選択可能候補全体が表示されないため、ユーザーが手書きに集中できるようになる。表示装置2がToggleRecommendMenuを実行すると、現在のオンオフ状態を返却するため、その状態に応じてアイコンを切り替える。
なお、ボタン2101~2110は図21のペン色選択ボタン81~86とは別のボタンを定義しており、ペン色選択ボタン81~86によりColorIdが重複して設定され得るので、その場合はボタン2101~2110の押下結果が優先してペンID制御データに設定される。
<<ページ操作パネル>>
図38はページ操作パネル2002,2009の一例を示す。ページ操作パネル2002,2009はページの操作に関する操作メニューである。ボタン2201はユーザーが表示中のページを90度ずつ回転させるためのボタンである。ボタン2202、2204はそれぞれ前のページ又は次のページにユーザーが切り替えるためのボタンである。現在ページ2203は現在ページ番号(分子)と総ページ数(分母)を表す。ボタン2205はユーザーがページナビウィンドウを開く又は閉じるためのボタンである。ファイル名2206は現在表示中のファイル名を表す。ボタン2201、2202、2203、2205は操作ボタン定義データ2416~2419、2440~2443に定義されている。
ボタン2201(ページの回転表示)はRotatePageのコマンドの実行を受け付ける。RotatePageは図36に示した下側のユーザーの手書きオブジェクト2006と文字列オブジェクト2007、及び、上側のユーザーの手書きオブジェクト2013のみを反時計回り方向に90度回転して表示する。ページナビを含め操作メニューは回転しない。つまり、図36の例では下側のユーザーからみて上側のユーザーの手書きオブジェクト2013は上下逆さで読みにくいので、RotatePageコマンドの実行により表示装置2が一時的にページを回転して読みやすくする。
ボタン2202、2204(ページ切り替え)はPageBack又はPageNextのコマンドの実行を受け付ける。PageBack又はPageNextは現在ページを前のページ、又は、次のページの表示に切り替える。
ボタン2205(ページナビウィンドウを開く又は閉じる)はTogglePageNaviのコマンドの実行を受け付ける。TogglePageNaviのコマンドは図36のページナビウィンドウ領域2005、2012を開く又は閉じる。
現在ページ2203、ファイル名2206は表示のみで操作を受け付けない。現在ページ2203は現在ページ番号(分子)、総ページ数(分母)を表示する。この例では4ページのファイルの2ページ目を表示している。ファイル名2206は現在表示中のファイル名を表示する。この例では「技術検討会議.pdf」を表示している。
<<ページナビ操作パネル>>
図39はページナビ操作パネル2003、2010の一例を示す。ページナビ操作パネル2003、2010は、各ファイルごとにページ名をページ順に表示する。つまり、ページ名が文字列オブジェクトから選択された場合、どのページにどのようなことが記述されているかを後からユーザーが特定しやすい。
ボタン2301、2305はそれぞれ前のページナビウィンドウ又は次のページナビウィンドウにユーザーが切り替えるためのボタンである。ボタン2302、2304はそれぞれ前のファイル又は次のファイルにユーザーが切り替えるためのボタンである(切り替え後のファイルの先頭ページがディスプレー220に表示される)。現在ページナビ2303はページナビウィンドウの現在番号(分子)と総数(分母)を表示する。ボタン2301、2302、2304、2305は操作ボタン定義データ2420~2423、2444~2447に定義されている。
ページナビ2306はファイル順かつページ順に文字列を表示する。読み込まれた複数のファイルのファイル名とファイルの中の複数のページ名をツリー型で表示し、ファイル名又はページ名が押下されたら表示装置2がそのページをディスプレー220に表示する。例えば、ページナビが200行、ページナビウィンドウ行数が50行の場合、現在ページ2203の現在番号は1~4の値をとることができ、総数は4となる。表示装置2は、ボタン2301をユーザーが押下すると現在番号をデクリメントし、ボタン2305を押下すると現在番号をインクリメントしてページナビウィンドウを再表示する。ページナビ2306はユーザーが使いやすように、下側のユーザー用はディスプレー220の下寄せに、上側のユーザー用はディスプレー220の上寄せに配置される。
図39のページナビ2306では、2つのファイル名2310、2308が表示されており、各ファイルに各ページのページ名2307、2309がツリー状に表示されている。ページ名はユーザーが指定した文字列オブジェクト又は自動的に抽出された文字列である。ページ名はユーザーの操作によりインデントして表示される。
ボタン2301、2305(ページナビウィンドウ切り替え)は、PageNaviWinBack/PageNaviWinNextのコマンドの実行を受け付ける。PageNaviWinBack/PageNaviWinNextは現在のページナビウィンドウを前の又は次のページナビウィンドウに切り替える。ページナビウィンドウ内に表示できる行数を50行とした場合、ボタン2301、2305の押下により50行文のページナビウィンドウを切り替えて表示できる。
ボタン2302、2304(ファイル切り替え)は、PageNaviFileBack/PageNaviFileNextのコマンドの実行を受け付ける。PageNaviFileBack/PageNaviFileNextは、現在表示中のページを前の又は次のファイルの先頭ページに切り替える。
ページナビ2306は図44のページナビデータにより定義されている。ツリー開き中アイコン2311は下向きの三角形でツリーが表示中であることを意味している。ツリー閉じ中アイコン2312は横向きの三角形でツリーが閉じ中であることを意味している。ツリーが閉じると、ツリーがある行よりレベルが低い下方の行のページ名が表示されなくなる。
ページナビデータのTreeが"Opened"の場合、表示装置2はツリー開き中アイコン2311を表示し、押下するとTreeを"Closed"に変更してツリーを閉じる。逆にTree="Closed"の場合、表示装置2はツリー閉じ中アイコン2312を表示し、ユーザーが押下するとTree="Opened"に変更してツリーを開く。
ページ名2313はインデントされたページを示す。インデントのレベルはページナビデータのLevelで制御される。ファイル名はLevel="0"、ページ名はLevel="1"を初期値とする。ユーザーがファイル名又はページ名を押下して右へインデントするとインデントレベルのLevelの値が大きくなる。ページ名2313はLevel="2"のインデントを示す。Levelを変更するには、ユーザーはページ名を長押しして左右に動かす。例えば、ユーザーが右に動かした時、表示装置2は現在行から上方に同じLevel(動かす前のLevel)を探して、上方の行にTree="Opened"を追加する。インデントされた行は表示しないことが可能になり、インデントされた行の表示又は非表示は、インデントされる前の自分と同じLevelの行のTreeで制御される。また、表示装置2はインデントされた行のLevelをインクリメントして再表示する。
ページ名2314は白紙ページであることを示し、ファイルの最終ページ(ページ名2313)の次の白紙ページを示す。白紙ページはまだ何も手書きされていないという意味である。白紙ページは最大ページ番号まで続いているが、ページナビに表示される「白紙ページ」は先頭の白紙ページだけである。例えば、最大ページ番号が100ページで、ファイルに4ページある場合、5~100ページは白紙ページだが先頭の5ページ目だけが「白紙ページ」としてページナビ2306に表示される。
ページ名2315は現在ディスプレー220に表示中のページである。ここではページ名2315が枠262で囲って強調されている。
ページ名2316はデフォルトのページ名である。手書きのみで手書き認識した文字列がない場合は、このように表示装置2がページ名に「nnnnページ」(nnnnは整数)をつけて表示する。ページ名2316のデフォルトのページ名、ページ名2314の白紙ページ、ファイル名2310、2308を除くページ名には手書き認識した文字列があることが示す。
後述するページナビデータにおいて、AutoName="True"の場合、表示装置2は手書き認識した文字列があれば自動的にページ名に設定する。図36の画面レイアウト例では「ハードウェア構成」という文字列が自動的にページ名となっている。手書き認識した文字列からページ名を決定するロジックは様々なものが考えられる。例えば、文字列が入力された時刻順に文字列を結合して先頭の固定文字数を切り出す方法や、文字列の位置の優先順位を決定して優先順位の高いほうから順に文字列を結合し先頭の固定文字数を切り出す方法などが考えられる。
図30、図31の操作コマンドの表示例で示したように、すでに手書き認識されている確定オブジェクトを囲み線、跨ぎ線で選択すると、操作コマンドに「ページ名に設定」が表示される。これが選択されるとSetPageNameのコマンドが実行される。SetPageNameは、ページナビ2306の現在ページ名を選択した文字列に変更し、ページナビデータのAutoNameを"False"に変更する。
ページナビ操作パネル2003、2010のファイル名又はページ名がペン2500で選択された場合も、ペンID制御データには「Angle」が設定される。このAngleは、ページナビウィンドウ領域を回転させた角度である。表示装置2は表示のために操作ボタン定義データから取得したページナビウィンドウ領域を回転させた角度(Angle)を保存しておく。表示装置2は、ファイル名又はページ名がペン2500で選択された場合、記憶しておいた回転角度をペンID制御データの「Angle」に設定する。以降は、ペンID制御データに設定されたAngleでデータ処理する。
<操作ボタン定義データ>
図40~図43は操作ボタン定義データ2401~2448の一例を示す。操作ボタン定義データ2401~2448はペン操作パネル2001,2008、ページ操作パネル2002,2009、及び、ページナビ操作パネル2003、2010のボタンについて定義する。操作ボタン定義データの1行が1つのボタンを定義する。また、図40、図41が下側のユーザー用の操作メニュー301を定義し、図42、図43が上側のユーザー用の操作メニュー302を定義する。
各操作ボタン定義データ2401~2448はボタン識別子(ButtonId)、ボタンの表示位置(Position)、ボタンのアイコン画像(Icon)、データ処理に関する情報となる角度(Angle)、及び、ボタンの押下時に表示装置2が実行するコマンド(Command)を定義する。角度(Angle)はユーザーの操作位置や操作メニュー302の回転角度も表している。ユーザーがペン2500でボタン2101~2115、2201、2202、2203、2205、2301、2302、2304、2305を押下する。これにより、表示装置2はそのボタンに定義された角度(Angle)をそのペンのペンID制御データに保存し、そのボタンに定義されたコマンドを実行する。
このように、操作メニューは操作メニューの表示位置に応じたデータ処理と関連付けられている。図40~図43では表示位置に応じて文字列オブジェクトが回転する例になっているが、上側ユーザー用の操作メニュー301と上側のユーザー用の操作メニュー302の同じボタンでCommandを変更すれば、種々のデータ処理が可能になる。
操作ボタン定義データ2401~2415は下側のユーザー用のペン操作パネル2001を定義し、操作ボタン定義データ2416~2419が下側のユーザー用のページ操作パネル2002を定義する。操作ボタン定義データ2420~2424が下側のユーザー用のページナビ操作パネル2003を定義し、操作ボタン定義データ2425~2439が上側のユーザー用のペン操作パネル2008を定義する。操作ボタン定義データ2440~2443は上側のユーザー用のページ操作パネル2009を定義し、操作ボタン定義データ2444~2448が上側のユーザー用のページナビ操作パネル2010、を定義する。
操作ボタン定義データ2415、2439は手書き認識候補の現在のオンオフ状態を示す必要があるため、オン用のアイコン画像(IconOn)とオフ用のアイコン画像(IconOff)を定義する。操作ボタン定義データ2419、2443はページナビウィンドウを開くボタン又は閉じるボタンを表す必要があるため、オン用のアイコン画像(IconOn)とオフ用のアイコン画像(IconOff)を定義する。表示装置2はCommandの実行結果の返却値をみてオン用/オフ用のアイコン画像を表示する。
操作ボタン定義データ2424、2448はページナビウィンドウ領域の定義データであり、矩形領域のPositionと角度(Angle)だけを定義する。ユーザーがこれらの矩形領域をペン2500で押下すると、表示装置2はそこに定義された角度(Angle)を押下に使用されたペン2500のペンID制御データに保存する。
<ページナビデータ>
図44はページナビデータの一例を示す。ページナビデータはページナビウィンドウ領域2005、2012の表示内容を定義する。ページナビデータは1行がページナビの1行を定義する。ページナビデータはファイル名(FileName)、ページ番号(Page)、インデントレベル(Level)、ページ名(PageName)、自動名(AutoName)、ツリー状態(Tree)、及び、現在ページ(CurrentPage)を定義する。Page="0"かつLevel="0"はファイル名である。Levelが増えるとページナビ上のページ名が右にインデントしていく。
デフォルトはPageName="nnnnページ"(nnnnはページ番号)又は"白紙ページ"、AutoName="True"、Tree="Opened"である。AutoName="True"の場合、表示装置2は手書き認識した文字列をPageNameに自動的に設定する。ユーザーが手書き認識した確定オブジェクトを指定して操作コマンドから「ページ名に設定」を選択すると、ページ名がその確定オブジェクトに変更されAutoName="False"となる。つまり、ユーザーの設定するページ名が優先される。「Tree」はTree="Opened"で当該行よりも下方で当該行よりもLevelが1つ小さい行のページ名を全てツリー表示し、Tree="Closed"でツリー表示しない(当該行のページ名のみ表示)設定である。ページ名が表示された場合は、表示されたページ名について同じ処理を繰り返す。このため、表示装置2は次行に当該行より大きいLevelがある場合、当該行のTreeに"Opened"を設定する。CurrentPageは現在ディスプレー220に表示中のページを示す。
<動作手順>
以上の構成と図45~図53を用いて、表示装置2の動作について説明する。図45~図53は表示装置2が文字列候補と操作コマンドの候補を表示する処理を説明する一例のシーケンス図である。図45の処理は、表示装置2が起動すると(アプリケーションが起動すると)スタートする。なお、図45~図53ではスペースの都合上、符号で図6の機能を示した。
また、画面上のペン座標は、図24の領域A~Cで説明したように、ペン座標ごとに手書き認識、選択可能候補表示、ストローク表示、ダイアログ制御、又は、UI操作のそれぞれの有効/無効が定義されている。この定義に従って制御シーケンスが実行される。本実施形態ではマスク表示タイマー制御部40に関する処理に着目されたい。
手書きデータの入力を開始する前に、ユーザーはペン操作パネル2001、2008のボタン2101~2110を選択済みである(PenIdが特定されている)。従って、
a.操作ボタン定義データでペンボタンID、ColorId及びAngleが特定され、
b.ペンID制御データにはPenId、ColorId及びAngleが登録されている。
・UI操作無効時(領域A、C)はステップS1が実行される。
S1:まず、手書き入力表示制御部23が手書きオブジェクト開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト領域(手書きオブジェクトを保存するメモリー領域)を確保する。ユーザーがペンを手書き入力部21に接触させてから手書きオブジェクト領域を確保してもよい。
S2:次にユーザーが手書き入力部21にペンを接触させる。手書き入力部21はペンダウンを検出して手書き入力表示制御部23に送信する。
・UI操作無効時(領域A、C)はステップS3~S50が実行される。
S3:手書き入力表示制御部23は手書き入力保存部25にストローク開始を送信し、手書き入力保存部25はストローク領域を確保する。
S4:ユーザーがペンを手書き入力部21に接触させたまま移動させると、手書き入力部21はペン座標を手書き入力表示制御部23に送信する。
S5:手書き入力表示制御部23は座標の入力と同時にペン2500から受信したペンIDを指定して、ペンID制御データ保存部36に保存されている現在のペンID制御データを取得する。ペンIDは座標の入力時に送信されるので、ストロークとペンIDが対応付けられる。ペンID制御データ保存部36はペンID制御データを手書き入力表示制御部23に送信する。なお、ユーザーがサインインしていないのでAccountIdはない。
・ストローク表示有効時(領域A、又は、領域CでForceForDialog)はステップS6が実行される。
S6:手書き入力表示制御部23はペン座標補完表示データ(離散的なペン座標を補間するデータ)を表示部22に送信する。表示部22はペン座標補完表示データでペン座標を補間し、ColorIdに基づいてカラー定義データから線種と太さを特定してストロークを表示する。
S7:手書き入力表示制御部23はペン座標、その受信時刻、ColorId及び角度情報を手書き入力保存部25に送信する。手書き入力保存部25はペン座標をストロークに追加する。ユーザーがペンを動かしている間は、手書き入力部21は定期的に手書き入力表示制御部23へのペン座標の送信を繰り返すため、ステップS4~S7の処理がペンアップされるまで繰り返される。
S8:ユーザーが手書き入力部21からペンを離すと、手書き入力部21はペンアップを手書き入力表示制御部23に送信する。
S9:手書き入力表示制御部23は手書き入力保存部25にストローク終了を送信し、手書き入力保存部25はストロークのペン座標を確定させる。ストロークのペン座標の確定により以降はストロークにペン座標を追加できなくなる。
S10:次に、手書き入力表示制御部23は手書きオブジェクト近傍矩形領域403に基づいて、手書きオブジェクト近傍矩形領域とストローク矩形領域の重なり状況取得を手書き入力保存部25に送信する。手書き入力保存部25は重なり状況を計算して重なり状況を手書き入力表示制御部23に送信する。
続く、ステップS11~S17は、手書きオブジェクト近傍矩形領域とストローク矩形領域が重なっていない場合に実行される。
S11:手書きオブジェクト近傍矩形領域とストローク矩形領域が重なっていない場合、1つの手書きオブジェクトが確定するので、手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S12~S14:手書き認識制御部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の位置情報は後述するステップS67で手書き認識制御部26に送信される。
S20:操作ガイド500内の直線が検出された場合、直線の始点から6時の方向に下ろした直線522と、ユーザーが入力した直線521の反時計回りのなす角αを、45度単位で決定する。そして、手書き認識制御部26は、決定した角度情報を直線521のストロークデータが有するペンIDに対応付けてペンID制御データ保存部36に保存する。なお、ステップS20は操作ガイド500内で直線が検出された場合に実行される。従って、ペン操作パネル2001,2008のボタン2101~2115の押下で決まったAngleに優先して別のAngleを設定することもできる。
S20-2:手書き認識制御部26は選択可能な候補表示矩形をクリアする。
S21:次に、手書き認識制御部26は、手書き入力部21から受信したペンIDを指定して、ペンID制御データ保存部36から現在のペンID制御データの角度情報を取得する。
S22:手書き認識制御部26は、ストロークデータ保持領域のストロークデータを取得した角度情報で時計回りに回転する。このように表示位置に応じたデータ処理に関する情報に応じてストロークデータを回転して文字認識できる。
S23:手書き認識制御部26は、手書きサイン認証制御部38に回転後のストロークデータを送信する。このようにストロークデータが手書きサインかどうかは不明な状態で常に手書きサイン認証制御部38に送信する。
S24:手書きサイン認証制御部38はストロークデータを受信し、手書きサインデータ保存部39から登録済みの手書きサインデータを受信する。そして、ストロークデータと手書きサインデータの比較(マッチング)を行い、後段のステップS61で手書きサインの認証結果を取得できるように手書きサインの認証結果を保持しておく。認証成功の場合はAccountIdがペンID制御データに登録される。
S25:次に、手書き認識制御部26はストロークデータに手書き認識を実行し、フォームの登録又は取消欄の「チェックマーク」又は「×」である場合はフォームの処理を行い、そうでない場合は通常の手書き認識の処理を行う。
S26:手書きサインデータ登録フォームの登録又は取消欄内が「チェックマーク」であった場合を説明する。この場合、後述するステップS100で手書き入力表示制御部23が手書き入力保存部25に対し生成した手書きサイン登録フォームに対し、ユーザーが入力した手書きサインデータ(ストロークデータ)を、手書き認識制御部26が手書きサイン認証制御部38に送信する。
S27:手書きサイン認証制御部38は受信した手書きサインデータ(ストロークデータ)を手書きサインデータ保存部39に登録する。これにより、SignatureIdが採番される。SignatureIdは手書き認識制御部26に返却される。手書き認識制御部26はSignatureId及び手書きサイン登録フォーム561の名前入力欄561aに入力された名前がユーザー定義データにない場合、ユーザー定義データを新規に追加する。また、手書き認識制御部26はAccountIdを採番し、そのユーザー定義データにSignatureIdを保存する。名前入力欄561aに入力された名前がユーザー定義データにある場合は、そのユーザー定義データにSignatureIdを保存する。この処理によってAccountIdとSignatureIdは紐づけられる。なお、ユーザー定義データを新規に追加した場合はその他の値が設定されていないが、ユーザー定義データ変更フォーム562からユーザーが登録及び変更可能である。
S28:手書きサインデータの登録により、手書き認識制御部26は手書きサイン登録フォーム561を手書き入力保存部25から削除する。
S29:ユーザー定義データ変更フォームの登録又は取消欄内が「チェックマーク」であった場合を説明する。この場合、後述するステップS100で手書き入力表示制御部23が手書き入力保存部25に生成したユーザー定義データ変更フォーム562に入力された変更値を、手書き認識制御部26が操作コマンド定義部33に送信する。
S30:ユーザー定義データの変更の実行により、手書き認識制御部26はユーザー定義データ変更フォーム562を手書き入力保存部25から削除する。
S31:後述するステップS100で追加したフォームの登録又は取消欄内が「×」であった場合、手書き認識制御部26はステップS100で追加したフォームを手書き入力保存部25から削除する。
S33:フォーム処理でなかった場合、手書き認識制御部26はユーザーが手書きした手書き認識文字列候補を手書き認識辞書部27に送信する。手書き認識辞書部27は言語的に確からしい言語文字列候補を手書き認識制御部26に送信する。
なお、現在ペンID制御データに「RecommendMenuOff="True"」が設定されており、更に、操作コマンドも表示しない設定である場合、手書き認識制御部26はステップS33~S47の認識に関する制御を行わない。こうすることで、処理負荷を低減できる。
S34:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を文字列変換制御部28に送信する。
S35:文字列変換制御部28は手書き認識文字列候補及び言語文字列候補を文字列変換辞書部29に送信する。文字列変換辞書部29は変換文字列候補を文字列変換制御部28に送信する。
S36:文字列変換制御部28は受信した変換文字列候補を予測変換制御部30に送信する。
S37:予測変換制御部30は受信した変換文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S38:予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S39:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
以降ステップS40~S47の操作コマンドの候補の送信まで同様に処理を行う。
S40:文字列変換制御部28は受信した変換文字列候補を操作コマンド認識制御部32に送信する。
S41:操作コマンド認識制御部32は受信した変換文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は変換文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S42:手書き認識制御部26は手書き認識文字列候補及び言語文字列候補を予測変換制御部30に送信する。
S43:予測変換制御部30は手書き認識文字列候補及び受信した言語文字列候補を予測変換辞書部31に送信する。予測変換辞書部31は予測文字列候補を予測変換制御部30に送信する。
S44:予測変換制御部30は受信した予測文字列候補を操作コマンド認識制御部32に送信する。
S45:操作コマンド認識制御部32は受信した予測文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は予測文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S46:手書き認識制御部26は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド認識制御部32に送信する。
S47:操作コマンド認識制御部32は手書き認識文字列候補及び受信した言語文字列候補を操作コマンド定義部33に送信する。操作コマンド定義部33は操作コマンドの候補を操作コマンド認識制御部32に送信する。これにより、操作コマンド認識制御部32は言語文字列候補と一致する文字列(String)を有する操作コマンド定義データに対応する操作コマンドの候補を取得できる。
S48:次に手書き認識制御部26はストローク追加を操作コマンド認識制御部32に送信する。
S49:操作コマンド認識制御部32は確定オブジェクトの位置情報取得を手書き入力保存部25に送信する。手書き入力保存部25は確定オブジェクトの位置情報を操作コマンド認識制御部32に送信する。
S50:操作コマンド認識制御部32は選択オブジェクトを判定する。すなわち、ステップS48のストローク追加で手書き認識制御部26から受信したストロークの位置情報と、手書き入力保存部25から受信した確定オブジェクトの位置情報が所定の関係にあるか否かを跨ぎ線判定条件406及び囲み線判定条件407に基づいて判定する。操作コマンド認識制御部32は、選択されていると判定できる確定オブジェクトを選択オブジェクトとして保存しておく。また、この場合、選択オブジェクトが特定されるので選択オブジェクトがある場合の操作コマンドの候補を操作コマンド定義部33から取得する。
また、手書き認識制御部26、文字列変換制御部28、予測変換制御部30、及び、操作コマンド認識制御部32はそれぞれ手書き認識文字列候補、言語文字列候補、変換文字列候補、予測文字列候補、操作コマンドの候補、及び、選択オブジェクトに係るデータを後段のステップS55~S58で取得できるよう保持しておく。
S18-2:手書き入力表示制御部23はステップS18でストローク追加を手書き認識制御部26に送信した直後、選択可能候補表示タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。
続く、ステップS51~S53は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生した場合に実行される。
・UI操作無効時(領域A、C)はS51以下が実行される。
S51:タイマーがタイムアウトする前に、ユーザーが手書き入力部21にペンを接触させた場合、手書き入力部21はペンダウン(ステップS2と同じイベント)を手書き入力表示制御部23に送信する。
S52:手書き入力表示制御部23はストローク開始(ステップS3と同じ)を手書き入力保存部25に送信する。この後のシーケンスはステップS3以降と同じである。
S53:更に手書き入力表示制御部23は選択可能候補表示タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はタイマーを停止させる。ペンダウンが検出されたのでタイマーが不要になるからである。
ステップS54~S117は一定時間が経過する前に(タイマーがタイムアウトする前に)ペンダウンが発生しない場合に実行される。従って、図28に示した操作ガイド500が表示される。
S54:選択可能候補表示タイマー開始中にユーザーが手書き入力部21にペンを接触させなかった場合、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
S55:手書き入力表示制御部23は手書き認識文字列/言語文字列候補取得を手書き認識制御部26に送信する。手書き認識制御部26は現在保持している手書き認識文字列/言語文字列候補を手書き入力表示制御部23に送信する。
S56:手書き入力表示制御部23は変換文字列候補取得を文字列変換制御部28に送信する。文字列変換制御部28は現在保持している変換文字列候補を手書き入力表示制御部23に送信する。
S57:手書き入力表示制御部23は予測文字列候補取得を予測変換制御部30に送信する。予測変換制御部30は現在保持している予測文字列候補を手書き入力表示制御部23に送信する。
S58:手書き入力表示制御部23は操作コマンドの候補取得を操作コマンド認識制御部32に送信する。操作コマンド認識制御部32は現在保持している操作コマンドの候補と選択オブジェクトを手書き入力表示制御部23に送信する。
S59:更に、手書き入力表示制御部23は推定書字方向取得を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト矩形領域のストローク追加時間と水平距離と垂直距離から判定して、推定書字方向を手書き入力表示制御部23に送信する。
S60:次に、手書き入力表示制御部23は、手書き入力部21から受信したペンIDを指定して、ペンID制御データ保存部36から現在のペンID制御データのColorId、AccountId(ない場合もある)及びAngleを取得する。
S61:手書き入力表示制御部23は手書きサイン認証制御部38から手書きサインの認証結果を取得する。これにより、ユーザーのSignatureIdが得られるので、後述する操作コマンドの実行時に、ペンID制御データにAccountIdが対応付けて登録される。ユーザーがサインインした場合、AccountIdで特定されるユーザー定義データに対応付けられたカラー定義データが特定される。手書き入力表示制御部23は、ユーザー定義データの色情報が白黒で強調された手書きデータ、又は、手書きデータから変換された前記テキストデータを表示できる。
・選択可能候補表示有効時(領域A)はステップS62、S63、S64が実行される。
S62:手書き入力表示制御部23は、ユーザーが使用しているペン2500のペンID制御データに「RecommendMenuOff="True"」が設定されているか否かを判断し、「RecommendMenuOff="True"」の場合は文字列候補539を表示しない。この場合、操作コマンドのみを表示するが、操作コマンドも表示しないようにしてもよい。「RecommendMenuOff="False"」の場合、手書き入力表示制御部23はこれらの手書き認識文字列候補(図28では「ぎ」)、言語文字列候補(図28では表示がないが例えば「議」)、変換文字列候補(図28では「議事録」「技量試」)、予測文字列候補(図28では「技量試を決済」「議事録の送付先」)、操作コマンドの候補(図28では「議事録テンプレートを読み込む」「議事録フォルダーに保存する)を、有する選択可能候補表示データを作成する。この時、各選択確率、及び、推定書字方向が参照される。
また、手書き入力表示制御部23はステップS60で取得したAngleで選択可能候補表示データ(操作ガイド500)を反時計回りに回転させ、回転後の選択可能候補表示データ(操作ガイド500)を表示部22に送信することで表示させる。
S63:また、手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ(矩形枠)(図28では手書きオブジェクト矩形領域表示503)を、ステップS60で取得した角度情報で反時計回りに回転させ、表示部22に送信することで表示させる。
S64:手書き入力表示制御部23は選択可能候補表示データの表示から一定時間後に消去するため選択可能候補表示消去タイマー開始を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを開始する。「RecommendMenuOff="True"」であるため操作コマンドも含め操作ガイド500が表示されない場合は、選択可能候補表示消去タイマー開始を行わない。
・選択可能候補表示有効時(領域A)、かつ、一定時間内に候補が選択されたか否かを判定。
ステップS65~S70は、選択可能候補消去タイマー開始中に、ユーザーが表示部22に表示された選択可能候補表示を消去した実行される。あるいは、手書きオブジェクトの変化が発生した場合(即ち手書きオブジェクトのストロークの追加、削除、移動、変形又は分割された場合)に実行される。あるいは、タイムアウトまでに候補が選択されなかった場合に実行される。
更に、ステップS65~S67は、候補表示が消去されるか、又は、手書きオブジェクトの変化が発生した場合に実行される。
S65:手書き入力部21は選択可能候補表示消去又は手書きオブジェクトの変化の発生を手書き入力表示制御部23に送信する。
S66:手書き入力表示制御部23は選択可能候補消去タイマー停止を送信する。候補表示タイマー制御部24はそのタイマーを停止する。一定時間内に手書きオブジェクトに対し操作があったためタイマーが不要になるからである。
S67:手書き入力表示制御部23は、ステップS19のジェスチャー手書き認識のジェスチャー判定で使用できるよう、操作ガイド500の位置情報を手書き認識制御部26に保存する。位置情報は例えば左上コーナーと右下コーナーの座標又はこれと同等の座標である。これにより、手書き認識制御部26は角度情報の入力に使用される直線が操作ガイド500内かどうかを判定できる。
S69:手書き入力表示制御部23は選択可能候補表示データ消去を表示部22に送信することで、表示を消去させる。「RecommendMenuOff="True"」の場合、操作コマンドのみを消去するか、又は、何も消去する必要がない。
S70:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を表示部22に送信することで、表示を消去させる。従って、操作コマンド候補が選択される以外の条件で、操作コマンド候補の表示を消去した場合、手書きオブジェクトはそのまま表示が維持される。
S68:一方、選択可能候補消去タイマー開始中に、選択可能候補表示消去又は手書きオブジェクトの変化が発生しなかった場合(ユーザーがペン操作をしなかった場合は)、候補表示タイマー制御部24はタイムアウトを手書き入力表示制御部23に送信する。
選択可能候補表示消去タイマーのタイムアウトの後も同様に、手書き入力表示制御部23はステップS69とS70を実行する。一定時間の経過で選択可能候補表示データ、手書きオブジェクトと選択オブジェクトの矩形領域表示データを消去してよいためである。
・選択可能候補表示無効時(領域B、C)、かつ、選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、ステップS71~S117が実行される。選択可能候補表示無効の場合、手書き認識制御部26は最も確率の高い候補を表示する。
S71:選択可能候補消去タイマー開始中に、ユーザーが選択可能候補を選択した場合、手書き入力部21は文字列候補又は操作コマンドの候補選択を手書き入力表示制御部23に送信する。
S71-2:手書き入力表示制御部23は選択可能候補表示消去タイマー停止を候補表示タイマー制御部24に送信する。候補表示タイマー制御部24はこのタイマーを停止する。
S72:次に手書き入力表示制御部23は保持データクリアを手書き認識制御部26に送信する。
S73:手書き認識制御部26は保持データクリアを文字列変換制御部28に送信する。
S74:手書き認識制御部26は保持データクリアを予測変換制御部30に送信する。
S75:手書き認識制御部26は保持データクリアを操作コマンド認識制御部32に送信する。手書き認識制御部26、文字列変換制御部28、予測変換制御部30、及び、操作コマンド認識制御部32はこれまで保持していた文字列候補及び操作コマンドの候補に係るデータをクリアする。
・選択可能候補表示有効時(領域A)の場合、ステップS76、S77が実行される。
S76:次に手書き入力表示制御部23は選択可能候補表示データ消去を表示部22に送信することで表示を消去させる。
S77:手書き入力表示制御部23は手書きオブジェクトと選択オブジェクトの矩形領域表示データ消去を表示部22に送信することで表示を消去させる。
・ストローク表示有効時(領域A、又は領域CでForceForDialog)の場合、ステップS78が実行される。
S78:手書き入力表示制御部23は手書きオブジェクト表示データ消去及びステップS6で送信したペン座標補完表示データ消去を表示部22に送信することで表示を消去させる。文字列候補又は操作コマンドの候補が選択されたため、手書きオブジェクト等が不要になるためである。
S79:手書き入力表示制御部23は手書きオブジェクト削除を手書き入力保存部25に送信する。
文字列候補が選択された場合、ステップS80~S82が実行される。
・選択可能候補表示無効時(領域B、C)、又は、文字列候補が選択された場合、ステップS80~S82が実行される。
S80: ダイアログ制御無効時(領域A,B)の場合、ステップS80が実行される。手書き入力表示制御部23は文字列オブジェクト追加を手書き入力保存部25に送信する。つまり、選択可能候補が表示されなくても(ユーザーが選択しなくても)、強制的に文字列オブジェクトが追加される。
S81:更に手書き入力表示制御部23は文字列オブジェクトフォント取得を手書き入力保存部25に送信する。手書き入力保存部25はペンID制御データのPenIdに対応付けられた文字列オブジェクトのフォント名をペン色選択ボタン定義データから特定し、また、手書きオブジェクトの推定文字サイズを手書き入力表示制御部23に送信する。
S82:次に手書き入力表示制御部23は手書き入力保存部25から受信した定義済みフォントを使用して、手書きオブジェクトと同じ位置に表示させる文字列オブジェクト表示データを表示部22に送信させることで、表示させる。手書き入力表示制御部23はペンID制御データのColorIdに基づいてカラー定義データから線種と太さを特定し、角度情報で回転させたテキスト(文字列オブジェクト)を表示する。従って、ユーザーの操作位置から見て上下方向を天地とする文字列オブジェクトを表示できる。また、手書き入力領域が図24の領域Cの場合、ダイアログ制御が規定する位置とフォント(予め定められた位置とフォント)で文字列オブジェクトを表示する。図22ではマスク表示2704又は手書きデータの認識結果2709である。
マスク表示領域に文字列オブジェクトが表示された場合、ステップS83~S94が実行される。ステップS83~S94はマスク表示領域ごとにループ処理される。
S83:マスク表示領域に文字列オブジェクトが表示されたので、手書き入力表示制御部23はマスク表示タイマー制御部40にマスク表示タイマー開始を要求する。文字列オブジェクトの表示直後はマスク表示タイマー(1)408が使用される。
S84:ユーザーがマスク表示領域にペンダウンした場合、手書き入力部21がペンダウンイベントを検出する。手書き入力部21はマスク表示領域にペンダウンした旨を手書き入力表示制御部23に送信する。
S85:手書き入力表示制御部23はマスク表示タイマー制御部40にマスク表示タイマー開始(再開)を要求する。これにより、マスク表示タイマー(1)408がリセットされる。
S86:マスク表示タイマー(1)408がタイムアウトすると、マスク表示タイマー制御部40がタイムアウトを手書き入力表示制御部23に送信する。
S87:マスク表示するため、手書き入力表示制御部23は文字列オブジェクト表示データの消去を表示部22に要求する。
S88:次いで、手書き入力表示制御部23は文字列オブジェクトのマスク表示データ(例えば、文字数分の●)を表示部22に送信する。
S89:ユーザーがマスク表示領域に、再度、文字列オブジェクトを表示したい場合、ジェスチャーをマスク表示領域に入力する。手書き入力部21がペンダウンイベントを検出する。手書き入力部21はマスク表示領域にペンダウンした旨を手書き入力表示制御部23に送信する。
S90:手書き入力表示制御部23は手書き認識制御部26にジェスチャー認識要求を送信する。
S91:手書き認識制御部26はタップなどのジェスチャーと判定したかどうかのジェスチャー認識結果を手書き入力表示制御部23に送信する。
ジェスチャー認識結果が文字列オブジェクトのマスク表示解除ジェスチャーである場合、S92~S94が実行される。
S92:手書き入力表示制御部23は文字列オブジェクトのマスク表示データの消去を表示部22に送信する。
S93:次いで、手書き入力表示制御部23は文字列オブジェクト表示データを表示部22に送信する。表示部22はマスク表示領域に文字列オブジェクトを表示する。
S94:マスク表示領域に再度、文字列オブジェクトが表示されたので、手書き入力表示制御部23はマスク表示タイマー制御部40にマスク表示タイマー開始を要求する。文字列オブジェクトが再度、表示された直後はマスク表示タイマー(2)409が使用される。
なお、マスク表示の解除を、文字列を記入したユーザーに制限してもよい。図16に示すように、手書きデータにはPenIDが含まれる。手書き入力表示制御部23は、タップに使用されたペン2500のPenIDがマスク表示されている手書きデータのPenIDと一致する場合にのみ、マスク表示の解除を許可する。こうすることで、任意のユーザーがマスク表示を解除することを抑制できる。あるいは、図17のペンID制御データにPenIDとAccountIDが対応付けられているので、AccountIDで特定される図14のユーザー定義データにマスク表示を解除する権限がある場合に、マスク表示の解除を許可してもよい。
操作コマンドの候補が選択された場合、ステップS95~S115が実行される。編集又は修飾のための選択オブジェクトに対する操作コマンドはステップS95~S97で実行される。
S95:選択オブジェクトへの操作コマンドの候補が選択された場合(選択オブジェクトが存在する場合)は、手書き入力表示制御部23は選択オブジェクト表示データ消去を表示部22に送信することで表示を消去させる。いったん、元の選択オブジェクトを消去するためである。
S96:次に、手書き入力表示制御部23は選択オブジェクトへの操作コマンド実行を手書き入力保存部25に送信する。手書き入力保存部25は新しい選択オブジェクトの表示データ(編集又は修飾後の表示データ)を手書き入力表示制御部23に送信する。
S97:次に手書き入力表示制御部23は選択オブジェクト表示データを表示部22に送信することで、操作コマンド実行後の選択オブジェクトを再表示させる。
選択オブジェクトがあるが「ページ名を追加」の操作コマンドはステップS98~S99で実行される。
S98:「ページ名を追加」の操作コマンドの候補が選択された場合(選択オブジェクトが存在する場合)は、手書き入力表示制御部23は選択オブジェクトの取得を手書き入力保存部25に要求する。手書き入力保存部25は選択オブジェクトを手書き入力表示制御部23に送信する。
S99:手書き入力表示制御部23は現在ディスプレー220に表示中のページ番号をページナビデータで確認して、選択オブジェクトをページ名として手書き入力保存部25に追加する。
S100:操作コマンド定義データ713の「手書きサイン登録する」又は操作コマンド定義データ716の「設定変更する」が指定された場合を説明する。手書き入力表示制御部23は手書きサイン登録フォーム561又はユーザー定義データ変更フォームを手書き入力保存部25に追加する。
S101:「ファイル保存」又は「印刷」の操作コマンドの候補が選択された場合、手書き入力表示制御部23はファイル送信要求をファイル送受信制御部37に送信する。
S102:ファイル送受信制御部37は送信対象の手書き入力保存データの取得要求を手書き入力保存部25に送信する。
S103:手書き入力保存部25は、送信先がカラー対応装置かどうかをMIBなどで判定する。
・カラー対応装置の場合、手書き入力保存部25は、カラーに変換した手書き入力保存データをファイル送受信制御部37に送信する。すなわち、手書き入力保存部25は、手書き入力保存データのColorIdに基づいて手書き由来かどうかを判定する。手書き由来のデータの場合、手書き入力保存部25は、ColorIdに対応付けられた色情報をカラー定義データから取得してこの色情報に変換する。手書き由来でないデータには元々色情報が入っているので、手書き入力保存部25は該色情報を送信する。ColorIdでなくても手書き由来のデータ(本表示装置2で描かれた手書きデータ)あるかを判断できればよい。また、本表示装置2で描かれた手書きデータであるかを示すデバイスを示す値でもよい。
・送信先が白黒対応装置の場合を説明する。手書き由来のデータの場合、手書き入力保存部25は、手書き入力保存データのColorIdに対応付けられた色情報を無視して単なる座標点列やテキストを送信してよい。手書き入力保存部25は、ColorIdに対応付けられた色情報をカラー定義データから取得してこの色情報に変換してもよい。ただし、手書き入力保存部25は、ColorIdに対応付けられた色情報をカラー定義データから取得して白黒強調表示(線種と太さ)に変換して送信してもよい。手書き由来でないデータには元々色情報が入っているので、手書き入力保存部25は、該色情報を送信する。
・送信先が白黒強調対応装置の場合、手書き入力保存部25は、手書き入力保存データのみ、又は、手書き入力保存データ及びカラー定義データをファイル送受信制御部37に送信する。手書き入力保存データのみを送信する場合は、送信先の白黒強調対応装置が保持するカラー定義データに従って線種や太さが決定される。手書き入力保存データ及びカラー定義データの両方を手書き入力保存部25が送信する場合は、送信元の白黒強調対応装置が保持していたカラー定義データに従って線種や太さが決定される。なお、送信元の白黒強調対応装置が白黒強調表示に変換してから送信してもよい。
・また、ファイル送受信制御部37が例えばPDFファイルなどに書き出す場合、手書き由来のデータはColorIdに対応付けられた色情報をカラー定義データから取得し、PDFファイルのフォーマットに従ってPDFファイルに設定する。フォント、文字サイズ等についても同様である。更に、手書き入力保存データの全体又は一部(例えばColorId、FontNmae等)をPDFファイルのメタデータに保存する。PDFファイルのリーダはメタデータを無視するので、表示に影響はなく、このPDFファイルを表示装置2が読み取る場合は、メタデータから手書き入力保存データを再生できる。手書き由来でないデータの場合、手書き入力保存データに入っている色情報、フォント、文字サイズ等をPDFファイルのフォーマットに従ってPDFファイルに設定する。
S104:ファイル送受信制御部37は手書き入力保存部から受信した手書き入力データを送信先に送信するか、又は、ファイルに書き込む。
S105:「ファイル読み込み」の操作コマンドの候補が選択された場合、手書き入力表示制御部23はファイル一覧情報取得要求をファイル送受信制御部37に送信する。
S106:ファイル送受信制御部37はUSBメモリー、ネットワークストレージ、Webサーバー等の記憶媒体又は外部機器等からファイル一覧情報を受信する。
S107:ファイル送受信制御部37はファイル一覧情報を手書き入力表示制御部23に送信する。
S108:手書き入力表示制御部23はファイル一覧表示データを表示部22に送信する。これにより、表示部22は図12のようにファイル一覧をディスプレーに表示する。
S109:ユーザーがファイルを選択し、手書き入力部21が受け付けると、手書き入力部21はファイル選択を手書き入力表示制御部23に送信する。
S110:手書き入力表示制御部23は選択されたファイルのファイル受信要求をファイル送受信制御部37に送信する。
S111:ファイル送受信制御部37は外部機器からファイルを取得する。
S112:ファイル送受信制御部37は手書き入力保存部25にファイルを保存する。
S113:手書き入力保存部25は、ファイル送受信制御部37から受信したファイルを解析し、手書き由来のデータを手書き入力保存データ(白黒強調/カラー変換可能データ)に変換する。すなわち、メタデータの有無を判定し、メタデータがある場合は手書き入力保存データへの変換が可能かどうかを(ColorIdなどがあるかどうか)を判定し、手書き入力保存データとして保存する。そして、手書き由来のデータについてColorIdを読み取り、カラー定義データを参照して、ColorIdに対応付けられている白黒強調表示に変換する。手書き入力保存部25は手書きオブジェクトの表示データを手書き入力表示制御部23に送信する。手書き由来のデータでないデータの場合、手書き入力保存部25はファイル形式に従って色情報、フォント、文字サイズなどを読み取って手書き入力保存データとして保存する。
S114:手書き入力表示制御部23は手書き入力データの表示データを表示部22に表示する。これにより表示部22は、手書き由来のデータを白黒強調された手書きデータで表示し、そうでないデータを従来の輝度変換を用いて白黒表示する。
なお、サインインするための操作コマンド512が実行された場合、手書き入力表示制御部23は操作コマンド512の実行時に表示装置2が受信したペンIDを取得する。手書き入力表示制御部23はステップS61で取得したSignatureIdを有するユーザー定義データを特定してAccountIdをユーザー定義データから取得する。そして、ペンIDに対応付けてAccountIdをペンID制御データに登録する。これにより、ペン2500とユーザーが紐付いた形となり、表示装置2はユーザー定義データを使って処理が可能になる。
ユーザーがサインインした後に手書きしたり、ファイル読み込みしたりした場合、手書き入力表示制御部23は、操作コマンドの実行時に表示装置2が受信したペンIDに対応付けられているAccountIdをペンID制御データから取得する。手書き入力表示制御部23は、このAccountIdでユーザー定義データを特定し、操作コマンドの%~%にカラー定義データ等を設定して実行する。
S115:その他、入出力系の操作コマンドが選択された場合、手書き入力表示制御部23はユーザーが選択した操作コマンドに対応する操作コマンド定義データの操作コマンド文字列(Command)を実行する。
S116:ユーザーがマニュアルで角度情報を入力した場合は、手書き入力表示制御部23は受け付けた角度情報を、回転操作ボタン511の押下時にペン2500から受信したペンIDに対応付けてペンID制御データ保存部36に保存する。
S117:次の手書きオブジェクトのために手書き入力表示制御部23は手書きオブジェクト開始を手書き入力保存部25に送信する。手書き入力保存部25は手書きオブジェクト領域を確保する。これ以降、ステップS2~S117の処理が繰り返される。
<手書き入力領域の定義データに基づく表示制御>
図54を参照して、手書き入力領域の定義データに基づく表示制御について補足する。図54はペン座標が含まれる領域に応じて表示装置がデータの表示を制御する方法を説明する図である。ユーザーが入力手段(ペン又は指先)で手書きすると、入力手段がディスプレー220に接する座標が領域A~Cのいずれであるかを手書き入力表示制御部23が判定する(S201)。詳細には図23の手書き入力領域の定義データのPositionとDepthでどの手書き入力領域の定義データを適用するかを手書き入力表示制御部23が判断する。
領域Aの場合(S201のYes)、Recognition='Enable'なので、表示部22が手書きデータを表示し、手書き認識制御部26が文字認識して、表示部22が操作ガイド500を表示する。ユーザーが文字列候補を選択すると、選択された文字列候補を表示部22が表示する(S202)。
領域Bの場合(S203のYes)、Recognition='Disable'なので、手書き認識制御部26はストロークをボタン操作として受け付ける(S204)。従って、手書きデータの表示等は行われない。
領域C、かつ、Recognition='ForceForDialog'の場合、表示部22は手書きデータを表示し、手書き認識制御部26が文字認識して、確率が最も高い文字列を表示部22が決まった位置に表示する(S206)。つまり、操作ガイド500が表示されず、ユーザーが選択しなくても文字列を表示できる。
領域C、かつ、Recognition='ForceForDialogWithoutStroke'の場合、表示部22は手書きデータを表示せず、手書き認識制御部26が文字認識して、確率が最も高い文字列を表示部22が決まった位置にマスク表示する(S207)。つまり、ユーザーが何を手書きしたか分からないようにストロークが表示されず、認識結果もマスク表示できる。
<マスク表示領域の定義データに基づく表示制御>
図55を参照して、マスク表示領域の定義データに基づく表示制御について補足する。図55はペン座標が含まれるマスク表示領域に応じて表示装置がデータの表示を制御する方法を説明する図である。ユーザーが入力手段(ペン又は指先)で手書きすると、入力手段がディスプレー220に接する座標が名前の領域、ふりがなの領域、性別の領域、又は、年齢の領域のいずれであるかを手書き入力表示制御部23が判定する(S301)。
名前の領域の場合(S301のYes)、Recognition='Enable'なので、表示部22が手書きデータを表示し、手書き認識制御部26が文字認識して、表示部22が操作ガイド500を表示する。ユーザーが文字列候補を選択すると、選択された文字列候補を表示部22が表示する(S302)。また、MaskedDisplay='True'なので、マスク表示タイマー(1)408のタイムアウトで文字列をマスク表示する。
ふりがなの領域の場合(S303のYes)、Recognition='Force'なので、表示部22が手書きデータを表示し、手書き認識制御部26が強制的にひながらに文字認識する。表示部22はひらがなをふりがなの領域に表示する(S304)。また、MaskedDisplay='True'なので、マスク表示タイマー(1)408のタイムアウトで文字列をマスク表示する。
性別の領域の場合(S305のYes)、Recognition='Force'なので、表示部22が手書きデータを表示し、手書き認識制御部26が男又は女のいずれかに強制的に文字認識する。表示部22は男又は女を性別の領域に表示する(S306)。また、性別の領域にはMaskedDisplayの定義がないので、マスク表示は行われない。
年齢の領域の場合(S307のYes)、Recognition='Force'なので、表示部22が手書きデータを表示し、手書き認識制御部26が強制的に数字に文字認識する。表示部22は数字を年齢の領域に表示する(S305)。性別の領域にはMaskedDisplayの定義がないので、マスク表示は行われない。
<マスク表示領域のマスク表示とマスク解除>
図56は、マスク表示タイマー(1)、マスク表示タイマー(2)に基づくマスク表示領域のマスク表示とマスク解除の流れを説明するフローチャート図の一例である。図56の処理は、マスク表示領域に手書きオブジェクトが表示された状態からスタートする。
手書き入力表示制御部23はマスク表示領域(Recognition=Force)に文字列を表示されたか否かを判定する(S401)。
マスク表示領域に文字列を表示された場合(S401のYes)、マスク表示までの時間を測定するため、マスク表示タイマー制御部40がマスク表示タイマー(1)をスタートする(S402)。
マスク表示タイマー制御部40はマスク表示タイマー(1)を監視し、タイムアウトしたか否かを判定している(S403)。
タイムアウトするまでの間(S403のNo)、手書き入力表示制御部23はマスク表示領域にユーザーがタッチしたか否かを監視している(S404)。
マスク表示領域にユーザーがタッチした場合(S404のYes)、手書き入力表示制御部23はマスク表示タイマー制御部40にマスク表示タイマー(1)の再スタートを要求する。
マスク表示タイマー(1)がタイムアウトした場合(S403のYes)、手書き入力表示制御部23はマスク表示領域の文字列をマスク表示する(S405)。
マスク表示後、手書き入力表示制御部23はマスク表示領域にジェスチャー(タップ)操作があるか否かを判定する(S406)。
ジェスチャー操作があった場合(S406のYes)、手書き入力表示制御部23はマスク解除して文字列を表示する(S407)。
再度のマスク表示までの時間を測定するため、マスク表示タイマー制御部40がマスク表示タイマー(2)をスタートする(S408)。
マスク表示タイマー制御部40はマスク表示タイマー(2)を監視し、タイムアウトしたか否かを判定している(S409)。
タイムアウトするまでの間(S409のNo)、手書き入力表示制御部23はマスク表示領域にユーザーがタッチしたか否かを監視している(S410)。
マスク表示領域にユーザーがタッチした場合(S410のYes)、手書き入力表示制御部23はマスク表示タイマー制御部40にマスク表示タイマー(2)の再スタートを要求する。
マスク表示タイマー(2)がタイムアウトした場合(S409のYes)、手書き入力表示制御部23はマスク表示領域の文字列を再度、マスク表示する(S411)。
このように、表示装置2はマスク表示領域の文字列をタイマー制御でマスク表示し、ユーザーのジェスチャーで再度、表示することができる。
<主な効果>
以上説明したように、本実施形態の表示装置2は、機密情報の表示直後、機密情報の全体を短時間表示するので、業務に活用できるようになる。また、機密情報は一定時間の経過後、マスク表示されるので、第三者から保護される。
また、ユーザーは、ジェスチャーでマスク表示を解除できるが、ジェスチャーを複雑にすれば、第三者が安易にマスク解除できない。従って、ユーザーにとっては使い勝手がよく、機密性を向上できる。ジェスチャーを単純にすれば、慣れていないユーザーでも機密情報のマスク解除が容易である。
機密情報の表示からマスク表示までのタイマー、又は、ジェスチャーで機密情報を再度、表示してからマスク表示までのタイマーを、表示装置2の利用態様にあわせてユーザーが設定できる。例えば、第三者の往来が多い場所では短くし、そうでない場所では長めに設定できる。