C#自定义Form Recognizer模型中获取指定训练表格的方法
问题
在Form Recognizer Studio中创建了自定义模型,可分析Blob容器中的表单,字段结果能按预期输出至控制台,但无法正确输出表格结果。该表单包含6个表格,仅针对关注的WageTable表格训练了模型。当前使用DocumentTable table = (DocumentTable)result.Tables[1];按索引(0-5)获取识别到的6个表格之一,希望修改此代码以仅输出训练的目标表格。
解决方案
不需要通过result.Tables按索引定位目标表格,因为你在自定义模型中标记的WageTable字段已经直接关联了对应的表格数据。直接从当前字段的Value属性中提取表格即可,这样既不需要依赖表格的位置索引,也能精准获取训练的目标表格。
修改加粗部分的代码为:
DocumentTable table = field.Value.AsTable();
或者在确定类型的情况下使用强转:
DocumentTable table = (DocumentTable)field.Value;
修改后的完整代码片段
foreach (KeyValuePair<string, DocumentField> fieldKvp in document.Fields) { string fieldName = fieldKvp.Key; DocumentField field = fieldKvp.Value; Console.WriteLine($"Field '{fieldName}': "); Console.WriteLine($" Content: '{field.Content}'"); Console.WriteLine($" Confidence: '{field.Confidence}'"); Console.WriteLine($" FieldType: '{field.FieldType}'"); // 修正原代码重复输出Confidence的问题 if (fieldName == "WageTable") { // 从当前字段的Value中直接获取目标表格 DocumentTable table = field.Value.AsTable(); Console.WriteLine($" Table {fieldName} has {table.RowCount} rows and {table.ColumnCount} columns."); foreach (DocumentTableCell cell in table.Cells) { Console.WriteLine($" Cell ({cell.RowIndex}, {cell.ColumnIndex}) has kind '{cell.Kind}' and content: '{cell.Content}'."); } } }
说明
自定义模型训练完成后,你标记的WageTable字段会将识别到的对应表格数据存储在field.Value中,类型为DocumentTable。通过这种方式获取表格,完全不受其他表格的位置影响,能精准拿到你训练的目标表格数据。
内容的提问来源于stack exchange,提问作者EcentricTeaFarmer
相关产品推荐
相关产品推荐

