如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

如何为自动化OCR采购订单

任何公司的典型采购流程都有多个与之相关的文件,例如 费用单据、采购订单、交货单等。这个流程一直是基于技术改进的一贯重点,以减少开销。主要优化是通过这些文档的数字化来降低成本、缩短周转时间并降低错误率。这篇文章将概述当前最先进的基于 OCR 的数据捕获技术,这些技术特别关注采购订单。

无需过多讨论,典型的采购工作流程如下所示:

  1. 买方生成采购订单
  2. 供应商生成发票
  3. 买家生成 GRN/订单 收据 备注

由于这些文档所包含的信息和结构的不同,每个文档的数据捕获过程和要求之间存在一些细微的差异。主要区别还在于谁在准备文档以及因此谁需要将文档数字化。

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

三向匹配

数字化的一个主要原因是这些文件需要全部证实并讲述交易的一致故事。这 3 个文档的佐证过程称为三向匹配。三向匹配的需求和过程因匹配的执行者(买方或卖方)而有很大差异。

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

买家观点:

买方生成 PO 和 收据 并拥有可以在其软件中轻松协调的信息。需要匹配 发票 采购订单和 收据。买方需要将其数字化 发票 其他文档已经在他们的 ERP 系统中。

买家需要进行三向匹配的原因有多种:

  1. 通过匹配来确保购买得到授权 发票 和 GRN 以及采购订单
  2. 通过跨文档匹配来确保购买正确的产品
  3. 确保采购和交付了正确的授权数量。
  4. 确保每件产品支付的价格均得到授权
  5. 确保选择正确的供应商,并且正确的供应商最终将获得付款,因为相同的产品可能从不同的供应商采购
  6. 将库存与GRN中的数量匹配,以实现下游数据质量

卖方观点:

卖方生成 发票 并需要确保 PO 和 收据 与发票中的信息相符。卖方需要将采购订单和收据数字化,发票是从他的 ERP 生成的。

卖方需要三向匹配

  1. 检查系统中给定的库存是否可以满足采购订单
  2. 确保运送的货物与所要求的产品相匹配
  3. 确保向正确的客户发送了所需的产品
  4. 确保所要求的产品是交付给客户的产品
  5. 确保将正确的数量提供给客户
  6. 确保采购订单中的价格具有可以实现的毛利率

正在寻找基于人工智能的 OCR 解决方案来自动化采购订单?给予纳米网智能自动化平台 旋转一下,让您的采购订单进入自动驾驶状态!


手动三向匹配的问题

由于三方匹配问题对于双方满足合同的要求至关重要,因此效率和准确性至关重要。 但是,从多种角度来看,这是一个相当高的过程成本:

文档跟踪和错误的人为成本

  1. 这是一个混乱的过程,尤其是在多次修订采购订单时。 维护PO的正确版本可能很困难。 如果处理不正确,可能会导致多次付款,额外物品的交付等。
  2. 频繁的供应商,买方之间有多个类似的文件和交易。 这些交易可以被消耗。
  3. 该过程无法扩展。 当处理量快速变化时,保持最佳的人力资源很困难。 大多数公司的这些部门人员过多,无法弥补数量激增的情况

付款或采购延迟

  1. 来自文档的数据是手动输入的。 当处理的文档数量增加时,此过程成为瓶颈
  2. 延迟可能导致交货/付款/采购延迟。 由于原材料采购等方面的延迟而导致高昂的营运资金成本或收入损失。

库存错误

  1. 如果库存系统未正确与此流程集成,则会存在错误计算库存的高额成本。 导致库存过多,订单重复,库存不足和收入损失。

三向匹配错误

在此过程中会发生各种不同的错误。 以下是一些示例

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

供应商匹配错误

供应商匹配通常基于两件事来完成:供应商名称和地址。由于同一家公司可能拥有不同的子公司和不同的业务部门,发行类似的 发票.

如果采购订单中的地址和 发票 没有识别正确的地址和供应商名称,匹配时可能会出现问题。还可以清楚地看到,仅直接文本匹配在匹配发票和采购订单时不起作用。

采购订单 发票 Status
Acme 公司 Acme 公司 方式
Acme 公司 Acme Inc.非洲 失败
顶点 Acme LLC。 失败
Acme LLC。 Acme LLC。 炮兵师 失败

产品匹配错误

产品是最难匹配的项目,因为它们很少在采购订单和发票中使用相同的名称,并且 收据。这很可能是导致错误的最大原因。

导致错误的原因可能是同一产品的版本不同,尺寸,规格和价格不同。 该产品可能有最新更新,提供了不可用物品的替代品,等等。

