admin 管理员组

文章数量: 1086019


2024年6月1日发(作者:为什么xml文件打开是乱码)

计算机应用

信息技术

信息化

基于深度学习的银行卡号识别系统

姚 妮

*

刘传博 高政源

YAO Ni LIU Zhuan-bo GAO Zheng-yuan

许多移动支付场景需要绑定银行卡号,手动输入绑定的方式,速度很慢、

摘 要

随着移动支付技术的快速发展,

易出错。本文设计实现了一个基于深度学习的银行卡号识别系统,首先将银行卡卡身提取,并通过透视

变换对银行卡进行倾斜校正以达到更好的检测效果;之后通过形态学方法进行一系列预处理,通过像素

水平分布直方图获得卡号区域;最后,通过基于深度学习的Advanced East文本检测模型对银行卡号进

行检测,并通过CRNN+CTC实现了对不定长的银行卡号进行识别,优雅简洁地直接实现了端到端的银

行卡号文本识别。本文提出的银行卡号识别方法,能够实现对不同类型银行卡的自动识别,且具有较高

的识别率和准确率。

关键词

深度学习;银行卡;卡号识别;倾斜校正

doi:10.3969/.1672-9528.2020.10.031

0 引言

随着移动互联网的迅速发展,各大保险、银行、电商

及移动支付技术越来越成熟,越来越多的人已经养成了利用

互联网进行购物的习惯,网络购物意味着需要在线支付,各

种移动支付场景都需要绑定银行卡。上述操作,在手动输入

16-19 位的银行卡卡号过程中,一般存在耗时并且需要反复

核对输入卡号的情况,容易出现错误,同时用户体验较差

[1]

为此,国内领先的移动支付平台支付宝钱包首先支持扫描银

行卡自动识别银行卡号,之后国内最大互联网公司之一腾讯

也在自家支付平台中添加了自动识别银行卡号功能,通过专

业创新的服务大幅提升了用户体验,均得到了众多用户的认

可。银行卡号的精确识别在第三方支付业务中有着广泛的应

用场景,支付宝银行卡识别与微信支付银行卡识别的成功应

用,也使得越来越多的其他行业的用户也想让自己的业务系

统可以自动识别银行卡号,既方便开展业务,又能提升用户

体验。

银行卡号的识别是 自然场景文本识别中的一种,但是由

于数据样本的复杂性、数据集的缺乏和信息的保密性,银行

卡号的识别仍然是一项艰巨的任务。在场景图像中,文本可

以是不同的语言、颜色、字体、大小、方向和形状,对于银

行卡号识别而言,不可预测的背景很容易导致混淆和错误的

识别。而深度学习技术的鲁棒性在现实应用中已成为一个广

泛的热点,它能较好地满足复杂场景文本的识别要求,因此

基于深度学习的银行卡卡号的自动识别研究在银行卡业务的

实施中具有重要意义。

1 相关理论

1.1 深度学习识别 技术

自然场景文本识别是一种通用的文本识别技术,近年来

已成为计算机领域的研究热点,与传统的文档文本识别相比,

自然场景中的文本识别,一般图像背景都比较复杂,布局和

凌乱的字符可能会出现失真,所以传统的识别无法满足自然

场景文本检测的要求。深度学习是机器学习研究的一个新领

域,通过建立类似于人脑的层次模型结构,逐步将输入数据

提取到高层,从而可以很好地建立从底层信号到高层语义的

映射关系

[2]

。近年来,深度学习技术发展迅速,在OCR领域

处于领先地位。基于深度学习的OCR技术在文本识别的准确

性和效率上都有了显著的提高,在图像识别领域取得了不错

的成绩。因此基于深度学习的文字识别具有很大优势,目前

主流的深度学习框架Tensor Flow、Cafffe、 Theano等。

TensorFlow 是一款开源的深度学习框架,由谷歌开发,灵活

度高、功能强大,可以运用在如CPU、GPU以及其它移动设备

的多种 平台上,支持当前流行的深度学习模型

[3]

1.2 自然场景文本识别过程

典型的自然场景文本处理主要包括两个部分:文本检测

定位和文本识别

[4]

。文本检测的主要功能是从图像中找到文

本区域,并将文本区域与原始图像分开。文本识别的主要功

