一名工作人员有一张带有选项(例如复选框)的打印纸(根据模板标准化)。他检查东西,在圆点上签名——这没问题,这不是,根据该报告做这个,做那个。
我想创建一个程序(可能使用 C#)来读取扫描纸上的签名点,并根据它将获得的数据进行排序。现在另一个 worker 正在做这件事。
有没有任何编程语言的方法?
如果没有,也许有一个免费程序已经在执行此操作,如果文件和程序从那里开始,则生成输出。 (例如,我找到了 freemark,但它不是免费的,而且与我阅读的内容相去甚远)
我知道这个问题有点宽泛 - 对此感到抱歉。
最佳答案
我最近遇到了类似的情况,我也搜索了现成的软件,但最终以编程方式解决了它
想法是使用一些 OCR 工具(如 tesseract)通过标签识别每个复选框的位置。
每个复选框都应该在矩形/标记之前或之后有一个标签,使用 OCR 识别它的位置,使用标签位置你可以很容易地裁剪出带有复选标记的矩形
隔离复选框的矩形后,您可以选择一种算法来了解它是否被选中,这里有一些方法:
- 使用一些机器学习来识别复选标记(X 或其他)
- 计算矩形的平均颜色,颜色较深的复选框会包含一些内容
- 计算您必须从中心扩展多少个像素才能达到黑色像素,如果复选框上有标记,您将很快达到黑色像素,如果没有,您只能在点击矩形时达到一个.在这里你可以决定一个阈值,比如如果你必须走过超过 40% 的复选框,它可能是空的
同样的想法也适用于其他东西,比如单选按钮,唯一的区别是它们是圆形的
关于c# - 使用 c#/php/anylanguage 检测纸上的签名点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57231408/