基于PaddleOCR银行卡识别实现(三)

前言

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

        基于PaddleOCR银行卡识别实现(二)

        前两篇文章讲了检测模型和识别模型的实现,这一篇文章姗姗来迟,将讲解下两个模型的串联应用和PaddleOCR的源码精简,下面我们来看看如何实现,文章最后有全源码下载。

银行卡卡号识别源码分析

1、添加预测代码

新建deploy目录,加入预测py文件

核心代码如下:

    def predict(self, image=None, path="", **kwargs):
        if image is not None:
            predicted_data = image
        elif path != "":
            predicted_data = self.read_image(path)
        else:
            raise TypeError("The input data is inconsistent with expectations.")

        dt_boxes, rec_res, _ = self.text_sys(predicted_data)

        dt_num = len(dt_boxes)

        if dt_num > 0:
            rec_res_final = dict()
            text, score = rec_res[0]
            rec_res_final.update({
                'bank_card_number': text,
                'score': float(score),
                'location': dt_boxes[0].astype(np.int).tolist()
            })

            url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=" + rec_res_final[
                "bank_card_number"] + "&cardBinCheck=true"
            r = requests.get(url=url)
            res = r.json()
            if res["validated"]:
                card_types = {
                    "DC": "借记卡",
                    "CC": "信用卡",
                    "SCC": "准贷记卡",
                    "PC": "预付费卡"
                }
                if res["cardType"] in card_types:
                    card_type = card_types[res["cardType"]]
                else:
                    card_type = "未知卡类型【" + res["cardType"] + "】"

                if res["bank"] in self.bank:
                    bank_name = self.bank[res["bank"]]
                else:
                    bank_name = "未知银行"

                rec_res_final.update({
                    "card_type": card_type,
                    "bank_name": bank_name
                })
            else:
                rec_res_final.update({
                    "card_type": "未知卡类型",
                    "bank_name": "未知银行"
                })

            return rec_res_final
        else:
            return ""
2、模型存放位置

det为检测模型,rec为识别模型

3、参数说明

目前的识别模型是在PP-OCRv2的基础上训练出来的,如何是v3或v4训练的,需要将这里的re_image_shape改成“3,48,320”

4、预测

ocr_bank.py文件中添加main方法:

if __name__ == '__main__':
    args = {
        "use_gpu": False,
        "enable_mkldnn": True
    }
    ocr_bank = OCRBank(args=args)
    print(ocr_bank.predict(None, "1.jpg"))

python .\deploy\ocr_bank.py

结果:

[2023/11/29 15:31:50] ppocr DEBUG: dt_boxes num : 1, elapsed : 0.5060036182403564
[2023/11/29 15:31:50] ppocr DEBUG: rec_res num  : 1, elapsed : 0.10000085830688477
{'bank_card_number': '622991116400066409', 'score': 0.9891971945762634, 'location': [[164, 368], [789, 374], [789, 424], [164, 417]], 'card_type': '借记卡', 'bank_name': '河南省农村信用社'}
5、命令行检测模型预测

python tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./inference/det/" --image_dir="1.jpg" --use_gpu=False --det_db_unclip_ratio=2.5

完毕

        以上就是银行卡识别的整个流程,精简后可直观的进行部署,这里只是做了第一步精简,在infer中和后处理中,还有部分代码可以进一步精简。

精简后源码下载:

基于PaddleOCR银行卡卡号识别源码

  • 40
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: YOLOv3是一种高效的目标检测算法,通过基于深度卷积神经网络的技术,可以在图像或视频中对目标进行快速准确地识别。YOLOv3银行卡识别就是将这一算法应用到银行卡号的识别任务中。 银行卡号是银行卡的重要信息,而银行卡号的识别在银行、ATM、商超等场景中都非常重要。使用YOLOv3银行卡识别技术,可以自动检测卡号所在区域以及卡号的位置,实现对卡号的快速准确识别,提高银行卡交易的效率和安全性。 具体的实现过程是将训练好的YOLOv3模型应用到银行卡图片中,通过网络结构的输出,可以得到银行卡号所在的边框坐标和分类结果。然后,将边框坐标和分类结果结合起来,输出最终的银行卡识别结果。 虽然YOLOv3银行卡识别技术已经具备一定的准确率和稳定性,但在实际应用中,也需要考虑到一些因素,例如光线、角度、图像场景等因素对识别效果的影响。因此,为了提高系统的实用性和稳定性,也需要针对具体应用场景进行优化和调整。 ### 回答2: yolov3是一种用于目标检测的神经网络模型,在银行卡识别方面具有较高的准确率和效率。该模型可以自动识别图像中的银行卡,并定位出银行卡号码的位置。通过对图像进行预处理和训练,yolov3可以识别各种形状和大小的银行卡,并精准地检测出银行卡上的号码。 在使用yolov3进行银行卡识别时,需要先收集一定量的银行卡图片来进行训练和测试。在训练过程中,需要对图片进行标注,并对模型进行调参以提升识别准确率。在应用场景中,可以将训练好的模型嵌入到移动端或者其他设备中,以实现快速、准确的银行卡号码识别。 总的来说,yolov3作为一种先进的目标检测模型,在银行卡号码识别方面具有很高的应用价值,可以广泛应用于银行、商超等场景中,提升传统人工识别效率,提高客户服务效果。 ### 回答3: Yolov3银行卡识别是一种基于深度学习技术的自动识别方法,可以高效地实现银行卡号的识别和提取。Yolov3是一种卷积神经网络模型,它可以对输入的图像进行检测和分类,并输出每个物体的位置和类别信息。因此,使用Yolov3模型对银行卡图片进行识别,可以定位银行卡上的数字字符,并准确地提取出银行卡号。 实现银行卡识别的关键是训练模型,这需要大量的数据集和模型优化。首先,需要收集大量的银行卡图片,并手动标注银行卡号的位置和值。然后,将这些数据集输入到Yolov3模型中进行训练,通过迭代优化,可以不断提高模型的准确率。 Yolov3银行卡识别不仅可以在银行、ATM等金融领域应用,在其他领域也具有广泛的应用,如自助售货机、智能门禁等。它不仅能够节省人力成本,提高工作效率,在某些场景下也可以增加识别的准确性,从而带来更好的体验和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值