首页 > 解决方案 > 使用R从具有相同格式的多页pdf文件中提取特定的结构化数据

问题描述

您好首先感谢您的帮助。我想知道是否有一种方法可以从 pdf 可编辑文件中提取分配在所有页面中相同位置的特定数据。

文件(根据隐私问题进行了修改)包含一系列工资单,所有页面都包含相同的格式和数据。我想只提取每个员工的 SSN(编号 IMSS)并将它们放在数据框中。我已经搜索了如何做到这一点,但我只发现了数据结构不正确的情况,并且由于在这个文件中所有页面都完全相同,我想知道是否有一种不那么麻烦的方法。

使用 pdf 工具和下面的步骤,我能够分离出我想要的数据(在第 9 行分配),但只能从单个页面中分离出来。我想知道是否可以输入适用于所有页面的命令。谢谢你。

> library(pdftools)
> test <- pdf_text("pruebas.pdf")
> orden <- strsplit(test,"\r\n")
> required <- c(unlist(strsplit(orden2[[1]],"\r\n")))
> nss <- required[9]
> result <- as.data.frame(nss)

标签: rpdfdata-extraction

解决方案


这是一个文本解析任务,有几种方法可以做到这一点。也许最快的方法是在 every 分割输出No. IMSS:,选择第二个片段,在换行符处分割结果,然后取第一个片段。代码不是很漂亮,但它可以工作:

 sapply(strsplit(sapply(strsplit(pdftools::pdf_text("pruebas.pdf"), 
        "No\\. IMSS: +"), `[`, 2), "\r"), `[`, 1)
#> [1] "12-34-56-7895-5" "12-34-56-7895-9" "12-34-56-7895-7" "12-34-56-7895-1"

推荐阅读