尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Python提取PDF图片完全指南:深入解析图像XObject

Python提取PDF图片完全指南:深入解析图像XObject 实际 PDF 自动化项目里用 Python 提取 PDF 中的图片是出现频率非常高的需求。用户真正想要的往往不是把整页 PDF 转成一张大图而是把文档里的图标、截图、照片按原样保存成独立文件供素材库、OCR 样本、知识库或标注工具继续使用。很多人会先想到截图但页面多、内容杂、还要按批次回填信息时手动流程不可维护也拿不到底层原图。做好这件事需要先想清楚一个基础问题PDF 里的“图片”首先不是文件系统里的文件而是 PDF 对象。对于一张常规页面页面上显示的文字、线条、图片都由内容流描述。真正有位图数据的图片往往以 Image XObject 的形式保存在页面资源里内容流只需要拿出对象名并绘制到某个区域。也就是说从视觉上看到一张图片不代表 PDF 里有一个可以直接复制的 PNG 或 JPG。所以真正的提取目标是先枚举页面引用了哪些图像 XObject再按对象编号取出其中的图像数据并写成文件。理解这一层之后后面的代码和排错才有依据。1. 先弄清 PDF 里的图片到底存在哪里1.1 图像 XObject 与 xref 的关系PDF 文档的内部结构和普通图片文件夹完全不同。PDF 使用一种对象编号体系来管理所有内容字体、页面、文字流、图片、颜色空间都会被分配一个xref编号。你可以把xref理解成 PDF 内部对象的主键 ID。页面并不直接保存图片文件本身而是在资源字典里写上“我要使用哪个 XObject”再在内容流中调用它。简化后的 PDF 图片对象大概长这样12 0 obj /Type /XObject /Subtype /Image /Width 800 /Height 500 /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /FlateDecode stream ...图片压缩数据... endstream endobj这里的
返回列表