You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PDF嵌入图表中提取数值至R语言变量?

解决PDF折线图数据提取的问题

先给你捋清楚核心问题:你之前用pdftools提取文本的思路,只能拿到PDF里的纯文字内容,但折线图上的数值是嵌入在图形元素里的(不是可复制的普通文本),所以自然抓不到这些数据。下面给你两种可行的解决思路:

方法一:OCR识别图表区域(适合大多数场景)

这个方法是先把PDF里的图表页面转成图片,再用OCR工具识别图片里的数值,步骤如下:

  1. 先安装需要的R包:
install.packages(c("pdftools", "tesseract", "magick"))
  1. 提取目标页面(你的PDF里折线图在第4页)并转成高清图片:
library(pdftools)
library(magick)

pdf_file <- "Weekly-Flu-Report-01-19-2018.pdf"
# 提取第4页为PNG图片,设置高DPI保证识别精度
page_img <- pdf_convert(pdf_file, pages = 4, format = "png", dpi = 300)
img <- image_read(page_img)
  1. 裁剪出折线图的精准区域(你可以用图片查看工具获取坐标,下面是示例值):
# 裁剪参数格式为"x起始坐标y起始坐标x结束坐标y结束坐标",自行调整匹配你的图表
chart_img <- image_crop(img, "x120y250x780y620")
image_write(chart_img, "flu_chart_cropped.png")
  1. 用Tesseract进行OCR识别并提取数值:
library(tesseract)
library(stringr)

# 加载英文语言包(首次运行会自动下载)
eng_tesseract <- tesseract("eng")
# 识别裁剪后的图表文本
chart_text <- ocr("flu_chart_cropped.png", engine = eng_tesseract)

# 提取所有数字(包含小数)
extracted_values <- str_extract_all(chart_text, "\\d+\\.?\\d*")[[1]]
print(extracted_values)

方法二:解析PDF矢量图形路径(仅适合矢量PDF)

如果你的PDF是矢量格式(不是扫描生成的),可以提取折线的坐标数据,再对应坐标轴刻度计算实际数值:

  1. 提取页面的图形与文本数据:
library(pdftools)
pdf_data <- pdf_data(pdf_file, pages = 4)
page_content <- pdf_data[[1]]
  1. 筛选出折线的路径坐标:
# 筛选出类型为path的行,也就是折线的坐标数据
line_coords <- page_content[page_content$type == "path", ]
  1. 匹配坐标轴刻度,映射坐标到实际数值:
# 提取Y轴刻度的文本和坐标(假设Y轴在页面左侧,x坐标小于100)
y_ticks <- page_content[page_content$type == "text" & page_content$x < 100, ]
# 把刻度文本转成数值
y_tick_values <- as.numeric(y_ticks$text)
# 获取刻度的Y坐标范围
min_y_coord <- min(y_ticks$y)
max_y_coord <- max(y_ticks$y)
min_y_val <- min(y_tick_values)
max_y_val <- max(y_tick_values)

# 线性映射折线坐标到实际数值
line_coords$actual_value <- (max_y_val - min_y_val) * (max_y_coord - line_coords$y) / (max_y_coord - min_y_coord) + min_y_val

注意:这个方法只对矢量PDF有效,如果是扫描版PDF,路径数据会是位图像素信息,无法解析出有效坐标。

如果OCR识别准确率不够,可以尝试提高图片DPI、调整裁剪范围,或者用Tesseract的自定义训练模型优化识别效果。

内容的提问来源于stack exchange,提问作者Dee V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:24:19