
向AI转型的程序员都关注公众号 机器学习AI算法工程
文档AI(Document AI)涵盖文字识别、公式解析、表格抽取、版面分析、文档视觉问答等任务,是办公自动化、票据处理、科研文献结构化等场景的核心技术。一个长期存在的瓶颈是:主流视觉编码器(如 CLIP、DINO、SAM 一类)是在自然图像上预训练的,直接迁移到文档图像时,由于文档中密集文字与细粒度字符笔画对"字符级"视觉感知的要求,往往表现不佳。MonkeyOCRv2 正是围绕这一瓶颈,构建了一块"文档原生"的视觉-文本基础模型(Visual-Text Foundation Model),配套构建了目前规模最大的文档场景预训练语料库 MonkeyDoc v2,并以冻结视觉骨干 + 轻量语言模型的方式,在文档解析与文档理解两类下游任务上取得开源最优与跨模型领先的表现。

一、痛点:为什么"通用视觉模型"读不懂文档
文档AI对视觉骨干的要求,与通用自然图像理解存在本质差异,这一矛盾构成了该领域的主要痛点:
- 感知粒度要求不同:
自然图像预训练关注的是"物体"与"区域",几像素偏差影响有限;而文档图像需要的是"字符级"感知——一个字的某一笔、表格里一根细线、公式里一个上标,差几个像素含义就完全不同。论文指出,主流视觉编码器缺乏文档导向的适配,无法有效捕捉这种细粒度笔画与版面结构。 - 纯文本监督会"走捷径":
若只用文本生成目标来预训练,编码器容易仅依赖语言上下文去"猜"文字,而丢掉笔画、字形、版面等可见的视觉证据;一旦遇到生僻字、低分辨率扫描件、需要逐字定位的场景,就会暴露出幻觉与定位不准。 - 缺大规模、多语种、高可靠的文档预训练语料:
要训练一块文档原生的视觉骨干,需要海量且标注可靠的文档图像-文本对。此前真正覆盖多语种、且标注质量经过严格控制的文档预训练语料库一直缺位,使"文档原生预训练"难以成为可复现的研究路线。
通俗解释:把文档识别想象成"看一张布满细小字迹的证件照"。通用视觉模型像是只看过风景照的人,能认出"这是一张纸、上面有人",却看不清每个字的笔画;而文档原生预训练,相当于专门训练一个"识文断字"的视觉专家,连笔画的起承转合都记得住。两者的差距,正是字符级感知的有无。

二、技术创新点
MonkeyOCRv2 的三个核心设计决策,分别对应上述三个痛点:构建文档原生语料、设计双目标预训练、以冻结骨干释放预训练价值。
创新点 1:MonkeyDoc v2 —— 目前最大的文档场景视觉-文本语料库
论文构建了 MonkeyDoc v2,据作者所述是迄今规模最大的文档场景视觉-文本预训练数据集。其规模与构成如下:
| 1.13 亿 | |
17 种语言涵盖简体/繁体中文、英语、阿拉伯语、德语、西班牙语、法语、印地语、印尼语、意大利语、日语、韩语、荷兰语、葡萄牙语、俄语、泰语、越南语,拉丁与非拉丁语系兼有。其标注采用"多专家一致"流水线:先用布局检测模型切出文本块、表格、公式等区域,再由 dots.mocr、PaddleOCR-VL、Qwen3-VL 三个互补专家模型各自独立转录,取平均一致性最高的预测以抑制单一模型的失败模式;随后进行页面级质控——用白块遮盖检测区域、交由强文档模型检查是否仍有残留文本(漏检则整页丢弃),并用 LLM 校验阅读顺序的语义连贯性。该质控从约 120 万页高难度来源中仅保留约 90 万页,约 1/4 被淘汰,以保证标注可靠性。

