使用Python将PDF文本提取到TXT文件时出现提取错误如何解决
PDF文本提取异常原因及解决办法
问题根因
你当前的代码逻辑没有错误,出现缺字、间距异常是PyPDF2自身的文本提取能力局限性导致的:PyPDF2对非标准编码字体、带复杂排版(比如分栏、嵌入式特殊字体、字符间距自定义)的原生PDF适配度低,很容易出现字符丢失、空格错位的问题。
优化方案
方案1:替换为pdfplumber库(优先推荐,适配绝大多数原生PDF场景)
pdfplumber底层基于pdfminer.six开发,文本提取准确率远高于PyPDF2,对中文、特殊排版的兼容性更好,适配你后续批量处理1000份文件的需求。
- 安装命令:
pip install pdfplumber - 单文件提取示例代码:
import pdfplumber from pathlib import Path # 确保输出目录存在 output_dir = Path("Extracted") output_dir.mkdir(exist_ok=True) with pdfplumber.open(Path('C:/Users/Lui/Desktop/Test/file1.pdf')) as pdf: with open(output_dir / "extractPDF.txt", "w", encoding="utf-8") as text_file: # 遍历所有页 for page in pdf.pages: # 提取文本,默认会自动优化空格 page_content = page.extract_text() print(page_content) text_file.write(page_content + "\n")
方案2:扫描版PDF适配
如果你要处理的PDF是扫描件(图片转的PDF,没有内置文本层),需要用OCR工具提取,推荐使用pytesseract配合pdf2image实现,提前安装好Tesseract OCR引擎即可。
批量处理注意事项
后续处理1000份文件时,建议增加以下逻辑避免运行中断:
- 遍历目标文件夹下所有PDF文件时增加后缀过滤,避免误处理其他格式文件
- 增加异常捕获逻辑,记录处理失败的文件路径,不需要因为单个文件报错终止全部任务
- 统一指定文件编码为
utf-8,避免不同系统下的编码乱码问题
内容的提问来源于stack exchange,提问作者Lui Hellesoe
相关产品推荐
相关产品推荐

