首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取支票/支票图像中的帐号

如何提取支票/支票图像中的帐号
EN

Stack Overflow用户
提问于 2019-11-15 11:13:38
回答 2查看 4.4K关注 0票数 2

我正在做一个从account number中提取cheque images的任务。我目前的方法可以分为两个步骤。

digits)

  • Perform

  • 本地化帐号数字(使用库(如Tesseract OCR )打印 OCR )

第二步是直截了当,假设我们已经正确地本地化了帐号数字。

我试图使用OpenCV等高线方法和MSER (最大稳定极值区域)来定位帐号数字,但没有得到有用的结果。很难概括模式,因为

不同的银行支票在template

  • Account号位置上有变化,不固定

我们如何处理这个问题。我需要寻找一些基于deep learning的方法吗?

样本图像

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-25 13:12:57

谢谢大家的建议,最后我训练了一种深度学习对象检测方法来定位帐号,与基于OpenCV的方法相比,它取得了很好的效果。

票数 0
EN

Stack Overflow用户

发布于 2019-11-15 20:15:18

假设帐号有唯一的紫色文本颜色,我们可以使用颜色阈值。其思想是将图像转换为HSV颜色空间,然后定义一个上下颜色范围,并使用cv2.inRange()进行颜色阈值处理。从这里开始,我们用等高线区域进行滤波,以消除小噪声。最后,我们倒置图像,因为我们希望文本是黑色的,背景是白色的。最后一步是高斯模糊图像,然后将其扔到Pytesseract中。结果如下:

结果来自Pytesseract

代码语言:javascript
复制
30002010108841

代码

代码语言:javascript
复制
import numpy as np
import pytesseract
import cv2

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('1.png')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([103,79,60])
upper = np.array([129,255,255])
mask = cv2.inRange(hsv, lower, upper)

cnts = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    if area < 10:
        cv2.drawContours(mask, [c], -1, (0,0,0), -1)

mask = 255 - mask
mask = cv2.GaussianBlur(mask, (3,3), 0)

data = pytesseract.image_to_string(mask, lang='eng',config='--psm 6')
print(data)

cv2.imshow('mask', mask)
cv2.waitKey()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58875863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档