You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置Amazon Textract AnalyzeDocumentRequest语法?解决参数无效错误

解决Amazon Textract AnalyzeDocument参数无效错误

核心问题:流位置未重置

你代码中最关键的问题是,将文件复制到MemoryStream后,流的Position指针停留在末尾,直接把这个流传给Document.Bytes时,Textract无法读取到任何文件内容,这会触发"无效参数"的错误。

修复步骤

  1. 重置流位置
    在将ms赋值给Document.Bytes前,调用ms.Position = 0;,让指针回到流的起始位置:

    await file.CopyToAsync(ms);
    ms.Position = 0; // 新增这一行
    

    或者,直接用你已经生成的fileBytes创建新的MemoryStream,彻底避免指针位置问题:

    Document = new Document
    {
        Bytes = new MemoryStream(fileBytes),
    }
    
  2. 检查Query的合法性

    • 确保每个Query的Alias是唯一的(虽然Textract允许重复,但唯一标识有助于后续解析结果)
    • Query.Text长度不能超过256个字符,避免使用模糊表述,尽量明确指向医学报告的具体字段(比如用"白细胞计数"而非"血液指标")
    • 不要在查询文本中加入特殊符号,避免干扰Textract的解析逻辑
  3. 验证FeatureTypes设置
    确认FeatureTypes只包含QUERIES,不需要额外添加其他类型(比如FORMS或TABLES),除非你确实需要这些功能:

    FeatureTypes = new List<FeatureType> { FeatureType.QUERIES },
    

    注:你使用的C# 12集合表达式语法没问题,若使用旧版本SDK,需改用传统List初始化方式

完整修复后的代码片段

public async Task<List<Block>> ExtractBlocksFromPdfAsync(IFormFile file)
{
    using var ms = new MemoryStream();
    await file.CopyToAsync(ms);
    ms.Position = 0; // 重置流位置

    var textractQueries = ExamTargets.List
        .Select(t => new Query
        {
            Text = t.Nome,
            Alias = $"{t.Nome}_{t.Id}", // 确保Alias唯一
        }).ToList();

    var request = new AnalyzeDocumentRequest
    {
        Document = new Document
        {
            Bytes = ms,
        },
        FeatureTypes = [FeatureType.QUERIES],
        QueriesConfig = new QueriesConfig
        {
            Queries = textractQueries
        },
    };

    var response = await _textractClient.AnalyzeDocumentAsync(request);

    if (response.HttpStatusCode != System.Net.HttpStatusCode.OK)
    {
        throw new Exception("Failed to analyze document.");
    }
    return response.Blocks;
}

额外排查点

  • 确认AWS凭证拥有textract:AnalyzeDocument权限,部分场景下权限不足会被包装成"参数无效"错误
  • 测试其他有效PNG文件,排除当前文件损坏或格式异常的问题

内容的提问来源于stack exchange,提问作者Daniel Ishida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:27:11