AWS Textract 文档智能识别实战:从 0 搭建发票与合同自动录入流水线(2026 单价与免费额度全解)

📅 · ChengziCloud - 一站式云端服务

Meta Description: AWS Textract 实战教程:DetectDocumentText / AnalyzeDocument / AnalyzeExpense 三组 API 怎么选、10 万页 PDF 异步流水线怎么搭、2026 真实单价与免费套餐额度、7 大坑与省钱 5 招,附 AWS CLI 与 Python 代码。

> 关键词:AWS Textract、AWS 文档识别、OCR 教程、AnalyzeExpense、发票自动录入、AWS 免费套餐、AWS 单价对比

前言:三句话选对 API,再动手写代码

如果你手上有一堆扫描件——发票、合同、报关单、银行对账单、简历——想把它们变成数据库里能查的字段,AWS Textract 就是干这件事的服务。它比传统 OCR 多做两件事:识别键值对(表单)和表格结构,并且每个识别结果都带 0–100 的置信度分数和 bounding box 坐标,方便你做人工复核分流。

> 决策口诀:只要纯文本用 DetectDocumentText,要键值对和表格用 AnalyzeDocument,发票收据用 AnalyzeExpense,身份证件用 AnalyzeID;多页 PDF 一律走异步 API。

本文只讲一件事:怎么用 Textract 把扫描件变成可以入库的结构化数据,以及怎么不被它扣冤枉钱。和本站已有文章的边界如下:

| 既有文章 | 它解决的问题 | 与本文的关系 | |---|---|---| | S3 + CloudFront 静态站托管 | 静态资源存储与全球加速 | 本文的输入/输出存储层,不重复 | | Lambda 无服务器 API 实战 | 函数计算与事件驱动 | 本文的执行引擎,只讲 Textract 触发链路 | | Bedrock 大模型实战 | 生成式模型调用、RAG | 本文在「中文与复杂版面」一节引用,不展开 | | Trusted Advisor + Compute Optimizer 成本体检 | 账单分析与浪费发现 | 本文只做单服务成本测算,不做全站体检 | | MediaConvert 视频转码 | 媒体处理流水线 | 流水线结构可类比,但文档域完全不同 |

一、三组 API 的能力边界:先选对 API,再写代码

Textract 的 API 分成同步异步两族,不是「新旧版本」关系,而是按文件大小和页数分工。

1.1 同步 vs 异步:分界线是「页数」和「文件体积」

| 维度 | 同步 API | 异步 API | |---|---|---| | 主要操作 | DetectDocumentTextAnalyzeDocumentAnalyzeExpenseAnalyzeID | StartDocumentTextDetectionStartDocumentAnalysisStartExpenseAnalysisStartLendingAnalysis | | 取结果 | 调用即返回(毫秒~数秒) | 先 Start 拿 JobId,再 Get 轮询或等通知 | | 最大文件 | 10 MB | 500 MB(PDF) | | 输入方式 | S3 对象或字节数组(CLI 不支持字节数组,只能走 S3) | 只能 S3 对象 | | 支持格式 | JPEG、PNG、PDF、TIFF | JPEG、PNG、PDF、TIFF | | 多页 PDF | 不适合(多页请走异步) | 支持,按页处理与计费 | | 典型场景 | 单张发票、单页证件、用户实时上传 | 大批量扫描件、归档数字化、几百页合同 |

计费口径务必记住:一张图片(PNG/TIFF/JPEG)算 1 页;PDF 里每一页都单独计 1 页。所以「上传一个 PDF 只算一次钱」是错觉,一个 200 页的 PDF 就是 200 页的钱。

1.2 AnalyzeDocument 的六个特征:按需勾选,别全家桶

AnalyzeDocument 才是 Textract 的精华,它下面挂了六个可自由组合的特征(feature type):

| 特征 | 解决什么 | 备注 | |---|---|---| | Forms | 键值对抽取,如「First Name → Jane Smith」 | 英文表单准确率最高 | | Tables | 行列结构还原 | 表格与正文需视觉分离、文字不要旋转,效果最佳 | | Queries | 用自然语言提问取字段,如「What is the customer name?」 | 不依赖固定版面,同步最多 15 条/页、异步最多 30 条/页 | | Custom Queries | 在企业专属文档上微调 Queries 精度 | 免费套餐不含,按页计费 | | Signatures | 检测签名位置 | 成本最低的附加特征之一 | | Layout | 段落/标题/列表/页眉页脚等版面元素 | 与 Tables 同时使用时免费 |

