前言

上一章讲了检测模型的实现,这一章将一下识别模型的实现,实现原理很简单,PaddleOCR提供的通用字符集有6623个,但是银行卡号就不需要这么多,只需要0~9就可以了,下面我们来看看如何实现,以及获取卡号后,如何获取银行卡名称和银行卡类型,文章最后有模型下载地址。

一、银行卡识别模型实现

1、创建字符集

在ppocr/utils/目录中创建一份只有数字的字符集ppocr_keys_bank.txt,0~9。

2、导入数据集

目前收集了3000张左右的真实银行卡卡号切图和上万张合成卡号切图

数据集部分切图:

3、创建配置文件

复制一份yml文件

文件内容如下:

Global:use_gpu: trueepoch_num: 500log_smooth_window: 20print_batch_step: 10save_model_dir: ./output/rec_chinese_lite_v2.0_banksave_epoch_step: 50# evaluation is run every 5000 iterations after the 4000th iteration
#  eval_batch_step: [0, 2000]eval_batch_step: 100cal_metric_during_train: True
#  pretrained_model: ./pretrained_models/ch_ppocr_mobile_v2.0_rec_pre/best_accuracypretrained_model:checkpoints:save_inference_dir: ./inference/rec_chinese_lite_v2.0_bankuse_visualdl: Falseinfer_img: doc/imgs_words/ch/word_1.jpg# for data or label processcharacter_dict_path: ppocr/utils/ppocr_keys_bank.txtcharacter_type: chmax_text_length: 25infer_mode: Falseuse_space_char: Falsesave_res_path: ./output/rec/predicts_chinese_lite_v2.0.txtOptimizer:name: Adambeta1: 0.9beta2: 0.999lr:name: Cosinelearning_rate: 0.001regularizer:name: 'L2'factor: 0.00001Architecture:model_type: recalgorithm: CRNNTransform:Backbone:name: MobileNetV3scale: 0.5model_name: smallsmall_stride: [1, 2, 2, 2]Neck:name: SequenceEncoderencoder_type: rnnhidden_size: 48Head:name: CTCHeadfc_decay: 0.00001Loss:name: CTCLossPostProcess:name: CTCLabelDecodeMetric:name: RecMetricmain_indicator: accTrain:dataset:name: SimpleDataSetdata_dir: ./train_data/label_file_list:- "./train_data/bank/real_rec_train.txt"ratio_list: [1.0]transforms:- DecodeImage: # load imageimg_mode: BGRchannel_first: False- RecAug: - CTCLabelEncode: # Class handling label- RecResizeImg:image_shape: [3, 32, 320]- KeepKeys:keep_keys: ['image', 'label', 'length'] # dataloader will return list in this orderloader:shuffle: Truebatch_size_per_card: 32drop_last: Truenum_workers: 8Eval:dataset:name: SimpleDataSetdata_dir: ./train_data/label_file_list:- "./train_data/bank/real_rec_test.txt"ratio_list: [1.0]transforms:- DecodeImage: # load imageimg_mode: BGRchannel_first: False- CTCLabelEncode: # Class handling label- RecResizeImg:image_shape: [3, 32, 320]- KeepKeys:keep_keys: ['image', 'label', 'length'] # dataloader will return list in this orderloader:shuffle: Falsedrop_last: Falsebatch_size_per_card: 32num_workers: 8

4、执行命令进行GPU训练

python -m paddle.distributed.launch --gpus 0 tools/train.py -o Global.use_visualdl=True -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0_bank.yml

注意显存问题,需要大于4G的显存,2G显存会溢出

5、显示运行图

visualdl --logdir=output/rec_chinese_lite_v2.0_bank/vdl --port 8081

识别模型效果最高能到达:acc:0.97

6、导出模型

python tools/export_model.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0_bank.yml-o Global.pretrained_model="./output/rec_chinese_lite_v2.0_bank/best_accuracy" Global.save
_inference_dir="./output/rec_chinese_lite_v2.0_bank/"

检测模型和识别模型串联验证:

python tools/infer/predict_system.py --det_algorithm="DB" --det_model_dir="./inference/ch_db_mv3_bank/" --rec_model_dir=./inference/rec_chinese_lite_v2.0_bank/ --image_dir="C:\Users\YY007\Desktop\bank\1.jpg" --rec_char_dict_path="./ppocr/utils/ppocr_keys_bank.txt" --use_gpu=True --use_angle_cls=False --det_db_unclip_ratio=2.5

7、验证模型

8、获取银行卡类型和名称

获取银行卡名称和类型,可以通过这个链接来进行获取:

"https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=" + rec_res_final["bank_card_number"] + "&cardBinCheck=true"

获取的结果:

{
  "cardType": "DC",
  "bank": "HNRCU",
  "key": "622991116400066409",
  "messages": [],
  "validated": true,
  "stat": "ok"
}

银行卡类型对应的名称:

 {"DC": "借记卡","CC": "信用卡","SCC": "准贷记卡","PC": "预付费卡"
}

银行卡编号对应的银行卡名称文件下载地址:

https://download.csdn.net/download/YY007H/32526428

山月记分享

小结

