Token导航 LogoToken导航

AI 资讯 · 科技行者

复旦论文提出汉字结构评价新方法

更新 2026-10-26科技行者正文 4564字阅读约 15分钟

你有没有试过让AI生成一张带中文字的海报?

结果往往是这样的:乍一看挺像那么回事,凑近了才发现不对劲。某个字多了一撇,某个偏旁被挤成了四不像,整体轮廓对,细节全崩。这不是个别现象,而是几乎所有文生图模型的通病,尤其是碰上笔画复杂的汉字时。

这篇来自复旦大学可信具身智能研究所的论文,就是冲着这个问题去的。他们发现了一个被所有人忽略的漏洞:现有的评价方法,从一开始就在用错误的方式"看"中文字。

**核心问题:OCR把汉字当成了一个不可拆分的黑箱**

要让AI生成的图越来越准,常见做法是用强化学习做后期训练,训练过程中需要一个"裁判"来打分,告诉模型生成得好不好。这个裁判通常是OCR模型。

OCR*:全称Optical Character Recognition,光学字符识别,就是让机器"认字"的技术,把图片里的文字转换成计算机能理解的文本。

OCR裁判的打分逻辑很简单粗暴:把生成图片里的文字截出来识别一遍,识别结果和目标文字一对比,对了就给分,错了就不给分。

问题就出在这个"对了就给分,错了就不给分"上。

汉字和英文字母不一样。英文字母是最小单位,26个字母排列组合成词。但汉字是一种二维的积木结构,"尬"字由"九"和"龙"的变体拼成,左右排布;"想"字由"相"和"心"上下叠放。这种由偏旁部首按照左右、上下、包围等空间关系组合而成的结构,叫做汉字的构型。

OCR识别这类复杂结构时,经常把整个字直接判断成一个不认识的东西,要么瞎猜一个形近字,要么干脆放弃。无论AI生成的字是写错了一笔还是写错了半边,只要最终OCR认不出,裁判给的分数都是零分。

这就好比你在批改一份100道选择题的试卷,但不管学生错一道题还是错九十道,你给的分数都一样,统统是零分。这样的打分方式,完全没法告诉学生"你哪里需要改进",模型也就学不到该往哪个方向优化。

论文里给了一个很直观的例子。生成图里有个"尬"字写错了,结构出了问题。专门的OCR模型老老实实地把它认成了另一个长得像的字,不对,打0分。换成更聪明的多模态大模型去识别,它结合上下文语境,硬是"猜"出了正确答案,打了1分,但这其实是一个假阳性,因为图上那个字形明明是错的,模型只是靠语言能力蒙对了而已。

还有一类专门检测"写错字"的工具,叫TextPecker,它能准确判断出这个字结构有问题,但处理方式是把它整个标记成一个异常符号"#",直接打0分。这种方法虽然不会被语言模型的"脑补"骗到,但同样是一种非黑即白的判断:对,或者错,中间没有灰色地带。

**可是汉字的错误本来就有程度之分。**

写错一个笔画和写错整个字的右半边,显然不是同一种严重程度的错误。如果评价系统分辨不出这种差异,那么训练出来的AI模型,自然也学不会"哪里改对了,哪里还需要继续改"。

**方法解读:把汉字拆成积木,一块一块地对**

研究者的思路是:既然汉字是拼出来的,那就把它彻底拆开,拆到不能再拆的最小零件,再去比对。

这里用到的工具叫IDS。

IDS*:全称Ideographic Description Sequence,中文可以理解为"汉字构型描述序列"。它用一套符号系统把汉字表示成一棵树状结构,树的内部节点是空间关系符号(比如表示左右排列、上下排列、包围关系的符号),叶子节点是最基本的偏旁部件。比如一个左右结构的字,会被描述成"左右组合符号+左边部件+右边部件",这个描述还能继续往下拆,直到拆成最基础、不能再分的笔画组件为止。

这就相当于给每个汉字配了一张"装配说明书",告诉你这个字是由哪几块积木、按什么方式拼起来的。

