首页 > 解决方案 > 使用 c#/php/anylanguage 检测纸上的签名点

问题描述

一个工人有一张打印的纸(从模板标准化),上面有选项(比如一个复选框)。他检查东西,在圆点上签名——好吧,这不是,做这个,根据那个报告做那个。

我想创建一个程序(可能使用 c#),它将从扫描的纸张中读取签名的点,并根据它将获得的数据订购东西。现在另一个工人正在这样做。

任何编程语言都有办法吗?

如果没有,可能有一个免费程序已经在执行此操作,如果文件和编程从那里开始,则生成输出。(例如,我发现了 freemark,但它不是免费的,而且与我阅读的内容相去甚远)

我知道这个问题有点宽泛-对此感到抱歉。

标签: c#phpimageocr

解决方案


我最近解决了类似的情况,我也搜索了现成的软件,但最终以编程方式解决了它

这个想法是使用一些 OCR 工具(如tesseract)通过标签来识别每个复选框的位置。

每个复选框都应该在矩形/标记之前或之后有一个标签,使用 OCR 来识别它的位置,使用标签位置,您可以轻松地裁剪出带有复选标记的矩形

一旦你隔离了复选框的矩形,你可以选择一个算法来知道它是否被选中,这里有一些方法:

  • 使用一些机器学习来识别复选标记(X 或其他)
  • 计算矩形的平均颜色,较暗的复选框中会有一些东西
  • 计算您必须从中心扩展以达到黑色像素的像素数,如果复选框上有标记,您将快速达到黑色像素,如果没有,您只会在点击矩形时达到一个。在这里你可以决定一个阈值,比如如果你必须走超过 40% 的复选框,它可能是空的

相同的想法适用于单选按钮等其他东西,唯一的区别是它们是圆形的


推荐阅读