代码示例:
在Python中处理PDF文件,特别是根据页码提取内容,可以使用多种库来实现。以下是一些流行的库和它们的基本使用方法:
-
pdfplumber :这是一个基于pdfminer.six构建的库,非常适合解析非扫描格式的PDF文件。它可以提取文本、表格,并提供页面布局的详细信息。使用示例如下:
import pdfplumber def pdf2txt(pdf_path): txt = '' with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: txt += page.extract_text() return txt
-
pdfminer :这个库可以获取文本的提取位置以及其他布局信息,支持将PDF转换为HTML/XML格式,并且支持基本的加密方式。示例代码如下:
from pdfminer.converter import TextConverter from pdfminer.pdfpage import PDFPage def parsePDF(PDF_path): resource_manager = PDFResourceManager() fake_file_handle = io.StringIO() converter = TextConverter(resource_manager, fake_file_handle) with open(PDF_path, 'rb') as fh: for page in PDFPage.get_pages(fh): converter.process_page(page) text = fake_file_handle.getvalue() return text
-
PyMuPDF (fitz/pymupdf) :这个库支持多种格式,可以提取文字和图像,搜索文本。示例代码如下:
import fitz def parsePDF(filePath): with fitz.open(filePath) as doc: text = "" for page in doc.pages(): text += page.get_text() return text
-
PyPDF2 :这个库可以用来读取和写入PDF文件,支持加密和解密PDF文件,以及对PDF文件进行页面操作,如旋转和删除页面。示例代码如下:
import PyPDF2 def delete_page(input_file, output_file, page_number): pdf_reader = PyPDF2.PdfFileReader(input_file) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): if page_num + 1 != page_number: pdf_writer.addPage(pdf_reader.getPage(page_num)) with open(output_file, 'wb') as output: pdf_writer.write(output)
-
pdfminer3k :这是一个专注于文本数据提取的库,它可以获取页面中文本的确切位置以及其他信息。示例代码如下:
from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.pdfdevice import PDFDevice from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams fp = open('./xx_mark.pdf','rb') parser = PDFParser(fp) document = PDFDocument(parser) device = PDFDevice() aggregator = PDFPageAggregator(PDFResourceManager(), device) interpreter = PDFPageInterpreter(PDFResourceManager(), aggregator) for page in PDFDocument.get_pages(fp): interpreter.process_page(page) layout = device.get_result() for out in layout: print(out.get_text())
-
PDFQuery :这个库通过使用类似CSS的样式选择器来定位文档中的元素,提供了一种从PDF文件中提取数据的简单方法。示例代码如下:
from pdfquery import PDFQuery pdf = PDFQuery('example.pdf') pdf.load() text_elements = pdf.pq('LTTextLineHorizontal') text = [t.text for t in text_elements] print(text)
这些库各有特点,可以根据你的具体需求选择合适的库来处理PDF文件。例如,如果你需要提取文本和表格,pdfplumber
可能是一个好选择;如果你需要处理加密的PDF或者进行页面操作,PyPDF2
可能更适合你的需求。
喜欢本文,请点赞、收藏和关注!