Extrayendo metadatos: libextractor

Para que Vazaar sea realmente útil debe extraer un alto porcentaje de metadatos que casi haga innecesaria la interacción del usuario. Hay una entrada en el wiki dedicada al análisis de utilidades y/o bibliotecas útiles para el proyecto. Ahora estoy probando con libextractor.

libextractor es una libreria cuyo fin es extraer metadatos de archivos de cualquier tipo. Se diseñó para utilizar otras liberias para ayudar en el proceso concreto de extraccion de metadatos, y tambien para que se pudiera ampliar facilmente su función con solo enlazar con extractores externos para tipos de archivo adicionales. libextractor es parte del proyecto GNU.

Lo interesante de esta herramienta es la cantidad de metadatos que es capaz de extraer. Este es un listado de los tags soportados por libextractor en mi sistema:

from extractor import Extractor
extractor = Extractor()
extractor.keywordTypes()
(‘unknown’, ‘filename’, ‘mimetype’, ‘title’, ‘author’, ‘artist’, ‘description’, ‘comment’, ‘date’, ‘publisher’,‘language’,
‘album’, ‘genre’, ‘location’, ‘version’, ‘organization’, ‘copyright’, ‘subject’, ‘keywords’, ‘contributor’,
‘resource-type’, ‘format’, ‘resource-identifier’, ‘source’, ‘relation’, ‘coverage’, ‘software’, ‘disclaimer’, ‘warning’,
‘translated’, ‘creation date’, ‘modification date’, ‘creator’, ‘producer’, ‘page count’, ‘page orientation’,
‘paper size’, ‘used fonts’, ‘page order’, ‘created for’, ‘magnification’, ‘release’, ‘group’, ‘size’, ‘summary’,
‘packager’, ‘vendor’, ‘license’, ‘distribution’, ‘build-host’, ‘os’, ‘dependency’, ‘MD4′, ‘MD5′, ‘SHA-0′, ‘SHA-1′,
‘RipeMD160′, ‘resolution’, ‘category’, ‘book title’, ‘priority’, ‘conflicts’, ‘replaces’, ‘provides’, ‘conductor’, ‘interpreter’,
‘owner’, ‘lyrics’, ‘media type’, ‘contact’, ‘binary thumbnail data’, ‘publication date’, ‘camera make’, ‘camera model’,
‘exposure’, ‘aperture’, ‘exposure bias’, ‘flash’, ‘flash bias’, ‘focal length’, ‘focal length (35mm equivalent)’, ‘iso speed’,
‘exposure mode’, ‘metering mode’, ‘macro mode’, ‘image quality’, ‘white balance’, ‘orientation’)

A pesar de la gran cantidad de metadatos que puede extraer no facilita manera alguna de saber con que tipo de metadato estás jugando. Según los creadores de esta librería, la mayor parte de los metadatos extraídos están basados en el vocabulario de Dublin Core. Sin embargo, otros metadatos han sido añadidos ante la necesidad de ciertos tipos de formato. Es decir, extrae un conjunto de parejas tipo clave/valor sin orden ni concierto dejando a la imaginación de los programadores la interpretación de los mismos.

En vazaar, MDX es el módulo encargado de la extracción de metadatos. Dado que libextractor está en la mayor parte de los sistemas y existen bindings para python me ha parecido razonable incluirlo. El mayor problema que estoy encontrando para implementarlo es la cantidad de tiempo que gasto buscando que significa cada cosa. Para ello estoy mapeando cada keyword de libextractor con su correspondiente elemento en Dublin Core. También tengo en cuenta los elementos cualificados:

# keyword['LIBEXTRACTOR KEYWORD-TYPE'] = (‘DC-ELEMENT’, ‘DC-TERM’)
keyword[‘album’] = (‘type’, ‘collection’)
keyword[‘aperture’] = (, )
keyword[‘artist’] = (‘creator’, )
keyword[‘author’] = (‘creator’, )
keyword[‘binary thumbnail data’] = (, )
keyword[‘book title’] = (‘title’, )
keyword[‘build-host’] = (, )

Ejemplo del uso de MDX:

kaskaras@laptop:~/share/wc/vazaar/trunk/devel/swx$ python mdx.py screenshot.png
Adding item: screenshot.png
http://purl.org/dc/elements/1.1/description -> Created with GIMP
http://purl.org/dc/terms/modified -> 2007-11-01 22:04:54
http://purl.org/dc/elements/1.1/format -> image/png

Updated 19/XII/2009:
extract-metadata blueprint @ launchpad.net

Similar Posts:

Leave a Reply