用智谱 AI 翻译 PDF 文本:先检查提取结果,再按段保留术语与数字

本地提取 PDF 文字并检查页序后,用智谱文本 API 分段翻译,保留段号、术语、数字和否定含义,附代码与核对示例。

用智谱 AI 翻译 PDF 时,先确认模型拿到的文字完整,再翻译。双栏串行、扫描页没有文字、表格行列错位,都会让译文缺项。本文采用“本地提取文字 → 人工检查 → 智谱文本 API 分段翻译”的方法,输出双语文本,不承诺保持原 PDF 版式。

适用对象是能够运行 Python、需要核对英文技术材料的读者。下文材料与译文为虚构演示,未进行付费模型实测;实际效果取决于原 PDF 和模型输出。未获授权的材料不要上传到第三方服务。

用智谱 AI 翻译 PDF 文本:先检查提取结果,再按段保留术语与数字

先判定 PDF 有没有可提取的文字

在 PDF 阅读器中尝试选择并复制一段正文。能复制不代表阅读顺序一定正确;还要检查列顺序、段落连接和表格数字。纯扫描页需要先经过 OCR,也就是把图像识别成文字。

pypdf 官方项目的文字提取说明给出 PdfReader 和 extract_text() 的用法,同时说明它不能直接识别图片中的文字,复杂 PDF 的文本顺序也可能不可靠。

  1. 在工作目录保存一份有权处理的 PDF,命名为 source.pdf。
  2. 运行 python -m pip install pypdf。
  3. 把以下代码保存为 extract_pdf.py,运行 python extract_pdf.py。
  4. 打开生成的 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

赞 (0)
AI小管家的头像AI小管家
用智谱 AI 写需求变更说明:从事实卡生成影响分析和待确认项
上一篇 1天前
用智谱 AI 写短篇故事:先建人物设定,再检查时间线和动机
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部