OCR文字识别系统的应用

2019-09-10 04:52王学梅
现代信息科技 2019年18期
关键词:移动端

摘  要:OCR全称为Optical Character Recognition,是一种用于识别图像和图形中字符的识别技术。其实现原理是通过如扫描仪或数码相机等电子设备输入图形图像信息,将图像信息中的印刷体文字通过相应的转换形成一定的字符,并与字符数据库进行比对,最终将标准的文本信息输出。本文从OCR识别技术的发展和原理入手,结合EasyPR提供的识别功能,在移动端完成车辆识别的案例,将图片中的车牌信息转换成对应的文字以供编辑。

关键词:OCR文字识别系统;移动端;Android

中图分类号:TP391.4     文献标识码:A 文章编号:2096-4706(2019)18-0066-03

Abstract:The full name of OCR is Optical Character Recognition,and it is a character recognition technology used to recognize characters in image graphics. Its realization principle is to input graphic and image information through electronic devices such as scanners or digital cameras,convert words in image information into certain characters through corresponding conversion,and compare with character database,and finally output standard text information. This paper starts with the development and principle of OCR recognition technology,combines with the recognition function provided by EasyPR,completes the case of vehicle recognition at the mobile end,and converts the license plate information in the picture into corresponding text for editing.

Keywords:OCR text recognition system;mobile;Android

0  引  言

随着计算机技术的迅速发展,OCR技術应用越来越广泛,有效地节省了人力、物力,提高了数据的有效性和准确性,为我们的生活提供了便利,例如高速公路ETC自助通道的车牌自动识别等等。本文从OCR识别技术的发展和原理入手,通过结合EasyPR提供的识别功能,在移动端完成OCR车辆识别,将图片中的车牌信息转换成对应的文字以供编辑的案例,解析了移动端文字识别的过程及原理。

1  OCR技术在我国的发展

OCR是1929年由德国的科学家首先提出的概念,研究的初期,多以文字的识别方法研究为主,且可识别的文字仅为0至9的数字。我国在70年代开始进行OCR技术的研究,最终实现了由数字、英文字母及符号的识别研究到汉字识别技术的研究,并通过计算机实现了识别的功能要求。

20世纪70年代我国开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年,我国提出了863国家高技术研究发展计划,使得汉字识别的研究进入一个实质性的阶段,相继推出了中文OCR产品。由于识别率及产品化等多方面的因素,早期的OCR软件未能达到实际要求,同时因硬件设备成本高,运行速度慢,大部分的OCR技术没有得到广泛的应用。进入20世纪90年代以后,平台式扫描仪的广泛应用,以及我国信息自动化和办公自动化的普及,大大推动了OCR技术的进一步发展,使OCR的识别正确率、识别速度满足了广大用户的要求。随着OCR技术的发展,各种应用系统也相继出现,比如名片识别系统、身份证银行卡识别系统、车牌识别系统、银行票据识别系统、增值税发票识别认证系统等等。而衡量一个OCR系统性能好坏的主要指标包含拒识率、误识率、识别速度、用户界面的友好性以及产品的稳定性、易用性及可行性等几个方面,目前识别速度也是一个OCR性能的一个重要评判标准,同时利用移动客户端进行识别的要求也越来越高。

2  OCR技术的实现原理

OCR识别技术的实现过程非常复杂,主要分为图像输入、图像处理、字符切割、特征提取、字符识别等几个流程完成。通过对OCR技术的研究分析,将其基本的识别实现步骤总结如下。

2.1  获取图像

通过电子设备获取要识别的图像信息,可以是包含印刷体文字的任何图像,如身份证、银行卡、驾照、文档等相关的内容,并将图像传输给要识别的主体。这里是利用CCD(电荷耦合器件)将文稿的光信号转换为电信号,经过模拟数字转换器转化为数字信号传输给计算机。

2.2  图像预处理

该过程指进行文字识别之前的准备工作,包括二值化处理、去噪处理以及字符的分割校正等操作。因为在计算机中RGB彩色图像的每个像素、每种颜色占一个字节,占用的内存较大,会影响处理速度,所以首先将图像进行灰度化处理,即将图像设置为只有黑色和白色的二值化图,其中一个颜色表示图像背景,一个颜色表示要识别的文字。完成了二值化,就可以对图像进行去噪处理了。在对图像进行存储和传输的过程中会因为各种噪声的干扰和影响而降低图像的品质,为了获取高质量的数字图像,需要对图像进行降噪处理,即去除数字图像中的无用信息,但要保留原始信息的完整性。图像去噪处理是数字图像处理中的重要环节和步骤,去噪算法的好坏直接关系到后续图像分割和边缘检测处理的效果,一直是图像处理和计算机视觉研究的热点。在预处理阶段同时要完成文字的校正工作和文本分割,如对因拍照产生的文档图片倾斜而进行的校正,同时将文档中的所有文字块分捡出来,区分出文本段落及排版顺序,以及图像和表格的区域,确定各文字块的区域,用于识别。

2.3  特征提取与数据库比对

