探検 XMLボキャブラリの世界
第33回(最終回) 電子書籍のボキャブラリ(その7) − DjVuXML
2009年 3月号

今回は,DjVu(「デジャブ」と読みます)のXMLボキャブラリである「DjVuXML」についてお話しします。DjVuは,1996年にAT&T研究所によって開発された電子文書様式です。ところで,わが国の出版・印刷業界でDjVuが今までに話題になったことがあるでしょうか。私は寡聞にして知りません。前回,私は「DjVuの存在を知って目から鱗が落ちた」と書きましたが,その後,具体的なDjVu文書を試作してみて,その思いがいっそう強くなりました。現在,Web-to-printに見られるようにPDFワークフローが主流となっていますが,DjVuというもう一つのソリューションを知ることは,今後の電子文書の有り様を考える上で有益なことだと思います。

PDFとどこが違うのか

DjVuは,表1に示すように,PDFとほとんど同じような機能を持っていますが,大きな違いは,見える文字とテキストの対応関係にあります。PDFでは,見える文字とテキストの文字符号は常に一対一に対応し,その文字の画像(ベクトル図形)は文字符号に対応するフォントから生成されています。ところがDjVuでは,表示される文字は単なる画像(ラスター図形)の部分にすぎません。DjVu文書では,見える文字に対応する「隠しテキスト(hidden text)」があれば,それを検索したり,コピー・ペーストしたりできます。これはPDFの場合と同様の操作で行えますので,同じ内容を表したDjVu文書とPDF文書を見せられた場合,一般の利用者にはその区別はつかないでしょう。なお,PDFにもDjVuと同じ「隠しテキスト」はありますが,通常の文書では余り利用されることはありません。

では,DjVu文書の「隠しテキスト」をどのように考えるべきでしょうか。「隠しテキスト」がないDjVu文書は,単なる画像だけの文書であり,検索はできませんし,テキストの複写も当然できません。これは一般の印刷物に似ています。また,画像の文字と「隠しテキスト」は必ずしも対応させる必要はありません。こうしたDjVuの機能を活用すれば,今までに無い面白い文書ができそうです。

▼表1 DjVuとPDFの対比
機能諸元DjVuPDF
画像ラスター図形(画像)
ベクトル図形(文字,イラスト)
ラスター図形(画像)
文字ラスター図形として文字符号からベクトル図形へ変換
見える文字とテキストの対応関係文字画像へ対応するかどうかは
「隠しテキスト」による。
常に一対一に対応している。
「隠しテキスト」もできる。
フォント・データビューアーは持つ必要がない。
したがって,ビューアーは軽い。
ビューアーが持つ。
したがって,ビューアーは重い。
検索対象「隠しテキスト」の文字見える文字,「隠しテキスト」の文字
文書の暗号化可能可能
ファイル様式IFF独自
圧縮方法JB2,IW44TIFF G4,JPEG
ビューアー単独のビューア
Webブラウザのプラグイン
無償
単独のビューア
Webブラウザのプラグイン
無償
作成・編集ツール有償(フリーもある)有償(フリーもある)
プラットフォームWindows,MacOS,LinuxWindows,MacOS,Linuxなど

DjVuの応用

DjVu文書の特長として,その圧縮率がPDF文書よりも高い点が強調されています。その好例は,デジタル復刻本(digital replica)への応用に見ることができます。欧米の主な自然史博物館図書館,植物図書館,研究機関が合同で起こした生物多様性遺産図書館(BHL−Biodiversity Heritage Library)プロジェクトでは,各館が所蔵しているさまざまな文書をDjVuとPDFの二つの様式で表し公開しています。どちらも文書画像に対して「隠しテキスト」が与えられています。例えば,ある文献のPDF版では3.0MB,7.4MB,20.1MBになるファイルは,DjVu版では1.7MB,4.6MB,20.1MBというように約半分の大きさになっています。

一般の文書の大きさでは,圧縮率のことはあまり問題にならないかもしれませんが,デジタル復刻本では,通信速度や記憶容量を考えると,圧縮率はかなり重視されるでしょう。わが国では,DjVuの応用がほとんど進んでいませんが,古書や拓本などのデジタル復刻本がBHLのように実現すれば,一般の関心も高まり利用が進むと思われます。また,DjVuは,すでに印刷された版をもとにした対象にも応用でき,フォントの種類に悩まなくて済みますので,出版・印刷業の本来的な表現力が発揮できそうな気がしますが,皆さまはどう思われますか。

