学科分类
目录
网络爬虫

OCR技术简介

机器视觉是人工智能领域一个正在快速发展的分支,简单来说,机器视觉就是用机器代替人眼来做测量和判断。从Google研究的无人驾驶到能识别假钞的自动售卖机,机器视觉一直是一个应用广泛且具有深远影响和雄伟愿景的领域。

在机器视觉领域,字符识别扮演着重要的角色,它可以利用计算机自动识别字符。对于图像里的字符,人类能够轻松地阅读,然而机器阅读却非常困难。验证码(CAPTCHA)技术就是基于这种人类能正常阅读而机器无法读取的图片。当网络爬虫采集数据时,一旦碰到验证码,就无法提取里面的字符信息。

为了解决将图像翻译成字符的问题,Python中引入了光学字符识别(Optical Character Recognition,OCR)技术,而Tesseract是目前公认最优秀和最精确的开源OCR系统。为了能够支持Tesseract, Python专门提供了pytesseract库来处理图像文字以辅助开发。

光学字符识别(Optical Character Recognition,OCR)是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术。一般包括以下几个过程:

1. 图像输入

针对不同格式的图像,有着不同的存储格式和压缩方式。目前,用于存取图像的开源项目有OpenCV和CxImage等。

2. 预处理

预处理主要包括二值化、噪声去除和倾斜较正,具体内容如下:

  • 二值化:大多数情况下,使用摄像头拍摄的图片都是彩色图像,彩色图像包含的信息量非常丰富,需要进行简化。我们可以将图片的内容简单地分为前景和背景,为了让计算机更快地、更好地识别文字,需要先对彩色图像进行处理,使图片只剩下前景与背景信息,即简单地定义前景信息为黑色,背景信息为白色,这就是二值化图。彩色图像和二值化图像处理前后对比如图1所示。

img

图1 彩色图和二值化图

  • 噪声清除:对于不同的文档,噪声的定义可以不同。根据噪声的特征进行消除处理,这就叫做噪声去除。

  • 倾斜校正:通常情况下,用户拍摄的照片比较随意,很有可能拍照文档会产生倾斜。这时,需要使用文字识别软件进行校正。

3. 版面分析

将文档图片分段落、分行的过程叫做版面分析。由于实际文档的多样性和复杂性,目前没有一个固定的、最好的切割模型。

4. 字符切割

由于拍照条件的限制,经常会造成字符粘连、断笔等情况,因此极大地限制了识别系统的性能。此时就需要文字识别软件具备字符切割的功能。

5. 字符识别

很早的时候就有模板匹配,后来是以特征提取为主。由于文字的位移、笔画的粗细、断笔、粘连、旋转等因素的影响,极大地增加了提取的难度。

6. 版面恢复

通常,人类希望识别后的文字,仍然按照原文档图片那样排列着,保持段落不变、位置不变、顺序不变,之后输出到Word文档或PDF文档,这个过程就叫做版面恢复。

7. 后处理、核对

不同的语言环境中,语言的逻辑顺序是不同的。因此,需要根据语言特征的上下文,对识别后的结果进行校正,这个过程就是后处理。

点击此处
隐藏目录