API IIIF de récupération des images de Gallica
Présentation
L'API IIIF (International Image Interoperability Framework) est une API standardisée par le consortium IIIF permettant la manipulation homogène d'images indépendamment de leurs localisations physiques et des établissements qui les hébergent.
Console
Contexte
Il s'agit de définir, pour des grands entrepôts de documents numériques des interfaces permettant l'interopérabilité de leurs images (manuscrits, photographies, estampes, pages de livre, etc. etc.) en fournissant des métadonnées sur ces documents et des verbes de manipulation des images.
La Bibliothèque nationale de France, en tant que participant à cette communauté IIIF, propose l'accès à l'intégralité des images qui composent sa bibliothèque numérique Gallica, ce qui représente plus de 7 millions de documents et plus de 100 millions d'images.
Documentation
La documentation complète de l'API est présentée sur le site du consortium. Les restrictions à la BnF sont les suivantes :
- L'API Image (actuellement en version 3.0 de la spécification) - API implémentée en version 1.1 à la BnF
- L'API Présentation (actuellement en version 3.0 de la spécification) - API implémentée en version 2.0 à la BnF
- L'API de recherche et d'authentification (actuellement en version 1.0 de la spécification) - API non implémentées à la BnF
API Image
L'API Image est une API RESTful. Pour l'utiliser, il est nécessaire d'utiliser la syntaxe d'accès suivante :
{scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}.
scheme
est le protocole utilisé ("https" à la BnF)server
correspond au nom de l'hôte ("gallica" à la BnF)prefix
à la localisation du service ("iiif" à la BnF)identifier
est l'identifiant ark du document ou d'une vue du document (par exemple ark:/12148/btv1b7711259g) auquel on doit ajouter l'identification de vue (exemple : /f12 pour traiter la vue numéro 12 d'un document)region
est la zone sélectionnée dans l'image source (par exemple "3976,3143,870,618" permet une extraction à partir de l'image d'origine d'un rectangle commençant au pixel 3976 sur l'axe horizontal, 3143 sur l'axe vertical, et de dimension de 870 pixels de largeur et 618 pixels de hauteur)size
est la taille de l'image cible générée en pixels. Si on choisit la valeurfull
, l'image extraite est fournie à la meilleure taille disponible (voir la spécification)rotation
correspond à un angle de rotation pour l'image cible (en degrés, dans le sens des aiguilles d'une montre; par exemple "90")quality
correspond à une transformation possible de l'image (par exemplenative
oudefault
pour le même format que l'original,gray
pour niveaux de gris, oubitonal
pour une conversion en en noir et blanc). La valeurcolor
est d'un usage déconseillé.format
correspond au format de l'image cible souhaité (png, jpg, jp2, pdf, gif, tif).
Exemples d'utilisation :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/0,1900,2400,1200/full/0/native.jpg
pour extraire une image commençant à 0 sur l'axe horizontal, 1900 sur l'axe vertical, de 2400 pixels en largeur et 1200 pixels en hauteur
https://gallica.bnf.fr/iiif/ark:/12148/btv1b9055204k/f1/full/1500,750/0/native.jpg
pour redimensionner l'image originale en une nouvelle image de 1500 pixels en largeur et 750 pixels en hauteur
https://gallica.bnf.fr/iiif/ark:/12148/bpt6k8801260t/f1/50,50,1500,1500/full/135/native.jpg
pour extraire une image commençant à 50 sur l'axe horizontal, 50 sur l'axe vertical, de 1500 pixels en largeur et 1500 pixels en hauteur, à laquelle on applique ensuite une rotation de 135°
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f3/full/750,/30/bitonal.jpg
pour redimensionner l'image originale en une nouvelle image de 750 pixels en largeur, à laquelle on applique ensuite une rotation de 30°, puis que l'on convertit en noir et blanc
Métadonnées sur une image
Une requête se terminant par info.json à la suite de l'identifieur permet de récupérer les dimensions de l'image d'origine, par exemple :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/info.json
affiche, parmi les informations retournées, les dimensions 2400 en largeur et 3498 en hauteur sur cette image.
API Presentation
Métadonnées du document
L’API de présentation (ou Manifest API) est une API RESTful permettant d'obtenir, pour un document, des métadonnées riches (notice bibliographique, liens, droits, descriptions de chacune des vues de l’objet, potentiellement de régions particulières, etc.).
Exemple :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b550076223/manifest.json
On y retrouve notamment des informations bibliographiques extraites de de la notice Dublin Core du document :
label - dc:source
description - dc:title
metadata:label:Title - dc:title
metadata:label:Date - dc:date
metadata:label:Language - dc:language
metadata:label:Repository - dc:source
metadata:label:Shelfmark - dc:source
metadata:label:Format - dc:format
metadata:label:Creator - dc:creator
metadata:label:Relation - dc:relation
metadata:label:Type - dc:type
ainsi que des descriptions sur chacune des vues du document :
width
- longueur de l'image d'origineheight
- largeur de l'image d'originelabel
- pagination logique de l'image@id
- lien vers l'imagethumbnail
- lien vers la vignette de l'image
Voir aussi
Plusieurs outils OpenSource permettent d'utiliser l'API IIIF et donc celle de la BnF. Les outils principaux sont présentés ci-dessous (une liste plus large est présente sur le site iiif.io).
- OpenSeaDragon (visualiseur Javascript)
- Mirador (visualiseur Javascript)
- IIPMooviewer
Des exemples d'utilisation de l'API IIIF de Gallica sont disponibles sur ce github. Des wrappers permettent d'utiliser cette API avec Python et R.
Accès
API Image (exemple)
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/0,1900,2400,1200/full/0/native.jpg
API Presentation (exemple)
https://gallica.bnf.fr/iiif/ark:/12148/btv1b550076223/manifest.json
Fiche Technique
Version2
FormatJPEG / JPG TIFF
LicenceConditions d'utilisation des contenus de Gallica
TechnologiesIIIF
SujetsImages