【问题标题】:Reading Character from Image从图像中读取字符
【发布时间】:2010-06-10 05:08:35
【问题描述】:

我正在开发一个应用程序,该应用程序需要将扫描图像文件中的数字与数据库条目进行匹配,并使用匹配结果更新数据库。

假设我有 image-employee1.jpg。此图像将有两个手写条目 - 员工编号和要支付给员工的金额。我必须从图像中读取员工编号并在数据库中查询该编号,使用从图像中获得的要支付的金额更新员工。员工编号和支付金额都写在图片指定位置的两个方框内。

有什么方法可以自动执行此操作。基本上我想要一个使用 c# 在.net 中的解决方案。我知道这可以使用人工神经网络来完成。

任何想法都将不胜感激。

【问题讨论】:

    标签: c# .net image-processing image-manipulation


    【解决方案1】:

    您可以使用 Office 2003/2007 中包含的 Microsoft Office Document Imaging Library (MODI)。

    链接:

    【讨论】:

      【解决方案2】:

      模式识别是研究神经网络的一个基本例子。我不知道是否有任何库/框架可以在 C# 中使用 AI。如果你找到了,首先你要做的是训练网络(监督学习),为此你需要准备一个大的图像样本集;更多示例 -> 结果更准确。另一方面,您可以使用 OpenCV(C/C++、Python 和 Java),它是一个专门用于计算机视觉的库,并有一个模块来实现 AI 方法。

      祝你有美好的一天! 奥斯卡。

      【讨论】:

        【解决方案3】:

        我认为这很难自动化。问题只是因为您需要某种非常好的 OCR 软件。即使你得到了这个,如果它读错了,因为某人的笔迹很模糊怎么办?如果 ID 错误,则支付给错误的员工,如果金额错误,他得到错误的薪水!

        这两件事你都不会真正发生。只是为了向您展示找到一个好的 ocr 有多难,看看captcha 是如何工作的。原理只不过是难以阅读的文本的图像。

        所以我的看法是,你不能真正自动化这个过程。至少你可以编写一个程序来通过手动输入值来帮助人类(也可以看看Amazon Mechanical Turk):

        • 在右侧显示带有手写值的图片,或者如果它们始终位于同一位置或特别标记(周围有一个框等),请尝试自动找到这些位置并将它们显示给用户。
        • 左侧提供两个文本框,用户可以在其中输入值。

        要使这个过程快速流畅,您必须非常注意用户如何通过键盘轻松输入值:

        • 显示新图片时,将焦点设置到 id 文本框
        • 如果用户ID始终是特定长度,如果输入所有数字,则切换到下一个框
          • (如果您允许这样做,则下一个空白框中的退格键应聚焦回上一个)
        • 否则允许通过点击标签返回来更改下一个文本框
        • 通常这些文本框是相互重叠排列的(不是并排),因此您应该支持使用上下箭头键在它们之间进行切换。
        • 完成最后一个文本框中的输入后,自动显示下一个图像。
          • 此外,在新条目(尚未输入任何内容)的情况下,可以使用退格键或左箭头键轻松切换回旧条目)

        通过使用这样的过程,一个人可以在您的数据库中输入许多条目,而且成本比事后在数据库中查找错误条目要便宜得多。

        最后一个建议:
        因为这对一个人来说是一个无聊的过程,很容易导致错误,也许让两个人输入这些值,并且只有当两个人输入相同时才认为这个值是被批准的。这应该会导致正确率高于 99%。如果您绝对需要 100%,请考虑让 4-5 个人检查一个条目,并且只有当他们都输入相同的值时才将其视为已批准。要比较您的 ocr 软件的性能,只需让它也运行您的图像,并将此结果与人工输入的值进行比较,以获得一个想法,当您真正只能依赖您的 ocr 时。

        【讨论】:

        • +1 指出 OCR 不太可靠。对于机械土耳其人的想法,我会再 +1 ;)
        【解决方案4】:

        OCR 引擎没有接受过阅读手写文本的训练,因此您可能无法使用 MODI。您想尝试找到 ICR 引擎。即便如此,其中最好的在良好的输入上也只有 80% 的准确率。你可能会变得更好,因为你知道你的文字总是数字。

        这个 SO 问题/答案说 OCROpus 有 ICR

        FOSS Intelligent Character Recognition (ICR)

        【讨论】:

          【解决方案5】:

          有用于 OCR/ICR 的 LeadTools SDK。这在识别手写字符时非常方便。我正在对此进行可行性研究,直到现在我认为它会奏效。 LeadTools 提供了可以在您的应用程序中使用的组件,它支持 C、C++、C#、VB.Net 等。

          您可以访问以下链接: http://www.leadtools.com/downloads/default.htm?category=

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-02-18
            • 1970-01-01
            • 2020-10-28
            • 2012-12-30
            • 2018-11-06
            • 2012-09-14
            • 1970-01-01
            相关资源
            最近更新 更多