近年来,文本识别因其在自动驾驶、文档检索、签名识别等方面的广泛应用而受到广泛关注。然而,现有的文本识别方法主要集中在英文文本,而忽略了中文文本识别(CTR)的巨大市场。具体来说,汉语是世界上使用人数最多的语言,有13.1亿人使用,这意味着CTR及其下游任务肯定会对这一人群产生至关重要的影响。
基于我们的观察,我们总结了对中文文本识别关注不足的三个潜在原因:
在本文中,我们试图构建一个点击率的基准来填补这一空白。我们首先从公开竞赛、论文和项目中获得现有的CTR数据集,得到四个类别,即场景、网络、文档和手写(每个数据集的一些示例如下图所示)。我们还从人类校准的每个类别的可识别性方面证明了数据集构建的合理性。然后我们以合理的比例将每个数据集手工划分为训练集、验证集和测试集。验证集的目的是公平地比较现有的方法,即确保基于验证集选择最佳的超参数,以避免面向测试集的调优。
此外,我们在收集的数据集上再现了一些有代表性的文本识别方法的结果作为基线。实验结果表明,一些最初针对英语文本提出的SOTA方法在CTR数据集上的表现不如英语数据集。通过分析,一个可能的原因是汉语文本的某些特点给现有的方法带来了障碍。针对汉字复杂的内部结构,我们采用多任务的方式引入激进层面的监督,以更好地识别汉字。总的来说,我们的贡献可以列出如下:
这里我们介绍汉字的三种表示方式(参见下图(a)中的示例“奇”),即字符级、部首级和笔画级。
字符等级。根据中国国家标准GB18030-2005【https://zh.wikipedia.org/wiki/GB_18030】,汉字总数为70244个,其中一级常用字符为3755个。
Radical level(偏旁部首级别). 根据具体描述字符的Unicode标准 【https://unicode.org/charts/PDF/U2FF0.pdf】,一级常用汉字共有12个偏旁结构(见上图(b))和514个偏旁。对于3755个常用汉字,根级表示可以有效地将字母表的大小从3755个减少到526个。
笔画级别:根据Unicode Han Database 【http://www.unicode.org】,每个汉字都可以分解成一个笔划序列。笔画有五种基本类型(例如,水平、垂直、左向、右向和转弯),每种类型都包含几个实例(参见图©)。
大量的字符。根据国家标准GB18030-2005,汉字总数为70,244个(其中常用一级字符3,755个)。它比英文字符的比例要大得多,英文字符只包含26个大写字母和26个小写字母(见下图(a))。一方面,进行大规模分类本质上是一项艰巨的任务。另一方面,在CTR数据集上进行实验时,识别器可能会遇到具有挑战性的 zero-shot 问题,即待测试的字符可能不在训练集中。
类似的外观。与英文字母相比,有相当多的汉字簇具有相似的外观(见图(b))。例如,“戌”和“戍”之间的区别仅仅在于一个微小的笔划。即使人眼也很难识别,这给现有的文本识别方法带来了负担。
复杂的顺序模式。我们观察到,现有英语基准中的大多数样本都处于单词水平。由于两个英语单词之间有一个空格,人们在标记过程中倾向于将它们分开来进行检测。此外,英语单词中存在固有的统计模式(例如,“abl”后面更可能跟着“e”),从而帮助识别器更好地捕捉顺序模式。相反,中文文本更多地出现在短语或句子中。在这种情况下,汉字之间在词性上存在复杂的依赖关系(见下图©),这确实给识别器学习顺序模式带来了困难。
常见的垂直文本。与英语文本相比,由于自然场景中常用的传统对联或招牌,中文文本更倾向于垂直呈现。相反,由于人们固有的阅读习惯,垂直英语文本很少出现(见下图(d))。
复杂的内部结构。如2.1所述,与英语的单成分汉字不同,汉字大多是多成分的(见上文图(a)),即每个汉字都可以分解成几个由词根结构组织起来的词根。更复杂的内部结构使得汉字分类更加困难。
汉语文本区别于英语文本的特点。
场景数据集。从竞赛、论文和项目中,我们获得了一系列场景数据集,包括RCTW、ReCTS、LSVT、ArT和CTW。每个数据集的详细介绍如下:
提供12263张自然场景的中文标注文本图像
。我们从训练集中获得了44,420个文本图像,并将它们用于基准测试。由于文本标签不可用,所以没有使用RCTW的测试集。街景中文文本图像
,主要来源于广告牌。我们只采用训练集和裁剪107,657个文本样本作为基准。提供了50,000个全标记(多边形框和文本标签)和400,000个部分标记(每个图像只有一个文本实例)样本
。我们只使用全标记的训练集并裁剪243,063个文本图像作为基准。各种文本布局
(例如,旋转文本和弯曲文本)的自然场景中捕获的文本样本。在这里,我们从训练集中获得了49,951个裁剪的文本图像,并将它们用于我们的基准测试。我们结合上述所有数据集,得到636,455个文本样本。我们随机对这些样本进行洗牌,并按8:1:1的比例进行分割,得到509,164个样本用于训练,63,645个样本用于验证,63,646个样本用于测试。
网络数据集。为了收集web数据集,我们使用了MTWI,它包含了淘宝网站上17个不同类别的20000张中英文web文本图像。文本样本出现在各种场景、排版和设计中。我们从训练集中提取了140589张文本图像,并按8:1:1的比例进行手动分割,得到112471张样本用于训练,14059张样本用于验证,14059张样本用于测试。
文档数据集。我们使用公共存储库Text Render 【https://github.com/Sanster/text_renderer】来生成一些文档样式的合成文本图像。更具体地说,我们对长度从1到15不等的文本进行统一采样。语料库来自维基、电影、亚马逊和百度。该数据集共包含500,000个数据集,随机分为训练集、验证集和测试集,比例为8:1:1 (400,000 v.s. 50,000 v.s. 50,000)。
手写体数据集。我们基于SCUT-HCCDoc收集手写数据集,该数据集在无约束环境下用相机捕获中文手写图像
。根据官方设置,我们获得93,254个用于训练的文本图像和23,389个用于测试的文本图像。为了进行更严谨的研究,我们以4:1的比例手动将原始训练集分成两组,得到74603个样本用于训练,18651个样本用于验证。为方便起见,我们继续使用原来的测试集。
所采用数据集的许可证。RCTW、ReCTS、ArT、LSVT、MTWI等数据集在发布时没有相关的开源许可。因此,我们已经联系了这些数据集的所有者,并确认它们可以用于学术研究
。数据集CTW使用Attribution-NonCommercial-ShareAlike 4.0 International(简称CC BY-NC-SA 4.0 【https://creativecommons.org/licenses/by-nc-sa/4.0/】)许可协议,授权用户以任何媒介或格式复制和再分发该材料。在SCUT-HCCDoc的GitHub【https://github.com/HCIILAB/SCUT-HCCDoc_Dataset_Release】存储库中,作者已经声明该数据集只能用于非商业研究目的
。此外,我们已经联系了数据集的作者,并获得了学术研究的许可。
考虑到这些样本可能会给训练过程带来噪声,我们决定将其从数据集中去除
。3)构建单独的验证集。通过观察,现有的英语文本识别基准通常缺乏验证集。实际上,在训练阶段,测试集是不可用的,需要根据在验证集上的表现来选择最佳模型。在这里,我们考虑了验证集,以进行更严格的研究(参见图©)。4)只收集有可用文本标签的样本。我们观察到,许多测试集的文本标签是不可公开的,特别是那些竞争数据集。在这种情况下,我们只使用那些带有可用标注文本标签的示例。
字母大小和字符数量。在下表中,我们可以看到四个数据集的字母表大小和汉字比例有所不同。例如,大多数网络文本都是中文广告,有固定的短语表达,因此在字母表中包含的字符较少(4402个字符)。此外,web数据集包含许多电话号码和英文网站,导致汉字在四个数据集中所占比例最低(44.9%)。对于手写数据集,大多数文本是中国古诗,其中包含比其他数据集更多的不常用字符,因此产生了最大的字母表(6105个字符)。因此,手写数据集的测试集包含了训练集中没有的最多的 zero-shot 字符(253个 zero-shot 字符),这进一步增加了识别的难度。
下两张图展示了文本长度和长宽比(即宽度与高度的比值)的分布。从这些图中,我们观察到长文本(例如长度≥10)在手写数据集中出现的频率更高,这给基线带来了困难。相反,场景和web数据集中的文本相对较短,可能是考虑到乘客、顾客等的阅读效率。对于比例分布,我们观察到由于野外常用的对联和招牌,场景数据集比其他数据集具有更多的垂直文本(比例≤1)。相比之下,手写数据集包含更多的水平文本。
字符和词频。如下表所示,我们分析了每个数据集中字符和单词的频率【用“jieba”把文本拆成单词。https://github.com/fxsjy/jieba】,并观察到一些有趣的现象。例如,由于自然场景中有许多中国品牌或国有企业,因此“中
”、“国
”和“中国
”一词在场景数据集中频繁出现。此外,网络数据集包含许多高频广告术语,如“包邮
”(免费送货)、“正品
”(认证产品)等。由于文档和手写体数据集中的样本多为中文句子,因此助词“的
”出现频率最高。特别是,在手写数据集中,由于一些文本图像是从日记中裁剪出来的,因此有许多字符或单词指代诸如“我
”、“你
”、“我们
”等。
人类的可识别性校准。为了找出四个数据集中影响文本图像可识别性的因素,我们邀请了20名受过高等教育的参与者来进行这个实验。我们邀请参与者从不同的角度找出阻碍可识别性的相应原因(多选):1)遮挡(前景),2)倾斜或弯曲(实例级),3)背景混乱(背景),4)涂鸦(字符级),5)模糊(图像源)。如果任何一个原因都不满足,我们认为文本图像是可识别的。总的来说,我们对每个数据集有500票(每个数据集有25个图像样本,20个参与者)。统计数据如下表所示。
我们可以看到,在场景数据集中,参与者的投票主要集中在“遮挡(Occlusion)”,“背景混淆(Background Confusion)”和“模糊(Blur)”,这表明它是人类识别最复杂的数据集。影响文本图像可识别性的因素主要来自于野外环境和文本图像的获取方式。对于web数据集,通过可控生成,文本外观可以更加多样化,导致“斜或弯(Oblique or Curved)”选择的票数最多。对于文档数据集,样本对于人类来说是相对可识别的,因此较少投票。在笔迹数据集中,参与者投票最多的是“潦草(Scribble)”,这表明笔迹中的笔画衔接也是阻碍可识别性的基本因素。从上面的观察中,我们可以发现影响可识别性的因素在不同的数据集上是不同的,因此激励我们分别研究每个数据集上的性能。
CRNN 是一种典型的基于ctc的方法,在工业中应用广泛。它将文本图像发送给CNN提取图像特征,然后采用两层LSTM对序列模式进行编码。最后,LSTM的输出被馈送到CTC (Connectionist Temperal Classification)解码器,以最大化所有路径通向 GT 的概率。
ASTER 是一种典型的基于校正的方法,旨在处理不规则文本图像。它引入了一个空间变换网络(STN) 来校正给定的文本图像。然后将校正后的文本图像发送给CNN和两层LSTM进行特征提取。特别地,ASTER利用注意机制来预测最终的文本序列。
MORAN 是一种具有代表性的基于校正的方法。它首先采用多目标整流网络(MORN)以弱监督的方式预测整流像素偏移(不同于ASTER采用STN)。输出的像素偏移量进一步用于生成校正后的图像,该图像进一步发送到基于注意力的解码器(ASRN)进行文本识别。
SAR 是利用二维特征映射实现更鲁棒解码的代表性方法。与CRNN、ASTER 和 MORAN 将给定图像压缩成一维特征图不同,SAR采用二维关注特征图的空间维度进行解码,在弯曲和倾斜文本中具有更强的性能。
SEED 是一种具有代表性的基于语义的方法。引入语义模块提取全局语义嵌入,并利用它初始化解码器的第一隐藏状态。得益于在识别过程之前引入语义,SEED解码器在识别低质量文本图像方面显示出优势
。
MASTER 是一种基于注意的方法,它利用自注意机制来学习对扭曲文本图像的更强大和鲁棒的表示。同时,得益于训练并行化和内存缓存机制,该方法训练效率高,推理速度快。
ABINet 是一种自主、双向、迭代的场景文本识别方法。自主原则是指视觉模型和语言模型应该分开学习
;提出了双向原则,以捕获两倍的信息量;迭代原则旨在从视觉和语言线索中改进预测。此外,作者提出了一种自我训练方法,使ABINet能够从未标记的图像中学习。
TransOCR 是基于transformer的代表性方法之一。它最初的设计目的是为超分辨率任务提供文本先验。采用ResNet-34作为编码器,自关注模块作为解码器。与基于 rnn 的解码器不同,自注意模块更有效地捕获给定文本图像的语义特征。
四个数据集的基线结果。ACC / NED分别采用百分制和十进制。
实现细节。我们在Github上采用CRNN、ASTER、MORAN、SAR、SEED、MASTER、ABINet和TransOCR的现成PyTorch实现,在收集到的CTR数据集上重现实验结果。所有基线实验均在 11GB 内存的NVIDIA RTX 2080Ti GPU上进行。为了保持现有识别器的时间效率,并使文本图像对识别器更具可识别性,我们将所有实验的输入图像大小调整为32 × 256。我们利用每个数据集的验证集根据识别精度选择最佳超参数,然后使用测试集评估基线。为了方便起见,我们将所有实验的四个数据集的字母表组合在一起,得到了一个总共7934个字符的字母表。基线没有使用数据增强和预训练等其他策略。
评估协议。在实践中,统一的评价方案对于公平比较是必不可少的。在ICDAR2019 ReCTS Competition【https://rrc.cvc.uab.es/?ch=12&com=tasks】之后,我们利用一些规则来转换预测和标签:(1)将全宽字符转换为半宽字符;(2)将繁体字转换为简体字;(3)将大写字母转换为小写字母;(4)清除所有空格。在这些转换之后,我们利用广泛使用的度量精度(ACC)来评估基线。此外,由于CTR数据集比英文文本识别数据集包含更多的长文本图像,因此使用归一化编辑距离(NED)来综合评估基线的性能。ACC 和 NED 的取值范围均为[0,1]。较高的ACC 和 NED 表明评估基线的表现较好。
实验结果。我们首先分析不同方法的实验结果(见上表)。我们观察到,CRNN在每个数据集上的性能都优于那些基于注意力的普通识别器(即MORAN , SEED和SAR),后者在遇到较长中文文本的文本图像时容易出现注意力漂移问题(drift problem)。虽然CRNN在场景数据集上的性能不如基于 Transformer 的方法,但CRNN的参数更少,推理时间更短。此外,我们注意到SEED并不是在所有数据集上都表现良好。一个可能的原因是SEED需要将每个文本图像映射到 fastText 引导下对应的语义嵌入,而中文文本通常包含复杂的语义,这给语义学习过程带来了困难。显然,TransOCR超越了所有同类算法,因为它能够更灵活地对序列模式进行建模。
接下来,我们从数据集的角度对实验结果进行分析。如上表所示,由于该数据集中的潦草,所有基线在手写数据集上的性能都不太好。如上上表所示,手写数据集中几乎40%的文本样本被标记为“Scribble”。实际上,写作者可能会加入或省略一些笔画来加快书写速度,这确实给现有的方法带来了困难。相反,由于文档数据集中的文本样本与其他三个数据集相比具有更高的可识别性,因此所有基线的识别准确率都可以超过90.0%。虽然场景数据集中包含了更多的样本,但一些问题(如遮挡、背景混淆、模糊等)仍然对基线方法提出了挑战,导致场景数据集中的性能相对较差。对于web数据集,所有基线的性能都低于场景数据集,这可能源于训练样本的稀缺性。
PRAB与识别器共享特征提取器,并使用识别器的注意掩码裁剪每个字符的特征映射
。通过基于 Transformer 的解码器,每个字符被解码成一个根序列,根序列的监督是现成的,如[Denseran for offline handwritten chinese character recognition]所述。
采用二维的基于注意的识别器
,即TransOCR。在这里,识别器可以被任何其他基于二维注意力的识别器所取代。为了使基于一维注意力的识别器(例如ASTER , MORAN和SEED)受益于所提出的PRAB,我们可以简单地将它们的解码器替换为二维注意力解码器。