Главное > Общий

Программа для генерации наименования и метаданных DjVu и PDF

<< < (3/245) > >>

monday2000:
Пытаюсь пока разобраться с форматом метаданных для PDF и DjVu.

Начал с DjVu разбираться. Пока что всё непонятно. Оказалось, что термин "metadata" в DjVu означает именно "текстовые метаданные" - вроде XMP. А я-то всегда подразумевал под DjVu-метаданными те мета-объекты, которые можно вставить в DjVu при помощи Document Express Editor 6.0 - например, Hyperlink, Text Area, и т.п. Оказывается, эти мета-объекты следует именовать не "метаданные" - а "аннотации". Они именно так и именуются в DjVu-спецификации. А "метаданные" - это лишь один из видов "аннотаций". Вот что об этом говорится в DjVu-спецификации:

--- Цитировать ---7.1.3.4 Annotations and Textual Information
All types of DjVu images may contain annotation chunks. Annotation chunks are used to
describe hyperlinks, to specify more viewer settings (page background, initial zoom, etc), and to hold metadata information. Annotations are contained in “ANTa” or “ANTz” chunks.
--- Конец цитаты ---

Теперь перейдём именно к DjVu-метаданным.

Действующая спецификация формата DjVu не даёт никакого описания DjVu-метаданных. И вообще, в этой спецификации слово "metadata" встречается один раз - как раз в той цитате выше (7.1.3.4 Annotations and Textual Information).

Формат DjVu-метаданных описан официально тут:

http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/doc/djvuchanges.txt

Это документ, содержащий предложения по улучшению формата DjVu - появившиеся уже после принятия текущей спецификации. Я уже убедился на практике, что де-факто этот документ находится в полной власти Леона Боту.

В этом документе Леон предложил свой вариант формата DjVu-метаданных:

--- Цитировать ---4- METADATA

4.1- DJVULIBRE METADATA

DjVuLibre has introduced metadata annotations a few years ago.
Metadata entries for each page are represent by key/value pairs
located in a metadata directive in the annotation chunk.
Metadata entries for the document are represented similarly
using the methods described in the next section.

The metadata directive has the form

  (metadata ... (key "value") ... )

Each entry is identified by a symbol <key>
representing the nature of the metadata entry.
The string <"value"> represents
the value associated with the corresponding key.

Several sets of keys are noteworthy.

* Keys borrowed from the BibTex bibliography system.
  These key names are always expressed
  in lowercase, such as 'year', 'booktitle', 'editor',
  'author', etc. 

* Keys borrowed from the PDF DocInfo.
  These key names start with an uppercase letter:
  'Title', 'Author', 'Subject', 'Keywords', 'Creator',
  'Producer', 'Trapped', 'CreationDate', and 'ModDate'.
  The values associated with the last two keys
  should be dates expressed according to RFC 3339.

4.2- XMP METADATA

The XMP specification describes a general purpose RDF/XML format for
metadata. Just like DjVuLibre metadata, XMP metadata is embedded in
an annotation chunk at the page or document level using the following
annotation directive

   (xmp "<rdf:RDF xmlns:rdf=... [escaped XMP here] ...</rdf:RDF>")

The sole argument of the xmp directive is the serialized XMP data
without the "xpacket" wrapper. The "x:xmpmeta" element may also be
dropped. Only elements from "rdf:RDF" inwards are needed.
Since the XMP data is represented as a string, doublequotes and
backslashes must be escaped.  Other characters may be escaped as well
(see section 2 above).

The full XMP specification is available from Adobe:

   http://www.adobe.com/devnet/xmp/

To maximize interoperability with current viewers, it is recommended
that XMP manipulation programs keep the DjVuLibre metadata in sync.
This is facilitated by synchronizing the PDF DocInfo keys with XMP
properties as follows:

   DocInfo key    XMP property
   ------------   ---------------
   Title          dc:title
   Author         dc:creator
   Subject        dc:description
   Keywords       pdf:Keywords
   Producer       pdf:Producer
   Trapped        pdf:Trapped
   Creator        xmp:CreatorTool
   CreationDate   xmp:CreateDate
   ModDate        xmp:ModifyDate

4.3- DOCUMENT ANNOTATIONS AND METADATA

The above schemes provide ways to specify metadata for each page.
But it is often useful to provide metadata that applies to the whole
document. Document wide metadata are represented using one or
several metadata directives in the shared annotations chunk.

