请将题目填写完整
上一单元
单元(共单元)
下一单元

如何用文档理解解析 PDF 文件

30分钟

如何用文档理解解析 PDF 文件?

我们在项目开发过程中经常会遇到从 PDF 文件中获取指定数据的场景,那么这节课我们就来讲讲如何使用企业版文档理解的功能获取 PDF 文档中指定的数据:以获取滴滴电子发票中的发票号码、发票总金额数据并存入数据库为例。接下来我们进行详细讲解。

  1. 准备开发流程的电脑,请打开云扩学院链接查看云扩 RPA 编辑器运行的硬件&软件要求(https://academy.encoo.com/wiki/Studio/quickStart/HarewareAndSoftwareRequirements.md?)。

  2. 打开云扩官网(https://www.encoo.com/)下载编辑器并安装。

  3. 购买企业版控制台,并开通/购买文档理解功能。

  4. 编辑器激活方式为:登录控制台激活。

  5. 准备滴滴发票 PDF 文件, 如下图所示:

  6. 准备 MySql 数据库并创建表,代码如下所示:

      CREATE TABLE `tb1_bill` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `billNumber` varchar(50) DEFAULT NULL,
        `billMoney` varchar(50) DEFAULT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSETT=gb2312; 

流程设计图示:

在上述例子中,假设我们需要获取网页中这个表格的最后一列,如果我们使用【获取结构化数据】组件来处理,则无法实现整个 table 数据的正常获取,此时我们就可以使用如下思路来解决问题。

流程操作步骤

控制台创建文档理解模板

  1. 登录企业版控制台(已激活)。

  2. 点击左侧菜单文档理解 -> 点击新建,此时会出现新增模型对话框, 如下图所示:

  3. 输入模板名称、备注(非必填项),选择内置模型、上传模板文件。如下图所示:

  4. 点击确定,进入数据抽取界面,在该界面框选需要获取的数据并定义标签名称与字段类型:

  5. 点击保存模板发布模板,并返回至模板列表页面。至此,控制台文档理解模板已创建完成:

模板创建成功,在列表中可以看到新建的模板。

编辑器端流程开发

  1. 创建一个“文档理解PDF”的项目(看过前面流程开发课程的同学们应该知道怎么创建项目了,这里就不做过多讲解)。 拖入错误捕获(Try Catch) 组件,在Catch中添加异常Exception,并添加打印错误信息日志的操作(可用写入日志组件),再在Try里面拖入流程图组件:

  2. 拖入文档理解组件,并设置参数点击确认

    运行以上流程查看输出内容,即变量result的内容,以JSON字符串形式显示,如下所示:

  3. 拖入执行C#代码组件,编写解析JSON字串的C#代码并从中获取指定字段的数据,即:发票号码和总金额,将获取的数据赋值给变量“发票号”与“金额”:

附上代码如下:

       //代码执行入口,请勿修改或删除
        public void Run()
          { 
          //在这里编写您的代码
            try
            {
              Console.WriteLine("PDF理解处理的Json数据:"+result);
              //获取到
              JObject jo=(JObject)JsonConvert.DeserializeObject(result);
              发票号=jo["pages"][0]["labelResults"][0]["textValue"].ToString().Split(':')[1];
              金额=jo["pages"][0]["labelResults"][1]["textValue"].ToString().Split('¥')[1];

              Console.WriteLine(jo["pages"][0]["labelResults"][0]["textValue"].ToString().Split(':')[0]+":"+发票号);
              Console.WriteLine(jo["pages"][0]["labelResults"][1]["textValue"].ToString().Split(':')[0]+":"+金额);
            }
              catch(Exception ex)
            {
              Console.WriteLine(ex.Message);
            }
          }
        //在这里编写您的函数或者类 
  1. 拖入连接数据库组件并输入连接字串、选择数据库类型并点击测试,连接通过:

    其中Server = 服务器地址,Database = 数据库名,Uid = 用户名,Pwd = 密码 可自行填入自己对应的Server,Database,Uid 和Pwd值。 附上连接字串:

    Server=10.10.xx.xxx;Port=3306;Database=bill;Uid=webxxr;Pwd=Uxxx123;pooling=true; 
    
  2. 拖入执行语句组件,并输入插入数据库的SQL语句:

附上SQL语句如下:

      insert into tbl_bill(billNumber,billMoney)values('"+发票号+"','"+金额+"');

至此,整个流程已开发完成,点击保存并运行,即可读取PDF文件中的发票号和金额并插入到Mysql数据库中。以下视频供参考:

论坛相关讨论

    需要帮助或反馈问题?去云扩论坛参与讨论