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

如何用JS将pdf-parser提取的带换行符文本转换为普通字符串

问题解决方法

你观察到的带单引号、+拼接标记的文本格式,不是提取到的PDF文本本身的内容,是JavaScript运行时打印包含字符串的对象时,展示的字符串源码表示形式,分两种场景处理即可:

场景1:代码运行中直接拿pdf-parser的返回结果

不需要额外做格式解析,你看到的拼接标记只是调试打印的展示效果,字符串本身不存在这些标记。

  • 不要把整个pdf-parser返回的完整对象、或者JSON.stringify()序列化后的整个对象直接传给评估API
  • 直接提取返回结果里的纯文本字段传递即可,示例代码:
const pdfParser = require('pdf-parser');

pdfParser.pdf2text('target.pdf', (err, result) => {
  if (err) throw err;
  // 直接取text字段,本身就是正常纯文本,可直接传给API
  const extractedText = result.text || '';
  // 可选:清理多余连续空行
  const cleanedText = extractedText.replace(/\n{3,}/g, '\n\n');
  // 调用写作质量评估API,传cleanedText即可
});

场景2:你拿到的内容是已经被转成源码展示格式的字符串(比如从调试日志、控制台复制出来的带+和单引号的文本)

用下面的工具函数即可还原为正常纯文本,同时自动修复PDF提取常见的同段落硬换行问题:

function restorePlainText(rawCodeFormattedStr) {
  // 逐行移除源码格式标记
  const processedLines = rawCodeFormattedStr.split('\n').map(line => {
    return line
      .trim()
      .replace(/^'/, '') // 移除行首的单引号
      .replace(/'?\s*\+?$/, '') // 移除行尾的单引号、字符串拼接+标记
      .replace(/\\n/g, '\n'); // 把转义换行符替换为真实换行
  });

  return processedLines.join('')
    .replace(/\n{3,}/g, '\n\n') // 把3个及以上连续换行统一为段落分隔的双换行
    .replace(/([^\n])\n(?=[^\n\d])/g, '$1 '); // 非序号开头的行内硬换行替换为空格,合并同段落文本
}

使用示例

// 你贴的那种带+拼接的格式内容
const badFormatText = `    '\n' +
'\n' +
'Entornos personales de aprendizaje\n' +
'PLE (personal learning environmnent o entorno personal del aprendizaje) es un concepto de \n' +
'mucho interés y causa de debate en los círculos de la tecnología educativa.\n'`;

const normalText = restorePlainText(badFormatText);
console.log(normalText); // 输出正常段落格式的纯文本,可直接传给API

注意:如果文本里存在西语、中文等非ASCII字符,不需要额外做编码处理,上述函数可以正常兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:15:37