03 pdftools:PDF文件
学术期刊、网络杂志和电子书籍一般都会以PDF格式的文件呈现 。一般的计量型数据分析很少会遇到读取PDF文件的情况,不过在进行文本挖掘(Text Mining)和主题模型(Topic Modelling)预测中,pdftools包绝对是必备R包之一 。
该包只有两个母函数,一个用来从PDF中提取数据(此处的数据包括数字型和文字型数据),另一个则用来将文件渲染成PDF格式 。本节我们只讨论第一个母函数——pdf_info 。
pdf_info函数下面一共包含6个子函数,功能各不相同 。但是6个子函数的参数完全一致,分别是pdf、opw和upw 。
数据导入函数'pdf_info子函数一览:
- pdf_info:读取PDF文件的基本信息,例如,何时创建、更改,版本信息,是否有密码 , 页数等,详见代码演示部分
- pdf_text:提取文件中的所有文字或非文字信息,包括分页符、换行符
- pdf_data:提取数字型数据,这个提取的结果会因PDF文件而异,有时可以直接将期刊中的数据完整地提取出来,有时又会因为PDF文档在创建时使用了不一致的分隔符而导致数据提取不完整
- pdf_fonts:提取文档的字体信息
- pdf_attachments:提取文档附件
- pdf_toc:提取文档目录
- pdf:PDF文件路径,可以是网络链接
- opw:PDF文件所有者的密码
- upw: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包转换成json列表的示例代码如下:
> jsonlite::toJSON(x = pdf_toc(pdf = "./helpDocs/pdftools.pdf"), pretty = TRUE) ## {## "title": "",## "children": [## {## "title": "pdf_info",## "children": []## },## {## "title": "pdf_render_page",## "children": []## },## {## "title": "Index",## "children": []## }## ]## }04 jsonlite:JSON文件
Javascript Object Notation(JSON)通常是作为不同语言之间互相交流信息的文件,JSON文件不但节省存储空间,其简洁明了的形式也很容易理解 。
jsonlite包既能够完整地将JSON格式的文件完整地解析和读取到R语言中来,也可以将任何常见的R对象(object)输出成JSON格式 。本文03节中 , toJSON函数可用来将PDF文档目录转换成JSON格式,以便于理解各层级之间的关系 。
读取JSON文件的fromJSON函数共包含6个参数,通常情况下 , 除了指定文件路径之外,其他参数使用默认设置即可 。
数据导入函数fromJSON参数详解:
- txt:可以是一段JSON格式的字符串,网络链接或者文件路径加文件名
- simplifyVector:将有序数组中的原始值强制转置成原子向量,可以简单理解为只保留数据 , 有真假两种设置,默认为真 , 如果设置为假,则数据会被读取为一个列表,列表中会包含子列表,子列表中会列出变量名和相应的数据值 。详见代码演示部分
推荐阅读
- Excel怎么计算加减乘除,如何在Excel中计算加减乘除
- Excel怎么统计频率最高的数字
- Excel如何拓宽单元格,Excel突显单元格怎么设置
- Excel中如何新建工作表样式
- Excel怎么筛选,如何在excel表格中筛选数据
- 怎样在Excel里输入身份证号
- 怎样用手机WPS做表格,手机wps怎么新建excel表格
- Excel如何快速填充序列,excel怎么自动填充序列号
- Excel怎样插入地图,Excel数据可视化地图制作
- excel该如何才能复制表格保持原有样式