Jpylyzer: JP2 validator and extractor

De KB heeft sinds 2003 een operationeel e-Depot waar speciale zorg wordt besteed aan de bruikbaarheid van digitale bestanden op de lange termijn (digitale duurzaamheid). In de afgelopen jaren is vooral de hoeveelheid bestanden bij digitale bibliotheken enorm toegenomen. Die schaalgrootte brengt nieuwe problemen met zich mee.

Miljoenen digitale bestanden controleer je niet even met de hand

JP2 voorbeeld

Wat er kan gebeuren als een JP2-bestand beschadigd raakt.

Johan van der Knijff op de KB

Johan van der Knijff deelt zijn kamer op de KB met collega Clemens Neudecker en met zijn bijzondere collectie oude elpee-hoezen.

Structuur van een JP2 bestand

Structuur van een JP2 bestand.

Jpylyzer demonstratie tijdens iPRES 2012

Belangstelling voor de Jpylyzerdemonstratie tijdens iPRES 2012 in Toronto.

Johan van der Knijff, van de afdeling Onderzoek: "Een paar jaar geleden wilde de KB miljoenen oudere bestanden in het TIFF-formaat, dat veel opslagruimte vraagt, omzetten in het veel handzamere JP2 (JPEG 2000). Men deed dit om opslagruimte en dus kosten te besparen. Ik zou een deel van de workflow ontwikkelen voor de migratie, en daar hoort een controleslag bij. De geëigende tool daarvoor was JHOVE, dat controleert of de gemaakte JP2-bestanden technisch wel deugen (validatie). Maar collega's van de British Library in London hadden me gewaarschuwd dat die tool niet goed werkte. Zij hadden wat losse steekproeven gedaan tijdens hun digitaliseringsprojecten en daarbij was gebleken dat JHOVE bestanden goedkeurde die eigenlijk kapot waren. Ik nam de proef op de som en verprutste met opzet een aantal bestanden. JHOVE had er geen moeite mee. Zelfs niet toen ik een bestand van 2 mb terugbracht tot maar 4 kb. Daar moesten we iets mee, want zulke fouten kunnen op de lange termijn grote problemen veroorzaken."

"We wisten natuurlijk al dat niet alle migratiesoftware deugdelijke JP2's aflevert, maar het gaat ook om de beheersing van het migratieproces. Je kunt je voorstellen dat een miniem dipje in de stroomvoorziening, dat misschien door niemand wordt opgemerkt, honderden of duizenden bestanden kan beschadigen. De kunst is om die bestanden eruit te vissen, op een betrouwbare manier en volautomatisch, want met de hand controleren is geen optie als het om miljoenen bestanden gaat."

Een alternatief voor JP2-controle

Op een achternamiddag – zo beschrijft Johan het zelf – dook Johan in de documentatie van de JP2-standaard en ontdekte een structuur waarvan hij vermoedde dat die vrij gemakkelijk te controleren zou moeten zijn. Het had te maken met de "dozen"-structuur van JP2 – de technische details staan in de blogpost waarmee Johan de eerste rudimentaire software bekendmaakte. Heel bescheiden eindigde hij zijn blogpost met een vraag: "I'm curious to hear if anyone finds [this software] useful at all."

Binnen drie kwartier kreeg hij antwoord van Paul Wheatley (British Library) uit Engeland. "Uitstekend werk, Johan. We gaan dit zeker testen." En daar bleef het niet bij. Er ontstond een levendige online-discussie over wat die software wel en niet zou moeten kunnen, hoe e.e.a. uitgewerkt zou kunnen worden, enzovoorts. Blijkbaar was er een duidelijke behoefte. Johan: "Toen besloot ik dat het de moeite waard was om hier meer tijd in te steken en de software verder te ontwikkelen." Dat werk paste prima binnen het Europese SCAPE-project dat inmiddels was gestart en waar zowel de British Library als de KB aan deelnemen. In dat project ligt specifiek de nadruk op alle problemen die zich voordoen bij massale opslag en verwerking van digitale informatie. (SCAPE staat voor SCAlable Preservation Environments - schaalbare omgevingen voor duurzame opslag).

Van prototype naar werkende tool

Johan benadrukt dat je zo'n tool niet alleen ontwikkelt. "Het begon er al mee dat mijn KB-collega René van der Ark mijn programmeercode opschoonde. Want, eerlijk gezegd, het eerste probeersel was wel een beetje rommelig en soms langer dan nodig. Daarna konden we een prototype van wat de 'jpylyzer' (JP2-analyzer) was gaan heten op GitHub zetten - een online samenwerkingsplatform voor softwareontwikkelaars. Tijdens bijeenkomsten van het SCAPE project schoven collega's uit Engeland, Oostenrijk en Portugal aan om de code te verbeteren en uit te breiden. Zo groeide jpylyzer uit tot een werkend product." Een product dat tijdens de jaarlijkse conferentie van duurzaamheidsexperts, de iPRES in Toronto, veel belangstelling trok. Johan maakte voor die gelegenheid speciaal een jpylyzerdemo (zie kolom rechts).

Jpylyzer wordt ingezet

En bij belangstelling bleef het niet. Johan: "Voorjaar 2012 zette de KB jpylyzer in bij het migratieproject van TIFF naar JP2. Rond dezelfde tijd haalden ze bij de British Library 25 miljoen JP2s door jpylyzer heen, wat zo'n 680 kapotte bestanden aan het licht bracht. Sinds eind 2012 is jpylyzer ook als plugin opgenomen in de door het Duitse bedrijf Intranda ontwikkelde Goobi software - een veelgebruikt softwarepakket voor digitaliseringsworkflows. Dat was op verzoek van de Wellcome Library in Londen, die jpylyzer nu gebruikt bij de kwaliteitscontrole van de door externe partijen aangeleverde JP2s. Ook het Britse Nationaal Archief gebruikt jpylyzer intussen, net als de Deense Statsbiblioteket."

En nu verder?

Johan: "Zo'n tool mag voor onderhoud en verdere ontwikkeling niet afhankelijk zijn van een individu of alleen de KB. Daarom hebben we de jpylyzer vanaf het allereerste begin onder een open source licentie gepubliceerd. Iedereen mag hem gebruiken en iedereen kan bijdragen aan de verdere ontwikkeling. Wie dat wil kan de code ook - al dan niet in aangepaste vorm - hergebruiken in zijn of haar eigen projecten."

"Het concrete beheer van jpylyzer is nu ondergebracht bij de Open Planets Foundation (OPF), een internationaal samenwerkingsverband dat ervoor zorgt dat de producten die door projecten worden opgeleverd onderhouden worden. In de praktijk ben ik nog wel hoofdverantwoordelijk voor het onderhoud, maar op termijn kan het best zijn dat iemand anders die rol gaat vervullen. Via onze contacten bij de Open Planets Foundation heeft jpylyzer trouwens ook een 'mentor' gevonden in de Ubuntu/Debian gemeenschap – dat zijn groepen ontwikkelaars rond de Ubuntu en Debian operating systems. Zo'n groep is gunstig voor de continuïteit van de jpylyzer, en het maakt de software ook wat zichtbaarder buiten het beperkte kringetje van de digitale bibliotheken en archieven."

Meer informatie