Agentic Document Extraction - 智能文档解析Python库
项目概述
LandingAI开发的Agentic Document Extraction是一个智能文档解析Python库,能够从包含表格、图片和图表的复杂文档中提取结构化数据,并以层次化的JSON格式返回结果,同时保留元素的精确位置信息。
该库提供以下核心能力:
- 支持超长文档处理(100+页PDF)
- 自动重试和分页机制
- 丰富的辅助工具(边界框截图、可视化调试等)
功能特性
- 📦 一键安装:
pip install agentic-doc
即可使用 - 🗂️ 全格式支持:PDF(任意长度)、单张图片或URL
- 📚 大文件处理:自动分割并并行处理1000+页PDF
- :puzzle_piece: 结构化输出:层次化JSON和可渲染的Markdown
- 👁️ 可视化标注:可选的边界框截图和全页可视化
- :person_running: 批量处理:支持文件列表自动管理线程和速率限制
- :counterclockwise_arrows_button: 自动恢复:处理网络中断和API限流
安装指南
使用pip安装:
pip install agentic-doc
系统要求:
- Python 3.8+
- 主要依赖:httpx, pydantic, pymupdf
使用示例
基本使用
from agentic_doc import parse
# 解析单个PDF文件
result = parse("document.pdf")
# 解析图片
result = parse("image.png")
批量处理
# 解析多个文件
results = parse(["doc1.pdf", "doc2.pdf"])
# 保存可视化结果
parse("document.pdf", grounding_save_dir="output/")
提取结构化数据
from pydantic import BaseModel
class Invoice(BaseModel):
invoice_number: str
total_amount: float
# 使用自定义模型提取数据
results = parse("invoice.pdf", extraction_model=Invoice)
核心代码解析
文档块类型定义
class ChunkType(str, Enum):
"""定义文档中不同类型的块"""
table = "table" # 表格
figure = "figure" # 图片
text = "text" # 文本
marginalia = "marginalia" # 边注
边界框模型
class ChunkGroundingBox(BaseModel):
"""定义文档元素的边界框坐标"""
l: float # 左边界
t: float # 上边界
r: float # 右边界
b: float # 下边界
主解析函数
def parse(
documents: Union[bytes, str, Path, List[Union[str, Path]]],
*,
include_marginalia: bool = True,
result_save_dir: Optional[Path] = None,
grounding_save_dir: Optional[Path] = None,
extraction_model: Optional[type[BaseModel]] = None
) -> List[ParsedDocument]:
"""
通用解析函数,支持:
- 单个文档/多个文档
- 本地文件/URL
- 原始字节数据
- 自定义数据提取模型
"""
# 实现细节...
可视化工具
def save_groundings_as_images(
document: ParsedDocument,
output_dir: Path,
config: VisualizationConfig
) -> None:
"""
将文档解析结果保存为可视化图片
包含不同类型元素的彩色标注
"""
# 实现细节...
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码