应付发票捕获或提取自动化

时间:2013-11-16 17:18:53

标签: c# ocr capture invoices iris-recognition

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

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

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

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

问题:
如何使用OCR或某些智能读卡器取消应付发票? 主要是我寻找一些algorithem(C#+ OCR引擎)/ philoshpy应付发票捕获,但参考一些具有相同功能或固体商业产品的SDK也会有所帮助。

我用Google搜索并找到了Abbyy FlexiCapture Engine,IRIS Capture&提取有点承诺但主要是基于模板或培训。他们声称不需要模板或培训,但没有任何东西看起来100自动捕获。

请参考某些产品(至少免费试用),SDK或示例/样本。

3 个答案:

答案 0 :(得分:7)

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

  • 仍然是一个原始的OCR引擎(tesseract,Abbyy,谷歌OCR等)和正则表达式(对于一些非常有限的用例,这可能仍然可以正常工作)
  • Abbyy FlexiCapture Engine - 如果您愿意为每种特定发票格式定义一个新模板,那么仍然很强大,但仍然基于模板
  • Rossum Elis (发票), TagGun (收据),... - 基于预先培训的机器学习模型的API,即可立即使用,每月免费量
  • LucidTech Itemize ,... - 具有类似功能的不太容易访问的API(您需要通过演示和销售)处理)
  • Datamolino CloudFactory ,... - 人工在幕后手动执行数据转录的API(不同的延迟,定价和精度结构)

答案 1 :(得分:3)

我做了R& D并得出结论:没有用于发票Capture的专用SDK可以将其自动化95-100%。只有OCR / ICR和成像SDK可以帮助将图像转换为文本/可读文档,但其余的捕获/数据提取完全基于自定义搜索算法(如上面提到的ilya-evdokimov,您需要混合步骤( zonal ocr,全文ocr,然后智能数据提取)。我研究了一些非常流行的产品,但他们只是声称自动捕获,但最终他们只是自动拨打标准发票字段,但其余的工作是相同的zonal ocr或manual。是我的建议,但根据自然应用还有很多改进:

  1. 存储关键字段(例如,数据库/ xml文件中客户的VAT#信息
  2. 执行完整页面OCR,查找关键字段,匹配客户列表以及识别/分类文档/图像的类型。
  3. 确定文件类型(应付发票/可收费等)后,查找标准字段
  4. 允许用户为每个公司(发票的发件人)创建每种类型文档的预定义模板。
  5. 比较两个algo(全文ocr和zonal)的结果,保持精确度更高。

答案 2 :(得分: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/

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