# BabelDOC 论文翻译教程：双栏公式、编号与段落对照

用原创双栏实验短文练习 BabelDOC：固定引擎、保留公式编号、检查阅读顺序，用同位置裁切逐项验收。

运行范围：原创 PDF 材料与本地验收已实际执行。固定 BabelDOC 0.6.4 的服务配置与命令由官方解析器离线核对；没有安装翻译环境或调用翻译模型，不包含模型译文。service.example.toml 只含占位值。复制为 service.toml 后在本机填写真实参数，不分享带 Key 的文件。

依赖：Python 3.11+；PDF 验收需 Poppler 的 pdfinfo/pdftotext；翻译环境使用独立 Python 3.12 与 BabelDOC 0.6.4。

## 1. 打开双栏原文与清单

source.pdf 为原创两栏短文，包含编号 (1)、(2)、两处小标题与页脚。输入截图和公式细节图均直接渲染该 PDF；没有使用他人的论文。

```sh
python3 verify.py
```

## 2. 区分引擎与 WebUI

BabelDOC 提供自己的 CLI 和 Python API；PDFMathTranslate-next 可以作为其上层界面。本文固定 BabelDOC 0.6.4 的公开参数；相似短选项不代表不同引擎的全部配置互通。

## 3. 安装固定发行版并查帮助

在独立环境安装 BabelDOC 0.6.4，记录版本并打开 --help。若希望用 WebUI，另按 Next 文档安装 pdf2zh_next --gui；不能把上层界面与 BabelDOC 包当作同一版本。教材只用官方解析器检查命令，没有安装翻译环境或调用模型。

```sh
uv tool install --python 3.12 "BabelDOC==0.6.4"
babeldoc --version
babeldoc --help
```

## 4. 复制服务配置并填入自己的参数

把 service.example.toml 复制为 service.toml，在本机编辑 [babeldoc] 下的 openai-model、openai-base-url、openai-api-key，保留 openai=true。模型与 Base URL 来自你实际可用的服务，Base URL 通常含 /v1，不含 /chat/completions。配置键使用连字符，不能改成 openai_model。示例都是占位值；自己的 service.toml 含 Key，不分享或放进公开 ZIP。

```sh
cp service.example.toml service.toml
```

## 5. 先限制一页并生成双语产物

填完自己的 service.toml 后，执行下面完整的配置加文件命令。官方 0.6.4 解析器已离线检查 --config 与这些字段；真正翻译会使用所配服务的额度，教材未执行模型步骤，也没有伪造中文结果 PDF。

```sh
babeldoc --config service.toml --files source.pdf --pages 1 --lang-in en --lang-out zh --output output
```

## 6. 按固定位置检查公式与栏序

对照 formula-regions.csv：检查 x_bar=(x1+...+xn)/n 与 r=abs(y-y_hat) 的字符及编号；沿左栏从上到下、再右栏读，不能左右逐行交错。

```sh
pdftotext -layout output/your-bilingual.pdf output/translated.txt
```

## 7. 保存三种证据

保留原文整页、公式裁切和实际译文同位置裁切，记录正文是否压缩、标题是否漂移。结构与公式检查通过后再人工评估译文，不把占位文本当模型输出。

## 来源

- https://github.com/funstory-ai/BabelDOC/tree/v0.6.4
- https://github.com/funstory-ai/BabelDOC/blob/v0.6.4/README.md
- https://funstory-ai.github.io/BabelDOC/

原创输入材料可用于学习练习；service.toml 为读者自己的私有配置，不包含在此练习包。
