孩子一句话我用AI手搓了个PDF分割工具
全程没写一行代码 · 从需求到 exe 一气呵成
⚡ 写在前面 / 一句话背景
一张 A3 版面的试卷,一台只有 A4 的家用打印机,一句"字太小了能不能分两页打"——就是这三样东西,让我花了一晚上,用 AI 手搓了一个本地 PDF 分割工具。整个过程我一行代码都没自己写,全交给 DeepSeek,我只负责提需求、找茬、验收。这篇就把从想法到能双击运行的 exe,完整复盘一遍。
🔥 核心结论
AI 编程正在改变"做工具"这件事的门槛。你不再需要从零写代码,而是把需求说清楚、把 AI 写的代码审明白——角色从"写代码的人"变成"指挥 AI 写代码的人",但技术判断力依然是关键。
上网研究了一圈,解决方案无非两种,但都不省心:
▹打印缩放:把 A3 缩印到 A4,字还是小,孩子看着费劲
▹在线分割工具:要么要登录、要么限次数,免费的还带水印
偶尔用一次还行,但孩子隔三差五就要打印试卷,每次都折腾一遍实在受不了。作为一个有多年开发经验、现在又天天研究 AI 的老师——自己动手,丰衣足食。
"做一个 PDF 分割工具,把 A3 页面自动切成两张 A4,左右各半。最好有个简单的网页界面,上传 PDF 就能处理,处理完直接下载。"
▹后端用 Python + PyMuPDF(fitz) 处理分割,配合 Pillow 绘制预览分割线
▹前端用 Flask + HTML 做一个简洁的上传下载页面,支持预览
核心逻辑其实很朴素:读取原始 PDF 每一页,用 clip 参数截取左半和右半,再分别作为新页面插入,最终合并成新 PDF。DeepSeek 不仅生成了 main.py,连 templates 里的 HTML 页面也顺手写好了。提需求、看结果、不满意再调,几轮对话,基础功能就成型了。

📸 DeepSeek 对话界面 —— 输入需求后自动给出 PyMuPDF 方案 + 完整代码
flask、PyMuPDF、Pillow,清爽。初次调试很顺,但实测发现两个小问题: 1.内存占用偏高 —— 分割多页时内存增长快,发现是 Pixmap 对象在循环里没及时释放。加了 pix.close(),并用 try-finally 确保资源一定释放。
2.预览和分割重复读文件 —— 预览开一次、分割又读一次,对大文件略不爽。但试卷通常就几页,影响可忽略,就没再折腾。
把问题和报错直接丢给 DeepSeek,它很快给出修改建议,还帮我完善了异常提示(检测文件扩展名、空文件等)。几轮迭代下来,代码健壮多了。

📸 把问题丢给 DeepSeek —— 它精准定位了 margin 导致的空白区域问题
# 截取左半页left_rect = fitz.Rect(0, 0, mid_x, height)
left_pix = page.get_pixmap(clip=left_rect, dpi=150)
left_page = new_doc.new_page(width=mid_x, height=height) left_page.insert_image(left_page.rect, pixmap=left_pix) left_pix.close() # 右半页同理
💡 这里 dpi=150 是清晰度和性能的平衡点,追求更高清可调到 200,但生成速度会变慢。
pyinstaller --onefile --add-data "templates;templates" main.py

📸 PyCharm 终端执行 PyInstaller 打包 —— main.py + templates 一键变 exe
--onefile 打包成单个 exe,--add-data 把 HTML 模板一起打进去。打包完,dist 目录下生成一个 main.exe,双击就能用——上传、分割、下载,一气呵成。 🪶 一个轻量级的本地 PDF 分割工具
▹打开 exe,浏览器自动弹出本地页面 http://127.0.0.1:5000
▹上传 A3 版面 PDF,页面立即显示带 红色分割线 的预览图
▹点击"分割下载",自动切成左右两张 A4,生成新 PDF 供下载
▹全程 无需联网、本地处理,保护隐私

📸 工具实际运行效果 —— 左侧预览区 + 右侧上传/操作面板 + 底部操作日志
🔗 GitHub 源码(含完整代码和打包说明,欢迎 Star & Fork)
github.com/luke0805/python-toolbox/tree/master/tools/pdf-split
📥 百度网盘(打包好的 exe,下载就能用)
pan.baidu.com/s/1ht9g3IrYzXhE7vjnOSnMgA?pwd=g246
注:如果网盘链接失效,可以直接去 GitHub 下载源码,按 README 自行打包。
当然,AI 不是万能的。它生成的代码需要你有判断力——知道哪里可能出问题、怎么跟它沟通让它修正。这就像 从"写代码的人"变成"指挥 AI 写代码的人",角色变了,但技术思维依然重要。这次也提醒我:即使是 AI 写的代码,也要认真审查资源管理和异常处理,这些细节决定了一个小工具是否真的"好用"。
全程不写一行代码就能做出一个实用工具,这事放在两年前我是不敢想的。而现在,它就这么发生了。技术,应该服务于生活,而不是成为生活的障碍。
THANK YOU FOR READING
如果你对 AI 编程感兴趣,或在使用这个工具时遇到问题欢迎在 GitHub 提 Issue,或直接给我留言
AI 手搓工具系列 · DeepSeek + PyMuPDF + Flask + PyInstaller
夜雨聆风