首页 > 解决方案 > 使用 apache-tika 和 python 从 PDF 中提取内联图像

问题描述

我需要将 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 输出包含指向“嵌入”图像的链接,如下所示:

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

但是,我不明白如何将图像嵌入为适当的部分,因为 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”等文件系统...

标签: pythonxmlxml-parsingapache-tika

解决方案


尝试导入tika的解包功能。

from tika import unpack

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

响应应该有一个“附件”键。这是存储图像的地方。


推荐阅读