1.3 一条生产级流水线长什么样

`text 上传端 存储层 计算层 输出层 ------ ------ ------ ------ 控制台/App --> S3 (raw/) --> Lambda (触发 StartDocumentTextDetection) | | v v Textract 异步作业 --通知--> SNS/EventBridge | | v v GetDocumentTextDetection --> S3 (json/) / DynamoDB / RDS | v 置信度 < 95% 的字段 --> 人工复核队列 `

要点:S3 是必经之路(异步 API 只认 S3 对象),通知优先于轮询(SNS/EventBridge 比 Get* 死循环便宜且不撞 TPS 配额),低置信度字段必须分流人工——官方文档明确建议可以对置信度低于 95% 的结果打标复核。

二、开通、区域选择与最小权限

2.1 区域:亚洲最近是新加坡,注意没有东京和香港

按 AWS 官方端点表,Textract 目前在这些区域可用:美国东部(弗吉尼亚北部 / 俄亥俄)、美国西部(俄勒冈 / 北加州)、亚太(孟买 / 首尔 / 新加坡 / 悉尼)、加拿大中部、欧洲(法兰克福 / 爱尔兰 / 伦敦 / 巴黎 / 西班牙),另加 GovCloud 东西两区,合计 14 个商业区域 + 2 个 GovCloud。

对中文用户最关键的一条:亚洲区里没有东京(ap-northeast-1),也没有香港(ap-east-1)。就近部署只能选新加坡(ap-southeast-1)首尔(ap-northeast-2);对华南、华东用户,新加坡通常是延迟最低的那个。

但选区域还有一个更隐蔽的坑,见下面配额表。

2.2 配额:美国两个区 25 TPS,其余区域默认只有 1 TPS

官方端点表里的同步操作 TPS 配额是这样分配的:

| 同步操作(TPS/账号) | 弗吉尼亚 | 俄勒冈 | 俄亥俄 | 爱尔兰 | 孟买 | 其他区域 | |---|---|---|---|---|---|---| | DetectDocumentText | 25 | 25 | 10 | 5 | 5 | 1 | | AnalyzeExpense | 5 | 5 | 1 | 1 | 1 | 1 | | AnalyzeID | 5 | 5 | 1 | 1 | 1 | 1 | | 异步 StartDocumentTextDetection | 15 | 15 | 5 | 5 | 5 | 1 | | 异步 GetDocumentTextDetection | 25 | 25 | 10 | 5 | 5 | 5 | | 异步作业并发上限 | 600 | 600 | 100 | 100 | 100 | 100 |

也就是说:如果你在新加坡跑批量识别,默认每秒只能发 1 个同步请求,不做提额的话 1 万页要跑将近 3 小时。正确做法是提前到 Service Quotas 控制台申请提额(选择 Textract → 目标配额 → Request Quota Increase),并配合重试 + 指数退避 + 抖动,把流量打平(官方 FAQ 明确推荐重试、退避、队列削峰、用 IDP CDK 样例起步、用配额计算器估量这五步)。

2.3 IAM 最小权限:给执行角色只开它需要的动作

把一个 Lambda 的权限拆成两块——Textract 动作 + S3 读写。Textract 动作按用途收窄,不要给 textract:*。下面这份策略可以直接用于「异步识别 + 读结果」场景(说明见代码块上方文字):

说明:Resource* 是因为 Textract 的识别动作不支持按作业 ARN 收敛;真正的隔离靠 S3 前缀和账号边界。

`json { "Version": "2012-10-17", "Statement": [ { "Sid": "TextractAsyncOnly", "Effect": "Allow", "Action": [ "textract:StartDocumentTextDetection", "textract:StartDocumentAnalysis", "textract:GetDocumentTextDetection", "textract:GetDocumentAnalysis" ], "Resource": "*" }, { "Sid": "ReadRawWriteJson", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject"], "Resource": [ "arn:aws:s3:::my-doc-bucket/raw/*", "arn:aws:s3:::my-doc-bucket/json/*" ] } ] } `

补充两点:Textract 支持通过 AWS PrivateLink(VPC 接口端点) 访问,合规场景可以完全不走公网;调用本身会被记进 CloudTrail,官方列出的记录动作是 DetectDocumentTextAnalyzeDocumentStartDocumentTextDetectionStartDocumentAnalysisGetDocumentTextDetectionGetDocumentAnalysis

