BabelDOC:PDF科学论文翻译与双语对比库
BabelDOC:PDF科学论文翻译与双语对比库
BabelDOC是一个专注于PDF科学论文翻译与双语对比的库,具备在线服务和自部署能力,并提供命令行界面与Python API 。
一、获取方式
1.1 从PyPI安装
建议使用uv
工具来安装BabelDOC
。首先要安装uv
并设置好PATH
环境变量,之后使用以下命令进行安装:
1 |
|
安装完成后可通过babeldoc --help
查看使用帮助,例如翻译单个PDF文件:
1 |
|
如需翻译多个文件:
1 |
|
1.2 从源码安装
同样推荐使用uv
管理虚拟环境。先安装uv
并设置环境变量,然后按以下步骤操作:
- 克隆项目:
1 |
|
- 进入项目目录:
1 |
|
- 安装依赖并运行:
1 |
|
使用示例:
1 |
|
翻译多个文件示例:
1 |
|
建议使用文件的绝对路径。
二、高级选项
2.1 语言选项
--lang-in, -li
:源语言代码,默认值为en
。--lang-out, -lo
:目标语言代码,默认值为zh
。目前项目主要专注于英中翻译,其他场景未经过全面测试,2025.3.1更新后添加了对基本英文目标语言的支持。
2.2 PDF处理选项
--files
:输入PDF文档的一个或多个文件路径。--pages, -p
:指定要翻译的页面,如"1,2,1-,-3,3-5"
,不设置则翻译所有页面。--split-short-lines
:强制将短行拆分为不同段落(可能导致排版问题和错误)。--short-line-split-factor
:拆分阈值因子,默认值为0.8
,实际阈值为当前页面所有行的中位数长度乘以该因子。--skip-clean
:跳过PDF清理步骤,可能会使文件变大,但有助于提高与某些PDF阅读器的兼容性。--dual-translate-first
:在双PDF模式下将翻译后的页面放在前面,默认先显示原始页面,可提升与部分PDF阅读器的兼容性。--disable-rich-text-translate
:禁用富文本翻译,有助于提高与某些PDF的兼容性。--enhance-compatibility
:启用所有兼容性增强选项,等同于--skip-clean --dual-translate-first --disable-rich-text-translate
。--use-alternating-pages-dual
:使用交替页面模式的双PDF,启用时原始页面和翻译页面交替排列,默认是并排显示。--watermark-output-mode
:控制水印输出模式,'watermarked'
(默认)为给翻译后的PDF添加水印,'no_watermark'
为不添加水印,'both'
为输出有水印和无水印两个版本。--max-pages-per-part
:拆分翻译时每个部分的最大页数,不设置则不进行拆分,用于处理大文档。--no-watermark
:已弃用,使用--watermark-output-mode=no_watermark
替代。--translate-table-text
:翻译表格文本,为实验性功能,默认False
。--skip-scanned-detection
:跳过扫描文档检测,默认False
,在使用拆分翻译时,若不跳过则仅对第一部分进行检测,已知文档非扫描PDF时可使用此选项加速处理。
2.3 翻译服务选项
--qps
:翻译服务的每秒查询次数(QPS)限制,默认值为4
。--ignore-cache
:忽略翻译缓存并强制重新翻译。--no-dual
:不输出双语PDF文件。--no-mono
:不输出单语PDF文件。--min-text-length
:要翻译的最小文本长度,默认值为5
。--openai
:使用OpenAI进行翻译,默认False
。目前仅支持OpenAI兼容的大语言模型(LLM),推荐使用与OpenAI兼容性强的模型,也可使用litellm
访问多个模型。
2.3.1 OpenAI特定选项
--openai-model
:使用的OpenAI模型,默认值为gpt-4o - mini
。--openai-base-url
:OpenAI API的基础URL。--openai-api-key
:OpenAI服务的API密钥,此工具支持任何OpenAI兼容的API端点,对于本地模型如Ollama,可使用任意值作为API密钥。
2.4 输出控制
--output, -o
:翻译文件的输出目录,不设置则使用当前工作目录。--debug, -d
:启用调试日志级别,并在~/.cache/yadt/working
中导出详细的中间结果。--report-interval
:进度报告间隔,单位为秒,默认值为0.1
。
2.5 离线资产管理
--generate-offline-assets
:在指定目录生成离线资产包,创建一个包含所有必需模型和字体的zip文件。--restore-offline-assets
:从指定文件恢复离线资产包,从先前生成的包中提取模型和字体。离线资产包适用于无网络环境或在多台机器上加速安装,生成的包名不能修改,因为文件列表哈希编码在名称中,恢复时若提供目录路径,工具会自动查找正确的离线资产包文件,包内资产完整性通过SHA3 - 256哈希验证,在空气隔绝环境部署时,需先在有网络的机器上生成包。
2.6 配置文件
可通过--config, -c
指定配置文件路径,使用TOML格式。例如:
1 |
|
三、Python API
在pdf2zh 2.0
发布前,可暂时使用BabelDOC的Python API,但发布后建议直接使用pdf2zh
的Python API,因为BabelDOC的Python API不保证兼容性,而pdf2zh
的会保证一定兼容性。可参考main.py
中的示例使用BabelDOC的Python API ,使用API前需调用babeldoc.high_level.init()
,且当前TranslationConfig
不完全验证输入参数,需确保参数有效性。离线资产管理可使用以下函数:
1 |
|
生产环境中建议预先生成资产包并包含在应用程序分发中,包验证可确保所有必需资产完整且与预期校验和匹配。
四、项目背景
当前有许多致力于简化文档编辑和翻译的项目与团队,如mathpix
、Doc2X
、minerU
、PDFMathTranslate
等,也有解决特定问题的方案,如layoutreader
处理PDF文本块的阅读顺序,Surya
处理PDF结构。BabelDOC希望推动一个标准的管道和接口来解决问题,PDF解析或翻译主要有两个阶段:解析(获取PDF结构,如文本块、图像、表格等)和渲染(将结构渲染成新的PDF或其他格式)。BabelDOC提供解析结果的中间表示,可渲染成新PDF或其他格式,其管道是基于插件的系统,便于添加新模型、OCR、渲染器等。
五、路线图
项目计划添加对行、表格、跨页/跨列段落的支持,实现更高级的排版功能和大纲支持等。首个1.0版本目标是完成从PDF Reference, Version 1.7到简体中文、繁体中文、日语、西班牙语的翻译,并满足布局错误小于1%、内容丢失小于1%的要求。
六、已知问题
- 作者和参考文献部分存在解析错误,翻译后会合并为一个段落。
- 不支持行。
- 不支持首字下沉。
- 大页面会被跳过。
七、如何贡献
鼓励对项目进行贡献,可查看CONTRIBUTING
指南。参与项目的人员需遵循YADT
行为准则,Immersive Translation
为活跃贡献者提供每月Pro会员兑换码,详情见CONTRIBUTOR_REWARD.md
。