English | 简体中文
[📜 arXiv] | [Dataset (🤗Hugging Face)] | [Dataset (OpenDataLab)]| [Official Site (OpenDataLab)]
OmniDocBench是一个针对真实场景下多样性文档解析评测集,具有以下特点: - 文档类型多样:该评测集涉及1651个PDF页面,涵盖10种文档类型、5种排版类型和5种语言类型。覆盖面广,包含学术文献、财报、报纸、教材、手写笔记等; - 标注信息丰富:包含28个block级别(文本段落、标题、表格等)和4个Span级别(文本行、行内公式、角标等,总量超过80k)的文档元素的定位信息,以及每个元素区域的识别结果(文本Text标注,公式LaTeX标注,表格包含LaTeX和HTML两种类型的标注)。OmniDocBench还提供了各个文档组件的阅读顺序的标注。除此之外,在页面和block级别还包含多种属性标签,标注了5种页面属性标签、3种文本属性标签和6种表格属性标签。 - 标注质量高:经过人工筛选,智能标注,人工标注及全量专家质检和大模型质检,数据质量较高。 - 配套评测代码:设计端到端评测及单模块评测代码,保证评测的公平性及准确性。
可进行以下几个维度的评测: - 端到端评测:包括end2end和md2md两种评测方式 - Layout检测 - 表格识别 - 公式识别 - 文本OCR
目前支持的metric包括: - Normalized Edit Distance - BLEU - METEOR - TEDS - COCODet (mAP, mAR, etc.)
[2026/04/30] 从版本v1.6 更新到 v1.7,新增QianfanOCR的榜单,支持skills方式评测。
[2026/04/09] 重大版本更新:从版本v1.5 更新到 v1.6
- 评测代码:(1) 我们提出 Multi-Granularity Adaptive Matching (MGAM),通过对预测端进行自适应粒度调整来消除匹配偏差。核心设计原则是:保持 ground truth 不变,仅在预测端搜索最优分段粒度。(2) 为优化CDM的部署,将node.js、katex等依赖包用python版本重写并替换,速度优化3倍左右。
- 评测集:(1) 新增 296 页样本, 样本选取旨在覆盖文档解析中更具挑战性的场景类别,包括复杂嵌套表格、密集数学公式排版、非常规版面结构等; (2) 修正了1.5版本表格、公式、OCR部分标注;
- 注意:评测代码(本repo)和评测集(HuggingFace和OpenDataLab)的main分支已经更新到版本v1.6,如果仍想使用v1.0版本的代码和评测集,请切换到特定分支。
[2026/03/31] 更新了PaddleOCR-VL-1.5、Youtu-Parsing、FireRed-OCR、Logics-Parsing-v2、Ovis2.6-30B-A3B、MinerU2.5、HunyuanOCR、FD-RL、DeepSeek-OCR-2、MonkeyOCR-pro-3B、OCRVerse、dots.ocr、Dolphin-v2、MonkeyOCR-Pro-3B、POINTS-Reader、Gemini-3 Flash、Gemini-3 Pro、Kimi 2.5、GPT5.2、GPT-4o、InternVL3.5、GLM-OCR、OpenDoc 和 Mathpix 的模型评测结果,新增了上述榜单模型的推理代码。
[2025/11/04] 增加docker运行环境,包含评测环境和CDM环境。
[2025/10/28] 更新PaddleOCR-VL, Qwen3-VL-235B-A22B-Instruct, Deepseek-OCR, Dolphin-1.5模型评测结果。
[2025/09/25] 重大版本更新:从版本v1.0 更新到 v1.5
- 评测代码:(1)更新了混合匹配方案,使公式和文本之间也可以进行匹配,从而缓解了模型将公式写成unicode后造成的分数误差;(2)将CDM的计算直接写入metric部分,用户如果有CDM环境可以直接通过在config文件中配置CDM计算出指标,另外,仍保留了之前输出公式匹配对JSON文件的接口,命名为CDM_plain;
- 评测集:(1)报纸和笔记类型的图片从72DPI提升到200DPI;(2)新增374个页面,平衡了中英文页面的数量,并提升了包含公式页面的占比;(3)公式新增语种属性;(4)修复部分文本和表格的标注错别字;
- 榜单:(1)去除了中英文的分组,直接计算的是所有页面的平均分;(2)Overall指标的计算方式改为 ((1-文本编辑距离)100 + 表格TEDS + 公式CDM)/3;
- 注意:评测代码(本repo)和评测集(HuggingFace和OpenDataLab)的main分支已经更新到版本v1.5*,如果仍想使用v1.0版本的代码和评测集,请切换分支到v1_0.
[2025/09/09] 使用最新Dolphin推理脚本和模型权重,更新Dolphin的评测结果,新增了Dolphin infer脚本。
[2025/08/20] 更新PP-StructureV3、MonkeyOCR-pro-1.2B模型评测结果,新增了Mistral OCR、Pix2text、phocr、Nanonets-OCR-s infer脚本。
[2025/07/31] 新增了MinerU2.0-vlm、Marker-1.7.1、PP-StructureV3、MonkeyOCR-pro-1.2B、Dolphin、Nanonets-OCR-s、OCRFlux-3B、Qwen2.5-VL-7B、InternVL3-78B模型的评测;更新了MinerU版本。
[2025/03/27] 新增了Pix2Text、Unstructured、OpenParse、Gemini-2.0 Flash、Gemini-2.5 Pro、Mistral OCR、OLMOCR、Qwen2.5-VL-72B模型的评测;
[2025/03/10] OmniDocBench被CVPR 2025接收啦!
[2025/01/16] 更新Marker、Tesseract OCR、StructEqTable版本;新增Docling、OpenOCR、EasyOCR评测;Table部分的Edit Distance计算改成用norm后的字段;新增评测模型版本信息。
该评测集涉及1651个PDF页面,涵盖10种文档类型、5种排版类型和5种语言类型。OmniDocBench具有丰富的标注,包含28个block级别的标注(文本段落、标题、表格等)和4个Span级别的标注(文本行、行内公式、角标等)。所有文本相关的标注框上都包含文本识别的标注,公式包含LaTeX标注,表格包含LaTeX和HTML两种类型的标注。OmniDocBench还提供了各个文档组件的阅读顺序的标注。除此之外,在页面和block级别还包含多种属性标签,标注了5种页面属性标签、3种文本属性标签和6种表格属性标签。

