📕 PDF 文档处理
全能型 PDF 工具包:从数据提取到文档生成,从表单填写到批量处理
🎯 这个技能能做什么?
PDF 文档处理技能提供完整的 PDF 操作解决方案,无论是提取数据、创建文档还是批量处理,都能高效完成。
核心能力
- 📊 智能数据提取 - 从 PDF 中提取文本、表格,导出为 Excel/CSV
- 📝 文档创建 - 程序化生成专业的 PDF 报告和文档
- 🔧 PDF 操作 - 合并、拆分、旋转、加密、水印
- 📋 表单处理 - 自动填写可填充表单,批量处理申请表/合同
- 🔍 OCR 识别 - 将扫描的 PDF 转换为可搜索文本
- 🔐 安全管理 - 密码保护、权限控制、水印添加
💡 适合什么场景?
场景 1:财务数据提取
任务:从 100 份 PDF 发票中提取金额、日期、供应商信息
import pdfplumber
import pandas as pd
invoices = []
for pdf_file in ["invoice1.pdf", "invoice2.pdf", ...]:
with pdfplumber.open(pdf_file) as pdf:
# 提取表格数据
tables = pdf.pages[0].extract_tables()
# 转换为 DataFrame
df = pd.DataFrame(tables[0][1:], columns=tables[0][0])
invoices.append(df)
# 导出到 Excel
pd.concat(invoices).to_excel("invoices.xlsx", index=False)
场景 2:批量表单填写
任务:自动填写 50 份员工入职申请表
from pypdf import PdfReader, PdfWriter
employees = [
{"name": "张三", "department": "技术部", "date": "2024-01-15"},
{"name": "李四", "department": "市场部", "date": "2024-01-16"},
# ...
]
for emp in employees:
reader = PdfReader("template.pdf")
writer = PdfWriter()
# 填写表单字段
writer.append(reader, [0])
writer.update_page_form_field_values(
writer.pages[0],
{"name": emp["name"], "department": emp["department"]}
)
with open(f"filled_{emp['name']}.pdf", "wb") as f:
writer.write(f)
场景 3:报告自动生成
任务:每日生成标准化的销售报告 PDF
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("daily_report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
elements = []
# 添加标题
elements.append(Paragraph("每日销售报告", styles['Title']))
# 添加数据表格
data = [['产品', '销量', '收入'],
['产品A', '100', '¥10000'],
['产品B', '150', '¥15000']]
table = Table(data)
elements.append(table)
doc.build(elements)
🚀 快速开始
基本示例 1:提取 PDF 文本
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
基本示例 2:合并 PDF
from pypdf import PdfWriter
writer = PdfWriter()
for pdf in ["part1.pdf", "part2.pdf", "part3.pdf"]:
writer.append(pdf)
writer.write("merged.pdf")
基本示例 3:创建简单 PDF
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf")
c.drawString(100, 750, "Hello World!")
c.save()
🛠️ 主要工具库
| 工具 | 用途 | 特点 |
|---|---|---|
| pypdf | PDF 基本操作 | 合并、拆分、旋转、加密 |
| pdfplumber | 数据提取 | 精确提取文本和表格,保留布局 |
| reportlab | PDF 创建 | 程序化生成专业文档 |
| pytesseract | OCR 识别 | 扫描文档转文字 |
📚 深入了解
查看完整指南了解:
- 🔍 详细的工作流程 - 4 种主要工作流的完整说明
- 💻 高级代码示例 - 20+ 实用代码片段
- 📖 工具使用指南 - Python 库和命令行工具详解
- 🎯 最佳实践 - 性能优化和常见问题解决
- 📋 表单处理详解 - 完整的表单填写指南
🏷️ 相关技能
- Word 文档处理 - 处理 Word 文档
- Excel 表格处理 - 处理 Excel 表格
- PowerPoint 演示文稿处理 - 处理 PPT 文档