应付发票捕获或提取自动化[关闭]

Posted

技术标签:

【中文标题】应付发票捕获或提取自动化[关闭]【英文标题】:Payable Invoice Capturing OR extracting automation [closed] 【发布时间】:2013-11-30 01:01:48 【问题描述】:

我正在创建一个桌面/winform 应用程序,用于读取 tif/pdf 应付发票并提取所有发票信息以存储到数据库中。

我可以使用 OCR(图像的 ocr 特定区域)读取标准条形码(QR 码、Code39 等)和一些应付发票的标准字段(发票日期、公司名称、地址),但无法捕获行项目, 数量正确。

我分两个阶段提取信息: 1.根据模板读取特定区域(用户映射区域 特定领域) 2. OCR整页并搜索应付账款 发票标准字段名称和值

我有以下 3 种方法的想法: 1. 为一种发票创建模板并处理所有发票。 2. 基于神经网络的引擎,需要使用样本数据进行训练才能根据模式进行工作。 3.表单处理,一种OMR。 OCR 查看字段放置在表单上的完全相同的坐标(在表单设计期间)

问题: 如何使用 OCR 或一些智能阅读器提取应付发票? 我主要寻找一些算法(C# + OCR 引擎)/ 支付发票捕获的理念,但参考一些具有相同功能或可靠类型的商业产品的 SDK 也会有所帮助。

我在 Google 上搜索并发现 Abbyy FlexiCapture Engine、IRIS Capture & Extract 有一定的前景,但主要是基于模板或培训。他们声称不需要模板或培训,但没有任何东西看起来 100 自动捕获。

请参考一些产品(至少免费试用)、SDK 或示例/示例。

【问题讨论】:

要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。 我已经提到了我所做的事情。 (使用区域 ocr 技术提取预定义区域的数据)。但我不知道如何提取非结构化数据和表格。我的第一个问题是“我主要寻找一些算法(C# + OCR 引擎)/应付发票捕获的哲学”。要求推荐或查找工具是最后一个选项,因为该域有很多可用的帮助。 我之前在这里回答过类似的问题,试图通过根据我自己的亲身体验提供具体的产品推荐来提供帮助,但管理员/版主扼杀了我的回答并删除了有用的信息,这让我不愿意花时间在这里尝试帮助他人。无论如何,这是一个好的开始:***.com/questions/7362926/… 如果您有任何更具体的问题,请告诉我。 “他们声称不需要模板或培训,但没有任何东西看起来 100 自动捕获” - 正确,今天有一些“预烘焙”模板,让简单场景看起来好像不需要模板,但是为了实现高精度的识别和识别(没有人谈论 100% 除非你有有限的变化)必须使用一些基于模板的工作。 嗨,Ilya Evdonikov,您发布的链接指向删除答案,您能指出我从哪里开始寻找吗? 【参考方案1】:

经过更多的研发 (*),现在实际上有了带有 API 的专用 SDK:

首先 - 对于初学者,https://rossum.ai/developers 有演示

现在可以使用 API (https://docs.api.rossum.ai/) 自动执行整个提取过程,如下所示:

上传发票:

invoice_file=$1
endpoint='https://all.rir.rossum.ai'
curl -H "Authorization: secret_key $ELIS_API_KEY" -X POST -F file="@$invoice_file;type=application/pdf" $endpoint/document

下载结果:

invoice_id=$1
endpoint='https://all.rir.rossum.ai'
curl -H "Authorization: secret_key $ELIS_API_KEY" $endpoint/document/$invoice_id

这些 bash 示例来自 https://github.com/rossumai/elis-client-examples/

(* 补充一下,API 是我自己的研发工作的直接结果在公司 ;))

【讨论】:

【参考方案2】:

当然,到 2018 年情况有所改善。让我回顾一下今天的主要方法:

仍然是原始 OCR 引擎(tesseract、Abbyy、Google OCR 等)和正则表达式(对于一些非常有限的用例,这可能仍然可以正常工作) Abbyy FlexiCapture Engine - 仍然很强大,但仍然基于模板,如果您愿意为每种特定发票格式定义一个新模板 Rossum Elis(发票)、TagGun(收据)、... - 基于预先训练的机器学习模型的 API,即可以立即使用,并且免费月产量 LucidTechItemize、... - 具有类似功能的难以访问的 API(您需要通过演示和销售流程) DatamolinoCloudFactory、... - 人工在幕后手动执行数据转录的 API(不同的延迟、定价和准确性结构)

【讨论】:

【参考方案3】:

我进行了研发并得出结论:没有专门的发票捕获 SDK 可以实现 95-100% 的自动化。只有 OCR/ICR 和 Imaging SDK 可以帮助将图像转换为文本/可读文档,但其余的捕获/数据提取完全基于自定义搜索算法(如上面提到的ilya-evdokimov,您需要混合步骤(区域 ocr ,全文ocr,然后是智能数据提取)。我研究了一些非常受欢迎的产品,但他们只是声称自动捕获,但最终他们只是自动提取标准发票字段,但其余工作是相同的,无论是区域ocr还是手动。这就是我建议,但根据性质应用程序还有更多改进:

    在数据库/xml 文件中存储关键字段(例如客户的增值税号信息) 做整页OCR,找到关键字段,匹配客户列表,识别/分类文档/图像的类型。 一旦确定文档类型(应付发票/应收发票等),然后查找标准字段 允许用户为每个公司(发票的发送方)的每种类型的文档创建预定义的模板。 比较两种算法(全文 ocr 和 zonal)的结果,保持更准确。

【讨论】:

以上是关于应付发票捕获或提取自动化[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

大型教育机构如何应用RPA自动处理发票

sap应付账款入账有点差异

Odoo 13 撒克逊会计处理

如何从 Android 应用程序中的图像中提取发票数据?

使用 PayPal 使用存储的信用卡自动收取发票

从 pdf 或图像格式的发票中提取数据