Python文档处理案例有哪些?

wen python案例 3

本文目录导读:

  1. PDF 文档处理
  2. Word 文档处理(.docx)
  3. Excel 电子表格处理
  4. 纯文本与 Markdown 处理
  5. 图像文档处理(OCR 与扫描件)
  6. 复杂格式转换与批量处理工具
  7. 实际项目案例示例
  8. 总结建议

Python 在文档处理方面功能非常强大,生态也十分丰富,下面我按文档类型分类,列举一些常见且实用的处理案例,每个案例都会说明核心库和典型应用场景。


PDF 文档处理

提取文本内容

  • 场景:从合同、报告中抓取关键信息。
  • PyMuPDF (fitz) 或 pdfplumber
  • 案例:读取 PDF 中所有文本,并按页保存。
import pdfplumber
with pdfplumber.open("合同.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

提取表格数据

  • 场景:财务报表、科研数据表中的结构化数据。
  • camelot-pytabula-py
  • 案例:将 PDF 表格转为 Excel。
import camelot
tables = camelot.read_pdf("报表.pdf", pages="1-3", flavor="lattice")
tables[0].to_excel("输出.xlsx")

合并/拆分 PDF

  • 场景:将多个发票合并为一个文件,或从大文件中取出特定页码。
  • PyPDF2pypdf
  • 案例:合并多个 PDF。
from pypdf import PdfWriter
writer = PdfWriter()
for file in ["a.pdf", "b.pdf"]:
    writer.append(file)
writer.write("合并.pdf")

PDF 转 Word 或图片

  • 场景:方便编辑或演示。
  • pdf2docxpdf2image
  • 案例:PDF 转 Word。
from pdf2docx import Converter
cv = Converter("输入.pdf")
cv.convert("输出.docx", start=0, end=None)
cv.close()

Word 文档处理(.docx)

批量生成 Word 合同/报告

  • 场景:模板替换(邮件合并)。
  • python-docx + Jinja2docxtpl
  • 案例:用模板生成 100 份个性化合同。
from docxtpl import DocxTemplate
doc = DocxTemplate("合同模板.docx")
context = {"甲方": "张三", "金额": "5000"}
doc.render(context)
doc.save("输出合同.docx")

提取 Word 中的图片

  • 场景:从简历或报告中提取头像、图表。
  • python-docx
  • 案例:遍历文档中的图片并保存。
from docx import Document
import os
doc = Document("报告.docx")
for i, rel in enumerate(doc.part.rels.values()):
    if "image" in rel.reltype:
        image = rel.target_part
        with open(f"图片_{i}.png", "wb") as f:
            f.write(image.blob)

批量转换 Word 为 PDF

  • 场景:系统自动化归档。
  • comtypes(Windows)、docx2pdf(跨平台)、libreoffice(命令行)。
  • 案例:使用 docx2pdf 批量转换。
from docx2pdf import convert
convert("输入.docx", "输出.pdf")  # 单个文件
# 批量:convert("文件夹路径/") 自动转换文件夹下所有 .docx

Excel 电子表格处理

多文件合并为一个 Sheet

  • 场景:月底汇总各门店销售数据。
  • pandas + openpyxl
  • 案例:合并文件夹下所有 Excel 文件。
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("销售数据/*.xlsx"):
    df = pd.read_excel(f)
    all_data = pd.concat([all_data, df], ignore_index=True)
all_data.to_excel("汇总.xlsx", index=False)

拆分一个大 Excel 为多个小文件

  • 场景:按部门/地区分发数据。
  • pandas
  • 案例:按“部门”列拆分为独立文件。
df = pd.read_excel("员工工资.xlsx")
for department, group in df.groupby("部门"):
    group.to_excel(f"{department}.xlsx", index=False)

自动化格式化报表(加颜色、合并单元格)

  • 场景:生成美观的月度报表。
  • openpyxl
  • 案例:对低于 60 分的单元格标红。
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill
wb = load_workbook("成绩单.xlsx")
ws = wb.active
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
for row in ws.iter_rows(min_row=2, max_col=3, max_row=10):
    for cell in row:
        if isinstance(cell.value, (int, float)) and cell.value < 60:
            cell.fill = red_fill
wb.save("成绩单_美化.xlsx")

纯文本与 Markdown 处理

批量替换文本

  • 场景:批量修改发票抬头、合同日期。
  • re(正则表达式) + 文件读写。
  • 案例:将文件夹中所有 .txt 文件的“2024”替换为“2025”。
import os, glob, re
for filepath in glob.glob("文档/*.txt"):
    with open(filepath, "r", encoding="utf-8") as f:
        content = f.read()
    content = re.sub(r"2024", "2025", content)
    with open(filepath, "w", encoding="utf-8") as f:
        f.write(content)

Markdown 转 PDF/Word

  • 场景:技术文档导出。
  • pandoc(命令行) + subprocessmdpdf
  • 案例:Markdown 转 PDF(需安装 pandoc)。
import subprocess
subprocess.run(["pandoc", "文档.md", "-o", "文档.pdf", "--pdf-engine=xelatex"])

图像文档处理(OCR 与扫描件)

识别扫描 PDF 中的文字

  • 场景:名片、纸质合同数字化。
  • pytesseract + pdf2image
  • 案例:将扫描版 PDF 转为可编辑文本。
from pdf2image import convert_from_path
import pytesseract
images = convert_from_path("扫描件.pdf", dpi=300)
text = ""
for img in images:
    text += pytesseract.image_to_string(img, lang="chi_sim+eng")
with open("结果.txt", "w", encoding="utf-8") as f:
    f.write(text)

发票关键信息提取(结构化 OCR)

  • 场景:财务报销自动化。
  • paddleocr 或百度/阿里云 AI API。
  • 案例:使用 PaddleOCR 提取发票号码、金额。
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
result = ocr.ocr("发票.jpg", cls=True)
for line in result[0]:
    print(line[1][0])  # 文本内容

复杂格式转换与批量处理工具

场景 库/工具 案例说明
任意文档格式互转 pandoc Markdown ↔ Word ↔ HTML ↔ LaTeX
批量重命名文件 os + pathlib 将文件名中的日期统一格式
提取公文中的章/节标题 python-docx 遍历段落样式 生成自动目录

实际项目案例示例

案例项目:合同关键信息提取系统

  1. 输入:批量 PDF 合同扫描件(含盖章)。
  2. 处理流程
    • pdf2image 转图片 → PaddleOCR 识别文字。
    • python-docx 解析规则(如“甲方:”后面的内容)。
    • openpyxl 输出到 Excel,包含:合同编号、甲方、金额、签署日期。
  3. 输出:汇总 Excel 报表,效率提升 10 倍。

总结建议

  • 如果只是想简单操作:优先使用 pandas(Excel)、pypdf(PDF)、python-docx(Word)。
  • 如果需要识别图片中的文字paddleocrtesseract
  • 如果只是格式转换pandoc 是最通用的单一工具。
  • 如果追求高性能/大文件PyMuPDFpypdf 快很多,camelottabula 表格提取更准。

你可以根据自己手头的任务类型,直接参考上述案例中的代码片段进行改造,如果需要针对某个特定场景(如金融财报分析、简历筛选、合同审核)做更深入的方案,欢迎补充描述,我可以给出更具体的架构和代码示例。

标签: Python 文档处理

抱歉,评论功能暂时关闭!