如何将PDF提取的表格映射至Azure Search索引及配置自定义技能
方案解答
1 是否可以作为自定义技能添加
完全可以。你提到的ExtractTables项目本身就是按照Azure认知搜索自定义技能的接口规范开发的,返回的values数组结构完全符合技能组的输入输出要求,直接部署为函数应用后即可添加到你的现有技能组中使用。
2 索引Schema设计
根据你的业务场景可选择两种设计方案:
方案一:通用存储方案(适配任意表格结构)
适合表格格式不固定、不需要按表格字段做结构化筛选的场景,直接把完整的表格结构存入索引的复杂类型数组字段:
{ "name": "你的索引名称", "fields": [ // 原有其他字段(比如文档ID、文档名称、正文内容等) { "name": "id", "type": "Edm.String", "key": true, "searchable": false }, { "name": "extracted_tables", "type": "Collection(Edm.ComplexType)", "fields": [ { "name": "page_number", "type": "Edm.Int32", "searchable": false, "filterable": true }, { "name": "row_count", "type": "Edm.Int32", "searchable": false }, { "name": "column_count", "type": "Edm.Int32", "searchable": false }, { "name": "cells", "type": "Collection(Edm.ComplexType)", "fields": [ { "name": "text", "type": "Edm.String", "searchable": true }, { "name": "rowIndex", "type": "Edm.Int32", "searchable": false }, { "name": "colIndex", "type": "Edm.Int32", "searchable": false }, { "name": "confidence", "type": "Edm.Double", "searchable": false }, { "name": "is_header", "type": "Edm.Boolean", "searchable": false } ] } ] }, // 可选:合并所有表格文本用于全文检索 { "name": "all_table_content", "type": "Edm.String", "searchable": true, "retrievable": false } ] }
方案二:固定结构映射方案(适配固定格式表格)
如果你的PDF表格结构固定,比如示例中是商品清单,表头为Item/Quantity/Rate/Amount,可以直接映射为结构化字段,查询和筛选效率更高:
{ "name": "你的索引名称", "fields": [ // 原有其他字段 { "name": "id", "type": "Edm.String", "key": true, "searchable": false }, { "name": "product_list", "type": "Collection(Edm.ComplexType)", "fields": [ { "name": "item", "type": "Edm.String", "searchable": true, "filterable": true }, { "name": "quantity", "type": "Edm.Int32", "searchable": false, "filterable": true, "sortable": true }, { "name": "rate", "type": "Edm.Double", "searchable": false, "filterable": true, "sortable": true }, { "name": "amount", "type": "Edm.Double", "searchable": false, "filterable": true, "sortable": true }, { "name": "page_number", "type": "Edm.Int32", "searchable": false, "filterable": true } ] } ] }
3 数据映射方法
- 通用方案:直接在技能组的输出字段映射中,将ExtractTables技能输出的
/document/tables路径映射到索引的extracted_tables字段即可;如果需要合并表格全文,可额外添加一个整形器技能把所有单元格的text拼接为字符串,映射到all_table_content字段。 - 固定结构方案:需要在ExtractTables技能后新增一个自定义整形技能,按照行号遍历表格,将每行对应列索引的内容映射为
item/quantity等字段,生成结构化的商品数组后,再映射到索引的product_list字段即可。
内容的提问来源于stack exchange,提问作者Mr. code
相关产品推荐
相关产品推荐

