我正在开发一个自动处理扫描发票的项目。为了获得更好的OCR引擎效果,我想首先从图像中去除噪声。除了划痕,我还想删除打印后添加到文档中的任何内容。许多发票,例被勾选,有时它使发票的部分内容对OCR不可读。
例如,查看this图片。第二项的描述是不可读的,我想删除那样的“噪音”。
那么如何删除这样的手写区域并保持高质量的打印文本呢?
答案 0 :(得分:3)
只需忽略任何不具有某种颜色强度的像素,即可轻松过滤划痕和其他斑点。
处理这些行有三种选择:
第一个重要问题,是用不同颜色书写的手写作品吗?一个简单的解决方案是给每个人使用蓝色或红色笔并禁止使用黑色笔。然后,您可以用彩色扫描文档,然后您可以轻松地使用绿色缓冲区作为灰度图像而不是所有三个缓冲区。这将是实现这一目标的最简单方法,现在几乎所有扫描仪都支持彩色扫描。
否则你将不得不编写一个可以检测的算法 为了实现这一点,图像中的线条需要先行 校准算法首先要知道a的大小是多少 通常是字符,然后找到任何比X长的行 像素,然后从那里删除线。这将是非常有问题的,对你来说不会太好用,你会花很长时间试图让它工作,它仍然永远不会是100%。
另一种方式是在你做完OCR后你应该出示你的 数据给最终用户以验证它是否正确,然后您可以呈现 他们与扫描图像,并允许他们覆盖的是什么 扫描是否不正确。
在这三个选项中,我会说你最好的选择就是阻止人们用黑笔在发票上写字。如果你不能这样做,那么尽可能扫描文档并将其提供给最终用户以澄清有问题的字段(你甚至可以将它们标记为问题,这样用户就不需要检查整个文档了时间)。
编辑:有一点值得指出的是,如果您收到的文件已经写完然后传真,那么除了选项3之外,您将无法对它们做很多事情(试试你的最好,然后呈现给用户)。
答案 1 :(得分:0)
这是一项复杂的信号处理任务,需要一种复杂的算法,该算法利用区分手写笔记和打印文本的一些特性(例如,标记的宽度,手写笔记的曲率与打印的相比)文字,或者甚至是墨水的阴影。)
可能比您正在寻找的信息更多,但您甚至可以训练学习算法来过滤掉不需要的标记。