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

使用pdftools读取PDF构建语料库时解析失败的技术求助

解决pdftools批量读取PDF时的解析失败问题

定位问题文件

批量处理时先找出具体出错的PDF,避免整个任务中断:

pdf_files <- list.files(path = "你的目标文件夹路径", pattern = "\\.pdf$", full.names = TRUE)

for (file in pdf_files) {
  tryCatch({
    text <- pdf_text(file)
    cat("读取成功:", file, "\n")
  }, error = function(e) {
    cat("读取失败:", file, "错误详情:", e$message, "\n")
  })
}

针对错误类型修复PDF

这些错误大多是PDF本身的编码、字体或结构损坏导致:

  • 连字解析错误:用Adobe Acrobat打开问题PDF,选择「文件→另存为→优化PDF」,或通过虚拟打印机重新打印生成新PDF,修复字体连字的编码问题。
  • ICC色彩配置文件错误:在Acrobat的「工具→印刷制作→输出预览」中,移除或替换无效的ICC配置文件后重新保存。
  • 共享对象偏移错误:用Acrobat的「工具→印刷制作→PDF修复工具」修复文件结构,或用本地PDF修复工具处理损坏的文件。

更换R包或参数尝试读取

如果不想手动修复PDF,可换用兼容性更好的工具:

  • 用tabulizer包读取(基于Apache PDFBox):
library(tabulizer)
text <- extract_text("问题PDF的完整路径")
  • 给pdftools加错误判断,跳过损坏文件:
safe_pdf_text <- function(file) {
  tryCatch(pdf_text(file), error = function(e) NULL)
}
corpus <- lapply(pdf_files, safe_pdf_text)
# 过滤掉读取失败的空结果
corpus <- Filter(Negate(is.null), corpus)

用命令行工具预处理PDF

先通过pdftotext(poppler工具集,多数系统自带)把PDF转成文本,再读入R:

# 单文件转换
pdftotext "输入PDF路径" "输出文本文件路径"

# 批量转换(Linux/macOS)
for file in *.pdf; do pdftotext "$file" "${file%.pdf}.txt"; done

然后在R中读取文本:

text_files <- list.files(path = "文本文件夹路径", pattern = "\\.txt$", full.names = TRUE)
corpus <- lapply(text_files, readLines, encoding = "UTF-8")

内容的提问来源于stack exchange,提问作者Robson Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:40:32