Разбор строк на фарси с использованием pdf_text в R - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь проанализировать этот pdf-файл из Независимой избирательной комиссии Афганистана (список избирательных центров, запланированных на проведение выборов 20 октября) в CSV-файл с использованием R. Я смог успешно сделать это для англоязычная версия того же списка , но моя цель здесь состоит в том, чтобы извлечь названия языков фарси (дари) каждого избирательного центра, чтобы иметь возможность объединить эти центры с другими данными регистрации избирателейв котором код избирательного центра был опущен, но у меня есть имя центра.(Я не уверен на 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, но, хотя выходные данные там были немного более точными, он все еще производит аналогичныепроблемы с разделением строк в некоторых случаях, что заставляет меня думать, что могут быть некоторые проблемы в основной кодировке файлов.И предложения о том, как подойти к этому, будут оценены.

...