LiteParse 调研:LlamaIndex 用 Rust 重写的本地 PDF 解析器,Agent 装上这个 Skill 直接读文档

18次阅读
LiteParse 调研:LlamaIndex 用 Rust 重写的本地 PDF 解析器,Agent 装上这个 Skill 直接读文档

v2 用 Rust 重写后, 网页端 80 页 PDF 0.5 秒解析完。LlamaIndex 把它打包成 4 语言绑定(Node.js / Python / Rust / WASM)+ 一键 Agent Skill, 接 Claude Code / Codex, 扫描件 PDF 不再是 RAG 的卡点。

写在前面

RAG 路上有个老敌人:扫描件 PDF——客户发来的财报、合同、报告, 内嵌是图片, 文本层是空的, 常规 pdfplumber / PyPDF2 提不出字, 要 OCR, 要么调云 API(费用 + 隐私 + 延迟), 要么起 Tesseract 自己跑(运维)。

LlamaIndex 团队的 run-llama/liteparse 是这条路径上的 ”本地优先“ 答案:

  • v2 完全用 Rust 重写——网页 WASM 跑 80 页 PDF 0.5 秒
  • 本地优先——默认无云依赖、无 LLM、无 API Key
  • OCR 可插拔——内置 Tesseract 零配置, 或接 HTTP OCR 服务器(EasyOCR/PaddleOCR/ 自定义)
  • 空间文本 + bounding box——保留布局,Markdown 输出直接喂 LLM/RAG
  • 4 语言绑定——Node.js / Python / Rust / WASM,Agent Skill 一行装

一、它解决什么问题

痛点 LiteParse 的解法
扫描件 PDF 提取不出文字 内置 Tesseract OCR(零配置), 或接 EasyOCR/PaddleOCR HTTP 服务器
想本地解析, 不想调云 API 完全本地运行, 无云依赖, 无 API Key, 无隐私顾虑
PDF 转 Markdown 喂 RAG 结构化 Markdown 输出——标题 / 表格 / 列表 / 图片 / 链接全保留
提取结果要带坐标(表格还原) bounding box 定位信息——{text, bbox, page, ...}
想在浏览器里解析(无后端) WASM 绑定——80 页 PDF 0.5 秒
想给 Agent 一行装 npx skills add run-llama/llamaparse-agent-skills --skill liteparse
一份 PDF 要多格式输出 JSON / Text / Markdown / PNG screenshot 四种
不知道要不要走 OCR 复杂度检测——先 cheap 判断再决定是否 full parse

二、项目基本信息

字段
GitHub run-llama/liteparse
文档 developers.llamaindex.ai/liteparse
在线试 run-llama.github.io/liteparse
一句话定位 A fast, helpful, and open-source document parser——本地优先 PDF/Office 解析 + 可选 OCR
作者团队 LlamaIndex(run-llama)
Stars 11,495
Forks 778
Open Issues 18(健康度极高)
License Apache-2.0
主语言 Rust(v2 重写后)
首次 commit 2026-02-09
最近 commit 2026-07-11(5 个月,1 周前还在迭代)
仓库大小 14.4 MB
Topics document-ocr, document-processing, ocr, ocr-recognition, pdf, pdf-parser, text-extraction
npm 包 @llamaindex/liteparse (v2.5.1, 2026-07-10)
WASM 包 @llamaindex/liteparse-wasm
Python 包 liteparse
Rust crate liteparse
Agent Skill run-llama/llamaparse-agent-skills (skill: liteparse)

版本节奏 :v2.4.0 (6/30) → v2.4.1 (7/6) → v2.5.0 (7/7) → v2.5.1 (7/10),11 天发 4 版, 每周迭代,Rust 生态 + npm 双发布。

三、架构:Rust Core + 4 语言绑定

Input (PDF/DOCX/XLSX/PPTX/IMG)
    ↓
Rust Core (PDFium + Tesseract + LibreOffice + ImageMagick)
    ├─ PDF → EXTRACT(PDFium 文本)
    ├─ DOCX/XLSX/PPTX/IMG → CONV(LibreOffice / ImageMagick 转 PDF)
    └─ EXTRACT → OCR(Tesseract/HTTP/ 自定义) → MERGE → GRID PROJ
    ↓
Output: JSON / TEXT / SCREEN (PNG) / Markdown
    ↓
