基于卷积神经网络识别金融票据中的文字信息设计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


相关文章
|
8天前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
31 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
15天前
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
158 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
6天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
44 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
13天前
|
机器学习/深度学习 编解码 自动驾驶
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
40 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
13天前
|
机器学习/深度学习 存储
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
38 15
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
2月前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
208 80
|
8天前
|
机器学习/深度学习 存储
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
30 0
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
2月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
220 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2月前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
2月前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。

热门文章

最新文章