当前位置: 首页 > news >正文

【学习记录】如何使用 Python 提取 PDF 文件中的内容

如何使用 Python 提取 PDF 文件中的内容

在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型:基于文本的 PDF包含扫描图像的 PDF

本文将介绍如何使用 Python 分别提取这两种类型的 PDF 内容,并提供完整的代码示例和实用技巧。


一、提取基于文本的 PDF 内容

1. 使用 PyPDF2 提取纯文本

PyPDF2 是一个轻量级但功能强大的库,适合用于读取和提取标准文本型 PDF 中的内容。

安装
pip install PyPDF2
示例代码
import PyPDF2def extract_text_from_pdf(pdf_path):with open(pdf_path, 'rb') as file:reader = PyPDF2.PdfReader(file)text = ""for page in reader.pages:text += page.extract_text()return text# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)

⚠️ 注意:对于格式复杂或字体嵌入的 PDF,某些页面可能无法正确提取文本。


2. 使用 pdfplumber 提取表格和布局复杂的文本

如果你需要提取含有表格、列布局或精确坐标信息的 PDF,pdfplumber 是更合适的选择。

安装
pip install pdfplumber
示例代码
import pdfplumberdef extract_text_from_pdf(pdf_path):with pdfplumber.open(pdf_path) as pdf:text = ""for page in pdf.pages:text += page.extract_text()return text# 使用示例
pdf_path = 'example.pdf'
extracted_text = extract_text_from_pdf(pdf_path)
print(extracted_text)

✅ 特点:支持表格识别、文字坐标定位等功能。


二、提取扫描图像型 PDF 内容(OCR)

对于由扫描图片组成的 PDF 文件,必须借助 光学字符识别(OCR)技术 来提取其中的文字。

1. 安装依赖项

你需要安装 Tesseract OCR 引擎以及对应的 Python 封装库。

Windows:
  • 下载并安装 Tesseract OCR
  • 添加 Tesseract 到系统环境变量(例如路径为 C:\Program Files\Tesseract-OCR\tesseract.exe
  • 安装 Python 库:
pip install pytesseract pillow pdf2image
  • 安装 Poppler(用于将 PDF 转换为图像):
    • 可以从 GitHub - poppler-windows 下载并解压,同样添加到系统 PATH。
Linux / macOS:
sudo apt install tesseract-ocr libpoppler-cpp-dev  # Ubuntu/Debian
brew install tesseract poppler                    # macOS (Homebrew)
pip install pytesseract pillow pdf2image

2. 示例代码:结合 pdf2image + pytesseract 提取扫描 PDF 内容

from pdf2image import convert_from_path
import pytesseract
from PIL import Imagedef extract_text_from_scanned_pdf(pdf_path):# 将 PDF 转换为图像列表images = convert_from_path(pdf_path)extracted_text = ""for image in images:# 对每张图片执行 OCRtext = pytesseract.image_to_string(image)extracted_text += text + "\n"return extracted_text# 使用示例
pdf_path = 'scanned_example.pdf'
text = extract_text_from_scanned_pdf(pdf_path)
print(text)

✅ 说明:该方法会逐页将 PDF 转换为图像,再通过 OCR 提取文字,适用于高质量扫描件。


三、总结与建议

PDF 类型推荐库特点
纯文本型 PDFPyPDF2pdfplumber快速、高效,适合标准 PDF 文档
扫描图像型 PDFpdf2image + pytesseract支持 OCR,适合图像型 PDF,但速度较慢

✅ 建议:

  • 优先判断 PDF 类型:可以尝试用 PyPDF2 提取看看是否有返回内容,若为空则可能是扫描图像。
  • 提高 OCR 准确率:可先对图像进行预处理(如灰度化、二值化),再传给 pytesseract
  • 多语言支持:Tesseract 支持多种语言包,可通过 -l 参数指定语言,如 pytesseract.image_to_string(img, lang='chi_sim') 提取中文。

四、扩展功能推荐

功能工具描述
表格识别camelottabula-py专门用于提取 PDF 中表格数据
PDF 加密破解pikepdf可用于打开加密 PDF 文件(需密码)
PDF 合并与拆分PyPDF2 / pypdf拆分、合并、旋转 PDF 页面
PDF 注释提取pdfminer.six提供底层解析能力,适合高级用途

🔚 结语

无论是处理普通的文本型 PDF 还是扫描图像型 PDF,Python 都提供了丰富的第三方库来帮助我们实现高效的文本提取。掌握这些工具不仅能提升办公效率,还能为数据分析、文档管理、信息自动化等场景打下坚实基础。


📌 如果你正在从事数据工程、自动化脚本开发或文档处理相关的工作,熟练使用这些库将大大增强你的生产力。同时,也可以根据实际需求,结合日志记录、GUI 界面、批量处理等功能进行二次开发。

💬 欢迎留言交流你在项目中使用这些技术的经验,或者你遇到的相关问题,我们一起探讨 Python 文档处理的最佳实践!

相关文章:

  • 2025年计算机科学与网络安全国际会议(CSNS 2025)
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • Delphi用if else实现 select case、switch语句功能,实现case 以字符串为分类条件。
  • 【深度学习优化算法】02:凸性
  • [蓝桥杯]密码脱落
  • 行为型-迭代器模式
  • Elasticsearch集群状态为RED且存在未分配分片问题排查诊断
  • 本地IP配置
  • FTP 和 SFTP 介绍及 C/C++ 实现分析
  • 【拓扑】1639.拓扑排序
  • NFT 市场开发:基于 Ethereum 和 IPFS 构建去中心化平台
  • 美业破局:AI智能体如何用数据重塑战略决策(5/6)
  • AI基础认知
  • 电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?
  • WPF可拖拽ListView
  • Android SharedFlow 详解
  • video-audio-extractor【源码版】
  • 从OSI到TCP/IP:网络协议的演变与作用
  • 设计模式-迪米特法则
  • 3D视觉重构工业智造:解码迁移科技如何用“硬核之眼“重塑生产节拍
  • 绍兴网站建设公司地址/阿里指数网站
  • 哪家专门做特卖的网站?/百度手机网页版入口
  • 做服装搭配直接售卖的网站/网络新闻发布平台
  • 网页设计总结报告500字/旺道seo软件
  • 网站不用域名需要备案吗/正规网络公司关键词排名优化
  • 网站建设话术开场白/注册百度账号