采购订单 发票 Status
TYLENOL鼻窦压力和疼痛 TYLENOL鼻窦压力和疼痛 方式
泰诺 TYLENOL鼻窦压力和疼痛 失败
TYLENOL鼻窦压力和疼痛 TYLENOL®静脉窦压力和疼痛 失败
TYLENOL额外的力量 TYLENOL Extra Strength Pain Reliever&Fever Reducer 500 mg Caplets 失败
TYLENOL Extra Strength Pain Reliever&Fever Reducer 500 mg Caplets TYLENOL Extra Strength Pain Reliever&Fever Reducer 250 mg Caplets 失败

数量匹配错误

即使正确地匹配了产品,如果无法提供指定数量的产品,匹配数量也可能会出错,等等。在采购订单和GRN之间通常也是如此,因为这两个文档之间通常存在时间差。

价格匹配错误

如果在整个产品购买生命周期中价格发生变化,或者产品已更新或替换,则可能会发生此错误。

重复文件

如果经常从同一供应商处购买相似产品,则可能会有多个看起来非常相似的文档。 如果发票和发票或PO的GRN中未提及PO的参考编号,则文档不匹配的范围很广。


数字化采购订单

要从采购订单中收集所有相关数据,需要提取以下字段:

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

要提取的通用字段列表(在采购订单中,它们可能具有不同的名称):

帐单地址 付款条件 子总计
买方名称 订单号 联系原因
联络人姓名 产品 合计
货币 采购订单日期 单价
运送到 数量 供应商名称
截止日期 申请编号

当前的解决方案及其问题

模板+文字匹配

这涉及定义确切区域以查找特定信息。 因此,假设您要提取日期,并且整个文档的格式完全相同,并且日期出现在文档中的完全相同的位置。 我们定义了要在文档中查找日期的区域。
过程如下:

  1. 将文档转换为图像
  2. 我们给出一个样本文件
  3. 标记找到日期的区域(文档被视为左上角为(0,0)的坐标系),我们可能会将(200,300)标记为(350,450),这是该日期的关注区域
  4. 当有新文件时,我们检查(200,300)至(350,450)并提取其中的文本

从历史上看,这一直是解决此问题的最常用方法之一。 这是由于多种原因造成的:

  1. 软件的简单性和实现性。 称职的程序员可以在不到一天的时间内创建此解决方案
  2. 毫无疑问,解决方案将如何工作,如果文档的格式完全相同,它将可以完美地工作
  3. 它需要非常有限的计算资源来提取数据

但是,鉴于此方法的基本程度,存在一些非常明显的挑战:

  1. 如果文档之间有细微的差别也不会起作用
  2. 如果买方更新其格式,则不起作用
  3. 对于每个买家,需要设置一种新格式
  4. 它不适用于扫描的文档
如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

OCR + NLP +文本匹配

OCR + NLP是一种从文档中提取数据的更新技术。 OCR是一个经过充分研究的问题,大多数时候从文档中提取文本是可行的。 下一步是获取从文档中提取的所有原始文本,然后尝试解析文档中的各个文本片段

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

在NLP中,可以使用多种技术来解决此问题

  1. 正则表达式(正则表达式)

要提取日期,正则表达式如下所示:

^(?:(?:31(/|-|.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))1|(?:(?:29|30)(/|-|.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)(?:0?2|(?:Feb))3(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))4(?:(?:1[6-9]|[2-9]d)?d{2})$

摘录01/02/2020

Sumber: https://stackoverflow.com/questions/15491894/regex-to-validate-date-format-dd-mm-yyyy

基于Regex的解决方案的缺点是每种新格式都需要分别编程。 如果有新格式,则需要将其添加到正则表达式中。 它不能确定特定日期是交货日期,还是到期日期或采购订单日期。

2. NER(命名实体识别)

使用NER提取字段类型

results = stanford_ner_tagger.tag(article.split()) print('Original Sentence: %s' % (article)) for result in results: tag_value = result[0] tag_type = result[1] if tag_type != 'O': print('Type: %s, Value: %s' % (tag_type, tag_value))

拷贝(Prints)
Type: DATE, Value: 01/02/2020

Sumber: https://towardsdatascience.com/named-entity-recognition-3fad3f53c91e

基于NER的提取的缺点是,它对于定义明确的类型效果很好,但对于地址和非标准格式的内容等各种类型却无效。 它适用于日期,货币,电话号码等。偶尔适用于名称和实体。 它有一个类似的问题,即不知道交货日期是哪个日期,应该是采购订单的日期还是日期。

3.强制供应商/买方使用您的软件提交文档

如果卖方或买方在交易中具有重大影响力,则可以强迫另一方使用其软件来提交其文档。 这消除了大多数问题,并将全部责任转移给了供应商,并且不需要文档数字化。 但是,这存在着一个普遍存在的问题,即要求对方与您的软件进行交互。 即使有3个参与方不遵循此协议,也需要付出很大的努力才能将其添加到现有系统中。


深度学习

近年来,深度学习技术在提取数据和更重要的是提取可以导致更好的预测的功能方面已变得相当先进。

图卷积神经网络(GCN)可用于从这些文档中提取数据。 我们为GCN提供了各种不同的功能,每个功能都可以用来提取正确的信息。

它可以分为两个步骤:
1.特征提取

我们从每个文本块中提取各种功能。

a)文字功能

