是否可以从 PDF 中提取列标题下的信息?
Is it possible to extract information under column headings from a PDF?
我想从一堆 PDF 中提取某些数字信息。下面显示了一个示例,其中数字信息位于相应的标题下。
上图(pdftools::pdf_text()
读入)对应的字符串为:
mystr <- ' Natural Dry\n Metric Tons @ Moisture or Metric Tons\n B.L. WEIGHT: 78,944 1.70% 77,601.952\n'
有很多空格和换行符。是否可以提取这些标题下的信息?
我想要的最终结果是这样的:
myresult <- tibble(
`Natural Metric Tons` = 78944,
Moisture = 1.7,
`Dry Metric Tons` = 77601.952
)
如果你使用 pdftools::pdf_data() 你会得到一个小标题列表,每页一个包含文本及其 x 和 y 坐标(以及其他数据)。垂直对齐的文本将具有相同的 y 坐标和增加的 x 坐标。因此,您可以按如下方式处理每个小标题:
tibble %>%
group_by(y) %>%
arrange(x) %>%
filter(lag(text) == "your search term")
然后您可以使用 for 循环或 purrr::map() 来应用整个列表。
我从你的样本中看到,数字是集中的,上面的代码假定条目左对齐,所以你可能需要做比 group_by(y) 更复杂的争论。
对于任何格式问题,我很抱歉,我在移动设备上。
我想从一堆 PDF 中提取某些数字信息。下面显示了一个示例,其中数字信息位于相应的标题下。
上图(pdftools::pdf_text()
读入)对应的字符串为:
mystr <- ' Natural Dry\n Metric Tons @ Moisture or Metric Tons\n B.L. WEIGHT: 78,944 1.70% 77,601.952\n'
有很多空格和换行符。是否可以提取这些标题下的信息?
我想要的最终结果是这样的:
myresult <- tibble(
`Natural Metric Tons` = 78944,
Moisture = 1.7,
`Dry Metric Tons` = 77601.952
)
如果你使用 pdftools::pdf_data() 你会得到一个小标题列表,每页一个包含文本及其 x 和 y 坐标(以及其他数据)。垂直对齐的文本将具有相同的 y 坐标和增加的 x 坐标。因此,您可以按如下方式处理每个小标题:
tibble %>%
group_by(y) %>%
arrange(x) %>%
filter(lag(text) == "your search term")
然后您可以使用 for 循环或 purrr::map() 来应用整个列表。
我从你的样本中看到,数字是集中的,上面的代码假定条目左对齐,所以你可能需要做比 group_by(y) 更复杂的争论。
对于任何格式问题,我很抱歉,我在移动设备上。