This scheme has a potential drawback. Since the shared annotations
is included by all pages, the document wide metadata also appears as
page metadata for all pages. This might not be adequate for some
uses. As a workaround, the djview4 viewer only displays
page metadata that differ from the document metadata.
A more definitive answer would be the definition of a document
annotation chunk located after the DIRM chunk and before any
component file. This space is already used by the NAVM chunk. 
This is being considered.
--- Конец цитаты ---
Процесс создания этого описания подробно освещён тут:

http://www.djvu.org/forum/phpbb/viewtopic.php?t=530

Из того топика видно, как Леон Боту разрабатывал формат DjVu-метаданных, и делал он это совместно с автором ExifTool http://owl.phy.queensu.ca/~phil/exiftool/ Phil Harvey. Кстати, именно после этого ExifTool начал поддерживать DjVu-метаданные в режиме "только чтение" (а PDF-метаданные он умеет не только читать, но и править и записывать).

Из этого документа становится ясно, что в формате DjVu предлагается использовать целых 3 вида метаданных:

1. В стиле "PDF DocInfo". Что такое "PDF DocInfo" - я не знаю.
2. В стиле "BibTex bibliography system". Насколько я понимаю, описание этого стиля дано тут: http://en.wikipedia.org/wiki/BibTeX .
3. В стиле XMP. Я расспросил Phil Harvey http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2779.0.html - какой там синтаксис. Вот что он мне ответил:

--- Цитировать ---What goes in the XMP directive is standard XMP as documented in the XMP specification http://www.adobe.com/devnet/xmp/ .
The only difference is that the XMP should not use the "xpacket" or "x:xmpmata" wrappers
indicated in the XMP spec, and any double quotes and backslashes must be escaped with
a backslash.

Any XMP tags mentioned in the XMP spec are allowed in DjVu.  You can use ExifTool to generate the XMP packet if you want by writing to a .xmp file.

I forget now how to use djvused to insert this into a DjVu image, but it shouldn't be too
hard to figure out if you read the djvused documentation.

- Phil
--- Конец цитаты ---
Phil Harvey сделал образец DjVu-файла с метаданными и выложил его на форуме PlanetDjVu. Я взял этот файл и вытащил оттуда метаданные в текстовый формат. Вот что получилось (с небольшими правками):

--- Цитировать ---select; remove-ant; remove-txt
# -------------------------
select 1
set-ant
(metadata
   (Author   "Phil Harvey")
   (Title   "DjVu Metadata Sample")
   (Subject   "ExifTool DjVu test image")
   (CreationDate   "2008-09-23T12:31:34-04:00")
   (ModDate   "2008-11-11T09:17:10-05:00")
   (Keywords   "ExifTool, Test, DjVu, XMP")
   (Producer   "djvused")
   (Trapped   "Unknown")
   (Creator   "ExifTool")
   (note   "Must escape double quotes (\") and backslashes (\\)") )
   (url   "http://owl.phy.queensu.ca/~phil/exiftool/")
