用智谱 AI 翻译 PDF 时,先确认模型拿到的文字完整,再翻译。双栏串行、扫描页没有文字、表格行列错位,都会让译文缺项。本文采用“本地提取文字 → 人工检查 → 智谱文本 API 分段翻译”的方法,输出双语文本,不承诺保持原 PDF 版式。
适用对象是能够运行 Python、需要核对英文技术材料的读者。下文材料与译文为虚构演示,未进行付费模型实测;实际效果取决于原 PDF 和模型输出。未获授权的材料不要上传到第三方服务。

先判定 PDF 有没有可提取的文字
在 PDF 阅读器中尝试选择并复制一段正文。能复制不代表阅读顺序一定正确;还要检查列顺序、段落连接和表格数字。纯扫描页需要先经过 OCR,也就是把图像识别成文字。
pypdf 官方项目的文字提取说明给出 PdfReader 和 extract_text() 的用法,同时说明它不能直接识别图片中的文字,复杂 PDF 的文本顺序也可能不可靠。
- 在工作目录保存一份有权处理的 PDF,命名为
source.pdf。 - 运行
python -m pip install pypdf。 - 把以下代码保存为
extract_pdf.py,运行python extract_pdf.py。 - 打开生成的
extracted.txt,对照原 PDF 逐页检查。
from pathlib import Path
from pypdf import PdfReader
reader = PdfReader("source.pdf")
parts = []
for number, page in enumerate(reader.pages, start=1):
text = page.extract_text() or ""
if not text.strip():
raise ValueError(f"第 {number} 页没有可提取文字,请先人工检查或做 OCR")
parts.append(f"[Page {number}]\n{text}")
Path("extracted.txt").write_text("\n\n".join(parts), encoding="utf-8")
print("提取页数:", len(parts))
不要直接翻译整份提取文本。先选择一个完整段落,保留原页号、表格引用和段编号,例如 P03-S02。脚本没有解决 OCR、双栏重排或表格复原;这些问题应在翻译前修正。
建立术语和数字约束
下面两段是虚构设备说明,用于展示核对方法,不是任何实际产品规格:
P03-S01: Keep the enclosure below 45 °C during operation.
P03-S02: Replace the filter every 180 days. Do not wash the sensor.
术语:enclosure=外壳;filter=滤网;sensor=传感器。
目标语言:简体中文。
格式:段编号、英文原文、中文译文、待确认术语。
发送给智谱的完整提示词:
只翻译以下已经人工核对的PDF文本。
保留段编号、数字、单位和否定词;不要总结或删减。
采用术语表;原文不清楚则列“待确认”,不自行补规格。
每段输出英文原文和中文译文。
术语:enclosure=外壳;filter=滤网;sensor=传感器。
P03-S01: Keep the enclosure below 45 °C during operation.
P03-S02: Replace the filter every 180 days. Do not wash the sensor.
通过智谱文本接口发送段落
根据官方快速开始获取开放平台 API Key,并检查模型权限与价格。GLM-4 官方说明介绍了这一文本模型系列;以下请求采用当前对话补全接口列出的 glm-4-flash-250414 编码。将上一节完整提示词存成 UTF-8 的 translation_prompt.txt,保存下面脚本后运行。
import getpass, json, urllib.request
from pathlib import Path
prompt = Path("translation_prompt.txt").read_text(encoding="utf-8")
payload = {"model": "glm-4-flash-250414", "stream": False,
"messages": [{"role": "user", "content": prompt}],
"max_tokens": 1800}
req = urllib.request.Request(
"https://open.bigmodel.cn/api/paas/v4/chat/completions",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={"Authorization": "Bearer " + getpass.getpass("API Key: "),
"Content-Type": "application/json"}, method="POST")
with urllib.request.urlopen(req, timeout=60) as response:
data = json.load(response)
item = data["choices"][0]
print("finish_reason:", item.get("finish_reason"))
Path("translated.txt").write_text(item["message"]["content"], encoding="utf-8")
官方对话补全文档说明请求和结果字段。这里发送的是经过检查的纯文本,代码没有向该文本接口直接上传 PDF 二进制文件。
译文应满足哪些条件
人工编写的参考译文为:P03-S01“运行期间使外壳温度低于 45 °C。”P03-S02“每 180 天更换滤网。不要清洗传感器。”措辞可以调整,但不能变成“45 °C 或以下”,也不能把“不要清洗”改成“定期清洗”。
- 段号应为 P03-S01、P03-S02,两段均有原文与译文。
- 45、180、°C、天分别对应原文数字和单位。
- 外壳、滤网、传感器与术语表一致,不把滤网和传感器混用。
- “below”和“Do not”的边界与否定含义保留。
实际文档逐段登记“已核对、待确认”,对照原 PDF 而不是只对照提取文件;提取时丢掉的文字不会因翻译变回来。
出现问题时先退回哪一步
原文顺序错、表格数字对不上或扫描页缺字,退回提取检查;译文少段、术语不一致,缩短到单段并带同一术语表重发;返回 length 时先处理输出截断。不要让模型自行“补全”看不清的原文。
要交付可编辑双语文档,需要把核对后的文本放入文档编辑器自行排版。合同、医疗或安全操作材料应由相应专业人员复核,示例流程不构成专业译文质量保证。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30478.html