2.4 控制台 5 步跑通第一个样例

1. 登录 AWS 控制台,搜索 Amazon Textract,进入管理控制台。 2. 切到支持的区域(建议 us-east-1 或 us-west-2,配额最大;亚洲用户选 ap-southeast-1)。 3. 选择 Detect Document Text 演示,上传一张 JPG/PNG(扫描件建议 ≥150 DPI)。 4. 查看返回的每个字/行 + 置信度 + bounding box 坐标。 5. 换 Analyze Document,勾选 Forms + Tables,再传一张发票或银行对账单,观察键值对和表格的还原效果。

这一步别省——先用真文档试出准确率,再决定要不要上生产,因为 Textract 的语言与版面适配是有明确边界的(见第六节第一大坑)。

三、实战一:用同步 API 识别一张发票(CLI + Python)

3.1 准备:文件必须先落 S3

Textract 的异步 API 只接受 S3 对象,CLI 调用同步 API 也不能传字节数组(官方 API 文档原话:用 AWS CLI 调用时无法传递图片字节)。所以本地文件一律先上传:

`bash aws s3 mb s3://my-doc-bucket --region us-west-2 aws s3 cp invoice-001.jpg s3://my-doc-bucket/raw/invoice-001.jpg `

3.2 CLI:一行拿到「文本 + 置信度」

`bash aws textract detect-document-text \ --document '{"S3Object":{"Bucket":"my-doc-bucket","Name":"raw/invoice-001.jpg"}}' \ --region us-west-2 \ --query 'Blocks[?BlockType==LINE].[Text,Confidence]' \ --output table `

返回的每个 LINE 块都带自己的 Confidence(0–100)。不要把所有行都当正确结果直接用——先按置信度排序看一眼,你就知道这份文档质量到底够不够上生产。

3.3 要结构化字段就别用 Detect:直接上 AnalyzeExpense

AnalyzeExpense 是专为发票/收据训练的:即使供应商名字只印在 logo 里、金额列没有表头,它也能抽出来,而且返回的是标准化键名,方便多份文档横向比对。常见字段(Type.Text 取值)包括发票号、供应商名、开票日期、到期日、小计、税额、应付总额、明细行的品名/数量/单价等,完整枚举以 API 文档为准。

`bash aws textract analyze-expense \ --document '{"S3Object":{"Bucket":"my-doc-bucket","Name":"raw/invoice-001.jpg"}}' \ --region us-west-2 \ --query 'ExpenseDocuments[0].SummaryFields[].[Type.Text,ValueDetection.Text,ValueDetection.Confidence]' \ --output table `

3.4 Python:把「低置信度字段」自动分流到人工复核

这是生产环境最值得抄的一段代码——识别不是终点,识别 + 分流才是

凭据走环境变量或 IAM 角色,不要写死在代码里:

`python import boto3

textract = boto3.client("textract", region_name="us-west-2")

def parse_invoice(bucket, key, threshold=95.0): resp = textract.analyze_expense( Document={"S3Object": {"Bucket": bucket, "Name": key}} ) doc = resp["ExpenseDocuments"][0] fields, review = {}, [] for f in doc.get("SummaryFields", []): name = f["Type"]["Text"] val = f.get("ValueDetection", {}) conf = float(val.get("Confidence", 0)) fields[name] = val.get("Text", "") if conf < threshold: review.append({"field": name, "value": fields[name], "confidence": conf}) return fields, review

fields, review = parse_invoice("my-doc-bucket", "raw/invoice-001.jpg") print("已识别字段:", fields) print("需人工复核:", review) `

明细行的字段同理可以按 LineItemExpenseFields 逐行校验——发票的总额对得上、明细对不上,是实际业务里最常见的一类差错。

3.5 只要 3~5 个字段?用 Queries 比 Forms 便宜 70%

如果你只需要从合同里拿「合同编号、生效日期、签约金额」三个值,没必要为整张表单付 Forms 的钱($0.05/页)。用 Queries 提自然语言问题即可,同步最多 15 条/页、异步最多 30 条/页

`python resp = textract.analyze_document( Document={"S3Object": {"Bucket": "my-doc-bucket", "Name": "raw/contract-p1.pdf"}}, FeatureTypes=["QUERIES"], QueriesConfig={"Queries": [ {"Text": "What is the contract number?", "Alias": "contract_no"}, {"Text": "What is the effective date?", "Alias": "effective_date"}, {"Text": "What is the total contract value?", "Alias": "amount"}, ]}, ) for block in resp["Blocks"]: if block["BlockType"] == "QUERY_RESULT": print(block.get("Query", {}).get("Alias"), block["Text"], block["Confidence"]) `

