Очистка таблиц PDF по заголовку - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь извлечь по одной таблице из 31 PDF-файла. Заголовки таблиц начинаются одинаково, но конец различается в зависимости от региона.

Для одного документа заголовок следующий: «Таблица 13.1: Общее количество домохозяйств, занятых в сельском хозяйстве, по районам, сельской местности и городам в 2011 году / 12 сельскохозяйственный год; регион Аруша, перепись 2012 года ". Другой вариант: «Таблица 13.1: Общее количество домохозяйств, занятых в сельском хозяйстве по районам, сельской местности и городам в течение сельскохозяйственного 2011/12 года; регион Додома, перепись 2012 года».

Я использовал табулизатор, чтобы вручную очистить первую таблицу на основе определенных c текстовых строк, которые мне нужны, но с учетом аналогичных соглашений об именах, я надеялся автоматизировать этот процесс.

```
PATH2<-  "Regions/02. Arusha Regional Profile.pdf"
```
txt2 <- pdf_text(PATH2) %>%
readr:: read_lines()
```
specific_lines2<- txt2[4621:4639] %>%
str_squish() %>%
str_replace_all(",","") %>%
strsplit(split = " ")

1 Ответ

0 голосов
/ 27 августа 2020

Что: Вы можете найти страницу с общей частью заголовка в каждом файле и извлечь данные оттуда (если заголовок встречается только один раз в файле)

Как: Создайте функцию для получения таблицы в PDF-файле, а затем попросите функцию на Lapply для запуска для всех PDF-файлов.

Пример:

Сначала загрузите функция, чтобы найти страницу с заголовком и получить оттуда текст.

  get_page_text <- function(url,word_find) {
  txt <- pdftools::pdf_text(url)
  p <- grep(word_find, txt, ignore.case = TRUE)[1]       # Sentence to find
  L <- tabulizer::extract_text(url, pages = p)    
  i <- which.max(lengths(L))
  data.frame(L[[i]])
  }

Во-вторых, получить имена файлов.

setwd("C:/Users/xyz/Regions")
files <- list.files(pattern = "pdf$|PDF$") # Get file names on the folder Regions.

Затем «l oop» ( lapply), чтобы запустить функцию для каждого PDF-файла.

reports <- lapply(files,
                  get_page_text,
                  word_find = "Table 13.1: Total Number of Households Engaged in Agriculture by District, Rural and Urban Residence During 2011/12 Agriculture Year")

Результатом является список переменных с одним data.frame для каждого извлеченного PDF-файла. Следующим шагом будет очистка ваших данных.

Функция может сильно различаться в зависимости от шаблонов в ваших PDF-файлах. Поиск страницы был для меня эффективным, вы найдете то, что вам больше всего подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...