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

如何让GCP Document AI输出与输入PDF同名的JSON文件?

解决GCP Document AI批量处理PDF时输出JSON文件名截断问题

可以通过在批量处理请求中配置输出URI占位符来保留原PDF的完整文件名,避免输出JSON重名覆盖。具体实现方式如下:

核心解决方案

在构建批量处理请求的BatchOutputConfig时,使用DocAI支持的文件名占位符,让输出JSON自动沿用原输入PDF的完整文件名(可选择保留或移除扩展名)。DocAI支持的关键占位符包括:

  • {input_file_name}:完整输入文件名(含扩展名)
  • {input_file_name_without_extension}:输入文件名(不含扩展名)
  • {shard_index}:分片索引(大文件自动分片时使用)

Python代码示例

from google.cloud import documentai_v1 as documentai
from google.cloud.documentai_v1.types import batch_process

def run_batch_process(
    project_id: str,
    location: str,
    processor_id: str,
    gcs_input_uri: str,
    gcs_output_bucket: str
):
    # 初始化DocAI客户端
    client = documentai.DocumentProcessorServiceClient()
    processor_name = client.processor_path(project_id, location, processor_id)

    # 配置输入源(支持单个文件或GCS前缀匹配)
    input_config = batch_process.BatchProcessRequest.BatchInputConfig(
        gcs_source=gcs_input_uri,
        mime_type="application/pdf"
    )

    # 配置输出路径,使用占位符保留原文件名(替换PDF扩展名为JSON)
    output_uri_prefix = f"gs://{gcs_output_bucket}/processed_output"
    output_config = batch_process.BatchProcessRequest.BatchOutputConfig(
        gcs_destination=f"{output_uri_prefix}/{{input_file_name_without_extension}}.json"
    )

    # 配置文档输出字段(按需调整需要提取的内容)
    document_output_config = batch_process.DocumentOutputConfig(
        gcs_output_config=batch_process.DocumentOutputConfig.GcsOutputConfig(
            field_mask="text,pages,entities"
        )
    )

    # 构建批量处理请求
    request = batch_process.BatchProcessRequest(
        name=processor_name,
        input_configs=[input_config],
        output_config=output_config,
        document_output_config=document_output_config
    )

    # 发送异步处理请求并等待完成
    operation = client.batch_process_documents(request)
    print("批量处理任务已启动,等待完成...")
    response = operation.result(timeout=3600)  # 超时时间可根据文件大小调整
    print("批量处理完成!")
    return response

# 调用示例
if __name__ == "__main__":
    run_batch_process(
        project_id="your-project-id",
        location="us",  # 替换为你的处理器所在区域
        processor_id="your-processor-id",
        gcs_input_uri="gs://your-input-bucket/*.pdf",  # 匹配批量处理的PDF文件
        gcs_output_bucket="your-output-bucket"
    )

关键说明

  1. 文件名保留逻辑:使用{input_file_name_without_extension}.json后,原文件71.169892_01-2022.10.15-21275188-1111.pdf的输出将变为71.169892_01-2022.10.15-21275188-1111.json,完全保留原文件名特征,避免重名。
  2. 大文件分片处理:若PDF文件过大被自动分片,DocAI会自动添加{shard_index}后缀(如xxx-0.json、xxx-1.json),仍不会导致重名。
  3. 权限配置:确保DocAI服务账号拥有目标GCS存储桶的写入权限,否则会导致输出失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:40