c# - 使用 c#/php/anylanguage 检测纸上的签名点
问题描述
一个工人有一张打印的纸(从模板标准化),上面有选项(比如一个复选框)。他检查东西,在圆点上签名——好吧,这不是,做这个,根据那个报告做那个。
我想创建一个程序(可能使用 c#),它将从扫描的纸张中读取签名的点,并根据它将获得的数据订购东西。现在另一个工人正在这样做。
任何编程语言都有办法吗?
如果没有,可能有一个免费程序已经在执行此操作,如果文件和编程从那里开始,则生成输出。(例如,我发现了 freemark,但它不是免费的,而且与我阅读的内容相去甚远)
我知道这个问题有点宽泛-对此感到抱歉。
解决方案
我最近解决了类似的情况,我也搜索了现成的软件,但最终以编程方式解决了它
这个想法是使用一些 OCR 工具(如tesseract)通过标签来识别每个复选框的位置。
每个复选框都应该在矩形/标记之前或之后有一个标签,使用 OCR 来识别它的位置,使用标签位置,您可以轻松地裁剪出带有复选标记的矩形
一旦你隔离了复选框的矩形,你可以选择一个算法来知道它是否被选中,这里有一些方法:
- 使用一些机器学习来识别复选标记(X 或其他)
- 计算矩形的平均颜色,较暗的复选框中会有一些东西
- 计算您必须从中心扩展以达到黑色像素的像素数,如果复选框上有标记,您将快速达到黑色像素,如果没有,您只会在点击矩形时达到一个。在这里你可以决定一个阈值,比如如果你必须走超过 40% 的复选框,它可能是空的
相同的想法适用于单选按钮等其他东西,唯一的区别是它们是圆形的
推荐阅读
- javascript - JSZip 库,检查 zipfile 是否加密
- python - Python剥离字符并组合列表对象
- java - 如何制作圆形视图pager2?
- powershell - Powershell 找到一个简单的内衬来修剪文件内的文本
- r - R:循环遍历多个时间序列向量的可能组合来计算DTW
- python - 自动订阅 YouTube 视频
- javascript - 如何解决 jquery 中未捕获的 datepicker 错误?
- java - 当我在 IntelliJ IDEA 中导入 Spring Boot 项目时,Java 类看起来不同 (.java)
- java - 我可以将这个双变量 for 循环分成两个嵌套循环吗?
- ruby-on-rails - 是否可以使用带有 rolify gem for Rails 的回调跳过角色删除