OCR技术的应用及基于Python的算法数据集实现

OCR技术的应用及基于Python的算法数据集实现

OCR全称Optical Character Recognition,也就是光学字符识别。OCR通过对图像文件中的文本进行识别处理,获取图像中的文字及版面信息,并以文本的形式返回。早期的OCR算法是按字一个一个的识别文字,被称作文字识别。后期随着技术的发展,形成了按行识别文字的思路,被称作文本识别。

OCR技术的应用及基于Python的算法数据集实现
随着OCR技术的日渐成熟,相应的OCR应用场景也日渐多了起来。根据识别场景可大致将OCR分为两类,一种是根据特定场景形成的专用OCR,另一种是通用OCR,即能够识别多种场景。而根据识别图片的内容,可将识别场景分为简单场景和复杂场景。简单场景的图片通常图片背景单一,文字内容清晰,图片格式固定。而复杂场景通常存在图片背景丰富,文字内容模糊遮挡甚至扭曲等情况,导致复杂场景的文字识别技术还存在较大的挑战。

目前OCR技术已存在多个应用场景,比如身份证件识别、银行卡识别、人脸识别,火车、高铁等验票系统,可用于停车收费, 交警执法的车牌识别技术。这里简单介绍一下移动端车牌识别OCR的识别流程。车牌识别是基于OCR识别的应用,手机端车牌识别过程包括图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等一系列算法运算,其流程如下图所示:

OCR技术的应用及基于Python的算法数据集实现
随着OCR技术的日渐成熟,在银行业的应用场景逐渐增多,在票据系统中,识别多种票据内容,格式化输出票据内容。目前行内OCR的需求日渐增多,作为数据银行部的初步探索产品,天眼OCR已在原心部署,用于身份证识别。下图是我行原心天眼OCR小程序的初步的功能界面展示。此外,会计部门提出的票据识别场景也是行内正在进行的项目。

OCR技术的应用及基于Python的算法数据集实现
在OCR算法中,数据集是算法训练的基础,数据集的标注工作耗时多且标注质量要求高,经常有返工的现象,这导致了OCR识别数据集的产出量较少,而OCR算法训练需要大量的数据,这就造成了数据量与算法的不对等。基于此类问题,用Python生成OCR算法数据集,能够有效的提高数据量。

在生成数据集前,首先我们要准备一个数据集语料库。存放需要生成图片的语料,按行存储,一行生成一个文本图片。其次需要一个fonts文件夹,存放字体库。现在可以来生成文本识别数据集了。

  1. 导入需要的包。并导入配置文件config.py。

OCR技术的应用及基于Python的算法数据集实现
2. 新建config文件,写入语料库路径,字体文件路径以及生成文件的输出路径。

OCR技术的应用及基于Python的算法数据集实现
3. 加载字体库并调整字体大小。字体库中的字体用于生成语料库中的文本行时,随机产生不同的字体。之后形成图片。

OCR技术的应用及基于Python的算法数据集实现
4. 生成图片对应的标注。mapping_list方法用于存放生成图片对应的标注。文本文件名对应图片名,文件内容为图片上的文字。

OCR技术的应用及基于Python的算法数据集实现
5. 为了提高训练图片的质量,模拟真实图片的效果,对图片做一些处理,比如高斯模糊,左右模糊,上下模糊,污渍等。

OCR技术的应用及基于Python的算法数据集实现
6. 最终生成图片如下所示。

OCR技术的应用及基于Python的算法数据集实现

作者:Pgwsunny