经常看到公众号推什么“学姐一年发五篇SCI,原来是靠它”之类的文章,点进去全是Python的安利,然而跟着广告进去也不一定能学会。正好时值学校要求写文献阅读报告,然而至少一万字的报告实在是让人望而却步,于是想到了自己使用Python去实现自动读取英文文献,并翻译生成综述(当然,只适用于凑字数的情况,如果需要写综述,还是建议自己总结归纳)。这里分享给大家,希望大家都能学废(不是)
如果不想了解技术细节,只想直接拿来用,可以直接跳过代码编写部分,直达最后代码使用部分。
本代码免费开源,如果你觉得好用,希望能够给我一个赞(能打赏更好),也欢迎去github发表意见建议。
代码实现效果如下:
实现效果
开发环境
Windows 10
Sublime Text 3
Python 3.7
Pdfminer
有道翻译API
事前准备
接口申请
本代码使用了有道翻译的API,因此,如需使用,需要去有道翻译接口官方申请APP Key和Secret key,直接按照其官方教程申请即可,后续需要在代码中配置。接口申请完全免费,初始会送100元的面值,用完需要续费,不过一般情况100元可以用很久了。
安装pdfminer
因为我使用的是python3,因此输入以下命令安装:
pip install pdfminer4k
需求分析
这里分析了本代码实现的关键点:
文献是已经下载下来的pdf文件
文献中,需要提取的部分主要为:
标题
作者
摘要
结论
因此,本代码的思路是读取本地文件夹内的pdf文件,然后读取并识别出其关键元素,调用有道翻译的API进行翻译,并进行有机组合,写入TXT文件中。
代码编写
读取pdf文件
依次读取文件夹内的文件,如果后缀为pdf,则写入文件元祖:
def getFileName(filepath):
file_list = []
for root,dirs,files in os.walk(filepath):
for filespath in files:
if 'pdf' in filespath.split('.')[1]:
file_list.append(os.path.join(root,filespath))
return file_list
读取文件内容并提取标题、作者、摘要和结论
def parse(DataIO, save_path, appKey, appSecret):
#用文件对象创建一个PDF文档分析器
parser = PDFParser(DataIO)
#创建一个PDF文档
doc = PDFDocument()
#分析器和文档相互连接
parser.set_document(doc)
doc.set_parser(parser)
#提供初始化密码,没有默认为空
doc.initialize()
#检查文档是否可以转成TXT,如果不可以就忽略
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
#创建PDF资源管理器,来管理共享资源
rsrcmagr = PDFResourceManager()
#创建一个PDF设备对象
laparams = LAParams()
#将资源管理器和设备对象聚合
device = PDFPageAggregator(rsrcmagr, laparams=laparams)
#创建一个PDF解释器对象