能是识别分离图像上的文本。文本检测和识别,通常分为以

下步骤:

* 郑州轻工业大学计算机与通信工程学院 河南郑州 450000

[基金项目] 河南省2020年科技发展计划项目(项目号:

2);郑州轻工业大学2019年众创空间孵化项

目(项目号:2019ZCKJ228)

100

2020年第10期

(1)预处理:通过检测步骤获得的文本区域通常受某

些因素的影响,例如噪声。因此,有必要在文本识别之前对

图像进行预处理。预处理通常包括以下步骤:去噪,图像增

强和缩放。

(2)特征提取:直接在像素级别识别单词通常很难获

得理想的结果,因此有必要定义一组代表图像的特征。一些

常用的特征包括边缘特征,笔画特征和结构特征等。

(3)文本识别:文本识别任务可以视为分类任务,每

个字符代表 一个类别。识别器将提取的特征作为输入,并输

出相应的字符或单词。常见的识别器包括模板匹配,支持向

量机,神经网络等。

2 卡号检测定位

2.1 卡身前后景信息区分

由于彩色图像在处理中需要大的空间并且增加了计算

量, 因此在对图像执行各种处理之前, 彩色图像通常被转

换为灰度图像

[5]

。本文对测试银行卡进行灰度化后效果如图

1所示。

图 1 测试银行卡灰度图

同时考虑到图像的获取会存在许多冗余的干扰信息,这

些噪声会对银行卡的检测造成很大的影响

[6]

。中值滤波器是

非线性数字滤波技术,经常用于从图像中去除噪声

[7]

。本文

采用中值滤波去除噪声。为了获取卡身的边缘信息,并同时

保证噪声抑制和检测的准确性、完整性

[8]

。本系统采用具有

抑制噪声性质的Sobel算子获取检测到的图像边缘。为了区

分边缘检测后图像的前后景信息,系统对图像进行了二值化

操作,在银行卡定位图像二值化操作中,采用了自适应阈值

进行二值化,其根据像素附近像素值的分布来确定该像素位

置上的阈值,可以取得更好的二值化效果。经过上述滤波及

边缘检测后测试银行卡图像如图2所示。

图 2 自适应二值化图

信息技术

信息化

计算机应用

2.2 卡身的倾斜校正

通过二值化后的银行卡图像我们可以看到一个很明显的

银行卡轮廓,另外虽然在前面我们对测试银行卡图像进行了

滤波,但是仍具有很多噪点,在轮廓提取过程中这些噪点也

可能会被提取出来,因此一副二值化图像我们可能提取到很

多轮廓,通过对轮廓进行筛选,筛选出最符合条件的轮廓如

图3所示。

图 3 银行卡轮廓图

根据 图3可以对卡身进行定位,定位效果如图4所示。

图 4 银行卡定位图

从图3的银行卡轮廓图中我们可以很明显地找到一个图

片倾斜角度,以这个角度对图像进行旋转校正后卡片仍会出

现一定的扭曲,扭曲的银行卡图像将大大影响我们的识别精

确度。因此我们需要对扭曲的图像进行透视变换。透视变换

后银行卡图像如图5所示。

图 5 银行卡透视变换图

2.3 形态学卡号检测定位

银行卡号的检测定位系统首先对矫正过的银行卡卡身进

行灰度化处理,减小需要占用的空间及计算量,然后对银行

卡图像进行闭运算,它可以在不明显改变银行卡图像面积的

情况下平滑图像边界的作用,使后面的操作更容易对卡号进

行定位。之后通过浮雕效果将图像的变化部分突出地表现出

来,而相通的颜色部分则被淡化掉,使图像出现纵深感,浮

雕效果可以更加明显的突出图像的边缘部分,进行浮雕效果

后的银行卡图像如图6所示。

2020年第10期

101

计算机应用

信息技术

信息化

图 6 浮雕图

通过继续对图片进行相关图形学变化,并经过Sobel边

缘检测,自适应二值化以及膨胀 模糊后的图像最后呈现如图

7所示。

图 7 自适应二值化后膨胀模糊图

由于银行卡卡号所在区域位于图像中间位置靠下部分,

且水平方向的白色目标区域较大,因此通过对该图像水平方

