如何使用Python提取PDF中的指定文本(含精准匹配示例)
Python提取PDF中特定文本的解决方案
核心思路
先通过PDF库提取全文本,再用正则表达式精准匹配目标内容——这是处理这类需求的通用方法。
修正原代码并实现特定提取
你原代码存在两个小问题:路径未转义(Python中反斜杠需转义或用原始字符串)、open函数括号未闭合。以下是修正后并添加特定文本提取逻辑的代码:
import PyPDF2 import re # 用原始字符串避免路径转义问题,同时补全open的闭合括号 with open(r"C:\Users\ME\Desktop\test.pdf", "rb") as pdf: reader = PyPDF2.PdfReader(pdf) page = reader.pages[0] text = page.extract_text() # 用正则匹配"Name:"后到逗号前的内容 match = re.search(r'Name:\s*(.*?)\s*,', text) if match: target_text = match.group(1) print(target_text) # 输出示例中的"Python" else: print("未找到匹配的内容")
正则表达式说明:
Name:\s*:匹配"Name:"及后续任意数量的空白字符(空格、制表符等)(.*?):非贪婪匹配任意字符,捕获我们需要的目标内容\s*,:匹配逗号前的任意空白字符和逗号本身
备选方案:使用pdfplumber提升文本提取准确性
如果PyPDF2提取的文本存在格式错乱(比如换行拆分了目标内容),可以试试pdfplumber,它的文本提取更贴近原始排版:
- 先安装依赖:
pip install pdfplumber
- 示例代码:
import pdfplumber import re with pdfplumber.open(r"C:\Users\ME\Desktop\test.pdf") as pdf: page = pdf.pages[0] text = page.extract_text() match = re.search(r'Name:\s*(.*?)\s*,', text) if match: print(match.group(1)) else: print("未找到匹配的内容")
内容的提问来源于stack exchange,提问作者Maqred
相关产品推荐
相关产品推荐

