如何用ChatGPT/Vision Python API分析PDF及使用detail参数
使用Python调用ChatGPT API处理PDF第一页信息提取
一、前置准备
- 安装依赖库:
pip install openai pdf2image python-dotenv - 安装Poppler(用于PDF转图片):Windows需下载二进制包并配置环境变量;macOS执行
brew install poppler;Linux执行apt-get install poppler-utils - 把你的OpenAI API密钥存入
.env文件:OPENAI_API_KEY=你的API密钥
二、提取PDF第一页并转为图片
用pdf2image将PDF第一页转成PNG格式,代码示例:
from pdf2image import convert_from_path import os def pdf_first_page_to_image(pdf_path, output_img_path="first_page.png"): # 仅提取第一页 pages = convert_from_path(pdf_path, first_page=1, last_page=1) if pages: pages[0].save(output_img_path, "PNG") return output_img_path return None
三、调用GPT-4V API提取信息
通过OpenAI的ChatCompletion接口传入图片与提取指令,同时配置detail参数:
from openai import OpenAI from dotenv import load_dotenv import base64 import os load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8") def extract_info_from_image(image_path, prompt): base64_image = encode_image(image_path) response = client.chat.completions.create( model="gpt-4-vision-preview", messages=[ { "role": "user", "content": [ {"type": "text", "text": prompt}, { "type": "image_url", "image_url": { "url": f"data:image/png;base64,{base64_image}", "detail": "high" # 配置detail参数 } } ] } ], max_tokens=1000 ) return response.choices[0].message.content # 主执行流程 pdf_path = "目标PDF文件路径.pdf" image_path = pdf_first_page_to_image(pdf_path) if image_path: extract_prompt = "提取这份文档第一页的关键信息,包括标题、日期、作者、核心内容要点,整理成结构化文本" result = extract_info_from_image(image_path, extract_prompt) print(result) # 可选:删除临时生成的图片文件 os.remove(image_path)
四、detail参数用法说明
detail参数用于控制GPT-4V对图片的解析精细度,有两个可选值:
detail: "low":降低图片分辨率处理,速度快、成本低,适合只需要宏观信息提取的场景。detail: "high":以原始分辨率解析图片,能识别更小的文字与细节,适合精确提取需求,但成本更高、处理时间更长。
注意:若图片尺寸超过2048x2048像素,设置detail: "high"时API会自动裁剪图片中心区域处理;如需完整解析大图,建议先手动缩小图片尺寸。
内容的提问来源于stack exchange,提问作者Aurelien
相关产品推荐
相关产品推荐

