英文文献翻译格式整理器

一、软件开发灵感及相关说明

本人作为一枚科研小白,在阅读英文文献的时候,仅靠自己菜鸡的英语水平是无法流畅的阅读的,所以大多数情况下是需要借助翻译软件的。我的翻译过程是:Adobe Acrobat打开PDF文件,在编辑模式下对文本进行复制,再通过快捷键Ctrl + C + C 快速调用DeepL翻译。通过Adobe编辑模式复制的方式,可以有效避免在普通模式下,复制的文字每行自动添加换行符的问题。但是,通过这种方式会带来连字符的问题,每次翻译的时候都得手动删除,很麻烦。所以,就有了本文的主角——“英文文献翻译格式整理器”。(注:知云翻译可以直接得到我想要的结果,不过个人不喜欢使用知云,单纯开发着玩~~)


本文会对整个开发过程详细记录,并会在个人Github仓库中提供源代码供大家学习交流使用,有任何关于本软件的建议和反馈均可以通过私信或邮箱(chenxiuyan_t@163.com)的方式联系我。

二、开发详细过程

软件功能:
- 智能删除连字符’-’
- 翻译成中文

软件版本号:1.0

开发环境:
- 操作系统:Windows10
- IDE:Vscode
- 编程语言:Python3.7.0 & PyQT6-6.3.0

2.1 整体设计框架图

2.2 UI设计

设计一个简易版UI,如下:

2.3 功能实现

2.3.1 智能删除功能

功能实现思路:

  • 首先读取原文text中的字符串,并转换成字符串类型
  • 通过Split函数将字符串以空格为分隔符分割,记作str_split
  • 编写check函数,check函数用于判断str_split中每个字符串里面是否包含连字符,对于有连字符的再通过算法判断是否是合法单词,合法就返回true,非法返回false
  • 编写delete_slash函数,针对check函数判断为false的字符串,将其中的连字符删除

按钮联动:点击"智能删除"按钮后,执行智能删除功能,并将删除后的文本显示在"智能删除后原文"对应的text中。

首先简单实现一个deleteFun函数,通过联动"智能删除"按钮,使其能print原文内容。代码和实现效果如下:

然后实现check和delete_slash函数实现对split后的单词进行合法性检测,并删除连字符。在开发的过程中发现了忽略了几个因素,单词前后的空格和标点符号,通过打补丁后,最终实现测试效果如下:

## functions
d = enchant.Dict("en_US")
# 检测是否是合法单词
def legal_str(str):return d.check(str)# check function
def check(str):str = str.strip() # 去除str首尾空格if (str.find('-')): # 对包含-的字符串判断if (legal_str(str)):return Trueelse :return False# delete_slash function
def delete_slash(str):str = str.strip() # 去除str首尾空格cnt = 0# 从前往后删除连字符,直到legal_str返回true 或者删除5次后自动返回tmp_str = re.sub(r'[^\w\s-]','',str) # 去除str中的标点符号while(legal_str(tmp_str)==False and cnt !=5):cnt = cnt + 1# print(tmp_str)len_of_str = len(str)for i in range(len_of_str):if (str[i] == '-'):str = list(str)str[i] = ''str = ''.join(str)break;tmp_str = re.sub(r'[^\w\s-]','',str) # 去除str中的标点符号return str

最后将str_split合并成一个字符串,然后写入"智能删除后原文"对应text中。

2.3.2 翻译功能

功能实现思路:

  • 读取"智能删除后原文"对应的text中文本,进行非空判断,并给出提示
  • 调用DeepL翻译API进行翻译
  • 将翻译结果显示在"翻译内容"对应的text中

按钮联动:点击"翻译"按钮后,执行上述翻译功能。

开发过程中发现DeepL的授权码不太好整,所以选择更换一个翻译API,最后选择了有道翻译。

代码如下:

