简介:文生图模型一画汉字就“翻车”,根源常被归咎于生成能力,实则评价体系先出了问题:以OCR为裁判的奖励机制把汉字当成不可拆分的黑箱,只给全对或全错的两值打分。本文拆解汉字的二维构型本质,梳理OCR类裁判的三种失效模式,并给出基于部件分解与空间关系匹配的分级奖励方案,帮助开发者重构更有效的中文渲染评测与训练流水线。
近两年,文生图模型在画面质感、构图控制上的进步有目共睹,但只要提示词里出现汉字,翻车几乎是必然:海报标语少一笔、招牌文字左右颠倒、笔画复杂的字直接糊成一团。这不是个别模型的缺陷,而是当前几乎所有文生图体系在中文渲染上的共性短板。国内一支可信具身智能方向的研究团队在一篇论文中给出了一个被普遍忽视的解释:比生成能力更先失效的,是评价体系——现有方法从一开始就在用错误的方式“看”汉字。
让生成结果越来越准的主流路径是后期强化学习:生成一批候选图,交给一个“裁判”打分,高分样本被强化、低分样本被抑制。这个裁判通常由OCR(光学字符识别)模型充当。
它的打分逻辑很简单:抠出图中文字区域,识别一遍,逐字符与目标文本比对——对就给分,错就零分。
问题恰恰出在这套“对了给分、错了零分”的二值逻辑上。对一个字可能“错了一笔”也可能“错了半边”的汉字来说,0/1打分丢失了几乎所有有效信息。这就好比批改一份100道选择题的试卷:学生错1道和错90道,得分完全相同,统统零分。学生无从知道该补哪一块,模型同样如此——低分样本之间无法区分优劣,策略更新失去了方向。在强化学习术语里,这叫奖励信号过于稀疏:模型画对了90%的字形,奖励仍是0,优化无从谈起。
要理解为什么二值打分对汉字特别失真,得先看清汉字和拼音文字的结构差异。
拉丁字母体系里,26个字母是最小原子单位,单词是它们的线性排列,错误表现为“某个位置换了个字母”,逐字符比对天然合理。汉字则完全不同:它是一种二维的积木结构,由部件(偏旁部首及其变体)按照左右、上下、包围等空间关系组合而成,且这种组合是递归嵌套的。这种组织方式,就是所谓的汉字构型。举几个例子:
正因如此,汉字的渲染错误天然分层:
一个生成的“想”字,可能“木”完全正确、“目”写成了“日”、“心”位置偏上。三种错误的严重程度和改进方向完全不同,而OCR的反馈统统是同一个零分。
论文给了一组很直观的对照:同一个结构写错的“尬”字(左侧是“九”,右侧部件变形),交给三类裁判,得到三种典型失效。
三类裁判能力各异,共同点却是致命的:都把汉字当成不可拆分的原子,都回答不了“错多少、错在哪”。
这项研究的关键转向是:把评价对象从“整字”改为“构型”。
第一步,将目标字分解为部件及空间关系。业界早有成熟表达可借鉴,如Unicode的表意文字描述序列(IDS),也可以直接构造结构树:
想├─ 上部:相│ ├─ 左:木│ └─ 右:目└─ 下部:心
第二步,在生成图中定位各部件的候选区域,逐项比对三个维度:
把上述比对过程抽象成一个可微、可比的打分函数,示意实现如下:
def structural_reward(image, target_char):tree = decompose(target_char) # 部件 + 空间关系comps = detect_components(image) # 在生成图中定位候选部件score = 0.0for node in tree.nodes: # 逐部件累加部分得分box = match(comps, node)if box is None:continue # 缺件:只损失该项分值score += W1 * presence(node, box) # 部件在不在score += W2 * relation(node, box, tree) # 位置对不对score += W3 * shape(node, box) # 字形像不像return score / tree.full_score # 归一化到 0~1
三个打分维度可以这样落地:
权重大体与部件的视觉显著性和判别性挂钩:占比更大、更具区分度的部件通常承担更高分值。
这套分级打分带来三个直接收益:
对要落地中文图文生成的团队,这套思路可以拆到四个环节:
评测端:用结构化得分替代逐字OCR准确率作为核心指标;同时输出部件级错误分布——哪类部件高频出错、哪类空间关系高频出错——用于版本回归监测与训练数据配比。
训练端:将分级得分作为奖励项,与美学质量、图文一致性等奖励加权融合;按结构复杂度做课程学习,先训少部件的简单字,再训多层嵌套的复杂字;对高频出错的部件和关系做针对性过采样。
数据端:程序化合成“受控错误”样本——人为换件、错位、缺件——用于训练部件检测与匹配模块,标注可控、成本低、可无限扩展。
产品端:以海报、营销图生成场景为例,可在返回图像前增加一道“文字自检”闸门:
生成 → 文字区域检测 → 单字切分 → 部件匹配与结构对齐→ 分级得分 → 达标放行 / 不达标触发重生成或标记人工复核
把错字拦截在交付之前,远比事后人肉修图经济。
这一范式价值远超汉字本身:
反过来讲,凡是目标具有复合结构的任务,用单一端到端指标(准确率、编辑距离)做奖励,都会撞上OCR式的困境:信号稀疏、方向缺失、容易被“蒙对”。
把汉字从“一个不可拆分的符号”还原为“一棵可拆解的结构树”,评价才能从对错的判决,变成可执行的改进路径。裁判看得懂结构,模型才知道往哪儿练。对构建中文场景图文生成能力的团队而言,这项研究提醒的正是那件最容易忽略的事:先修好尺子,再谈画得准不准。