@jerryjliu0:当前代理框架(Codex, Cowork)的最新RAG趋势是进行两次文档处理以解决…
摘要
文章讨论了AI代理的两阶段文档处理趋势,其中快速OSS阶段实现高效检索,基于VLM的阶段确保准确性,推广Llama Index的LiteParse和LlamaParse工具以提高成本和性能。
查看缓存全文
缓存时间: 2026/08/23 17:42
当前智能体工具框架(如Codex、Cowork)最新的RAG趋势是采用两阶段文档处理来解决数据室文档中的知识工作任务:第一阶段为快速轻量级处理,通常使用免费/开源的文档解析工具,可低成本运行在10-1000个文件上,使智能体能够进行检索(如grep、语义搜索)以定位相关上下文子集。第二阶段为“即时“VLM处理——当智能体找到相关页面后,会截取文档页面并调用自身VLM(或编写代码)解析页面内容。
仅依靠VLM视觉语言模型OCR工具处理海量客户临时文件的弊端在于速度慢且成本高。即时VLM OCR策略允许智能体低成本筛选数据,同时保持任务所需上下文的准确性。这些智能体框架默认使用现成工具实现两阶段文档处理:第一阶段采用pdf2text,第二阶段使用自身(如Opus 5模型)。下方视频展示了Cowork处理一系列PDF文档,回答关于Kimi k3论文中基准图表问题的实例。
目前这些“开箱即用“的文档处理方案存在主要问题:
- Opus 5并非最佳VLM OCR工具,且大规模使用成本过高且缺乏定位能力
- pypdf、pdf2text等开源工具作为第一阶段处理可能功能不足
- 智能体将编写大量临时代码来实现OCR工具本可直接提供的功能(如图表处理、边界框识别、置信度计算),导致成本与时间损耗增加
我们在@llama_index中提供了全套工具,支持任何智能体以更高准确度、更低成本实现两阶段文档处理:
- 第一阶段采用liteparse:基于Rust的免费/开源解析器,速度与准确度优于其他开源方案,支持50+文档类型
- 第二阶段采用LlamaParse:智能文档引擎,通过VLM+工具框架在各类文档解析与提取任务中实现精度与成本的最优化。可作为MCP技能从任何智能体框架调用,支持按页码输入参数,使智能体能选择对文档子集执行“聚焦式“解析
立即体验:
- LiteParse:https://github.com/run-llama/liteparse
- LlamaParse:https://cloud.llamaindex.ai
- 完整文档(含MCP):https://developers.llamaindex.ai/llamaparse/for-agents/mcp/
run-llama/liteparse
来源:https://github.com/run-llama/liteparse
LiteParse
CI状态(https://github.com/run-llama/liteparse/actions/workflows/ci.yml) | Crates.io版本(https://crates.io/crates/liteparse) | npm版本(https://www.npmjs.com/package/@llamaindex/liteparse) | WASM版本(https://www.npmjs.com/package/@llamaindex/liteparse-wasm) | PyPI版本(https://pypi.org/project/liteparse/) | 许可证(https://opensource.org/licenses/Apache-2.0) | 文档(https://developers.llamaindex.ai/liteparse/) English | 简体中文
寻找LiteParse V1版本?请通过此链接访问旧代码库(https://github.com/run-llama/liteparse/tree/logan/liteparse-v1)
LiteParse是专注快速轻量级解析的独立开源PDF解析工具。提供带边界框的高质量空间文本解析,无需专有LLM功能或云端依赖,所有处理均在本地机器完成。
突破本地解析限制? 对于复杂文档(密集表格、多栏布局、图表、手写文字或扫描PDF),使用LlamaParse(https://developers.llamaindex.ai/python/cloud/llamaparse/?utm_source=github&utm_medium=liteparse)可获得显著更优效果——这是专为生产文档流水线构建的云端文档解析器。LlamaParse处理复杂内容,确保您的模型获得干净、结构化的数据和Markdown格式。
免费注册LlamaParse(https://cloud.llamaindex.ai?utm_source=github&utm_medium=liteparse)
概览
- 快速文本解析:使用PDFium进行空间文本解析
- 灵活OCR系统:
- 内置引擎:Tesseract(零配置,集成于库内)
- HTTP服务器:可接入任何OCR服务器(EasyOCR、PaddleOCR、自定义方案)
- 标准API:简洁明确的OCR接口规范
- 复杂度检测:低成本检测文档是否需要OCR或更深度解析——支持路由、拒绝或在完整解析前估算成本
- 截图生成:为LLM智能体生成高质量页面截图
- 多格式输出:Markdown、JSON和纯文本
- Markdown输出:带标题、表格、列表、图像和链接的结构化Markdown——完美适配LLM与RAG流水线
- 边界框:精确的文本定位信息
- 多语言支持:可从Rust、Node.js/TypeScript、Python或浏览器(WASM)调用
- 跨平台:Linux、macOS(Intel/ARM)、Windows
flowchart LR
subgraph Input["输入格式"]
direction TB
PDF["PDF"]
DOCX["DOCX"]
XLSX["XLSX"]
PPTX["PPTX"]
IMG["图像文件"]
end
subgraph Core["Rust核心"]
direction TB
CONV["格式转换\nLibreOffice / Rust image + resvg + usvg crates"]
EXTRACT["文本提取\nPDFium C库"]
OCR["选择性OCR\nTesseract / HTTP服务 / 自定义引擎"]
MERGE["OCR结果合并\n原生文本 + OCR结果"]
PROJ["网格投影\n空间布局重构"]
CONV --> EXTRACT
EXTRACT --> OCR --> MERGE --> PROJ
EXTRACT --> MERGE
end
subgraph Output["输出格式"]
direction TB
JSON["结构化JSON\n文本 + 边界框"]
TEXT["纯文本\n保留布局"]
SCREEN["页面截图\nPNG渲染"]
end
subgraph Bindings["语言绑定"]
direction TB
NAPI["Node.js / TypeScript\nnapi-rs"]
PYO3["Python\nPyO3"]
WASM["浏览器 / WASM\nwasm-bindgen"]
CLI["命令行工具\ncargo / npm / pip"]
NAPI ~~~ PYO3 ~~~ WASM ~~~ CLI
end
PDF --> EXTRACT
DOCX & XLSX & PPTX & IMG --> CONV
PROJ --> JSON & TEXT & SCREEN
JSON & TEXT & SCREEN --> Bindings
style Input fill:#F5F5F5,color:#000000,stroke:#37D7FA,stroke-width:2px
style Core fill:#F5F5F5,color:#000000,stroke:#3E18F9,stroke-width:2px
style Output fill:#F5F5F5,color:#000000,stroke:#FF8705,stroke-width:2px
style Bindings fill:#F5F5F5,color:#000000,stroke:#FF8DF2,stroke-width:2px
style PDF fill:#96E7F9,color:#000000,stroke:#37D7FA,stroke-width:1px
style DOCX fill:#96E7F9,color:#000000,stroke:#37D7FA,stroke-width:1px
style XLSX fill:#96E7F9,color:#000000,stroke:#37D7FA,stroke-width:1px
style PPTX fill:#96E7F9,color:#000000,stroke:#37D7FA,stroke-width:1px
style IMG fill:#96E7F9,color:#000000,stroke:#37D7FA,stroke-width:1px
style CONV fill:#92AEFF,color:#000000,stroke:#4B72FE,stroke-width:1px
style EXTRACT fill:#92AEFF,color:#000000,stroke:#4B72FE,stroke-width:1px
style OCR fill:#92AEFF,color:#000000,stroke:#4B72FE,stroke-width:1px
style MERGE fill:#92AEFF,color:#000000,stroke:#4B72FE,stroke-width:1px
style PROJ fill:#4B72FE,color:#FFFFFF,stroke:#3E18F9,stroke-width:2px
style JSON fill:#FFBD74,color:#000000,stroke:#FF8705,stroke-width:1px
style TEXT fill:#FFBD74,color:#000000,stroke:#FF8705,stroke-width:1px
style SCREEN fill:#FFBD74,color:#000000,stroke:#FF8705,stroke-width:1px
style NAPI fill:#FFBFF8,color:#000000,stroke:#FF8DF2,stroke-width:1px
style PYO3 fill:#FFBFF8,color:#000000,stroke:#FF8DF2,stroke-width:1px
style WASM fill:#FFBFF8,color:#000000,stroke:#FF8DF2,stroke-width:1px
style CLI fill:#FFBFF8,color:#000000,stroke:#FF8DF2,stroke-width:1px
安装
通过首选包管理器安装。所有版本(除WASM外)均包含相同的lit命令行工具。
| 语言环境 | 安装命令 | 库文档 |
|---|---|---|
| Node.js / TypeScript | npm i -g @llamaindex/liteparse | Node.js说明文档 |
| Python | pip install liteparse | Python说明文档 |
| Rust | cargo install liteparse (CLI) / cargo add liteparse (lib) | Rust说明文档(crates.io) |
| 浏览器(WASM) | npm i @llamaindex/liteparse-wasm | WASM说明文档 |
智能体技能
您可使用skills命令行工具下载liteparse作为智能体技能:
npx skills add run-llama/llamaparse-agent-skills --skill liteparse
或直接复制SKILL.md文件至您的技能配置目录。详细要求与使用模式请参阅智能体技能指南。
命令行使用
所有安装方式(npm/pip/cargo)提供相同的CLI工具。
解析文件
# 基础解析
lit parse document.pdf
# 转换为Markdown——保留标题、表格、列表、图像与链接
lit parse document.pdf --format markdown -o output.md
# 指定输出格式
lit parse document.pdf --format json -o output.json
# 解析特定页面
lit parse document.pdf --target-pages "1-5,10,15-20"
# 跳过OCR处理
lit parse document.pdf --no-ocr
# JSON输出中包含页面级矢量图形路径数据
lit parse document.pdf --format json --extract-vector-graphics
# JSON输出中包含逐项PDF文本元数据
lit parse document.pdf --format json --extract-text-metadata
# JSON输出中包含页面批注数据
lit parse document.pdf --format json --extract-annotations
# JSON输出中包含表单字段与值(自动修复内存中的孤立表单组件)
lit parse document.pdf --format json --extract-form-fields
# 解析远程PDF文档
curl -sL https://example.com/report.pdf | lit parse -
Markdown输出
LiteParse可将文档直接渲染为Markdown,通过空间布局重构标题、表格、列表、图像和链接。此模式特别适合为LLM与RAG流水线提供文档输入。该模式基于启发式与规则实现,复杂文档可能无法完美渲染,但速度极快。
# 渲染为Markdown
lit parse document.pdf --format markdown -o output.md
# 移除图像而非生成占位符
lit parse document.pdf --format markdown --image-mode off
# 提取嵌入式图像至磁盘并在Markdown中引用
lit parse document.pdf --format markdown --image-mode embed --extract-images --image-output-dir ./images
# 提取图像字节与元数据(不改变Markdown图像处理方式)
lit parse document.pdf --format json --extract-images
# 链接文本输出为纯文本(不使用[text](url)语法)
lit parse document.pdf --format markdown --no-links
# JSON输出中包含标记PDF逻辑结构树
lit parse document.pdf --format json --extract-structure-tree
# JSON输出中包含分类布局块(带边界框)
lit parse document.pdf --format json --extract-blocks
图像处理通过--image-mode控制:
| 模式 | 行为 |
|---|---|
placeholder(默认) | 按阅读顺序生成``引用 |
off | 完全移除图像 |
embed | 生成与placeholder相同的图像引用 |
仅--extract-images选项启用嵌入式图像提取功能。需配合使用--image-output-dir指定提取图像的磁盘存储路径。
JSON输出包含每张图像的name、path、页面边界框、原始像素尺寸、旋转角度、格式及重复关系;像素数据永远不会嵌入JSON。相同图像资源会复用输出文件。
库调用方可通过extract_images: true(Rust)、extractImages: true(Node/WASM)或extract_images=True(Python)启用,默认为禁用状态。
Markdown图像模式仅控制呈现方式;即使未提取字节,占位符引用仍会被发现。
Markdown重建质量随文档复杂度变化。对于最复杂的文档(密集表格、多栏布局、扫描件), LlamaParse(https://developers.llamaindex.ai/python/cloud/llamaparse/?utm_source=github&utm_medium=liteparse) 仍是最精确的解决方案。
矢量图形
矢量路径输出为可选功能,因为路径密集的PDF可能产生大量数据。通过--extract-vector-graphics、Rust/Python的extract_vector_graphics = true或JavaScript/WASM的extractVectorGraphics: true启用。
启用后每页将包含vector_graphics(JavaScript中为vectorGraphics):
shapes:路径边界框、描边/填充绘制状态及ARGB颜色,以及路径是否包含贝塞尔曲线lines:基于描边宽度与绘制颜色合并的兼容水平/垂直线段,采用左上角72-DPI视口坐标
表示方式遵循LlamaParse PDFium路径提取规范;LiteParse将形状矩形字段命名为bbox(而非PDFium的coords),使用width/height(而非w/h)。默认情况下该字段不存在(或None/undefined)。对角线与曲线段由父形状表示,不会作为lines单独输出。
标记PDF结构树
启用--extract-structure-tree(Rust/Python对应extract_structure_tree,JavaScript/WASM对应extractStructureTree)可添加页面级structure_tree字段。该字段保留所有根节点,并递归暴露元素类型、ID、实际/替代文本、标题、类型化标量属性、标记内容ID、子元素及引用的链接批注。默认情况下字段不存在;已启用但未标记的页面将包含roots: []。
布局块
Markdown渲染器通过将页面分类为块(标题、段落、列表项、表格、代码、分隔线、图表)后进行渲染。启用--extract-blocks(Rust/Python对应extract_blocks,JavaScript/WASM对应extractBlocks)可获取分类结果数据(而非仅渲染文本),包含分类器使用的坐标信息。
每页按阅读顺序生成blocks数组——与Markdown输出构建顺序一致。每个块包含:
kind:heading、paragraph、list_item、code、table、grid_fallback、rule、figure中的一种bbox:占用区域(与text_items采用相同的左上角72-DPI视口坐标)。此为所有输入行源数据的并集,因此换行标题或多行段落会报告完整区域- 类型特有字段(不适用时省略):标题的
text与level;列表项的ordered/marker;代码的lines与lang;表格的header与rows;图表的id/format
表格单元格为对象(非纯字符串),每个单元格包含text及其独立bbox,支持将单元格映射回源页面区域。带边框表格的bbox为绘制的网格单元;无边框表格的bbox为构建该单元的文本跨度范围。仅用于填充不规则网格的空白单元格不包含bbox(因其背后无墨迹数据)。
{
"kind": "table",
"bbox": {
"x": 72.0,
"y": 310.5,
"width": 468.0,
"height": 96.0
},
"header": [
{
"text": "Territory Code",
"bbox": {
"x": 72.0,
"y": 310.5,
"width": 120.0,
"height": 24.0
}
},
{
"text": "Factor",
"bbox": {
"x": 192.0,
"y": 310.5,
"width": 96.0,
"height": 24.0
}
}
],
"rows": [
[
{
"text": "001",
"bbox": {
"x": 72.0,
"y": 334.5,
"width": 120.0,
"height": 24.0
}
},
{
"text": "1.25",
"bbox": {
"x": 192.0,
"y": 334.5,
"width": 96.0,
"height": 24.0
}
}
]
]
}
文档元数据、内容边界与XFA数据包
解析结果(Rust/Node/Python API)在可用时包含文档/Info字段中的creator和producer条目;这些为API专用数据,不会出现在CLI的JSON输出中。
启用extract_document_metadata(JavaScript/WASM对应extractDocumentMetadata)可添加doc_meta/docMeta字段,包含:
/Info创建/修改日期、PDF版本与加密权限- 签名状态、增量保存标记、尾部ID对比
- 文档目录的XMP数据包(上限64 KiB,截断时包含
xmp_truncated标记) - 源文件大小
默认禁用该选项(因需流式处理整个源文件);对于从非PDF格式转换的输入,由于描述的是中间PDF而非原始文件,该字段将不存在。
相似文章
@jerryjliu0:完全解决文档解析包括覆盖准确性、成本和延迟的帕累托曲线上的每一个点:高…
Jerry Liu 提出了一个涵盖准确性、成本和延迟权衡的文档解析框架,介绍了 LiteParse 作为一个面向 AI 智能体循环的开源低延迟解析工具,以及 LlamaParse 用于高精度模式。
@jerryjliu0:我们很高兴在LlamaParse中引入Retrieval Harness——这是2026年版的文档RAG……
LlamaIndex在LlamaParse中引入了Retrieval Harness,提供混合检索、文件列表、grep和文件读取等文件系统原语,使AI代理能够可扩展地搜索和遍历文档。
@jerryjliu0: 从2023到2026年,RAG、文档上下文与AI智能体的完整之旅 - @hexapode 进行了全面的90分钟工作…
涵盖从2023到2026年RAG、文档上下文与AI智能体演变的全面工作坊幻灯片,涉及痛点、重排序、智能体循环与文档解析挑战。
@jerryjliu0: 智能体搜索已从固定的RAG管道转向灵活的智能体框架,并接入一系列搜索工具:k…
LlamaIndex 推出了基于 LlamaParse Index 的智能体检索,结合语义搜索和 grep,构建灵活的智能体框架。6月30日的网络研讨会将演示这些工具。
@jerryjliu0:随着智能体生成越来越多的文档,它们需要一种更好的原生智能体文档格式。目前主要的两种容器是 Markdown 和 HTML……
Jerry Liu 讨论了需要一种兼顾人类和 AI 可读性的原生智能体文档格式,对比了 Markdown 和 HTML,并提到用 LlamaParse 处理现有格式。