r - 使用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)
解决方案
这是一个文本解析任务,有几种方法可以做到这一点。也许最快的方法是在 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"
推荐阅读
- c# - 如何从 .nuget 包中获取静态文件到我的本地 /bin 使用项目的文件夹
- python - 如何将 .csv 文件中的日期时间字符串列拆分为单独的日期和时间列?
- java - 从 s3 读取密钥文件时出错 - 并非所有字节都从 S3ObjectInputStream 读取,正在中止 HTTP 连接
- python - 如何从 python 中的 splunk stats 创建可视化?
- android - Android Studio 模拟器错误:检测到挂起的线程“QEMU2 主循环”
- c# - 遇到类似键前缀的问题,即。尽管两者都存在,但调用“Tag1”而不是“Tag10”
- c# - 迭代数据表时检查列是否存在?
- java - 使用 ProcessBuilder 调用 Java 方法
- php - 从 php 更改当前服务器日期和时间
- amazon-web-services - 使用 EC2 实例名称和私有 IP 地址创建 awscli 表输出