R数据科学实战工具详解与案例分析 》 —1.6 pdftools—PDF文件

网友投稿 898 2022-05-29

1.6 pdftools—PDF文件

学术期刊、网络杂志和电子书籍一般都会以PDF格式的文件呈现。一般的计量型数据分析很少会遇到读取PDF文件的情况,不过在进行文本挖掘(Text Mining)和主题模型(Topic Modelling)预测中,pdftools包绝对是必备R包之一。该包只有两个母函数,一个用来从PDF中提取数据(此处的数据包括数字型和文字型数据),另一个则用来将文件渲染成PDF格式。本节我们只讨论第一个母函数—pdf_info。

pdf_info函数下面一共包含6个子函数,功能各不相同,详见表1-15。但是6个子函数的参数完全一致,分别是pdf、opw和upw,详见表1-16。

表1-15 数据导入函数'pdf_info子函数一览

表1-16 数据导入函数'pdf_info参数详解

由于篇幅有限,下面的代码只截取了部分结果进行解释。这里所用的PDF文档是pdftools包的帮助文档,读者可以自行到R官网上搜索下载。帮助文档是开放PDF文件,无须提供密码。读取文档代码如下:

> library(pdftools)

> pdf_info(pdf = "./helpDocs/pdftools.pdf")

## $version

## [1] "1.5"

##

## $pages

## [1] 5

...

当使用pdf_text提取文档内容时,全部内容都被提取为一个字符串向量,每页的内容都被单独放置于一个字符串中。帮助文档的PDF格式一共包含5页,所以这里会得到一个长度为5的字符串向量。有两种方式可用于查看提取的文本:可以直接将结果显示在console中(通过执行print(text)或直接运行text),也可以通过“[ ]”来指定显示某一页的内容。空白的位置都会以空格的字符格式显示,“\r\n”代表换行符号。提取文档内容的代码如下:

> text<- pdf_text("./helpDocs/pdftools.pdf")

> length(text)

## [1] 5

> class(text)

## [1] "character"

> text[1]

## [1] "                               Package ‘pdftools’\r\n                                            May 27, 2018\r\nType Package\r\nTitle Text Extraction, Rendering and Converting of PDF Documents\r\nVersion 1.8\r\nDescription Utilities based on 'libpoppler' for extracting text, fonts, attachments and\r\n

该文档无附件,所以会显示一个空列表:

> pdf_attachments(pdf = "./helpDocs/pdftools.pdf")

## list()

文档中一共包含了6种字体,pdf_fonts会给出字体的名称、类型、是否嵌入文档中这三类信息,具体如下:

> pdf_fonts(pdf = "./helpDocs/pdftools.pdf")

##                                  name  type embedded file

## 1           DSHWTW+NimbusRomNo9L-Medi type1     TRUE

## 2           UTHPMJ+NimbusRomNo9L-Regu type1     TRUE

## 3             DSQFGA+Inconsolata-zi4r type1     TRUE

## 4              LVIJIF+NimbusSanL-Regu type1     TRUE

## 5 DQRZJT+NimbusRomNo9L-Regu-Slant_167 type1     TRUE

## 6       YIECHJ+NimbusRomNo9L-ReguItal type1     TRUE

目录读取的子函数会将所读取的内容返回到一个列表中,如果直接将该列表显示在console中很可能会让人感觉不知所云,读者可以自行实践。最好的办法是将读取的内容使用jsonlite包转换成json列表的格式进行显示,以帮助理解文档的架构。jsonlite包的相关内容详见1.7节。jsonlite包转换成json列表的示例代码如下:

> jsonlite::toJSON(x = pdf_toc(pdf = "./helpDocs/pdftools.pdf"), pretty = TRUE)

## {

《R数据科学实战:工具详解与案例分析 》 —1.6 pdftools—PDF文件

##   "title": "",

##   "children": [

##     {

##       "title": "pdf_info",

##       "children": []

##     },

##     {

##       "title": "pdf_render_page",

##       "children": []

##     },

##     {

##       "title": "Index",

##       "children": []

##     }

##   ]

## }

数据挖掘

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:零基础学习MongoDB(一)-- 简介丨【绽放吧!数据库】
下一篇:剑指Offer——简述堆和栈的区别
相关文章