自托管服务
run-llama/liteparse avatar
run-llama/liteparse

LiteParse:从 PDF 页面提取结构化文本的 Rust 工具

一个快速、有用的开源文档解析器。该表示遵循 LlamaParse PDFium 路径提取; LiteParse 将形状矩形称为 bbox 而不是 PDFium 的坐标,并使用宽度/高度而不是 w/h。

12,305 个 Star847 个 ForkRustApache-2.0

秒懂

它是什么?
LiteParse 是 Rust 编写的本地 PDF 解析器,输出 Markdown、JSON 及 OCR 结果,并保留页面结构、坐标和可选媒体信息。
适合谁用?
适合需要在项目事实基础上做技术选型、代码阅读或本地试跑的人;不适合把仓库 README 当作生产 SLA、线上效果或完整安全审计的人。先按项目 README 中的具体入口跑通最小流程,记录实际输出、错误信息与依赖版本,再决定是否扩大使用范围。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 3 天前。
用什么语言写的?
主要是 Rust(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

liteparse:LiteParse是什么,以及它有意排除的内容

LiteParse是一个用Rust编写的独立开源PDF解析工具。根据README,它只专注于快速和轻量解析,这意味着它优先考虑速度和资源使用,而不是高级功能。它提供带边界框的空间文本解析,因此输出包含每个文本元素的位置信息。该工具不包含专有的LLM功能,因此不会进行语义理解或摘要。没有云依赖,因此完全在本地机器上运行。对于超出本地解析能力的复杂文档,如密集表格、多栏布局、图表、手写文本或扫描PDF,README推荐使用云服务LlamaParse,该服务专为生产文档管道而构建。README没有提供具体的性能数字或比较,也没有描述"快速"的确切含义。

liteparse:解析如何工作:从PDF到结构化输出

README包含一个描述核心流程的流程图。输入格式(PDF、DOCX、XLSX、PPTX、图像)在需要时进行转换:Office文档通过LibreOffice转换,图像由Rust crate原生处理。PDF文本提取使用PDFium C库。OCR是选择性的,使用Tesseract、HTTP服务器或自定义实现,并将原生文本和OCR结果合并。然后通过网格投影重建空间布局,生成带有文本和边界框的结构化JSON、保留布局的纯文本或PNG截图。同一个核心通过Node.js(napi-rs)、Python(PyO3)和WASM绑定以及CLI暴露。README没有指定网格投影背后的确切算法,但它确实指出输出格式包括Markdown、JSON和文本,其中Markdown能够从空间布局中重建标题、表格、列表、图像和链接。这纯粹是启发式和基于规则的,因此复杂的文档可能无法完美渲染,但解析速度很快。

liteparse:安装和共享CLI

除了WASM之外,所有安装都附带相同的`lit` CLI。README列出了Node.js/TypeScript的`npm i -g @llamaindex/liteparse`、Python的`pip install liteparse`、Rust CLI的`cargo install liteparse`以及浏览器使用的`npm i @llamaindex/liteparse-wasm`。CLI支持解析单个文件、批量解析目录、生成截图和检查文档复杂度。例如,`lit parse document.pdf --format markdown -o output.md`渲染Markdown,`lit is-complex document.pdf`向stderr打印判定,同时向stdout输出逐页JSON。README指出,CLI在npm、pip和cargo安装中是相同的。其他标志包括`--target-pages`用于选择特定页面,`--no-ocr`用于禁用OCR,`--dpi`用于截图分辨率,以及`--num-workers`用于并发OCR工作进程。批量解析命令接受输入和输出目录,并具有`--recursive`和`--extension`等选项。

liteparse:OCR:内置Tesseract和可插拔HTTP服务器

OCR默认启用,Tesseract内置且无需设置即可使用。用户可以使用`--no-ocr`禁用它,或使用`--ocr-language`选择语言。对于离线环境,`TESSDATA_PREFIX`或`--tessdata-path`指向`.traineddata`文件。或者,任何实现LiteParse OCR API规范的OCR服务都可以通过HTTP使用。README提供了EasyOCR和PaddleOCR的示例包装器,API要求POST `/ocr`端点接受`file`和`language`参数,返回包含文本、边界框和置信度的JSON。README没有说明这些选项的性能声明,但它确实指出内置Tesseract是零设置,而HTTP服务器可能提供更高的准确性或性能,但没有给出基准。OCR合并步骤将原生文本与OCR结果结合,`is-complex`命令有助于确定何时需要OCR。

liteparse:PDF以外的输入格式

LiteParse在解析前会自动将多种Office格式转换为PDF。README列出了Word、PowerPoint和电子表格格式,包括`.docx`、`.pptx`、`.xlsx`及更旧的变体,以及`.odt`、`.rtf`、`.pages`、`.key`、`.csv`和`.numbers`。转换依赖LibreOffice,README给出了macOS、Ubuntu/Debian和Windows的安装命令。图像原生支持:`.jpg`、`.jpeg`、`.png`、`.gif`、`.bmp`、`.tiff`、`.webp`和`.svg`。从2.8.0版本开始,图像转换不再需要imagemagick;转换由Rust代码原生处理。README没有详细描述转换行为,也没有说明不同格式的转换质量差异。

liteparse:可选输出功能:矢量图形、结构树、截图、复杂度检查

几个解析选项是可选启用的。`--extract-vector-graphics`添加带形状和合并线的矢量路径数据,其表示遵循LlamaParse PDFium路径提取。`--extract-structure-tree`暴露带标签的PDF逻辑结构,包括元素类型、ID和文本。`--extract-content-bounds`、`--extract-xfa-packets`和`--extract-document-metadata`提供额外的来源和布局信息,如文档创建者和生产者、XMP数据包和内容边界。截图可以包含AcroForm字段外观,每个截图报告是否为纯色填充,这有助于检测空白页。`is-complex`命令执行一次廉价的仅文本层检查,以决定是否需要OCR或更重的处理,并列出诸如scanned、no-text、sparse-text、embedded-images、garbled、vector-text或annotation-text等原因。这些功能都在README中记录,但README没有包含基准数据。

liteparse:开发、代理技能和许可证

该项目是一个Rust工作区,包含核心库和语言绑定的crate。README显示了结构:`crates/liteparse`包含核心和CLI,`liteparse-napi`用于Node,`liteparse-python`用于Python,`liteparse-wasm`用于WASM,还有`pdfium`和`pdfium-sys`包装器。构建命令使用`cargo build --release -p liteparse`、在`packages/node`中的`npm run build`、在`packages/python`中的`maturin develop --release`以及在`packages/wasm`中的`npm run build`。README还描述了一个代理技能:你可以通过`skills` CLI下载它,使用`npx skills add run-llama/llamaparse-agent-skills --skill liteparse`,或者复制`SKILL.md`文件。该项目采用Apache 2.0许可证。许可证摘录授予版权和专利许可,但README和许可证没有就支持、保证或安全作出声明。

LiteParse 直接处理 PDF 页面结构,输出可以是 Markdown,也可以是包含页面、文本项目和坐标信息的 JSON。CLI 支持指定页码、关闭 OCR、提取嵌入图片、输出矢量路径和附加文本元数据;这些选项决定结果是适合阅读,还是适合后续版面分析。它说明自己的 bbox 字段采用 shape rectangle 语义,与 PDFium 路径的坐标命名不同,接入现有解析器时不能只做字段改名。

试跑应准备含标题、表格、扫描页、链接和图片的 PDF,分别比较默认 Markdown、关闭 OCR 和带页面范围的结果。重点观察表格边界、文字顺序、图片示意符、坐标原点和 Tesseract 可执行文件是否可用。README 还支持通过 HTTP 服务器接入 OCR,这带来独立的网络和服务权限问题;本地解析速度快不代表所有版面都能还原。

这项技术的判断应回到可观察的输入、处理阶段和输出。阅读项目时,先把 README 中的目录、命令、配置项和文件路径记下来,再看它们是否在同一版本中彼此对应。安装成功只说明依赖可以解析,不能说明核心流程已经完成;要把首次运行的标准输出、生成文件、退出码和错误日志一起保留。

对于实际接入,最好把最小样本缩到一个明确目标:一次事务、一个技能、一个组件、一个 relay、一个 PDF 页面或一条网关路由。样本越小,越容易知道问题发生在输入格式、配置读取、模型调用、权限检查还是最终输出。项目 README 没有写出的部分,应当标为未说明,不能从仓库名称、星标数量或宣传描述推断。许可证只决定代码使用条件,不替代数据处理、凭据管理和运行权限的审查。

记录还要覆盖输入边界和失败路径。给数据库准备跨节点事务,给安全扫描器准备规则命中样本,给组件库准备带类型检查的 Vue 页面,给协作系统准备两个签名身份,给记忆系统准备可更新的源文档,给解析器准备带扫描页的 PDF,给网关准备一个可控上游,给生成式界面准备未知组件和非法动作。每种样本都应留下原始输入、命令、配置、输出和错误,而不是只截取成功画面。

本项目的专属核验对象是 run-llama/liteparse:需要对照其 README 中写出的安装入口、配置名称和输出格式逐项检查,尤其记录 Rust 代码或脚本实际返回的结果。这样形成的记录可以说明这一次运行发生了什么,不会把未在 run-llama/liteparse 文档中承诺的行为写成结论。run-llama/liteparse 的代码组织、默认参数和错误路径都应单独留下记录。对于数据库,要记录事务、节点和查询结果;对于扫描器,要记录规则命中和报告字段;对于组件库,要记录构建产物和类型错误;对于解析器,要记录页面结构和 OCR 输出;对于网关,要记录路由、插件和上游响应;对于协作或记忆系统,要记录事件、节点与召回内容;对于生成式界面,要记录规格、组件和动作。上述观察项必须对应本项目实际存在的入口,不能拿别的项目经验替代。

编辑结论

适合需要在项目事实基础上做技术选型、代码阅读或本地试跑的人;不适合把仓库 README 当作生产 SLA、线上效果或完整安全审计的人。先按项目 README 中的具体入口跑通最小流程,记录实际输出、错误信息与依赖版本,再决定是否扩大使用范围。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记