AICMTY.com
Labs 导读
日常生活的截图提取、拍照搜题,都用到了文字识别领域占据重要地位的OCR(光学字符识别)技术。
Part 01、 什么是OCR
OCR(光学字符识别)是计算机文字识别的一种方法,利用光学技术和计算机技术将印刷或手写在纸张等介质的文字影像转换成准确可读的文本格式,供计算机识别和应用。OCR识别是实现文字内容快速录入计算机的关键技术,在现代生活各行各业中得到越来越广泛的应用。
Part 02、 OCR技术原理
OCR技术主要分为传统OCR和深度学习OCR两个流派。
在OCR技术发展早期,技术人员使用如二值化、连通域分析和投影分析等图像处理技术,结合统计机器学习(如Adaboost和SVM)来提取图像文本内容,我们将其统一归类为传统型OCR,其主要特征在于依赖繁杂的数据预处理操作来对图像进行矫正和降噪,面对复杂场景适应性较差,准确率和响应速度也不尽如人意。
得益于AI技术不断发展,基于端到端深度学习OCR技术逐渐成熟,该方法优势在于无需明确地引入图像预处理阶段中的文字切割环节,而是将文字识别转化为序列学习问题,使文字分割融入深度学习中,对OCR技术完善和未来发展方向具有重要意义。
2.1 传统OCR识别流程
传统OCR技术处理流程图如下:
图像预处理:文本影像经过设备扫描之后进入预处理阶段,由于各种文本介质存在干扰因素,如纸张的光洁度和印刷质量,屏幕的光线明暗等都会造成文字畸变,因此需要对图像进行亮度调整、图像增强和噪声滤波等预处理手段。
文本区域定位:对于文本区域进行定位提取,方法主要包括连通域检测和MSER检测。
文本图像矫正:对于倾斜文本进行矫正,确保水平,矫正的办法主要包括水平矫正和透视矫正。
行列单字切分:传统的文本识别都是基于单字符的识别,分割方法主要利用连通域轮廓和垂直投影切割。
分类器字符识别:运用HOG、Sift等特征提取算法对字符进行向量信息提取,使用SVM算法、逻辑回归、支持向量机等进行训练。
后处理:由于分类器的分类不一定完全正确,或者在字符切割过程当中存在失误,所以需要基于统计语言模型(如隐马尔科夫链,HMM)或者人为提取规则设计语言规则模型对文本结果进行语义纠错。
2.2 深度学习OCR
图片
当前主流的深度学习OCR算法将文本检测和文本识别两个阶段分别建模。
文本检测分为基于回归的文本检测法和基于分割的检测方法,回归检测法主要有CTPN、Textbox和EAST等算法,能检测图像中带方向的文字,但是会受到文本区域不规则的影响;基于分割的检测法如PSENet算法,能处理各种形状和大小的文本,但是距离较近的文本容易出现粘行,不同方法各有优略。
文本识别阶段主要使用CRNN、ATTENTION两大类技术,将文字识别转化为序列学习问题,两种技术在其特征学习阶段都采用了 CNN+RNN 的网络结构,不同之处在于最后的输出层(翻译层),即如何把网络学习到的序列特征信息转化为最终的识别结果。
还有一种最新的端到端算法直接将文本检测和文本识别融合到单个网络模型进行学习,如FOTS、Mask TextSpotter等算法,与独立两端法相比,识别速度更快,精度相对较弱。
2.3方案对比
传统型识别 |
深度学习识别 |
|
底层 算法 |
文本检测、识别分为多个阶段和子过程,使用不同算法组合 |
模型以融合检测和识别过程为目标,实现端到端 |
稳定性 |
多阶段整体稳定性较差 |
端到端稳定性较强 |
识别 精度 |
精度不高,小样本传统场景有一定优势 |
精度较高,融合越深精度逐渐降低 |
识别 速度 |
识别较慢 |
识别较快 |
场景 适应性 |
弱,适用标准印刷格式 |
强,兼容复杂场景,依赖模型训练 |
抗干扰性 |
弱,对于输入图像要求较高 |
强,依赖模型训练 |
Part 03、 OCR常用评估指标
召回率:指OCR系统正确识别出的字符数量与实际字符数量的比例,用于衡量系统是否漏识别了一些字符。该值越高,表明系统对字符的覆盖能力越好。
精确率:指OCR系统正确识别出的字符数量与系统总识别出的字符数量的比例,用于衡量系统的识别结果中有多少是真正正确的,该值越高,表明系统的识别结果更可靠。
F1值:综合了召回率和精确率的评价指标,F1 值介于 0 到 1 之间,该值越高,表示系统在准确率和召回率之间取得了更好的平衡。
平均编辑距离(Average Edit Distance):编辑距离用于衡量OCR识别结果和真实文本间的差异程度。
Part 04、 应用和展望
OCR作为文字识别领域的主要分支之一,未来仍然有很广阔的研究方向和发展空间。在识别准确率方面,研究更智能的图像处理技术和更强大的深度学习模型仍然迫切;在多语种多字体的覆盖上要求识别更具有普适性,并增强复杂场景适配能力;在实时识别方面,寻找更多与虚拟现实技术和增强现实技术相结合的应用点,如AR翻译、文本数据的自动纠错和数据校正等。