DharmaOCR 利用 DPO 将文本退化率降低 59.4%
Direct Preference Optimization Beyond Chatbots
4月发布的DharmaOCR(结构化OCR模型)在巴西葡萄牙语文档提取任务中,使用直接偏好优化(DPO)作为监督微调(SFT)后的第二训练阶段。SFT无法直接惩罚文本退化(重复循环),而DPO以模型自身失败输出(退化循环)作为负样本进行偏好训练,使所有测试模型族的文本退化率平均降低59.4%,最高达87.6%(如Nanonets-OCR2-3B从1.61%降至0.20%)。传统DPO多用于聊天对齐,该工作将其扩展至客观的OCR任务,证明DPO可针对性修复特定失败模式。
DPO 不只能对齐,这篇直接用模型自身的垃圾输出当反例,把 OCR 的重复错误平均降了 59%。思路不复杂,但告诉做结构化生成的工程师:训练数据里最该保留的就是模型犯的错。
利用来自你模型自身失败案例的拒绝配对
今年 4 月,我们发布了 DharmaOCR,这是我们专门的结构化 OCR 模型(可在 Hugging Face 上获取),同时发布了一篇论文,详细阐述了其背后的方法论,并附有一项基准测试,展示了其卓越的质量和成本效率。该论文在结构化文档提取任务上对领先的视觉语言模型系列——包括开源和商业模型——进行了基准测试:即对巴西葡萄牙语文本进行 OCR。所报告的指标中包括文本退化率:即模型产生重复循环而非转录结果的频率。
在受测的开源模型系列中,原始退化率从低于 1% 到高于 33% 不等。监督微调降低了大多数模型的退化率——但很少达到生产可接受的水平。这一模式指向一个结构性局限:SFT 优化的是正确输出,但并未明确惩罚退化。仅靠以任务为中心的微调,似乎对这种失败模式的降低存在上限(文本退化文章)。
第二个训练阶段——在监督微调(SFT)之后应用,使用相同的文档、相同的模型——降低了所有受测模型系列的文本退化。无一例外。平均降低幅度:59.4%。最佳情况:87.6%。

Figure 1: DPO reduced degeneration relative to SFT in every family tested - average reduction of 59.4%, peak of 87.6% (Nanonets-OCR2–3B: 1.61% to 0.20%). The direction is invariant; only the magnitude varies.
第二阶段是直接偏好优化(DPO)。几乎所有已发表的 DPO 应用都针对对话对齐——即基于人类对有用性或无害性的判断来训练模型(例如:Rafailov 等人,2023)。OCR 完全不带有这种主观性:任务是客观的,也不存在对话上下文。然而,这里存在一个清晰的偏好信号。正确的转录被选中;退化循环被拒绝。DharmaOCR 利用这一二元信号构建了 DPO 训练集,测试该技术并非用于对齐,而是作为针对特定失败模式的直接缓解工具。
训练信号来自模型自身——具体来说,来自它在失败时产生的输出。一个失败模式如何转化为训练信号,是一个关于失败本身的结构性问题,而非关于模型的问题。
循环在微调后依然存在
为什么 SFT 在退化问题上存在天花板,仍是一个未解的问题——但主流猜想指向损失粒度。SFT 逐 token 训练:每个预测被孤立地评估,重复循环从未被作为完成级别的失败来惩罚。DPO 颠覆了这一逻辑。训练信号是完整输出——被选中或被拒绝——这意味着一个退化的完成结果可以被明确标记为错误结果,而不仅仅是一串局部高概率的 token。
当训练目标最大化观测序列的似然时,它会把概率质量集中到这些序列在分布空间中所占据的区域。一个在推理过程中进入这些高概率吸引子区域的模型,会在下一步对同一个 token 赋予更高的概率——这又进一步提高了该概率,从而维持这一循环,直到序列触及最大 token 限制。文本退化正是这种几何结构的产物:一个自我强化的重复循环,自回归模型若无外部干预便无法退出(Holtzman et al., 2020)。它并不纯粹是解码过程的产物。这个吸引子涉及训练目标、学到的分布,以及概率质量在推理过程中如何集中——这是一种系统层面的失效,而非局限于任何单一组件的失效。
这种失效的几何结构在 token 层面清晰可见。

