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

如何在R中读取含印地语文本的PDF文件并生成分析用数据框

解决方案

核心问题原因

pdftools、tm等包底层依赖的poppler PDF解析库默认未适配印地语使用的天城文编码,同时系统缺少对应字体支持,导致解析时出现字符映射错误生成乱码。

操作步骤

1. 更新系统poppler依赖(macOS环境)

使用Homebrew安装完整多语言支持的poppler版本,终端执行命令:

brew install poppler --with-all-languages

安装完成后重启R会话,使R调用新版本的poppler库。

2. 替换适配多语言的读取代码

避免使用tm包的readPDF接口,直接使用pdftools结合stringi做编码校验,以下是批量读取所有PDF并生成数据框的完整代码:

# 安装依赖包
install.packages(c("pdftools", "dplyr", "purrr", "stringi"))

# 加载包
library(pdftools)
library(dplyr)
library(purrr)
library(stringi)

# 显式设置编码环境
Sys.setlocale("LC_CTYPE", "hi_IN.UTF-8")

# 配置PDF所在文件夹路径
pdf_dir <- "你的PDF文件所在文件夹路径"
pdf_files <- list.files(pdf_dir, pattern = "\\.pdf$", full.names = TRUE)

# 定义单PDF读取函数
read_hindi_pdf <- function(file_path) {
  # 读取PDF文本
  raw_text <- pdf_text(file_path)
  # 校验并修复UTF-8编码
  fixed_text <- stri_enc_toutf8(raw_text, validate = TRUE)
  # 生成单文件数据框
  tibble(
    file_name = basename(file_path),
    page_num = seq_along(fixed_text),
    content = fixed_text
  )
}

# 批量读取所有PDF并合并为总数据框
final_df <- map_dfr(pdf_files, read_hindi_pdf)

3. 可选补充操作

如果仍存在乱码,在macOS字体册中安装「Noto Sans Devanagari」「Devanagari MT」等天城文字体,重启R后重新运行代码即可。


内容的提问来源于stack exchange,提问作者Anisha Garg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:42:02