Build financial document processing with Pulse AI and Amazon Bedrock

TL;DR · AI 摘要
本文展示了如何结合Pulse AI和Amazon Bedrock构建金融文档处理系统,通过先进的文档理解和模型微调,实现高精度的财务数据分析和洞察。
核心要点
- Pulse AI能够从复杂的金融文档中提取结构化、语义感知的数据,处理复杂的表格、多列布局和分层数据。
- Amazon Bedrock通过微调Amazon Nova模型,创建针对组织财务惯例的特定领域智能。
- 定制模型可以将手动审查时间从几天缩短到几小时,显著提高效率。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 金融文档处理
金句 / Highlights
值得收藏与分享的关键句。
传统OCR工具在处理复杂金融文档时存在不足,导致大量手动修正和分析错误。
Pulse AI结合视觉语言模型和经典ML组件,专门用于文档理解,提取结构化数据并生成高质量的监督微调数据集。
一个批量约1000份复杂金融文档的处理时间从多天缩短至3小时内,显著提高了效率。
使用 Pulse AI 和 Amazon Bedrock 构建金融文档处理 | Amazon Web Services
URL 源:https://aws.amazon.com/blogs/machine-learning/build-financial-document-processing-with-pulse-ai-and-amazon-bedrock/
发布时间:2026-05-13T10:00:06-08:00
Markdown 内容: 金融机构每天处理数千份复杂的文档。财务数据中的光学字符识别(OCR)错误可能会通过相互关联的计算传播,影响分析准确性。虽然标准法律文件中的单个 OCR 错误可能只需要快速手动更正,但在财务数据中出现同样的错误可能会通过相互关联的计算传播,导致系统性分析错误,并对组织造成潜在的成本损失。
传统的 OCR 工具在处理机构日常处理的复杂财务文档时存在严重不足——资产负债表、损益表、SEC 文件、研究报告和审计材料。这些文档具有复杂的表格结构,包括合并单元格和层次化数据,多栏布局带有相互引用,以及需要语义理解的上下文相关信息。传统 OCR 方法将这些文档视为图像,忽略了使其有意义的结构性关系和上下文细微差别。结果是一系列的手动修正、数据录入延迟和系统性分析错误。
本文档展示了如何构建一个文档提取和模型微调管道,以解决这些关键挑战。通过结合 Pulse AI 的高级文档理解能力与 Amazon Bedrock 的强大 AI 服务,组织可以实现企业级精度并大规模提取相关财务洞察。Amazon Bedrock 提供了无需机器学习 (ML) 运维开销的完全托管模型定制、按需部署而无需容量规划,以及 Nova 模型家族提供了强大的性价比特性,因此团队可以专注于创新而非基础设施。
与传统的单体 OCR 管道不同,Pulse 将视觉语言模型与经典机器学习组件相结合,专门用于文档理解,创建了一个智能解决方案,能够提取具有语义意识的结构化数据,生成改进的监督微调数据集以用于财务领域模型,并启用基于您特定财务数据训练的自定义大型语言模型 (LLM) 的部署。Pulse 部署在全球企业中,包括三星、Cloudera、Howard Hughes 和财富 500 强金融机构及领先的私募股权公司,处理大量财务和运营文档。
在一个部署案例中,大约 1,000 份复杂财务文档的批处理,之前需要多天周转时间,现在可以在不到三个小时内完成处理,生成结构化且可审计的输出,准备用于下游分析和人工智能应用。

图 1:文档处理工作流:传统 vs. Pulse
总之,Pulse AI 和 Amazon Bedrock 一起提供了:
- Pulse AI 从复杂的财务文档中提取结构化的语义感知数据,处理复杂的表格、多栏布局和层次化数据。
- Amazon Bedrock 在高质量数据上微调 Amazon Nova 模型,为您的组织财务惯例创建特定领域的智能。
- 自定义模型然后以组织特定的理解处理新文档,将手动审查的时间从几天减少到几小时。
以下工作流演示了构建智能金融应用程序的方法。从原始财务文档开始,该管道协调一系列复杂的步骤——从文档处理和微调,到部署——创建一个针对财务数据分析和见解量身定制的自定义 AI 解决方案。