研究团队做的第一件事,是训练了一个专门的"IDS识别器"。这个识别器看到一张写着汉字的图片,不会直接告诉你"这是什么字",而是直接输出这个字的积木拆解结果,一步到位地把视觉信息转换成结构化的部件序列。

这里有个很容易被忽略但其实很关键的设计。训练这个识别器用的数据,不是从现实世界随手收集来的自然文本。

自然语言里的汉字使用频率极不均衡,常用字反复出现,生僻字几乎见不到。如果拿这种数据去训练识别器,它会学到一条捷径:看到某个大致轮廓,先猜这是个常见字,然后直接把这个常见字对应的标准拆解结果搬出来,而不是真的去看图片里的笔画部件长什么样。

这就好比你训练一个品酒师,但给他喝的99%都是同一款酒。久而久之他会养成条件反射,闻一下大概的气味就直接报出那款熟悉的酒名,根本不会真的去辨别每一口里细微的风味差异。一旦遇到他没喝过的酒,这套"经验"立刻失灵,而且更麻烦的是,你永远无法通过他的回答判断他到底有没有认真品尝。

为了堵住这条捷径,研究团队专门构建了一个叫IDSynth-1M的合成数据集,一百万张渲染出来的文字图片,里面的汉字覆盖范围做了刻意的均衡处理,常见字和生僻字出现的概率差不多。这样一来,识别器没法靠"蒙常见字"偷懒,只能老老实实盯着图片里的每一笔每一划去判断这个字到底是怎么拼出来的。

有了这个能看懂积木结构的识别器之后,第二步是设计具体的打分规则,论文把这套完整方案命名为IDSpect。

**IDSpect**的打分逻辑分成两条线同时进行。

一条叫语义分支,做的事情和传统OCR差不多,把生成图里的文字识别出来,和目标文字做字符级别的比对,衡量"整体读起来对不对"。

另一条叫结构分支,这是真正的新意所在。它把生成图里检测到的文字区域,用IDS识别器拆解成积木部件序列,同时把目标文字也用同样的规则做拆解,然后拿这两份"装配清单"逐一核对,哪些积木块对上了,哪些没对上,分别记一笔账。

两条分支最后按一定权重加在一起,形成最终的奖励分数,拿去指导AI模型的训练。这样即使最终识别出来的整字是错的,只要内部有一部分偏旁部件拼对了,模型依然能拿到相应的部分分数,而不是被判定为彻头彻尾的失败。

回到前面那个"尬"字的例子,IDSpect给出的分数是0.22,不是0也不是1。它既不像专家OCR那样给出一棍子打死的0分,也不像大模型那样被语言先验欺骗给出虚高的1分,它诚实地反映出:这个字确实写错了,但内部结构里还是有一部分拼对了,值得被认可和保留。

这里还有个技术细节值得一提:生成图片里检测到的文字区域,顺序往往是乱的,可能先检测到句子中间的字,再检测到开头的字。如果简单粗暴地按检测顺序去对照目标文字,匹配关系很容易全部错位。研究者为此设计了一套全局匹配算法,先用编辑对齐的方式找出每个检测片段最可能对应目标文字的哪一段,再做一次全局分配,确保每个目标位置的积木块只被记一次功,不会被重复计分或者因为顺序打乱而漏算。

**数据说话:结构质量和语义对齐都有提升**

研究团队把这套IDSpect奖励机制用在了Qwen-Image这个文生图模型上,用GRPO这种强化学习后期训练方法进行优化,在LongText和GenTextEval这两个中文文本渲染评测基准上做了对比实验。

| 奖励方式 | LongText结构质量 | LongText语义对齐 | GenTextEval结构质量 | GenTextEval语义对齐 |

|---|---|---|---|---|

| 未训练基座模型 | 0.924 | 0.834 | 0.933 | 0.810 |

| 传统OCR奖励 | 0.956 | 0.886 | 0.953 | 0.874 |

| TextPecker奖励 | 0.969 | 0.908 | 0.973 | 0.897 |

| IDSpect(本文方法) | **0.975** | **0.928** | **0.979** | **0.911** |

