摸鱼小脚本——Word表格自动中英对照翻译

1. 任务简述

  • 任务1:现有某任务需要将某个软件中的参数名称和对应的参数介绍信息导出,文字全为英文,并且需要将参数名称与参数介绍信息保存到Word中,以表格形式存储。

    • 总计信息608条,但软件本身没有导出全部参数及信息的功能,而且软件中无法选中复制
    • 需要复制的部分信息如下:
      在这里插入图片描述
  • 任务2:将任务1中保存的Word表格中的英文文本翻译为中文,需求中英文对照翻译,中文翻译需要放在英文的下一行。

    • 所以不能直接全文翻译为一个新的Word文件,否则还要一个一个复制到原来文本的下面去。

2. 解决方案

  • 对于任务1:目前想到的是使用表格OCR识别,然后复制到Word表格中。
    • 表格OCR识别需要识别后保留为表格形式,而不是简单的文本识别,否则还是需要手动一个一个复制排版。
    • 不过也比较繁琐,看有没有更好的方法。
  • 对于任务2:采用Python脚本的方式,调用百度翻译API进行自动化翻译。
    • 当然,也可以使用其他翻译源,可以尝试。

3. 具体实现

3.1. 在线表格OCR识别

  • 发现的几个还可以的在线表格OCR识别网站:
  • 网站有很多,不多列举了,免费次数用完了,就换一个继续免费识别。
  • 识别后的.xlsx文件内容效果如下:
    在这里插入图片描述
  • 识别效果还不错,粘贴到Word表格中的效果如下:
    • 标题是手动输入的
      在这里插入图片描述

3.2. Python自动化中英对照翻译

# -*- coding: utf-8 -*-

# 百度翻译开放平台:http://api.fanyi.baidu.com/
# 通用文本翻译文档:http://api.fanyi.baidu.com/doc/21
# 代码参考:https://zhuanlan.zhihu.com/p/625585142
# 关于请求次数太快的解决方法:https://zhuanlan.zhihu.com/p/625871969

import docx
import requests  
import requests
import random
import json
from hashlib import md5
import time

# Set your own appid/appkey.
appid = '填入你申请的 AppID'      # INPUT_YOUR_APPID
appkey = '填入你申请的 AppKey'  # INPUT_YOUR_APPKEY

# For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
from_lang = 'en'  # 原始语言类型:en  英语
to_lang =  'zh'   # 翻译后语言类型:zh  中文

endpoint = 'https://fanyi-api.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path  # 官方文档上的通用翻译API HTTPS 地址:https://fanyi-api.baidu.com/api/trans/vip/translate

# Generate salt and sign 两个参数用于确保请求的安全性
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

def Translate(query):
    # query = 'Hello World! This is 1st paragraph.\nThis is 2nd paragraph.'
    salt = random.randint(32768, 65536)
    sign = make_md5(appid + text + str(salt) + appkey)

    # Build request
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

    # Send request
    r = requests.post(url, params=payload, headers=headers)
    result = r.json()
    translated_text = ' '.join(result['trans_result'][0]['dst'])  
    # print(translated_text)
    time.sleep(1) # 停止1秒,避免请求速度太快而被拒绝
    return translated_text

# ------------------------

start = time.time() # 开始计时

# 打开需要翻译的Word文档 
doc = docx.Document('test.docx')  

# 遍历文档中的每一个表格  
for table in doc.tables:  
    # 遍历表格中的每一行  
    for row in table.rows:  
        # 遍历行中的每一个单元格  
        for cell in row.cells:  
            # 获取单元格中的文本  
            text = cell.text  
            # 如果文本不为空,则进行翻译  
            if text: 
                # 传入文本进行翻译
                translated = Translate(text)
                # 将翻译后的文本添加回单元格  
                cell.text = f"{text}\n{translated}"  
                print(translated) # 打印翻译后的文本信息到控制台

# 保存修改后的Word文档
doc.save('translated_test.docx')
end = time.time()  # 停止计时
print("Execution Time(执行耗时):", end - start)
print("\n~~~执行完成~~~")
  • 翻译后的文档效果如下:
    在这里插入图片描述
  • 不谈翻译的准确性,至少格式还是可以的🤪

到底了 🤪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值