TextPecker: Rewarding Structural Anomaly Quantification for Enhancing Visual Text Rendering¶
会议: CVPR 2026
arXiv: 2602.20903
代码: GitHub
领域: 图像生成
关键词: visual text rendering, structural anomaly, reinforcement-learning, reward model, OCR
一句话总结¶
提出 TextPecker——一种即插即用的结构异常感知 RL 策略,通过构建字符级结构异常标注数据集训练结构感知识别器,替代传统 OCR 的噪声奖励信号,联合优化语义对齐和结构保真度,在多个文本到图像模型(FLUX、SD3.5、Qwen-Image)上显著提升视觉文本渲染质量。
研究背景与动机¶
视觉文本渲染(VTR)仍是 T2I 生成的关键挑战:即使是先进模型(如 FLUX、GPT-4o、BAGEL)也频繁产生扭曲、模糊、错位或缺字等结构异常。
OCR/MLLM 作为评估器存在根本缺陷:现有评估和 RL 优化流程依赖 OCR 模型或 MLLM 识别生成文本再计算编辑距离奖励。然而这些模型无法感知细粒度结构异常,表现为两类失败:(a) 误解读:过度依赖语言先验"纠正"结构缺陷,忽略笔画缺失/错位等字形级缺陷;(b) 不可见:直接忽略严重模糊/扭曲区域,当作不存在。
评估器盲区导致误导性奖励:OCR 的"自动纠错"会压低编辑距离 \(N_e\)、虚高奖励分数 \(S\),导致 RL 优化方向偏离。即使是高度优化的 Qwen-Image、Seedream4.0 仍难以渲染结构忠实的文本。
结构异常标注数据匮乏:缺少字符级结构异常标注的训练数据,尤其是中文字符因二维空间组合和 8000+ 字符量带来组合爆炸。
方法详解¶
整体框架¶
TextPecker 想堵住的窟窿是:T2I 模型用 RL 优化文本渲染时,奖励信号来自 OCR/MLLM,而这些评估器对字形级的结构缺陷天生是"盲"的——要么靠语言先验把缺笔画的字"脑补"对,要么干脆跳过模糊扭曲的区域。结果就是奖励虚高、优化方向跑偏。它的对策很直接:把 GRPO 流程里那个不靠谱的 OCR 奖励,整个换成一个看得见结构异常的复合奖励,其余一概不动。
整体是一个标准的 GRPO 闭环。对每条 prompt,先从参考策略 \(\pi_{\theta_{\text{ref}}}\) 采样 \(G\) 个候选图像 \(\{o_i\}_{i=1}^G\);交给一个专门训练的「结构感知识别器」逐字符读出生成的文本,并逐字标出哪些字符存在结构异常;据此算出每个候选的联合奖励 \(\mathcal{R}_i\)(语义对齐 + 结构质量两块);再把组内奖励归一化成相对优势 \(A_i\),配合 KL 约束更新策略模型 \(\pi_\theta\)。因为改动只落在「奖励」这一环,TextPecker 对任意 T2I 模型都是即插即用的,不碰生成器架构。下面四个设计点,前三个拼出这个复合奖励,第四个则解决"识别器从哪来"。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
P["输入 prompt"] --> S["参考策略采样 G 个候选图像"]
S --> REC["结构感知识别器<br/>逐字符读文本 + 标结构异常"]
REC --> SE["语义对齐分数 S_E<br/>词级匈牙利匹配 + 未匹配惩罚"]
REC --> SQ["结构质量分数 S_Q<br/>异常比例 ×ω 放大惩罚"]
SE --> R["复合奖励 R = w_E·S_E + w_Q·S_Q"]
SQ --> R
R --> A["组内归一化优势 A_i + KL 约束"]
A --> UP["更新策略模型 π_θ"]
UP -->|GRPO 闭环| S
subgraph DATA["结构感知数据构建(1.4M 样本)"]
direction TB
D1["文本图像生成<br/>多模型 + 中英 prompt"] --> D2["结构异常标注<br/>OCR 初识别 + 逐字符标缺陷"]
D2 --> D3["笔画编辑合成引擎<br/>删除 / 交换 / 插入笔画"]
end
DATA -->|全参微调| REC
关键设计¶
1. 结构质量分数 \(\mathcal{S}_Q\):把"罕见但刺眼"的字形缺陷放大成强惩罚
对一个已经很强的生成器,结构错误往往是偶发的——一百个字里坏两三个,但人眼一看就出戏。如果只按异常字符比例线性扣分,这种零星缺陷几乎不影响分数,策略就学不到要修它们。\(\mathcal{S}_Q\) 的做法是给异常比例乘一个大于 1 的缩放因子再扣:
其中 \(N_P\) 是生成文本总字符数,\(N_a\) 是被识别器标为结构异常的字符数,缩放因子 \(\omega>1\)(实验取 \(\omega=5\))。\(\omega\) 把罕见错误的惩罚力度放大了五倍,相当于告诉策略"别想靠绝大多数字写对就蒙混过关",从而把优化压力精准地压到那些少数却扎眼的坏字上。
2. 语义对齐分数 \(\mathcal{S}_E\):词级匈牙利匹配 + 未匹配惩罚,比直接字符串比对更公平
生成图里的词序可能和 prompt 对不上,直接拿整串文本算编辑距离会把"内容写对但顺序换了"误判成大错。\(\mathcal{S}_E\) 改在词级别做:先按归一化编辑距离 NED 在目标词集 \(\mathcal{T}\) 和生成词集 \(\mathcal{P}\) 之间求一个匈牙利最优配对 \(\mathcal{M}\),配上的词算各自的 NED,配不上的词(多写或漏写)单独计入惩罚项:
这样既不会因词序差异冤枉对的内容,又能通过惩罚项抓住多余词和缺失词,对语义对齐给出全面的打分。
3. 复合奖励 \(\mathcal{R}\):语义和结构各占一半,同时管"写对字"和"写得清楚"
单看 \(\mathcal{S}_E\) 只保证内容对、单看 \(\mathcal{S}_Q\) 只保证字形干净,二者缺一不可,于是直接加权相加:
实验里取 \(w_E = w_Q = 0.5\),让语义准确性和结构保真度在优化中同等重要。这个 \(\mathcal{R}\) 就是替换掉 OCR 奖励后,喂进 GRPO 的那个信号。
4. 结构感知数据构建:用笔画编辑合成引擎绕开中文字符的组合爆炸
前三个设计都依赖一个能逐字判异常的识别器,而这种字符级结构异常标注的数据几乎没有现成的——中文尤其麻烦,二维空间组合加上 8000+ 字符量,靠人标根本覆盖不全。作者用一条三步流水线攒出了 1.4M 样本。第一步是文本图像生成:英文用 AnyText、SD1.5、SD3.5、FLUX、Seedream3.0、Qwen-Image,中文用 Cogview4、Kolors、Seedream3.0、Qwen-Image,中文 prompt 从 WanJuan1.0 采样并用 Qwen3-235B 生成字体风格描述,保证字形和版式足够多样。第二步是结构异常标注:先用 OCR 跑出初步识别结果,再由标注员逐字符标出模糊、扭曲、缺笔画、多余笔画等缺陷,严重粘连到认不出的字符用占位符顶替。
真正绕开组合爆炸的是第三步——笔画编辑合成引擎,它直接在笔画层面对中文字符做三种操作来批量造异常:笔画删除移除一部分笔画子集、笔画交换把两组不相交的笔画对调位置(对齐质心后再换)、笔画插入从别的字符采样笔画塞进来。合成出的异常字符和正常字符再经 SynthTIGER 渲染引擎贴到多样的背景与布局上。这样无需逐字人工造异常,就能覆盖海量罕见字形缺陷。各类数据的最终配比如下:
| 数据类型 | 级别 | 样本数 | 占比 |
|---|---|---|---|
| 人工标注 | Box | 559.6K | 39.32% |
| 人工标注 | Image | 131.1K | 9.21% |
| 合成异常文本 | Box | 452.5K | 31.80% |
| 合成异常文本 | Image | 100.0K | 7.03% |
| 合成正常文本 | Box | 150.0K | 10.54% |
| 合成正常文本 | Image | 30.0K | 2.10% |
| 合计 | – | 1.4M | 100% |
训练策略¶
策略侧基于 Flow-GRPO,把 GRPO 扩展到 rectified-flow 设定:通过向确定性采样动力学注入随机性,将其转写成一个随机微分方程,从而能在 flow 模型上做 on-policy 采样与优化:
识别器侧以 Qwen3-VL-8B 和 InternVL3-8B 为骨干,支持边界框级输入,在上述 1.4M 数据上全参数微调 2 个 epoch。
实验结果¶
结构异常感知(TSAP)与标准文本识别(CTR)¶
| 方法 | 英文 TSAP F1 | 英文 CTR Recall | 中文 TSAP F1 | 中文 CTR Recall |
|---|---|---|---|---|
| PP-OCRv5 | 0.000 | 0.720 | 0.024 | 0.921 |
| GOT-OCR-2.0 | 0.000 | 0.610 | 0.008 | 0.853 |
| GPT-5 | 0.170 | 0.556 | 0.226 | 0.758 |
| Qwen3-VL-8B | 0.032 | 0.807 | 0.017 | 0.943 |
| InternVL3-8B | 0.183 | 0.759 | 0.153 | 0.927 |
| TextPecker (InternVL3) | 0.870 | 0.944 | 0.927 | 0.962 |
| TextPecker (Qwen3-VL) | 0.862 | 0.918 | 0.925 | 0.972 |
- 现有 OCR 和 MLLM 在 TSAP 上几乎完全失败(F1 ≈ 0),TextPecker 达到 0.87+ F1。
- TextPecker 同时提升标准文本识别能力,CTR Recall 超过 0.94。
VTR RL 优化¶
- FLUX:相比基线 Sem. +38.3%、Qua. +31.6%;相比 OCR 奖励,GenTextEval Sem. +11.7%。
- Qwen-Image 中文渲染:语义对齐 +8.7%、结构保真度 +4.0%,达到新 SOTA。
- SD3.5-M:Qua. 从 0.671 提升至 0.959,Sem. 从 0.265 提升至 0.506。
消融实验¶
- 移除合成数据增强后中文识别性能显著下降,验证笔画编辑引擎对中文结构异常覆盖的必要性。
- 仅用人工标注数据训练时模型对未见异常类型泛化性差。
- \(\omega=5\) 在缩放因子消融中取得最优平衡。
优点与局限¶
优点: - 首次系统性识别 VTR 中结构异常感知的关键瓶颈,为评估和优化提供全新视角 - 即插即用,无需修改生成器架构,适用于任意 T2I 模型 - 笔画编辑合成引擎巧妙解决中文字符结构异常的组合爆炸问题 - 在已高度优化的 Qwen-Image 上仍取得显著提升
局限: - 数据标注成本较高(559.6K box 级标注) - 结构感知识别器基于 8B 参数 VLM,推理开销较大 - 主要验证中英文,其他文字系统(如阿拉伯文、日文假名)未覆盖
个人评价¶
⭐⭐⭐⭐
这篇论文对 VTR 领域的关键痛点(OCR 评估器的结构盲区)进行了深入分析和有效解决。从"OCR 和 MLLM 在 TSAP 上 F1 ≈ 0"这一发现出发,构建数据集→训练识别器→设计复合奖励→RL 优化的完整链路非常流畅。笔画编辑合成引擎的设计体现了对中文字符特性的深入理解。在已经高度优化的 Qwen-Image 上仍能取得 +8.7% 语义+4% 结构提升,充分说明方法的实用价值。不足之处在于标注成本较高且推理开销较大,但作为一项填补评估空白的工作,贡献突出。