向的黑色像素统计即可获取其相应水平区域,统计结果如图

8所示。

图 8 水平黑色像素统计图

通过图8发现,黑色像素最少的区域就是所要找的银行

卡卡号区域,再通过垂直黑色像素统计进一步缩小目标区域,

最终定位结果如图9所示。

图 9 水平黑色像素统计图

2.4 深度学习卡号检测定位

系统同样提供了一种端到端的深度学习卡号定位方案,

由于银行卡卡号是由一系列的数字文本构成,因此银行卡卡

102

2020年第10期

号检测可以看成是自然场景下的文本检测。典型的文本检测

模型一般是会分多个阶段进行,而East文本检测模型简化

了中间的过程步骤,直接实现端到端文本检测,优雅简洁,

是一种快速高效的文本检测模型。本文在对East优化后的

Advanced EAST基础上实现对银行卡号的检测定位,其结构

如图10所示。Advanced EAST以VGG16作为网络结构的骨干,

由特征提取层、特征合并层、输出层三部分构成。

图10 Advanced EAST网络结构

2.4.1 特征提取层

基于VGG16(一种目标检测的模型)作为网络结构的骨干,

分别从block1,block2,block3,block4的卷积层抽取出

特征图,卷积层的尺寸依次减半,但卷积核的数量依次增倍,

这是一种FPN(金字塔特征网络)的思想。通过这种方式,

可抽取出不同尺度的特征图,以实现对不同尺度文本行的检

测(大的特征图擅长检测小物体,小的特征图擅长 检测大物

体)。

2.4.2 特征合并层

将前面抽取的特征图按一定的规则进行合并,这里的合

并规则采用了U-net方法,规则如下:特征提取层中抽取的

最后一层的特征图(f1)被最先送入up sampling层,将图

像放大1倍接着与前一层的特征图(f2)串起来然后依次作

卷积核大小为1x1,3x3的卷积对f3,f4重复以上过程,而

卷积核的个数逐层递减,依次为128,64,32最后经过32核,

3x3卷积后将结果输出到输出层。

2.4.3 输出层

输出层分别是1位score map, 是否在文本框内;2位

code,是否属于文本框边界像素以及是头还是尾;4位geo,

是边界像素可以预测的2个顶点坐标。所有像素构成了文本

框形状,然后只用边界像素去预测回归顶点坐标。边界像素

定义为黄色和绿色框内部所有像素,是用所有的边界像素预

测值的加权平均来预测头或尾的短边两端的两个顶点。头和

尾部分边界像素分别预测2个顶点,最后得到4个顶点坐标。

当预测结束后,需要对文本线进行构造,为了提高构造

的速度,作者提出了一种局部感知NMS算法,原来的NMS算

法会导致预测的文本线偏小,没法准确地框住完整的文本。

因此,Advanced EAST模型对其进行了改进,只对文本线的

边界点进行预测,然后只对边界点的坐标进行加权平均,这

样就可以加快模型的收敛速度和精度,不过这种方法虽然提

高了对文本检测的精度,但是在构建文本线时确有问题,当

对边界点的预测不准确时,比如漏了左侧边界或者右侧边界

时,就会导致整个文本线都构造失败,因此,反而使得模型

的预测效果更差。

因此,本文对代码中的文本线构造方法进行修改,通过

检测到的这些文本像素点的分布,用一个矩形框把它们直接

框起来,那这样计算漏掉了某一测或全部的边界点,文本线

也可以构建成功。

3 卡号识别

3.1 文本识别网络

网络识别使用的是CRNN文本识别网络,该算法可以不

经过字符分割,直接对不定长的文本序列进行端到端识别,

将文本识别转化为依赖时序的序列识别问题。

3.2 模型设计

CRNN文本识别网络主要由卷积层、循环层、转录层组成,

CNN(卷积层)本文具体采用的是VGG模型,而RNN(循环层)

本文采用的是LSTM网络模型。

本模型的inputs(输入图像)为单通道的灰度图像,

height(高度)为32,width(宽度)为256,channel(深度)

为1。经过一个卷积核数量为64的卷积层,图像的shape变

为32*256*64,通过BatchNormalization可以对模型进行加

速收敛,减少训练时间,通过relu激活函数进行激活,最