注意:Queries 与手写识别、发票收据理解一样,官方明确说明目前仅支持英文,提问要用文档里出现的英文词。

四、实战二:10 万页 PDF 的异步流水线

4.1 启动作业:用通知通道,不要轮询

`bash aws textract start-document-text-detection \ --document-location '{"S3Object":{"Bucket":"my-doc-bucket","Name":"raw/contract-2026.pdf"}}' \ --notification-channel '{"SNSTopicArn":"arn:aws:sns:us-west-2:123456789012:textract-job-done","RoleArn":"arn:aws:iam::123456789012:role/TextractPublishRole"}' \ --job-tag contract-2026 \ --region us-west-2 `

--job-tag 不是装饰品:它会把你的业务主键(合同号 / 批次号)写进作业,之后 Get* 和 CloudTrail 里都能对上号,排查「哪个作业是谁提交的」时省一半时间。

4.2 读结果:记得翻页(NextToken)

`bash aws textract get-document-text-detection \ --job-id 8a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b \ --max-results 1000 \ --region us-west-2 \ --query 'Blocks[?BlockType==LINE].Text' `

结果分页返回--max-results 上限 1000,必须循环跟随 NextToken;只读第一页就断言「识别不完整」是最常见的自坑。

4.3 Python:作业状态判断 + 分页读取

注意状态里有个 PARTIAL_SUCCESS(部分页成功)——它不是失败,不要当成失败整体重跑,否则会重复计费:

`python import boto3 textract = boto3.client("textract", region_name="us-west-2")

def wait_job(job_id): while True: r = textract.get_document_text_detection(JobId=job_id, MaxResults=1) status = r["JobStatus"] if status in ("SUCCEEDED", "FAILED", "PARTIAL_SUCCESS"): return status, r.get("StatusMessage", "")

def lines_of(job_id): out, token = [], None while True: kwargs = {"JobId": job_id, "MaxResults": 1000} if token: kwargs["NextToken"] = token r = textract.get_document_text_detection(**kwargs) out += [b["Text"] for b in r["Blocks"] if b["BlockType"] == "LINE"] token = r.get("NextToken") if not token: return out

status, msg = wait_job("YOUR_JOB_ID") print(status, msg) print("行数:", len(lines_of("YOUR_JOB_ID"))) `

4.4 幂等:同一个文件重复提交,会被重复计费

异步作业没有「去重」这个功能,同一页提交两次就是两次的钱。生产环境必须自己建幂等表:以 S3 对象 ETag + 业务主键 作为唯一键写进 DynamoDB,提交前先查一次;拿到 JobId 后再把 JobId 与幂等键绑定,重试时直接复用已有 JobId,而不是再 Start* 一次。这是 Textract 上最容易烧钱的一处设计缺失。

4.5 结果落地

异步结果建议第一时间在 Lambda 里 Get* 出来,转存到自己的 S3(JSON)或直接入库 PostgreSQL/MySQL。不要依赖服务端长期保存作业结果——它是给你取结果的窗口,不是你的档案库。转存后再做一次「字段级」的置信度过滤,把低分字段推进人工复核队列。

五、2026 价格、免费额度与三个实测算例

5.1 真实单价表(AWS 官方定价页 us-west-2 俄勒冈,按页计价)

| 调用方式 | 首 100 万页/月 | 超出 100 万页部分 | |---|---|---| | DetectDocumentText | $0.0015/页 | $0.0006/页 | | AnalyzeDocument – Tables | $0.015/页 | $0.010/页 | | AnalyzeDocument – Forms | $0.05/页 | $0.04/页 | | AnalyzeDocument – Queries(单用) | $0.015/页 | 见下行组合价 | | AnalyzeDocument – Custom Queries | $0.025/页 | $0.015/页 | | Tables + Queries 组合 | $0.020/页 | $0.015/页 | | Forms + Tables + Queries 组合 | $0.070/页 | $0.055/页 | | Forms + Custom Queries 组合 | $0.065/页 | $0.050/页 | | Signatures | $0.0035/页 | $0.0014/页 | | Layout | 与 Tables 同时使用时免费 | 免费 | | AnalyzeExpense(发票收据) | $0.01/页 | $0.008/页 | | AnalyzeID(身份证件) | $0.025/页(前 10 万页) | $0.01/页 | | AnalyzeLending(信贷文档) | $0.07/页 | $0.055/页 |