图 2:表示一个文档处理参考架构工作流,展示如何通过集成 AWS 服务,使用 Pulse AI 创建特定领域的模型,实现智能文档处理(IDP)
系统首先(步骤 1)将文档导入您 VPC 中的 Pulse 容器或 Pulse 软件即服务 (SaaS) 提供的服务。Pulse 模型处理财务文档(步骤 2)。提取的数据输出转换为 Amazon Bedrock Nova Micro 监督微调格式,并存储在 Amazon Simple Storage Service (Amazon S3)(步骤 3)。
然后,工作流使用 Amazon Bedrock 的其他扩展功能:
使用 Amazon Nova Micro(amazon.nova-micro-v1:0)和专为文本提取任务设计的高效模型(具有 128K 上下文窗口)运行监督微调作业(步骤 5 和 6)。Nova Micro 提供了有竞争力的价格性能。作业完成后,部署生成的模型以进行按需推理。您还可以使用预置吞吐量来满足需要一致性能的关键任务负载。使用 _Test in Playground_ 来评估和比较响应。生成的自定义模型导入 Amazon Bedrock(步骤 8),并使用预置吞吐量部署(步骤 9),为可扩展的终端用户应用程序提供动力(步骤 10)。此架构结合了特定领域的财务数据集和自定义监督微调模型,使组织能够构建了解财务背景的同时保持性能和成本效率的生产就绪 AI 应用程序。
先决条件
要按照本文的指导进行操作,您需要满足以下先决条件:
- AWS 账户——用于访问包括 Amazon Bedrock 和 S3 数据集存储在内的 AWS 服务。
- 允许 Amazon Bedrock 访问 S3 数据集的 AWS Identity and Access Management (IAM) 策略——授予 Amazon Bedrock 安全地读取和处理您存储在 S3 存储桶中的数据所需的权限。
- Pulse Standard 账户(在 runpulse.com 注册)——用于集成 Pulse 系统并访问其功能以完成此工作流。
- AWS 区域要求:
us-east-1。 - Python 3.12 或更高版本。
- 实例类型:t3.medium。
- Amazon Elastic Compute Cloud (Amazon EC2) 实例按小时计费。请记得在完成本教程后终止实例,以免产生持续费用。
- Amazon Linux 2023(最新版)。
- 公共财务报表:https://www.impact-bank.com/user/file/dummy_statement.pdf。
- S3 训练数据存储桶:
s3://<your s3 bucket>/training-data/。
注意:本教程创建的 AWS 资源会产生费用,包括:EC2 实例(按小时计费)、S3 存储(按每 GB-月计费)、Amazon Bedrock 微调(按训练小时计费)、预配置吞吐量部署(按小时计费)以及 AWS Secrets Manager(按每个密钥每月计费)。
**逐步实施**
按照以下步骤使用 Pulse AI 和 Amazon Bedrock 设置和配置您的财务文件处理管道。
- 导航到 Pulse 控制台 并创建一个账户。
- 使用 AWS 控制台启动一个 EC2 实例。
- 导航到 EC2 控制台。
- 选择 启动实例。
- 在 AMI 选择屏幕中,搜索 Amazon Linux 2023 AMI。
- 选择 Amazon Linux 2023 AMI。
- 在实例类型屏幕中,选择 t3.medium。
- 创建一个新的密钥对以通过 SSH 访问 Linux 实例。
- 在安全组配置中,添加一条规则以允许从您的 IP 地址访问 SSH(端口 22)。
- 选择 启动。
- 在成功消息中保存出现的实例 ID。
- 从 RunPulse 创建您的 API 密钥。
- 查找您的实例的公共 DNS,
- 导航到 EC2 控制台。
- 选择您的实例。
- 从详细信息选项卡中复制公共 IPv4 DNS 值。
- 运行以下 SSH 命令连接到您的 EC2 实例。将
YOUR_KEY_FILE.pem替换为您的实际密钥对文件名,并将YOUR_INSTANCE_DNS替换为步骤 4a 中的公共 IPv4 DNS 值:ssh -i YOUR_KEY_FILE.pem ec2-user@YOUR_INSTANCE_DNS示例:ssh -i my-keypair.pem [email protected]Bash - 在您的 EC2 实例上配置您的 AWS 凭证,运行
aws configure。根据提示输入您的访问密钥 ID、秘密访问密钥、区域(us-east-1)和输出格式(json)。 - 使用提供的命令将您的 Pulse API 密钥存储在 AWS Secrets Manager 中:
aws secretsmanager create-secret --name pulse-api-key --secret-string "your-api-key"Bash - 记下 ARN,因为它需要用于权限策略
注意:AWS 命令行界面(AWS CLI)版本 2 默认已安装在 Amazon Linux 2023 AMI 上。
- 在您的 EC2 实例下安装 runpulse SDK。
- 安装 pip:
sudo yum install pipBash - 安装 Pulse Python SDK:
pip install pulse-python-sdkBash
- 在您的 EC2 实例上,在当前工作目录中创建一个名为 bedrock-trust-policy.json 的文件,配置如下所示。您可以使用 nano 或 vi 等文本编辑器:nano
bedrock-trust-policy.json。
- 创建
bedrock-trust-policy.json````
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-aws-account-ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock:us-east-1:your-aws-account-ID:model-customization-job/*" } } } ] }
* 创建 `bedrock-permissions.json`````
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3AccessForFineTuning",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
},
{
"Sid": "SecretsManagerAccess",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"secretsmanager:CreateSecret",
"secretsmanager:UpdateSecret",
"secretsmanager:DescribeSecret"
],
"Resource": [
"arn:aws:secretsmanager:us-east-1:your-aws-account-ID:secret:your-secret-name-*"
]
}
]
}- 然后创建角色:
aws iam create-role --role-name AmazonBedrock-FineTuning-S3-Role --assume-role-policy-document file://bedrock-trust-policy.json --description "Role for Bedrock fine-tuning with S3 and Secrets Manager access"JSON
预期输出:包含角色 ARN、ID 和创建时间戳的 JSON。接下来,
- 创建权限策略:
aws iam put-role-policy --role-name AmazonBedrock-FineTuning-S3-Role --policy-name Bedrock-S3-Access-Policy --policy-document file://bedrock-permissions.jsonBash
- 查看角色和信任策略:
aws iam get-role --role-name AmazonBedrock-FineTuning-S3-Role Bash
- 从 参考财务文件 中提取数据集,请在 EC2 实例上运行以下命令
从 Secrets Manager 中检索 API 密钥。安全最佳实践:不要硬编码凭据。请从 AWS Secrets Manager 中检索。
curl -X POST https://api.runpulse.com/extract -H "x-api-key: $(aws secretsmanager get-secret-value --secret-id pulse-api-key --query SecretString --output text)" -H "Content-Type: application/json" -d '{ "file_url": "https://www.impact-bank.com/user/file/dummy_statement.pdf", "figureProcessing": {"description": true}, "extensions": {"altOutputs": {"returnHtml": true}} }' > pulse_output.jsonBash
Pulse AI 示例提取的 JSON 片段:
{
"bounding_boxes": {
"Header": [
{
"average_word_confidence": 0.9940000000000001,
"bounding_box": [0.7418, 0.04248181818181818, 0.8901529411764706, 0.042281818181818184, 0.8901764705882352, 0.05528181818181818, 0.741835294117647, 0.05548181818181818],
"content": "0a-Account # 12345678",
"id": "txt-8",
"original_content": "Account # 12345678",
"page_number": 2
}
],
"Page Number": [
{
"average_word_confidence": 0.99425,
"bounding_box": [0.8071411764705881, 0.24754545454545454, 0.889635294117647, 0.2474909090909091, 0.8896588235294117, 0.2616454545454545, 0.8071529411764706, 0.2617],
"content": "0a-Page 1 of 2",
"id": "txt-3",
"original_content": "Page 1 of 2",
"page_number": 1
},
{
"average_word_confidence": 0.9925,
"bounding_box": [0.8076235294117646, 0.057600000000000005, 0.8898117647058823, 0.05738181818181818, 0.8898705882352942, 0.0704, 0.8076823529411765, 0.07061818181818182],
"content": "0a-Page 2 of 2",
"id": "txt-9",
"original_content": "Page 2 of 2",
"page_number": 2
}
],
"Tables": [
{
"cell_data": [
{
"confidence": 0.9772562500000003,
"location": {
"coordinates": [0.0906, 0.44435454545454545, 0.8865647058823529, 0.44499090909090905, 0.8865647058823529, 0.4685, 0.0906, 0.4678636363636363],
"page": 1
},
"position": {
"column": 0,
"row": 0
},
"properties": {
"spans_columns": 4,
"type": "header"
},
"text": "0t-"
}
]
}
]
}
}Markup
- 通过检查文件是否存在且包含有效 JSON 来验证提取是否成功
jq empty pulse_output.json && echo "Valid JSON" || echo "Invalid JSON"Bash
- 接下来,将提取的数据转换为 Nova 训练数据集。
- 创建一个名为 convert_to_nova.py 的新文件,并粘贴以下代码。
import json
INPUT_FILE = "pulse_output.json"
OUTPUT_FILE = "nova_dataset.jsonl"
MAX_TOKENS = 30000 # 低于 32,768 的限制
def estimate_tokens(text):
"""大致的标记估算:约 4 个字符对应一个标记"""
return len(text) // 4
def create_truncated_samples(data):
"""在标记限制内创建较小的训练样本"""
samples = []
# 样本 1:仅包含页眉和页码
if "bounding_boxes" in data:
if "Header" in data["bounding_boxes"] and "Page Number" in data["bounding_boxes"]:
header_sample = {
"Header": data["bounding_boxes"]["Header"],
"Page Number": data["bounding_boxes"]["Page Number"]
}
samples.append({
"document": header_sample,
"extracted_data": header_sample
})
# 样本 2-4:单独的表格(截断至 20 个单元格)
if "Tables" in data["bounding_boxes"]:
for i, table in enumerate(data["bounding_boxes"]["Tables"][:3]):
truncated_table = {
"table_info": table.get("table_info", {}),
"cell_data": table.get("cell_data", [])[:20]
}
samples.append({
"document": {"Tables": [truncated_table]},
"extracted_data": {"Tables": [truncated_table]}
})
# 样本 5-7:文本块(每块 3 项)
if "Text" in data["bounding_boxes"]:
text_items = data["bounding_boxes"]["Text"]
chunk_size = 3
for i in range(0, min(9, len(text_items)), chunk_size):
text_chunk = {"Text": text_items[i:i+chunk_size]}
samples.append({
"document": text_chunk,
"extracted_data": text_chunk
})
# 样本 8:仅包含标题
if "Title" in data["bounding_boxes"]:
title_sample = {"Title": data["bounding_boxes"]["Title"]}
samples.append({
"document": title_sample,
"extracted_data": title_sample
})
return samples
def convert_to_nova_format(sample):
"""转换为 Nova 格式,并带有领域特定学习的指令性提示
此函数生成训练样本,用于教授模型:
1. 金融文档结构识别(页眉、表格、交易)
2. 数据类型标准化(日期转换为 ISO 8601,金额转换为数字)
3. 层次关系保持(账户 → 交易 → 细节)
4. 顺序检测(带星号标记的项目)
5. 金融领域的惯例(检查号码、终端 ID、商户数据)
"""
doc_str = json.dumps(sample["document"])
extract_str = json.dumps(sample["extracted_data"])
total_tokens = estimate_tokens(doc_str) + estimate_tokens(extract_str)
if total_tokens > MAX_TOKENS:
print(f"警告:样本过大 ({total_tokens} 个标记),跳过...")
return None
return {
"schemaVersion": "bedrock-conversation-2024",
"messages": [
{
"role": "user",
"content": [{"text": doc_str}]
},
{
"role": "assistant",
"content": [{"text": extract_str}]
}
]
}
# 读取输入文件
with open(INPUT_FILE, "r") as f:
pulse_data = json.load(f)
if isinstance(pulse_data, dict):
pulse_data = [pulse_data]
# 生成截断的样本
all_samples = []
skipped = 0
for record in pulse_data:
truncated_samples = create_truncated_samples(record)
for sample in truncated_samples:
nova_record = convert_to_nova_format(sample)
if nova_record:
all_samples.append(nova_record)
else:
skipped += 1
# 写入 JSONL 文件
with open(OUTPUT_FILE, "w") as f:
for nova_record in all_samples:
f.write(json.dumps(nova_record) + "\n")
print(f"✓ 创建了 {len(all_samples)} 个训练样本")
print(f"✓ 跳过了 {skipped} 个过大样本")
print(f"✓ 输出保存到:{OUTPUT_FILE}")
print(f"所有样本均在 {MAX_TOKENS} 个标记以内(限制:32,768)")
print(f"下一步操作:")
print(f"1. 验证:wc -l {OUTPUT_FILE}")
print(f"2. 上传:aws s3 cp {OUTPUT_FILE} s3://anypulse/training-data/nova_dataset.jsonl")
print(f"3. 创建新的微调作业")
"""训练格式说明:
此微调训练教会了 Nova Micro 以下内容:
该转换脚本创建了训练样本,通过模式学习来教授 Nova Micro 特定领域的金融文档理解。虽然训练样本使用了直接的 JSON 到 JSON 映射(用户消息包含 Pulse 提取的 JSON,助手消息包含相同的结构化 JSON),但模型学习了以下关键能力:
1. 文档结构识别:层次关系(页眉 → 表格 → 文本 → 页码)、边界框空间理解(坐标系统和元素定位)、多页文档处理(页码跟踪和跨页引用)
2. 金融数据模式:表格结构保持(行/列语义、单元格级提取)、置信度分数解释(高置信度字段(0.99+)与较低置信度)、数据类型一致性(账号、日期、货币金额、检查号码)
3. 结构一致性:字段命名约定("content"、"confidence"、"page_number"、"bounding_box")、嵌套对象关系(表格包含带有位置元数据的 cell_data 数组)、元数据保留(原始内容与规范化值并存以供审计追踪)
4. 领域特定惯例:金融文档部分(页眉、页脚、交易表格、摘要部分)、顺序检测(检查号码中标记星号的项目)、商户数据提取(终端 ID、位置信息、交易参考)
学习机制:
模型通过接触 Pulse AI 提供的高质量结构化提取模式而学习。通过观察数百个 Pulse 如何构建金融文档数据的例子(包括置信度分数、边界框、层次关系),Nova Micro 内化了这些模式,并可以将其应用于新的金融文档。这种方法有效的原因在于:
- Pulse AI 提供了结构一致且高质量的训练数据
- JSON 架构自描述(字段名称指示用途)
- 样本中的重复强化了结构模式
- 置信度分数教会了模型哪些提取是可靠的
替代方法:
对于需要更明确任务框架的生产部署,考虑在训练样本中添加指令性提示:
instructional_prompt = f'''您是一名金融文档提取专家。从以下金融文档中提取结构化信息,并以有效的 JSON 格式返回。要求:
- 提取所有关键金融数据(账户、余额、交易、日期)
- 使用一致的字段命名(蛇形小写格式)
- 将日期转换为 ISO 8601 格式(YYYY-MM-DD)
- 用带有货币元数据的数字表示货币金额
- 保持层次关系
- 检测顺序错误的项目(用 * 标记)
金融文档:{doc_str}
仅返回提取的 JSON,无需解释。'''
这种指令性方法提供了明确的要求和任务上下文,可以提高对训练期间未见到的文档类型的泛化能力。然而,在 Pulse AI 处理提取且模型主要学习复制 Pulse 输出结构的工作流程中,当前的直接映射方法已经足够,并避免了因长指令带来的标记开销。
生产注意事项:
- 训练数据集大小:试点阶段 100–500 个样本,生产阶段 5,000–10,000 个样本
- 评估指标:比较微调模型输出与 Pulse 基线
- 迭代改进:每季度使用新文档类型和边缘情况重新训练
- 质量监控:部署后跟踪置信度分数和人工审查率
"""运行转换脚本:python3 convert_to_nova.py
这将生成一个 jsonl 文件:nova_dataset.jsonl
经过微调后,Nova Micro 应该能够以不同的方式完成以下任务:完整文档结构识别、全面表格提取、跨文档数据集成以及财务文件惯例。
- 如果尚未创建,请创建用于训练数据的 S3 存储桶:
aws s3 mb s3://your-unique-bucket-name --region us-east-1
启用版本控制以保护数据:
aws s3api put-bucket-versioning --bucket your-unique-bucket-name --versioning-configuration Status=Enabled
- 将 Nova 训练数据集写入您的 S3 训练存储桶,用于 Amazon Bedrock Nova 微调
aws s3 cp nova_dataset.jsonl s3://<your s3 bucket>/training-data/
注意:Amazon Bedrock 的微调作业和自定义模型部署会产生费用。在继续之前,请查看 Amazon Bedrock 定价页面 https://aws.amazon.com/bedrock/pricing/。
- 接下来运行 Amazon Bedrock 训练作业
aws bedrock create-model-customization-job --job-name my-fine-tuning-job-nova-micro --custom-model-name my-custom-pulse-model-nova-micro --role-arn arn:aws:iam::<Your-AWS-Account>:role/AmazonBedrockNovaFineTuningRole --base-model-identifier amazon.nova-micro-v1:0:128k --training-data-config s3Uri=s3://<your-s3-bucket>/training-data/nova_dataset.jsonl --output-data-config s3Uri=s3://<your-s3-bucket>/output/ --hyper-parameters '{"epochCount":"2","learningRate":"0.00001","learningRateWarmupSteps":"10"}'
您可以通过控制台监控训练进度

或者通过运行以下命令
export CUSTOM_MODEL_ARN=$(aws bedrock get-model-customization-job --job-identifier "<JobArn>" --region us-east-1 --query 'outputModelArn' --output text)
echo "您的自定义模型 ARN: $CUSTOM_MODEL_ARN"
jobArn 可以从控制台或运行的作业输出中检索。
完成后,控制台将反映状态

- 要部署新的自定义模型,请运行:
aws bedrock create-custom-model-deployment --model-deployment-name "my-custom-pulse-model-deployment" --model-arn "$CUSTOM_MODEL_ARN" --region us-east-1
- 要检查自定义模型部署的状态
aws bedrock get-custom-model-deployment --custom-model-deployment-identifier "your-deployment-name-or-arn" --region us-east-1
状态“Active”确认已完成部署
验证模型是否已准备好:
aws bedrock get-provisioned-model-throughput --provisioned-model-id <model-id> --region us-east-1
确认状态显示“InService”后再进行测试。使用 Amazon Bedrock Playground 进行测试。
测试使用的提示:
从这份银行对账单中提取详细的交易信息:
SAMPLE Statement of Account 12345678
交易明细:
10/02 - POS 购买 终端 24349201 WAL-MART #3492 WICHITA KS 00-00-00 00:00 PM 0000000000000000 - $4.23
10/04 - POS 购买 终端 443565 PLAYERS SPORTS BAR AND GRILL WICHITA KS 00-00-00 00:00 PM 0000000000000000 - $11.68
10/05 - 支票 1234 - $9.98
10/05 - POS 购买 终端 422443 KWAN COURT WICHITA KS 00-00-00 00:00 PM 0000000000000000 - $25.50
10/12 - 支票 1236* - $69.00
10/14 - 支票 1237 - $180.63
支票支付表:
支票号 | 日期 | 金额 | 支票号 | 日期 | 金额
1234 | 10/05 | $9.98 | 1238 | 10/28 | $91.06
1236* | 10/12 | $69.00 | 1239 | 10/30 | $451.20
1237 | 10/14 | $180.63 | 1246* | 10/30 | $37.07
对于每笔 POS 购买,请提取:
1. 终端 ID
2. 商家名称
3. 地点(城市、州)
4. 交易参考号
5. 金额
对于每张支票,请提取:
1. 支票号
2. 清理日期
3. 金额
4. 序列状态(正常或序列异常标记为 *)
以结构化的 JSON 格式提供输出,交易详情嵌套在对象中。结果:

性能对比
模型对比:领域知识评估
| 指标 | Nova Micro(基础) | my-custom-pulse-model-nova-micro-v5 | | --- | --- | --- | | 延迟 | 540,508 毫秒(约 9 分钟) | 543,600 毫秒(约 9 分钟 3.6 秒) | | 提取的支票数 | 6 张中的 3 张 | 6 张中的 6 张 | | 提取的 POS 购买数 | 3 笔中的 3 笔 | 3 笔中的 3 笔 | | 交易组织 | 按类型分开 | 按时间顺序排列 | | 完整性 | 支票数据的 50% | 支票数据的 100% | | 序列状态准确性 | 部分(3 张支票) | 完整(所有 6 张支票) | | JSON 结构 | 分段格式 | 统一交易列表 | | 领域知识 | 基础提取 | 全面文档理解 |
免责声明:这些指标特定于样本文档数据集。您的结果可能会有所不同。
清理
完成以下清理任务以避免产生费用。
- 删除实例配置文件:
aws iam delete-instance-profile --instance-profile-name BedrockTutorialProfileBash - 终止 EC2 实例:
aws ec2 terminate-instances --instance-ids <instance-id>Bash - 删除安全组:
aws ec2 delete-security-group --group-id <security-group-id> --region us-east-1Bash - 删除密钥对:
aws ec2 delete-key-pair --key-name <key-pair-name> --region us-east-1Bash - 删除自定义模型部署:
aws bedrock delete-custom-model-deployment --custom-model-deployment-identifier <deployment-name> --region us-east-1Bash - 删除自定义模型:
aws bedrock delete-custom-model --model-identifier $CUSTOM_MODEL_ARN --region us-east-1Bash
警告:数据丢失风险——以下命令将永久删除所有训练数据和输出。
继续之前,请确认以下事项:1)验证 S3 存储桶中仅包含教程数据,2)备份需要保留的文件,3)确认已正确记录存储桶名称。
- 从 S3 删除微调训练数据:
aws s3 rm s3://<your-bucket>/training-data/ --recursiveBash - 从 S3 删除微调作业输出:
aws s3 rm s3://<your-bucket>/output/ --recursiveBash - 如果不再需要,则删除 S3 存储桶:
aws s3 rb s3://<your-bucket>Bash - 删除 IAM 策略:
aws iam delete-role-policy --role-name AmazonBedrock-FineTuning-S3-Role --policy-name Bedrock-S3-Access-Policy
Bash
- 删除 Secrets Manager 密钥:
aws secretsmanager delete-secret --secret-id pulse-api-key --force-delete-without-recovery --region us-east-1Bash - 删除微调作业:
aws bedrock stop-model-customization-job --job-identifier <job-arn> --region us-east-1Bash
这篇 AWS 博客提供了详细的迭代微调指南,因此你可以基于之前定制化的模型进行持续改进,而无需从头开始。Pulse 将非结构化文档转换为与架构对齐的结构化输出。这些输出可以程序化地导出为 JSONL 数据集,符合 Amazon Bedrock 的文本和视觉模型微调要求。这实际上让 Pulse 负责提取和数据质量的繁重工作,同时使生成所需的训练数据集以进行模型定制变得简单明了。
结论
通过结合 Pulse AI 的高级文档理解和 AWS 的机器学习能力,您可以构建比传统方法更快、更准确、更具扩展性的财务数据处理系统。此架构展示了使用 Amazon Bedrock 和 Pulse AI 进行金融文档处理的生产就绪方法。开始使用 Pulse AI 非常简单。
注册一个Pulse AI 标准账户,即可开始为您的财务工作流使用微调模型。如果您是新用户,Pulse AI 快速入门文档提供了逐步指导,帮助您配置第一个微调作业并部署针对组织需求定制的模型。有关大规模实施微调的个性化协助或问题,请联系团队[[email protected]](mailto:[email protected])——他们随时准备帮助您充分发挥领域特定 AI 的潜力。
微调的真正力量在于您用组织独有的财务数据集补充基础模型(FMs)。通过对专有文档、术语和业务流程进行训练,您创建了通用模型通常无法匹敌的专业能力。这种方法将 AI 从通用工具转变为理解您特定财务领域的战略资产。
附加资源
要深入了解监督微调和探索高级实现策略,请查阅AWS Nova 微调指南和关于自定义 Amazon Nova 模型的文档。这些资源提供了超参数改进、数据准备最佳实践和技术细节以及部署模式。Pulse API 文档提供了全面的指导,帮助您将生产级别的文档提取功能集成到现有工作流中。
- * *