在Python中打开PDF文件主要使用PyPDF2
、pdfplumber
和PyMuPDF
等库,以下是具体方法及代码示例:
一、使用PyPDF2
-
安装库
pip install PyPDF2
-
基础操作
-
提取文本:
from PyPDF2 import PdfFileReader pdf_reader = PdfFileReader(open('example.pdf', 'rb')) print(pdf_reader.numPages) # 获取页数 text = pdf_reader.getPage(0).extractText() # 提取第一页文本
-
合并PDF:
from PyPDF2 import PdfMerger merger = PdfMerger() pdf_files = [f for f in os.listdir() if f.endswith('.pdf')] for pdf in pdf_files: merger.append(pdf) merger.write('merged.pdf') merger.close()
-
二、使用pdfplumber
-
安装库
pip install pdfplumber
-
基础操作
-
提取文本:
import pdfplumber with pdfplumber.open('example.pdf') as pdf: for page in pdf.pages: print(page.extract_text())
-
提取表格:
import pdfplumber import pandas as pd with pdfplumber.open('table.pdf') as pdf: page = pdf.pages table = page.extract_table() df = pd.DataFrame(table[1:], columns=table) print(df)
-
三、使用PyMuPDF
-
安装库
pip install PyMuPDF
-
基础操作
-
提取文本:
import fitz doc = fitz.open('example.pdf') full_text = "" for page in doc: full_text += page.get_text() print(full_text)
-
图像提取:
import fitz import os doc = fitz.open('example.pdf') if not os.path.exists('extracted_images'): os.makedirs('extracted_images') for page_num in range(doc.page_count): page = doc.load_page(page_num) xref = page.get_image_list() for img in xref: img_ext = img img_data = page.get_image(img) img_path = f'extracted_images/img{page_num:04}.{img_ext}' with open(img_path, 'wb') as f: f.write(img_data)
-
总结
- PyPDF2 :适合基础文本提取和PDF操作(如合并)。