Cloud Service
OCI Document Understanding
文書画像やPDFから文字・表・キーバリュー・分類を機械学習で抽出するOCIのマネージドAIサービス。AWS Textract に相当する位置づけ。
- 1.請求書や帳票などの文書から文字や表やキーバリューを抽出する。
- 2.事前学習済みモデルで即利用でき、同期と非同期の両方に対応する。
- 3.事前学習なしで使え、AWS の Textract に相当する。
解決する課題
請求書・領収書・申込書・身分証など、紙やPDFの文書から情報を取り出す作業は、手入力に頼ると時間がかかり、ミスも避けられません。OCI Document Understanding は、こうした非構造化文書を機械学習で読み取り、後続のシステムが扱える構造化データに変換します。
- スキャン画像やPDFの文字(テキスト)を抽出したい(OCR)
- 表やフォームのキーと値の対応を取り出し、帳票処理を自動化したい
- 文書が請求書か領収書かといった種類を自動分類したい
- 文書中の言語を判定して多言語の処理を振り分けたい
- 自前でOCRやMLモデルを構築・運用せず、API呼び出しだけで利用したい
主要概念と用語
- ドキュメント分析(Document Analysis): 文書に対して実行する処理の総称。テキスト抽出・表抽出・キーバリュー抽出・分類・言語検出などの**機能(Feature)**を組み合わせて指定する
- テキスト抽出(Text Extraction / OCR): 文書中の文字を、単語・行・ページ単位で位置情報(バウンディングボックス)付きで取り出す
- 表抽出(Table Extraction): 表構造を認識し、行・列・セルとして抽出する
- キーバリュー抽出(Key Value Extraction): 請求書や領収書などの定型帳票から、項目名と値の組(合計金額、発行日など)を取り出す
- ドキュメント分類(Document Classification): 文書の種類(請求書・領収書・履歴書など)を判定する
- 言語検出(Language Classification): 文書に使われている言語を識別する
- 事前学習済みモデル(Pretrained Model): Oracle が用意したモデル。学習なしで即座に利用できる
- カスタムモデル(Custom Model): 自社の文書で学習させ、分類やキーバリュー抽出の精度を高めたモデル
- 同期処理(Analyze Document)と非同期処理(Document Job): 単一文書を即時に処理する同期APIと、大量・複数ページをまとめて処理する非同期ジョブの2系統がある
仕様・制限・クォータ
- 入力は主に画像(PNG/JPEG/TIFF)と PDF に対応。文書の品質(解像度・傾き・ノイズ)が抽出精度に影響する
- 同期処理は1リクエストあたり少数ページ・小容量の文書向け、非同期ジョブは多ページ・複数文書のバッチ処理向けという使い分けがある
- 非同期ジョブは入力・出力に Object Storage を使い、結果(抽出データのJSON)をバケットへ書き出す
- 抽出結果には、各要素の信頼度スコア(confidence)と位置情報が含まれ、後処理での閾値判定に使える
- カスタムモデルの学習には、ラベル付きの教師データが必要
- 1リクエストあたりのページ数・ファイルサイズ・同時実行数などにはサービス制限があり、リージョンやテナンシによって異なる
- 対応する文書種類・言語・上限値などの具体的な数値は変動しうるため、公式ドキュメントで最新値を確認する
内部の仕組み
OCI Document Understanding は、入力文書に対して指定した機能(Feature)を順に適用するパイプラインとして動作します。
- 文書を受け取り、内部でOCR(光学文字認識)を行ってページ上の文字とその位置を取得する
- 要求された機能に応じて、表認識・キーバリュー抽出・分類・言語検出などのモデルを適用する
- 抽出結果を、要素ごとの信頼度スコアとバウンディングボックスを含む構造化データ(JSON)として返す
同期APIでは結果がレスポンスとして即時に返り、非同期ジョブでは入力をObject Storageから読み、処理後に結果を指定バケットへ出力します。事前学習済みモデルはそのまま使え、精度を高めたい場合は自社文書で学習させたカスタムモデルに切り替えます。後続の自動化では、抽出されたキーバリューを基幹システムへ連携したり、信頼度が低い項目だけ人手レビューに回したりする設計が一般的です。
少数ページを即時に処理したいなら同期(Analyze Document)、**大量・多ページをまとめて処理するなら非同期ジョブ(Object Storage 入出力)**を使います。非同期は結果をバケットへ書き出すため、Events や Functions と組み合わせてパイプラインを構築しやすいのが利点です。
設計パターン / ベストプラクティス
- 必要な機能だけを指定する。テキスト・表・キーバリュー・分類のうち、要件に合う Feature に絞って呼び出しコストと処理時間を抑える
- 入力品質を整える。解像度を確保し、傾き補正やノイズ除去を前処理で行うと抽出精度が上がる
- 信頼度スコアで分岐する。閾値以上は自動処理、閾値未満は人手レビューへ回す「Human-in-the-loop」を組み込む
- 定型帳票はカスタムモデルで精度を高める。自社特有のレイアウトはカスタム学習で改善する
- 非同期ジョブ+Object Storage+Events/Functionsで、文書がアップロードされたら自動で処理・後続連携するパイプラインを構成する
- 大量バッチは非同期、リアルタイム1件は同期と、ワークロード特性で経路を分ける
運用・監視
- OCI Monitoring でAPI呼び出し数・レイテンシ・エラー率を監視し、スループットや失敗の傾向を把握する
- OCI Audit に操作が記録されるため、いつ・誰が・どの文書を処理したかを追跡できる
- 非同期ジョブは**ジョブのステータス(成功/失敗/進行中)**を確認し、失敗時は入力文書の形式や品質、権限設定を見直す
- 信頼度スコアの分布を運用指標として継続観察し、低スコアが増えたら入力品質やモデル(カスタム化)を再検討する
- 抽出結果のJSONはObject Storageに保存されるため、ライフサイクルポリシーで保持期間を管理する
コスト
OCI Document Understanding は従量課金で、主に「処理した文書(ページ)数」と「適用した機能の種類」に応じて課金されます。サーバーを常時起動するコストはなく、呼び出した分だけの料金です。事前学習済みモデルは学習コストが不要ですが、カスタムモデルは学習・管理に追加の考慮が必要です。非同期処理では入出力に使うObject Storage の保管料も別途かかります。
| コスト要素 | 課金の考え方 | 最適化のポイント |
|---|---|---|
| 処理ページ数 | 処理した文書のページ数に応じた従量 | 必要なページだけ送り、不要な機能呼び出しを避ける |
| 適用機能 | テキスト・表・キーバリュー・分類など機能ごと | 要件に合う Feature だけを指定する |
| カスタムモデル | 学習・推論に関わる利用 | 定型帳票など効果が高い領域に絞って導入する |
| Object Storage | 非同期の入出力データの保管料 | ライフサイクルで結果データの保持期間を最適化する |
セキュリティ
- アクセス制御は IAM ポリシーで行い、Document Understanding を利用できるグループや、入出力に使う Object Storage バケットへの権限を最小化する
- 非同期ジョブが Object Storage を読み書きするには、動的グループとリソースプリンシパルで適切な権限を委譲する
- 文書には個人情報や機密が含まれることが多いため、**入出力バケットの暗号化(OCI Vault のカスタマー管理キー)**やアクセス制限を徹底する
- 転送時は TLS で保護され、保存時はObject Storage側で暗号化される
- 監査は OCI Audit に記録され、処理操作を追跡できる
個人情報を含む文書を、アクセス制御の緩い公開バケットや権限過剰なジョブで処理するのは NG。入出力バケットは非公開とし、IAM ポリシーと動的グループで権限を最小化し、機密度に応じて Vault のカスタマー管理キーで暗号化してください。抽出結果のJSONにも原文の機密情報が含まれる点に注意します。
Well-Architected の観点
- 運用上の優秀性(Operational Excellence): 手作業の文書処理を機械学習で自動化し、API呼び出しだけで利用できるため、OCRやMLモデルの構築・運用負荷を負わずに帳票処理パイプラインを標準化・自動化できる
- 信頼度スコアによる自動/人手の振り分け(Human-in-the-loop)を組み込むことで、自動化の範囲を保ちながら品質を担保し、運用の継続的改善につなげられる
試験で問われるポイント
- OCI Document Understanding は文書からテキスト・表・キーバリューを抽出し、分類・言語検出も行うマネージドAIサービスである
- 事前学習済みモデルで学習なしに即利用でき、精度を高めたい定型帳票にはカスタムモデルを使う点
- **同期(単一・即時)と非同期ジョブ(大量・Object Storage 入出力)**の使い分けを区別する
- 抽出結果には信頼度スコアと位置情報が含まれ、閾値で自動処理と人手レビューを振り分けられること
- 対応する AWS サービスは Amazon Textract(文字・表・フォーム抽出)に相当すること
- 非同期処理は Object Storage を入出力に使い、Events や Functions と組み合わせてパイプライン化できる点
関連サービス・比較
| 観点 | OCI Document Understanding | AWS の対応 |
|---|---|---|
| 位置づけ | 文書からの情報抽出AIサービス | Amazon Textract |
| テキスト抽出 | OCRで単語・行・ページを位置付きで抽出 | DetectDocumentText(OCR) |
| 表・フォーム | 表抽出・キーバリュー抽出に対応 | AnalyzeDocument の TABLES・FORMS |
| 分類・言語 | 文書分類・言語検出に対応 | 種類判定は Comprehend 等と組み合わせ |
| 処理方式 | 同期 と 非同期ジョブの2系統 | 同期 と 非同期(StartDocumentAnalysis) |
| カスタム | カスタムモデルで精度向上 | カスタムクエリ・Adapter 等 |
| 入出力 | 非同期は Object Storage を利用 | 非同期は S3 を利用 |
ハンズオン / CLI例
# 1. 同期処理:単一文書からテキストと表とキーバリューを抽出
# features に抽出したい機能(Feature)を指定する
oci ai-document analyze-document \
--document '{"source":"OBJECT_STORAGE","namespaceName":"<namespace>","bucketName":"docs","objectName":"invoice.pdf"}' \
--features '[{"featureType":"TEXT_EXTRACTION"},{"featureType":"TABLE_EXTRACTION"},{"featureType":"KEY_VALUE_EXTRACTION"}]'
# 2. 非同期ジョブ:複数文書をまとめて処理し、結果を出力バケットへ
oci ai-document document-job create-processor-job \
--compartment-id <compartment-ocid> \
--input-location '{"sourceType":"OBJECT_STORAGE_LOCATIONS","objectLocations":[{"namespaceName":"<namespace>","bucketName":"docs","objectName":"batch/inv1.pdf"}]}' \
--output-location '{"namespaceName":"<namespace>","bucketName":"results","prefix":"output/"}' \
--processor-config '{"processorType":"GENERAL","features":[{"featureType":"TEXT_EXTRACTION"}]}'
# 3. 非同期ジョブのステータスを確認
oci ai-document document-job get-processor-job \
--processor-job-id <processor-job-ocid>
OCI Service
OCI Document Understandingを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
AI / 機械学習
比較で見る軸
クラウド: OCI / カテゴリ: AI / 機械学習 / 難易度: basic
導入後に効く点
事前学習済みモデルで即利用でき、同期と非同期の両方に対応する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- AI / 機械学習
- 難易度
- basic
- 関連資格
- —
- 設計柱
- operational
判断チェックリスト
- 自社の用途が「AI / 機械学習 / operational」に近いか確認する。
- 強みである「請求書や帳票などの文書から文字や表やキーバリューを抽出する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。