银行卡流水翻译模板 Python+OpenCV+pytesseract 识别 银行卡号
日期:2023-03-11 12:39:36 / 人气: 534 / 发布者:成都翻译公司
OpenCV实现我们的模板匹配算法,以自动识别信用卡数字。8)将信用卡号和信用卡类型输出到我们的终端,并将输出图像显示在我们的屏幕上。现在,你已经完成了OCR识别信用卡了,是不是很激动。具体来说,我们应用了我们的模板匹配OCR方法来识别信用卡的类型以及16个信用卡数字。在评估我们的信用卡OCR系统后,我们发现它是100%准确的,只要发卡信用卡公司使用OCR-A字体的数字。首先给大家介绍一下什么是OCR-A字体:
虽然现代 OCR 系统不需要特殊字体(如 OCR-A),但它们仍然广泛用于身份证、报告和信用卡。
具体教程如下:
1. OCR通过模板匹配与OpenCV结合
在本节中,我们将使用 Python + OpenCV 来实现我们的模板匹配算法来自动识别信用卡号。
为了实现这一点,我们需要应用一些图像处理操作,包括阈值化、计算梯度幅度表示、形态学操作和轮廓提取。
由于应用了许多图像处理操作来帮助我们检测和提取信用卡号,因此当输入图像经过我们的图像处理过程时,我已经包含了输入图像的大量中间截图。
首先打开一个新文件,命名为:ocr_template_match.py,插入如下代码:
要安装/升级 imutils,只需使用 pip:
$pipinstall--upgradeimutils
现在我们已经安装并导入了包,我们可以解析我们的命令行参数:
两个必需的命令行参数是:
-Image:图像的路径是 OCR 的。
-参考:参考OCR-A图像的路径。该图像包含 OCR-A 字体中的数字 0-9,允许我们稍后在管道中执行模板匹配。
接下来我们定义信用卡的类型:
我们通过加载参考 OCR-A 图像来启动我们的图像处理管道:
图 4 显示了这些步骤的结果。
现在我们在 OCR-A 字体图像上找到轮廓:
现在,我们应该循环遍历轮廓,提取 ROI 并将其与相应的数字相关联:
至此,我们已经完成了从参考图像中提取数字并将它们与相应的数字名称相关联的工作。
我们的下一个目标是隔离输入图像中的 16 位信用卡号。我们需要先找到并隔离数字,然后才能启动模板匹配来识别每个数字。这些图像处理步骤非常有趣且富有洞察力。
我们继续初始化几个构造核函数的结构:
现在让我们准备要进行 OCR 的图像:
让我们看看我们的输入图像:
然后我们调整大小和灰度操作:
现在我们的图像是灰色的,大小相同,让我们进行形态学操作:
通过顶帽操作,可以在下图的结果图中看到暗背景下的亮区(即信用卡号)。
给定我们的高帽图像,让我们计算沿 x 方向的梯度:
结果如下图所示:
让我们继续改进信用卡数字查找算法:
这些步骤的结果如下:
接下来,我们找到轮廓并初始化数字分组位置列表。
现在让我们循环遍历轮廓,同时根据每个轮廓的纵横比进行过滤,这样我们就可以从信用卡的其他不相关区域修剪数字组的位置:
下图显示了我们找到的分组——为了演示目的,我让 OpenCV 在每个分组周围画一个边框:
接下来银行卡流水翻译模板,我们将从左到右对组进行排序并初始化信用卡数字列表:
现在我们知道了每个四位数的位置,让我们循环遍历四个已排序的组并确定其中的数字。
这个循环很长,分为三个代码块——这是第一个块:
下面显示了一组已提取的组:
让我们使用嵌套循环来继续循环以进行模板匹配和相似度得分提取:
*后,我们在每组周围绘制一个矩形,并以红色文本查看图像上的信用卡号:
为了理解脚本的运行方式,我们将结果输出到终端并在屏幕上显示我们的图像。
花点时间祝贺你——你做到了。要重写(在较高级别),此脚本:
1)在字典中存储信用卡类型。
2)获取参考图像并提取数字。
3)在字典中存储号码模板。
4) 四个信用卡号码组本地化,每个号码组为四位(共16位)。
5) 提取要匹配的数字。
6) 对每个数字进行模板匹配,将每个单独的ROI与每个数字模板0-9进行比较,并存储每次匹配尝试的分数。
7) 为每个候选人的号码找到*高分,并构建一个名为 output 的列表,其中包含信用卡号码。
8) 将信用卡号和信用卡类型输出到我们的终端,并在我们的屏幕上显示输出图像。
现在是时候查看脚本运行并检查我们的结果了。
2.信用卡OCR系统显示结果
现在我们已经实现了我们的信用卡 OCR 系统,让我们来看看。(源码在下方原链接,直接进入“下载”模块填写邮箱即可获取)
我们显然不能使用真实的信用卡号,所以我收集了一些使用 Google 的信用卡示例。这些信用卡显然是假的,仅用于演示目的。
但是,您可以在此博客中应用相同的技术来识别实际信用卡上的数字。
要查看我们的信用卡 OCR 系统的运行情况,请打开一个终端并执行以下命令:
$pythonocr_template_match.py--referenceocr_a_reference.png
--imageimages/credit_card_05.png
我们的第一个结果图像,100% 正确:
请注意,只需检查信用卡号的第一位数字,即可将信用卡正确标记为万事达卡。
现在你已经完成了信用卡的OCR识别,你是不是很兴奋?
*后,让我们总结一下:
在本教程中,我们学习了如何使用 OpenCV 和 Python 通过模板匹配来执行光学字符识别 (OCR)。
具体来说,我们应用我们的模板匹配 OCR 方法来识别信用卡类型和 16 个信用卡号。
为了实现这一点,我们将图像处理流程分为四个步骤:
1) 通过形态学操作、阈值和轮廓提取等多种图像处理技术,检测信用卡上的四组数字。
2) 从四组中提取每一个数字,得到需要分类的16位数字。
3)通过比较模板匹配和OCR-A字体来获得我们的号码分类,模板匹配被应用于每个号码。
4)查看信用卡卡号第一位确定发卡公司。
在评估我们的信用卡 OCR 系统后,我们发现它是 100% 准确的银行卡流水翻译模板,只要发卡公司使用 OCR-A 字体编号即可。
要扩展此应用程序,您需要在野外收集信用卡的真实图像,并可能通过标准特征提取或训练或卷积神经网络训练机器学习模型,以进一步提高系统的准确性。
附上原文链接:
原作者链接:
相关阅读Relate
热门文章 Recent
- 美国州务卿认证书翻译模板 美国公司给中国公司的授权书是英文的中文译文一致性公证认证如何办2023-03-11
- 车证翻译件模板 驾照翻译件模板图片2023-03-11
- 翻译人员的个人简历模板 个人工作简历蓝色模板2023-03-11
- 酒店指南翻译模板 阿普尔顿Red Lion Hotel Paper Valley2023-03-11
- 护士执业证书翻译模板 护士用ppt模板2023-03-11
- 南非驾驶证翻译模板 中国驾照在雷朋堤尼能用吗2023-03-11
- 翻译专业资格水平考试报名表模板 每年各种职业资格考试报名时间及考试时间表2023-03-11
- 项目翻译合同模板下载 翻译服务合同补充协议2023-03-11
- 保密协议英文模板及翻译 翻译保密合同通用样式2023-03-11
- 翻译人员聘用合同模板 企业聘用合同范本(Word版) 6页2023-03-11