Bindings: Node.js / Python / Rust / WASM / CLI
模块 实现
EXTRACT PDFium C library——Google Chrome 用的那个 PDF 引擎
OCR Tesseract(内置, 零配置) / HTTP OCR 服务器(EasyOCR/PaddleOCR/ 自定义)
CONV LibreOffice(Office 文件) / ImageMagick(图片)
MERGE Native 文本 + OCR 结果融合
PROJ Grid Projection——空间布局重建(行 / 列 / 表格)
SCREEN PNG 页面截图(给 LLM agent 看)

亮点 :EXTRACT 和 OCR 是分开的两条路径——如果是数字 PDF(有文本层), 直接走 EXTRACT 不调 OCR; 如果是扫描件, 再走 EXTRACT → OCR → MERGE。这条 ” 复杂度检测 → 选择性 OCR“ 路径让 90% 的 ” 数字 PDF” 解析 比全跑 OCR 快 10-100×

四、四种语言绑定: 同一个 Rust Core, 四种入口

4.1 Node.js / TypeScript —— Agent 友好

npm i -g @llamaindex/liteparse

提供 lit CLI:

# 一行命令, 本地 PDF → text
lit parse ./contract.pdf --format text --no-ocr -o /tmp/contract.txt

# Markdown 输出, 直接喂 RAG
lit parse ./report.pdf --format markdown -o /tmp/report.md

# 启 HTTP OCR 服务器(EasyOCR 等)
lit parse ./scan.pdf --ocr-url http://localhost:8080/ocr

配合 effective-liteparse skill 使用(本机已装):

一条铁律:“parse ONCE to a file, then search the file”——lit parse 每次都重新跑全文, 反复 search 是 #1 浪费场景。正确用法是 一次解析写文件, 所有搜索都对文件, 不要每次 search 都 re-parse。

4.2 Python

pip install liteparse
from liteparse import parse

result = parse("./report.pdf")
for page in result.pages:
    for block in page.blocks:
        print(f"[{block.bbox}] {block.text}")

4.3 Rust —— 极快, 适合 CLI / 服务器侧

cargo install liteparse        # CLI
cargo add liteparse            # 作为 lib

适合:Lambda / Cloudflare Worker / 高并发 PDF 处理 pipeline

4.4 Browser (WASM) —— 80 页 PDF 0.5 秒在浏览器里

npm i @llamaindex/liteparse-wasm
import {parse} from '@llamaindex/liteparse-wasm';
const result = await parse(pdfFile);  // 浏览器内, 无后端

场景 :Notion / Figma / Web 文档编辑器 想让用户上传 PDF 自动解析, 不需要后端 ——所有解析在浏览器跑, 隐私 + 延迟 + 成本三杀

五、5 大核心能力(对比 PyPDF2/pdfplumber/Tika)

5.1 选择性 OCR(Complexity Detection)

# 自动判断要不要走 OCR
lit parse ./doc.pdf --auto-ocr
文档类型 LiteParse 行为 其他工具行为
数字 PDF(有文本层) 只走 EXTRACT,10-100× 快 PyPDF2 也快, 但 Tesseract 全跑要 1-10 秒 / 页
扫描件 PDF(无文本层) 自动检测 → 走 OCR Tesseract 全跑
混合 PDF(部分扫描) Page-level 检测, 按需 OCR 工具不区分, 要么全跑要么全不跑

这是 LiteParse 的独门能力 —— 复杂度检测 + 选择性 OCR, 数字 PDF 跳过 OCR 直接走 PDFium,大批量 RAG 文档管道必备

5.2 多格式输出:JSON / Text / Markdown / PNG

格式 用途
JSON 完整结构 (text + bbox + page + block type), 给程序
Text 纯文本, 保留布局,给 grep/cat
Markdown 标题 / 表格 / 列表 / 图片 / 链接,直接喂 RAG
PNG screenshot 页面渲染图,给多模态 LLM(GPT-4V/Claude Vision)

Markdown 输出示例:

# Q4 2025 Report

## Revenue

| Quarter | Revenue | Growth |
|---|---|---|
| Q3 2025 | $4.2M | 12% |
| Q4 2025 | $5.1M | 21% |

> Note: Numbers are unaudited.

