Zaproszenia na warsztaty: RStudio, Omeka, WordPress, praca z danymi

International Image Interoperability Framework: krótkie wprowadzenie

Podczas zeszłotygodniowego spotkania grupy warsztatowej LaCH UW pracującej z Omeką trochę czasu poświęciliśmy na podstawowe ćwiczenia z zapytań OAI-PMH i z API Omeki. Te dwa sposoby dostępu do metadanych i zbiorów zmieniają biblioteki czy archiwach cyfrowe w otwarte bazy danych, z których można dynamicznie wyciągać informacje, ignorując przy tym graficzny interfejs użytkownika. Pozwala to nie tylko na budowanie zewnętrznych aplikacji zasilanych danymi z biblioteki czy archiwum, ale też ułatwia prowadzenie badań, szczególnie jeśli interesują nas dane o dużej liczbie obiektów. Wyciągnięcie metadanych publikacji z jakiejś kolekcji i przetworzenie jej do pliku Excela nie sprawia już wielkiego kłopotu, a odpowiednie biblioteki do Pythona czy R jeszcze ułatwiają to zadanie.

Na zajęciach zabrakło czasu na pokazanie dość szczególnego rozwiązania API, funkcjonującego już z powodzeniem w wielu nowoczesnych bibliotekach cyfrowych. International Image Interoperability Framework to zestaw standardów dla interfejsów programistycznych dostępu do plików graficznych i ich metadanych, rozwijany od 2011 roku przez konsorcjum Biblioteki Brytyjskiej, uniwersytetów Stanforda i Cornella, bibliotek narodowych Francji i Norwegii oraz Los Alamos National Laboratory Research Library. IIIF ma ułatwić pracę ze zbiorami wizualnymi w bibliotekach, archiwach czy muzeach cyfrowych oraz umożliwiać interoperacyjność udostępnianych tam danych.

Dwa podstawowe standardy API proponowane przez IIIF to Image API oraz Presentation API. Oba generują odpowiedzi po zapytaniach przez protokół HTTP/HTTPS , co m.in. oznacza, że można je potestować wpisując odpowiednio dostosowany link do okna adresowego przeglądarki.

Presentation API

Presentation API to standard zapytań i odpowiedzi, umożliwiających otrzymanie informacji o danym zbiorze, jego strukturze, liście plików i ich miejscu w kolekcji, dostępnych transkrypcjach itp. Zwracana przez API odpowiedź w formacie JSON może być przetworzona do przystępnej dla użytkownika postaci za pomocą przeglądarki Mirador. Jak to działa?

Po wejściu na stronę demo tego programu wybieramy z menu którąś z opcji Add slot..., umiejscawiając na siatce nowe okno. Do niego wczytujemy adres do manifestu JSON. W efekcie na jednej stronie możemy przeglądać kolekcje lub zestawy skanów poszczególnych stron z kodeksów udostępnianych przez różne repozytoria (w moim przykładzie są skany z Oxfordu i Heidelbergu):

Dokumentacja Presentation API podkreśla, że generowane przez nie odpowiedzi mają być wykorzystywane przede wszystkim do przeglądania zbiorów, a nie np. maszynowej analizy metadanych czy masowego pobierania plików:

The objective of the IIIF (pronounced “Triple-Eye-Eff”) Presentation API is to provide the information necessary to allow a rich, online viewing environment for primarily image-based objects to be presented to a human user, likely in conjunction with the IIIF Image API. This is the sole purpose of the API and therefore the descriptive information is given in a way that is intended for humans to read, but not semantically available to machines. In particular, it explicitly does not aim to provide metadata that would drive discovery of the digitized objects.

Image API

Zaawansowane komputerowe przetwarzanie zbiorów wizualnych umożliwiane jest przez Image API. Tutaj w odpowiedzi na zapytanie wysłane po protokole http/https dostajemy odpowiednio skonfigurowaną wersję konkretnego pliku graficznego:

The IIIF Image API specifies a web service that returns an image in response to a standard HTTP or HTTPS request. The URI can specify the region, size, rotation, quality characteristics and format of the requested image. A URI can also be constructed to request basic technical information about the image to support client applications. This API was conceived of to facilitate systematic reuse of image resources in digital image repositories maintained by cultural heritage organizations. It could be adopted by any image repository or service, and can be used to retrieve static images in response to a properly constructed URI.

Jak to działa? Spróbujmy stworzyć kilka zapytań do testowego obiektuKatarskiej Biblioteki Cyfrowej. W normalnym widoku na stronie WWW tego repozytorium fotografia dostępna jest z odpowiednim opisem, metadanymi itp. To nie jest postać udostępniania, którą chcielibyśmy przetwarzać automatycznie, np. masowo ściągając wybrane pliki z tego repozytorium. Dlatego, znając ID poszczególnych skanów, można skorzystać z Image API i w przeglądarce wyświetlić tylko plik graficzny:

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/full/!1200,1200/0/default.jpg

Image API pozwala przy tym na manipulowanie generowanym plikiem, np: prostą zmianę jego rozmiarów (tutaj: z 1200 na 600 pikseli przy dynamicznym obliczaniu długości dłuższego boku, pozwalającym na zachowanie proporcji obrazu):

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/full/!600,600/0/default.jpg

Można też przyciąć plik tak, aby otrzymać wyłącznie jakąś jego część:

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/pct:41.6,7.5,40,70/full/0/default.jpg

Lub wygenerować kwadratową miniaturkę:

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/square/300,300/0/default.jpg

Albo zmienić sposób wyświetlania (obrócić skan np. o 90 stopni):

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/full/!1200,1200/90/default.jpg

Za pomocą Image API da się też oczywiście otrzymać pewne informacje o samym pliku. Zapytanie:

http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2/info.json

zwróci odpowiedź w postaci JSONa:

{
  "@context" : "http://iiif.io/api/image/2/context.json",
  "@id" : "http://images.qdl.qa/iiif/images/81055/vdc_100022547736.0x000001/1781.b.6_0058.jp2",
  "protocol" : "http://iiif.io/api/image",
  "width" : 4254,
  "height" : 6008,
  "sizes" : [
     { "width" : 132, "height" : 187 },
     { "width" : 265, "height" : 375 },
     { "width" : 531, "height" : 751 }
  ],
  "tiles" : [
     { "width" : 256, "height" : 256, "scaleFactors" : [ 1, 2, 4, 8, 16, 32 ] }
  ],
  "profile" : [
     "http://iiif.io/api/image/2/level1.json",
     { "formats" : [ "jpg" ],
       "qualities" : [ "native","color","gray" ],
       "supports" : ["regionByPct","regionSquare","sizeByForcedWh","sizeByWh","sizeAboveFull","rotationBy90s","mirroring"] }
  ]
}

Image API pozwala budować aplikacje umożliwiające przetwarzanie publikowanych przez biblioteki, muzea czy archiwa cyfrowe plików graficznych bez konieczności ich ściągania na dysk. Odpowiednie zapytanie generuje plik w żądanej postaci, który dopiero wtedy może być pobrany. IIIF to kolejny krok w kierunku uczynienia z bibliotek czy archiwów cyfrowych otwartych baz danych umożliwiających maszynowe przetwarzanie zbiorów.

Udostępnij na na Twitterze | Udostępnij na Facebooku

Przeczytaj także

Newsletter bezpieczny dla Twojego adresu email dostarcza tinyletter.com. Dowiedz się więcej