私は,DjVu文書のサンプルを作るべく,このたび国立国会図書館の許可を得て同館近代デジタルライブラリ所蔵の「羅生門」(東京:新潮社,大正12年刊)の画像データをDjVu文書化しました。その画像に対応する文字データは,青空文庫で頒布されている「羅生門」のデータを利用しましたが,そのテキストは「新選 名著復刻全集 近代文学館 芥川龍之介著 羅生門 阿蘭陀書房版」に基づいていますので,部分的に異同があったため書き換えました。WebブラウザによるDjVu版「羅生門」の表示を図1に示します。これはまだ試作段階のものですが,JAGATのホームページに掲載しますので,ご笑覧ください。

▼図1 WebブラウザによるによるDjVu版「羅生門」の表示

DjVu関連のツール

DjVu関連のツールのうち,DjVuビューアと作成・編集ツールはセラーテムテクノロジー社が扱っています。DjVuビューア(プラグインも含め)は無償ですが,作成・編集ツールは有償です。また,システム開発キットも用意されています。DjVu文書を扱う基本ツールはDjVuLibreから無償で入手できます。DjVu.orgでも,ビューアー,サンプル文書,文献などが無償で入手できます。ところで,セラーテムテクノロジー社は,DjVuの開発母体であり登録商標を持つLizardTech社を現在傘下に治めています。ここらあたりの合従連衡はAdobe Systems社の動きに似ています。

基本ツールを使えば,DjVu文書を作成・編集できますが,すべてUNIXベースの単機能コマンドですから,誰もが容易に扱えるものではありません。そこで,私はDjVu版「羅生門」の試作にあたって,Perlで動くDjVu文書作成ツール「MyDjVu」を開発しました。MyDjVuは,本を表す画像データと文字データの対からDjVu文書を自動的に生成します。MyDjVuは,Perl,DjVuLibre,ImageMagickを連係させて実行します。本を表す文字データには,本に関する諸条件を図2のように記述します。図2の記述の「#」から始まる行は,MyDjVuに対する指示を表しています。「#book」は本に関するパラメータ,「#page」はページに関するパラメータ,「#region」はページ内の文字区画に関するパラメータ,「#meta」はメタデータを指定します。

パラメータには,filename(ファイル名),writing-mode(縦書きまたは横書き),component(隠しテキストの単位),length(1行の文字数),rule(禁則処理),image(対応する画像ファイル),height(ページまたは区画の高さ),width(ページまたは区画の幅),x(区画の左下隅のX座標),y(区画の左下隅のY座標)などを指定します。現在,区画の寸法や位置を自動的に検出できるように機能強化していますので,こうしたパラメータの大半は省略できるようになります。

▼図2 MyDjVuの文字データによる「羅生門」の表現
# book filename:'Rashoumon' writing-mode:'tb-rl' component:'line' length:42 rule:'R1,0.5'
   (略) 
# page   height:867 width:510 image:'Rashoumon5.jpg'
# region height:654 width:340 x:41 y:103
 或日の暮方の事である。一人の下人が、羅生門の下で雨やみを待つてゐた。
 廣い門の下には、この男の外に誰もゐない。唯、所々丹塗の剥げた、大きな圓柱に、蟋蟀が
一匹とまつてゐる。羅生門が、朱雀大路にある以上は、この男の外にも、雨やみをする市女笠
                     (略)
まひには、引取り手のない死人を、この門へ持つて來て、棄てゝ行くと云ふ習慣さへ出來た。
そこで、日の目が見えなくなると、誰でも氣味を惡るがつて、この門の近所へは足ぶみをしな
# page   height:870 width:507 image:'Rashoumon6.jpg'
# region height:652 width:395 x:78 y:104
い事になつてしまつたのである。
 その代り又鴉が何處からか、たくさん集つて來た。晝間見ると、その鴉が何羽となく輪を描
いて、高い鴟尾のまはりを啼きながら、飛びまはつてゐる。殊に門の上の空が、夕燒けであか
   (略) 
# end

DjVuXML

