我正在使用py tesseract对图像进行OCR,如下所示,但我无法从未处理的图像中获得一致的输出。如何使用cv2减少斑点背景和突出显示数字以提高准确性?我还对在输出字符串中保留分隔符感兴趣
下面的预处理似乎具有一定的准确性
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (7, 7), 0)
(T, threshInv) = cv2.threshold(blurred, 0, 255,
cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
使用psm获取输出--6:6.903.722,99
这里有一个解决方案,它基于asimilar post的思想。其主要思想是应用Hit-or-Miss操作查找要消除的模式。在这种情况下,图案是一个黑色(或白色,如果反转图像),由互补颜色的像素包围。我还包括了一个带有一些偏差的阈值操作,因为有些角色很容易被破坏(你可以从更高分辨率的图像中受益)。以下是步骤:
让我们看看代码:
代码的第一位获取输入的二进制图像。请注意,我对通过大津获得的阈值添加了一些偏差,以避免角色降级。结果是:
好的,让我们应用命中或未命中操作来获得点掩码:
点掩码如下所示:
对原始二值图像减去(或
XOR
)这个掩码的结果是:如果我在
PyOCR
上运行反转(白色背景上的黑色文本)结果图像,我将得到以下字符串输出:另一个图像生成此最终结果:
它的
OCR
返回以下内容:相关问题 更多 >
编程相关推荐