Moh*_*ali 2 ocr imagemagick image-processing imagemagick-convert
我正在处理的一个问题是对文档进行OCR.一些paystub文档有一个带点的高亮线,以区分重要元素,如总薪酬,净薪酬等.
这些点在OCR中产生错误结果,它将它们视为":"字符并且不会给出期望的结果.我已经尝试了许多用于图像处理的东西,比如ImageMagick等,以去除这些点.但是在每种情况下,整个文本数据的质量都会降低,导致OCR差.
我尝试过的ImageMagick命令是:
转换mm150.jpg -kuwahara 3 mm2.jpg
我也尝试了连接组件,内核侵蚀等,但每种方法都以某种方式失败.
我想知道是否有一些我应该遵循的方法,或者我是否遗漏了图像处理功能.
可以使用opencv的connectedComponentsWithStats函数解决此问题.我从这个问题中找到了对此的参考如何在不损坏文本的情况下删除点/噪声?
我根据自己的需要改变了一点.这是帮助我获得所需输出的代码.
import cv2
import numpy as np
import sys
img = cv2.imread(sys.argv[1], 0)
_, blackAndWhite = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(blackAndWhite, 4, cv2.CV_32S)
sizes = stats[1:, -1] #get CC_STAT_AREA component
img2 = np.zeros((labels.shape), np.uint8)
for i in range(0, nlabels - 1):
if sizes[i] >= 8: #filter small dotted regions
img2[labels == i + 1] = 255
res = cv2.bitwise_not(img2)
cv2.imwrite('res.jpg', res)
Run Code Online (Sandbox Code Playgroud)
我得到的输出文件很清楚,删除了虚线带,因为它提供了完美的OCR结果.