Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

Python技术栈 下载 文本处理 查看内容
加入官方QQ群,更好去学习 群号:321222564黑马Python入门教程完整版(懂中文就能学会)视频慕课网 Python分布式爬虫打造搜索引擎Scrapy精讲【完整版】

使用pdfminer3k批量转换本地PDF文件

2018-9-29 15:40| 发布者: admin| 查看: 826| 评论: 0

摘要: 1. pdfminer3k相关链接:GitHub:https://github.com/jaepil/pdfminer3kPyPI:https://pypi.org/project/pdfminer3k/2. 解析pdf文件用到的类:PDFParser:PDF文档分析器:从一个文件中获取数据PDFDocument:PDF文档 ...
1. pdfminer3k相关链接:
GitHub:https://github.com/jaepil/pdfminer3k

PyPI:https://pypi.org/project/pdfminer3k/

2. 解析pdf文件用到的类: 
PDFParser:PDF文档分析器:从一个文件中获取数据 
PDFDocument:PDF文档对象:保存获取的数据,和PDFParser是相互关联的 
PDFResourceManager:PDF资源管理器:用于存储共享资源,如字体或图像。
LAParams:PDF参数分析器:分析pdf文件参数
PDFPageAggregator:PDF聚合器:读取获取的文档对象

PDFPageInterpreter:PDF文档解析器:处理页面内容变成Python可以解析 

3.分析思路:

整体思路为:构造文档对象,解析文档对象,提取所需内容



4. 具体的代码:





'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:pdfConvertor.py
#日期:2018-04-29
#备注:通过调用PDF解析器:pdfminer3k,批量将PDF文件转换为word或者txt文件,先要在python环境安装pdfminer3k
      在python运行环境通过命令行方式运行:pip3 install pdfminer3k       
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# F:\python_env\PaChong_env
# -*- coding: utf-8 -*-
 
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams
import os
 
def pdf_to_word(folder,password):
    # 获取指定目录下面的所有文件
    files = os.listdir(folder)
    # 获取pdf类型的文件放到一个列表里面
    pdfFiles = [f for f in files if f.endswith(".pdf")]
    for pdfFile in pdfFiles:
        # 将pdf文件放到指定的路径下面
        pdfPath = os.path.join(folder, pdfFile)
        # 设置将要转换后存放word文件的路径
        wdPath = pdfPath
        # 判断是否已经存在对应的word文件,如果不存在就加入到存放word的路径内
        if wdPath[-3:] != 'doc':
            wdPath = wdPath + ".doc"
            fn = open(pdfPath, 'rb')
            # 创建一个PDF文档分析器:PDFParser
            parser = PDFParser(fn)
            # 创建一个PDF文档:PDFDocument
            doc = PDFDocument()
            # 连接分析器与文档
            parser.set_document(doc)
            doc.set_parser(parser)
            # 提供初始化密码,如果无密码,输入空字符串
            doc.initialize("")
            # 检测文档是否提供txt转换,不提供就忽略
            if not doc.is_extractable:
                print("PDFTextExtractionNotAllowed")
            else:
                # 创建PDF资源管理器:PDFResourceManager
                resource = PDFResourceManager()
                # 创建一个PDF参数分析器:LAParams
                laparams = LAParams()
                # 创建聚合器,用于读取文档的对象:PDFPageAggregator
                device = PDFPageAggregator(resource, laparams=laparams)
                # 创建解释器,对文档编码,解释成Python能够识别的格式:PDFPageInterpreter
                interpreter = PDFPageInterpreter(resource, device)
                # doc.get_pages() 获取page列表
                for page in doc.get_pages():
                    # 利用解释器的process_page()方法解析读取单独页数
                    interpreter.process_page(page)
                    # 这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象,
                    # 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal等等,想要获取文本就获得对象的text属性,
                    # 使用聚合器get_result()方法获取页面内容
                    layout = device.get_result()
                    for out in layout:
                        if (isinstance(out, LTTextBoxHorizontal)):
                            print(out.get_text())
                        with open(wdPath, 'a',encoding='utf-8') as f:
                            f.write(out.get_text() + '\n')
 
if __name__ == '__main__':
    pdf_to_word("F:\PythonProject\Pacong\docs","")


点击下载

鲜花

握手

雷人

路过

鸡蛋
收藏 邀请

QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-1-21 17:57 , Processed in 0.118849 second(s), 39 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部