OCR:用Python对原始图像进行降噪处理后,提取图像的关键部分

OCR:用Python对原始图像进行降噪处理后,提取图像的关键部分,python,image-processing,ocr,noise-reduction,scikit-image,Python,Image Processing,Ocr,Noise Reduction,Scikit Image,为了提高OCR,我正在尝试去噪图像(拍摄的文本)。我正在使用Python-skimage完成这项任务,但我对其他库建议持开放态度(PIL、cv2,…) 示例图像(应为“i5”): 我非常成功地使用了skiliage.morphotology.侵蚀和skiliage.morphology.remove_小对象,结果是: 噪音消失了,但i上的5和点的某些部分也消失了 现在的问题是:我想到了如何修复5。我将原始图像添加到去噪图像中,结果部分为黑色,部分为灰色: 然后我将所有连接到黑色部分的灰色部

为了提高OCR,我正在尝试去噪图像(拍摄的文本)。我正在使用Python-skimage完成这项任务,但我对其他库建议持开放态度(PIL、cv2,…)

示例图像(应为“i5”):

我非常成功地使用了
skiliage.morphotology.侵蚀
skiliage.morphology.remove_小对象
,结果是:

噪音消失了,但i上的5和点的某些部分也消失了

现在的问题是:我想到了如何修复5。我将原始图像添加到去噪图像中,结果部分为黑色,部分为灰色:

然后我将所有连接到黑色部分的灰色部分设置为黑色(在结构上传播)。最后,通过删除所有仍然是灰色的部分,我得到了一个干净的图像

但是我不知道如何使用上面的一个库来完成传播部分。有算法吗


附加问题:我怎样才能保留I上的点?

我会用另一种方法:如果你的“噪音”(不需要的信息)与你显示的类似,最简单的去除方法是在你的图像中标记“斑点”,然后只保留最大的斑点。为了保持圆点,你也可以计算每条线的“with”,例如计算所有斑点的形态骨架,并删除宽度变化很小的斑点。谢谢你的建议。识别所有斑点是我考虑过的,但你给了我一个好主意。像素总数(大小)不是噪声的好指标,因为对角线可能很长(x轴)。然而,我可以定义最大高度(y轴),在所有x坐标上循环。最大高度低于x像素的所有斑点都是噪声线,会被消除。我试着把它作为一个额外的步骤,但是我仍然想为我最初的问题找到一个解决方案。