作者:poetniu,腾讯 WXG 应用研究员
微信(WeChat)作为 12 亿+用户交流的平台,覆盖全球各个地区、不同语言的用户,而微信翻译作为桥梁为用户间的跨语言信息交流提供了便利。目前微信翻译每天为千万用户提供数亿次的翻译服务,且团队技术持续钻研,累计发表数十篇顶会论文、夺得多项 WMT 冠军。随着翻译质量的提升,微信翻译的应用形态从文本逐步扩展到图片、语音、网页、文档、视频等众多场景。本文以微信图片翻译为例介绍近一年的技术优化。
文章术语
ViT:Vision Transformer
NLP:自然语言处理
段落:指图片中语义完整且位置独立的文本区域
CNN:卷积神经网络
NMT:神经网络机器翻译
Image Inpainting:图片修复
GAN:Generative Adversarial Networks、生成式对抗网络
1. 微信图片翻译 1.0
首先简要介绍微信图片翻译 1.0 版本的技术方案,重点梳理其中的关键问题。
1.0 版本中微信图片翻译采用相对简单的方案,主要分为两个模块:后台 Server 负责图片的文字识别、段落合并、段落翻译等,客户端根据文字识别和翻译结果渲染生成翻译图片。整体 pipeline 如下图所示:

首先通过一批图片例子来看 1.0 版本的效果,这里我们对比竞品如有道、搜狗等图片翻译,如下图所示:
原图 | 微信图片翻译 1.0 | 有道 | 搜狗 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
通过上述例子,对于图片翻译中间的关键步骤进行简单对比得到如下结果:
因此,整体上来看 1.0 版本的图片翻译效果体验还有很大的提升空间,其关键模块的效果都需要进行较大的优化,特别是文本段落、图文渲染最直接影响用户体验的模块。
2. 微信图片翻译 2.0
基于上述 1.0 版本存在的主要问题,在 2.0 版本我们重点优化了以下前、后处理模块:
增加图片语种识别模块:判断图片的语种分布。
增加图片段落框检测模块:检测图片中的段落框,用于基础段落拆分。
增加文本段落矫正模块:判断文本是否需要合并或者拆分为新的段落。
增加图文合成渲染模块:在 Server 端直接进行图片和译文的合成。
于是,整体微信图片翻译 2.0 版本的 pipeline 如下:

主要模块关系如下图所示:

2.1 图片语种识别
图片语种识别是给定一张图片,判断其中是否包含文字,进一步判断图片中文字所属的语种,即 Image Script Identification。
传统的图片分类技术主要是基于 CNN 结构,受益于其自身的inductive biases(模型先验假设,如 translation equivariance 即转换等变性,通过 kernel 参数共享实现;locality 即局部性、通过卷积操作实现),在各个图片分类数据集取得领先的结果。而近年来随着 Transformer 结构在 NLP 领域取得突破的进展,诸如 NMT、BERT、GPT 等模型在机器翻译、文本分类、文本生成等任务得到广泛的应用。CV 领域研究者也尝试将 Transformer 结构引入到图像任务中,特别是今年谷歌提出统一的Vision Transformer(ViT)模型[1] 在大规模数据集的训练下,尽管缺少相应的 inductive biases,但是依旧超越 CNN 的效果。
也由此引起一股 ViT 的研究热潮,比如 Facebook 随即提出 DeiT [2]、微软提出 BEIT [3]、SwinTransformer [4]、清华提出 DynamicViT [5]等,这些工作基本都是在原始 ViT 的基础上优化预训练策略、模型结构(层次化、动态化)等来提升效果。
因此这里图片语种识别的方案也是基于 ViT,并且在 ViT 基础之上做了模型结构层面的加速优化提出 ShrinkViT。
2.1.1 ViT
原始 ViT 结构如下图(源自[1]):