乐于分享
好东西不私藏

一款轻量级本地PDF解析工具:LiteParse 完整指南

一款轻量级本地PDF解析工具:LiteParse 完整指南

处理 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
输出格式,默认 text
--no-ocr
禁用 OCR
--ocr-language
OCR 语言,Tesseract 格式,如 fra(法语)
--ocr-server-url
使用外部 HTTP OCR 服务器
--target-pages
指定页面,如 "1-5,10"
--dpi
渲染 DPI,默认 150
--password
加密 PDF 的密码
--num-workers
并发 OCR 线程数,默认 CPU 核心数减 1

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
Tesseract 训练数据所在目录,离线环境必设

开发相关(给想折腾的人)

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。各取所需,挺好。

相关学习资料