win10环境下python3安装pdfminer

一、安装

1.首先下载源文件包 http://pypi.python.org/pypi/pdfminer/,解压,然后命令行安装:python setup.py install
2.下载pdfminer.six,然后解压。由于处理中文文件,需要预编译:

mkdir pdfminer\cmap
python tools\conv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminer\cmap Adobe-CNS1 cmaprsrc\cid2code_Adobe_CNS1.txt
python tools\conv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminer\cmap Adobe-GB1 cmaprsrc\cid2code_Adobe_GB1.txt
python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt
python tools\conv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminer\cmap Adobe-Korea1 cmaprsrc\cid2code_Adobe_Korea1.txt

最后安装:

python setup.py install

二、python报错:cannot import name ‘PDFDocument‘ from ‘pdfminer.pdfparser‘ 解决方法

解决办法:
1、修改模块导入方式

from pdfminer.pdfparser import PDFParser, PDFDocument

改为:

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage

2、修改模块调用方式(2处)
1)PDFDocument

doc = PDFDocument()

改为

doc = PDFDocument(parser)

2)循环方式

for page in doc.get_pages():

改为

for page in PDFPage.create_pages(doc):

三、读取PDF内容

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.converter import PDFPageAggregator

def parse(pdf_path):
    '''解析PDF文本,并保存到TXT文件中'''  
    fp = open(pdf_path, 'rb')
    # 用文件对象创建一个PDF文档分析器
    parser = PDFParser(fp)
    # 创建一个PDF文档
    doc = PDFDocument(parser)
    # 连接分析器,与文档对象
    parser.set_document(doc)

    # 检测文档是否提供txt转换,不提供就忽略
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    else:
        # 创建PDF,资源管理器,来共享资源
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF设备对象
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释其对象
        interpreter = PDFPageInterpreter(rsrcmgr, device)

        # 循环遍历列表,每次处理一个page内容
        # doc.get_pages() 获取page列表
        for page in PDFPage.create_pages(doc):
            interpreter.process_page(page)
            # 接受该页面的LTPage对象
            layout = device.get_result()
            # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象
            # 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等
            # 想要获取文本就获得对象的text属性,
            for x in layout:
                if (isinstance(x, LTTextBoxHorizontal)):
                    with open(r'example.txt', 'a', encoding='utf-8') as f:
                        results = x.get_text()
                        print(results)
                        f.write(results + "\n")
if __name__ == '__main__':
    pdf_path = "example.pdf"
    parse(pdf_path)

参考链接:
https://blog.csdn.net/weixin_34861344/article/details/107837875
https://blog.csdn.net/qq_34069180/article/details/89843810

你可能感兴趣的:(知识图谱,python)