创新点 2:双目标预训练 —— 既要语义对齐,又要视觉保真
在 MonkeyDoc v2 上,MonkeyOCRv2 采用了一个将"图像到文本生成"与"像素级文档重建"联合学习的目标。前者把视觉表示与文本内容对齐,提供密集直接的监督;后者保留字符笔画、字形结构与版面细节等纯文本监督下可能被丢弃的细粒度视觉证据,从而在语言上下文弱或不可用时,仍能为下游预测提供基于可见证据的 grounding。
通俗解释:双目标预训练像让模型同时"读懂"和"看清"一张文档。读懂(文本生成)是把图上写了什么对齐到文字;看清(像素重建)是强迫模型把原图逐像素还原,从而把笔画、排版这些细节留住。只读不懂,模型会偷懒靠猜;只看清不看字,又不知道内容。两者结合,才是"既认字又认形"的文档视觉骨干。
创新点 3:冻结视觉骨干 + 轻量语言模型
预训练完成后,MonkeyOCRv2 将视觉编码器全程冻结,仅搭配一个轻量级语言模型(文档解析用 Qwen3-0.6B,文档理解用 Qwen3-1.7B),通过 MLP 投影器对齐视觉与语言特征。冻结设计的目的在于"隔离预训练表示的贡献"——证明下游涨点确实来自文档原生的视觉骨干,而非语言模型被微调出来的便宜。这一设计也使整个文档解析模型的总参数仅为 0.7B,远低于此前同类模型。
三、技术原理
3.1 双目标预训练的数学形式
预训练框架由视觉编码器 Ev、视觉解码器 Dv 与文本解码器 Dt 组成。给定输入图像 I,先得到视觉 tokens:
z = E_v(I)z 随后分别送入视觉解码器做图像重建、文本解码器做文本生成。总体目标为:
L_pretrain = L_text + λ · L_rec (λ 固定为 1.0)文本生成目标(Ltext):视觉 tokens 与任务特定 prompt 一起送入 Dt,自回归地预测图像中描绘的文本内容,使用标准自回归交叉熵损失,将视觉表示与文本语义对齐。
像素级文档重建目标(Lrec):在 MSE 重建基础上,额外引入结构感知重建以保留笔画级结构:
L_pix = (1 / 3HW) · ‖ Î − I ‖²L_rec = L_pix + α · L_struct (α = 0.5)其中结构感知损失 Lstruct 匹配两类表示:一是用 Sobel 梯度计算的软边缘图,对齐笔画轮廓;二是用迭代最小池化近似的截断距离到边缘图,对齐笔画之间的空间关系。论文还给出受控实验佐证:在低分辨率下,加入重建后,扰乱文本的准确率从 55.4% 提升至 72.1%,与正常文本的差距从 29.3% 缩小至 15.3%;在 CHAOS-Bench 文档幻觉评估中带来 +2.6% 提升;消融显示仅 MSE 重建 +1.0%,加入边缘/距离感知后再 +4.2%。
3.2 文档解析模型结构
MonkeyOCRv2-Parsing 由三部分构成:视觉编码器(MonkeyOCRv2-S 或 -B,全程冻结)、MLP 投影器(视觉-语言对齐)、LLM(Qwen3-0.6B)。训练分两阶段:第一阶段仅训练 MLP 投影器(学习率 2×10⁻⁴),第二阶段 MLP 与 LLM 联合训练(学习率 2×10⁻⁵),视觉骨干始终不参与更新。推理采用"先排后识"流程——先预测文档元素的阅读顺序坐标与类别,再按框裁剪并行识别内容,最后按阅读顺序组装输出。
视觉编码器提供三个变体,在同一预训练目标与同一 MonkeyDoc v2 语料下训练,仅在骨干实例化上不同:MonkeyOCRv2-S(ViT-S,28M,通用)、MonkeyOCRv2-B(ViT-B,113M,通用)、MonkeyOCRv2-AS(VITAEv2-S,21M,面向检测/分割/篡改定位,因其多尺度归纳偏置更适配跨分辨率任务)。采用动态分辨率训练,视觉 token 数量随输入分辨率自适应。
四、技术成果(实验数据)
论文在五个代表性文档分析任务(文本识别、公式识别、文本检测、文档篡改检测、重叠文本分割)上,将 MonkeyOCRv2 替换原骨干,并在文档解析(MDPBench)与文档理解(八项基准)上评估其作为多模态大语言模型视觉编码器的表现。
4.1 文档解析主结果:MDPBench
MDPBench 是近期覆盖数字版与拍摄版、横跨 17 种语言的文档解析基准。MonkeyOCRv2-B-Parsing 以 0.7B 总参数取得开源模型第一:
关键结论:MonkeyOCRv2-B-Parsing 的视觉编码器比 dots.mocr 小约 11 倍,总参数小约 4 倍,却在综合得分上高出 2.8 个绝对百分点(83.3 vs 80.5)。拉丁语系平均 84.2、非拉丁语系平均 80.8,两种文字体系均表现稳定。在 OmniDocBench 1.6 上,该 0.7B 模型还超过了 Qwen3-VL-235B、GPT-5.2、InternVL3.5-241B、Kimi K2.5 等体量数十至数百倍的通用大模型。
4.2 五个任务替换骨干的一致增益
将 MonkeyOCRv2 作为视觉骨干替换各任务原模型的编码器,性能一致提升,说明文档原生预训练具有通用价值:
篡改检测与重叠文本分割两项涨点最高(近 5–6 个点),二者恰好最依赖字符级笔画与空间关系感知,正好落在文档原生预训练的强项区间。
4.3 文档理解:同训练条件下超越 CLIP / DINO / SAM 类骨干
为排除数据量与训练策略的干扰,论文做了一组严格控制变量的对比——更换不同视觉骨干,其余训练数据、优化设置与解码流程完全相同:
MonkeyOCRv2-B 在八项基准上的平均得分为 57.2,相对最强的 OpenVision-B(44.0)高出 13.2 个百分点,相对 CLIP/DINO 这类通用骨干更是翻倍式领先。这证明在文档场景下,一块专门为文档训练的视觉骨干,远比"通用预训练 + 大模型"的堆料路线划算。
MonkeyOCRv2 已发布多个可直接使用的检查点:视觉编码器 MonkeyOCRv2-S / -B / -AS,文档解析模型 MonkeyOCRv2-S-Parsing(0.6B,综合 82.5)与 -B-Parsing(0.7B,综合 83.3),文档理解模型 MonkeyOCRv2-S-Und(1.7B)与 -B-Und(1.8B,综合 57.2)。权重与 MonkeyDoc v2 数据集(HuggingFace / ModelScope)均已开放。



