发票自动数据提取OCR或PDF

13
我正在寻找一种解决方案,可以从我的发票中提取数据并向我的会计师发送摘要。 有一些公司提供此类服务,每月约20欧元,并且通常很好地识别发票。但是我尝试过的服务不能提取我喜欢的所有数据,或者缺少某些功能,例如将数据导出到Excel以将数据发送给我的会计师。而且每月支付20欧元,并且必须管理另一个服务以处理每月5张发票,这对我来说还不太吸引人。 我进行了一些研究,并找到了这个stackoverflow问题: Can anyone recommend OCR software to process invoices? 它有点过时,希望能找到更多最新的建议。我尝试了Ephesoft社区版,一开始看起来非常有前途。但是该软件需要学习和审核步骤。在审核步骤中,似乎没有将数据反馈到学习步骤。此外,这比手工操作更加繁琐。我认为它是为大型企业设计的。 我正在寻找一种简单的数据提取软件,它可以随着我显示给它的每个步骤而学习。 我还查看了Apache Tika,但似乎还没有准备好与简单的Web界面一起使用。 1. 您有付费OCR服务的推荐吗?灵活提取总增值税金额/增值税%/总金额/总货币金额/增值税货币/支付账户/公司名称。并能导出到Excel吗? 2. 您有开源软件的推荐吗? 3. 您有一些关于如何处理少量(每年不足50张)发票的一般建议吗?

顺便问一下,如果有人想要从零开始构建类似于Verify或Nanonets的东西而不使用任何第三方API,最佳实践是什么步骤? - LordDraagon
5个回答

9
除了基本的OCR和正则表达式(对于一些非常有限的用例可能有效),还有其他几个提供API访问的选项。这些选项实际上可以在没有任何演示或销售过程的情况下开始使用:
- TagGun - 专门针对收据,可以提取行项目,每月免费50张收据。 - Elis - 专门针对发票,支持各种模板自动识别(预先训练的机器学习模型),每月免费300张以下。
如果您愿意经历销售过程(并且它们似乎是真实的和活跃的):
  • LucidTechItemize(不确定它们的准确性和提取的领域,因为它们的API细节是非公开的)
  • FlexiCapture Engine - 基于模板,如果您愿意为每个特定发票格式定义一个模板

(免责声明:我与Elis的供应商Rossum有关联。欢迎建议添加其他API!)


2
请查看Veryfi,它可以在3-5秒内从收据和发票中提取包括行项目在内的50多个字段。它可以直接使用(不需要训练),精度高,并支持30多种语言/地区。
> pip install veryfi

veryfi_client = Client(client_id, client_secret, username, api_key)

categories = ['Grocery', 'Utilities', 'Travel'] # list of your categories

file_path = '/tmp/invoice.jpg'

response = veryfi_client.process_document(file_path, categories=categories)

print (response)

以下是如何使用它的详细概述: https://www.veryfi.com/engineering/invoice-data-capture-api/ *我是Veryfi的联合创始人,所以请随时提问。

2
Sypht提供了一种API来实现这个功能:http://www.sypht.com

Python客户端:https://github.com/sypht-team/sypht-python-client

第一步

pip install sypht

第二步

from sypht.client import SyphtClient, Fieldset

sc = SyphtClient('<client_id>', '<client_secret>')

with open('invoice.png', 'rb') as f:
    fid = sc.upload(f, fieldsets=["document, "invoice"])

print(sc.fetch_results(fid))

免责声明:我与供应商有关联


1
从发票中提取数据是一个复杂的问题,我还没有看到任何开源解决方案。OCR只是数据提取过程的一部分。您需要图像预处理、数据识别的AI引擎等。
您有许多解决方案来解决这个问题,每个解决方案都有所不同。@Peter Baudis已经提到了其中一些。
它们从非常简单的开始:
- OCR SPACE Receipt scanning - 以表格格式提取数据,但仍然需要解析它们并确定文本的哪个部分是例如发票号码
到更高级的:
- Nanonets - 机器学习API多种解决方案(发票、税务表格等) - typless - 任何文档(发票、采购订单等)的单调用API,每月免费50张发票 - Parascript - 模板系统,类似于Abby FlexiCapture 重要的是要知道你的用例。没有一种适用于所有情况的解决方案。它取决于你想要实现什么:
- 数据挖掘 - 必须便宜快速。缺失或不正确的数据并不是使命关键。你可以在数据分析中清理它。 - 企业自动化 - 经过培训的重复发票必须几乎达到100%的工作效果。速度和新发票并非使命关键。 - 海关等领域的自动化 - 需要返回尽可能多的数据。整个数据集的准确性至关重要,但可能每个文档都会被审核。
因此,你应该测试它们并看看它们如何适合你的流程/需求。
免责声明:我是typless的创建者之一。欢迎提出建议。

1

您可以尝试Nanonets,这个Github仓库中有一个示例:

https://github.com/NanoNets/invoice-processing-with-python-nanonets

import requests, os, sys, json

model_id = "Your Model Id"
api_key = "Your API Key"
image_path = "Invoice Path"

url = 'https://app.nanonets.com/api/v2/ObjectDetection/Model/' + model_id + '/LabelFile/'

data = {'file': open(image_path, 'rb'),    'modelId': ('', model_id)}

response = requests.post(url, auth=requests.auth.HTTPBasicAuth(api_key, ''), files=data)

print(json.dumps(json.loads(response.text), indent = 2))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接