среда, 13 июля 2016 г.

Инструменты анализа форматов для архивистов, часть 2


(Продолжение, начало см. http://rusrim.blogspot.ru/2016/07/1.html )

JHOVE

Изо всех инструментов JHOVE (JSTOR-Harvard Object Validation Environment – среда валидации объектов для электронного архива JSTOR и библиотеки Гарвардского университета) является самым требовательным и одержимым. Он охватывает небольшое число форматов, и очень придирчив, что полезно для исключения проблем у программного обеспечения в будущем. Он очень подробно исследует структуру файлов, проверяя их на предмет соответствия спецификациям, идентифицируя версии и профили  и извлекая множество метаданных. Я работал над этим инструментом в течение десяти лет, подключившись в 2003 году к проекту библиотеки Гарвардского университета, написав основную часть кода и продолжая поддерживать его и после того, как я ушёл из Гарварда. Теперь проект находится в руках фонда «Открытая сохранность» (Open Preservation Foundation, http://openpreservation.org/ ), который только что выпустил версию 1.14.

JHOVE написан на языке Java и доступен на условиях лицензии GNU LGPL license (версия 2.1 или позже). Инструмент включает в себя модули для пятнадцати форматов для графических изображений, звукозаписей, текстовых материалов, а также форматы семейства PDF. Новым в версии 1.14 (это пока не отражено в документации) появляется поддержка форматов PNG, GZIP и WARC.

Каждый из модулей детально анализирует файлы соответствующего типа в поисках нарушений спецификаций. Файл, который соответствует синтаксическим требованиям, считается «правильно сформированным» (well-formed). Если он также удовлетворяет семантическим требованиям, то рассматривается как «правильный» (valid). Например, XML-файл правильно сформирован в том случае, когда все его теги соответствуют друг другу,  правильно вложены и т.д., и правилен, когда он соответствует своей схеме, если таковая имеется.

Если формат не идентифицирован, то принимается, что это «поток байтов» (Bytestream) – просто последовательность байтов или, другими словами, файл любого формата. В конфигурации по умолчанию JHOVE пробует применить к файлу все свои модули и выдает результат по итогам работы первого из них, который определит файл как правильно сформированный и правильный. Если файл не соответствует ни одному из модулей, то он классифицируется как «поток байтов». Также возможно запускать JHOVE в режиме проверки соответствия спецификациям конкретного формата. Это полезно при работе с поврежденными файлами, поскольку будут выданы сообщения, показывающие, почему те некорректно сформированы или неправильны – что гораздо полезнее, чем объявлять их «потоками байтов».

Если файл правильный, то JHOVE сообщит версию формата, профили формата (если есть), которым он соответствует, и выдаст многочисленные метаданные файла. Вывод может быть как в виде простого текста, так и в формате XML. При использовании графического интерфейса результаты представляются в виде раскрываемой схемы; и поддерживается их сохранение в простом текстовом формате и в формате XML.

Команда для исследования TIFF-файла example.tif с выдачей результатов в формате XML может выглядеть следующим образом:
jhove -m TIFF -hul -h xml example.tif
Другие JAVA-приложения могут вызывать JHOVE через его API-интерфейс прикладного программирования.

JHOVE строг, но он анализирует только структуру файла и не анализирует потоки данных в файле. Например, в TIFF-файле, сжатом с использованием алгоритма LZW, инструмент проверит правильность и соответствие всех тегов, в том числе тегов StripOffset и StripByteCount, но не будет проверять, вляются ли сами сжатые данные о пикселях правильно сформированными данными LZW. Таким образом, хотя JHOVE способен отлавливать тонкие ошибки, но не гарантирует выявление всех дефектов.

(Продолжение следует, см. http://rusrim.blogspot.ru/2016/07/3.html )

Гэри МакГэф (Gary McGath)

Источник: блог «Mad File Format Science»
https://lwn.net/Articles/688396/

Комментариев нет:

Отправить комментарий