You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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,它的文本提取更贴近原始排版:

  1. 先安装依赖:
pip install pdfplumber
  1. 示例代码:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:47:34