(xmp "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n\n
<rdf:Description rdf:about=''\n  xmlns:album=\"http://ns.adobe.com/album/1.0/\">\n
<album:Notes>Must escape double quotes (&quot;) and backslashes (\\)</album:Notes>\n
</rdf:Description>\n\n <rdf:Description rdf:about=''\n  xmlns:dc='http://purl.org/dc/elements/1.1/'>\n
<dc:creator>\n
<rdf:Seq>\n
<rdf:li>Phil Harvey</rdf:li>\n
</rdf:Seq>\n
</dc:creator>\n
<dc:description>\n
<rdf:Alt>\n
<rdf:li xml:lang='x-default'>ExifTool DjVu test image</rdf:li>\n
</rdf:Alt>\n
</dc:description>\n
<dc:rights>\n
<rdf:Alt>\n
<rdf:li xml:lang='x-default'>Copyright 2008 Phil Harvey</rdf:li>\n
</rdf:Alt>\n
</dc:rights>\n
<dc:subject>\n
<rdf:Bag>\n
<rdf:li>ExifTool</rdf:li>\n
<rdf:li>Test</rdf:li>\n
<rdf:li>DjVu</rdf:li>\n
<rdf:li>XMP</rdf:li>\n
</rdf:Bag>\n
</dc:subject>\n
<dc:title>\n
<rdf:Alt>\n
<rdf:li xml:lang='x-default'>DjVu Metadata Sample</rdf:li>\n
</rdf:Alt>\n
</dc:title>\n
</rdf:Description>\n\n
<rdf:Description rdf:about=''\n  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>\n
<pdf:Keywords>ExifTool, Test, DjVu, XMP</pdf:Keywords>\n
<pdf:Producer>djvused</pdf:Producer>\n
<pdf:Trapped>/Unknown</pdf:Trapped>\n
</rdf:Description>\n\n
<rdf:Description rdf:about=''\n  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>\n
<xmp:CreateDate>2008-09-23T12:31:34-04:00</xmp:CreateDate>\n
<xmp:CreatorTool>ExifTool</xmp:CreatorTool>\n
<xmp:ModifyDate>2008-11-11T09:17:10-05:00</xmp:ModifyDate>\n
</rdf:Description>\n</rdf:RDF>")
.

--- Конец цитаты ---
В этом скрипте для djvused отображены 2 вида DjVu-метаданных - сначала PDF DocInfo-метаданные, а затем XMP-метаданные.

В описании DjVu-метаданных предлагается максимально синхронизировать DocInfo-метаданные и XMP-метаданные (по отделным полям). В том же документе приводится табличка соответствия:

--- Цитировать ---   DocInfo key    XMP property
   ------------   ---------------
   Title          dc:title
   Author         dc:creator
   Subject        dc:description
   Keywords       pdf:Keywords
   Producer       pdf:Producer
   Trapped        pdf:Trapped
   Creator        xmp:CreatorTool
   CreationDate   xmp:CreateDate
   ModDate        xmp:ModifyDate

--- Конец цитаты ---
Кроме ExifTool, DjVu-метаданные ещё поддерживаются в последних версиях DjVu-просмотрщика DjView (в составе DjVuLibre). Тоже "только на чтение".

И ещё DjVu-метаданные поддерживаются в DjVu Shell Extension Pack http://dev.caminova.jp/beta/djvu-wic/ - официальном продукте от компании Caminova. Этот факт ИМХО означает, что Caminova практически согласилась внести в будущем исправление в спецификацию DjVu касательно (предложенным Леоном Боту) формата DjVu-метаданных (если, конечно, спецификация DjVu ещё когда-нибудь будет правиться).

DjVu-метаданные могут быть как для всего DjVu-файла в целом, так и отдельно для каждой его страницы.

В общем, чтобы освоить работу с DjVu-метаданными, нужно освоить PDF DocInfo, BibTex bibliography system и XMP. Всё это, похоже, большая морока. Надо хотя бы понять, какой возможен список полей (какие их имена допускаются), какова максимально возможная длина каждого поля, и т.п.

monday2000:
Хотел посоветоваться на форуме http://gen.lib.rus.ec/forum/ - но пишет "Access denied.". Что за ерунда?

monday2000:
Я тут немного поискал ГОСТы, которые могут иметь отношение к теме. Выложил их у себя для удобства:

Все они относятся к категории Система стандартов по информации, библиотечному и издательскому делу (коротко "СИБИД") http://bibliography.ufacom.ru/method/gosts/sibid.htm

ГОСТ 7.1-2003. БИБЛИОГРАФИЧЕСКАЯ ЗАПИСЬ. БИБЛИОГРАФИЧЕСКОЕ ОПИСАНИЕ. Общие требования и правила составления.
http://www.djvu-soft.narod.ru/scan/gost_7_1_2003.rar  (259 КБ)

ГОСТ 7.79-2000 (ИСО 9-95). ПРАВИЛА ТРАНСЛИТЕРАЦИИ КИРИЛЛОВСКОГО ПИСЬМА ЛАТИНСКИМ АЛФАВИТОМ.
http://www.djvu-soft.narod.ru/scan/gost_7_79_2000.rar  (1,37 МБ)

ГОСТ 7-80.2000. БИБЛИОГРАФИЧЕСКАЯ ЗАПИСЬ. ЗАГОЛОВОК. ОБЩИЕ ТРЕБОВАНИЯ И ПРАВИЛА СОСТАВЛЕНИЯ.
http://www.djvu-soft.narod.ru/scan/gost_7_80_2000.rar  (103 КБ)

ГОСТ 7.82—2001. БИБЛИОГРАФИЧЕСКАЯ ЗАПИСЬ. БИБЛИОГРАФИЧЕСКОЕ ОПИСАНИЕ ЭЛЕКТРОННЫХ РЕСУРСОВ. Общие требования и правила составления.
http://www.djvu-soft.narod.ru/scan/gost_7_82_2001.rar  (305 КБ)

ГОСТ 7.83—2001. ЭЛЕКТРОННЫЕ ИЗДАНИЯ. Основные виды и выходные сведения.
http://www.djvu-soft.narod.ru/scan/gost_7_83_2001.rar  (259 КБ)

Все в формате "векторный PDF".

monday2000:
В этих ГОСТах можно почерпнуть кое-что полезное в плане идей насчёт того, как именовать файлы PDF- и DjVu-книг.

Хотя я думаю, что всё равно прийдётся разработать некий свой стандарт именования таких файлов. :-\ Это, конечно, очень неприятное занятие - совместно вырабатывать какой-либо стандарт. Но иного пути не вижу - какого-нибудь ГОСТа, который бы регламентировал именно имена файлы PDF- и DjVu-книг, я не обнаружил. :)

