【问题标题】:Detecting signed dots on piece of paper with c# / php / anylanguage使用 c#/php/anylanguage 检测纸上的签名点
【发布时间】:2019-12-05 11:16:29
【问题描述】:

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

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

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

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

我知道这个问题有点宽泛 - 很抱歉。

【问题讨论】:

    标签: c# php image ocr


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢这个回答。所以你有一个安装 tesseract 的 linux。您从控制台运行它,获取复选框,然后使用任何编程语言来确定它们是否已签名?应该可以正常工作。我会调查这个解决方案。
    • 是的,在这种情况下,程序只是运行 tesseract 并从控制台 stdout 获取输出,您也可以使用某些 API 中的 tesseract,但我认为没有必要在这里复杂化。 Tesseract 也适用于 Windows
    • 要使用 tesseract 获得实际位置,您需要使用 hocr 模式以便将单词的位置打印在 html 中,或者使用我认为更容易解析的 tsv 模式。这是一个有用的链接tesseract wiki
    猜你喜欢
    • 2012-07-28
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多