使用trp包处理Textract输出时遭遇page['Blocks']键错误求助
问题诊断与解决方案
核心原因
trp库的_parseDocumentPagesAndBlockMap函数依赖传入的文档结构包含顶级Pages数组字段,每个Page元素内有Blocks。而你的JSON是单页结构(直接在顶级节点下有Blocks),导致库初始化时self._responsePages为空或结构不匹配,遍历page['Blocks']时触发键错误。
验证步骤
确认你的JSON结构:
- 你的JSON结构(单页):
{ "Blocks": [...], "DocumentMetadata": {...} } - trp库期望的结构(多页/标准输出):
{ "DocumentMetadata": {...}, "Pages": [ {"Blocks": [...]} ] }
修复方案
方案1:修改JSON结构后传入
加载JSON后,手动将单页Blocks包装为Pages数组结构:
import json from trp import Document, TDocumentSchema # 加载原始JSON(注意路径用r转义避免转义字符问题) with open(r'C:\Users\user\Downloads\1.json', 'r') as file: data = json.load(file) # 适配trp库的结构要求 if "Pages" not in data and "Blocks" in data: data = {"Pages": [{"Blocks": data["Blocks"]}]} # 初始化trp Document doc = Document(TDocumentSchema().dump(data))
方案2:直接构造trp的Page对象(可选)
如果不想修改原始数据,也可以手动构造库需要的结构:
import json from trp import Document, Page # 加载原始数据 with open(r'C:\Users\user\Downloads\1.json', 'r') as file: data = json.load(file) # 直接创建Page并传入Document page = Page(data["Blocks"]) doc = Document([page])
额外检查
- 确认trp库版本:如果是旧版本,可能对单页结构兼容性差,尝试升级到最新版:
pip install --upgrade amazon-textract-response-parser
内容的提问来源于stack exchange,提问作者dt_mrt
相关产品推荐
相关产品推荐

