上个月调试一套电力系统暂态仿真模型,卡在了PSCAD里一组逻辑运算组件的使用上。点开组件自带的帮助说明,满屏英文,边看边查词典的效率实在感人。群里有同行提到用DeepSeek做技术文档翻译,我顺手就把手上这份 operators 英文说明书当成了第一批试验对象。跑完全程之后我最大的体会是:用AI翻译技术文档,真正的难点从来不是“它译得是不是通顺”,而是“你有没有胆量拿着译文结果去搭模型”。这篇记录就是这次完整实操的回放,包括文档拆解、术语表构建、提示词设计、结果验证和踩坑复盘,既适合正在被英文仿真软件手册劝退的电力从业者,也适合所有想用大模型批量处理外文技术文档的人。
1. operators 说明书里装的是什么,为什么它最值得先翻
1.1 搞清楚对象:这不是一整本手册,而是一类组件的帮助集
在PSCAD里,每个元件都自带一段以 .hdp 为扩展名的帮助文本,平时在画布上双击组件或者点帮助按钮看到的,就是这些文本渲染出来的内容。所谓 operators 说明书,通常不是出版社出的那种几百页手册,而是 Master Library 下“运算/操作类组件”的说明集合。这类组件和普通变压器、断路器不一样,它们的职责是对信号做数学运算、逻辑判断、限幅、比较、选通等处理。
我这次要翻的内容,就是这一整批帮助文件拼起来的说明文档。它最烦人的地方在于:组件之间长得像,参数却很绕。比如同是带比较功能的单元,有的比较输出是布尔量,有的输出是带滞回的状态量,有的还附带一个标志位引脚。如果不把描述看清楚,搭控制逻辑的时候很容易用错输出引脚。
1.2 这块文档为什么难啃
难啃的关键不是单词难,而是句式和专业背景。原文里的句子经常是 operation-oriented 的写法:“the output signal will be held at its previous value until the reset condition is satisfied”。这种句子单词全认识,但翻译成中文要考虑“保持”“维持”“锁定”之间的语义差别。更麻烦的是,文档里大量出现 Fortran 风格的语句和变量名,比如按位运算、模数运算、时间步长相关的内部变量。
普通的在线翻译工具遇到这种内容,经常把专业术语译得七零八落。同一个词在组件A里叫“instance parameter”,在组件B的说明里又变成了“internal parameter”,直接机翻会出来“实例参数”“内部参数”两种说法。翻译本身没错,但读者很难判断这俩到底是不是一回事,而实际上它们在PSCAD的参数体系里确实有区别。
1.3 技术文档翻译的目标:不是“翻译”,是“可执行”
我觉得所有准备拿AI翻译技术文档的人,都应该先建立一个概念:这次翻译的质量评估标准,不是“中文读起来顺不顺”,也不是“和原文对照时准确率有多高”,而是“一个懂电力系统基本原理、但英文不好的工程师,拿着中文译文能不能把组件正确配起来、把模型搭起来跑通”。
这个目标决定了后面所有做法。为了“可执行”,就必须保证数字、单位、默认值、布尔逻辑、引脚名称这些硬信息一个都不能错;而修饰性、解释性的文字,反而允许略微意译,甚至可以补充成更容易理解的说法。
2. 开工之前我做的四步准备:拆文本、建术语表、定分段、处理表格
2.1 先把 PDF 变成 AI 吃得动的纯文本
我拿到的 operators 说明书是 PDF 格式。PDF 直接塞给 DeepSeek 并不是明智做法,因为 PDF 里的公式区域、页眉页脚、表格线条经常会被识别成乱码或奇怪的符号,AI 如果同时处理这些噪声,输出质量会明显下降。
我的做法是先用工具把 PDF 导出成 Word,再从 Word 复制出纯文本。导出后要认真检查两个地方:一是所有数学公式,PSCAD 文档里的公式一般是用普通字体排版的,比如 y = (a * b) / c,这种能保留住;二是参数表,很多表格在导出后会变成一行行用换行符分割的连续文本,表格的“列”信息会丢失。
遇到这种丢失表格结构的文本,我会手动在关键位置插入分隔标记,例如把本来是一行参数表的内容整理成“参数名|类型|默认值|描述”的管道符分隔格式,再交给 DeepSeek。这比让 AI 连猜带蒙地去还原表格要可靠得多。
2.2 术语表:翻译任务的定海神针
在正式翻译前,我花了一个小时建了一张术语对照表。这张表看起来简单,但它直接决定了整篇译文的稳定性。
我当时整理的基础术语表大致长这样:
| 英文原文 | 中文译文 | 说明 |
|---|---|---|
| component | 组件 | PSCAD中的基础单元 |
| instance parameter | 实例参数 | 在画布选中组件后可配置的参数 |
| internal parameter | 内部参数 | 隐藏在组件内部、一般只读的参数 |
| input signal | 输入信号 | 送入组件的电气或控制信号 |
| output signal | 输出信号 | 组件输出的信号 |
| flag output | 标志输出 | 指示组件状态或动作是否发生的输出引脚 |
| upper/lower limit | 上限/下限 | 限幅类组件的边界值 |
| time step | 仿真步长 | 电磁暂态仿真计算的时间间隔 |
| reset condition | 复位条件 | 触发输出归零/恢复的条件 |
| hold | 保持 | 维持上一次的输出值 |
建立术语表最大的好处,是让 DeepSeek 在翻译时不会把同一个英文词翻出好几个花样。而且这张表还能被复用到后续对其他手册翻译中,算是一劳永逸。
2.3 分段策略:以“组件”为单位,而不是以“页”为单位
我最初想按 PDF 的页来切分,后来发现行不通。因为说明文档里一个组件的描述经常从一页中间开始,到下一页上半部分结束,按页切会让上下文被硬生生切断。
后来我改成按“组件”切。每拿到一个组件的一段完整说明文本,单独作为一轮对话的输入。这样 DeepSeek 能获得完整的上下文,不会因为看不到某部分而导致漏译或理解偏差。
如果你手里的文档不是明显按组件组织的,建议按“标题层级”来切:看到一级标题就开新对话,二级标题作为一段,尽量确保每个待翻译块在语义上是完整的。
2.4 表格和代码块单独处理,不要夹杂在长段落里
PSCAD 组件说明里常见两类特殊内容:参数列表表格和 Fortran 代码示例。这两类内容和散文段落的处理方式完全不同。
表格我的做法是:先手动把核心列信息整理好,然后让 DeepSeek 一次性将所有行翻译成 Markdown 格式的表格。对于 Fortran 代码示例,我会要求“代码注释翻译为中文,代码本体一字不动”。如果代码里包含数学运算符、函数名,翻译时必须百分百保留,因为工程里的人会直接拿这些语句去写自定义模型或者对照在线帮助。
3. 翻译执行的两种路线:对着网页逐段喂,还是写脚本调接口
3.1 我实际用的提示词模板
先展示一下我打磨过的提示词模板,这份提示词不是一次成型,而是试了几轮后才定下来的:
你是一名电力系统仿真软件技术文档的翻译专家。 请把下面的英文文档内容翻译成中文。要求如下: 1. 严格按照术语表翻译,术语表见下方。 2. 保留所有变量名、参数名、单位符号、引脚名称和数字值,不得改动。 3. 表格内容输出为Markdown表格。 4. 句子可以调整语序,但不要遗漏任何否定词、条件词。 5. 译文风格偏向中文技术文档,直接给出译文正文,不输出多余解释。 术语表: [在此粘贴当前文档涉及的术语表] 待翻译内容: [粘贴某一段完整文本]关于“不输出多余解释”这一条,我特意加上是有原因的。DeepSeek 默认的回复风格比较“热情”,经常在译文前面加一句“好的,以下是翻译结果:”,甚至还会贴心地补充一段“根据我的理解,这个组件的功能是……”。对日常对话来说这没问题,但做批量文档翻译时,这些额外文字会污染后续拼接环节,必须从一开始就禁止。
3.2 一段原文与两个版本的对比
我拿文档里一句比较典型的话做个示例。原文大意是这样的:
This component limits the magnitude of the incoming signal to a value between the upper and lower bounds. A flag output is set to 1 when the input exceeds the upper limit.
如果直接上普通直译,很容易变成:“这个组件将输入信号的幅值限制在上限和下限之间的一个值。当输入超过上限时,一个标志输出被设置为1。”
这句话没有硬伤,但“标志输出被设置为1”读起来非常生硬。工程师看到这句话,会疑惑:这个标志输出是默认一直接线出来的引脚,还是需要额外配置才有的引脚?所以我在提示词里补充了一条:“在描述引脚行为时,如果原文没有明确说明引脚是否可选,保持原文信息密度,不要添加猜测,但可以调整语序。”
改进后的译文是:
该组件将输入信号的幅值限制在上限与下限的区间内。当输入信号超过上限时,标志输出置1。
虽然只改了几个字的顺序,但中文技术文档的阅读节奏就对了。我要强调一下:这个改进不是靠 AI 更强,而是靠提示词里“语序可以调整、信息不可增删”这个约束起的作用。
3.3 网页版和 API 的选择
如果你只是临时翻一段文档,开网页版、粘贴文本就行,不需要任何技术准备。但像这种一整本 operators 说明书的翻译任务,用网页版一条条复制会非常累,而且网页对话的长度限制会让上下文中断。
我的做法是写了一个简单的 Python 脚本,读取整理好的纯文本文件,按组件切分后逐段调用 API 翻译,把每轮的译文存成 Markdown 文件。脚本里几个关键设置:
- temperature 设置为 0 附近。技术翻译不欢迎创造性,温度越低,回复越稳定。
- max_tokens 调大一些,避免长表格被截断。
- 每翻译完一段,把译文追加到一个总文件里,随时可以人工核对。
脚本本身不复杂,但这一步节省的时间非常可观。如果你不熟悉代码,也可以在网页版上手动复制,只是要注意每次粘贴的内容不要过长,我试过一次贴超过两千英文字符,回复质量明显下降。
3.4 上下文传递:不要每次对话都“失忆”
翻译完一个组件后,下一个组件的翻译仍然需要前面组件的术语和风格保持一致。网页版问答如果每次重新开对话,DeepSeek 就记不住上一轮的术语约定,很容易出现同一术语在文档前后译法不一致。
我没有依赖“多轮记忆”来维持一致性,而是老老实实把术语表放在每次请求的提示词里。也就是说,每一轮的请求都包含同一份术语表,让模型在每次生成时都受到约束。这是工程上最稳的做法,绝对不要把一致性押在大模型的上下文窗口上,一旦片段超出窗口,术语漂移就来了。
4. 翻译中防不胜防的三类坑:幻觉、漏译、术语漂移
4.1 幻觉:AI 会非常自信地补充原文里没有的细节
最吓人的一次发生在某个限幅类组件的默认值翻译上。原文参数表里写着默认值是 0.0,DeepSeek 给出的表格却是“默认值:0.0 s”,平白多了一个单位“秒”。
这个“s”一加,整个参数性质就变了。该参数在原文中其实是无量纲的比例系数,如果用户按照“0.0秒”去理解,后续整定参数时会完全找不着北。这类问题出现的频次不低,尤其是参数表格里列了很多数值、单位、注释时,AI 会依据它在训练数据中见过的“惯性”,自动补齐它认为合理但原文并不存在的细节。
我当时的应对策略是:所有参数表翻译完,切回英文原文逐格核对数字和单位;对正文里的数量定义,超过五个阿拉伯数字出现的地方都手动验证一遍。这个坏消息是它没法靠提示词百分之百消灭,好消息是核对成本并不高,因为参数项本身是结构化的,对照起来很快。
4.2 漏译:否定词被吞掉,意思直接反转
漏译比幻觉更隐蔽。有一句描述复位行为的原文是:
The output will not be updated until a new simulation step is triggered.
DeepSeek 第一次输出是:
在新的仿真步长触发前,输出将被更新。
“not”被它悄悄吞掉了,整句话意思完全反转。仿真工程师如果照着后面这句理解,会以为输出在每一步都主动刷新,而正确逻辑却是输出要等到特定条件才更新。对于控制回路设计来说,这种反转会直接影响逻辑链。
后来我在提示词里专门加了一条:“翻译时必须逐词检查否定词、条件词。”但即使加了这条,也不能保证完全规避漏译。真正管用的办法其实是“反向回读”:把中文译文整体回译成英文,再和原文比对关键词。这一步我用 DeepSeek 做的时候,专门开了一个新的会话,让它输出“回译文本”并标注和原文不一致的点。回译相当于一次独立的交叉验证,能明显提高发现漏译的概率。
4.3 术语漂移:同一个概念,前后出现三种译名
前面建了术语表,为什么还会出现术语漂移?因为有些词不会出现在表格里,而是在行文的中部被顺带使用。比如“magnitude”这个词,第一段被译成“幅值”,第二段被译成“大小”,第三段又变成“数值”。
如果是一篇普通文章,这三个译名影响不大;但在仿真软件的说明文档里,“幅值”让人联想到交流量的峰值,“大小”像是泛泛的量的程度,“数值”则更像纯数字量。读者会怀疑它们是不是在描述不同的概念。
处理方法是所有章节翻译完成后,做一次全文术语“检索替换”。我先在飞书文档里搜几个出现频率高的译名的变体,逐个核对上下文,确定需要统一的用法,再手动批量替换。后来我干脆把容易漂移的词尽量留在术语表里,包括 magnitude、value、level、status、mode 这一类高频词。
4.4 上面三坑的共性问题:AI 不知道“错不起”
之所以要把这些坑单独拿出来讲,是因为我发现很多人对 AI 翻译的信任程度远高于对它失误的警惕。大模型在自然语言层面的能力很强,因此大家会下意识地认为“数字这种简单的东西不会出错”。但工程文档恰恰是对“简单东西”最严格的地方。一个阶跃时间常数错了,一个触发标志逻辑反了,整个控制行为就变了。
从现在开始,我会把每一轮 AI 输出的译文当成“实习生交上来的草稿”,需要核对后才能进入下一环节。“严查数字、死盯否定词、统一术语”这三句话,基本就是规避这三类坑的全部心法。
5. 验证环节:拿着中文译文反哺模型,让仿真结果说真话
5.1 第一步:对高风险句子做术语回译抽查
这里说的“回译抽查”,是我在前面提到过的反向交叉验证。不需要把所有内容都回译,重点抽查三类句子:带条件逻辑的、带数量或单位描述的、带引脚动作描述的。
比如文档里有句“The output is forced to the lower limit when the error exceeds the threshold”,回译成英文后如果发现“下限”变成了“上限”,“超过”变成了“低于”,那就说明译文有问题。我实际抽查了大概30条高风险句子,发现有2条存在逻辑问题,比例不低,吓得我把所有条件句都翻出来重新看了一遍。
5.2 第二步:用 translation 后的文档在 PSCAD 里搭真实算例
这是我认为最关键的验证步骤,也是“可执行”标准的直接落地。我挑了一个带比较和限幅功能的运算组件,完全只依据中文译文去配置参数,搭了一个非常简单的测试回路:
- 输入侧接一个可调斜率的斜坡信号;
- 组件参数按照译文描述设置上限和下限;
- 输出侧接一个电压表,波形文件记录输出变化。
如果中文译文对“上限”“下限”“输出保持”这些行为的描述是准确的,测试波形就应该和组件正常逻辑一致。比如斜坡信号越过上限后输出应被削平;越过下限时输出不再跟随输入;复位条件满足时输出回到当前输入值。
这个算例跑通之后,我对译文的信任度立刻上升了。之后我又挑了几个不同功能的组件重复了同样的验证,包括一个带滞回逻辑的比较单元。仿真波形和预期完全对齐,说明这批译文在“实际可用”层面是过关的。
5.3 第三步:让懂行的人做“泛读”,但不要指望全量校对
一个人从头到尾把翻译文档和英文原文逐句对照,工作量大且容易疲劳失真。我的做法是请了一位做电力系统仿真方向的同事做定向抽查,他只看了三块内容:参数表、警告说明、语法格式说明。这三块是仿真配置时最容易出事的区域,不需要他看完全文,只需要凭专业直觉判断“这上面写的东西会不会误导配置”。
这种定向人工抽查比全量走查更高效,也更能发现 AI 不会犯但你作为翻译者容易忽略的问题。比如同事就提醒我:有一处“参数最小值”在译文中写成了数组下标的含义,而不是参数取值范围的最小值,这种细节来自专业背景,AI 和普通译者都很难发现。
6. 这趟折腾完之后的几点实在体会
整个翻译过程从准备文本、建术语表、写提示词、跑批翻译到验证完成,前后花了大概一个工作周的碎片时间。如果当初硬啃英文原件,时间只会更长,而且同事们复用文档时仍然会卡在英文上。现在这份中文译本已经在组内共享,后续新同事熟悉这类组件时可以直接上手。
我留下的一套可复用资产包括:术语表一份、提示词模板一份、文本切分脚本一份、中英对照笔记整理成的一个总文档。以后如果再遇到类似的外文技术文档,第一天的工作就可以缩减为“调文本格式+更新术语表”,直接跑翻译流程。
最后提醒一句:AI翻译不会取代工程师读手册,它只负责把阅读门槛降下来。真正判断“这个组件在这个工况下能不能这么用”的责任,永远在搭建模型的人这边。我用 DeepSeek 翻译 operators 说明书只是一次提效,不是把判断权外包。如果你想尝试同样的事情,记住一句话就行:把AI当工具,不失位;把结果当草稿,不迷信。