☰
markit凭什么快13.9倍?5万页“丑陋PDF“三方基准测试全记录
2026/10/12 16:49:12 网站建设 项目流程

【免费下载链接】markit

🖍️ Convert anything to markdown. Mark it.

项目地址:https://gitcode.com/gh_mirrors/marki/markit
点击查看免费下载

markit 是一个"把任何东西转成 Markdown"的文档转换工具,PDF、Word、PPT、网页、音频统统能转。最近项目方做了一次三方基准测试:markit 对比 liteparse 和 anydoc,用 5 万多页"丑陋 PDF" 真刀真枪地比质量、比速度。这篇文章带你完整复盘这套测试:语料怎么来的、规则怎么定的、数据怎么读的,以及 markit 凭什么快了 13.9 倍。

先说结论:三方成绩单一览

指标markit 0.6.0liteparse 2.12.0anydoc 0.1.9
olmOCR-bench 官方质量分45.0%38.8%31.2%
丑陋PDF文本找回率(155个锚点)100.0%83.2%91.0%
5万页转换总耗时23.2s55.4s322.2s

一句话总结:质量分最高、文本找回率 100%、速度还快 13.9 倍——这是同机、同规则、同语料下的端到端结果。

参赛选手:三个"非OCR"PDF转Markdown工具

三个工具都是非 OCR 路线:直接读取 PDF 里已经存在的文字层,不跑光学字符识别、不调用任何 AI 模型。测试中三方的 OCR 全部关闭,确保比的是"解析引擎本身的硬实力":

  • markit 0.6.0:Rust 原生引擎,同时提供 CLI 和 Node SDK(rust/ 目录是引擎本体,rust/src/converters/pdf/ 是自研 PDF 解析模块);
  • liteparse 2.12.0(@llamaindex/liteparse):LlamaIndex 出品的 Rust 解析器,是 markit 的直接竞品;
  • anydoc 0.1.9(@firecrawl/anydoc):Firecrawl 出品的 Rust 转换工具。

公平性规则写得很死(见 benchmark/README.md):三方都不许提取图片(markit 加--no-images、liteparse 加--image-mode off),每个文档"1 次热身 + 3 次测量",取中位数;每份文档还要轮换出场顺序,防止先后手偏差。

语料揭秘:5万页"丑陋PDF"到底是什么

shitty-pdf-bench 语料是 markit 团队自制的:benchmark/shitty-pdf-bench.json 用直链 URL + 字节大小 + 页数 + SHA-256 哈希锁定了 40 份公开 PDF,总计 602.5 MB、50,884 页。这些文件全是"疑难杂症":

  • 📚 半导体芯片手册(如 816 页的 ECMAScript 2024 规范、784 页的 ESP32 技术参考手册);
  • 🔢 密集注册表、寄存器表格、金融大表;
  • 🌀 旋转的矢量图表、双向文字(RTL)文档、中日韩文本;
  • 📄 老扫描件、带标签 PDF、格式损坏文件,外加一个加密文件作为"必然失败"对照组。

质量评分采用"盲测锚点":155 个七词片段从源 PDF 固定页面分位(5%/25%/50%/75%/95%)采样而来,生成器只读源文件、从不读任何转换器的输出,从机制上杜绝"照着赢家调题"。此外还有 38 条人工编写的结构化断言(表格行数、关键内容存在性检查等),由 benchmark/score_shitty_pdf_bench.py 自动打分。

速度深潜:13.9 倍是怎么算出来的

在 39 份"三方都能成功转换"的文档上,各工具单文档中位耗时和总耗时如下:

工具转换成功率单文档中位数总耗时换算吞吐
markit39/40118.3 ms23.2s2,195 页/秒
liteparse39/40736.4 ms55.4s919 页/秒
anydoc37/40939.4 ms322.2s158 页/秒

markit 比 liteparse 快2.4 倍、比 anydoc 快13.9 倍,并且在所有 37 份"三方都转得出来"的文档里都是最快的。

快在哪?关键在架构:markit 是纯 Rust 单进程实现,内置自己的 PDF 解析器(对象表、内容流、CMap、CCITT 图像一应俱全,见 rust/src/converters/pdf/own_pdf/),不需要外部依赖,冷启动和执行路径都极短;而对比工具要么依赖额外的运行时链路,要么在处理复杂文件时性能急剧下降(anydoc 的曲线在后半段几乎垂直——页数越多越慢)。

顺带一提:图片提取在这套以文字为主的语料中只占 markit 运行时间的 8%;但遇到图片密集论文(如 83 张图的 GPT-3 论文)会占到 97%。文本抽取结果与是否提取图片完全一致,所以质量结论不受此项影响。

质量不是全赢:诚实的类目分

官方 olmOCR-bench(1,403 页、8,413 项确定性检查)的分类得分更能说明问题:

类目markitliteparseanydoc
页眉页脚76.156.150.8
超长小字号文本36.223.817.2
arXiv 数学公式22.40.00.0
多栏排版61.266.041.6
表格50.951.843.6

markit 在页眉页脚、微小文字和数学公式上大幅领先,但多栏阅读顺序和表格上 liteparse 仍略胜一筹——项目方如实写进了 rust/BENCHMARKS.md,并把它列为下一步优化重点。旧扫描件因关闭 OCR,三方得分都被压在低位,这是非 OCR 路线的公共天花板。

如何复现:自己动手跑一遍

整套测试是开源可复现的,全部工具都在 benchmark/ 目录:

  1. 安装工具链:./benchmark/setup-tools.sh,安装固定版本的 liteparse / anydoc;
  2. 下载并校验语料:python3 benchmark/setup_shitty_pdf_bench.py,再用 benchmark/verify_corpus.py 核对 SHA-256;
  3. 生成盲测锚点并运行:python3 benchmark/bench.py shitty-pdf-bench(核心调度逻辑在 benchmark/bench.py);
  4. 打分:python3 benchmark/score_shitty_pdf_bench.py benchmark/results/shitty-pdf-bench。

所有版本、数据集 revision、检查器 commit 都已在 rust/BENCHMARKS.md 中钉死,你复现时引用同一 commit 才能对齐数字。

新手上手 markit:三步开始使用

npm install -g @shift-labs/markit markit report.pdf -o report.md # 转换成文件 markit data.xlsx -q # 原始 Markdown 直出,适合管道 markit report.pdf --json # 结构化输出,方便 Agent 调用

markit 还支持 ZIP 递归转换、标准输入、图片提取到目录等用法,完整列表见 README.md。

总结:这套测试为什么值得看

📌对使用者:如果你要批量把 PDF 变成干净的 Markdown(喂给 RAG、做归档、给 AI Agent 当上下文),markit 目前在"非 OCR 路线"里质量分最高、速度最快、对烂文件最扛造。

📌对评测方法:哈希锁定语料、盲测锚点、轮换顺序、保留失败不剔除、拒绝把三套测试合成一个"综合分"——这套公平规则(benchmark/README.md 中 7 条)本身就是可抄作业的开源评测范本。

数字会随版本变化,结论请以你复现时的 commit 为准——这正是 markit 团队反复强调的一句话。

【免费下载链接】markit

🖍️ Convert anything to markdown. Mark it.

项目地址:https://gitcode.com/gh_mirrors/marki/markit
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询