All-in-One Multilingual Scene Text Recognition with Script-aware Mixture-of-Experts
Xingsong Ye, Yongkun Du, Jiaxin Zhang, Zhixian Li, Chong Sun, Chen Li, Jing Lyu, Lianwen Jin, Zhineng Chen
cs.CV
2026-09-21
复旦与腾讯提出 ScriptMoE,用图级 MoE 在单一模型里识别十种文字体系。TextMuSS-Bench 平均词准确率 82.06%,只换 PP-OCRv5 识别器就把 CC-OCR 多语 F1 从 65.71% 做到 80.89%。
英文和中文的场景文字识别已经接近饱和。走出这两个舒适区,落地系统还要读日文、韩文、阿拉伯文、印地文、西里尔文、泰文、藏文。现成方案分两派。专家 OCR 先做语言识别,再把裁剪块交给对应语言的识别器:语言分类错了,后面无法挽回,维护成本还随语言数线性上涨。视觉语言模型把所有文种塞进一个大模型,覆盖面够,参数量和推理成本对端侧不友好,而且在不少文种上仍然不准。
更干净的目标是一个模型读完主要文字体系。语言有几百种,按书写系统归并之后数量会塌下来。PP-OCRv5 MLT 用大约十个按文种分的模型覆盖 106 种语言。这篇收成十个文字体系:拉丁、西里尔、中、日、韩、阿拉伯、印地、泰、孟加拉、藏,覆盖 229 种语言。数据缺口还在。除了英文 Union14M 和中文 BCTR,其余文种几乎没有大规模真实场景训练数据。
数据先补齐。基于 UnionST 合成引擎做了 TextMuSS-10M:十个文种各 100 万张。词表按 PP-OCRv5 和各文种标准字符集过滤;每个文种收集 10 万到 100 万词,再拼短语、加乱序稀有字、从 News Crawl 抽句子。中日韩竖排比例提到 20%,其余 5%;阿拉伯文按从右到左渲染,保存仍用逻辑顺序。训练混合物是英文、中文真实数据、少量多语真实集 MLT2019,再加上这 1000 万合成图。
评测集 TextMuSS-Bench 复用 MLT2019 测试集的七个文种,另外补了藏文、俄文、泰文真实图,一共 10899 张。拉丁文独占 5885 张,中文只有 325 张。
模型侧的观察是:一张场景文字图几乎总是单一文种,路由决策几乎没有歧义。ScriptMoE 共用一个 SVTRv2 视觉编码器,只把解码器的前馈层换成稀疏专家。十个文种按字形并成四组:字母组(拉丁加西里尔)、CJK、阿拉伯、其余(印地、孟加拉、藏、泰)。图像级路由器对整图池化特征做一次 Top-2 选择,这一张图的所有输出 token 走同一组专家,避免 token 级来回跳。另有一个始终打开的共享专家,承接数字、标点、弯曲透视这类跨文种共性。辅助的四分类头挂在同一份池化特征上,用 Unicode 范围自动得到文种组标签,损失权重只有 0.1,轻轻把专家往文种方向推,并不直接指定走哪个专家。解码器只有 2 层,和 SVTRv2-AR 基线对齐,差别只在 MoE。
所有 STR 基线用同一套数据、同一训练轮数重训。ScriptMoE 在 TextMuSS-Bench 上平均词准确率 82.06%,比最强基线 SVTRv2-AR 的 80.75% 高 1.31 个点。增益集中在难文种:阿拉伯 78.09% 对 75.11%,泰文 72.00% 对 69.60%,藏文 88.76% 对 86.80%。拉丁文掉了 0.60 个点(91.67% 对 92.27%),印地文掉 0.51 个点。
和通用系统比,差距大得多。PP-OCRv5 MLT 平均 63.59%,Qwen3.5-9B 零样本 63.77%。InternVL3.5-8B 平均只有 24.94%,DeepSeek-OCR2 只有 8.61%,不少模型在阿拉伯、孟加拉、藏文上接近零。
端到端 CC-OCR 多语任务上,检测器仍用 PP-OCRv5,只换识别器。
| 方法 | 指标 | 结果 |
| ScriptMoE | TextMuSS-Bench 十文种平均词准确率 | 82.06% |
| SVTRv2-AR | 同数据重训 | 80.75% |
| PP-OCRv5 Det + ScriptMoE | CC-OCR 多语 F1 | 80.89% |
| Qwen3.5-9B | CC-OCR 零样本 F1 | 80.73% |
| PP-OCRv5 MLT | CC-OCR F1 | 65.71% |
整模 45.85M 参数,每张图激活 41.13M。V100、batch 256 下延迟 541 毫秒,比 SVTRv2-AR 的 396 毫秒慢,比 MAERec 的 1298 毫秒快。中文 BCTR 平均 86.85%(基线 85.93%),英文 Union14M-Benchmark 88.95%(基线 88.67%),高资源文种没有被抽空。
消融里四个专家最好;扩到十个(一文种一专家)掉到 81.32%,样本被拆太碎。去掉共享专家平均掉 0.71,阿拉伯和藏文各掉约 3.6 个点。只训真实数据时俄、泰、藏准确率是 0。合成加真实把 MLT2019 七文种平均从 77.12% 拉到 85.52%。
落地多语 OCR 的人,现在多半在「每语言一个模型」和「上一个 9B VLM」之间选。这篇给出第三条路:一个 46M 的识别器,端到端 F1 能跟 9B 级 VLM 打平。代码挂在 OpenOCR。已经在用 PP-OCR 检测器的系统,换识别器这一刀最便宜。
相对同结构稠密解码器,MoE 只加了 1.31 个点。真正拉开的是和分语言专家系统、通用 VLM 的对比。合成数据的贡献可能不小于架构:没有 TextMuSS-10M,三个低资源文种根本训不起来。
作者写了三条。合成数据和真实场景仍有域差。拉丁-西里尔同形字没有彻底解决:看起来一样的字母会被认成另一种文字。端到端仍受制于上游 PP-OCRv5 检测器,漏检误检在按词打分的拉丁文上最明显。
评测集拉丁文 5885 张、中文 325 张,平均准确率是十文种算术平均,小语种权重大。STR 基线是同数据重训,VLM 是零样本,这个对比公平,但不能据此说专用识别器已经全面超过 VLM,对方没在 TextMuSS-10M 上微调。Hindi 和 Latin 相对稠密基线是退步的。推理比 SVTRv2-AR 慢约 37%。持续学习加新文种写在未来工作里,这篇没做。