发票自动数据提取 OCR 或 PDF [关闭]
Posted
技术标签:
【中文标题】发票自动数据提取 OCR 或 PDF [关闭]【英文标题】:Invoice automatic data extraction OCR or PDF [closed] 【发布时间】:2017-12-05 05:14:52 【问题描述】:我正在寻找一种解决方案来从我的发票中提取数据以将摘要发送给我的会计师。
有些公司每月提供大约 20 欧元的此类服务,而且发票通常得到很好的认可。但是我尝试的服务并没有提取我喜欢的所有数据,或者缺少一些功能,比如将数据发送给我的会计师的 excel 导出。每月支付 20 欧元并不得不为每月 5 张发票管理另一项服务对我来说还没有吸引力。
我研究了一下,发现了这个 *** 问题: Can anyone recommend OCR software to process invoices?
有点过时了,希望能找到更多最新的推荐。我尝试了 Ephesoft 社区版,起初它看起来很有前途。但该软件有一个学习和复习步骤。在审查步骤中,数据似乎没有反馈到学习步骤。另外,感觉比手工操作更麻烦。我认为它是为大企业设计的。
我正在寻找一个简单的数据提取软件,它会在我展示的每一步中学习。
我还查看了 Apache Tika,但它似乎还没有准备好与简单的 Web 界面一起使用。
您对付费 OCR 服务有什么建议吗?灵活提取总增值税金额/增值税百分比/总金额/总金额货币/增值税货币/支付的账户/公司名称。导出到 excel?
您对开源软件有什么建议吗?
您对如何处理少数(一年少于 50 张)发票有一些一般性建议吗?
【问题讨论】:
顺便说一句,如果有人在不使用任何 3rd 方 API 的情况下从头开始构建验证或 nanonets 之类的东西,步骤/最佳实践是什么? 【参考方案1】:除了原始 OCR 和除此之外的正则表达式(在某些非常有限的用例中可能工作得很好)之外,还有其他几个提供 API 访问的选项。无需任何演示或销售流程即可真正开始使用的产品:
TagGun - 专门做收据,也可以提取订单项,每月免费50张收据 Elis - 专门处理发票,自动支持多种模板(预先训练的机器学习模型),每月 300 张以下的发票免费如果您愿意完成销售流程(而且它们实际上看起来是真实的并且是真实的):
LucidTech 和 Itemize(不确定它们的准确性以及提取的字段是什么,因为它们的 API 详细信息是非公开的) FlexiCapture Engine - 基于模板,如果您愿意为每种特定发票格式定义一个(免责声明:我隶属于 Elis 的供应商 Rossum。请随意建议编辑添加其他 API!)
【讨论】:
【参考方案2】:Sypht 提供了一个 API 来执行此操作:http://www.sypht.com。
Python 客户端:https://github.com/sypht-team/sypht-python-client
第一步
pip install sypht
第 2 步
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))
免责声明:我隶属于供应商
【讨论】:
【参考方案3】:查看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 的联合创始人,有任何问题欢迎随时提问
【讨论】:
【参考方案4】:从发票中提取数据是一个复杂的问题。我还没有看到任何开源解决方案。 OCR 只是数据提取过程的一部分。你需要图像预处理、数据识别的AI引擎等。
您有很多解决方案来解决这个问题。他们每个人都有点不同。 @Peter Baudis 已经提到了其中的一些。
他们从非常简单:
OCR SPACE Receipt scanning - 以表格格式提取数据,但您仍然需要解析它们并确定文本的哪一部分是例如发票号码更高级:
Nanonets - 机器学习 API 许多解决方案(发票、税单……) typless - 任何文档(发票、采购订单等)的单一调用 API,每月 50 张发票免费 Parascript - 模板系统,类似于 Abby FlexiCapture了解您的用例是什么很重要。没有万能的解决方案。这取决于您要达到的目标:
数据挖掘 - 它必须既便宜又快速。丢失或不正确的数据不是关键任务。您可以在数据分析中对其进行清理。
企业中的自动化 - 训练有素的重复发票必须几乎 100% 工作。速度和新发票不是关键任务。
海关等自动化 - 尽可能多地返回数据至关重要。整个集合的准确性至关重要,但可能无论如何都会审查每个文档。
因此,您应该对它们进行测试,看看它们如何适应您的流程/需求。
免责声明:我是typless的创造者之一。欢迎提出修改建议。
【讨论】:
【参考方案5】:你可以试试 Nanonets,这个 Github repo 中有一个示例:
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))
【讨论】:
以上是关于发票自动数据提取 OCR 或 PDF [关闭]的主要内容,如果未能解决你的问题,请参考以下文章