做物业管理的企业网站,正规赚佣金的平台,网站后端怎么做,扁平化风格的网站1.介绍
PyMuPDF 和Fitz 是用于Python中处理PDF文件的相关模块。Fitz是P有MuPDF的字模块。提供一个简化和封装版本的P有MuPDF功能。
关系#xff1a;
PyMuPDF#xff1a; 提供广泛的功能#xff0c;用于操作PDF文档#xff0c; 包括方便的高级函数与底层操作Fitz #x…1.介绍
PyMuPDF 和Fitz 是用于Python中处理PDF文件的相关模块。Fitz是P有MuPDF的字模块。提供一个简化和封装版本的P有MuPDF功能。
关系
PyMuPDF 提供广泛的功能用于操作PDF文档 包括方便的高级函数与底层操作Fitz 简化和封装了PyMuPDF的功能使在python中处理PDF文件更加简单
2. 基本操作
获取PDF的文档基本信息
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import fitzpdf_path rag_datas/text.pdf
doc fitz.open(pdf_path) # 文件加载# basic PDF info
title doc.metadata[title]
author doc.metadata[author]# 文档作者
create_data doc.metadata[creationDate] # 文档创建时间
num_pages doc.page_count # 文档页数
page doc.load_page(0) # 第一页
page_height page.bound().height
page_width page.bound().width
获取pdf文档中的文本
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import fitzpdf_path rag_datas/text.pdf
doc fitz.open(pdf_path) # 文件加载
num_pages doc.page_count # 文档页数# Text info of pdf
for page_index in range(num_pages ):page doc.load_page(page_index)# 获取页面内容text page.get_text()# 获取页面文本print(f第{page_index 1} 页的文本内容为\n{text }\n)
获取pdf文档中的图片
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import fitzpdf_path rag_datas/text.pdf
doc fitz.open(pdf_path) # 文件加载
num_pages doc.page_count # 文档页数# Image info of pdf
for page_index in range(num_pages ):page doc.load_page(page_index)# 获取页面内容image_list page.get_images()# 获取页面图片print(image_list) # 图片基本信息for img in image_list:xref img[0]pix fitz.Pixmap(doc, xref)print(pix.colorspace, --, fitz.csRGB)img_path f../output/image{page_index 1}_{xref}.pngpix.save(img_path )
获取pdf文档中的表格
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import fitzpdf_path rag_datas/text.pdf
doc fitz.open(pdf_path) # 文件加载
num_pages doc.page_count # 文档页数# tables info of pdf
for page_index in range(num_pages ):page doc.load_page(page_index)# 获取页面内容tables page.find_tables()# 获取页面表格print(ftables: {tables})# 提取的表格数据将会保存为csv格式文件for i, table in enumerate(tables):df tables[0].to_pandas()print(df.head())df.to_csv(f../output/table_pd_{page_index}_{i1}.csv, indexFalse)
获取pdf 文档 分割
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import fitzpdf_path rag_datas/text.pdf
doc fitz.open(pdf_path) # 文件加载
num_pages doc.page_count # 文档页数
# 构建输出文件名以页数命名
#
for i in range(1, num_pages ):print(fi{i})# 创建一个新的Document对象包含当前页面new_pdf fitz.open()new_pdf.insert_pdf(pdf_document. from_pagei-1, to_pagei)# 保存单独的PDF文件new_pdf.save(output_pdf.format(i))new_pdf.close()pdf_document.close()
借助大模型进行文档问答
# -*- coding: utf-8 -*-
# PyMuPDF1.23.26
import os
import fitz
from openai import OpenAIdef get_pdf_content(pdf_path:str)- str:doc fitz.open(pdf_path)num_pages doc.page_countbg_content_list []#Full Text of PDFfor page_index in range(num_pages):page doc.load_page(page_index)text page.get_text()bg_content_list.append(text)return .join(bg_content_list)def get_answer(pdf_content: str, query:str) - str:client OpenAI(api_keyos.getenv(OPENAI_API_KEY))response clinet.chat.completions.create(model gpt-3.5-turbo,messages[{role:system,content:You are a helpful assistant.},{role:user,content:fThe full text of PDF file is : {pdf_content}},{role:user,content:query}],max_tokens1000)answer response.choices[0].message.contentreturn answerif __name____main__:content get_pdf_content(rag_datas/text.pdf)query_1 蚂蚁集团发布的大模型叫什么print(get_answer(pdf_content content, queryquery_1 ))query_2 混元大模型是什么时候发布的print(get_answer(pdf_content content, queryquery_2 )) 参考 版面分析–PDF解析神器PyMuPDF github: https://github.com/pymupdf/PyMuPDF 官方文档https://pymupdf.readthedocs.io/en/latest/tutorial.html