Skip to main content

arXiv 论文翻译工具 - 将英文 LaTeX 论文翻译成中文,保留数学公式和文档结构

Project description

ieeA - arXiv 论文翻译工具

将英文 arXiv 论文翻译成中文,保留数学公式、引用和文档结构。

快速开始

# 安装
pip install -e .

# 翻译 arXiv 论文
ieeA translate https://arxiv.org/abs/2301.07041 --output-dir output/

高级选项

详细日志模式

使用 --verbose/-v 标志启用详细控制台输出:

ieeA translate https://arxiv.org/abs/2301.07041 --verbose

日志文件

每次翻译会自动生成结构化日志文件:

  • 位置: output/<arxiv_id>/translation_log_<timestamp>.json
  • 包含: 翻译配置、chunk 详情、批量信息、跳过的内容、耗时统计

批量翻译优化

  • 短内容(< 100 字符)会自动批量翻译,减少 API 调用
  • 纯占位符内容(如作者信息)会自动跳过翻译

翻译流程 (Pipeline)

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  1. 下载    │ -> │  2. 解析    │ -> │  3. 翻译    │ -> │  4. 重组    │ -> │  5. 编译    │
│  arXiv源码  │    │  LaTeX结构  │    │  文本块     │    │  LaTeX文档  │    │  生成PDF   │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

1. 下载 (Downloader)

从 arXiv 下载论文源码压缩包,自动解压并定位主 .tex 文件。

2. 解析 (Parser)

将 LaTeX 文档解析为可翻译的文本块 (Chunk),同时保护不应翻译的元素。

Chunk 划分依据(实际规则)

类型 处理方式 方法 示例
作者块 保护为占位符,不翻译 正则 + 大括号计数 \author{...}[[AUTHOR_n]]
caption 提取为 Chunk 正则 + 大括号计数 \caption{...}{{CHUNK_uuid}}
保护环境 保护为占位符 正则 + 环境嵌套计数 equation, align, tikzpicture[[MATHENV_n]]
行内数学 保护为占位符 手写扫描 $...$, \(...\), \[...\][[MATH_n]]
保护命令 保护为占位符 正则 + 大括号计数 \cite{}, \ref{}, \label{}, \url{}, \footnote{}
结构命令 提取参数为 Chunk 正则 + 大括号计数 \title{}, \section{}
可翻译环境 环境内容提取为 Chunk 正则 + 环境嵌套计数 abstract, itemize, enumerate
段落文本 按空行分段,长度>20字符提取为 Chunk 行级扫描 + 阈值 正文段落

处理顺序(源码顺序)

原文 -> 保护作者块 -> 提取caption -> 保护数学环境 -> 保护行内公式
     -> 保护命令(\cite等) -> 提取结构命令 -> 提取可翻译环境 -> 分割段落 -> Chunks

3. 翻译 (Translator)

  • 并发调用 LLM API 翻译各 Chunk
  • 支持术语表 (Glossary) 保持术语一致性
  • 自动重试和断点续传

4. 重组 (Reconstructor)

将翻译后的文本替换回占位符位置,还原完整 LaTeX 文档。

5. 编译 (Compiler)

使用 XeLaTeX 编译生成中文 PDF,自动注入中文字体支持。

配置

配置文件位置:~/.ieeA/config.yaml

完整配置模板(按需删减,留空表示使用默认值):

llm:
  # SDK: openai | anthropic | null(null 表示直连 HTTP)
  sdk: null
  # 模型名或列表(列表时取第一个)
  models: openai/gpt-5-mini
  # API Key(当 sdk 非空时必填)
  key: ""
  # 可选:自定义接口地址
  endpoint: https://openrouter.ai/api/v1/chat/completions
  temperature: 0.1
  max_tokens: 4000

compilation:
  engine: xelatex
  timeout: 120
  clean_aux: true

paths:
  output_dir: output
  cache_dir: .cache

fonts:
  # 自动检测中文字体
  auto_detect: true
  # 手动指定字体(可选)
  main: null
  sans: null
  mono: null

translation:
  # 自定义提示词(可选)
  custom_system_prompt: null
  custom_user_prompt: null
  # 额外保留原文的术语列表(不翻译)
  preserve_terms: []
  # 翻译质量:standard 或 high
  quality_mode: standard
  # Few-shot 示例文件路径(可选)
  examples_path: null

parser:
  # 额外保护的 LaTeX 环境(不翻译)
  extra_protected_environments: []
  # 额外可翻译的 LaTeX 环境
  extra_translatable_environments: []

术语表

术语表位置:~/.ieeA/glossary.yaml

# 保持原文不翻译
"MMLU": "MMLU"
"LLaMA": "LLaMA"

# 指定翻译
"Attention": "注意力机制"
"Transformer":
  target: "Transformer"
  context: "Deep Learning"

支持的 LLM

提供商 模型示例 环境变量
OpenAI gpt-4o, gpt-4o-mini OPENAI_API_KEY
Claude claude-3-opus, claude-3-sonnet ANTHROPIC_API_KEY
Qwen qwen-turbo, qwen-max DASHSCOPE_API_KEY
Doubao doubao-pro-* VOLCENGINE_API_KEY

提示:可通过 base_url 配置使用 OpenRouter 等代理服务。

项目结构

src/ieeA/
├── cli.py              # 命令行入口
├── downloader/         # arXiv 下载器
├── parser/             # LaTeX 解析与分块
│   ├── latex_parser.py # 核心解析逻辑
│   └── structure.py    # Chunk 数据结构
├── translator/         # 翻译流水线
├── compiler/           # PDF 编译
├── validator/          # 翻译质量验证
└── rules/              # 配置与术语表

依赖

  • Python 3.10+
  • XeLaTeX(用于 PDF 编译)
  • 中文字体(macOS 自动检测 Songti SC / PingFang SC)

License

GPL-3.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ieea-1.1.0.tar.gz (50.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ieea-1.1.0-py3-none-any.whl (60.3 kB view details)

Uploaded Python 3

File details

Details for the file ieea-1.1.0.tar.gz.

File metadata

  • Download URL: ieea-1.1.0.tar.gz
  • Upload date:
  • Size: 50.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for ieea-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7bcf9fbb4489c91b93c5255d4501a9ce443dd965d47179395839d7f7c4fab88f
MD5 cd53adcfac6fa02d29412f603e973381
BLAKE2b-256 9c8dd48e3410dd76e62022e486fb05e69387945cc902ace890d859c438a94e95

See more details on using hashes here.

File details

Details for the file ieea-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: ieea-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 60.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for ieea-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e4fc0c55a1600ff9987666f60c36a0111bab0a06a87c580272d34b50a8ba661
MD5 e661f684c36f05f018a63a4d7ec82da3
BLAKE2b-256 ce7450e329b56735018d2ecfba5a6ab0c94c386e20408ea212fbb61d3df91488

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page