Ecosystème et panorama des visualiseurs

Page réalisée sur la base de notes prises lors des réunions IIIF de mai 2013 à Paris, accueillies par l'Équipex Biblissima et la Bibliothèque nationale de France. Elle n'est en rien exhaustive et ne reflète qu'un état des lieux partiel à un instant T (l'environnement technologique a largement évolué par la suite au fil du développement de IIIF).

Schéma : les différents couches technologiques de l'écosystème des visualiseurs

Schéma : écosystème des visualiseurs

Télécharger le schéma (pdf)

Norme ISO JPEG2000

JPEG2000 (ISO/IEC 15444) est une norme de compression d'images créée par le Joint Photographic Experts Group en 2000. Lire l'article sur Wikipédia.

Principales caractéristiques du format :

  • plusieurs résolutions d'image et niveaux de qualité encapsulés dans un seul fichier
  • extraction de régions au sein d'une image (ROI : Region of Interest)
  • support de la compression avec ou sans perte
  • support de fichier XML encapsulé pour les métadonnées
  • scalabilité : transmission progressive (amélioration progressive de la qualité au fur et à mesure du téléchargement)

Librairies JPEG 2000

Ces librairies sont des implémentations de la norme. Leur fonction principale d'encoder/décoder des images JPEG2000.

Kakadu

  • kit de développement JPEG2000 (SDK), écrit en C++
  • logiciel propriétaire, plusieurs licences proposées (évaluation, commerciale, non-commerciale, “public service”)
  • implémente la totalité de la partie 1 de la norme (ISO/IEC 15444-1 : JPEG2000 Core coding system), et en partie les parties 2 et 3.

http://www.kakadusoftware.com

OpenJPEG

  • codec JPEG2000 écrit en langage C
  • implémente la partie 1 de la norme JPEG2000

http://code.google.com/p/openjpeg/

Serveurs d'images JPEG2000

Djatoka

Djatoka est un serveur d'images JPEG2000 développé en Java et construit autour de la librairie Kakadu. Il intègre aussi d'autres libraires telles que ImageJ (NIH), Java Advanced Imaging (Sun) et OpenURL OOM (OCLC ; implémentation Java de la norme OpenURL ANSI/NISO Z39.88-2004).

Djatoka fournit des fonctions de compression d'images et d'extraction dynamique de régions (adressables au moyen d'URI). Il supporte un large éventail de formats d'image en entrée et en sortie (BMP, GIF, JPG, PNG, PNM, TIF, JP2). Cet outil est né du besoin de diffusion d'images haute résolution et répondait à un déficit de normalisation en terme de d'adressabilité des images (incluant les régions et rotations).

Il est actuellement utilisé en production par Stanford, Yale, BnF, National Library of Norway et Oxford.

Langages/logiciels : Sun Java ; Tomcat

Optimisations pour Djatoka :
Création d'un “djatoka-like” (BN Norvège) utilisant la librairie CJPEG combinée avec une version modifiée de Kakadu et un translator IIIF-KDU, avec gestion de cache

Djatoka Translators :
IIIF / Djatoka translator : Yale (Tomcat / Linux), Kickstart de Stanford (Linux), BN Norvège (Linux)

IIPImage Server

IIPImage Server est un serveur d'images qui se présente sous la forme d'un module FastCGI (écrit en C++) conçu pour être incorporé dans un serveur web hôte tel qu'Apache, Lighttpd, MyServer ou Nginx. IIPImage fournit aussi plusieurs clients pour la visualisation des images (cf. infra “IIPImage Clients”).

Utilisé par Klokan Technologies : BN Autriche, BN Écosse, Moravie
Utilisé aussi en production par Yale et la Ghent University Library

Plateformes : binaires pour Linux (Debian), Windows, Mac OSX
Langages/logiciels : Apache/Lighttpd/MyServer/Nginx ; module FastCGI

Loris

Loris (Lightweight Open Repository Image Server) est un serveur d'images conforme à la spécification IIIF Image API. Il est développé en Python et s'appuie sur les librairies Kakadu et ImageMagick.

Développé et utilisé par Princeton University (Jon Stroop).

Plateformes : Ubuntu 12.04, RedHat 5.8
Langages/logiciels : Python 2.7 ; Apache 2.2 ; module WSGI

Sanddragon Image Service (BL)

Sanddragon Image Service est un webservice WCF (Windows Communication Foundation) qui implémente l'API IIIF Image API, déployé sur Microsoft IIS. Il utilise le composant Kakadu kdu_expand pour extraire les informations d'une image JPEG2000.

L'ensemble du paquet Sanddragon (Image service, Widget et Item Viewer) a été développé à la British Library et publié sous licence BSD-3.

Plateformes : Microsoft IIS
Langages/logiciels : .Net Framework ; Web Deploy

Sanddragon Image Service :
sur Github : https://github.com/britishlibrary/SanddragonImageService
sur le site de la British Library (avec démos) : http://sanddragon.bl.uk/#imageservice_about

Clients d'image (Zoom/Pan)

IIPImage Clients

IIP fournit 3 clients pour la visualisation d'images dans un navigateur web :

  • IIPMooViewer : écrit entièrement en Javascript et basé sur la librairie Mootools (utilisé pour le zoom de Gallica)
  • IIPZoom : visualiseur Flash, construit autour du SDK OpenZoom (plus maintenu ni supporté)
  • JIIPImage Java Client : client Java utilisable en tant qu'applet dans une page web ou comme application “standalone”.

OpenSeadragon

OpenSeadragon est un visualiseur open-source entièrement écrit en Javascript (sans dépendance à une librairie quelconque).

Site officiel sur Github
Voir la documentation et démos, en particulier iiif tile support (OpenSeadragon implémenté au-dessus d'un serveur IIIF, Loris en l'occurrence)

OpenLayers

OpenLayers est une bibliothèque Javascript publiée sous licence BSD qui offre un noyau de fonctions utiles au développement d'applications Web cartographiques fluides (affichage de fonds de cartes tuilés).

Sanddragon Widget (BL)

Sanddragon Widget est un visualiseur d'images basé sur OpenSeadragon, qui a été modifié pour fonctionner au-dessus d'un serveur IIIF tel que Sanddragon Image Service (utilisé pour récupérer les tuiles d'image JPEG2000 à travers à l'API IIIF).

Code sur Github
Sur le site de la British Library (avec démos) : http://sanddragon.bl.uk/#widget_about

ZPR (Stanford)

ZPR est le visualiseur “maison” utilisé par le Stanford Digital Repository.

Exemple : http://purl.stanford.edu/nj339gb1246

Djatoka Viewers

Le site de Djatoka sur Sourceforge donne 2 exemples de visualiseurs implémentés au-dessus d'un serveur Djatoka : http://sourceforge.net/apps/mediawiki/djatoka/index.php?title=Viewers.

  • djatoka IIPImage Viewer : simple adaptation du IIPMooViewer (cf.supra) ; utilisé pour le zoom de Gallica
  • djatoka OpenLayers Viewer : implémentation basée sur une extension OpenLayers (voir le billet OpenLayers and Djatoka et le code source sur Github)

Visualiseurs complets

Applications de visualisation d'images offrant un panel de fonctionnalités plus large que le simple “Zoom, Pan, Rotate” :

  • Navigation : feuilletage page à page, vues multiples (vue en galerie avec ou sans zoom, coverflow, vue en page seule/double page), autres fonctions de navigation (chemin de fer, slider horizontal, etc.).
  • Manipulation : comparaison d'images (BVMM), sélection/découpage de régions (Gallica), interface polyvalente avec fenêtrage (par ex. pour la visualisation d'annotations ou autres métadonnées : cf. Mirador, Inquire).

