一、API获取

自行注册
https://www.xfyun.cn/service/niutrans

二、用到的库

python_docx
requests
提示什么安装什么就好了

三、使用说明

3.1 主要为了解决英文文献复制出来不是连续的,而是和PDF中一样 一行一段的问题,会导致翻译出现一点偏差

3.2复制英文文献到txt中,每段之间用空行隔开即可

3.3 代码会自动整理,把每段合一起(会生成一个中间文件,路径见代码,请自行更改)

3.4 会在结果路径生成结果word文档

会将英文和翻译的结果输出

4 代码

默认英译中,有其他语言需求请自行更改
API有五千字的限制,故采用分段翻译,如果一段超过五千字,请自行再分。

import docx
from docx.shared import Pt
from docx.oxml.ns import qn
import os
import requests
import datetime
import hashlib
import base64
import hmac
import jsonclass get_result(object):def __init__(self,host):# 应用ID(到控制台获取)self.APPID = ""# 接口APISercet(到控制台机器翻译服务页面获取)self.Secret = ""# 接口APIKey(到控制台机器翻译服务页面获取)self.APIKey= ""# 以下为POST请求self.Host = hostself.RequestUri = "/v2/ots"# 设置url# print(host)self.url="https://"+host+self.RequestUriself.HttpMethod = "POST"self.Algorithm = "hmac-sha256"self.HttpProto = "HTTP/1.1"# 设置当前时间curTime_utc = datetime.datetime.utcnow()self.Date = self.httpdate(curTime_utc)# 设置业务参数# 语种列表参数值请参照接口文档:https://www.xfyun.cn/doc/nlp/niutrans/API.htmlif line !="\n":self.Text=lineself.BusinessArgs={"from": "en","to": "cn",}#语言在这里改         def hashlib_256(self, res):m = hashlib.sha256(bytes(res.encode(encoding='utf-8'))).digest()result = "SHA-256=" + base64.b64encode(m).decode(encoding='utf-8')return resultdef httpdate(self, dt):"""Return a string representation of a date according to RFC 1123(HTTP/1.1).The supplied date must be in UTC."""weekday = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][dt.weekday()]month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec"][dt.month - 1]return "%s, %02d %s %04d %02d:%02d:%02d GMT" % (weekday, dt.day, month,dt.year, dt.hour, dt.minute, dt.second)def generateSignature(self, digest):signatureStr = "host: " + self.Host + "\n"signatureStr += "date: " + self.Date + "\n"signatureStr += self.HttpMethod + " " + self.RequestUri \+ " " + self.HttpProto + "\n"signatureStr += "digest: " + digestsignature = hmac.new(bytes(self.Secret.encode(encoding='utf-8')),bytes(signatureStr.encode(encoding='utf-8')),digestmod=hashlib.sha256).digest()result = base64.b64encode(signature)return result.decode(encoding='utf-8')def init_header(self, data):digest = self.hashlib_256(data)#print(digest)sign = self.generateSignature(digest)authHeader = 'api_key="%s", algorithm="%s", ' \'headers="host date request-line digest", ' \'signature="%s"' \% (self.APIKey, self.Algorithm, sign)#print(authHeader)headers = {"Content-Type": "application/json","Accept": "application/json","Method": "POST","Host": self.Host,"Date": self.Date,"Digest": digest,"Authorization": authHeader}return headersdef get_body(self):content = str(base64.b64encode(self.Text.encode('utf-8')), 'utf-8')postdata = {"common": {"app_id": self.APPID},"business": self.BusinessArgs,"data": {"text": content,}}body = json.dumps(postdata)#print(body)return bodydef call_url(self):if self.APPID == '' or self.APIKey == '' or self.Secret == '':print('Appid 或APIKey 或APISecret 为空!请打开demo代码,填写相关信息。')else:code = 0body=self.get_body()headers=self.init_header(body)#print(self.url)response = requests.post(self.url, data=body, headers=headers,timeout=8)status_code = response.status_code#print(response.content)if status_code!=200:# 鉴权失败print("Http请求失败,状态码:" + str(status_code) + ",错误信息:" + response.text)print("请根据错误信息检查代码,接口文档:https://www.xfyun.cn/doc/nlp/niutrans/API.html")else:# 鉴权成功respData = json.loads(response.text)doc.add_paragraph(respData['data']['result']['trans_result']['src']).paragraph_format.first_line_indent = Pt(14) * 2doc.add_paragraph(respData['data']['result']['trans_result']['dst']).paragraph_format.first_line_indent = Pt(14) * 2    ##返回值是dict字典    #print(respData)# 以下仅用于调试code = str(respData["code"])if code!='0':print("请前往https://www.xfyun.cn/document/error-code?code=" + code + "查询解决办法")def txtchange():file=open(path_A,encoding='UTF-8')file_write=open(path_B,mode='w',encoding='UTF-8')linesa = file.readlines()print(linesa)pi_string=''for line in linesa:line = line.strip()if len(line):pi_string = pi_string+' '+line         else:file_write.write(pi_string+'\n')pi_string = ''file_write.write(pi_string+'\n')        def file_exist(dirpath):if not os.path.exists(dirpath):  # os模块判断并创建os.mkdir(dirpath)if __name__ == '__main__':path_A=r"D:\\Desktop\\参考文献1.txt"  #复制英文的保存的文件路径  path_B=r"D:\\Desktop\\参考文献2.txt"  #中间过程文件path_C=r"D:\\Desktop\\result.docx"   #结果文件txtchange()doc=docx.Document()doc.styles['Normal'].font.size = Pt(14)doc.styles['Normal'].font.name = u'Times New Roman'doc.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')##示例:  host="ntrans.xfyun.cn"域名形式host = "ntrans.xfyun.cn"#初始化类file=open(path_B,encoding='UTF-8')file_write=open(path_C,mode='w',encoding='UTF-8')linesb = file.readlines()for line in linesb:if line =='\n':next else:gClass=get_result(host)gClass.call_url()doc.save(path_C)print("翻译完成!")