Figure 2: When a token dominates its own conditional distribution, every sampling step deepens the attractor. The decoder samples from this geometry; it does not determine it.
推理层的干预手段——重复惩罚、温度调整、提前中止逻辑——作用于采样步骤。它们遏制了症状,却没有触及产生症状的分布。吸引子依然存在。
监督微调使分布更接近任务领域。对于结构化生成流水线而言,这意味着在目标语言中、以所需的输出格式,在领域特定文档上进行训练。模型由此获得对更长序列、受限语法和领域词汇的流畅处理能力。但 SFT 并不能直接攻击退化问题。其目标——最大化观测序列的似然——没有任何一项对重复循环施加惩罚。这一失效模式根本不在训练信号所优化的范围之内。
DharmaOCR 基准测试中有一个模型系列呈现出出人意料的模式:原始退化率为 0.60%,经过 SFT 后升至 3.23%,随后经过 DPO 阶段又降至 1.41%。这只是一个数据点——是例外,而非规律——将其视为某种机制的证明会夸大证据。但它确实说明,SFT 并不能可靠地降低退化。能力与抗退化性可以独立变化。
这一区分在结构上至关重要。SFT 和 DPO 并非以不同强度执行同一操作的、可以互换的训练阶段。SFT 拉近了模型先验分布与任务领域之间的距离。但它并未将退化作为一个目标来针对——它对这一失效模式的影响是附带性的,而基准测试结果表明这种影响并不一致。产生退化的吸引子并非模型与任务接近程度的问题——而是模型当前所处的分布空间形态的问题。
要解决这一几何结构问题,需要一个专门构建的训练信号,将模型引导远离其自身的失败模式。对于一个结构化、非对话式任务,既没有人类偏好标签,也没有传统的“有用与有害”之分,构建这样的信号是一个设计决策。
设计决策:将退化输出作为拒绝配对
DharmaOCR 流程对 DPO 方法论的贡献是具体的:它将 SFT 模型自身的退化输出用作被拒绝的样本——不是作为需要去除的噪声,而是作为优化所需的负向训练信号。
DPO 需要偏好配对:针对同一输入的一个被选中的输出和一个被拒绝的输出,二者之间的质量差异要足够明显,以便优化过程能够从中学习。在对话对齐中,人类标注者产生这些判断——将回复评为更有用或更无用、更准确或更不准确、更安全或更不安全。结构化生成任务没有同等的标注来源。一个 OCR 流程要么产生正确的转录,要么不能。质量差异确实存在,但它们不是由人类偏好排名产生的——它们是由任务自身的正确性标准产生的。
DharmaOCR 流程识别出了一种结构化生成任务本就会产生的偏好信号:SFT 模型在推理时生成的输出范围。一个能够执行结构化任务的模型,也会以特征性的方式在该任务上失败。那些失败——进入退化吸引子的输出——不是需要过滤的噪声。它们是所能获得的最具信息量的负向信号。
该论文在 23,726 份训练文档上实现了这一方法,使用 SFT 模型为每份文档生成多个候选回复,并用自动化 LLM 评判器对每个回复打分。该流程如下图所示。