b)视觉特征

c)位置特征

d)尺寸特征

e)字体功能

2.图形创建

为每个文本块创建这些功能,然后创建一个图形。 对于每个文本块,都会传递其邻居的特征。 利用为每个文本块创建的图形功能和其他功能,然后将其分类为关注的字段之一或无。

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

文件比对

匹配文档深度学习也是一个很好的解决方案,其中可以解析每种文档类型中提取的字段,以在文档匹配时做出最终预测。

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

深度学习的问题

有两类信息要提取

1.键值问题(采购订单号,日期等)

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。
  • 标识键值对。 它们在格式上的位置不一致,也不清楚要浏览多少个邻居。
  • 考虑多种语言。
  • 没有足够的数据来训练特定的键(类不平衡)

2.表值问题

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。
  • 将任何框分类为表格
  • 具有多个表的页面中缺少表
  • 合并两个关闭的列
  • 将页面边框误解为表格边框

3.其他问题

  • 轮作和裁剪
  • 图像质量差
  • 数据漂移

使用纳米网

解决在订购单上使用深度学习进行OCR的问题

使用Nanonets API您可以自动提取匹配文档所需的所有必需密钥。 只需上传一个文档,并以您选择的格式返回所有提取的字段即可。

我们解决了上面列出的大多数问题,因此您不必花时间重新发明轮子。

关键值对:

1.确定键值对。 它们在格式之间的位置不一致。

使用我们的GCN实施,我们可以解析文档中的键。 我们的GCN实施方案包括进行优化,以查找正确的邻域搜索,从而在特征爆炸和缺少上下文之间实现最佳过渡,以便模型能够正确解释每个键属于哪个键

2.考虑多种语言。

我们的模型已经使用与语言无关的文本嵌入进行了训练。 这是通过创建要素空间来实现的,以使“发票”和“ Faktura”(德语的发票)和)ाना(印地语的发票)的单词嵌入都映射到同一要素空间。 因此,文本功能变得与语言无关,并且无需针对每种语言训练模型。

3.没有足够的数据来训练特定的键(类不平衡)

我们拥有大量的财务文件,我们的模型也经过培训,可以缓解此问题。

1.将任何盒子分类为桌子

我们建立了一个强大的分类器,可以识别具有不同格式和设置的各种不同表。 这结合了视觉功能和布局功能以及基于文本的功能,以识别表的结构。

2.具有多个表的页面中缺少表

在跨页面识别了每个不同的表结构之后,我们有了一个合并逻辑,该逻辑确定该结构是否足够相似以进行合并,以及前一页上的表是否不完整以确定是否应合并两个表。

3.合并两个关闭的列

如果我们仅依靠视觉特征,这将成为一个问题,因为很难识别基于空间的分隔。 但是,通过包含可视文本和基于位置的功能,可以识别列中包含的数据类型在足够不同的地方被称为新列。

4.将页面边框误解为表格边框

与上述类似,通过使用各种功能来确定特定结构是表格还是页面边框,可以解决此问题。

其他问题

1.轮作和裁剪

作为预处理步骤的一部分,我们已经实现了旋转和裁剪模型,以识别文档的边缘,然后正确调整文档的方向。 这使用类似于对象检测模型的模型,其中修改了目标函数以标识4个角,而不是对象检测问题中标准的2个点。 这解决了轮播和裁剪问题

2.文件质量模糊不清

我们在预处理流程中放置了一个质量模型,该模型仅接受超过特定质量阈值的文档。 这是一个二进制分类器,它是一个简单的图像分类模型,在许多质量优良的文档上进行了训练。 在文档捕获管道中,如果文档不符合要求的质量标准,则可以提早拒绝它们,并可以将其发送以进行重新捕获或手动处理。

2.数据漂移

当模型仅暴露给单个供应商或单个区域的数据时,数据漂移便成为问题。 如果模型已在各种不同的供应商,地理行业等进行过历史训练,则数据漂移的可能性将大大降低,因为它已经暴露于这些差异中。

开始数字化采购订单并 费用单据 现在有了纳米网 – 1单击PO数字化:

如何为自动化 PlatoBlockchain 数据智能 OCR 采购订单。 垂直搜索。 哎。

延伸阅读

更新1:
添加了有关从采购订单中提取信息和使用 OCR 实现自动化的进一步阅读材料

更新2:我们显着提高了模型从 PO 中提取数据的准确性。

设置演示

设置演示以了解Nanonets如何帮助您解决此问题

时间戳记:

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