到这一步,银行卡识别已经完成,通过PaddleOCR来完成银行卡识别功能,只需要改动很少的代码就可以完成识别功能,具体改动参考“基于PaddleOCR银行卡识别实现(一)”文本检测部分,大家可通过提升数据集数量或者使用别的分割网络来试试看效果,下方提供的模型开箱就可以使用,检测效果(0.983)、识别效果(0.975),欢迎大家下载。

3000多张真实银行卡卡号切图和上万张合成卡号切图下载地址:

https://download.csdn.net/download/YY007H/32532675

山月记分享

检测和识别模型下载地址:

https://download.csdn.net/download/YY007H/32523981

山月记分享

基于PaddleOCR银行卡识别实现(二)相关推荐

  1. 基于PaddleOCR银行卡识别实现(一)

    目录 前言 一.PaddleOCR环境搭建 二.银行卡检测模型实现 1.导入数据集 2.创建配置文件 3.执行命令进行GPU训练 4.显示运行图 5.验证模型 6.导出模型 解决训练模型与导出模型结果 ...

  2. 生成常用验证码识别,基于PaddleOCR训练识别

    ★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 生成常用验证码识别,基于PaddleOCR训练识别 零.背景 在一些传统网站或者App中登录需要验 ...

  3. 二自由度云台扫描算法_基于HuskyLens人脸识别的二自由度自动跟踪云台

    "看什么看?" "就盯着你看!" --基于HuskyLens人脸识别的二自由度自动跟踪云台 试用群里的老师们先后放出了各色利用二哈人脸识别功能的案例,实验对象从 ...

  4. 基于PaddleOCR开发Auto.js Pro文字识别插件

    目录 目的 准备工作 插件开发 1.项目结构对比 2.插件SDK集成 3.调整assets资源 4.删除无用的Activity文件 5.修改AndroidManifest.xml 6.修改Predic ...

  5. Paddle入门实战系列(二)基于PaddleOCR的体检报告识别

    ✨写在前面:强烈推荐给大家一个优秀的人工智能学习网站,内容包括人工智能基础.机器学习.深度学习神经网络等,详细介绍各部分概念及实战教程,通俗易懂,非常适合人工智能领域初学者及研究者学习.➡️点击跳转到 ...

  6. 基于PaddleOCR的集装箱箱号检测识别

    基于PaddleOCR的集装箱箱号检测识别 项目背景 国际航运咨询分析机构 Alphaliner 在今年 3 月公布的一组数据,2021 年集装箱吞吐量排名前 30 的榜单中,上海港以 4702.5 ...

  7. 基于PaddleOCR的多视角集装箱箱号检测识别,实现模型串联推理

    ★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 一.项目介绍 集装箱号是指装运出口货物集装箱的箱号,填写托运单时必填此项.标准箱号构成基本概念:采 ...

  8. 浅析一种基于Android、iOS平台的移动端银行卡识别方法,简化移动支付中卡号绑定过程

    近些年来,我国经济飞速发展,科技实力日益突飞猛进.手机移动端的使用给人们的生活带来了许多便利.日常生活中,移动端支付的方式越来越流行.手机端进行支付往往需要绑定银行卡.目前,在众多需要录入银行卡信息才 ...

  9. 基于机器视觉的Data Matrix二维码识别

    基于机器视觉的Data Matrix二维码识别 二维码识别,这个在视觉应用中占有很重要的比例,各种各样的二维码都有可能需要识别.常见的QR码.Data Matrix码.本方案是识别Data Matri ...

最新文章

  1. 独家 | 手把手教你学习R语言(附资源链接)
  2. 关于C++中数组下标越界不报错的问题
  3. SAP 常用查看库存的T-CODES
  4. 如何在tomcat下应用部署日志_如何在kubernete集群上部署springboot应用
  5. python中文开发环境_Python开发环境配置
  6. 基于函数计算的游戏打包最佳实践
  7. 第二章作业第2题--苏志华
  8. MacOS 安装 Telnet
  9. win创建linux目录,Windows与Linux上的文件创建时间
  10. iBatis in 语句参数传入方法
  11. public/protected/private简介
  12. 开发更安全的asp.net应用程序一
  13. ubuntu16.04没有声音解决方案( 通俗易懂)
  14. 《企业IT架构转型之道》边读边想——共享服务中心的建设原则
  15. Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
  16. Lumion 11学会像真正的专业人士一样渲染
  17. Android上层进入recovery流程
  18. python+selenium打开浏览器-设置浏览器路径和驱动器路径
  19. python绘制的Svg图打开一片空白
  20. web前端期末大作业 魅力广西我的家乡介绍网页制作(HTML+CSS)

热门文章

  1. 特殊符号(一)—反斜杠 ” \ “(旋转光标和倒计时的实现)
  2. 浅析c4编译器--一个优秀的编译器是如何生成的
  3. MySQL千万级数据量优化方案
  4. jenkins插件下载镜像加速
  5. Java中的锁大全(底层源码分析)
  6. 查题公众号搭建详细教程,提供永久免费接口
  7. Linux命令 ps --sort,如何对Linux ps命令输出进行排序
  8. 基于android的美食食谱分享推荐系统app
  9. 前端axios下载excel文件(二进制)的处理方法
  10. Centos7 修改SSH端口,以及修改密码