如何用Python客户端处理Document AI中GCS存储的单个文件?
如何用Google Document AI Python客户端处理单个GCS存储的文件
要通过process_document()处理GCS中的单个文档,关键是正确使用GcsDocument类并指定到ProcessRequest的gcs_document字段,而不是错误地塞进inline_document或raw_document属性。
正确代码示例
from google.api_core.client_options import ClientOptions from google.cloud import documentai opts = ClientOptions(api_endpoint=f"us-documentai.googleapis.com") client = documentai.DocumentProcessorServiceClient(client_options=opts) name = client.processor_path("my_project_id", "us", "my_processor_id") # 初始化GcsDocument对象,指定GCS URI和MIME类型 gcs_document = documentai.GcsDocument( uri="gs://my_image.jpeg", mime_type="image/jpeg" ) # 构建ProcessRequest时,使用gcs_document参数 request = documentai.ProcessRequest( name=name, gcs_document=gcs_document ) # 执行同步处理 result = client.process_document(request=request) # 处理输出结果 print(result.document.text)
你之前的错误原因
- 错误传入GcsDocument到非对应字段:
ProcessRequest的raw_document用于承载本地文件的二进制内容,inline_document用于传入已解析的Document对象,这两个字段都不兼容GcsDocument,必须使用专门的gcs_document字段来指定GCS文件。 - 使用Document类传URI无效:
inline_document要求传入包含文件内容payload的Document对象,而非GCS URI,因此会触发400 Only content payload is supported for Sync Process错误。
补充说明
- 该同步处理方式的速度和上传本地文件接近,既避免了批量处理的延迟,也无需下载GCS文件再上传,节省带宽且更优雅。
- 确保你的服务账号拥有GCS目标文件的
storage.objects.get读取权限,以及Document AI处理器的调用权限。
内容的提问来源于stack exchange,提问作者mimocha
相关产品推荐
相关产品推荐