Python——文献翻译相关推荐

  1. python文献翻译_英文学术文献翻译软件有哪些推荐?

    想要日读10篇英文Paper,别说,还真的可以!有了下面这8个免费的文献翻译工具,相信你阅读文献的速度会直线上升! 适用场景:长篇文献 直接将文档上传到网站,就可完成翻译. 彩云小译翻译的结果有一个很 ...

  2. python文献翻译_毕业论文英文文献及翻译

    英文原文 ASP.NET and the .NET Framework ASP.NET is part of Microsoft's overall .NET framework, which con ...

  3. python外文文献翻译_英文学术文献翻译软件有哪些推荐?

    想要日读10篇英文Paper,别说,还真的可以!有了下面这8个免费的文献翻译工具,相信你阅读文献的速度会直线上升! 适用场景:长篇文献 直接将文档上传到网站,就可完成翻译. 彩云小译翻译的结果有一个很 ...

  4. Python 单词翻译:中英文翻译模块

    简 介: 测试了 中英文翻译模块中的中英文翻译模块的功能.这个模块每天只提供有限的英文单词翻译功能. 关键词: 中英文翻译# #mermaid-svg-VLV67DrDfCYjIugK {font-f ...

  5. 英文文献翻译格式整理器

    英文文献翻译格式整理器 一.软件开发灵感及相关说明 本人作为一枚科研小白,在阅读英文文献的时候,仅靠自己菜鸡的英语水平是无法流畅的阅读的,所以大多数情况下是需要借助翻译软件的.我的翻译过程是:Adob ...

  6. 用Python制作翻译工具

    简单介绍 因为我英文不好,对接口.函数.结构体起名字的时候特别为难,因此我我打算使用Python写了一个工具在输入框输入中文,就可以生成Golang语言对应的接口.函数或接口体的写法:也可以切换到英文 ...

  7. [文献翻译]Video-based AI for beat-to-beat assessment of cardiac function

    [文献翻译]Video-based AI for beat-to-beat assessment of cardiac function 摘要 引言 基于视频的深度学习模型 模型性能评估 推广到不同的 ...

  8. 知云文献翻译打不开_Xtranslator | 免费翻译软件推荐

    最近,有一些小伙伴私信小编,"小马哥,你分享了那么多的英文电子书,怎么读啊?英文理解起来很慢,有没有免费翻译软件推荐呢?"小编"求必应",安排! 软件名称: X ...

  9. 计算机5G英语文献,5G移动网络外文文献翻译2018中英文.docx

    外文文献翻译原文及译文 (节选重点翻译) 中文标题:5G移动N络中的软件化和虚拟化??优势,趋势和挑战 文献出处:期刊:Computer Networks,第146卷,第9期,2018年, 页码:65 ...

最新文章

  1. docker 数据卷 volume
  2. html全局属性什么意思,# HTML # HTML全局属性
  3. CPictureEx类实现GIF图片的缩放
  4. 守护线程与非守护线程的区别
  5. python的进阶之路_Python 从入门到进阶之路(三)
  6. [Ogre] 创建Ogre项目的一劳永逸的简单办法
  7. bugku-管理员登录-(X-forwarded-for)
  8. 电脑里面英文系统的中文简介
  9. 【MapGIS必备】常见问题处理(第十四期)
  10. python-将csv转txt
  11. react实现问卷调查
  12. rust-hal库嵌入式开发
  13. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列
  14. pytorch之torch.zeros_like
  15. leetcode Rotate Image
  16. c语言中箭头的作用,为什么C中的箭头(-)运算符存在?
  17. stm32 中断(f4)
  18. SCons教程(6) 环境
  19. 【转】VMware Workstation 8.0.1 build-528992精简绿色版
  20. C#植物大战僵尸中文版

热门文章

  1. Azure Create a function app Review+Create栏没有create
  2. leetcode 从房屋收集雨水需要的最少水桶数
  3. 跪求~~~大神啊!安卓(android)手机下载的测距软件如smart tools工具中的测距(distance)工具如何测距???...
  4. matplotlib绘图练习2——绘制菱形sin,星形cos
  5. 【校招VIP】产品思维考察之创意能力
  6. android rar文件怎么打开方式,android开发如何打开rar压缩文件
  7. Walden单词中频率统计
  8. 20个改善网站设计的简单技巧
  9. NeurIPS 2022 | 基于对齐引导时间注意力机制的视频动作识别
  10. 细菌或原核生物16S rRNA