You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:17:30