我正在处理具有文字的图像。问题是这些图像是收据,经过很多转换后,文字质量下降。 我正在使用python和opencv。 我尝试了很多来自文档Morphological Transformations的形态转换的组合,但我没有得到满意的结果。提高图像中字母的质量
我现在这样做的权利(我要评论什么,我已经试过了,只是让注释掉我使用的是什么):
kernel = np.ones((2, 2), np.uint8)
# opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
# dilation = cv2.dilate(opening, kernel, iterations=1)
# kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)
# gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
#
img = erosion.copy()
有了这个,从这个原始图像:
我得到这个:
好像你看到的那样好一点。但它仍然太糟糕了。 OCR(tesseract)不能很好地识别这些字符。我已经训练过,但正如你可以注意到的,每个“e”都是不同的,等等。
我得到了很好的结果,但我想,如果我解决了这个问题,他们会更好。
也许我可以做另一件事,或者使用形态转换的更好的组合。如果还有其他工具(PIL,imagemagick等)可以使用,我可以使用它。
这里的整体形象,所以你可以看到它的外观:
正如我所说,这是没有那么糟糕,但有点是字母的更“优化”将是完美的。
尝试使用形态闭合而不是侵蚀。至于这些字母,它们看起来与一开始有所不同,所以我认为用简单的算法就可以做很多事情。一些扫描仪用完全相同的位图替换类似的字母,所以也许你可以复制这种行为。但请注意:施乐机器中存在一个非常丑陋的错误,使图书馆员的生活非常不舒服 – meetaig