Invoice Parse - PDF 和扫描文档的发票数据提取 PlatoBlockchain 数据智能。垂直搜索。人工智能。

发票解析 – PDF 和扫描文档的发票数据提取

如果您曾经不得不手动处理发票,那么您就会知道该过程是多么的耗时和乏味。 更不用说,它很容易出错,因为当你手工做所有事情时很容易错过一些东西。

这就是发票解析器的用武之地。这些工具可以自动化从发票中提取数据的过程,从而可以快速轻松地获得所需的信息。 这可以为您节省大量时间和麻烦,并有助于确保您的发票得到准确处理。

本文探讨了使用发票解析器提取发票数据的过程,并讨论了一些最佳方法,包括表格提取、高级 OCR 和深度学习。

我们还将研究自动发票数据提取相对于手动处理的优势。 让我们潜入水中。

什么是发票解析器?

发票解析器是一种旨在读取和解释发票文档的软件。 这可以包括 PDF、图像和其他类型的文件。

发票解析器的目的是从发票中提取关键信息,例如发票 ID、到期总金额、发票日期、客户姓名等。 发票解析器可以通过避免手动数据提取可能发生的错误来帮助确保准确性。

然后可以将这些信息用于各种目的,例如 AP自动化, 月末会计结算流程和发票管理。

发票解析器可以是独立程序,也可以集成到更大的商业软件系统中。 这些工具使团队更容易生成报告或将数据导出到其他应用程序,例如 Excel,并且通常与其他业务管理应用程序一起使用。

市场上有许多不同的发票解析软件解决方案,因此选择一种满足您特定需求的解决方案至关重要。

发票解析器如何工作?

要了解发票解析器的工作原理,了解解析器的工作知识很重要。

解析器用于解释和处理以特定标记语言编写的文档。 他们将文档分解成更小的部分,称为标记,然后分析每个标记以确定其含义以及它如何适合文档的整体结构。

为此,解析器必须对所使用的标记语言的语法有深刻的理解。 这使他们能够识别单个令牌并正确理解它们之间的关系。 根据解析器的不同,这个过程可以是手动的也可以是自动的。 手动解析器需要有人单步执行文档并识别每个标记,而自动解析器使用算法自动检测和处理标记。 无论哪种方式,解析器在理解用标记语言编写的文档方面都起着至关重要的作用。

在数据提取中,发票解析可以分析发票文档并提取相关信息。

例如,考虑这样一种情况,您收到了许多发票并希望以结构化格式存储其中的数据。 发票解析使您能够加载所有文件并运行光学字符识别 (OCR),以便在几分钟内读取数据并提取所有键值对。 接下来,您可以使用一些后处理算法将它们存储为更易读的格式,例如 JSON 或 CSV。 你也可以 构建流程和工作流 使用发票解析自动从您的业务记录中提取发票。

使用 Python 进行发票解析

Python 是一种用于各种数据提取任务的编程语言,包括发票解析。 本节将教您如何使用 Python 库从发票中提取数据。

构建一个可以在所有数据类型上运行的最先进的通用发票解析器是很困难的,因为它包括各种任务,例如阅读文本、处理语言、字体、文档对齐和提取键值对。 但是,在开源项目的帮助和一些独创性的帮助下,我们至少可以解决其中一些问题并开始使用。

例如,我们将在示例发票上使用一个名为 tabula 的工具——一个用于提取表格以进行发票解析的 python 库。 要运行以下代码片段,请确保 Python 和 tabula/tabulate 都安装在本地计算机上。

样品发票.pdf.

from tabula import read_pdf
from tabulate import tabulate
# PDF file to extract tables from
file = "sample-invoice.pdf"

# extract all the tables in the PDF file
#reads table from pdf file
df = read_pdf(file ,pages="all") #address of pdf file
print(tabulate(df[0]))
print(tabulate(df[1]))

输出

-  ------------  ----------------
0  Order Number  12345
1  Invoice Date  January 25, 2016
2  Due Date      January 31, 2016
3  Total Due     $93.50
-  ------------  ----------------

-  -  -------------------------------  ------  -----  ------
0  1  Web Design                       $85.00  0.00%  $85.00
      This is a sample description...
-  -  -------------------------------  ------  -----  ------

我们可以用几行代码从 PDF 文件中提取表格。 这是因为 PDF 文件格式正确、对齐且以电子方式创建(不是由相机捕获)。 相比之下,如果文档是由相机捕获而不是电子生成的,那么这些算法提取数据的难度会大得多——这就是光学字符识别发挥作用的地方。

让我们用 正方体,一个流行的 Python OCR 引擎,用于解析发票。

import cv2
import pytesseract
from pytesseract import Output

img = cv2.imread('sample-invoice.jpg')

d = pytesseract.image_to_data(img, output_type=Output.DICT)
print(d.keys())

这应该给您以下输出–

dict_keys(['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text'])

使用这本词典,我们可以获取检测到的每个单词、它们的边界框信息、其中的文本以及它们的置信度分数。

