6

我正在开发一个自动处理扫描发票的项目。为了获得更好的 OCR 引擎结果,我想首先从图像中去除噪声。除了划痕,我还想删除打印后添加到文档中的任何内容。许多发票例如被勾选,有时它使部分发票无法用于 OCR。

例如看看这张图片。第二项的描述将无法阅读,我想像这样删除“噪音”。

那么,我怎样才能删除这样的手写区域并仍然保持下面的打印文本的高质量呢?

4

2 回答 2

4

只需忽略任何不具有一定颜色强度的像素,就可以很容易地过滤划痕和其他斑点。

您有三种处理线条的选项:

  1. 第一个重要的问题,手写体是用不同的颜色书写的吗?一个简单的解决方案是给每个人蓝色或红色的笔,并禁止使用黑色的笔。然后您可以用彩色扫描文档,然后您可以轻松地使用绿色缓冲区作为灰度图像,而不是所有三个缓冲区。这将是实现这一点的最简单方法,现在几乎所有扫描仪都支持彩色扫描。

  2. 否则,您将不得不编写一个可以检测图像中线条的算法,为此,您需要首先校准算法以首先知道字符的大小通常是多少,然后找到任何线条长于 X 像素,然后从那里删除线。这将是一个非常有问题的问题,而且对你来说不会很好,你会花很长时间试图让它工作,但它仍然永远不会 100%。

  3. 另一种方法是,在完成 OCR 之后,您应该将数据呈现给最终用户以验证其正确性,然后您可以将扫描的图像呈现给他们,并允许他们覆盖不正确的扫描内容。

在这三个选项中,我想说你最好的选择就是防止人们用黑笔在发票上写字。如果您不能这样做,请尽可能扫描文档并将其提供给最终用户以澄清有问题的字段(您甚至可以将它们标记为问题,这样用户就不需要检查整个文档时间)。

编辑:值得指出的一件事是,如果您收到的文件是写在上面然后传真的,那么除了选项 3 之外,您将无法对它们做很多事情(尽力而为,然后呈现给用户)。

于 2011-11-17T08:18:23.707 回答
1

这是一项复杂的信号处理任务,需要一种复杂的算法,利用一些将手写笔记与印刷文本区分开来的特性(例如,标记的宽度、手写笔记与印刷文本相比的曲率,或甚至可能是墨水的阴影)。

可能比您要查找的信息更多,但您甚至可以训练学习算法来过滤掉不需要的标记。

于 2011-11-17T03:10:27.037 回答