← 回到学习笔记
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 文档。PySide6或tkinter:提供桌面文件选择界面。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,请它:
- 先指出需求中不清楚的地方。
- 给出最小改动方案,不一次重写所有文件。
- 解释新增依赖的用途和风险。
- 生成正常文件、空文件、扫描件、损坏文件等测试用例。
不要把客户文件、密码、密钥或未授权文档直接上传给外部 AI 服务。
六、测试与交付
至少测试以下情况:
- 单个正常文本型 PDF。
- 多个 PDF 的批量处理。
- 扫描型 PDF 或没有可提取文本的文件。
- 损坏、加密或无权限读取的文件。
- 输出文件已存在的情况。
确认功能后再打包。Windows 可使用 PyInstaller:
# 打包单文件 Windows 可执行程序;根据项目入口文件调整 app.py
python -m PyInstaller --onefile app.py
打包必须在目标操作系统上验证。Windows 的 EXE 不能直接在 macOS 上生成;macOS、Linux 也需要各自在对应系统中构建和测试。
本篇小结
AI 能加快需求拆解、代码初稿和排错,但不能替代对输入文件、转换质量和交付环境的验证。先做可运行的最小版本,再逐步加入批量处理、图形界面、OCR 和更复杂的版式恢复,能更稳妥地把想法做成可用工具。
技术指导来自:Python4Office