五、实战代码案例
以下基于官方仓库 github.com/Yuliang-Liu/MonkeyOCRv2 给出最小可复现路径。所有命令与接口均来自官方文档,模块注册与参数细节请以仓库源码为准。
5.1 环境准备与权重下载
conda create -n MonkeyOCRv2 python=3.10conda activate MonkeyOCRv2pip install torch==2.6.0 torchvision==0.21.0 --index-url https://download.pytorch.org/whl/cu126pip install transformers==4.57.6pip install flash-attn==2.7.4.post1 --no-build-isolationpip install accelerate qwen_vl_utils# 下载所需权重(视觉编码器 / 解析 / 理解)python download_model.py -n MonkeyOCRv2-Bpython download_model.py -n MonkeyOCRv2-B-Parsingpython download_model.py -n MonkeyOCRv2-B-Parsing-DFlash # DFlash 加速版python download_model.py -n MonkeyOCRv2-B-Und5.2 提取视觉特征(将骨干接入自有任务)
from transformers import AutoModelencoder = AutoModel.from_pretrained( "zenosai/MonkeyOCRv2-B", trust_remote_code=True, dtype="auto", device_map="auto",)# 取 last_hidden_state 作为文档视觉表示,喂给下游检测 / 分割 / 识别头# 命令行方式:# cd vision# python extract_feature.py -m ../model_weight/MonkeyOCRv2-B -i ../images_test/ar.JPEG# python extract_feature_vitae.py -m ../model_weight/MonkeyOCRv2-AS -i ../images_test/ar.JPEG5.3 文档解析(vLLM 服务 + DFlash 加速)
# 步骤1:启动 vLLM 服务(DFlash 需 vLLM 0.25.1 + CUDA 12.9+)cd parsingpython serve.py -m ../model_weight/MonkeyOCRv2-B-Parsing \ -d ../model_weight/MonkeyOCRv2-B-Parsing-DFlash -p 8888# 步骤2:CLI 解析(含版面可视化)python parse.py -i ../images_test -o output/test \ -s http://127.0.0.1:8888 --draw-layout --skip-processed# 可选:Gradio Web Demo(http://localhost:8891)# python demo/gradio_demo.py -s http://127.0.0.1:8888 -p 8891# 可选:FastAPI 服务(http://localhost:8000/docs)# python fastapi/main.py -s http://127.0.0.1:8888 -p 80005.4 文档理解(视觉问答)
cd understandingpython infer.py -m ../model_weight/MonkeyOCRv2-B-Und \ -i ../images_test/vqa.png -q 'What is the serving size?'说明:DFlash 加速依赖 vLLM 0.25.1 与 CUDA 12.9+;若环境不支持,可退回 vLLM 0.11.2(无 DFlash,仍可正常推理)。MonkeyDoc v2 全量约需 10 TB 存储,建议预留 11 TB 可用空间,可通过 ModelScope 下载。
六、总结
MonkeyOCRv2 给出了一套面向文档AI的"文档原生视觉-文本基础模型"方案,核心启示可归纳为三点:
- 文档场景需要专门的视觉预训练:
在字符级感知要求下,一块为文档重新训练的视觉骨干,显著优于在自然图像上预训练的通用骨干(同条件下文档理解平均分 57.2 vs CLIP/DINO 的约 16)。 - 双目标预训练是保留细粒度证据的关键:
文本生成负责语义对齐,像素级(结构感知)重建负责保留笔画与版面,二者互补,既抑制幻觉又强化可见证据 grounding。 - 冻结骨干 + 轻量 LLM 实现"以小博大":
0.7B 的解析模型以约 11 倍更小的视觉编码器,在 MDPBench 上反超 3B 的前开源 SOTA,并超越多个体量数十倍的闭源通用大模型,证明垂类专用预训练在文档这一高感知精度需求场景下具备明确的性价比优势。
该工作表明,文档智能的"眼睛"值得被单独、专门地训练;在医学影像、遥感、工业缺陷检测等同样依赖细粒度视觉感知的垂类中,这种"文档原生预训练"的思路亦有可借鉴之处。未来可进一步探索双目标预训练在其他垂类上的迁移,以及该骨干在更复杂跨文档推理任务中的上限。
机器学习算法AI大数据技术
搜索公众号添加:datanlp

长按图片,识别二维码
阅读过本文的人还看了以下文章:
【模型高效部署】tensorrtx 深度解读,yolov11高性能推理实战案例
整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加:datayx

夜雨聆风