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

如何通过Streamlit将本地PDF上传至Document AI摘要处理器?

如何用Streamlit上传PDF到Document AI Summarizer Processor

你当前代码的核心问题是:Streamlit st.file_uploader 返回的是 UploadedFile 对象,不是本地文件路径,直接传给 process_document_sample 的 file_path 参数会报错,而且不需要用 with open() 去读取——因为 UploadedFile 本身就是类文件对象,可以直接读取内容。

以下是修正后的完整实现步骤:

1. 调整Document AI处理函数

原函数如果是基于本地文件路径设计的,需要改成接受文件二进制内容:

import streamlit as st
from google.cloud import documentai_v1 as documentai

def process_document_sample(
    project_id: str,
    location: str,
    processor_id: str,
    file_content: bytes,
    mime_type: str,
):
    # 初始化Document AI客户端
    client = documentai.DocumentProcessorServiceClient()
    processor_name = client.processor_path(project_id, location, processor_id)

    # 构造处理请求,直接传入文件二进制内容
    request = documentai.ProcessRequest(
        name=processor_name,
        raw_document=documentai.RawDocument(content=file_content, mime_type=mime_type)
    )

    # 调用API处理文档
    result = client.process_document(request=request)
    return result.document.text  # 根据Summarizer Processor的实际返回结构调整,比如可能需要提取特定摘要字段

2. Streamlit上传与处理逻辑

直接读取上传文件的内容,传入调整后的处理函数:

st.title("PDF 摘要生成工具")

uploaded_file = st.file_uploader('选择你的 .pdf 文件', type="pdf")

if uploaded_file is not None:
    # 直接读取上传文件的二进制内容
    file_content = uploaded_file.read()
    
    # 配置你的Document AI参数
    PROJECT_ID = "XXXX"
    LOCATION = "us"
    PROCESSOR_ID = "XXX"
    MIME_TYPE = "application/pdf"

    try:
        # 调用处理函数生成摘要
        summary = process_document_sample(
            project_id=PROJECT_ID,
            location=LOCATION,
            processor_id=PROCESSOR_ID,
            file_content=file_content,
            mime_type=MIME_TYPE
        )
        st.subheader("生成的摘要")
        st.write(summary)
    except Exception as e:
        st.error(f"处理失败: {str(e)}")

关键说明

  • UploadedFile.read() 直接返回文件的二进制数据,替代了本地文件的 open() 读取逻辑
  • Document AI的 ProcessRequest 支持通过 raw_document 直接传入二进制内容,无需先保存文件到本地
  • 注意根据Summarizer Processor的实际返回结构调整结果提取逻辑(比如部分处理器会把摘要放在特定的实体或字段中,而非直接返回document.text)

内容的提问来源于stack exchange,提问作者budionosan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:45:14