基于卷积神经网络识别金融票据中的文字信息设计GUI界面系统(计算机毕设完整代码)

简介: 基于卷积神经网络识别金融票据中的文字信息设计GUI界面系统(计算机毕设完整代码)

结果展示:


ed6e23ac93bd6635a63c5023561aaa5f.gif


用户首先通过”浏览文件”按钮选择扫描获得的金融票据图片. 程序就能够提取出金融票据图片中的日期, 金额等信息和图片路径信息显示在屏幕上. 程序还设置了帮助按键,使用者通过帮助按钮获得帮助.


由图可见票据的日期为 19 年 06 月 22 日(062219), 程序可以准确的识别; 票据的金额为 HK$ 65535, 也能够精准的识别出来, 并显示在图片下方.

项目简介


28800295bc102fe26a38be628001f19c.png


图 1-1 BARCLAYS 支票样例


金融票据单中常有很多的手写数字, 对于这些手写数字只能依靠人工识别输入计算机, 费时费力. 因此我们利用了卷积神经网络技术(CNN), 用训练好的模型对预处理后的金融票据中的数字进行识别. 这样就不需要人工识别手写数据, 再录入计算机. 这个技术不仅实用, 更具备一定的商业意义.


程序能够对数字/数字串/金融票据中的数字进行精确识别, 经过 nmist 测试集测试, 单子符识别正确率为 98.08%, 数字串识别正确率为 98.08%^n. 不仅如此, 项目的交互性界面设计使其具有极易上手的特点使得本项目具备更多的科研和商用意义.


项目安装说明

涉及模块:

Tensorflow 1.0

Python 3

PIL

Numpy

Tkinter

如何运行? 运行 app_gui.exe 即可启动.

设计方案


金融票据单中常有很多的手写数字, 对于这些手写数字只能依靠人工识别输入计算机, 费时费力. 因此我们利用了卷积神经网络技术(CNN), 用训练好的模型对预处理后的金融票据中的数字进行识别. 这样就不需要人工识别手写数据, 再录入计算机. 这个技术不仅实用, 更具备一定的商业意义.


为什么要用卷积神经网络(CNN)进行识别呢?


实际测试中, 经过训练的卷积神经网络对于单个手写数字的识别成功率为 98.08%, 对于 n 位数字串的识别率为 98.08%^n. 具备非常高的的精确性和鲁棒性. 而不使用卷积神经网络对于单个手写数字进行识别的成功率仅为 14.17%. 虽然有其他客观因素影响结果, 但是可以很清楚的发现使用了卷积神经网络识别技术后, 预测的准确率有了很大的提升.


因此, 我们决定使用卷积神经网络作为神经网络模型.


项目设计分为四个部分


第一部分 是卷积神经网络训练的手写单个数字符识别模型.


第二部分 是对于手写数字串的反相/去噪声/拆分切片/变形的预处理, 处理后得到多个单数字符传入第一部分.


第三部分 是对于金融票据中手写数字所在的位置区域进行截取. 截取后把图片传入第二部分.


第四部分 是对于第三部分的交互性提升. 使用了 Tkinter 制作了一个 GUI. 可以通过 GUI 的按钮和图片进行可视化的操作.


  • A. 第一部分 - 手写单数字符识别


手写单数字符识别的方案参照了主流的神经网络设计八股(准备, 前传, 反传, 迭代)进行总体设计.


通过调用 tensorflow 的库函数来实现神经网络的参数优化和模型训练以达到识别数字的功能. 我使用 mnist 数据集对模型参数进行训练. mnist 数据集有超过 60000 个标记样本以供训练. 同时 mnist 数据集的可靠性也很高, 很适合作为项目的数据集.


神经网络的模型通过喂入 mnist 数据集中的样本来训练, 通过前向传播和反向传播的计算, 逐渐的修改模型. 其中使用了如: 滑动平均值 ema, 正则化损失函数防止过拟合, 指数衰减学习率等高效算法, 让模型修改的更加贴合实际情况.


训练产生的模型将储存于 model 目录下. 模型实际训练时常约 30min, 为方便多次分时训练和后续增加的训练, 因此使用了断点续训的方式. 测试应用的图片文件储存与 pic 目录, 为手写数字(白底黑字), 用来测试模型的识别的准确性, 也可以根据实际情况上网下载图片进行识别测试.


