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

Python开发:序列化/反序列化DocumentAI的Document对象需自行编写.proto吗?

关于DocumentAI Document对象序列化/反序列化的解决方案

不需要自行编写.proto文件,Google官方已提供现成的Protocol Buffers定义,且Python SDK中已封装好对应工具,直接用即可。

具体实现方式

  • 利用google.cloud.documentai库的原生方法:Document对象本身支持Protobuf序列化与反序列化
    • 序列化:调用Document对象的SerializeToString()方法,将对象转为二进制Protobuf格式,可保存到文件或缓存
    • 反序列化:使用Document.FromString()方法,从二进制数据恢复出Document对象
  • 若使用documentai-toolbox的Document包装类,可先通过包装类的document属性获取底层原生Document实例,再执行上述序列化/反序列化操作

示例代码

from google.cloud import documentai_v1 as documentai
from google.cloud.documentai_toolbox.wrappers.document import Document as ToolboxDocument

# 假设已通过API获取toolbox的Document对象
toolbox_doc = ToolboxDocument.from_document_path(...)

# 序列化:将原生Document转为二进制
native_doc = toolbox_doc.document
serialized_data = native_doc.SerializeToString()

# 保存到本地文件(可选)
with open("document_cache.bin", "wb") as f:
    f.write(serialized_data)

# 反序列化:从二进制数据恢复Document
with open("document_cache.bin", "rb") as f:
    serialized_data = f.read()
restored_native_doc = documentai.Document.FromString(serialized_data)

# 转回toolbox的Document对象(按需使用)
restored_toolbox_doc = ToolboxDocument(document=restored_native_doc)

注意事项

  • 确保安装兼容版本的依赖:google-cloud-documentai和google-cloud-documentai-toolbox
  • 序列化后的二进制数据体积小、解析快,适合本地存储或缓存,能有效减少重复调用DocumentAI API的次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:47:13