APP下载

汉语言难检字读音查询app研究与开发

2020-03-19吴博世田英爱王浩翔

科学咨询 2020年53期
关键词:调用国学文字

吴博世 田英爱 王浩翔

(北京信息科技大学计算机学院 北京 100000)

近期,越来越多的人了解并喜欢上了国学文化,人们纷纷投入对国学文化学习的行列,掀起了一阵国学文化的学习热潮。随着人们对国学文化的逐步学习,我们发现人们缺少学习国学文化的工具。调查了解到,人们学习国学文化的一大阻碍就是有很多生僻字不认识、不会读、不了解是什么意思。为了有效推动国学文化的学习,我们经过组内讨论决定利用OCR技术,以及相关的Android页面设计,还有相关的难检字识别算法,如attention,设计一款有助于学习国学文化的app,解决汉语言难检字读音的困难。

一、实现app的过程

在项目开始时,我们先规划了本app大概要实现的功能,理清了设计思路。我们要实现通过图像识别技术、手写输入技术,将要识别的字转化为文本信息,再基于《山海经》中的生僻字创建一个数据库,最后通过连接数据库将文本信息和数据库中的字进行匹配,然后调用数据库中的信息,从而实现本app所既定的功能。我们的设计思路是通过Andorid Studio来构建这个手机app的框架,然后再通过接口连接到一些其他技术,最后连接Andorid Studio内部的数据库[1]将收集到的字的信息导入其中,最终完成一个功能丰富的app。

(一)应用OCR技术

我们首要学习的技术就是OCR技术,OCR技术是光学字符识别(Optical Character Recognition, OCR)[2],是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。亦即将图像中的文字进行识别,并以文本的形式返回。

我们将OCR技术应用到我们的项目过程中遇到了较大的困难,在文字检测部分的困难是要定位字的位置。在给定的一张图像中,我们需要找出这张图里文字出现的位置,这就需要用到attention技术。为了区分出是不是字,除了从整体对图片进行把握,更关注的是局部信息,也就是字的特点,包括笔画,字形,结构等内容。至于图像中其他无关紧要的信息,对于字的识别并不能起作用,所以,注意力机制就是一个关键的技术,让深度学习模型更关注某个局部的信息。

(二)应用RA-CNN技术

在文本识别部分的困难是首先是用户将想要识别的字拍照上传,由于用户拍照的过程比较随意,图像的场景不固定,文字布局多样,导致上传了各式各样的图像,图像歪斜、模糊,文本布局扭曲、褶皱、换向都是不可避免的,也会遇到低亮度、低对比度、光照不均、透视变形和残缺遮挡等问题,这就需要进行校正,通过几何变换、畸变校正、去除模糊、图像增强和光线校正等文字检测对用户上传图像中的文字进行处理[3]。其次是对文本内容进行识别,将图像中的文本信息转化为文本信息,要识别得出每个文字是什么,然后根据识别出来的文字匹配我们数据库中的文字,将数据库中与之匹配的文字信息调用出来。将图像中的文本信息转化为文本信息是重中之重,它也需要attention技术的支持才能实现,我们借鉴了一个基于CNN的注意力机制,叫做Recurrent attention convolutional neural network (RA-CNN)[4],该模型递归地分析局部信息,从局部信息中提取必要的特征,让整个网络结构不仅关注整体信息,还关注局部信息,拿“木”字举例,之前通过文字检测的attention技术来定位到“木”这个字的位置,然后根据RA-CNN技术递归地将“木”字放大成一个个局部的笔画,比如一撇,一捺,一横,一竖,然后再通过Attention Proposal Sub-Network (APN)技术,迭代地生成子区域,并对这些子区域进行必要的预测,将这些子区域所得到的预测结果进行必要的整合,从而得到整个字的预测概率。

总体来说,Attention机制就是从整个图像出发,判断出字分布的位置,然后输出一个坐标值和尺寸大小,在这个基础上,下一个子图就是从上一个判断出的图像中出发,再输出一个坐标值和尺寸大小;然后再迭代持续放大图片,从而不停地聚集在图片中的某些关键位置,不同尺寸的图片都能输出不同的信息,再将其进行必要的融合,最终得出整个图像中识别出来的字。

(OCR的技术路线)

(三)Android Studio中的接口调用

要想使用OCR技术,就必须使用接口调用。我们通过Android Studio来实现接口调用,要实现的功能是用手机拍照,然后将照片信息传递给服务器,参数以POST的形式发送,按照百度OCRapi的要求[5],需要加上@FormUrlEncode注释,我们使用@Field的方式将参数加入请求体,Observable中的是RecognitionResultBean类型,我们可以从里面拿到服务器返回的文字识别信息。调用此方法,便可以把图片类型转化成字符串类型,之后的操作便是对网络接口调用之后的回调方法进行定义,我们在调用成功后的onNext操作中,拿到了RecognitionResultBean类型参数,这个参数里含有图片所包含文字的信息,我们将所有的文字一一取出,用StringBuilder连接成一个字符串,返回给View层,调用View层的updateUI进行UI界面的更新,对于这个字符串我们在之后还可以进行进一步的分析操作。

要使用相机功能调用,就需要请求权限。分别是网络请求权限,数据的读存取权限,以及相机权限。在Android 6.0 之前应用的权限在安装时全部授予,也就是说只要在AndroidManifest中申请过的权限,都会给予。而在Android 6.0 或更高版本之后,对权限的管理作出了改变,对某些涉及用户隐私的权限可在运行时根据用户的需要动态授予,也就是说,在AndroidManifest中申请的权限,在用户使用的过程中还得询问用户是否给予,用户给予权限了,应用才能进行相关的权限操作。如果拍照成功,我们就把照片作为参数传递给之前定义好的接口方法,调用进行图片文字识别。可以看到,我还把照片放入imageview中方便与识别结果进行对比。等服务器成功返回识别结构之后,就会调用VIew层的updateUI,更新textview显示识别结果。

在测试阶段,我们先就《山海经》一书来选取难检字进行数据处理,录入安卓的数据库,进行测试,其中印刷体字的识别准确率还是比较高的,几乎达到了100%,手写体识别,因为人为因素较大,识别率不尽人意,但是还是可以识别出来大部分。目前在山海经中收录难检字300余字,以后会添加入《诗经》等生涩难懂的书目的难检字,或找到相关难检字库。

二、结束语

此项目在历经一年之后,我们终于完成了对本app的研究,并完成了真机的试验,还得到了很不错的识别率,真的很不错,我们觉得这是一款对于国学爱好者很友好的软件,后续我们还会增加字库,研发更加方便的识别模式,美化成更精致简洁的页面,使用户的体验达到最佳。

猜你喜欢

调用国学文字
“垂”改成“掉”,好不好?
文字的前世今生
热爱与坚持
当我在文字中投宿
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
奋斗鸡—我的国学日常
利用RFC技术实现SAP系统接口通信
种出来的“逍遥居”