通过 app_num_ch.py 文件调用已经训练好的模型对自定义的单数字符图片进行识别. 经过测试, 识别成功率超过了 98.08%, 超过了预期的设计构想. 方案成功.


  • B. 第二部分 - 手写数字串识别 通过对手写数字串进行预处理,使手写数字串转化为多个单数字符。再将单数字符分别传入单数字符识别模型进行计算。


预处理:


a) 反相, 去噪声:


预处理中将图片黑白颠倒, 并去除噪声, 故可识别的图片为白底黑字, 符合日常使用需求.


b) 切片:


假定数字串的每个数字之间存在空隙. 图片从左到右逐列识别, 当图片开始出现黑色时, 认为单数字符出现, 标记该列为出现单数字符的列, 并储存; 当图片全列为白 时, 认为单数字符结束, 标记该列为单数字符消失的列, 并储存. 为了便于说明, 将识别黑色(出现)称为黑检测, 将识别白色(结束)称为白检测. 黑白检测通过 bool 型变量进行切换. 将数字串的个数和位置信息存储于一维数组. 利用一维数组的数据进行中值切片.

2fb313e87b07e0e588e677866aa29c68.png


图 4-1 为输入的图像(18)(预处理 -切片前)


由图 4-1 可见图像已经经过了反相/去噪点/变形的步骤, 图片元素只有 0 和 255, 尺寸为 28*28. 但由于图像(18)还没有经过切片, 所以图中为多个数字符.(1 和 8).

f93f69d0011366a4b09e8b8048a7465f.png


图 4-2 为输入的图像(18)(切片)


由图 4-2 可见图像经过了切片.原本存在于 12-23 列的’8’存储为新的图像, 列数改变为 1-12.


c) 小图变形:


对于一维数组中的信息进行提取, 将每一个单数字符存储至一个二维数组. 将二维数组变形成 2828, 再将二维数组变形成 1784 的数组, 传入模型进行识别. 小图输入单子符识别模型


d) 输出


输出预测的手写数字串结果. 理论识别率为 98.08%^n.


通过 app_num_str.py 文件调用对手写数字串进行预处理,使手写数字串转化为多个单数字符。再将单数字符分别传入单数字符识别模型进行计算。用已经训练好的模型对自定义的单数字符图片进行识别. 经过测试, 识别成功率超过了 98.08%^n.


  • C. 第三部分 - 截取金融票据中手写数字所在的位置区域

通过对金融票据进行预处理,将手写数字待识别区域截取出来。再将截取出来的部分传入数字串识别模型进行计算。


金融票据固定位置通常会填写固定内容. 因此, 我们可以通过对于某一类的票据设定固定的截取位置就能对这一类票据进行处理. 经过大量测试, 鲁棒性较强.


经过截取, 图片大部分的信息都可以舍弃, 因此可以获得很高的运行效率. 测试图片 hk_check.jpg(6.61MB)截取后只剩下两个 0.1MB 左右的图片. 节省了 96.974% 的空间. 将这两个 0.1MB 左右图片输入第二部分的函数, 大大提升了运行速度.


  • D. 第四部分 – 交互性 GUI 设计

image.png

经过以上三个步骤已经能对于金融票据的图片进行识别了. 但是, 这样的程序不具备交互性和可视化程度, 不能让用户简单容易的使用. 因此, 我们设计了项目的第四部分, 交互性 GUI 设计.


我们选用了 Tkinter 作为 GUI 设计的工具. 经过了几天的学习和设计, 我们做出了具备初步交互性要求的 GUI.


GUI 首先通过”浏览文件”按钮选择扫描获得的金融票据图片, 就能够把金融票据的图片和路径信息显示在屏幕上. 同时通过程序提取出金融票据中的日期, 金额等信息, 并将这些信息显示在图片的下方. 并且, 程序还设置了帮助按键,使用者通过帮助按钮获得帮助.


完整代码:


https://download.csdn.net/download/qq_38735017/87383433


相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
141 55
|
20天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
110 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
24天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
62 3
图卷积网络入门:数学基础与架构设计
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
9天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17
|
20天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
21天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
43 10
|
22天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
46 10
|
22天前
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。