论文链接:
项目链接:
近年来,深度学习的蓬勃发展见证了文本识别的快速发展。然而,现有的文本识别方法主要针对英文文本,而忽略了中文文本的关键作用。中文文本识别作为另一种广泛使用的语言,有着广泛的应用市场。在实际观测的基础上,由于缺乏合理的数据集构建标准、统一的评价方法和现有基线的结果,导致对中文文本识别的关注较少。为了填补这一空白,我们从公开可用的比赛、项目和论文中手动收集中文文本数据集,然后将其分为四类,包括场景数据集、Web数据集、文档数据集和手写数据集。此外,在这些数据集上用统一的评价方法对一系列有代表性的文本识别方法进行了评价,并给出了实验结果。通过对实验结果的分析,发现最新的英语文本识别基线在中国情景下表现不佳,我们认为由于中国文本与英语文本有很大不同的特点,仍有许多挑战需要探索。代码和数据集在https://github.com/FudanVI/benchmarking-chinese-text-recognition上公开提供
近年来,文本识别因其在自动驾驶[53,92]、文档检索[49,85]、签名识别[52,55]等方面的广泛应用而受到广泛关注。然而,现有的文本识别方法主要针对英文文本[4,15,16,27,36,45,54,58-60,65,66],而忽略了中文文本识别(CTR)的巨大市场。具体地说,汉语是世界上说得最多的语言,有13.1亿人说中文,这意味着CTR及其下游任务肯定会对这一人群产生至关重要的影响。基于我们的观察,我们总结了中文文本识别缺乏关注的三个重要原因:
本文试图构建一个中文文本识别的基准来填补这一空白。首先从公开竞赛、论文和课题中提取已有的中文文本数据集,得到四个类别,包括场景、网页、文档和手写体(请参见图2)。然后,以合理的比例将每个数据集手动划分为训练、验证和测试集。请注意,与现有的英语文本基准不同,特别设计验证集来公平地比较现有的方法,即确保最佳模型是基于验证集而不是测试集选择的。此外,还再现了一些具有代表性的文本识别方法(如CRNN[59],aster[60],moran[45]等)的结果。在收集的数据集中作为基准的基准线。通过对基线实验结果的分析,我们发现一些最初为英语文本设计的最先进的方法并不能很好地适应中文文本。通过深入的分析,发现中文文本的一些特征(如长文本、大字母表、复杂的语义特征)确实以不同的方式对现有的方法设置了障碍。还证明了数据集构建的合理性,在每个类别的可识别性,并由人类校准。总的来说,本文的贡献可以列为如下:
在本节中,首先介绍汉字的层次表示,然后讨论汉语文本与英语文本不同的一些特征。最后,介绍了现有的文本识别方法。
这里介绍三种表示汉字的方法(参见图3(a)中的例子“奇”和“绍”),包括字符级别、基本级别和笔画级别。
大量的字符;
相似性;
复杂的顺序特征;
常见的竖排文本;
通用文本ocr方法
其中,自上而下的方法将每个单词视为唯一的类别,并执行词级分类,而自下而上的方法通过执行字符级识别,然后将它们分组为单词,将每个字符视为类别。
Jaderberg等人[31]提出了一种具有代表性的自顶向下方法,利用文本图像的词级深层特征对9万个常用词进行词级分类。早期的自下而上的方法,如PhotoOCR[7]和Tasseract[62],倾向于使用图像处理操作定位精确文本区域,并使用SVM或其他线性分类器对分割的区域执行字符识别,最后将分离的字符片段分组为一个完整的单词。
随着深度学习的蓬勃发展,研究者们也仿照自下而上的方法,尝试建立基于深度神经网络的文本识别模型例如,CRNN[59]使用CNN-RNN体系结构来提取文本图像的特征,并在CTC损失[24]的情况下进一步监督这些特征,以最大化标签真实的概率。然而,由于CRNN在解码时将特征的高度限制为1,因此在自然场景中容易受到一些失真的文本图像的影响。在这种情况下,提出了一些基于纠错的方法来缓解这一问题。例如,ASTER[60]利用SpatialTransformer Networks[32]通过控制点来纠正扭曲的文本。Moran[45]首先以弱监督的方式生成像素方向的偏移图,然后通过像素采样对文本图像进行校正。除了以上方法外,其他方法尝试在2D特征域中进行文本识别[36,37]。例如,SAR[36]直接利用二维特征进行解码。[37]利用字符级标注,利用二维特征映射对每个字符的分割掩码进行预测。此外,一些著作[21,58,82]也试图在自然语言处理领域蓬勃发展的Transformer[64]的基础上构建极端认知器,通过自我注意模块来稳健地学习文本图像的表示。近年来,一些研究者将语义知识融入到文本识别器中,以充分利用外部语言先验知识[20,54,75,88]。例如,SEED[54]利用由FastText[8]引导的文本嵌入来初始化基于注意力的解码器。Abinet[20]设计了两个自治分支来迭代优化视觉和语言模型。总体而言,这些通用的文本识别方法可以很容易地转移到中文场景中,只需简单地替换字母或语言优先级。然而,如果进一步考虑到中文文本的特点,它们的表现仍有很大的提高空间。
中文识别方法
尽管中文文本识别在世界各地都有巨大的应用市场,但专门为中文文本识别设计的方法很少。特别地,由于CASIA-HWDB数据库[39]制定的详细规范,现有的中文文本方法主要针对手写文本识别[13,14,19,28,76,79]或手写字符识别[9,11,77,80,84,94,95,97]。比如说,HMM。[81]提出了模板-实例损失的概念来区分特征域中的相似汉字对。[86]利用一种迭代注意机制逐步集中于汉字的可区分区域。[78]作者利用隐马尔可夫模型对中文文本进行识别,同时利用汉字的相似性来减少总的隐含状态数。然而,这些识别方法都是在字符级别上工作的,它们很容易受到那些没有出现在训练集中的字符的影响。为了缓解字符零射问题,一些研究人员试图将看不见的汉字放在部首级别的撞击上[9,70,74,94]。例如,DenseRAN[74]遵循图像字幕的方式,迭代地解码部首序列。[70]在[70]中,作者利用打印的图像作为支持样本,强制相同的部首在特征域中接近。虽然这些基于部首的方法在一定程度上缓解了zero-shot问题,但如果训练集中没有出现部首,可能会出现另一个难题,称为字根零射问题。为了从根本上解决零射问题,陈等人提出了解决方案。[11]尝试将汉字分解为笔画,笔画是汉字的原子单位,采用迭代的方式生成汉字的笔画序列,然后利用暹罗架构解决视觉特征引导下的一对多问题。
总体而言,中文文本识别的研究仍然不尽如人意,原因有两个:
在这种情况下,需要以合理、统一的标准构建和评价数据集和基线。
在这一部分中,首先介绍中文文本识别数据集的预处理方法,然后详细介绍每个类别(如场景、Web、文档和手写)的数据集。最后,对收集到的数据集进行了分析。
保留包含其他语言字符的样本。在日常生活中,会见到各种语言的字符,例如中文、英文、日文、韩文等,因此为了追求实用性,依然保留数据集中其他语言的样本。
移除标签为“###”的样本。一般情况下,数据集标注者会将肉眼难以鉴别的样本标注为“###”。因此将这部分样本从数据集中移除,避免这些样本给识别模型带来困扰。
为每个数据集制作验证集。观察到大多数方法直接在测试集上筛选最优模型,这样并不严谨,因此我们强调了验证集的重要性,并为每个数据集划分出一部分作为验证集。
不使用没有标签的样本。许多竞赛数据集的测试集并没有label,不使用这一部分数据集。
基于这些原则,从可用的资源中收集了四类数据集,下面将介绍这四类数据集。
场景数据|Scene dataset
从竞赛、论文和项目中收集了RCTW [61], ReCTS [96], LSVT [63], ArT [17], CTW [89]这几类数据
组合所有子数据集,得到636,455个文本样本。随机洗牌这些样本,并按8:1:1
的比例拆分,得到509,164个样本用于训练,63,645个样本用于验证,63,646个样本用于测试。
web数据|web dataset
为了收集网络数据集,利用MTWI[26],它包含来自淘宝网站17个不同类别的20,000个中英文网络文本图像。文本样本出现在各种场景、字体和设计中,从训练集中提取了140589幅文本图像,并按8:1:1
的比例进行人工分割,得到112,471个样本用于训练,14,059个样本用于验证,14,059个样本用于测试。
文件数据集|Document dataset
使用公共库Text_Render
( https://github.com/Sanster/text_renderer)生成一些文档式的合成文本图像,更具体地说,对长度从1到15的文本进行统一采样。语料库来自维基、电影、亚马逊和百科。数据集总共包含500,000个,并且被随机分为训练、验证和测试集,比例为8:1:1
(400,000 : 50,000 : 50,000)。
手写数据集|handwriting dataset
本文收集了基于SCUT-HCCDoc[93]的手写数据集,该数据集在不受约束的环境中使用相机捕获中文手写图像。根据官方设置,分别获得了93,254个用于训练的文本行和23,389个用于测试的文本行。为了进行更严格的研究,将原始训练集按4:1
的比例手动分割为两个集,得到74,603个样本用于训练,18,651个样本用于验证。为方便起见,继续使用原来的23,389个样本进行测试。
从上图可以看到,字母表的大小和汉字的比例在四个数据集中都不同。例如,大多数网络文本都是为世界各地的客户提供固定表达的中文广告,因此字母表中包含的字符较少(4402个字符)。此外,网络数据集包含了大量的电话号码和英文网站,导致汉字在四个数据集中的比例最低(44.9%)。对于手写数据集,大多数文本都是从中国古诗中抄袭过来的,与其他数据集相比,中国古诗中包含了更多的不常用字符,因此产生了最大的字母表(6105个字符)。此外,手写数据集的测试集包含了训练集中缺失的最多的zero-shot字符(253个),这进一步增加了识别的难度。
图6和图7说明了文本长度和纵横比(即宽高比)的分布。从这些图中,观察到长文本(例如,Length≥10)更频繁地出现在手写数据集中,这给基线带来了困难。相反,场景和网页数据集中的文本相对较短,可能是考虑到乘客、顾客等的阅读效率。在比例分布方面,观察到由于野外常用的对联和招牌,场景数据集的垂直文本(ratio<=1)比其他数据集多。相比之下,手写数据集包含更多的水平文本。
如表2所示,分析了每个数据集中的字符和单词的频率,并观察到一些有趣的现象。例如,由于自然场景中有许多中国品牌或国有企业,“中”,“国”和“中国”两个字在场景数据集中出现的频率最高,此外,网络数据集中还包含许多高频广告词,如“包邮”,“正品”等。在文档和手写数据集中,“的”是出现频率最高的。具体地说,在手写数据集中,由于一些文本图像是从日记中剪下来的,所以有很多字符或单词指的是“我”,“你”,“我们”等。
为了找出影响文本图像在四个数据集中的可识别性的因素,邀请了20名受过高等教育的参与者进行了这项实验。邀请参赛者找出阻碍识别的相应原因(多项选择):
如果这些原因都不能满足,则认为文本图像是可识别的。
对每个数据集都有500票(每个数据集采样25个图像样本,20个参与者)。统计数据如表3所示。可以看到
在场景数据集中,参与者投票的原因最多的是**“遮挡”、“背景混淆”和“模糊”**,这表明这是人类能够识别的最复杂的数据集。影响识别率的因素主要来自自然环境和文字图像的采集方式。
对于web数据集,通过可控的生成,使文本外观更加灵活随意,从而产生了“倾斜或弯曲”选择的最多票数。虽然曲线文字是为了更好的视觉效果而设计的,但严重扭曲的字符有时不容易让人识别。
对于文档数据集,样本对人类来说相对容易识别,因此投票率较低。
对于手写数据集,参与者投票最多的是“涂鸦”,说明书写中的笔画衔接也是影响识别性的一个基本因素。通过以上观察,可以发现影响识别率的因素在不同的数据集上各不相同,从而促使我们分别研究每个数据集的性能
文本识别在过去的十年中取得了快速的进步。根据主要特征,文本识别方法可以分为几类,包括基于CTC的方法、基于纠错的方法、基于Transformer的方法等。从这些类别中,选择了七种有代表性的方法作为基线(具体的特征如表4所示),下面将对这些方法进行介绍。
首先介绍了实现细节和评估方法,然后展示实验结果。最后对实验结果进行了详细的分析,并给出了每个数据集中的一些失败案例。
采用现成的pytorch方法:
根据经验将场景、网页、文档、手写数据集的输入大小限制为64×200
、64×200
、64×80
0和64×1200
。
利用每个数据集的验证集来根据识别精度确定最佳模型,然后使用测试集对基线进行评估。为了方便起见,将所有实验的四个数据集的字母表结合在一起,得到了7934个字符的总字符表。基线没有使用其他策略,如数据增强、模型集成、预训练。
在实践中,为了公平比较基线,统一的评价方法是必不可少的。根据ICDAR2019 ReCTS竞赛,提出了一些规则来转换预测和标签:
使用两个主流评价标准:
其中, y i y_i yi和 ˆ y i ˆyi ˆyi分别表示第i
个变换的预测和变换的标签。N是文本图像的数量,ACC和NED都在[0,1]范围内。ACC和NED越高,表明评估基线的性能越好。
在四个数据集上对基线的性能进行了全面的分析。实验结果如表5所示:
如表3所示,由于遮挡、背景混淆和模糊等问题,场景数据集相当具有挑战性。此外,如图7所示,场景数据集包括许多垂直文本图像,这确实给那些简单地将原始输入转换为一维特征序列的基线(例如,CRNN[59]、ASTER[60]和Moran[45])设置了障碍。相比之下,二维方法(例如,SAR[36],SRN[88]和TransOCR[10])在这个数据集上取得了更好的性能,因为二维特征地图对于具有特殊布局(例如,垂直或弯曲)的撞击文本图像更具鲁棒性。此外,TransOCR[10]通过利用自注意模块,由于它能够更加灵活地对序列特征进行建模,因此其识别率为63.3%。最后,注意到SEED[54]在这个数据集上表现得不是很好,推测SEED需要在fast Text[8]的指导下将每个文本图像映射到其对应的语义嵌入,而中文文本通常包含复杂的语义特征,这给语义学习过程带来了困难
web数据集比场景数据集相对容易区分。但注意到,所有基线的性能都低于场景数据集中的性能,这可能是由于训练样本的稀缺(用于web场景训练样本的个数为112,471个,而用于场景的样本为509,164个)。此外,注意到CRNN[59]、ASTER[60]、SAR[36]、SRN[88]的性能确实表现出很大的差异(即在53附近波动)。同时,垂直文本图像的比例(参见图7)比场景数据集的比例小,因此选择一维或二维特征地图不会导致本质上的差异。最后,由于TransOCR[10]强大的自注意模块,在识别准确率和归一化编辑距离方面也取得了最好的性能。
**由于文档数据集是使用文本呈现来合成的,因此与场景和Web数据集相比,此数据集中的文本样本更容易识别。**此外,根据表3,几乎没有人将文本实例分类为遮挡、涂鸦或模糊。**观察到所有基线的识别准确率都可以超过90.0%,值得一提的是,基于CTC的CRNN[59]在该数据集中的识别准确率最高,因为该数据集中没有垂直文本图像。**换句话说,对于这样一个简单的场景,二维特征图和校正策略并不是必需的。此外,由于存在许多具有长文本(即,文本长度大于10)的图像,因此基于注意力的识别器(例如,ASTER[60]、Moran[45]和SEED[54])由于可能遭受注意力漂移问题而低于平均水平。6
如表3所示,手写数据集中几乎40%的文本样本标记为“涂鸦”。在实践中,作者可能会为了加快书写速度而拼接或省略一些笔画,这确实给现有的方法带来了困难。通过实验结果,观察到这七个方法性能差异很大。例如,与基于校正的ASTER[60]和Moran[45]相比,CRNN[59]在这个数据集中取得了更好的性能,因为大多数文本样本都是水平的,并且序列很长。相反,基于语义的SRN[88]和SEED[54]的性能低于平均水平。注意到,在这个数据集中有很多不常见的语料库,包括唐诗和宋词,这可能会给SRN和SEED获取语义特征带来障碍。最后,TransOCR[10]获得了最好的识别效果,识别率为53.4%,进一步验证了自注意模块的强大能力。
手动选择了一些困难的情况(例如遮挡、倾斜或弯曲、背景混淆、模糊、过长和垂直),并分析了基线在这些情况下的性能。请注意,“涂鸦”的情况主要与手写数据集有关,因此不会单独分析“涂鸦”的情况。表6显示了在这些困难样本下的实验结果,可以看到,与其他基线相比,TransOCR[10]能够很好地适应每个困难情况。得益于自注意模块,识别器可以灵活地关联地图中的每个特征对来增强序列表示,从而使得很容易解决不常见的文本布局,例如倾斜、弯曲等,或者缓解前景(遮挡)或背景混乱带来的噪声。有趣的是,与Transocr[10]相比,SRN[88]在模糊情况下获得了更好的NED,因为它可以充分利用语义线索来弥补丢失的细节。此外,基于CTC的CRNN[59]在处理涉及NED的长文本方面表现出优势,因为它可以缓解基于注意力的解码器引起的注意力漂移问题。对于垂直文本图像,注意到使用二维注意力图如SAR[36]、SRN[88]和TransOCR[10]的基线比其他基线表现得更好。总体而言,在这些困难的样本下,还有很大的改善空间。
分别为场景、Web、文档和手写数据集可视化了图8、图9、图10和图11中的一些失败案例。
在本文中,首先讨论了中文文本识别缺乏关注的一些原因,例如,缺乏数据集建设标准,缺乏标准的评估程序,缺乏现有基线的实验结果。为了解决这些问题,收集了公开可用的数据集,并将其分为四类,包括场景数据集、Web数据集、文档数据集和手写数据集。然后,在收集的四个数据集上采用了七种有代表性的方法作为基线,通过实证研究,发现仍有许多挑战正在探索中。具体地说,对今后的工作提出了三个方向:
总体而言,通过提供标准化的数据集划分和评估方法,希望基准能够为后续的研究铺平道路。