(57)【要約】【課題】  透かし情報を繰り返して埋め込まなくても、かつ、埋め込み時に比べて文字間隔の数が変化しても、正しい透かし情報を抽出できる確率を高くする技術を提供することを目的とする。【解決手段】  文書情報取得部７０２で文書画像内の文字間隔を取得し、データ部抽出部７０３で前記文字間隔の大小関係を用いて、データ部を抽出する。判定部７０４でデータ部の文字間隔の数が埋め込み時と変化しているかを判定し、データ部の文字間隔の数が埋め込み時と変化していると判定した場合は、消失ビット特定部７０５でデータの消失ビットを特定し、生成部７０６で消失ビットと文字間隔とに基づいて、誤り訂正符号化されたデータを生成し、透かし情報抽出部７０７で誤り訂正符号化されたデータを復号し、透かし情報を抽出する。【選択図】  図７
2010130202.tif 000002
【特許請求の範囲】
【請求項１】
文書画像内の文字間隔を操作して埋め込まれている透かし情報を抽出する抽出装置であって、
前記文書画像内の文字間隔を取得する文書情報取得手段と、
前記文字間隔の大小関係を用いて、データ部を抽出するデータ部抽出手段と、
前記データ部の文字間隔の数が埋め込み時と変化しているかを判定する判定手段と、
前記判定手段においてデータ部の文字間隔の数が埋め込み時と変化していると判定した場合は、データの消失ビットを特定する消失ビット特定手段と、
前記消失ビットと前記文字間隔とに基づいて、誤り訂正符号化されたデータを生成する生成手段と、
前記誤り訂正符号化されたデータを復号し、透かし情報を抽出する透かし情報抽出手段とを有することを特徴とする抽出装置。
【請求項２】
前記消失ビット特定手段は、信頼度を算出して予め定められた閾値と比較することで消失ビットを特定することを特徴とする請求項１に記載の抽出装置。
【請求項３】
前記信頼度は、前記文字間隔と埋め込み時に用いた間隔操作値に基づいて算出されることを特徴とする請求項２に記載の抽出装置。
【請求項４】
前記信頼度は、前記文字間隔と文字の幅に基づいて算出されることを特徴とする請求項２に記載の抽出装置。
【請求項５】
前記生成手段は、データ部の各ビットが前記消失ビットに該当する場合は消失ビットとして生成され、前記消失ビットより後にある場合は順方向または逆方向にずらした文字間隔に基づいて生成されることを特徴とする請求項１から請求項４のいずれか１項に記載の抽出装置。
【請求項６】
文書画像内の文字間隔を操作して埋め込まれている透かし情報を抽出する抽出方法であって、
前記文書画像内の文字間隔を取得する文書情報取得工程と、
前記文字間隔の大小関係を用いて、データ部を抽出するデータ部抽出工程と、
前記データ部の文字間隔の数が埋め込み時と変化しているかを判定する判定工程と、
前記判定工程においてデータ部の文字間隔の数が埋め込み時と変化していると判定した場合は、データの消失ビットを特定する消失ビット特定工程と、
前記消失ビットと前記文字間隔とに基づいて、誤り訂正符号化されたデータを生成する生成工程と、
前記誤り訂正符号化されたデータを復号し、透かし情報を抽出する透かし情報抽出工程とを有することを特徴とする抽出方法。
【請求項７】
コンピュータに、請求項１から請求項５のいずれか１項に記載の抽出装置の機能を実行させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを格納することを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書に埋め込まれた情報を抽出するための技術に関する。
【背景技術】
【０００２】
近年の電子化において、文書に対するセキュリティ技術が求められている。なかでも電子文書において電子透かし情報（以下、透かし情報）を埋め込み、抽出する技術が注目されている。
【０００３】
例えば、電子文書の画像化した文書画像に対して、文字間隔を操作し透かし情報を埋め込む方法がある。具体的には、図１に示すようにまず文字間隔を既存の文書画像解析技術で各文字の外接矩形を切り出し、隣接する外接矩形間の空白長を取得する。次に、図１に示すように隣接する文字間隔ＰとＳの大小関係を変化させることで０または１の透かし情報を埋め込む。ここで、Ｐは行の最初から文字間隔の数を数えた場合の奇数番目の文字間隔であり、Ｓは偶数番目の文字間隔である。以下でも同様に定義する。抽出時は、埋め込み時と同様に文字間隔を取得し、ＰとＳの大小を比較することで透かし情報を得る（特許文献１）。
【０００４】
抽出時にノイズや歪みなどが生じた場合にも、文書画像から埋め込まれた透かし情報を抽出できる方法がある。具体的には、文書画像に、透かし情報を繰り返し埋め込んでおき、抽出時には、各透かし情報を抽出し、抽出された各透かし情報を用いて多数決を行い、最終的な抽出情報とする（特許文献２）。
【特許文献１】特登録０３７２８２０９
【特許文献２】特開２００４−２４７８８３
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献２は、抽出された複数の透かし情報を用いて多数決を行い、最終的な抽出情報を決定するため、十分精度良く透かし情報を得るには、透かし情報をなるべく多く繰り返して埋め込む必要があった。結果として、特許文献２は、文字間隔数が限られた文書に対しては、透かし情報として多くの情報量を埋め込むことはできなかった。
【０００６】
また、ノイズや複写時の文字の太りなどにより、文字の外接矩形を誤って取得してしまい、文字間隔の数が埋め込み時と異なる場合がある。ここで、図３に文字の外接矩形が誤って取得される場合の例を示す。３０１は句点の後のノイズが文字として認識された場合であり、３０２は「訂」が「言」と「丁」の各文字に認識された場合である。また、３０３は「ト」と「・」が一つの文字として認識された場合である。特許文献２は、文字間隔の数が埋め込み時と異なる場合のビット列は多数決の対象から除いていた。
【０００７】
本発明では、以上の問題を考慮し、透かし情報を繰り返して埋め込まなくても、かつ、埋め込み時に比べて文字間隔の数が変化しても、正しい透かし情報を抽出できる確率を高くする技術を提供する。
【課題を解決するための手段】
【０００８】
この問題を解決するため、例えば本発明の抽出装置は以下の構成を備える。すなわち、文書画像内の文字間隔を操作して埋め込まれている透かし情報を抽出する抽出装置であって、前記文書画像内の文字間隔を取得する文書情報取得手段と、前記文字間隔の大小関係を用いて、データ部を抽出するデータ部抽出手段と、前記データ部の文字間隔の数が埋め込み時と変化しているかを判定する判定手段と、前記判定手段においてデータ部の文字間隔の数が埋め込み時と変化していると判定した場合は、データの消失ビットを特定する消失ビット特定手段と、前記消失ビットと前記文字間隔とに基づいて、誤り訂正符号化されたデータを生成する生成手段と、前記誤り訂正符号化されたデータを復号し、透かし情報を抽出する透かし情報抽出手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、埋め込み時に比べて文字間隔の増加または減少が生じたとしても、誤り訂正符号による正しい復号が可能になり、結果として、正しい透かし情報を抽出できる確率が高くなる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明に関わる実施形態を詳細に説明する。
【００１１】
（実施形態１）
本実施形態では、文書のオブジェクトとして文字を使用し、透かし情報の埋め込み及び抽出を行なう。
【００１２】
＜＜透かし情報埋め込み＞＞
図５は、実施形態１における透かし情報の埋め込み装置の構成図である。図５に示すように、文書入力部５０１は埋め込み対象である文書５００を入力する。文書情報取得部５０２において、文書内の文字間隔を取得する。埋め込みデータ生成部５０５において、透かし情報入力部５０４より入力される透かし情報５０３と同期信号に基づいて埋め込みデータを生成する。埋め込みデータ埋め込み部５０６において、取得した文字間隔を操作して埋め込みデータを埋め込む。最後に、出力部５０７において、埋め込み済み文書５０８を出力する。以下、透かし情報の埋め込み方法の具体的な実現方法について述べる。記憶部５０９は、同期信号や間隔操作値Ｘが記憶されている。
【００１３】
図６は、実施形態１における透かし情報埋め込み装置の動作手順を説明するためのフローチャートである。
【００１４】
まず、ステップＳ６０１において、文書５００が文書入力部５０１に入力される。文書のフォーマットとしては、テキストファイルやＰＳ（Ｐｏｓｔ  Ｓｃｒｉｐｔ（登録商標））などの電子文書ファイルでもよい。また、文書を画像化したＢＭＰ（Ｂｉｔｍａｐ  Ｉｍａｇｅ）やＴＩＦＦ（Ｔａｇｇｅｄ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）などの文書画像ファイルでもよく、フォーマットは問わない。
【００１５】
ステップＳ６０２において、文書情報取得部５０２で、入力された文書から文書情報として文字間隔を取得する。文字間隔は、例えば電子文書ファイルであれば、各フォーマットの文字間隔データ箇所を解析し、取得する。また、文書画像であれば、文書画像解析技術で各文字の外接矩形を切り出し、隣接する外接矩形間の空白長を取得する。
【００１６】
ステップＳ６０３において、埋め込みデータ生成部５０５で、文書に埋め込むための埋め込みデータを生成する。透かし情報５０３は、透かし情報入力部５０４に入力される。埋め込みデータ生成部５０６において、入力された透かし情報に対して誤り訂正符号化を行い、同期信号記憶部５０９に記憶された同期信号と連結することで、埋め込みデータを生成する。具体例として、図２の２０１に示すような同期信号とデータ部（透かし情報を誤り訂正符号化したデータ）を繰り返すことにより、埋め込みデータが生成される。ここで、同期信号とデータ部は、埋め込み対象文書の文字間隔数が十分にある場合は、繰り返し埋め込むことで、さらに抽出精度を上げることが可能である。しかしながら、本発明においては、埋め込み対象文書における文字間隔数が、繰り返して埋め込めるほど存在しない場合は、繰り返して埋め込む必要はない。
【００１７】
このとき、同期信号は固定長であり、本実施形態ではＭビット（Ｍは自然数）の擬似乱数系列を用いる。ただし、擬似乱数系列以外でもかまわない。また、データ部も固定長であり、本実施形態ではＮビット（Ｎは自然数）の透かし情報が誤り訂正符号化されたデータで構成される。ここで、誤り訂正符号は、ブロック符号を使用する。ブロック符号は一定の長さの系列に符号化される符号である。これによって、抽出時のデータ誤りを訂正できる。また、データ部の長さを示す情報を埋め込みデータに加えることで、データ長自体を可変長にしてもよい。
【００１８】
ステップＳ６０４において、Ｓ６０２で取得した文字間隔を操作して、埋め込みデータ埋め込み部５０６で、埋め込みデータの埋め込みを行なう。埋め込み方法は、２つの文字間隔ＰとＳの大小関係で埋め込む。図１１を用いて、具体的に説明する。図１１は、透かし情報の埋め込み例（透かし情報０を埋め込むために、Ｐ＞Ｓにする場合）を示す。図１１の１１０４、１１０５、１１０６は、それぞれ、文字の外接矩形を表わす（以下も同様である）。まず、埋め込み前の文字間隔を、１１０１におけるＰ、Ｓとする。そして、奇数番目の文字間隔と偶数番目の文字間隔の値を同じするために、文字間隔Ｐ１＝Ｓ１＝（Ｐ＋Ｓ）÷２とする。ここでは、２番目の外接矩形を移動させる。１１０３では、間隔操作値Ｘを用いて、Ｐ’＝Ｐ１＋Ｘ、Ｓ’＝Ｓ１−Ｘと変化させる。以降、埋め込み後の文字間隔をＰ’とＳ’と表わすことにする。ここでは、埋め込み前の文字間隔が奇数番目と偶数番目とで同じ場合でない例を示したが、埋め込み前の文字間隔が奇数番目と偶数番目とで同じような文書データを扱う場合は、１１０１から１１０２への処理を行わなくてもよいのは言うまでもない。
【００１９】
埋め込みデータのデータ部で用いられる文字間隔の数は各ビットに対して２つ使用されるため、２Ｎ個である。この文字間隔の数は、記憶部５０９に記憶しておき、抽出時に用いられる。データ部での埋め込みは、図２の２０２のように文字間隔情報が構成されている場合に、文字間隔ＰとＳの大小関係を０と１で表現された透かし情報に従って、図２の２０３のように変化させる。例えば、透かし情報が１ならばＰ’＞Ｓ’とし、０ならばＰ’＜Ｓ’とする。また、同期信号での埋め込みは、ＰとＳの大小関係を０と１で表現された同期信号に従って、データ部と同様に変化させる。
【００２０】
最後に、ステップＳ６０５において、出力部５０７を介して埋め込み済み文書５０８を出力する。例えば、プリンタなどで印刷出力する。また、電子媒体のまま、出力しても良い。
【００２１】
＜＜透かし情報抽出＞＞
図７は、実施形態１における透かし情報の抽出装置の構成図である。図７に示すように、文書入力部７０１は透かし情報を抽出する対象である埋め込み済み文書７００を入力する。その際、埋め込み済み文書７００は画像化され文書画像として以降扱われる。文書情報取得部７０２において、文書画像内の文字間隔を取得する。次に、データ部抽出部７０３において、取得した文字間隔の大小関係に基づいて、埋め込みデータを抽出する。そして、記憶部７０９に記憶された同期信号を用いて、埋め込みデータにおける同期信号の位置を特定することで、データ部の場所を抽出する。
【００２２】
判定部７０４において、データ部の文字間隔の数が埋め込み時と変化しているかを判定する。文字間隔の数が変化ない場合は、生成部７０６に進む。生成部７０６において、データ部の文字間隔を順に用いて、誤り訂正符号化されたデータを生成する。一方で、判定部７０４において、文字間隔の数が変化している場合は、消失ビット特定部７０５において、文字間隔を利用してデータの消失ビットを特定し、生成部７０６に進む。生成部７０６において、消失ビットに基づいて、誤り訂正符号化されたデータを生成する。最後に、透かし情報抽出部７０７において、誤り訂正符号化されたデータを復号し、透かし情報７０８を抽出する。記憶部７０９には、埋め込み時に用いた同期信号、文字間隔の数、間隔操作値Ｘが記憶されている。これらの情報は、埋め込み装置と抽出装置とで予め共有させておくのでよいし、抽出時に、抽出装置が埋め込み装置から取得するのでも構わない。記憶部７０９には、さらに、後述する信頼度を求める際に必要は閾値も記憶されている。
【００２３】
以下、透かし情報抽出方法の具体的な実現方法について述べる。
【００２４】
図８は、実施形態１における透かし情報抽出装置の動作手順を説明するためのフローチャートである。
【００２５】
まず、ステップＳ８０１において、文書入力部７０１は埋め込み済み文書７００を入力する。このときに、文書の媒体が印刷物の場合はスキャナなどで入力され、電子文書ファイルの場合は画像ファイルに変換されるので、ステップＳ８０２以下は文書画像として扱われる。
【００２６】
ステップＳ８０２において、文書情報取得部７０２で、文書画像から文書情報として、例えば文書の左上から順に文字間隔を取得する。
【００２７】
ステップＳ８０３において、データ部抽出部７０３で、データ部の場所が抽出される。文書画像に埋め込まれていた埋め込みデータは図２に示すような同期信号とデータ部が交互に構成されている。データ部の場所を抽出するには、埋め込みデータの同期信号があると思われる場所において、順に文字間隔のペアを組み、２つの間隔の大小関係に基づいて、埋め込みデータを抽出する。次に、抽出した埋め込みデータと記憶部７０９に記憶された同期信号とを比較することで、抽出した埋め込みデータにおけるデータ部の場所が抽出できる。他の同期信号を特定する方法を用いてもかまわない。
【００２８】
ステップＳ８０４において、判定部７０４で、文字間隔の数が埋め込み時と同じであるか否かが判断される。埋め込み時にの文字間隔の数は、記憶部７０９に記憶されている。文字間隔の数が埋め込み時と同じである場合（ＹＥＳ）は、ステップＳ８０５に進む。
【００２９】
ステップＳ８０５において、生成部７０６で、誤り訂正符号化されたデータを生成する。まずデータ部の最初から文字間隔のペアを順に組む。次に、各文字間隔のペアを構成しているＰ’とＳ’を比較し、各位置での誤り訂正符号化されたデータを生成する。具体的には、例えばＰ’＞Ｓ’ならば１を、Ｐ’＜Ｓ’ならば０を誤り訂正符号化されたデータとして生成する。
【００３０】
一方、ステップＳ８０４において、文字間隔の数が同じではない場合（ＮＯ）は、ステップＳ８０６に進む。
【００３１】
ステップＳ８０６において、消失ビット特定部７０５で、文字間隔の数が一つ増減しているか否かが判断される。＜＜透かし情報埋め込み＞＞で説明したとおり、本実施形態のＮビットで構成される埋め込みデータのデータ部で用いられる文字間隔の数は２Ｎ個である。抽出された文字間隔の数が２Ｎ個から変化しているかを判定する。文字間隔の数が一つ増減している場合（ＹＥＳ）は、ステップＳ８０７に進む。文字間隔の数が一つ増減していない場合（ＮＯ）、つまり文字間隔の数が２つ以上増減している場合は、ステップＳ８０８に進む。
【００３２】
ステップＳ８０７において、消失ビット特定部７０５で、埋め込み信頼度Ｔ１と閾値ｔｈ１を比較して、消失ビットＺを特定する。消失ビットＺとは、埋め込み時よりも文字間隔の数が変化した影響でデータ値が不明となったビットである。この部分を誤り訂正符号化されたデータにおいて、元の値が「０」か「１」か不明であるため「消失」としておく。それによって、復号時に誤り訂正符号の訂正方法の一つである消失訂正が使用できる。誤り訂正符号は公知技術であるので、詳細は省略する。ステップＳ８０７の詳細については＜消失ビット特定処理＞の項で後述する。
【００３３】
また、ステップＳ８０８では、消失ビット特定部７０５で、透かし情報が抽出できないと判定する。
【００３４】
ステップＳ８０９において、生成部７０６で、消失ビットＺに基づいた誤り訂正符号化されたデータを生成する。Ｚよりも前にある誤り訂正符号化されたデータの生成は文字間隔のペアを順に組むことで行なう。Ｚは消失とする。Ｚよりも後にある誤り訂正符号化されたデータの生成は文字間隔のペアをずらして組むことで行なう。ステップＳ８０９の詳細については＜消失ビットがある場合の誤り訂正符号化されたデータ生成処理＞の項で後述する。
【００３５】
ステップＳ８１０において、透かし情報抽出部７０７で、誤り訂正符号化されたデータを復号し、透かし情報７０８を得る。埋め込み時に用いた誤り訂正符号の復号方法によって復号する。このときに使用する方法は、信頼度を用いた軟判定復号でも硬判定復号でもかまわない。
【００３６】
最後に、ステップＳ８１１において、文書内全てから透かし情報７０８を抽出したか否かが判断される。全てから透かし情報７０８を抽出した場合（ＹＥＳ）は処理を終了し、抽出していない場合（ＮＯ）は、ステップＳ８０４に戻る。
【００３７】
＜消失ビット特定処理＞
図９は、実施形態１における消失ビットＺを特定する例を説明するためのフローチャートである。
【００３８】
まず、ステップＳ８０７ａにおいて、Ｚ＝１とする。
【００３９】
ステップＳ８０７ｂにおいて、文字間隔のペアＰ’とＳ’の値をセットする。具体的には、Ｐ’＝ｃｈａｒｓｐ２Ｚ−１、Ｓ＝ｃｈａｒｓｐ２Ｚとする。ここで、ｃｈａｒｓｐＡは、Ａの初期値を１とすると、データ部のＡ番目の文字間隔を表す。従って、Ｓ８０７ｂでは、データ部の最初から順に文字間隔のペアを取得していることになる。
【００４０】
ステップＳ８０７ｃにおいて、Ｚにおける埋め込み信頼度Ｔ１Ｚを算出する。Ｔ１の算出方法は以下のとおりである。
【００４１】
［埋め込み信頼度Ｔ１］
埋め込み信頼度Ｔ１は、以下の性質を利用して定める。外接矩形の増減がない場合は、透かし情報を埋め込みときに用いた間隔操作値Ｘと２つの文字間隔Ｐ’、Ｓ’に基づいた関係が維持される。ここで、間隔操作値Ｘは埋め込み時に用いられた値である。図１１に透かし情報の埋め込み例（透かし情報０を埋め込むために、Ｐ＞Ｓにする）を示す。
【００４２】
図１１の１１０１は、透かし情報を埋め込む前のＰとＳの関係を示している。１１０２では、Ｐ１＝Ｓ１＝（Ｐ＋Ｓ）÷２にするために、２番目の外接矩形を移動させている。つまり、Ｐ１とＳ１の間隔を同じにしている。１１０３では、間隔操作値Ｘを用いて、Ｐ’＝Ｐ１＋Ｘ、Ｓ’＝Ｓ１−Ｘと変化させている。その結果、Ｐ’＞Ｓ’となり、透かし情報０が埋め込まれた。
【００４３】
すなわち、透かし情報埋め込み時に
｜｜Ｐ’−Ｓ’｜−２Ｘ｜＝０・・・（１）
が成り立つことが分かる。
【００４４】
よって、透かし情報抽出時に外接矩形の増減がなければ、情報抽出の元となるＰ’とＳ’の対応関係が変化しないため、式（１）が成立していると考えられる。
また、矩形誤りやノイズがない場合に文字間隔Ｐ’およびＳ’が取りうる範囲に収まっているかを以下のように判断する。
【００４５】
【数１】
2010130202.tif 000003
【００４６】
ここで、ｃｈａｒｓｐ＿ｊｕｄｇｅは文字間隔判定結果であり、ｃｈａｒｓｐ＿ｍａｘ＿ｔｈは文字間隔最大閾値、ｃｈａｒｓｐ＿ｍｉｎ＿ｔｈは文字間隔最小閾値である。文字間隔最大閾値及び文字間隔最小閾値は、文字間隔として取り得る最大値と最小値を設定すればよい。ある一例として、いくつかのサンプル文書中の文字間隔のヒストグラムを生成し、最大値と最小値をそれぞれ、文字間隔最大閾値、文字間隔最小閾値としてもよい。
【００４７】
図１２にｃｈａｒｓｐ＿ｍｉｎ＿ｔｈを−１、ｃｈａｒｓｐ＿ｍａｘ＿ｔｈを４０とした場合で、ｃｈａｒｓｐ＿ｊｕｄｇｅが０になる場合を示した。ここで、文字間隔の負に取る場合は、文字の外接矩形同士が重なっている場合である。文字間隔は後の文字の外接矩形を構成する一番左の座標から前の文字の外接矩形を構成する一番右の座標を引いたものである。従って、前の文字の外接矩形が後の文字の外接矩形に重なると負の値を取る。１２０１では、「検」と「索」の間の文字間隔Ｓが文字の外接矩形同士が重なっているため、−５になっている。その結果、ｃｈａｒｓｐ＿ｍｉｎ＿ｔｈより小さいため、ｃｈａｒｓｐ＿ｊｕｄｇｅが０となる。一方、１２０２では、ノイズと「電」の間の文字間隔Ｐ’が５０になっており、ｃｈａｒｓｐ＿ｍａｘ＿ｔｈより大きいため、ｃｈａｒｓｐ＿ｊｕｄｇｅが０となる。
【００４８】
以上の式（１）および（２）を考慮した埋め込み信頼度Ｔ１は、
【００４９】
【数２】
2010130202.tif 000004
【００５０】
で示される。ここで、γは１よりも大きい任意の定数であり、例えば、１．１と設定する。
【００５１】
Ｔ１はまず、式（１）の効果で、文字間隔の増減なしなら１に近づき、文字間隔の増減ありなら０に近づく。また、式（２）の効果で、矩形誤りやノイズがない場合に文字間隔が取りうる範囲にあるなら１になり、取りうる範囲ではないなら、０になる。
【００５２】
そのため、透かし情報を埋め込んだときの文字間隔のＰ’とＳ’の対応関係が変化している部分を判定できる。従って、消失ビットＺを特定できる。
【００５３】
ステップＳ８０７ｄにおいて、Ｔ１Ｚが閾値ｔｈ１よりも大きいか否かが判断される。ここで、閾値ｔｈ１は、０から１までの任意の値であり、例えば複写物からも情報を抽出するために、文書の複写による文字間隔の１画素ないしは２画素程度の変化を考慮して０．６と設定される。Ｔ１Ｚがｔｈ１よりも大きい場合（ＹＥＳ）はステップＳ８０７ｅに進む。また、Ｔ１Ｚがｔｈ１以下の場合（ＮＯ）はステップＳ８０７の処理を終了する。
【００５４】
ステップＳ８０７ｅにおいて、Ｚをインクリメントする。
【００５５】
最後に、ステップＳ８０７ｆにおいて、ＺがＮ以下か否かが判断される。ＺがＮ以下の場合（ＹＥＳ）は、全てのビットを見ていないとして、ステップＳ８０７ｂに戻る。また、ＺがＮより大きいの場合（ＮＯ）は、全てのビットを見たとして、ステップＳ８０７の処理を終了する。
【００５６】
＜消失ビットがある場合の誤り訂正符号化されたデータ生成処理＞
誤り訂正符号化されたデータの消失ビット以降の各ビットを消失または文字間隔のペアをずらして生成する。そのため、より正しい誤り訂正符号化されたデータを生成できる。従って、正しい透かし情報を抽出できる確率が高くなる。
【００５７】
図１０は、実施形態１における消失ビットがある場合の誤り訂正符号化されたデータを生成する例を説明するためのフローチャートである。また、文字間隔が一つ増えた場合の消失ビット特定（ステップＳ８０７）、誤り訂正符号化されたデータ生成（ステップＳ８０９）、誤り訂正符号化されたデータの復号（ステップＳ８１０）の動作例を図１３を用いて説明する。この例では、埋め込み時の文字間隔の数は、Ｎ＝７として、２×７＝１４個であり、抽出時の文字間隔の数は、ｃｈａｒｓｐ１５まである通り、１５個である。一つの文字間隔値「２５」が増えている。
【００５８】
まず、文字間隔が一つ増えた場合の誤り訂正符号化されたデータの生成を図１０と図１３を用いて説明する。
【００５９】
図１３のＳｔｅｐ１において、消失ビットＺを特定する。データ部の０ビット目から順にＴ１が閾値ｔｈ１（この例では０．６とする）より大きいかを比較している。その結果、３ビット目の時にｔｈ１より小さくなっている。従って、消失ビットＺは３と特定される。
【００６０】
図１３のＳｔｅｐ２において、誤り訂正符号化されたデータを生成する。以下は、図１０のフローチャートの説明をする。
【００６１】
ステップＳ８０９ａにおいて、誤り訂正符号化されたデータでの計算する対象ビットＹの値を１とする。
【００６２】
ステップＳ８０９ｂにおいて、Ｙと消失ビットＺを比較し、その結果の応じて処理を切り替える。Ｙ＜Ｚの場合は、ステップＳ８０９ｃに進む。
【００６３】
ステップＳ８０９ｃにおいて、データ部のＹビット目に該当する文字間隔ＰとＳをそのまま大小比較し、Ｙビット目の誤り訂正符号化されたデータを取得する。具体的には、例えばＰ’＞Ｓ’ならば１を、Ｐ’＜Ｓ’ならば０を誤り訂正符号化されたデータとして生成する。
【００６４】
図１３のＳｔｅｐ２では、Ｓ８０９ｃはＺ＝３より小さい１ビット目および２ビット目の処理である。該当するビットは文字間隔のペアをずらさないで誤り訂正符号化されたデータを生成していることが分かる。
【００６５】
ステップＳ８０９ｂにおいて、Ｙ＝Ｚの場合は、ステップＳ８０９ｄに進む。
【００６６】
ステップＳ８０９ｄにおいて、Ｙビット目の誤り訂正符号化されたデータを消失ビットとする。
【００６７】
図１３のＳｔｅｐ２では、Ｓ８０９ｄはＺ＝３ビット目の処理である。３ビット目は消失ビットとしている。
【００６８】
ステップＳ８０９ｂにおいて、Ｙ＞Ｚの場合は、ステップＳ８０９ｅに進む。
【００６９】
一方、ステップＳ８０９ｅにおいて、文字間隔の数が埋め込み時と比べて、一つ減少しているか否かが判断される。抽出された文字間隔の数が埋め込み時のデータ部に存在した文字間隔の数である２Ｎ個から変化しているかを判定する。一つ減少している場合（ＹＥＳ）は、ステップＳ８０９ｆに進む。また、一つ減少していない場合、つまり、一つ増加している場合（ＮＯ）は、ステップＳ８０９ｇに進む。
【００７０】
ステップＳ８０９ｆにおいて、通常の文字間隔のペアＰとＳを一つ左にずらして作り、ＰとＳを大小比較し、Ｙビット目の誤り訂正符号化されたデータを取得する。
【００７１】
逆に、ステップＳ８０９ｇにおいて、通常の文字間隔のペアＰとＳを一つ右にずらして作り、ＰとＳを大小比較し、Ｙビット目の誤り訂正符号化されたデータを取得する。
【００７２】
図１３のＳｔｅｐ２では、Ｓ８０９ｅからＳ８０９ｇはＺ＝３より大きい４ビット目から７ビット目の処理である。ただし、図１３は文字間隔の数が一つ増加しているので、Ｓ８０９ｆの処理は行なわず、Ｓ８０９ｇの処理を行なう。該当するビットは、文字間隔のペアをずらして誤り訂正符号化されたデータを生成していることが分かる。具体的には、４ビット目のペアは本来、Ｐ’＝「１４」とＳ’＝「３５」である。これを一つ順方向にずらすことで、Ｐ’＝「３５」とＳ’＝「２９」としている。そのため、文字間隔が一つ増えたことを考慮した誤り訂正符号化されたデータを生成することができる。
【００７３】
ステップＳ８０９ｉにおいて、Ｙをインクリメントする。
【００７４】
最後に、ステップＳ８０９ｊにおいて、ＹがＮ以下か否かが判断される。ＹがＮ以下の場合（ＹＥＳ）は、誤り訂正符号化されたデータの全てのビットを算出していないとして、ステップＳ８０９ｂに戻る。また、ＹがＮより大きい場合（ＮＯ）は、全てのビットを算出したとして、ステップＳ８０９の処理を終了する。
【００７５】
また、図１３のＳｔｅｐ３は誤り訂正符号化されたデータを復号する。図１３では、元の誤り訂正符号化されたデータ「０１１０００１」は透かし情報「０１１０」に対して誤り訂正符号の一つであるＢＣＨ符号を用いて符号化している。具体的には、透かし情報「０１１０」に誤り訂正用の検査ビット「００１」を加えた「０１１０００１」を誤り訂正符号化されたデータとしている。Ｓｔｅｐ３では、Ｓｔｅｐ２で生成された誤り訂正符号化されたデータ「０１※０００１」を復号し、復号した情報として「０１１０」が得られ、正しい透かし情報を抽出できることが分かる。ここで、「※」は消失ビットを表現する（以下も同様である）。
【００７６】
次に、文字間隔が一つ減った場合の誤り訂正符号化されたデータの生成を図１０と図１４を用いて説明する。
【００７７】
図１４は文字間隔が一つ減った場合の消失ビット特定（ステップＳ８０７）から誤り訂正符号化されたデータの復号（ステップＳ８１０）までの動作例である。この例では、埋め込み時の文字間隔の数は、図１３と同様に１４個であり、抽出時の文字間隔の数は、ｃｈａｒｓｐ１３まである通り、１３個である。一つの文字間隔値「９」が減った場合である。減った場所を「×」で示した。
【００７８】
図１４のＳｔｅｐ１において、図１３のＳｔｅｐ１と同様に消失ビットＺを特定する。その結果、４ビット目の時にｔｈ１より小さくなっている。従って、消失ビットＺは４と特定される。
【００７９】
図１４のＳｔｅｐ２において、誤り訂正符号化されたデータを生成する。Ｚ＝４以下の処理は、図１０のステップＳ８０９ｃとステップＳ８０９ｄにあたり、図１３と同様に処理する。
【００８０】
図１０のステップＳ８０９ｅからステップＳ８０９ｇは図１４のＳｔｅｐ２においてＺ＝４より大きい５ビット目から７ビット目の処理である。ただし、図１４は文字間隔の数が一つ減少しているので、Ｓ８０９ｆの処理を行ない、Ｓ８０９ｇの処理は行なわない。該当するビットは、文字間隔のペアを逆方向にずらして誤り訂正符号化されたデータを生成していることが分かる。具体的には、５ビット目のペアは本来、Ｐ’＝「２７」とＳ’＝「９」である。これを一つ逆方向にずらすことで、Ｐ’＝「２１」とＳ’＝「２７」としている。そのため、文字間隔が一つ減ったことを考慮した誤り訂正符号化されたデータを生成することができる。
【００８１】
最後に図１４のＳｔｅｐ３において、誤り訂正符号化されたデータを復号する。図１４の誤り訂正符号化されたデータは図１３と同様に透かし情報「０１１０」を符号化したものである。Ｓｔｅｐ２で生成された誤り訂正符号化されたデータ「０１１※００１」を復号し、復号した情報として「０１１０」が得られ、正しい透かし情報を抽出できることが分かる。
【００８２】
本実施形態では、埋め込み時と比べて一つの文字間隔の増減があった場合にそのことを考慮した誤り訂正符号化されたデータを生成し、復号を行なった。具体的には、埋め込み信頼度と閾値を用いて、文字間隔の増減があった場所を特定した。さらに、特定した場所を消失ビットとし、それ以降の誤り訂正符号化されたデータを文字間隔のペアをずらして生成した。そのため、より正しい誤り訂正符号化されたデータを生成できる。従って、正しい透かし情報を抽出できる確率が高くなった。
【００８３】
なお、本実施形態では透かし情報埋め込み時の文字間隔操作方法の一例に基づいたＴ１の算出方法を用いた。本発明では様々な文字間隔操作方法に基づいたＴ１を適用できることは言うまでもない。
【００８４】
なお、本実施形態で述べている文字間隔の操作方法は一例であり、本発明は他の文字間隔を操作した方法でもかまわない。また、本発明は隣接する行間隔を２つ選択して、透かし情報を埋め込む場合を使用可能である。
【００８５】
さらに、複数の文字幅を用いて、透かし情報を埋め込む場合でも使用可能である。例えば、埋め込み信頼度を文字幅操作値に基づいて算出し、変化があるか否かで判定できる。
【００８６】
なお、本実施形態では、オブジェクトとして文字を用いた。しかしながら、本発明は外接矩形を認識できるもの、つまり文字に限らず写真領域、図形領域、文字の行、グラフ領域もしくはそれらが混在したもの全てに適用できる。
【００８７】
＜変形例１＞
実施形態１において、埋め込み信頼度Ｔ１と閾値ｔｈ１を比較することで、消失ビットＺを特定していた。
【００８８】
変形例１では、３文字間の幅に基づいた信頼度である同期信頼度Ｔ２と閾値ｔｈ２を比較することで消失ビットＺを特定する。ここで、閾値ｔｈ２は、ｔｈ１と同様に０から１までの任意の値である。
【００８９】
上記実施形態１と変形例１との違いは上記した通り、消失ビットＺを特定するための信頼度と判定するための閾値が異なる。以下で同期信頼度Ｔ２を説明する。
【００９０】
［同期信頼度Ｔ２］
同期信頼度Ｔ２は、以下の性質を利用して定める。外接矩形の増減がない場合すなわち文字間隔の増減がない場合は、透かし情報の埋め込み時も抽出時も３文字間の文字幅はほぼ等しいという関係がある。図１５に例を示す。
【００９１】
図１５の四角形は文字の外接矩形を示す。まず、１５０１は埋め込み時の３文字間の関係を示している。Ｐ１＿ｉｎおよびＳ１＿ｉｎは、Ｔ２算出対象の位置における埋め込み時のＰとＳを示す。Ｗ１＿ｉｎ、Ｗ２＿ｉｎ、Ｗ３＿ｉｎはＰ１＿ｉｎとＳ１＿ｉｎを構成する外接矩形の文字幅を示す。ここで、埋め込み時の３文字間の距離Ｅｍｂｅｄ＿３Ｌは、
Ｅｍｂｅｄ＿３Ｌ＝Ｗ１＿ｉｎ＋Ｐ１＿ｉｎ＋Ｗ２＿ｉｎ＋Ｐ２＿ｉｎ＋Ｗ３＿ｉｎ・・・（４）
で示される。
【００９２】
また、１５０２は抽出時の３文字間の関係を示している。Ｐ１＿ｏｕｔおよびＳ１＿ｏｕｔは、Ｔ２算出対象の位置における抽出時のＰとＳを示す。Ｗ１＿ｏｕｔ、Ｗ２＿ｏｕｔ、Ｗ３＿ｏｕｔはＰ１＿ｏｕｔとＳ１＿ｏｕｔを構成する外接矩形の文字幅を示す。１５０２では、１５０１に比べて、２文字目の文字幅Ｗ２が複写による文字の太りによって、変化している。なお、埋め込み時と比べて、値が変化した文字幅および文字間隔に関しては、記号を太字にした。ここで、抽出時の３文字間の距離Ｅｘｔｒａｃｔ＿３Ｌは、
Ｅｘｔｒａｃｔ＿３Ｌ＝Ｗ１＿ｏｕｔ＋Ｐ１＿ｏｕｔ＋Ｗ２＿ｏｕｔ＋Ｐ２＿ｏｕｔ＋Ｗ３＿ｏｕｔ・・・（５）
で示される。
【００９３】
従って、埋め込み時と抽出時の関係より、
Ｅｍｂｅｄ＿３Ｌ≒Ｅｘｔｒａｃｔ＿３Ｌ・・・（６）
が成り立つ。
【００９４】
また、Ｅｍｂｅｄ＿３Ｌは平均埋め込み領域幅Ｅｍｂｅｄ＿３Ｌ＿ａｖｅと等しいと考えれば良い。すなわち、抽出時の文字幅の平均値Ｗ＿ｏｕｔ＿ａｖｅと文字間隔の平均値ｃｈａｒｓｐ＿ｏｕｔ＿ａｖｅを用いて、Ｅｍｂｅｄ＿３Ｌ＿ａｖｅは、
Ｅｍｂｅｄ＿３Ｌ＿ａｖｅ＝３×Ｗ＿ｏｕｔ＿ａｖｅ＋２×ｃｈａｒｓｐ＿ｏｕｔ＿ａｖｅ・・・（７）
が成り立つ。
【００９５】
従って、同期信頼度Ｔ２は、
【００９６】
【数３】
2010130202.tif 000005
【００９７】
で示される。ここで、αは１よりも大きい任意の定数であり、例えば、１．１と設定する。なお、Ｗ＿ｏｕｔ＿ａｖｅおよびｃｈａｒｓｐ＿ｏｕｔ＿ａｖｅは文書の１行の平均に基づいたものでも良いし、１ページ単位でも良い。
【００９８】
Ｔ２は文字間隔の増減なしなら１に近づき、文字間隔の増減ありなら０に近づく。つまり、文字間隔の増減の場所を判定できる。従って、消失ビットＺを特定できる。
【００９９】
変形例１では、３文字間の幅に基づいた信頼度である同期信頼度Ｔ２と閾値ｔｈ２を比較することで消失ビットＺを特定する。変形例１は、間隔操作値Ｘが一定ではない場合や間隔操作値Ｘが既知ではない場合に有効だと考えられる。なお、変形例１では、Ｔ２を用いたが、他の同期信頼度を用いても良い。例えば、文字の高さを用いる信頼度などが考えられる。
【０１００】
＜変形例２＞
実施形態１および変形例１では、Ｔ１またはＴ２がｔｈ１またはｔｈ２より小さいビットが発生した時点でそのビットを消失ビットとして処理を終了した。従って、ｔｈ１およびｔｈ２が適切に設定されていない場合は、消失ビットＺではないビットが誤って消失ビットＺと判定されてしまうことになる。
【０１０１】
変形例２では、まずデータ部のあるビットＡを除いた各信頼度の合計信頼度ＡＬＬＡを計算する。Ａは１からＮまでの整数である。また、各信頼度には埋め込み信頼度Ｔ１を用いる。ここで、ＡＬＬＡを構成するビットに消失ビットＺが含まれている場合は、各信頼度の値が低下してしまう。一方で、消失ビットＺが含まれていない場合は、各信頼度の値は低下しない。そのため、ＡＬＬ１からＡＬＬＮの中で一番大きい値を持つときのビットＡが消失ビットＺとなる。
【０１０２】
変形例２は、閾値で判定し、信頼度算出処理を全てのビットで行なわない場合がある実施形態１および変形例１より確実に消失ビットを特定することができる。
【０１０３】
ＡＬＬＡの計算方法はまずＡより小さいビットは文字間隔のペアをずらさないで、ビットの信頼度を算出し、ＡＬＬＡに加算する。Ａより大きいビットは、文字間隔が一つ増えた場合は、文字間隔のペアを一つ順方向にずらす。そして、ビットの信頼度を算出し、ＡＬＬＡに加算する。また、文字間隔が一つ減った場合は、文字間隔のペアを一つ逆方向にずらす。そして、ビットの信頼度を算出し、ＡＬＬＡに加算する。Ａの初期値は１として、ＡがＮまで計算する。
【０１０４】
ただし、ＡＬＬＡの計算方法を工夫できる。ここで、図１６を用いて、変形例２のＡＬＬ１とＡＬＬ２の例を説明する。まず、ＡＬＬ１とＡＬＬ２は上記のとおりに計算する。図１６より、ＡＬＬ１は、０．２１＋０．２１＋１．００＋１．００＋１．００＋１．００＝４．４２となっている。また、ＡＬＬ２は、１．００＋０．２１＋１．００＋１．００＋１．００＋１．００＝５．２１となっている。つまり、ＡＬＬ２はまずＡＬＬ１に１ビット目の文字間隔のペアをずらさない埋め込み信頼度（Ｔ１１とする）を加算する。次に、２ビット目の文字間隔のペアをずらした埋め込み信頼度（Ｔ１＿ＳＨＩＦＴ２とする）を減算したと分かる。以降、ＡＬＬＡ＝ＡＬＬＡ−１＋Ｔ１Ａ−１−Ｔ１＿ＳＨＩＦＴＡと計算できる。
【０１０５】
図１６を用いて、変形例２の消失ビット特定の例を説明する。まず、ＡＬＬ１からＡＬＬ２、ＡＬＬ３と順にＡＬＬ７まで計算している。ここで、ＡＬＬ３の値が６．００となり合計信頼度ＡＬＬＡの中で一番大きい値を持つため、消失ビットＺは３となることが分かる。
【０１０６】
変形例２では、合計信頼度ＡＬＬＡを各ビットＡにて計算することで、消失ビットＺを特定した。変形例２は文字間隔の増減があった場所を実施形態１および実施形態２より確実に特定することができる。なお、変形例２では、合計信頼度ＡＬＬＡの各信頼度は埋め込み信頼度Ｔ１を用いたが、同期信頼度Ｔ２など他の信頼度を用いてもよい。
【０１０７】
なお、変形例２よりも文字間隔の増減があった場所を特定する効果が減じられるが、ＡＬＬＡに対する閾値ｔｈ３を用いて、ｔｈ３より大きくなるＡＬＬＡを消失ビットＺとしても良い。閾値ｔｈ３は、ｔｈ１およびｔｈ２と同様に０から１までの任意の値である。
【０１０８】
これによって、処理量が減らすことができると考えられる。
【０１０９】
（実施形態２）
実施形態１の変形例２では、一つの文字間隔が増減した場合の処理を記述した。しかしながら、２つの文字間隔が増減した場合の処理がない。そこで、本実施形態では２つの文字間隔が増減した場合も考慮した処理をする。
【０１１０】
具体的には、消失ビットＺを２つ用いる。まず、最初の消失ビットＺ１を特定する。次に、ペアをずらして、もう一つの消失ビットＺ２を特定する。これによって、別々の場所で文字間隔が増減しても特定し、消失ビットに基づいた誤り訂正符号化されたデータを生成する。
【０１１１】
また、文字間隔の増減が連続した場合も文字幅や文字間隔のペアを２つずらすことで判断し、処理する。
【０１１２】
実施形態２は、実施形態１における図８のステップＳ８０８の処理が異なる。Ｓ８０８が図２３のステップＳ２３０１に置き換わる。ステップＳ８０８の処理が、図２３のステップＳ２３０１に置き換わり、それ以外の処理については実施形態１と同様なので、説明を省略する。
【０１１３】
図２３は、実施形態２における消失ビットを特定から誤り訂正符号化されたデータを生成する手順までを示すフローチャートである。
【０１１４】
まず、ステップＳ２３０２において、文字間隔の数が２つ増加したかを判断する。実施形態１と同様にデータ部の文字間隔の数と比較して判断する。
【０１１５】
Ｓ２３０２で２つ増加したと判断した場合（ＹＥＳ）は、ステップＳ２３０３に進む。
【０１１６】
Ｓ２３０３では２つ増加した場合の消失ビットＺ１、Ｚ２を特定し、ステップＳ２３０４でＺ１、Ｚ２に基づいた誤り訂正符号化されたデータを生成し、Ｓ２３０１の処理を終了する。詳しくは＜文字間隔が２つ増加した場合の処理＞で述べる。
【０１１７】
Ｓ２３０２で２つ増加ではないと判断した場合（ＮＯ）は、ステップＳ２３０５に進む。
【０１１８】
ステップＳ２３０５において、文字間隔の数が２つ減少したかを判断する。
【０１１９】
Ｓ２３０５で２つ減少したと判断した場合（ＹＥＳ）は、ステップＳ２３０６に進む。
【０１２０】
Ｓ２３０６では２つ減少した場合の消失ビットＺ１、Ｚ２を特定し、ステップＳ２３０４でＺ１、Ｚ２に基づいた誤り訂正符号化されたデータを生成し、Ｓ２３０１の処理を終了する。詳しくは＜文字間隔が２つ減少した場合の処理＞で述べる。
【０１２１】
Ｓ２３０５で２つ減少ではないと判断した場合（ＮＯ）は、ステップＳ２３０７に進み、Ｓ８０８と同様に透かし情報が抽出できないと判定し、Ｓ２３０１の処理を終了する。
【０１２２】
＜文字間隔が２つ増加した場合の処理＞
文字間隔が２つ増加した場合の処理は、図１８、図１９の処理例と図２４の消失ビット特定フローに基づいて説明する。
【０１２３】
図１８は別々の場所に２つの文字間隔が増えた場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。この場合は、別々の場所で一つずつ文字間隔が増加するので、文字間隔のペアが右に２回ずれることになる。従って、まず文字間隔が増加する２箇所を消失ビットＺ１、Ｚ２とし特定する。そして、誤り訂正符号化されたデータ生成時にＺ１、Ｚ２に基づいて文字間隔のペアを右に２回ずらすことでデータ復号を可能とする。Ｚ１、Ｚ２の特定までは図２４のフローチャートで説明する。
【０１２４】
図２４は、本実施形態における２つの文字間隔が増えた場合の消失ビットを特定する手順を示すフローチャートである。
【０１２５】
ステップＳ２３０３ａにおいて、Ｚ１を実施形態１のＺと同様に特定する。図１８ではＳｔｅｐ１の処理であり、Ｚ１＝３となる。ステップＳ２３０３ｂにおいて、Ｚ１より後のペアを元から右に２つずらし、Ｔ１を算出する。そして、ステップＳ２３０３ｃにおいて、算出したＴ１が全てｔｈ１より大きいかを判断する。Ｔ１が全てｔｈ１より大きい場合（ＹＥＳ）はステップＳ２３０３ｄに進み、文字間隔が２つ連続増加したと判断され，ステップＳ２３０３の処理を終了する。Ｔ１が全てｔｈ１より大きくない場合（ＮＯ）はステップＳ２３０３ｅに進み、別々の場所で文字間隔が１つずつ増加したと判断される。
【０１２６】
図１８は、別々の場所で文字間隔が１つずつ増加した場合である。処理としては、Ｚ１＝３より後のペアである「１４」と「３５」のペアを右に２つずらして「２９」と「２０」のペアから順次Ｔ１を算出する。しかしながら、全てのペアのＴ１がｔｈ１より大きくないので、別々の場所で文字間隔が１つずつ増加したと判断される。
【０１２７】
ステップＳ２３０３ｆでは、Ｚ１より後のペアを元から右に１つずらし、Ｚ２を特定し、ステップＳ２３０３の処理を終了する。図１８では、Ｓｔｅｐ２の処理であり、まずＺ１＝３より後のペアである「１４」と「３５」のペアを右に１つずらして「３５」と「２９」のペアから順次Ｔ１を算出する。次に、ｔｈ１と比較することで、Ｚ２＝５となる。Ｓ２３０３の処理が終わった後は、ステップ２３０４に進み、誤り訂正符号化されたデータを生成する。図１８ではＳｔｅｐ３において、Ｚ１＝３とＺ２＝５に基づいて、１ビット目と２ビット目はそのままのペアでデータを生成する。３ビット目は消失させる。４ビット目はペアを右に１つずらしてデータを生成する。５ビット目は消失させる。最後に６ビット目と７ビット目は４ビット目以降でずらしたペアをさらに右に１つずらしてデータを生成する。これによって、各箇所の文字間隔増加による文字間隔のペアをズレが無くなる。
【０１２８】
図１８では、最後のＳｔｅｐ４において、データが復号されたことが分かる。
【０１２９】
図１９は文字間隔が連続して２つ増えた場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。この場合は、途中で文字間隔のペアが右に２つずれることになる。従って、まず文字間隔が増加する消失ビットＺ１を特定する。この場合、Ｚ２は必要ない。そして、誤り訂正符号化されたデータ生成時にＺ１に基づいて文字間隔のペアを右に２つずらすことでデータ復号を可能とする。Ｚ１の特定までは図２４で説明する。
【０１３０】
ステップＳ２３０３ａにおいて、Ｚ１を特定する。図１９ではＳｔｅｐ１の処理であり、Ｚ１＝３となる。
【０１３１】
ステップＳ２３０３ｂにおいて、ペアを右に２つずらしＴ１を算出する。そして、ステップＳ２３０３ｃにおいて、算出したＴ１が全てｔｈ１より大きいかを判断する。図１９ではＳｔｅｐ２の処理であり、全てｔｈ１より大きいことが分かる。
【０１３２】
Ｓ２３０３ｃにおいて、Ｔ１が全てｔｈ１より大きい場合（ＹＥＳ）はステップＳ２３０３ｄに進み、文字間隔が２つ連続増加したと判断され，ステップＳ２３０３の処理を終了する。図１９では上記の場合に該当するので文字間隔が２つ連続増加したと判断される。
【０１３３】
Ｓ２３０３の処理が終わった後は、ステップ２３０４に進み、誤り訂正符号化されたデータを生成する。図１９ではＳｔｅｐ３において、Ｚ１＝３に基づいて、１ビット目から２ビット目はそのままのペアでデータを生成する。３ビット目は消失させる。４ビット目から７ビット目はペアを右に２つずらしてデータを生成する。
【０１３４】
図１９では、最後のＳｔｅｐ４において、データが復号されたことが分かる。
【０１３５】
＜文字間隔が２つ減少した場合の処理＞
文字間隔が２つ減少した場合の処理は、図２０から図２２までの処理例と図４の消失ビット特定フローに基づいて説明する。
【０１３６】
図２０は一つの場所で２つの文字間隔が連続して減り、１ビットの消失ビットが生じる場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。また、図２１は一つの場所で２つの文字間隔が連続して減り、２ビットの消失ビットが生じる場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。これらの場合は、途中で連続して２つの文字間隔が無くなり、無くなった箇所を構成する文字の文字幅は実質３文字分であるから、他よりも広くなる。従って、まず文字間隔が減少する１箇所を文字幅の閾値ｔｈ３を用いて、消失ビットＺ１ないしＺ２を特定するそして、誤り訂正符号化されたデータ生成時にＺ１ないしＺ２に基づいて文字間隔のペアをずらさないことでデータ復号を可能とする。
【０１３７】
Ｚ１、Ｚ２の特定までは図４のフローチャートで説明する。
【０１３８】
図４は、本実施形態における２つの文字間隔が減った場合の消失ビットを特定する手順を示すフローチャートである。
【０１３９】
ステップＳ２３０６ａにおいて、各文字の文字幅Ｗを算出する。例えば、図２０のように、データ部の１文字目から７８、６０というように算出する。
【０１４０】
ステップＳ２３０６ｂにおいて、算出した各Ｗは閾値ｔｈ３より小さいかが判断される。ここで、閾値ｔｈ３の値は例えば、文字幅の平均値の３倍したものから１２０と設定される。Ｗが全てｔｈ３より小さい場合（ＹＥＳ）はステップＳ２３０６ｃに進み、別々の場所で文字間隔が１つ減少したと判断される。ステップＳ２３０６ｄ以降の処理は図２２の例のときに説明する。Ｗが全てｔｈ３より小さくない場合（ＮＯ）はステップＳ２３０６ｆに進み、文字間隔が２つ連続減少したと判断される。そして、ステップＳ２３０６ｇにおいて、初めてｔｈ３以上の文字幅の場所ｉ番目として、Ｚ１＝（ｉ＋１）／２としてＺ１を算出する。図２０では、Ｓｔｅｐ１において７文字目でＷ＝１４５がｔｈ３＝１２０以上のため、
ｉ＝７としてＺ１＝（７＋１）／２＝４と算出されることが分かる。また図２１では、Ｓｔｅｐ１において６文字目でＷ＝１２８がｔｈ３＝１２０以上のため、
ｉ＝６としてＺ１＝（６＋１）／２＝３と算出されることが分かる。
【０１４１】
ステップＳ２３０６ｂにおいて、ｉが奇数であるか否かが判断される。これによって、減少した文字間隔が元々ペアであったか否かが分かり、消失ビットが１ビットか２ビットかが分かる。Ｓ２３０６ｂにおいて、ｉが奇数である場合（ＹＥＳ）はステップＳ２３０６ｉに進み、１ビットの情報が消失したと判断され、ステップＳ２３０６の処理を終了する。ｉが偶数である場合（ＮＯ）はステップＳ２３０６ｊに進み、２ビットの情報が消失したと判断される。そして、ステップＳ２３０６ｋに進み、消失ビットＺ２をＺ１をインクリメントして求め、ステップＳ２３０６の処理を終了する。図２０では、ｉ＝７なので、奇数であるため、１ビットの情報が消失したと判断される。また、図２１では、、ｉ＝６なので、偶数であるため、２ビットの情報が消失したと判断される。そして、Ｚ２＝３＋１＝４が算出される。
【０１４２】
Ｓ２３０６の処理が終わった後は、ステップ２３０４に進み、誤り訂正符号化されたデータを生成する。図２０ではＳｔｅｐ３において、Ｚ１＝４に基づいて、１ビット目から３ビット目まではそのままのペアでデータを生成する。４ビット目は消失させる。そして、５ビット目から７ビット目までもそのままのペアでデータを生成する。また図２１ではＳｔｅｐ３において、Ｚ１＝３とＺ２＝４に基づいて、１ビット目と２ビット目はそのままのペアでデータを生成する。３ビット目と４ビット目は消失させる。そして、５ビット目から７ビット目までもそのままのペアでデータを生成する。
【０１４３】
図２０と図２１では、最後のＳｔｅｐ４において、データが復号されたことが分かる。
【０１４４】
図２２は別々の場所で２つの文字間隔が減った場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。この場合は、別々の場所で一つずつ文字間隔が減少するので、文字間隔のペアが左に２回ずれることになる。従って、まず文字間隔が減少する２箇所を消失ビットＺ１、Ｚ２とし特定する。そして、誤り訂正符号化されたデータ生成時にＺ１、Ｚ２に基づいて文字間隔のペアを左に２回ずらすことでデータ復号を可能とする。Ｚ１、Ｚ２の特定までは図４で説明する。
【０１４５】
ステップＳ２３０６ａにおいて、Ｗを算出する。そして、ステップＳ２３０６ｂにおいて、算出した各Ｗは閾値ｔｈ３より小さいかが判断される。図２２では、Ｗが全てｔｈ３より小さい場合（ＹＥＳ）はステップＳ２３０６ｃに進み、別々の場所で文字間隔が１つ減少したと判断される。
【０１４６】
ステップＳ２３０６ｄにおいて、Ｚ１を特定しステップＳ２３０６の処理を終了する。図２２では、Ｓｔｅｐ１の処理に該当し、Ｚ１＝４となる。
【０１４７】
ステップＳ２３０６ｅにおいて、Ｚ１より後のペアを元から左に１つずらし、Ｚ２を特定する。図２２では、Ｓｔｅｐ２の処理に該当し、まずＺ１＝４より後の５ビット目の「２７」と「９」のペアを「２１」と「２７」と左に１つずらし、順にＴ１を算出する。そして、Ｔ１をｔｈ１と比較することで、Ｚ２＝６となる。
【０１４８】
Ｓ２３０３の処理が終わった後は、ステップ２３０４に進み、誤り訂正符号化されたデータを生成する。図２２ではＳｔｅｐ３において、Ｚ１＝４とＺ２＝６に基づいて、１ビット目から３ビット目まではそのままのペアでデータを生成する。４ビット目は消失させる。５ビット目はペアを左に１つずらしてデータを生成する。６ビット目は消失させる。最後に７ビット目は５ビット目以降でずらしたペアをさらに左に１つずらしてデータを生成する。これによって、各箇所の文字間隔増加による文字間隔のペアをズレが無くなる。
【０１４９】
図２２では、最後のＳｔｅｐ４において、データが復号されたことが分かる。
【０１５０】
本実施形態では、２つの文字間隔の増減がある場合を文字幅を使用したり文字間隔のペアを２つずらすことなどで対応できる。
【０１５１】
なお、本実施形態では、Ｔ１を用いたが、他の信頼度を用いても良い。また、実施形態３のようにより確実に消失ビットを求める方法を導入しても良い。
【０１５２】
＜その他の実施形態＞
その他の実施形態として、実施形態１に係る夫々の処理をコンピュータにより行なわせる例がある。図１７はコンピュータの基本構成を示す図である。例えばこのコンピュータにおいて、全ての機能を実行する場合、各機能構成をプログラムにより表現し、このコンピュータに読み込ませることで、このコンピュータで実施形態１の全ての機能を実現することが出来る。
【０１５３】
同図において、１７０１はＣＰＵで、ＲＡＭ１７０２やＲＯＭ１７０３に格納されているプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、上記実施形態で説明した各処理を行なう。
【０１５４】
１７０２はＲＡＭで、外部記憶装置１７０８からロードされたプログラムやデータ、他のコンピュータシステム１７１４からＩ／Ｆ（インターフェース）１７１５を介してダウンロードしたプログラムやデータを一時的に記憶するエリアを備える。さらに、１７０２は、ＣＰＵ１７０１が各種の処理を行なうために必要とするエリアも備える。
【０１５５】
１７０３はＲＯＭで、コンピュータの機能プログラムや設定データなどを記憶する。１７０４はディスプレイ制御装置で、画像や文字等をディスプレイ１７０５に表示させるための制御処理を行なう。１７０５はディスプレイで、画像や文字などを表示する。なお、ディスプレイとしてはＣＲＴや液晶画面などが適用可能である。
【０１５６】
１７０６は操作入力デバイスで、キーボードやマウスなど、ＣＰＵ１７０１に各種の指示を入力することのできるデバイスにより構成されている。１７０７は操作入力デバイス１７０６を介して入力された各種の指示等をＣＰＵ１７０１に通知するためのＩ／Ｏである。
【０１５７】
１７０８はハードディスクなどの大容量情報記憶装置として機能する外部記憶装置で、ＯＳ（オペレーティングシステム）や上記各実施形態に係る処理をＣＰＵ１７０１に実行させるためのプログラム、入出力原稿画像などを記憶する。外部記憶装置１７０８への情報の書き込みや外部記憶装置１７０８からの情報の読み出しはＩ／Ｏ１７０９を介して行われる。
【０１５８】
１７１０は文書や画像を出力する為のプリンタで、出力データはＩ／Ｏ１７１１を介してＲＡＭ１７０２、もしくは外部記憶装置１７０８から送られる。なお、文書や画像を出力する為のプリンタとしては、例えばインクジェットプリンタ、レーザビームプリンタ、熱転写型プリンタ、ドットインパクトプリンタなどが挙げられる。
【０１５９】
１７１２は文書や画像を読み取るためのスキャナで、入力データはＩ／Ｏ１７１３を介してＲＡＭ１７０２、もしくは外部記憶装置１７０８に送られる。
【０１６０】
１７１６は、ＣＰＵ１７０１、ＲＯＭ１７０３、ＲＡＭ１７０２、Ｉ／Ｏ１７１１、Ｉ／Ｏ１７０９、ディスプレイ制御装置１７０４、Ｉ／Ｆ１７１５、Ｉ／Ｏ１７０７、Ｉ／Ｏ１７１３を繋ぐバスである。
【０１６１】
なお本実施形態では、スキャンやプリンタを除く処理をコンピュータにより行っているが、スキャナやプリンタ内部の専用のハードウェア回路を用いて、コンピュータで行なう処理を代行しても良い。
【０１６２】
なお、上記各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１６３】
本発明は例えば、システム、装置、方法、プログラム若しくは記憶媒体（記録媒体）等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、スキャナ、ｗｅｂアプリケーション等）から構成されるシステムに適用しても良いし、また、１つの機器からなる装置に適用しても良い。
【０１６４】
本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、実施形態において図に示したフローチャートに対応したコンピュータ可読のプログラムである。
【０１６５】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１６６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１６７】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【０１６８】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの（又は圧縮され自動インストール機能を含むファイル）をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１６９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【０１７０】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１７１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行うことが可能である。
【図面の簡単な説明】
【０１７２】
【図１】文字から算出される外接矩形と文字間隔の例である。
【図２】実施形態１における埋め込みデータの構成例である。
【図３】文字の外接矩形が誤って取得される場合の例である。
【図４】実施形態２における２つの文字間隔が減った場合の消失ビットを特定する手順を示すフローチャートである。
【図５】実施形態１における透かし情報埋め込み装置の構成図である。
【図６】実施形態１における透かし埋め込み手順を示すフローチャートである。
【図７】実施形態１における透かし情報抽出装置の構成図である。
【図８】実施形態１における透かし抽出手順を示すフローチャートである。
【図９】実施形態１における消失ビットを特定する手順を示すフローチャートである。
【図１０】実施形態１における消失ビットがある場合の誤り訂正符号化されたデータを生成する手順を示すフローチャートである。
【図１１】実施形態１における埋め込み時の文字間隔と間隔操作値の関係を示す図である。
【図１２】実施形態１におけるｃｈａｒｓｐ＿ｊｕｄｇｅが０を示す例である。
【図１３】実施形態１における一つの文字間隔が増えた場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図１４】実施形態１における一つの文字間隔が減った場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図１５】実施形態１の変形例１における埋め込み時と抽出時の３文字間の関係を示す図である。
【図１６】実施形態１の変形例２における一つの文字間隔が増えた場合の消失ビット特定する例である。
【図１７】本発明における機能を実現するコンピュータの基本構成を示す図である。
【図１８】実施形態２における別々の場所に２つの文字間隔が増えた場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図１９】実施形態２における一つの場所に２つの文字間隔が連続して増えた場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図２０】実施形態２における一つの場所で２つの文字間隔が連続して減り、１ビットの消失ビットが生じる場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図２１】実施形態２における一つの場所で２つの文字間隔が連続して減り、２ビットの消失ビットが生じる場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図２２】実施形態２における別々の場所で２つの文字間隔が減った場合の消失ビット特定から誤り訂正符号化されたデータを復号するまでの例である。
【図２３】実施形態２における消失ビットを特定から誤り訂正符号化されたデータを生成する手順までを示すフローチャートである。
【図２４】実施形態２における２つの文字間隔が増えた場合の消失ビットを特定する手順を示すフローチャートである。
【図１】
2010130202.tif 000006
【図２】
2010130202.tif 000007
【図３】
2010130202.tif 000008
【図４】
2010130202.tif 000009
【図５】
2010130202.tif 000010
【図６】
2010130202.tif 000011
【図７】
2010130202.tif 000012
【図８】
2010130202.tif 000013
【図９】
2010130202.tif 000014
【図１０】
2010130202.tif 000015
【図１１】
2010130202.tif 000016
【図１２】
2010130202.tif 000017
【図１３】
2010130202.tif 000018
【図１４】
2010130202.tif 000019
【図１５】
2010130202.tif 000020
【図１６】
2010130202.tif 000021
【図１７】
2010130202.tif 000022
【図１８】
2010130202.tif 000023
【図１９】
2010130202.tif 000024
【図２０】
2010130202.tif 000025
【図２１】
2010130202.tif 000026
【図２２】
2010130202.tif 000027
【図２３】
2010130202.tif 000028
【図２４】
2010130202.tif 000029