python 将pdf转换成txt

由于上篇中的一个模块要求是将pdf中的文本内容给读取出来,因为大部分的毕设文档都是pdf格式的,而python自带的file I/O是没法实现从pdf格式的文件中读取内容的,因此需要导入第三方的package来完成。
起初,google出来的结果是用pyPdf的,但是看了官方文档后,另外通过实验,发现效果不佳,主要原因是其对pdf文件的操作主要还是停留在page阶段。
后来,继续google,发现有人用pdfminer,看了后效果不错,不过那篇blog的代码实现部分有点小问题,就是转换完成后得到的txt文件未保留原来pdf中的格式,导致阅读效果不佳,但是,pdfminer本身有个小工具是pdf2txt,通过其实现的效果却是很理想的。想了很久,最后看了下pdf2txt的源代码,加上官方文档的说明,总算是得到较好的效果,具体实现如下:
'''
Created on 2011-12-27

@author: zhufeng
'''

from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams

def convert(filename):
    outfile = filename+'.txt'
    args = [filename]
    
    rsrcmgr = PDFResourceManager()
    outfp = file(outfile,'w')
    device = TextConverter(rsrcmgr,outfp,codec='utf-8',laparams=LAParams())
    
    for fname in args:
        fp = file(fname, 'rb')
        process_pdf(rsrcmgr, device, fp, pagenos = set(), maxpages = 0, password = '', check_extractable=True)
        fp.close()
   
    device.close()
    outfp.close()

if __name__ == '__main__':
    convert('g:/a.pdf')

ps.   
希望继续深入,争取把图片也给抠出来,当然这样就得转换成doc文件,这里就需要涉及到编码问题,昨晚将出来的设置为doc格式,结果word识别就出现警告,好在用的是utf-8,没有影响最后的结果,但是毕竟还是出了个警告。
另外,有个想法,但是还没实现,因为用处不大,可以先用pyPdf将一篇pdf中的某几页截取出来存到一个新的pdf文件,然后再用pdfminer进行转换,这样就可以弥补pdfminer不能只读取某一部分的pdf的缺陷。
pyPdf转换效率极低!!!
有兴趣的可以去pdfminer的官网瞧瞧哈,http://www.unixuser.org/~euske/python/pdfminer/index.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值