Python 读取PDF文件

本文详细介绍如何使用pdfminer3k库从PDF文档中提取文本,并将其转换为TXT格式。通过定义函数Pdf2Txt,实现了PDF文档的解析、文本提取及保存过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先需要安装 pdfminer3k 库:

pip install pdfminer3k

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.pdfdevice import PDFDevice
from pdfminer.layout import *
from pdfminer.converter import PDFPageAggregator


path = r"C:\Users\Administrator\Desktop\a.pdf"
toPath = r"C:\Users\Administrator\Desktop\a.txt"

def Pdf2Txt(Path,Save_name):
    #来创建一个pdf文档分析器
    parser = PDFParser(Path)
    #创建一个PDF文档对象存储文档结构
    document = PDFDocument(parser)
    # 检查文件是否允许文本提取
    if not document.is_extractable:
        raise PDFTextExtractionNotAllowed
    else:
        # 创建一个PDF资源管理器对象来存储共赏资源
        rsrcmgr=PDFResourceManager()
        # 设定参数进行分析
        laparams=LAParams()
        # 创建一个PDF设备对象
        # device=PDFDevice(rsrcmgr)
        device=PDFPageAggregator(rsrcmgr,laparams=laparams)
        # 创建一个PDF解释器对象
        interpreter=PDFPageInterpreter(rsrcmgr,device)
        # 处理每一页
        for page in PDFPage.create_pages(document):
            interpreter.process_page(page)
            # 接受该页面的LTPage对象
            layout=device.get_result()
            for x in layout:
                if(isinstance(x,LTTextBoxHorizontal)):
                    with open('%s'%(Save_name),'a') as f:
                        f.write(x.get_text()+'\n')

Path = open(path, 'rb')
Pdf2Txt(Path, toPath)

 

<think>我们正在处理用户的问题:“我想使用Python读取PDF文件的内容 请问Python 如何读取 PDF 文件内容” 根据用户的问题,我们需要提供使用Python读取PDF文件内容的方法。 根据之前提供的引用,有两种方法: 引用[1]:使用PyPDF2库,并给出了读取第1-100页内容的示例代码。 引用[2]:使用Spire.PDF for Python库,并提到它可以提取文本和图片,还支持格式转换。 因此,我们可以介绍两种方法,并给出示例代码。 注意:用户要求使用中文回答,并且按照系统级指令,数学公式使用$...$或$$...$$格式(但本问题可能不涉及数学公式,所以不需要)。 另外,根据指令,我们需要在回答末尾生成相关问题。 回答结构: 1. 介绍两种常用的方法(两个库) 2. 分别给出安装命令和示例代码 3. 说明两种方法的优缺点或适用场景 4. 生成相关问题 注意:引用标识的使用。在引用到之前提供的参考内容时,在末尾添加引用标识,例如[^1]或[^2]。 但是,我们提供的引用是来自用户给出的参考,所以我们可以这样引用。 然而,用户提供的两个引用都是关于读取PDF的,我们可以直接使用。 但是请注意,用户提供的引用内容中,引用[1]使用的是PyPDF2,引用[2]使用的是Spire.PDF for Python。 我们还需要注意,Spire.PDF for Python是一个商业库,有免费版但可能有限制。 因此,我们在回答中应该说明这一点。 另外,我们还可以提到其他库,如pdfplumber(它也是常用的,并且提取文本效果更好),但用户没有提供引用,我们可以根据我们的知识补充,但要注意指令要求“尽量保证回答真实可靠”,所以如果我们知道的话可以补充,但如果没有把握,可以只根据用户提供的引用。 但是,用户的问题只是要求读取内容,并没有指定是文本还是图片,所以我们可以分别介绍。 考虑到用户提供的引用中,引用[2]提到了提取文本和图片,而引用[1]只提取文本(并且可能效果一般),我们可以这样组织: 步骤: 1. 使用PyPDF2(免费,但文本提取效果可能不佳,特别是对于复杂格式) 2. 使用Spire.PDF for Python(商业库,免费版有限制,但功能强大) 3. 另外,也可以提一下pdfplumber(因为它是免费的,并且在提取文本方面表现较好),但注意用户没有提供这个引用,我们可以简单提一下,作为补充。 注意:根据指令,我们应尽可能参考用户上一次的问题和回答。但这是第一次回答,所以主要根据用户提供的引用。 因此,回答如下:</think>### Python 读取 PDF 文件内容的方法 Python 提供了多种库来读取 PDF 文件内容,以下是三种常用方法及其实现步骤: --- #### 方法 1:使用 **PyPDF2**(基础文本提取) ```python import PyPDF2 # 打开 PDF 文件 with open('your_file.pdf', 'rb') as pdf_file: pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 获取总页数 print(f"总页数: {pdf_reader.numPages}") # 逐页提取文本 for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) text = page.extractText() print(f"第 {page_num+1} 页内容:\n{text}\n") ``` **特点**: - 纯 Python 实现,轻量级 - 对简单文本提取有效,但复杂格式可能丢失排版信息[^1] - 不支持图片提取 --- #### 方法 2:使用 **Spire.PDF**(高级文本/图片提取) ```python from spire.pdf import PdfDocument # 加载 PDF doc = PdfDocument() doc.LoadFromFile("your_file.pdf") # 提取所有文本 all_text = [] for page in doc.Pages: text = page.ExtractText() # 提取文本 all_text.append(text) # 提取图片(需额外处理) images = page.ExtractImages() for img in images: img.Save(f"page{page.PageIndex}_img.png") print("".join(all_text)) doc.Close() ``` **特点**: - 支持文本、图片、表格提取 - 可处理加密文档 - 需安装:`pip install Spire.PDF`(免费版有水印和页数限制)[^2] --- #### 方法 3:使用 **pdfplumber**(精准文本定位) ```python import pdfplumber with pdfplumber.open('your_file.pdf') as pdf: for page in pdf.pages: # 提取完整文本 print(page.extract_text()) # 提取表格数据(示例) tables = page.extract_tables() for table in tables: print("检测到表格:", table) ``` **特点**: - 精准保持文本位置和表格结构 - 支持可视化调试(`page.to_image().debug_tablefinder()`) - 安装:`pip install pdfplumber` --- ### 选择建议 | 场景 | 推荐库 | |---------------------|---------------| | 快速提取简单文本 | PyPDF2 | | 需要图片/表格提取 | Spire.PDF | | 精确还原排版和表格 | pdfplumber | > ⚠️ 注意:所有 PDF 文本提取都可能因文件格式(扫描件/加密/特殊字体)失效,扫描件需先用 OCR 工具处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值