您可以使用以下代码来绘制方框–

n_boxes = len(d['text'])
for i in range(n_boxes):
    if float(d['conf'][i]) > 60:
        (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
        img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow('img', img)
cv2.waitKey(0)

您将看到以下输出:

这就是我们可以使用和识别发票区域的方式。 但是,必须为键值对提取构建自定义算法。 我们将在以下部分中了解有关此内容的更多信息。

遗留发票解析器的问题(基于规则的捕获)

今天,许多组织仍然依赖遗留系统来提取发票数据。

这些“基于规则”的系统解析发票上的每个行项目,然后将它们与一组规则进行比较,以确定是否应将信息添加到其数据库中。

这种方法已经使用了很长时间,但有几个缺点。 让我们看看遗留发票解析器面临的一些常见问题。

  • 扫描时页面倾斜:基于规则的发票解析器的一个问题是它们可能难以处理“页面倾斜”。 当发票中的字段不在一条直线上时,就会发生这种情况,从而使解析器难以准确识别和提取数据。 这通常是由于打印机打印不均匀或手动输入的数据可能未正确对齐造成的。
  • 格式变更:企业面临的最常见问题之一是未采用标准格式格式化的发票。 在尝试从发票中提取数据时,这可能会导致问题。 例如,可以使用不同的字体,发票布局可能会从一个月到另一个月发生变化。 很难解析数据并确定每列代表什么。 例如,可以将一些新字段添加到发票中,或者可以将一些现有字段放置在不同的位置。 或者可能有一个全新的结构,因此普通的基于规则的解析器将无法正确识别发票。
  • 表抽取:基于规则的表提取器通常是从表中提取数据的最直接、最简单的方法。 但是,在处理不包含任何标题或在特定列中包含空值的表时,它们有其局限性,因为这些情况会在处理过程中导致无限循环,从而导致浪费时间将无限长的行加载到内存中(或不输出任何内容)根本)如果存在涉及这些属性的依赖表达式。 此外,当表跨越多个页面时,基于规则的解析器将它们视为不同的表而不是一个表,从而误导提取过程。

使用 Nanonets 构建基于 AI 的发票解析器

具有光学字符识别 (OCR) 和深度学习的发票解析器可以从已扫描或转换为 PDF 的发票中提取数据。 然后,这些数据可以填充会计软件、跟踪费用并生成报告。

深度学习算法可以学习如何识别发票中的特定元素,例如客户姓名、地址和产品信息。 这允许更准确的数据提取,并可以减少手动将数据输入系统所需的时间。 然而,构建这样的算法需要大量的时间和专业知识,但不用担心; Nanonets 有你的支持!

Nanonets 是一款 OCR 软件,它使用人工智能自动从 PDF 文档、图像和扫描文件中提取表格。 与其他解决方案不同,它不需要为每种新文档类型提供单独的规则和模板。 相反,它依靠认知智能来处理半结构化和看不见的文档,同时随着时间的推移不断改进。 您还可以自定义输出以仅提取您感兴趣的表或数据条目。

它快速、准确、易于使用,允许用户从头开始构建自定义 OCR 模型,并具有一些简洁的 Zapier 集成。 数字化文档、提取表格或数据字段,并通过 API 在简单、直观的界面中与您的日常应用程序集成。

[嵌入的内容]

为什么 Nanonets 是最好的 PDF 解析器?

  • Nanonets 可以提取页面数据,而命令行 PDF 解析器仅提取对象、标题和元数据,例如(标题、#pages、加密状态等)
  • Nanonets PDF解析技术不是基于模板的。 除了为流行的用例提供经过预训练的模型外,Nanonets PDF解析算法还可以处理看不见的文档类型!
  • 除了处理原生 PDF 文档外,Nanetet 的内置 OCR 功能还允许它处理扫描的文档和图像!
  • 具有AI和ML功能的强大自动化功能。
  • Nanonets 可以轻松处理非结构化数据、常见数据约束、多页 PDF 文档、表格和多行项目。
  • Nanonets 是一种无代码工具,可以根据自定义数据不断学习和重新训练,以提供无需后处理的输出。

使用 Nanonets 自动解析发票 – 创建完全非接触式发票处理工作流程

将您现有的工具与 Nanonets 集成并自动化数据收集、导出存储和簿记。

Nanonets 还可以通过以下方式帮助自动化发票解析工作流程:

  • 从多个来源导入和整合发票数据——电子邮件、扫描文档、数字文件/图像、云存储、ERP、API 等。
  • 从发票、收据、账单和其他财务文件中智能地捕获和提取发票数据。
  • 根据业务规则对事务进行分类和编码。
  • 设置自动审批工作流程以获得内部审批和管理异常。
  • 核对所有交易。
  • 与 ERP 或会计软件(如 Quickbooks、Sage、Xero、Netsuite 等)无缝集成。

时间戳记:

更多来自 人工智能与机器学习