Form Recognizer SDK v3训练自定义模型找不到OCR训练文件如何解决
错误原因
该报错核心是Form Recognizer服务无法识别到指定Blob容器内可用于训练的有效文件,常见触发原因如下:
- v3版本SDK的
StartBuildModelAsync方法需要指定训练模式作为第二个参数,你当前的代码仅传入存储SAS,参数缺失导致服务无法正常启动训练流程 - 存储结构不符合要求:如果使用标注数据训练,容器内需要同步存在每个PDF对应的
.ocr.jsonOCR结果文件和.labels.json标注结果文件,仅上传原始PDF会导致服务无法识别训练资源 - 路径不匹配:如果所有训练PDF存放在容器的子目录下,未指定
prefix参数的情况下服务会默认遍历容器根目录,无法找到子目录内的文件 - SAS配置存在隐藏问题:虽然已配置权限,但可能存在SAS有效期早于当前时间、绑定IP不在允许范围、仅授予单个Blob权限而非容器权限的问题
解决方案
按照优先级逐一排查调整即可解决:
- 补全训练模式参数,将调用方法的代码修改为:
// 模板模式适合固定格式的表单训练,神经模式适合非固定格式的表单训练,可按需选择 BuildModelOperation operation = await client.StartBuildModelAsync(trainingFileUri, BuildModelMode.Template);
- 如果是无标注训练,无需额外文件,补全参数后即可直接用原始PDF训练;如果是有标注训练,需要使用Form Recognizer标注工具完成标注并将结果导出到当前容器,自动生成配套的OCR和标注文件
- 如果训练文件存放在子目录中,调用方法时新增
prefix参数指定子目录路径:
BuildModelOperation operation = await client.StartBuildModelAsync(trainingFileUri, BuildModelMode.Template, prefix: "训练文件所在子目录名称");
- 重新生成容器级别的SAS,确保有效期在当前时间之后、关闭IP限制、授予完整的读写列表权限,替换原有SAS Token后重新测试
内容的提问来源于stack exchange,提问作者Aidan
相关产品推荐
相关产品推荐

