版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[6]文章中提出了卷积神经网络R-CNN模型,该网络利用SelectiveSearch方法生成候选框,此观点提高了根据图像中的颜色、纹理、边缘等特征对其进行自底向上的分割,并对分割区域进行不同尺度的合并,优化了每个生成的区域即为一个候选框,R-CNN网络在VOC2007数据集上检测mAP为48%,检测速度虽比传统目标检测算法检测快,但是没有提到因该网络训练步骤繁琐,没有解决在深度学习领域中计算机方面的速度问题,计算速度表现出很大的局限性。1.3研究内容以Android为基础的图像文字线上朗读,就是指Android客户端首先通过对图片图像中的英文中文字符进行一个识别,之后,再以模拟人识别后阅读文字的行为,将图像中的文字通过朗读的模式呈现出来的一个过程。据世界范围内的数据来看,有数以百万计的视力残疾的人,这些人往往由于各种原因,不能和正常人一样用眼睛看东西。这正是本论文所要做的一个重要工作,即为那些有视力残疾的人们提供帮助。其中,图像字符的识别和相应的技术手段等是本文的重点。本文的研究内容是:1.图像选取:图片可以通过拍照或者本地相册选取,其中拍照是用安卓手机上的照相机进行拍摄图片,然后把拍摄的图片保存至本地存储区域,接着就可以在本地相册中选取照片,而另一个来源是APP上的拍摄识别,它会在现场拍摄图片进行自动识别。2.图像矫正:手机在拍摄时,往往因为一些客观原因,图像的一部份会发生倾斜,从而影响到后续的处理。为了克服这一缺陷,需要对图像进行修正,同时也需要依据图像本身的特性,实现图像的自动辨识。3.图像字符识别:在进行图像字符的识别时,主要是通过对图像字符的划分,对图像字符的抽取,以及对图像字符的处理,来实现对图像字符的识别。在整个图像文字识别的过程中,使用Tesseract-two技术来识别图像文字,4.朗读文字:运用TTS语言识别技术、套接字软件Pic实现安卓的应用程序的文字朗读功能。第2章开发工具及相关技术介绍2.1JavaJava语言表达式由SunEnterprise在20世纪发布,并且其源代码后来也已发布。Java语言表达是一种纯粹的面向对象的编程语言。以下是Java的特征:1.跨平台性,可移植性。2.面向对象的程序设计。3.安全性,高性能。4.适合于多项日常任务。5.是C#的简化版,易于编程与书写。相对于其它底层和程序设计语言而言,Java的表现方式还有着显著的优越性,有着广泛的应用前景。这个工具在手提电脑上,在因特网上,以及在大规模网络上,都可以使用。Java是以对象为导向的程序设计,它很容易被人理解。因此,人人都可以将想法变成现实,将想法用代码书写出来。基于Java描述的一些特征,可以很好地解决一些问题,从而为软件开发奠定基础。2.2MySQL数据库MySQL是当前最受欢迎的一种关系性数据,其受欢迎的原因在于其占内存很少,而且与其它数据库相比,其处理速度丝毫不输于其它数据库,给企业提供的好处是可以降低成本,因此就成了某些核心公司的第一选择。MySQL的另一个好处是它的自由、便利和良好的可移动性。另外,MySQL和SQLSever一样,都是通用的,可以用可视化的工具来处理。每一款软件都有其有利和不利的两个方面,不利的一面是,MySQL作用是比较弱的,是有一些限制的,尽管它有很多缺陷,不过这并不妨碍MySQL的普及,对于我国中小企业来说,MySQL就是一个很好的选择。以下是MySQL的特性:1.MySQL的存储容量相当大。2.它具有很强的灵活性,大大提高了开发效率,使用起来更快、更方便。3.MySQL数据库有自己的图形界面,对于使用MySQL的人员来说体验感是非常好的。4.MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库。2.3Android操作系统安卓是一个以Linux为内核的电脑系统(除GUN部分),其源码是自由公开的。安卓的源码是按照Apache的方式分发的,这是一种完全自由、开源的方式。这样一来,很多移动设备生产商就可以不需要付费就能将Android应用程序嵌入到他们的移动设备中,这就极大地减少了移动设备的价格。Linux的核心是从底层开始的,它是在抽象的层次上进行硬件的配置。Linux系统核心采用的是一个包含所需扩充的特定版本,该内核包含了为各个硬体设定所需要的软体驱动程序,硬件组态抽象层将不同的驱动程序包覆于底层,系统执行阶段程序库含有不同的元件,利用这个架构可以直接接触到最高级的应用软件。2.4图像预处理相关算法2.4.1图像的分割算法图像分割是为了更好地将图片进行处理,为后续的识别做准备,其存在的意义很大,对于怎样将图片提取为文字,可以将其分布进行。在这篇论文中,使用了分割算法。首先查看图片中的边界点,将它们连接起来,再将它们分割成均匀的几个块,对每个块单独进行灰度处理,通常采用的是灰度直方图,比如,在一个块中,寻找不同的灰度频率,以及更大的熵值,增加字与背景的对比度,将存有文字的区域分割下来,为后续文字处理做准备。2.4.2图像的二值化算法在图片中去掉噪点后,图片上大部分的资讯是需要的,把图片上最重要的部分分割出来后,为以后的工作做好准备。将相片上像素的数量设定为0到255,这样相片就会呈现出不同的灰色调。在进行二值化处理前,必须先获得一张灰度图,图中用256种不同的灰色来表示所有的清晰级别指示。其次,通过一定的博弈运算得到一个最优的分割算法,然后利用这个算法运算得到的门限将画面二值化。高于门限的像素数量的灰色等级更大,低于门限的像素数量的灰色等级也更小。通过对图像进行二进制处理,图像处理更加简单,而且所需的数据信息也更少。在此基础上,提出了灰度分割算法。本文提出的整体分割计算方法对于清晰的长方形图具有良好的识别性能,缺点是图像的反差和亮度不一致,导致识别结果不理想。2.5图像文字识别方法图像识别技术的工作原理是检测显著区域,即包含图像或物体最多信息的部分。识别的方法有:1.图片预处理:对图片进行预处理,包括降噪、增强对比度等操作,以提高后续识别的准确性。2.特征提取:通过计算机算法,将图片中的特征提取出来,例如颜色、形状、纹理等。3.特征匹配:将提取出来的特征与已知的模板进行匹配,以确定图片中的内容。4.结果输出:将匹配结果输出。2.6图片文字在线朗读技术图像文字朗读技术应用到了语音的合成技术,它利用程序让计算机输入文字,产生语音,它的目的是让机器模拟发出人类的声音,在语音等方面都与人类说话类似,让用户能够通过声音获得图像中的信息。语言辨识的技巧来自于对波动图谱的修改、重要的参量的解析以及规范的建立,这是一种声音辨识的软体,以文字串作为输入。输入的是一个普通的文字字符串,系统软件先以语音转录发音字典为基础,将输入的文本字符串分解为词语和发音标记,再以语音转录标准为基础,根据每个词的字母音调及其句子结构等进行组合,在此基础上,再运用上面所描述的一种或多种产生技术生成文字与声音。第3章系统分析3.1可行性分析可行性规划主要是针对移动电话系统的应用进行规划,以满足使用者对移动电话系统软件的需要为基础,制定出移动电话系统软件的设计方案。3.1.1经济可行性 安卓手机移动电话生产商能够针对目标市场和顾客的需要,对产品进行深度的改善。其结果是,安卓手机拥有一个丰富多样的操作系统,并且有着不同的价位,顾客提供价格就可以找到相对应价格的操作系统,顾客可以按自己的需求来挑选产品,让顾客享有自主决定权。从政策角度来看,对于更好的科研而言,安卓图片上的文字识别和网上朗读的研究是有必要的。从经济学的角度来看,本研究是可行的。3.1.2技术可行性在Google公司发布了Android1.5以后,谷歌浏览器给Android开发人员带来更大的便利,Java面相对象的程序语言方式使得代码更方便撰写。这就表示,拥有Java语言表达方式的开发人员不需要单独学习开发和设计Android应用程序软件,这种不需要通过重新学习新的语言表达方式,有效的减少了开发人员的训练成本和学习成本。在本文中,都采用了Java语言技术来实现图片的加工与辨识,因而具有一定的技术可行性。3.1.3操作可行性图片识别APP具有视窗接口,操作视窗简单,更容易运用的特点。每一项功能都可以通过一个简单的步骤进行操作。这个系统最后决定使用的是Android技术和B/S结构,这些成熟的开发技术可以让系统在完成设计时提升系统的性能,减少错误发生的可能性。3.2需求分析3.2.1功能需求分析在实际应用中,需要对系统进行需求分析。他首先对用户的需求进行研究,然后了解他们的需求是什么,确定他们所需要的基本需求。最终经过开发者的验证,了解了该软件所要达到的功能,要做的工作是什么。下面是本系统中的全部角色的操作介绍。1.用户(1)注册登录:实现用户的登录及注册。(2)图片选取:实现手机相册中的图片选取。(3)图片预览:实现图片选取之后的图片预览。(4)单张图片识别:实现一张图片的文字识别。(5)图片批量识别:实现多张图片一起处理的文字识别。(6)拍照识别:实现通过手机相机实时拍照的识别功能。(7)PDF识别:实现PDF文档的在线识别。(8)保存记录:实现识别后的记录查询。(9)在线朗读:实现文字识别后的语音朗读功能。用户用例图如图3.1所示。图3.1用户用例图2.管理员(1)用户信息管理:管理员可以查看、修改、删除用户信息。(2)识别信息管理:管理员可以在后台看到用户图片或者PDF存储的路径和识别的时间。管理员用例图如图3.2所示:图3.2管理员用例图3.2.2非功能需求分析随着时间的推移,用户将会对识别的效率和速度提出更高的要求,而要使一个应用程序更加完善,就必须实现以下三点:(1)汉字的识别率必须在90%以上。若字词的辨识率太低,则会造成讯息传达上的偏差,在某些情况下,应用软件可能会给用户带来错误的信息,从而丧失了它原本存在的意义。另外,由于本软件所采用的语料库为简体中文和英文,要想认出繁体中文,需要加入繁体字库才行。(2)字词辨识的时间应控制在2秒钟以内。当用户在用这款软件时,通常都会期盼着文字能够很快的识别,不用过多的等待,为了满足用户需求,文字辨识的时间就应控制在2秒以内,不然过多的话,使用者会产生焦虑的情绪,这会让使用者的体验变得很差。如果使用者不能在最短的时间里得到足够多的信息,那么在很长的一段时间里他将很难继续使用本软件。(3)朗读时要有标准的读音。使用该应用程序的用户可能来自于各个地区,他们的方言也各不相同,因此,要让所有的用户都能听懂朗读的语音,应该让应用程序中使用的语音引擎的发音尽量偏向于普通话,而且语速也要适当地放慢一些。这样一来,就算是来自各地的用户,也不会因为发音而产生太多的歧义。3.3系统流程分析3.3.1系统开发流程图片文字识别技术研究时,第一步是要系统需求分析,第二步是对系统设计,第三步对于系统设计模块功能,第四步对系统的实现过程,本文的系统设计流程图如图3.3所示。 图3.3系统开发流程图3.3.2用户登录流程软件系统都要有安全性保证,方便用户对信息进行操作。用户登录的流程图如图3.4所示。图3.4登陆流程图3.3.3系统操作流程用户打开软件,进入到登录的界面中,输入已经注册的用户名以及对应的密码,后台系统会自动检测,若输入正确,那么就会进入到下一个功能界面。若输入错误,则会提示用户输入的密码或者账号错误,要重新输入正确的。具体系统操作流程如图3.5所示。图3.5系统操作流程图3.3.4添加信息流程本系统的添加信息是对用户注册的添加,当用户注册完成时,系统会自动检测输入信息的规范性,规范的信息则会导入到数据库,而不规范的信息则不导入数据库,将会返回输入信息的那步,直到输入规范信息为止。添加信息流程如图3.6所示。图3.6添加信息流程图3.3.5修改信息流程用户可以在自己的管理权限内修改信息内容。最先进行的是修改数据页面,输入修改后的数据信息,然后系统软件对数据和信息进行识别和认证,修改后的数据是合理合法的。如果更改成功,则将信息内容存入到数据库,如果信息内容不合理合法,则更改失败,请再次输入。数据修改过程表如图3.7所示。图3.7修改信息流程图3.3.6删除信息流程图用户可以将信息的删除,对于用户想要删除的信息进行选中后,按下删除按钮,这时会提示确认删除,点击确定就是对信息彻底的删除,若点击取消,那么信息就会保留不作任何的处理,具体操作流程图如图3.8所示。图3.8删除信息流程图第4章系统设计4.1OCR算法4.1.1图像的分割基于Android的图片文字识别技术的研究与设计,分为图片文字的识别和在线朗读两个部分。图片文字识别包含图片的选取,图像的裁剪,图片的灰度化,图片的二值化算法等处理,而在线朗读是通过识别图片的文字调用讯飞进行语音处理。工作流程如图4.1所示。图4.1图片文字识别详细工作流程4.1.2图像的灰度处理二值化图像中的每个清晰度值都是一个单值图像。伽马公式如下图公式4.1所示。Γz=0∞经过简化后的伽马公式,如下图公式4.2所示。CLinearCsrgb12.924.1.3图像的阈值算法首先选择初始阈值为S,图像像素灰度值的最小值为ƒmin,最大值为ƒmax,一开始阈值置为T,那么T=1/2(ƒmin+ƒmax)。其次选择阈值进行分割,根像素灰度值,分割成两个部分,将G1记灰度值比T区域大的,G2就是灰度值比T区域小的。计算其各自像素灰度值平均值U1,U2。利用公式T=(U1+U24.1.4图像的二值化算法图本文字提取信息,常用到的方法根据阈值T,把图像中的像素分为两个部分,一部分是超过T的,还有一部分是小于T的,这样的处理过程叫图像的二值化处理。对于一个图像I(x,y),用f(i,j)表示像素在(i,j)的灰度值,那么可用如下图公式4.3所示。fi,j1fi,j≥t0fi,j基于迭代法阈值的图像二值化的算法流程如图4.2所示。图4.2二值化算法流程图4.2OCR的技术路线文字检测就是对文字的位置、长度、文字的内容、排版等进行检测。其中主要有文本布局分析、文本线检查等。文字检测的重点是如何识别出文字,以及文字识别范围的广度。文字辨识则是基于文字的预先侦测与每一行侦测来辨识文字的内容,并将图像中的文字转换成文字资讯。汉字辨识首先要处理的是每一个汉字到底是什么。辨认出来的文字经常要重新检查一遍,以确认它是正确的。4.2.1图像预处理经典的光学相干层析成像技术是建立在数字图像处理与机器学习的基础上的。通常采用的二进制方法只对简单的场景进行强化,而对复杂的背景进行二进制处理效果不佳。现有基于高斯图像的图像特征提取方法,对图像的模糊和畸变等问题具有较低的鲁棒性和较低的泛化能力。当前,以CNN为基础的人工神经网络已被广泛应用于现代企业中。利用CNN强大的学习能力,与海量的数据相结合,能够提高特征提取的鲁棒性,即使在面对模糊、扭曲、畸变、复杂背景以及光线不清晰等图像问题时,也能有很好的鲁棒性。4.2.2文字检测1.FasterR-CNN是采用辅助生成样本的RPN(RegionProposalNetworks)网络,将复杂的算法结构分为两个部分处理,首先由RPN网络判断候选框是否为目标区域,然后经分类定位的多任务损失判断目标类型,使整个网络流程都能共享和共识卷积神经网络提取的事物特征信息。通过这种方式,节约计算成本,解决FastR-CNN算法生成正负样本候选框速度慢的问题。对于受限场景的文字检测,FasterR-CNN的表现较为出色,可以通过多次检测确定不同粒度的文本区域。2.相较于FasterR-CNN算法,FCN算法只能计算ROIpooling层之前的卷积网络特征参数,而R-FCN算法提出一种位置敏感分布的卷积网络代替ROIpooling层之后的全连接网络,解决了FasterR-CNN耗时较大的问题,实现特征共享和共识。因此,面对自然场景的通用OCR,适于多尺度检测的FCN与FasterR-CNN相比具有更好的表现。企业采用FCN算法时,输出的掩膜可以作为前景文字的二值图像进行输出。4.2.3文本识别经典的文字识别方法是通过对文字的模板匹配来实现。但在每一行中任何一句话都要经过每个字的辨认才能决定。这样,就有可能对每个文本进行单独的分割,得到每个文本的意义。在这些算法中,分割算法是最常用的一种。在实际应用中,由于对单一汉字的切分,会导致出多个汉字的辨识效果,比如“李”这个汉字,如果切分不当,就会被切为“木_子”,所以必须对其进行过度的切分,以保证其充分的碎片化。在此基础上,采用了基于动态优化的方法,对切分后的数据进行了融合,获得了最佳的切分后的数据集。4.3系统功能模块设计系统设计阶段为系统架构图,系统架构图是必不可少的,系统的总体框架决定了一个系统的整体设计,是系统的基础。图片文字识别技术的整体结构设计如图4.3所示。图4.3系统结构图4.4数据库设计4.4.1数据库设计原则数据库主要有五个原则,分为:一致性,完整性,安全性,规范性,以及可伸缩性与扩宽展性。4.4.2数据库概念结构设计E-R图是数据库中是必不可少的,在数据库中,E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。本系统的E-R图如图4.4所示。图4.4系统E-R图4.4.3数据库逻辑结构设计数据库的表信息属于设计的一部分,本文数据库主要是记录了用户注册的信息会录入数据库系统之中,下面介绍数据库中的用户信息,如表4.1所示。表4.1用户信息表字段名称字段意义字段类型字段长度键码能否为空id主键编号varchar50主键否name姓名varchar10否student_id学号int10否class_name班级varchar20否password密码varchar20否识别的信息,如表4.2所示。表4.2识别信息表字段名称字段意义字段类型字段长度键码能否为空id主键编号varchar50主键否userid学号int10否history路径string50否time时间string50否第5章系统实现5.1注册登录输入账号和密码登录,没有账号需要注册再登录。如果忘记密码,可以通过忘记密码找回,输入正确的学号和姓名可以重置密码。注册登录界面如图5.1所示,用户注册界面如图5.2所示,忘记密码界面如图5.3所示。图5.1用户登录界面图5.2用户注册界面图5.3忘记密码界面实现功能的关键代码如下:serviceApi.doRegister(map)map((it)->{if(it.code()!=200||!it.isSuccessful())thrownewRuntimeException("请求失败,请重试");assertit.body()!=null;Stringstring=it.body().string();returnGsonUtils.fromJson(string,RegisterEntity.class);}).subscribeOn(RxSchedulers.request()).observeOn(RxSchedulers.main()).subscribe(newEntitySubscriber<RegisterEntity>(this){@OverridepublicvoidonNext(RegisterEntityregisterEntity){if(registerEntity.isSuccessful()){showMessage("注册成功");Router.launch(RegisterActivity.this,LoginActivity.class);}else{showMessage("注册失败");}}@OverridepublicvoidonError(Throwablethrowable){showMessage("网络请求失败");Log.e(TAG,"onError:",throwable);}@OverridepublicvoidonComplete(){}});5.2功能界面用户登录后,进入功能的界面,主要分为四个部分:单图识别,多图识别,拍照识别,PDF文档识别。用户根据自己的应用场景选择其中的一个功能,如图5.4所示。图5.4功能界面实现功能的关键代码如下:protectedvoidonCreate(@Nullable@org.jetbrains.annotations.NullableBundlesavedInstance){super.onCreate(savedInstanceState);fragments=newArrayList<>();homeFragment=newHomeFragment();fragments.add(homeFragment);historyFragment=newHistoryFragment();fragments.add(historyFragment);mineFragment=newMineFragment();fraqments.add(mineFraqment);adapter=newMainFraqmentAdapter(this,fraqments);pager.setUserInputEnabled(false);pager.setAdapter(adapter);pager.setcurrentItem(0);requestPermissions(Constants.permissions,111);}5.3图片选取图片的来源有两个部分,分别是拍照和本地相册,其中拍照是用安卓手机上的相机进行拍摄图片,然后把拍摄的图片保存至本地存储区域,接着就可以在本地相册中选取照片,而另一个来源是APP上的拍摄识别,它会在现场拍摄图片进行识别。本地选取图片如图5.5所示,拍照识别如图5.6所示。图5.5本地选取图片图5.6拍照识别实现功能的关键代码如下:Elseif(code==CHOICE_MANY)PictureSelector.create(this).openGallery(PictureMimeType.ofImage().of.maxSelectNum(3)//最大可以选取的图片数量.minSelectNum(1)//最小可以选取的图片数量.imageSpanCount(4)//每行可以显示的数量.selectionMode(PictureConfiq.MULTIPLE)//单选或者多选.previewImage(true)//是否可预览图片.previewVideo(true)//是否可预览视频.enablePreviewAudio(false)//是否可播放音频.isCamera(true)//是否显示拍照按钮.isZoomAnim(true)//图片列表点击缩放效果默认true.enableCrop(false)//是否裁剪.compress(true)//是否压缩.syn0rAsy(true)//同步true或异步false压缩默认同步.glideOverride(160,160)//glide加载宽高,越小图片列表越流畅,但会影响.hideBottomControls(false)//是否显示uCrop工具栏,默认不显示.freeStyleCropEnabled(true)//裁剪框是否可拖拽.circleDimmedLayer(false)//是否圆形裁剪.showCropFrame(false)//需不需要剪成矩形边框,圆形裁剪时设为false.showCropGrid(false)//需不需要剪成矩形边框,圆形裁剪时设为false.openClickSound(false)//是否开启点击声音.minimumCompressSize(100)//小于100kb的图片不压缩.forResult(CHOICE_MANY);//结果回调onActivityResultcode;}5.4图片预览图片不管是调用本地的相册库还是相机的拍摄,都需要一个预览的功能,让用户对待识别的区域进行预览,根据自己的需要选择想先听哪个图片的识别朗读,选取图片。图片预览功能如图5.7所示。图5.7图片预览实现功能的关键代码如下:caseR.id.choice_many:instance.action(Intent.ACTION_PICK).data(vider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);code=CHOICE_MANY;dialog.setTitle("多图识别中");break;5.5单张图片文字识别图片文字识别主要是通过Android平台调用阿里云端的OpenCv库,其中有许多的图形图像处理的函数,本软件可以直接调用库中的函数对图片进行处理识别,之后进行文字信息提取。单张图片文字识别如图5.8所示。图5.8单图的识别图实现功能的关键代码如下:img_path=picPath;ArrayMap<String,Object>params=newArrayMap<>();params.put("pic",picPath);Flowable.just(params);.flatMap((it)->mModel.doRequest0cr(it))//请求阿里云识别图片的接口方法.subscribe(newEntitySubscriber<Home0crEntity>(mView){@0verridepublicvoidonNext(Home0crEntityhome0crEntity){List<String>result=home0crEntity.getResult();if(result==null||result.isEmpty()){mView.showMessage("识别失败,或图片中无文字");mView.request0crFailed(many0crIndex,many0crCount);return;}mView.success0cr();//识别图片文字,获取文字ArrayList<String>strs=newArrayList<>(result);mView.postDelay(()->launchToDetail(strs),2000);}@OverridepublicvoidonError(Throwablethrowable){mView.showMessage("识别失败,请检查网络,或者图片是否包含文字")Loq.e(TAG,"onError:",throwable);mView.reauest0crFailed(manv0crIndex.manv0crCount);}@OverridepublicvoidonComplete(){}});}5.6图片批量文字识别对于本系统的研究,单个图片的识别虽然方便,但是在用户比较急的时候,需要对多个图片进行识别,因此,本系统进行了多个图片文字识别的一个功能,它会给用户节省单个图片识别的时间,提升图片文字识别的效率,从而让用户有一个不错的体验。多图的识别如图5.9所示,图1的识别结果如图5.10所示,图2的识别结果如图5.11所示。图5.9多图的识别图5.10图1的识别结果5.11图2的识别结果实现功能的关键代码如下:publicvoidloadMany0cr(Intentdata){List<LocalMedia>localMedia=PictureSelector.obtainMultipleResult(data);ArrayList<String>paths=newArrayList<>();HistoryControler.lastMany0crData.clear();for(LocalMediamedia:localMedia){Stringpath=media.getPath();paths.add(path);}many0crCount=paths.size();many0crIndex=1;Flowable.fromIterable(paths).flatMap((it)->{ArrayMap<String,Object>params=newArrayMap<>();params.put("pic",it);returnmModel.doRequest0cr(params);}).subscribe(newEntitySubscriber<Home0crEntity>(mView){@OverridepublicvoidonNext(Home0crEntityhome0crEntity){List<String>result=home0crEntity.qetResult();mView.updateProgressTitle("当前识别第"+many0crIndex+"张图片完毕");if(result==null|/result.isEmpty()){return;}Subscriptionsubscription=s.get();subscription.reauest(1);HistoryControler.lastManyOcrData.put(paths.get(manyOcrIndex-1),homeOcrEntity);manyOcrIndex++;}@OverridepublicvoidonError(Throwablethrowable){mView.showMessage("识别失败,请检查网络");Log.e(TAG,"onError:",throwable);mView.requestOcrFailed(manyOcrIndex,manyOcrCount);}@OverridepublicvoidonComplete(){mView.successOcr();mView.postDelay(()->launch2ListDetail(),2000);}});}5.7拍照识别除了可以选择相册中的图片进行识别外,还可以直接通过拍照进行识别。拍照如图5.12所示,拍照识别结果如图5.13所示。图5.12拍照图5.13拍照识别结果实现功能的关键代码如下:caseR.id.choice_capture:instance.action(MediaStore.ACTION_IMAGECAPTURE);code=CHOICE_CAPTURE;dialog.setTitle("拍照识别中");requestPermissions(newString[]{Manifestpermission.CAMERA}code);instance=null;break;5.8PDF文档识别随着技术的不断发展,需要站在用户的角度考虑,在有时候用户不仅仅是对图片进行一个识别,还可能对于文档的识别,PDF文档往往是不可以被复制的,导致用户想要用里面的文字还要进行手动的输入,比较麻烦。但是本系统在添加PDF文档识别后,用户就不用在进行手动输入PDF的内容,只需要点击PDF文档识别,然后将PDF的文档放入其中便可以进行识别。目录PDF如图5.14所示,目录识别结果如图5.15所示,中英文PDF如图5.16所示,中英文识别结果如图5.17所示。图5.14目录PDF图5.15目录识别结果图5.16中英文PDF图5.17中英文识别结果实现功能的关键代码如下:publicvoidloadDoc0cr(Intentdata){Log.d("DDDD",data.getData()+"");img_path="/f983c3861acc731914218975c38358c7.pnq";mModel.readTextFromPDF(data).subscribe(newEntitySubscriber<Home0crEntity>(mView){@0verridepublicvoidonNext(Home0crEntityhome0crEntity){List<String>result=home0crEntity.getResult();if(result==null|lresult.isEmpty()){mView.showMessaqe("识别失败,或PDF中无文字");mView.request0crFailed(many0crIndex,many0crCount);return;}mView.success0cr();//识别图片文字,获取文字ArrayList<String>strs=newArrayList<>(result);mView.postDelay(()->launchToDetail(strs),2000);}@0verridepublicvoidonError(Throwablethrowable){mView.showMessaqe("识别失败,请检查网络,或者PDF是否包含文字");Loq.e(TAG,"onError:",throwable);mView.request0crFailed(many0crIndex,many0crCount);}@OverridepublicvoidonComplete(){}});}5.9保存记录考虑到用户在识别的时候,可能会去找以往识别的记录,从而本系统在用户使用软件时会记录用户的识别记录。识别记录如图5.18所示。图5.18识别记录实现功能的关键代码如下:protectedvoidonCreate(@Nullabledorg.jetbrains.annotations.NullableBundlesavedInstanceState{super.onCreate(savedInstanceState);Intentintent=getIntent();Stringimg_data=intent.getStringExtra("img_data");Glide.with(this).load(img_data).into(img);textlist=intent.getstringArravListExtra("textlist"):layoutManager=newLinearLayoutManager(this);adapter=newInfoListAdapter(text_list);infoList.setLayoutManager(layoutManager);infoList.setAdapter(adapter);adapter.setItemClickListener(this);HomeOcrEntityhomeOcrEntity=newHome0crEntity();home0crEntity.setResult(text_list);HistoryControler.historyData.put(img_data,home0crEntity);5.10在线朗读语音合成是调用讯飞语音库,TTS叫做文本转语言技术,对文本文字进行语音合成,从而实现在线朗读出来,因为语音是通过耳朵听出来的,实验研究的过程中,合成的语音将识别的文字进行了比较正确的朗读,在线朗读的速度适中,发音标准趋于普通话。在线朗读时候,字体会变成红色。在线朗读如图5.19所示。5.19在线朗读实现功能的关键代码如下:publicvoidspeak(viewitemView,Stringposition){if(mTts.isSpeaking())mTts.stopSpeaking();mTts.setParameter(SpeechConstant.PARAMS,null);mTts.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD)mTts.setParameter(SpeechConstant.TTS_DATA_NOTIFY,"1");mTts.setParameter(SpeechConstant.TTS_BUFFER_TIME,"1");mTts.setParameter(SpeechConstant.VOICE_NAME,voicer);mTts.setParameter(SpeechConstant.SPEED,"50");mTts.setParameter(SpeechConstant.PITCH,"50");mTts.setParameter(SpeechConstant.VOLUME,"50");mTts.setParameter(SpeechConstant.STREAM_TYPE,"3");mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS,"false");mTts.setParameter(SpeechConstant.AUDIO_FORMAT,"pcm");mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,Environment.getExternalStorageDirectory()+"/msc/tts.pcm");mTtsListener.setTextView((TextView)itemView,position);mTts.startSpeaking(position,mTtsListener);}5.11用户信息管理用户信息管理模块可以从后台看到用户注册的信息,并且给予修改。用户信息如图5.20所示,后台修改用户密码后的信息如图5.21所示。图5.20用户信息图5.21修改用户密码后实现功能的关键代码如下:publicUser(Stringname,StringstudentId,StringclassName,Stringpassword){=name;this.studentId=studentId;this.className=className;this.password=password;}5.12识别信息管理当用户通过APP识别成功后,后台会记录下用户图片的存储路径和识别时间,显示在后端,识别信息如图5.22所示。图5.22识别信息实现功能的关键代码如下:publicHistory(intuserid,Stringhistory_src,Stringtime){this.userid=userid;his.history_src=history_src;this.time=time;}第6章系统测试6.1注册测试测试数据:新用户的注册,已经使用注册信息再注册。期望结果:注册成功。测试结果:对于没有注册过的学号,显示注册成功。对于数据库中已经注册过的学号在进行注册时提示用户该账号已注册。没有注册过的用户想要直接登录,会显示账号或密码显示错误。如表6.1所示。表6.1用户注册测试编号测试步骤测试数据期望结果实际结果1用户注册账号是否成功账号:1111111密码:1111111验证码:正确弹出提示框:注册成功注册成功2已存在的用户注册失败账号:1111111密码:1111111验证码:正确弹出对话框:该账号已存在该账号已注册3未注册登录时提示没有此账号账号:2222密码:22222验证码:错误弹出对话框:没有此账号账号或密码错误6.2登录测试数据测试:测试已经注册过的用户。期望结果:账号密码输入正确,进入功能界面。测试结果:输入正确的账号和密码的用户进入功能界面,输入错误的账号或者密码时候提示账号或者密码错误。如表6.2所示。表6.2登录测试编号测试步骤测试数据期望结果实际结果1账号密码正确,进入功能界面账号:1111111密码:1111111验证码:正确弹出提示框:操作成功操作成功2账号密码错误,提示密码错误账号:11111111密码:22222222验证码:正确弹出对话框:密码错误账号或密码错误6.3图片文字识别的测试数据测试:截取几张图片文字进行图片识别。期望结果:能够准确无误的将图片中的文字识别出来。测试结果:选取了四张图片分别进行测试,测试的结果与期望的结果差距几乎很小,大概一个到两个字之间的识别错误,图片文字识别测试如表6.3所示表6.3图片文字识别测试编号测试数据期望结果实际结果测试结果1您好!中国您好!中国您好!中国测试成功2山川是不卷收的文章,日月为你掌灯伴读山川是不卷收的文章,日月为你掌灯伴读山川是不卷收的文章日月为你掌灯伴读测试成功3五一假期即将到来,我们计划出去游玩五一假期即将到来,我们计划出去游玩五一假期即将到来,我们计划出去游测试成功4数学基础过关660题习题册数学基础过关660题习题册数学基础过关660题习题册测试成功图片文字识别测试编号1识别结果如图6.1所示。图6.1编号1识别结果图片文字识别测试编号2识别结果如图6.2所示。图6.2编号2识别结果图片文字识别测试编号3识别结果如图6.3所示。图6.3编号3识别结果图片文字识别测试编号4识别结果如图6.4所示。图6.4编号4识别结果6.4语音测试数据测试:在线朗读设置了红色,是指朗读在哪一句,文字的那一句就会标红。期望结果:每组数据都可以出现红色的进程标识。测试结果:每一组都出现红色的标识,说明朗读可实现。如下表6.4所示。表6.4语音测试编号测试数据期望结果实际结果测试结果1我是一个大四即将毕业的学生有红色表示出现测试成功2五一假期即将到来,我们计划出去游玩有红色表示出现测试成功3如果给你寄一本书,我不会寄给你诗歌,我要给你一本关于植物,关于庄稼的,告诉你稻子和稗子的区别,告诉你一棵稗子提心吊胆的春天。IfIsendyouabook,Iwillnotsendyouapoem,Iwillgiveyouabookaboutplants,aboutcrops,tellyouthedifferencebetweenriceandtares,tellyouthefearfulspringofatarestree.有红色表示出现测试成功语音测试编号1测试结果如图6.5所示。图6.5编号1测试结果语音测试编号2测试结果如图6.6所示。图6.6编号2测试结果语音测试编号3测试结果如图6.7所示。图6.7编号3测试结果结论及展望本系统将Android、Java和MySQL数据库等相关技术进行了组合,从而实现以Android为基础的图片文字识别技术,从而能够将图片中的文字信息进行识别,并能够在线朗读出来。首先是绪论,阐述了本论文的选题背景及意义,并分析了国内外研究的比较,最终确定了图像与文本之间的关系。其次是对开发工具和有关技术的介绍,为后面的研究和设计打下基础。之后讲述了可行性分析、需求分析和系统流程分析。接着从OCR的基本原理出发,详细介绍了OCR的算法,包括对图像进行分割、灰度处理、阈值算法、二值化算法等,概述了OCR的技术路线,并对本系统所使用的数据库进行了说明。最后是系统测试与实现,先让使用者注册登录,再在功能界面上选择识别方法,在此基础上,完成了图像中文本的同步阅读,并对实验目标及实验结果进行了说明。本系统也有一些不足之处,第一,因为设备的条件,或是因为拍摄图片的一些无法掌控的原因,会造成图片模糊,或是因为文字的笔画比较复杂,而造成了对文字的识别失败。其次,在对图像文字进行识别的过程中,在速度上可能会出现一些延迟。第三,该系统的操作接口没有进行修饰。总之,系统研究与实际应用相比,与一个成功的产品相比,还有一定的差距。今后还需进一步完善此软件,排除某些缺陷,确保在功能性、效能上,给使用者带来更好的体验,让它变成一款合格的产品。参考文献[1]赵思宁.一种基于Androi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玻璃纤维增强塑料窗型材选型方案
- 再生水利用设施及配套管网建设实施方案
- 液压支架生产项目运营管理方案
- 安装环节水磨石磨光机就位与固定方案
- 遮阳篷安装质量验收方案
- 污水能耗管控优化方案
- 通讯公司技术支持部半年工作报告
- 冷弯薄壁型钢节点连接方案
- 基于文化浸润的小学文言文教学创新方案
- 工业气雾剂充装项目施工方案
- 2026年河南省八年级地理生物会考试卷题库及答案
- 液压支架检修工岗位危险源辨识与安全防控培训
- 2026关于开展学习教育整改整治工作情况的汇报
- 【全国】时事政治必考题及答案2026年
- 13.2《装在套子里的人》+2025-2026学年+统编版高一语文必修下册
- 2026年天津市西青区中考历史二模试卷(含答案)
- 2026年湖南高考政治考试卷含答案
- 2026年高考全国I卷数学试卷及答案
- 粮库有限空间作业演练方案
- 漫话创业网络共享课学习通章节答案期末考试题库2023年
- 实习考勤表(完整版)
评论
0/150
提交评论