从数字上看,IDSpect在四项关键指标里全部拿到了最高分。相比最原始的OCR奖励,结构质量和语义对齐分别提升了约2到4个百分点;相比目前最强的竞品TextPecker,也依然有稳定的小幅提升。

在肉眼可见的生成效果上,差异更直观。论文里展示的几组对比图里,未经训练的原始模型经常把长句子里的字写得残缺不全;用OCR奖励训练过的模型整体可读性好了很多,但偶尔还是会出现结构性错误;用IDSpect训练出来的模型,在海报、招牌这类长文本场景里,内部笔画结构明显更完整,尤其是多行文字同时出现时,错误不容易累积串联。

**几种设计选择的对比实验**

论文还做了一系列消融实验,验证了具体设计细节上的取舍。

第一个问题是:拿什么当作比对的"标准答案"?是拿OCR自己识别出来的结果去跟图片比对一致性,还是直接拿用户想要的目标文字去做拆解当标准?实验显示,用OCR识别结果当标准,局部结构质量分数最高,能到0.980,但语义对齐分数只有0.901,低于用目标文字当标准的0.911。这说明图片内部结构自洽,不代表它真的写出了用户想要的那个字,就像一份作业字迹工整、逻辑自洽,但压根没有回答出题目要求的问题。

第二个问题是:检测到的多个文字片段,该怎么和目标文字的各个部分对应起来?论文比较了三种方式,按检测顺序直接拼接比对、按单字逐一独立匹配、以及论文最终采用的片段级对齐算法。结果显示,直接按检测顺序拼接的方式最容易受到检测乱序的干扰,语义对齐分数只有0.886;逐字匹配虽然摆脱了顺序干扰,但丢掉了字与字之间的位置信息,分数是0.899;而片段级对齐方法兼顾了两者,拿到了0.911的最高分。

**写在后面**

这篇论文让我意识到一件挺有意思的事:很多AI系统的瓶颈,不在模型本身不够聪明,而在于我们给它的反馈信号太粗糙。

Qwen-Image这个生成模型本身没有变,变的只是训练过程中打分的方式,结果效果就提升了不少。这说明有时候限制AI表现的,不是它"学不会",而是它根本没有机会知道自己错在哪一步。

还有一个细节我觉得特别值得琢磨:为了训练出一个不偷懒的识别器,研究者特意把训练数据里的汉字频率做了均衡化处理,故意让常见字和生僻字出现概率差不多。这个做法乍看是个很小的技术细节,但背后的逻辑值得深想:任何学习系统,只要数据分布不均衡,就天然有走捷径的倾向,而走捷径的后果往往要到遇到长尾情况时才会暴露出来,训练阶段根本看不出破绽。这不只是AI训练里的坑,人类学习很多技能的时候,是不是也常常掉进类似的陷阱?

论文最后提到,未来打算把这套思路扩展到日语、韩语这类同样有复杂构型特征的文字系统。这倒是让人好奇,如果把这套"拆积木"的逻辑搬到完全不同的书写系统里,比如阿拉伯文那种连笔书写的文字,会遇到什么新的麻烦?拆解的最小单元又该怎么定义?

Q&A

Q1:IDSpect是什么?

A:IDSpect是复旦大学团队提出的一种文生图模型训练奖励机制,它把汉字拆解成偏旁部件和空间关系的组合,和目标文字逐一比对,从而给AI生成的中文字打出更精细的分数,而不是简单判断对错。

Q2:IDSpect和传统OCR奖励有什么区别?

A:传统OCR奖励把汉字当作一个整体,识别对了给满分,识别错了就是零分,无法区分错误的严重程度。IDSpect会拆解汉字的内部结构,即使整字识别错了,只要部分偏旁部件拼对,依然能获得相应的部分分数。

Q3:IDSpect训练出来的AI模型效果怎么样?

A:在LongText和GenTextEval两个评测基准上,用IDSpect训练的Qwen-Image模型,结构质量和语义对齐分数均超过了传统OCR奖励和TextPecker方法,尤其在长文本和多行文字场景下表现更稳定。

文章标签学术研究

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。