AWSのOCRサービス完全ガイド:Textract、Rekognition、Comprehendの使い分け
更新日:2025/02/09

AWSのOCRサービスとは
AWSが提供するOCR(光学文字認識)サービスは、ビジネスのデジタル化を加速させる重要なツールです。主に以下の3つのサービスがあります:
- Amazon Textract
- PDFや画像からのテキスト抽出に特化
- S3と連携した大量文書の処理が可能
- フォームや表形式データの構造化抽出
- Amazon Rekognition
- 画像・動画分析がメイン機能
- リアルタイムの文字認識が可能
- クラウドネイティブな統合性
- Amazon Comprehend
- 抽出されたテキストの意味理解
- 自然言語処理による高度な分析
- マルチ言語対応
各サービスの特徴と使い分け
Amazon Textract
- 最適な用途:
- 請求書や領収書の自動処理
- フォームデータのデジタル化
- 大量の文書からのデータ抽出
- 主な機能:
- 表形式データの抽出
- キーバリューペアの認識
- PDFドキュメントの処理
Amazon Textractのリージョン対応状況
推奨リージョンの選び方:
- 日本国内向けサービスの場合
- アジアパシフィック(シンガポール)
- 東京リージョンが未対応のため、地理的に最も近い
- 安定した低レイテンシー
- 日本との時差が少ない
- グローバルサービスの場合
- 米国東部(バージニア北部)
- AWSの最大リージョン
- 最も安定している
- 料金が比較的安価
- 新機能が最も早く導入される
AWS Textractを使用したNode.jsアプリケーション
AWS SDK Textractのインストール
npm install @aws-sdk/client-textract
IAM権限の設定
必要なIAMポリシー:
AmazonTextractFullAccess
AWS SDK for JavaScriptを使用して下記の実装が可能です
const { TextractClient, DetectDocumentTextCommand } = require('@aws-sdk/client-textract');
// Textractクライアントの初期化
const textractClient = new TextractClient({
region: 'リージョン',
credentials: {
accessKeyId: 'アクセスキー',
secretAccessKey: 'シークレットキー'
}
});
// OCR処理のエンドポイント
app.post('/api/ocr', upload.single('file'), async (req, res) => {
try {
// 1. ファイルの検証
if (!req.file) {
return res.status(400).json({ error: 'ファイルが提供されていません' });
}
// 2. 画像形式のチェック
const allowedMimeTypes = ['image/jpeg', 'image/jpg', 'image/png'];
if (!allowedMimeTypes.includes(req.file.mimetype)) {
return res.status(400).json({
error: 'サポートされていないファイル形式です。JPEG, PNGのみ対応'
});
}
// 3. S3へのアップロード
const fileKey = `uploads/ocr-${Date.now()}-${req.file.originalname}`;
await s3Client.send(new PutObjectCommand({
Bucket: 'バケット名',
Key: fileKey,
Body: req.file.buffer
}));
// 4. Textractによる文字認識
const textractResponse = await textractClient.send(new DetectDocumentTextCommand({
Document: {
S3Object: {
Bucket: 'バケット名',
Name: fileKey
}
}
}));
// 5. 認識結果の整形
const extractedText = textractResponse.Blocks
.filter(block => block.BlockType === 'LINE')
.map(block => block.Text)
.join('\n');
res.json({
success: true,
text: extractedText
});
} catch (error) {
res.status(500).json({ error: 'OCR処理に失敗しました' });
}
});
PDFの処理が難しい理由
- 構造の複雑さ
- テキスト、画像、表が混在
- 複数のレイヤーが重なり合っている
- ページごとに異なるレイアウト
- Textractの特別な設定
AWS SDK for JavaScript (v3) の Textract Client 内の別のコマンドAnalyzeDocumentCommandが必要になります。
- 特別な設定(FeatureTypes)が必要
- 同期・非同期の使い分けが必要
- 実用面の課題
- 処理時間が画像より大幅に長い
- 複数ページの処理が必要
- コストが画像処理より高額
Amazon Rekognition
- 最適な用途:
- 商品ラベルの読み取り
- 看板やポスターの文字認識
- 動画内のテキスト検出
- 主な機能:
- リアルタイム文字認識
- 多言語テキスト検出
- 画像内の複数テキスト認識
Amazon Comprehend
- 最適な用途:
- 文書の自動分類
- 重要情報の抽出
- センチメント分析
- 主な機能:
- エンティティ認識
- キーフレーズ抽出
- 文書分類
導入時の注意点とベストプラクティス
- ストレージの考慮
- S3との連携が推奨
- 適切なIAMロール設定
- データ保持期間の設定
- コスト最適化
- 処理量に応じたスケーリング
- バッチ処理の活用
- 無駄なAPI呼び出しの削減
- セキュリティ対策
- データ暗号化の実装
- アクセス権限の適切な設定
- 監査ログの有効化
料金比較
サービスごとの料金体系(概算):
- Textract:ページ単位の課金
- Rekognition:画像/動画の処理時間による課金
- Comprehend:処理したテキスト量による課金

