我想使用 Python 检索 PDF 文件中存储的元数据。我正在尝试使用Python
xmptools
,但发现我无法提取所有元数据。例如,此paper有PDF格式。我有以下脚本尝试提取元数据
from xmptools import XMPMetadata, DC
xmp = XMPMetadata.fromFile("Leonard_2015_Comment_on_‘Dimensionless_units_in_the_SI’.pdf")[0]
print( xmp.getContainerItems(DC.publisher) )
这个效果很好。结果是
[rdflib.term.Literal('IOP Publishing')]
。但是,如果我将最后一行更改为
print( xmp.getContainerItems(DC.identifier) )
然后我得到
None
结果。
我认为这可能是由于 PDF 文件中的 XML 造成的。这两个查询涉及的数据是
<dc:publisher>
<rdf:Bag>
<rdf:li>IOP Publishing</rdf:li>
</rdf:Bag>
</dc:publisher>
<dc:identifier>doi:10.1088/0026-1394/52/4/613</dc:identifier>
在
publisher
的情况下,信息被包装在 RDF 标签中,但 identifier
的情况并非如此。
有没有办法让
xmptools
读取未使用RDF标签的简单条目?
我不知道 xmptools,但也许 pdfminer-6 可以提供帮助?
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
fp = open('example.pdf', 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
print(doc.info)