〔実施の形態1〕
本発明の一実施形態について以下説明する。図1は、本実施形態に係る携帯端末10の構成を示す機能ブロック図である。図2は、本実施形態に係る携帯端末10の外観構成を示す模式図である。
(携帯端末10の全体構成)
携帯端末(表示制御装置、表示装置)10は、図2に示すように、小型の表示部を備えたスマートフォンである。携帯端末10は、図1に示すように、制御部11、記憶部12、通信部13、タッチパネル14、アクセス部15を備えている。
制御部11は、携帯端末10の各ハードウェアの動作を制御するブロックであり、例えば、CPU(Central Processing Unit)を備えるマイクロコンピュータやマイクロプロセッサによって実現される。制御部11は、記憶部12に記憶されている各種情報および各種制御を実施するためのプログラムを取り出して演算処理や判定処理を行い、これらの処理結果に基づいて携帯端末10の各ハードウェアに信号や情報を送って、各ハードウェアの動作を制御する。制御部11の詳細については後に述べる。
記憶部12は、制御部11が実行する各種アプリケーションプログラム、OS(Operating System)プログラム、制御プログラム、これらプログラムを実行するときに読み出す各種データ(設定値、テーブル等)を記憶する記憶領域である。記憶部12としては、従来から公知の種々の記憶手段、例えば、リードオンリーメモリ、ランダムアクセスメモリ、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)などを用いることができる。また、制御部11に取り扱われている各種データや処理中のデータは、記憶部12のワーキングメモリに一時的に記憶される。
通信部13は、外部装置との間でデータ通信を行う通信インターフェイスである。本実施形態の通信部13は、USB(Universal Serial Bus)1.1またはUSB2.0の規格に基づいて、シリアル転送/パラレル転送、無線データ通信を行うようになっている。通信部13は、ユーザからの入力指示に従って、複合機、画像入力装置(スキャナ専用機)、またはサーバ装置との間で画像データの送受信を行う。
タッチパネル14は、画像を表示する表示部14aと、ユーザのタッチ操作に応じた入力信号を生成する入力部14bとが一体化されている装置である。タッチパネル14としては、周知のタッチパネルを用いることができる。つまり、表示部14aはLCD(Liquid Crystal Display)などで構成され、入力部14bは表示部14aと一体化された静電容量センサなどで構成される。
ユーザがタッチパネル14に対してタッチ操作を行うと、タッチ操作に応じた入力指示が表示画像に反映されることになる。例えば、タップ操作が行われるとタップされたアイコンやファイルに応じた画像が表示されるようになっている。タッチ操作に応じた入力指示の具体例については後で詳述する。
また、本実施形態では、図2に示すようにタッチパネル14(表示部14a)に文書画像が表示されるようになっている。ここで、表示部14aの表示領域全体のうち、文書画像を表示させるために確保されている表示領域をコンテンツ表示領域と称す(図2を参照)。コンテンツ表示領域は、表示領域全体を占めていてもよいし、表示領域全体のうちの一部であってもよい。図2は、コンテンツ表示領域が表示領域全体のうちの一部である形態を示したものであり、コンテンツ表示領域以外の領域が余白になっている。なお、表示部14aには、ツールバー等が表示されていてもよいし、スクロールバーが表示されていてもよい。或いは、図9に示すように、ユーザに選択させる機能が列挙されているメニュー領域が表示されてもよい。
なお、ユーザの視認性からすれば、通常、コンテンツ表示領域と、それ以外の領域(メニュー領域など)とは、互いに重複しないように設定されることが望ましい。但し、メニュー領域については、必ずしも常時表示されている必要がないことから、ユーザにとってメニューが必要な場合のみ(ユーザのタッチ操作に応じてメニューを呼び出す信号が入力された場合)、図21に示す例のようにコンテンツ表示領域上にメニュー領域をオーバレイ表示するようになっていてもよい。つまり、図21の例では、メニュー領域を半透明表示とすることにより、コンテンツ表示領域のうちメニュー領域に重畳されている部分も視認可能とし、メニュー表示前のコンテンツも表示され続けるようにしている。あるいは、前述のようにメニューを呼び出す信号が入力された場合にのみ、図9に示す例のように、コンテンツ表示領域を変形して余白を拡大し、拡大された余白の一部にメニュー領域を一時的に設けるようにしても良い。また、図9の例において、メニュー領域の表示を終了する指示信号を入力した場合、メニュー領域を表示領域から除外し、コンテンツ表示領域を、メニュー領域を呼び出す前の形状(大きさ)になるように再度変形するように設定されていてもよい。
アクセス部15は、携帯端末10に挿入されるリムーバブルメディアにアクセスし、当該リムーバブルメディアに対する情報の読み書きを行う装置である。
つぎに、制御部11について詳細に説明する。制御部11は、図1に示すように、少なくとも、レイアウト変更部111および表示制御部112を含む。
レイアウト変更部111は、ユーザに指定(選択)された文書ファイルの文書画像をリフロー形式で表示させるためにレイアウト変更処理を行うブロックである。つまり、レイアウト変更部111は、入力部14bからユーザのタッチ操作に応じた入力信号を受け付け、この入力信号に示される入力指示が文書ファイルを開く指示である場合(文書ファイルのアイコンをタップ操作したような場合)、当該文書ファイルを記憶部12から読み出してレイアウト変更処理を行うのである。
レイアウト変更処理(再配置処理)は、本来はフィックス型である文書画像を、表示部14aのコンテンツ表示領域においてはリフロー形式で表示可能になるように、当該文書画像の各要素の配置を変更する処理を指す。具体的には、レイアウト変更処理は、コンテンツ表示領域においてリフロー形式で表示可能になるように当該文書画像の各要素の配置座標を求める処理を指す。
配置座標とは、文書画像全体(表示部にて表示されている最中の部分のみならず表示部からはみ出している部分も含む)のなかでの各要素(文字、図表)の位置を示した座標である。つまり、配置座標とは、文書画像全体のなかの所定位置を原点とした場合の各要素の座標を示したものである。
リフロー形式とは、表示部14aの水平方向および垂直方向のうちのいずれかの方向のみのスクロールで文書画像を表示させる形式である。すなわち、図8に示すように、水平方向および垂直方向のうち、スクロール可能な方向と異なる方向(図8では水平方向)については、文書画像の長さがコンテンツ表示領域の長さ以下になるように(文書画像の画素数がコンテンツ表示領域の画素数以下になるように)、レイアウト変更処理が行われるのである。
また、レイアウト変更部111は、文書画像の各要素(文字、表等)の並び順を示した参照リスト(図4)に基づいて、レイアウト変更処理を行うようになっている。この参照リストの内容、および、レイアウト変更処理の内容は、後に詳述する。
表示制御部112は、タッチパネル14の表示制御を行う。つまり、表示制御部112は、記憶部12に記憶されている各種アプリケーションまたはOS(Operating System)に基づいて各種画像をタッチパネル14に表示させる。
また、表示制御部112は、タッチパネル14の入力部14bから、ユーザのタッチ操作に応じた入力信号を受け付け、入力指示に応じた表示制御を行う。すなわち、表示制御部112は、文書ファイルを表示させる指示を示す入力信号を入力部14bから受け付けると(文書ファイルのアイコンをタップ操作したような場合)、当該文書ファイルの文書画像をタッチパネル14に表示させる。
また、本実施形態の表示制御部112は、レイアウト変更部111にて求められた配置座標に基づいて、文書画像の各要素(文字等)の描画座標(表示用座標)を求め、この描画座標に基づいて文書画像を表示部14aに表示させるようになっている。ここで、描画座標とは、文書画像の各要素と表示部14aのコンテンツ表示領域との位置関係を示す座標である(つまり、描画座標とは、図10の(b)に示すようにコンテンツ表示領域上の基準位置(左上隅部)を原点(0,0)とした平面座標上での各要素の座標値を示したものである)。表示制御部112における処理の詳細については後に詳述する。
なお、本実施形態は、図2に示すように、略長方形の表示部14aの長辺方向を表示部14aの垂直方向とし、表示部14aの短辺方向を表示部14aの水平方向として、左横書きの文書画像を表示部14aに表示する例を説明するものである(左横書の文書とは、各行の左側が先頭側になって右側が末尾側となる横書き文書を指す)。すなわち、本実施形態では、図2に示すように、表示中の左横書の文書画像における横方向(左右方向)と表示部14aの水平方向とが一致し、表示中の左横書の文書画像における縦方向(上下方向)と表示部14aの垂直方向とが一致する。そこで、本実施形態では、図2に示すように、短辺方向を水平方向として長辺方向を垂直方向とした略長方形の表示部14aに左横書の文書画像を表示させる場合において、当該左横書の文書画像の右側から左側に向けた方向を左方向とし、その逆方向を右方向とし、当該左横書きの文書画像の上側から下側に向けた方向を下方向とし、その逆方向を上方向とする(なお、図2に示す上下左右の各方向は、短辺方向を水平方向として長辺方向を垂直方向とした略長方形の表示部14aに縦書きの文書画像を表示させる場合において、当該縦書きの文書画像における上下左右の各方向とも一致することになる)。
また、本実施形態において、図4等に示される横幅は水平方向の長さを意味し、高さは垂直方向の長さを意味する。また、本実施形態において、前述した配置座標の原点(0,0)は、図10の(a)に示すように、横書文書画像全体のなかの左上隅部に設定され、前述した描画座標の原点(0,0)は、図10の(b)に示すように、表示部14aにおけるコンテンツ表示領域の左上隅部(基準位置)に設定される。
(入力指示の具体例)
つぎに、タッチ操作に応じた入力指示の具体例を説明する。タッチパネル14に対して利用者がタッチ操作を行うと、タッチ操作に応じた入力信号が入力部14bから制御部11に伝達される。そして、制御部11の各部は、この入力信号から、タッチ点数(タッチ箇所の数)、タッチ座標等を導き、タッチ操作に応じた入力指示の内容を識別する。具体的には、以下の通りである。
例えば、制御部11は、コンテンツ表示領域上にて1点のタッチを検出した場合、画像のスクロール指示(スクロール操作)の開始であると識別する。また、制御部11は、スクロール指示が開始されてから1点のタッチがコンテンツ表示領域上で検出され続けている間はスクロール指示が継続されていると識別し、コンテンツ表示領域上で検出されるタッチ点数が1点以外に変化した場合はスクロール指示が終了したと識別する。
また、制御部11は、コンテンツ表示領域上にて2点以上の同時タッチを検出した場合、画像のズーム指示(ズーム操作)の開始であると識別する。また、制御部11は、ズーム指示が開始されてから、ズーム指示開始時に検出したタッチ点数と同じ点数のタッチがコンテンツ表示領域上で検出され続けている間はズーム指示が継続されていると識別し、コンテンツ表示領域上で検出されるタッチ点数が異なる点数に変化した場合はズーム指示が終了したと識別する。なお、2点タッチの場合、2点の間隔を広げる動きで画像拡大となり、2点の間隔を狭める動きで画像縮小となる。3点タッチの場合、3点を頂点とした三角形を広げる動きで画像拡大となり、三角形を狭める動きで画像縮小となる。
また、スクロール指示が行われている最中にタッチの検出点数が2点以上に変わった場合、制御部11は、スクロール指示の終了とズーム指示の開始とを同時に識別するようになっていてもよい。同様に、ズーム指示が行われている最中にタッチの検出点数が1点に変わった場合、制御部11は、ズーム指示の終了とスクロール指示の開始とを同時に識別するようになっていてもよい。或いは、ズーム指示が行われている最中に、タッチ点数がズーム指示開始時のタッチの点数とは異なる2点以上の点数に変化した場合、制御部11は、新たに検出された点数を基準としたズーム操作を開始するようになっていてもよい。
(文書ファイルについて)
続いて、携帯端末10にて扱われる文書ファイル(文書画像のデータ)について説明する。文書ファイルは、CCD(Charge Coupled Device)センサ、またはCMOS(Complementary Metal-Oxide Semiconductor)センサ等の撮像手段が文書原稿を撮影して得られるデジタル画像をファイル化したものである。文書ファイルは、テキストデータを有しない撮影画像であり、例えばPDFファイルやTIFFファイルが挙げられる。
携帯端末10は、アクセス部15を介してリムーバブルメディアから文書ファイルを取得して記憶部12に保存してもよいし、通信部13を介して複合機や画像入力装置から文書ファイルを受信し、記憶部12に保存してもよい。
なお、携帯端末10にて扱われる文書ファイルは、カラー画像データであってもよいし、白黒の画像データであってもよい。
(参照リストについて)
つぎに、レイアウト変更部111によるレイアウト変更処理にて使用される参照リストについて図3Aおよび図4を参照して説明する。図3Aは、文字および図表から構成される文書画像(横書き文書)の一例を示したものであり、図4は、図3Aの文書画像に対応する参照リストの一例を示したものである。
参照リストは、文書画像を構成する要素(文字および図表)ごとに、夫々の要素の情報を示したリストである。
個々の要素に関する情報には、文書中における要素の並び順を示したリスト番号と、文書中における要素の範囲を示す範囲情報と、要素の種類(文字、図表)を示す要素種別と、要素が属する段落を特定する情報とが含まれる。
図4の参照リストでは、リスト番号の小さい順(つまり要素の並び順)に各要素に関する情報が示されている。また、図4の参照リストでは、範囲情報として、各要素のみを含む矩形の左上位置のX座標およびY座標と、矩形の横幅および高さとを含む。矩形の幅および高さの代わりに、矩形の右下位置のX座標およびY座標であってもよい。
また、図4の参照リストでは、要素種別として、文字、図表(図または表)に加えて改行を持つ。この「改行」は、要素種別であるだけではなく、要素が属する段落を特定する情報としても機能することになる。つまり、リスト番号の順に各要素の情報を参照していく場合、改行が参照されてから次に改行が参照するまで(まだ一度も改行が参照されていない場合は参照リストの先頭から最初に改行が参照されるまで)の間に参照された文字ないし図表を同一の段落に属していると判定できる。たとえば、リスト番号7において最初に改行が参照されるため、リスト番号1から6が1つの段落(図3Aにおける段落R1)となり、次にリスト番号41において改行が参照されるため、リスト番号8から40が1つの段落(図3Aにおける段落R2)となる。同様にして、全ての文字および図表の属する段落を判別できる。
さらに、図3Aに示す文書画像のように同一段落内において文字列と文字列とに挟まれる図表が存在する場合、レイアウト変更を行うと、文字と図表との位置関係が変わり、可読性が低下するおそれがある。そこで、レイアウト変更前の文書画像において同一段落内において文字列と文字列とに挟まれる図表が存在する場合、この段落内において、レイアウト変更前の文字と図表との並び順に関係なく、レイアウト変更後には文字と図表とが別々に配置されるように、各文字および図表にリスト番号を割り振る。例えば、図4のリスト番号398の図表は、図3Aに示すように、段落R7に含まれており、リスト番号398の図表の後の4行にわたる文字列までが同一段落(段落R7)となるが、図4の参照リストでは、まず段落R7の先頭の文字から段落R7に含まれる文字列の末尾にあたるリスト番号397の文字までの順にリスト番号が割り振られ、図表には、リスト番号397の次のリスト番号398が割り振られる。
但し、リスト番号の割り振り手法は、以上の図4の参照リストのような形態に限定されるものではない。例えば、同一段落内に文字列と図表とが共に含まれている場合、図22に示す参照リストのように、図表と文字との境界となる位置に「改行」の要素を挿入することにより、同一段落内での図表と文字との位置関係(順序)をレイアウト変更の前後で固定させるようになっていてもよい。なお、同一段落内に複数の図表が存在する場合、図表と図表との境界の位置にも「改行」の要素を挿入することで、複数の要素がスクロールの方向と直交した方向に並ぶことなく表示することができる。
また、図5に示す参照リストのように、要素ごとに、属する段落を識別する段落IDを記述してもよい。図5は、図4とは異なる参照リストの例を模式的に示した図である。この参照リストにおいては、リスト番号の順に各要素の情報を参照していく場合、段落IDが変化した際にその前後の要素間で段落が変更されたと判定できる。なお、同一段落内において文字列と文字列とに挟まれる図表が存在する場合、図5においては、この段落内において図表からなる小段落が含まれるように扱う。つまり、図3Bおよび図5に示すように、文字列および図表からなる段落は段落7になり、このうち、図表については段落7に属する小段落7−2として扱われる。なお、同一段落内に複数の図表が存在する場合、個々の図表をそれぞれ異なる小段落としても良い。
また、本実施の形態では、記憶部12においては、単に文書ファイルが保存されているだけではなく、保存されている文書ファイルの文書画像に対応する参照リストも当該文書ファイルに紐付けされて保存されているものとする。
参照リストは、文書ファイルが生成される複合機やスキャナにおいて、当該文書ファイルから作成され、当該文書ファイルに紐付けされることになる。そして、互いに紐付けされた文書ファイルと参照リストとの組み合わせは、通信部13を介して携帯端末10に送信されたり、リムーバブルメディアを介して携帯端末10に入力される。
但し、携帯端末10が参照リスト作成部を備えてもよく、この場合、携帯端末10は複合機やスキャナから文書ファイルのみを受信し、参照リスト作成部は、この文書ファイルを参照して参照リストを作成するようになっていてもよい。なお、参照リスト作成部については実施形態8にて説明する。
(レイアウト変更部111について)
以下、レイアウト変更部111の処理について詳細に説明する。なお、本実施形態では、文字列の文字の配列方向が表示画面の水平方向と一致する横書き(左横書き)の文書画像に対して処理を行う場合を説明する。なお、横書き(左横書き)の文書画像では、一つの文字列に属する文字の並び順は左から右へ向かう順であり、複数の文字列の並び順は原則として上から下へ向かう順である。
すなわち、図8に示すように、水平方向および垂直方向のうち、スクロール可能な方向と直交する方向(図8では水平方向)については、文書画像の長さがコンテンツ表示領域の長さ以下になるように、レイアウト変更処理が行われるのである。
図6は、図4の参照リストを用いる場合のレイアウト変更部111の処理手順を示すフローチャートである。レイアウト変更部111は、図4の参照リストを参照し、N個の各要素のうち並び順の小さい要素から順に注目要素として扱っていく。
レイアウト変更部111は、図4の参照リストに基づいて、注目要素の要素種別を判定する(S101)。そして、図6に示すように、レイアウト変更部111は、注目要素が文字または図表であると判断する場合(S101)、注目要素の1つ前の要素の要素種別を示す履歴要素種別と、注目要素の要素種別との比較を行う(S102)。なお、履歴要素種別は記憶部12に記憶されている。ここで、レイアウト変更部111は、履歴要素種別が文字または図表であり、かつ、注目要素の要素種別が履歴要素種別と異なる場合(S102にてNO)、段落変更処理(S103)、要素切り出し処理(S104)、要素変倍処理(S105)、配置処理(S106)、履歴要素種別更新処理(S107)を順に実行する。これに対し、レイアウト変更部111は、履歴要素種別が「改行」である場合、もしくは、履歴要素種別と注目要素の要素種別とが同一である場合(S102にてNO)、段落変更処理(S103)を実行せずに、要素切り出し処理(S104)、要素変倍処理(S105)、配置処理(S106)、履歴要素種別更新処理(S107)を順に実行する。また、レイアウト変更部111は、S101において注目要素が改行であると判断する場合、段落変更処理(S108)、履歴要素種別更新処理(S107)を順に実行する。レイアウト変更部111は、N個の全ての要素を順に注目要素として扱い、各注目要素に対して図6の処理を行う。なお、履歴要素種別は、参照リストの先頭(すなわちr=1)が参照される前に、「改行」に初期化されており、図6の履歴要素種別更新処理(S107)において、注目要素の要素種別を新たな値として更新する。
以下、図6の要素切り出し処理、要素変倍処理、配置処理、段落変更処理の各々の処理内容を順に説明する。前述したレイアウト変更処理とは、要素切り出し処理、要素変倍処理、配置処理、段落変更処理からなるのである。
図6の要素切り出し処理(S104)は、参照リストに示される注目要素の範囲に基づいて、文書画像のデータから注目要素の切り出し(抽出)を行う処理である。
図6の要素変倍処理(S105)は、切り出した注目要素を、現在指定されている表示倍率に応じて拡大もしくは縮小を行う処理である。たとえば、表示倍率が200%である場合、切り出された各要素の水平および垂直方向のサイズが2倍になるように拡大処理が実行される。表示倍率が50%となっている場合、切り出された各要素の水平および垂直方向のサイズが1/2倍になるように縮小処理が実行される。
但し、図表は、文字に比べてサイズが大きいため、携帯端末10(スマートフォン)のように表示部14aの画素数が少ない場合(高さおよび幅が小さい場合)、リフロー表示する際のスクロールの方向と直交する方向の長さがコンテンツ表示領域よりも長くなりがちである。このような場合、図表の長さ(スクロールの方向と直交する方向の長さ)をコンテンツ表示領域に収めるようにするための方法として、指定されている表示倍率と関係なく、図表の長さ(スクロールの方向と直交する方向の長さ)をコンテンツ表示領域の長さ(スクロールの方向と直交する方向の長さ)以下になるように縮小する。また、図表の長さがコンテンツ表示領域の長さよりも短い場合、指定されている表示倍率と関係なく、図表の長さがコンテンツ領域の長さを超えない程度に図表を拡大してもよい(表示倍率を指定値から変更する)。なお、以上の手法は、たとえば各要素の要素種別を参照リストから参照して「図表」である場合に表示倍率を変更することで実行できる。或いは、注目要素の切り取り時の横幅(スクロールの方向と直交する方向の長さ)がコンテンツ表示領域のスクロールの方向と直交する方向の長さに所定係数(たとえば0.5)を乗じたものよりも大きい場合に倍率を変更するようにすれば、図表のみならず非常に大きな文字などにも対応できる。
つぎに、図6に示されている配置処理(S106)を説明する。変倍処理された注目要素の横幅をSW、縦の長さをSHとするとき、配置座標(Px,Py)を左上として要素の配置を行う場合、その右下座標は(Px+SW−1,Py+SH−1)となる。配置座標は、最初にPx=IndentX1,Py=0として初期化されている。
注目要素が下記の式(1)を満たす場合、スクロール方向と直交する方向においてコンテンツ領域をはみ出さずに注目要素を配置することができ、注目要素に対する配置座標を(Px,Py)として確定する。
Px+SW≦DW・・・・・・ 式(1)
ただし、DWは、コンテンツ表示領域におけるスクロールの方向と直交する方向の長さ(横書きの場合は横幅)の大きさを示す。
注目要素が式(1)を満たさないとき、コンテンツ表示領域をはみ出すとして、以下に説明する方法により行の折り返し処理を実行する(注目要素の属する行を、注目要素の直前の要素(並び順が注目要素の直前の要素)の属する行の下の行にする)。
注目要素の直前の要素を含む行の下端座標をY=LineMaxYとするとき、注目要素の配置座標をPx=IndentX2、Py=LineMaxY+LineSpaceY2と更新した上で、式(1)を満たすか否か判定し、満たす場合は配置座標を(Px,Py)として確定する。
ただし、IndentX1、IndentX2は、インデントの大きさを示すゼロ以上の係数であり、正の値をとるとき、行の先頭文字が右側にシフトされた形で要素が配置される。IndentX1、IndentX2の値は、特に限定されるものではないが、IndentX1が段落の先頭位置を示す値に設定されるのに対し、IndentX2は段落の2行目以降の各行の先頭位置に適用される点で異なる。それゆえ、IndentX2は、IndentX1よりも小さい値が好ましく、ゼロであることが望ましいが、特にそれに限定するのでなく、たとえば双方ともゼロとして行頭のインデントを持たないレイアウトとしても構わない。LineSpaceY2は、行間距離の大きさを示す係数であり、値が大きくなるほど行間距離が大きくなる。LineSpaceY2の値は、特に限定されるものではないが、コンテンツ領域の縦の長さの5%というように表示部14aのサイズに応じて設定されてもよいし、SHに所定係数α(たとえばα=1.5)を乗じた値とすることで、注目要素を基準として行の高さのα倍を行間距離とすることができる。以上のようにすることにより、注目要素とその直前の要素とが水平方向に並ばないように配置座標を変更することができ、行を折り返すことができる。
注目要素の配置座標(Px,Py)が確定すると、注目要素の配置座標(Px,Py)、SWおよびSHを記憶部12に記憶させる。なお、変倍後の横幅および縦の長さの代わりに変倍率Rを記憶させても良い。
注目要素の配置座標を記憶すると、次の注目要素の配置座標の初期値を(Px+SW+CharaSpaceX−1,Py)として更新する。但し、CharaSpaceXは文字同士の字間距離を示す所定係数である。CharaSpaceXの値は、特に限定されるものではなく、たとえばコンテンツ表示領域の横幅の1%というように表示部14aのサイズに応じて設定されてもよい。或いは、CharaSpaceXの値は、直前に参照された注目要素の横幅SWに所定係数β(たとえばβ=0.1)を乗じた値としてもよい。この場合、直前の注目要素の大きさに応じた字間距離を設定することができる。
つぎに、図6の段落変更処理(S103、S108)について説明する。段落変更処理では、注目要素の直前の要素が含まれる行の下端座標をY=LineMaxYとすると、注目要素の配置座標をPx=IndentX1,Py=LineMaxY+LineSpaceY1として確定する。
なお、LineSpaceY1は、行間距離の大きさを示す係数であり、値が大きくなるほど行間距離が大きくなる。LineSpaceY1の値は、特に限定されず、LineSpaceY2と同様の方法で設定できる。但し、LineSpaceY1は、異なる段落間の行間距離を示すのに対し、LineSpaceY2は、同一の段落内における行間の距離を示す点で異なる。それゆえ、LineSpaceY1の値としては、LineSpaceY2より大きな値が設定される方が望ましい。
レイアウト変更部111は、注目要素に対して以上の処理を行って注目要素の配置座標を確定すると、履歴要素種別更新処理(S107)を行った上で、次の注目要素に対して以上の処理を繰り返す。
なお、図4の参照リストではなく、図22に示す参照リスト(同一段落内であっても文字要素と図表要素との境界に改行要素を挿入した参照リスト)を使用する場合、レイアウト変更部111は、図23のフローに示す手順で処理を実行する。ここで、図23の要素切り出し処理(S104)、要素変倍処理(S105)、配置処理(S106)、段落変更処理(S108)は、図6の素切り出し処理(S104)、要素変倍処理(S105)、配置処理(S106)、段落変更処理(S108)と同一であるため、その説明を省略する。すなわち、図22に示す参照リストを使用する場合の図23の処理フローにおいては、要素が変更される場合は必ず改行されるようになっているため、図6のS102,S103,S107が省略されることになる。
つぎに、図4の参照リストではなく、図5の参照リストを用いる場合のレイアウト変更部111の処理について以下説明する。図7は、図5の参照リストを用いる場合のレイアウト変更部111の処理手順を示すフローチャートである。
レイアウト変更部111は、図5の参照リストを参照し、N個の各要素のうち並び順の小さい要素から順に注目要素として扱っていく。そして、図7に示すように、レイアウト変更部111は、注目要素について、要素切り出し処理(S104)、要素変倍処理(S105)を順に実行する。図7の要素切り出し処理(S104)、要素変倍処理(S105)の内容は、図6の要素切り出し処理(S104)、要素変倍処理(S105)と同一であるため、その説明を省略する。続いて、レイアウト変更部111は、図5に示す参照リストに示されている段落IDを参照して、注目要素が、注目要素の直前の要素と同じ段落であるかどうかを判定する(S110)。
注目要素が直前の要素と異なる段落である場合、すなわち判定処理が偽である場合(S110にてNO)、図7に示すように、段落変更処理(S108)、配置処理(S106)を順に実行する。なお、図7の段落変更処理(S108)、配置処理(S106)の内容は、図6の段落変更処理(S108)、配置処理(S106)と同一であるため、その説明を省略する。なお、注目要素が、直前の要素を含む段落内の、図表を含む小段落である場合は、直前の要素と異なる段落であるとみなすことで、文字列と図表との間、もしくは図表と図表との間を改行することができる。また、図示しないが、上記小段落が、複数の図表を含んでいる場合、上記小段落内の図表を参照するごとに段落変更処理を実行するようにしても良い(すなわち小段落内の図表を参照するときは、S110は常にNOに固定されるようにしても良い)。
これに対し、注目要素が直前の要素と同じ段落である場合、すなわち判定処理が真である場合(S110にてYES)、段落変更処理(S108)をスキップして配置処理(S106)を行う。また、図示されていないが、注目要素のリスト番号が1の場合も(つまり最初の注目要素の場合)、段落変更処理(S108)をスキップして配置処理(S106)を行う。
(表示制御部112について)
つぎに、表示制御部112の処理内容を説明する。表示制御部112は、文書画像を構成する要素ごとに、レイアウト変更部111にて求められた配置座標から、コンテンツ表示領域に対する位置関係を示した描画座標を算出する。具体的には、各要素の配置座標を(Px,Py)とするとき、描画座標(Ox,Oy)は以下の式(2)および式(3)から求めることができる。
Ox = Px + OffsetX ・・・・・・式(2)
Oy = Py + OffsetY ・・・・・・式(3)
OffsetX,OffsetYはオフセット値であり、全ての要素について同一の値を用いる。
ここで、文書画像が横書きの場合(文書の行方向と表示画面の水平方向とが一致する場合)、全ての要素において、OffsetXを0で固定し、OffsetYをスクロールの度に変更する。文書画像が縦書きの場合(文書の行方向と表示画面の垂直方向とが一致する場合)、OffsetYを0で固定し、OffsetXをスクロールの度に変更する。
図8は、描画座標に基づいて文書画像を表示する場合の表示例を示す。文書画像の先頭の要素について、配置座標のY座標値は0であるが(図10の(a))、描画座標のY座標値はOffsetYに変更される(図8)。また、配置座標が(0,−OffsetY)であった位置が描画座標では(0,0)になり、この位置がコンテンツ表示領域の原点となる。
図8に示すように、コンテンツ表示領域の横幅をDW、縦の長さをDHとし、コンテンツ表示領域の左上を原点(0,0)、右下を(DW−1,DH−1)とする。そして、各要素について、式(2)および式(3)で得られた描画座標(Ox,Oy)を左上とし、横幅SW、縦の長さSHで描画したときの矩形範囲の一部ないし全部がコンテンツ領域に重複する場合、当該要素に対する描画処理を行う(当該要素を表示させる)。
図9は、図8のように描画座標が求められた場合の携帯端末10のコンテンツ表示領域の様子を示した図である。図8の要素1(「こ」)や要素5(「で」)は、コンテンツ表示領域に重複しないため表示されない。これに対し、図8の要素2(「の」)や要素4(「落」)は、一部がコンテンツ表示領域と重複しており、重複箇所が表示される。また、図8の要素3(「第」)は、全体がコンテンツ領域と重複しているため表示される。
また、表示制御部112は、入力部14bからの信号によってスクロール指示(スクロール操作)を検出すると、スクロール指示に応じてオフセット値を変更することにより、文書画像をスクロールさせるようになっている。以下では、この点を説明する。
図10は、オフセット値を変化させるとコンテンツ表示領域に描画される範囲が変化する様子を説明するための図である。図10では、DW=1000,DH=1500としている。
図10の(a)は、レイアウト変更部111にて求められた配置座標に基づいて各要素が配置される文書画像を示す。図10の(b)は、図10の(a)に示す文書画像のうち、OffsetY=−200とした場合にコンテンツ表示領域に描画される範囲を示す。図10の(c)は、図10の(a)に示す文書画像のうち、OffsetY=−400とした場合にコンテンツ表示領域に描画される範囲を示す。なお、図10の(b)および(c)において、網掛けされている範囲がコンテンツ表示領域(画像が表示される領域)である。すなわち、OffsetYを0以下の値とする場合、OffsetYの値が減少するほど(絶対値が大きくなるほど)、文書画像のうちの表示範囲が下側にシフトし、OffsetYの値が増加するほど(絶対値が小さくなるほど)、文書画像のうちの表示範囲が上側にシフトする。それゆえ、スクロール指示(タッチ操作)に応じてオフセット値を調整すれば、スクロール指示に追随させて文書画像をスクロールさせることができる。
つぎに、スクロール指示(スクロール操作)に応じてオフセット値を変更して画像をスクロールさせる処理を詳細に説明する。図11は、タッチ操作によるスクロール指示を説明するための図である。スクロール指示開始時(時刻t=0)におけるタッチ検出位置を点A0、時刻t=T1におけるタッチ検出位置を点Aとするとき、表示制御部112は、点A0から点Aへの変位量(距離)に応じてオフセット値を変更する。
例えば、横書きの文書画像の場合において、点A0のY座標をay0、点AのY座標をayとし、時刻tにおけるオフセット値をOffsetY(t)としたとき、表示制御部112は、時刻t=Tのオフセット値OffsetY(T)を、式(4)によって求める。
OffsetY(T)=OffsetY(0)−f(ay−ay0)・・・式(4)
関数f(x)は、xに正の相関を持ち、f(0)=0となる奇関数である。たとえばf(x)=xを挙げることができる。
図11の場合、ay<ay0であるため、OffsetY(T)>OffsetY(0)となり、上方向に文書画像がスクロールされる。
同様にして、時刻t=T2におけるタッチ検出位置A’のY座標をay’とすると、ay’<ayであるため、点A’の方が、点Aよりも、点A0との間の垂直方向距離(Y座標の差)が大きく、OffsetY(T2)>OffsetY(T1)となり、より上方向にスクロールされることになる。なお、OffsetYの算出は、タッチ操作におけるY方向の変位量を用いて行われるが、タッチ操作におけるX方向の変位量や符号は無関係である。
さらに、時刻t=T3におけるタッチ検出位置A’’のY座標をay’’とすると、ay’’>ay0であることから、OffsetY(0)>OffsetY(T3)となり、タッチ開始位置から下側へ向けた方向に画像がスクロールされることになる。
つまり、本実施形態によれば、各要素の配置座標(Px,Py)のうち、画像のスクロールの方向と平行な座標軸の座標値(横書きの場合はPy)に対してスクロールの量に応じたオフセット値(各要素に共通の値)を加算する加算処理を行うことによって各要素の描画座標(Ox,Oy)を求める形態である。この形態では、文書画像がスクロールされる場合、各要素において、スクロール方向と平行な座標軸の座標値に加算されるオフセット値(各要素に共通値)を変更するだけで描画座標(Ox,Oy)を更新できる。それゆえ、スクロールの度に、各要素のx座標値およびy座標値の両方を再演算していた従来構成よりも処理負荷を抑制できる効果を奏する。
〔実施形態2〕
実施形態2では、ユーザに文書ファイルが指定されてレイアウト変更部111および表示制御部112の処理によって文書画像がタッチパネル14に表示された後、ユーザがズーム指示(ズーム操作)を行った場合の表示倍率の変更処理について説明する。
なお、実施形態1で説明したように、制御部11は、コンテンツ表示領域上にて2点以上の同時タッチを検出した場合、画像のズーム指示(ズーム操作)の開始であると識別するようになっている。また、制御部11は、ズーム指示が開始されてから、ズーム指示開始時に検出したタッチ点数と同じ点数のタッチがコンテンツ表示領域上で検出され続けている間はズーム指示が継続されていると識別し、コンテンツ表示領域上で検出されるタッチ点数が異なる点数に変化した場合はズーム指示が終了したと識別するようになっている。また、2点タッチの場合、2点の間隔を広げる動きで画像拡大となり、2点の間隔を狭める動きで画像縮小となる(3点タッチの場合、3点を頂点とした三角形を広げる動きで画像拡大となり、三角形を狭める動きで画像縮小となる)。
ズーム指示開始時(時刻t=0)におけるタッチ検出点数をNとし、第i番目(i=1,2,…,N)のタッチ検出位置を点Ai0とし、最終検出時(t=T)における第i番目のタッチ検出位置を点Aiとするとき(タッチ検出点数がN以外になるとズーム指示が終了する)、N個のタッチ検出位置の変位を用いたよく知られた方法により表示倍率を変更することができる。
たとえば、N個のタッチ検出位置から得られる評価値を各時刻で算出し、時刻t=0における評価値と、時刻t=Tにおける評価値との差異により表示倍率を変更する方法が挙げられる。より具体的に説明すると、表示制御部112は、N個のタッチ位置の平均座標値に相当する点Mを求め、点Mと各点Aとの距離の総和を評価値Eとして、下記の式(5A)を用いて表示倍率を求めることができる。
Zoom(T)=Zoom(0)+g(E(T)−E(0))・・・式(5A)
Zoom(t)は時刻tにおける表示倍率を示し(Zoom(t)=1.0のとき表示倍率100%とする)、E(t)は時刻tにおける評価値を示すものとする。
関数g(x)は、xに正の相関を持ち、g(0)=0となる奇関数である。たとえば、g(x)=c・xが挙げられる。
cは、所定係数である。たとえば、cは、コンテンツ表示領域の水平方向の画素数と垂直方向の画素数のうち小さい方の逆数に16を乗じた数とすることができる。このようにcを設定する場合、評価値E(T)が、評価値E(0)よりも、コンテンツ表示領域の短辺の長さ(水平方向の長さ)の1/16だけ大きくなると表示倍率を100%増加させることができる。
図12、図13および図14は、表示倍率の変更方法を説明するための図である。図12は、ズーム操作開始時(時刻t=0、タッチ検出点数N=2)のタッチ位置を示したものである。図13は、ズーム操作開始時よりタッチ位置を互いに遠ざけた場合(時刻t=T)の様子を示したものである。図13の状態の場合、時刻t=0の場合に比べて各タッチ位置と点Mとの距離が大きくなり、評価値が大きくなるために表示倍率が大きくなる。これに対し、図14は、ズーム操作開始時よりタッチ位置を互いに近づけた場合(時刻t=T’)の様子を示したものである。図14の状態の場合、時刻t=0の場合に比べて各タッチ位置と点Mとの距離が小さくなり、評価値が小さくなるために表示倍率が小さくなる。
以上のようにタッチパネル14に対するタッチ操作がズーム指示である場合、制御部11は、入力部14bからの入力信号に基づいて検出したタッチ点数、タッチ位置を参照して、式(5A)により表示倍率を求める。
このようにして表示倍率が求められると、レイアウト変更部111は、算出された表示倍率を用いてレイアウト変更処理を再度行って配置座標を求める。これは、表示倍率の変化に応じて各要素の配置座標も変える必要があるからである。すなわち、レイアウト変更部111は、図6、図7、または図23の処理を実行することになるが、算出された表示倍率は要素変倍処理(S105)において用いられる。続いて、表示制御部112は、レイアウト変更部111にて求められた配置座標から描画座標を求め、描画座標に基づいて文書画像を表示部14aに表示させる。このようにして、更新された表示倍率で文書画像が表示されるのである。
以上示した本実施形態によれば、表示倍率を変更する場合(変倍処理を行う場合)、各要素の表示位置(描画座標)を決定する前に、文書画像全体のうちの各要素の座標(配置座標)を求めるようになっているため、インデントの位置がずれるといった事態(例えば図47の符号500)が起こり難いというメリットがある。
これに対し、先行技術によれば、表示倍率を変更する場合(変倍処理を行う場合)、先ず文書画像の中で表示される文字の位置を設定するようになっているため、図47の符号500に示すようにインデントの位置がずれるといった事態が発生し易い。例えば、表示倍率変更前において、図46に示す文書画像全体のうち、最上段を含まない範囲が表示されており、表示範囲の先頭位置(最上段の左隅)に符号650の「文」という文字が配されている場合を想定する。先行技術によれば、この場合に表示倍率を変更すると、先ず、表示倍率変更前に表示範囲の先頭位置に配されていた文字(符号650)の表示位置を決定するようになっている。具体的には、表示倍率変更前に表示範囲の先頭位置に配されていた文字を、表示倍率変更後も表示範囲の先頭位置に配置する。そして、符号650の文字の位置を基準として、符号650の文字の前後の各文字の配置が順次決定されていく。それゆえ、本来は各段落のインデントの位置が図48のようになるべきところ、先行技術によれば図47の符号500のようにインデントの位置がずれるといった事態が起こり得る。
〔実施形態3〕
ズーム指示により表示倍率を変更した場合、この変更に応じてオフセット値を調整しなければ、表示倍率変更前に表示されていた要素が表示倍率変更後には表示部14aからはみ出してしまい、表示倍率変更前に表示部14aからはみ出していた要素が表示倍率変更後には表示部14aに表示される場合がある。この場合、ユーザからすれば、文書画像全体のうち、意図せぬ範囲が突然表示されることになるという問題が生じる。
この問題を、図15を用いてより詳細に説明する。図15は、ズーム指示により拡大表示させる場合(表示倍率を高くする場合)、表示倍率の変更の前後でオフセット値を一定とした場合の描画座標と、コンテンツ表示領域に描画されている範囲とを示した図である。図15の(a)は、拡大前(表示倍率変更前)の描画座標および描画範囲であり、図15の(b)は、拡大後(表示倍率変更後)の描画座標および描画範囲である。コンテンツ領域の横幅はDW=1000,コンテンツ領域の縦の長さはDH=1500であり、拡大前および拡大後のいずれもOffsetY=−1500である。なお、図15において網掛け部分がコンテンツ表示領域である。図15に示す例では、拡大前では、図15の(a)に示すように、第2章の第3段落の先頭がコンテンツ表示領域の左上に位置している。オフセット値をそのままにして拡大処理を行うと、図15の(b)に示すように、拡大前にコンテンツ表示領域に含まれていた範囲が全く含まれない状態になる。
そこで、本実施形態では、表示制御部112は、ズーム指示が入力された場合、ユーザに注目されている要素をコンテンツ表示領域に残しつつ拡大または縮小できるようにオフセット値を調整する。以下では、ズーム指示がなされたときのオフセット値の調整手法を述べる。
タッチパネル14を用いてズーム指示を入力する場合、ユーザは、自身が注目している部分を中心としてタッチ操作を行う傾向にある。そのため、ズーム操作時における複数のタッチ位置の平均座標値に対応する地点から最も近い位置にある要素を、ユーザが注目している要素とみなすことができる。それゆえ、前記の平均座標値の位置からの距離が最も近い要素を選択し、この要素が拡大縮小後も表示されるようにオフセット値を調整すればよいと考えることができる。
しかし、単純な距離を算出する場合、次に示す不具合が生じることもある。段落最終行は前後の行よりも短くなることが多いが、ユーザが段落最終行に注目していて前記の平均座標値の位置が段落最終行の余白箇所に位置することになる場合、その行末の要素よりも前後の行に含まれる要素の方が前記の平均座標値の位置から近くなることがあり、ユーザが実際に注目している要素が選択されにくくなる。
これに対し、ズーム指示開始時にコンテンツ表示領域に表示されている各要素について、式(5B)に示す重み付きユークリッド距離を算出することで、行の方向(縦書き、横書き)に適した距離を得ることができるようになり、前記の不具合が抑制される。
Dist(i)=kx×{gx−mx(i)}2+ky×{gy−my(i)}2
・・・・・・式(5B)
式(5B)において、(gx,gy)は、時刻t=0(ズーム指示開始時)に検出された複数点のタッチ位置の平均座標値である(例えば、図12の点Mの座標値である)。式(5B)において、(mx(i),my(i))は、図16に示すように、参照リストにおけるi番目の要素が時刻t=0においてコンテンツ表示領域上に描画された際の当該要素の外接矩形の中心座標である。
式(5B)において、kxおよびkyは正の所定係数である。たとえば、図18のように、円の中心点P0と、円周上の各点Pi(i=1,2,…,8)とを設定し、点Pi毎に、中心点P0とのユークリッド距離(Dist(i))を算出する場合を想定する。この場合においてkx=kyとすると、Dist(i)は単純なユークリッド距離(もしくはそれに定数を乗じた値)となり、いずれの点Piについても、Dist(i)は同じ値となる。また、kx>kyとすると、垂直方向よりも水平方向の距離(中心点P0との座標値の差分の2乗値)に対する重みが大きくなるため、水平方向の距離がゼロとなる点P1および点P5は最もDist(i)が小さく、水平方向の距離が大きい点PiほどDist(i)が大きくなり、垂直方向の距離がゼロとなる点P3および点P7でDist(i)が最大となる。一方、kx<kyのとき、垂直方向よりも水平方向の距離に対する重みが小さくなるため、点P3および点P7は最もDist(i)が小さく、垂直方向の距離が大きい点PiほどDist(i)が大きくなり、点P1および点P5でDist(i)が最大となる。
式(5B)を用いて各要素のDist(i)を求める際、表示制御部112は、文書画像が横書きである場合はkx≦ky(たとえばkx=1,ky=4)とし、文書画像が縦書きである場合kx≧ky(たとえばkx=4,ky=1)と設定する。
これにより、横書きの場合においては、タッチ位置の左または右に行が存在すれば、前記行に含まれる要素は、前記行と垂直方向に並ぶ異なる行に含まれる要素よりも、Dist(i)が小さくなりやすくなる。また、縦書きの場合においては、タッチ位置の上または下に行が存在すれば、前記行に含まれる要素は、前記行と水平方向に並ぶ異なる行に含まれる要素よりも、Dist(i)が小さくなりやすくなる。
なお、Dist(i)が最小値をとるような要素が複数存在する場合、所定のルールに従って、最も近い要素を1つに決定しても良い。最も近い要素を選択するための所定のルールとして、たとえば当該複数の要素のうち、対応する参照リストのリスト番号が最も近い要素、すなわち最も早く参照される要素としても良いし、対応するリスト番号の順に並べた場合に中央に位置する要素としても良い。
したがって、段落最終行の余白のような箇所が複数点のタッチ位置の平均座標値の位置になった場合、平均座標値に対応する位置が最終行の末尾の要素から多少離れた位置であれば末尾の要素が選択され、平均座標値に対応する位置が最終行の末尾の要素から大きく離れた位置であれば前後の行の要素が選択されるようになる。それゆえ、段落最終行の余白のような箇所が複数点のタッチ位置の平均座標値になった場合であっても、ユーザが実際に注目している要素が選択されにくくなるという不具合を抑制できる。
以上のようにして、表示制御部112は、複数点のタッチ位置の平均座標値の位置から最も近い第j番目の要素を選択した後、第j番目の要素の時刻tにおける配置座標を(Pxj(t),Pyj(t))とすると、時刻t=Tにおけるオフセット値を、式(6)を用いて求める。
OffsetX(T)=OffsetX(0)
OffsetY(T)=OffsetY(0)+Pyj(0)−Pyj(T)
・・・・・・式(6)
OffsetX(t)は、時刻tにおけるX成分のオフセット値を示し、OffsetY(t)は、時刻tにおけるY成分のオフセット値を示す。なお、式(6)は、横書きの文書画像用のものであり、X成分のオフセット値は調整されず(0で一定)、Y成分のオフセット値が調整される。
以上の通り、表示制御部112は、ズーム指示を入力した場合、式(5B)を用いて各要素のDist(i)を求めて、最もDist(i)の小さい要素を選択し、この要素の配置座標を用いて式(6)からオフセット値を求めるようになっている。
これにより、ズーム後の第j番目の要素のY座標値(Pyj(T)+OffsetY(T))を、ズーム前の第j番目の要素のY座標値(Pyj(0)+OffsetY(0))と等しくすることができるため、ズーム指示により表示倍率が変更されても、変更の前後で同じY座標値で第j番目の要素をタッチパネル14に表示させることができる。
〔実施形態4〕
実施形態3の式(6)によれば、選択された第j番目の要素(以下要素jと称す)のズーム前の描画座標のY座標値とズーム後の描画座標のY座標値との差をΔYとすると、ΔY=0になる。しかし、ΔY=0になるようにオフセット値を調整する必要はなく、ΔYが所定範囲に収まっていればよい。
ここで、所定範囲は、要素jの表示倍率変更前の高さをSH1、要素jの表示倍率変更後の高さをSH2とするとき、−|SH1−SH2|以上かつ|SH1−SH2|以下に設定される。所定範囲をこのように設定することにより、表示倍率を変更する前後で要素jの下端を揃えるようにオフセット値を調整したり(図20参照)、表示倍率を変更する前後で要素jの上端を揃えるようにオフセット値を調整し(図19参照)、或いは表示倍率を変更する前後でスクロールの方向において要素jの中心を揃えるようにオフセット値を調整できる(このとき、表示倍率を変更する前後で、スクロールの方向と直交する方向における要素jの位置の違いは考慮しないものとする。)。
なお、要素jの上端を揃えるためには式(6)を用いてオフセット値を調整すればよく、要素jの下端を揃えるためには以下に示す式(7)を用いてオフセット値を調整すればよい。
OffsetX(T)=OffsetX(0)
OffsetY(T)=OffsetY(0)+(Pyj(0)+SH1)−(Pyj(T)+SH2)・・・・・・式(7)
もちろん、表示倍率変更前後で要素jの上端、下端、またはスクロールの方向の中心を揃えるようにオフセット値を調整する必要はなく、所定範囲内に収まるようになっていればよい。
〔実施形態5〕
また、実施形態3では、表示制御部112は、式(5B)によって求めたDist(i)に基づいて、複数点のタッチ位置の平均座標から最も近い要素を選択するようになっているが、常にDist(i)に基づいて要素を選択するとなると、複数のタッチ位置の平均座標が文字を囲む最小矩形内に入っているにも拘わらず、隣接する文字の方が近いとみなされることもまれにある。
図17は、英単語「Will」を構成する各アルファベットがそれぞれ要素として認識されており、レイアウト変更部111によるレイアウト変更処理によって各要素が順に再配置された後の様子を示している。図17において、平均座標は、要素91(Wの文字)を囲む最小矩形内に含まれている一方で、要素91の中心座標よりも、要素92(iの文字)の中心座標の方が近くなっている。それゆえ、表示制御部112は、複数のタッチ位置の平均座標から最も近い要素を要素92と判定する可能性がある。
このことを抑制するために、表示制御部112は、文字を囲む最小矩形内に平均座標(gx,gy)が位置している場合、ユークリッド距離(Dist(i))は関係なく、その文字を平均座標から最も近い要素として選択するようになっていてもよい。
〔実施形態6〕
また、携帯端末10は、文書を撮影して文書画像を生成する撮影装置を備えていてもよい。この場合、携帯端末10は、画像を入力する画像入力装置としても機能することになる。
そして、携帯端末10において、撮影装置から得られた文書画像に基づいて参照リストを生成し、この参照リストおよび文書画像を用いて配置座標および描画座標を求め、これら座標を用いてリフロー表示を行う。
ここで、表示制御部112は、リフロー表示される文書画像を閲覧したユーザに対して、可読性の適否を示す適否判定結果を入力することを促すガイド画像を表示部14aに表示させてもよい。ここで、表示制御部112は、「適」を示す判定結果をユーザが入力部14bを介して入力した場合、文書画像データや参照リストを記憶部12に保存し、「不適」を示す判定結果をユーザが入力部14bを介して入力した場合、表示処理を中断して文書画像データや参照リストを消去して、処理を再実行してもよい(撮影、参照リスト生成、リフロー表示を再実行する)。これにより、撮像に失敗した場合の手間を減らすことができる。
また、同じ文書画像データに対してリフロー表示を再度行いたい場合は、一度取得した文書画像データおよび参照リストを記憶部12に保存しておくことで参照リストの生成処理を省略することができる。
〔実施形態7〕
以上にて述べた各実施形態では、横書きの文書画像を例にして説明しているが、縦書きの文書画像に対しても勿論本発明の実施形態を適用可能である。
但し、本実施形態において、横書き文書画像では、左上を原点とし、左から右方向をx軸(表示部の水平方向)の正方向、上から下方向をy軸(表示部の垂直方向)の正方向として配置座標や描画座標を設定しているが、縦書き文書画像では、右上を原点とし、右から左方向をx軸(表示部の水平方向)の正方向、上から下方向をy軸(表示部の垂直方向)の正方向として配置座標や描画座標を設定することになる。
それゆえ、縦書きの場合、以上にて述べた式(1)を下記の式(1)’に置き換えて使用することになる。具体的には、S106の配置処理において、配置座標(Px,Py)を右上として要素の配置を行う場合、その左下座標は(Px+SW−1,Py+SH−1)となる。配置座標は、最初にPx=0、Py=IndentY1として初期化される。そして、注目要素が下記の式(1)’を満たす場合、スクロール方向(水平方向)と直交する方向においてコンテンツ領域をはみ出さずに注目要素を配置することができ、注目要素に対する配置座標を(Px,Py)として確定する。
Py+SH≦DH ・・・・・・ 式(1)’
また、縦書きの場合、以上にて述べた式(4)を下記の式(4)’に置き換えて使用することになる。具体的には、スクロール指示開始時(時刻t=0)のタッチ検出位置を点A0、時刻t=T1におけるタッチ検出位置を点Aとし、点A0のX座標をax0、点AのX座標をaxとし、時刻tにおけるオフセット値をOffsetX(t)とするとき、表示制御部112は、時刻t=Tのオフセット値OffsetX(T)を、式(4)’によって求める。
OffsetX(T)=OffsetX(0)−f(ax−ax0)・・・式(4)’
また、縦書きの場合、以上にて述べた式(6)を下記の式(6)’に置き換えて使用する。
OffsetX(T)=OffsetX(0)+Pxj(0)−Pxj(T)
OffsetY(T)=OffsetY(0)・・・・・・式(6)’
さらに、縦書きの場合、以上にて述べた式(7)を下記の式(7)’に置き換えて使用する。
OffsetX(T)=OffsetX(0)+(Pxj(0)+SW1)−(Pxj(T)+SW2)
OffsetY(T)=OffsetY(0)
・・・・・・式(7)’
但し、要素jの表示倍率変更前の横幅をSW1、要素jの表示倍率変更後の横幅をSW2としている。
〔実施形態8〕
実施形態8は、携帯端末10の制御部11が参照リスト作成部を備える形態である。参照リスト作成部は、複合機やスキャナから受信した文書ファイルの文書画像に基づいて、当該文書画像に対応する参照リスト(例えば図4)を作成するブロックである。
なお、参照リスト作成部による参照リストの作成方法であるが、文書画像に基づいて図4、図5または図22のリストを作成できる手法であれば、いかなる手法でも構わないが、本実施形態では、本願出願人による先行出願である特願2014−018751号の実施の形態1にて述べられている手法を利用する。以下、特願2014−018751号の実施の形態1にて述べられている手法を詳細に説明する。
図24は、参照リスト作成部22の構成を示すブロック図である。参照リスト作成部22は、携帯端末10の制御部11に設けられている(図1では図示せず)。参照リスト作成部22は、複合機、スキャナ等から携帯端末10が複合機、スキャナ等の外部装置から受信した文書画像を入力し、この文書画像に基づいて、この文書画像に対応する参照リストを作成するブロックである。
参照リスト作成部22は、行解析処理部31と、行ブロック解析処理部34と、レイアウト解析処理部35と、リスト生成部36とを備える。以下では、文書を構成する個々の文字、図表等を纏めて要素と呼ぶ。
行解析処理部31は、入力された文書画像から各要素を抽出して、文字から構成される文字列の行と、図表から成る図表行とに分類する。更に、文書の横書き、縦書きといった記述方向を示す文書第1方向を解析する。
行ブロック解析処理部34は、行解析処理部31で抽出された行を、少なくとも1つ以上有する行ブロックに統合する処理を行う。
レイアウト解析処理部35は、行ブロック解析処理部34で分類された行ブロック同士の位置関係から、段組構成を解析して文書全体の行の順序付けを行い、行の前後関係から改行位置を検出することで、文書を1つ以上の段落に分類し、段落毎に行の情報を格納した文書構造ツリーを生成する。詳細は後述する。文書構造ツリーの各段落は、文字列の行の順序の情報と、図表の順序の情報をそれぞれ分けて格納することで、図表の配置を段落内で修正できるようにする。
リスト生成部36は、レイアウト解析処理部35で生成された文書構造ツリーに従って、入力文書画像の文字、図、表の各要素を順序通り参照するための命令と、段落の開始及び終了を宣言するための命令とを示した参照リストを生成する。参照リストのフォーマットは特に固定されておらず、例えばCSV(Comma-Separated Values)形式のテキストデータとして生成したものをファイル出力してもよい。
以下、参照リスト作成部22の各処理部について詳述する。
[1.行解析処理部]
<1−1.行解析処理部の構成>
行解析処理部31は、入力された文書画像データ(入力文書画像)から各要素画像を抽出し、文字(文字画像)から成る行(文字列行)と、図(図画像)又は表(表画像)から成る行(図表行)とに分類する。行解析処理部31は、文字列抽出処理部32及び図表抽出処理部33を備えて構成される。行解析処理部31は、更に、文書の横書き又は縦書きといった記述方向を示す文書第1方向を解析する。
<1−2.文字列抽出処理部>
文字列抽出処理部32は、入力画像データから個々の文字を検出し切り出し処理を行うと共に、文字が複数並べられて構成される文字列を抽出する処理を行う。個々の文字の検出手段は多数提案されており、例えば、特許文献2(特許第5153857号)では、文書画像中の文字構成要素の領域、及び文字からなる文字列領域を検出する方法が提案されている。
特許文献2に記載の方法では、文書画像から前景画素を検出し、前景画素から特に文字を構成していると思われる画素の集合を囲む最小外接矩形を文字構成要素として抽出する。更に、上下左右の各方向における近隣の各文字構成要素の矩形同士の距離から文字列として連続する文字構成要素の関係にあるかを判定し、その連続する矩形の連続数から、文字列領域を特定する。このとき、左右方向における連続数が上下方向における連続数を上回る場合は横書きの文字列領域として、上下方向における連続数が左右方向における連続数を上回る場合は縦書きの文字列領域として、文字列の持つ方向(文字列の方向、記述方向)を同時に取得する。
本実施の形態では、一例として、特許文献2に記載の方法を利用して文字及び文字列を抽出するものとする。なお、文字及び文字列の抽出方法は、特許文献2に記載の方法に限らずほかの方法を用いることができる。例えば、光学式文字読取装置(Optical Character Recognition;以下OCR)で個々の文字や、文字列を検出してもよい。
<1−3.図表抽出処理部>
図表抽出処理部33は、入力画像データから図(図領域)及び表(表領域)を検出し、切り出し処理を行うものである。図領域の検出手段は多数提案されており、例えば、特許文献3(特開2009−194740号)で挙げられる方法により図領域を特定することができる。特許文献3に記載の方法では、入力された画像の所定領域毎に画素値の出現頻度(即ち、ヒストグラム)を求めた場合に、図領域の一つである写真領域上の各画素では濃度変化が広範囲に及ぶヒストグラムが得られることを利用して、ヒストグラムのエントロピー(平均情報量)を算出し、エントロピーが高い領域を抽出することで精度よく写真領域を抽出することが可能となる。
また、表領域の検出手段も多数提案されており、本実施の形態では既知の方法により表領域を検出する。例えば、特許文献2では、文書画像データからラインとなる可能性のある候補画素を抽出し、前記候補画素が水平方向もしくは垂直方向に所定画素数以上連続する場合に前記連続する候補画素の集合をラインとして抽出し、前記抽出された水平方向及び垂直方向のラインの位置関係から、各ラインが表を構成する罫線であるか単一のラインであるかを判定し、同一の表を構成するラインの集合について、それら全てを囲む最小外接矩形を表領域として抽出する方法を挙げている。この方法を用いることができる。
なお、文字列抽出処理部32で抽出した文字が、図表抽出処理部33で抽出した図又は表として抽出した範囲と重複する場合、該抽出した文字をキャンセルする。特に、抽出された表には文字が含まれる可能性が高いが、表のサイズを表示領域の幅に合わせるためには表を構成する各列の幅を調整する必要がある。結果として、調整後の列幅に合わせて、表内の文字列は折り返し表示されて、かえって可読性を低下させる原因となるため、本実施の形態では、表として抽出された領域については、文字も含めたまま図表として切り取って表示することとする。
<1−4.行IDの設定>
行解析処理部31は、さらに、以上のようにして抽出された文字列行、もしくは図表行に対して、その行であることを識別する重複しない番号として行ID(Identification)を設定する。1つの行IDについて、その行IDを有する行が2つ以上存在しなければ、必ずしも文書の順序に従って行IDを割り振る必要は無い。行IDの設定方法として、行IDが「0」の場合を存在しない行であるとして無効行とし、例えば、各ページの文書画像において、読み取った原稿の左上を原点(0,0)とし、原点に対して、右方向をX座標、下方向をY座標となる座標系を採用し、行の範囲を表わす最も左上のY座標が小さい順に行IDを1から連番で割り振る方法が挙げられる。なお、Y座標が同じ行同士はX座標が小さい方の行を優先する。この方法を用いる場合、段組構成により必ずしも文書の読み順序通りに行IDが割り振られる訳ではないが、横書き文書であれば行が上にあるほど順序が先である可能性が高いため、比較的文書の順序を反映した行IDの割り振り方になると言える。行IDの設定方法はこれに限らず、自由に選択することができる。
<1−5.文書第1方向及び文書第2方向の決定>
行解析処理部31は、1ページの文書画像における全ての行について、文字列行か図表行かの分類が終わると、文字列の方向から、文書全体の方向を示す文書第1方向を決定する。文書第1方向は、横書きのとき水平となり、縦書きのとき垂直となる。文書第1方向は、取得した全ての文字列の持つ方向を分類し、その比率により決定する。文書第1方向を決定するための比率の算出方法の簡単な例として、単純に横書きもしくは縦書きの文字列の数をカウントして、その数の比率を算出する方法が挙げられる。この方法の場合、例えば横書きの行数と縦書きの行数を比較して、多い方の方向を文書第1方向として決定(設定)する。文書第1方向の決定は上記の方法に限らず様々な方法を採用することができる。
なお、算出した比率が所定閾値(例えば、0.7)以下である場合、文書には縦書きの行と横書きの行とが無視できない比率で混在しており文書全体の方向を一意に判別できないとして、以降の処理を中断することができる。
さらに、上記の方法によって文書第1方向を決定すると、文書第1方向に直交する方向として文書第2方向を決定(設定)する。すなわち、文書第1方向が水平(横書き)の場合、文書第2方向は垂直、文書第1方向が垂直(縦書き)の場合、文書第2方向は水平となる。
また、複数のページを入力とする場合、先に全てのページにおいて行の抽出を行い、一部のページ又は全部のページの行の情報から、全てのページで同一の文書第1方向を決定してもよい。前記一部のページの選択方法として、例えば、表紙や扉、挿絵や写真、付録、後付け等、本文とは異なるレイアウトが含まれている可能性が高いとして、事前に先頭ページと最終ページを除いてもよい。
<1−6.記号(約物)の統合処理>
なお、個々の文字の切り出しにおいて、以下に示すような記号(約物)の統合処理を追加することができる。記号には、例えば行頭に来ることが禁止とされる(行頭禁則)ものや、行末に来ることが禁止とされる(行末禁則)ものがあり、図25に示すような文字がその一部として挙げられる。切り出した個々の文字を表示した際、行の折り返しによりこれらのルールが守られず可読性が低下する場合がある。そこで、行頭禁則の記号については、1つ前の文字と統合し、行末禁則の記号については、1つ後の文字と統合することで、単独で行頭もしくは行末に来ることがなくなる。
各文字が、前記したルールを持つ記号であるかの判定方法は公知の方法を使用することができる。例えば、OCR処理を利用して文字種を照合してもよいし、文字の大きさや、文字を構成する画素の特徴から判別してもよい。例えば句読点の場合、図26のように横書きなら行の下半分のみで構成され、また行の高さ(矢印で示された範囲)に比べて半分程度の幅を持つ場合、その文字が句読点である可能性が高いとして、1つ前の文字と統合してもよい。図26では横書きの例を示したが、縦書きの場合も同様に統合を行うことができる。半角英小文字と区別するため、行を構成する他の文字の高さや幅の傾向から和文、英文の判定を加え、和文の場合のみ句読点と判定するようにする等の処理を追加してもよい。例えば、和文ではひらがな、カタカナ及び漢字等の全角文字が文章の大半を占めており、行の上半分もしくは下半分のみで構成される文字が少なくなる傾向がある。また、半角文字に比べて、全角文字では行の高さに対して文字の横幅が半分より大きい文字の種類が多い。従って、(1)行を上下に分割する水平方向の直線をまたぎ、(2)文字の横幅が行の高さに所定係数(例えば0.6)を乗算した値以上である、文字数をカウントし、行を構成する文字数に対して前記(1)及び(2)を満たす文字数の割合が所定閾値(例えば0.5)以上である場合に、その行が和文であるとして判定する処理を適用することができる。和文、英文の判定方法はこの方法に限らず、他の方法により判定してもよい。また、縦書きの文書である場合は自動的に和文とみなしてもよい。ここで、句読点と、「ァ」等小さい和字との区別がつかない可能性もあるが、これらの小さい和字も行頭禁則であるため句読点と同様に統合しても問題無い。そのため、厳密に句読点専用の処理とする必要はない。また、全角文字でも、「I」や「1」等、余白を除けば横幅が小さな文字があり、さらに「_」(アンダーライン)や、上付き文字、下付き文字等、上半分もしくは下半分のみで構成される文字が含まれる場合もある。逆に、半角英字でも、「M」や「W」等はフォントによって横幅が大きくなることもあるので、厳密に、和文と英文との判定を行うのが難しい場合がある。
<1−7.処理例>
行解析処理部31が実行する処理の具体例として、図27に示す構造の文書画像(1ページ)に対して行解析処理を適用する場合について説明する。行解析処理部31は、図28に示すように、その行の要素を全て含んだ最小サイズの外接矩形の範囲を各行の領域として分離し、それぞれの行に、行IDを、外接矩形の左上の垂直座標(Y座標)位置の順で割り当てる。図28に示す文書画像では、行IDが105の行が図表の行であることを除いては、残りの行はいずれも横書きの文字列の行であり、縦書きの文字列の行は1つも含まれていない。そのため、行解析処理部31は、この文書画像における文書第1方向は水平方向であると決定する。
[2.行ブロック解析処理部]
<2−1.行ブロック解析処理部の処理>
行ブロック解析処理部34は、行解析処理部31で分類された行を、行を少なくとも1つ以上有する行ブロックに統合する処理を行う。行ブロック解析処理部34は、行解析処理部31で分類された文字列行を、少なくとも1つ以上の文字列行から成る文字列の行ブロックに統合し、重複しない行ブロックIDを持つ新規行ブロックとして記憶部12に記憶(登録)する。図表行については、単一行で1つの行ブロックを構成するものとし、それぞれ重複しない行ブロックIDを持つ新規行ブロックとして登録する。
文字列の行ブロック統合処理について以下で詳細に説明する。初めに、行解析処理部31で分類された行のうち文字列行のグループから、注目行L1を選択する。続いて、注目行L1に関して、前方及び後方(定義は、後述の(2−5)章を参照)に連続する文字列行を探索する。具体的には、文字列行のグループの、注目行L1とは異なる文字列行から、注目行L1の前方もしくは後方に連続する文字列行を最大1つずつ選択する。注目行L1の連続行の候補となる文字列行は注目行L1を除く全ての文字列行であり、連続行の候補となる条件については後述する。全ての文字列行について、前方及び後方に連続する文字列行を選択すると、連続する文字列行同士の繋がりから、前方及び後方の両方において連続する文字列行がなくなるまで1つの行ブロックとして分類、統合し、未割り当ての行ブロックIDを持つ新規行ブロックとして記憶部12に登録する。全ての文字列行がいずれかの行ブロックに登録されるまで処理を繰り返し、全ての文字列行についての登録が完了すると、行ブロック解析処理部34は処理を終了する。
<2−2.連続行の候補の判定>
注目行L1とは別に選択された文字列行L2が、注目行L1の連続行の候補であるか否かを判定する方法について説明する。行L2が行L1の連続行の候補である条件として、少なくとも下記2つの条件を満たすものとする。
条件1:一方の行の先頭から末尾までの範囲において、もう一方の行の先頭もしくは末尾のうち少なくとも一方が存在する。
条件2:2つの行の行間変位量linespace(L1,L2)が下記の式(8)を満たす。
TH_MIN_LS≦linespace(L1,L2)≦TH_MAX_LS ・・・式(8)
(TH_MIN_LS、TH_MAX_LSは、予め設定される閾値)
なお、条件1は、異なる段に属する行を連続行の候補として判定しないために用いる。条件2は、行間が広過ぎる又は狭過ぎる行を連続行の候補として判定しないために用いる。
図29の(a)は、2段組の横書きの文書の例、図29の(b)は、2段組の縦書きの文書の例である。条件1を満たすために、行L1と行L2とは、文書第1方向で一部もしくは全部が重複している必要がある。例えば、図29の例の場合、行aと行b、行cと行d、行eと行f、行gと行hは、条件1を満たすため、これらの組合せは互いに連続行の候補となる。しかし、行aと行d、行eと行h等の組合せでは条件1を満たさないため、これらの組合せは互いに連続行の候補とならない。
条件2で示す行L1と行L2との行間変位量linespace(L1,L2)は、図30に示すように、横書きであれば行L1と行L2とのうち下側にある方の行の上端座標と、もう一方の行の下端座標との差分値(図30の(a)〜(c)参照)、縦書きであれば行L1と行L2とのうち左にある方の行の右端座標ともう一方の行の左端座標との差分値(図30の(d)〜(f)参照)である。行L1と行L2とが重複しないとき、行間変位量linespace(L1,L2)は2つの行の行間距離を示す。また、TH_MIN_LS及びTH_MAX_LSは、連続行同士の行間変位量として許容される差分値の最小値及び最大値を示す所定係数である。例えば、行L1の文字サイズに所定係数r1(例えばr1=0.1)を乗算したものを閾値TH_MIN_LSと設定し、所定係数r2(r2は正の数とする、例えばr2=1.5等)を乗算したものを閾値TH_MAX_LSとして設定する。閾値TH_MIN_LS及び閾値TH_MAX_LSは、他の方法により設定されてもよく、例えば行L1と行L2の文字サイズの平均値に所定係数を乗算したものとしてもよい。また閾値TH_MIN_LSを正値に設定することで、重複のある2つの行同士を連続行として認めないようにすることができる。逆に閾値TH_MIN_LSを負値に設定することで、図30の(c)及び(f)のように、行L1と行L2とが多少重複する場合も許容することができる。なお、行間変位量linespace(L1,L2)は、行L1と行L2とが重複する場合は0を与えるように定義することもできる。これは、次のような事前処理の性能不足を補う場合に用いられる。原稿の読み取りを行う際、原稿の傾きを十分補正しきれずに、ごくわずかな傾きが残っている場合、最小外接矩形で文字列を囲むと、文字自体は重複していなくても矩形同士が重複する場合が存在する。
<2−3.条件の強化:インデントの範囲指定>
また、連続行の候補を判定する条件を強化するために、上記条件1,2に加えて、別の条件を設定してもよい。例えば、次式(9)を満たすことを条件として追加することができる。
indent(L1,L2)≦TH_INDENT ・・・式(9)
ここで、indent(L1,L2)は行L1の開始位置の文書第1方向成分と行L2の開始位置の文書第1方向成分の差の大きさであり、すなわちインデントの大きさを意味する。また、閾値TH_INDENTは行の先頭のインデントとして許容される距離を示す所定係数である。閾値TH_INDENTは、例えば行L1の文字サイズに所定係数α(αは正の数とする、例えばα=1.5等)を乗算した値を与え、α文字以内のインデントを許容することができる。閾値TH_INDENTは他の方法により設定してもよく、例えば行L1と行L2の文字サイズの平均値に所定係数αを乗算したものとしてもよい。
<2−4.条件の強化:行終了位置の差異の許容範囲指定>
連続行の候補を判定する条件を強化する他の条件として、例えば次式(10)を満たすことを条件として追加することで、行の終了位置がある程度近い行同士を連続行の候補とすることができる。
|L1MAX1−L2MAX1|≦TH_DIFF_ENDPOS ・・・式(10)
ここで、L1MAX1は行L1の文書第1方向成分の最大値、L2MAX1は行L2の文書第1方向成分の最大値である。例えば、文書第1方向が水平方向(横書き)である場合、L1MAX1及びL2MAX1は、行L1及び行L2の右端のX座標を指す。また、閾値TH_DIFF_ENDPOSは行の終了位置の差として許容される距離を示す所定係数である。例えば行L1の文字サイズの平均値に所定係数β(βは正の数とする、例えばβ=0.5等)を乗算したものを閾値TH_DIFF_ENDPOSとすることで、β文字以内のインデントを許容することになる。
<2−5.前方又は後方の連続行の選択>
行L1の連続行の候補として抽出された行から、行L1の前方で最も近い位置にある行、及び、後方で最も近い位置にある行を、それぞれ最大1つずつ選択する。なお、文書第1方向が水平方向(横書き)である場合、行L1より上にある行を前方の行、行L1より下にある行を後方の行とし、文書第1方向が垂直方向(縦書き)である場合、行L1より右にある行を前方の行、行L1より左にある行を後方の行とする。また、行の近さを表わす値として、例えば、前述の行間変位量linespace(L1,L2)を使用し、linespace(L1,L2)が小さい程、行が近いとみなすことができる。なお前方、後方とも、連続行は最大で1つずつであり、必ずしも連続行が存在する必要はない。
<2−6.行ブロックへの分類及び統合>
以上のようにして、全ての文字列行について前方及び後方の連続行を選択すると、行ブロックへの分類、統合を行う。但し、複数の行から連続行として選択されるケースもあり得るため、相互に連続行であるとされていない行のペアについては、その間の連続関係を事前に解消しておく。例えば、文書画像が図31の(a)である場合、前方の連続行として行L3を選択する行は、行L4と行L5との2つ存在するが、行L5は行L3の後方の連続行として選択されていない。そのため、行L3と行L5との間の連続関係は解消される。同様にして行L4と行L6との間の連続関係も解消される。このことにより、図31の(a)に示すような例では、行L3及び行L4において注目行L1からの連続関係が断たれるため、注目行L1と同一の行ブロックとして分類できなくなるケースも起こり得る。しかし、図31の(b)に示すように複数の行ブロックとして分類することができ、後段のレイアウト解析処理部35における段組解析処理部37で、同一の段組、及びその段組を構成する同一の段(カラム)として統合できるため、この時点でブロックが分かれてしまっても、問題とはならない。
行ブロックへの分類及び統合処理は、次のように行う。まず。行ブロックとして分類されていない文字列行のうち任意の行L1(注目行L1)について、まず、行L1を新規の行ブロックとして設定する。続いて、行L1から前後の連続行をたどり、行ブロックの範囲を拡大する。前方及び後方とも、連続行が無くなると、行ブロックの拡大を終了し、その行ブロックに含まれる先頭の行から順に行IDを取得する。また、行ブロックの情報として、行ブロックに含まれる全ての行に外接する最小矩形の左上座標、幅及び高さ、並びに含まれる行数を取得する。以上のようにして得られた行の順序と各種情報とを持つ行ブロックを、既に登録済みの行ブロックと重複しないIDを持つ新規の行ブロックとして登録を行い、またその行ブロックに含まれる各行の所属行ブロックIDを更新する。このようにして行われる行ブロックへの分類及び統合処理を、全ての文字列行がいずれかの行ブロックに分類されるまで繰り返す。
<2−7.同一の行ブロックに分類できる(連続行の候補とできる)行の条件>
なお、文書第1方向の文字列行は文書第1方向の文字列行とのみ、文書第2方向の文字列行は文書第2方向の文字列行とのみ、行ブロックを構成する。すなわち、1つの行ブロックに、文書第1方向の文字列行と文書第2方向の文字列行とが混在することは無い。従って、注目行L1の連続行の候補を探索する際、注目行L1の文字列方向と異なる方向の文字列行は連続行の候補としない。
<2−8.処理例>
行ブロック解析処理部34が実行する行ブロック解析処理を、具体例を用いて説明する。既に示した図28のように文書画像から検出された複数の行に対して行ブロック解析処理を適用すると、文書画像は、図32のように行ブロックとして分類される。図32に示す例では、行ブロックB3は、章の見出しの行であり、行ブロックB4に比べて文字が大きい。このように文字のサイズが大きく異なる2つの行同士を連続行の候補として選択しないような、連続行の候補の判定の条件を追加することも有効な手段である。
[3.レイアウト解析処理部]
<3−1.レイアウト解析処理部の構成>
図33は、レイアウト解析処理部35の詳細構成を示すブロック図である。レイアウト解析処理部35は、前段の行ブロック解析処理部34で分類された行ブロック同士の上下左右の位置関係から、行ブロック構成を解析し、文書画像中の文章(本文)の読み順を推定する処理を行うものであり、段組解析処理部37、行順序付け処理部38、段落解析処理部39を備えて構成される。
<3−2.段組解析処理部>
段組解析処理部37は、複数の行ブロックの上下及び左右の位置関係から、段組及び段組を構成する各段(カラム)を分類する段組解析処理を実行する。文書は文書第2方向に段組が配置され、各段組構成内で文書第1方向にカラムが配置されているものとして、ページ内の行ブロックの集合を、適切に境界線を設定して行ブロックをまたぐことなく分割して初期段組とする。そして、同一の初期段組に含まれる行ブロックの集合を、適切に境界線を設定して行ブロックをまたぐことなく分割して、該初期段組を構成する初期カラムとする。
境界線の設定方法は特に指定はなく、最も簡単な例として、初期段組の分類には文書第2方向と平行な直線を使用し、初期カラムの分類には文書第1方向と平行な直線を使用することが挙げられる。例えば、図34の(a)のように横書きの文書画像から行ブロックの構造が解析された場合、図34の(b)のように行ブロックを初期段組に分類され、さらに初期段組は図34の(c)のようにそれぞれ初期カラムとして分類される。なお、図34の(b)及び(c)では、段組間の境界線は実線で、カラム間の境界線は一点鎖線で示されている。
<3−3.段組の分割禁止(同一段組として許容される行ブロック間距離の算出)>
本来は同一段組であるが、偶然、行ブロックを分割することができるために複数の段組に分かれてしまうようなケースもまれに存在する。こうしたケースに対応するため、例えば連続する2つの行ブロック間の距離を算出し、その距離が所定値(例えば行ブロックの平均行間距離の2倍)以下の2つのブロック間には境界線を引くことを禁止する条件を追加することができる。図35は、行ブロックB10,B11,B12を左側のカラム、行ブロックB20,B21を右側のカラムとした2段組構成の例を示す。行ブロックB10と行ブロックB11との間、行ブロックB20と行ブロックB21との間が空いているため、行ブロックB10と行ブロックB20から成る2段組構成、及び、行ブロックB11とB12と行ブロックB21とから成る2段組構成として分割してしまう恐れもある。しかし、行ブロックB20の平均行間距離(20)に対して、行ブロックB20と行ブロックB21とのブロック間距離(30)が所定値(20×2=40)以下であるとして、行ブロックB20と行ブロックB21との間に境界線を引くことを禁止することで、これらの行ブロックが2つの異なる段組に分かれることを防ぐことができる。
また、見出しによる広い行間に境界線が引かれてしまう場合に、以下のように行ブロックの分割を防ぐようにしてもよい。行ブロックが見出しであるかどうかの判定を行い、見出しである場合には、その行ブロックと、その直後の行ブロックとを分割禁止とする距離の所定値を変更する(例えば、所定係数1.5を乗算する)等の方法により、分割を防ぐことも可能である。行ブロックが見出しか否かの判定は、例えば、横書きの文書であれば、上又は下の行ブロックと比較して左右に所定値以上(第1閾値、例えば、各文字のサイズ(行の高さ)など)の余白が存在し、左の余白と右の余白の大きさの差が所定値以下(例えば、第1閾値×0.1など)である、つまり左詰めでなくセンタリングされており、また他の行ブロックより各文字のサイズ(行の高さ)が大きい場合に、その行ブロックが見出し行であるとして判定する方法が挙げられる。なお、他の条件と組み合わせて判定しても構わない。
なお、上記のような平均行間距離を基準とした所定値でも適切に分割できないような場合、タッチパネル14のタッチ操作(手動)でレイアウトを修正できるようになっていてもよい。
<3−4.位置関係以外の情報の活用>
また、行ブロックの位置関係に加えて、行ブロックが持つ各種情報を利用して、段組及びカラムの分類(すなわち境界線の設定)を行うことができる。行ブロックが持つ各種情報の例として、行の長さや主要な文字のサイズ等が挙げられる。隣り合う行ブロック同士でこれらの情報が大きく異なる場合は同一の段組に分類することを避けるようにすることができるし、逆に位置が大きく離れた行ブロック同士でも、例えば同じカラム境界線を共有することができ、かつ類似する情報を持つ場合、同一段組として分類してもよい。
<3−5.行ブロックが0個もしくは1個しかない場合>
なお、段組解析処理部37に入力されたページ画像が、ただ1つの行ブロックを持つ場合、そのページ画像は1段構成の文書であるとして、境界線の設定は行わない。また、該ページ画像が、1つも行ブロックを持たない場合(すなわち白紙ページの場合)も境界線の設定は行わない。
また、文書画像に文書第1方向の文字列行と文書第2方向の文字列行とが混在する場合は、文書第2方向の文字列行の行ブロックを図表行の行ブロックに置き換える。このことにより、文書第1方向に記述された文章の最中に、文書第2方向に記述された文章が混じることを防ぐことができる。
<3−6.処理例>
段組解析処理部37が実行する処理の具体例として、例えば既に示した図32に示す文書画像から検出された複数の行ブロックに対して段組解析処理を適用する場合について説明する。段組解析処理部37は、図32に示す文書画像を、図36に示す段組及びカラムに分類する。カラムC1及びカラムC2は、それぞれ1段構成の段組G1及び段組G2を成し、カラムC3及びカラムC4は2段組構成の段組G3における左右のカラムを成している。なお、図36では、行(文字列行及び図表行)を直線、行ブロックを点線、カラムを一点鎖線で囲んでいる。
<3−7.行順序付け処理部>
図33に示される行順序付け処理部38は、段組、カラム、行ブロック、及び行の位置関係から文書全体における行の順序を解析し、行順序リストを生成する処理を、以下の(1)〜(9)に従って行う。
(1)同じ行ブロックに属する行同士については、横書き文書であれば上から下、縦書き文書であれば右から左の順に優先順位を設定する。ここでは、上記のように既に、行ブロックに分類する際に、その行ブロックに含まれる行についての順序の情報も取得しているため、この情報を利用する。
(2)同じカラムに属する行ブロック同士については、横書き文書であれば上から下、縦書き文書であれば右から左の順に優先順位を設定する。
(3)連続する2つの行ブロック間では、優先順位の高い方の行ブロックの末尾の行の次に、優先順位の低い方の行ブロックの先頭の行が優先されるように設定する。
(4)同じ段組に属するカラム同士については、横書き文書であれば左から右、縦書き文書であれば上から下の順に優先順位を設定する。
(5)連続する2つのカラム間では、優先順位の高い方のカラムの末尾の行ブロックの次に、優先順位の低い方のカラムの先頭の行ブロックが優先されるように設定する。
(6)同じページに属する段組については、横書き文書であれば上から下、縦書き文書であれば右から左の順に優先順位を設定する。
(7)連続する2つの段組間では、優先順位の高い方の段組の末尾のカラムの次に、優先順位の低い方の段組の先頭のカラムが優先されるように設定する。
(8)同じ文書画像ファイルに属するページ同士については、ページ番号の小さい順に優先順位が高くなるよう設定する。
(9)連続する2つのページ間では、優先順位の高いページの末尾の段組の次に、優先順位の低い方のページの先頭の段組が優先されるように設定する。
行順序付け処理部38は、上記のルール(1)〜(9)に従って、ページの順序、段組の順序、カラムの順序、行ブロックの順序を決定し、それらにより行の順序付けを行う。順序付けされた行は、各行が属する行ブロック、カラム、段組及びページの順序を示す番号を保有すると共に、先頭から順に各行の行IDを行順序リストに格納する。
行順序リストは、下記の規定(a)〜(c)に従う形式であれば特に構造は問わない。
(a)上記順序付けルールに従って決定された順序通りに行を呼び出すことができる。
(b)呼び出した行について、その座標情報や種類(文字列行か図表行か)等の各種情報を参照することができる。
(c)呼び出した行について、段落情報(後述)を格納することができる。
<3−8.処理例>
行順序付け処理部38が、上記の規定に従って、図36の構成の文書画像について行順序リストを生成した例を、図37に示す。行順序リストは、決定された順序の先頭から順に、行のIDと、行の情報として、所属する行ブロックID、行の種別(文字列行であるか図表行であるか)、及び行の範囲を示す外接矩形の左上座標及び右下座標、の情報とを格納し、さらに行毎に段落情報を格納している。なお、図37の例では、改行が発生するときに、その行から新たな段落が始まるとして、段落情報を改行の有無を有る(Yes)か無し(No)かの2通りで示しており、事前に「No」で初期化している。図38のように行ブロックの情報やカラムの情報、段組の情報を別途作成し、相互参照により各行及び各行ブロックが所属するカラム、段組、ページを参照できるようにしておくことで、冗長の少ない行順序リストを構成することができる。もちろん、行順序リスト単独で各行に関する情報を全て抽出できるようにしてもよい。
<3−9.段落解析処理部>
図33に示される段落解析処理部39は、各行の前後の位置関係等の情報から、その行の位置で改行が発生しているかどうかを判定し、文書画像中の各行を1つ以上の段落に分類する処理を行う。具体的には、行順序リストから複数の行を参照して段落の切れ目、すなわち改行位置を判定し(改行判定処理)、段落毎に行の順序を記述した文書構造ツリーを生成する(文書構造ツリー生成処理)。
ところで、文書中の図表は、必ずしも段落の切れ目に配置されるとは限らず、例えばページの端に挿入される場合が多く、それにより文章が図表を挟んで前後に分かれることがある。この順序のまま行を呼び出し、行を構成する要素(文字、図表)を挿入していくと、図表の挿入によって不自然に途切れた文章が出力されてしまう。そこで、本実施の形態では、段落毎に、文字列行と図表行とが混在した順序ではなく、文字列行の順序と図表行の順序をそれぞれ別に保有する文書構造ツリーを生成する。図39は、文書構造ツリーの構造を示す図である。それにより、文書画像を構成する文字列のみの順序を把握しながら、その段落に係る図表を、段落の先頭や末尾等にまとめて配置できるようにする。
<3−10.改行判定処理>
図40は、段落解析処理部39における、改行判定処理の概要を示すイメージ図である。改行判定処理は、判定の対象となる注目行と、注目行より前に順序づけられるM個の行と、注目行より後に順序づけられるN個の行と、のM+N+1個の行によって判定される。なお、図40に示す例では、M=N=2としている。なお、改行判定の対象となる行、及びその前後の行は、いずれも文字列行である。本実施の形態では、M+N+1個の行IDバッファL[0],L[1]・・・,L[M+N]を記憶部12に備え、行順序リストで参照されるM+N+1個の行IDをそれぞれ格納することで、注目行と、注目行の前後の行との比較を行う。
以下、段落解析処理部39の処理内容について詳細に説明する。図41は、段落解析処理部39の処理手順を示すフローチャートである。段落解析処理の開始にあたり、事前に初期化を済ませておく。具体的には、リスト参照番号をLNOW=1とし、行IDバッファには全て無効行(0)を格納しておく。初期化が終わると、注目行にあたる行IDバッファL[M]に、行IDを選択して格納する(S1)。任意の行IDバッファL[k](k=0,1,・・・,M+N)の選択方法は以下の(1A)〜(1C)の通り行われる。
(1A)行順序リストにおいて、第LNOW番目から順に、文字列行を探索する。
(1B)最初に見つかった文字列行の行IDを行IDバッファL[k]に格納し、そのときの行順序リストの位置(リスト番号)に1を加えた番号を新たなリスト参照番号LNOWとして更新する。
(1C)文字列行が見つからないまま行順序リストの末尾まで探索が終了した場合、行IDバッファL[k]には無効行(0)を格納する。
行L[M]の更新後、行L[M]が有効行(ゼロでない行IDを持つ行)であるかどうかを判定し(S2)、有効行である場合(S2の判定がYES)、S3に移る。一方、L[M]が無効行である場合(S2の判定がNO)、入力した文書画像には文字列行が存在しない図表行のみの文書画像であるとして、文書構造ツリーの生成処理(後述)を実行する(S7)。
次に、注目行より後の行に当たる行IDバッファL[M+1],・・・,L[M+N]に、行IDを選択して格納する(S3)。各バッファにおける行IDの選択方法は上記と同様であるため省略する。続いて、注目行L[M]の改行判定を実行する(S4)。改行判定は、改行判定対象となる注目行L[M]と、注目行より前に位置する行L[0],・・・,L[M−1]及び注目行より後に位置する行L[M+1],・・・,L[M+N]からなる複数の行を用いた公知の方法で行うことができる。簡単な例として、改行判定対象のインデントの有無を確認する方法がある。行L[M]の開始位置が、他の行に比べて文書第1方向に正値のずれが生じている場合に、行L[M]はインデントを持ち、行L[M]の位置で改行がなされているとみなすことができる。また、改行判定対象行L[M]の1つ前の行L[M−1]が、他の行に比べて短い場合、行L[M]の位置で改行がなされているとみなすことができる。例えば、図40(M=N=2)のような横書きの文字列行が存在している場合、注目行L[2]の開始位置が、他の行に比べて右側(横書きの場合の正方向)にずれており、また1行前の行L[1]が他の行に比べて短いという特徴を持っており、これらの結果から、注目行L[2]は総合的に改行位置であるとして判定され易くなる。なお、文書編集者の好み等により段落の先頭行でインデントが付加されない場合もあり、また1つ前の段落の最終行が必ずしも短くなるとは限らないため注意する。
他に改行位置であるかどうかの判定の例として、注目行の文字サイズが周辺の行に比べて大きく異なるかどうかを判定することで、見出し行のように文字サイズが大きくなっている行、また補足コメント等のように逆に文字サイズが小さくなっている行等で改行位置と判定することができる。また、周辺の連続する2つの行の行間距離に比べて、注目行とその1つ前の行との行間距離が大きくなっている場合に、1つ前の行で段落が終了している可能性が高くなる。上記挙げられた条件を例として、様々な条件を複合的に判定して、注目行における改行の有無を設定するのが好ましい。
行L[M]の改行判定の結果は、行順序リストのL[M]に該当する行情報に段落情報として反映させる。段落情報は段落の切れ目が判るものであれば何でもよく、最も簡単な例として、改行の有無をYesあるいはNoの2通りで示すだけでもよい。
改行判定対象行L[M]の改行判定が終了すると、注目行の次の行L[M+1]が有効行であるかどうかを判定し(S5)、L[M+1]が有効行である場合(S5の判定がYES)、行IDバッファの更新を行い、次の行についての改行判定を行う準備をする(S6)。行IDバッファの更新は、具体的には、図42に示すように、L[0]=L[1],・・・,L[M+N−1]=L[M+N]としてバッファを1つずつずらすとともに、バッファL[M+N]を新たに行順序リストから選択する。バッファL[M+N]の選択方法は前述の方法と同様であるため省略する。バッファの更新後、S4に戻り、更新された注目行L[M]について、改行判定を行う。これを、S5で判定がNOとなるまで反復する。S5の判定がNOとなると、全ての文字列行について改行判定が終了したことになり、文書構造ツリーの生成処理を実行する(S7)。
<3−11.文書構造ツリー生成処理>
段落解析処理部39による文書構造ツリー生成処理は、段落情報を考慮した行順序リストに格納された段落情報に従って実行される。但し、文書構造ツリーは事前に、図43に示すような1つの空の段落(第0段落)を持つ状態に初期化されているものとする。初期段落番号をPNOW=0として、行順序リストの先頭から順に行の情報を参照し、段落情報から該行が段落開始行と判定された場合(段落情報がYES)のみ、PNOW=PNOW+1として段落番号の更新を行い、また文書構造ツリーに空の段落(第PNOW段落)を新たに追加する。そして、該行が文字列行である場合、文書構造ツリーの第PNOW段落が持つ文字列ツリーの末尾に該行の行IDを追加する。一方、該行が図表行である場合、文書構造ツリーの第PNOW段落が持つ図表ツリーの末尾に該行の行IDを追加する。これを行順序リストの各行について反復し、末尾まで探索が終了すると、文書構造ツリーの生成処理を終了する。なお、文字列行の改行位置から次の改行位置までが1つの段落となるので、図表行が段落の分類から漏れるということはない。そのため、ひと固まりの文字列行の後に図表行があり、その後新しい段落が始まる(改行が発生する)場合は、その図表行は1つ前の段落に含まれることになる。
<3−12.処理例>
段落解析処理部39が実行する処理の具体例として、図28の構成の文書画像(図37に示す初期の行順序リストを持つ)に段落解析処理部39での処理を適用する場合について説明する。見出しに当たる行ID:101、行ID104、行ID:129の各行は、行の文字サイズや1つ前の行間距離等の条件から、改行位置と判定される。また行ID:106、行ID:112、行ID:119及び行ID:131の各行は、前後の複数の行に比べ、行の開始位置が文書第1方向において正方向にシフトしている。よってインデントが存在するとして、改行位置と判定される。行ID:102の行も、見出し行の行ID:101の次の行であることから、改行位置と判定することができる。従って、行ID:101、102、104、106、112、129、131、119の各行が改行位置として設定され、行順序リストの段落情報は、図44のように更新される。
例えば、行順序リストが図44のように、段落情報として改行の有無(YesもしくはNo)が表されている場合、改行がある行から新しい段落が開始するとみなせるため、改行がある(Yes)場合に該行が段落開始行として判定することができる。また、段落が開始してから、次の改行位置が見つかるまでの行を同一の段落の範囲とみなす。更新された行順序リストの段落情報に従い、図28の文書画像を段落毎に分類すると、図3Aに示すように分類することができる。図3Aにおいて、段落R7は、左下の3行の文字列行(行ID:131,133,135)から、右上の図表行(行ID:105)及び4行の文字列行(行ID:111,113,115,117)までを同一の段落の範囲としており、行ID:135と行ID:111との文字列行の間に改行位置は存在しないため、一続きの文章を構成することが可能となる。更に、この行順序リストに従って文書構造ツリーを生成すると、図45に示すような文書構造ツリーを得ることができる。
[4.リスト生成部]
リスト生成部36は、図44の行順序リストおよび図45の文書構造ツリーに従って、各行を呼び出し、呼び出した行が文字列行である場合は対応する文字列行の先頭から順に文字を呼び出し、呼び出した行が図表行である場合は対応する図又は表を呼び出して、各要素の参照情報(要素を呼び出すための情報)を順に記述した参照リストを生成する。更に、要素が、改行位置が含まれる行の末尾の要素である場合、改行命令を挿入して参照リストを生成する。
具体的には、リスト生成部36は、図45に示される文書構造ツリーに示される段落番号(R1〜R8)の順に各段落を注目段落としていく。リスト生成部36は、注目段落において、各文字列行を行ID(図44)の順に参照していき、参照している文字列行の先頭から順に要素の参照情報を参照リストに記述していく(つまり、参照している文字列行について全ての要素の記述を終えると、次の文字列行を参照する)。リスト生成部36は、注目段落において、文字列行を全て参照した後、図表行の要素の参照情報を参照リストに記述していく。そして、全ての段落を注目段落として扱って処理し終えると、参照リストが完成することになる。作成される参照リストにおいては、各要素に対してリスト番号(図4参照)を対応付けることになるが、このリスト番号は参照リストに対して記述された順序を示した番号である。また、参照リストに記述される要素の参照情報は、図4に示すように、要素種別、左上座標、横幅および高さとなる。横幅および高さではなく、右下座標が記述されてもよい。なお、リスト生成部36は、参照リストに対して参照情報を記述している要素が、段落を有する(段落情報がYesである)文字列行の末尾である場合、若しくは、図表である場合、次に記述する要素を「改行」とする。これにより、リスト生成部36は、図4に示す参照リストを作成できるようになっている。
また、リスト生成部36は、図5に示す参照リストを作成するようになっていてもよい。この場合、リスト生成部36は、各要素の参照情報として記述する段落IDを、直前に参照情報を記述した要素の段落IDと同じとする(初期値は1)。但し、リスト生成部36は、段落を有する(段落情報がYesである)文字列行の末尾の要素の次の要素については、前の要素の段落IDに1を加算した段落IDを記述する。また、リスト生成部36は、文字の次の図表については、当該文字の段落(図5の段落ID7)に属する小段落のID(図5の段落7−2)を記述し、図表の次の文字については、当該図表の小段落の属する段落の段落IDに1を加算した段落IDを記述することとなる。
リスト生成部36は、以上のようにして作成した参照リスト(図4または図5)を、当該参照リストに対応する文書ファイル(文書画像のデータ)と対応付けて記憶部12に保存する。これにより、レイアウト変更部111は、参照リストを用いてレイアウト変更処理を行うことが可能になる。なお、参照リストは、例えばCSV形式のデータとして出力されるようになっている。
以上のようにして作成された参照リストを用いてレイアウト変更処理を行うことにより、図3Aに示すように段組構成を持つ文書画像についても適切な順序で各要素を再配置できることになる。これに対し、特許文献1等の先行技術によれば、横書きの場合、左から右へ順序付け且つ上から下へ順序づけられた位置座標リストを用いて再配置しているだけであるため、段組構成を持つ文書については適用が困難である。
〔変形例〕
図1のレイアウト変更部111は、レイアウト変更処理前の文書画像に図表が示されている場合、レイアウト変更処理によって、文書画像には、図表の代わりに、前記図表のサムネイルを配置させるようになっていてもよい。この場合、表示制御部112は、表示部14aにリフロー形式で文書画像を表示させている際に前記サムネイルがユーザにタッチ(選択)されたことを入力信号から検出した場合、前記サムネイルに対応する前記図表を表示部14aに表示させるようになっている。
これにより、図表のサイズが大きい場合、図表を無理に文書内に挿入せずに、サムネイルが選択された場合にのみ該当する図表をリンク表示させることにより、文書および図表の視認性を向上させることができる。なお、図1の表示制御部112は、前記サムネイルがユーザに選択された場合、スクロール無しで図表の全体を表示部14aに表示させることができる程度に前記図表を拡大または縮小した上で表示部14aに表示させるようになっていてもよいし、垂直および/または水平方向のスクロールが必要なサイズで図表を表示部14aに表示させるようになっていてもよい。
また、タッチパネル以外のユーザインターフェイスが用いられてもよい。例えば、マウスやキーボード等の入力手段を用いてもよい。この場合、図1の表示部14aにスクロールバーを表示することによってユーザにスクロール指示を行わせることができる。また、表示倍率を入力するためのボックスおよび変倍処理ボタンを示したGUIを表示させ、このGUIによって変倍の指示を入力可能である。
また、以上の各実施形態では、携帯端末10は、図2に示すように、略長方形の表示部14aの長辺方向を表示部14aの垂直方向(スクロール方向)とし、表示部14aの短辺方向を表示部14aの水平方向として、文書画像を表示させているが、勿論、表示部14aの短辺方向を表示部14aの垂直方向(スクロール方向)とし、表示部14aの長辺方向を表示部14aの水平方向として、文書画像を表示させることも可能である。但し、この場合においても、図49に示されるように、表示部14aに表示される左横書の文書画像の右側から左側に向けた方向を左方向とし、その逆方向を右方向とし、当該左横書きの文書画像の上側から下側に向けた方向を下方向とし、その逆方向を上方向とする(なお、図49に示す上下左右の各方向は、短辺方向を垂直方向として長辺方向を水平方向とした略長方形の表示部14aに縦書きの文書画像を表示させる場合の当該縦書きの文書画像における上下左右の各方向とも一致することになる)。
つまり、図2に示すように、表示部14aの長辺方向を表示部14aの垂直方向とし、表示部14aの短辺方向を表示部14aの水平方向とするケースでは、長辺方向と上下方向(垂直方向)とが一致し、短辺方向と左右方向(水平方向)とが一致することになるが、図49に示すように、表示部14aの長辺方向を表示部14aの水平方向とし、表示部14aの短辺方向を表示部14aの垂直方向とするケースでは、長辺方向と左右方向(水平方向)とが一致し、短辺方向と上下方向(垂直方向)とが一致することになる。
また、図1の制御部11は、上述の通り、CPUを用いてソフトウェアにて実現してもよいし、集積回路等に形成された論理回路によって実現してもよい。なお、ソフトウェアによる場合、携帯端末10は、前記ソフトウェアであるプログラムがコンピュータ(またはCPU)で読み取り可能に記録されたROMまたは記憶装置等の記録媒体を備えている。上記記録媒体としては、例えば、カード、ディスク、半導体メモリ、プログラマブルな論理回路などの「一時的でない有形の媒体」であってもよい。また、上記プログラムは、任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに伝送されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1の携帯端末(表示制御装置)10によれば、文書を撮像して得られる文書画像をリフロー形式でコンテンツ表示領域に表示させるために前記文書画像のレイアウトを変更するレイアウト変更部111と、レイアウト変更後の文書画像をリフロー形式で前記コンテンツ表示領域に表示させる表示処理を行う表示制御部112とを備え、レイアウト変更部(変更部)111は、前記文書画像を構成する要素毎に、レイアウト変更後の文書画像全体のなかでの位置を示す配置座標(座標値)を求め、表示制御部112は、前記配置座標のうち、画像のスクロールの方向と平行な座標軸の座標値に、前記スクロールの量に応じたオフセット値を加算する加算処理を行い、前記加算処理後の配置座標を、前記コンテンツ表示領域と前記要素との位置関係を示す描画座標(表示用座標)として前記表示処理を行うことを特徴とする。
本発明の一態様によれば、文書画像がスクロールされる場合、画像のスクロールの方向と平行な座標軸の座標値に加算されるオフセット値(各要素において共通)をスクロール量に応じて変更するだけで前記描画座標を更新できる。これに対し、従来構成では、スクロールがされる場合、各要素のx座標値およびy座標値を再演算することで表示用座標を更新するようになっている。それゆえ、本発明の一態様によれば、従来構成よりも処理負荷を抑制できる効果を奏する。
また、本発明の態様2の携帯端末10においては、態様1に加え、レイアウト変更部111が、前記文書画像に対する変倍処理の指示が入力されると、前記変倍処理の表示倍率に応じて前記文書画像のレイアウトを変更するようになっており、表示制御部112は、前記変倍処理の前に前記コンテンツ表示領域に表示させている要素のなかからいずれか一つの要素を選択する選択処理を行い、前記選択処理にて選択した要素について、前記変倍処理の前の前記描画座標のうちの前記スクロールの方向と平行な座標軸の座標値と、前記変倍処理の後の前記描画座標のうちの前記スクロールの方向と平行な座標軸の座標値との差が所定範囲に収まるように、前記変倍処理の後の配置座標に加算されるオフセット値を調整するようになっていることを特徴とする。
本発明の態様2によれば、変倍処理前にユーザが注目していた要素が変倍処理によってコンテンツ表示領域外にはみ出してしまうことを抑制できるという効果を奏する。
また、本発明の態様3の携帯端末10においては、態様2に加え、前記コンテンツ表示領域はタッチパネル14における表示領域であり、タッチパネル14において互いに離れた2箇所以上の領域がタッチされることで前記変倍処理の指示が入力されるようになっており、前記選択処理は、前記文書画像の各要素のうち、前記変倍処理の指示におけるタッチパネル14のタッチ箇所の平均座標値に対応する位置からのユークリッド距離が最も小さい要素を選択する処理であることを特徴とする。
本発明の態様3によれば、変倍処理前においてユーザが注目していた可能性の高い要素を高精度に選択できるという効果を奏する。
本発明の態様4の携帯端末10においては、態様3に加え、表示制御部112は、前記平均座標値に対応する位置が前記文書画像のなかのいずれかの要素を囲う外接矩形の内側である場合、前記平均座標値に対応する位置からのユークリッド距離の最も小さい要素が前記外接矩形に囲われる要素でなくても、前記外接矩形に囲われる文字を前記選択処理において選択するようになっていることを特徴とする。
本発明の態様4によれば、変倍処理前においてユーザが注目していた可能性の高い要素をより高精度に選択できるという効果を奏する。
本発明の態様5の携帯端末10においては、態様1〜4に加えて、前記要素には少なくとも図表が含まれており、レイアウト変更部111は、前記図表に関しては、設定されている表示倍率とは関係なく、前記図表が前記スクロールの方向と直交する方向において前記表示領域に収まるように変倍し、当該変倍した前記図表について前記配置座標を求めることを特徴とする。
本発明の態様5によれば、小型の表示装置の表示領域にリフロー形式で前記文書画像を表示させる場合であっても、前記スクロールの方向と直交する方向において前記図表を前記表示領域に収まるように表示させることが可能になるという効果を奏する。
本発明の態様6の携帯端末10においては、レイアウト変更部111は、レイアウト変更前の文書画像に図表が示されている場合、前記レイアウト変更後の文書画像には前記図または表の代わりに前記図表のサムネイルを配置させ、表示制御部112は、前記コンテンツ表示領域に表示させているサムネイルがユーザに選択されると、前記サムネイルに対応する前記図表を前記コンテンツ表示領域に表示させることを特徴とする。
本発明の態様6によれば、図表のサイズが大きい場合、図表を無理に文書内に挿入せずに、サムネイルが選択された場合にのみ該当する図表をリンク表示させることにより、文書、図表の視認性を向上させることができる。また、表示制御部112は、前記サムネイルがユーザに選択された場合、スクロール無しで図表の全体を前記コンテンツ表示領域に表示させることができる程度に前記図表を拡大または縮小した上でコンテンツ表示領域に表示させるようになっていてもよいし、垂直および/または水平方向のスクロールが必要なサイズで図表をコンテンツ表示領域に表示させるようになっていてもよい。
本発明の態様7の携帯端末10においては、態様1〜6に加え、前記文書画像と、前記文書画像を構成する要素の並び順を示す並び順情報とを対応付けて記憶する記憶部を備え、レイアウト変更部111は、前記並び順情報に示される並び順に従って前記文書画像のレイアウトを変更することを特徴とする。
本発明の態様7によれば、文書を構成する各要素(文字等)の並び順を崩すことなく、適切に文書画像のレイアウトを変更できるという効果を奏する。
本発明の態様8の携帯端末10においては、態様1〜7に加えて、前記文書を撮像することによって前記文書画像を生成する画像入力部を備えたことを特徴とする。
本発明の態様8によれば、撮影による文書画像の生成とリフロー表示とを実現する一体型ツールを提供できるため、データの取捨選択や撮り直しの作業を効率よく行うことができるという効果を奏する。
本発明の態様9の携帯端末(表示制御装置)10によれば、表示部14aと、文書を撮像して得られる文書画像をリフロー形式でコンテンツ表示領域に表示させるために前記文書画像のレイアウトを変更するレイアウト変更部111と、レイアウト変更後の文書画像をリフロー形式で表示部14aのコンテンツ表示領域に表示させる表示処理を行う表示制御部112とを備え、レイアウト変更部(変更部)111は、前記文書画像を構成する要素毎に、レイアウト変更後の文書画像全体のなかでの位置を示す配置座標(xy座標値)を求め、表示制御部112は、前記配置座標のうち、画像のスクロールの方向と平行な座標軸の座標値に、前記スクロールの量に応じたオフセット値を加算する加算処理を行い、前記加算処理後の配置座標を、前記コンテンツ表示領域と前記要素との位置関係を示す描画座標(表示用座標)として前記表示処理を行うことを特徴とする。
本発明の態様1〜9に係る携帯端末10は、コンピュータによって実現してもよく、この場合には、コンピュータを携帯端末10が備える各部として動作させることにより上記表示制御装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。