如何使用PyPDF2提取PDF文件全部文本并以字符串返回?
使用PyPDF2提取PDF文本并获取特定内容的解决方案
嘿,我来帮你搞定用PyPDF2提取PDF文本的需求,包括提取全部文本为字符串,以及从单页PDF中抓取指定内容,直接上实用代码和说明:
第一步:安装PyPDF2
首先确保你已经安装了PyPDF2库,用pip安装即可:
pip install PyPDF2
提取PDF全部文本为字符串
这个函数可以处理多页PDF,返回完整的字符串类型文本:
import PyPDF2 def extract_full_pdf_text(pdf_path) -> str: # 以二进制只读模式打开PDF文件 with open(pdf_path, 'rb') as pdf_file: # 创建PDF阅读器实例 pdf_reader = PyPDF2.PdfReader(pdf_file) full_text = "" # 遍历每一页提取文本并拼接 for page in pdf_reader.pages: extracted_text = page.extract_text() if extracted_text: # 跳过无文本的页面 full_text += extracted_text return full_text
使用时只需要传入你的PDF文件路径,比如:
pdf_text = extract_full_pdf_text("your_file.pdf") print(type(pdf_text)) # 输出 <class 'str'>
从单页PDF中提取指定内容
针对你提供的单页PDF内容,我们可以通过标记定位+字符串切片的方式精准提取目标内容:
def extract_specific_order_content(pdf_path) -> str: with open(pdf_path, 'rb') as pdf_file: pdf_reader = PyPDF2.PdfReader(pdf_file) # 单页PDF,直接取第一页(索引为0) page_text = pdf_reader.pages[0].extract_text() # 定义目标内容的起始标记 start_marker = "(ORDER LIST: 583 U.S.)" start_idx = page_text.find(start_marker) if start_idx == -1: return "未找到目标标记内容" # 如果你需要精确截取到示例中的"Court of App..."结尾,可以添加结束标记 end_marker = "Court of App..." end_idx = page_text.find(end_marker) + len(end_marker) # 提取从起始到结束的内容 target_content = page_text[start_idx:end_idx] return target_content
使用示例:
specific_content = extract_specific_order_content("your_single_page.pdf") print(specific_content)
一些注意事项
- 如果你的PDF是扫描件(图片型),PyPDF2无法提取文本,这种情况需要搭配OCR工具(比如pytesseract)来处理
- 对于PDF中的特殊字符(比如示例里的
™),PyPDF2提取时会自动保留,无需额外处理 - 测试时记得替换代码中的
pdf_path为你的实际文件路径
内容的提问来源于stack exchange,提问作者chickenrico
相关产品推荐
相关产品推荐

