最前 作为一名英语并不好的小白,近期苦于阅读英文文献,常常要用到机器翻译。然而,从PDF文件中复制内容,往往会出现多余的换行情况,强迫症患者表示这很难受,如下图所示。并且这样多余的换行出现一定程度上影响了翻译的结果,也不利于中文阅读,影响看论文的速度。
解决方案 1. 利用Python将多余的换行去除掉 该功能参考了CSDN作者YLPGG 的思路,使用时仅需复制需要翻译的内容到程序中,可复制多段文字,然后在内容后输入一个#(井字符号),再回车即可,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 def get_content(): ''' 处理PDF文件复制后多余的换行 ''' print('请输入要翻译的内容:') transText = "" line = sys.stdin.readline() while line != "#\n": transText += line line = sys.stdin.readline() transText = transText.replace(".\n","段落") transText = transText.replace("\n"," ") transText = transText.replace("段落","\n") pattern = re.compile(r'\n[A-Z]') res = pattern.findall(transText) for i in res: transText = transText.replace(str(i),'\n'+str(i)[1]) transText = transText.split('\n') for each in transText: get_translation(each)
2. 利用Python访问API获取翻译结果,代码如下: 2.1 百度翻译API 使用前需在百度翻译开放平台 注册开发者账号,每个月有200w字符的免费翻译额度,超出后按照49元/百万字符支付当月全部翻译字符数费用,应该个人使用200w字符是够用的,论文狂魔除外。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 def get_translation(q): ''' 调用百度翻译Api实现翻译 ''' appid = '百度翻译appid' secretKey = '百度翻译secreKey' url = 'https://fanyi-api.baidu.com/api/trans/vip/translate' try: compile_trans = re.compile(r'(^[\u4e00-\u9fa5]{0,}$)') if compile_trans.match(q): from_ = 'zh' to_ = 'en' else: from_ = 'en' to_ = 'zh' salt = random.randint(32768, 65536) sign = (appid + q + str(salt) + secretKey).encode("utf-8") m1 = hashlib.md5(sign) sign = m1.hexdigest() data = { 'q' : q, 'from' : from_, 'to' : to_, 'appid' : appid, 'salt' : salt, 'sign' : sign,} res = requests.post(url, data).text target = json.loads(res) print(target['trans_result'][0]['dst']+'\n\n\n') except: pass
其它翻译API待更新 最后 已知Bug
由于识别段落换行和多余换行区别的局限性,如果正巧某行文字的最后一个字符为“.”(英文句号),则会被认为是正常的段落换行,导致分段错误,但不影响句子的完整性。
部分英语文献中可能含有特殊字符,会导致翻译API返回错误,在程序中会被直接跳过,但大部分正常文献都没有问题。
下载链接 我的GitHub:https://github.com/busbyjrj/translate
最近更新时间:2018年8月12日