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

使用R清理含单词内部多余空格的PDF文本数据

解决PDF文本单词内部多余空格的清理方案

针对读取PDF后出现的单词内部多余空格问题,可以通过正则匹配+自定义替换函数的方式,精准合并单词内部空格同时保留独立单词(如"a"、"I")间的空格。以下是具体实现:

解决方案代码

library(dplyr)
library(stringr)

# 示例数据
txt <- structure(list(id = 1:3, 
                      data = c("Then I cre ated a c h a r t using Excel", 
                               "other p r inc ip le is that when a person", 
                               "M R . C O O K S O N : Mr . Speaker , on behal f of")), 
                 class = "data.frame", 
                 row.names = c(NA, -3L))

# 定义清理函数
clean_pdf_text <- function(text) {
  # 匹配所有非独立a/I的、由空格分隔的字母序列,替换为无空格版本
  str_replace_all(text, "\\b(?!a\\b|I\\b)[A-Za-z]+(?: [A-Za-z]+)+\\b", function(match) {
    str_replace_all(match, " ", "")
  })
}

# 应用清理函数
df_clean <- txt %>%
  mutate(revised = clean_pdf_text(data))

# 查看结果
print(df_clean$revised)

代码解释

  1. 正则匹配逻辑:

    • \\b(?!a\\b|I\\b):排除独立的"a"或"I"(\\b表示单词边界,(?!...)是负向预查,确保不匹配单独的"a"/"I")
    • [A-Za-z]+(?: [A-Za-z]+)+:匹配由空格分隔的多段字母序列(即被拆分的单词)
    • 整个正则会选中所有需要合并的拆分单词,不会影响独立的"a"/"I"或正常单词间的空格
  2. 替换函数:
    对每个匹配到的拆分单词序列,用str_replace_all移除内部所有空格,完成合并。

验证结果

运行代码后,df_clean$revised的输出为:

[1] "Then I created a chart using Excel"          
[2] "other principle is that when a person"       
[3] "MR . COOKSON : Mr . Speaker , on behalf of"

完全符合需求:合并了单词内部的多余空格,同时保留了"a"、"I"等独立单词的空格。

内容的提问来源于stack exchange,提问作者Nick Yarmey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:36:01