基于Python的图片文本识别系统的研究

2019-10-21 10:06韩琳
科学与财富 2019年20期
关键词:剪裁虚拟环境像素点

韩琳

近年来随着计算机技术的不断发展,Optical Character Recognition(光学字符识别,简称“OCR”)应用的领域更加的广泛,而图片文字识别就是其中重要的一个。目前图片文字识别的准确率并没有达到100%,这也成为了图片文字识别发展领域的一大瓶颈,因此要去探索一个好的图片文字识别算法是非常有意义的。

图片文字识别系统的基本流程为:获得图片、去噪处理、二值化处理、矫正图片、行查找、文字定位、细化处理、文字特征扫描、查询显示文字。OpenCv提供了图片处理的基本函数,例如数据矩阵的遍历,图片的存储等,去噪处理中的平滑处理、二值化处理等。矫正图片就是将图片按照文字的行摆正,该步骤是比较的关键一步,后面的行定位等都是依赖于图片矫正。文字的行定位和文字定位即确定文字的区域,方便文字特征扫描,细化处理是将文字细化为一个像素,而不破坏连通性。细化处理是方便特征扫描而做的处理使数据库中存储文字特征码和UTF-8编码对应起来。涉及到的相关技术主要如下。

1. OpenCv

OpenCv是一个基于BSD许可发行的可以跨平台的计算机视觉库。它可以运行在Windows和Linux等操作系统之上,它是由一系列的C函数和少许的C++类构成,同时还提供了Python、Matlab等语言的接口,实现了计算机视觉和图像处理等方面的很多通用算法。

包含的五个基本模块,功能非常的强大。可以在设计中使用的是图形处理模块,结构图如下所示:

2. UTF-8编码

UTF-8是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。UTF-8用1到6个字节编码Unicode字符。在计算机内存中,统一使用Unicode编码,当我们用记事本编辑的时候,从文件中读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

3.Flask框架

在大多数的标准当中,Flask是一个小型的框架,小到可以称之为“微框架”。 Flask有3个主要依赖,分别为调试和Web服务器网关接口以及路由。子系统是由Werkzeug提供,模板系统是由Jinja2提供,命令行集成是由Click提供。这些依赖全部都是由Flask的开发者Armin Ronacher开发的。

Flask 本身是并不支持数据库的访问、用户身份验证和 Web 表单验证等高级功能的。这些功能以及大多数Web应用需要的核心服务都以扩展的形式实现,然后再与核心包集成。

4.图像处理相关技术

4.1图像的灰度处理

在我们的生活中常见的图片大多数都是24位真彩色图像。8位的灰度图片就能够包含其基本信息。所以,在处理图片的过程中为了更快捷的对图片信息进行相应的处理,首先需要对图片进行灰度化处理操作,灰度图像就包含了图像处理中所需要的图像形态特征。在24位的真彩色图像中,每个像素都是要用3个字节来保存,它们分别用来描述R,G,B,三种不同的颜色分量。每一种颜色的分量范围都是从0-255,颜色的分量值越大,其对应的颜色分量高度值就会越高,因引用255来表示最亮,用0来表示最暗。在将一个真正色彩像素点转换为灰度图时,其亮度值通常按常理取三个分量的平均值。

4.2图像的二值化处理

在图片中的每个像素点的灰度值低于某个阙值则把它置于0,高于某个阙值把它置于255,从而使整个图片呈现出一种“非白即黑”的效果,这就是图片的二值化处理。二值化后的图片仍然能够反映出整个图片的局部特征。为了能够得到便于处理的二值化图片,采用区域的要求是连通且封闭的并且边界不能够重叠。灰度值等于或者是高于指定阙值的像素点为目标像素,其灰度值是255,其他的像素点就会被排除在物体的区域之外,其灰度值定为0。

对于不一样的图片效果,可以选择使用不同的阙值选择方法。在空间的角度来看,分为全局阙值法和局部阙值法。全局阙值法对于具有明显双峰直方图的图像有更为显著的效果,但是,当图片的光照不均匀的时候,效果就会不那么明显。局部阙值法适用于图片特征比较复杂的图片,但是有一个缺陷是忽略了图片的边缘特征,因此会造成伪影的现象。

4.3图像的剪裁处理

在一张含有文字信息的图片中,非文字的部分往往占据了这张图片的一定比例,如果不对这张图片进行相应的剪裁处理,在图片文字识别的过程中就会对这张照片的整个区域进行扫描识别,这往往会增加了项目的额外开销,与此同时也大大降低了图片文字识别的速率。为此,在为了提高图片文字识别的速率,对图 片文字进行光学字符识别之前往往是需要进行剪裁的,剪裁之后仅保留包涵文字信息的部份,将非文字的部份区域剪裁掉。在本次设计中,图片文字剪裁是由用户自己手动进行剪裁,具体过程是:由用户自己选择要进行识别的图片,在图片上就会出现一个小小的方块,用户自己可以根据需求随意進行拖动剪裁,最终方块内部留下来的部份就是要识别的内容,然后系统会对这一部份进行识别处理。

4.4文字的特征码扫描

本文所研究的图片文字识别是根据所有文字的几何特征进行编码,然后输入一个能够代表所识别文字的特征码,文字的特征码和文字的UTF-8编码一起关联存放到数据库中。一个文字可以有很多个特征码,然而它只能对应一个UTF-8编码。这样的设计是因为可以满足不同的图片文字特征。只有更一步的进入文字的点和笔画的关系才能够更加具体的编出具有唯一性的特征编码,那么接下来的每一个步骤都将会向更可靠的图片文字识别方法靠近。

5系统开发环境的搭建

主要涉及到PyCharm的安装, Python的安装,虚拟环境的搭建。搭建虚拟环境有两个目的,一是为了真实环境不被破坏。二是为了开发时的版本号不冲突,在Python3中,虚拟环境由Python标准库中的venv包原生支持。

综上所述,本文独立自主的去探索一种基于文字几何特征去深入文字内部来获取文字特征编码。这样的编码的唯一性非常高。并且可重入性也非常高。虽然该方法复杂,但是却类似人类来识别文字的过程。

猜你喜欢
剪裁虚拟环境像素点
虚拟环境中空间压缩问题的影响与改善
心灵手巧的“剪裁师”——卷叶象甲
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
基于5×5邻域像素点相关性的划痕修复算法
浑然一体有玄奥——写人作文之人事“剪裁”与“拼接”
论报纸图片编辑如何巧“剪裁”
基于canvas的前端数据加密
虚拟环境下大数据智能并行聚类方法研究
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割