如何优化Azure Form Recognition的请求响应时间?
Azure Form Recognition 响应时间优化方案
1. 代码逻辑优化
- 现有轮询逻辑未设置等待间隔,会高频发送GET请求,不仅浪费请求配额,还可能触发服务限流导致额外延迟,可在轮询间隙添加500ms左右的等待,减少无效请求开销:
while(((result.data) || {}).status == "running"){ await new Promise(resolve => setTimeout(resolve, 500)); // 新增等待逻辑 result = await getResult(response.headers["operation-location"]) }
- 优先使用官方JS SDK,SDK内置了优化后的轮询、错误重试机制,比自行实现的异步处理流程效率更高、稳定性更好。
- 确保你的业务服务、Form Recognizer资源、待处理文件的存储服务部署在同一个Azure区域,跨区域访问会增加数百毫秒的网络传输延迟。
2. 服务配置优化
- 将资源SKU更换为预配层级:默认消费层级存在冷启动机制,空闲后首次请求耗时会明显升高,预配层级预留了专用计算资源,延迟稳定,适合对响应速度要求高的生产场景。
- 训练自定义模型时可选择轻量化训练模式:如果对识别准确率没有极致要求,轻量化模型的推理耗时可比全精度模型低30%左右。
- 若仅需提取部分指定字段,训练时仅标注所需字段即可,无需覆盖全文档所有内容,可明显提升模型推理速度。
3. 输入文件优化
- 控制输入文件规格:JPEG分辨率控制在1000-2000像素区间即可,过高分辨率不会提升识别准确率,反而会增加文件下载和处理耗时;PDF文件仅需处理部分页面时,调用API时指定
pages参数,无需解析全文档。 - 不要传入公网URL的文件,优先将待处理文件存储在和Form Recognizer同区域的Azure Blob存储中,服务端拉取文件的耗时可降到100ms以内。
按照以上方案调整后,单文件处理耗时普遍可降到2秒以内,小尺寸JPEG文件的处理耗时甚至可低至1秒左右。
内容的提问来源于stack exchange,提问作者Denys Wylliam
相关产品推荐
相关产品推荐

