【问题标题】:Machine learning algorithm which gives multiple outputs mapped from single input机器学习算法,它给出从单个输入映射的多个输出
【发布时间】:2018-10-10 05:56:52
【问题描述】:

我需要一些帮助,我正在处理一个问题,我有一张发票图像的 OCR,我想从中提取某些数据,如发票编号、金额、日期等,这些都存在于 OCR 中。我尝试使用分类模型,我将每个句子从 OCR 单独传递到模型并预测发票编号或日期或其他任何内容,但这种方法需要很多时间,我认为这是不正确的接近。

所以,我在想是否有一种算法可以让我有一个输入字符串并从该字符串映射输出,例如发票号、日期和金额都存在于字符串中。

例如:

Inp string: The invoice 1234 is due on 12 oct 2018 with amount of 287 
Output: Invoice Number: 1234, Date: 12 oct 2018, Amount 287

那么,我的问题是,有没有一种算法可以让我在多张发票上进行训练然后做出预测?

【问题讨论】:

  • 一个神经网络可以有一个输入和多个输出。
  • 但是我可以将这些输出映射到输入本身吗?如果是,那么如何?
  • 您将不得不训练模型,但基本上,一组带有几个隐藏层的 lstm 输入节点和为您提供所需不同输出的输出层是一种方法。

标签: python machine-learning deep-learning ocr


【解决方案1】:

本质上,您正在寻找 NER(命名实体识别)。有多种免费和付费工具可用于意图和实体映射。您可以使用 Google DialogFlow、MS LUIS 或开源 RASA 来识别给定文本中的实体。 如果您想开发自己的解决方案,那么您也可以查看 OpenNLP。 请将您对这些问题的观察回复到您的问题

【讨论】:

  • 我不知道如何让 NER 识别专有名词、城市名称、人名、数字、日期等在 Rasa 中发生。能指导一下吗?
【解决方案2】:

您正在搜索的是发票数据提取 ML。有很多可用的 ML 算法,但没有一个适合您的用例。为什么?因为它是一个非常特殊的用例。你不能只使用 Tensorflow 并使用句子作为输入,尽管它可以返回多个输出。

您可以使用 NLP(自然语言处理)方法来提取数据。 Taggun 使用它从收据中提取数据。在这种情况下,您只能使用句子。但是您仍然需要将句子转换为 NLP 形式(标记化)。

您可以使用深度学习(例如 Tensorflow)。在这种情况下,您需要将您的句子向量化为可以输入到神经网络中的向量。这种方法需要更多的创造力,而没有标准的方法可以做到这一点。目标是尽可能好地描述每个句子。但是还有一个问题——如何解析日期、金额等。如果你用 contains_date True/False 标记句子,对 NN 有帮助吗?可能是。 类似的方法用于发票数据提取服务,例如:

因此,如果您这样做是为了娱乐/研究,我建议您从一张非常简单的发票开始。尝试编写一个程序,通过解析和 if 语句提取发票编号、签发日期、供应商和总金额。它将帮助您定义 NN 的特征向量输入的属性。例如,contains_datecontains_total_amount_word 等。请参阅此tutorial 以 NN 开头。

如果您将它用于工作,我建议您查看现有的发票数据提取服务之一。

免责声明:我是typless的创造者之一。欢迎提出修改建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2015-08-04
    • 2020-03-01
    • 1970-01-01
    相关资源
    最近更新 更多