Python OCR:忽略文档中的签名

时间:2018-08-25 19:20:34

标签: python opencv image-processing machine-learning ocr

我正在尝试对其中具有手写签名的扫描文档进行OCR。请参见下图。

enter image description here

我的问题很简单,有没有办法在忽略签名的情况下仍使用OCR提取人员姓名?当我运行Tesseract OCR时,无法检索名称。我尝试使用下面的代码进行灰度/模糊/阈值处理,但是没有运气。有什么建议吗?

image = cv2.imread(file_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = cv2.GaussianBlur(image, (5, 5), 0)
image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

4 个答案:

答案 0 :(得分:5)

您可以使用scikit-image的高斯滤镜先模糊细线(使用适当的sigma),然后再对图像进行二值化(例如,使用某些thresholding函数),然后再使用通过形态学运算(例如remove_small_objectsopening以及适当的structure),主要去除特征码,然后尝试使用滑动窗口对数字进行分类(假设已经对数字进行了训练)一些模糊的字符,如测试图像中所示)。下面显示了一个示例。

from skimage.morphology import binary_opening, square
from skimage.filters import threshold_minimum
from skimage.io import imread
from skimage.color import rgb2gray
from skimage.filters import gaussian

im = gaussian(rgb2gray(imread('lettersig.jpg')), sigma=2)
thresh = threshold_minimum(im)
im = im > thresh
im = im.astype(np.bool)
plt.figure(figsize=(20,20))
im1 = binary_opening(im, square(3))
plt.imshow(im1)
plt.axis('off')
plt.show()    

enter image description here

[EDIT]:使用深度学习模型

另一种选择是将该问题提出为一个对象检测问题,其中字母是对象。我们可以使用深度学习:CNN / RNN /快速RNN模型(带有tensorflow / keras)用于对象检测,或者使用 Yolo 模型(请参阅此article yolo模型进行汽车检测)。

答案 1 :(得分:1)

我想输入的图片是灰度的,否则不同颜色的墨水可能具有独特的力量。

这里的问题是,您的训练集-我猜想-几乎只包含“正常”字母,而没有签名的干扰-因此分类器自然不会在带有签名墨水的字母上工作。一种可行的方法是用这种类型的字母扩展训练集。当然,将这些字母一个接一个地提取和标记是一项艰巨的工作。

您可以使用带有不同签名的真实字母,但是也可以人为生成相似的字母。您只需要在其上方移动具有不同签名段的不同字母即可。此过程可能是自动化的。

答案 2 :(得分:1)

您可以尝试使用形态学操作对图像进行预处理。

您可以尝试opening去除签名的细线。问题在于它也可能删除标点符号。

image = cv2.imread(file_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

您可能必须更改内核大小或形状。只需尝试不同的设置即可。

答案 3 :(得分:0)

您可以尝试其他OCR提供程序执行同一任务。例如,https://cloud.google.com/vision/试试这个。您可以上传图片并免费检查。

您将从API获得响应,从中可以提取所需的文本。在同一网页上也提供了提取该文本的文档。

检查一下。这将帮助您获取该文本。当我遇到相同的问题时,这是我自己的答案。 Convert Google Vision API response to JSON

enter image description here