如何让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" )
关键说明
- 文件名保留逻辑:使用
{input_file_name_without_extension}.json后,原文件71.169892_01-2022.10.15-21275188-1111.pdf的输出将变为71.169892_01-2022.10.15-21275188-1111.json,完全保留原文件名特征,避免重名。 - 大文件分片处理:若PDF文件过大被自动分片,DocAI会自动添加
{shard_index}后缀(如xxx-0.json、xxx-1.json),仍不会导致重名。 - 权限配置:确保DocAI服务账号拥有目标GCS存储桶的写入权限,否则会导致输出失败。
内容的提问来源于stack exchange,提问作者imihailov
相关产品推荐
相关产品推荐