以上のような話を踏まえ,DjVuのXMLボキャブラリである「DjVuXML」を見てみましょう。DjVuXMLによる「羅生門」の表現を図3に示します。図3は図2の文字データをまるでXML表現したように見えます。MyDjVuの開発は,DjVuXMLをまったく参考にしないで進めましたが,結果として文字データの内容が一致していることに気付きました。当然のことかもしれませんが,正直なところ驚きました。図3は,MyDjVuで生成したDjVu版「羅生門」をDjVuLibreにあるdjvutoxmlコマンドによって解析した際の出力結果です。

デジタル復刻本の制作では,まず原本をOCR(Optical Character Reader)に読ませて,画像データと共に,認識できた文字とその座標を表したXMLデータを作ります。そしてその二つのデータからDjVu文書を生成します。OCR分野で著名なABBYY社の「FineReader」という製品は,原本の文字認識と同時にDjVu文書を生成します。DjVuXMLデータを入力してDjVu文書を生成するツールはまだないようですが,システム全体がXMLデータで処理をつなぐ形になっています。

一方,私のMyDjVuの文字データは,あえてXML形式にはしませんでした。誰もがテキスト・エディターだけでDjVu文書を作れるようにするためです。今後,多くの人々が近代デジタルライブラリと青空文庫のデータからDjVu文書によるデジタル復刻本を実現していただければ幸甚です。ゆくゆくは,OpenOfficeからDjVu文書を生成することも考えています。

▼図3 DjVuXMLによる「羅生門」の表現
<?xml version="1.0" ?>
<!DOCTYPE DjVuXML PUBLIC "-//W3C//DTD DjVuXML 1.1//EN" "pubtext/DjVuXML-s.dtd">
<DjVuXML>
  <HEAD>Rashoumon.djvu</HEAD>
  <BODY>
   (略) 
    <OBJECT data="Rashoumon.djvu" 
            type="image/x.djvu" height="867" width="510" usemap="Rashoumon5.djvu" >
      <PARAM name="DPI" value="1200" />
      <PARAM name="GAMMA" value="2.200000" />
      <PARAM name="PAGE" value="Rashoumon5.djvu" />
      <HIDDENTEXT>
        <PAGECOLUMN>
          <REGION>
            <PARAGRAPH>
              <LINE coords="350,763,381,109"> 或日の暮方の事である。一人の下人が、羅生門
                                             の下で雨やみを待つてゐた。</LINE>
              <LINE coords="319,763,350,109"> 廣い門の下には、この男の外に誰もゐない。唯、
                                            所々丹塗の剥げた、大きな圓柱に、蟋蟀が</LINE>
              <LINE coords="288,763,319,109">一匹とまつてゐる。羅生門が、朱雀大路にある以
                                          上は、この男の外にも、雨やみをする市女笠</LINE>
                     (略)
              <LINE coords="71,763,102,109">まひには、引取り手のない死人を、この門へ持つ
                                          て來て、棄てゝ行くと云ふ習慣さへ出來た。</LINE>
              <LINE coords="40,763,71,109">そこで、日の目が見えなくなると、誰でも氣味を惡
                                           る がつて、この門の近所へは足ぶみをしな</LINE>
            </PARAGRAPH>
          </REGION>
        </PAGECOLUMN>
      </HIDDENTEXT>
    </OBJECT>
    <OBJECT data="Rashoumon.djvu" 
            type="image/x.djvu" height="870" width="507" usemap="Rashoumon6.djvu" >
      <PARAM name="DPI" value="1200" />
      <PARAM name="GAMMA" value="2.200000" />
      <PARAM name="PAGE" value="Rashoumon6.djvu" />
      <HIDDENTEXT>
        <PAGECOLUMN>
          <REGION>
            <PARAGRAPH>
              <LINE coords="442,765,473,113">い事になつてしまつたのである。</LINE>
              <LINE coords="412,765,442,113"> その代り又鴉が何處からか、たくさん集つて來
                                          た。晝間見ると、その鴉が何羽となく輪を描</LINE>
              <LINE coords="381,765,412,113">いて、高い鴟尾のまはりを啼きながら、飛びまは
                                          つてゐる。殊に門の上の空が、夕燒けであか</LINE>
   (略)
  </BODY>
</DjVuXML>

御礼

さて,本誌は4月より新たに「プリバリ 印」として生まれ変わることになり,このコラムは今回で終わりとなります。長い間おつきあいいただき,誠に有り難うございました。まだ取り上げていないXMLボキャブラリは数多く存在しますので,再びこの探検記の続編をお読みいただける機会があることを念じつつ,筆を置くことにします。