上表取自官方定价页给出的 us-west-2 算例;其他区域的实际单价请以控制台结算页 / 定价页对应区域标签为准,不要拿俄勒冈的价直接乘。

5.2 两个「读懂价目表」的结论(比单价本身更值钱)

结论一:组合调用比分开调用便宜约 $0.01/页。 把官方给出的组合单价和单项相加对一遍就发现:Tables + Queries 是 $0.020/页,而单项相加是 $0.015 + $0.015 = $0.030;Forms + Tables + Queries 是 $0.070/页,而单项相加是 $0.080。所以能用一次调用勾多特征,就别分两次调用。

结论二:官方算例有笔误,以阶梯价为准。 官方 Signatures 的第二个算例里同时出现了 $0.00035/页 和「5M 页 → $20」两个数字,与该算例自身的总分 $9,100 以及另一个算例的 $0.0035/页 自相矛盾。按阶梯价 $0.0035 → $0.0014 计算:0.0035 × 1,000,000 + 0.0014 × 4,000,000 = $9,100,与官方总分吻合。本文所有测算一律以阶梯单价为准自行折算,不照抄官方算例中的笔误数字。

5.3 三个示意算例(本文自行折算,非官方报价)

| 场景 | 计算 | 月成本 | |---|---|---| | 1 万张发票自动录入(AnalyzeExpense) | 10,000 × $0.01 | $100 | | 10 万页纯文本归档(DetectDocumentText) | 100,000 × $0.0015 | $150 | | 5 万页表单 + 表格抽取(Forms + Tables) | 50,000 × ($0.05 + $0.015) | $3,250 | | 200 万页纯文本(触发阶梯降价) | 1,000,000 × $0.0015 + 1,000,000 × $0.0006 | $2,100 |

对照一下:5 万页表单抽取的钱($3,250)是同样页数纯文本($75)的 43 倍这解释了为什么「两段式」是 Textract 上最重要的省钱手法——先全量跑便宜的 Detect,再只对真正需要的页跑贵的 Analyze。

5.4 免费套餐:3 个月,额度按 API 分配

官方 FAQ 明确 Textract 参加 AWS 免费套餐,免费期 3 个月,新账号每月可免费处理:

| API | 每月免费额度 | |---|---| | DetectDocumentText | 1,000 页 | | AnalyzeDocument – 仅 Signatures | 1,000 页 | | AnalyzeDocument – Forms / Tables / Layout | 100 页 | | AnalyzeDocument – Queries 及各类 Queries 组合 | 各 100 页 | | AnalyzeDocument – Custom Queries | 无免费额度 | | AnalyzeExpense | 100 页 | | AnalyzeID | 100 页 | | AnalyzeLending | 2,000 页 |

注意两件事:一是这个额度是「每月重置」而不是一次性给 3,000 页,三个月里每月都能用;二是 2025-07-15 起 AWS 新账号可选的「免费计划」还会额外提供最多 $200 额度(注册即得 + 完成入门操作叠加,额度需在 12 个月内用完),但它与 Textract 自身的 3 个月免费额度是两套口径,且账号一旦加入 AWS Organizations 或建立 Control Tower 组织,免费额度会立即失效并自动转为付费计划——想白嫖实验额度,就把组织治理留到实验做完之后。

5.5 省钱 5 招

1. 两段式:全量 DetectDocumentText($0.0015)打底,只对命中关键词/页码的页调 AnalyzeDocument($0.05 级)。 2. 少字段用 Queries,多字段才用 Forms:3~5 个字段用 Queries($0.015/页),比 Forms 便宜 70%。 3. 组合一次调用:Forms + Tables + Queries 组合 $0.070/页 < 单项相加 $0.080/页。 4. Layout 搭车的用:Layout 与 Tables 同用免费,别再单独买版面分析。 5. 幂等去重 + 只处理新增页:以 ETag / 业务主键建幂等表,重试复用 JobId;归档增量扫描时只提交当日新增文件。

六、7 大坑:踩过的都在这儿

