简介:OCR将汉字视为不可拆分的黑箱,导致生成模型在错一笔与错半边的反馈上没有区分度,训练信号极度稀疏。本文从构型视角剖析问题根因,介绍从单字级判定走向部件与空间关系级评估的思路,并给出可落地的分层奖励设计与工程实践建议,帮助读者构建更细粒度的文字生成优化方案。
在图像生成领域,用强化学习做后期训练来提升生成质量已是常见做法。这套流程里有一个关键角色——裁判模型,负责给生成结果打分,告诉模型”这一步走得好不好”。在文字生成任务中,这个裁判通常由OCR模型担任。
OCR(光学字符识别)的核心能力是把图片中的文字转换为计算机可理解的文本。它的打分逻辑非常直接:将生成图片中的文字区域截取出来,识别一遍,识别结果与目标文字一致则给高分,否则给低分甚至零分。
这套逻辑在英文场景下运行得相当顺畅。英文的最小单位是字母,26个字母通过线性排列组合成词,识别失败通常意味着某个字母确实出了问题,反馈信号虽然粗糙但方向大致正确。
然而,当这套逻辑被直接迁移到汉字场景时,一个结构性的缺陷就暴露出来了。
汉字与英文的本质差异在于结构维度。英文是一维线性序列,汉字是二维空间构型。
举个直观的例子:
这种由偏旁部首按照左右、上下、包围、半包围、品字形等空间关系组合而成的结构,称为汉字的构型。一个汉字可以拆解为若干部件,部件之间又存在明确的拓扑关系。这意味着汉字的”正确性”实际上包含两个层面:
一个汉字可能部件全对但排布错了位置,也可能结构框架对但某个部件缺了一笔。这两种错误在人类看来是不同程度的偏差,但在传统OCR裁判眼中,它们都会被归为同一类结果:识别失败。
OCR对复杂汉字的处理方式,本质上是一次全有或全无的判定。面对结构复杂的汉字,OCR常见的行为模式有三种:
前两种情况下,无论生成的字是错了一笔还是错了半边,裁判给出的分数都是零。这就好比批改一份100道题的试卷,学生错1道和错90道得到的分数完全一样,都是零分。这种打分方式无法告诉模型”你哪里需要改进”,模型也就失去了优化方向。
第三种情况更隐蔽。多模态大模型可能凭借强大的语言能力,在字形明显错误的情况下仍然”猜”出正确答案并给出高分。这是一个典型的假阳性:模型靠语言先验蒙对了答案,但图像上的字形明明是错的。如果训练中大量出现这种假阳性奖励,生成模型会学到”字形差不多就行,反正裁判能猜出来”的错误策略,最终导致字形质量持续退化。
还有一类专门检测”写错字”的工具,能准确判断字结构有问题,但处理方式是把整个字标记为一个异常符号,同样打零分。这种方法虽然不会被语言先验欺骗,但依然是非黑即白的判断:对或错,中间没有灰色地带。
核心矛盾在于:汉字的错误空间是连续的、多维的,而OCR裁判的输出是离散的、一维的。
要解决这个问题,需要把评估粒度从”整字”下钻到”部件 + 空间关系”。
一个可行的方向是构建多级奖励信号:
总奖励 = w1 * 部件完整性得分+ w2 * 部件位置关系得分+ w3 * 整体可读性得分+ w4 * 语言先验一致性得分
其中:
这样,一个”部件全对但左右写反”的字,与一个”部件缺了一半”的字,会得到明显不同的分数。模型就能从奖励差异中学习到”先保证部件完整,再保证结构正确”的优化路径。
实现上述方案的前提是,训练数据中需要包含汉字的结构标注。常见做法包括:
这些标注可以通过成熟的汉字结构数据库获取,也可以基于规则和字形分析自动生成。对于生成任务而言,不需要每个字都精确到笔画级,部件级的粒度已经能提供远优于整字判定的反馈信号。
在强化学习训练中,奖励函数的改造是最直接的切入点。具体来说:
这种设计的好处是,奖励信号变得稠密且有方向性。模型不再需要从零分中猜测问题所在,而是能明确知道”这次是部件错了”还是”这次是结构错了”。
分层奖励设计需要警惕模型找到”捷径”。例如,如果部件检测器本身不够鲁棒,模型可能生成一些检测器容易识别但人眼看起来奇怪的形状。因此,各部件的权重需要仔细调优,并定期用人工评估校准。
语言先验是一把双刃剑。完全不用,会丢失上下文信息;用得过多,会引入假阳性。建议将语言先验作为辅助信号而非主导信号,权重控制在总奖励的20%以内,并且在字形结构明显错误时直接屏蔽语言先验的加分。
要验证结构感知奖励的效果,需要构建包含分级错误的评估集。例如:
通过对比不同方法在这些分级样本上的评分行为,可以直观判断奖励函数是否真正具备了结构感知能力。
OCR作为生成模型的裁判,在汉字场景下存在先天不足:它把汉字当作不可拆分的黑箱,输出的是非黑即白的判定,无法区分”错一笔”与”错半边”的差异。解决思路是把评估粒度从整字下钻到部件与空间关系,构建分层、稠密的奖励信号,让模型能够从反馈中学习到”先写对部件,再摆对位置”的优化路径。
这一思路的核心价值在于:让反馈信号与问题的真实结构对齐。汉字是二维积木结构,评估体系也应该是结构化的。只有在评估层面实现结构感知,生成模型才能真正学会画对中文字。