乐于分享
好东西不私藏

孩子一句话,我用AI手搓了个PDF分割工具

孩子一句话,我用AI手搓了个PDF分割工具
AI CODING · NO CODE

孩子一句话我用AI手搓了个PDF分割工具

全程没写一行代码 · 从需求到 exe 一气呵成

DeepSeek · PyMuPDF · Flask · PyInstaller
10110 00101 11010 01100 10111

⚡ 写在前面 / 一句话背景

一张 A3 版面的试卷,一台只有 A4 的家用打印机,一句"字太小了能不能分两页打"——就是这三样东西,让我花了一晚上,用 AI 手搓了一个本地 PDF 分割工具。整个过程我一行代码都没自己写,全交给 DeepSeek,我只负责提需求、找茬、验收。这篇就把从想法到能双击运行的 exe,完整复盘一遍。

🔥 核心结论

AI 编程正在改变"做工具"这件事的门槛。你不再需要从零写代码,而是把需求说清楚、把 AI 写的代码审明白——角色从"写代码的人"变成"指挥 AI 写代码的人",但技术判断力依然是关键。

🖨️起因一张 A3 试卷引发的折腾
             上周给孩子打印试卷,孩子看了一眼说:"字太小了,能不能分成两页打?"我拿起卷子一看——老师发的是 A3 版面的 PDF,家里只有 A4 打印机。直接打印,内容会缩成巴掌大一块,孩子根本没法做。             

上网研究了一圈,解决方案无非两种,但都不省心:

打印缩放:把 A3 缩印到 A4,字还是小,孩子看着费劲

在线分割工具:要么要登录、要么限次数,免费的还带水印

偶尔用一次还行,但孩子隔三差五就要打印试卷,每次都折腾一遍实在受不了。作为一个有多年开发经验、现在又天天研究 AI 的老师——自己动手,丰衣足食。

💡思路让 AI 替我写代码
             这次我给自己定了个规矩:全程用 AI 编程,自己不动手写一行代码。工具选的是 DeepSeek——代码生成能力不错,免费、不限次数,特别适合这种"对话式开发"。             

"做一个 PDF 分割工具,把 A3 页面自动切成两张 A4,左右各半。最好有个简单的网页界面,上传 PDF 就能处理,处理完直接下载。"

             需求扔过去,DeepSeek 很快给出了方案:             

后端用 Python + PyMuPDF(fitz) 处理分割,配合 Pillow 绘制预览分割线

前端用 Flask + HTML 做一个简洁的上传下载页面,支持预览

核心逻辑其实很朴素:读取原始 PDF 每一页,用 clip 参数截取左半和右半,再分别作为新页面插入,最终合并成新 PDF。DeepSeek 不仅生成了 main.py,连 templates 里的 HTML 页面也顺手写好了。提需求、看结果、不满意再调,几轮对话,基础功能就成型了。

📸 DeepSeek 对话界面 —— 输入需求后自动给出 PyMuPDF 方案 + 完整代码

🔍调试与优化AI 写代码,我来找茬
             代码拿到手,先在 PyCharm 里跑起来。我习惯用 Anaconda 建独立虚拟环境,避免依赖冲突。项目依赖就三个:flaskPyMuPDFPillow,清爽。初次调试很顺,但实测发现两个小问题:             

1.内存占用偏高 —— 分割多页时内存增长快,发现是 Pixmap 对象在循环里没及时释放。加了 pix.close(),并用 try-finally 确保资源一定释放。

2.预览和分割重复读文件 —— 预览开一次、分割又读一次,对大文件略不爽。但试卷通常就几页,影响可忽略,就没再折腾。

把问题和报错直接丢给 DeepSeek,它很快给出修改建议,还帮我完善了异常提示(检测文件扩展名、空文件等)。几轮迭代下来,代码健壮多了。

📸 把问题丢给 DeepSeek —— 它精准定位了 margin 导致的空白区域问题

核心分割逻辑 · main.py(简略版)
# 截取左半页
left_rect = fitz.Rect(00, 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,但生成速度会变慢。

📦打包成 exe让不懂 Python 的人也能用
             代码调好了,新问题来了——我自己能用,家人能用吗?孩子他妈不懂 Python,总不能让她先装个 Anaconda 再跑命令行。所以最后一步是打包成 exe 可执行文件,双击就能用。用的是 PyInstaller,它能分析代码、自动收集依赖,打包成独立的可执行文件。         
打包命令
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 供下载

全程 无需联网、本地处理,保护隐私

🖥️ 运行截图 · 127.0.0.1:5000

📸 工具实际运行效果 —— 左侧预览区 + 右侧上传/操作面板 + 底部操作日志

🔗 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 编程真的在改变"做工具"这件事的门槛。以前做这样一个工具,得自己查文档、写代码、调 bug,没有半天搞不定。现在你只需要把需求说清楚,AI 就能帮你搭好代码骨架,你只做"验收"和"微调"。             

当然,AI 不是万能的。它生成的代码需要你有判断力——知道哪里可能出问题、怎么跟它沟通让它修正。这就像 从"写代码的人"变成"指挥 AI 写代码的人",角色变了,但技术思维依然重要。这次也提醒我:即使是 AI 写的代码,也要认真审查资源管理和异常处理,这些细节决定了一个小工具是否真的"好用"。

全程不写一行代码就能做出一个实用工具,这事放在两年前我是不敢想的。而现在,它就这么发生了。技术,应该服务于生活,而不是成为生活的障碍。

THANK YOU FOR READING

如果你对 AI 编程感兴趣,或在使用这个工具时遇到问题欢迎在 GitHub 提 Issue,或直接给我留言

AI 手搓工具系列 · DeepSeek + PyMuPDF + Flask + PyInstaller

10110 00101 11010 01100 10111 01001