def translate(query):url = 'http://fanyi.youdao.com/translate'data = {"i": query,  # 待翻译的字符串"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": "16081210430989","doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_CLICKBUTTION"}res = requests.post(url, data=data).json()len_of_translated = len(res['translateResult'][0])translated_text = ''for i in range(len_of_translated): # 翻译结果有多个,通过循环拼接全部翻译结果translated_text = translated_text + res['translateResult'][0][i]['tgt']return translated_text## translate into chinesedef translate_fun():# 自动执行自动删除再翻译delete_fun()ori_text = form.deletedOri.toPlainText() # 获取修改好的原文translated_text = translate(ori_text)form.translatedText.setPlainText(translated_text)

测试效果如下:

2.4 软件打包

打包教程参考知乎一篇文章:https://zhuanlan.zhihu.com/p/162237978

本次打包使用命令:Pyinstaller -F -i ./icon/icon.ico main.py -w

最终打包结果:

2.5 功能测试

三、后续开发内容

  • 实现复制原文复制翻译功能
  • 增加翻译API选项(谷歌翻译,百度翻译等)
  • 增加翻译的语言
  • 增加其他智能删除内容(如,智能删除换行符、智能删除空格等)
  • 增加自动复制到剪切板功能
  • …(欢迎提供更多开发内容建议)

四、参考资料

  • PyQT开发demo:https://github.com/pyqt/examples
  • 获取text内容:https://blog.csdn.net/weixin_41529093/article/details/110793272
  • 按钮联动:https://www.geocalculate.com/7528.html
  • 判断单词是否合法:https://www.cnblogs.com/bonelee/p/7771609.html
  • 去掉字符串中的标点符号:https://blog.csdn.net/Chihwei_Hsu/article/details/81604272
  • 对指定字符串进行替换:https://blog.csdn.net/Hachi_Lin/article/details/104365221
  • 字符串以空格拼接:https://blog.csdn.net/yu97271486/article/details/105996934
  • DeepL python API使用:https://pypi.org/project/deepl-api/, https://github.com/missuo/deepl?ref=pythonawesome.com
  • 有道翻译:https://blog.csdn.net/qq_42951560/article/details/111302487
  • 打包成EXE:https://zhuanlan.zhihu.com/p/162237978
  • icon下载:https://www.aigei.com/s?q=%E7%BF%BB%E8%AF%91&type=design_icon

五、其他

  • 本人邮箱:chenxiuyan_t@163.com
  • 本项目Github仓库:英文文献翻译格式整理器源码(源码在"小陈玩具屋/英文文献翻译格式整理器/src_code/05 Qt Designer Python")
  • 本人CSDN博客地址:那那那那个小陈的CSDN博客

英文文献翻译格式整理器相关推荐

  1. 自己开发英文文献翻译格式整理器

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

  2. php的外文参考文献_php英文文献翻译及参考文献

    php英文文献翻译及参考文献 php 英文文献翻译及参考文献 PHP is a scripting language originally designed for producing dynamic ...

  3. 计算机游戏英文文献,JAVA游戏英文文献翻译

    JAVA游戏英文文献翻译 J2ME手机游戏编程 J2ME and Wireless Devices 随着移动电话等无线通讯设备急剧增加和功能逐渐成熟,对运行在这些设备上的应用程序的需求也越来越大.消费 ...

  4. matlab图像处理英文文献,数字图像处理英文文献翻译参考.doc

    数字图像处理英文文献翻译参考.doc Hybrid Genetic Algorithm Based Image Enhancement Technology Mu Dongzhou Departmen ...

  5. W3C标准英文文献翻译方案

    翻译W3C标准英文文献方式 方案一:最简单最快捷的办法--去搜索有没有官方出的正式的中文版 方案二:(自行翻译并将成果转移至博客) 最有效率操作的办法: 找到英文文献 翻译一个章节前,先搜索相关章节或 ...

  6. 计算机考研复试【英文文献翻译】

    前言:   本人为21考生,所报专业为计算机科学与技术,准备面试过程中搜集了一些历年各大高校英语面试容易考到的英文文献片段.提供给各位小伙伴参考练习呀~ 5G网络(5G) NO.1: The 5th ...

  7. 计算机英文专业文献翻译,计算机专业英文文献翻译.doc

    文档介绍: 计算机英文文献翻译 计算机英文文献翻译 INDUSTTRY PERSPECTIVE USING A DSS TO KEEP THE COST OF GAS DOWN Think you s ...

  8. 英文文献翻译策略:一种解决划词翻译包含换行符的最优策略

    英文文献翻译策略:一种解决划词翻译包含换行符的最优策略 文章目录 问题 解决 注意事项 问题 为了快速理解英文文献的内容,我们经常会利用一些翻译手段:比如复制文字到各大网站的翻译引擎中,比如使用软件划 ...

  9. 计算机考研复试_令人头大的_英文文献翻译

    前言: 本人所考学校往年的英文文献翻译主要涉及:数据挖掘,人工智能,深度学习,5G网络,SQL定义,编译器 本人在半吊子练习过程中,把我读的一些些比较好用来练习的文献摘要和相关知识(仅提供英文)做了汇 ...

最新文章

  1. Eclipse在高分屏下图标过小的解决方法
  2. 新疆那些大学在计算机专业好,新疆哪些二本大学的计算机科学与技术专业最好?...
  3. 独家 | 分答深度报告:42天估值1亿美金,分答如何获取百万付费用户?
  4. java调用js匿名函数参数,js匿名函数作为函数参数详解
  5. php代码导入sql,php导入SQL文件(示例代码)
  6. Spring Boot的学习之路(02):和你一起阅读Spring Boot官网
  7. java将url页面生成pdf_如何将PDF页面从横向改成纵向?
  8. debian软raid
  9. Java全栈开发---Java ERP系统开发:商业ERP(十三)CXF框架,物流BOS系统开发
  10. python aic准则_赤池信息准则AIC,BIC
  11. 怎么用c语言解三元二次方程组,三元二次方程组解法
  12. 十二首《临江仙》,说尽心中无限事
  13. python小游戏贪吃蛇下载_python实现贪吃蛇小游戏
  14. 单片机模拟iic从设备-主要代码(2)
  15. Jenkins搭建Maven项目集成开发环境(源码库 Gitlab)
  16. 实验:跨域VPN-OptionC方式-方案一
  17. 计算机的职业形象,计算机专业科开展学生干部职业形象塑造专题培训
  18. CSS3入门基础(详解)
  19. 在tina或者其他系统里调用buildroot的库文件
  20. LED显示按键控制 CT1642、PT6964(1)

热门文章

  1. dvsdk_4_00_00_22_dm3730 Makefile内容
  2. 实现虚拟机和主机之间的文件传输
  3. WLT8016:BLE蓝牙的一些基本概念
  4. 忘记安卓密码?教您轻松破解锁屏密码,解锁手机,简单易操作
  5. 迅歌KTV服务器各型号,2017年ktv必点歌曲排行榜
  6. Sapphire应用场景剖析 | 基于行业首个隐私EVM构建DApp
  7. 实现现代汽车SoC功能安全的实践和挑战
  8. Android系统Audio框架介绍
  9. java net包 网关_Net分布式系统之六:微服务之API网关
  10. JAVA远程session访问,访问独立SESSION服务器