后经过最大池化层使图像的shape变为16*128*64。本文CNN

模型共5个最大池化层,通常VGG模型为每层卷积使得卷积

核的数量依次翻倍,但是卷积层的大小依次减半,但是最后

三个最大池化层的尺寸由 2x2 改为2x1,也就是图像从输入

到输出减半了五次,而宽度则只减半了两次,这是因为银行

卡卡号图像都是高度较小而宽度较长,所以其特征图也是这

种高度较小宽度较长的长方形状,使用2x1的最大池化层可

以尽量保证银行卡图像的宽度信息,更适合银行卡号数字识

别。所以本模型卷积层的输出尺寸为1*64*512,即卷积最后

得到512个feature map,每个feature map的高度为1,宽

度为64。

RNN的输入是特征向量序列,因此本文把CNN阶段输出

的特征图转换为64*512的特征向量序列,即将特征图转换

为64个特征向量,每个特征向量长度为512,供RNN部分训

练。RNN部分采用的是双向LSTM,每层LSTM有256个单元,

在 LSTM 中每个时间步会传入一个特征向量进行分类,这里

一共有64个特征向量。CNN卷积输出的每个特征向量等于原

始图像中的一个小矩形区域。RNN的目标是预测这一小块矩

形区域为哪个银行卡号数字,即根据输入的特征向量进行预

信息技术

信息化

计算机应用

测,得到所有特征概率分布。这是一个长度为数字类别数的

向量,作为CTC层的输入。

由RNN部分的预测可知,其预测的银行卡号数字会产生

较大的冗余,例如同一个数字被多次预测,使用CTC损失函

数可对结果中间隔字符、重复字符进行去除,最终得到完整

的银行卡号。

3.3 实验分析

模型训练好以后对未经过数据增强的1000张图片进行

预测,准确率(每张图片每个数字都预测成功为准确)达到

了0.905,对经过数据增强的8000张图片进行预测,其准确

率仅达到0.723。由于未经过数据增强的图片,部分数据模

糊导致的识别正确率有所下降,经过数据增强的图片,由于

对图片增加了高斯噪声,对图像进行模糊处理,颜色变换等,

使得识别难度大大增加,识别正确率也不高。

4 总结

系统GUI设计包含6个功能,点击加载按钮让用户从电

脑里面选择一张图片以待识别,点击卡身定位,系统自动定

位卡身,点击形态学定位按钮,系统会使用形态学方法对卡

号进行定位,点击深度学习定位按钮,点击透视变换按钮,

选择透视变换的四个点,系统对倾斜扭曲的图片进行透视变

换,供后续定位识别。点击识别按钮,系统将自动识别出银

行卡号。

参考文献:

[1] 赵慧敏. 基于深度学习的银行卡识别系统设计开发[D]. 北

京:华北电力大学, 2019.

[2] 余凯, 贾磊, 陈雨强, 等. 深度学习的昨天、今天和明天[J].

计算机研究与发展, 2013, 50(9): 1799-1804.

[3] 靳涛, 张永爱. Tensor Flow 平台下基于深度学习的数字识

别[J]. 信息技术与网络完全, 2018, 37(4):74-78.

[4] 朱成军, 李超, 熊璋. 视频文本检测和识别技术研究[J]. 计

算机工程, 2007(10): 218-219.

[5] 刘振飞. 基于OpenCV的银行卡号识别系统[J]. 电子技术

与软件工程, 2019(11): 63.

[6] 杨昊. 图像去噪中几种优化算法的相关研究[D]. 成都:电

子科技大学, 2016.

[7] 燕红文, 邓雪峰. 中值滤波在数字图像去噪中的应用[J].

计算机时代, 2020(2):47-49.

[8] 陈竹安, 胡志峰, 杨希鹏. 基于改进的soble算子和zernike

矩遥感图像边缘检测[J]. 湖北民族学院学报:自然科学版,

2017, 35(2): 229-234.

【作者简介】

姚妮(1978—),女,湖南桑植人,硕士,实验师,研

究方向:智能医疗、信息处理技术。

(收稿日期:2020-09-06 修回日期:2020-09-29)

2020年第10期

103


本文标签: 文本 识别 图像 进行 检测