(57)【特許請求の範囲】
【請求項１】
構造化文書を符号化する文書符号化装置であって、
構造化文書中に記されている各属性値を検出する検出手段と、
前記検出手段が検出した各属性値の小数点以下の桁数を取得する取得手段と、
前記取得手段が取得したそれぞれの桁数のうち最大桁数に応じて前記各属性値の小数点位置を移動させることで、前記検出手段が検出した各属性値を、整数値を表す数値文字列に変換する変換手段と、
前記変換手段による各数値文字列と、前記最大桁数と、を符号化する符号化手段と
を備えることを特徴とする文書符号化装置。
【請求項２】
前記変換手段は、前記最大桁数をＣとしたときに、前記検出手段が検出した各属性値を１０Ｃ倍した整数値を表す数値文字列を生成することを特徴とする請求項１に記載の文書符号化装置。
【請求項３】
前記符号化手段は、
前記変換手段による変換結果としての数値文字列のうち、符号化結果のデータサイズとして予め設定したサイズに基づいて決まる数値範囲内に収まっていない数値を示す数値文字列については、その変換元の数値文字列をＩＥＥＥ７５４形式で符号化することを特徴とする請求項１又は２に記載の文書符号化装置。
【請求項４】
構造化文書を符号化する文書符号化装置であって、
構造化文書中に記されている各属性値を検出する検出手段と、
前記検出手段による前記各属性値の検出順において、先頭から順に属性値間の差分値を計算する計算手段と、
前記計算手段が計算した各差分値の小数点以下の桁数を取得する取得手段と、
前記取得手段が取得したそれぞれの桁数のうち最大桁数に応じて前記各差分値の小数点位置を移動させることで、前記計算手段が計算した各差分値を、整数値を表す数値文字列に変換する変換手段と、
前記変換手段による各数値文字列、前記検出手段による前記各属性値の検出順において先頭の属性値、前記最大桁数、を符号化する符号化手段と
を備え、
前記符号化手段は、前記先頭の属性値については、ＩＥＥＥ７５４形式で符号化することを特徴とする文書符号化装置。
【請求項５】
前記符号化手段は、バイナリＸＭＬにより符号化を行うことを特徴とする請求項１乃至４の何れか１項に記載の文書符号化装置。
【請求項６】
前記構造化文書は、ＳＶＧであることを特徴とする請求項１乃至５の何れか１項に記載の文書符号化装置。
【請求項７】
構造化文書を符号化する文書符号化装置が行う文書符号化方法であって、
前記文書符号化装置の検出手段が、構造化文書中に記されている各属性値を検出する検出工程と、
前記文書符号化装置の取得手段が、前記検出工程で検出した各属性値の小数点以下の桁数を取得する取得工程と、
前記文書符号化装置の変換手段が、前記取得工程で取得したそれぞれの桁数のうち最大桁数に応じて前記各属性値の小数点位置を移動させることで、前記検出工程で検出した各属性値を、整数値を表す数値文字列に変換する変換工程と、
前記文書符号化装置の符号化手段が、前記変換工程による各数値文字列と、前記最大桁数と、を符号化する符号化工程と
を備えることを特徴とする文書符号化方法。
【請求項８】
構造化文書を符号化する文書符号化装置が行う文書符号化方法であって、
前記文書符号化装置の検出手段が、構造化文書中に記されている各属性値を検出する検出工程と、
前記文書符号化装置の計算手段が、前記検出工程による前記各属性値の検出順において、先頭から順に属性値間の差分値を計算する計算工程と、
前記文書符号化装置の取得手段が、前記計算工程で計算した各差分値の小数点以下の桁数を取得する取得工程と、
前記文書符号化装置の変換手段が、前記取得工程で取得したそれぞれの桁数のうち最大桁数に応じて前記各差分値の小数点位置を移動させることで、前記計算工程で計算した各差分値を、整数値を表す数値文字列に変換する変換工程と、
前記文書符号化装置の符号化手段が、前記変換工程による各数値文字列、前記検出工程による前記各属性値の検出順において先頭の属性値、前記最大桁数、を符号化する符号化工程と
を備え、
前記符号化工程では、前記先頭の属性値については、ＩＥＥＥ７５４形式で符号化することを特徴とする文書符号化方法。
【請求項９】
コンピュータを、請求項１乃至６の何れか１項に記載の文書符号化装置の各手段として機能させるためのコンピュータプログラム。
【請求項１０】
請求項９に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書の符号化技術に関するものである。
【背景技術】
【０００２】
従来、Ｗ３Ｃで策定されたＸＭＬ言語仕様では、データをＸＭＬ言語で記述する場合、ＵＴＦ−８、ＵＴＦ−１６などの文字符号化方式で符号化するのが一般的である。属性値や要素内容として記述するデータが整数や小数など文字以外のデータの場合、文字として符号化することで元のデータよりもサイズが大きくなり解析処理に時間がかかっていた。
【０００３】
ＩＳＯで策定されたＦａｓｔ Ｉｎｆｏｓｅｔ（ＩＳＯ／ＩＥＣ  ２４８２４−１）仕様などバイナリＸＭＬ技術では、ＸＭＬデータ内の属性値や要素内容を文字だけでなく整数や小数など本来のデータ型でエンコーディングすることができる。これにより、データサイズの圧縮や解析処理時間の短縮を行うことができた。
【０００４】
なお、特許文献１には、XMLデータの要素名や属性名、数値で、複数回繰り返し現れる文字列をより短いバイト列に置き換えて圧縮を行うことが開示されている。
【特許文献１】特開2005-215950号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、グラフィック、地図、図面など座標値を含むデータでは、従来技術では圧縮効果が得られない場合がある。
【０００６】
従来のバイナリＸＭＬ技術では、解析処理時間を短縮するために、小数値をコンピュータ上のデータフォーマットであるＩＥＥＥ７５４(IEEE Standard for Binary Floating-Point Arithmetic (ANSI／IEEE Std 754-1985))形式に符号化する。ＩＥＥＥ７５４形式で符号化する場合、符号化サイズが最低４バイト必要であるため、-0.1や0.2など桁数の小さな小数では圧縮効果が得られない。よって、ＳＶＧのような桁数の小さな小数が数多く記述される構造化文書の場合、解析処理時間は短縮できても、圧縮効果はあまり得ることができない。
【０００７】
本発明は以上の問題に鑑みて成されたものであり、構造化文書の解析処理に大きな負荷をかけることなく、桁数の小さな小数が数多く記述されている構造化文書に対する圧縮効率を向上させるための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば、本発明の文書符号化装置は以下の構成を備える。
【０００９】
即ち、構造化文書を符号化する文書符号化装置であって、
構造化文書中に記されている各属性値を検出する検出手段と、
前記検出手段が検出した各属性値の小数点以下の桁数を取得する取得手段と、
前記取得手段が取得したそれぞれの桁数のうち最大桁数に応じて前記各属性値の小数点位置を移動させることで、前記検出手段が検出した各属性値を、整数値を表す数値文字列に変換する変換手段と、
前記変換手段による各数値文字列と、前記最大桁数と、を符号化する符号化手段と
を備えることを特徴とする。
【発明の効果】
【００１６】
本発明の構成によれば、構造化文書の解析処理に大きな負荷をかけることなく、桁数の小さな小数が数多く記述されている構造化文書に対する圧縮効率を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照し、本発明の好適な実施形態について詳細に説明する。
【００１８】
［第１の実施形態］
図１は、本実施形態に係る文書符号化装置に適用可能なコンピュータのハードウェア構成例を示すブロック図である。なお、本実施形態に係る文書符号化装置に適用可能な装置が有する構成は、図１に示した構成に限定するものではなく、当業者であれば、種種の変形例が考え得る。更に、本実施形態に係る文書符号化装置を１台の装置で実現させることに限定するものではなく、複数台の装置による協調動作でもって、本実施形態に係る文書符号化装置を実現させても良い。この場合、複数台の装置間は、ＬＡＮなどのネットワークを介して接続されていることになる。
【００１９】
図１において、ＣＰＵ１０１は、ＲＯＭ１０２やＲＡＭ１０３に格納されているプログラムやデータを用いて、コンピュータ１００全体の制御を行うと共に、コンピュータ１００が行うものとして説明する後述の各処理を実行する。
【００２０】
ＲＯＭ１０２には、コンピュータ１００の設定データやブートプログラム、変更を必要としないパラメータのデータなどが格納されている。
【００２１】
ＲＡＭ１０３は、外部記憶装置１０４からロードされたプログラムやデータ、ネットワークインターフェース１０６を介して外部から受信したデータなどを一時的に記憶するためのエリアを有する。更には、ＲＡＭ１０３は、ＣＰＵ１０１が各種の処理を実行する際に用いるワークエリアも有する。
【００２２】
外部記憶装置１０４は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１０４には、ＯＳ（オペレーティングシステム）や、コンピュータ１００が行うものとして説明する後述の各処理をＣＰＵ１０１に実行させるためのプログラムやデータが保存されている。また、外部記憶装置１０４には、後述する処理の対象となる構造化文書のデータが、ファイルとして保存されている。外部記憶装置１０４に保存されているプログラムやデータは、ＣＰＵ１０１による制御に従って適宜ＲＡＭ１０３にロードされ、ＣＰＵ１０１による処理対象となる。
【００２３】
入力インターフェース１０５は、キーボードやマウスなどにより構成されており、コンピュータ１００の操作者が操作することで、各種の指示をＣＰＵ１０１に対して入力することができる。
【００２４】
ネットワークインターフェース１０６は、コンピュータ１００をＬＡＮやインターネット等に接続するためのものであり、コンピュータ１００はこのネットワークインターフェース１０６を介して、外部機器とのデータ通信を行うことができる。
【００２５】
１０７は、上述の各部を繋ぐバスである。
【００２６】
なお、コンピュータ１００に接続可能な記憶装置は、外部記憶装置１０４に限定するものではなく、次のようなものをコンピュータ１００に設けても良い。即ち、メモリカード、コンピュータ１００に対して着脱可能なフレキシブルディスク（ＦＤ）やCompact Disk（ＣＤ）等の光ディスク、磁気や光カード、ＩＣカード等である。
【００２７】
次に、コンピュータ１００が行う構造化文書の符号化処理について説明する。
【００２８】
携帯電話、デジタルカメラ、プリンタなどのハードウェアリソースの少ない機器では、構造化文書としてのＸＭＬデータのサイズ縮小や、パース処理の高速化が求められている。従来、このような課題を解決する技術としてバイナリＸＭＬという符号化技術が用いられてきた。バイナリＸＭＬでは、ＸＭＬデータの要素や属性などの構造をバイナリデータに符号化し、要素や属性の値を整数や小数などの本来のデータ型で符号化する。バイナリデータとすることで、ＵＴＦ−８やＵＴＦ−１６などの文字符号化よりも、データサイズが小さくなり、パース処理が高速化される。
【００２９】
しかし、Ｗ３Ｃで策定されたＳＶＧ仕様(http:／／www.w3.org／Graphics／SVG)のような桁数の小さな小数が数多く記述される構造化文書の場合には問題がある。
【００３０】
図２は、ＳＶＧの一例を示す図である。図２に示すＳＶＧでは、keyTimes属性に多くの数値が記述されている。これらの数値は、アニメーション処理のタイミングを示しており、全体時間内での割合を表す０〜１の小数値である。これらの値は、桁数に制限があるわけではないが、一般的に図２に示すような”0.01”、“0.02”といった桁数の小さな小数で指定することが多い。また、図２に示すＳＶＧでは、pathのd属性に座標情報を表す実数値が多く記述される。これらの実数値における小数部も、桁数の制限があるわけではないが、一般的に図２に示すような”3.183”, “-0.911”といった桁数の小さな小数部を含む実数値で指定することが多い。
【００３１】
図２のＳＶＧにバイナリＸＭＬを適用すると、実数値はＩＥＥＥ７５４形式に符号化できる。ＩＥＥＥ７５４形式は、図３に示すような符号、指数部、仮数部から構成されるフォーマットである。最低でも４バイト必要とする。図３には、0.01に対する例を示しているが、数値文字列とＩＥＥＥ７５４形式で長さは変わらない。
【００３２】
図２のＳＶＧには、３〜６バイト程度の数値文字列が記述されている。このような記述を多く含む場合、バイナリＸＭＬを適用しても、解析処理時間の短縮は行えるが、データサイズの縮小はほとんど行えない。
【００３３】
図４は、ＳＶＧを符号化する処理のフローチャートである。なお、図４のフローチャートに係る説明では、ＳＶＧの例として、図２に示したＳＶＧを用いる。図４のフローチャートに従った処理をＣＰＵ１０１に実行させるためのプログラムやデータ、構造化文書としてのＳＶＧのデータは、外部記憶装置１０４に保存されている。従って、ＣＰＵ１０１は、係るプログラムやデータ、ＳＶＧのデータをＲＡＭ１０３にロードし、ロードしたこれらを用いて処理を実行する。これにより、コンピュータ１００は、以下説明する、図４のフローチャートに従った処理を実行することになる。
【００３４】
先ず、図４のフローチャートに従った処理を実行する前に、ＳＶＧのデータにおいて、符号化対象部分を予め指定しておく。全ての値を符号化対象とするならば特に指定する必要はない。
【００３５】
本実施形態では、図２のＳＶＧのデータにおいて、桁数の小さい小数値が連続するkeyTimes属性を、符号化対象として指定したものとする。即ち、animateTransform要素のkeyTimes属性を指定する。また、属性値として列挙されている小数値の区切り文字”;”を指定する。
【００３６】
そして次に、図２のＳＶＧのデータを外部記憶装置１０４からＲＡＭ１０３にロードする。なお、ＲＡＭ１０３に図２のＳＶＧのデータを取得するための方法については特に限定するものではない。
【００３７】
そして、図４のフローチャートに従った処理を開始する。
【００３８】
先ず、ステップＳ４０１では、符号化対象としてＲＡＭ１０３に入力されたＳＶＧのデータ内（構造化文書中）を順次参照するのであるが、参照した部分が、animateTransform要素のkeyTimes属性であるのかを判断する。係る判断の結果、animateTransform要素のkeyTimes属性ではない場合は処理をステップＳ４０２に進める。ステップＳ４０２では、参照した部分については、従来通りのバイナリＸＭＬの符号化を行う。図２の例では、d属性の値は従来通りのバイナリＸＭＬの符号化が行われる。
【００３９】
一方、ステップＳ４０１における判断の結果、animateTransform要素のkeyTimes属性である場合には、処理をステップＳ４０３に進める。
【００４０】
ステップＳ４０３では、animateTransform要素のkeyTimes属性における全ての数値文字列（属性値）を抽出したか否かをチェックする。係るチェックの結果、全ての数値文字列を抽出した場合には処理をステップＳ４０５に進め、全ての数値文字列を抽出していない場合には処理をステップＳ４０４に進める。
【００４１】
ステップＳ４０４では先ず、animateTransform要素のkeyTimes属性において未だ抽出していない数値文字列（属性値）抽出する。数値文字列の抽出には、予め指定された区切り文字”;”を利用する。図２において、０、０．０１、０．０２、０．１、１が“；”により区切られているので、これら数値文字列を抽出する。また、特に指定された区切り文字を使わなくとも、属性値の文字列を先頭から順次チェックし、数値文字列として妥当な部分までを一つの数値文字列として検出することもできる。
【００４２】
そして、抽出した数値文字列の小数点以下の桁数ｃ’を取得する。ここで、桁数ｃ’は、小数点文字’.’の位置から属性値の末尾までの文字数を数えることで算出できる。
【００４３】
即ち、ステップＳ４０３からステップＳ４０５に処理が進んだということは、animateTransform要素のkeyTimes属性における全ての数値文字列（属性値）について、小数点以下の桁数ｃ’を取得したことになる。
【００４４】
ステップＳ４０５では、animateTransform要素のkeyTimes属性における全ての数値文字列（属性値）についてステップＳ４０４で取得した桁数ｃ’のうち、最大値（最大桁数）Ｃを求める。
【００４５】
ここで、数値文字列を抽出後、抽出した属性値（小数値）の整数符号化方式を決定する。小数値を整数化するには、一時的に小数点位置を移動（操作）させなければならない。移動した小数点位置は解析時に元に戻す。この処理は、ＩＥＥＥ７５４形式で符号化する場合に比べてオーバヘッドになる。本実施形態では、オーバヘッドを削減するために、予め指定された構造部分内では、同じ整数符号化形式を使うようにする。オーバヘッドが無視できるならば、別々の整数符号化形式を用いてもよい。
【００４６】
ここで、検出した各小数値は、１０進表現で少なくともＣ個小数点を下位に移動させれば整数化できる。そこで、小数値を１０Ｃ倍して得られる整数値を符号化する方式を、この構造部分の共通の整数符号化方式として決定する。本実施形態では、図５に示すようにＣ＝２であるので、小数値を１０２倍して得られる整数値を符号化する方式を、この構造部分の共通の整数符号化方式として決定する。図５は、各数値文字列の符号化について説明する図である。
【００４７】
整数符号化方式が決定した後、検出した各小数値の符号化を行う。符号化を行うには、小数の数値文字列を一旦ＩＥＥＥ７５４形式に変換し、１０のべき乗して整数化し、符号化することで行うことができる。しかし一旦ＩＥＥＥ７５４形式に変換するのはオーバヘッドが大きいので、本実施形態では、数値文字列の状態で小数値を整数符号化する。
【００４８】
従って、ステップＳ４０６では、数値文字列を１０Ｃ倍して得られる整数値を表す数値文字列を生成する。係る処理は換言すれば、数値文字列から小数点を省いた結果としての整数値の下位に、この数値文字列について取得した桁数ｃ’と最大桁数Ｃとの差（Ｃ−ｃ’）個だけ０を加えた整数値を表す数値文字列を生成する処理である。
【００４９】
ステップＳ４０６における処理を、全ての数値文字列について行うことで、図５に示すように、それぞれ”０”→”０００”、”０．０１”→”００１”、”０．０２”→”００２”、”０．１”→”０１０”、”１“→”１００”というように変換される。
【００５０】
そして最後に、ステップＳ４０７では、全ての数値文字列についてステップＳ４０６で生成した数値文字列と、最大桁数Ｃと、を符号化する。本実施形態では、バイナリＸＭＬとして符号化する。符号化する際には、他のデータの一部として記述される。
【００５１】
従来、バイナリＸＭＬでは、図５に示すように、属性を符号化する際に、属性構造を示す符号(0x9c)、属性値のデータ型を示す符号、属性値といった順の記述を行う。各小数値は数値文字列またはＩＥＥＥ７５４形式で符号化され、どのような形式で符号化されたかはデータ型で示されている。
【００５２】
データ型は、図６に示すように定義されており、文字列ならば0x17、ＩＥＥＥ７５４単精度（float）ならば0x1a、倍精度（double）ならば0x1bとなっている。そこで本実施形態では、図６のようにデータ型定義の拡張を行い、0x3*を１バイト整数とし、0x31を１０の１乗、0x32を１０の２乗、...とする。本実施形態では１０の２乗なのでデータ型は0x32になる。このデータ型を使って図５のようにバイナリＸＭＬとして符号化する。属性値のデータ型の記述は0x32になり、小数値はそれぞれ、”0”→0x00、”0.01”→0x01、”0.02”→0x02、”0.1”→0x0a、”1“→0x64という１バイト整数に符号化される。以上のようにして、桁数の小さな小数値でもデータサイズを小さくすることができる。
【００５３】
ここで言う整数化は、小数値を固定小数点数とし、固定された小数点位置と数値を符号化することも含まれる。
【００５４】
デコード側は、符号化データのデータ型に整数符号化の方式が記述されているので、記述されている方式に従って逆変換を行い元の小数値を取得する。本実施形態では、構造部分内で整数符号化方式が統一されているので、一連の計算処理を行った後逆変換を行い、オーバヘッドを減らすこともできる。
【００５５】
［第２の実施形態］
本実施形態では、図２に示したＳＶＧのd属性に対して、第１の実施形態で説明した符号化方法を適用する場合について説明する。keyTimes属性と同様に、d属性にも桁数の小さな小数部を含む実数値が多く記述されている。ところがd属性には、図２に示すように、”198.784”,”59.762”というようなkeyTimes属性よりも若干桁数の大きな小数部を含む実数値が含まれる。このような場合、整数符号化した方がサイズが大きくなり、ＩＥＥＥ７５４形式で符号化した方がよい場合がある。そこで本実施形態では、符号化する対象の数値に応じてＩＥＥＥ７５４形式と整数符号化を切り替えて用いる場合について説明する。
【００５６】
本実施形態に係る符号化処理のフローチャートは基本的には図４に示したフローチャートとほぼ同様であるので、以下、本実施形態に係る符号化処理について、図４を用いて説明する。
【００５７】
先ず、図４のフローチャートに従った処理を実行する前に、ＳＶＧのデータにおいて、符号化対象部分を予め指定しておく。全ての実数値を符号化対象とするならば特に指定する必要はない。
【００５８】
本実施形態では、図２のＳＶＧのデータにおいて、path要素のd属性を、符号化対象として指定したものとする。また、属性値として列挙されている実数値の区切り文字“Ｍ”、“ｃ”、“,”を指定する。
【００５９】
そして次に、図２のＳＶＧのデータを外部記憶装置１０４からＲＡＭ１０３にロードする。なお、ＲＡＭ１０３に図２のＳＶＧのデータを取得するための方法については特に限定するものではない。
【００６０】
そして、図４のフローチャートに従った処理を開始する。
【００６１】
先ず、ステップＳ４０１では、符号化対象としてＲＡＭ１０３に入力されたＳＶＧのデータ内を順次参照するのであるが、参照した部分が、path要素のd属性であるのかを判断する。係る判断の結果、path要素のd属性ではない場合は処理をステップＳ４０２に進める。ステップＳ４０２では、参照した部分については、従来通りのバイナリＸＭＬの符号化を行う。
【００６２】
一方、ステップＳ４０１における判断の結果、path要素のd属性である場合には、処理をステップＳ４０３に進める。
【００６３】
ステップＳ４０３では、path要素のd属性における全ての数値文字列（属性値）を抽出したか否かをチェックする。係るチェックの結果、全ての数値文字列を抽出した場合には処理をステップＳ４０５に進め、全ての数値文字列を抽出していない場合には処理をステップＳ４０４に進める。
【００６４】
ステップＳ４０４では先ず、path要素のd属性において未だ抽出していない数値文字列（属性値）抽出する。数値文字列の抽出には、予め指定された区切り文字”Ｍ”、”ｃ”、”，”を利用する。本実施形態では、抽出すべき数値文字列は、１９８．７８４、５９．７６２、３．１８３、−０．９１１、４．９７２、−２．８２５、５．３６６、−５．７４２である。第１の実施形態と同様に、特に指定された区切り文字を使わなくとも数値文字列の検出を行うことはできる。
【００６５】
そして、抽出した数値文字列の小数点以下の桁数ｃ’を取得する。
【００６６】
即ち、ステップＳ４０３からステップＳ４０５に処理が進んだということは、path要素のd属性における全ての数値文字列（属性値）について、小数点以下の桁数ｃ’を取得したことになる。
【００６７】
ステップＳ４０５では、path要素のd属性における全ての数値文字列（属性値）についてステップＳ４０４で取得した桁数ｃ’のうち、最大値（最大桁数）Ｃを求める。
【００６８】
ステップＳ４０５では、Ｃの値を決定するのであるが、本実施形態では第１の実施形態とは異なり、次のようにして決定する。
【００６９】
ＳＶＧのような描画処理では、必要となる数値精度を予め決めておくことができる。そこで本実施形態では、予め指定された数値精度である小数点以下の桁数３をＣの値に決定する。
【００７０】
ここで、符号化方式を決定する前に、整数符号化を適用するかどうかの判定を行う。判定を行うために、予め閾値を設定しておく。
【００７１】
整数符号化は、ＩＥＥＥ７５４で符号化する場合に比べてサイズが大きくなっては意味がない。ＩＥＥＥ７５４で符号化した場合は最低４バイトになる。４バイトより小さくなれば、符号化サイズを縮小できる。本実施形態では十分なサイズ縮小効果が得られる２バイト以下の整数に符号化される場合に整数符号化を適用することにする。閾値はバイト単位ではなく、ビット単位でもよいが、解析時にシフト処理が必要になるので本実施形態ではバイト単位とする。
【００７２】
２バイト整数は、２の補数表現を使うと、−３２７６８〜３２７６７の値を表現することができる。実数を整数化した際に、−３２７６８〜３２７６７の間に入っていれば整数符号化を適用すべきということになる。換言すれば、係る数値範囲は、符号化結果のデータサイズとして予め設定したサイズに基づいて決まる数値範囲内である。
【００７３】
次にステップＳ４０６では、第１の実施形態と同様に、数値文字列を１０Ｃ倍して得られる整数値を表す数値文字列を生成する。ステップＳ４０６における処理を、全ての数値文字列について行うことで、図７に示す如く、次のような変換結果が得られる。即ち、”１９８．７８４”→”１９８７８４”、”５９．７６２”→”５９７６２”、”３．１８３”→”３１８３”、”−０．９１１”→”−０９１１”、”４．９７２“→”４９７２”、”−２．８２５“→”−２８２５”→”５．３６６“→”５３６６”、”−５．７４２“→”−５７４２”という数値文字列が得られる。
【００７４】
次に、係る変換により得られた数値文字列が表す数値が、-32768〜32767の数値範囲内に収まっているか否かを判断するのであるが、係る判断は、数値文字列同士の比較や数値文字列の長さの比較で判定すれば良い。
【００７５】
そして、収まっている数値文字列については、第１の実施形態と同様に、そのままバイナリＸＭＬとして符号化する。一方、収まっていない数値文字列については、ステップＳ４０６における変換前（変換元）の数値文字列をＩＥＥＥ７５４形式でバイナリＸＭＬとして符号化する。本実施形態では、図７に示すように、描画コマンドＭの座標情報、198.784、59.762がＩＥＥＥ７５４形式で符号化すると判定され、それ以外の実数値が整数符号化すると判定される。
【００７６】
この判定は、上記のような方法を用いなくても良く、ＳＶＧに記述される情報を利用して行うこともできる。ＳＶＧのpath要素のd属性の記述では、描画コマンドと処理に必要な数値情報を列挙する。このとき、描画コマンドがＭやＣなどの大文字であれば、絶対値表現、cなどの小文字であれば相対値表現であることが決まっている。図２に示すように、絶対値表現の場合、相対値表現に比べて桁数の大きな数値になる傾向がある。そこで、予め絶対値表現、相対値表現を示す識別文字を指定しておき、絶対値表現であればＩＥＥＥ７５４形式で符号化、相対値表現であれば整数符号化を行うと判定する。
【００７７】
ただしこの判定は厳密な判定ではないので、いくつかの誤判定も考えられる。誤判定となっても、本実施形態に係る符号化方法が一部最適に適用されないだけで処理上問題なく十分な効果が得られる。
【００７８】
本実施形態では、どちらの方法を使って判定しても同じ結果が得られる。
【００７９】
そして最後に、ステップＳ４０７では、全ての数値文字列についてステップＳ４０６で生成した数値文字列、変換前の数値文字列、最大桁数Ｃ、を符号化する。本実施形態では、バイナリＸＭＬとして符号化する。符号化する際には、他のデータの一部として記述される。
【００８０】
図６のデータ型定義を使ってバイナリＸＭＬとして符号化すると図７のようになる。描画コマンドＭの小数値のデータ型は0x1a、それ以外の小数値のデータ型は、２バイト整数で１０の３乗なので0x43となる。小数値はそれぞれ、１９８．７８４→０ｘ４３４６ｃ８ｂ４、５９．７６２→０ｘ４２６ｆ０ｃ４ａ、３．１８３→０ｘ０ｃ６ｆ、−０．９１１→０ｘｆｃ７１、４．９７２→０ｘ１３６ｃ、−２．８２５→０ｘｆ４ｆ７、５．３６６→０ｘ１４ｆ６、−５．７４２→０ｘｅ９９２となる。
【００８１】
デコード側は、第１の実施形態と同様に、符号化データのデータ型に従って逆変換を行い、元の実数値を取得する。
【００８２】
［第３の実施形態］
本実施形態では、図２に示したＳＶＧのvalues属性に対して、第１の実施形態で説明した符号化方法を適用する場合について説明する。values属性にも多くの数値が記述される。これらの数値は、アニメーション時のある値の変化を列挙したものであり、keyTimes属性とともに使われる。values属性の値は、絶対値表現で記述することが決められている。各値を見ると、-418や-446.71など、第１，２の実施形態とは異なり、整数符号化すると２バイトを越える値が多くある。そこで本実施形態では、このような絶対値表現で記述された値に対しての符号化について説明する。
【００８３】
本実施形態に係る符号化処理について以下、説明する。
【００８４】
先ず、ＳＶＧのデータにおいて、符号化対象部分を予め指定しておく。全ての値を符号化対象とするならば特に指定する必要はない。
【００８５】
本実施形態では、図２のＳＶＧのデータにおいて、animateTransform要素のvalues属性を、符号化対象として指定したものとする。また、属性値として列挙されている実数値の区切り文字“,”、”;”を指定する。
【００８６】
そして次に、図２のＳＶＧのデータを外部記憶装置１０４からＲＡＭ１０３にロードする。なお、ＲＡＭ１０３に図２のＳＶＧのデータを取得するための方法については特に限定するものではない。
【００８７】
先ず、符号化対象としてＲＡＭ１０３に入力されたＳＶＧのデータ内を順次参照するのであるが、参照した部分が、animateTransform要素のvalues属性であるのかを判断する。係る判断の結果、animateTransform要素のvalues属性ではない場合は、参照した部分については、従来通りのバイナリＸＭＬの符号化を行う。
【００８８】
一方、animateTransform要素のvalues属性である場合には、animateTransform要素のvalues属性における全ての数値文字列（属性値）を抽出したか否かをチェックする。係るチェックの結果、全ての数値文字列を抽出していない場合には先ず、animateTransform要素のvalues属性において未だ抽出していない数値文字列（属性値）抽出する。数値文字列の抽出には、予め指定された区切り文字“,”、”;”を利用する。本実施形態では、抽出すべき数値文字列は、−６８、−４１８、−１０１．４９、−４４６．７１、−１２６．５２、−４６５．２４、−１３９．４９、−４６９．２９、−１３９．８、−４５８．１４である。第１の実施形態と同様に、特に指定された区切り文字を使わなくとも数値文字列の検出を行うことはできる。
【００８９】
次に、区切り文字で区切られた数値文字列のセットの並び順において先頭から、セット間の数値文字列の差分値（属性値間の差分値）を計算する。これにより、(-33.49, -28.71)、(-25.03, -18.53)、(-12.97, -4.05)、(-0.31, 11.15)を算出する。
【００９０】
以下では、これら差分値は、整数符号化の対象となる。なお、セットの並び順において、先頭位置におけるセット（-68, -418）は絶対値であるのでＩＥＥＥ７５４方式で符号化する対象となる。
【００９１】
そして、各差分値の小数点以下の桁数ｃ’を取得する。
【００９２】
次に、各差分値について取得した桁数ｃ’のうち、最大値（最大桁数）Ｃを求める。そして、差分値を１０Ｃ倍して得られる整数値を表す数値文字列を生成する。そして最後に、ステップＳ４０７では、先頭位置におけるセット、各差分値、最大桁数Ｃ、を符号化する。本実施形態でも、バイナリＸＭＬとして符号化する。
【００９３】
図１０は、図６に示したデータ型定義を拡張した結果を示す図である。具体的には、差分を計算して整数符号化する。これは、先頭の１ビット目を１にすることによって表現される。本実施形態では、図８に示す如く、最初の座標のデータ型は0x1a、残りの座標のデータ型は、２バイト整数で１０の２乗なので0xc2となる。小数値はそれぞれ、0xc2880000,0xc3d10000,x0f2eb,0xf4c9,0xf639,0xf8c3,0xfaef,0xfe6b,0xffe1,0x045bとなる。
【００９４】
以上により、絶対値記述された小数でも、データサイズを縮小することができる。
【００９５】
デコード側は、第１の実施形態と同様に、符号化データのデータ型に従って逆変換を行い元の小数値を取得する。
【００９６】
［第４の実施形態］
本実施形態では、符号化対象となるＸＭＬのデータに対して予め、整数符号化しやすいようなデータ形式に変換しておく。
【００９７】
ＳＶＧ仕様には、transform属性が規定されている。transform属性は、記述された座標値の座標系を変換するためのもので、描画処理を行う前の変換処理を記述することができる。
【００９８】
図９は、ＳＶＧにおけるpath要素のd属性の属性値の例を示す図である。図９に示す如く、path要素のd属性には、複数の実数値のデータが記述される。
【００９９】
本実施形態に係る符号化処理では先ず、図４のフローチャートにおいて、ステップＳ４０１〜ステップＳ４０５における処理を、第１の実施形態と同様にして行う。
【０１００】
図９のd属性に記述された実数値は、小数点以下３桁が最大なので、ステップＳ４０５では、
Ｃとして、「３」が確定する。各実数値を符号化する際には、IEEE754形式で符号化するのではなく、１０３倍した整数値を符号化する。
【０１０１】
各値を元に戻す場合には、0.001を掛け合わせる必要がある。そこで、ＳＶＧのデータにtransform属性の記述を追加し、正しく描画処理できるようにする。scale(X)というのは、座標値をＸ倍するという変換処理の記述である。0.001倍するので、transform=scale(0.001)を記述する。記述先の要素は、図９の例１に示すようなコンテナ要素g、例２に示すようなグラフィック要素pathが考えられる。
【０１０２】
追加したtransform属性は、通常のバイナリＸＭＬの符号化方式で符号化される。
【０１０３】
以上より、ＳＶＧのようなアプリケーションデータ側の仕様で数値変換処理の指定がサポートされている場合は、事前にデータ編集しておくことで、バイナリ符号化のフォーマットに依存することなく本提案の方式を適用することができる。
【０１０４】
なお、上述の各実施形態については、適宜組み合わせて用いても良く、それぞれの実施形態における処理を、並行して実行しても良いし、様々な条件に応じて適宜切り替えて実行するようにしても良い。
【０１０５】
［その他の実施形態］
なお、本発明は、例えば、システム、装置、方法、プログラムもしくはコンピュータ読み取り可能な記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０６】
尚、本発明は、次のような形態であっても達成しうる。即ち、前述した実施形態の機能を実現するソフトウェアのプログラム（上述したフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータがこの供給されたプログラムコードを読み出して実行することによっても達成される。
【０１０７】
従って、本発明の機能処理をコンピュータで実現するために、このコンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１０８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１０９】
プログラムを供給するための記録媒体としては、例えば、次のようなものがある。即ち、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１１０】
その他、プログラムの供給方法としては、次のようなものがある。クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１１１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１２】
また、コンピュータが、読み出したプログラムを実行することによっても、前述した実施形態の機能が実現され得る。即ち、係るプログラムを実行することで、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１３】
さらに、以下の処理によっても前述した実施形態の機能が実現される。即ち、記録媒体から読み出されたプログラムを、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む。そしてその後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１１４】
【図１】本発明の第１の実施形態に係る文書符号化装置に適用可能なコンピュータのハードウェア構成例を示すブロック図である。
【図２】ＳＶＧの一例を示す図である。
【図３】ＩＥＥＥ７５４形式のフォーマットを説明する図である。
【図４】ＳＶＧを符号化する処理のフローチャートである。
【図５】各数値文字列の符号化について説明する図である。
【図６】データ型の定義を説明する図である。
【図７】変換結果を説明する図である。
【図８】変換結果を説明する図である。
【図９】ＳＶＧにおけるpath要素のd属性の属性値の例を示す図である。
【図１０】図６に示したデータ型定義の拡張結果を説明する図である。
【図１】
0005207886.tif 000002
【図２】
0005207886.tif 000003
【図３】
0005207886.tif 000004
【図４】
0005207886.tif 000005
【図５】
0005207886.tif 000006
【図６】
0005207886.tif 000007
【図７】
0005207886.tif 000008
【図８】
0005207886.tif 000009
【図９】
0005207886.tif 000010
【図１０】
0005207886.tif 000011