大家好,这节课我们来谈谈如何从PDF文档中获取业务所需要的数据。在实际项目中,我们经常会遇到需要处理PDF文档中数据的场景,比如某企业或者银行将个人征信信息以PDF格式方式存储,业务中先从该文档获取指定数据,然后将这些数据搬运到Web系统对应的字段中或者将字段存入数据库中,在这种场景里,首先需要做的是要将PDF文档中的数据读取出来,然后进行后续的操作。那么,如何才能从PDF文档中获取我们所需要的字段呢?
接下来,我们一起谈谈具体操作思路及操作步骤。
准备工作:
1)准备开发流程的电脑,请打开云扩学院链接查看云扩RPA编辑器运行的硬件&软件要求(https://academy.encoo.com/wiki/Studio/quickStart/HarewareAndSoftwareRequirements.md?)
2)打开云扩官网(https://www.encoo.com/)下载编辑器并安装。
解决方案:
1)将PDF转换为Excel,然后从Excel中获取对应的数据;
2)将PDF转换为Word,再从Word中获取对应数据。
根据业务需求及PDF文档模板来决定转换为Excel还是Word格式。那么,又该怎么判断要转换为Excel或者Word格式呢?这里,我们用两种模板的PDF文档来举例,第一份模板格式如下所示:
该业务中我们需要获取“订单号”及“联系人”等第一个表格中的数据,但订单号不在表格中,所以转换为Excel格式不太可靠,那么我们就转为Word格式来操作。
第二份PDF模板,模板中所有数据都在表格中,如下面视频所示:
这类PDF文档,我们可以转换为Excel然后进行后续操作。
本节课我们以转换为Word格式为例进行讲解。
流程开发思路及步骤:
1)设计流程思路:
2)流程开发步骤:
打开云扩编辑器,选择“项目”,并点击“新建项目”进行创建项目。
根据流程设计,我们需要用到PDF转换组件及处理Word组件。打开“流程市场”,下载“PDF格式转换工具包”与“Office Word组件包”。
下载后在扩展中能看到对应的组件包,如下图所示:
进入项目,拖入“PDF转Word”组件,添加PDF文档路径与转换后的Word路径变量并输入属性:
拖入“Word打开/新建”组件,添加word变量并输入对应属性:
打开Word文档(如下图所示)后首先获取订单号,但订单号不在表格中,我们可以考虑选择行与复制来获取。
拖入“Word选择行”组件,并输入对应的属性,如上面Word文档截图所示,订单号在第4行,那么我们定义“起始行”与“结束行”的值为4:
选择行之后进行复制,并将复制的值从剪切板获取。拖入“Word复制”组件与“获取剪贴板”组件并输入对应的属性变量:
再从Word文档截图可见,第4行数据除了订单号外还有打印日期,那么我们需要进行简单处理,以字串中的冒号“:”与"Print“的第一个字母”P“切割(Split()方法),并删除字串前后空格,用Trim()方法,即:bookingNo.Split(':')[1].Split('P')[0].Trim(),我们用确认框来测试这种方法是否可行,如下图所示,可获取正确的订单号:
接下来需要获取表格中的数据,我们用“Word获取表格”组件,获取数据的表格在Word文档中属于第1个表格的位置。拖入“Word获取表格”组件,并添加变量,输入顺序等属性,然后用“预览数据表”组件进行预览获取的表格是否正确
运行并预览获取的数据表,数据获取完整,如下图所示:
以上操作已获取到表格外的订单号与表格中的数据了,那么接下来需要处理数据表中的数据。我们用数据表“遍历行”组件进行遍历每一行,每一行中再用“循环操作(While)”组件进行处理每一列数据。
拖入“遍历行”组件,输入对应处理的数据表变量:
拖入“循环操作(While)”组件,并添加变量与循环条件,循环条件为:index( 用row.ItemArray.Length方法获取DataRow的列数,index作为列index)
接下来我们用“确认框”组件来检查每一行每一列数据( row[index].ToString()),用“赋值”组件递增index,如下图所示:
至此,从PDF文档中按需获取数据流程已开发完毕,保存流程并运行,参考以下视频:
获取到正确数据后要填入数据库或者搬运到web端系统待后续课程中进行讲解,本次课程到此结束~