简介
与传统的 OCR 或基本视觉识别任务不同,文档解析必须应对布局的多样性、分层的视觉层次结构以及多种模态的无缝集成。
而现代文档经常将密集的文本、复杂的表格、数学表达式、嵌入式图形和手写注释结合在一起,通常还混合了多种语言和格式。因此我们不仅必须在细粒度级别上检测和识别内容,还必须重建对下游应用至关重要的底层结构和语义关系。
传统 OCR 如上就像“拼图游戏”:先拆文字、再拼表格、最后猜关系,一步错步步错。如 MinerU、Marker 等工具采用模块化设计,将文档解析工作流程分解为一系列专门的、细粒度的子任务,包括布局分析、区域分割、文本识别、表格和公式检测以及结构。一些开源的 OCR 模型可查阅:5 款开源模型精准解析数字、文本、表格及公式等内容!
目前端到端的方法,尤其是像 GPT-4 o、Qwen 2.5-VL、Gemini-2.5 这类模型,直接从原始输入生成结构化表示,在处理 PDF 扫描件时表现亮眼,不仅能提取文字,还能做表格分析、图表解读,甚至回答复杂问题。但最大的问题是模型大、推理缓慢、资源消耗高,一张 A 4 纸可能就要跑好几秒。例如,Qwen 2.5-VL-7 B 的推理速度仅为 MinerU 的 18%。
有没有一种方法,能在精度与效率之间取得平衡?既能准确还原文档结构,又不占用太多算力资源?答案是肯定的!
MonkeyOCR 采用结构-识别-关联(SRR)三元组范式,简化了模块化方法的多工具流水线,同时避免了使用大型多模态模型进行整页文档处理的低效率。
- 与基于流水线的方法 MinerU 相比,我们的方法在九种类型的中英文文档中平均提高了 5.1%,其中公式提高了 15.0%,表格提高了 8.6%。
- 与端到端模型相比,我们的 3 B 参数模型在英文文档上的平均性能最好,超过了 Gemini 2.5 Pro 和 Qwen 2.5 VL-72 B 等模型。
- 在多页文档解析方面,我们的方法达到了每秒 0.84 页的处理速度,超过了 MinerU(0.65)和 Qwen 2.5 VL-7 B(0.12)。
MonkeyOCR 目前不支持已拍照的文档,但我们将在今后的更新中不断改进。敬请期待!目前,我们的模型部署在单个 GPU 上,因此如果太多用户同时上传文件,可能会出现 “此应用程序当前繁忙 ”之类的问题。我们正在积极努力支持 Ollama 和其他部署解决方案,以确保为更多用户提供更流畅的体验。此外,请注意演示页面上显示的处理时间并不能单独反映计算时间,它还包括结果上传和其他开销。在高流量期间,这个时间可能会更长。MonkeyOCR、MinerU 和 Qwen 2.5 VL-7 B 的推理速度是在 H 800 GPU 上测量的。
快速入门
本地安装
1. 安装 MonkeyOCR
查看安装指南设置您的环境。
2. 下载模型权重
从 Huggingface 下载我们的模型。
pip install huggingface_hub
python tools/download_model.py
您也可以从 ModelScope 下载我们的模型。
pip install modelscope
python tools/download_model.py -t modelscope
3. 推理
您可以使用以下命令解析 PDF 或图像文件或包含 PDF 或图像的目录:
# 确保您在MonkeyOCR目录中
# 将input_path替换为PDF或图像或目录的路径
# 端到端解析
python parse.py input_path
# 单任务识别(输出markdown)
python parse.py input_path -t text/formula/table
# 指定输出目录和模型配置文件
python parse.py input_path -o ./output -c config.yaml
💡 温馨提示
对于中文场景,或者文本、表格等被误认为是图像的情况,您可以尝试使用以下结构检测模型:layout_zh.pt。
(如果在 model_weight/Structure/
中找不到该模型,您可以手动下载。)
要使用此模型,请按如下方式更新配置文件:
在 model_configs.yaml
中,将:
Structure/doclayout_yolo_docstructbench_imgsz1280_2501.pt
替换为:
Structure/layout_zh.pt
输出结果
MonkeyOCR 生成三种类型的输出文件:
- 处理后的 Markdown 文件 (
your.md
):最终解析的文档内容,以 markdown 格式呈现,包含文本、公式、表格和其他结构元素。 - 布局结果 (
your_layout.pdf
):绘制在原 PDF 上的布局结果。 - 中间块结果 (
your_middle.json
):一个 JSON 文件,包含所有检测到的块的详细信息,包括:- 块的坐标和位置
- 块的内容和类型信息
- 块之间的关系信息
这些文件提供了最终格式化的输出和详细的中间结果,用于进一步分析或处理。
4. Gradio 演示
# 启动演示
python demo/demo_gradio.py
Docker 部署
-
导航到
docker
目录:cd docker
-
前提条件: 确保 Docker 中启用了 NVIDIA GPU 支持(通过
nvidia-docker2
)。
如果未启用 GPU 支持,请运行以下命令设置环境:bash env.sh
-
构建 Docker 镜像:
docker compose build monkeyocr
注意: 如果您的 GPU 来自 30 系列、40 系列或其他类似系列,请构建修补过的镜像以兼容 LMDeploy:
docker compose build monkeyocr-fix
-
运行容器并启动 Gradio 演示(可通过端口 7860 访问):
docker compose up monkeyocr-demo
或者,启动交互式开发环境:
docker compose run --rm monkeyocr-dev
-
运行 FastAPI 服务(可通过端口 7861 访问):
docker compose up monkeyocr-api
基准测试结果
以下是我们的模型在 OmniDocBench 上的评估结果。MonkeyOCR-3 B 使用 DocLayoutYOLO 作为结构检测模型,而 MonkeyOCR-3 B*使用我们训练的结构检测模型,提升了中文性能。
1. 不同任务的端到端评估结果。
模型类型 | 方法 | 总体编辑↓ | 文本编辑↓ | 公式编辑↓ | 公式 CDM↑ | 表格 TEDS↑ | 表格编辑↓ | 阅读顺序编辑↓ | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EN | ZH | EN | ZH | EN | ZH | EN | ZH | EN | ZH | EN | ZH | EN | ZH | ||
管道工具 | MinerU | 0.150 | 0.357 | 0.061 | 0.215 | 0.278 | 0.577 | 57.3 | 42.9 | 78.6 | 62.1 | 0.180 | 0.344 | 0.079 | 0.292 |
Marker | 0.336 | 0.556 | 0.080 | 0.315 | 0.530 | 0.883 | 17.6 | 11.7 | 67.6 | 49.2 | 0.619 | 0.685 | 0.114 | 0.340 | |
Mathpix | 0.191 | 0.365 | 0.105 | 0.384 | 0.306 | 0.454 | 62.7 | 62.1 | 77.0 | 67.1 | 0.243 | 0.320 | 0.108 | 0.304 | |
Docling | 0.589 | 0.909 | 0.416 | 0.987 | 0.999 | 1 | - | - | 61.3 | 25.0 | 0.627 | 0.810 | 0.313 | 0.837 | |
Pix 2 Text | 0.320 | 0.528 | 0.138 | 0.356 | 0.276 | 0.611 | 78.4 | 39.6 | 73.6 | 66.2 | 0.584 | 0.645 | 0.281 | 0.499 | |
Unstructured | 0.586 | 0.716 | 0.198 | 0.481 | 0.999 | 1 | - | - | 0 | 0.06 | 1 | 0.998 | 0.145 | 0.387 | |
OpenParse | 0.646 | 0.814 | 0.681 | 0.974 | 0.996 | 1 | 0.11 | 0 | 64.8 | 27.5 | 0.284 | 0.639 | 0.595 | 0.641 | |
专家 VLMs | GOT-OCR | 0.287 | 0.411 | 0.189 | 0.315 | 0.360 | 0.528 | 74.3 | 45.3 | 53.2 | 47.2 | 0.459 | 0.520 | 0.141 | 0.280 |
Nougat | 0.452 | 0.973 | 0.365 | 0.998 | 0.488 | 0.941 | 15.1 | 16.8 | 39.9 | 0 | 0.572 | 1.000 | 0.382 | 0.954 | |
Mistral OCR | 0.268 | 0.439 | 0.072 | 0.325 | 0.318 | 0.495 | 64.6 | 45.9 | 75.8 | 63.6 | 0.600 | 0.650 | 0.083 | 0.284 | |
OLMOCR-sglang | 0.326 | 0.469 | 0.097 | 0.293 | 0.455 | 0.655 | 74.3 | 43.2 | 68.1 | 61.3 | 0.608 | 0.652 | 0.145 | 0.277 | |
SmolDocling-256 M | 0.493 | 0.816 | 0.262 | 0.838 | 0.753 | 0.997 | 32.1 | 0.55 | 44.9 | 16.5 | 0.729 | 0.907 | 0.227 | 0.522 | |
通用 VLMs | GPT 4 o | 0.233 | 0.399 | 0.144 | 0.409 | 0.425 | 0.606 | 72.8 | 42.8 | 72.0 | 62.9 | 0.234 | 0.329 | 0.128 | 0.251 |
Qwen 2.5-VL-7 B | 0.312 | 0.406 | 0.157 | 0.228 | 0.351 | 0.574 | 79.0 | 50.2 | 76.4 | 72.2 | 0.588 | 0.619 | 0.149 | 0.203 | |
InternVL 3-8 B | 0.314 | 0.383 | 0.134 | 0.218 | 0.417 | 0.563 | 78.3 | 49.3 | 66.1 | 73.1 | 0.586 | 0.564 | 0.118 | 0.186 | |
混合 | MonkeyOCR-3 B [Weight] | 0.140 | 0.297 | 0.058 | 0.185 | 0.238 | 0.506 | 78.7 | 51.4 | 80.2 | 77.7 | 0.170 | 0.253 | 0.093 | 0.244 |
MonkeyOCR-3 B* [Weight] | 0.154 | 0.277 | 0.073 | 0.134 | 0.255 | 0.529 | 78.5 | 50.8 | 78.2 | 76.2 | 0.182 | 0.262 | 0.105 | 0.183 |
模型类型 | 模型 | 书籍 | 幻灯片 | 财务报告 | 教科书 | 考试试卷 | 杂志 | 学术论文 | 笔记 | 报纸 | 总体 |
---|---|---|---|---|---|---|---|---|---|---|---|
管道工具 | MinerU | 0.055 | 0.124 | 0.033 | 0.102 | 0.159 | 0.072 | 0.025 | 0.984 | 0.171 | 0.206 |
Marker | 0.074 | 0.340 | 0.089 | 0.319 | 0.452 | 0.153 | 0.059 | 0.651 | 0.192 | 0.274 | |
Mathpix | 0.131 | 0.220 | 0.202 | 0.216 | 0.278 | 0.147 | 0.091 | 0.634 | 0.690 | 0.300 | |
专家 VLMs | GOT-OCR | 0.111 | 0.222 | 0.067 | 0.132 | 0.204 | 0.198 | 0.179 | 0.388 | 0.771 | 0.267 |
Nougat | 0.734 | 0.958 | 1.000 | 0.820 | 0.930 | 0.830 | 0.214 | 0.991 | 0.871 | 0.806 | |
通用 VLMs | GPT 4 o | 0.157 | 0.163 | 0.348 | 0.187 | 0.281 | 0.173 | 0.146 | 0.607 | 0.751 | 0.316 |
Qwen 2.5-VL-7 B | 0.148 | 0.053 | 0.111 | 0.137 | 0.189 | 0.117 | 0.134 | 0.204 | 0.706 | 0.205 | |
InternVL 3-8 B | 0.163 | 0.056 | 0.107 | 0.109 | 0.129 | 0.100 | 0.159 | 0.150 | 0.681 | 0.188 | |
混合 | MonkeyOCR-3 B [Weight] | 0.046 | 0.120 | 0.024 | 0.100 | 0.129 | 0.086 | 0.024 | 0.643 | 0.131 | 0.155 |
MonkeyOCR-3 B* [Weight] | 0.054 | 0.203 | 0.038 | 0.112 | 0.138 | 0.111 | 0.032 | 0.194 | 0.136 | 0.120 |

立即体验演示:http://vlrlabmonkey.xyz:7685
我们的演示简单易用:
- 上传 PDF 或图像。
- 点击“解析”按钮,让模型对输入文档执行结构检测、内容识别和关系预测。最终输出将是文档的 markdown 格式版本。
- 选择提示并点击“Test by prompt”,让模型根据所选提示对图像执行内容识别。
2. 支持多种中英文 PDF 类型
3. 公式文档示例

4. 表格文档示例

5. 报纸示例



@misc{li2025monkeyocrdocumentparsingstructurerecognitionrelation,
title={MonkeyOCR: Document Parsing with a Structure-Recognition-Relation Triplet Paradigm},
author={Zhang Li and Yuliang Liu and Qiang Liu and Zhiyin Ma and Ziyang Zhang and Shuo Zhang and Zidun Guo and Jiarui Zhang and Xinyu Wang and Xiang Bai},
year={2025},
eprint={2506.05218},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2506.05218},
}
参考文章
https://mp.weixin.qq.com/s/DFcksDY4o5vVnTHmKuli3A
https://github.com/Yuliang-Liu/MonkeyOCR
https://mp.weixin.qq.com/s/DFcksDY4o5vVnTHmKuli3A