Приглашаю всех желающих высказаться на тему "Каким должен быть стандарт именования файлов PDF- и DjVu-книг". Давайте разработаем совместно такой стандарт. За основу, думаю, следует взять схему работы NameCreator http://www.djvu-soft.narod.ru/soft/namecreator.htm .

У меня пока что такие соображения:

1. Нужен жёсткий порядок следования первых N смысловых элементов в имени файла (типа "Автор", "Заглавие", ...). Допустим, на первом месте чтобы всегда шла фамилия автора (а так оно почему-то всегда и есть в реальной жизни), на втором - название книги, на третьем - год (издательство?), на четвёртом - количество страниц. Жёсткий порядок следования нужен для возможности машинного (полностью автоматического) разбора имени файла на отдельные смысловые элементы - типа "Название", "Автор", ... (при генерации хотя бы того же HTML-списка книг). После первых N элементов порядок оставшихся смысловых элементов пусть будет произвольным (ибо нельзя всё предусмотреть). Порядок следования и количество N нужно обсудить всем вместе.

2. Предлагаю ВСЕГДА разделять первые N смысловых элементов в имени файла каким-нибудь спецсимволом. "|" мне уже не очень нравится - т.к. слишком тесноту создаёт (визуально) в имени файла - неудобно для человеческого прочтения. Как насчёт знака одиночного подчёркивания? Кстати, подчёркивание обычно прекрасно поддерживается на разных системах именования, в разных языках, операционных системах и т.п.
Такой спецсимвол также нужен для возможности машинного (полностью автоматического) разбора имени файла.

3. Предлагаю указывать в имени файла 5-балльный квалификатор качества (см. предыдущие посты топика). И вместо нынешних конкретных признаков качества в духе NameCreator http://www.djvu-soft.narod.ru/soft/namecreator.htm "landscape", "kromsated", "dpi" и т.д. Т.е. указывать просто одну цифру, и перед нею, скажем, букву "Q" - означающую "quality". С буквой "Q", думаю, будет нагляднее (а то, если будет просто одна цифра, все станут себя спрашивать - "что это за цифра?"). Кстати, значение DPI вовсе не всегда есть синоним качества. Я видел и на 300 dpi превосходные книги - и погань на 600 dpi.

4. Никакие классификаторы области знания в имени файла предлагаю не указывать. Такие, как ISBN, УДК, ББК, и т.п. Всё это можно будет записать в метаданных файла - причём все сразу, какие только есть в книге (при желании) - там места много (в метаданных). Почему? Во-первых, слишком удлиняется имя файла. Во-вторых, нет единой стандартной системы такой классификации - старые советские книги используют только УДК, новые - ISBN. Получается несистематизируемый жёстко разнобой. К тому же, такая вещь, как ISBN, не предназначена для непосредственного человеческого восприятия - это более как справочное сведение. В общем, нечего ISBN делать именно в имени файла.

5. Если у книги больше одного автора - то указывать только первого по списку. Так, кстати, рекомендует ГОСТ 7-80.2000 (самый толковый из вышеперечисленных, между прочим).

6. Имя файла писать всегда латинскими буквами. Не-англоязычные названия книг не переводить на английский, а транслитерировать. Транслитерацию при необходимости осуществлять по ГОСТ 7.79-2000.

Вот черновой пример имени файла по такой схеме:

Avtor A. A._Nazvanie_1995_Izdatelstvo_225s_Q4.djvu

Человеко-наглядно, не правда ли? Это тоже важное требование к имени файла (человеко-наглядность).

И такое название файла легко полностью автоматически разбить на "лексемы" (автор, название, год) - благодаря разделяющим символам (одиночное подчёркивание). Такая возможность (автоматического разбиения) будет особенно хороша для тех, кто не будет знать (по разным причинам) о существовании метаданных.

Эта схема, конечно, обрисовывает всё лишь в общих чертах. Естественно, что будут ещё всякие детали.

monday2000:
Ещё неплохо бы обсудить такую проблему, как запись файлов с длинными именами на DVD (CD) болванку. Обычно ведь тот же Nero ругается на такие имена, когда начинаешь делать проект под запись.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии