Перейти к основному содержимому

IIIF

IIIF (International Image Interoperability Framework) — набор открытых API для доставки и описания цифровых изображений в библиотеках, архивах и музеях. Не самостоятельный формат файла, а стандарт взаимодействия между хранилищами изображений и просмотрщиками.

Зачем нужен IIIF​

Архив отчекан сканы рукописей или книг в формате JP2 или TIFF. Как доставить их пользователю:

  • Не скачивать ГБайт-файл целиком.
  • Отдавать только нужный регион или тайл.
  • Поддерживать аннотации и OCR.
  • Давать единый API для разных коллекций.

IIIF решает все эти задачи. Файлы изображений остаются в любом формате (JP2, TIFF, PNG, WebP), а IIIF-сервер предоставляет стандартизированный HTTP-API.

Составные части IIIF​

СпецификацияНазначение
Image API 3.0Запрос тайлов, регионов, размеров, вращений через URL
Presentation API 3.0Манифесты коллекций, навигация, метаданные
Authentication APIДоступ к закрытым коллекциям
Content Search APIПоиск по OCR-тексту на канвасах
Change Discovery APIУведомления об изменениях

Image API​

URL-паттерн для запроса изображения:

{scheme}://{server}/{prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}

Пример — получить центральный фрагмент размером 1024×1024 из скана с IIIF-сервера Bodleian Library:

https://iiif.bodleian.ox.ac.uk/iiif/image/abc123/{256,256,1024,1024}/full/0/default.jpg

Разберём по частям:

КомпонентЗначениеПример
regionкоординаты прямоугольникаfull, 256,256,1024,1024
sizeразмер изображенияfull, 1024, (по ширине), ,1024 (по высоте)
rotationповорот в градусах0, 90, 180, 270
qualityрежим изображенияdefault, color, gray, bitonal
formatвыходной форматjpg, png, gif, webp

info.json — главная точка входа:

{
"@context": "http://iiif.io/api/image/3/context.json",
"id": "https://iiif.example.org/iiif/abc123",
"type": "ImageService3",
"profile": "level2",
"width": 6000,
"height": 8000,
"protocol": "http://iiif.io/api/image"
}

Presentation API​

Манифест — это JSON-документ, описывающий логическую структуру объекта (книги, периодического издания, архивного дела):

{
"@context": "https://iiif.io/api/presentation/3/context.json",
"id": "https://ruarxive.org/iiif/archive-123/manifest.json",
"type": "Manifest",
"label": { "ru": ["Архивное дело №123"] },
"metadata": [
{
"label": { "ru": ["Фонд"] },
"value": { "ru": ["Государственный архив Российской Федерации"] }
}
],
"items": [
{
"id": "https://ruarxive.org/iiif/archive-123/canvas/1",
"type": "Canvas",
"width": 4000,
"height": 5000,
"label": { "ru": ["Лист 1, recto"] },
"items": [
{
"id": "https://ruarxive.org/iiif/archive-123/page/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://ruarxive.org/iiif/archive-123/annotation/1",
"type": "Annotation",
"motivation": "painting",
"target": "https://ruarxive.org/iiif/archive-123/canvas/1",
"body": {
"id": "https://ruarxive.org/iiif/archive-123/canvas/1/image.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 4000,
"height": 5000
}
}
]
}
]
}
]
}

Ключевые сущности:

  • Manifest — книга, дело, коллекция.
  • Collection — набор манифестов (например, все выпуски газеты за год).
  • Canvas — одна страница или лист.
  • Annotation — связь между канвасом и изображением (или OCR, или комментарий).

Серверы изображений​

  • Cantaloupe — Java-сервер, активно поддерживается, поддерживает Image API 3.0.
  • iipsrv — C++-сервер, очень производительный, работает с большими TIFF/JP2.
  • digilib — Java, разрабатывается Max Planck.
  • Loris — Python, IIIF Image API 3.0.

Просмотрщики​

  • Mirador — JavaScript-просмотрщик, поддерживает несколько манифестов рядом (для дифференциального анализа рукописей).
  • Universal Viewer — отлично подходит для книг.
  • OpenSeadragon — низкоуровневый deep-zoom клиент; можно использовать как основу для собственного интерфейса.

Пример интеграции в Ruarxive​

// Подключение манифеста через Mirador
const config = {
windows: [{
manifestId: "https://ruarxive.org/iiif/archive-123/manifest.json"
}]
};

const mirador = Mirador.viewer(config);

Сценарии использования в Ruarxive​

  • Рукописные фонды ГАРФ и РГА — пользователи могут читать сканы без скачивания ТБайт-оригиналов, навигировать между листами дела, делать свои аннотации.
  • Подшивки газет и журналов — единый интерфейс для разных выпусков и годов.
  • Музейные коллекции — интеграция с Mirador для сравнительного анализа нескольких экспонатов.
  • Картографические материалы — глубокий zoom для детального изучения.

Рекомендации​

  • Используйте Image API 3.0 и Presentation API 3.0 — современные версии.
  • Для хранения исходников выбирайте JP2 (см. JP2) или TIFF.
  • Всегда публикуйте info.json для каждого изображения и проверяйте его доступность.
  • Манифесты включайте в PREMIS-описание архива как digiprovMD-событие.
  • Используйте Cantaloupe или iipsrv для продакшн-серверов с нагрузкой.
  • Добавляйте в манифесты локализованные метки (label.ru, label.en), чтобы ресурс был доступен на нескольких языках.

Ресурсы​

Связанные материалы​