![chart-1](attachment://chart-1.png)

表格自动识别 ——不是简单文本提取, 是 结构化 Markdown,RAG 的 chunking + embedding 质量大幅提升。

5.3 Bounding Box 空间信息

每个文本块带 bbox:

{
  "page": 1,
  "block": 0,
  "type": "heading",
  "level": 1,
  "text": "Q4 2025 Report",
  "bbox": {"x": 100, "y": 200, "width": 800, "height": 40},
  "confidence": 0.99
}

用途:
– 表格结构重建(同 x 对齐 = 同列)
– 阅读顺序推断(y 排序)
– 跨页表格合并
– 给 VLM(视觉语言模型)做 ground truth

5.4 页面截图(给多模态 LLM)

lit parse ./doc.pdf --format png --output-dir /tmp/pages/

每页一张 PNG,Claude Vision / GPT-4V 直接看图——比纯文本更适合图表、流程图、复杂版式。

5.5 多语言绑定(Rust + N-API + PyO3 + WASM)

绑定 技术 场景
Node.js napi-rs CLI / Server / Agent
Python PyO3 Jupyter / Data Science / LlamaIndex pipeline
Rust 原生 cargo 服务器侧、嵌入式
WASM wasm-bindgen 浏览器内解析, 零后端

所有绑定共享同一个 Rust Core——bug 修一处, 所有语言生效。

六、跟 5 个主流方案的对比

维度 LiteParse PyPDF2 / pdfplumber Apache Tika LlamaParse(云) Unstructured.io
形态 Rust + 4 绑定 Python lib Java server 云 API Python lib
本地 ✅ 完全本地 ✅ 完全本地 ✅ 完全本地 ❌ 云服务 ✅ 完全本地
OCR ✅ Tesseract/HTTP ❌ 需自己接 ✅ Tesseract 内置 ✅ 内置 LLM OCR ✅ 内置
速度 ⚡ 极快(Rust+WASM) 中(Python) 慢(Java 启动) 网络延迟
空间信息(bbox) ✅(pdfplumber 部分) ⚠️ 部分
Markdown 输出 ✅ 结构化 ⚠️ 需自己拼 ⚠️ 需配置 ✅ 顶级 ✅ 顶级
多格式输出 JSON/Text/MD/PNG Text/Tables XML/JSON/Text Markdown JSON/CSV/MD
Agent Skill npx skills add
WASM 浏览器内 ✅ 0.5s/80 页
License Apache-2.0 BSD Apache-2.0 商业 + 免费层 Apache-2.0
Stars 11K 6K+ (PyPDF2) 3K (Tika) 12K
维护 LlamaIndex 团队(超活跃) 个人维护 Apache 基金会 LlamaIndex 商业 创业公司

决策树

场景
本地 Python RAG 管道 / 数字 PDF pdfplumber(轻量, 够用)
扫描件 PDF / OCR 必须 LiteParse ⭐(选择性 OCR)
浏览器内解析(无后端) LiteParse WASM
复杂表格 / 多列 / 图表 / 手写体 LlamaParse 云服务(LiteParse 在 README 也明确指向它)
企业级 ETL pipeline / 多格式 Apache Tika / Unstructured.io
Agent 装 Skill 一行起飞 LiteParse(npx skills add)

七、3 步跑通实战

7.1 安装(Node.js + Agent Skill)

# 1. 装 npm 包 + 验证
npm i -g @llamaindex/liteparse
lit --version
# → LiteParse v2.5.1

# 2. 装 Agent Skill(Claude Code / Codex CLI / Opencode)
npx skills add run-llama/llamaparse-agent-skills --skill liteparse

# 3. 解析一个 PDF
lit parse /tmp/report.pdf --format markdown --no-ocr -o /tmp/report.md
# → 数字 PDF 直接走 PDFium, 无 OCR 调用

7.2 实战 1 — 客户发来的扫描件合同

# 扫描件 → OCR + Markdown
lit parse ./contract.pdf \
  --format markdown \
  --ocr tesseract \
  --ocr-lang chi_sim+eng \
  -o /tmp/contract.md

# 看效果
head -50 /tmp/contract.md
# → " 本合同由甲方..." 结构化输出, 可直接喂 LLM 摘要

7.3 实战 2 — 自定义 OCR 服务器

# 起 EasyOCR/PaddleOCR 服务, 接进来
lit parse ./scan.pdf \
  --ocr-url http://localhost:8080/ocr \
  --format json \
  -o /tmp/scan.json

# JSON 输出带 bbox
python3 -c "
import json
d = json.load(open('/tmp/scan.json'))
for page in d['pages']:
    for block in page['blocks']:
        print(f'[p{page[\"number\"]} {block[\"bbox\"]}] {block[\"text\"][:80]}')
"

7.4 实战 3 — Agent 让 Claude 直接读 PDF

给 Claude Code:

读一下 ~/Downloads/2026-roadmap.pdf 第 3 页那张甘特图, 告诉我 Q3 计划交付什么?

Claude Code 自动:
1. 调
effective-liteparse skill 的 SKILL.md → lit parse

2. 选择
--format png --pages 3 出页面截图
3. 用 Vision 看图 → 提取甘特图文字
4. 回答你

整套流程不离开 Claude Code, 无云 API, 无 API Key

八、风险与坑

  1. v2 还在快速迭代 —— 5 个月,11 天 4 版,API/CLI 参数可能在 v3 大改, 生产锁定前确认 API 稳定性
  2. 复杂文档还是不如 LlamaParse 云 —— LiteParse README 自己写 ”Hitting the limits of local parsing?” 明确推荐升级到 LlamaParse 云——多列表格、图表、手写、密集扫描,LiteParse 不够
  3. OCR 默认 Tesseract 速度一般 —— 简体中文手写体 / 复杂版式 Tesseract 准确率 70-85%, 生产建议接 EasyOCR/PaddleOCR HTTP 服务
  4. 首次安装有 native 依赖 —— Rust toolchain + LibreOffice + ImageMagick,Docker image 基础镜像不是 alpine——镜像是 Ubuntu/Debian 大约 500MB
  5. Apache-2.0 但 LlamaIndex 商业策略 —— Apache-2.0 不限制商用, 但 README 把 LlamaParse 云放最显眼位置, 长期看 LlamaIndex 重心会向云偏移, 开源 LiteParse 可能变 ” 开发者版 ”
  6. WASM 包大小 —— @llamaindex/liteparse-wasm 体积 5-10 MB(解压后), 首屏加载要考虑
  7. 不是 PyMuPDF 的直接替代 —— 如果你只想要文本层 + bbox 不需要 OCR,PyMuPDF(Python) 更快更轻,LiteParse 的优势是 OCR + 多绑定 + Agent Skill

九、对比 LiteParse v1 → v2 的演进

维度 v1 (log 分支) v2 (main)
核心语言 TypeScript Rust
速度 10-50× 提升
WASM 体积大, 慢 80 页 0.5 秒
OCR 需外挂 内置 + 可插拔
复杂度检测
多语言绑定 仅 Node Node/Python/Rust/WASM
仓库 logan/liteparse-v1 main

v2 是一次重写级升级——Rust 换来了速度 + WASM + 跨语言,TypeScript 版本在 log 分支保留(v1 用户可继续)。

十、总结

三个最值得装的理由

  1. v2 Rust 重写后真的快 —— 浏览器 WASM 80 页 0.5 秒,Node.js 服务器侧速度提升 10-50×,RAG pipeline 不再卡在 PDF 解析
  2. 本地优先 + OCR 可插拔 —— 数字 PDF 跳过 OCR 直走 PDFium(快), 扫描件才走 Tesseract(准), 复杂度检测是别人没有的杀手锏
  3. Agent Skill 一行起飞 —— npx skills add run-llama/llamaparse-agent-skills --skill liteparse + effective-liteparse 配套 skill,Claude Code 直接读 PDF 不需要后端

一句话 ” 先试一周 ”

给 Claude Code 装 run-llama/llamaparse-agent-skills/liteparse skill,接下来一周每次需要读 PDF/DOCX/PPTX 都让它做 ——你会发现 上传文档 → 让 Agent 直接总结 的体验完全消失门槛,RAG 文档管道本地化 比调云 API 还香。

什么时候 用 LiteParse

场景
复杂表格 / 图表 / 手写体 / 扫描版式 LlamaParse 云(LiteParse README 自己推荐)
极简数字 PDF 文本提取 PyMuPDF / pdfplumber(LiteParse 太重)
Java 企业级多格式 ETL Apache Tika
不需要 OCR/ 只要 bbox pdfplumber(Python)或 pdf.js(JS)
浏览器内不限制大小 pdf.js(LiteParse WASM 体积偏大)

参考

正文完