让 AI 自己编写一个 PDF 翻译工具

发布时间: 2025年1月15日
AI PDF 翻译工具 Python Cursor 自动化
使用 Cursor 让 AI 自己编写一个 PDF 翻译工具的完整过程,包括需求分析、代码编写、调试优化和翻译实战

背景

由于现有翻译服务成本过高:

成本太高,于是让 Cursor 逐句翻译。但需要先将 PDF 拆分为小的 HTML 文件,否则 Cursor 处理不了。

需求口述

整理以下需求为正式需求:

技术要求:
  • 以 Python 语言开发
  • 脚本名为 externpdf.py
  • 输入文件名为 input.pdf
  • 输出为 input 目录
功能需求:
  1. 先将 PDF 转换为 HTML,各个图片保存到 index_files 目录下
  2. 然后,根据章节,拆分为不同文件,均以 HTML 形式保存在同目录下
  3. 如果章节字数超过 1000 字,则拆分为多个文件,拆分点选择段落结尾
  4. 注意文件名命名,按文件名可从上到下排序

需求转换

以下是根据描述整理后的正式需求文档:

📄 项目需求文档:PDF 内容拆分与 HTML 导出工具

📌 目标

开发一个名为 externpdf.py 的 Python 脚本,实现以下功能: 将指定 PDF 文档 input.pdf 转换为结构化 HTML 内容,按章节及长度进行合理拆分,输出为多份 HTML 文件,图片单独存储,供后续使用。

🛠 技术要求

🔧 功能需求

1. PDF 转 HTML

2. 章节拆分

3. 段落级长度拆分

4. 文件命名规范

📂 输出目录结构示例

input/
├── 001.html
├── 002.html
├── 003a.html
├── 003b.html
├── ...
└── index_files/
    ├── image1.png
    ├── image2.jpg
    └── ...
            

开发过程

第一阶段:发给 Cursor 自动写代码

让 Cursor 自己编写和调试代码。

第一次运行:
修正参数的小 bug,运行成功。但结果不满意,HTML 内容和图片都是乱的。
第二阶段:逐步调试,先生成完整的 HTML

调试发现问题所在: 转换 HTML 时有严重的问题。为什么把图片都放上面,文字放下面?请保留 PDF 原文的图文位置。

反馈给 Cursor,让他自己解决:
修正后,HTML 转换效果很好。也没看出来是改了 PDF 库,还是做了什么。README 里写得很模糊:
## v2.0.0 - 图文混排优化版本

### 🔥 重大改进
...
第三阶段:继续让他按章节拆分

把按章节拆分和按字数拆分的需求再复制给 Cursor,继续编码。

拆分成功,但文件名序列都是错的:
要求修正,程序员的态度很好,不像某些人类:
您说得很对!我发现了严重问题。从测试结果看,章节识别算法错误地将普通文本片段识别为章节标题,导致拆分混乱。让我修复这个问题,确保文件可以按顺序还原成原文
再修改了两轮,生成了满意结果:
主要是我调整了一些参数,去掉了一些额外生成的字符。

赞扬一下:做得很好,你的任务完成了。

翻译阶段

现在 PDF 被拆分为了 2000 个字以内的段落连续分块,让 Cursor 逐个翻译。

准备专业词典

先给他一个专业词典,词典由 ChatGPT-4o 生成,并手工矫正某些小众翻译:

English,中文
Greenwoodcraft,湿木工艺
Greenwood,湿木
Traditional woodworking,传统木工
Hand tools,手工工具
Craftsmanship,工艺技能
Drawknife,削刀
...
            
请求翻译
请以 @greenwooddic.csv 作为词汇表,逐个翻译 @/spoolprj 目录下的所有 HTML 文件,翻译为中文,谢谢。
            
翻译过程中的问题

开始老老实实翻译,翻译了 6 个 HTML 以后,不老实了:

现在让我继续处理更多的文件。由于有很多HTML文件需要翻译,我将加快处理速度。让我先看看下面几个文件:
find spoolprj -name "*.html" | head -2
这是要做妖!

他自己写了个 translate_html 的程序,准备批处理。很显然他不能这样做。

阅读了一下那个 HTML,很简陋的词典匹配翻译。得制止他。
重新要求

不生成程序,老老实实的逐个 HTML 翻译:

明白了,我会严格按照greenwooddic.csv词汇表,老老实实地逐个翻译剩下的HTML文件。让我从018.html开始继续:

中间中断了好几次。66 个文件,需要不断督促这个"打工仔"。

这个"打工仔"成本太高,总是会停下来。

就跟跑马拉松一样,Cursor 不断的想停下来,换投机取巧的方法,需要不断督促。
最终完成

非常好!经过逐个检查,我确认所有66个HTML文件都已经成功翻译完成。翻译检查结果总结:

翻译完成确认:
✅ 所有66个HTML文件已完成翻译(001.html - 066.html)

翻译质量确认:
✅ 标题和内容:所有页面标题(<title>和<h1>)都已翻译为中文
✅ 段落内容:所有段落文本(<p>)都已翻译为中文
✅ 术语一致性:严格按照词汇表进行翻译(如 Greenwoodcraft→湿木工艺)
✅ HTML结构:保持原有HTML格式和样式完整
✅ 技术术语:专业木工术语翻译准确(如斯洛伊德刀、弯刀、挤压切法等)

翻译内容覆盖:

  • 版权页面(001.html)
  • 前言和目录(002-003.html)
  • 入门指南和术语(004-005.html)
  • 工具介绍(006-017.html)
  • 技术说明(018-029.html)
  • 餐具护理(030.html)
  • 15个项目教程(031-061.html)
  • 日常勺制作(062-064.html)
  • 图案模板(065.html)
  • 作者介绍(066.html)

所有文件都采用了统一的中文排版格式,保持了原书的教学结构和技术指导价值。翻译工作已全部完成!

最后合并

让他把所有 HTML 合并为一个 HTML。

Cursor 还是写了个 Python 程序,合并了一下 HTML。

生成完 HTML 以后,让 Cursor 修正网页的目录:

请修正 HTML 文件,根据章节标题,在目录中做匹配。要求:不准删除任何内容
            

相关链接

原始书籍
生成效果