从传统图像算法到深度学习,文字识别技术经历了这些变化
文字识别的发展大致可以分为两个阶段,分别是传统图像算法阶段和深度学习算法阶段。
传统图像算法
2012年之前,文字识别的主流算法都依赖于传统图像处理技术和统计机器学习方法实现,利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。传统的文字识别方法可以分为图像预处理、文字识别、后处理三个阶段:
图像预处理:完成文字区域定位,文字矫正,字符切割等处理,预处理一般包括灰度化、二值化,倾斜检测与校正,行、字切分,平滑,规范化等等,核心技术包括连通域分析,MSER,仿射变换,图像二值化,投影分析等。
文字识别:对切割出的文字进行识别,一般采用提取人工设计特征(如HOG特征等)或者CNN提取特征,再通过机器学习分类器(如SVM等)进行识别;
后处理:利用规则,语言模型等对识别结果进行矫正。
传统的文字识别方法,在简单的场景下能达到不错的效果,但是不同场景下都需要独立设计各个模块的参数,工作繁琐,遇到复杂的场景,难以设计出泛化性能好的模型。
深度学习算法
2012年之后,随着深度学习在计算机视觉领域应用的不断扩大,工业场景下的图像文本识别更为复杂,它会出现在许多不同的情景下,如医药包装上的文字、各类钢制零部件上的字符、集装箱表面喷印的字符、商铺Logo上的个性化字符等等。
文字识别逐渐抛弃了原有方法,过渡到深度学习算法方案。在深度学习时代,文字识别框架也逐渐简化,目前主流的方案主要有两种,一种是文本行检测与文字识别的两阶段方案,另一种是端到端的文字识别方案。
1)两阶段文字识别方案
主要思路是先定位文本行位置,然后再对已经定位的文本行内容进行识别。文本行检测从方法角度主要分为基于文本框回归的方法,基于分割或实例分割的方法,以及基于回归、分割混合的方法,从检测能力上也由开始的多向矩形框发展到多边形文本,现在的热点在于解决任意形状的文本行检测问题。文本识别从单字检测识别发展到文本序列识别,目前序列识别主要又分为基于CTC的方法和基于Attention的方法。
2)端到端文字识别方案
使用文字检测加文字识别两步法虽然可以实现场景文字的识别,但融合两个步骤的结果时仍需使用大量的手工知识,且会增加时间的消耗。
而端对端文字识别能够同时完成检测和识别任务,极大地提高了文字识别的实时性。通过一个模型同时完成文本行检测和文本识别的任务,既可以提高文本识别的实时性,同时因为两个任务在同一个模型中联合训练,两部分任务可以互相促进效果。