我正在尝试使用 R 将阿富汗独立选举委员会的这个 pdf 文件(列出计划于 10 月 20 日举行的选举的投票中心)解析为 csv 文件。我能够成功地为同一列表的英文版本做到这一点,但我在这里的目标是提取每个投票中心的波斯语(达里语)语言名称,以便能够将这些中心与其他选民登记数据连接起来,其中投票中心代码已被省略,但我有一个中心名称. (我不能 100% 确定名称会在数据集中一致地呈现,但这是我目前对匹配的最大希望。)
为了加入,我需要能够从投票中心列表中提取准确的投票中心波斯语名称字符串。不幸的是,我在为此使用 pdftools 库时遇到了问题。我不清楚这是 pdf 文件编码的问题,还是 pdftools 中波斯语阅读的更广泛问题(虽然我可以阅读字符,但我自己不阅读该语言)。波斯语字符串在某些情况下会被 pdf 中不明显的额外空格打断,这混淆了我将它们正确解析为列的尝试,并且即使我能够强制它们进入,也可能会阻止准确匹配正确的列。(我在阅读选民登记文件时遇到了同样的问题,因此根本问题在文件中是一致的,或者我的错误方法是。)
示例代码:
library(pdftools)
# import
pc_import <- pdf_text("http://www.iec.org.af/pdf/pclist-2018/allpc1397.pdf")
pdf_text <- toString(pc_import)
pdf_text <- read_lines(pdf_text)
# strip headers and footers
header_row_1 <- grep(trimws(pdf_text[1]), pdf_text)
footer_row <- grep("Page ", pdf_text)
pdf_text <- pdf_text[- c(header_row_1, header_row_1 + 1, header_row_1 + 2, footer_row)]
# convert to a dataframe
data <- Reduce(rbind, strsplit(trimws(pdf_text), "\\s{2,}"))
rownames(data) <- 1:dim(data)[1]
colnames(data) <- c("pc_location_dari", "pc_name_dari", "pc_code", "district_code", "district_name_dari", "province_code", "province_name_dari", "id")
data <- as.data.frame(data)
在 pdf_text 和数据行 4-6 中可以观察到错误的字符串拆分问题。
我也尝试使用 Tabula 处理轮询中心文件,但是虽然那里的输出稍微准确一些,但在某些情况下它仍然会产生类似的拆分字符串问题,这让我认为基础文件中可能存在一些问题编码。以及如何解决这个问题的建议将不胜感激。