LlamaIndex LiteParse v2.1 发布:最快的开源无模型 PDF 转 Markdown 管线
Markdown Comes to LiteParse
LlamaIndex 发布 LiteParse v2.1,提供最快的开源、无模型 PDF 转 Markdown 管线,在 opendataloader-bench(0.875)、olmOCR-bench(0.391)和 ParseBench(0.3279)上均取得无模型方法中的最高总分。
原文给出三个基准的对比数据和速度测试,读者可以据此评估这款无模型 PDF 转 Markdown 工具的适用场景。
几周前,我们推出了 LiteParse 2.0,作为将 PDF 转换为文本的最快工具。然而,有几个问题反复出现:基准测试在哪里?它能输出 markdown 吗?
LiteParse v2.1 通过提供最快的开源、无模型、PDF 转 markdown 流水线来回答这个问题。我们在 3 个标准基准测试上测量了性能,并在与无模型方法对比时,在所有三项上都取得了最高总分:opendataloader-bench 为 0.875,olmOCR-bench 为 0.391,ParseBench 为 0.3279。
访问演示站点(在浏览器中通过 WASM 运行)或立即安装最新版本!
$ pip install liteparse
$ lit parse doc.pdf --format markdownfrom liteparse import LiteParse
lp = LiteParse(output_format="markdown")
result = lp.parse("doc.pdf")
print(result.text)它是如何工作的?
为 markdown 构建启发式流水线本质上归结为两部分:你可以检测到的信号,以及监听这些信号的输出元素类型。与任何机器学习模型类似,这本质上归结为输入、权重和激活!
PDF 携带大量数据:字体族、字体大小、文本位置等等。所有这些都被视为输入信号,用于将文本分类为特定的 markdown 元素,如段落、表格、列表和标题。
LiteParse 使用自定义的 PDFium 分支来捕获尽可能多的信号,然后将其与我们现有的网格投影算法的信号相结合,以纯启发式规则方法提供我们能提供的最佳 markdown 输出。
随着时间的推移,我们预计这种模式会变得更好。有极长的 PDF 长尾,我们可以随时间适应,而时间正是让这种模式变得更好的最佳因素。
衡量 Markdown 性能
事实证明,markdown 不仅是高度请求的输出选项,而且没有它也很难对 PDF 解析工具进行基准测试。
所有现有基准测试(ParseBench、olmOCR-bench、opendataloader-bench)都强烈倾向于衡量 markdown。通过构建这个 markdown 流水线,我们能够提供一种全新的输出模式,同时还能衡量并改进我们的整体提取质量。
本着“Lite”的精神,我们在 LiteParse 中构建的 markdown 模式尽可能轻量和快速。这种方法优先考虑速度,但也必须接受准确性的上限(用这种方法我们不会比 LlamaParse 做得更好)。
为了公平比较,我们将比较范围限定在不利用大型 AI 模型进行解析的开源工具。这意味着在基准测试时,OCR 和其他模型集成被禁用。
基准测试结果
ParseBench
我们已经写了很多关于 ParseBench 的内容。2000 多份文档,按照最终用户真正关心的 5 个关键指标进行衡量。这些是有意设计的困难文档,因此没有大型 AI 模型,这些分数实际上相当令人印象深刻。
LiteParse 在总体中领先。对于这里的每个无模型工具来说,图表和视觉接地列实际上都是噪声。ParseBench 通过比较从图表中提取的结构化数据来对图表(以及其布局/视觉接地指标的部分)进行评分,这从根本上需要 ML 模型来恢复。启发式引擎在那里没有什么可输出的,因此所有无模型工具都聚集在零附近。我们仅为完整性而报告这些列。
| 类别 | LiteParse | pymupdf4llm | opendataloader | pdf-inspector | markitdown |
|---|---|---|---|---|---|
| 总体 | 0.328 | 0.310 | 0.294 | 0.266 | 0.186 |
| 表格 | 0.403 | 0.373 | 0.352 | 0.266 | 0.158 |
| 内容忠实度 | 0.686 | 0.609 | 0.661 | 0.561 | 0.645 |
| 语义格式 | 0.409 | 0.446 | 0.341 | 0.351 | 0.009 |
| 图表* | 0.034 | 0.015 | 0.001 | 0.053 | 0.020 |
| 视觉接地* | 0.107 | 0.107 | 0.108 | 0.099 | 0.099 |
- 这里的数字大多是噪声,这里的工具都没有输出适当的数据来在这些指标上进行适当的基准测试
opendataloader-bench
opendataloader-bench 是一个包含 200 份文档的小型基准测试。它主要衡量三个方面:阅读顺序相似度(NID)、表格结构相似度(TEDS)和标题层级相似度(MHS)。你可以在他们的 github 仓库中了解更多关于这些指标的信息。
在这里,LiteParse 在所有类别中都领先。官方仓库也报告了来自实际 AI 模型的分数,LiteParse 在那里也相当有竞争力,但在这篇博客文章中,我们只与类似的无模型 OSS 工具进行比较。
| 类别 | LiteParse | pymupdf4llm | opendataloader | pdf-inspector | markitdown |
|---|---|---|---|---|---|
| 总体 | 0.871 | 0.732 | 0.831 | 0.792 | 0.589 |
| NID | |||||
| (阅读顺序) | 0.908 | 0.885 | 0.902 | 0.876 | 0.844 |
| TEDS | |||||
| (表格) | 0.693 | 0.401 | 0.483 | 0.630 | 0.273 |
| MHS | |||||
| (标题) | 0.816 | 0.412 | 0.739 | 0.602 | 0.000 |
olmOCR-bench
LiteParse 在 olmOCR-bench 的大多数类别中领先。他们的一些规则检查并不总是反映期望的输出,有时彼此不一致(我们之前写过相关内容),但它仍然是有用的信号。
LiteParse 在基线健全性检查上得分良好,在页眉/页脚、多栏和表格测试中表现出色。旧扫描件/数学方面的低分是意料之中的,因为这些通常需要 OCR。其余分数与其他工具相差不大。
| 类别 | LiteParse | pymupdf4llm | opendataloader | pdf-inspector | markitdown |
|---|---|---|---|---|---|
| 总体 | 39.2% | 32.9% | 32.7% | 30.5% | 28.7% |
| 基线 | 99.9% | 84.5% | 86.9% | 82.9% | 86.8% |
| 页眉页脚 | 55.9% | 39.5% | 37.5% | 52.0% | 38.8% |
| 多栏 | 67.1% | 66.7% | 62.8% | 38.2% | 39.3% |
| 表格测试 | 48.0% | 46.3% | 25.7% | 40.0% | 19.9% |
| 长微小文本 | 29.2% | 12.7% | 35.1% | 17.4% | 31.2% |
| 旧扫描件 | 13.3% | 13.3% | 13.3% | 13.3% | 13.3% |
| arxiv 数学 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
| 旧扫描件数学 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
速度测试
速度是在一组固定的 PDF 上测量的,这些 PDF 具有不同的布局、页数和内容类型。报告的时间是整个测试集中处理单页的平均时间。你可以在这里找到源数据,在这里找到基准测试代码。
| 提供方 | 毫秒/页(汇总) |
|---|---|
| liteparse | 3.16 毫秒 |
| pdf-inspector | 3.83 毫秒 |
| opendataloader | 66.3 毫秒 |
| pymupdf4llm-md | 141.5 毫秒 |
| markitdown | 182.5 毫秒 |
许可与可移植性
在所有测试的工具中,许可证和支持的运行时各不相同。
LiteParse 采用宽松许可证(Apache-2.0),作为单一引擎在四个生态系统中运行,包括通过 WASM 在浏览器中原生运行。仅 Python 的工具无法满足浏览器或 Node 服务的需求,而 pymupdf4llm 继承了 PyMuPDF 的 AGPL-3.0 著佐权,对于许多没有付费许可证的商业代码库来说是不可行的。
| 工具 | 许可证 | 语言 / 运行时 |
|---|---|---|
| LiteParse | Apache-2.0 | Rust、Python、Node、WASM(浏览器) |
| pymupdf4llm | AGPL-3.0(可商用) | Python |
| markitdown | MIT | Python |
| opendataloader | Apache-2.0 | Java 核心(+ Python、Node.js 包装器) |
| pdf-inspector | MIT | Rust |
关于 v2.1 范围的说明
这三个基准测试并不总是对“好的”markdown 应该是什么样子达成一致。我们反复发现,调整输出以赢得一个基准测试(例如 olmOCR-bench)会使另一个基准测试(例如 ParseBench)退步,反之亦然。目视检查 PDF 时,你经常会看到“得分很高”但视觉上看起来不太好的结果。我们没有针对任何单一测试框架进行基准最大化,而是让 v2.1 在三个基准测试中都保持稳健、均衡的性能。随着时间的推移,还有很大的空间来提升各个子类别(我们会的!)。
今天就试试吧!
LiteParse 可在任何地方运行,v2.1 现已推出:
# Node Library + CLI
npm i @llamaindex/liteparse
# Python Library + CLI
pip install liteparse
# Rust Library + CLI
cargo install liteparse
# WASM Library
npm i @llamaindex/liteparse-wasm或者,直接将其作为技能与你最喜欢的编码代理一起使用:
# Claude Code, Codex, OpenCode, etc.
npx skills add run-llama/llamaparse-agent-skills --skill liteparse
# Pi Coding Agent Extension
pi install npm:@llamaindex/liteparse-pi-extension@latest点击以下链接查看文档和源代码详情:
来源:LlamaIndex:产品、工程与评测 · llamaindex.ai