概要

DToC: Dynamic Table of Contextsを試す機会がありましたので、備忘録です。

機械翻訳の結果は以下です。

セマンティックマークアップの威力と書籍のナビゲーション機能を融合させ、電子読書に革新をもたらします。従来の印刷書籍で長年親しまれてきた目次とキーワード索引という概観機能が、全文検索やタグベースのインデックス機能と動的に統合されることで、新たな読書体験を実現します。

最終的に、以下のような可視化を行うことができました。

対象データ

東洋文庫が所蔵するモリソンパンフレット「Marco Polo's adventures : The greatest traveller the world has seen.」をサンプルデータとして利用しました。

背景

以下のワークショップに参加し、DToCの使用方法を教えてもらいました。

以下のチュートリアルも参考になりました。

mainとなるxmlを作成する

まず、mainとなるxmlを作成します。以下のURLで確認できます。

OCR

Azure AI Document Intelligenceを用いてOCRを行いました。

校正 & タグづけ

OCR結果の校正と、人名や地名のタグ付与にあたり、「Google: Gemini 2.5 Pro」を使用しました。

このように機械的な処理のため、誤りなどが含まれている可能性が高いですが、DToCで使用するためのTEI/XMLファイルを用意することができました。

index用のxmlを作成する

以下を参考にしました。

このindex作成にも「Google: Gemini 2.5 Pro」を使用し、先に作成したmain.xmlから機械的に作成しました。結果は以下です。

JSONファイルを作成する

DToCでロードするためのJSONファイルを作成します。この部分はGUIから行うことができました。最終的な結果は以下です。

まず、以下にアクセスし、GitHubアカウントでログインします。

次に以下にアクセスします。

そして、チュートリアル資料などを参考に、必要な項目を入力します。

Documentsには、前のプロセスで作成したXMLファイルのURLを入力します。

Corpus Partsでは、XMLファイルのどの部分を使用するか、を指定します。Curpus Partではmain.xmlのdivタグを、Curpus Indexではindex.xmlのdivタグをXPathで指定しました。

Formattingについては、表示する画像をXPathでしています。main.xmlのfigureの記述例は以下です。

<div type="page" n="1">
                <figure>
                    <graphic url="https://dtoc-demo.vercel.app/P-III-b-1189/images/P-III-b-1189_001.jpg"></graphic>
                </figure>
                <head><title>(1)</title></head>
                <p xml:id="p_1"><persName xml:id="pers_1">Edward S. Holden</persName>, LLD. <lb /><persName xml:id="pers_2">Marco Polo</persName>'s Adventures <lb />The Greatest Traveller the World <lb />has seen <lb />The Century Magazine <lb /><date xml:id="date_1">October, 1900</date> <lb />PL-E-5:11 <lb />75</p>
            </div>

最後のCurationについては、以下のGUIから設定します。次のページの画面右上の「Curate Tags」から、ハイライトしたい要素をXPathで指定します。

これらの設定により、IndexやTagsが利用可能になり、当該テキストがハイライト表示されます。

まとめ

TEI/XMLファイルの可視化を行うにあたり、強力なツールだと思いました。

一方、2025年7月16日時点において、日本語を含むTEI/XMLはうまく表示されませんでした。

この問題が解決され次第、日本語のテキストにも適用してみたいと思います。


動画版(生成AIによる自動生成): この記事の内容をずんだもん×四国めたんの掛け合いで解説しています。自動生成のため、内容に誤りがある可能性があります。正確な情報は記事本文をご参照ください。