Skip to content

文档全文翻译器:英文PDF/MD论文 → (PDF Doc2X识别) → 翻译(GPT deepseek ollama google deepL deepLX)→ 中文文档(Markdown/Word)

Notifications You must be signed in to change notification settings

NoEdgeAI/Doc2XAPITranslate

Repository files navigation

Trans-PolyDocs

English | 中文

快速将Makdown文档或PDF文档(由Doc2X进行转换)翻译为Markdown/Word,同时保留原有公式/表格/图片格式。

内置支持多种翻译器,支持多线程翻译:

  • DeepSeek(默认翻译器)
  • OpenAI(支持自定义URL,需以/v1结尾)
  • Ollama
  • Google翻译(实验性,可能不稳定,由py-googletrans提供)
  • DeepL(官方API)
  • DeeLX
主界面 LLM设置 多种翻译器
拖入或点击导入Markdown/PDF文件,支持自动切换深色模式 针对LLM的细化配置,更高自定义空间 支持多种翻译器

使用LLM进行翻译

如您想使用LLM进行翻译,有额外的一些设定以辅助进行翻译。

翻译文本提取方式

由于LLM的输出不确定性,内置有三种方式进行翻译文本的提取:jsonmarkdowndirect。预设提示词输出方式需要使用markdown方式进行提取。

  • json方式会从JSON格式中提取键为"translated"的内容
  • markdown方式会提取被```包裹的文本(截取第一个```以及最后一个```之间的文档)
  • direct方式则直接使用原始响应文本。

提示词

输入提示中可以使用一些变量来填充,您可以在GUI中点击相应按钮复制变量名。支持的变量有:

  • {{text}} 要翻译的文本(必填)
  • {{prev_text}} 要翻译文本的上文,如没有则为空字符串
  • {{next_text}} 要翻译的文本的下文,如没有则为空字符串
  • {{dest}} 翻译目标语言

例如,以下是一个使用变量的输入提示词示范:

将以下文本翻译为{{dest}}:
{{text}}

您无需特殊在提示词中强调保留公式结构,程序将会将公式替换为emoji,再翻译后再做还原。这样可以保证使用任意的翻译器(例如DeepL)都可保留公式翻译。

运行GUI

Important

如您希望将翻译后的文档以Word形式输出,请安装pandoc后运行程序。

Windows: 下载安装包安装或在Powershell中输入winget install --source winget --exact --id JohnMacFarlane.Pandoc

MacOS: 终端中运行brew install pandoc

Ubuntu/Debian: 终端中运行sudo apt install pandoc

Arch/Manjaro: 终端中运行sudo pacman -S pandoc-cli

预编译程序

您可以点击右侧releases下载预编译好的程序使用,下载最新版本您对应操作系统的版本,解压压缩包后运行使用。

调整输出Word样式

调整解压后根目录的reference.docx中的样式即可。

从源码运行

克隆当前储存库后在储存库路径执行:

conda create -n translate python=3.12
conda activate translate
pip install uv
uv pip install -r requirements.txt
python app.py

CLI程序

如您想使用CLI程序,克隆当前储存库后,在储存库路径执行复制样例环境变量:

cp example.env .env

随后根据.env中的说明内容进行修改,随后配置环境并运行:

conda create -n translate python=3.12
conda activate translate
pip install uv
uv pip install -r requirements.txt
python Main.py

自定义翻译器

如您想使用您自己的翻译API,您可以自定义翻译器。一个样例翻译器如下:

def translate(text: str, prev_text: str, next_text: str) -> str:
    try:
        return "This is an example!"
    except Exception as e:
        print(f"Error: {e}")
        return text

随后在您自己的程序中导入MD_Translate.py进行使用:

# 您定义的translate方程
from MD_Translate import Process_MD
file_path = "path" # MD文件的路径
threads = 10 # 翻译的线程数
Process_MD(md_file=file_path, translate=translator, thread=threads)

运作流程

graph TD
    A[输入 MD 或 PDF 文件] --> B{文件类型}
    B -->|MD 文件| C[解析 MD 文件]
    B -->|PDF 文件| D[调用 Doc2X 转换为 MD 文件]
    D --> C
    C --> E[按照类型分块]
    E --> F[调用翻译器进行翻译]
    F --> G{保留公式翻译成功?}
    G -->|是| H[保留公式的翻译]
    G -->|否| I[回滚至纯文本翻译]
    H --> J[组合翻译后的文档]
    I --> J
    J --> K[使用 pandoc 转换为 Word]
Loading

打包

使用pyinstaller进行打包。使用pip install pyinstaller进行安装。运行以下指令:

pyinstaller -w --onefile -i icon.png app.py

并复制项目中的reference.docx以及example.env到打包出的二进制文件同一目录中即可。

About

文档全文翻译器:英文PDF/MD论文 → (PDF Doc2X识别) → 翻译(GPT deepseek ollama google deepL deepLX)→ 中文文档(Markdown/Word)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages