本文目录导读:

提取PDF文字内容有多种方法,具体取决于你的技术背景、使用场景(单次提取 vs 批量处理)以及对格式保真度的要求。
以下是几种主流且高效的提取方式,按推荐度排序:
使用 Python 库(最灵活,适合批量、自动化)
首选:PyMuPDF (fitz)
这是目前速度最快、提取精度最高的库之一,特别擅长处理复杂的排版。
-
安装:
pip install PyMuPDF -
示例代码:
import fitz # PyMuPDF def extract_text_pymupdf(pdf_path): doc = fitz.open(pdf_path) full_text = "" for page_num in range(len(doc)): page = doc.load_page(page_num) # extract_text() 会按阅读顺序提取 text = page.get_text() full_text += text doc.close() return full_text # 使用 text = extract_text_pymupdf("你的文件.pdf") print(text)
备选:pdfplumber
如果PDF中的文字是以表格形式存在,或者需要精准的坐标信息,pdfplumber 比 PyMuPDF 更好用。
-
安装:
pip install pdfplumber -
示例代码:
import pdfplumber def extract_text_pdfplumber(pdf_path): with pdfplumber.open(pdf_path) as pdf: full_text = "" for page in pdf.pages: # 提取文字,也可以提取表格 page.extract_tables() text = page.extract_text() if text: # 防止空页报错 full_text += text return full_text text = extract_text_pdfplumber("你的文件.pdf")
传统选择:PyPDF2 / pypdf
PyPDF2 是经典库,但维护较少。pypdf 是它的继承者,功能类似但更现代。
-
安装:
pip install pypdf -
示例:
from pypdf import PdfReader reader = PdfReader("你的文件.pdf") full_text = "" for page in reader.pages: full_text += page.extract_text() print(full_text)注意:
pypdf对某些非标准编码的PDF提取效果可能不如pymupdf。
命令行工具(适合单次快速提取、不写代码)
pdftotext (Linux/Mac/WSL/Windows via poppler)
这是最经典、最可靠的开源工具,速度快,支持布局保留。
-
安装:
- Ubuntu/Debian:
sudo apt install poppler-utils - Mac:
brew install poppler - Windows: 下载 poppler for Windows 并添加到环境变量。
- Ubuntu/Debian:
-
使用:
# 提取全部文本 pdftotext input.pdf output.txt # 保留布局(类似 PDF 的视觉排列) pdftotext -layout input.pdf output.txt # 只提取第一页 pdftotext -f 1 -l 1 input.pdf output.txt
Mutool (随 PyMuPDF 附带的工具)
如果安装了 PyMuPDF,通常在 fitz 目录下会附带 mutool。
- 使用:
mutool draw -F text input.pdf > output.txt
图形化工具(完全无需编程)
如果你只是偶尔需要提取,不想安装任何环境,推荐:
PDF24 Tools(在线/桌面) 免费、无广告、支持 OCR,拖拽上传即可提取文本。
Adobe Acrobat Pro 付费软件,但功能最强大,可以直接“导出为” -> “文本”。
浏览器直接查看 将 PDF 拖入 Chrome/Edge 浏览器,Ctrl+A 全选 -> Ctrl+C 复制 -> 粘贴到记事本,最简单,但对排版复杂的内容可能丢字。
常见问题与解决方案
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 提取后是乱码 | PDF 中的文字是“图形”或特殊编码 | 需要 OCR(光学字符识别)。 |
| 提取到的是空格/无文字 | PDF 被扫描成图片了 | 使用 OCR 工具,如 pytesseract + pdf2image。 |
| 文字顺序错乱 | PDF 排版复杂(如多栏、表格) | 尝试 pdfplumber 的 extract_text(layout=True) 或 pdftotext -layout。 |
| 速度太慢 | 文件巨大,或用了效率低的库 | 使用 PyMuPDF 或 pdftotext,它们是用 C 语言解析的。 |
总结推荐
- 我是程序员,想批量/自动化:直接上
pip install pymupdf pdfplumber,用fitz提取常规文本,用pdfplumber处理表格。 - 我只用一次,不想装东西:打开浏览器,用 PDF24 或 直接拖入Chrome全选复制。
- PDF是扫描件(图片):上述方法都不行,需要 OCR,推荐
PaddleOCR或EasyOCR(有免费额度),或者 Adobe Acrobat 自带的 OCR 功能。