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

R语言文本挖掘:生成PDF词频表时如何处理残缺及无意义词汇

解决西班牙语PDF高频词表生成时的字符残缺/怪异问题

嘿,我之前处理西语PDF文本提取时也踩过类似的坑!大概率是字符编码不匹配、PDF字体嵌入不全或者换行断词没处理导致的,咱们一步步来搞定:

常见原因分析

  • 西语有大量特殊字符(ñ、áéíóú等),提取时编码没设对直接会乱码
  • 很多PDF用了非标准字体或者没完全嵌入字体,导致pdftools提取字符时识别错误
  • 西语单词换行时常用连字符拆分(比如información拆成informació-+n),没合并的话就会出现残缺词汇

具体解决方案

1. 优化pdftools的文本提取参数

先试试给pdf_text指定正确的编码,西语常用UTF-8或ISO-8859-1,同时处理换行断词:

library(pdftools)
library(stringr)
library(stringi)

# 替换成你的PDF路径
pdf_path <- "your_file.pdf"

# 提取文本并做初步清洗
raw_text <- pdf_text(pdf_path)
cleaned_text <- raw_text %>%
  # 去掉换行前的连字符,合并拆分的单词
  str_replace_all("-\\n", "") %>%
  # 将所有换行替换为空格,合并成连续文本
  str_replace_all("\\n", " ") %>%
  # 强制设置为UTF-8编码,避免乱码
  stringi::stri_enc_set("UTF-8")

2. 用OCR处理字体异常的PDF

如果上面的方法还是不行,说明你的PDF可能是扫描版或者字体嵌入有问题,这时候用tesseract做光学字符识别(OCR)就靠谱多了:

library(tesseract)
# 第一次使用需要下载西语语言包,取消注释运行
# tesseract_download("spa")

# 用OCR提取西语文本
ocr_text <- pdf_ocr_text(pdf_path, language = "spa")
# 同样处理断词和换行
cleaned_text <- ocr_text %>%
  str_replace_all("-\\n", "") %>%
  str_replace_all("\\n", " ")

3. 生成高频词表时用西语停用词

别忘记替换成西语的停用词!否则会把el、la、que这些常用词当成高频词,影响结果:

library(tidytext)
library(stopwords)

# 生成西语停用词表
spanish_stopwords <- tibble(word = stopwords("es"))

# 生成清洗后的高频词表
tidy_words <- tibble(text = cleaned_text) %>%
  unnest_tokens(word, text) %>%
  # 只保留西语词汇(过滤数字、符号)
  filter(str_detect(word, "[a-záéíóúñ]")) %>%
  # 去掉西语停用词
  anti_join(spanish_stopwords) %>%
  count(word, sort = TRUE)

4. 特殊字符的额外处理

如果还有怪异字符,试试用stringi做字符转换:

# 把特殊字符转成ASCII兼容形式(可选,比如把ñ转成n)
cleaned_text <- stringi::stri_trans_general(cleaned_text, "Latin-ASCII")

按照这个流程走,应该就能解决你遇到的词汇残缺或怪异的问题啦!

内容的提问来源于stack exchange,提问作者Alejandro Carrera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:55:36