Pair Nova 2 Lite with Claude for cost-optimized document processing

TL;DR · AI 摘要
AWS博客展示如何结合Amazon Nova 2 Lite与Claude Sonnet 4.6,实现扫描文档处理成本降低66%。
核心要点
- 两模型流水线处理336页年鉴,生成3122个姓名-人脸关联,准确率93%。
- Nova 2 Lite单次调用处理多模态信息,成本仅为全OCR方案的1/3。
- Claude通过空间推理匹配姓名与人脸,无需完整文本信息。
结构提纲
按章节快速跳转。
- §引言
介绍扫描年鉴页面数字化的挑战与解决方案需求。
展示基于Amazon Bedrock的双模型流水线架构。
描述Nova 2 Lite单次调用实现多模态信息提取的机制。
说明Claude如何通过空间推理匹配姓名与人脸。
对比单模型方案,证明双模型方案成本降低66%。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 双模型流水线优化文档处理
- 模型分工
- Nova 2 Lite: 多模态提取
- Claude: 空间推理
- 成本效益
- 节省66%成本
- token消耗降低75%
- 实施要点
- 分阶段处理
- 推理配置优化
金句 / Highlights
值得收藏与分享的关键句。
双模型方案每页成本仅为单模型方案的1/3,且准确率保持93%。
Nova 2 Lite通过限制输出范围,将每页token成本从4500降至1000。
Claude的推理配置独立于Nova,通过thinking字段控制推理深度。
将 Nova 2 Lite 与 Claude 配合使用实现成本优化的文档处理 | 人工智能
将 Nova 2 Lite 与 Claude 配合使用实现成本优化的文档处理
一张扫描的年鉴页面包含 176 个印刷姓名、4 张肖像照片,但没有任何机器可读的结构将它们关联起来。要数字化这张页面,您需要可靠的带边界框的图像检测和精确的姓名提取。您还需要一种方法,根据页面布局确定哪个姓名对应哪张人脸。
在本文中,我们将展示如何通过将 Amazon Nova 2 Lite 与 Anthropic 的 Claude Sonnet 4.6 配合使用,为大规模扫描文档的数字化提供高效解决方案。我们在 Amazon Bedrock 上构建了一个双模型流水线,用于数字化扫描的年鉴页面。Amazon Nova 2 Lite 在单次调用中即可完成原生多模态提取:检测照片、提取带坐标的可见姓名,并返回页面级元数据。随后 Claude Sonnet 4.6 通过空间推理,根据页面布局将姓名与人脸进行匹配。
我们针对 336 页扫描的年鉴页面运行了该流水线,生成了 3,122 个姓名与人脸的关联,其中 93% 的关联置信度达到 0.95 或更高。与将整个任务发送给单一视觉语言模型的单模型方案相比,这种双模型方法每页成本降低了约三分之二。详见成本考量部分的详细分析。
解决方案概览
该流水线包含两个阶段。每个阶段使用不同的模型,根据其执行的具体任务进行选择。
图 1. 双模型流水线架构。扫描页面图像通过两个连续阶段。在第一阶段,Amazon Nova 2 Lite 在单次 API 调用中完成原生多模态提取。它通过边界框检测并分类照片,读取页面上的可见姓名并返回其大致位置,同时输出页面级元数据。在第二阶段,Claude Sonnet 4.6 通过空间推理,结合 Nova 的输出将姓名与人脸进行匹配。
Amazon Nova 2 Lite 首先运行。由于其原生支持文本和图像的交织内容,单次 Converse 调用会返回三项内容:
- 带边界框和分类的检测照片。
- 页面上可见的姓名及其大致位置。
- 页面级元数据,如标题和分类。
我们通过在 Converse API 调用中包含推理配置,将此任务的推理级别设置为 LOW。请参阅下文步骤 1 的代码中的推理块。对所有 336 页的测试显示,对于这种结构化提取,LOW、MEDIUM 和 HIGH 推理级别在准确性上没有显著差异,而 LOW 是最经济的选择。Nova 通过 reasoning_config 字段暴露此设置。Claude 在步骤 2 中使用单独的 thinking 字段,因此这两个模型在不同名称下控制推理。
仅请求 Nova 2 Lite 提取姓名而非页面上的每个 OCR 令牌,是使第一阶段保持低成本的关键。下游的空间推理步骤不需要班级名单或活动描述的完整文本。它只需要出现在照片附近的姓名。将 Nova 输出限制为姓名可将输出令牌成本控制在每页约 1,000 个令牌,而非完整 OCR 传递产生的约 4,500 个令牌。
Claude Sonnet 4.6 仅在空间推理步骤的第 2 阶段参与。给定 Nova 的姓名-位置信息和照片边界框,Claude 会确定哪些姓名对应哪些人脸。此步骤需要处理页面布局的可变性,因为年鉴的页面布局在每页之间可能不同。标题可能出现在照片上方或下方,部分页面会混合肖像网格与团体照。Claude 的自适应推理能力可处理这种可变性,无需针对每种布局类型进行额外的提示工程。
在此解决方案中,Nova 2 Lite 通过单次调用原生处理高吞吐量的提取工作。Claude 在每页的空间推理步骤中仅被调用一次。
Nova 2 Lite 固定每张图片定价:可扩展的可预测成本
亚马逊 Nova 2 Lite 对图片输入计费方式的最新调整,使得每页成本在大规模处理时变得可预测,这对处理数十万页的场景尤为重要。
固定每张图片定价:亚马逊 Nova 2 Lite 按固定每张图片费率对图片和文档页面输入进行计费,与分辨率或文件大小无关。
这一变更对文档处理流水线具有重要意义。此前,图片令牌成本会根据分辨率变化,导致在未对代表性样本进行概念验证测试前难以预测每页成本。通过固定计费方式,Nova 2 Lite 处理的每张图片均按相同每张图片费率计费,与分辨率无关。
对于包含提示和输出的完整页面提取,每页成本分解如下:
组件 | 每页令牌数 | 费率 | 每页成本 --- | --- | --- | --- 图片令牌(固定) | 230 | $0.30/M 输入 | $0.000069 提示令牌(预估) | 500 | $0.000150 | 输出令牌(预估) | 1,000 | $2.50/M 输出 | $0.0025 总计 | ~$0.0027
根据已发布的 Nova 2 Lite 输入令牌费率,图片输入仅占总每页成本的一小部分。当前费率请参见亚马逊 Bedrock 定价页面。
对于年鉴级工作负载(每年数十万页),这种固定定价使成本预测变得简单直接,因为图片输入成本与页面数量呈线性关系,且独立于页面分辨率。无需进行分辨率归一化处理。
空间推理的自适应推理
亚马逊 Bedrock 上的 Claude 支持自适应推理功能,该功能允许模型根据输入复杂度决定应用多少内部推理。您通过在 Converse API 的思考配置中将类型设置为 adaptive 来启用它:
response = bedrock_runtime.converse(
modelId='us.anthropic.claude-sonnet-4-6',
messages=[{
'role': 'user',
'content': [
{'image': {'format': 'jpeg', 'source': {'bytes': image_bytes}}},
{'text': spatial_reasoning_prompt}
]
}],
additionalModelRequestFields={
'thinking': {
'type': 'adaptive'
}
}
)在我们进行的 336 页测试中,Claude 在每一页都使用了扩展推理功能,推理轨迹长度从 544 到 1,658 个字符不等。即使较简单的页面也能从空间分析中受益,因为年鉴版面很少是完全均匀的。推理轨迹显示 Claude 在处理列对齐、姓名位置与人脸位置之间的垂直偏移量,并在出现团体照片时检查标题的接近性。
对于这种结构化空间任务,自适应思考能够在无需人工调整的情况下为每一页提供恰到好处的推理量。您无需设置固定令牌预算或编写特定版面的提示词。模型会自行读取输入并做出判断。
关于自适应思考的成本说明:启用自适应思考时,请注意以下三个成本因素:
- 推理令牌按标准输出费率(Claude Sonnet 4.6 跨区域推理为 15.00 美元/百万个输出令牌)作为输出令牌计费。
- 推理轨迹会以独立的 thinking content 块形式返回在 API 响应中,但不会展示给终端用户。
- 通过响应元数据中的 inputTokens 和 outputTokens 监控每页实际成本,因为复杂页面的推理操作可能会显著增加输出令牌数量。
实现步骤说明
完整的源代码、示例图像和 Jupyter 笔记本可在 GitHub 的 AWS Samples 仓库中找到。
先决条件
在运行流水线之前,请确保已具备以下条件:
- 一个拥有 AWS 账户,且在 Amazon Nova 2 Lite 和 Claude Sonnet 4.6 可用的 AWS 区域中具有 Amazon Bedrock 访问权限。
- 在 Amazon Bedrock 控制台中已启用对 us.amazon.nova-2-lite-v1:0 和 us.anthropic.claude-sonnet-4-6 两个模型的访问权限。
- 一个具有调用 bedrock:InvokeModel 和 bedrock:Converse 接口权限的 AWS Identity and Access Management (IAM) 主体,针对上述两个模型。
- 安装了 boto3 SDK 的 Python 3.10 或更高版本。示例笔记本还使用 rapidfuzz 进行模糊名称匹配,使用 Pillow 进行可视化叠加。
- 扫描页面图像(JPEG 或 PNG 格式)。通过 Converse API 进行图像输入时,图像字节会以内联方式传递在请求中。
步骤 1:使用 Amazon Nova 2 Lite 检测照片并提取名称
将扫描页面发送给 Amazon Nova 2 Lite,使用提示词请求检测照片(包含边界框和分类)和可见名称(包含页面上的近似位置)。Nova 原生的多模态理解能力可在一次 Converse 调用中同时返回这两项结果。
Nova 为照片和名称的边界框都返回 0–1000 的坐标比例。直接将两者传递给步骤 2。当提示词中提供相同坐标空间时,Claude 无需转换即可直接读取。
def extract_photos_and_names(image_bytes):
"""使用 Amazon Nova 2 Lite 检测照片并提取可见名称。"""
# 为所有 Bedrock 调用一致使用 Converse API
response = bedrock_runtime.converse( modelId='us.amazon.nova-2-lite-v1:0',
注意:跨区域推理配置文件 (us.amazon.nova-2-lite-v1:0)
messages=[{ 'role': 'user', 'content': [ { 'image': { 'format': 'jpeg', 'source': {'bytes': image_bytes} } }, {'text': PHOTO_AND_NAME_EXTRACTION_PROMPT} ] }], inferenceConfig={ 'maxTokens': 8000, 'temperature': 0 }, additionalModelRequestFields={ 'reasoning_config': { 'type': 'enabled', 'level': 'LOW' } } )
raw = response['output']['message']['content'][0]['text'] return json.loads(raw)
该提示要求 Nova 返回一个包含页面上所有可见照片和姓名的 JSON 对象。
{ "page_title": "Junior Class Officers", "photos": [ { "bbox": [245, 180, 410, 520], "type": "portrait", "category": "class_officers", "summary": "个人肖像照" } ], "names": [ { "text": "Cecilia Phillips", "bbox": [260, 540, 395, 570] }, { "text": "John Kolander", "bbox": [420, 540, 555, 570] } ] }
每张照片都会获得一个边界框、类型(肖像、团体照或抓拍)、分类标签和简要描述。每个姓名会获得其可见文本和页面上的边界框。page_title 和 category 字段还用于另一个场景:元数据提取。通过一次 API 调用,Nova 2 Lite 可同时提供照片检测、匹配流水线所需的人名与位置信息,以及结构化元数据。您可以利用这些元数据进行搜索索引、按事件类型筛选,或在数百页文档中构建目录。
### 第 2 步:使用 Claude 将姓名与人脸匹配
现在将 Nova 提取的人名与位置信息和照片边界框传递给 Claude 进行空间推理。两者使用相同的 0–1000 坐标空间,因此无需归一化:
spatial_prompt = f"""给定这些带页面坐标的姓名: {json.dumps(ocr_tokens)}
以及这些检测到的照片及其边界框: {json.dumps(photo_detections)}
根据空间位置将每个人姓名与其照片进行匹配。 返回 JSON:{{"associations": [{{"name": str, "face_idx": int, "confidence": float, "reasoning": str}}]}}"""
response = bedrock_runtime.converse( modelId='us.anthropic.claude-sonnet-4-6', messages=[{ 'role': 'user', 'content': [ {'image': {'format': 'jpeg', 'source': {'bytes': image_bytes}}}, {'text': spatial_prompt} ] }], additionalModelRequestFields={ 'thinking': {'type': 'adaptive'} } )
在我们的测试集第 50 页,Nova 返回了 176 个姓名条目和 4 个照片边界框。其中大部分姓名是页面其他位置的名单和正文文本。只有与 4 张照片相邻的姓名可以匹配,因此 Claude 产生了 5 个关联:
{ "associations": [ {"name": "Cecilia Phillips", "face_idx": 0, "confidence": 0.95, "reasoning": "第0行,3个位置中的第1个 - 与照片上方的标题匹配"}, {"name": "John Kolander", "face_idx": 1, "confidence": 0.95, "reasoning": "第0行,3个位置中的第2个 - 与照片上方的标题匹配"}, {"name": "Julie Ostrander", "face_idx": 2, "confidence": 0.95, "reasoning": "第0行,3个位置中的第3个 - 与照片上方的标题匹配"} ] }
每个关联都包含一个解释空间逻辑的推理字符串。这对于调试关联失败的页面非常有用。
### 第3步:验证和组装结果
最后一步应用置信度阈值和模糊名称匹配(使用rapidfuzz)来过滤低质量关联。该流程为每页生成两个输出:一个包含关联数据的JSON文件,以及一个可视化图像,显示匹配名称和人脸之间的连线。
## 结果
我们通过该流程处理了336页扫描的年鉴页面。流程总共生成了3,122个名称到人脸的关联,其中93.3%的关联置信度达到或超过0.95。仅有0.3%的关联低于0.90的置信度阈值。
图2. 336页扫描年鉴生成的3,122个名称到人脸关联的置信度分布。分布高度偏向高置信度:2,912个关联(93.3%)达到或超过0.95,202个(6.5%)介于0.90到0.94之间,仅有8个(0.3%)低于0.90。Claude Sonnet 4.6在空间推理步骤中生成置信度评分。这些评分反映了模型对特定名称标记映射到特定人脸边界框的确定性。
- 人像网格页面(336页中的282页)平均每页有10.9个关联。这些页面具有规则布局,名称直接出现在对应照片的上方或下方,流程可靠地处理了这些页面。
- 仅文本页面(班级名单、活动描述、索引页面)没有可检测的照片,因此被正确跳过。
- 同一页包含人像和团体照的混合布局页面产生了部分关联。流程将名称匹配到人像照片,但当标题存在歧义时团体照未被匹配。
流程为每页输出一个JSON报告和一个可视化图像。可视化图像从每个名称标记绘制彩色连线到匹配的人脸,这使得人工审核时容易发现错误。
### 成本考量
双模型架构意味着您为综合提取调用(照片、带位置的名称、元数据)支付Nova 2 Lite费率,为每页一次推理调用支付Claude费率。在Nova 2 Lite的固定每张图像定价下,第一阶段成本可预测且与输入分辨率无关。Claude推理步骤主导每页成本。
每页成本分解
阶段 | 服务 | 成本驱动因素 | 每页近似成本
--- | --- | --- | ---
照片+名称提取 | Amazon Nova 2 Lite | 固定230图像标记 + ~500提示 + ~1,000输出 |
空间推理 | Claude Sonnet 4.6 | 图像 + Nova JSON + 自适应推理标记 | ~$0.030
流程总成本 | | | ~$0.033
下表将该流程与单模型方法进行比较,其中每页发送到Claude进行一次调用完成三项任务(OCR、照片检测和空间匹配)。
维度 | 双模型流程 | 单模型Claude
--- | --- | ---
输入标记 | 图像(Nova:230固定) + Nova JSON → Claude |
图像 @ ~1,500 个 token + 提示 @ ~1,300 = ~2,800 个 token @ 3 美元/百万 = ~0.008 美元
输出 token
Nova: ~1,000 个名称-JSON;Claude 推理: ~1,700 @ 15 美元/百万 = ~0.026 美元
~6,000 个 token @ 15 美元/百万 = ~0.09 美元
每页成本
约 0.10 美元
每 10 万页成本
约 3,300 美元
约 9,800 美元
OCR 质量
Nova 原生多模态(无需单独 OCR 服务)
通用视觉-语言模型
可调性
可独立替换或调整每个阶段
整体提示;全有或全无的更改
在 10 万页时,这会产生约 6,500 美元的差异。除了成本之外,拆分的流水线还让您能够独立地替换或调整每个阶段,而无需触碰其他部分。例如,当更好的 Claude 级别发布时,您可以仅升级推理模型。
每页的确切成本取决于三个因素:
- 您的 Amazon Bedrock 定价层级。
- Nova 生成的名称数量(与页面密度成比例)。
- Claude 使用的推理 token 数量(与布局复杂度成比例)。
粗略估计时,添加一个 Nova 2 Lite Converse 调用,输入单个图像和名称及照片提示。然后添加一个 Claude Converse 调用,输入包括图像和 Nova JSON 输出。查看 Amazon Bedrock 定价获取当前费率。
我们 336 页测试运行的实际成本
基于我们的流水线运行(336 页,每页平均 10.9 个关联):
预估成本
Nova 2 Lite 照片 + 名称提取(336 页 × 0.0027 美元)
约 0.91 美元
Claude 空间推理(336 页 × 0.030 美元)
约 10.08 美元
336 页约 10.99 美元(约 0.033 美元/页)
其他成本优化杠杆
对于高吞吐量或非实时工作负载:
- Amazon Bedrock 批量推理:对可过夜处理的工作负载,Nova 2 Lite 和 Claude 调用可享受 50% 的折扣。将请求的 JSONL 文件提交到 Amazon Simple Storage Service (Amazon S3),让 Amazon Bedrock 异步处理,并在第二天早上读取结果。在批量定价下,Nova 2 Lite 组合阶段的成本从每页约 0.0027 美元降至约 0.0014 美元。
- 提示缓存:如果您在数千页中使用相同的照片检测提示(如本流水线),提示缓存可将缓存提示 token 成本降低高达 90%。
- 推理预算控制:对于 Claude,您可以设置 thinking 的 budgetTokens 限制,以在简单页面上限制推理 token 成本,同时在需要时仍允许深度推理。
### 延迟
每页需经过两次顺序 API 调用,因此每页总延迟是两者的总和。在我们的测试运行中,由于图像输入和自适应推理,Claude 空间推理步骤耗时最长,每页约 20-30 秒。Nova 2 Lite 在几秒内完成。对于批量处理,您可以在页面间并行处理,因为每页是独立的。
典型延迟
Nova 2 Lite(照片 + 名称提取)
2–5 秒
Claude 空间推理(自适应推理)
20–30 秒
每页总延迟
约 22–35 秒
## 清理
此流水线使用无服务器的 AWS 服务,无需管理任何持久化基础设施:
- Amazon Bedrock:按调用计费 Nova 2 Lite 和 Claude,无需删除任何预置端点。
- Amazon S3:如果您将年鉴图像上传到 Amazon S3 进行处理,请在完成时删除存储桶或对象。Amazon S3 删除是永久且不可逆的。删除前请确认已备份数据或不再需要这些数据。
- IAM 角色:删除为此流水线特别创建的任何角色(Nova 2 Lite 和 Claude Sonnet 4.6 的 Amazon Bedrock 调用权限)。
## 结论
在本文中,我们展示了如何通过在 Amazon Bedrock 上使用两个模型处理文档,从 336 页年鉴中生成了 3,122 个姓名与人脸的关联,其中 93% 的关联具有高置信度。Amazon Nova 2 Lite 通过一次原生多模态调用完成了照片检测和姓名提取。Claude Sonnet 4.6 则通过自适应推理进行空间推理,将姓名与正确的人脸匹配。
这种模式的应用范围不仅限于年鉴。任何包含照片和相关文本的文档(如历史档案、人员目录、房地产清单、产品目录)都需要相同的能力:检测视觉元素、提取相关文本,并通过空间推理将两者关联起来。本文介绍的解决方案结合了照片检测、文本提取和空间推理,实现了成本效率与高准确性的平衡。
完整的笔记本和示例输出可在 GitHub 上的 AWS Samples 仓库中找到。
如需了解本文中使用服务的更多信息,请参阅以下资源:
- [Amazon Nova on Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
- [Adaptive thinking with Claude on Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
## 作者简介
"'"