[关闭]
@vivounicorn 2021-09-08T15:53:08.000000Z 字数 10147 阅读 2118

机器学习与人工智能技术分享-第十一章 OCR

机器学习 OCR

回到目录


11. OCR

11.1 背景知识

OCR是将各种带有文字的图像数据中的文本信息定位并识别成可编辑文本的技术。其核心技术包括:文本位置检测、文本内容识别等,OCR的一般过程是:

11.2 数据预处理

11.2.1 图像滤波

滤波本质上是在尽量保持原有图像细节(不破坏诸如边缘、轮廓等信息)的条件下对噪声尽可能抑制(提高图像视觉效果)的操作,完成这个操作,潜在的同时做了两件事:抽取了图像的某种特征和去除了某种噪声(类似的还有深度学习中的AutoEncoder架构),一般架构如下:

滤波是一个很复杂的课题,简单来说会有时空域滤波和频域滤波两大类,而转换时空与频率的工具就是(逆)傅里叶变换(Transformée de Fourier):任何周期函数都可以表达为不同频率的正弦和或余弦和的形式,即傅里叶级数,其本质是不同空间的换基分解操作。

11.2.2 去模糊、去水印

11.2.3 图片角度识别

图片角度识别做法类似构建一个分类和回归问题,套路之前已经讲过就不赘述了,最关键的还是训练数据,可以自己写代码生成各种角度的数据:

11.3 基于神经网络的文字OCR

11.3.1 行检测模型算法思路

文字的检测、物体的检测其实基本原理大同小异,本质上是在学习Bounding Box的边界以及启发式的做Bounding Box合并。以CTPN(https://arxiv.org/pdf/1609.03605.pdf)为例,借鉴Fast R-CNN做文本的行检测,即通过一个“框”把一整行文字的位置检测出来,进而送到后续识别模型,但由于检测文字行不像检测物体,一行字比较长且可能大小不一(尤其垂直方向上),对定位的精度要求更高,所以对于特征提取的基础神经网络需要对位置有较强的敏感性(检测模型要求对位置敏感,而识别模型恰好相反,所以要分场景应用模型)。

CTPN行检测整体思路:

11.3.2 行识别模型算法思路

在文本行被检测出来有两种做法,1、切割每个字,然后做字符分类;2、直接对行做分类识别。CTPN采用第二种方式。

基于以上原理,以上面行驶证为例,实现的效果大概如下:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注