Figure 3: The critical design decision is not in the pipeline's structure - it is in what the pipeline preserved: outputs displaying text degeneration were deliberately labeled as rejected examples, not filtered out as low-quality noise.
当训练数据中出现退化输出时,常规做法是将其移除。它们是低质量信号;过滤后能产生更干净的数据集。DharmaOCR 的方法颠覆了这一逻辑。退化输出被刻意保留为每个(选中,拒绝)配对中的拒绝样本,因为它们恰恰代表了 DPO 阶段所设计要抑制的失败模式。移除它们反而会丢弃最清晰可用的目标。
论文将此描述为“偏好引导的隐式非似然”——模型不仅被训练趋向更好的输出,还被训练远离某一特定类别的失败。SFT 最大化高质量输出的似然,而 DPO 阶段同时惩罚表现出退化吸引子几何特征的输出。优化的方向是明确的,这是仅靠 SFT 无法实现的。
退化输出特别适合作为拒绝样本,因为它们代表的是一种一致的失败模式,而非各式各样的低质量输出。漏词的转录是低质量的,但其失败是特定于个例的。相比之下,重复循环在文档和不同模型家族中持续出现,即便经过 SFT 之后依然如此——这一模式与一种基于似然的优化无法可靠纠正的失败模式相符。DPO 以不同的方式施加其损失:在补全层面,带有明确的拒绝信号。事后分析无法确立因果关系,但证据表明,SFT 目标所未能解决的部分,DPO 或许能够处理。
这种方法不需要专门的标注基础设施——只需要一个能够同时产出可接受输出和可识别失败输出的模型,以及一个用于标注偏好对的评分模型。基于规则的机制可以机械地检测重复循环——但它无法识别哪些输出代表值得作为选中样本保留的高质量转录。
评分模型两者兼顾:它将退化标记为拒绝输出,并将干净的抽取结果验证为选中输出,从而在 DPO 信号惩罚该失败模式的同时,保持模型的抽取能力完好无损。由此产生的训练信号能否成功地将分布推向预期方向——以及它能否在不同架构间一致地做到这一点——才是证据层面的问题。
在五个模型家族中保持一致
DPO 阶段降低了所有测试模型家族中的文本退化——相对于仅使用 SFT,降幅从 37% 到 88% 不等,平均为 59.4%。这一结果在架构、参数规模以及相差超过一个数量级的初始退化分布中均成立。数据集中有一个案例在 SFT 阶段后退化反而增加,随后被 DPO 纠正。这个案例并不影响一致性。它比其他任何案例都更直接地印证了该机制。
图 1 展示了所测试的五个模型家族各自的三阶段退化率:Vanilla、SFT 和 SFT+DPO。在五个家族中的四个里,退化率在每个阶段都有所下降。第五个家族的柱状图走势不同——而这一差异是本研究中分析价值最高的数据点。
仔细解读 Qwen2.5-VL-3B 的结果,它并非一个复杂情况。它是一种印证。该模型的 Vanilla 退化率为 0.60%——并非因为它稳定,而是因为它过于泛化,根本无法生成较长的结构化输出。该模型之所以没有进入退化吸引子,是因为它没有足够认真地尝试该任务,因而未能触及它。
SFT 改变了这一点。经过领域适配后,Qwen2.5-VL-3B 具备了完成该任务的能力——能够生成更长、更结构化的输出,并带有流水线所需的领域词汇和格式。这种能力首次将它带到了退化吸引子的附近。其退化率上升至 3.23%。
这正是被实证显现出来的机制:SFT 在把模型推向任务的同时,也把它推向了任务的失败几何。这两者未必是同一种操作。一个提升任务能力的训练阶段,可能会作为副作用而增加失败模式的暴露——尤其是当该失败模式位于能力前沿的边缘时。若把二者视为同一种操作,Qwen2.5-VL-3B 的结果看起来就像是一个错误。若把二者视为不同的操作——而这正是 SFT + DPO 流水线在形式上所做的——那么该结果就与如下假设一致:SFT 和 DPO 处理的是不同的失败维度。
随后 DPO 阶段将退化率降至 1.41%。它并没有恢复到原始基线,因为它本就不是为此设计的:经过 SFT 之后的模型比之前能力更强,而要回到 0.60% 就需要撤销这种能力。DPO 阶段所做的是处理 SFT 阶段所引入的失败几何。
其余四个模型家族为同一结论增添了定量上的分量。图 1 展示了全部五个模型家族的 SFT 到 SFT+DPO 对比。

