如何用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
相关产品推荐
相关产品推荐

