Cloud Service
Amazon Textract
文書画像や PDF から文字・表・フォームを構造を保ったまま抽出する、フルマネージドな OCR/ドキュメント解析サービス。
- 1.スキャン文書や画像から、単純な文字だけでなく表やフォームの項目と値を構造化して抽出する。
- 2.請求書や本人確認書類など、定型帳票向けの特化 API も備える。
- 3.管理サーバー不要のフルマネージドで、処理したページ数に応じた従量課金。
解決する課題
紙の帳票や PDF をデータ化するとき、従来の OCR は文字を平坦なテキスト列として返すだけで、表のセルやフォームの項目名と値の対応関係は失われがちでした。Amazon Textract は、機械学習によって文書のレイアウトを理解し、文字に加えて表やフォームの構造ごと抽出します。
- スキャン画像や PDF から**文字(行・単語)**を抽出する OCR
- 請求書・申込書などの表をセル単位で、行と列の構造を保って抽出
- フォームの「項目名と値」のペア(キーとバリュー)を関連付けて抽出
- 抽出結果を後段の検索・分析・自動入力・ワークフロー承認へ流し込む
OCR エンジンの学習やインフラ運用を自前で抱えずに、API 呼び出しだけで構造化データを得られる点が中心的な価値です。
主要概念と用語
- OCR(光学的文字認識): 画像中の文字を機械可読なテキストに変換する技術。Textract の基礎
- 同期 API: 単一ページの画像や小さな文書をその場で処理し、結果を即座に返す方式。低遅延の単発処理向け
- 非同期 API: 複数ページの PDF など大きな文書を S3 経由でジョブとして処理し、完了後に結果を取得する方式
- Block(ブロック): 抽出結果の構成要素。ページ・行・単語・表・セル・キーバリューなどの種類があり、相互の関係を持つ階層的なデータ構造
- フォーム抽出(キーバリュー): 「氏名」と「山田太郎」のように、項目名とその値を対応付けて抽出する機能
- 表抽出(テーブル): 表を行・列・セルとして認識し、表構造を保って抽出する機能
- クエリ: 「請求書番号は何か」といった自然文の問いを投げ、該当する値を返させる抽出方式
- 特化 API: 請求書・領収書向けの Analyze Expense、本人確認書類向けの Analyze ID など、定型帳票に特化した抽出 API
- 信頼度スコア: 抽出した各要素の確からしさを示す値。後段の人手確認の要否判定に使う
仕様・制限・クォータ
- 入力は一般的な画像形式と PDF に対応し、非同期処理では入力を S3 に配置するのが基本
- 結果は Block の集合からなる構造化された出力(JSON)として得られ、各要素に位置情報(バウンディングボックス)と信頼度スコアを含む
- 同期処理は単一ページ相当の小さな入力向け、複数ページの文書は非同期処理を用いるのが基本
- 1 文書あたりのページ数、ファイルサイズ、同時実行ジョブ数などにアカウント単位のクォータがあり、引き上げ申請が可能
- 手書き文字の抽出にも対応するが、印刷文字に比べ精度は内容や筆跡に依存する
対応フォーマット・上限値・対応言語は更新されるため、最新の公式ドキュメントで確認してください。
内部の仕組み
利用者から見ると、文書画像を渡すと AWS 側のマネージドな機械学習モデルが推論し、構造化データを返すブラックボックスとして扱えます。
- 同期処理: 画像のバイト列または S3 上のオブジェクトを直接渡し、その場で Block の一覧を受け取る
- 非同期処理: S3 上の文書を指定してジョブを開始し、完了をポーリングまたは通知(Amazon SNS など)で受け取ってから結果を取得する。複数ページや大きな PDF はこちらを使う
- 文字抽出だけを行う軽量な処理と、表やフォーム、クエリまで解析する高度な処理は API として分かれており、必要な機能だけを指定して呼び出す
- 抽出された要素は親子関係(ページが行を含み、表がセルを含む、など)を持つ Block として返され、利用側でこの関係をたどって表やフォームを再構成する
モデルの学習やスケーリング、ハードウェアの管理はすべて AWS 側が担います。
設計パターン / ベストプラクティス
- 非同期パイプライン化: S3 への文書アップロードをトリガに Lambda でジョブを起動し、完了通知(SNS や EventBridge)で後続処理へ流す疎結合構成
- 必要な解析だけ指定する: 単純な文字起こしで足りる場合は文字抽出のみを使い、表・フォーム解析は必要なときだけ有効化してコストと処理を抑える
- 定型帳票は特化 API を使う: 請求書・領収書なら Analyze Expense、運転免許証などの本人確認書類なら Analyze ID を使うと、項目を自前でマッピングする手間を減らせる
- 信頼度スコアで人手確認を振り分ける: スコアが一定未満の項目だけ人のレビューに回す Human-in-the-loop(A2I などと連携)を組み込み、自動化と正確性を両立する
請求書や本人確認書類のように構造が決まった帳票は、汎用のフォーム抽出で項目名を自力で対応付けるより、Analyze Expense や Analyze ID といった特化 API を使うほうが実装が簡単で精度も安定しやすいです。
運用・監視
- API 呼び出しやジョブの状態は CloudWatch のメトリクス・ログで監視する
- 非同期ジョブの完了・失敗は SNS や EventBridge で受け取り、後続処理や通知を自動化する
- API 操作の監査証跡は CloudTrail に記録される
- 失敗ジョブはエラー理由(非対応フォーマット、破損ファイル、権限不足など)を確認し、入力データと IAM 設定を見直す
複数ページ文書の解析は即時には終わりません。結果を同期的に待つ作りにせず、通知やポーリングで完了を待つ非同期設計にしてください。
コスト
- 課金は基本的に処理したページ数に対する従量制で、サーバーの常時起動費用は発生しない
- 文字抽出のみ、フォーム抽出、表抽出、クエリ、特化 API といった機能ごとに単価が異なる傾向があり、有効にした機能が増えるほどページ単価は上がる
- 必要のない高度解析を無効化し、再処理を避けることがコスト最適化につながる
具体的な単価は変動するため、料金は公式の料金ページで確認してください。少数のサンプル文書で検証してから本番のボリュームを見積もるのが安全です。
セキュリティ
- アクセス制御は IAM で行い、入出力に使う S3 バケットへの最小権限のみを付与する
- 保存データは S3 側の暗号化(KMS 管理鍵を含む)、転送は TLS で保護する
- 本人確認書類や医療文書など機微な情報を扱う場合は、入出力バケットのアクセスポリシーを限定し、抽出後のデータの保管・マスキングにも配慮する
- VPC 内のリソースからプライベートに到達したい場合は VPC エンドポイント経由のアクセスを検討する
ジョブ用の IAM ロールに広すぎる S3 権限を与えると、想定外のデータへアクセスできてしまいます。対象バケット・プレフィックスに絞った最小権限にしてください。機微文書を扱う場合は特に厳格に絞ります。
Well-Architected の観点
- 運用上の優秀性: マネージドサービスにより運用負荷を下げ、S3・Lambda・SNS・EventBridge と組み合わせてドキュメント処理パイプラインを自動化・可観測化できる
- セキュリティ: IAM の最小権限、保存・転送時の暗号化で機微文書を保護する
- コスト最適化: 従量課金のため、不要な高度解析を避け、必要な機能だけを指定する
- 信頼性: 非同期・疎結合な構成にし、ジョブ失敗時の再試行や通知、低信頼度項目の人手確認を組み込む
試験で問われるポイント
- 「文書画像から文字・表・フォームを抽出する AWS サービスは?」→ Amazon Textract
- 「単なる文字だけでなく、項目名と値の対応や表構造まで欲しい」→ フォーム抽出・表抽出(汎用 OCR との違い)
- 「請求書や領収書」→ Analyze Expense、「運転免許証など本人確認書類」→ Analyze ID
- 「複数ページの大きな PDF」→ 非同期 API、「単一ページの即時処理」→ 同期 API
- 抽出テキストの感情分析やエンティティ抽出は Amazon Comprehend、画像内の物体やシーンの認識は Amazon Rekognition と組み合わせる
関連サービス・比較
画像を扱う点で混同しやすい Amazon Rekognition と比較します。Rekognition は画像・動画の内容認識が主目的で、文書の構造化抽出は Textract の役割です。
| 観点 | Amazon Textract | Amazon Rekognition |
|---|---|---|
| 主目的 | 文書からの文字・表・フォーム抽出 | 画像・動画の内容認識 |
| 代表的な用途 | 帳票のデータ化・OCR・自動入力 | 物体やシーン検出・顔分析・コンテンツ管理 |
| 扱う構造 | 表やフォームの構造を保って抽出 | 画像中のラベルや位置を検出 |
| 文字の扱い | 文書レイアウトを理解した高度な抽出 | 画像内テキストの簡易検出が中心 |
ハンズオン / CLI例
# S3 上の単一ページ画像から文字・フォーム・表を解析(同期)
aws textract analyze-document \
--document '{"S3Object":{"Bucket":"my-input-bucket","Name":"form.png"}}' \
--feature-types '["FORMS","TABLES"]'
# 複数ページ PDF の文字抽出を非同期で開始し、ジョブ ID を取得
aws textract start-document-text-detection \
--document-location '{"S3Object":{"Bucket":"my-input-bucket","Name":"invoice.pdf"}}'
# 開始したジョブの結果を取得(SUCCEEDED になったら Blocks を参照)
aws textract get-document-text-detection \
--job-id <ここにジョブ ID>
AWS Service
Amazon Textractを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
AI / 機械学習
比較で見る軸
クラウド: AWS / カテゴリ: AI / 機械学習 / 難易度: basic
導入後に効く点
請求書や本人確認書類など、定型帳票向けの特化 API も備える。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- AI / 機械学習
- 難易度
- basic
- 関連資格
- AIF-C01
- 設計柱
- operational
判断チェックリスト
- 自社の用途が「AI / 機械学習 / operational」に近いか確認する。
- 強みである「スキャン文書や画像から、単純な文字だけでなく表やフォームの項目と値を構造化して抽出する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。