-
検索
(例) debug search etc.. -
カテゴリー
-
Windows↔️Macで文字化けしたZIPファイルを解決する方法【7-Zip活用ガイド】
更新日:2025/02/18
-
本番環境 / ステージング環境 でのGitブランチ切り替え方法と注意点 Note: witching to ‘origin/new_feature’. You are in ‘detached HEAD’ state…
更新日:2025/02/16
-
複数のWordPressサイトをまとめて検索・管理するには?
更新日:2025/02/16
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/14
-
【WordPress】カスタムフィールド作成の仕方「ACF」Advanced Custom Fieldsの使用法
更新日:2024/06/10
298 view
-
mixhostでのWordPress利用について
更新日:2024/04/02
295 view
-
scrollHint
更新日:2024/03/13
246 view
-
LOLIPOPでWordPressインストール(サブディレクトリにインストールしたWordPressをドメイン直下で表示)
更新日:2024/06/13
235 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
234 view
-
Sass導入方法
更新日:2024/03/13
206 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
-
【Snow Monkey】Googleサーチコンソール登録
更新日:2024/05/28
157 view
-
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
129 view
-
【ショートコード】編集画面で任意の場所にHTMLファイルを挿入
更新日:2024/01/26
122 view
-
tailwindcss使い方
更新日:2024/03/13
119 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
119 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
105 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
83 view
-
【2022年】WordPressセキュリティー対策おすすめプラグイン2選
更新日:2022/02/21
70 view
-
【必須】ワードプレスセキュリティー対策まとめ【2022年】
更新日:2025/02/16
69 view
-
「THE THOR」を半年使ってみて、レビュー【メリット・デメリット】
更新日:2025/02/16
45 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
43 view
-
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
41 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
-
THE THOR(ザ・トール)でグーグルアドセンスを使う
更新日:2025/02/16
39 view
-
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/02/06
34 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
-
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
28 view
-
VSCodeプラグイン「 Pretter – Code formatter」「PHP Intelephense 」
更新日:2025/01/06
26 view
-
【CSS JavaScript サンプルコード】アコーディオン 続きを読む(Read more)Toggle 折りたたみコンテンツ
更新日:2025/02/05
23 view
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/16
22 view
-
【WordPressプラグイン】人気記事 管理 WordPress Popular Posts 実践的なカスタマイズ
更新日:2025/02/15
22 view
-
Googleアドセンスとは?〜前編〜
更新日:2025/02/16
22 view
-
【WordPress】プラグイン不使用でカスタムタクソノミーを設定、絞り込み検索について
更新日:2025/01/26
18 view
-
スマートフォンファーストのWeb開発実践ガイド
更新日:2025/01/23
16 view
-
WordPressでカスタムフィールドを使った記事のスコアリングシステムの実装
更新日:2025/01/27
15 view
-
AWSのOCRサービス完全ガイド:Textract、Rekognition、Comprehendの使い分け
更新日:2025/02/09
14 view