MediaINFO Viewer

Visualiseur Flash (SWF), utilisé par la National Library of Norway.

Mirador (DMS Multi-up viewer)

Application développée à Stanford, entièrement basée sur Javascript. Mirador fournit une interface utilisateur pour la navigation et la manipulation d'images et d'annotations associées. Le visualiseur d'images est construit autour d'OpenSeadragon pour l'assemblage des tuiles et les fonctions de visualisation (côté client). L'application ne fournit pas de back-office et n'implémente pas nativement de système de contrôle d'autorisation.

  • système multi-fenêtres
  • fonctions de zoom-pan-rotate
  • comparaison d'images issues de différents sources de données (entrepôts d'images)
  • implémentation de Presentation API (paradigme d'annotation, lecture des manifests JSON-LD)

IA Bookreader

Visualiseur développé par Internet Archive pour la consultation d'ouvrages numérisés. Le code de l'application a été beaucoup repris et adapté aux besoins de nombreux projets et institutions.

Page officiel
Code sur Github

Exemple d'adaptation par la Princeton University Digital Library (PUDL) :
Machiavelli, Niccolò. The arte of warre : table des matières, zoom sur page unique (recours à Djatoka et IIPMooviewer)

Sanddragon Item Viewer (BL)

Visualiseur fonctionnant en association avec les 2 autres composants du paquet Sanddragon (Image Service + Widget) : il implémente au-dessus du widget de visualisation un système de navigation au sein d'un ensemble d'images (barre de navigation, vue double page, vignettes d'aperçu, zone de métadonnées).

Frameworks

Inquire

Inquire est un framework modulaire qui offre une solution complète de publication de collections numériques pour les musées, archives et bibliothèques. La plateforme intègre différents composants qui forment un ensemble de fonctionnalités assez riche : recherche par facettes, création de collections, zoom performant sur des images haute définition, vues multiples, fonctions de partage et d'annotation, affichage des métadonnées…

Inquire est le résultat de deux années de prototypage réalisé en collaboration avec la British Library et la Bodleian (Oxford). Il est développé par la société Armadillo Systems.

Inquire (pour les aspects techniques, voir la page Technical)

Digital Bodleian (site en cours de développement) : http://digital-dev.bodleian.ox.ac.uk/inquire_1.12