使用Python,OpenCV进行银行支票数字和符号的OCR!

ref = imutils.resize(ref, width=400)

ref = cv2.threshold(ref, 0, 255, cv2.THRESH_BINARY_INV |

cv2.THRESH_OTSU)[1]

从MICR图像查找字符的轮廓线,并从左到右排序轮廓

refCnts = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,

cv2.CHAIN_APPROX_SIMPLE)

注意:OpenCV 2.4、3和4返回的轮廓不同,因此下一行代码来兼容不同版本及返回值

refCnts = imutils.grab_contours(refCnts)

refCnts = contours.sort_contours(refCnts, method=“left-to-right”)[0]

复制一个原始图像

clone = np.dstack([ref.copy()] * 3)

遍历排序过的轮廓

for c in refCnts:

计算边界框,并绘制边界框绿色在图像上

(x, y, w, h) = cv2.boundingRect©

cv2.rectangle(clone, (x, y), (x + w, y + h), (0, 255, 0), 2)

展示应用简单轮廓方法的结果

cv2.imshow(“Simple Method”, clone)

cv2.waitKey(0)

使用更高级的方法:从轮廓列表中提取数字和符号,然后初始化一个字典来匹配字符名称和ROI

(refROIs, refLocs) = extract_digits_and_symbols(ref, refCnts,

minW=10, minH=20)

chars = {}

重新初始化克隆图像以便于绘制轮廓

clone = np.dstack([ref.copy()] * 3)

遍历参考list的名称、区域及位置

for (name, roi, loc) in zip(charNames, refROIs, refLocs):

在输出图像上绘制字符边界框

(xA, yA, xB, yB) = loc

cv2.rectangle(clone, (xA, yA), (xB, yB), (0, 255, 0), 2)

缩放ROI区域为固定大小36*36,然后更新匹配字符名称和ROI图像的字典

roi = cv2.resize(roi, (36, 36))

chars[name] = roi

展示字符ROI到屏幕

cv2.imshow(“Char”, roi)

cv2.waitKey(0)

展示更高级方法提取的效果图

cv2.imshow(“Better Method”, clone)

cv2.waitKey(0)

3.2 银行支票数字和符号OCR

# 银行支票(从MICR字体中提取数字和符号提取)

MICR(Magnetic Ink Character Recognition 磁性墨水字符识别)是一种用于处理文档的金融行业技术。

经常会在对账单和支票的底部发现这种E-13B格式的磁性墨水。

USAGE

python bank_check_ocr2.py --image images/example_check.jpg --reference images/micr_chars.png

import argparse

import cv2

import imutils

import numpy as np # pip install numpy

导入必要的包

from imutils import contours # pip install --upgrade imutils

from skimage.segmentation import clear_border # pip install -U scikit-image

从MICR中提取数字和符号(根据轮廓查找和定位数字和符号)

image: MICR E-13B字体图像(在代码下载中提供)。

charCnts:包含参考图像中字符轮廓的列表

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值