ocr python opencv_如何使用(opencv/python)来实现OCR处

今天我们来介绍一下如何使用(opencv/python)来实现OCR处理银行票据。文末有代码和相关文档下载!

在第一部分中,我们将讨论两个主题:

1.首先,我们将了解MICR E-13B字体,美国,英国,加拿大等国家用于支票上都是使用的这种字体。

2.其次,我们将讨论如何从MICR E-13B参考图像中提取数字和符号。这将使我们能够提取每个字符的ROI,然后将其用于OCR银行支票。

MICR E-13B 字体:

e91c6306f9014107871139bab369edef.png

MICR(磁墨字符识别)是处理文件的金融工业技术。

MICR的E-13B变体包含14个字符:

·数字:数字0-9。

·过境:银行分行分隔。

·金额:交易金额分隔符。

·在我们:客户帐号分隔符。

·dash:数字分隔符(例如路由和帐号之间)。

银行支票字符识别看起来更难:

ocr python opencv_如何使用(opencv/python)来实现OCR处_第1张图片

在银行支票上使用的MICR E-13B字体中,数字有一个轮廓。但是,控制符号对于每个角色具有三个轮廓,使任务稍微更具挑战性。我们不能使用简单的轮廓和边框方法。相反,我们需要设计自己的方法来可靠地提取数字和符号。

用OpenCV提取MICR数字和符号:

创建一个新的文件,命名为bank_check_ocr.py,并插入以下代码:

# import the necessary packagesfrom skimage.segmentation import clear_border

首先我们先导入各种我们需要的包,以确保程序的正确运行

·OpenCV:从此页面选择适合您系统的安装版本。

·scikit-image:这是通过pip安装的,pip install-Uscikit-image

·numpy :通过 pip install numpy。

·imutils:这是可以通过 pip 安装:pip install--upgrade imutils。

接着我们来构建一个从MICR字体中提取字符的函数:

def extract_digits_and_symbols(image, charCnts, minW=5, minH=15):

对于初学者,我们的功能需要4个参数:

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

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

·minW:表示最小字符宽度的可选参数。默认值为5像素宽度。

·minH:最小字符高度。默认值为15像素。

接着我们初始化我们的charCnts列表的迭代器。列表对象本质上是“可迭代的”,意味着__iter__方法是由生成器完成的。

最后初始化空列表以保存我们的rois(感兴趣的区域)和loc(ROI位置)。我们将在函数结尾的一个元组中返回这些列表。

我们开始循环,看一下迭代器的工作原理:

while True:

在我们的函数中,我们开始一个无限循环,我们的退出条件是当我们捕获StopIterator异常时。为了捕获这个异常,我们需要设置try-catch块。对于循环的每次迭代,我们通过调用next(charIter)来获取下一个字符轮廓。从这个函数调用,我们可以提取矩形的(x,y)坐标和宽度/高度。接着我们初始化一个roi,我们将在短时间内存储字符图像。

接下来,我们将检查我们的边框宽度和高度的大小,并采取相应的措施:

if cW

你可能感兴趣的:(ocr,python,opencv)