手写签名检测

Handwriting signature detection

我正在尝试查找扫描的 pdf 表单是否包含签名(例如确保支票已签名)。

问题域:

我将收到文件包(多页 pdf 和多种表格)。我已经将文档包分类器放在一起,这些分类器将检查所有文档的包并将图像缩放到通用大小。之后我知道签名应该在哪里,并且可以具体扫描文档的区域。我正在寻找的是确保存在签名的最佳方法。我考虑过只检查暗像素的基本阈值,但这看起来很笨拙。签名的问题在于它们并不是真正的书写,更多的是个人标记。

我唯一能想出的就是寻找循环的机器学习方法?但我对机器学习不是很熟悉,甚至不知道从哪里开始做类似的事情。如果有人对实用方法有一些建议,我们将不胜感激。

如果对您有帮助,我会在 Java 中编写代码

您问的 非常 范围很广,因此我们无法为您提供很多信息。不过,我可以为您指出一些有用的链接:

  • http://java-ml.sourceforge.net/ -- 这是一个您可以下载的库,其中包含许多有用的算法和其他代码以包含在您的程序中

  • https://www.youtube.com/playlist?list=PLiaHhY2iBX9hdHaRr6b7XevZtgZRa1PoU -- 这是一个解释神经网络的系列(您可能想研究机器学习的内容)

  • 所以我对你的算法有一个重要提示,而不是寻找所有循环和事物的确切长度,而是查看它们的所有相对距离
  • "Relative distances from what?"你说。那么这就是下一个技巧派上用场的地方:不是跟踪线条,而是跟踪循环的技巧和这些点的顺序。如果您然后取所有这些之间的距离(当然相对意味着将其中一个长度设置为零)。除了跟踪距离,您还应该跟踪角度。您可以通过取 (A,B)、(B,C) 和 (A,C) 之间的距离来计算角度 ABC (A、B 和 C 是 xy 平面上的坐标) 在点之间创建一个三角形,允许您使用三角函数计算角度。

  • (我假设对于所有这些你也试图检测 who's 签名当然是因为它实际上没有根本不会使事情复杂化) 当试图将检测到的签名与存储的签名匹配以查看它们是否是 "same," 时,不要到达距离和角度必须达到的位置确切地说。给出误差幅度(比如使用上下的百分比范围)。这里有一个提示:使误差幅度相当大。这样如果写得不好,它仍然会被检测到。这增加了不止一个签名被拾取的机会。幸运的是,有一个简单的解决方案。只需在找到的签名上再次使用 运行 算法,但误差范围更小(您当然不会手动执行此操作,程序会执行此操作)。继续减少误差范围,直到只剩下一个签名。

  • 我希望您已经有了检测实际签名位置的想法,但当然要检查像素的暗度差异。确保它是连续的。另请注意,签名通常以 black or blue 或有时是红色和其他花哨的颜色。