在完成了图像的预处理后,要想计算机能够识别文字,首先需要将文字的特征信息存储到计算机。特征提取是识别文字关键的一步,每个文字通过特征提取来进行区分。对于数字和字母类型的字符来说,特征的提取相对容易,因为数字和字母个数有限,属于小字符集。而汉字的提取相对比较复杂,不仅个数多,而且汉字的结构复杂、形近字多。关于特征提取的研究体现在两个方面,一为统计的特征,如文本区域内的黑色和白色点数比对联合,形成空间的数值向量和数学模型,用于识别算法的实现。二为结构的特征,根据文字的笔画特征点及投影信息点的区域分布进行分析,利用相应的比对方法进行比对。目前,大部分的识别软件以第二种方法为主。在完成了文本的特征提取后,需要将其与字符的特征数据库中的标准字符进行匹配,找出最相近的字符,确定比对后的文本信息。

3  移动端OCR系统的设计思路

移动端OCR识别技术简单来说是通过手机APP利用计算机视觉、图像处理与模式识别等方法从图像中提取相应的字符信息。Android平台车牌识别实现的过程可以简单为以下几个部分:

图像采集:通过智能手机摄像头拍摄车牌图像。

预处理:对图像进行灰度化、二值化、边缘增强、噪声过滤、自动白平衡、自动曝光以及伽马校正、对比度调整等处理。

车牌定位:在经过图像预处理之后的灰度图像上进行行列扫描,确定车牌区域,车牌切斜校正。

字符分割:将定位在车牌区域中的图像文字分割成单个字符,精确定位字符的边界,确定文本区域。

字符識别:字符分割完毕后,对字符进行特征提取,将存储的文字特征信息与特征数据库中的标准字符进行比对,找出最相近的字符。

结果输出:将车牌识别的结果以文本格式输出。

本文介绍了以Android Studio为开发平台,基于开源的EasyPR_Android识别源码,完成车辆信息识别的文字识别系统。其中,EasyPR是基于OpenCV这个开源库产生的车辆识别系统,能够识别中文,识别率较高,目前情况下,字符识别已经可以达到90%以上的精度。

4  移动端车辆识别系统的实现

4.1  系统界面设计

在车辆识别系统的界面中,首先包含3个组件,分别为:EasyPRPreView(位于com.fosung.libeasypr.view包)、Button和TextView。其中一个TextView组件用于显示输入车牌的信息提示,另一个TextView组件用于提取显示车牌的文字信息。APP在运行时,有车牌限定框,在框的范围内进行图像裁剪,人为缩小了识别范围,提高了识别度。其界面效果如图1所示。

其中部分代码如下:

<com.fosung.libeasypr.view.EasyPRPreView

android:id="@+id/preView"

android:layout_width="fill_parent"

android:layout_height="match_parent"/>

<Button

android:id="@+id/btnShutter"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:text="车辆识别"

android:textSize="16sp"

android:textColor="#FFFFFF"

android:background="@color/colorAccent"/>

<TextView

android:id="@+id/title"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:gravity="center"

android:textColor="#FFFFFF"

android:textSize="16dp"

android:text="请将车牌放入框内"/>

<TextView

android:id="@+id/infotext"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center"

android:textColor="#FFFFFF"

android:textSize="18dp"

android:layout_below="@+id/title"/>

设置完界面后在manifest加入摄像机权限

<uses-permission android:name="android.permission.CAMERA" /> 。

4.2  车牌识别功能实现

在进入了识别的界面后,首先在Activity的onStart()方法中添加EasyPRPreView的判定并进入其onStart(),同时在Activity的onStop()方法中添加EasyPRPreView的onStop(),在Activity进行销毁时,实现EasyPRPreView的onDestroy()。部分代码如:

publicvoidonStart() {

if(easyPRPreView != null) {

easyPRPreView.onStart();

}

}

@Override

publicvoidonDestroy() {

if(easyPRPreView != null) {

easyPRPreView.onDestroy();

}

}

當单击“车辆识别”按钮时,开始识别,在按钮的监听事件中添加EasyPRPreView的recognize()的方法。如:

recBtn.setOnClickListener(new View.OnClickListener () {

@Override

publicvoidonClick(View view) {

easyPRPreView.recognize();//开始识别

}

});

可以根据识别过程中的问题及时进行提示,如当识别成功后,可以显示“识别成功!”。

5  结  论

本文从OCR的发展、实现原理出发,简单介绍了OCR技术在实际中的应用,同时以移动端车辆识别系统为例,讲解了关于EasyPR开源系统在Android中的实现方式,解析了移动端文字识别的过程及原理。

参考文献:

[1] 郝辉,哈力木拉提·买买提,乔萨础拉,等.字符识别研究现状和发展趋势计量分析 [J].现代电子技术,2018,41(22):154-158.

[2] Bradski G,Kaehler A.学习OpenCV(中文版) [M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.

[3] 杨明,李晶.一种新的椒盐噪声去除方法 [J].科技视界,2014(25):111.

[4] 刘明英.档案数字化过程中OCR技术的应用分析 [J].中国高新技术企业,2017(5):55-56.

[5] 梁连高.浅析纸质文书档案数字副本OCR识别方法 [J].科技与创新,2018(4):129-130.

[6] OCR识别移动端的实现与应用 [EB/OL].(2018-06-15).https://blog.csdn.net/zl18231137982/article/details/80701738.

作者简介:王学梅(1979.08-),女,汉族,山东德州人,教师,讲师,硕士,研究方向:数据库应用、软件开发。

猜你喜欢
移动端
浅析移动端视频的发展
谈谈PC端流量转移至移动端趋势下广告投放的模式创新
移动端医疗维修系统的设计与实现