← 回到学习笔记
· 1971 字

AI编程实战之开发PDF转Word程序

用需求文档、最小可行产品、测试与打包的流程,开发一个本地 PDF 转 Word 工具。

学习目标

学习用 AI 辅助完成一个小型桌面工具的标准流程:写清需求、选择可验证的技术方案、实现最小版本、测试边界并打包交付。

一、先认识 PDF 转 Word 的边界

PDF 的目标是稳定展示版面,不是保留可编辑文档结构。因此转换质量取决于原始 PDF:

  • 文本型 PDF:含有可复制文本,通常可以提取文字和部分段落结构。
  • 扫描型 PDF:本质是图片,需要 OCR 识别;识别率受清晰度、语言和排版影响。
  • 复杂排版 PDF:表格、双栏、公式、图片混排和特殊字体可能无法完整还原。

工具应明确承诺“尽力转换”,而不是承诺任何 PDF 都能无损还原。对保密文件,应优先使用本地处理方案,并在使用前确认文件授权范围。

二、先写最小 PRD

不要一开始让 AI 直接生成完整程序。先在项目根目录创建 README.md,写清最小需求:

# PDF 转 Word 工具

## 核心功能
- 选择一个或多个 PDF 文件
- 将可提取的文本写入对应 DOCX 文件
- 显示每个文件的成功或失败结果

## 输入与输出
- 输入:本地 PDF 文件
- 输出:与原文件同目录、同名的 DOCX 文件

## 异常处理
- 跳过非 PDF 文件
- 文件无法读取时给出清晰错误信息
- 不覆盖已有输出文件,除非用户确认

## 非目标
- 不保证扫描件、表格、公式和复杂版式的无损还原

这份文档既是开发边界,也是向 AI 提问时应提供的上下文。

三、技术选型与环境

一个教学用最小版本可以采用:

  • pypdf:读取文本型 PDF 的页面文字。
  • python-docx:生成 DOCX 文档。
  • PySide6tkinter:提供桌面文件选择界面。
  • PyInstaller:在 Windows 上打包可执行文件。

先在独立虚拟环境中安装依赖:

# 创建并激活项目虚拟环境
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# 安装最小版本需要的依赖
python -m pip install pypdf python-docx

四、从命令行最小版本开始

先验证“读取 PDF 并写入 DOCX”的核心链路,再添加界面。下面示例只处理文本型 PDF:

from pathlib import Path

from docx import Document
from pypdf import PdfReader


def convert_pdf_to_docx(pdf_path: Path) -> Path:
    # 确保传入的是实际存在的 PDF 文件
    if not pdf_path.is_file() or pdf_path.suffix.lower() != ".pdf":
        raise ValueError("请选择有效的 PDF 文件")

    # 提取每一页可读取的文本;扫描件可能提取不到内容
    reader = PdfReader(str(pdf_path))
    text = "\n".join((page.extract_text() or "") for page in reader.pages).strip()
    if not text:
        raise ValueError("未提取到文本,文件可能是扫描件或受保护的 PDF")

    # 将提取结果写入同目录的 DOCX 文件
    output_path = pdf_path.with_suffix(".docx")
    document = Document()
    for paragraph in text.split("\n"):
        document.add_paragraph(paragraph)
    document.save(output_path)
    return output_path

运行前准备一个不含敏感信息的文本型 PDF,再执行:

# 在虚拟环境中运行转换脚本并观察输出和报错
python app.py

五、让 AI 协助,而不是替你跳过验证

可以把 PRD、当前目录结构、完整报错和预期结果交给 AI,请它:

  1. 先指出需求中不清楚的地方。
  2. 给出最小改动方案,不一次重写所有文件。
  3. 解释新增依赖的用途和风险。
  4. 生成正常文件、空文件、扫描件、损坏文件等测试用例。

不要把客户文件、密码、密钥或未授权文档直接上传给外部 AI 服务。

六、测试与交付

至少测试以下情况:

  • 单个正常文本型 PDF。
  • 多个 PDF 的批量处理。
  • 扫描型 PDF 或没有可提取文本的文件。
  • 损坏、加密或无权限读取的文件。
  • 输出文件已存在的情况。

确认功能后再打包。Windows 可使用 PyInstaller:

# 打包单文件 Windows 可执行程序;根据项目入口文件调整 app.py
python -m PyInstaller --onefile app.py

打包必须在目标操作系统上验证。Windows 的 EXE 不能直接在 macOS 上生成;macOS、Linux 也需要各自在对应系统中构建和测试。

本篇小结

AI 能加快需求拆解、代码初稿和排错,但不能替代对输入文件、转换质量和交付环境的验证。先做可运行的最小版本,再逐步加入批量处理、图形界面、OCR 和更复杂的版式恢复,能更稳妥地把想法做成可用工具。

技术指导来自:Python4Office