简介:文生图模型生成汉字时常出现笔画缺失、偏旁错位等问题,根源之一在于评价环节把整字当作不可拆分的黑箱,只给出对错二值信号,无法定位错误程度。本文从汉字构型出发,分析OCR裁判的评分缺陷,提出以偏旁部首与空间关系为中间表示的结构化评价思路,并讨论其对强化学习微调、数据筛选与工程落地的意义,帮助读者理解如何让模型获得更细粒度的优化方向。
让文生图模型生成一张含中文字的海报,结果往往具有欺骗性:远看版式合理、字形轮廓接近,放大后却发现某个字多了一撇、某个偏旁被挤压变形,甚至整块结构错位。这类问题在笔画繁多、部件嵌套的汉字上尤为突出,几乎成为当前生成模型的共性短板。
原因并不难理解。英文以字母为最小单位,字形结构是一维线性排列;汉字则是二维的积木式结构,由偏旁部首按照左右、上下、包围等空间关系组合而成,这种组合规则通常称为汉字的构型。模型要画对一个字,不仅要画对每个部件,还要画对部件之间的相对位置与比例。任何一层出错,最终字形都会失真。
要让模型逐步画得更准,常见做法是引入强化学习做后期训练:生成结果由一个“裁判”打分,模型根据分数调整策略。问题在于,这个裁判通常由通用文字识别能力充当,而它的评分方式从一开始就把汉字当成一个不可拆分的整体。
通用文字识别技术的工作流程可以概括为:从生成图片中截取文字区域,识别成计算机可读的文本,再与目标文字比对——一致给分,不一致不给分。
这套逻辑处理英文时问题不大,因为字母是最小单元,拼错一个字母与拼错整词在识别层面都会体现为文本不一致。但用于汉字时,它产生了两个层面的信息损失:
第一,错误程度被抹平。 一个字写错一笔与写错半边,只要最终识别不出来,得分都是零。这好比批改一百道选择题,学生错一道与错九十道得到相同分数,反馈信号无法告诉模型“哪里需要改进”。
第二,错误类型被掩盖。 面对结构异常的字形,识别模型可能强行输出一个形近字,也可能结合上下文语境“猜”出正确结果。后者尤其危险:它依赖语言先验蒙对答案,属于假阳性,图上字形明明是错的,却拿到了正分。另一类专门检测异常字形的方案虽然能判断结构有问题,但处理方式是把整字标记为异常符号并直接判零,同样是非黑即白的判断,中间没有灰色地带。
无论是哪种实现,本质都是把汉字视为不可拆分的原子单位。评价维度单一,模型自然学不到细粒度的优化方向。
改进思路的核心,是让评价信号从“整字对错”下沉到“结构层面”。汉字虽然形态万千,但其构型具有强规律性:部件数量有限、组合关系可枚举、部件间的位置约束相对稳定。这为结构化评价提供了可行基础。
一个可落地的评价框架大致包含三个层次:
1. 部件级分解。 将目标汉字拆解为部首与剩余部件序列,例如左右结构拆为左部件与右部件,上下结构拆为上部件与下部件,包围结构拆为外框与被包围部分。分解结果作为评价的中间表示,而非直接比对最终像素。
2. 空间关系校验。 对每个部件,检查其是否出现在预期区域内,以及部件之间的相对位置、尺寸比例、基线对齐是否符合构型约束。左右结构要求两部件横向排布且高度大致协调,上下结构要求纵向堆叠且重心稳定。这一层能捕捉“部件画对了但摆错了”的错误。
3. 笔画级完整性检查。 在部件内部进一步核验关键笔画是否存在、走向是否正确、连接关系是否成立。这一层解决“部件轮廓对但缺一笔”的问题。
三层检查的输出不是单一分数,而是一个结构化报告:哪个部件缺失、哪组空间关系被破坏、哪些笔画异常。这样的报告可以直接转化为奖励函数的多个分量,也可以作为数据筛选的依据。
用伪代码表示评分流程,大致如下:
def score_hanzi(generated_img, target_char):parts, relations = decompose(target_char) # 部件分解与构型约束report = {}for part in parts:region = locate(generated_img, part.expected_area)report[part.id] = {"present": check_presence(region, part),"strokes": check_strokes(region, part),}for rel in relations:report[rel.id] = check_spatial(rel, report) # 位置/比例/对齐return aggregate(report) # 多分量奖励,而非单一0/1
结构化评价的价值不止于“打分更准”,它改变了训练信号的形态。
在强化学习微调阶段,多分量奖励能缓解稀疏奖励问题。整字判对错时,模型在绝大多数探索步骤上拿不到有效梯度;拆到部件与空间关系后,即使整字尚未完全正确,部分正确也能获得区分度,策略优化更有方向。
在数据筛选阶段,结构化报告可用于定位低质量样本的具体缺陷,按错误类型分层管理数据集,而不是简单丢弃所有“识别失败”的样本。
在效果评估阶段,单一识别准确率无法反映生成质量的分布。引入部件完整率、空间关系合规率等指标,能更真实地刻画模型在复杂汉字上的能力边界。
需要强调的是,结构化评价并不排斥端到端识别。二者是互补关系:端到端信号提供整体一致性约束,结构化信号提供细粒度定位能力。工程上可以先以整体信号做粗筛,再用结构化检查做精修,兼顾效率与精度。
推进这类方案时,有几个现实约束值得提前考虑。
分解覆盖率。 汉字构型复杂,部分字形存在异体、连笔、部件嵌套等特殊情况,分解规则需要覆盖足够广的字符集,并对无法可靠分解的字形提供回退策略,避免评价流程本身成为瓶颈。
标注与规则成本。 部件位置约束与笔画校验依赖结构化先验,初期可通过规则库与少量标注结合的方式构建,后续再用模型辅助扩展,控制人工成本。
与生成模型的对齐。 评价粒度并非越细越好。过细的笔画级信号可能引入噪声,导致模型过度优化局部而破坏整体协调性。实践中需要根据任务类型调整各分量的权重,并在验证集上观察整体字形质量的同步变化。
误判兜底。 任何自动评价都存在误判,结构化报告应保留可追溯的中间结果,便于人工抽检与规则迭代,避免错误信号被放大进训练循环。
汉字生成之所以难,一半难在生成,一半难在评价。当评价把汉字当作不可拆分的黑箱,模型就只能收到“对”或“错”的笼统反馈,无法知道错在哪个部件、哪组关系、哪一笔。把汉字拆开来看,用部件与空间关系构成中间表示,让评分从二值判断变成结构化诊断,是提升生成质量的务实路径。对于从事多模态生成、数据质量治理与模型评估的开发者而言,这套思路同样适用于其他具有强结构先验的符号系统——先想清楚“如何评价”,往往比急于“如何生成”更能决定最终效果的上限。