Figure 1: DPO reduced degeneration relative to SFT in every family tested - average reduction of 59.4%, peak of 87.6% (Nanonets-OCR2–3B: 1.61% to 0.20%). The direction is invariant; only the magnitude varies.
没有任何模型家族在 DPO 之后出现退化上升。也没有任何家族能够免受其影响。这种一致性还延伸到了 gemma-3–4b-it,它进入基准测试时的原始退化率是所有模型中最高的,且高出一个数量级——33.96%,而第二高的仅为 2.62%——即便如此,它在 DPO 阶段之后仍实现了 75% 的降幅。降幅区间——37.3% 到 87.6%——反映的是起始配置和架构上的差异,而非该干预方向上的不一致。
这并非普适性的证明。DPO 未必能迁移到每一个领域、每一种失败模式或每一个模型族。DharmaOCR 基准所提供的是跨五种 OCR 架构的证据,表明核心假设成立:在完整偏好对上做优化——而非最大化 token 级似然——能够解决一种 SFT 在结构上无法针对的失败模式。在所有受测模型族中,结果的方向都保持一致。在本基准的范围内,这种一致性正是证据所支持的内容。
超越 OCR 的模式
DharmaOCR 方法之所以可行,是因为这条流水线满足了一组结构性条件,使得 DPO 训练阶段能够按设计发挥作用——这些条件是否具备,决定了同一套方法论能否适用于其他地方(Dharma OCR 论文 on ArXiv)。它之所以可行,并不是因为 OCR 是一个独特的领域。
第一个条件是,该失败模式必须能够被识别为一类独特的输出,而不仅仅是质量连续谱上的一个点。文本退化符合这一条件,因为重复循环与漏词或误读字符的转录在类别上截然不同。其输出不仅仅是次优的——它是以一种特定的、行为上可识别的方式损坏了。正是这种类别上的独特性,使该流水线能够构建出偏好对,其中被拒绝的样本代表了一种连贯的失败几何结构,而非噪声。如果一个任务的失败模式与其可接受变化的范围混为一体,就不具备这一属性。
第二个条件是,评分机制能够可靠地区分可接受的输出与失败模式输出,而无需人工标注。在 DharmaOCR 流水线中,一个自动化 LLM 评审器根据四项任务特定标准对候选回复进行评分。评分不需要完美——它只需要足够一致,从而产生所选与所拒之间具有有意义质量差距的偏好对。质量差异模糊的配对会给 DPO 训练带来噪声,而非信号。评审器的一致性是一项设计要求,而不是附带特性。
第三个条件是足够的数量——有足够多的推理输出,以生成质量上具有有意义方差的偏好数据集。按微调的标准来看,这并非一个非同寻常的要求,但它确实是一个真实的要求。
当这三个条件同时具备时,这一方法论举措在结构上就是可用的。DharmaOCR 流水线的核心设计决策——将模型自身的失败输出作为被拒示例,而不是将其过滤掉——适用于任何模型的失败可以被分类识别、评分且数量足够多的场景。
对于构建结构化生成流水线的 ML 工程师而言,其实践意义是直接的。SFT 是必要的——它缩小了通用模型与具备任务能力的模型之间的距离。但它不足以实现结构化输出的可靠性,因为任务能力与抗退化是分布的两个不同属性。SFT 之后的 DPO 阶段是一次性的训练投入。在 DharmaOCR 的结果中,退化减少并未以提取质量为代价——论文的基准测试结果显示两者同步提升(《专业化胜过规模》一文)。
决定一种失败模式能否用作训练信号,不在于领域,而在于这些失败是否足够一致、足够可识别、足够多,从而构成一个清晰可读的信号。在 DharmaOCR 流水线中,它们确实如此。同样的条件在另一种情境下是否成立,是一个关于该任务失败模式的结构性问题,而不是关于模型家族或领域的问题。
DharmaOCR 的结果并不依赖于领域本身有何特殊之处。它依赖于这些失败是有用的。
文本退化之所以算得上有用,是因为它与可接受的输出存在类别上的明显区别,在多次推理运行中稳定产生,并且无需人工标注即可可靠打分。正是这三个属性——而非 OCR 情境、模型家族或语言——决定了偏好数据集是否可行。满足这些条件的失败模式不是需要清除的噪声。它是现有最直接的证据,指明分布不应走向何处。
DPO 阶段正是利用了这些证据。在所有测试的模型家族中,退化率都下降了——无论是进入基准测试时原始退化率低于 1% 的模型,还是进入时退化率高于 33% 的模型。方向始终一致。这条流水线没有丢弃它的失败。它用这些失败来训练。
来源
- Cardoso, Gabriel Pimenta de Freitas, et al. "DharmaOCR: Specialized Small Language Models for Structured OCR that outperform Open-Source and Commercial Baselines." arXiv preprint arXiv:2604.14314 (2026).
- Dharma AI。“文本退化:LLM 基准测试所忽视的生产故障模式。”Medium(2026)。
- Dharma AI。“专业化胜过规模:大多数 AI 采购决策所忽视的一个战略变量。”Medium(2026)。
- Holtzman, Ari, et al.“神经文本退化的奇特案例。”arXiv preprint arXiv:1904.09751(2020)。
- Rafailov, Rafael, et al.“直接偏好优化:你的语言模型其实是一个奖励模型。”arXiv preprint arXiv:2305.18290(2023)。
来源:Hugging Face:Blog(RSS) · huggingface.co