Firebase云函数调用Document AI API报400错误:无有效处理架构
问题描述
在Firebase Cloud Function中处理Google Cloud Storage上传的PDF时,函数能正常触发,但调用Google Cloud Document AI自定义处理器时持续报错:400 No valid schema provided for processing。
已完成以下排查:
- 验证过处理器ID正确
- 测试用服务账号拥有Document AI、Cloud Storage和Firebase的所有者权限
- 更换过不同的PDF文件测试
确认问题出在请求结构上,但无法定位具体错误点。
问题代码
from google.cloud import documentai_v1beta3 as documentai from google.api_core.client_options import ClientOptions import os from google.cloud import storage def process_pdf(event, context): # 补充blob获取逻辑(原代码遗漏部分) bucket = storage.Client().get_bucket(event['bucket']) blob = bucket.blob(event['name']) location = 'us' opts = ClientOptions(api_endpoint=f"{location}-documentai.googleapis.com") documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts) project_id = os.environ.get('PROJECT_ID') processor_id = "{{MY_PROCESSOR_ID}}" # 替换为实际处理器ID name = documentai_client.processor_path(project_id, location, processor_id) content = blob.download_as_bytes() raw_document = documentai.RawDocument(content=content, mime_type="application/pdf") request = documentai.ProcessRequest(name=name, raw_document=raw_document) try: result = documentai_client.process_document(request=request) except Exception as e: print(f"Error processing the document: {type(e).__name__} - {str(e)}") return
解决方案
这个错误的核心原因是自定义Document AI处理器关联了Schema,但请求中未指定要使用的Schema资源名称,具体修复步骤如下:
获取Schema完整资源名称
登录Google Cloud控制台,进入Document AI页面,找到你的自定义处理器:- 进入处理器详情页,切换到「Schema」标签
- 复制Schema的完整资源名称,格式示例:
projects/[你的项目ID]/locations/us/processors/[处理器ID]/schemas/[Schema ID]
修改请求代码,添加schema_name参数
在构建ProcessRequest时,补充schema_name字段,指定上面复制的Schema资源名称:request = documentai.ProcessRequest( name=name, raw_document=raw_document, schema_name="你的Schema完整资源名称" )额外验证点
- 确认处理器的Schema状态为「已启用」
- 如果使用了Schema版本,需指定对应版本的资源名称(格式在原Schema名称后加上
/versions/[版本号])
内容的提问来源于stack exchange,提问作者HaZeust
相关产品推荐
相关产品推荐