【评测集的数据格式】
评测集的数据格式为JSON,其结构和各个字段的解释如下:
[{
"layout_dets": [ // 页面元素列表
{
"category_type": "text_block", // 类别名称
"poly": [
136.0, // 位置信息,分别是左上角、右上角、右下角、左下角的x,y坐标
781.0,
340.0,
781.0,
340.0,
806.0,
136.0,
806.0
],
"ignore": false, // 是否在评测的时候不考虑
"order": 0, // 阅读顺序
"anno_id": 0, // 特殊的标注ID,每个layout框唯一
"text": "xxx", // 可选字段,OCR结果会写在这里
"latex": "$xxx$", // 可选字段,formula和table的LaTeX会写在这里
"html": "xxx", // 可选字段,table的HTML会写在这里
"attribute" {"xxx": "xxx"}, // layout的分类属性,后文会详细展示
"line_with_spans:": [ // span level的标注框
{
"category_type": "text_span",
"poly": [...],
"ignore": false,
"text": "xxx",
"latex": "$xxx$",
},
...
],
"merge_list": [ // 只有包含merge关系的标注框内有这个字段,是否包含merge逻辑取决于是否包含单换行分割小段落,比如列表类型
{
"category_type": "text_block",
"poly": [...],
... // 跟block级别标注的字段一致
"line_with_spans": [...]
...
},
...
]
...
],
"page_info": {
"page_no": 0, // 页码
"height": 1684, // 页面的宽
"width": 1200, // 页面的高
"image_path": "xx/xx/", // 标注的页面文件名称
"page_attribute": {"xxx": "xxx"} // 页面的属性标签
},
"extra": {
"relation": [ // 具有相关关系的标注
{
"source_anno_id": 1,
"target_anno_id": 2,
"relation": "parent_son" // figure/table与其对应的caption/footnote类别的关系标签
},
{
"source_anno_id": 5,
"target_anno_id": 6,
"relation_type": "truncated" // 段落因为排版原因被截断,会标注一个截断关系标签,后续评测的时候会拼接后再作为一整个段落进行评测
},
]
}
},
...
]
【验证集类别】
验证集类别包括:
# Block级别标注框
'title' # 标题
'text_block' # 段落级别纯文本
'figure', # 图片类
'figure_caption', # 图片说明、标题
'figure_footnote', # 图片注释
'table', # 表格主体
'table_caption', # 表格说明和标题
'table_footnote', # 表格的注释
'equation_isolated', # 行间公式
'equation_caption', # 公式序号
'header' # 页眉
'footer' # 页脚
'page_number' # 页码
'page_footnote' # 页面注释
'abandon', # 其他的舍弃类(比如页面中间的一些无关信息)
'code_txt', # 代码块
'code_txt_caption', # 代码块说明
'reference', # 参考文献类
# Span级别标注框
'text_span' # span级别的纯文本
'equation_ignore', # 需要忽略的公式类
'equation_inline', # 行内公式类
'footnote_mark', #文章的上下角标
【验证集属性标签】
页面分类属性包括:
'data_source': #PDF类型分类
academic_literature # 学术文献
PPT2PDF # PPT转PDF
book # 黑白的图书和教材
colorful_textbook # 彩色图文教材
exam_paper # 试卷
note # 手写笔记
magazine # 杂志
research_report # 研报、财报
newspaper # 报纸
'language':#语种
en # 英文
simplified_chinese # 简体中文
en_ch_mixed # 中英混合
'layout': #页面布局类型
single_column # 单栏
double_column # 双栏
three_column # 三栏
1andmore_column # 一混多,常见于文献
other_layout # 其他
'watermark': # 是否包含水印
true
false
'fuzzy_scan': # 是否模糊扫描
true
false
'colorful_backgroud': # 是否包含彩色背景,需要参与识别的内容的底色包含两个以上
true
false
标注框级别属性-表格相关属性:
'table_layout': # 表格的方向
vertical #竖版表格
horizontal #横版表格
'with_span': # 合并单元格
False
True
'line':# 表格的线框
full_line # 全线框
less_line # 漏线框
fewer_line # 三线框
wireless_line # 无线框
'language': #表格的语种
table_en # 英文表格
table_simplified_chinese #中文简体表格
table_en_ch_mixed #中英混合表格
'include_equation': # 表格是否包含公式
False
True
'include_backgroud': # 表格是否包含底色
False
True
'table_vertical' # 表格是否旋转90度或270度
False
True
标注框级别属性-文本段落相关属性:
'text_language': # 文本的段落内语种
text_en # 英文
text_simplified_chinese #简体中文
text_en_ch_mixed #中英混合
'text_background': #文本的背景色
white # 默认值,白色背景
single_colored # 除白色外的单背景色
multi_colored # 混合背景色
'text_rotate': # 文本的段落内文字旋转分类
normal # 默认值,横向文本,没有旋转
rotate90 # 旋转角度,顺时针旋转90度
rotate180 # 顺时针旋转180度
rotate270 # 顺时针旋转270度
horizontal # 文字是正常的,排版是竖型文本
标注框级别属性-公式相关属性:
'formula_type': #公式类型
print # 打印体
handwriting # 手写体
OmniDocBench开发了一套基于文档组件拆分和匹配的评测方法,对文本、表格、公式、阅读顺序这四大模块分别提供了对应的指标计算,评测结果除了整体的精度结果以外,还提供了分页面以及分属性的精细化评测结果,精准定位模型文档解析的痛点问题。

评测流水线需要 Python 3.10 以及若干系统依赖(TeX Live、ImageMagick、Ghostscript)以支持 CDM 公式指标。提供两种部署方式,推荐使用Docker方式:
方式 A:Docker(推荐)
预构建 Docker 镜像打包了经过验证的完整运行时(Python 3.10 conda 环境 + TeX Live 2025 + ImageMagick 7.1.1-47 + Ghostscript 9.55.0)。
拉取镜像
docker pull ghcr.io/zeng-weijun/omnidocbench-eval:repro-ubuntu2204
使用自己的数据运行
docker run --rm \
--entrypoint bash \
-v /path/to/your_gt.json:/workspace/gt/your_gt.json:ro \
-v /path/to/your_predictions:/workspace/data_md/predictions:ro \
-v /path/to/output:/workspace/result \
ghcr.io/zeng-weijun/omnidocbench-eval:repro-ubuntu2204 \
-c 'cat > configs/custom.yaml << "EOF"
end2end_eval:
metrics:
text_block:
metric: [Edit_dist]
display_formula:
metric: [Edit_dist, CDM]
table:
metric: [TEDS, Edit_dist]
reading_order:
metric: [Edit_dist]
dataset:
dataset_name: end2end_dataset
ground_truth:
data_path: ./gt/your_gt.json
prediction:
data_path: ./data_md/predictions
match_method: quick_match
match_workers: 4
quick_match_truncated_timeout_sec: 300
timeout_fallback_max_chunk_span: 10
timeout_fallback_order_penalty: 0.10
EOF
python pdf_validation.py --config configs/custom.yaml'
验证镜像内运行时
docker run --rm --entrypoint bash \
ghcr.io/zeng-weijun/omnidocbench-eval:repro-ubuntu2204 \
-lc 'bash script/verify_repro_runtime.sh'
从源码构建(可选)
bash script/build_repro_docker_image.sh
方式 B:Conda
需要 Ubuntu 22.04 / 20.04,至少 8 GB 磁盘空间和 8 GB 内存,root 权限。
第 1 步 — 创建环境并安装 Python 依赖
conda create -n omnidocbench python=3.10 -y
conda activate omnidocbench
git clone <repo_url> && cd Omnidocbench
pip install -e .
python -c "from src.core.pipeline import run_config_file; print('OK')"
第 2 步 — 安装 Ghostscript
CDM 指标需要 Ghostscript 通过 ImageMagick 完成 PDF 到 PNG 的转换。
sudo apt-get update && sudo apt-get install -y ghostscript
gs --version # 预期: 9.55.0 (Ubuntu 22.04)
第 3 步 — 安装 TeX Live 2025
CDM 指标需要 pdflatex 并支持 CJK 中文字体。
cd ~ && wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar -xzf install-tl-unx.tar.gz && cd install-tl-*/
sudo ./install-tl # 交互式安装,全量约 7 GB
echo 'export PATH=/usr/local/texlive/2025/bin/x86_64-linux:$PATH' >> ~/.bashrc
source ~/.bashrc
pdflatex --version | head -2 # 预期: pdfTeX ... (TeX Live 2025)
# 验证 CJK 支持
kpsewhich CJK.sty && kpsewhich c70gkai.fd
# 如果没有输出: sudo tlmgr install cjk cjkutils arphic gkai
第 4 步 — 安装 ImageMagick 7.x(从源码编译)
Ubuntu 22.04 apt 默认是 ImageMagick 6.x,CDM 需要 7.x。
sudo apt-get install -y build-essential pkg-config \
libjpeg-dev libpng-dev libtiff-dev libwebp-dev \
libfreetype6-dev libfontconfig1-dev
cd /tmp
wget https://github.com/ImageMagick/ImageMagick/archive/refs/tags/7.1.1-47.tar.gz
tar xzf 7.1.1-47.tar.gz && cd ImageMagick-7.1.1-47
./configure --with-modules --enable-shared --with-gslib \
--with-gs-font-dir=/usr/share/fonts/type1/gsfonts --prefix=/usr/local
make -j$(nproc) && sudo make install && sudo ldconfig
magick --version | head -2 # 预期: ImageMagick 7.1.1-47
# 允许 PDF 读写
POLICY_FILE=$(find /usr/local/etc/ImageMagick-7 -name policy.xml 2>/dev/null | head -1)
[ -n "$POLICY_FILE" ] && sudo sed -i \
's|<policy domain="coder" rights="none" pattern="PDF" />|<policy domain="coder" rights="read\|write" pattern="PDF" />|' \
"$POLICY_FILE"
第 5 步 — 验证并运行
python -m pytest tools/test_environment_and_smoke.py::TestEnvironmentVersions -v -s
python pdf_validation.py --config configs/end2end.yaml
| 组件 | 版本 |
|---|---|
| Python | 3.10.x |
| TeX Live | 2025 |
| pdflatex | 3.141592653-2.6-1.40.28 |
| ImageMagick | 7.1.1-47 |
| Ghostscript | 9.55.0 |
评测流水线有三个并行阶段,建议每个阶段的 worker 数设为机器空闲线程数的 1/3 ~ 1/2,避免死锁或 OOM:
| 阶段 | 配置项 | 说明 |
|---|---|---|
| 页面匹配 | match_workers |
文本对齐 |
| CDM 渲染 | cdm_workers |
每个 worker 约 1 GB 内存 |
| TEDS 表格 | teds_workers |
表格结构相似度 |
所有评测输入通过 configs/end2end.yaml 配置。修改 ground_truth.data_path 和 prediction.data_path 指向你的数据,然后运行:
python pdf_validation.py --config <config_path>
方式C:skills
我需要用omnidocbench做xx模型的评测,用docker部署,GT路径是/path/OmniDocBench.json,预测结果路径是/path/predfolder,需要CDM,请帮我跑分
端到端评测是对模型在PDF页面内容解析上的精度作出的评测。以模型输出的对整个PDF页面解析结果的Markdown作为Prediction。Overall指标的计算方式为:
$$\text{Overall} = \frac{(1-\textit{Text Edit Distance}) \times 100 + \textit{Table TEDS} +\textit{Formula CDM}}{3}$$
| Model Type | Met |
|---|
$ claude mcp add OmniDocBench \
-- python -m otcore.mcp_server <graph>