APP下载

浅析Android平台下OCR研究与实现

2015-10-21张芮陈萱玮李桐

工业设计 2015年4期

张芮 陈萱玮 李桐

摘要:丢随着硬件性能的提升和Android平台的不断普及,“计算设备移动化”的时代已经到来,同时出现了一些在Android平台上的图像处理应用。本文主要介绍了OCR文字处理和识别的工作原理以及TTS技术,开发了一款基于Android的应用软件。该软件采用了开源识别引擎Tesseract-OCR,主要分为两大模块:文字识别模块和文字应用模块。文字识别模块完成了通过手机摄像头拍摄文字图片,Tesseract-OCR识别文字,将图片文字识别为文本文字;文字应用模块完成TTS文本朗读以及社会化分享功能。结果表明,软件对文字图片有很好的识别率并且能够完成文本朗读及社会化分享功能。

关键词:Android;OCR;TTS;社会化分享

1 系统相关技术分析

1.1 Android系统

Android是运行于Linux kernel之上,但并不是GNU/Linux,广泛应用于移动设备上。Android的系统架构是采用五层架构,自顶向下分别为:应用程序、应用程序框架、库、AndroidRuntime以及Linux内核。

1.2 OCR技术与Tesseract

1.2.1 OCR技术原理

OCR(Optical Character Recognition。光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。OCR的目的是利用计算机识别文本图片。让人从中解放出来,提高生产力。OCR核心过程分为四步:

(1)图像预处理:对文本图片进行预处理,滤去干扰、噪声。主要目的是消除图像中无关信息,恢复有用的真实信息,增强有关信息的可检测性和最大程度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。而预处理过程一般有数字化、几何变化、归一化、增强和平滑等步骤。

(2)文字分割:对文本图像进行分割,以定位和分离出带识别的文字。

(3)特征抽取:在文字分割的基础上,提取需要的特征,并对某些参数进行计算,输出特征信息。

(4)文字识别:根据特征信息,加上模式识别的方法确定其文字内容。

1.2.2 Tesse ract

Tesse ract-OCR是开源的识别引擎,最先有HP实验室于1985年开始研发,但不久就放弃了OCR业务。几年后,HP将其贡献给开源软件业。让其重新发挥作用。Tesseract算法分为下列几个步骤:

(1)轮廓分析:文本图像中含有许多字符,在OCR识别前,首先需要给每个字符标记有效边界,即:轮廓。它采用了一种嵌套的轮廓搜索算法,不仅搜索轮廓本身,还搜索嵌套轮廓的轮廓。最后将分析所得的轮廓组合成文本块。

(2)文本块被行划分:顾名思义将图像划分成若干行,将文本行分割成字符。

(3)特征提取,进行第一次识别,再次识别上次认错的字符,当识别率达到设定的阈值时进入下一步。

(4)语言分析:利用词义、词频、语法规则或语料库等语言先验知识识别结果进行校正,提高识别率。

2 系统实现

2.1 图片采集

图片采集有两种方式:一种是使用移动设备摄像头进行拍照,另一种是直接从相册中选取图片。

2.1.1 拍摄功能实现

首先我们介绍第一种方式,在Android系统可以在拍照按钮设置监听器调用摄像头如下:21 2相册中选取

接下来是第二种方式,同样在相应按钮设置监听器,方法如下:

2.2 图片处理

系统使用的是开源识别引擎Tesseract-OCR,所以在建立工程的时候,需要将其配置进去。这样我们就可以直接调用Tesseract-OCR提供给我们的类TessBaseAPI,对我们选取的图片区域进行识别,返回识别文本信息。

Android平台具体演示流程如下:

2.3 TTS文本朗读功能实现

TTS(TextToSpeech)是将指定的文本转换成不同语言音频输出的技术,TTS引擎依托于当前的Android平台所支持的几種语言。由于不是所有的设备都加载了资源。为此,开发时引入了检测模块,让利用这项技术的开发人员可以检测资源是否存在,下边给出一个标准的检测方法:

Intent checkIntent=new Intent():

checkIntent.setAction(TextToSpeech.Engine.ACTlON_CHECK_TTs_DATA):

startActivityForResult(chekIntent,REQ_TTS_STATUS_CHECK);

如果当前系统允许创建一个“And roid speech TTSTextToSpeech”的对象,说明已经提供TTS功能的支持。将检测返回结果中给出“CHECK VOICE DATA PASS”的标记。根据上边的介绍,基本实现了TextToSpeech的初始化和参数配置。下面是TTS利用Speak()方法可以直接在应用程序中发挥强大的语音功能。

2.4 社会化分享功能实现

系统在Android移动设备上进行分享是将文本图片识别的文本进行发布到各个社交平台(比如:微信,新浪微博等),该功能主要依托于百度社会化服务。百度社会化服务为开发者提供了接入新浪微博、QQ登录、腾讯微博、开心网等第三方社会化平台的服务。为开发者提供了社会化登录组件及社会化分享组件管理控制台,与此同时还开放了社会化服务REST API及多平台的SDK供开发者开发使用。系统中使用的是Frontia Android版,采用的是2.0.3版本。

Android平台具体演示流程如下:

3 结语

本文主要阐述了基于Android平台的OCR相机的实现,并且浅析了涉及到的相关技术原理。软件基本满足了用户的日常使用。并且还可以进一步扩展,比如可以添加在线翻译、日程提醒等功能,有一定的市场价值。软件图像处理方法仍存在部分缺陷,如处理速度不够快、识别率有待提高等。因此,继续完善系统功能、提高文字的识别率及机器自学习是下一步的研究工作重点。