美文网首页
用python从pdf文件中提取论文名称并自动保存

用python从pdf文件中提取论文名称并自动保存

作者: 东南亚求导王 | 来源:发表于2019-11-08 19:02 被阅读0次

    保研之后,有一些闲,就陪着女朋友去她导师(我大哥!虽然他老欺负我)那里提前熟悉环境,哈哈哈!

    碰巧女朋友师兄下载了16年和17年的AP的论文,但是都是没有改名字的,全是一堆编号,所以手动改名字的任务就交给了我女朋友和另一个刚保研的小伙伴。

    改这玩意儿太费劲了,光论文就5GB多,手动改了几篇之后,想了想应该py大法好解决一点。本人不太会python,只会依葫芦画瓢,轻喷......

    思路很简单:

    找出文件夹里面的所有pdf文件的路径,然后利用pdfminer这个库,扣出pdf中的大概率是title的三行,拼接,That's all!

    不过其中有几个需要注意的:

    *提取PDF前4,5,6行拼接,可能会多出后面的作者,也有可能题目少两个单词

    *由于其中有些字符不能在命名中使用,如:/<>:?*均使用空格替代

    *如果文章title没有居中置顶那就。。。手动调吧

    *由于有些论文顶上是有communication的所以需要把它匹配掉


    看那里有个communication

    但是有些文章题目里本身又有communication。。。
    所以我就在前面加了个

    ]
    

    然后把

    ]communication
    

    一起匹配扔掉,最后再把其他多余的

    ]
    

    去掉,有一点脱裤子放屁,但是我只能想到这个办法了,对不起太菜了。。。

    大家还是看代码吧。。。

    # -*- coding:utf-8 -*-
    import os
    import re
    from urllib.request import urlopen
    from pdfminer.pdfinterp import PDFResourceManager,process_pdf
    from pdfminer.converter import TextConverter
    from pdfminer.layout import LAParams
    from io import StringIO
    from io import open
    def readPDF(pdffile):
       rsrcmgr=PDFResourceManager()
       retstr=StringIO()
       laparams=LAParams()
       device=TextConverter(rsrcmgr,retstr,laparams=laparams)
       process_pdf(rsrcmgr,device,pdffile)
       device.close()
       content=retstr.getvalue()
       retstr.close()
       strs = str(content).split("\n")
       title = strs[4]+strs[5]+strs[6]
       return title 
    
    if __name__ == "__main__":
       rootdir = '/Users/nightwish/Desktop/part1' #文件夹路径,不知道的就把文件拖进终端看下
       list = os.listdir(rootdir)  # 列出文件夹下所有的目录与文件
       for i in range(0, len(list)):
           path= os.path.join(rootdir, list[i])
           if path!=rootdir+'/.DS_Store': #苹果系统需要注意,如果没有会报错
               pdffile=open(path,"rb")
               title =']'+readPDF(pdffile)
               print(title) 
               rstr = r"[\/\\\:\*\?\"\<\>\|]" #正则匹配去除不可命名字符
               title = re.sub(rstr, " ", title)
               title =title.replace(']Communications','')
               new_title=title.replace(']', '')#去除前面的communication
               print(new_title)
               os.rename(path, os.path.join(rootdir, new_title+".pdf"))
               pdffile.close()
    

    接下来就让它自己超级变变变

    嘤嘤嘤 手动忽略黑夜中的手指

    最后,再放一张改好的图吧


    故曰:人生苦短,我用python

    就酱,祝大家玩得开心!

    相关文章

      网友评论

          本文标题:用python从pdf文件中提取论文名称并自动保存

          本文链接:https://www.haomeiwen.com/subject/xymwbctx.html