[16]PDF Automation in Studio-UiPath ARD Certification Training

前言:【【非原创】】UiPath Advanced RPA Developer Certification Training的课程资料机翻版。
课程链接:Link

1 关于本课程

PDF 是一种广泛用于存储和共享文档的格式。

在本课程中,我们将探索从 PDF 文件中自动提取数据的各种方法。我们将利用 UiPath 提供的活动从 PDF 中提取数据,无论是原生文本格式还是扫描图像。

最后,您将有机会将所学付诸实践。让我们开始!

1.1 您将在本课程中学到什么

在本课程结束时,您应该能够:

  • 安装 UiPath PDF 活动包。
  • 使用不同的活动从 PDF 文件中提取大文本段。
  • 从 PDF 文档中提取一条信息。
  • 使用 Studio 的 UI 自动化功能从具有相同结构的多个文件中提取波动值。

1.2 先决条件

我需要什么技术设置?
在这里插入图片描述
更改 Adob​​e Reader DC Acrobat 设置

如果使用 Adob​​e Reader DC Acrobat 打开 PDF,则可能需要执行几个步骤才能使用 UiPath Studio 方法提取特定元素。
启动 Acrobat 并按 Ctrl+K。这将打开首选项弹出窗口。
从左侧面板的类别中选择阅读。
验证下拉阅读顺序选项是否设置为 Acrobat 推荐选项“从文档推断阅读顺序(推荐)”。
“页面与文档”:应设置为“阅读整个文档”,并且应取消选中“标记文档前确认”。
然后在左侧面板上,单击辅助功能。在“其他辅助功能选项”部分中,如果前两个框尚未选中,请选中它们:“未指定显式 Tab 键顺序时,将文档结构用于 Tab 键顺序”、“启用辅助技术支持”。
单击确定。

2 从 PDF 中提取数据

在开始之前,让我们了解什么是 PDF 文件以及它们的结构。我们将从以下事实开始,即有两种类型的 PDF 文件:原始文件(Native PDF)和扫描文件(Scanned PDF)。

  • Native PDF
    最初在计算机中生成的 PDF 文件,又名“天生数字”,意思是它是从文档的原始电子版本创建的。判断 PDF 是原生 PDF 的一种快速方法是您可以选择文件中的文本块
  • Scanned PDF
    由给定文档的扫描图像组成的 PDF 文件。使用扫描的 PDF,您将无法选择文本或使用搜索功能,因为 PDF 是图像的集合。

在 PDF 自动化中,可以使用两个单独的活动提取数据:

  • 使用读取 PDF 文本活动提取数据。
  • 使用带有 OCR 活动的读取 PDF 提取数据。

Read PDF Text 是两者中更准确的,但仅适用于原生 PDF 文档。使用 OCR 读取 PDF 不太可靠,但可以从扫描的 PDF 文档中提取文本。第二个选项还需要选择 OCR 引擎。
UiPath.PDF.Activities 包中提供了这两个活动。

视频演示 - 从 PDF 文件中提取数据
使用“阅读 PDF 文本”、“使用 OCR 阅读 PDF”和“屏幕抓取”活动从 PDF 文件中提取数据。
Read PDF Text, Read PDF with OCR。

你好,欢迎光临!在本视频中,我们将看到我们如何使用各种数据提取方法从 PDF 文件中提取数字和扫描文本
对于此演示,需要将 PDF 活动包添加到我们的项目依赖项中 UiPath.PDF.Activities
举几个例子,我们可以阅读PDF文本,加入PDF文件,提取一定范围的页面等等。
我们知道 PDF 文件由文本图像有时图像形式的文本组成。
在这个例子中,我们有一个 PDF,它同时包含数字文本和图像形式的文本。
在第一个场景中,我们只想从 PDF 中提取数字文本。让我们添加一个阅读 PDF 文本活动。此活动从指定的 PDF 文件中读取所有字符,并将它们存储在字符串变量中。
在这里插入图片描述

在显示的消息框中,我们可以看到数字文本已被提取,但图像块中的文本丢失。请注意,列中的文本组织已被考虑在内。
为了从图像块中提取文本,我们将在我们的工作流程中添加“使用 OCR 读取 PDF”活动。此活动使用光学字符识别技术从指定的 PDF 文件中读取所有字符,并将其存储为字符串变量。
让我们指定输入文件。我们将为输出文本属性使用相同的变量,“PDFOutput”。
要查找可用引擎,让我们转到“活动”面板并搜索 OCR。
在引擎类别中,我们可以看到我们有多个 OCR 引擎选项可供选择,包括 UiPath 提供的一个。对于这个演示,我们将添加 Tesseract OCREngine。
在这里插入图片描述

