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:処理したテキスト量による課金