はじめに
古地図や古文書には、様々な方向に傾いた文字が含まれています。本ツールでは、多角形(ポリゴン)アノテーションを使用して傾いた文字を正確にマークアップし、その傾き情報を活用してIIIF Image APIで回転補正された画像を取得できます。
傾き計算の仕組み
頂点の順序ルール
多角形アノテーションを作成する際、以下の順序で頂点を指定します:
- 左上 → 2. 左下 → 3. 右下 → 4. 右上
この反時計回りの順序を守ることで、傾き角度を一意に計算できます。
以下のデモ動画も参考にしてください。
https://youtu.be/P9srTeynXuk?si=mJO1yu3IhR0QFV-2
角度の計算方法
上辺(左上→右上)のベクトルから傾き角度を計算します:
実際の使用例
例1: 横書きでほぼ水平な文字
アノテーションデータ:
計算:
結果:
- region:
9030,15590,1231,244 - rotation:
91

例2: 斜めに傾いた文字
アノテーションデータ:
計算:
結果:
- region:
8843,18773,320,365 - rotation:
160

IIIF Image APIでの画像取得
URL構造
IIIF Image APIのURL構造:
回転なしの画像
傾き補正された画像
透明背景で取得
回転により生じる余白を透明にするには、PNG形式を使用します:
※ JPEG形式の場合、余白は白で埋められます。
回転機能の対応状況
IIIF Image APIの回転(rotation)機能は、すべての画像サーバーでサポートされているわけではありません。IIIF Image APIには以下のCompliance Levelが定義されています:
| Level | 回転機能 |
|---|---|
| Level 0 | 0度のみ対応 |
| Level 1 | 0度のみ対応 |
| Level 2 | 0, 90, 180, 270度に対応(任意角度はオプション) |
https://iiif.io/api/image/3.0/compliance/#33-rotation
https://iiif.io/api/image/2.1/compliance/#rotation

多くの画像サーバーはLevel 1またはLevel 2で運用されており、任意角度の回転に対応していない場合があります。対応状況は各画像サーバーのinfo.jsonで確認できます。
0
rotationArbitraryが含まれている場合のみ、任意角度の回転が可能です。
IIIF Image Viewerでの表示
画像サーバーが回転に対応していない場合でも、IIIF Image Viewerを使用することで、クライアント側で回転補正された画像を確認できます。このビューアはブラウザ上で画像を回転させるため、サーバー側の回転機能に依存しません。
URLパラメータ
| パラメータ | 説明 | 例 |
|---|---|---|
| iiif | IIIF Image APIのinfo.json URL | https://example.org/iiif/image/info.json |
| xywh | 切り出し領域(x,y,width,height) | 8843,18773,320,365 |
| rotation | 回転角度(度) | 160 |
使用例
アノテーション作成のベストプラクティス
1. 頂点順序を守る
必ず「左上→左下→右下→右上」の順序で頂点を指定してください。この順序が崩れると、傾き計算が正しく行われません。
2. 文字の向きを意識する
文字の読み方向(上辺)が「左上→右上」の線になるようにアノテーションを作成します。
3. 適度な余白を含める
文字がちょうど収まる領域ではなく、少し余白を含めた方が視認性が向上します。
技術的な背景
なぜFragmentSelectorとSvgSelectorの両方が必要か
- FragmentSelector : IIIF Image APIで画像を切り出すための境界ボックス(xywh)
- SvgSelector : 傾き計算のための正確な頂点座標
FragmentSelectorだけでは傾き情報が失われ、SvgSelectorだけでは境界ボックスの計算が必要になります。両方を保持することで、効率的な処理が可能になります。
IIIF Image APIの回転について
IIIF Image APIの回転パラメータは:
- 時計回りが正の値
- 0〜360の範囲
- 小数点も使用可能
回転後の画像は、元の矩形より大きくなることがあります。これは、回転した矩形を包含する最小の軸平行矩形が返されるためです。