对于使用 OCR 阅读文本的一些特殊性,输出的质量高度依赖于图像的清晰度。我们可以看到原始文档中斜体的文本没有被正确检索。此外,该活动无法识别列并且已将所有文本作为单个块进行处理。
接下来,我们将看看另一种可以用来从 PDF 文件中提取数字文本的方法,即屏幕抓取向导。
我们可以从设计功能区访问屏幕抓取向导。
我们需要做的第一件事是指明我们要抓取的 UI 元素。在我们的例子中,PDF 文件中的文本区域。在 Screen Scraper 向导中,我们可以看到只提取了数字文本,因为选择了 FullText 方法。
向导提供了三种抓取方式:Full Text 、Native 和OCR。
==Full Text ==是默认的方法,它快速准确,但与 Native 方法不同,它不能提取文本的屏幕坐标。它可以在后台工作并提取隐藏文本。
TheNativemethod 仅适用于构建为使用图形设备接口 (GDI) 呈现文本的应用程序。它可以提取文本位置,但不能在后台工作或提取隐藏文本。
OCR 并非 100% 准确,但可用于提取其他两种方法无法提取的文本,因为它适用于包括 Citrix 在内的所有应用程序。
让我们保持选中全文选项,然后单击完成。
在这里插入图片描述
对于关键要点:

  • 在我们开始处理 PDF 文件之前,我们应该确保我们已经安装了 UiPath PDF 活动包。
  • 区分数字文本和扫描文本非常重要。
  • 我们在处理数字文本时的一些选项是:获取 PDF 文本、获取全文、获取原生文本。
  • 在处理扫描文本时,我们可以使用基于 OCR 的活动。
  • OCR 活动需要 OCR 引擎。
    感谢您的收看,我们下期再见!

3 从 PDF 中提取单个数据

假设一家中型公司面临着从一个月内生成的所有发票中提取特定数据的艰巨任务。 PDF 文件中所需的数据是贷方金额、到期余额和发票编号。

要手动提取这些数据,将需要大量的工时,但我们可以使该过程自动化。让我们观看一段视频,演示从 PDF 文件中提取特定数据是多么容易。
视频演示 - 提取单条数据

使用获取文本活动从多个​​发票文件中提取数据。
视频抄本
——
你好,欢迎回来!在本视频中,我们将学习如何从 PDF 文档内的 UI 元素中提取文本,然后如何从具有相同布局的多个文件中提取相同的信息。
让我们开始!

我们将处理文本为数字或原生格式的 PDF 文档,这意味着 UiPath 可以直接访问它。我们将从从 Invoice 3B 中的 UI 元素中提取文本开始,稍后我们将看到如何微调选择器以适用于 Invoice 3A 中的等效 UI 元素。
为了提取我们想要的数据,我们将使用 Get Text 活动。
我们有两种添加和配置此活动的方法:从“活动”面板添加使用记录器
我们将从活动面板开始。
让我们在 PDF 文件中指明 UI 元素。在这种情况下,我们希望获得发票总额。
我们将提取的值存储在一个名为“总价值”的新变量中。
如前所述,我们还可以使用 Recorder 来提取数据。让我们打开基本记录器,单击复制文本,然后简单地指出我们感兴趣的元素。
太好了,我们可以保存并退出。
正如我们所见,记录器已通过 Get Text 活动生成了基本序列。请注意,已经为输出值创建了一个变量。
由于两个 Get Text 活动都针对同一个元素,让我们删除 Basic 序列。
在我们执行流程之前,我们将添加一个消息框来显示提取的数据。让我们提供 TotalValue 变量作为输入

现在,假设我们要从一系列类似的 PDF 发票中提取等效文本,而不仅仅是一个文件。在我们的例子中,我们希望 Get Text 活动为 Invoice 3B 和 Invoice 3A 标识 Total Value UI 元素。
正如预期的那样,GetText 活动使用选择器来标识正确的元素。正如您可能已经猜到的那样,我们需要对其进行微调以使其不那么具体。我们可以通过使用自动修复功能或手动编辑选择器来做到这一点。

快速回顾一下:

  • Get Text 活动可用于从 PDF 文件中的 UI 元素中提取单个数字文本。
  • 我们可以从“活动”面板或使用记录器添加活动。
  • 如果我们想遍历多个文件并提取同一条信息,我们通常需要微调选择器以使其不那么具体。

感谢您的收看,我们下期再见!
在这里插入图片描述

4 使用 Anchor Base 提取数据

**Anchor Base 活动用于识别具有不稳定选择器的元素相对于具有稳定选择器的元素。**例如,我们可能想从 PDF 发票中获取一个值。 value UI 元素有一个不稳定的选择器,而 label 元素是稳定的。

此活动由两个块组成,因为它执行与另一个固定元素或锚点相关的操作:

  • **The Anchor block:**仅支持 Find Element 或 Find Image 活动。标识要用作锚点的 UI 元素。
  • **The Action block: **支持目标元素的 UI 交互活动。大多数情况下,对于 PDF,我们将使用 Get Text 活动来检索目标 UI 元素中的文本。

