【发布时间】:2021-12-12 22:13:56
【问题描述】:
我一直在开发一个使用光学字符识别来读取财务报表的程序,但在我的一生中,我无法弄清楚为什么我使用的开源模块仍然无法读取某些数字。
我创建了一个输出文件,其中在检测到文本的原始输入周围带有绿色框。在这种情况下,“381”的行被拾取,但下面的行(具有相同的确切格式)被忽略。
我在提取数据之前使用此代码对图像进行预处理,因为之前的缺失率高达 20%,现在接近 5%。
img = cv2.imread(filename)
img = cv2.resize(img, None, fx=1.2, fy=1.2, interpolation=cv2.INTER_CUBIC)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((1, 1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)
在此预处理之后,我还运行了一个算法以从文档中删除超过一定大小的实线,但在这种情况下,原始文件中没有“35”或“381”下划线,所以我怀疑这是导致问题的原因。我还验证了线检测算法没有删除 5 的顶部。
我不是 OCR 或 CV 方面的专家,我的专长是更多的数据和通用编程——我真的只需要让这个库完成它所宣传的工作,这样我就可以继续前进并完成程序.有谁知道可能是什么导致了这个问题?
【问题讨论】:
标签: python computer-vision ocr cv2 python-tesseract