简介:OCR将汉字视为不可拆分的整体,导致生成模型在汉字书写错误时只能得到“全有或全无”的评分,无法区分轻微笔画偏差与严重结构错误。本文从汉字二维构型特性出发,分析传统评估方式的局限,并探讨引入结构感知评分机制的技术思路,帮助开发者理解如何让生成模型在汉字任务中获得更精细的优化信号。
在生成式模型的能力迭代中,强化学习已成为后期训练的重要手段。其基本流程是:模型生成候选结果,由一个“裁判”模型对结果打分,模型根据分数调整参数。在图文生成任务中,这个裁判通常由OCR(光学字符识别)模型担任——将生成图片中的文字区域截取出来,识别为文本,再与目标文字比对:一致则给分,不一致则不给分。
这套机制在英文场景下基本够用。英文的最小单位是26个字母,单词由字母线性排列而成,OCR对字母的识别已经相当成熟,评分信号清晰且连续。
但汉字的情况截然不同。
汉字并非线性排列的符号序列,而是一种二维的积木结构。每个汉字由偏旁部首按照特定的空间关系组合而成:
这种由部件按照空间关系组合而成的结构,称为汉字的构型。构型是汉字区别于拼音文字的核心特征,也是OCR识别汉字时最大的难点。
当OCR面对结构复杂的汉字时,常见的行为模式有三种:
无论哪种情况,评分逻辑都是二值的:识别结果与目标一致则得1分,否则得0分。
这就导致一个严重问题:无论模型是写错了一笔还是写错了整个半边,只要OCR最终认不出,得分都是零。 这好比批改一份100道选择题的试卷,不管学生错一道还是错九十道,统统给零分。这样的信号完全无法告诉模型“哪里需要改进”,模型也就无法学到正确的优化方向。
论文中有一个直观案例:生成图中“尬”字的结构出了问题,专用OCR模型将其识别为另一个形近字,判定错误,得0分;换用多模态大模型后,模型结合上下文“猜”出了正确答案,得1分——但这是一个假阳性,因为图中字形明明是错的,模型只是靠语言能力蒙对了。
另一类专门检测“写错字”的工具能够准确判断字形结构异常,但处理方式是将异常字整体标记为一个特殊符号,同样给0分。这种方式虽然不会被语言模型的“脑补”欺骗,但依然是非黑即白的判断:对,或者错,中间没有灰色地带。
汉字的错误天然存在程度之分:
不同的错误程度对应不同的优化优先级。如果评分机制能够输出连续值——比如结构完全正确得1.0,部件正确但笔画有偏差得0.7,结构错误但部件可辨得0.3,完全错误得0.0——那么模型就能获得更细粒度的梯度信息,从而更高效地学习。
要解决上述问题,核心思路是将汉字从“不可拆分的黑箱”转变为“可拆分的结构树”。具体而言,可以从以下几个层面入手:
将每个汉字表示为一个结构树,例如:
尬├── 部件1: 九├── 部件2: 龙(变体)└── 空间关系: 左右
这种表示可以递归展开到笔画级别。有了结构表示,评分模型就可以逐层比对,而不是只比对最终识别结果。
评分函数可以按照结构层次加权:
def structure_aware_score(pred_img, target_char):# 1. 识别整体字符pred_char = ocr(pred_img)if pred_char == target_char:# 进一步检查结构是否正确if structure_match(pred_img, target_char):return 1.0else:# 识别正确但结构有误,扣分return 0.8# 2. 整体识别失败,进行部件级比对pred_parts = extract_parts(pred_img)target_parts = decompose(target_char)part_score = match_parts(pred_parts, target_parts)# 3. 部件级比对失败,进行笔画级比对if part_score < threshold:stroke_score = match_strokes(pred_img, target_char)return stroke_score * 0.5return part_score * 0.7
除了识别结果,还应引入专门的结构异常检测模块,判断生成的字是否存在笔画断裂、部件错位、空间关系异常等问题。这类检测可以作为独立信号,与OCR识别结果融合,形成更全面的评分。
多模态大模型在识别时容易依赖语言先验“猜”出正确字,导致假阳性。解决方案是:将视觉结构检测与语言识别结果解耦。视觉结构检测只负责判断“字形结构是否正确”,不依赖上下文;语言模型只负责判断“这个字在语境中是否合理”。两者分别输出信号,再综合决策。
在实际系统中落地结构感知评分,需要注意以下几点:
结构标注数据的获取:需要构建汉字结构分解的标注数据,包括部件拆分、空间关系、笔画序列等。这部分数据可以基于公开的汉字结构数据库进行整理。
OCR与结构检测的协同:OCR负责快速筛选,结构检测负责精细评分。两者可以级联使用,先由OCR做初步判断,再由结构检测对OCR无法区分的case进行细粒度评分。
评分函数的可微性:如果评分函数需要嵌入强化学习流程,最好设计为可微或近似可微的形式,以便梯度回传。如果无法可微,也可以采用策略梯度方法,用评分作为奖励信号。
避免过拟合到特定字体:结构感知评分应关注结构关系而非像素级匹配,否则模型可能只学会生成训练集中出现过的字体风格,而无法泛化到新字体。
汉字生成任务的评估,核心挑战在于汉字本身是二维积木结构,而传统OCR评分将其视为不可拆分的黑箱,只能输出二值信号。这种非黑即白的评分方式无法区分轻微笔画偏差与严重结构错误,导致模型无法获得有效的优化方向。
解决路径是引入结构感知评分机制:将汉字表示为结构树,设计分层评分函数,结合结构异常检测,并在使用语言模型时解耦视觉结构与语言先验。这样,生成模型就能获得连续、细粒度的反馈信号,从而更高效地学会写对汉字、写好汉字。
对于从事生成式模型训练、OCR系统开发或多模态应用的开发者而言,理解汉字构型的特殊性,并据此设计更合理的评估与训练机制,是提升中文生成质量的关键一步。