1. CLI 传不了字节数组--document 只能给 S3 对象(同步可用字节,但 CLI 不给)。想本地直传就用 SDK,别在 CLI 上耗时间。 2. 同步 10 MB / 异步 500 MB(PDF)是硬上限。超了直接 DocumentTooLargeException,多页大文件一律走异步。 3. 外围区域的同步 TPS 默认只有 1。在新加坡、首尔、悉尼跑批量,不提额就是 1 请求/秒,务必先去 Service Quotas 提额,再配合指数退避 + 抖动削峰。 4. 中文/日文等非拉丁语种务必先做小规模评估。官方 FAQ 给出的 Analyze Document 语言清单是英语、德语、法语、西班牙语、意大利语、葡萄牙语,而手写识别、发票收据、身份证件、Queries 仅英文。中文文档不要直接上生产:先用 20~50 张真实样本测准确率,必要时对比 Bedrock 多模态模型的抽取效果,再决定技术路线。 5. 异步结果不会长期替你保留。它是「取结果的窗口」而不是档案库,必须自己转存到 S3 / 数据库。 6. 不检查置信度就入库。官方建议对低于 95% 的结果打标人工复核——这句话直接决定你的系统是「自动录入」还是「自动制造脏数据」。 7. 重复提交 = 重复计费。异步作业没有去重能力,重试前先查幂等表;PARTIAL_SUCCESS 也不要当失败整体重跑。

七、常见问题 FAQ

Q: AWS Textract 支持中文文档吗? A: 官方 FAQ 列出的 Analyze Document 支持语言为英语、德语、法语、西班牙语、意大利语、葡萄牙语,手写、发票收据、身份证件与 Queries 明确「仅英文」。中文文档请务必先用真实样本做小规模评估,不要直接依赖它做生产级中文表单抽取;中文场景可考虑叠加 Bedrock 多模态模型做字段级抽取后再比对。

Q: 免费套餐有多少页?能用多久? A: 免费期 3 个月,每月额度为:DetectDocumentText 1,000 页、Signatures 1,000 页、Forms/Tables/Layout 100 页、各类 Queries 组合各 100 页、AnalyzeExpense 100 页、AnalyzeID 100 页、AnalyzeLending 2,000 页;Custom Queries 无免费额度。新账号的「免费计划」$200 额度是另一套口径,以官网为准。

Q: 同步和异步到底怎么选? A: 单张图片、单页证件、用户实时上传 → 同步;多页 PDF、批量归档、超过 10 MB → 异步。记住异步必须经 S3,且要用 SNS/EventBridge 通知而不是轮询。

Q: 一个 200 页的 PDF 算 200 页的钱吗? A: 是。官方计费口径:一张图片算 1 页,PDF 中每一页都单独计 1 页。一个 200 页 PDF 的 DetectDocumentText 成本是 200 × $0.0015 = $0.30。

Q: 只要发票里的总额和供应商名,该用哪个 API? A: 用 AnalyzeExpense($0.01/页),它专为发票收据训练,返回标准化键名;如果你要的是自定义的 3~5 个字段,用 Queries($0.015/页)通常比 Forms($0.05/页)便宜得多。

Q: 处理 10 万页要花多久、要不要提额? A: 计算上是十几次 Start* 调用的事,瓶颈在配额:外围区域同步 TPS 与异步 Start TPS 默认只有 1,美国东部/俄勒冈是 15~25。批量任务开工前先在 Service Quotas 提额,并用队列削峰。

Q: Textract 和 S3 + Lambda 怎么串起来最省事? A: S3 上传事件触发 Lambda → Lambda 调 StartDocumentTextDetection 并把 JobId 写入幂等表 → 作业完成通知推 SNS/EventBridge → 另一支 Lambda 领取通知、Get 分页读结果、转存 S3/入库。本条第 3、4 节的代码可以直接拼成这条链路。

Q: 结果里有坐标和置信度,怎么用? A: 置信度用于分流(低于 95% 进人工复核队列);bounding box 坐标用于在原始扫描件上高亮标注,做审核界面时可直接叠加渲染,这对「人机协同」的录入系统几乎是必需品。

相关阅读

- AWS S3 + CloudFront 搭建全球加速静态网站 —— 本文的存储层基础 - AWS Lambda 无服务器 API 实战 —— 把第 4 节的链路真正跑起来 - AWS Bedrock 大模型实战 —— 中文与复杂版面的替代路线 - AWS 成本体检:Trusted Advisor + Compute Optimizer —— 把本文的单服务测算接进全站成本治理

> ⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。

> 🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

> 本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多