【免费下载链接】markit
🖍️ Convert anything to markdown. Mark it.
markit 是一个"把任何东西转成 Markdown"的文档转换工具,PDF、Word、PPT、网页、音频统统能转。最近项目方做了一次三方基准测试:markit 对比 liteparse 和 anydoc,用 5 万多页"丑陋 PDF" 真刀真枪地比质量、比速度。这篇文章带你完整复盘这套测试:语料怎么来的、规则怎么定的、数据怎么读的,以及 markit 凭什么快了 13.9 倍。
先说结论:三方成绩单一览
| 指标 | markit 0.6.0 | liteparse 2.12.0 | anydoc 0.1.9 |
|---|---|---|---|
| olmOCR-bench 官方质量分 | 45.0% | 38.8% | 31.2% |
| 丑陋PDF文本找回率(155个锚点) | 100.0% | 83.2% | 91.0% |
| 5万页转换总耗时 | 23.2s | 55.4s | 322.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 份"三方都能成功转换"的文档上,各工具单文档中位耗时和总耗时如下:
| 工具 | 转换成功率 | 单文档中位数 | 总耗时 | 换算吞吐 |
|---|---|---|---|---|
| markit | 39/40 | 118.3 ms | 23.2s | 2,195 页/秒 |
| liteparse | 39/40 | 736.4 ms | 55.4s | 919 页/秒 |
| anydoc | 37/40 | 939.4 ms | 322.2s | 158 页/秒 |
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 项确定性检查)的分类得分更能说明问题:
| 类目 | markit | liteparse | anydoc |
|---|---|---|---|
| 页眉页脚 | 76.1 | 56.1 | 50.8 |
| 超长小字号文本 | 36.2 | 23.8 | 17.2 |
| arXiv 数学公式 | 22.4 | 0.0 | 0.0 |
| 多栏排版 | 61.2 | 66.0 | 41.6 |
| 表格 | 50.9 | 51.8 | 43.6 |
markit 在页眉页脚、微小文字和数学公式上大幅领先,但多栏阅读顺序和表格上 liteparse 仍略胜一筹——项目方如实写进了 rust/BENCHMARKS.md,并把它列为下一步优化重点。旧扫描件因关闭 OCR,三方得分都被压在低位,这是非 OCR 路线的公共天花板。
如何复现:自己动手跑一遍
整套测试是开源可复现的,全部工具都在 benchmark/ 目录:
- 安装工具链:
./benchmark/setup-tools.sh,安装固定版本的 liteparse / anydoc; - 下载并校验语料:
python3 benchmark/setup_shitty_pdf_bench.py,再用 benchmark/verify_corpus.py 核对 SHA-256; - 生成盲测锚点并运行:
python3 benchmark/bench.py shitty-pdf-bench(核心调度逻辑在 benchmark/bench.py); - 打分:
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.
相关推荐
Pinocchio性能基准测试:为什么它比传统算法快10倍
Pinocchio性能基准测试:为什么它比传统算法快10倍 🚀 在机器人学和动力学计算领域,性能一直是开发者最关心的问题。今天我们要介绍的是Pinocchio
机器人物理引擎Loro性能基准测试:为什么这个CRDT库比主流方案快10倍?
Loro性能基准测试:为什么这个CRDT库比主流方案快10倍? Loro是一个革命性的高性能CRDT框架,专为本地优先应用设计。它通过创新的冲突无感知数据合并技
后端FastRoute基准测试揭秘:为什么它比传统PHP路由快10倍
FastRoute基准测试揭秘:为什么它比传统PHP路由快10倍 FastRoute是PHP领域最受欢迎的快速请求路由库,它通过精心设计的算法和优化策略,在处理
后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考