今天学习什么?
今天我们来学习如何读取PDF文件中的内容,让Python帮你提取文字!
提取文本
基本方法:
import PyPDF2
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
# 提取所有文本
all_text = ""
for page in pdf_reader.pages:
text = page.extract_text()
all_text += text
print(all_text)
pdf_file.close()
提取特定页面:
# 提取第一页
page1 = pdf_reader.pages[0]
text1 = page1.extract_text()
print("第一页内容:")
print(text1)
# 提取最后一页
last_page = pdf_reader.pages[-1]
text_last = last_page.extract_text()
print("最后一页内容:")
print(text_last)
实际案例
案例1:提取PDF中的所有文字
import PyPDF2
def 提取PDF文字(文件名):
try:
pdf_file = open(文件名, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
所有文字 = []
for i, page in enumerate(pdf_reader.pages):
文字 = page.extract_text()
所有文字.append(f"--- 第{i+1}页 ---\n{文字}")
pdf_file.close()
return"\n\n".join(所有文字)
except Exception as e:
print(f"提取失败:{e}")
return""
# 使用函数
# 文字 = 提取PDF文字('example.pdf')
# print(文字)
案例2:分析PDF内容
import PyPDF2
def 分析PDF内容(文件名):
try:
pdf_file = open(文件名, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
分析结果 = {
'总页数': len(pdf_reader.pages),
'每页字数': [],
'总字数': 0,
'平均每页字数': 0
}
for page in pdf_reader.pages:
文字 = page.extract_text()
字数 = len(文字)
分析结果['每页字数'].append(字数)
分析结果['总字数'] += 字数
if len(pdf_reader.pages) > 0:
分析结果['平均每页字数'] = 分析结果['总字数'] / len(pdf_reader.pages)
print("PDF内容分析:")
print("=" * 40)
print(f"总页数:{分析结果['总页数']}")
print(f"总字数:{分析结果['总字数']}")
print(f"平均每页字数:{分析结果['平均每页字数']:.0f}")
pdf_file.close()
return 分析结果
except Exception as e:
print(f"分析失败:{e}")
returnNone
# 使用函数
# 分析 = 分析PDF内容('example.pdf')
案例3:搜索PDF中的关键词
import PyPDF2
def 搜索PDF关键词(文件名, 关键词):
try:
pdf_file = open(文件名, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
找到的页面 = []
for i, page in enumerate(pdf_reader.pages):
文字 = page.extract_text()
if 关键词 in 文字:
找到的页面.append(i + 1)
pdf_file.close()
print(f"搜索关键词:{关键词}")
print(f"找到的页码:{找到的页面}")
return 找到的页面
except Exception as e:
print(f"搜索失败:{e}")
return []
# 使用函数
# 找到的页码 = 搜索PDF关键词('example.pdf', 'Python')
动手实践
今天的任务:
提取PDF中的所有文字 分析PDF内容 搜索PDF中的关键词
练习1:提取并保存PDF文字
import PyPDF2
def 提取PDF并保存(源文件, 目标文件):
try:
# 提取文字
pdf_file = open(源文件, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
所有文字 = []
for i, page in enumerate(pdf_reader.pages):
文字 = page.extract_text()
所有文字.append(f"=== 第{i+1}页 ===\n{文字}")
pdf_file.close()
# 保存到文本文件
with open(目标文件, 'w', encoding='utf-8') as f:
f.write("\n\n".join(所有文字))
print(f"PDF文字已保存到:{目标文件}")
returnTrue
except Exception as e:
print(f"提取失败:{e}")
returnFalse
# 使用函数
# 提取PDF并保存('example.pdf', '提取的文字.txt')
练习2:创建PDF摘要
import PyPDF2
def 创建PDF摘要(文件名):
try:
pdf_file = open(文件名, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
摘要 = []
摘要.append(f"PDF文件:{文件名}")
摘要.append(f"总页数:{len(pdf_reader.pages)}")
摘要.append("")
# 提取每页的前100个字
for i, page in enumerate(pdf_reader.pages):
文字 = page.extract_text()
前100字 = 文字[:100] + "..."if len(文字) > 100else 文字
摘要.append(f"第{i+1}页摘要:{前100字}")
pdf_file.close()
return"\n".join(摘要)
except Exception as e:
print(f"创建摘要失败:{e}")
return""
# 使用函数
# 摘要 = 创建PDF摘要('example.pdf')
# print(摘要)
本章小结
今天学到了什么?
可以提取PDF中的所有文字 可以分析PDF内容 可以搜索PDF中的关键词 可以创建PDF摘要
明天预告:
明天我们将学习如何合并和拆分PDF!
练习题
如何提取PDF中的所有文字? 如何分析PDF的字数? 如何搜索PDF中的关键词?
学习心得
今天的学习心得:_______________
遇到的问题:_______________
明天要重点学习:_______________
夜雨聆风