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

如何将Document AI批量OCR生成的JSON与原PDF文件名关联?

解决Document AI批量OCR后原文件与输出JSON关联的问题

这里提供三种可行方案,根据你的实际场景选择:

方案一:批量请求时传递自定义元数据(推荐)

在创建批量处理请求时,给每个输入PDF添加包含原文件名的自定义元数据,处理后的JSON输出会保留这个元数据字段,直接读取即可完成关联。

Python客户端代码示例:

from google.cloud import documentai_v1 as documentai

def batch_process_with_metadata():
    client = documentai.DocumentProcessorServiceClient()
    # 替换为你的项目ID、区域、处理器ID
    processor_name = client.processor_path("你的项目ID", "你的区域", "处理器ID")
    
    # 构造输入文档列表,为每个文件添加原文件名元数据
    gcs_docs = []
    # 示例原文件名列表,可根据实际需求批量生成
    original_files = ["79169_FATTURA FORNITURA_73090036581301A   2.215,52.pdf"]
    for filename in original_files:
        gcs_uri = f"gs://你的存储桶名/输入文件夹/{filename}"
        gcs_docs.append(
            documentai.GcsDocument(
                gcs_uri=gcs_uri,
                mime_type="application/pdf",
                metadata={"original_filename": filename}
            )
        )
    
    input_config = documentai.BatchDocumentsInputConfig(
        gcs_documents=documentai.GcsDocuments(documents=gcs_docs)
    )
    
    # 设置输出路径
    output_config = documentai.DocumentOutputConfig(
        gcs_output_config=documentai.DocumentOutputConfig.GcsOutputConfig(
            gcs_uri="gs://你的存储桶名/输出文件夹/"
        )
    )
    
    # 发送批量处理请求
    request = documentai.BatchProcessRequest(
        name=processor_name,
        input_documents=input_config,
        document_output_config=output_config
    )
    
    operation = client.batch_process_documents(request)
    # 等待任务完成,可根据文件数量调整超时时间
    operation.result(timeout=3600)

处理完成后,打开输出的JSON文件,在document.metadata字段下即可找到你设置的original_filename,直接关联对应原文件。

方案二:解析输出文件名的规律

观察你提供的文件名示例,输出文件名包含原文件名的核心内容,仅对特殊字符做了替换(比如原文件中的逗号2.215,52被改为2.21552)。可以写脚本批量提取并匹配:

import os
from pathlib import Path

def map_output_to_original(output_dir):
    # 遍历输出文件夹下的所有JSON文件
    for json_path in Path(output_dir).glob("*.json"):
        filename = json_path.name
        # 分割文件名,提取中间的原文件核心部分
        parts = filename.split("-")
        if len(parts) >= 2:
            # 还原逗号格式
            original_core = parts[1].replace("2.21552", "2.215,52")
            original_filename = f"{original_core}.pdf"
            # 可将映射关系保存到CSV或数据库,方便后续使用
            print(f"输出文件: {filename} → 原文件: {original_filename}")

# 调用示例,替换为你的本地输出文件夹路径
map_output_to_original("/本地输出文件夹路径")

如果所有文件的特殊字符替换规律一致,这个方法可以快速完成关联,无需重新跑OCR任务。

方案三:预处理原文件名

在上传PDF到存储桶前,先将原文件名中的特殊字符(比如逗号、多空格)替换为统一格式(如下划线),同时记录原文件名与新文件名的映射关系(保存到CSV或表格)。

比如:

  • 原文件名:79169_FATTURA FORNITURA_73090036581301A 2.215,52.pdf
  • 新文件名:79169_FATTURA_FORNITURA_73090036581301A_2.215_52.pdf

处理后的输出文件名会包含这个新文件名,通过映射表就能快速关联回原文件名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:40:29