视频演示 - 使用 Anchor Base 活动提取数据
使用 Anchor Base、Get Text、Find Element 和 Find Image 等活动来提取数据。
你好,欢迎回来!在本视频中,我们将看到如何使用经典的 Anchor Base 活动和现代的 Get Text 活动从 PDF 文件中提取数据。
让我们从 Anchor Base 开始。
当我们需要与带有不稳定选择器的 UI 元素进行交互时,我们可以使用 Anchor Base 活动。它使用另一个稳定的 UI 元素作为锚点来搜索目标 UI 元素。
让我们开始构建一个从 PDF 文档中检索 Credit 值的项目。
我们将首先向工作流程添加一个 Anchor Base 活动。
Anchor Base 活动由两个主要块组成:Anchor 和 Action。

  • Anchor 块用于识别稳定的锚元素。它只能使用 Find ElementFind Image 活动。
  • Action 块是我们可以配置活动的地方,一旦 Anchor 被识别,该活动将在目标 UI 元素上执行。
    首先,我们将使用 Anchor 块内的 Find Element 活动。
    我们想从发票中获取信用值并使用信用标签作为锚点。让我们指出信用标签。
    现在我们已经添加了锚点,我们将把 Get Text 活动添加到 Action 块中。我们将在锚元素的右侧指明信用值。
    我们有锚定基地。现在我们需要将 Get Text 活动提取的值存储到一个新变量中。让我们创建一个叫做“信用价值”的东西。
    在我继续之前,检查查找元素活动的选择器是个好主意。
    让我们单击编辑选择器。
    我们可以看到发票编号存在于标题属性中。如果我们想对多个文件使用这个选择器,我们需要让它动态化。

让我们用星号代替它,使选择器更通用。
使用 Find Image 活动的优点是我们不依赖于文档的结构。我们只在文档的可见部分指定图像,我们不再处理选择器。
当然,这种方法也有它的缺点。它不如选择器可靠,图像必须在屏幕上可见,并且受缩放等设置的影响很大
让我们将文档大小调整为其原始大小,以确保我们在设计时和运行时使用相同的缩放设置。
这就是使用经典的 Anchor Base 和现代的 Get Text 从 PDF 中提取数据的全部内容。

对于关键要点:

  • 如果我们想从相对于 PDF 文件中可靠元素的不可靠元素中提取原生文本,我们可以使用 Anchor Base 活动或modern获取文本活动。
  • Anchor base 仅支持在 Anchor Block 中查找元素和查找图像。
  • 图像自动化不处理选择器,但它也不太可靠。
  • Modern活动在其定位方法中集成了锚点。

感谢收看,我们下期再见!
在这里插入图片描述

5 实践

5.1 练习 1 - 使用锚点提取值

考虑一个像所附文件那样的原生 PDF 文档。使用锚点基本活动从发票中检索日期和开票日期值,然后在消息框中显示每个值。
实践1解决方案

使用附加窗口活动附加到 PDF 阅读器窗口。
在 Do 块内拖动一个 Anchor Base 容器:

在 Anchor 块中,拖动 Find Element 活动以选择锚点。

单击屏幕上的指示。

单击要获取的日期旁边的 DATE 标签。

在右侧,拖动“获取文本”活动以读取所需的值。

单击屏幕上的指示。

单击要获取的日期字段(例如 6/6/2016)。

请注意,选择器仅包含具有 type 属性的标记。

在输出属性中,创建一个新变量来保存读取值。

在 Anchor Base 容器的属性中,将 AnchorPosition 设置为 Left 或 Auto。

对于第二个基于锚点的阅读,使用类似的方法,但使用 BILL TO 标签作为锚点,将地址作为获取文本活动的目标,将 Top 或 Auto 作为 AnchorPosition 属性。
序列图
在这里插入图片描述

5.2 练习 2 - 使用 PDF 活动提取值

考虑附加的原生 PDF 文档。使用读取 PDF 文本活动以及字符串操作方法或活动从系列中的每张发票中提取日期值和总价值。

下载随附的 PDF 文件。
实践2解决方案

将发票文件复制到项目文件夹中的发票文件夹。
使用分配活动从指定文件夹中获取所有发票文件路径。
PDFFilePaths = Directory.GetFiles(Environment.CurrentDirectory+"\Invoices")
使用 Build Data Tableactivity 创建一个包含 Invoice Date 和 Invoice Total 列的新 DataTable。
输出数据表 = dt_InvoiceData
添加 For Each 活动。
将 TypeArgument 设置为 String。
将输入集合设置为 PDFFilePaths。
重命名迭代器文件。
添加阅读 PDF 文本活动。
将输出文本属性设置为 InvoiceText。
获取发票日期。
向左/右活动添加文本。
全文 = 发票文本
分隔符 = “日期:”
将文本保存到左侧为 = DiscardedText
将文本另存为 = InvoiceDate
向左/右活动添加另一个文本。
全文 = 发票日期
分隔符 = “收单人”
将文本保存到左侧为 = InvoiceDate
将文本另存为 = DiscardedText
获取发票总额
向左/右活动添加文本。
全文 = 发票文本
分隔符 = “总计:”
将文本保存到左侧为 = DiscardedText
将文本另存为:InvoiceTotal
添加添加数据行活动。
ArrayRow = {InvoiceDate, InvoiceTotal}
数据表 = dt_InvoiceData
在 For Each 活动之后,添加一个写入范围活动以将 dt_InvoiceData 写入 Excel 文件。
序列图
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值