Synchronous image API
DetectLabels
| 目標讀者 TA | 後端/影像目錄團隊 |
|---|---|
| 官方文件能力 | 偵測一般物件與場景,可選擇取得影像屬性。 |
| 輸入 → 輸出 | JPEG/PNG 位元組或 S3 物件 → 標籤與模型版本 |
| 執行環境 | AWS 區域雲端端點。 |
| 本站選型評估 | 標籤信心分數為 0–100;一般標籤不能證明能辨識特定缺陷。 |
| 本站建議驗證 | 驗證分數轉換與空結果,比對實際巡檢分類。 |
電腦視覺 · API / SDK
AWS
透過雲端偵測能力分析圖片與影片內容。
AMAZON REKOGNITION / DEVELOPER FIELD GUIDE
公司/專案背景、十個技術入口,以及每份引用的實作分析。
2026-10-08 · 串接尚未實測
依官方公司或專案自述撰寫的原創概要;完整原文請見來源。
| 供應商 | Amazon Web Services 隸屬 Amazon,於 2006 年推出。 |
|---|---|
| 服務對象 | 使用雲端與 AI 基礎設施的新創、企業、非營利組織與政府。 |
| 公司資訊 | About 網站提供起源、價值、影響、團隊、客戶與合作夥伴資訊。 |
| 產品範圍 | Rekognition 提供託管影像與視訊分析;各 API 能力於下方逐项比較。 |
| 適用角色 | 進行 AI 供應商初選的採購、合作夥伴與產品負責人。 |
|---|---|
| 本站評估 | 用定位與公司背景判斷初步適配度;另行取得專案部署、支援與商務條件。 |
已核對 AWS 官方文件;JavaScript 指令由 API 文件連出,但其動態頁正文無法擷取。本輪未呼叫雲端或驗證帳號資格。
依影像與已儲存影片整合選出十項入口,不是官方排名。規劃串流或批次分析前先查閱功能可用性引用。
| 接口 | 用途與 TA |
|---|---|
| 01 · DetectLabelsSynchronous image API | 偵測一般物件與場景,可選擇取得影像屬性。後端/影像目錄團隊 |
| 02 · Boto3 Rekognition clientPython SDK | 透過 AWS Python SDK 呼叫 Rekognition。Python/自動化工程師 |
| 03 · AWS SDK for JavaScript v3JavaScript SDK | 使用官方 Rekognition client 與 DetectLabels 指令。Node.js/TypeScript 後端 |
| 04 · AWS CLI RekognitionCommand-line interface | 從終端檢視並呼叫 Rekognition 操作。QA/平台工程師 |
| 05 · DetectTextImage text API | 從影像擷取文字與文字行。包裝/視覺中繼資料工程師 |
| 06 · DetectProtectiveEquipmentImage equipment API | 偵測影像中人員的臉部、手部與頭部覆蓋裝備。工廠應用/安全複核團隊 |
| 07 · DetectCustomLabelsCustom-model image API | 對影像執行指定版本的 Custom Labels 模型。ML/工業巡檢團隊 |
| 08 · StartLabelDetectionAsynchronous stored-video API | 啟動 S3 已儲存影片的標籤分析。視訊管線/後端工程師 |
| 09 · StartSegmentDetectionVideo segmentation API | 啟動已儲存影片的鏡頭或技術提示分析。媒體作業/證據複核團隊 |
| 10 · DetectModerationLabelsImage moderation API | 回傳內容審核標籤,支援應用政策判斷。內容審核/平台團隊 |
能力摘要依據官方文件;限制與建議測試為本站工程評估。
Synchronous image API
| 目標讀者 TA | 後端/影像目錄團隊 |
|---|---|
| 官方文件能力 | 偵測一般物件與場景,可選擇取得影像屬性。 |
| 輸入 → 輸出 | JPEG/PNG 位元組或 S3 物件 → 標籤與模型版本 |
| 執行環境 | AWS 區域雲端端點。 |
| 本站選型評估 | 標籤信心分數為 0–100;一般標籤不能證明能辨識特定缺陷。 |
| 本站建議驗證 | 驗證分數轉換與空結果,比對實際巡檢分類。 |
Python SDK
| 目標讀者 TA | Python/自動化工程師 |
|---|---|
| 官方文件能力 | 透過 AWS Python SDK 呼叫 Rekognition。 |
| 輸入 → 輸出 | Python 參數 → 回應字典 |
| 執行環境 | 具備 AWS 憑證與區域設定的 Python 後端。 |
| 本站選型評估 | 安裝 SDK 不等於取得 API 權限或完成區域設定。 |
| 本站建議驗證 | 記錄 SDK 版本,分別測試授權推論與權限拒絕。 |
JavaScript SDK
| 目標讀者 TA | Node.js/TypeScript 後端 |
|---|---|
| 官方文件能力 | 使用官方 Rekognition client 與 DetectLabels 指令。 |
| 輸入 → 輸出 | 指令輸入 → 服務回應 |
| 執行環境 | 搭配 AWS 認證的伺服器端 JavaScript。 |
| 本站選型評估 | 確認執行環境相容性,憑證不得進入前端程式包。 |
| 本站建議驗證 | 建置實際伺服器目標,確認瀏覽器只收到去敏後輸出。 |
Command-line interface
| 目標讀者 TA | QA/平台工程師 |
|---|---|
| 官方文件能力 | 從終端檢視並呼叫 Rekognition 操作。 |
| 輸入 → 輸出 | CLI 參數 → JSON 輸出 |
| 執行環境 | 已設定的 AWS CLI 環境。 |
| 本站選型評估 | CLI 影像操作使用 S3 引用,不能原封不動套用 SDK 位元組範例。 |
| 本站建議驗證 | 記錄 profile、區域與物件版本,比對一次 SDK 結果。 |
Image text API
| 目標讀者 TA | 包裝/視覺中繼資料工程師 |
|---|---|
| 官方文件能力 | 從影像擷取文字與文字行。 |
| 輸入 → 輸出 | 影像 → 文字、幾何位置與型態 |
| 執行環境 | AWS 區域雲端服務。 |
| 本站選型評估 | 使用字詞與文字行關係,避免同一文字重複計算。 |
| 本站建議驗證 | 測試實際包裝字型、旋轉與語言,量測序號完全正確率。 |
Image equipment API
| 目標讀者 TA | 工廠應用/安全複核團隊 |
|---|---|
| 官方文件能力 | 偵測影像中人員的臉部、手部與頭部覆蓋裝備。 |
| 輸入 → 輸出 | 影像 → 人員、身體部位與裝備偵測 |
| 執行環境 | AWS 影像分析端點。 |
| 本站選型評估 | 無法判定的覆蓋狀態需保留未知;偵測結果不是安全認證。 |
| 本站建議驗證 | 搭配人工複核測試遮擋與弱光,量測漏檢與誤報。 |
Custom-model image API
| 目標讀者 TA | ML/工業巡檢團隊 |
|---|---|
| 官方文件能力 | 對影像執行指定版本的 Custom Labels 模型。 |
| 輸入 → 輸出 | 影像+專案版本 ARN → 自訂標籤 |
| 執行環境 | AWS 上的 Custom Labels 模型。 |
| 本站選型評估 | 需要適當的已訓練模型;一般標籤不能取代缺陷資料集。 |
| 本站建議驗證 | 保留近似產線的獨立樣本,上線前記錄版本 ARN 與各缺陷召回率。 |
Asynchronous stored-video API
| 目標讀者 TA | 視訊管線/後端工程師 |
|---|---|
| 官方文件能力 | 啟動 S3 已儲存影片的標籤分析。 |
| 輸入 → 輸出 | S3 影片 → 工作 ID,再取得完成結果 |
| 執行環境 | AWS 非同步工作,可使用 SNS 通知。 |
| 本站選型評估 | 取得工作 ID 不代表分析完成;應保留冪等識別值。 |
| 本站建議驗證 | 測試等待、失敗與成功狀態,再取回所有結果分頁。 |
Video segmentation API
| 目標讀者 TA | 媒體作業/證據複核團隊 |
|---|---|
| 官方文件能力 | 啟動已儲存影片的鏡頭或技術提示分析。 |
| 輸入 → 輸出 | S3 影片+片段類型 → 工作識別碼 |
| 執行環境 | AWS 非同步已儲存影片分析。 |
| 本站選型評估 | 鏡頭邊界是媒體結構,不是工業事件的證據。 |
| 本站建議驗證 | 與人工複核影片比對片段時間,保留原始時間基準。 |
Image moderation API
| 目標讀者 TA | 內容審核/平台團隊 |
|---|---|
| 官方文件能力 | 回傳內容審核標籤,支援應用政策判斷。 |
| 輸入 → 輸出 | JPEG/PNG 影像 → 審核標籤與信心分數 |
| 執行環境 | AWS 區域影像服務。 |
| 本站選型評估 | 模型分數不等於應用決策;應保留人工複核流程。 |
| 本站建議驗證 | 阻擋上傳前,先評估正常工業影像的誤判情況。 |
| TA | PM/採購:將影像與視訊需求對應至託管服務。 |
|---|---|
| 本站驗證建議 | 估算投入前先選定 API 與帳號區域。 |
| TA | 架構師/採購:確認帳號可用資格。 |
|---|---|
| 本站驗證建議 | Streaming Video 與 Bulk Image Analysis 自 2026-04-30 起不再開放新客戶;AWS 說明其他功能不受影響。本指南選用影像及已儲存影片路徑,仍需確認預定操作。 |
| TA | 後端/QA:完成非同步標籤管線。 |
|---|---|
| 本站驗證建議 | 等待成功,使用相同工作 ID,依 NextToken 取得所有分頁。 |
| TA | 平台工程師:設定臨時角色或 SSO 憑證。 |
|---|---|
| 本站驗證建議 | 使用標準憑證鏈,確認必要最小權限,不將機密寫入程式。 |
| TA | 後端工程師:明確設定逾時與重試行為。 |
|---|---|
| 本站驗證建議 | 範例只嘗試一次,設定連線/讀取逾時;正式使用仍需整體任務截止時間。 |
04 / INPUT · EXPECTED OUTPUT · ACCEPTANCE
單張影像一般標籤;不是自訂缺陷偵測、人臉識別或即時視訊。信心分數由 0–100 正規化為 0–1。
起始範例 v1.0.0 · 僅離線樣本測試 · 尚未實際串接供應商
在 Python 環境安裝 boto3 並記錄版本。設定具有 rekognition:DetectLabels 權限的 AWS 角色或 SSO profile。設定 AWS_REGION 與 IMAGE_PATH,必要時指定 AWS_PROFILE。另存為 rekognition_smoke.py 並執行 python rekognition_smoke.py。本頁不提供帳號、憑證或代呼叫雲端。
憑證僅交由本機或伺服器端的認證設定管理。執行此範例會將影像送至供應商雲端,並可能消耗帳號用量。
"""One authorized JPEG/PNG sent to AWS DetectLabels; no automatic retry."""
import json
import math
import os
import sys
from datetime import datetime, timezone
from importlib.metadata import version
from pathlib import Path
from time import monotonic
def normalize(raw):
if not isinstance(raw, dict) or not isinstance(raw.get('Labels'), list):
raise ValueError('unexpected_schema')
output = []
for item in raw['Labels']:
if not isinstance(item, dict) or not isinstance(item.get('Name'), str):
raise ValueError('unexpected_schema')
confidence = item.get('Confidence')
if type(confidence) not in (int, float) or not math.isfinite(confidence) or not 0 <= confidence <= 100:
raise ValueError('unexpected_schema')
output.append({'label': item['Name'], 'score': confidence / 100})
model = raw.get('LabelModelVersion')
if model is not None and not isinstance(model, str):
raise ValueError('unexpected_schema')
return output, model
def create_client(region):
import boto3
from botocore.config import Config
settings = Config(connect_timeout=5, read_timeout=30,
retries={'mode': 'standard', 'total_max_attempts': 1})
# Standard AWS credentials chain; no access keys in source code.
return boto3.client('rekognition', region_name=region, config=settings)
def classify_error(exc):
code = getattr(exc, 'response', {}).get('Error', {}).get('Code')
if code in ('AccessDeniedException', 'UnrecognizedClientException', 'InvalidSignatureException', 'ExpiredTokenException'):
return 'authorization_failure'
if code in ('ThrottlingException', 'ProvisionedThroughputExceededException'):
return 'throttled'
if code in ('InvalidImageFormatException', 'ImageTooLargeException', 'InvalidParameterException'):
return 'provider_input_failure'
if type(exc).__name__ in ('NoCredentialsError', 'PartialCredentialsError', 'ProfileNotFound'):
return 'credentials_missing'
if type(exc).__name__ in ('ReadTimeoutError', 'ConnectTimeoutError', 'EndpointConnectionError'):
return 'transport_failure'
return 'provider_or_transport_failure'
def run(client_factory=create_client):
start = monotonic()
result = {'schema_version': '1.0.0', 'provider': 'Amazon Rekognition', 'status': 'error',
'model_version': None, 'data': None, 'error': None,
'captured_at': datetime.now(timezone.utc).isoformat()}
try:
region = os.environ['AWS_REGION'].strip()
filename = Path(os.environ['IMAGE_PATH'])
if not region or filename.suffix.lower() not in ('.jpg', '.jpeg', '.png'):
raise ValueError('configuration')
# Bounded read: this starter's cap is 4 MiB, not a claimed service limit.
with filename.open('rb') as image:
content = image.read(4 * 1024 * 1024 + 1)
if not content or len(content) > 4 * 1024 * 1024:
raise ValueError('input_size')
client = client_factory(region)
try:
raw = client.detect_labels(Image={'Bytes': content}, MaxLabels=20,
MinConfidence=70, Features=['GENERAL_LABELS'])
result['data'], result['model_version'] = normalize(raw)
finally:
client.close()
result['region'] = region
result['status'] = 'ok'
except (KeyError, OSError):
result['error'] = 'configuration'
except (ValueError, TypeError):
result['error'] = 'configuration_or_schema'
except ImportError:
result['error'] = 'dependency_missing'
except Exception as exc:
result['error'] = classify_error(exc)
if result['status'] != 'ok':
result['data'] = None
result['elapsed_ms'] = round((monotonic() - start) * 1000)
return result
if __name__ == '__main__':
output = run()
print(json.dumps(output, ensure_ascii=False, allow_nan=False))
sys.exit(0 if output['status'] == 'ok' else 1)
| 結果契約 | ok 包含已驗證 label/score,允許有效空陣列;error 的 data 為 null,只回傳去敏錯誤類別。記錄 AWS 回傳的 LabelModelVersion;此一般 DetectLabels 範例不能指定固定模型版本。 |
|---|---|
| 操作限制 | 只嘗試一次,連線逾時 5 秒、讀取逾時 30 秒;這不是整體程序截止時間。本地輸入上限 4 MiB;門檻 70、最多 20 個標籤是範例設定,不是已驗證的商業門檻。 |
| 失敗決策 | 區分授權、節流、輸入與傳輸失敗。先修正設定錯誤,再評估重複成本與整體截止時間,才加入有限重試。 |
| 資料與成本 | 影像位元組會送至設定的 AWS 區域。確認帳號條件與資料處理方式,先以小樣本量測用量。本輪未量測價格、延遲或缺陷準確率。 |
| 建議驗收 | 使用 20 張經授權代表影像,加上空檔、格式錯誤、權限拒絕與逾時案例。要求零筆隱藏失敗與正確分數轉換;實測前先約定標籤實用性與延遲目標。工業缺陷驗收需另外定義。 |
可一併評估的路線: Google Cloud Vision
開發評估
開發構想規格・串接尚未實測
接口能力依據官方文件或程式庫;以下產品方向、輸入、交付與驗收條件則是我們的開發評估。
確認存取後,用少量真實樣本測試一個有文件的操作。此為開發判斷,不是交期估算。
記錄產品瀏覽、官方文件點擊、規格下載與技術 Hub 點擊。這些是事件次數,不等於獨立人數或已完成串接。
本次可行性評估依實作條件判斷;尚未給定流量排名或交期承諾。