はじめに
古典籍のデジタル化が進む中、異なる写本や校訂本のテキストを比較・分析するニーズが高まっています。本稿では、IIIF(International Image Interoperability Framework)マニフェストを活用し、2つの資料の画像とテキストを並べて比較できるWebアプリケーション「Text Comparison Tool」を紹介します。
デモサイト : https://iiif-text.vercel.app/
背景と課題
デジタルアーカイブで公開されている古典籍には、IIIFマニフェストにテキストアノテーションが付与されているものがあります。しかし、2つの資料のテキストを並べて比較する手軽なツールは多くありません。
例えば、ある作品の校訂本と写本を比較する場合、以下のような作業が必要です:
- 画像を並べて目視で比較する
- テキストの差異を一文字ずつ確認する
- どの程度類似しているかを定量的に把握する
これらを1つのツールで実現することを目指しました。
3つの比較モード
本ツールは、3つのモードで資料を比較できます。
1. 画像比較
OpenSeadragonを用いた高精細画像ビューアで、2つの資料の画像を左右に並べて表示します。ズーム・パン・回転に対応し、ページ送りも可能です。
2. テキスト差分(Diff)
IIIFマニフェストに含まれるテキストアノテーションを抽出し、文字単位での差分をハイライト表示します。追加箇所は緑色、削除箇所は赤色の取り消し線で表示されます。
3. 編集距離(Levenshtein Distance)
レーベンシュタイン距離に基づき、行単位でのテキスト類似度を算出します。結果はネットワークグラフとして可視化され、類似度の高い行同士がエッジで結ばれます。閾値スライダーにより、表示するエッジの最低類似度を調整できます。
技術スタック
| カテゴリ | 技術 |
|---|---|
| フレームワーク | Next.js(App Router / Static Export) |
| 言語 | TypeScript |
| スタイリング | Tailwind CSS v4 |
| UIコンポーネント | Radix UI |
| 画像ビューア | OpenSeadragon |
| ネットワーク可視化 | vis-network |
| 状態管理 | Zustand |
| 国際化 | next-intl(日本語 / English) |
| 差分検出 | diff |
アーキテクチャ
データフロー
fetchManifest()関数がIIIF Presentation API v3のマニフェストをパースし、各キャンバスの画像URLとテキストアノテーションを抽出します。抽出されたデータはZustandストアに格納され、各コンポーネントがリアクティブに参照します。
レーベンシュタイン距離の計算
独自実装のレーベンシュタイン距離アルゴリズムにより、左右のテキストの各行を総当たりで比較します。距離は 編集回数 / max(文字列長1, 文字列長2) で正規化し、0〜1のスケールに変換しています。パフォーマンスを考慮し、ネットワークグラフには類似度上位10本のエッジのみを表示します。
URLパラメータによる共有と埋め込み
比較結果はURLパラメータとして保持されるため、URLを共有するだけで同じ比較画面を再現できます。
| パラメータ | 説明 |
|---|---|
manifest1 / manifest2 | IIIFマニフェストURL |
canvas1 / canvas2 | 特定のキャンバスURL(任意) |
label1 / label2 | 表示ラベル(任意) |
mode | 表示モード: 0=画像, 1=差分, 2=編集距離 |
embed | 1で埋め込みモード |
embed=1を指定すると、ヘッダーを省略したコンパクトな表示になり、iframeでの埋め込みに適した形で表示されます。
静的サイトとしてのデプロイ
Next.jsのoutput: "export"を使用し、完全な静的サイトとして出力しています。サーバーサイドの処理が不要なため、Vercel、Netlify、GitHub Pagesなど任意の静的ホスティングサービスにデプロイ可能です。basePathの設定により、サブディレクトリへの配置にも対応しています。
使用例:源氏物語の写本比較
本ツールのデモでは、以下の2つの資料を比較しています。
- 左 : 校異源氏物語(桐壺)
- 右 : 近世前期横本写本(国立国会図書館所蔵)
テキスト差分モードでは、校訂本と写本の間の本文異同を視覚的に確認でき、編集距離モードでは、どの行が対応しているかをネットワークグラフで俯瞰できます。
おわりに
本ツールは、IIIFマニフェストにテキストアノテーションが付与された資料であれば、任意の2資料を比較できます。デジタルアーカイブにおける古典籍研究や、OCR結果の検証など、さまざまな場面での活用を想定しています。
ソースコードはGitHubで公開しています。フィードバックや機能要望をお待ちしています。