docling-project/docling-parse
Simple package to extract text with coordinates from programmatic PDFs
Docling Parse – 快速、可配置的 PDF 提取
是什么 – 一个带有 C++ 核心的 Python 包,用于解析 PDF 文件并返回结构化文本、单词和行级别的单元格、矢量形状和位图图像及其坐标。它是更广泛的 Docling PDF 到结构化数据管道的底层引擎。
为何重要 – 现代基于 LLM 的工作流通常需要从 PDF 中获取干净、带位置信息的文本和嵌入式图形(如研究论文、合同、手册等)。Docling Parse 提供了一种高性能、线程安全的方式来获取这些数据,使下游 AI 模型能够处理精确的布局信息,而非原始字符串。
主要特性
- 两阶段配置 –
DecodeConfig(页面解码方式)在打开时固定;ContentConfig(要计算或实例化的数据)可按页面更改,实现低成本初始加载和按需更丰富的重解析。 - 细粒度输出级别 – 可选择跳过、计算或实例化字符、单词、行、矢量形状和位图图像。
- 顺序和多线程解析器 –
DoclingPdfParser用于单线程使用;DoclingThreadedPdfParser用于带背压控制的并行处理。 - 通过 pybind11 的 C++ 核心 – 高速解析和渲染;以纯 Python API 暴露。
- 渲染支持 – 通过 Blend2D/FreeType 将页面渲染为图像,可通过环境变量设置可复现的字体回退。
- CLI 工具 –
docling-parse用于快速命令行提取。 - 基准测试 – 包含与其它 PDF 库的速度/质量对比脚本和报告。
典型工作流
from docling_parse.pdf_parser import (
DoclingPdfParser, DecodeConfig, ContentConfig, ContentLevel
)
parser = DoclingPdfParser(loglevel="fatal")
pdf = parser.load(
path_or_stream="mydoc.pdf",
decode_config=DecodeConfig(do_sanitization=True, keep_glyphs=False),
content_config=ContentConfig(
char_cells_content_level=ContentLevel.SKIP,
word_cells_content_level=ContentLevel.COMPUTE_AND_MATERIALIZE,
line_cells_content_level=ContentLevel.COMPUTE_AND_MATERIALIZE,
),
)
for page_no, page in pdf.iterate_pages():
for word in page.iterate_cells(unit_type=TextCellUnit.WORD):
print(page_no, word.rect, word.text)
# 可选图像渲染
img = page.render_as_image(cell_unit=TextCellUnit.WORD)
img.show()
如果之后需要更丰富的数据,调用 pdf.get_page(page_no, content_config=…),库将自动重新解码该页面。
安装
pip install docling-parse # 获取预构建的轮子(C++ 二进制)
开发时,可使用 CMake 构建 C++ 部分,或按 README 描述使用 uv 工具链。
何时使用
- 准备 LLM 输入的 PDF,其中布局很重要(表格、多栏文本、图表)。
- 为下游视觉模型提取图像或矢量图形。
- 高吞吐量批量处理大型文档集合(得益于多线程解析器)。
- 需要在多台机器上实现确定性渲染的情况 – 设置
DOCLING_PARSE_*_FALLBACK_FONT环境变量。
链接
- PyPI: https://pypi.org/project/docling-parse/
- 源码: https://github.com/docling-project/docling-parse
- 相关项目(高层转换): https://github.com/docling-project/docling
- LF AI & Data Foundation 页面: https://lfaidata.foundation/projects/
Docling Parse 是一个 MIT 许可、由 IBM 发起的开源库,专注于 PDF 解析而非模型训练或推理,但在需要结构化文档数据的 AI 管道中扮演着关键角色。
相关
- 项目
- 项目
- 项目
- 项目
- 项目