DeepL Python库:简单高效的自然语言翻译工具

RayRay
DeepLPython库语言翻译API机器翻译Github开源项目

deepl-python

DeepL Python库简介

DeepL Python库是DeepL公司官方推出的Python客户端库,旨在为开发者提供一种便捷的方式与DeepL API进行交互。DeepL作为业界领先的机器翻译服务提供商,其API允许其他计算机程序将文本和文档发送到DeepL的服务器并接收高质量的翻译。这为开发者开启了无限可能,任何你能想象到的翻译产品现在都可以基于DeepL一流的翻译技术构建。

该库支持DeepL API的所有功能,包括文本翻译、文档翻译、术语表管理等。虽然新功能可能会在添加到API后才被添加到库中,但DeepL团队致力于保持库的全面性和及时更新。

DeepL Python Library

获取认证密钥

要使用DeepL Python库,您首先需要获取一个API认证密钥。您可以通过创建DeepL账户来获得密钥。值得一提的是,使用DeepL API Free账户,您每月可以免费翻译多达500,000个字符。

获取密钥后,请务必妥善保管,不要在分享源代码时泄露您的密钥。

安装

DeepL Python库可以通过pip从PyPI安装:

pip install --upgrade deepl

如果您需要修改源代码,可以使用poetry安装依赖:

poetry install

系统要求

该库已在Python 3.6到3.11版本中进行了测试。它使用requests模块来执行HTTP请求,最低要求为2.0版本。

需要注意的是,从2024年开始,DeepL将不再支持已达到官方生命周期终止的旧Python版本。为了继续使用这个库,建议您更新到Python 3.8+版本。

基本用法

首先,导入包并构造一个Translator对象。第一个参数是包含您的API认证密钥的字符串:

import deepl auth_key = "f63c02c5-f056-..." # 替换为您的密钥 translator = deepl.Translator(auth_key) result = translator.translate_text("Hello, world!", target_lang="FR") print(result.text) # "Bonjour, le monde !"

请注意,这个例子仅用于演示目的。在生产代码中,认证密钥不应硬编码,而应从配置文件或环境变量中获取。

Translator对象还接受其他选项,可以参考配置部分了解更多信息。

翻译文本

要翻译文本,调用translate_text()方法。第一个参数是包含要翻译的文本的字符串,或者如果要翻译多个文本,可以是字符串列表。

source_langtarget_lang参数分别指定源语言和目标语言代码。source_lang是可选的,如果未指定,源语言将被自动检测。

语言代码是不区分大小写的ISO 639-1字符串,例如'DE', 'FR', 'JA'。某些目标语言还包括根据ISO 3166-1的区域变体,例如'EN-US''PT-BR'

# 将文本翻译成目标语言,在这个例子中是法语: result = translator.translate_text("Hello, world!", target_lang="FR") print(result.text) # "Bonjour, le monde !" # 将多个文本翻译成英式英语 result = translator.translate_text( ["お元気ですか?", "¿Cómo estás?"], target_lang="EN-GB" ) print(result[0].text) # "How are you?" print(result[0].detected_source_lang) # "JA" 日语的语言代码 print(result[1].text) # "How are you?" print(result[1].detected_source_lang) # "ES" 西班牙语的语言代码 # 使用不同程度的正式性翻译成德语: print( translator.translate_text( "How are you?", target_lang="DE", formality="less" ) ) # 'Wie geht es dir?' print( translator.translate_text( "How are you?", target_lang="DE", formality="more" ) ) # 'Wie geht es Ihnen?'

translate_text()方法返回一个TextResult对象,或者对应于您输入文本的TextResult对象列表。TextResult有两个属性:text是翻译后的文本,detected_source_lang是检测到的源语言代码。

翻译文档

要翻译文档,您可以调用translate_document()方法使用文件IO对象,或者使用translate_document_from_filepath()方法使用文件路径。对于这两个函数,第一个和第二个参数分别对应输入和输出文件。

translate_text()函数一样,source_langtarget_lang参数指定源语言和目标语言代码。

# 将一份正式文档从英语翻译成德语 input_path = "/path/to/Instruction Manual.docx" output_path = "/path/to/Bedienungsanleitung.docx" try: # 使用translate_document_from_filepath()和文件路径 translator.translate_document_from_filepath( input_path, output_path, target_lang="DE", formality="more" ) # 或者您可以使用translate_document()和文件IO对象 with open(input_path, "rb") as in_file, open(output_path, "wb") as out_file: translator.translate_document( in_file, out_file, target_lang="DE", formality="more" ) except deepl.DocumentTranslationException as error: # 如果在文档已上传后的文档翻译过程中发生错误, # 会抛出DocumentTranslationException。 # document_handle属性包含可用于稍后从服务器检索文档或联系DeepL支持的文档句柄。 doc_id = error.document_handle.id doc_key = error.document_handle.key print(f"Error after uploading ${error}, id: ${doc_id} key: ${doc_key}") except deepl.DeepLException as error: # 上传过程中的错误会引发DeepLException print(error)

