CN113537418A - 一种手写汉字的识别系统 - Google Patents
一种手写汉字的识别系统 Download PDFInfo
- Publication number
- CN113537418A CN113537418A CN202010293254.2A CN202010293254A CN113537418A CN 113537418 A CN113537418 A CN 113537418A CN 202010293254 A CN202010293254 A CN 202010293254A CN 113537418 A CN113537418 A CN 113537418A
- Authority
- CN
- China
- Prior art keywords
- recognition
- module
- app
- picture
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Character Discrimination (AREA)
Abstract
本发明涉及一个手写汉字识别系统,使人们在日常生活中,当遇到不认识的汉字却因不知道读音无法及时查找时能快速识别汉字。本发明的手写汉字识别系统分为APP前端和系统后台。APP端基于Android平台进行开发,用户在APP端进行图片的上传,有扫描拍照和相册选取两种方式,确定好将要识别的汉字后,APP会将汉字图片发送至服务器端的识别程序,显示结果模块会显示服务器返回的识别结果。系统后台包括Java服务器和Python识别程序,服务器基于Java EE进行开发,使用Myeclipse编写,识别程序基于Python语言进行开发,使用Pycharm进行编写。服务器负责接收APP端上传的图片,并调用识别程序进行图片识别,再将识别结果返回APP。识别程序拥有训练模块和识别模块两个核心模块,训练模块在系统部署之前进行运行,对神经网络进行训练,生成识别模块用于匹配的模型,识别模块对用户上传的图片进行匹配识别,返回匹配汉字概率最大的前三个识别结果。
Description
技术领域
本发明属于光学字符识别领域,尤其是一种手写汉字的识别系统。
背景技术
从20世纪中期,第一台计算机在美国诞生到现在,计算机已经发展成人们生活中不可或缺的一部分。随着计算机以及便携移动设备的普及,如智能手机、平板电脑、多功能手表等等,在当前生活模式下每日的信息量剧增,人机交互的效率成了信息时代发展的难题,如何能智能的对人类语言、文字以及动作做出快速识别成了学术界和科技企业界的研究热点。目前汉字识别技术的研究主要分成两大类,分别为印刷体汉字识别和手写汉字识别,印刷体汉字较为工整、清晰,相对来说很容易识别。而手写汉字书写情况因人而异,变化的因素非常多,不同年龄、不同性别、不同文化背景书写出来的汉字规整程度可能相差很多,识别的难度非常大。近年来深度学习的火热发展以及计算机算力的飞速提高,为通过大量训练生成模型的汉字识别人工神经网络提供了实现基础。
发明内容
本发明的手写汉字识别系统分为APP前端和系统后台。用户在APP端进行图片的上传,APP端基于Android平台进行开发。系统后台包括java服务器和Python识别程序,服务器基于Java EE进行开发,使用Myeclipse编写。识别程序基于Python语言进行开发,使用Pycharm进行编写。APP前端供用户使用,服务器负责接收APP端上传的图片,并调用识别程序进行图片识别,再将识别结果返回APP。
本发明的优点和积极效果是:
1、APP端是供用户使用的平台,主要设计了扫描模块、相册选取模块和显示模块。扫描模块可调用手机本身的相机程序对将要识别的汉字进行扫描,相册选取模块可调用手机相册,在所有图片子目录里面进行图片查找。确定好将要识别的汉字后,APP会将汉字图片发送至服务器端的识别程序,显示结果模块会显示服务器返回的识别结果。
2、识别程序拥有训练模型和识别图片两个核心模块,训练模块在系统部署之前进行运行,对神经网络进行训练,生成识别模块用于匹配的模型,识别模块对用户上传的图片进行匹配识别,返回匹配汉字概率最大的前三个识别结果。
附图说明
图1是本发明的APP端主界面布局;
图2是本发明的扫描模块的扫描界面;
图3是本发明的显示结果界面;
图4是本发明的准确率变化图;
图5是本发明的损失函数变化图。
具体实施方式
以下结合附图对本发明做进一步说明。
如图1所示,APP端的主界面包括一个文本框用来显示汉字的拼音,下面放一个图片框用来显示选取的图片,也用作识别结果返回后显示识别出的汉字。再下方是两个并排着的按钮,分别是扫描按钮和相册选取按钮,最下方为上传图片按钮。
APP端的扫描模块是通过手机自身的照相机进行图片的获取,在扫描之前需要先获得APP对相机的使用权限,点击扫描按钮以后,APP将会调用照相机功能,如图2所示。相册选取模式可以为用户提供更多的图片选择的方式,在用户点击相册选取按钮后,打开手机的相册,这一操作同样需要手机的权限,只不过需要的是读写内存的权限,打开相册后即可对相册的所有子目录进行访问。
本发明将识别图片单独做成一个按钮,这样可以把Android通过HTTP通信连接服务器的模块分离出来,在网络环境发生改变或者想要调整通信中具体使用的框架时,都比较容易。本发明采用AsyncHTTPClient方式进行连接,点击识别按钮后,创建一个连接类的实例化对象,将服务器地址和图片包在请求中发送至服务器。作为与用户交互的APP端,不仅仅是要发送图片,最终实现的功能是识别图片,因此还需要将识别的结果显示出来,本发明将需要识别的汉字以及拼音显示出来,如图3所示。本发明通过pinyin4j开源库来实现,相较于通过ascll值构成拼音映射,使用开源库更加稳定,对输出结果更加容易控制。
本发明系统后台主要实现两个功能,分别是与APP端进行通信以及调用Python识别程序。在与APP端通信中新建一个用于处理连接请求的jsp,通过request参数获取http传过来的值,再新建一个保存图片的类,调用该类方法,把APP端上传的图片数据流转换为图片,并保存在指定文件夹下。同时,利用response参数,将识别结果返回给APP端。
本发明的识别程序是基于TensorFlow框架开发的,可以接收一张手写汉字图片,代入已经训练好的网络中,匹配模型得到概率最大的汉字。识别程序主要包括准备数据,日志,读取数据,构建卷积神经网络,训练,测试,识别七个模块。本发明采用的数据集是由中国科学研究所提供的CAISA-HWDB1.1手写汉字数据集,该数据集由300个人对3755个一级汉字进行手写,拥有90多万的样本数据。在官网下载后为zip格式,进行解压后为alz格式,再次解压后为gnt格式,这是研究所专门封装的数据格式,主要结构是一个图片的头信息再加上这个图片的数据,所以在数据准备模块需要编写方法将gnt转为png格式。先将gnt转化为每个图对应的矩阵和标签列表。定义一个方法用来取出一张图片的数据,首先取出10个字节的头文件信息,前四个字节为样本大小,5和6两个字节为标签编码,对应着该汉字在gb2312编码中的值,后面四个字节分别为两个字节的宽和高,宽和高的乘积就是该图片的大小。因为在文件中是低位在前,所以还需要用移位运算将高位放在最前面,最后读取出图片大小的数据并转换成宽乘高的矩阵。随后通过循环读取每个gnt文件,这里使用yield关键字使for循环拥有了迭代器的效果,可以不断返回一对图片标签和图片矩阵的值。调用读取图片方法,将每次返回的图片标签封装成大端对齐的无符号短整形,再以gb2312方式编码存入一个set集,相同的标签只存一次,经过无序打乱后转换成一个列表,为每一个编码配对一个自增编号形成键值对字典,并写入char_dict文件,实现持久化保存字符字典,用作之后转换png时可以把同一个汉字的所有图片通过编号放在同一个文件下,也用在训练完成后的测试中将标签转化为汉字编码。将矩阵保存为png图片,使用自增长度为1的变量为每张png排序命名,通过匹配char_dict文件中的汉字编码序号,放在对应相同汉字的标签目录下。分别代入训练集和测试集数据的地址实现全部数据的转换。
本发明需要输出大量的概率语句,以展示训练过程,日志模块的设计采用了Python里的logging包,它可以设置一个日志输出器,为日志输出器命名并实例化,便可像系统日志一样可以设置五个级别,可以提前定好默认的级别,也可以设置输出日志的格式和输出的位置。
本发明将读取图片模块设计成专门的一个类,拥有数据初始化,图片预处理,输入流水线三个核心方法。数据初始化通过os库里的walk函数可以遍历一个目录,把所有图片的地址存在一个列表里,通过查找之前得到的char_dict文件,把每张图片对应的标签也放在一个列表里,方便输入流水线中进行读取。在图片预处理中由于本发明用于训练和测试的图片均为较清晰的灰度png图片,场景并不复杂,只用一些比较简单的处理用来扩充数据集。采用FLAGS全局参数作为判断是否进行图片预处理的标志,全局变量的使用可以方便明了的修改系统中的参数,在主程序中使用较为重要。本发明采用输入流水线的方法,自动的不断从数据列表中提取数据,达到提前设定的值的时候进行一次输出。具体实现为,首先将图片和标签两个列表通过tf.convert_to_tensor转换为tensor张量,通过slice_input_producer设定一个queue用于读取数据,这个是一种异步的数据处理结构,程序会在系统中设置一定大小的空间用作cache,不同的进程会分别一直往cache中输入数据和取出数据,行成一个数据流,以此来保证内存或显存的占用以及每一个mini-batch都不需要等待,直接可以从cache中获取。在数据流读取数据中,会产生一个个shuffle_batch,每个shuffle_batch会在数据量达到预设的参数时返回一组图片和标签。
本发明构建卷积神经网络采用slim模块,slim可以消除原生tensorflow里面很多重复的模板性的代码,让代码更紧凑,更具备可读性。本发明的卷积神经网络包括三个卷积池化层,以及一个全连接层。输入层负责输入数据,设置一个格式为float32,形状是[None,64,64,1]的四维张量作为图片输入的占位符,同时设置一个格式为int64,形状是[None]的一维张量作为标签输入的占位符。卷积层负责提取特征,使用slim模块中的卷积函数conv2d对图片张量与一个3乘3的卷积核做卷积运算,卷积方式为’SAME’。最大池化层负责对特征进行筛选,使用slim模块中的最大池化函数max_pool2d对卷积之后的结果进行矩阵为[2,2]大小的池化。在本系统中,卷积层和池化层重复三次。全连接层负责将所有的特征集中到一起,使用slim模块的全连接函数fully_connected对之前卷积池化层提取出的特征进行连接。输出层本质上也是一层全连接层,对全连接层的结果进行连接。判断一个网络的好坏,最重要的两个参数就是loss和accuracy,一个是损失函数,一个是准确率,损失函数通过求真实标签与预测标签的交叉熵,再进行归一化处理,最后计算出一个batch大小的损失函数平均值,同样的,通过比较预测是否正确计算预测的准确率,计算得出一个batch大小的准确率的平均值。
在本发明的数据和卷积神经网络准备好后,要把数据代入网络中。首先从训练数据集和测试数据集中分别取出一个batch的标签和图片,并初始化计算图以及所有参数,创建一个入队线程用来实现输入流水线,同时实例化模型保存恢复对象,在每次开始之前查询是否有已经存储了的模型,如果有先恢复模型,实现了神经网络的断点训练,因为神经网络的训练十分耗时,通常不能一次完成,这就需要在第二次训练时能接上第一次,而不是从0开始。通过查询线程是否读取全部数据,来判断是否跳出训练循环。在每个训练过程中,将图片和标签传入神经网络中,使用内置的梯度下降法改变模型的参数,每一次训练都会调用logging模块进行输出,输出训练步数,花费的时间,和损失函数的值,每经过50步训练进行一次小的测试,每经过2000步训练保存一次模型。此外,该模块还实现了参数的保存,通过TensorFlow中的summary模块,可以将每次训练之后的损失函数值和准确率保存,最后折线图的形式来查看两个参数的变化情况。
本发明的测试部分主要是将所有的用于测试的数据集代入训练好的神经网络中,对整体的测试集计算前1识别成功准确率和前3识别成功准确率。恢复模型后,通过和训练时读取数据一样的方法启动计算图,最后通过logging模块输出总的准确率。经过10000步的训练以后,在测试集的准确率已经达到了80%,准确率变化值如图4所示,损失函数变化值如图5所示
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
Claims (4)
1.一种手写汉字的识别系统,其特征在于,本发明分为APP前端和系统后台。用户在APP端进行图片的上传,有扫描拍照和相册选取两种方式,系统后台包括Java服务器和Python识别程序。APP前端供用户使用,服务器负责接收APP端上传的图片,并调用识别程序进行图片识别,再将识别结果返回APP。识别程序拥有训练模型和识别图片两个核心模块,训练模块在系统部署之前进行运行,对神经网络进行训练,生成识别模块用于匹配的模型,识别模块对用户上传的图片进行匹配识别。
2.根据权利要求1所述的一种手写汉字的识别系统,其特征是,APP端扫描模块的功能为点击扫描按钮后调用手机本身的相机程序进行扫描,将要识别的汉字放在扫描框中后,点击扫描框下方的确认按钮,将扫描的结果显示在图片框中。相册选取模块的功能为点击相册选取按钮后调用手机相册,可以在所有图片子目录里面进行查找,选完图片以后点击右上角的确认按钮,将选取的图片显示在主界面上。识别模块的功能:点击识别按钮,APP会将主界面的图片通过HTTP通信的方式发送至服务器。显示结果模块的功能为在图片上传成功后,程序进入等待识别完成的状态,在服务器识别完成后,接受服务器返回的识别结果,并显示在主界面上。
3.根据权利要求1所述的一种手写汉字的识别系统,其特征是,系统后台的通信模块由Myeclipse完成,通过Tomcat布置成服务器,负责响应APP端的HTTP连接请求,将请求中包括的手写汉字图片保存在本地专用文件夹下,同时也负责把识别的结果返回APP客户端。
4.根据权利要求1所述的一种手写汉字的识别系统,其特征是,识别程序使用Python编写,包括训练、测试和识别三个子模块。训练模块对预设的手写汉字数据进行训练,将模型结果保存在本地以便随时恢复模型继续训练,在基本数据集训练完成后,还可以在系统运行过程中继续加入数据集,不断优化模型,以期增加手写汉字识别准确率。测试模块在训练模块运行完成后,对专门的测试数据进行准确率测试,对神经网络的训练结果进行一个可靠性评估。识别模块,从指定图片存储地址获取图片代入训练好的神经网络模型进行匹配,并返回概率最大的三个汉字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293254.2A CN113537418A (zh) | 2020-04-14 | 2020-04-14 | 一种手写汉字的识别系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293254.2A CN113537418A (zh) | 2020-04-14 | 2020-04-14 | 一种手写汉字的识别系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113537418A true CN113537418A (zh) | 2021-10-22 |
Family
ID=78088124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010293254.2A Pending CN113537418A (zh) | 2020-04-14 | 2020-04-14 | 一种手写汉字的识别系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113537418A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916941A (zh) * | 2005-08-18 | 2007-02-21 | 北大方正集团有限公司 | 一种字符识别的后处理方法 |
CN109460769A (zh) * | 2018-11-16 | 2019-03-12 | 湖南大学 | 一种基于表格字符检测与识别的移动端系统与方法 |
CN109598238A (zh) * | 2018-12-04 | 2019-04-09 | 拉扎斯网络科技(上海)有限公司 | 信息处理方法及装置、存储介质和电子设备 |
CN109670559A (zh) * | 2018-12-07 | 2019-04-23 | 北京锐安科技有限公司 | 手写汉字的识别方法、装置、设备和存储介质 |
CN110942004A (zh) * | 2019-11-20 | 2020-03-31 | 深圳追一科技有限公司 | 基于神经网络模型的手写识别方法、装置及电子设备 |
-
2020
- 2020-04-14 CN CN202010293254.2A patent/CN113537418A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916941A (zh) * | 2005-08-18 | 2007-02-21 | 北大方正集团有限公司 | 一种字符识别的后处理方法 |
CN109460769A (zh) * | 2018-11-16 | 2019-03-12 | 湖南大学 | 一种基于表格字符检测与识别的移动端系统与方法 |
CN109598238A (zh) * | 2018-12-04 | 2019-04-09 | 拉扎斯网络科技(上海)有限公司 | 信息处理方法及装置、存储介质和电子设备 |
CN109670559A (zh) * | 2018-12-07 | 2019-04-23 | 北京锐安科技有限公司 | 手写汉字的识别方法、装置、设备和存储介质 |
CN110942004A (zh) * | 2019-11-20 | 2020-03-31 | 深圳追一科技有限公司 | 基于神经网络模型的手写识别方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11887344B2 (en) | Encoding and decoding a stylized custom graphic | |
WO2021203863A1 (zh) | 基于人工智能的物体检测方法、装置、设备及存储介质 | |
CN109993102B (zh) | 相似人脸检索方法、装置及存储介质 | |
EP4002161A1 (en) | Image retrieval method and apparatus, storage medium, and device | |
WO2017003756A1 (en) | Methods and systems for detecting and recognizing text from images | |
CN109919077B (zh) | 姿态识别方法、装置、介质和计算设备 | |
US20210303864A1 (en) | Method and apparatus for processing video, electronic device, medium and product | |
CN113254654B (zh) | 模型训练、文本识别方法、装置、设备和介质 | |
CN112819686A (zh) | 基于人工智能的图像风格处理方法、装置及电子设备 | |
CN104732226A (zh) | 一种字符识别方法和装置 | |
CN111507354B (zh) | 信息抽取方法、装置、设备以及存储介质 | |
KR102373884B1 (ko) | 텍스트 기반 이미지 검색을 위한 이미지 데이터 처리 방법 | |
CN107392238A (zh) | 基于移动视觉搜索的户外植物知识拓展学习系统 | |
CN112069319A (zh) | 文本抽取方法、装置、计算机设备和可读存储介质 | |
CN111581367A (zh) | 一种题目录入的方法和系统 | |
US20230004595A1 (en) | Image retrieval method, image retrieval devices, image retrieval system and image display system | |
WO2024088012A1 (zh) | 图文识别方法及图文识别模型的数据处理方法 | |
CN111753744A (zh) | 用于票据图像分类的方法、装置、设备及可读存储介质 | |
WO2021237227A1 (en) | Method and system for multi-language text recognition model with autonomous language classification | |
CN113762050A (zh) | 图像数据处理方法、装置、设备以及介质 | |
CN116541492A (zh) | 一种数据处理方法及相关设备 | |
CN112052352B (zh) | 视频排序方法、装置、服务器及存储介质 | |
CN112883719A (zh) | 一种品类词识别方法、模型训练方法、装置及系统 | |
CN113177118A (zh) | 文本分类模型、文本分类的方法以及装置 | |
CN113537418A (zh) | 一种手写汉字的识别系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20211022 |