从一张Tiff图像中提取描述/关键词?

3
我有一些包含描述和“关键字”(在文件检查器中被OS X称为)的TIFF文件。然而,我很难从这些图像中收集元数据。
我尝试使用tifffile.pyPIL的exif命令和IPTCInfo,虽然tifffile.py可以获取描述,但我似乎仍无法使用这些库解析文件中的“关键字”。
TIFF使用不同于JPEG的“规范”存储关键字吗?解析这些关键字的最佳方法是什么?
编辑
根据abarnert的评论,我在文本编辑器中打开了一个TIFF文件,并发现其中包含“关键字”的XML数据。以下是片段:
...
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:description>
<rdf:Alt>
 <rdf:li xml:lang="x-default">OLYMPUS DIGITAL CAMERA</rdf:li>
</rdf:Alt>
</dc:description>
<dc:format>image/tiff</dc:format>
<dc:subject>
<rdf:Bag>
 <rdf:li>Foo</rdf:li>
 <rdf:li>Bar</rdf:li>
 <rdf:li>A long keyword</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
...

看起来这可以被存储为二进制表示形式;tifffile.py列出了一些基本上是整数元组的标签。然而,我不确定如何进行转换。有什么建议吗?


@cgohlke 不确定在OS X上是否可能实现;PyPI中没有一个相应的软件包,构建过程似乎也无法将其隔离(这是我的要求)。 - Phillip B Oldham
1个回答

2
关键词在TIFF和JPEG中使用不同的“规范”吗?
这要看情况而定。
TIFF容器只有一组非常有限的元数据标签,并且没有任何指定任意关键词的方法。
JPEG根本不是一种容器类型,它是一种图像压缩编解码器,可以在多种不同的容器中使用,包括TIFF。但通常当你说“JPEG文件”时,你指的是JFIF,它是由JPEG组指定的一种容器格式之一,并且像TIFF一样,JFIF也具有非常有限的元数据标签。
Exif是另一种容器格式,与TIFF的结构完全相同,但它定义了专门用于元数据的新标签,这意味着您可以轻松地将TIFF作为Exif封装,它仍然是合法的TIFF,并且通过一些巧妙的方式,您还可以将JFIF封装为Exif,虽然不完全是合法的JFIF,但几乎所有软件都接受它。
Exif是向JFIF添加元数据的唯一常见方法(不包括DCF,它基本上与Exif相同),但它是向TIFF添加元数据的多种不同方法之一。 IPTC是另一个,XMP、OME等可能还有其他方法。
因此,一些TIFF文件使用与JFIF封装在Exif中相同的规范存储“关键词”,但其他文件则不是。
如何解析这些关键词是最好的方法?
首先,您需要知道它们存储的格式。
毋庸置疑,PIL的exif命令仅支持Exif,IPTCInfo仅支持IPTC,而tifffile主要支持…各种不同的东西。
我相信tifffile.py可以将未知的标记类型存储为原始二进制数据,您可以迭代并查看缺少什么。这将至少涵盖所有使用TIFF容器结构的扩展名。如果您在那里找不到关键字,则至少排除了许多常见格式。
无论如何,一旦您知道要查找哪种格式,就可以寻找可以处理它的库。(或者,如果是基于XML的库之一,请使用tifffile将标记读取为二进制数据,然后将其解析为UTF-8 XML,这可能比查找不同的库更容易。)

我可以看到tifffile解析的一些标签中可能包含二进制数据(包含整数的长元组)- 如何将其解析为我可以传递给lxml的内容? - Phillip B Oldham
1
当然,它必须是我没有提到的格式之一,DCMI...或者是DCMI+OMF?无论哪种方式,这与XMP不同,但像XMP一样,它是一种XML文档类型,通常作为单个标记嵌入TIFF中,只需将UTF-8字符串存储为标记值即可。看起来tifffile不知道如何处理这个,所以你需要扩展它。你可以将其视为二进制数据,然后在解码XML之前解码UTF-8,或者(更好的方法)添加一个read_utf8函数并在CUSTOM_TAGS中引用它。此时,您最好与作者交谈。 - abarnert
1
PS,您可能需要查看http://dublincore.org/和http://en.wikipedia.org/wiki/Dublin_Core以获取有关DCMI数据可以表示的不同方式的更多信息,虽然我不知道在哪里可以找到有关DCMI-RDF或DCMI-OMF或其他您所拥有的内容如何嵌入TIFF的文档。 - abarnert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接