手写签名检测

时间:2016-07-01 17:21:49

标签: java machine-learning ocr handwriting

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

问题域:

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

我能想出的唯一一个机器学习方法是寻找循环吗?但我并不熟悉机器学习,甚至不知道从哪里开始。任何有实际方法建议的人都会非常感激。

我用Java编写这个代码,如果它有用的话

1 个答案:

答案 0 :(得分:2)

你问的是非常广泛,所以我们无法提供很多信息。但是,我可以为您指出一些有用的链接:

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

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

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

  • (我假设所有这些你也试图检测谁是签名当然是因为它实际上并没有真正使事情复杂化) 当尝试将检测到的签名与存储的签名进行匹配以查看它们是否“相同”时,请不要将其与距离和角度必须精确的位置相匹配。给出误差幅度(比如使用上下百分比范围)。这是一个提示:使误差幅度相当大。这样,如果写得不好,它仍然会被检测到。这提高了获取多个签名的机会。幸运的是,有一个简单的解决方案。只是让它在找到的签名上再次运行算法,但误差范围较小(你当然不会手动执行此操作,程序会这样做)。继续减少误差范围,直到只剩下一个签名。

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

    < / LI>