当前位置:首页 > 技术分析 > 正文内容

Python调用免费翻译API实现Excel文件批量翻译

ruisui883个月前 (02-03)技术分析16

工作中用到翻译软件是再正常不过的事情了,一般浏览外文网站翻译直接用谷歌插件还好解决。如果有一个Excel文件,里面有上万条需要翻译的内容,不能使用百度或Google免费的文档功能,需要怎么解决呢?总不能手动一个个的翻译然后粘贴吧,费时间不说质量也不一定高,于是想到用Python调用免费翻译API来完成这个任务。

一、什么是文本翻译 API?

能够将源语言文本快速、准确地转换成目标语言文本。通过该服务,用户可以根据不同的语言参数实现多种国际语言之间的互译,满足用户在跨语言交流、学习和工作中的翻译需求。幂简API平台提供了多种维度发现API的功能,下图提供的是所有提供文本翻译的服务商。用户可以根据自己的需求选择适合自己的服务商。

二、文本翻译 API 有哪些特性?

  1. 多语言支持:支持上百种语言的自动识别与互译,涵盖全球主要语系及众多方言、地区性语言。
  2. 高准确性:利用先进的神经网络和深度学习技术,特别是基于Transformer架构的神经机器翻译模型,实现对原文语义的精准理解和目标语言的流畅生成。
  3. 上下文理解:神经网络模型能够捕捉并理解文本的上下文信息,确保翻译结果不仅准确传达单个词汇的意义,还能反映出整个句子乃至段落的逻辑关系和语境微妙之处。
  4. 实时翻译:支持实时翻译,满足即时通讯、旅游预订、电子商务等需要快速响应的应用场景

三、文本翻译 API 适用于什么应用场景?

  1. 电子商务平台
    电商平台利用翻译API自动将商品标题、描述、规格、用户评价等内容实时翻译成多种语言,如英语、法语、日语、阿拉伯语等,使全球消费者能够无障碍浏览和购买,提升国际市场的销售额。
  2. 旅游预订网站
    旅行服务网站集成翻译API,将酒店介绍、景点详情、用户评论等信息即时翻译成游客的母语,增强用户体验,促进跨国旅游业务的增长。
  3. 科研文献检索
    科研人员借助翻译API快速浏览和理解非母语的学术论文摘要或全文,跨越语言屏障,追踪国际前沿研究成果,促进跨学科、跨国界的学术交流。
  4. 呼叫中心

跨国企业的客服系统集成翻译API,客服代表能够实时翻译客户的询问,提供母语服务,提升客户满意度和问题解决效率。

四、如何找到免费翻译API

幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台提供了多种维度发现API的功能:通过关键词搜索免费翻译API、从 API Hub 分类浏览API、从 开放平台 分类浏览企业间接寻找API等。

五、如何一步一步实现excel批量翻译

  1. 导入所需的模块:
  • openpyxl:用于处理 Excel 文件。
  • urllib.parse:用于 URL 编码。
  • requests:用于发送 HTTP 请求。
  • json:用于处理 JSON 数据。
  • concurrent.futures:用于实现多线程。
  1. 定义常量:
  • BATCH_SIZE = 100:指定每次处理的批量大小为 100 条数据。
  • THREAD_COUNT = 10:指定线程池中的线程数量为 10 个。
  1. 定义 translate_text 函数:
  • 对输入的文本进行 URL 编码。
  • 构建翻译 API 的请求 URL 并发送 GET 请求。
  • 根据响应状态码判断是否成功获取数据,若成功则解析 JSON 并返回翻译结果,否则返回 None。
  1. 定义 process_batch 函数:
  • 接收工作表对象 sheet 以及批处理的起始行 start 和结束行 end 。
  • 遍历指定范围内的行。
  • 获取每行的第一个单元格的值,若有值则调用 translate_text 函数进行翻译。
  • 若获取到翻译结果,将其写入当前行的第二列单元格,并打印相关日志。
  1. 定义 main 函数:
  • 指定要处理的 Excel 文件路径。
  • 使用 openpyxl 加载工作簿并获取活动工作表。
  • 获取工作表中的最大行数,计算批次数。
  • 创建线程池,并初始化一个用于存储线程执行结果的 futures 列表。
  • 循环创建多个批处理任务,将每个批处理任务提交到线程池,并将任务的 Future 对象添加到 futures 列表中。
  • 等待所有任务完成,获取任务结果,若有异常则打印异常信息。
  • 保存修改后的 Excel 文件,并关闭工作簿。
  1. 在 if __name__ == "__main__" 条件下执行 main 函数,启动整个程序的运行。
  2. 代码示例如下:
import openpyxl

import urllib.parse

import requests

import json

import concurrent.futures



BATCH_SIZE = 100  # 每次处理的批量大小

THREAD_COUNT = 10  # 线程池中的线程数量





def translate_text(text):

    encoded_text = urllib.parse.quote(text.replace(" ", " ").strip())

    api_url = f"https://api.pearktrue.cn/api/translate/?text={encoded_text}&type=AUTO"

    response = requests.get(api_url)

    if response.status_code == 200:

        root_node = json.loads(response.text)

        return root_node['data']['translate']

    else:

        return None





def process_batch(sheet, start, end):

    for row_index in range(start, end):

        row = sheet[row_index]

        desc_cell = row[0]

        if desc_cell.value:

            translated_text = translate_text(desc_cell.value)

            if translated_text:

                sheet.cell(row=row_index, column=2, value=translated_text)

                print(f"读取到第 {row_index} 条记录")

                print(f"写入到第 {row_index} 条记录")





def main():

    excel_file_path = "/Users/larryzheng/Desktop/blog.xlsx"

    workbook = openpyxl.load_workbook(excel_file_path)

    sheet = workbook.active



    row_count = sheet.max_row

    batch_count = (row_count + BATCH_SIZE - 1) // BATCH_SIZE



    with concurrent.futures.ThreadPoolExecutor(max_workers=THREAD_COUNT) as executor:

        futures = []

        for batch in range(batch_count):

            start = batch * BATCH_SIZE

            end = min(start + BATCH_SIZE, row_count)

            futures.append(executor.submit(process_batch, sheet, start, end))



        # 等待所有任务完成

        for future in concurrent.futures.as_completed(futures):

            try:

                future.result()

            except Exception as e:

                print(e)



    workbook.save(excel_file_path)

    workbook.close()





if __name__ == "__main__":

    main()
  1. 批量翻译效果如下:

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/650.html

标签: node xlsx
分享给朋友:

“Python调用免费翻译API实现Excel文件批量翻译” 的相关文章

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中存放数据 ms。 ②将父组件 data 中的数据 ms 绑定到子组件中的属性 ms。 ③子组件在 p...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

佳能 EOS R8 深度评测

佳能 EOS R8 的定位是入门级全画幅无反光镜可换镜头相机。尽管在产品阵容中处于这一位置,R8 仍然是一个强大的相机,配备了先进的 R6 II 同款成像传感器、快速处理器和令人难以置信的自动对焦系统,体积小、重量轻、价格低。这款相机是发烧友、旅行者、家庭以及任何想要全画幅传感器相机的人的绝佳选择。...