我进行了广泛的研究,但找不到能够实现我需要的技术组合。
我有一种情况需要对数百个 W2 执行 OCR 以提取数据以进行对帐。 W2 的质量很差,因为它们是打印出来的,随后又被扫描回计算机。上述过程不在我的控制范围内;不幸的是,我必须利用现有的资源。
我去年能够成功执行此过程,但由于及时性是一个主要问题,我不得不强行执行它。为此,我手动指示要从中提取数据的坐标,然后一次仅对这些片段执行 OCR。今年,我想提出一个更动态的情况,因为坐标可能会发生变化,格式可能会发生变化等。
我已经包含了一个样本,在下面擦洗了 W2。这个想法是让 W2 上的每个框都是它自己的矩形,并通过遍历所有矩形来提取数据。我已经尝试了几种边缘检测技术,但没有一种技术能够准确地提供所需要的。我相信我还没有找到所需的预处理的正确组合。我已尝试镜像一些数独谜题检测脚本。
这是我迄今为止尝试的结果,以及 python 代码,无论是与 OpenCV 2 还是 3 一起使用:
import cv2
import numpy as np
img = cv2.imread(image_path_here)
newx,newy = img.shape[1]/2,img.shape[0]/2
img = cv2.resize(img,(newx,newy))
blur = cv2.GaussianBlur(img, (3,3),5)
ret,thresh1 = cv2.threshold(blur,225,255,cv2.THRESH_BINARY)
gray = cv2.cvtColor(thresh1,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,220,apertureSize = 3)
minLineLength = 20
maxLineGap = 50
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(255,0,255),2)
cv2.imshow('hough',img)
cv2.waitKey(0)
最佳答案
关于python - 使用 opencv - python 检测 W2 中的单个框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154093/