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

如何在R中正确提取报纸PDF文本?解决文本错位拼接问题

修复报纸PDF文本提取的错位问题

你的代码存在几个关键问题导致文本错位:

  • 变量名错误:多处使用x1但实际变量是text
  • 盲目替换所有换行:将段落内换行和栏/段落间的空行全部替换为空格,导致不同栏的内容混排
  • 错误移除所有非单词字符:破坏了标点(如U.S.变成U S),同时丢失文本结构

修改后的代码

library(pdftools)
library(stringr)

# 提取单页PDF文本(头版只有1页)
raw_text <- pdf_text("https://www.nytimes.com/images/2013/06/02/nytfrontpage/scan.pdf")[[1]]

# 1. 仅替换段落内的单个换行(保留段落/栏之间的空行分隔)
clean_text <- str_replace_all(raw_text, "(?<!\\n)\\n(?!\\n)", " ")

# 2. 压缩多余空格(不破坏段落空行)
clean_text <- str_replace_all(clean_text, "\\s{2,}", " ")
clean_text <- str_replace_all(clean_text, "\\n\\s*\\n", "\\n\\n")

# 可选:移除开头结尾的空白字符
clean_text <- str_trim(clean_text)

关键改进说明

  • 区分换行类型:用正则表达式(?<!\\n)\\n(?!\\n)匹配段落内的单个换行(前后都不是换行),替换为空格;保留段落/栏之间的空行(\\n\\n)作为内容分隔,避免不同栏的标题、正文混排
  • 保留标点符号:不再用\\W移除所有非单词字符,仅处理多余空格,保持文本的原始语义
  • 明确单页提取:直接取[[1]]提取第一页文本,避免后续处理多页的冗余

效果验证

处理后,标题US and China Will Hold Talks About Hacking会保持完整,不会被其他栏的AS SYRIANS FIGHT, SECTARIAN STRIFE等内容插入,不同栏的内容会以空行分隔,结构更清晰。

内容的提问来源于stack exchange,提问作者James Rider

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:57