使用Apache Tika和Python从PDF中提取内联图片

3

我需要将PDF文档转换成包含内嵌图片的XML或JSON格式。

目前,我已经能够使用python-tika库生成XML。要复制,请使用带有内嵌图片的测试PDF文档,并通过python-tika模块进行提取:

"最初的回答"

from tika import parser
xml_data = parser.from_file('test.pdf', xmlContent=True)
print(xml_data)

XML输出包含如下所示的“嵌入”图像链接:

Original Answer翻译成"最初的回答"

<img src="embedded:image0.png" alt="image0.png" />

然而,我不明白图片是如何嵌入到适当的XML部分中的,因为XML看起来像这样:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="Compression Lossless" content="true" />
<meta name="Dimension PixelAspectRatio" content="1.0" />
<meta name="tiff:ImageLength" content="833" />
<meta name="height" content="833" />
<meta name="pHYs" content="pixelsPerUnitXAxis=2835, pixelsPerUnitYAxis=2835, unitSpecifier=meter" />
<meta name="tiff:ImageWidth" content="1177" />
<meta name="Chroma BlackIsZero" content="true" />
<meta name="resourceName" content="image0.png" />
<meta name="Dimension VerticalPixelSize" content="0.35273367" />
<meta name="Data BitsPerSample" content="8 8 8" />
<meta name="tiff:BitsPerSample" content="8 8 8" />
<meta name="width" content="1177" />
<meta name="PLTE PLTEEntry" content="index=0, red=255, green=255, blue=255" />
<meta name="PLTE PLTEEntry" content="index=1, red=254, green=254, blue=254" />
<meta name="PLTE PLTEEntry" content="index=2, red=253, green=253, blue=253" />
<meta name="PLTE PLTEEntry" content="index=3, red=251, green=251, blue=251" />
...

有没有办法将这个嵌入式代码转换成实际的图片?我想将这些图片保存到文件系统中,例如"image0.png"、"image1.tiff"等。

最初的回答:


你有机会弄清楚如何通过Python从PDF中提取内嵌图片吗?谢谢! - Zhenshan Jin
很遗憾,根据tika开发人员的说法,存在一个导出附件的bug。XML中的引用指向了空值。请检查当前版本,可能已经修复了这个问题。我已经放弃了我的项目。 - Markus
2个回答

0
尝试导入tika的解包函数。
from tika import unpack

image = unpack.from_file(file, serverEndpoint="http://localhost:9998")

响应应该有一个'attachment'键。这是存储图像的位置。

0

发布时,该问题被认定为Tika中的一个错误。


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