美文网首页Pythoner集中营程序员
【python】使用python pdfminer3k读取pdf

【python】使用python pdfminer3k读取pdf

作者: 6J | 来源:发表于2018-04-23 21:56 被阅读134次

前言:

前几天学姐拿来一堆文件名乱码的pdf让帮忙整理一下,按论文标题命名



一看竟然一共250多个文件,还在不同的文件夹中,哇,想想就头疼,这时候就要发挥程序媛的智慧了,正好最近在用python写毕设,就想能不能用python改标题,嗳,原来有专门的处理的库pdfminer。好了闲话少说,开始干活

安装pdfminer库

在命令行输入

pip install pdfminer3k

如果不成功会提示少了什么库,就按照pip install xx(库名称)的方式安装就好,最后再在命令行输入pip install pdfminer3k

把文件从文件夹中取出来:

这个很简单,直接贴代码了

  import  os
  import shutil
  import importlib
  import sys

 
def load_file():
      walk = os.walk('./12')
       i=1;
      for root, dirs,files in walk:
             for name in files:
                 shutil.move(os.path.join(root,name), "./myset/"+i+".pdf)
                  i+=1
       
load_file()

其中os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下,是一个简单易用的文件、目录遍历器
walk()方法语法格式如下:

     os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

参数
top -- 遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

topdown--可选,为 True,先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

onerror-- 可选, 需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks -- 可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。
详情见http://www.runoob.com/python/os-walk.html

现在的数据都在一个文件夹了

从pdf中读标题

1.分析PDF内容



标题在第二行和第三行一般,除极少数的标题只有一行。
2.读pdf获取标题

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[2]+strs[3]
    return title 
pdffile=open('./mysets/3.pdf',"rb")
title =readPDF(pdffile)
print(title)//
pdffile.close()
得到文件名

3.更改文件名:

def rename():
    walk = os.walk('./mysets')
    i = 0;
    for root, dirs, files in walk:
        for name in files:
             pdffile=open(os.path.join(root, name),"rb")
              title =readPDF(pdffile)
              print(title)//
            os.rename(os.path.join(root, name), os.path.join(root, title+".pdf”))
            i += 1

好了这就将文件名给概率


虽然不能百分百处理好,有些特殊的情况还没有考虑好,但是已经减少了很多工作量拉。
以后要多尝试多做

相关文章

本文标题:【python】使用python pdfminer3k读取pdf

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