使用 Unstructured 库解析 PDF 并保留表格结构,核心是调用 partition_pdf 函数并设置 infer_table_structure=True 参数。对于包含复杂排版的文档,建议配合 strategy="hi_res" 策略以确保布局分析准确。
先说结论:Unstructured 能通过布局分析识别表格,但需正确配置依赖和参数。
- 适合:RAG 数据预处理、合同/报告结构化提取场景
- 先看:确认是否安装 poppler 和 tesseract 系统级依赖
- 建议:扫描版 PDF 必须启用 OCR 策略,否则表格无法识别
命令速用版
基础安装仅需 pip 命令,但处理 PDF 必须补充系统依赖。
pip install "unstructured[pdf]"Ubuntu 系统依赖安装命令:
sudo apt-get install poppler-utils tesseract-ocr libmagic-dev为什么会这样
PDF 本质是打印排版格式而非结构化文档,传统工具只能提取文本流。
Unstructured 使用布局检测模型识别文档元素,将表格视为独立对象而非纯文本,从而保留行列关系。
分步处理
第一步:导入分区函数。
from unstructured.partition.pdf import partition_pdf第二步:调用函数并开启表格推断。
elements = partition_pdf(
filename="document.pdf",
infer_table_structure=True,
strategy="hi_res"
)第三步:遍历元素检查类型。
怎么验证是否生效
打印提取元素的 category 属性,确认是否存在 Table 类型。
for element in elements:
print(f"类型:{element.category}")若输出中包含 Table 且内容完整,说明结构保留成功。
常见坑
依赖缺失会导致运行时报错,特别是 poppler 未安装时无法渲染 PDF。
策略选择错误会影响效果,fast 策略不支持复杂表格推断,扫描件必须用 ocr_only 或 hi_res。
常见问题
strategy 参数选 auto 还是 hi_res?
简单文档用 auto,复杂表格或版面用 hi_res,hi_res 精度更高但速度较慢。
扫描版 PDF 能直接解析吗?
不能直接解析,必须安装 tesseract-ocr 并设置 strategy="ocr_only"或包含 OCR 的策略。
提取的表格是什么格式?
默认提取为结构化元素对象,可转换为 HTML 或 Markdown 格式,具体取决于后续处理逻辑。
参考来源
- 从论文 PDF 到 AI 可读数据:手把手教你用 Unstructured 库提取结构化信息
- Python unstructured 库详解:partition_pdf 函数完整参数深度解析
- 【Python】unstructured 库实战:从 PDF 到结构化数据的自动化处理流程