腾讯开源微信端到端文档解析模型 WeVisDoc 一张图片直接出 Markdown
腾讯微信视觉团队开源 2B / 4B 文档解析模型,一张页面图片直接输出 Markdown。它的优势集中在公式、表格和退化页面,训练方法则是先广覆盖,再针对剩余错误补数据或增加练习。
腾讯微信视觉团队开源了文档解析模型 WeVisDoc,有 2B 和 4B 两个版本。给它一张文档页面图片,它直接输出整页 Markdown,公式写成 LaTeX,表格写成 HTML。
WeVisDoc 的主要功能特点
- 整页图片直接转 Markdown:输入一张文档页面图,模型一次输出完整页面,不需要先把标题、正文、表格和公式分别裁出来。
- 保留复杂文档结构:正文转成普通 Markdown,公式转成 LaTeX,表格转成 HTML,并按页面内容恢复阅读顺序。
- 单模型完成解析:版面理解、文字识别、公式识别和表格重建都由同一个视觉语言模型完成,不需要另外部署版面检测器和 OCR 引擎。
- 提供 2B 与 4B 两个版本:2B 更适合资源有限或清晰页面较多的场景;4B 在拍照、翻拍等退化页面上更有优势。
- 可以本地运行或部署成服务:项目公开了 Apache-2.0 权重与推理代码,既能用 Transformers 本地调用,也能通过 vLLM 提供接口。
端到端解析与 WeVisDoc 的定位
在构建知识库检索(RAG)、自动化报表分析和多模态工作流时,把排版复杂的 PDF 和扫描件转为大语言模型易读的 Markdown,是一个绕不开的基础环节。目前行业内主要有两条截然不同的工程路线:
一条是流水线系统(Pipeline-based),代表方案如 MinerU 和 PaddleOCR。这类系统把任务拆解为多个步骤:先用目标检测模型识别版面区域(区分标题、正文、图片、表格、公式),再把切下来的图块分发给不同的专用 OCR 引擎、表格重建工具和 LaTeX 公式识别模型,最后依靠规则或启发式算法拼装成最终的阅读顺序。这种模块化架构每一步都能用专门的模型,代价是链路长、要部署和维护好几个模型,前一步的版面切分一旦出错,后面的识别也会跟着错。
另一条是端到端模型(End-to-End)。端到端模型直接把整张文档图像输入给视觉语言模型(VLM),让模型通过自回归解码一次性输出整页的 Markdown、HTML 表格与 LaTeX 符号。这种方案没有中间拼装环节,部署只需要一个模型,识别对不对全看这个模型自己的能力。
在端到端专用模型类别中,WeVisDoc-4B 在 OmniDocBench v1.6 以及 PureDocBench 干净、算法退化、真实采集三个赛道上均取得领先(图:WeVisDoc 技术报告)
WeVisDoc 采用纯粹的端到端路线。模型直接选用 Qwen3-VL-2B-Instruct 与 Qwen3-VL-4B-Instruct 作为底座,没有额外引入任何外置检测器或特殊解码结构。
评测主要在两个基准上展开。OmniDocBench v1.6 包含 1,651 页自然文档,用来测试不同类型、版式和语言的页面;PureDocBench 则把 1,475 个源页面分别做成干净版、算法退化版和真实拍摄版,用同一份答案观察图片质量变化带来的影响。
两个基准均报告文字编辑距离 TextEdit(越低越好)、公式得分 FormulaCDM 和表格结构相似度 TableTEDS,并以此计算综合得分 Overall =(100×(1−TextEdit) + FormulaCDM + TableTEDS)÷ 3;阅读顺序 ROEdit 单独报告,不计入 Overall。PureDocBench 的三赛道均值则是三个赛道各自 Overall 的平均分。
在涵盖通用大模型、流水线系统与端到端模型的全景评测中,WeVisDoc-4B 在不同口径下的排名如下(Clean、Digital、Real 是 PureDocBench 的三个赛道;「全部模型」指论文表里通用大模型、流水线系统、端到端模型三组合并):
| 口径 | 4B 得分 | 端到端组排名 | 全部模型排名 | 排在前面的 |
|---|---|---|---|---|
| OmniDocBench | 95.38 | 1 / 21 | 3 / 38 | PaddleOCR-VL-1.6、MinerU2.5-Pro(流水线) |
| PureDocBench 均值 | 75.54 | 1 / 21 | 1 / 47 | 无 |
| Clean | 79.81 | 1 / 21 | 1 / 47 | 无 |
| Digital | 77.74 | 1 / 21 | 1 / 47 | 无 |
| Real | 69.08 | 1 / 21 | 3 / 47 | Gemini-3.1-Pro、Qwen3.5-122B-A10B(通用大模型) |
两个基准给出的排序不同:在自然文档组成的 OmniDocBench 上,两套流水线系统排在 WeVisDoc-4B 前面;在 PureDocBench 中,WeVisDoc-4B 的三赛道均值、干净页和算法退化页都排第一,真实拍摄页排第三。选择参考哪个结果,取决于自己的文档更像清晰但版式多样的自然页面,还是打印、拍照和翻屏得到的退化页面。
按论文表 3 的细项排,PureDocBench 三个赛道上,WeVisDoc-4B 的纯文字识别和阅读顺序在端到端组里都不是第一;综合分第一是因为公式和表格两项全是第一。综合分 Overall 是文字、公式、表格三项等权平均,阅读顺序单独报告、不算在内。所以以文字为主的文档(合同、报告、书籍),应该看文字编辑距离那一项,不能只看综合分。
WeVisDoc-4B 在 PureDocBench 端到端组(21 个模型)里的细项排名:
| 细项 | Clean | Digital | Real |
|---|---|---|---|
| 综合分 Overall(越高越好) | 第 1(79.81) | 第 1(77.74) | 第 1(69.08) |
| 公式 FormulaCDM(越高越好) | 第 1(71.90) | 第 1(71.31) | 第 1(63.14) |
| 表格 TableTEDS(越高越好) | 第 1(88.81) | 第 1(85.99) | 第 1(77.64) |
| 文字编辑距离 TextEdit(越低越好) | 并列第 3(0.213;dots.mocr 0.151 最好) | 第 3(0.241;dots.mocr 0.198 最好) | 第 4(0.336;FD-RL 0.298 最好) |
| 阅读顺序 ROEdit(越低越好) | 第 3(0.340;dots.mocr 0.273 最好) | 第 3(0.361;dots.mocr 0.309 最好) | 并列第 3(0.416;FD-RL 0.391 最好) |
OmniDocBench 上情况不同:端到端组里它的文字编辑距离(0.036)、公式、阅读顺序都是第一,但表格 TableTEDS 92.95 排第 3,低于 1B 参数的 HunyuanOCR-1.5(93.67)和自家 2B(93.03)。
4B 的提升并不是全面碾压:它在 OmniDocBench 上只比此前最好的端到端模型高 0.64 分。2B 在多数场景已经很接近 4B,而 4B 的优势主要随着页面退化加重而扩大;电子版和干净页面可以先试 2B,拍照、翻拍较多时再优先考虑 4B。
两阶段训练机制:从广覆盖到按残差重配
技术报告把问题归到训练数据上:现有的训练语料偏向常见文档类型和干净的电子版页面,而单纯扩大数据覆盖面,并不能告诉你模型剩下的短板该怎么补。WeVisDoc 不改模型结构,而是把训练分成两个阶段:第一阶段构建宽泛的几何与语义覆盖,第二阶段基于错误诊断实施定向精修。
Stage I 数据构建涵盖来源平衡、多模型联合标注、可执行网页合成以及多路径外观退化模拟(图:WeVisDoc 技术报告)
Stage I:构建 4000 万条记录的广度支撑
第一阶段的核心任务是扩大模型在语义、排版结构和外观退化上的基础覆盖面,训练池包含约 4000 万条记录。此阶段同时更新视觉编码器(ViT)与语言模型(LLM)骨干网络。
训练数据来自四类渠道:开源数据集(文章、书籍、表单、票据、表格、公式的现成标注)、内部收集(补充生产环境文档和评测里少见的采集条件)、定向抓取网页和 PDF(教材、报纸、手写、多语言混排等少见类型)以及合成页面。同一页面的各种退化版本共用一个去重组,统计覆盖面时只算一次,不当成新内容。语言上覆盖简体中文、英文、繁体中文和多语言混排,但论文没有给出按语言拆开的分数。
训练粒度并不局限于整页。在抽样之前,大约 40% 的记录是整页,25% 是纯文字或混合内容的区域截图,25% 是单独的表格,10% 是单独的公式。不同粒度的分工很明确:整页用来学习阅读顺序和元素之间的关系;文字截图保证小字、密字的识别分辨率;单独的表格和公式截图则专门用来练结构。
面对来源各异的公开数据与自建数据,训练过程采取了三项关键机制:
按目标 token 计算预算:在自回归解析任务中,不同样本的监督信号差异巨大。一张密集排版的学术论文单页可能包含数千个 target token,而一张裁切后的独立公式图块只有几十个 token。如果按样本条数定配比,各类数据实际占的训练量就对不上:同样抽 100 条,长页面贡献的输出 token 远多于公式截图。所以团队把训练量按参与损失计算的输出 token 数来算,先定好每类数据该占多少 token,再按这类数据的平均输出长度换算成抽样概率——输出越短的数据要多抽几条,才能拿到同样的 token 份额。损失也按每个 token 平均,而不是每条样本各算一份再平均。
三模型交叉标注与分层复核:对于缺乏精确标注的真实页面,系统同时运行 MinerU2.5-Pro、PaddleOCR-VL-1.6 和 dots.mocr 生成候选结果。三者接近时采用一致结果;两个一致、一个分歧时触发图像验证;三者都不一致时,交给更强的多模态模型和人工复核,作为第二阶段的难例候选。
双编译可执行网页合成:为了补充现实中罕见的极端版式(如嵌套表格、跨栏公式推导),系统采用生成可执行网页程序的方案。一套程序同时经历两个编译流程:一边渲染出高分辨率的网页图片,另一边直接遍历同一个文档对象模型(DOM)树生成无歧义的 Markdown、HTML 表格与 LaTeX 源码。图片和答案出自同一份源码,答案是精确的,不依赖人工或模型标注。
同一页英文手写数学笔记的原始版(左)与叠加老化泛黄纹理版(右),在保证文字可读的前提下拓展视觉特征空间(图:WeVisDoc 技术报告)
为了使模型不局限于标准的数字高清 PDF,合成出的清晰页面与收集到的真实页面会进一步输入退化流水线。流水线模拟两类效果:一类是纸张和传播过程,包括纸张纹理与老化、污渍、油墨褪色或洇开、打印复印扫描带来的网点和条纹、传输时的缩放和压缩;另一类是物理拍摄,包括透视变形、纸面弯曲和折痕、光照不均、翻拍屏幕产生的摩尔纹、运动或景深模糊。只有需要识别的内容全部仍然可见、可读,退化后的图片才沿用原来的标注进入训练;看不清的要么丢掉,要么只截取还看得清的部分重新配标注。
诊断残差:Stage II 怎么分配训练预算
经过第一阶段训练后,模型已经具备通用的页面解析能力,但在某些类型的页面上依然会成批出错。报告指出,残差(第一阶段训完后还剩下的错误)本身不足以说明缺数据:错误也可能来自标注本身不对、图片看不清、解码时停不下来,或者是模型能力所限、再补相似样本也没用。所以第二阶段要先分清原因,再决定是补数据还是多练。
WeVisDoc 的第二阶段构建了一个约 500 万条记录的精修池,并在此阶段冻结视觉编码器,仅对语言模型骨干进行微调。这一阶段的核心逻辑是测量第一阶段模型的剩余缺陷,并针对性倾斜计算资源。
聚类划分出的彩色教材特征簇:包含分节边框、例题块、随文插图与练习区域,展现出高度一致的视觉与结构模式(图:WeVisDoc 技术报告)
整个诊断与重平衡过程分四步:
独立探针集残差测量:设立一个完全不参与训练、不参与难例挖掘、也不与最终基准集重合的独立「探针集」。使用第一阶段得到的检查点在探针集上运行。整页的编辑距离把表格和公式也算进去了,但一小块区域解析失败对整页分数的影响很小(例如拍照合同中周围文字都认对了,输出里的公式却没了,整页编辑距离依然看不出多大问题)。因此诊断时把文字、表格、公式分开算——文字用编辑距离,表格用 1−TEDS,公式用 1−CDM,以此把被整页分数盖住的局部错误找出来。
视觉-结构特征聚类:利用冻结的 SigLIP2 编码器提取页面的全局视觉表征,对视觉特征做降维后,再拼上元素构成、内容密度、语言、版式、采集条件、目标输出长度等结构信息一起聚类,将整个数据空间划分为固定数量的特征簇(如「手写笔记簇」「彩色教材簇」等)。对样本少的簇,误差估计会向全体平均值收缩(样本越少,越靠近平均值),避免被个别样本带偏;若探针集里没有样本,则只用全体平均值当先验,不当作实测出的短板。
高错误样本成因审计:各簇的优先级由「数据覆盖是否稀少」「整体残差」以及「文字/表格/公式里最突出的那一项残差」加权得到。这个排序只用来安排人工审查,不会自动往训练里加数据:要补充新数据,必须先审计确认错误模式、并确认现有数据确实不够;数据充足但模型仍然做错的簇,改为多练。错误率高的样本还会先排查另外三种原因:标注本身有漏内容、顺序错或格式坏的,先修标注;输出反复复读停不下来的,单独标成解码失败;因为裁切、模糊、遮挡或分辨率太低而看不清的,不进难例训练,只保留用来评估鲁棒性。难例还要经过人工和更强的多模态模型复核,确认模型在正确答案面前仍然错得明显,才算真难例。
带上下限的 token 预算重分配:确定各簇的残差程度后,按误差大小调整第二阶段各簇的训练 token 占比,错得多的簇分到更多。为了避免分配变化过于极端,每个簇的新占比都被限制在它自然占比的一定倍数范围内(上下限的倍数报告没有公布具体取值);同时回放第一阶段的高质量数据,减少模型忘掉已经学会的东西。
论文图 8:灰色虚线是重新分配前,绿色实线是分配后;三个面板分别是页面元素类型、版式与结构难度、外观与采集条件,每个面板平均值为 1.0(图:WeVisDoc 技术报告)
从重分配曲线来看,分配前后两条曲线的总量相同(本阶段预算不变),总的效果是训练量从占大头的常见类型挪给少见类型,整体被拉向均匀:页面元素方面,普通文字块原来约为平均值的 1.5 倍,图文混排约 1.3 倍,分配后都降到 1 左右;手写批注、跨元素嵌套、多语言文字原来只有约 0.6–0.8,分配后升到接近 1。版式方面,线性单栏原来约 1.5 倍、规则多栏约 1.3 倍,降到 1 左右;嵌套和跨行跨列结构、非线性阅读顺序、自由版式从约 0.7–0.8 升到接近 1。外观方面,标准打印扫描原来约 1.7 倍,降到 1 左右;模糊、透视和弯曲、光照不均略有上升。
针对第一阶段公式解析残差定向生成的密集公式推导页(图:WeVisDoc 技术报告)
对于数据覆盖明显不足、而且审计确认确实是模型出错的簇(报告举的例子有中文数学文本、嵌套表格、跨区域的阅读顺序关系),数据管线利用可控制的网页生成程序定向扩充合成数据;对于已有覆盖充足但模型仍未充分掌握的簇,则提高该簇已有高质样本在第二阶段的曝光频率。
图解 · Stage II 的分流逻辑
先分清错在哪,再决定补数据还是多练
A训练池里挖高错误样本
逐条排查原因,只有第 4 种算真难例
- 标注本身错了先修标注;修好后只当普通训练数据,不加量
- 图片看不清裁切、模糊、遮挡、分辨率太低:不进难例训练
- 复读停不下来标成解码失败,限制重复曝光
- 答案对、模型仍明显错经人工和更强的多模态模型复核 → 进入单独的难例流,占比单独设定
B独立探针集按簇测残差
探针集不参与训练、挖掘和最终评测;页面按视觉和结构聚成固定的簇
Stage II 训练:本阶段 token 预算固定
- 按残差重新分配错得多的簇分到更多 token,但每簇只能在自然占比的 ϑmin~ϑmax 倍之间
- 回放 Stage I 高质量数据减少忘掉已经学会的东西
- 难例流来自 A 路第 4 种,占比单独控制
视觉编码器冻结,只训语言模型。上下限倍数、难例占比等系数报告未公布具体数值。
需要指出的是,Stage II 带来的整体提升是一套复合干预的结果。在实验评估中,Stage II 既包含了继续训练的步数累加,也包含了残差权重的重配、高质量旧数据的回放、真难例挖掘与定向新增数据。这组对比说明整套精修流程带来了提升,但不能把涨分单独归到「按残差分配」这一项上。
涨分落在哪里,以及 12 个修复案例
PureDocBench 的三个赛道用的是同一批页面,只是干净程度不同,所以能看出变化集中在哪里:无论是把模型加大,还是加上第二阶段,涨分都主要出现在退化页面上。下表是报告表 4 的全部数字(Overall 分,三次推理平均):
| 规模 | 阶段 | OmniDocBench | PDB Clean | PDB Digital | PDB Real | PDB 三赛道均值 |
|---|---|---|---|---|---|---|
| 2B | Stage I | 93.50 | 78.90 | 74.24 | 63.23 | 72.12 |
| 2B | Stage II | 95.06 | 79.36 | 76.62 | 65.60 | 73.86 |
| 2B | 涨幅 | +1.56 | +0.46 | +2.38 | +2.37 | +1.74 |
| 4B | Stage I | 94.22 | 79.32 | 75.19 | 65.05 | 73.19 |
| 4B | Stage II | 95.38 | 79.81 | 77.74 | 69.08 | 75.54 |
| 4B | 涨幅 | +1.16 | +0.49 | +2.55 | +4.03 | +2.35 |
模型从 2B 扩展至 4B 时,在干净原生页(Clean)上提升 0.45 分,在算法模拟退化页(Digital)上提升 1.12 分,而在真实采集退化页(Real)上提升了 3.48 分。报告据此认为,外观变化越剧烈,模型容量加大带来的收益越多。从两者选型来看,2B 和 4B 在 OmniDocBench 上仅差 0.32 分,Clean 上也只差 0.45 分,主要差距在 Real 上的 3.48 分。项目主页建议可以从更小的 2B 开始,追求最好的成绩再用 4B。因此,如果业务以电子版、干净页面为主,2B 基本够用;如果拍照和翻拍的文档较多,建议选用 4B。
同时,从 Stage I 走向 Stage II,4B 模型在 Clean 上的涨幅仅有 0.49 分,但在 Digital 与 Real 赛道分别取得了 2.55 分与 4.03 分 的跃升。这和第二阶段瞄准少见类型与拍摄退化的设计意图一致;不过如上所说,这组对比分不清是哪一项措施起的作用。
项目主页和报告附录展示了 12 个前后对比案例,每个测试集 3 个。挑选方法是:按 Stage II 单页得分从高到低扫,留下 Stage I 得分低于 70、而且错误原因单一明确的页面;展示的输出取三次推理里得分居中的一次。所以它们展示的是修复成功的典型样子,报告明说不能用来估计这类错误有多常见。
表格漏读与边界修复:书里一页 9×9 数独(案例 1),Stage I 漏掉了整个表格,TableTEDS 得分仅 0.333;Stage II 成功将其重建为完整的 <table> 矩阵,得分升至 1.000。而在一张合并经营报表里(案例 8),Stage I 把表格下方的附注、审计说明和签名栏也继续包进了表格单元格,Stage II 则准确识别出表格的闭合边界,将下方的附注恢复为常规正文段落。
阅读顺序纠偏:一份活动手册里的接机安排表(案例 5),由三列并排的航班卡片(CA1501、MU5101、NH919...)组成。Stage I 沿着第一列竖着读完再读下一列,输出顺序变成 CA1501、KE897、BA169、UA857,时间线被打乱;Stage II 按行从左到右读,恢复成 CA1501、MU5101、NH919、KE897 的顺序。整页 Overall 从 49.00 升到 94.64,文字编辑距离从 0.510 降到 0.054。
公式恢复:在一份工厂检修与班组管理手册里(案例 7),停机风险公式在第一阶段被直接扁平化为纯文字 Downtime Risk = Fault Frequency × Recovery Time,公式评测 FormulaCDM 为 0;Stage II 把它写成 $$ 包裹的 LaTeX 独立公式块。在手机斜拍的中文《股权转让协议》(案例 11)里,Stage I 同时犯了两个错:把乙方执行事务合伙人「林嘉铭」认成「林露铭」,把第七条的违约金公式当普通文字输出;Stage II 两处都改对了,公式得分 FormulaCDM 从 0.024 升到 1.000。
幻觉与真实拍摄下的残留错误:在一张拍摄采集的报纸页面上(案例 10),Stage I 输出跑到了别的文档上,凭空写出与画面无关的中文上市公司现金管理公告和重复的数学推导,整页得分低至 31.43;Stage II 成功遏制了幻觉,将文本拉回至报纸原本的美联储利率决议新闻(Overall 跃升至 94.13)。
报告同时注明,真实拍摄的几个案例里,Stage II 恢复了整体结构,但仍残留数字和字符级的识别错误。例如临床表单案例(案例 12)里,Stage II 把死因链的层级「1a / 1b / 1c」认成了「la / lb / Ic」,把数字 1 看成了字母。结构恢复了,不等于每个字都认对了。
12 个案例 · 原页与两阶段输出对照
Stage I 错在哪,Stage II 改成了什么
选一个案例,先看原页上的红框,再对照下面两个阶段的输出。输出里的 … 是项目主页原本的省略。
案例 01 · OmniDocBench v1.6
表格漏读
Stage I 漏掉了 9×9 数独网格;Stage II 完整还原表格。
Overall 65.87 → 99.22TableTEDS 0.333 → 1.000
Stage I 输出
Fig. 10.3 Solved sudoku puzzle. ## 10.4 Hybrid Optimization Hybrid methods may be required to solve particularly difficult real-world optimization problems. Implementation of hybrid methods typically requires non-trivial scripting …
Stage II 输出
<table><tr><td>5</td><td>3</td><td>4</td><td>6</td><td>7</td><td>8</td><td>9</td><td>1</td><td>2</td></tr> … <tr><td>3</td><td>4</td><td>5</td><td>2</td><td>8</td><td>6</td><td>1</td><td>7</td><td>9</td></tr></table> Fig. 10.3 Solved sudoku puzzle. ### 10.4 Hybrid Optimization …
案例 02 · OmniDocBench v1.6
图示层级漏读
Stage I 漏掉了图示中间的一层层级;Stage II 补回。
Overall 58.98 → 100.00TextEdit 0.410 → 0.000(越低越好)
案例 03 · OmniDocBench v1.6
页边文字漏读
Stage I 漏掉了页面级的图标题、页脚和页码;Stage II 补回。
Overall 67.66 → 100.00TextEdit 0.323 → 0.000(越低越好)
Stage I 输出
## 企业依赖复杂、多层和互通的架构 案例:半导体、计算机和电子产品以及通讯设备 ## 戴尔 2019年收入:900亿美金 … ## 联想 2019年收入:510亿美金 … 资料来源:彭博供应链数据库;麦肯锡全球研究所分析
Stage II 输出
## 图E3 即使在同一个行业中,企业也可能有非常不同的供应链结构和显著的重叠 企业依赖复杂、多层和互通的架构 案例:半导体、计算机和电子产品以及通讯设备 戴尔 2019年收入:900亿美金 … 联想 2019年收入:510亿美金 … 资料来源:彭博供应链数据库;麦肯锡全球研究所分析 全球价值链中的风险、韧性和再平衡 9
案例 04 · PureDocBench · Clean
标题层级被压成表格
Stage I 把整页的标题层级压成一张表;Stage II 恢复标题,只把真正的表格写成表格。
Overall 3.46 → 98.30TextEdit 0.996 → 0.033(越低越好)
Stage I 输出
<table><tr><td>PART A — MOTOR VEHICLE EMISSION AND FUEL STANDARDS</td></tr><tr><td>§7521. Emission standards for new motor vehicles or new motor vehicle engines</td></tr> … <tr><td>Table 1 — National Ambient Air Quality Standards (NAAQS)</td></tr><tr><td>Pollutant</td><td>Primary Standard(Level)</td><td>Secondary Standard(Level)</td><td>Averaging Time</td><td>Form</td></tr> … </table>
Stage II 输出
## PART A — MOTOR VEHICLE EMISSION AND FUEL STANDARDS ## §7521. Emission standards for new motor vehicles or new motor vehicle engines (a) Authority of Administrator to prescribe by regulation.— Except as otherwise provided in subsection (b), the Administrator shall by regulation prescribe … ## §7409. National Ambient Air Quality Standards … Table 1 — National Ambient Air Quality Standards (NAAQS) <table><tr><td>Pollutant</td><td>Primary Standard (Level)</td><td>Secondary Standard (Level)</td><td>Averaging Time</td><td>Form</td></tr> …
案例 05 · PureDocBench · Clean
阅读顺序
Stage I 按列竖着读三列接机卡片;Stage II 恢复按行从左到右的顺序。
Overall 49.00 → 94.64TextEdit 0.510 → 0.054(越低越好)
Stage I 输出
… ## Airport Pickup Matrix 接机安排 (Apr 19-20) CA1501 PEK → PVG Apr 19 14:20 | 8 pax | Shuttle A1 KE897 ICN → PVG Apr 19 17:10 | 8 pax | Shuttle B1 BA169 LHR → PVG Apr 20 06:15 | 15 pax | Shuttle C1 UA857 SFO → PVG Apr 20 07:45 | 14 pax | Shuttle C2 …
Stage II 输出
… ## Airport Pickup Matrix 接机安排 (Apr 19-20) CA1501 PEK → PVG Apr 19 14:20 | 8 pax | Shuttle A1 MU5101 CAN → PVG Apr 19 15:45 | 6 pax | Shuttle A1 NH919 NRT → PVG Apr 19 16:35 | 12 pax | Shuttle B1 KE897 ICN → PVG Apr 19 17:10 | 8 pax | Shuttle B1 …
案例 06 · PureDocBench · Clean
测量表漏读
Stage I 漏掉了两张颈动脉血流测量表;Stage II 补回。
Overall 48.88 → 91.96TableTEDS 0.366 → 0.901
Stage I 输出
… 左侧颈动脉 Left Carotid 斑块分析 Plaque Analysis (Left) 狭窄计算 Stenosis Calculation <table><tr><td>编号</td><td>位置</td><td>大小mm</td><td>回声</td><td>表面</td><td>GSM</td><td>溃疡</td></tr> … </table> … 右侧颈动脉 Right Carotid ★ 斑块分析 Plaque An <table><tr><td>编号</td><td>位置</td><td>大小mm</td><td>回声</td><td>表面</td><td>GSM</td><td>溃疡</td></tr> …
Stage II 输出
… ## 左侧颈动脉 Left Carotid <table><tr><th>血管节段</th><th>IMT mm</th><th>ID mm</th><th>PSV cm/s</th><th>EDV cm/s</th><th>RI</th></tr><tr><td>CCA近段</td><td>0.8</td><td>6.4</td><td>76.5</td><td>21.2</td><td>0.72</td></tr> … <tr><td>VA V3段</td><td>-</td><td>3.2</td><td>44.8</td><td>15.2</td><td>0.66</td></tr></table> 斑块分析 Plaque Analysis (Left) …
案例 07 · PureDocBench · Digital Degraded
公式写成普通文字
Stage I 把独立公式当普通文字输出;Stage II 写成 LaTeX 公式块。
Overall 65.28 → 98.70FormulaCDM 0.000 → 1.000
Stage I 输出
… ## 5.2 LOTO 与 Permit-to-Work 执行检修、换模、开盖、进入防护罩内作业前,必须进行 Lockout / Tagout。 … Downtime Risk Downtime Risk = Fault Frequency × Recovery Time 用于决定异常响应是否升级为 maintenance escalation 或生产会议通报项。 ## 5.3 班组 KPI 与 Toolbox Meeting …
Stage II 输出
… ### 5.2 LOTO 与 Permit-to-Work 执行检修、换模、开盖、进入防护罩内作业前,必须进行 Lockout / Tagout。 … #### Downtime Risk $$Downtime\ Risk = Fault\ Frequency \times Recovery\ Time$$ 用于决定异常响应是否升级为 maintenance escalation 或生产会议通报项。 ### 5.3 班组 KPI 与 Toolbox Meeting …
案例 08 · PureDocBench · Digital Degraded
表格边界越界
Stage I 把表格一路延伸到下方的附注和签名栏;Stage II 在正确位置结束表格。
Overall 51.76 → 98.59TextEdit 0.862 → 0.027(越低越好)
Stage I 输出
… <tr><td>Diluted EPSNote 2</td><td>$3.28</td><td>$2.54</td><td>$1.25</td><td>+29.1%</td></tr> … <tr><td colspan="5">NOTE: This consolidated statement of operations reflects combined performance across all operating segments including: … <tr><td colspan="5">AUDITOR'S CERTIFICATION: This Consolidated Statement of Operations, including all notes and supplementary schedules, has been audited …</td></tr><tr><td>Chief Financial Officer</td><td>Controller</td><td></td><td>Chief Executive Officer</td><td></td></tr> …
Stage II 输出
… <tr><td>Diluted EPSNote 2</td><td>$3.28</td><td>$2.54</td><td>$1.25</td><td>+29.1%</td></tr> … </table> NOTE: This consolidated statement of operations reflects combined performance across all operating segments including: … AUDITOR'S CERTIFICATION: This Consolidated Statement of Operations, including all notes and supplementary schedules, has been audited … Chief Financial Officer … Controller … Chief Executive Officer …
案例 09 · PureDocBench · Digital Degraded
字段和值拆散
Stage I 把固件信息的字段名和值拆开;Stage II 重新一一配对。
Overall 57.25 → 92.47TextEdit 0.428 → 0.075(越低越好)
Stage I 输出
Device Model 设备型号: Current FW 当前固件: Target FW 目标固件: Build Date 构建日期: Architecture 架构: Image Size 镜像大小: GW-IoT-4200 Edge Gateway v4.1.8 (build 20250911) v4.2.1 (build 20260401) 2026-04-01 08:30:00 UTC ARMv8-A Cortex-A72 48.7 MB …
Stage II 输出
Device Model 设备型号: GW-IoT-4200 Edge Gateway Current FW 当前固件: v4.1.8 (build 20250911) Target FW 目标固件: v4.2.1 (build 20260401) Build Date 构建日期: 2026-04-01 08:30:00 UTC Architecture 架构: ARMv8-A Cortex-A72 Image Size 镜像大小: 48.7 MB ## [NEW] 新增功能 / New Features …
案例 10 · PureDocBench · Real Degraded
输出跑到别的文档上
Stage I 输出与画面无关的中文公告和重复的数学内容;Stage II 回到报纸本身的内容,仍有局部识别错误。
Overall 31.43 → 94.13TextEdit 0.681 → 0.057(越低越好)
Stage I 输出
## THE FINANCIAL CHRONICLE
…
Vol. 02171, No. 69
…
S&P 500 3,738.92 +42.18 (+0.75%)
…
1. 2017年,公司与上海浦东发展银行股份有限公司签订了《关于使用部分闲置募集资金进行现金管理的协议》。
…
The Ground Truth image displays a single, solid horizontal line. According to Rule 2 (UNDERSCORE & LINE RULES), this is a stylistic or background line, not a placeholder underscore.
…
$\therefore m = \frac{3}{11}$
…Stage II 输出
## THE FINANCIAL CHRONICLE Vol CXIV, No 20 Sunday, March 17, 2025 New York London Hong Kong Tokyo Frankfurt DJIA 42.186.57 • 287.41 (+0.65%) S&P 500 3,738.92 +42.18 (+0.74%) … ## Fed Holds Rates Steady, Signals Two Cuts Remain on Table for 2025 Powell cites "unusually elevated uncertainty" from tariff policies; dot plot unchanged from December projections BY JAMES WHITFIELD AND SARAH CHEH | FEDERAL RESERVE CORRESPONDENTS WASHINGTON — The Federal Reserve held its benchmark interest rate unchanged at 4.25%-4.50% on Wednesday, as widely expected …
案例 11 · PureDocBench · Real Degraded
人名认错、公式写成文字
Stage I 把「林嘉铭」认成「林露铭」,并把违约金公式写成普通文字;Stage II 两处都改对。
Overall 64.61 → 97.70FormulaCDM 0.024 → 1.000
Stage I 输出
… 第一条 各方基本信息 <table> … <tr><td>乙方(受让方)</td><td colspan="3">深圳前海汇智投资合伙企业(有限合伙)</td></tr><tr><td>统一社会信用代码</td><td>91440300MA5FP7TN8K</td><td>执行事务合伙人</td><td>林露铭</td></tr> … </table> … ## 第七条 违约责任 7.1 任何一方违反本协议项下的义务、陈述或保证的,… 违约金 = 股权转让总对价 × 10% + 逾期付款金额 × 0.05% × 逾期天数 …
Stage II 输出
…
第一条 各方基本信息
<table>
…
<tr><td>乙方(受让方)</td><td colspan="3">深圳前海汇智投资合伙企业(有限合伙)</td></tr><tr><td>统一社会信用代码</td><td>91440300MA5FP7TN8K</td><td>执行事务合伙人</td><td>林嘉铭</td></tr>
…
</table>
…
## 第七条 违约责任
7.1 任何一方违反本协议项下的义务、陈述或保证的,…
$$
\text{违约金} = \text{股权转让总对价} \times 10 \% + \text{逾期付款金额} \times 0.05 \% \times \text{逾期天数}
$$
…案例 12 · PureDocBench · Real Degraded
表单被过度套成表格
Stage I 把临床表单套成表格;Stage II 恢复成逐节的线性结构,仍有局部识别错误(如把「1a」认成「la」)。
Overall 67.08 → 96.66TextEdit 0.648 → 0.056(越低越好)
Stage I 输出
… 二、直接死亡原因链 Cause of Death Chain <table><tr><td>1a 直接原因</td><td>感染性休克、多器官功能衰竭(MOF) Septic shock with multiple organ failure</td></tr><tr><td></td><td>↑ 由于 due to</td></tr><tr><td>1b 前因</td><td>重症肺炎(多重耐药菌感染) Severe pneumonia …</td></tr> … </table> 三、讨论发言记录 <table><tr><td>汇报医师:李明 住院医师</td></tr> …
Stage II 输出
… ## 二、直接死亡原因链 Cause of Death Chain la 直接原因 感染性休克、多器官功能衰竭(MOF) … ↑ 由于 due to lb 前因 重症肺炎(多重耐药菌感染) … ↑ 由于 due to Ic 根因 社区获得性肺炎,免疫功能低下 … II 促进因素 2型糖尿病(20年,HbA1c 9.8%) … … ## 三、讨论发言记录 汇报医师:李明 住院医师 … 感染科会诊意见:王教授 主任医师 … ICU主治:陈副主任医师 …
数据与图片来自 WeVisDoc 项目主页「Interactive Recovery Lab」和技术报告附录 B.1,展示的输出取自三次推理中得分居中的一次。
上手部署与落地使用建议
GitHub 代码仓库和 Hugging Face 模型卡都标注 Apache-2.0 许可,公开的是 2B 与 4B 两个模型权重和推理代码。训练数据和数据构建流水线没有开源;报告给出了配比公式的形式,但关键系数(来源平衡指数 ρ、残差权重 β、上下限倍数 ϑ、难例占比 λ 等)没有公布具体数值,别人拿不到复现训练所需的全部条件。
运行环境与启动方式
官方推荐使用 vLLM(版本需 ≥ 0.11.1) 启动推理服务,该方式支持多并发处理、张量并行(Tensor Parallel)加速以及 OpenAI 兼容的接口协议。需要 Python 3.10 以上。vLLM 服务和本地 Transformers 推理依赖的 PyTorch 版本可能冲突,官方建议两者分别用独立的虚拟环境;只负责发请求的客户端机器,装一个轻量的依赖文件就够了。
服务端启动命令示例:
# 激活环境后启动 2B 或 4B 服务
bash scripts/serve_vllm.sh Tencent/WeVisDoc-4B
如果有多张 GPU 且需要处理超长单页,可通过环境变量开启双卡并行并调大序列长度:
CUDA_VISIBLE_DEVICES=0,1 TENSOR_PARALLEL_SIZE=2 MAX_MODEL_LEN=65536 \
bash scripts/serve_vllm.sh Tencent/WeVisDoc-4B --dtype bfloat16
客户端批量处理支持指定图像目录多线程并发调用:
# 批量处理指定目录下的所有页面图像,结果以 Markdown 格式逐页保存
python -m wevisdoc.client --image-dir ./doc_images --result-dir ./outputs --workers 4
如果仅需本地单卡简单调试,项目也提供了独立的 Transformers 推理脚本:
python -m wevisdoc.local --model Tencent/WeVisDoc-2B --image page.png --output result.md
接入工作流前要处理的四件事
- PDF 先转图片:WeVisDoc 接收 PNG、JPEG、WebP,不直接读取 PDF。多页 PDF 要先逐页渲染,再把页面图片批量送入模型。
- 图表内容另行处理:文字输出为 Markdown,公式使用 LaTeX,表格使用 HTML;纯插图和图表会被忽略。需要理解图中趋势或标注时,要再接一个图表分析步骤。
- 为长页面预留输出空间:客户端默认最多生成 8192 个 token。密集论文、法律文件或大型表格可能被截断,可以调大
--max-tokens,显存不足时则降低图片尺寸或并发量。 - 关键字段回看原图:手写、历史扫描件和严重破损页面还没有充分评测。合同金额、财务和医疗字段进入后续流程前,应保留页码并回到原图复核。
项目没有公布显卡、显存和速度数据。输出也不带文字坐标,多页之间不会自动续接段落或表格;需要原图高亮或跨页还原时,要在外部流程中补上这些能力。
WeVisDoc:从广覆盖到按残差重配
不改模型结构,训练分两段:先广覆盖,再按残差分清是缺数据还是练得少,重新分配训练预算。
路线之争:流水线拆解 vs 纯端到端解码
在构建知识库检索(RAG)、自动化报表分析和多模态工作流时,将复杂排版的 PDF 与拍照扫描件转为大模型易读的 Markdown 是基础环节。行业长期存在两条路线:流水线系统将版面切分给专用小模型并启发式拼装,代价是长链路与误差传递;WeVisDoc 则采用纯端到端路线,直接以 Qwen3-VL 为底座自回归解码整页内容。
模块化分工:目标检测版面 -> 专用 OCR / 表格 / LaTeX 引擎 -> 规则拼接。每一步都用专门的模型,在自然多样的 OmniDocBench 上仍小幅领先(PaddleOCR-VL-1.6 96.33 对 WeVisDoc-4B 95.38);代价是链路长,前一步切分出错后面会跟着错,在 PureDocBench 的退化页面上明显下滑。
统一单模型直接输出 Markdown、HTML 表格与 LaTeX 公式。无中间组装损耗,在考察退化鲁棒性的 PureDocBench 全景评测中,三赛道均值(75.54)、Clean(79.81)与 Digital(77.74)均位列全部 47 个模型第一。
评测结果揭示了两者的真实权衡:在自然多样的 OmniDocBench 上,流水线系统依然领先,PaddleOCR-VL-1.6(96.33 分)与 MinerU2.5-Pro(95.75 分)均高于 WeVisDoc-4B(95.38 分);但在考察退化鲁棒性的 PureDocBench 上,流水线系统明显下滑(PaddleOCR-VL-1.6 三赛道均值 66.98),WeVisDoc-4B 排到全部模型第一。注意这是 WeVisDoc 的成绩,不是所有端到端模型都如此。
核心机制:Stage II 错误诊断与 Token 预算重配
第一阶段利用 4000 万条记录建立广阔的几何与语义覆盖(包含按 target token 计算预算、三模型交叉标注、双编译可执行网页合成与外观退化模拟)。但光扩大覆盖面,说明不了模型剩下的短板该怎么补。于是有了第二阶段:构建约 500 万条精修池,冻结视觉编码器,仅对语言模型骨干进行微调,分四步:
设立不参与训练与挖掘的独立探针集。避免整页分数掩盖局部故障,将文字(编辑距离)、表格(1−TEDS)、公式(1−CDM)分开独立测算误差。
利用冻结的 SigLIP2 提取全局视觉表征,结合元素构成、密度、版式与采集条件聚类为固定数量特征簇;小样本簇向均值收缩,防止偶然噪声带偏全局。
错误率高的样本先排查:标注错的先修,看不清的不进难例训练,复读停不下来的单独标记。排序只用来安排人工审查。确认现有数据不够,才检索或定向合成补数据;数据够但仍错,就多练。
按误差重新分配训练 token,每簇占比有上下限。普通文字块、单栏页面、标准打印扫描原来约是平均的 1.5–1.7 倍,降到 1 左右;手写批注、嵌套跨行跨列、非线性阅读顺序从约 0.6–0.8 升到接近 1。总预算不变,整体被拉向均匀。
需要说明:Stage II 的涨分是继续训练、按残差重配、回放第一阶段数据、难例和定向新增数据的共同结果,报告自己也说分不出是哪一项起的作用。
基准分歧与细项真相:为什么综合分第一?
PureDocBench 的综合分(Overall)由文字(1−TextEdit)、公式(FormulaCDM)和表格(TableTEDS)三项等权平均计算,阅读顺序单独列出。WeVisDoc-4B 虽在三赛道总分登顶,但各细项并非处处领先:
| 细项 | Clean | Digital | Real |
|---|---|---|---|
| 综合分 | 79.81 第 1 | 77.74 第 1 | 69.08 第 1 |
| 公式 | 71.90 第 1 | 71.31 第 1 | 63.14 第 1 |
| 表格 | 88.81 第 1 | 85.99 第 1 | 77.64 第 1 |
| 文字 ↓ | 0.213 并列第 3 |
0.241 第 3 |
0.336 第 4 |
| 阅读顺序 ↓ | 0.340 第 3 |
0.361 第 3 |
0.416 并列第 3 |
Clean 是干净页,Digital 是算法退化,Real 是真实采集。综合分、公式、表格越高越好;文字(TextEdit)、阅读顺序(ROEdit)是编辑距离,越低越好(↓)。排名均指端到端组 21 个模型。文字和阅读顺序最好的:Clean、Digital 是 dots.mocr,Real 是 FD-RL。
按细项拆解可以清晰看到:PureDocBench 三个赛道上,WeVisDoc-4B 的纯文字识别和阅读顺序在端到端组里都不是第一;综合分第一是因为公式和表格两项全是第一。因此,对于以正文为主的纯文字材料(如合同、书籍、法律案卷),不能只看综合分,要看文字编辑距离那一项。
涨分落在哪里:退化收益与 2B / 4B 选型决策
PureDocBench 三个赛道由同一批源网页渲染生成,因此直接反映出技术手段在不同图像质量下的增益分布。无论是把模型加大还是加上第二阶段,涨分都主要出现在退化页面上:
从两者选型来看,2B 和 4B 在 OmniDocBench 上仅差 0.32 分,Clean 上也只差 0.45 分,主要差距在 Real 上的 3.48 分。由此得出务实的落地选型建议:文档以电子版、干净页面为主,2B 基本够用;拍照、翻拍的页面多,建议用 4B。
工程落地与边界约束:结构恢复不等于零错字
开源仓库与模型卡均采用 Apache-2.0 协议,官方推荐使用 vLLM(≥ 0.11.1)部署多并发服务。在接入自动化生产流水线时,需明确以下边界与约束:
高风险场景警示:技术报告针对 12 个典型修复案例的追踪显示,Stage II 修好了漏读的表格、越界的表格边界和公式结构,但真实拍摄样例仍存在字符级识别错位(例如将死因链的「1a / 1b / 1c」错识为字母「la / lb / Ic」)。结构恢复了,不等于每个字都认对了。在医疗、财务与法律合同等敏感场景中,关键字段必须配合原图核验。
其他核心工程约束包括:仅支持图像输入(PDF 要先用渲染工具(比如 PyMuPDF)转成图片再逐页送入);插图与纯图表默认忽略(不生成视觉描述,需外挂图表模型);输出不含坐标(从说明文档推断,官方未说明;纯 Markdown 无法直接支持检索高亮定位,来源追溯仅到页级);逐页独立解析(同为推断;跨页表格与段落不自动拼接);同时需警惕密集长页超出默认 8192 token 导致的内容截断。
