简介:文生图模型画中文字时常出现笔画错乱、偏旁变形,一个被长期忽视的根源在评价环节:OCR裁判把汉字当作不可拆分的黑箱,只输出对或错的二元判决,模型无从定位错因。本文剖析三类裁判的失灵机制,解析汉字“部件—空间关系”的构型本质,并说明部件级细粒度打分如何为强化学习后训练提供可归因的奖励信号。
让文生图模型生成一张带中文的海报,早已是营销、设计、电商等场景的常见需求。但生成结果往往“乍一看挺像那么回事,凑近了才发现不对劲”:某个字多了一撇,某个偏旁被挤成四不像,整字轮廓大体正确,局部细节全面崩坏。笔画越复杂、字数越多,翻车概率越高。
这不是某一家模型的偶发缺陷,而是当前文生图技术在中文文字渲染上的系统性短板。其深层原因之一并不在生成端,而在评价端——我们用来给生成结果打分的“裁判”,从一开始就在用错误的方式“看”中文字。
要让生成质量持续提升,主流路径是对模型做强化学习后训练:先生成一批结果,由“裁判”逐条打分,再依据分数更新参数,循环往复。这个裁判通常由OCR模型担任。
OCR(光学字符识别)是让机器“认字”的技术,负责把图片中的文字转换为机器可读文本。用它做裁判,打分逻辑很直接:从生成图中裁出文字区域,识别一遍,与目标文字比对——一致给1分,不一致给0分。
问题恰恰出在“对了给分、错了不给分”这六个字上。
打个比方:批改一份100道选择题的试卷,规定无论学生错1道还是错90道,一律给零分,也不标注错在哪里。这样的分数既反映不出掌握程度,也给不出改进方向。对模型而言,奖励信号极度稀疏,信用分配无从谈起——它只知道“这批不好”,不知道“哪一笔、哪个部件不好”。
近期有研究系统性地检验了现有评价方案,发现三类常见裁判在汉字场景下全部失灵,且失灵方式各不相同。
1. 传统OCR:形近误认,信息丢失。 面对一个结构出错的字,OCR往往老老实实识别成形近字,判定不一致,给0分。判定本身没错,但0分掩盖了错误的内部结构:错的是整个字,还是某个部件?模型得不到任何定位信息。
2. 多模态大模型:语言先验“脑补”,产生假阳性。 换成更聪明的多模态大模型去认图中的字,它可能结合上下文语境,硬是“猜”出正确答案,给出1分。但图上的字形明明是错的,模型只是靠语言能力蒙对了——这是一个假阳性。更麻烦的是,这种错误信号会主动误导训练:模型可能学到“糊弄也行”,而不是“写对才行”。
3. 专用错字检测工具:能发现,但一刀切。 还有一类专门检测错字的工具,能准确判断出某个字结构异常,但处理方式是把它整体标记为异常符号,直接判0分。这类方法不会被语言模型“脑补”骗到,却仍是非黑即白:对,或者错,中间没有灰色地带。
三种裁判殊途同归:要么给不出定位信息,要么给出错误信号。共同的病根只有一条——把汉字当成不可拆分的黑箱。
理解病根,要先回到汉字与拼音文字的结构差异。
英文的最小单位是字母,26个字母一维线性排列组合成词,错误就是“某个字母错了”,识别与评价天然是字符级的。汉字则完全不同:它是二维的积木结构。笔画先组成部件,部件再按照左右、上下、包围等空间关系拼合成整字——“想”由“相”和“心”上下叠放,“明”由“日”和“月”左右并排,“国”是“囗”全包围“玉”,“赢”更是五个部件的紧凑排布。这种由偏旁部首按空间关系组合而成的结构,称为汉字的构型。
构型带来一个关键推论:汉字的错误天然可以分解、可以定位。 一个字画错,无非是两类问题之一——某个部件画错了(形状、笔画层面的错),或者部件之间的空间关系错了(比例失衡、位置错位、包围关系破裂)。评价体系本可以利用这个层级结构给出精细反馈,却长期被“整字识别”的范式忽略。
由此,改进方向也就清晰了:把“拆开汉字看结构”引入裁判的打分逻辑,让评价粒度与汉字构型的粒度对齐。具体可以做三层校验:
这样的裁判输出的不再是0/1,而是一个连续的、可分解的分数:错一个部件扣一部分分,错一处布局再扣一部分。示意如下:
# 传统裁判:整字二元判分def ocr_reward(img, target):return 1.0 if ocr(crop_text(img)) == target else 0.0# 结构化裁判:部件 + 空间关系的细粒度打分def structural_reward(img, target):parts = decompose(target) # 如 "想" -> ["相", "心"]rel = layout_of(target) # 如 "想" -> 上下结构s = sum(match_component(img, p) for p in parts)s += match_layout(img, rel)return s / (len(parts) + 1) # 连续值,可归因到具体错因
(以上为示意伪代码,仅用于说明两种奖励设计的差异,不代表任何具体系统实现。)
其一,奖励密度显著提升。 从0/1两档变为连续谱,原本“全对才有信号”的稀疏奖励,变成“每个样本都携带部分有效信号”,强化学习的样本效率随之改善。
其二,信用分配更准确。 分数可以归因到具体部件与关系,相当于每道“错题”都附带了错题解析,模型能明确知道下一步该往哪个方向优化。
其三,抵御语言先验污染。 逐部件核对不依赖上下文语义,多模态模型难以靠“猜词”骗过裁判,假阳性问题被从机制上抑制。
其四,改造成本可控。 结构化打分器对外暴露的仍是“图进、分数出”的接口,可以无缝替换训练管线中的原有OCR裁判,训练框架本身无需大改。
对依赖文字渲染的应用——营销海报、电商图文、品牌物料、教育课件——“生成即用”意味着省去反复重抽与人工校对的成本。这类能力正逐步沉淀到云上的AIGC服务中,以百度智能云为代表的内容生成与图像处理类服务,文字准确性都是衡量可用性的关键指标;评价方法的进步,最终会传导为生成质量的提升。
再往大处看,这套思路并不局限于汉字。日文汉字混排、韩文音节块等具有块状或二维结构的文字系统,同样面临整字评价粒度过粗的问题。把“评价对象自身的结构”纳入奖励设计,而不是把所有文字都塞进一维字符串的评价框架,是提升生成类模型可控性与可信度的一条通用路径。
AI画错汉字,病根不只在生成端,更在评价端。当裁判只会说“对”或“错”,学生永远不知道错在哪一笔。把汉字拆开看结构,让分数本身携带定位信息,才能把“画对中文字”从碰运气的概率事件,变成可以持续优化的工程问题。