基于深度学习的OCR相关知识
基于深度学习的OCR相关知识
深度学习OCR核心技术解析
一、概述
基于深度学习的OCR方法将一些繁杂的流程分成两个主要步骤,一个是**文本检测(主要用于定位文本的位置),另一个是文本识别(主要用于识别文本的具体内容)**。
图 - 传统OCR方法向基于深度学习方法的OCR方法演进
二、文本检测
传统的文字检测方式是先对图像设置特征金字塔,然后使用滑动窗口进行扫描,之后进入手动提取特征阶段(SWT、MSER、HOG等),再通过滑动窗口提取分类,最后汇总为文本区域。
文本检测面临的挑战
背景多样化。自然场景下,文本行的背景可以为任意背景,同时会受一些纹理结构相近的背景影响。
文本行形状和方向的多样化。如水平、垂直、倾斜、曲线等。
文本行颜色、字体、尺度的多样化(文本的长度变化多样,长宽比可以达到1:100,甚至更高)。
不同程度的透视变换。
恶劣的光照条件和不同程度的遮挡
传统的文本检测方法
基于深度学习的文本检测分类
基于候选框(Anchor)的文本检测、基于语义分割(Segmentation)的文本检测,以及基于两种方法的混合方法(Hybrid)。
- 基于候选框的方式是首先预生成若干候选框,然后回归坐标和分类,最后经过NMS得到最终的检测结果。
- 基于语义分割的基本方式是通过FPN直接进行像素级别的语义分割,然后进行后处理得到相关的坐标即可。
- 混合方式:上述两种方式各有利弊,因此最后产生了混合方式。
图 - 文字检测分类
图 - 文字检测示例
三、文本识别
传统的文字识别很复杂,一般是基于字符分割然后进行单字的识别,这套方法对于简单的任务非常奏效,但一旦遇到复杂自然场景以及字符粘连严重的情况则会失效。
文本识别方法
图 - 文本识别方法
常见的文本识别问题
字体繁多,有些字体非常难以识别。
排版多样,有横排和竖排,以及各种弯曲文字。
存在多种多样的特殊字符。
遮挡问题,在自然场景中,经常有被遮挡的情况,需要算法去补全。
低分辨率,由于文字本身比较细密,所以一旦发生模糊等情况,很容易丢失大部分文字信息。
标签噪声,文字的标注容易发生标错的情况
字符识别的四个阶段
转换形变(Transformation):归一化文本图像的输入,例如使用空间变换网络(Spatial TransformationNetwork,STN)、薄板样条函数(Thin-plate Spline,TPS)等对弯曲文本进行纠正。
特征抽取(Feature Extraction):将输入图片映射到表示空间,该空间能够去掉与识别分类无关的信息,例如字体、颜色、大小、背景等。一般使用各种CNN网络——VGG、RCNN、ResNet等作为这个阶段的特征抽取器。
序列模型(Sequence Modeling):捕捉序列之间的语义背景信息,提升识别的健壮性,一般使用类似Bi-LSTM。
预测阶段(Prediction):通过类似CTC或者Attention模型等,对序列模型输出的结果进行评估学习。
四、应用领域
OCR技术作为机器视觉领域一个非常重要的研究方向,涉及的应用领域多种多样。现今,各应用领域已经出现了非常多的产品,具体列举如下。
卡片证件类识别:身份证识别、银行卡识别、驾驶证识别、行驶证识别、港澳通行证识别、护照识别、户口簿识别、营业执照识别等。
票据类识别:增值税发票识别、支票识别、承兑汇票识别、银行票据识别、营业执照识别、物流快递单识别等。
文字信息结构化视频类识别:主要有字幕识别和文字跟踪等。
其他识别:二维码识别、一维码识别、车牌识别、数学公式识别、物理化学符号识别、音乐符号识别、工程图识别、流程图识别、古迹文献识别、手写输入识别等。
除此之外,还有通用自然场景下的文字识别、菜单识别、横幅检测识别、图章检测识别、广告类图文识别等围绕审核相关的业务应用。
国内在做通用OCR技术的公司有阿里巴巴、腾讯、百度、旷视科技、科大讯飞、饿了么、商汤科技、旷视科技、云从科技、码隆科技、七牛云、美团外卖、搜狗、合合信息、汉王科技、文通、易道博识、云脉OCR、灵云OCR等。还有一些公司是围绕相关领域做OCR应用,例如,教育领域有学霸君、猿辅导、好未来、作业盒子等;安防领域有海康威视、大华;物流外卖领域有阿里、饿了么、顺丰、中通等。
五、字符数据集
字符数据集根据图像采集的方式可分为三类:自然环境下采集的字符图像数据集、手写字符图像数据集、计算机不同字体合成的字符图像数据集。
许多数据集都会充当标准集(Benchmark)的作用,在公开数据集上测试自己的方法,将更具说服力和权威性。
(1) ICDAR2003
ICDAR2003数据集于2003年发布,作为2003年稳定性阅读比赛(Robust Reading Competition)的标准数据集,包括大量自然场景文本图片和人工合成图片。该数据集包含1157张训练集图片、1111张测试集图片以及171张样例图片,同时包括单词级别的图片以及字符级别的图片。
(2) ICDAR2011
ICDAR2011数据集于2011年发布,作为2011年Robust Reading Competition的标准数据集,其中包括自然场景文本图片和人工合成图片。它在ICDAR2003数据集的基础上进一步扩大,并修改了ICDAR2003的一些不足之处,例如,补全了丢失的真实标注(Ground Truth)信息,Bounding Box与文本之间的联系也变得更加紧密等。数据集共包含1564张裁剪后的单词图片。
(3) ICDAR2013
ICDAR2013数据集于2013年发布,作为2013年的稳定性阅读比赛(Robust Reading Competition)的标准数据集。图片样本多为水平字符,同时包含字符图片和单词图片。训练集共有3567张裁剪后的图片,测试集共有1439张裁剪后的图片。
(4) IIIT-5K
IIIT-5K数据集是从Google图像搜索中获取的,包括商业广告牌、商店招牌、门牌号、房屋铭牌、电影海报等。该数据集包含来自场景文本和人工合成的5000个裁剪后的单词图像,每张图像关联一个50词的词典和一个1000词的词典。该数据集分为训练和测试两部分,可用于大字典级别裁剪后的单词识别。此外,该数据集提供了一个超过50万个单词的词典。
(5) SVHN
SVHN(the Street View House Numbers)是从真实街景中采集而来的图像数据集,对数据预处理和格式化的要求很低,可以被看作是与MNIST相似的数据集,但是包含了更多的标注数据(超过600000张数字图像)。SVHN是从Google街景图像门牌号码中获得的,共分为10类,每类代表一个数字,例如数字“1”为标签1,“9”为标签9,“0”为标签10。该数据集包含可用于训练的样本73257个,用于测试的样本26032个,以及用于额外训练的样本531131个。这些样本包含两种格式:带有字符级边界框的原始图像,以及大小为32×32、以单个字符为中心的图像。
(6) MSRA-TD500
MSRA-TD500是一个多方向文本数据集,大部分文本选自导向牌类的标志。图片分辨率在1296×864到1920×1280之间,包含中英文,共计有500张自然场景图片。其中,训练集为300张,测试集为200张,标注以行为单位,而不是以单词为单位,每张图片都实现完全标注,难以识别的会有“难以识别”的额外标注。
(7) Chars74k
Chars74k是一个经典的字符识别数据集,主要包含英文字符与坎那达语(Kannada)字符。该数据集一共包含74000幅图像,所以又称Chars74k。该数据集包含52个字符类别(A~Z、a~z)和10个数字类别(0~9),共62个类别,3410个图像样本,由55个志愿者手写完成,图像为PNG格式。
资料来源书籍:
《深度实践OCR:基于深度学习的文字识别》出版时间202106 刘树春等著