<第一の実施形態>
[システム構成]
以下、本発明を実施するための形態について図面を用いて説明する。図1は本実施形態の画像処理システムの構成を示すブロック図である。図1において、オフィスA内に構築されたLAN102には、複数種類の機能(複写機能、印刷機能、送信機能等)を実現する複合機であるMFP(Multi Function Peripheral)100が接続されている。LAN102は、プロキシサーバ103を介してネットワーク104にも接続されている。情報処理装置であるクライアントPC101はLAN102を介してMFP100からの送信データを受信したり、MFP100が有する機能を利用したりする。
例えば、クライアントPC101は、印刷データをMFP100へ送信することで、その印刷データに基づく印刷物をMFP100で印刷することもできる。尚、図1の構成は一例であり、オフィスAと同様の構成要素を有する複数のオフィスがネットワーク104上に接続されていても良い。また、ネットワーク104は、典型的にはインターネットやLANやWANや電話回線、専用デジタル回線、ATMやフレームリレー回線、通信衛星回線、ケーブルテレビ回線、データ放送用無線回線等で実現される通信ネットワークである。これは、データの送受信が可能なものであれば、何でも良い。また、クライアントPC101、プロキシサーバ103の各種端末はそれぞれ、汎用コンピュータに搭載される標準的な構成要素を有している。例えば、CPU、RAM、ROM、ハードディスク、外部記憶装置、ネットワークインタフェース、ディスプレイ、キーボード、マウス等である。
[MFPの詳細構成]
図2は本実施形態の画像処理装置であるMFP100の詳細構成を示す図である。図2中、MFP100は、画像入力デバイスであるスキャナ部201と、画像出力デバイスであるプリンタ部202と、CPU205等で構成される制御ユニット204と、ユーザインタフェースである操作部203等を有する。制御ユニット204は、スキャナ部201、プリンタ部202、操作部203と接続し、一方では、LAN219や一般の電話回線網である公衆回線(WAN)220と接続することで、画像情報やデバイス情報の入出力を行うコントローラである。
CPU205は、制御ユニット204に含まれる各ユニットを制御する。RAM206はCPU205が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ROM210は、ブートROMであり、システムのブートプログラム等のプログラムが格納されている。記憶部211は、ハードディスクドライブで、システム制御ソフトウェア、画像データを格納する。操作部I/F207は、操作部(UI)203とのインターフェース部であり、操作部203に表示するための画像データを操作部203に対して出力する。また、操作部I/F207は、操作部203から本画像処理装置の使用者が入力した情報を、CPU205に伝える役割を有する。ネットワークI/F208は、本画像処理装置をLAN219に接続し、パケット形式の情報の入出力を行う。モデム209は、本画像処理装置をWAN220に接続し、データの復調・変調を行うことにより情報の入出力を行う。以上のデバイスがシステムバス221上に配置される。
イメージバスI/F212は、システムバス221と画像データを高速で転送する画像バス222とを接続し、データ構造を変換するバスブリッジである。画像バス222は、例えば、PCIバスやIEEE1394で構成される。画像バス222上には以下のデバイスが配置される。ラスターイメージプロセッサ(RIP)213は、PDL(ページ記述言語)コードを解析し、指定された解像度のビットマップイメージに展開する、いわゆるレンダリング処理を実現する。この展開する際には、各画素単位あるいは領域単位で属性情報が付加されることになる。これを像域判定処理と呼ぶ。像域判定処理により、画素毎にあるいは領域毎に、文字(テキスト)や線(ライン)、グラフィクス、イメージ等といったオブジェクトの種類を示す属性情報が付与される。
例えば、PDLコード内におけるPDL記述のオブジェクトの種類に応じて、RIP213から像域信号が出力され、その信号値で示される属性に応じた属性情報が、オブジェクトに対応する画素や領域に関連づけて保存される。したがって画像データには、関連づけられた属性情報が付属している。デバイスI/F214は、信号線223を介して画像入力デバイスであるスキャナ部201を、信号線224を介して画像出力デバイスであるプリンタ部202、をそれぞれ制御ユニット204に接続し、画像データの同期系/非同期系の変換を行う。スキャナ画像処理部215は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部216は、プリンタ部202に出力すべきプリント出力画像データに対して、プリンタ部202に応じた補正、解像度変換等を行う。画像回転部217は、入力された画像データが正立するように回転を行い出力する。データ処理部218については後述する。
[データ処理部の詳細構成]
次に、図3を用いて、図2のデータ処理部218の詳細説明を行う。データ処理部218は、領域分割部301、属性情報付加部302、文字認識部303、リンク処理部304、フォーマット変換部305から構成される。データ処理部218は、スキャナ部201でスキャンしたイメージデータ300が入力されてくると、各処理部301〜305で処理を行うことにより、電子文書データ310を生成して出力する。図3において、図2で示した記憶部211内部にて、データ処理部218の各部が記憶・管理に利用するデータの構成を示している。ここでは、イメージデータ300、領域情報306、文字情報307、リンク情報308により構成されている。領域分割部301には、図2のスキャナ部201でスキャンされたイメージデータ、あるいは記憶部211に保存されているイメージデータ(文書画像データ)が入力される。そして、ページ内に配置された文字、写真、図、表、イラストなどの領域を抽出する。
この際の領域抽出方法(領域分割方法)としては公知の方法を用いればよい。一例を説明すると、まず、入力画像を2値化して2値画像を生成し、2値画像を低解像度化して間引き画像(縮小画像)を作成する。例えば、1/(M×N)の間引き画像を作成する際には、2値画像をM×N画素毎に分割し、M×N画素内に黒画素が存在すれば縮小後の対応する画素を黒画素とし、存在しなければ白画素とすることにより、間引き画像を作成する。次に、間引き画像において黒画素が連結する部分(連結黒画素)を抽出して当該連結黒画素に外接する矩形を作成していく。文字画像サイズに近い矩形(1文字の矩形)が並んでいる場合や、縦横のどちらかが文字画像サイズに近い矩形(数文字が繋がった連結黒画素の矩形)で短辺の近くに同様の矩形が並んでいる場合は、1つの文字行を構成している文字画像である可能性が高い。この場合は矩形同士を結合して、1つの文字行を表す矩形を得る。
そして、1つの文字行を表す矩形の短辺の長さがほぼ同じで、列方向にほぼ等間隔に並んでいる矩形の集合は、本文部である可能性が高いので、それらの文字行の矩形を結合して本文領域を抽出する。また、写真領域や図領域や表領域は、文字画像よりも大きいサイズの連結黒画素により抽出される。その結果、例えば、図5(a)のイメージデータ500からは、領域501〜506に示す領域が抽出される。なお、各領域の属性は、後述するように、そのサイズや縦横比や黒画素密度や、連結黒画素内部に含まれる白画素の輪郭追跡結果等に基づいて判断される。
属性情報付加部302は、領域分割部301で分割された領域毎に属性を付加する。図5(a)を入力されるイメージデータ300の例として処理動作を説明する。領域506は、そのページ内で文字数や行数を複数含み、文字数、行数、段落等の形態を保有する点から、総合的に判定して、『本文』の属性を付加する。残りの領域については、まず、文字画像サイズに近い矩形が含まれている領域か否かを判断する。特に、文字画像が含まれている領域は、領域内で文字画像の矩形が周期的に現れるので、領域内に文字が含まれている領域であるか否かを判断することができる。その結果、領域501、領域504、領域505は文字が含まれる領域として『文字領域』の属性を付加する。ただし、これらの領域は、文字数、行数、段落等の形態を持たない点から、『本文』の属性は付加されないことになる。
一方、それ以外の領域については、領域の大きさが非常に小さければ『ノイズ』と判定する。また、画素密度が小さい連結黒画素について、その内部の白画素輪郭追跡を行ったときに、その白画素輪郭の外接矩形が整然と並んでいる場合は当該領域を『表』と判断し、整然と並んでいない場合は『線画』と判断する。それ以外の画素密度の高いものは絵や写真であるとして『写真』の属性を付加する。更に、本文でない(『本文』の属性が付与されていない)と判断された文字領域(『文字領域』の属性を有する領域)については、『表』、『線画』、『写真』が付加された領域の近傍(領域の上または下)に存在する場合、当該『表』、『線画』、『写真』の領域を説明するための付随情報である文字領域であると判断し、『キャプション』の属性を付加する。つまり、『文字領域』と『表』、『線画』、『写真』等の領域との予め定義された位置関係に基づいて、『キャプション』の属性を有する領域を判定する。尚、『キャプション』の属性を付加する領域は、その『キャプション』が付随する領域(『表』、『線画』、『写真』)を特定できるように、『キャプション』を付加する領域と『キャプション』が付随する領域と関連付けて保存する。
また、『文字領域』と判定された領域のうち、『本文』属性の領域の文字画像より大きく、『本文』属性の領域における段組とは異なる位置にあれば『見出し』の属性を付加する。また、『本文』属性の領域における文字画像より大きく、『本文』属性の領域における段組の上部に存在すれば、属性を『小見出し』とする。更に、『本文』属性の領域における文字画像のサイズ以下の文字画像で、原稿の下端部や上端部に存在すれば『ページ』(もしくは、「ページヘッダ」、「ページフッタ」)の属性を付加する。また、『文字領域』として判断されたが、『本文』、『見出し』、『小見出し』、『キャプション』、『ページ』のどれにも当てはまらなかった場合、『文字』の属性を付加する。『文字領域』属性を有する領域に対して、更に詳細な属性を付与する判定は、上記に限定されるものではない。例えば、『文字領域』の属性を有する領域において、アンカー表現を有する領域を『キャプション』と判定しても良い。また、判定する順序を変更しても良いし、属性を付与する優先順位を定義しても良い。
以上のような属性情報付加処理を行うと、図5(a)の例では、領域501は『見出し』、領域502は『表』、領域503は『写真』、領域504は『文字』、領域505は『キャプション』、領域506は『本文』の属性が付加される。なお、領域505は、『キャプション』が付加されているため、『キャプション』が付随する領域として領域503が関連付けられている。
文字認識部303は、文字画像を含む領域(『文字』、『本文』、『見出し』、『小見出し』、『キャプション』の属性を有する領域)について、公知の文字認識処理を実行する。そして、その結果の文字コード列を文字情報として格納するとともに対象領域に関連付けを行う。
このように、領域分割部301、属性情報付加部302、文字認識部303において抽出された、領域の位置や大きさや領域属性の情報、ページの情報、文字認識結果の文字情報(文字コード情報)等は、記憶部211に保存される。図5(b)は、図5(a)のイメージデータ500を例に処理した場合、記憶部211に保存される情報の例を示す。なお、図5(a)および(b)では詳細な説明を省略しているが、表内の文字画像の領域に関しては、『表内文字』の属性を付与して文字認識処理を行い、図5(b)の「文字情報」の項目のように情報を保存しておくのが望ましい。領域504については、これが、写真や図の内部にある文字画像の領域なので、『領域503の写真内』の属性が追加されており、これは図5(b)の領域504に対する「属性」の項目で示されているとおりである。
リンク処理部304は、属性情報付加部302で検出された『キャプション』属性の領域が付随する領域(以下、キャプション付随領域)と、『本文』属性の領域に存在するアンカー表現との間にリンクを構成する為の情報を生成する。そして、その情報を記憶部211のリンク情報308として保存する。アンカー表現とは、『写真』、『線画』、『表』等の「オブジェクト」領域に付随するキャプションに含まれる、同「オブジェクト」を特定可能な文字列(例えば、「図1」、「Fig1」等)である。『本文』属性の領域中にこのアンカー表現の文字列が存在することは、近辺の文章が対象の「オブジェクト」を説明・解説したり、引用したりしている「オブジェクト参照文」であることを意味する。従って、両者を関連付けたリンク情報は、文書の閲覧を効率良く行うために用いることができる。
なお、1のオブジェクトを示す『本文』属性の領域中の文字列は1つとは限られない。従って、1の「オブジェクト」に対する複数の「文字領域」(アンカー表現)が抽出される場合があり、その場合には単数対複数の対応を有するリンク情報となる。この場合、複数側の領域は「文字領域」となり、単数側の領域として「オブジェクト」となる。具体的な対応関係については、図15を用いて後述する。
リンク処理部304によって生成されるリンク情報は、任意個数のフィールド定義によって構成される。ここで「フィールド」とは、出力電子文書のページ内で任意領域に配置可能なリンク元/リンク先となるリンク対象の領域である。フィールドの定義は、フィールドを一意に区別する為のフィールド識別子、形状および位置座標からなる外観定義、およびフィールドの表示方法や対話的操作に対する制御指示からなるアクション情報定義により構成される。アプリケーションは、本リンク情報を含む電子文書データを利用する際に、フィールド外観定義に従って指定位置を強調するための表示を行ったり、アクション情報定義によって対応位置をマウスでクリックしたときのページ移動等の制御を行ったりすることができる。ここでのアクションとは、ユーザの動作(例えば、対象領域のクリック)に基づいて、定義された処理を行うことを指す。リンク処理部304の処理内容詳細については後述する。
フォーマット変換部305は、入力されたイメージデータ300、領域分割部301、属性情報付加部302、文字認識部303、リンク処理部304から得られた情報を用いて、電子文書データ310へ変換する。電子文書データ310の例としては、SVG、XPS、PDF、Office Open XML等が挙げられる。変換された電子文書データ310は、記憶部211に保存されるか、または、LAN102を介して、クライアントPC101へ送信される。文書の利用者は、電子文書データ310をクライアントPC101にインストールされているアプリケーション(例えば、Internet Explorer、Adobe Reader、MS Office等)で閲覧する。電子文書データ310をアプリケーションで閲覧する際の詳細については後述する。
電子文書データ310は、グラフィックス等によるページ表示情報(表示用画像等)と、文字等の意味記述による内容情報(リンク情報等)を含む。したがって、フォーマット変換部305の処理は、大きく2つある。1つは、画像領域(『表』、『線画』、『写真』等の属性を有する領域)に対して、平坦化やスムージング、エッジ強調、色量子化、2値化等のフィルタ処理を施す。そして、画像データ(例えば、『線画』属性が付与された領域に対応する部分の画像)をページ表示情報として電子文書データ310に格納できるものにすることである。実際には、画像データを、ベクトルパス記述のグラフィックスデータ(ベクトルデータ)や、ビットマップ記述のグラフィックスデータ(例えばJPEGデータ)にすることである。ベクトルデータへ変換する技術は公知のベクトル化技術を用いることが可能である。もう1つは、内容情報の生成である。具体的には、図2の記憶部211に保存されている領域情報(位置、大きさ、属性)、領域内の文字情報、リンク情報等を前述のページ表示情報に対応づけながら、電子文書データ310へ変換する。
さらに、このフォーマット変換部305では、各領域に施すべき変換処理方法は、領域の属性によって異なることが多い。例えば、ベクトル変換処理は、文字や線画のように白黒あるいは数色で構成された図形に対しては好適であるが、写真のように階調性のある画像領域には不適である。このように、各領域の属性に従った適切な変換を行うためには、図5(c)のような対応テーブルをあらかじめ設定しておけばよい。例えば、図5(c)の設定に従えば、『文字』、『線画』および『表』属性の領域に対してはベクトル変換処理が、『写真』属性の領域に対しては画像切り出し処理が行われる。
さらに、図5(c)の対応テーブルにおいて、該当領域の画素情報をイメージデータ300から消去する処理の有無が併せて記載されている。例えば、図5(c)の設定に従って『文字』属性の領域をベクトルパス記述データに変換する場合、消去処理ありと指示されている。そこで、イメージデータ300上において、当該変換されたベクトルパスに覆われる部分に対応する画素をその周辺色で塗りつぶす処理を行う。同様に、『写真』属性の領域を矩形の画像パーツとして切り出す際には、イメージデータ300上において、当該切り出された領域に対応する領域範囲内を、その周辺色等で塗りつぶす処理を行う。
このような消去処理を行う目的としては、各領域に対する処理が終了した後(塗りつぶし処理終了後)のイメージデータ300を『背景』の画像パーツデータとして利用できることである。この背景用の画像データ(背景画像)には、領域分割処理で抽出された領域以外の部分(例えばイメージデータ300中の下地に対応するような画素)が残っている。電子文書データ310を記述の際には、フォーマット変換部305によって行われるベクトル変換処理や画像切り出し処理で得られたグラフィックスデータ(前景画像)を背景画像パーツデータ(背景画像)の上に重畳して表示するような記述を行う。これにより、背景画素(下地の色)の情報欠落がなくなり、かつ冗長性のないグラフィックスデータを構成することが可能となる。
そこで、『文字』領域部分に対しては、2値による画像切り出し処理と、イメージデータ300からの画素消去処理が行われるが、それ以外の属性の領域に対しては、ベクトル化処理や画像切り出し処理は行わないとすることも可能である。すなわち、処理対象外の画素(『写真』や『線画』や『表』属性の領域内の画素情報)は、背景画像パーツデータ内に残っており、この背景画像上に『文字』の画像パーツを重畳するように記述される。
さらに、図5(c)のような対応テーブルを予め複数用意しておき、出力する電子文書データ310の用途(使用目的)や電子文書データの内容に応じて選択するようにしても良い。例えば、図5(c)の対応テーブルに基づいた出力は、オブジェクトの大半がベクトルパス記述へと変換されているため、拡大縮小時の画質に優れているので、グラフィックエディタ等の再利用の用途に好適である。また、他の対応テーブルの作成例としては、文字画像を文字色ごとに個別の2値画像を生成して可逆圧縮することで、文字画像部分は高品位に再生することができ、それ以外を背景画像としてJPEG圧縮することでデータサイズの圧縮率を高くすることができる。この場合、圧縮率を高くしつつ文字画像が読みやすいデータを作成したい場合に適している。このように使い分けることで作成する電子文書データを適切なものにすることが可能となる。
[生成される電子文書データの構成例]
ここで生成される電子文書データ310の例を図6に示す。図6の例では、図5(a)のイメージデータ500の例を処理した場合に、記憶部211に保存された図5(b)のようなデータに基づいて、SVG(Scalable Vector Graphics)形式で記述を行った場合の例を示す。尚、ここではSVG形式を記述形式の例として説明するが、SVGに限定されるものではない。その他の記述形式として、例えばPDF、XPS、Office Open XML、その他のPDL系のデータ形式等が挙げられる。
図5のイメージデータ500に対する電子文書データの記述600において、記述601〜606は、それぞれ図5(a)の領域501〜506に対するグラフィックス記述である。ここで、記述601、記述604〜606は文字コードによる文字描画記述の例であり、記述602はベクトル変換された表の枠のベクトルパス記述、記述603は切り出し処理された写真画像を貼り付ける記述の例である。なお、図5(b)と図6の例で、座標値X1、Y1等記号で記述されている部分は実際には対応する値を示す数値である。また、記述607はリンク情報の記述例である。記述607内において、記述608はキャプション付随領域に対するフィールド定義であり、「image_01」が付与されたフィールド識別子610、フィールドの外観定義611およびアクション定義612から構成されている。同様に記述609は、本文内のアンカー表現領域に対するフィールド定義であり、「text_01」が付与されたフィールド識別子613、外観定義614およびアクション定義615によって構成されている。
図6に例示される電子文書データ310をユーザが閲覧する際のアプリケーションの動作例を説明する。ユーザがキャプション付随領域、つまり外観定義611の矩形範囲をクリックすると、アプリケーションはアクション定義612に定義された内容に従った動作を行う。すなわち、フィールド識別子「text_01」を有するフィールドを取得し、このフィールドの外観である矩形X7,Y7,W7,H7を赤で強調描画した状態でフォーカスを設定する。フォーカスが設定されることで、アプリケーションは該当フィールドを有するページに移動し、かつ該当部分が表示画面中心にくるよう表示する等の制御を行う。従って、ユーザはリンク先のアンカー表現領域を含む文章部分へワンクリックの動作で直接遷移することが出来、かつ同部分が強調されているので発見も容易となる。同様にユーザが本文内のアンカー表現領域をクリックした場合も、アプリケーションはアクション定義615に従ってキャプション付随領域の矩形を強調描画した状態でフォーカスを設定する。このようにユーザは、閲覧アプリケーション内でリンクされたキャプション付随領域とアンカー表現領域の間を容易に移動しながらの閲覧が可能となる。なお、フィールドの外観(表示)は例のように矩形のほか、円や任意パス、ボタンのビットマップイメージなどを指定することも可能である。
なお、本説明では、領域分割部301、属性情報付加部302、文字認識部303は、入力されるイメージデータにより領域情報306や文字情報307を抽出している。入力が電子文書データの場合も、一度各ページをイメージデータに変換することで同じ処理を行うことが出来る。一方で、入力される電子文書フォーマットをそのまま解釈し、前述した領域や属性を抽出するようにしてもよい。ここでいう電子文書フォーマットには、PDLなどのプリントデータ、SVG、XPS、PDF、Office Open XMLなどのアプリケーションデータ、さらにHTMLなどのWeb表示用データなどが含まれる。同時に、フォーマット変換部305は入力電子文書フォーマットからグラフィック情報を抽出し、出力される電子文書データ310のフォーマットに合わせた形に変換して出力する。ただし、これら個々の電子文書フォーマットからの領域情報・文字情報抽出処理、およびグラフィック情報抽出・フォーマット変換処理の内容については本発明の本質とは関係ないので説明は省略する。
[リンク処理部]
図4はリンク処理部304の構成例を示すブロック図である。以下、リンク処理部304に含まれる各構成要素の処理内容について説明する。リンク対象選択部401は入力されたイメージデータに対して、リンク対象となる領域を選択する。リンク対象となる領域とは具体的に、キャプションが付随する『写真』、『線画』、『表』のなどのオブジェクト領域(すなわちキャプション付随領域)と、アンカー表現の文字列を含む『本文』などの文字領域である。
キャプション内アンカー表現抽出部402は、リンク対象選択部401で選択されたキャプション付随領域に関係するアンカー表現を抽出する。具体的には、付随するキャプション領域の文字情報を解析し、その中からアンカー表現(例えば、「図1」、「Fig1」等)を検索する。そして、アンカー表現が見つかった場合には、その該当部分をキャプション内アンカー表現、それ以外の部分をキャプション表現として抽出する。また、文字コードの特性や辞書などを含むことで、有意でない文字列(無意味な記号列など)を排除する機能も有する。これは、文書のテキスト部分の境界に現れる飾りや、分割線、画像を文字として解釈するような文字認識の誤認識等に対応するためである。
また、アンカー表現を抽出するために、図番号などの多言語の文字列パターンや、それに対する文字認識の誤認識パターンを保有することで、アンカー表現の抽出精度と、アンカー表現の文字補正を行うことが可能である。また、キャプション表現に対しても、同様である。すなわち、自然言語処理での解析や、文字認識の誤認識補正などを行うことが可能で、アンカー表現との境目や、先頭・末尾に現れる記号や文字飾りなどを補正して排除したりする機能を有することも可能である。
本文内アンカー表現検索部403は、キャプション内アンカー表現抽出部402のアンカー表現抽出処理で用いられるアンカー表現である全ての特定文字列(「図」、「Fig」など)を、『本文』領域等の文字領域中から検索する。そして、オブジェクトに対応するアンカー表現の候補として検出する。また、アンカー表現を含みキャプション付随領域の説明・解説、引用などを行っている『本文』領域中の参照表現候補も併せて検出する。ここでは、検索を高速化するための、検索用インデックス(インデックス作成とそれを利用した高速検索の技術は公知のインデックス作成・検索技術を用いることが可能である)を作成することも可能である。また、複数のアンカー表現の特定文字列で一括検索をすることで、高速化を実現することも可能である。
また、『本文』領域中の参照表現に対しても、図番号などの多言語の文字列パターンや、それに対する文字認識の誤認識パターンを保有することで、検索精度の向上、および、補正を行う機能の提供が可能である。なお、本文内アンカー表現検索部403により抽出されるのは、アンカー表現の候補である。この本文内アンカー表現候補は、キャプション内アンカー表現抽出部402で抽出されたアンカー表現と後述の処理で対応付けされることで、実際のアンカー表現として確定される。ただし、以下記述簡略化の為、本文内アンカー表現の候補も本文内アンカー表現と記述する。
フィールド生成部404は、リンク対象となる領域のフィールド定義の記述を生成する。ここでリンク対象になる領域は、リンク対象選択部401で選択されたキャプション付随領域や、本文内アンカー表現検索部403で検索・抽出された本文内アンカー表現の文字列が存在する領域である。なお、生成時点でのフィールド定義は、フィールド識別子と外観のみが定義され、フィールド間のリンクを定めるアクション定義が確定していない不完全なものである。そして、後述のリンク構成情報を基に、全ページ処理後に各フィールドのアクション情報が関連づけられて定義されることで、「キャプション付随領域(オブジェクト)」と「本文中のオブジェクトの参照表現(アンカー表現)」との間の双方向のリンクが完成される。
さらにフィールド生成部404では、リンク対象領域の付近に複数のフィールドを生成し、それぞれに別のリンク先を定めるようにすることもできる。このようなフィールドは、他フィールドとの区別のために位置を変え、かつアイコンやラベル文字列によって機能がユーザに判るようボタン状の外観を有するように構成することができる。このようなボタンによるフィールドの具体例は後で説明する。フィールド生成部404が生成するフィールド定義408は、図3のリンク情報308を構成する情報の一つとして記憶・管理される。
リンク構成情報生成部405は、上述したフィールド生成部404でリンク対象のフィールドを生成した際に、各フィールドのフィールド識別子、出現累計回数、リンク先情報などのリンク構成情報を集計するためのリンク構成管理テーブル409を生成・更新する。リンク構成管理テーブル409もリンク情報308の一つとして記憶・管理される。リンク構成管理テーブル409の内容詳細については後述する。アクション定義生成部406は、リンク構成情報生成部405で生成されたリンク構成管理テーブル409を利用して、各フィールドに対応するアクション定義を生成し、フィールド定義408内の各フィールドに付与する。
リンク処理制御部407は、リンク処理部304全体の制御を行う。主に、図2の記憶部211に保存されている領域情報306(位置、大きさ、属性)、領域内の文字情報307に基づいて、イメージデータ300中の各領域を適切な各処理部401〜406へと配分する。また、各処理部401〜406から出力される情報を適切な処理部へ渡す制御を行う。
リンク処理部304の各部分(図4で示した各処理部401〜407)の動作については、後述の実際に処理を行う例を扱う中で、再度取り上げられ詳細に説明する。
[処理フロー(概要)]
次に、本実施形態の画像処理システムで実行する処理全体の概要を、図7のフローチャートを用いて説明する。図7に示すフローチャートは、図2のデータ処理部218(図3で示した各処理部301〜305)によって実行されるものとする。なお、本実施形態では、CPU205が記憶部211に格納されたコンピュータプログラムを読み取り実行することによって、データ処理部218(図3の各処理部301〜305)として機能するものとする。しかし、これに限るものではなく、例えば、データ処理部218を、電子回路等のハードウェアで実現するように構成してもよい。
図7は、図1のスキャナ部201で入力された複数ページのイメージデータを、1ページ毎に処理を行い、複数ページからなる電子文書データに変換する処理のフローチャートである。尚、複数ページのイメージデータとして、ここでは、図10(a)に示した各ページ画像が入力されるものとする。以下、図7のフローチャートの各説明を行う。
S701において、データ処理部218はリンク情報308、すなわちリンク対象領域に関するフィールド定義408と、フィールド間のリンク関係を管理しているリンク構成管理テーブル409を初期化する。リンク情報308の内容に関する具体的な説明は後述する。
S702において、領域分割部301は、入力された1ページ分のイメージデータから領域を抽出する。例えば、図10(a)のイメージデータ1001(1ページ目)に対しては領域1008を抽出する。S702において図10(b)に示す「座標X」「座標Y」「幅W」「高さH」および「ページ」の情報が記憶部211に保存される。
S703において、属性情報付加部302は、S702で分割された各領域に属性を付加する。図10(a)のイメージデータ1002(2ページ目)の例では、領域1010には『線画』の属性、領域1011には『キャプション』の属性を付加する。尚、この領域1011には、付随する領域が領域1010であるという情報も併せて付加する。即ち、領域1010はキャプション付随領域となる。S703において、図10(b)に示す「属性」および「キャプションが付随する領域」の情報が記憶部211に保存される。
S704において、文字認識部303は、S703で『文字領域』の属性(『本文』、『キャプション』、『見出し』、『小見出し』等)を付加した領域(以下、文字領域)に対して文字認識処理を実行し、その結果を文字情報として対象領域に関連付けて保持する。S704において図10(b)に示す「文字情報」が記憶部211に保存される。
S705において、リンク処理部304は、図8のフローチャートで説明されるリンク処理を行う。この処理が終わると、S706へ進む。以下に、図10の入力データを入力例として、図10(a)中の各ページが入力された場合のS705およびS706の処理詳細について順に説明する。
[リンク処理(1ページ目(イメージデータ1001)を入力した場合)]
まず、S705の処理詳細について、図10(a)に示したイメージデータ1001が入力された場合を例にとり、図8のフローチャートを用いて説明する。本処理フローは、本実施形態において、CPU205によって、ROM210、記憶部211等に記憶されたプログラムが読み出され、実行されるものとする。図8のS801において、リンク処理部304内のリンク対象選択部401は、記憶部211に保存された領域情報306より、文字領域の内、リンク情報生成処理が行われていない領域を一つ選出する。そして、未処理の文字領域があれば、当該文字領域を処理対象として選択し、S802に進む。文字領域が存在しないか、全て処理済みであった場合にはS807に進む。イメージデータ1001は文字領域のうちの『本文』領域1008を含んでいるため、S802へ進む。
S802において、本文内アンカー表現検索部403は、リンク対象選択部401によって選択された文字領域の文字情報307から、アンカー表現である全ての特定文字列(「図」、「Fig」など)を検索する。この特定文字列は、後述するS808においてキャプション内アンカー表現抽出部402が検索に用いる文字列と一致する。本文内アンカー表現が検出された場合はS803へ進む。本文内アンカー表現が検出されなかった場合には、当該領域内にリンク情報を付与する該当箇所がないと判定し、S801に戻る。そして、次の未処理文字領域を選択する。イメージデータ1001の場合、領域1008から文字列「図1」を含む領域1009が、アンカー表現の文字列が存在する領域(以下、本文内アンカー表現領域)として検出される。
S803において、フィールド生成部404は、S802で検出された本文内アンカー表現領域をリンク対象としてフィールドを生成し、フィールド識別子およびフィールド外観を定義するグラフィックデータを関連付ける。生成されたフィールドの情報は、記憶部211のフィールド定義408に追加される。
ここで「フィールド識別子」とは、後の処理でフィールド間にリンク関係を付与するために、フィールド自体の性質を表わすよう付けられるフィールドの識別情報である。本実施形態では、文字列「A_B−C[−D]」をフィールド識別子の構成体系として用いている。ここで、「A」はフィールドの種類、すなわち“キャプション付随領域”か“本文内アンカー表現領域”かを示す文字列である。本実施形態ではキャプション付随領域は「image」、本文内アンカー表現領域を「text」で表わすものとする。「B」はそのフィールドに用いられているアンカー表現の文字列、例えば「図1」、「図2」などなどである。「C」は同一のアンカー表現を有する複数の領域に対し、出現順に割り宛てられる序数である。
なお、本実施形態の以下説明においては、同一アンカー表現を有す複数の本文内アンカー表現領域が出現する場合を想定しており、同一アンカー表現を有す複数のキャプション付随領域が出現する場合を想定しない。これはひとつの文書に同じ図番号等を有するオブジェクトは複数存在しないという一般的事実に沿うものであるが、主な理由は説明を簡単にする為である。よって、そのような例外に対応するために、キャプション付随領域と本文内アンカー表現を対等に扱うようにしてもよい。「[−D]」の部分はあるフィールドに付随するボタンフィールドを識別する為の任意文字列で、ボタン以外のフィールドでは省略される。ボタンフィールドの具体例については後述する。上記規則に従って、領域1008内に存在する本文内アンカー表現の領域1009に対しては、文字列「text_図1−1」がフィールド識別子として関連付けられる。この場合、「[−D]」の部分は省略される。
また、フィールド外観を定義するグラフィックデータは、本実施形態により生成される電子文書データ310をアプリケーションで閲覧する際、フィールドに対応して表示される描画情報である。フィールドの外観を定義するグラフィックデータの一例を模式的に示す図14(a)に示す。グラフィックデータ1401は、イメージデータ1001(の一部)に対応する電子文書データの1ページ目のグラフィックデータを示している。これはグラフィックデータ1402(すなわち、同表示に重畳されてアンカー表現「図1」が存在する領域1009)を囲むように描画される矩形情報である。
グラフィックデータ1402は、『本文』領域中の説明表現におけるアンカー表現の位置を分かりやすくするための強調表示に用いられる。すなわち、閲覧者がキャプション付随領域を有するページからアンカー表現を含む『本文』領域のあるページに移動した場合に、ユーザがどの位置(何段落目、何行目)を見ればよいのかを容易に把握するための描画情報としても利用する。図14(b)に、アンカー表現のグラフィックデータ1404が強調表示されている例を示す。尚、ここで生成するグラフィックデータは、アンカー表現の文字列の位置ではなく、『本文』領域中の説明表現の位置を分かりやすくするために表示する描画情報として、例えば文章全体を囲むように生成してもよい。また、本実施形態においてグラフィックデータを矩形として説明しているが、矩形に限ることなく閲覧者に分かりやすくするために強調表示する描画情報であれば任意の形、線、ビットマップ等でも構わない。
図11のフィールド1120に、図10(a)のイメージデータ1001から生成されるフィールドの例を示す。フィールド1120はイメージデータ1001中のアンカー表現領域1009に対応するフィールドで、フィールド識別子1101として「text_図1−1」が関連付けられている。また外観定義グラフィックデータ1102として、矩形(「座標X」、「座標Y」、「幅W」、「高さH」)=(「X20」、「Y20」、「W20」、「H20」)を描画するグラフィックデータが関連付けされる。なお、フィールド定義のうちアクション定義1103は未決定であるため、この段階では内容は空である。
S804において、リンク構成情報生成部405は、フィールド間の対応関係を構築するため、記憶部211に保持されるリンク構成管理テーブル409を更新する。リンク構成管理テーブル409の目的は、入力文書データ全体から得られた情報よりフィールド定義408の各フィールドに対するアクション定義を定め、アプリケーション上でのリンク機能を実現することである。
ここで図15にリンク構成管理テーブルの一例を示す。図15に示した(a)から(f)には、処理が進むにつれてリンク構成管理テーブルが更新されている例を示している。リンク構成テーブルは、キャプション付随領域関連情報の欄と、本文内アンカー表現領域関連情報の欄を対にして管理する。キャプション付随領域関連の情報としては、キャプション内アンカー表現の欄、後述のS809にてキャプション付随領域に対して生成されるフィールドの識別子の欄がある。本文内アンカー表現領域関連の情報としては、本文内アンカー表現欄と本文内アンカー表現出現回数欄、および本文内アンカー表現に対して生成されたフィールドの識別子の欄がある。これらの情報は記憶部211のリンク構成管理テーブル409に保存され、S804およびS810で随時更新される。
[リンク構成情報の更新処理]
S804におけるリンク構成情報の更新に係る処理詳細について、図11のフィールド1120をリンク対象として処理する場合を図9(a)のフローチャートに沿って説明する。
S901において、リンク構成情報生成部405は、リンク構成管理テーブル内に、「本文内アンカー表現」の項目の内容が処理中のフィールドのアンカー表現と一致するデータ行が存在するか否かを判定する。存在する場合はそのデータ行を処理対象にしてS905に進む。存在しない場合はS902に進む。イメージデータ1001入力時点では、リンク構成管理テーブルは空なのでS902に進む。
S902において、リンク構成情報生成部405はリンク構成管理テーブル内に、「キャプション内アンカー表現」の項目の内容が処理中フィールドのアンカー表現と一致するデータ行が存在するか否かを判定する。具体的には、処理中のフィールド識別子の文字列から、アンカー表現を示す部分の文字列を抽出し、その文字列とデータ行の内容を比較する。存在する場合はそのデータ行を処理対象にしてS904に進む。存在しない場合はS903に進む。イメージデータ1001入力時点では、フィールド1120の識別子「text_図1−1」中のアンカー表現「図1」に対し、リンク構成管理テーブルは空なのでS903に進む。
S903では、空内容のデータ行をリンク構成管理テーブルに新規追加する。以降の処理はこの新規データ行を対象に行われる。S904では、対象データ行の「本文内アンカー表現」の項目に処理中のフィールドにおけるアンカー表現の文字列を記述する。本例ではフィールド1120のアンカー表現「図1」が記述される。S905では、対象データ行の本文アンカー表現出現回数を+1する。本例では、この段階でこのアンカー表現は初出の為、出現回数は0から1に更新される。
S906では、対象データ行の「本文内アンカー表現領域フィールド識別子」の項目に、処理中のフィールドのフィールド識別子を追加する。本例では、上述した規則に従って、「text_図1−1」が追加される。S906終了後は図8S804に戻る。フィールド1120に対するS804終了後のリンク構成管理テーブルの内容例を15(a)に示す。
図8に戻り、S805において、フィールド生成部404は、S803で生成したアンカー表現を有する領域のフィールドの近傍に、ボタンの外観を有するフィールド(以下、ボタンフィールド)を追加生成する。ここで追加されるボタンフィールドは、本文内アンカー表現の領域に対して複数のアクションを定義する目的で用いられる。本例では、以下の3つのアクションを定義する為のボタンフィールドを3つ生成するものとする。
(1)前の本文内アンカー表現領域を強調表示し、フォーカス設定するアクション
(2)次の本文内アンカー表現領域を強調表示し、フォーカス設定するアクション
(3)キャプション付随領域を強調表示し、フォーカス設定する設定アクション
(1)および(2)は、文書データ中には同じキャプション付随領域(オブジェクト)を参照する本文内アンカー表現領域が複数存在していることを想定している。これにより、アプリケーション閲覧時に複数アンカー表現を有する領域間で相互に表示箇所を移動することを目的としている。(3)の目的は、S803で生成したフィールドと同じで、対応するキャプション付随領域に表示箇所を移動することであるが、(1)、(2)によるアンカー表現間の移動と明示的に区別する為に用いられる。
フィールド1120に対するS805の処理の例では、(1)〜(3)を目的として、それぞれフィールド識別子「text_図1−1−Prev」、「text_図1−1−Next」、「text_図1−1−Back」のボタンフィールドが生成される。また、各フィールドの外観定義の例を図14(c)に示す。上記(1)(2)(3)はそれぞれボタン1405、1406、1407に示すようなビットマップを有するボタンとして、グラフィックデータ1404の下端に並ぶよう配置されている。これらの外観はあくまで一例であり、ユーザが指示用の表示として認識できれば、どのようなものでも良い。例えば「前へ」「次へ」「戻る」等のテキストラベルによるボタンであってもよい。またボタンの位置、大きさ、色彩などを変えることで本文の文字列が隠れないようにしてもよい。図11のフィールド1121〜1123にこれらボタンフィールドに対するフィールド定義の例を示す。なおフィールド1120同様、この時点でアクション定義の内容は空である。
S806では、S802で文字領域において、複数のアンカー表現検出された場合、未処理のアンカー表現が存在する場合はS803に戻り、S803以降の処理を繰り返す。未処理のアンカー表現が無い場合はS801に戻り、次の未処理の文字領域の処理に移る。
S807において、リンク対象選択部401は、記憶部211に保存された領域情報306において、キャプション付随領域の内、フィールド生成処理が行われていない領域(オブジェクト)を一つ選択する。すなわち、未処理のキャプション付随領域があれば、当該キャプション付随領域を処理対象として選択し、S808に進む。全てのキャプション付随領域が処理済みであった場合には処理を終了し、図7のS705へ戻る。イメージデータ1001には、キャプション付随領域が存在しないため、処理を終了し、図7のS705へ戻ることになる。
[フォーマット変換処理]
続いて、イメージデータ1001が入力された場合の図7中のS706のフォーマット変換処理詳細について説明する。S706において、フォーマット変換部305は、イメージデータ300および、図10(b)に示す記憶部211に保存された各種情報に基づいて、電子文書データ310への変換を行う。尚、図4で説明したように、フォーマット変換部305は、領域1008に施すべき変換処理方法を記した変換対応テーブルに従って、イメージデータ300内の領域に変換処理を実行する。ここでは、図5(c)の変換対応テーブルを用いて変換を行う。すなわち、文字属性の『本文』領域に対してベクトル変換を行ったデータと、イメージデータから文字部分の画素を消去した背景画像データをページのグラフィック記述とする。
また、リンク情報としては図11のフィールド1120〜1123を各々のフィールド記述子、外観定義グラフィックデータを含めて記述する。ただし、現段階では前述のとおりアクション定義は未定義であるため、各フィールドのアクション内容は電子文書データ310の別部分を参照するように記述しておく。実際のアクション内容は、後述するS709において送信されて電子文書データ310へと追加されることになる。
図18(a)に、イメージデータ1001に対してフォーマット変換部305が生成する電子文書データ310の1ページ目のデータ記述の例を示す。記述1801は背景画像のグラフィックデータ、記述1802は文字部分のパス記述、記述1803はリンク情報であるフィールドの記述例である。記述1803中の記述1804は、図11のフィールド1120に対応する記述例であり、記述1805にはフィールド識別子、記述1806には外観定義、そして記述1807にはアクション定義が定義されている。この記述1807は、クリック時のアクション(onclick)として、“text_図1−1.onclick”というidを有する要素を参照するように記述してある。実際にアクション内容が記述されるその要素は、後述する全ページ送信終了後のアクション定義送信(S709)において電子文書データに追加されることとなる。同様に記述1808は図11のフィールド1121に対応する記述例であり、記述1809にはフィールド識別子、記述1810には概観定義、そして記述1811にはアクション定義が定義されている。
[リンク処理(2ページ目(イメージデータ1002)を入力した場合)]
次に、2ページ目のイメージデータ1002が入力された場合における図7のS705の処理詳細について、図8のフローチャートを用いて説明する。
S801において、リンク対象選択部401は、文字領域が存在しないと判定し、S807へ進む。S807において、リンク対象選択部401は、未処理のキャプション付随領域を選択し、S808へ進む。本例では、「キャプションが付随する領域」の項目を参照して、処理対象となるキャプション付随領域である領域1010、1012のうちから、先ず領域1010を選択する。そして、S808へ進む。
S808において、キャプション内アンカー表現抽出部402は、リンク対象選択部401によって選択されたキャプション付随領域に付随するキャプション領域の文字情報から、アンカー表現およびキャプション表現を抽出する。アンカー表現が抽出された場合はS809に進み、抽出されなかった場合はS807に戻る。イメージデータ1002では、キャプション付随領域1010が抽出されるため、S809へ進む。S808で抽出される「アンカー表現」とは、前述のようにキャプション付随領域を識別するための文字情報(文字列)である。一方、「キャプション表現」とはキャプション付随領域を説明するための文字情報(文字列)である。
キャプション付随領域に付随するキャプションには、その構成として、(1)アンカー表現のみが記載される場合、(2)キャプション表現のみが記載される場合、(3)両方が記載される場合、(4)上記いずれでもない場合、の4つが考えられる。例えば、アンカー表現は「図」や「Fig」等、特定の文字列と、番号や記号との組み合わせ表現される場合(上記(3)に相当)が多い。そこで、それら特定の文字列を登録したアンカー文字列用辞書を予め用意しておき、キャプション表現を該辞書と比較してアンカー部分(アンカー文字列+数記号)を特定すればよい。そして、キャプション領域の文字列のうち、アンカー表現以外の文字列をキャプション表現として判断すればよい。イメージデータ1002において、キャプション付随領域1010に付随するキャプション領域1011の文字情報は、「図1 AAA」である。従って、アンカー表現は「図1」、キャプション表現は「AAA」となる。
S809では、フィールド生成部404は、S808でアンカー表現が抽出されたキャプション付随領域をリンク対象としてフィールドを生成し、フィールド識別子およびフィールド外観を定義するグラフィックデータを関連付ける。図10(a)のキャプション付随領域1010に対しては、図11に示すフィールド1124が生成される。フィールド1124にはフィールド識別子1101として「image_図1−1」が関連付けられる。また、外観定義グラフィックデータ1102として、矩形のグラフィックデータ(座標X,座標Y,幅W,高さH)=(X24,Y24,W24,H24)が関連付けされる。図14(d)の領域1406は、この矩形のグラフィックデータを模式的に示した図である。このデータは、図14(e)示すように、アプリケーションが2ページ目のイメージデータ1407を表示するときに、キャプション付随領域部分を表示1408のように強調表示する際に用いられる。なお、この矩形のグラフィックデータの座標は、キャプション付随領域の外接矩形と同一であってもよいし、見やすいように外接矩形よりも多少大きい値であっても良い。また、表示方法は、矩形に限らず、閲覧者が認識しやすいように強調表示する描画情報であれば任意の形、線、ビットマップ等でも構わない。以上生成されたフィールドの情報は記憶部211のフィールド定義408に追加される。
S810では、リンク構成情報生成部405は、フィールド間の対応関係を構築するためのリンク構成管理テーブル409を更新する。S810の処理詳細について、図11のフィールド1124をリンク対象として処理する場合の例を図9(b)のフローチャートに沿って説明する。なお、処理直前のリンク構成テーブルは図15(a)である。
S911において、リンク構成情報生成部405は、リンク構成管理テーブルにおける「本文内アンカー表現」の項目の内容が処理中フィールドのアンカー表現と一致するデータ行が存在するか否かを判定する。存在する場合は、そのデータ行を処理対象にしてS913に進む。存在しない場合は、S912に進む。本例の場合、図15(a)におけるリンク情報1501の本文内アンカー表現「図1」と処理中フィールドのアンカー表現が一致するのでS913に進む。S913では、対象データ行の「キャプション内アンカー表現」の項目に処理中フィールドのアンカー表現文字を記述する。本例ではアンカー表現「図1」が記述される。
S914では、対象データ行の「キャプション付随領域フィールド識別子」の項目に、処理中フィールドに対応するフィールドの識別子を記述する。本例ではフィールド1124のフィールド識別子「image_図1−1」が追加される。S914が終了後は、図8S807に戻る。図11に示すフィールド1124に対するS810終了後のリンク構成管理テーブルの内容例を図15(b)に示す。
本例におけるイメージデータ1002の入力に対しては、続けてキャプション付随領域1012がS807で検出され、同様にS808〜S810の処理が行われる。以下、簡単に説明するが、S808ではキャプション付随領域1012に付随するキャプションからアンカー表現「図2」が抽出され、S809では図11に示すフィールド1125が生成される。S810ではフィールド1125に対して図9(b)のフローチャートに従って処理が行われる。S911ではアンカー表現「図2」を含むデータ行が存在しないので、S912に進み新規データ行が生成される。このデータ行に対してS913でキャプション内アンカー表現、S914でキャプション付随領域フィールド識別子の各欄が記述される。フィールド1125に対するS810終了後のリンク構成管理テーブルの内容例を15(c)に示す。
続いて、イメージデータ1002が入力された場合の図7に示すS706のフォーマット変換の処理詳細について説明する。S706において、1ページ目のイメージデータ1001と同様に、フォーマット変換部305は、イメージデータ1002に対応する電子文書ページの生成を行う。具体的には図10(a)の領域1010〜1013を図5(c)のテーブルに従って変換したグラフィックデータの生成と、図11のフィールド1124、1125に対応するリンク情報が生成される。
図18(b)に、イメージデータ1002に対してフォーマット変換部305が生成する電子文書データ310の2ページ目のデータ記述の例を示す。記述1821は背景画像のグラフィックデータ、記述1822は2つの線画領域に対するパス記述、記述1823はリンク情報であるフィールドを定義している。
記述1823に含まれる記述1824は、図11のフィールド1124に対応する記述例であり、記述1825にはフィールド識別子、記述1826には外観定義、そして記述1827にはアクション定義が定義されている。記述1828は、図11のフィールド1128に対応する記述例であり、記述1829にはフィールド識別子、記述1830には外観定義、そして記述1831にはアクション定義が定義されている。なお、これらアクション情報は1ページ目のイメージデータと同様に、電子文書データ310に後で追加されるアクション定義の要素を参照するように記述されている。
[リンク処理(3ページ目(イメージデータ1003)を入力した場合)]
次に、3ページ目のイメージデータ1003が入力された場合のS705の処理詳細について、図8のフローチャートを用いて説明する。図8のS801において、リンク対象選択部401は、記憶部211に保存された領域情報306より、未処理の文字領域を一つ選択して、S802に進む。イメージデータ1003の場合、『本文』領域1014が選択されてS802へ進む。
S802において、本文内アンカー表現検索部403は、『本文』領域1014の文字情報からアンカー表現「図1」が存在する領域1015を抽出する。S803において、フィールド生成部404は、領域1015をリンク対象とするフィールドを生成する。フィールド識別子は、アンカー表現「図1」を2番目に参照するフィールドという意味で、前述の規則に従い、「text_図1−2」として付与される。1ページ目のイメージデータと同様に、さらに、領域1015を囲む矩形のグラフィックデータが外観定義として関連付けられる。生成されたフィールドは記憶部211のフィールド定義408に追加される。領域1015に対するフィールド定義の例を図11のフィールド1126に示す。
S804において、リンク構成情報生成部405は、リンク構成管理テーブルを更新する。既に説明したため詳細な内容は省略するが、フィールド1126を対象に図9(a)のフローチャートに沿った処理を行うことにより、リンク構成管理テーブルは図15(c)から図15(d)に更新される。S805において、本文内アンカー表現領域1015に付随するボタンのフィールドが生成される。本処理に関する説明は、1ページ目のイメージデータの処理に対する同処理の説明と全く同じなので省略する。本例では、図11のフィールド1127〜1129が生成される。
続くS806では、未処理のアンカー表現が無いのでS807に進み、更に、イメージデータ1003にはキャプション付随領域が存在しないため、S801に戻る。S801では今度は文字領域1016が選出される。しかし、S802でアンカー文字が検出されないため、S803以降の処理は行われず、全領域終了として図8の処理を終了して図7S705に戻る。
図7のS706において、フォーマット変換部305は、イメージデータ1003に対応する電子文書ページの生成を行う。具体的には図10(a)の領域1014、1016を図5(c)のテーブルに従って変換したグラフィックデータと、図11のフィールド1126〜1129に対応するリンク情報とが生成される。図18(c)に電子文書データ310の3ページ目のデータ記述例を示す。内容説明は1ページ目のデータ記述例と大きな差が無いため省略する。
[リンク処理(4ページ目(イメージデータ1004)を入力した場合)]
4ページ目のイメージデータ1004が入力された場合のS705の処理詳細について、図8のフローチャートを用いて説明する。
図8のS801において、リンク対象選択部401は、記憶部211に保存された領域情報306より、未処理の文字領域を一つ選択して、S802に進む。イメージデータ1004の場合、本文領域1017が選択されてS802へ進む。
S802において、本文内アンカー表現検索部403は、本文領域1017の文字情報からアンカー表現「図1」が存在する領域1018および「図2」が存在する領域1019を抽出する。
S803において、フィールド生成部404はまず領域1018をリンク対象とするフィールドを生成する。フィールド識別子は、アンカー表現「図1」を3番目に参照するフィールドという意味で、前述の規則に従い、「text_図1−3」として付与される。また、領域1018を囲む矩形のグラフィックデータが外観定義として関連付けられる。生成されたフィールドは、記憶部211のフィールド定義408に追加される。領域1018に対するフィールド定義の例を図11のフィールド1130に示す。
S804において、リンク構成情報生成部405は、リンク構成管理テーブルを更新する。既に説明したので詳細な内容は省略するが、フィールド1130を対象に図9(a)のフローチャートに沿った処理を行うと、リンク構成テーブルは、図15(d)から図15(e)に更新される。S805において、本文内のアンカー表現の領域1015に付随するボタンのフィールドが生成される。本処理に関する説明は1ページ目のイメージデータへの処理の説明と同じなので省略する。本例では、図11に示すフィールド1131〜1133が生成される。
S806では、未処理のアンカー表現「図2」の領域1019が存在するため、S803に戻る。S803〜S805の処理では、領域1019に対して前述の説明と同様に図11のフィールド1134〜1137が生成され、リンク構成管理更新テーブルは図15(f)へ更新される。再びS806では、未処理のアンカー表現がないのでS807に進み、更にイメージデータ1007にはキャプション付随領域が存在せず、未処理の文字領域も無いので、図8に示す処理を終了して図7のS706に進む。
図7のS706において、フォーマット変換部305は、イメージデータ1004に対応する電子文書データ310の生成を行う。具体的には図10(a)に示す領域1017を図5(c)のテーブルに従って変換したグラフィックデータと、図11のフィールド1130〜1137に対応するリンク情報とが生成される。図18(d)に電子文書データ310の4ページ目のデータ記述例を示す。内容説明は1、3ページ目のデータ記述例と大きな差が無いため省略する。
以上、図7のS705、S706の処理について、図10(a)の入力されたイメージデータの例(4ページ)に従って個別の処理例を説明した。以降はS707、S708は各ページ共通の処理として説明する。
S707において、データ処理部218は、S706でフォーマット変換した電子文書データをページ単位でクライアントPC101へ送信する。S708において、データ処理部218は、S702〜S707の処理を全てのページに対して行い、全ページの処理が終了したか否かを判定する。全てのページの処理を終了していればS709へ進む。未処理のページがあればS702から繰り返す。このように図10(a)に示した4ページ分のイメージデータ1001〜1004に対して、S702〜S707の処理を行う。
S709において、アクション定義生成部406は、S705にて作成されたリンク構成管理テーブル409を利用して、S706で生成されたリンク情報の各フィールドに対応するアクション定義の情報を生成する。フォーマット変換部305はこの情報を電子文書データ310に付与する。ただし、電子文書データ310はS707にて送信済みのため、電子文書データ310に付与する形で送信する。
[アクション定義生成部による処理]
以下に、図11に示される各フィールド定義および図15(f)のリンク構成管理テーブルを処理対象例として、アクション定義生成部406の処理過程を、図16のフローチャートを使って説明する。
S1601において、アクション定義生成部406は、記憶部211のフィールド定義408内にアクション定義が未処理のフィールドがあるか否かを判定する。未処理フィールドがあれば処理対象としてS1602に進む。無い場合はアクション定義処理を終了する。
S1602において、アクション定義生成部406は、処理対象フィールドに関連するデータ行を、記憶部211のリンク構成管理テーブル409から読み出す。具体的には、リンク構成管理テーブルにおいて、処理対象フィールドのフィールド識別子の文字列中にアンカー表現部分(「図1」、「図2」など)と同一の文字列をキャプション付随領域のアンカー表現もしくは本文内アンカー表現の項目に有するデータを読み出す。
S1603において、アクション定義生成部406は、フィールド識別子を参照して処理対象のフィールド種別が、キャプション付随領域か、本文内アンカー表現領域か、本文内アンカー表現領域に付随するボタンフィールドかを判別する。具体的にはフィールド識別子に文字列「image」が含まれればキャプション付随領域のフィールドと判定し、S1604へ進む。文字列「text」を含みかつ末尾に「−Prev」「−Next」「−Back」のいずれかの文字列が含まればボタンフィールドと判定してS1605へ進む。文字列「text」を含むそれ以外の場合は本文内アンカー表現領域のフィールドと判断してS1606に進む。
キャプション付随領域のフィールドに対して、S1604では、アクション定義生成部406は予め定義された図17(a)の表を利用してアクションを決定する。具体的には、S1602で読み出したリンク構成管理テーブルのリンク情報から本文内アンカー表現出現回数の項目の値を読み出す。そして、値が1ならばアクション1701、2以上ならばアクション1702、0ならばアクション1703に決定する。
本例では、図11のフィールド1124とフィールド1125がS1604の処理対象となる。フィールド1124に対しては、図15(f)に示したリンク構成管理テーブルのリンク情報1501から読み出される本文内アンカー表現出現回数は“3”であり、アクション1702が決定される。また、アクション中のリンク先は、リンク情報1501における本文内アンカー表現フィールド識別子の項目の一番上に位置するフィールド識別子「text_図1−1」を有するフィールドとなる。また、同一のアンカー表現を有する本文内アンカー表現が複数存在していることから、それらを相互に移動する為にフィールドに付随するボタンフィールドを有効化するアクションがアクション1702には含まれる。ここでは「text_図1−1−Prev」、「text_図1−1−Next」、「text_図1−1−Back」を有効化するようアクションが記述される。
一方、フィールド1125に対しては、対応するリンク構成管理テーブル図15(f)のリンク情報1502の本文内アンカー表現出現回数は“1”であるため、アクション1702が決定される。また、アクションにおけるリンク先は、リンク情報1502の本文内アンカー表現領域フィールド識別子の項目にあるフィールド識別子「text_図2−1」を有するフィールドとなる。なお、同一アンカー表現を有する本文内アンカー表現領域は唯一つであるため、複数の本文内アンカー表現領域間を移動する機会はない。従って、フィールドに付随するボタンの有効化はアクションに含まれない。また、図11および図15(f)の例には無いが、本文内アンカー表現出現回数が“0”の場合は、リンク先が無いことをユーザに告げるメッセージを生成するアクション1703に決定される。
本文内アンカー表現領域のフィールドに対して、S1605では、アクション定義生成部406は図17(b)の表を利用してアクションを決定する。S1602で読み出したリンク構成管理テーブルにおけるデータ行のキャプション付随領域フィールド識別子の項目に記載があり、更に本文内アンカー表現出現回数が1ならばアクション1704に、2以上ならばアクション1705に決定する。キャプション付随領域フィールド識別子欄に記載が無い場合は、本文内アンカー表現出現回数にかかわらずアクション1706に決定する。
本例では、図11のフィールド1120、1126、1130および1134がS1605の処理対象となる。一例としてフィールド1120に対しては、図15(f)に示すリンク構成管理テーブルのリンク情報1501内においてキャプション付随領域フィールド識別子の項目に記載がある。この項目において、本文内アンカー表現出現回数は“3”であるため、アクション1705が決定される。また、アクションのリンク先は前述した項目の記載によりキャプション付随領域のフィールド識別子「image_図1−1」を有するフィールドとなる。また、同一のアンカー表現を有する本文内アンカー表現領域が複数存在していることから、アプリケーションによって自フィールドに付随するボタンが有効化されている可能性がある。それらのボタンは、リンク先へと表示が切り替わる際には無効化されるべきである。そのためのアクションがアクション1705に含まれる。
ここでは「text_図1−1−Prev」、「text_図1−1−Next」、「text_図1−1−Back」を無効化するようアクションが記述される。フィールド1126、1130に対する処理はフィールド1120と同様であるので説明は省略する。フィールド1134に対しては、対応データ行中のキャプション付随領域フィールド識別子欄に記載があり、本文内アンカー表現出現回数は“1”であるため、アクション1704が決定される。本説明の図11および図15(f)の例には無いが、キャプション付随領域フィールド識別子の項目に記載が無い場合は、リンク先が無いことをユーザに告げるメッセージを生成するアクション1706に決定されることになる。
ボタンフィールドに対して、S1606では、アクション定義生成部406は予め定義された図17(c)に示す表を利用してアクションを決定する。S1602で読み出したリンク構成管理テーブルのリンク情報にキャプション付随領域フィールド識別子の項目の記載があり、かつ本文内アンカー表現出現回数の項目の値が2以上ならば、処理対象フィールドのボタン種別に従ってアクション1707〜1709に決定する。すなわち、フィールド識別子の末尾文字列が「Prev」ならばアクション1707、種別が「Next」ならばアクション1708、種別が「Back」ならばアクション1709に決定する。また、上記の条件以外の場合はアクション1710に決定する。
本例では、図11のフィールド1121〜1123、1127〜1129、1131〜1133、1135〜1137がS1606の処理対象となる。例えばフィールド1121に対しては、図15(f)に示したリンク構成管理テーブルにおいて対応するリンク情報1501にキャプション付随領域フィールド識別子の項目に記載があり、本文内アンカー表現出現回数の項目の値は“3”である。従って、フィールド1121自身のボタン種別「prev」に従ってアクション1707に決定する。アクションのリンク先は、リンク情報1501の本文内アンカー表現フィールド識別子の項目に記載されており、処理対象フィールドの次に位置するフィールド識別子「text_図1−2」を有するフィールドとなる。ここで処理対象のフィールドが項目の最後に記載されたフィールド識別子の場合には、次のフィールド識別子として、項目の最初に記載されたフィールド識別子を選べばよい。
アクション1707には、リンク先のフィールドにて付随するボタンフィールドを有効化するアクションが記述される。加えて自らが付随しているフィールドに付随する全ボタンを無効化するアクションも記述される。フィールド1122に対しては同様に自身のボタン種別「Next」に従ってアクション1708が決定される。アクションのリンク先は、本文内アンカー表現領域フィールド識別子の項目における処理対象フィールドの前のフィールド識別子である。ここで、処理対象は項目に記載された中で先頭であるため、項目中の先頭の識別子である「text_図1−1」を有するフィールドとなる。フィールド1123に対しては、同様に自身のボタン種別「Back」に従ってアクション1700が決定される。アクションのリンク先はキャプション付随領域フィールドのフィールド識別子「image_図1−1」を有するフィールドである。
フィールド1127〜1129、1131〜1133に対する処理はフィールド1121〜1123と同等のため説明は省略する。フィールド1135〜1137に対しては、図15(f)の対応するリンク情報1502から、キャプション付随領域の項目に記載はあるが、本文内アンカー表現出現回数は“1”であるため、すべてのボタンで条件外となり、アクション1710が決定される。アクション1710の内容は、なにもしない、すなわち“空”である。そもそも、これらのボタンは、アクション1702、1707、および1708の有効化対象になっておらず、従ってアプリケーションから有効化されることがない。ゆえに利用されることの無いアクションであるためデータ記述量の観点から空にされる。
S1607では、S1604〜S1606のいずれかで決定されたアクションを、記憶部211のフィールド定義408における、処理対象フィールドのアクション定義として追記する。その後S1601に戻って未処理のフィールドが無くなるまで処理を繰り返す。未処理フィールドが無くなった時点でアクション定義生成部406の処理は終了する。図11のアクション定義1103の項目に、全フィールドに対するアクション定義を追記後の状態を示す。
なお上記説明では、ユーザが本発明で作成した電子文書をアプリケーションで閲覧時する際に、該当フィールドがマウス等でクリックされた場合の挙動のみをアクション定義とした。しかし、他の場合のアクションを定義してもよい。例えば、マウスポインタがフィールド領域内に入った場合、出た場合、フィールドにフォーカスが設定された場合、解除された場合などである。これらをすべて定義しても、選択的に定義するようにしてもよい。
アクション定義生成部406の処理終了後、フォーマット変換部305は記憶部211のフィールド定義408に定義されたアクション情報を電子文書データ310のフォーマットに変換し、電子文書データに付与する形で送信する。図18(e)に電子文書データ310に追加されるアクション情報の記述例を示す。図18(e)には、図18(a)〜(d)で示した出力済みの電子文書データに対する各ページ内で記述されたリンク情報から、各々のidで参照されるアクションが列挙されるように記述されている。
例えば、記述1851は、図11のフィールド1020、すなわち図18(a)の記述1804内から参照されるアクション記述例である。記述1852は参照を可能にするためのid記述、記述1853はアクション内容の記述である。同様に記述1854は、図11のフィールド1021、すなわち図18(b)の記述1808内から参照されるアクション記述例である。記述1855はid記述、記述1856はアクション内容の記述である。
以下同様に、記述1857は図11のフィールド1024、すなわち図18(b)の記述1824内から、記述1860は図11のフィールド1025、すなわち図18(b)の記述1028内から参照されるアクション記述例である。また、記述1863は、アプリケーションが電子文書データ310を最初に開いたときに実行すべき初期化アクションの記述例である。ここではすべてのボタンフィールドを初期状態では無効化するように記述されている。以上で、図7の説明を終了する。
[受信側フロー]
以下、図12の受信側のフローチャートについて説明を行う。受信側であるクライアントPC101は、送信側であるMFP100から送信された電子文書データ310を1ページずつ受信し、最後にアクション定義情報を受信する。本処理は、例えばクライアントPC101に備えられたCPU(不図示)が実行することとなる。
まず、S1201は、イメージデータ1001(1ページ)において図7のS707にて送信された電子文書データ(1ページ)を受信する。次に、S1202は、全てのページが送信終了したか否かを判定する。そして、全てのページを受信していればS1203へ進む。受信していなければS1201へ戻る。以降、S1201を繰り返し、イメージデータ1002〜イメージデータ1004(2〜4ページ)に対応する電子文書データ(2〜4ページ)を受信する。
次に、S1203は、図7のS709にて送信されたアクション定義情報を受信する。次に、S1204は、S1201で受信した電子文書ページデータ(1〜4ページ)とS1203で受信したアクション情報のデータを合わせて、クライアントPC101の記憶領域(不図示)に保存する。本実施形態では、1つのマルチページの電子文書ファイルとして保存する。
[閲覧時動作]
次に、文書の閲覧者が本実施形態における電子文書データをアプリケーションで閲覧する際の動作について図13を用いて説明を行う。本処理は、例えばクライアントPC101に備えられたCPU(不図示)が実行することとなる。
図13は、リンク情報を含む電子文書データを閲覧するためのアプリケーションとして図1のクライアントPC101や、その他のクライアントPC等で実行される仮想GUIソフトウェア表示画面の一例である。このようなアプリケーションの具体例としては、Adobe Reader(TM)が挙げられる。さらには、MFP100の操作部203で表示動作できるアプリケーションでも構わない。尚、アプリケーションがAdobe Reader(TM)である場合、前述の図6のデータ形式は、PDFとなる。
図13(a)の画面1301は、前述のような電子文書データを閲覧するためのアプリケーション画面の例である。メニューバー1302は、アプリケーションに入力された電子文書ファイル名を指定したり、検索操作を行わせたりする。表示画面1303は入力された電子文書ページの表示画面であり、ここでは入力例として、図10(a)の1ページ目が表示されている様子を示している。ページスクロールボタン1304は、閲覧者は、前ページ、または次ページを表示させる場合にマウス等を用いてこれらボタンを押下(クリック)する。ステータスバー1305は、現在表示されているページのページ番号等を示す。同様に、図13(b)は、表示画面1303に図10(a)の2ページ目が表示されている様子を示している。
ここで、ユーザは図13(b)の表示画面1303を見て、電子文書データの中から「図1 AAA」のキャプションが付随する図の説明文や引用など、図を参照する文章を探すとする。従来の電子文書データを閲覧する場合は、アプリケーションの文字検索機能を用いて「図1」あるいは「AAA」をキーワードに、該当文字がある部分を表示させる。もし電子文書データの文字部に文字コードが書かれていない場合、文字による検索は出来ないため、ページスクロールボタン1304を使ってページを前後させ、目視で「図1」という記述を探す必要がある。文字部に文字コードが書かれていない電子文書データとは、例えばページが画像データあるいはパス記述のみで描画されている文書データがある。そして、所望の説明文や、参照文が見つかった後に再度図を確認する場合は、ページスクロールボタン1304を押下して2ページ目を表示する。
次に、本実施形態で生成した電子文書データを閲覧する場合について説明する。ユーザは図13(b)の領域1306で示す図を参照する文章を読むために、同領域(すなわちキャプション付随領域のフィールドである図11のフィールド1124が配置された範囲)内をマウス等のポインティングデバイス(不図示)でクリックする。クリックが実行されると、フィールド1124のアクション定義に従い、リンク先フィールドtext_図1−1、すなわちフィールド1120を強調表示してフォーカスを設定する。フォーカスが設定されることにより、アプリケーションは同フォーカス領域を含むページを表示する。同時に、フィールド1120に付随するボタンのフィールド1121、1122、1123が有効化される。
その結果を、図13(c)に示す。リンク先となるアンカー表現領域に含まれる文字列「図1」の領域1308が赤色の矩形で表示され、ページは1ページへ移動している様子が示されている。また、領域1308に付随して、ボタン1309、1310、1311が表示されている。すなわち、ユーザは図(ここでは領域1306)をワンクリックするだけで、図を参照する文章を含むページの表示を容易に得られる。かつ、同図を参照する文章が他にもあることを、ボタン群の表示によって知ることが出来る。
ここでユーザは、領域1308近辺の文章が領域1306の図を参照する文章として所望のもので無ければ、同じアンカー表現「図1」を含む次の文章を見るために、「Next」のボタン1311をクリックする。すると、同ボタンに対応する図11のフィールド1122に定義されたアクションが実行される。アプリケーションはリンク先となるフィールド1126を強調表示してフォーカス設定する。かつフィールド1126に付随するボタン1127〜1129を有効化し、クリックされたフィールド1122に付随するボタン1121〜1123を無効化する。その結果を図13(d)に示す。すなわち、ユーザはボタンをクリックするだけで、図を参照する次の文章を含むページの表示を容易に得られることになる。
さらにユーザが別の文章を見る場合は「Next」のボタン1315をクリックし、図13(e)の表示結果を得る。一方、前の文章を見たい場合は「Prev」のボタン1313をクリックし図13(d)の表示結果を得る。このように、ひとつの図を参照する文章が複数ある場合に、ユーザはこれら複数の文章間を簡易な操作で移動することが可能である。
また、ユーザが図13(c)〜(e)で所望の文章を発見し、再度図の内容を確認したい場合は、「Back」のボタン、例えば図13(d)ではボタン1314をクリックする。するとフィールド1129に定義されたアクションに従ってフィールド1124が強調表示されフォーカス設定されることで、図13(f)の表示を得る。図13(c)、図13(e)の場合も同様である。このように、図を参照する文章間を移動中にも、ワンクリックで再び元の図の表示を得ることが可能である。
次に、ページ2のもう一つの図に対する例を説明する。ユーザが図13(b)の画面において、今度は領域1307の図を参照する文章を読むために、領域1307に配置されたフィールド1125の範囲をクリックする。するとフィールド1125の定義に従ったアクションが実行され、アプリケーションはリンク先となるフィールド1134を強調表示してフォーカス設定する。その結果、図13(g)のように4ページ目の表示を得る。
先の例とは異なり、ボタンを有効化するアクションは定義されていないので、定義図13(g)の領域1316に付随するボタンは表示されない。よって、ユーザは領域1307の図を参照する文章が電子文書中でこの一箇所しか存在しないことを知ることができる。ユーザが再び図を確認する場合には、領域1316をクリックすることで、図13(h)のように2ページ目の表示に戻る。
このように、第一の実施形態で生成された電子文書は、ユーザがアプリケーション表示上で図の部分をクリックすることで、図を参照する文章部分を強調表示する機能を有す。その際、図を参照する文章が複数ある場合には、同図を参照する他の文章部分を表示させるためのボタンが提示されるので、ユーザはボタンを使って次々に対象文章を確認することが可能である。また、図の表示に戻る為のボタンも提示されるので、ユーザは即座に図の表示に戻ることも可能である。一方、図を参照する文章が一箇所しかない場合は、前記ボタンが提示されないので、ユーザは他の文章を探す必要が無いことを知ることが可能である。
以上のように、第一の実施形態では、入力された文書から図等「オブジェクト」の領域を抽出し、かつ「オブジェクト」に関連するアンカー表現の領域を本文等から抽出する。これにより、「オブジェクト」と「オブジェクトを参照する文章」との相互なリンク関係を抽出する。そして電子文書を生成する際に、オブジェクトの領域と本文内のアンカー表現の領域に、アプリケーションで利用可能なフィールドを作成する。
かつ前記リンク関係に従って、リンク元のフィールドをアプリケーションでクリックしたときにリンク先のフィールドを強調して表示するアクションを定義する。加えて、前記リンク関係において1つのリンク元に対し複数のリンク先がある場合には、リンク先のフィールドに付随して、同複数リンク先フィールドを順次表示させる為のボタンと、リンク元に戻る為のボタンを発生させるアクションを追加する。
このようにして作成された電子文書は、ユーザがアプリケーション表示上で図等の「オブジェクト」部分をクリックすることで、「オブジェクト参照文」の部分を強調して表示する機能を有す。その際、「オブジェクト参照文」が複数ある場合は、他の「オブジェクト参照文」部分を表示させるためのボタンが提示されるので、ユーザはボタンを使って次々に対象部分を確認することが可能である。
また、「オブジェクト」の表示に戻る為のボタンも提示されるので、ユーザは即座に「オブジェクト」の表示に戻ることも可能である。一方、「オブジェクト参照文」が一箇所しかない場合は、前記ボタンが提示されないので、ユーザは他の部分を探す必要が無いことを知ることが可能である。以上の機能により、ユーザは文書をより効率的に読み進めることができるという効果がある。
<第二の実施形態>
第一の実施形態では、電子文書データへの変換処理におけるアクション定義を、図11における項目1103のように各フィールドに対して個別に定義する例を示した。その結果、出力される電子文書データ310において各フィールドのアクション内容が図18(e)のように一つ一つ記述された。第二の実施形態では、アクション定義を関数化し、各フィールドにはこのアクション関数の入力引数を個々にパラメータとして付与する例を示す。
図19は、第二の実施形態における前記アクション関数の例「ON_CLICK」の処理内容を説明するためのフローチャートである。関数「ON_CLICK」は4つの引数「srcId」、「srcBtns」、「dstId」、「dstNum」を受けとって処理を開始する。ここで、引数「srcId」は、アプリケーションにてユーザがクリックしたフィールド、すなわちアクション定義対象のフィールド識別子を指定する文字列である。
ただし、ユーザがボタンフィールドをクリックした場合は、そのボタンフィールドのフィールド識別子ではなく、ボタンが付随する本文内アンカー表現領域のフィールド識別子を指定するものとする。引数「srcBtns」には、引数「srcId」のフィールド識別子を持つフィールドに付随するボタンの数を指定する。ただしアプリケーションの動作上、有効化する必要がないボタンの数は含まない。
引数「dstId」はリンク先、すなわちアプリーションでユーザがアクション定義対象のフィールドをクリックした結果、強調表示かつフォーカス設定されるフィールドの識別子を指定する。引数「dstNum」はリンク先のフィールドの数である。リンク先が本文内アンカー表現領域でかつ複数ある場合にはその個数を指定する。それ以外の場合はリンク先が有れば1、無ければ0を指定する。
[アクション関数における処理フロー]
以下、図19のフローチャート処理内容を説明する。なお、アクション関数を実際に実行するのは、クライアントPC101上で、ユーザの指示により電子文書データ310を入力・表示中のアプリケーションである。
上記入力引数を受けとった関数「ON_CLICK」は、まずS1901にて、引数「dstNum」が“0”であるか否かを調べる。“0”の場合はS1902に進み、「リンク先がない」ことをユーザに警告するメッセージを表示し、関数を終了する。それ以外の場合はS1903に進む。S1903では、引数「dstId」のフィールド識別子を有するフィールドを強調表示する。強調表示の例は、第一の実施形態と同様である。
S1904では、引数「dstId」のフィールド識別子を有するフィールドにフォーカスを設定する。その結果、アプリケーションは同フィールドが存在するページを表示する。S1905では、引数「dstNum」が“1”より大きいかか否かを調べる。大きい場合はS1906に進み、それ以外の場合はS1907に進む。S1906では、引数「dstId」のフィールド識別子を有するフィールドに付随するボタンを有効化する。
S1905では、引数「srcBtns」が“0”より大きいか否かを調べる。“0”より大きい場合はS1908に進み、それ以外の場合は関数を終了する。S1908では、引数「srcId」のフィールド識別子を有するフィールドに付随するボタンを無効化する。その後、本関数における処理を終了する。
[画像処理装置の動作]
次に、第二の実施形態における画像処理装置の動作について説明する。なお装置構成に関しては第一の実施形態にて述べた図1〜図4と同様であるものとする。
図22に第二の実施形態の処理フローを示す。図22におけるS701〜S708は第一の実施形態にて述べた図7の各ステップと同じ内容であるため説明は省略する。したがって、図10(a)の4ページを入力として図22のS701〜S708を処理すると、電子文書データ310の各ページに相当する記述として、第一の実施形態と同様の図18(a)〜(d)が生成される。また同処理により、リンク情報308として図11のフィールド定義408と図15(f)のリンク構成管理テーブル409が作成される。なおS708で全ページ終了しS2209に進む時点では、図11の各フィールド定義におけるアクション定義1103はすべて未定義である。
S2209において、図4のアクション定義生成部406は、まず図19で説明されたアクション関数「ON_CLICK」を定義する。そしてこのアクション関数を用いて、フィールド定義408の各フィールドに対するアクション定義の情報を生成する。具体的には、各フィールドのアクション定義で呼び出すアクション関数の入力引数を、リンク構成管理テーブル409を利用して設定する。フォーマット変換部305は、これらアクション関数定義およびアクション定義の情報を電子文書データ310に付与する。ただし、電子文書データ310は図22のS707にて各ページ送信済みのため、電子文書データ310に付与する形で送信する。
[アクション定義生成処理] 以下、S2209におけるアクション定義生成処理の詳細について説明する。アクション定義生成部406は、記憶部211のフィールド定義408からアクション定義が未処理のフィールドを抽出し処理対象とする。未処理のフィールドが無ければ処理を終了する。次にリンク構成管理テーブル409から処理対象フィールドに対応するリンク情報を読み出す。そしてデータ行各欄の内容と、図23の表からアクション関数の各引数を設定し、アクション定義を生成する。
図23の表を用いてアクション関数の引数設定について具体的に説明する。図11のフィールド1120の場合、自フィールド、すなわち処理対象のフィールドの種別は本文内アンカー表現領域である。図23に従って引数「srcId」には自フィールドのフィールド識別子“text_図1−1”を設定する。「srcBtns」以降の引数は、リンク構成管理テーブルで処理対象のフィールドに対応するリンク情報の内容により決定される。リンク構成管理テーブル図15(f)では、フィールド1120に対応するのはリンク情報1501である。図23に従い、引数「srcBtns」にはリンク情報1501の本文内アンカー表現領域数が2以上であるので“3”を設定する。引数「dstId」には、リンク情報1501のキャプション付随領域のフィールド識別子“image_図1−1”を設定する。引数「dstNum」には“1”を設定する。
図11のフィールド1121の場合、フィールド種別はボタンである。図23に従い、引数「srcId」にはボタンが付随するフィールドのフィールド識別子“text_図1−1”を設定する。このフィールド識別子は、ボタンフィールドのフィールド識別子における文字列“text_図1−1−Prev”からボタン種別の文字列“−Prev”を除くことでも得られる。フィールド1121に対応するのはフィールド1120同様にリンク情報1501である。引数「srcBtns」には前述のフィールド1120同様に“3”を設定する。引数「dstId」以降はボタン種別によって異なる。フィールド1121のボタン種別は“Prev”なので、引数「dstId」には本文内アンカー表現領域フィールド識別子の項目において、「srcId」に設定したフィールド識別子の一つ前のフィールド識別子を設定する。本例では“text_図1−1”が項目の先頭にあるため、当該項目の最後にある“text_図1−3”を設定する。引数「dstNum」には本文内アンカー表現出現回数である“3”を設定する。
図11のフィールド1122の場合、フィールド種別はボタンであり、引数「srcId」「srcBtns」「dstNum」はフィールド1121と同様に設定する。ボタン種別が“Next”であるため、引数「dstId」は本文内アンカー表現領域フィールド識別子の項目で、srcIdに設定したフィールド識別子の一つ後のフィールド識別子“text_図1−2”を設定する。
図11のフィールド1123の場合、フィールド種別はボタンであり、引数「srcId」「srcBtns」はフィールド1121、1122同様に設定する。ボタン種別が“Back”であるため、引数「dstId」にはキャプション付随領域のフィールド識別子“image_図1−1”を設定する。引数「dstNum」には“1”を設定する。
図11のフィールド1124の場合、フィールドの種別はキャプション付随領域である。図23に従い、引数「srcId」には自フィールドのフィールド識別子“image_図1−1”を設定する。引数「srcBtns」には“0”を設定する。「srcBtns」以降の引数は、リンク構成管理テーブルで処理対象フィールドに対応するデータ行の内容により決定される。図15(f)に示したリンク構成管理テーブルでは、フィールド1124に対応するのはリンク情報1501である。図23に従い、引数「dstId」には、リンク情報1501における本文内アンカー表現フィールド識別子の項目の先頭にあるフィールド識別子、“text_図1−1”を設定する。引数「dstNum」にはリンク情報1501の本文内アンカー表現出現回数である“3”を設定する。
以降、図11のフィールド1125〜1137に対しても同様に図23の表に従い、アクション関数の引数を設定する。未処理のフィールドが無くなった時点でアクション定義処理を終了する。なお、本例で用いたリンク構成管理テーブルの例である図15(f)には存在しないが、リンク構成管理テーブルのリンク情報に引数「dstId」に該当するフィールド識別子の記載がない場合には、引数「dstId」には空の文字列を、引数「dstNum」には“0”を設定する。第二の実施形態のS2209処理後に、各フィールドに定義されたアクション定義の例を図20の項目2003に示す。
[アクション関数処理]
続いて、図19の処理内容に相当するアクション関数の定義、および図20のアクション定義情報2003を電子文書フォーマットに変換した例を図21に示す。図21のアクション情報は、図18(a)〜(d)に示した送信済みの電子文書ページ記述例に伴って、電子文書データ310を完成させるように記述される。
図21の記述2101は、図19の処理内容に相当するアクション関数「ON_CLICK」を定義する記述の例である。記述2102〜2105はそれぞれ図18(a)〜(d)の出力済みの電子文書データにおける各ページ内で記述されたリンク情報から、各々のidで参照されるアクション記述の列挙の一部である。各アクションは、記述2101で定義されたアクション関数を各々フィールド個別の引数で呼び出すように記述されている。記述2106は、アプリケーションが電子文書データ310を最初に開いたときに実行すべき初期化アクションの記述例である。第一の実施形態と同様に、すべてのボタンフィールドを初期状態では無効化するように記述されている。
第二の実施形態の受信側処理も第一の実施形態と同一である。すなわち図12のフローチャートに従って電子文書データとアクション関数定義を含むアクション定義情報を受信する。
[電子文書データ閲覧動作]
次に、文書の閲覧者が第二の実施形態により生成された電子文書データをアプリケーションで閲覧する際の動作について、第一の実施形態と同様に図13を用いて説明する。
ユーザが、2ページ目として表示された図13(b)の領域1306が示す図に対し、図を参照する文章を読むために同領域をクリックする。すなわちキャプション付随領域のフィールドである、図20のフィールド1124が配置された範囲内をマウス等のポインティングデバイスでクリックする。するとアプリケーションは図20におけるフィールド1124のアクション定義に従って「ON_CLICK(“image_図1−1”,0,“text_図1−1”,3)」を実行する。アプリケーションは図19のフローチャートに従ってアクションを実行する。すなわちdstIdである“text_図1−1”のフィールドを強調表示し、フォーカスを設定し、“text_図1−1”のフィールドに付随するボタンを有効化する。結果的に図13(c)のような表示がされる。
図13(c)においてさらにユーザがボタン1311をクリックすると、アプリケーションは図20のフィールド1122に対応するアクション「ON_CLICK(“text_図1−1”,3,“text_図1−2”,3)」を実行する。その結果図13(d)の表示を得る。さらにボタン1315のクリックで図13(e)の表示を、ボタン1314のクリックで図13(f)の表示を得る。
ユーザが図13(b)の領域1307をクリックした場合、アプリケーションは図20におけるフィールド1125のアクション定義に従って「ON_CLICK(“image_図2−1”,0,“text_図2−1”,1)」を実行する。すなわちdstIdである“text_図2−1”のフィールドを強調表示し、フォーカスを設定するが、引数「dstNum」が“1”であるため“text_図2−1”のフィールドに付随するボタンは有効化されない。結果的に図13(g)の表示を得る。そこで領域1316をクリックすると図13(h)の表示を得る。
以上説明したように、第一の実施形態により生成された電子文書データと、第二の実施形態により生成された電子文書データは、アプリケーション上でのユーザ閲覧時の操作に対して同一の動作を提供する。すなわち、第二の実施形態においても第一の実施形態と同一の効果を提供する。
すなわち、第二の実施形態で作成された電子文書データは、ユーザがアプリケーション表示上で図等の「オブジェクト」部分をクリックすることで、「オブジェクト参照文」の部分を強調して表示する機能を有す。その際、「オブジェクト参照文」が複数ある場合は、他の「オブジェクト参照文」部分を表示させるためのボタンが提示されるので、ユーザはボタンを使って次々に対象部分を確認することが可能である。
また、「オブジェクト」の表示に戻る為のボタンも提示されるので、ユーザは即座に「オブジェクト」の表示に戻ることも可能である。一方、「オブジェクト参照文」が一箇所しかない場合は、前記ボタンが提示されないので、ユーザは他の部分を探す必要が無いことを知ることが可能である。以上の機能により、ユーザは文書をより効率的に読み進めることができるという効果がある。
<第三の実施形態>
第一の実施形態および第二の実施形態の説明では、図15のリンク構成管理テーブルは、同一リンク情報が有する複数の本文内アンカー表現のフィールド識別子を出現順で管理していた。この順番はアクション定義生成部406の処理結果に影響する。つまり、キャプション付随領域をクリックしたときに最初に強調される本文内アンカー表現の領域、およびボタンフィールド「Prev」、「Next」で順次強調される本文内アンカー表現領域の表示順序に影響する。第三の実施形態では、図7に示すS709や図20に示すS2009のアクション定義生成部406のアクション定義処理の直前に、リンク構成管理テーブルの本文内アンカー表現フィールド識別子の項目にあるフィールド識別子を並び替える。並び替えの基準については後述する。
図24に第三の実施形態の処理例を示す。図24(a)は入力画像の例で、5ページ分のイメージデータ2401〜2405で構成される。第三の実施形態の処理中、2ページ目のイメージデータ2402に含まれる領域2406に付随する領域2407からアンカー表現「図4」が抽出され、3〜5ページ目の本文からそれぞれ本文内アンカー表現である領域2408、2409、2410が抽出される。その結果、キャプション付随領域である領域2406と本文内アンカー表現領域である領域2408、2409、2410に対するフィールド定義が生成される。これらのフィールド識別子をそれぞれ順に“image_図4−1”、“text_図4−1”、“text_図4−2”、“text_図4−3”とする。更にフィールド間の関係を記録するリンク構成管理テーブルが、図24(b)のように生成される。
第三の実施形態では、アクション定義を生成する前に、リンク構成管理テーブルの本文内アンカー表現領域フィールド識別子の項目における情報の並び替えを行う。並び替えの基準は、各アンカー表現を含む文章が、アンカー表現の対象を説明している可能性の高い文章は重要度が高いとして先に来るようにする。逆に、単にアンカー表現の対象を引用している場合は重要度が低いとして後ろに来るようにする。具体的には、公知の形態素解析を行い、アンカー表現が文章の主語に含まれるものは重要度が最も高く、目的語に含まれるもの、それ以外、の順に低い重要度を与えることとする。また、同一文章内に注目アンカー表現以外のアンカー表現(「図4」に対する「図1」など)がある場合、重要度を減点するものとする。これらの基準を用いると、本文内アンカー表現である領域2410の周辺文章の重要度が最も高く、以下、領域2409、2408の順になる。その結果、図24(c)のように並び替えられたリンク構成管理テーブルをもとにアクションが定義され、電子文書データ310が完成される。
なお、上記の並び替え基準は一例であり、他の基準を用いても良い。例えばオブジェクト(キャプション付随領域)との距離が近い順に並べてもよい。または文章の長さ、文章の種類(平文、見出し、箇条書きなど)を用いても良い。さらに文章内のアンカー表現の出現回数、関連キャプション文字列が近傍に出現する回数、等を基準にしてもよい。
第三の実施形態で生成された電子文書データを、ユーザがアプリケーションで閲覧する場合の画面例を図25に示す。図25(a)は電子文書データの2ページ目を表示しているアプリケーション画面の例である。ここで、ユーザが「図4」に該当する領域2501をクリックすると、図25(b)のように5ページ目が表示され、アンカー表現「図4」の領域2502が強調表示される。ユーザが別の本文内アンカー表現領域部分を参照したい場合に、「Next」ボタン2503をクリックすると、図25(c)のように4ページ目が表示され、本文内アンカー表現領域2504が強調表示される。さらに「Next」ボタン2505をクリックすると、図25(c)のように3ページ目が表示され、本文内アンカー表現領域2506が強調表示される。このように、オブジェクトの説明をしている可能性の高い文章から順番に、かつ簡易な操作で確認できるので、ユーザの閲覧効率は向上する。
このように、第三の実施形態により作成された電子文書データは、ユーザがクリックしたフィールドが複数のリンク先を有する場合に、ユーザにとって閲覧価値が高いとみなされる順番で複数リンク先を順次、強調し表示する機能を有す。従って、第一および第二の実施形態で説明した効果に加え、ユーザが所望の情報に短時間で辿りつける可能性が上がり、ユーザの閲覧効率をさらに向上する効果がある。
<第四の実施形態>
第一〜第三の実施形態では、リンク構成管理テーブルにおける複数の本文内アンカー表現領域の並び順を送信時に確定していた。従って、キャプション付随領域をクリックしたときに最初に強調される本文内アンカー表現の領域、およびボタンフィールド「Prev」、「Next」で順次強調される本文内アンカー表現領域の順序は常に一定だった。これらを、アプリケーション動作中に、ユーザ操作等に応じて変更できるようにしてもよい。具体的には、前記並び順をリスト化し、アプリケーションが実行するアクションの中で、同リスト内容を必要に応じて並び替え、異なる順序で本文内アンカー表現領域の表示が可能となる。
図26(a)〜(d)は、第四の実施形態においてアクション定義に用いられる4つのアクション関数、「init」「on_click2」「make_list」「jump_to」の処理内容例を示すフローチャートである。以下各関数の処理内容を説明する。なお、下記処理を実際に実行するのはユーザの指示により電子文書データ310の入力/表示中のアプリケーションである。これらのアプリケーションは例えばクライアントPC101に備えられたCPU(不図示)によって処理される。
図26(a)のS2601〜S2604は、アプリケーションが電子文書データを読み込んだ際に実行される初期化関数「init」のフローチャートである。S2601は、グローバル変数の宣言である。グローバル変数は図26の4つの関数から共通にアクセス可能な変数である。ここでは、「link」「list」「listIdx」「prevId」の4つの変数を宣言する。各変数の内容や目的は、実際に変数を使用する際の説明にて後述する。
なお、本説明ではグローバル変数の宣言を便宜上、初期化関数に付随するように記述したが、別の場所で宣言してもよい。S2602は関数「init」の開始ステップであり、引数は取らない。S2603では、リンク構成情報を作成し、前述のグローバル変数「link」に格納する。リンク構成情報とは、リンク構成管理テーブル409における各リンク情報の内容のうち、キャプション付随領域フィールド識別子の項目と本文内アンカー表現領域フィールド識別子の項目との関係をリンク元とリンク先の関係として、相互に配列化したものである。その構成を以下に示す。
link[ リンク元のリンクID ] = リンク先のフィールド識別子または配列
ここで、リンクIDとは、フィールド識別子から出現順を表す部分以降を除いた文字列である。例えば、図15(f)のリンク管理構成テーブルから作成されるリンク構成情報は、以下4要素からなる配列になる。
[リンク構成情報]
link[“text_図1”] = “image_図1−1”
link[“image_図1”] = { “text_図1−1”,
“text_図1−2”,
“text_図1−3” }
link[“text_図2”] = “image_図2−1”;
link[“image_図2”] = { “text_図2−1” }
上記リンク構成情報は、リンク元が本文内アンカー表現領域である場合、リンク先の数は1個以下であるためフィールド識別子を直接指定する。図15(f)の例にはないが、リンク先が無い場合は空文字列を指定するものとする。リンク元がキャプション付随領域の場合は、1または複数からなるリンク先フィールド識別子の配列で指定する。リンク先が無い場合は要素数がゼロの配列を指定する。なお、これらはあくまで一例であって、その他のデータ構造を用いてもよい。リンク構成情報作成後、本処理を終了する。
図26(b)のS2611〜S2620は、ユーザがアプリケーションで電子文書データのフィールド領域をクリックしたときに実行される「on_click2」関数の処理内容である。S2611は、リンク元のフィールド識別子を引数「srcId」に設定して関数「on_click2」を開始する。実際には、各フィールドのアクション定義において、自らのフィールド識別子を引数として本関数が呼び出されるように定義される。
なお、第二の実施形態と異なり、引数「srcId」にはボタンフィールドを含むフィールド識別子の文字列をそのまま指定する。S2612では、引数「srcId」で与えられたフィールド識別子の文字列を、文字列操作によって、リンクID、出現順、ボタン種に分解する。S2613では、リンク元がキャプション付随領域であるか否かを調べる。具体的にはリンクIDの文字列が“image_”で始まるか否かを調べる。“image_”で始まる場合はキャプション付随領域であるとしてS2614に進む。それ以外の場合はS2621に進む。
ここではまず、リンク元がキャプション付随領域であるとしてS2614に進む。S2614では、巡回リストを作成する為に関数「make_list」を呼び出し、結果をグローバル変数「list」に設定する。ここで巡回リストとは、同一アンカー表現を有する複数の文章をユーザが順々に表示するための順番を表わすリストである。具体的には、リンク構成情報「link」において、複数リンク先を示すフィールド識別子のリストを、よりユーザに適切な順位付けを行い、フィールド識別子を順番に並び替えたものである。
ここで、関数「make_list」の処理内容である図26(c)に示すS2631〜S2634を説明する。S2631では、引数「orgList」にフィールド識別子の配列を、引数「expId」にフィールド識別子を設定して関数を開始する。S2632では、引数「orgList」と同じ要素数の配列mlistを確保する。S2633では、配列mlistに引数「orgList」の内容をコピーする。ただし、引数「orgList」内に引数「expId」と同一のフィールド識別子があった場合は、その配列mlistのその順番には、引数「orgList」の次の要素をコピーする。
そして、mlistの最後の要素を「expId」と同内容にする。すなわち配列mlistには「orgList」中に「expId」と同じフィールド識別子が無ければそのままのコピー配列が、あればそのフィールド識別子だけ末尾に移動した配列が生成される。S2634では関数「make_list」を終了し、生成されたmlistを戻り値として返却する。
図26(b)のS2614の説明に戻ると、ここでは関数「make_list」呼び出し時の引数「orgList」に、現リンクIDに対応するリンク先である、「link[リンクID]」が設定される。なお、キャプション付随領域がリンク元なので、上記変数が示すリンク先は前述のとおりフィールド識別子の配列である。また、引数「expId」には、フィールドのクリック履歴を表すグローバル変数「prevId」が設定される。
この「prevId」は、関数「on_click2」の実行毎に後述のS2619処理で設定されるフィールド識別子の値である。現在実行中の関数「on_click2」に対しては、ひとつ前の関数「on_click2」呼び出しの際にリンク元であったフィールド識別子が記憶されている。なお、現在実行中の関数「on_click2」が初回である場合、「prevId」は未定義となる。従って、関数「make_list」の戻り値は、現リンクIDのリンク先の配列に対しprevIdに一致するフィールド識別子を末尾に移動した配列となる。この配列を巡回リストであるグローバル変数「list」に設定する。
S2615ではリンク先、すなわちユーザがクリックした結果、強調表示かつフォーカス設定されるフィールドのフィールド識別子をローカル変数「dstId」に指定する。ここでは前述した巡回リストの先頭、すなわちグローバル変数「list[0]」のフィールド識別子を設定する。加えて、グローバル変数「listIdx」に“0”を設定する。これは巡回リストの参照位置が現在先頭にあることを示すための処理である。なお、巡回リストの配列個数が0の場合、すなわちリンク先が無い場合は、「dstId」にはヌル文字列を設定する。
S2616では、現在の巡回リストの配列に含まれるフィールド識別子の個数が1より大きいか否かを調べる。1より大きい場合はS2617に進む。それ以外の場合はS2618に進む。S2617では、リンク先にジャンプする、すなわちリンク先のフィールドを強調表示かつフォーカス設定するアクション関数「jump_to」を呼び出す。
ここで、関数「jump_to」の処理内容である、図26(d)に示すS2641〜S2647を説明する。S2641では、引数「fldId」にジャンプ先のフィールド識別子を、引数「btn」にジャンプ先のフィールド識別子に付随するボタンを有効化するか否かをブール値で設定して関数を開始する。S2642では、引数「fldId」が空文字列であるか否かを判定する。空文字列の場合はS2643に進み、ユーザにリンク先が無い旨を警告するメッセージを表示してS2647に進む。
空文字ではない場合はS2644に進む。S2644では、引数「fldId」のフィールド識別子を有するフィールドを強調表示し、同フィールドにフォーカスを設定する。強調表示およびフォーカス設定の例は第一の実施形態の場合と同様であるため説明は省略する。S2645では、引数「btn」が“true”であるか“false”であるかを判定する。“true”の場合はS2646に進み、“false”の場合はS2647に進む。S2646では、リンク先すなわち「fldId」のフィールドに付随するボタンを有効化する。本例では、リンク先のフィールド識別子の文字列に各々「−Prev」、「−Next」、「−Back」を付加したフィールド識別子を有するフィールドが有効化される。S2647では関数「jump_to」を終了する。
S2617の説明に戻ると、ここでは関数「jump_to」の呼び出し時の引数「fldId」には、S2615で設定されたローカル変数「dstId」の値が、引数「btn」には“true”が設定される。すなわち、現巡回リストの先頭にあるリンク先フィールドへとジャンプし、かつリンク先に付随するボタンを有効化するアクションが実行されて、S2619に進む。
一方、S2617で巡回リスト個数が1または0の場合に進んだS2618では、関数「jump_to」を、引数「fldId」にローカル変数「dstId」の値を、引数「btn」にfalseを設定して呼び出す。つまり以下のアクションが実行されることとなる。巡回リストにリンク先が有る場合は、同リンク先にジャンプするが、巡回対象となる別のリンク先は存在しないのでリンク先に付随するボタンは有効化しない。もしくは巡回リストが空、すなわちリンク先が無い場合はその旨を警告するアクションを実行する。その後にS2619に進む。
S2619では、グローバル変数「prevId」に関数の引数「srcId」の内容を設定する。これは次回の関数「on_click2」呼び出し時に、一つ前のリンク元のフィールド識別子を伝達することで、ユーザ操作履歴に応じた処理を可能にする目的で設定される。
S2620では、関数「on_click2」を終了する。フィールドクリック時のアクション関数が終了することで、アプリケーションは再びユーザ操作を受けつける状態へと遷移する。
次に、S2613に戻り、リンクIDが“image_”では始まらずS2621に進む場合の例について説明する。
S2621では、クリック対象のフィールドがボタンか否かを判定する。具体的にはS2612で引数「srcId」の文字列を分解したときにボタン種を示す部分が得られたか否かで判定できる。ボタンの場合(S2621にてYES)はS2623に進む。ボタンではない場合(S2621にてNO)はS2622に進む。
まず、クリック対象のフィールドがボタンでは無く(S2621にてNO)、S2622に進んだ場合について説明する。すなわち、クリック対象が本文内アンカー表現領域のフィールドであった場合に相当する。
S2622では、リンク元に対応するリンク先をリンク構成情報のグローバル変数「link」より決定し、ローカル変数「dstId」に設定する。具体的には、S2603により構成されたリンク構成情報の変数「link」から、「link[リンクID]」でリンク先を取得する。取得されるのは前述のとおり、キャプション付随領域のフィールド識別子の文字列、もしくはリンク無しの場合の空文字列である。
続けてS2618に進み、引数「fldId」はS2622で設定された「dstId」の値に、引数「btn」は“false”に設定して関数「jump_to」を呼び出す。つまり、リンク先のキャプション付随領域のフィールドへとジャンプするアクションが実行される。キャプション付随領域にボタンのフィールドは付随しないため、当然ボタン有効化の指定はされない。
その後はS2619、S2620と進み、上述した説明同様に関数「on_click2」を終了する。フィールドクリック時のアクション関数が終了することで、アプリケーションは再びユーザ操作を受けつける状態へと遷移する。
続いて、クリック対象フィールドがボタンであり(S2621にてYES)、S2623に進んだ場合について説明する。
S2623では、クリック対象フィールドのボタン種を調べ、「Prev」ならS2624に、「Next」ならS2625に、「Back」ならS2622に進む。ここではまず、S2624もしくはS2625に進む場合について説明する。S2624では、グローバル変数「listIdx」の値をマイナス1する。ただし「listIdx」が“0”だった場合は、「listIdx」の値をグローバル変数「list」の配列要素数−1にする。一方、S2625では、グローバル変数「listIdx」の値をプラス1する。ただし「listIdx」がグローバル変数「list」の配列要素数−1だった場合は、「listIdx」の値を0にする。
S2624もしくはS2625の後に、S2626では、巡回リストの「listIdx」番目要素の内容をリンク先として、ローカル変数「dstId」に設定する。すなわちグローバル変数「link[listIdx]」の値を設定する。そしてS2617に進む。
S2617以降は前述同様である。すなわちS2617でリンク先へとジャンプし、リンク先に付随するボタンが有効化される。そしてS2619、S2620と実行されて関数「on_click2」を終了し、アプリケーションは再びユーザ操作を受けつける状態へと遷移する。S2623で、ボタン種が「Back」だった場合は、S2622に進み、以降本文内アンカー表現領域のフィールドに対する処理内容と全く同様となるので、説明は省略する。
以上で図26の説明を終了する。図27に、図26のアクション関数群を含むアクション情報を、第四の実施形態で生成する電子文書フォーマットにて記述した例を示す。なお図27には、図26には無い、フィールドに付随するボタンを無効化するアクション関数も記述されている。電子文書内でボタンが付随する、本文内アンカー表現領域のフィールドに対しては、フォーカスが外れたときのアクションに本関数が定義さているものとする。
また初期化の際にすべてのボタンを無効化するのにも本関数が使用される。この方式はあくまで一例であって、たとえば実施例2と同様にクリック時のアクション関数内で必要に応じて必要なボタン無効化をおこなってもよい。また、ユーザの多種な操作に対し、必要に応じてクリック履歴や巡回リスト等のグローバル変数をリセットして意図外の動作を回避するコードを追加してもよい。
[電子文書データ閲覧動作]
次に、第四の実施形態で生成された電子文書データを、ユーザがアプリケーションで閲覧する場合の動作について説明する。本説明では図13のアプリケーション画面例を再び使用する。まず、ユーザが電子文書データの2ページ目である図13(b)の画面を閲覧し、領域1306をクリックしたとする。するとフィールド“image_図1−1”をリンク元として、図27に示す例のように記述されたアクション関数「on_click2」が呼び出されてアクションが実行される。その内容は図26で説明したように、クリック対象であるリンク元がキャプション付随領域であるため巡回リストが生成され、その先頭をリンク先とするジャンプ動作を行う。
ここで巡回リストは、クリック履歴が無いので図27の「init」関数内で定められるリスト{“text_図1−1”,“text_図1−2”,“text_図1−3”}のままとなる。従って先頭のフィールド識別子“text_図1−1”のフィールドにジャンプし、図13(c)の表示を得る。次にユーザが図13(c)で「Back」ボタン1310をクリックすると、リンク元のリンクID“text_図1”からリンク先は“image_図1−1”に定まり、同フィールドにジャンプして図13(f)の表示を得る。
ここまでは第一の実施形態の動作と同等である。ここで更にユーザが図13(f)の領域1317をクリックすると、再び“image_図1−1”をリンク元として関数「on_click2」が実行される。しかし直前の関数「on_click2」呼び出しで、グローバル変数「prevId」には一つ前のクリック対象フィールド識別子「text_図1−1」が設定された状態にある。よって関数「on_click2」は当該フィールド識別子を末尾に並び替えた{“text_図1−2”,“text_図1−3”,“text_図1−1”}という巡回リストを作成し、その先頭へとジャンプする。その結果、図13(d)の表示を得る。つまり第四の実施形態では、ユーザが図13(c)とは異なる説明を見ようとして前記の操作を行った場合に、再度図13(c)が表示されることなく図13(d)が表示されるので、無駄なく効率良い閲覧操作が可能となる。
なお、図26で説明したアクション関数「make_list」は、一つ前のクリック対象が巡回の末尾に来るよう並び替えて巡回リストを作成したが、これはあくまで一例であり、他の並び替えを行ってもよい。例えば、逆に一つ前のクリック対象が巡回の先頭に来るよう並び替えてもよい。さらに、より過去のクリック対象まで考慮し、起点が本文内アンカー表現の場合は先頭になるように並び替え、起点がキャプション付随領域の場合は末尾になるように制御してもよい。
このように、第四の実施形態で作成された電子文書データは、ユーザが複数リンク先を有するフィールドをクリックした時点でリンク先の巡回リストを作成し、以降巡回リストに沿った順番で複数リンク先の表示やフォーカス設定を行う機能を有す。ゆえに、ユーザが対象フィールドをクリックした時点での操作履歴等により巡回リストをより適切な順序に並べ替えることが可能である。その結果、第一、第二の実施形態で説明した効果に加え、ユーザの操作状況等に応じて適切な情報な優先的に提示することが可能となり、ユーザの閲覧効率をさらに向上する効果がある。
また、第三の実施形態で説明した、アンカー表現近辺の文章から算出した重要度等による並び替えを、前述の関数「make_list」内で行うようにしても良い。その場合には、リンク構成情報に対し各リンク先リストに対応する重要度スコアリストを添付し、必要であれば関数「make_list」内で再計算をおこなうなどして並び替えに利用することが可能である。このようにして作成された電子文書データは、第三の実施形態で説明した効果に加えて、ユーザの操作状況等に応じて適切な情報な優先的に提示することが可能になり、ユーザの閲覧効率をさらに向上する効果がある。
<第五の実施形態>
生成される電子文書データにおいて、複数のリンク先を有する領域に対するフィールドをアプリケーションでクリックしたきのアクションとして、リンク先に関するサムネイル・要約等を列挙する。そして、その中でユーザが選択したリンク先の領域に遷移するようにしてもよい。例えば、キャプション付随領域をリンク元としてクリックしたときのアクションとして、リンク先である本文内アンカー表現領域を含む複数文章を抜粋・要約して一覧表示する。その中からユーザが選んだ文章に含まれるアンカー表現領域へとジャンプするようにしてもよい。
さらにこのジャンプ先のフィールドに付随して、第一〜第四の実施形態のように別のリンク先を順次表示するためボタンを表示させてもよい。また、そのような一覧表示を行う、もしくは、第一〜第四の実施形態のようにリンク先の一つにジャンプするかをユーザが選択するためのボタン等を提供してもよい。その結果、ユーザは「オブジェクト」に対する複数の「オブジェクト参照文」を、まず要約等の一覧表示で見当をつけた上で、詳細な内容を得るために実際の文章がある部分を表示することができる。よって、ユーザの閲覧効率をさらに向上させる効果がある。
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。