translate_document()translate_document_from_filepath()是包装了多个API调用的便捷函数:上传、轮询状态直到翻译完成,以及下载。如果您的应用程序需要单独执行这些步骤,您可以直接使用以下函数:

  • translate_document_upload()
  • translate_document_get_status() (或 translate_document_wait_until_done())
  • translate_document_download()

术语表

术语表允许您使用用户定义的术语来自定义翻译。多个术语表可以存储在您的账户中,每个术语表都有一个用户指定的名称和一个唯一分配的ID。

创建术语表

您可以使用create_glossary()方法创建带有所需术语和名称的术语表。每个术语表适用于单个源语言-目标语言对。请注意:术语表仅支持某些语言对,有关更多信息,请参阅列出可用的术语表语言。条目应指定为字典。

如果成功,术语表将创建并存储在您的DeepL账户中,并返回一个GlossaryInfo对象,包括ID、名称、语言和条目数。

# 创建一个包含两个术语的英语到德语术语表: entries = {"artist": "Maler", "prize": "Gewinn"} my_glossary = translator.create_glossary( "My glossary", source_lang="EN", target_lang="DE", entries=entries, ) print( f"Created '{my_glossary.name}' ({my_glossary.glossary_id}) " f"{my_glossary.source_lang}->{my_glossary.target_lang} " f"containing {my_glossary.entry_count} entries" ) # 示例输出: Created 'My glossary' (559192ed-8e23-...) EN->DE containing 2 entries

您还可以使用create_glossary_from_csv()从DeepL网站下载的术语表上传。不是将条目作为字典提供,而是将CSV数据指定为csv_data,可以是类文件对象、字符串或包含文件内容的字节:

# 打开CSV文件,假设使用UTF-8编码。如果您的文件包含BOM, # 请考虑使用encoding='utf-8-sig'。 with open('/path/to/glossary_file.csv', 'r', encoding='utf-8') as csv_file: csv_data = csv_file.read() # 将文件内容读取为字符串 my_csv_glossary = translator.create_glossary_from_csv( "CSV glossary", source_lang="EN", target_lang="DE", csv_data=csv_data, )

使用存储的术语表

您可以通过将glossary参数设置为术语表ID或GlossaryInfo对象来使用存储的术语表进行文本翻译。您还必须指定source_lang参数(使用术语表时需要):

text = "The artist was awarded a prize." with_glossary = translator.translate_text( text, source_lang="EN", target_lang="DE", glossary=my_glossary, ) print(with_glossary) # "Der Maler wurde mit einem Gewinn ausgezeichnet." # 作为比较,不使用术语表的结果: without_glossary = translator.translate_text(text, target_lang="DE") print(without_glossary) # "Der Künstler wurde mit einem Preis ausgezeichnet."

使用存储的术语表进行文档翻译的方法相同:设置glossary参数并指定source_lang参数:

translator.translate_document( in_file, out_file, source_lang="EN", target_lang="DE", glossary=my_glossary, )

translate_document(), translate_document_from_filepath()translate_document_upload()函数都支持glossary参数。

检查账户使用情况

要检查账户使用情况,使用get_usage()函数:

usage = translator.get_usage() if usage.any_limit_reached: print('Translation limit reached.') if usage.character.valid: print( f"Character usage: {usage.character.count} of {usage.character.limit}") if usage.document.valid: print(f"Document usage: {usage.document.count} of {usage.document.limit}")

返回的Usage对象包含三个使用子类型:character, documentteam_document。根据您的账户类型,某些使用子类型可能无效;这可以使用valid属性进行检查。对于API账户:

  • usage.character.validTrue
  • usage.document.validusage.team_document.validFalse

每个有效的使用子类型都有countlimit属性,分别给出已使用的数量和最大数量,以及limit_reached属性,用于检查使用量是否达到限制。顶级Usage对象有any_limit_reached属性来检查所有使用子类型。

列出可用语言

您可以使用get_source_languages()get_target_languages()函数请求DeepL支持的文本和文档语言列表。它们都返回一个Language对象列表。

name属性给出英语中的语言名称,code属性给出语言代码。supports_formality属性仅出现在目标语言中,表示目标语言是否支持可选的formality参数。

print("Source languages:") for language in translator.get_source_languages(): print(f"{language.name} ({language.code})") # 示例: "German (DE)" print("Target languages:") for language in translator.get_target_languages(): if language.supports_formality: print(f"{language.name} ({language.code}) supports formality") # 示例: "Italian (IT) supports formality" else: print(f"{language.name} ({language.code})") # 示例: "Lithuanian (LT)"

高级配置

日志记录

可以启用日志记录以查看库发送的HTTP请求和收到的响应。使用Python的logging模块启用和控制日志记录,例如:

import logging logging.basicConfig() logging.getLogger('deepl').setLevel(logging.DEBUG)

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多