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

将PDF转TXT时出现随机空格,是PyPDF2的问题吗?

PDF转TXT出现随机空格的问题分析与解决

问题代码

import PyPDF2

# open the pdf file
pdfFileObj = open('pdfFile.pdf', 'rb')

# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

# looping through all the pages of the pdf
for page in range(pdfReader.numPages):

    # creating a page object
    pageObj = pdfReader.getPage(page)

    # extracting text from page
    text = pageObj.extractText()

    # writing text to a txt file
    file = open('txtFile.txt', 'a+', encoding='utf-8')
    file.write(text)
    file.close()

# closing the pdf file object
pdfFileObj.close()

问题描述

使用上述代码将计算机生成的德语PDF转换为TXT时,出现无规律的随机空格问题:原PDF中的单词会被莫名拆分,例如“The apple is red.”变成“The ap ple is red.”,“Apple”变成“A pple”、“Banana”变成“Bana na”,找不到固定的出现模式。

原因分析

  • PyPDF2的文本提取逻辑局限:PyPDF2是基于PDF内的文本块位置拼接内容的。计算机生成的PDF中,部分单词的字符可能被拆分为多个独立的文本绘制单元(比如为了排版对齐,字符被分开放置),PyPDF2会把这些单元间的间隙识别为空格,导致单词拆分。
  • 德语特殊字符的处理问题:德语包含ä、ö、ü、ß等变音符号,部分PDF生成工具处理这些字符时,会将其与相邻字符拆分为不同文本块,PyPDF2提取时会在中间插入空格。
  • PDF内部排版结构影响:部分PDF为实现特定排版效果(如字间距调整、换行优化),会将单个单词拆分为多个小文本段,PyPDF2无法识别这些属于同一个单词,直接按空格拼接。

解决方案

1. 更换更专业的文本提取库

推荐使用PyMuPDF(fitz)或pdfplumber,它们对PDF文本结构的解析更智能,能有效减少这类错误空格:

# 使用PyMuPDF的示例代码
import fitz

doc = fitz.open("pdfFile.pdf")
with open("txtFile.txt", "w", encoding="utf-8") as output_file:
    for page in doc:
        page_text = page.get_text()
        output_file.write(page_text)
doc.close()

2. 对提取后的文本做后处理清理

如果坚持使用PyPDF2,可以用正则表达式清理错误空格(注意:可能误删正常空格,需针对德语文本调整):

import re

# 提取文本后执行清理
cleaned_text = re.sub(r'([a-zA-ZäöüÄÖÜß]) ([a-zA-ZäöüÄÖÜß])', r'\1\2', text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:50:24