OCR简单介绍
光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。亦即将图像中的文字进行识别,并以文本的形式返回。
输入有文本信息的图像,输出的是文本信息。
输入 --> 图像预处理 --> 文字检测 --> 文本识别 --> 输出。
其中最难的部分是 文字检测和文字识别。
(1)图像预处理是对图像的成像问题进行修正,包括几何变换、去掉模糊、图像增强和光线矫正
(2)文字检测是 检测出文本的所在位置和范围,也就是哪里有文字。
(3)文字识别是 在检测出哪里有文字的范围内,对文本内容进行识别,讲图像中的文本信息专为文本信息。
OCR的应用
OCR可以应用在特定场景或者是多种场景。
特定场景包括证件识别或者车牌识别。
多种场景的OCR会比较复杂,因为照片的场景多样化,文字布局也多样。难度更高。
自然场景文本的识别难度更大,因为自然场景的背景丰富,可能会有各种问题,比如低对比度,低亮度,光照不均等等。因此自然场景中的文字识别技术也被称为 场景文字识别技术(Scene Text Recognition, STR)。
OCR-图像预处理
基于图像处理和传统机器学习等方法对图像进行处理和特征提取。
常用的二值化处理 有利用增强简单场景的文本信息。但对复杂场景则效果很差。
传统的方法有 用HoG 对图像进行特征提取(但是HoG对于模糊的图像效果很差、对于复杂的场景泛化能力也不好)所以,近年来,使用基于CNN的神经网络来作为特征提取的手段【如何用CNN来提取特征呢?】
之前用CNN做过数字的识别MNIST数据集(Mixed National Institute of Standards and Technology database),这是美国国家标准与技术研究院收集整理的大型手写数字数据库,包含60,000个示例的训练集以及10,000个示例的测试集。每张图片的长度和宽度都是28. y值是0-9,代表10个数字。
链接:https://blog.csdn.net/Jiana_Feng/article/details/109653521
OCR-文字检测
这是 检测出文本的所在位置和范围,也就是哪里有文字。就会想到之前学习的方法,比如YOLO、faster RCNN。 具体看之前的文章。
OCR-文字识别
对于文字行,只能识别每一个字符来确定最终文字。因为需要切分字符。即需要分割-动态规划是常见的切分方法。
第二种方法是通过滑动窗口来对每一个可能的字符进行匹配,这种方法是依赖于华东窗口的尺寸,如果尺寸过大,则会造成信息丢失;太小的话会增大计算成本。
虽然对于单一字符的准确率很高,但整体的准确率却不一定高。
所以会引入RNN来引入上下文信息。最常见的是CRNN网络结构
另一种方法是 引入注意力机制。以CNN特征为输入,通过注意力模型对RNN的状态和上一状态的注意力权重计算出新的状态的注意力权重,之后再将CNN特征和权重输入RNN。
下面是Attention OCR网络结构