删除OCR图像处理中的背景颜色

cha*_*les 6 algorithm ocr imagemagick image-processing

我试图删除背景颜色,以提高OCR对图像的准确性.示例如下所示:

在此输入图像描述

我将所有字母保留在后处理图像中,同时只删除浅紫色纹理背景.是否可以使用Imagemagick等开源软件将其转换为二进制图像(黑/白)来实现这一目标?如果背景有多种颜色怎么办?解决方案是否相同?

此外,如果我还想删除紫色字母(剧院名称)和线条以便只保留黑色字母,该怎么办?简单的裁剪可能不起作用,因为紫色字母也可能出现在其他地方.

我正在寻找编程解决方案,而不是像Photoshop这样的工具.

mpe*_*kov 7

您可以使用GIMP(或任何其他图像编辑工具)执行此操作.

  1. 打开你的形象
  2. 转换为灰度
  3. 复制图层
  4. 使用大内核(10x10)将高斯模糊应用于顶层
  5. 计算顶层和底层之间的图像差异
  6. 阈值图像以产生二进制图像

图像模糊:

在此输入图像描述

差异图像:

在此输入图像描述

二进制:

在此输入图像描述

如果你是一次性做的话,GIMP可能已经足够好了.如果您希望多次执行此操作,您可能会编写一个imagemagick脚本或使用Python和OpenCV等方法编写您的方法.

上述方法存在一些问题:

  • 紫色文本(CENTURY)会丢失,因为它与其他文本没有对比.您可以通过不同地对图像的不同部分进行阈值处理,或者使用局部直方图操作方法来解决它


Dr.*_*ius 5

以下显示了处理图像的可能策略,并对其进行了OCR

最后一步是进行OCR.我的OCR例程非常基础,所以我相信你可能会得到更好的结果.

代码是Mathematica代码.

在此输入图像描述

一点也不差!


fde*_*hin 3

您可以对图像应用模糊,这样您就可以获得几乎清晰的背景。然后将原始图像每个像素的每个颜色分量除以背景上像素的相应分量。您将在白色背景上看到文本。额外的后处理可以提供进一步的帮助。

此方法适用于文本比背景(在每个颜色分量中)暗的情况。否则,您可以反转颜色并应用此方法。