处理 PDF 这事儿,说大不大,说小也不小。很多开发者遇到过这种尴尬:想从 PDF 里提取文字,开源的方案要么慢得要命,要么依赖云端服务,隐私数据交出去心里总有点不踏实。要是再碰上扫描件、表格、多栏排版,更头疼。
LiteParse 就是冲着这个来的。一个纯粹本地运行的 PDF 解析工具,不依赖任何云服务,不附带花哨的 LLM 功能,就专注一件事:快速、轻量地把 PDF 里的文字和位置信息提取出来。
LiteParse 能做什么?
快速文本解析:基于 PDFium,这个渲染引擎 Chrome 也在用,速度和可靠性都有保障。 灵活的 OCR:内置 Tesseract,开箱即用。觉得不够准?可以换成 EasyOCR、PaddleOCR,或者任何你自己搭建的 OCR 服务器。 截图生成:给 LLM Agent 用的。有时候光有文字不够,直接把页面截图丢给模型,视觉信息一目了然。 多种输出格式:JSON 或纯文本,随你挑。 带边界框:每个文字的位置坐标都能拿到,适合做版面分析。 多语言支持:Rust、Node.js/TypeScript、Python,甚至浏览器里跑 WASM 都行。 跨平台:Linux、macOS(Intel 和 ARM)、Windows 全支持。 如果你处理的是那种特别复杂的文档——密密麻麻的表格、多栏混排、手写体、扫描古籍——LiteParse 可能就有点吃力了。这时候可以考虑他们的云端版本 LlamaParse,专门对付硬骨头。LiteParse 定位就是轻快本地,各有各的战场。
安装
装起来很简单。不管用哪个语言,装完都会带一个相同的命令行工具 lit。
Node.js / TypeScript
npm i @llamaindex/liteparse
Python
pip install liteparse
Rust(CLI)
cargo install liteparse
如果要在代码里当库用:
cargo add liteparse
浏览器(WASM)
npm i @llamaindex/liteparse-wasm
当 Agent Skill 用
如果你在用 Agent 框架,可以把 LiteParse 作为一个技能装进去。用 skills CLI:
npx skills add run-llama/llamaparse-agent-skills --skill liteparse
或者直接把 SKILL.md 文件拷到你自己的 skills 目录里。
CLI 用法
装好后 lit 命令就能用了。下面是最常用的几个场景。
解析 PDF
# 基本用法,直接解析,默认会开启 OCR
lit parse document.pdf
# 输出 JSON 格式
lit parse document.pdf --format json -o output.json
# 只解析第 1-5 页、第 10 页、第 15-20 页
lit parse document.pdf --target-pages "1-5,10,15-20"
# 关掉 OCR(如果 PDF 本身是文字型的)
lit parse document.pdf --no-ocr
# 解析远程 PDF(通过管道传进来)
curl -sL https://example.com/report.pdf | lit parse -
批量解析
一个目录里几十个 PDF 要一起处理?
lit batch-parse ./input-directory ./output-directory
批量解析也支持 --format、--no-ocr、--recursive(递归子目录)等选项。
生成截图
给 LLM 用的截图功能很实用。光靠文本提取可能会漏掉图表、颜色、布局这些信息,把页面截图一起发给模型,能大幅提升理解准确率。
# 把所有页面都截出来
lit screenshot document.pdf -o ./screenshots
# 只截第 1、3、5 页
lit screenshot document.pdf --target-pages "1,3,5" -o ./screenshots
# 调高 DPI,截图更清晰
lit screenshot document.pdf --dpi 300 -o ./screenshots
常用参数速查
--format json/text | |
--no-ocr | |
--ocr-language | fra(法语) |
--ocr-server-url | |
--target-pages | "1-5,10" |
--dpi | |
--password | |
--num-workers |
OCR 设置
开箱即用的 Tesseract
默认就带 Tesseract,啥也不用配直接跑:
lit parse document.pdf # OCR 默认开启
lit parse document.pdf --ocr-language fra # 换成法语
lit parse document.pdf --no-ocr # 关掉
如果是离线环境,没有网络下载训练数据,可以事先把 *.traineddata 文件放到一个目录里,然后设置环境变量:
export TESSDATA_PREFIX=/path/to/tessdata
lit parse document.pdf --ocr-language eng
或者直接用参数指定:
lit parse document.pdf --tessdata-path /path/to/tessdata
换成 HTTP OCR 服务器(EasyOCR / PaddleOCR 等)
Tesseract 够用,但如果你想要更高的识别精度,可以搭一个 OCR 服务器。LiteParse 定义了一套简单的 API 规范(一份文档叫 OCR_API_SPEC.md),只要你的服务器实现了 POST /ocr 接口,接收文件、返回带坐标的文字识别结果,就能无缝接入。
官方提供了 EasyOCR 和 PaddleOCR 的示例 wrapper,可以直接用。用法就是在解析命令里加上 --ocr-server-url:
lit parse document.pdf --ocr-server-url http://localhost:8080
不只是 PDF:多格式输入
LiteParse 还能处理其他格式,它会自动转成 PDF 再解析。
Office 文档(Word、PPT、Excel 等)需要装 LibreOffice:
# macOS
brew install --cask libreoffice
# Ubuntu/Debian
apt-get install libreoffice
装好后,.docx、.pptx、.xlsx 这些文件就能直接丢给 lit parse。
图片(jpg、png、tiff、bmp 等)需要 ImageMagick:
# macOS
brew install imagemagick
# Ubuntu/Debian
apt-get install imagemagick
然后 lit parse photo.jpg 就能把图片里的文字(如果有)通过 OCR 提取出来。
环境变量
基本上只需要记一个:
TESSDATA_PREFIX |
开发相关(给想折腾的人)
LiteParse 是一个 Rust workspace,核心库在 crates/liteparse/,各语言绑定分别在:
liteparse-napi:Node.js 绑定liteparse-python:Python 绑定(PyO3)liteparse-wasm:WASM 绑定
编译 CLI:
cargo build --release -p liteparse
编译 Python 包(需要 maturin):
cd packages/python && maturin develop --release
小结
如果你需要的是一个本地、快速、不带云依赖的 PDF 文字提取工具,LiteParse 很合适。它不会试图解决所有问题,但在它擅长的领域——空间文本解析、轻量级 OCR、跨平台易用——做得干净利落。
项目完全开源,GitHub 上搜 LiteParse 就能找到。遇到复杂文档搞不定的,再去试试他们的云端版 LlamaParse。各取所需,挺好。
夜雨聆风