我试图从嵌入在pdf中的图表中提取数值。
我尝试了以下两种方法,但除了折线图信息之外,我能够将所有其他信息转换为xlsx
的值第一种方法
library(pdftools)
library(stringr)
library(xlsx)
set.seed(100)
tx <- pdf_text("flureport.pdf")
tx2 <- unlist(str_split(tx, "[\\r\\n]+"))
tx3 <- str_split_fixed(str_trim(tx2), "\\s{2,}", 5)
write.xlsx(tx3, file="ds.xlsx")
第二种方法
library('tm')
file <- 'flureport.pdf'
Rpdf <- readPDF(control = list(text = "-layout"))
corpus <- VCorpus(URISource(file),
readerControl = list(reader = Rpdf))
corpus.array <- content(content(corpus)[[1]])
c<-data.frame(corpus.array)
write.xlsx(c, file="x.xlsx")
我写的xlsx都没有包含任何图表信息,所以我可以获取值
答案 0 :(得分:0)
这是对我有用的解决方案,不确定它是否适用于所有情况,但它确实在这种特殊情况下起作用。 感谢@ user2554330提及OCR
library(pdftools)
library(stringr)
library(tesseract)
library(magick)
library(magrittr)
list <- c('http://blog.mass.gov/publichealth/wp-content/uploads/sites/11/2018/01/Weekly-Flu-Report-01-19-2018.pdf')
sapply(list, function(x)
pdf_convert(x, format = "png", pages = NULL, filenames = NULL, dpi = 300, opw = "", upw = "", verbose = TRUE))
text <- image_read("Weekly-Flu-Report-01-19-2018_1.png") %>%
image_resize("2000") %>%
image_convert(colorspace = 'gray') %>%
image_trim() %>%
image_ocr()
a<-print(text)
massili<-regmatches(a, gregexpr("\\d+(\\.\\d+){0,1} %", a))[[1]]