activities
latest
false
- 概述
- 文档处理合同
- 发行说明
- 关于文档处理合同
- Box 类
- IPersistedActivity 接口
- PrettyBoxConverter 类
- IClassifierActivity 接口
- IClassifierCapabilitiesProvider 接口
- 分类器文档类型类
- 分类器结果类
- 分类器代码活动类
- 分类器原生活动类
- 分类器异步代码活动类
- 分类器文档类型功能类
- 提取程序异步代码活动类
- 提取程序代码活动类
- 提取程序文档类型类
- 提取程序文档类型功能类
- 提取程序字段功能类
- 提取程序原生活动类
- 提取程序结果类
- ICapabilitiesProvider 接口
- IExtractorActivity 接口
- 提取程序有效负载类
- 文档操作优先级枚举
- 文档操作数据类
- 文档操作状态枚举
- 文档操作类型枚举
- 文档分类操作数据类
- 文档验证操作数据类
- 用户数据类
- 文档类
- 文档拆分结果类
- DomExtensions 类
- 页类
- 页面分区类
- 多边形类
- 多边形转换器类
- 元数据类
- 词组类
- 词类
- 处理源枚举
- 结果表格单元类
- 结果表值类
- 结果表列信息类
- 结果表类
- 旋转枚举
- 分区类型枚举
- 词组类型枚举
- IDocumentTextProjection 接口
- 分类结果类
- 提取结果类
- 结果文档类
- 结果文档范围类
- 结果数据点类
- 结果值类
- 结果内容引用类
- 结果值令牌类
- 结果派生字段类
- 结果数据源枚举
- 结果常量类
- 简单字段值类
- 表字段值类
- 文档组类
- 文档分类类
- 文档类型类
- 字段类
- 字段类型枚举
- 语言信息类
- 元数据输入类
- 文本类型枚举
- 类型字段类
- ITrackingActivity 接口
- ITrainableActivity 接口
- ITrainableClassifierActivity 接口
- ITrainableExtractorActivity 接口
- 可训练的分类器异步代码活动类
- 可训练的分类器代码活动类
- 可训练的分类器原生活动类
- 可训练的提取程序异步代码活动类
- 可训练的提取程序代码活动类
- 可训练的提取程序原生活动类
- Document Understanding 数字化器
- Document Understanding ML
- Document Understanding OCR 本地服务器
- Document Understanding
- 智能 OCR
- ML 服务
- OCR
- OCR 合同
- OmniPage
- PDF
- [未公开] Abbyy
- [未列出] Abbyy 嵌入式
Document Understanding 活动
Last updated 2024年10月29日
读取 PDF 文件
您可以使用可读取文档中包含的所有字符的活动来读取
.pdf
文件的内容,并单独提取其内容。
根据您的需要,您可以使用可以识别字符的简单活动,也可以将其与 OCR 引擎一起使用。 使用 OCR 引擎的好处是,甚至可以对扫描、签名或手写的文档应用文档读取。
以下示例显示了读取
.pdf
文件的两种情况:
- 第一个示例说明了在使用“读取 PDF 文本”活动时如何读取
.pdf
文件。 - 第二个示例说明了在使用“使用 OCR 读取 PDF”活动时如何读取
.pdf
文件。这两种情况的主要区别在于,第二种情况也使用 OCR 引擎,这意味着如果分析的文件是图像、扫描文件或包含签名或手写字段,则提取的信息的详细信息比第一种情况更准确。 您可以在 UiPath.PDF.Activities 包中找到这两个活动。
这两种场景只需要一个工作流,直到要求用户选择所需的阅读方法为止。
步骤
- 打开 Studio ,创建一个新“流程”。
- 在“工作流设计器”中添加“流程图”容器。
- 创建名为
chooseOption
的变量,使其类型为“通用值”,无默认值。注意: 将.pdf
文件添加到项目目录中,以便能够从同一位置运行整个流程,或下载此示例以使用给定文件。
- 创建名为
- 添加“输入对话框”活动,并将其连接到“开始节点”。
- 在“ 属性 ” 面板的“ 标签 ” 字段中添加表达式
"Choose one option below:"
。 - 在“ 选项 ” 字段中添加表达式
{"Read PDF Text", "Read PDF With OCR"}
。 - 在“标题”字段中添加值“
"Options"
”。 - 在“结果”字段中添加
chooseOption
变量。
- 在“ 属性 ” 面板的“ 标签 ” 字段中添加表达式
- 在“输入对话框”活动之后添加“流程决策”活动并将这两个活动相连接。
- 在“ 属性 ” 面板的“ 条件” 字段中添加表达式
chooseOption = "Read PDF Text"
。
- 在“ 属性 ” 面板的“ 条件” 字段中添加表达式
- 添加一个“序列”容器,并将其连接到“流程决策”活动的“True”分支。“序列”的名称应为“读取 PDF 文本”。此活动使用正则表达式提取信息。
- 创建下表中显示的变量:
表 1. 要创建的变量 变量名称
变量类型
默认值
extractedText
字符串
不适用 arrayText
System.String[]
不适用 address
泛型值
不适用 city
字符串
不适用 phoneNumber
字符串
不适用 invoiceNumber
字符串
不适用 vendor
泛型值
不适用 bankName
字符串
不适用 bankAccount
字符串
不适用 ibanCode
字符串
不适用
- 创建下表中显示的变量:
- 添加一个“序列”容器,并将其连接到“流程决策”活动的“False”分支。“序列”的名称应为“使用 OCR 读取 PDF”。此活动使用 OCR 引擎(Microsoft OCR 和 Tesseract OCR)提取信息。
- 创建下表中显示的变量:
表 2. 要创建的变量 变量名称
变量类型
默认值
extractedTextTesseract
字符串
不适用 extractedTextMicrosoft
字符串
不适用
图 1. 工作流开始概览
- 创建下表中显示的变量:
- 使用“读取 PDF 文本”活动读取 PDF 文件:
- 双击“读取 PDF 文本”序列容器,将其打开。
- 在序列中添加“读取 PDF 文本”活动。
- 在“ 属性 ” 面板的“ 文件名 ” 字段中添加表达式
"NPO Invoice.pdf"
。 - 在“ 范围 ” 字段中添加值
"All"
。 - 在“文本”字段中添加“
extractedText
”变量。
- 在“ 属性 ” 面板的“ 文件名 ” 字段中添加表达式
- 将“分配”活动拖动至“读取 PDF 文本”活动后面。
- 在“收件人”字段中添加“
arrayText
”变量。 - 在“值”字段中添加表达式“
extractedText.Split(Environment.NewLine.ToArray, StringSplitOptions.RemoveEmptyEntries)
”。
- 在“收件人”字段中添加“
- 在分配活动下方添加IF 条件活动。
- 在“条件”字段中添加表达式“
arrayText(0).Equals("Tiefland Glass AG")
”。
- 在“条件”字段中添加表达式“
- 将分配活动添加至序列容器。
- 在“收件人”字段中添加“
address
”变量。 - 在“值”字段中添加表达式“
arrayText(2)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
city
”变量。 - 在“值”字段中添加表达式“
arrayText(3).Split(","c)(0)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
phoneNumber
”变量。 - 在“值”字段中添加表达式“
arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
invoiceNumber
”变量。 - 在“值”字段中添加表达式“
arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
vendor
”变量。 - 在“值”字段中添加表达式“
arrayText(arrayText.Count-5)
”。
- 在“收件人”字段中添加“
- 在“Else”字段中添加“分配”活动。
- 在“收件人”字段中添加“
address
”变量。 - 在“值”字段中添加表达式“
arrayText(1)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
city
”变量。 - 在“值”字段中添加表达式“
arrayText(2).Split(","c)(0)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
phoneNumber
”变量。 - 在“值”字段中添加表达式“
arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
invoiceNumber
”变量。 - 在“值”字段中添加表达式“
arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1)
”。
- 在“收件人”字段中添加“
- 添加另一个“分配”活动,并将其置于上一个“分配”活动之后。
- 在“收件人”字段中添加“
vendor
”变量。 - 在“值”字段中添加表达式“
arrayText(arrayText.Count-5)
”。图 2. 包含“分配”活动的序列概览
- 在“收件人”字段中添加“
- 在“IF 条件”容器之后,放置“遍历循环”活动。
- 在“值”字段中添加变量
arrayText
。
- 在“值”字段中添加变量
- 在“遍历循环”活动的“正文”容器中添加“If”活动。
- 在“条件”字段中添加表达式“
item.Contains("Bank Name:")
”。
- 在“条件”字段中添加表达式“
- 在“Then”字段中添加“分配”活动。
- 在“收件人”字段中添加“
bankName
”变量。 - 在“值”字段中添加表达式“
item.Split(":"c)(1)
”。
- 在“收件人”字段中添加“
- 在上一个“If 条件”活动之后添加“If 条件”活动。
- 在“条件”字段中添加表达式“
item.Contains("Bank Account:")
”。
- 在“条件”字段中添加表达式“
- 在“Then”字段中添加“分配”活动。
- 在“收件人”字段中添加“
bankName
”变量。 - 在“值”字段中添加表达式“
item.Split(":"c)(1)
”。
- 在“收件人”字段中添加“
- 在上一个“If 条件”活动之后添加“If 条件”活动。
- 在“条件”字段中添加表达式“
item.contains("IBAN Code:")
”。
- 在“条件”字段中添加表达式“
- 在“Then”字段中添加“分配”活动。
- 在“收件人”字段中添加“
ibanCode
”变量。 - 在“值”字段中添加表达式“
item.Split(":"c)(1)
”。图 3. “遍历循环”活动概览
- 在“收件人”字段中添加“
- 返回到“读取 PDF 文本”序列,并在“遍历循环”活动下方添加“写入文本文件”活动。
- 在“ 文件名 ” 字段中添加值
"InvoiceDetails.txt"
。 - 在“文本”字段中添加表达式
"Invoice details"+Environment.NewLine+Environment.NewLine+"Vendor: "+vendor+Environment.NewLine+"Vendor address: "+address+Environment.NewLine+"City: "+city+Environment.NewLine+"Phone number:"+phoneNumber+Environment.NewLine+"Invoice number:"+invoiceNumber+Environment.NewLine+"Bank name:"+bankName+Environment.NewLine+"Bank account:"+bankAccount+Environment.NewLine+"IBAN Code:"+ibanCode
。图 4.“遍历循环”容器概览
- 在“ 文件名 ” 字段中添加值
- 返回到“ 主 工作流”工作区。
- 通过“使用 OCR 读取 PDF”活动读取 PDF 文件。
- 打开“使用 OCR 读取 PDF”序列容器。
- 在序列中拖动“ 使用 OCR 读取 PDF” 活动。
- 在“ 文件名 ” 字段中添加值
"Invoice02.pdf"
。 - 在“属性”面板中,向“并行度”字段添加“
1
”值。
- 在“ 文件名 ” 字段中添加值
- 将 Google OCR 引擎拖动到“ 使用 OCR 读取 PDF” 活动中。
- 在“ 属性 ”面板的“ 文本 ”字段中添加变量
extractedTextTesseract
。
- 在“ 属性 ”面板的“ 文本 ”字段中添加变量
- 拖动另一个“使用 OCR 读取 PDF”活动,并将其置于上一个“使用 OCR 读取 PDF”活动之后。
- 在“ 文件名 ” 字段中添加值
"Invoice02.pdf"
。 - 在“属性”面板中,向“并行度”字段添加“
1
”值。
- 在“ 文件名 ” 字段中添加值
- 将 Microsoft OCR 引擎拖动到“ 使用 OCR 读取 PDF” 活动中。
- 在“ 属性 ”面板的“ 文本 ”字段中添加变量
extractedTextMicrosoft
。
- 在“ 属性 ”面板的“ 文本 ”字段中添加变量
- 将“ 写入文本文件 ”活动拖动到“ 使用 OCR 读取 PDF” 活动下方。
- 在“ 文件名 ” 字段中添加值
"OCRMicrosoft.txt"
。 - 在“文本”字段中添加“
extractedTextMicrosoft
”变量。
- 在“ 文件名 ” 字段中添加值
- 将“写入文本文件”活动拖动到上一个“ 写入 文本文件”活动下方。
- 在“ 文件名 ” 字段中添加值
"OCRTesseract.txt"
。 - 在“文本”字段中添加“
extractedTextTesseract
”变量。图 5. “使用 OCR 读取 PDF”活动概览
- 在“ 文件名 ” 字段中添加值
- 运行流程。 机器人使用指定流程提取数据,并将输出保存在
.txt
文件中。
请访问以下链接,将该示例下载为
ZIP
格式的文件:示例。