目次Category
はじめに
今回の記事では、Amazon Textract、Amazon Translate、Amazon Comprehendを使い、英語の帳票を読み取って日本語へ翻訳し、レビューの感情まで分析します。
単純なOCRだけでなく、フォームのKey-Value、表構造、手書き文字の読み取りまで確認し、その結果を後続の翻訳・自然言語処理へつなげるのが今回のポイントです。
- 使用リージョンをアジアパシフィック(ソウル)へ設定する
- Amazon TextractのAnalyze Documentで画像を読み込む
- FormsでKey-Value、Tablesで表構造を確認する
- 英語の手書きレビューをTextから取り出す
- Amazon Translateで英語レビューを日本語へ翻訳する
- Amazon Comprehendで日本語レビューのSentimentを分析する
- 人間の予想とAIの結果を比較し、認識・翻訳・分析のつながりを振り返る
購入明細+手書きレビュー画像 ↓ Amazon Textract ・印刷文字の読み取り ・Forms(キーと値) ・Tables(表構造) ・英語の手書きレビュー ↓ Amazon Translate 英語 → 日本語 ↓ Amazon Comprehend Sentiment Analysis ↓ POSITIVE / NEGATIVE / NEUTRAL / MIXED
0. 今回使用するAWSサービスについて
| サービス | 使う機能 | 役割 |
|---|---|---|
| Amazon Textract | Analyze Document | 画像から文字・フォーム・テーブルを抽出 |
| Amazon Translate | Real-time translation | 取り出した英語レビューを日本語へ翻訳 |
| Amazon Comprehend | Real-time analysis / Built-in / Sentiment | レビューの感情を分析 |
0-1. Amazon Textract
Amazon Textractでは、画像や文書から文字を読み取るだけでなく、今回の帳票に含まれるForms(Key-Value)やTables(表構造)も確認します。手書きレビューはRaw Text / Textの部分から確認します。
※こちらサービスは英語にしか対応していないため、対応リージョンも少ないです
0-2. Amazon Translate
Amazon Translateでは、Textractで取り出した英語レビューだけをEnglish → Japaneseでリアルタイム翻訳します。
0-3. Amazon Comprehend
Amazon Comprehendでは、Translateが返した日本語レビューをBuilt-inモデルで分析し、POSITIVE / NEGATIVE / NEUTRAL / MIXEDのSentimentとConfidence Scoreを確認します。
1. 事前準備とリージョン設定
1-1. 使用リージョンを確認する
使用するリージョンはアジアパシフィック(ソウル) / ap-northeast-2を利用してください。
今回のハンズオンでは、Amazon Textract・Translate・Comprehendの対応リージョンで進めるため、ソウルに統一しています。
| 項目 | 設定値 |
|---|---|
| リージョン | アジアパシフィック(ソウル) |
| リージョンコード | ap-northeast-2 |
1-2. 必要なもの
- AWSマネジメントコンソールへログインできるアカウント
- Amazon Textract / Translate / Comprehendを利用できる権限
- 今回使用する「購入明細+手書きレビュー画像」(1-3に添付している画像をローカルに落として利用してください)
1-3. 使用する画像を確認する
今回の入力画像は、左側にInvoice / Delivery Note、右側にProduct Reviewを配置した1枚の帳票です。右側には青色の手書きレビュー、署名、日付、丸で囲んだ評価値が含まれています。

今回のハンズオンで主に利用する部分は右側のProduct Review内の、
The headphones sound great and are very comfortable. However, the battery drains faster than I expected. Overall, I like the product, but the battery life is disappointing.
の部分です。
| 項目 | 推奨 |
|---|---|
| ページ数 | 1ページ |
| 形式 | PNG または JPEG |
| サイズ | 10 MB未満 |
| 状態 | 文字や表が切れていないこと |
Amazon TextractはJPEG / PNG / PDF / TIFFをサポートしますが、このハンズオンでは操作を単純にするため1ページのPNGまたはJPEGを使用します。
1-4. AWSへログインしてソウルを選択する
- AWSマネジメントコンソールへログインします。SSOを使用している場合は、普段利用しているSSOの手順でログインします。
- リージョン一覧から
アジアパシフィック (ソウル)を選択します。リージョンコードはap-northeast-2です。 - 画面右上が「ソウル」になっていることを確認します。
画面右上のリージョンがソウルになっていればOKです。
2. Amazon Textractで帳票を読み取る
Analyze Documentへ画像をアップロードし、Forms、Tables、Raw Text / Textの順に結果を確認します。文字列そのものだけでなく、Key-Valueや表の行・列といった文書構造まで見ていきます。
2-1. Amazon Textractを開く
- AWSマネジメントコンソール上部の検索欄へ
Amazon Textractと入力します。 - Amazon Textractを選択します。
- 左側のナビゲーションメニューでDemos配下の
Analyze Documentを開きます。
今回は単なる文字認識だけでなく、Forms、Tables、Raw Text / Textを確認するためAnalyze Documentを使用します。
2-2. 画像をアップロードする
- Analyze Document画面で
Upload documentを探します。 - Choose documentまたはファイル選択ボタンを選択し、購入明細+手書きレビュー画像を指定します。
- 画像プレビューが表示されたら、画像の欠けなどがないことを確認します。
PNG/JPEGであること、ファイルが破損していないこと、ファイルサイズが大きすぎないことを確認してください。
画像のサイズはできる限り小さいことをお勧めします。
2-3. FormsとTablesを有効にする
- Analyze Document画面の
Configure documentを開きます。 - Data outputまたはChoose data outputsで
FormsをONにします。 - 続けて
TablesをONにします。 - 今回はQueries、Signatures、LayoutはOFFのままとします。表示されていない項目は操作不要です。
- FormsとTablesがONであることを確認し、
Apply configurationを選択します。 - Results領域に分析結果が表示されることを確認します。
Forms : ON Tables : ON Queries : OFF Signatures : OFF Layout : OFF
Forms / Tablesなどの結果を確認できる状態になればOKです。
2-4. FormsでKey-Valueを確認する
結果からFormsを選択します。今回の画面では、左側がKey、右側がValueの2列として表示される想定です。
この項目はあくまで動作の詳細部分を確認するだけなので概念的な理解を行いたい場合は2-7まで飛ばしていただいて構いません。
| Key | Value |
|---|---|
| Order ID : | ORD-2026-0831-001 |
画像左側について、次のKeyとValueが対応していることを確認します。
| Key(左列) | 期待するValue(右列) |
|---|---|
| Order ID : | ORD-2026-0831-001 |
| Order Date : | August 31, 2026 |
| Customer : | Taro Yamada |
| Seller : | Sample Store Inc. |
| Payment Method : | Credit Card |
| Shipping Address : | 1-2-3 Ebisu, Shibuya-ku, Tokyo 150-0013 |
Invoice / Delivery Noteが表の上部に単独行として表示されても問題ありません。文書タイトルのため、Key-ValueのValueを持たない場合があります。
右側のProduct Reviewでは、Product Purchased、Overall Rating、Review Comment、Customer Signature、Review Dateといった項目が含まれています。
| Key候補 | 画像上の内容 |
|---|---|
| Product Purchased : | Wireless Headphones |
| Overall Rating : | 4(4を丸で囲んでいる) |
| Review Comment : | 手書きレビュー本文 |
| Customer Signature : | Taro Yamada |
| Review Date : | Aug 31, 2026 |
Overall Ratingの丸囲み数字や、長い手書きのReview Commentは、FormsのValueとして期待どおりに関連付かず、Text側で認識されることがあります。このハンズオンでは、Formsの成功条件はまず左側の明細項目で確認し、手書き文字は後のTextで確認します。
結果を次の表に記録しておくと、画像上の正解値とTextractの出力を比較できます。
| Key | 画像上の正解値 | Textract結果 | 一致 |
|---|---|---|---|
| Order ID | ORD-2026-0831-001 | □ | |
| Order Date | August 31, 2026 | □ | |
| Customer | Taro Yamada | □ | |
| Seller | Sample Store Inc. | □ | |
| Payment Method | Credit Card | □ | |
| Shipping Address | 1-2-3 Ebisu, Shibuya-ku, Tokyo 150-0013 | □ |
TextractのFormsは文字を読むだけでなく、左列の「Order ID :」に右列の「ORD-2026-0831-001」が対応している、というKey-Valueの関係まで認識します。
2-5. Tablesで表構造を確認する
結果からTablesを選択し、No. / Product / Quantity / Unit Price / Amountが列として認識されていることを確認します。
No. : 1 Product : Wireless Headphones Quantity : 1 Unit Price : $49.99 Amount : $49.99
| No. | Product | Quantity | Unit Price | Amount |
|---|---|---|---|---|
| 1 | Wireless Headphones | 1 | $49.99 | $49.99 |
| 2 | Mobile Battery | 1 | $29.99 | $29.99 |
| 3 | USB-C Cable | 1 | $9.99 | $9.99 |
| 4 | Fast Charger | 1 | $19.99 | $19.99 |
合計欄も確認します。
Subtotal : $109.96 Shipping : $0.00 Discount : -$20.00 Total : $89.96
合計欄は商品一覧とは別の表として認識される場合があります。これは異常ではありません。
Textractは「Wireless Headphones」「1」「$49.99」を別々の文字として読むだけでなく、同じ行のProduct・Quantity・Unit Price・Amountという構造として扱えます。
2-6. Raw Text / Textで手書きレビューを確認する
文書全体の文字列を確認できる結果を開きます。画面によって名称がRaw textまたはTextになっている場合があります。
Product Review付近で、Product Purchased、Wireless Headphones、Overall Rating、Review Commentといった文字列を探します。表示順や改行が画像上の配置と多少前後しても問題ありません。
Product Review Product Purchased: Wireless Headphones Overall Rating: 1 2 3 4 5 Review Comment: The headphones sound great and are very comfortable. However, the battery drains faster than I expected. Overall, I like the product, but the battery life is disappointing. Customer Signature: Taro Yamada Review Date: Aug 31, 2026
上記は画像上の正解内容を整理したものです。Textractの実際の出力では、句読点、改行、読み取り順、丸で囲んだ4の扱いなどが完全には一致しない場合があります。
特にレビュー本文の次の4行を探します。
The headphones sound great and are very comfortable. However, the battery drains faster than I expected. Overall, I like the product, but the battery life is disappointing.
3文目が画像上で2行に分かれているため、Textractでも2つのLineとして出力される可能性があります。
必要に応じて、次のようにTextract結果を記録します。
1行目: ________________________________________________________ 2行目: ________________________________________________________ 3行目: ________________________________________________________ 4行目: ________________________________________________________
元画像と比較し、headphones / comfortable / battery / expected / disappointingなどが正しく読めているか確認します。レビュー以外ではTaro Yamada、Aug 31, 2026、4も確認できます。
手書き文字が100%一致しなくても失敗ではありません。特に丸で囲んだ評価値や署名は、通常の印刷文字より認識結果が変化する可能性があります。認識誤差が後続の翻訳・感情分析にどう影響するかも今回の観察対象です。
2-7. Review Commentだけをコピーする
Textractの読み取り結果から、Review Commentの本文だけを選択します。Product Review、商品名、評価値、ラベル、署名、日付、左側の明細情報は含めません。
The headphones sound great and are very comfortable. However, the battery drains faster than I expected. Overall, I like the product, but the battery life is disappointing.
Textract側で3文目が1行に連結されている場合は、その出力をそのままコピーして構いません。
また、1〜2文字程度の誤認識で文章として意味が通る場合は、Textractが出力した文章を修正せず、そのままAmazon Translateへ渡します。これは、画像認識 → 翻訳 → 感情分析という一連の流れの中で、前段の認識結果が後段へどう影響するかを見るためです。
Review Comment本文だけをコピーできればOKです。
3. Amazon Translateで英語レビューを日本語へ翻訳する
3-1. Amazon Translateを開く
- 上部検索欄に
Amazon Translateと入力し、Amazon Translateを開きます。 - 左側メニューから
Real-time translationを開きます。 - Translation領域にタブがある場合は
Textを選択します。今回はファイルそのものではなく、Textractで取得した文字列を翻訳します。
3-2. 翻訳設定を行う
| 項目 | 設定値 |
|---|---|
| 入力 | Text |
| Source language | English |
| Target language | Japanese |
今回は英語であることが分かっているため、Source languageはAutoではなくEnglishを明示的に選択します。
標準翻訳だけを確認するため、Additional settingsは次のとおりです。
Custom terminology : 使用しない Formality : 指定しない Profanity masking : 使用しない Brevity : 使用しない
3-3. レビューを貼り付けて日本語訳を確認する
Source language側の入力欄へ、Textractからコピーしたレビューを貼り付けます。
The headphones sound great and are very comfortable. However, the battery drains faster than I expected. Overall, I like the product, but the battery life is disappointing.
Target language側にリアルタイムで翻訳された日本語が表示されます。翻訳イメージは次のとおりです。
ヘッドホンの音は素晴らしく、とても快適です。 しかし、バッテリーの消耗が予想よりも早いです。 全体的に、この製品は気に入っていますが、バッテリー寿命にはがっかりしています。
実際の翻訳結果はモデルなどにより表現が異なる場合があります。必要なのはキーワードになるので完全一致する必要はありません。
3-4. 翻訳後も意味が維持されているか確認する
レビューには肯定的な要素と否定的な要素の両方が含まれています。日本語訳でも両方の意味が残っているか確認します。
| 肯定的な要素 | 否定的な要素 |
|---|---|
| sound great | battery drains faster |
| very comfortable | battery life is disappointing |
| I like the product |
確認後、Target language側の日本語レビュー全文をコピーします。
Textractで抽出した英語レビューから日本語レビューを取得できればOKです。
4. Amazon Comprehendで感情分析する
4-1. Amazon Comprehendを開く
- 上部検索欄に
Amazon Comprehendと入力し、Amazon Comprehendを開きます。 - 左側メニューから
Real-time analysisを開きます。 - Input type内のAnalysis typeで
Built-inを選択します。
Built-inは、AWSが用意した学習済みモデルをそのまま使用する方式です。今回はカスタム分類モデル、カスタムエンティティモデル、Comprehendエンドポイントは作成しません。
4-2. 分析前に人間が感情を予想する
Comprehendを実行する前に、自分でレビューの感情を予想します。今回の想定はMIXEDです。
| 肯定的な内容 | 否定的な内容 |
|---|---|
| 音が良い | バッテリーの減りが早い |
| 快適 | バッテリー寿命にがっかりしている |
| 製品自体は気に入っている |
Comprehendが必ずMIXEDを最高スコアにするとは限りません。予想と実際の機械学習モデルの判定を比較することが目的です。
4-3. 日本語レビューを分析する
- Real-time analysis画面にサンプル文章が表示されている場合は削除します。
- Amazon Translateで取得した日本語レビュー全文を貼り付けます。手順書の例文ではなく、実際にTranslateが返した日本語を使用します。
- Analysis typeが
Built-inであることを再確認します。 Analyzeを選択します。
4-4. SentimentとConfidence Scoreを確認する
Analyze後、結果領域のInsightsからSentimentを開きます。4種類の判定は次の意味です。
| 判定 | 意味 |
|---|---|
| POSITIVE | 全体として肯定的 |
| NEGATIVE | 全体として否定的 |
| NEUTRAL | 肯定・否定のどちらにも大きく偏らない |
| MIXED | 肯定・否定が混在 |
表示されたConfidence Scoreを記録します。
POSITIVE:____________ NEGATIVE:____________ NEUTRAL :____________ MIXED :____________
最も高かったSentimentも記録します。
最も高かったSentiment: ________________________________
InsightsにLanguageが表示されている場合は開きます。今回の入力は日本語なので、Japaneseまたはjaに相当する結果になっていることを確認します。
5. 人間の予想とAIの結果を比較する
5-1. 予想と結果を並べる
自分の予想: MIXED Amazon Comprehend: ________________________________ 一致した? ○ / ×
5-2. 一致しなかった場合に考察する
- Textractで手書き文字の誤認識がなかったか
- Translateでニュアンスが変化していないか
- 肯定的な表現と否定的な表現の強さに差がないか
- 人間が「混在」と感じても、モデルは文章全体を別の感情として評価していないか
考察: ________________________________________________________ ________________________________________________________ ________________________________________________________
5-3. ハンズオン全体を振り返る
| サービス | 今回確認した流れ |
|---|---|
| Amazon Textract | 画像 → 文字を抽出 → FormsでKey-Valueを認識 → Tablesで表構造を認識 → 手書きレビューをテキスト化 |
| Amazon Translate | 英語レビュー → English → Japanese → 日本語レビュー |
| Amazon Comprehend | 日本語レビュー → Sentiment → POSITIVE / NEGATIVE / NEUTRAL / MIXED |
6. よくあるミス
6-1. Amazon Textractが利用できない
画面右上のリージョンがアジアパシフィック(ソウル) / ap-northeast-2になっているか確認します。元のハンズオンでは東京リージョンではAmazon Textractを利用できない前提で進めています。
6-2. AccessDeniedが表示される
IAM権限不足の可能性があります。研修・会社アカウントの場合は、管理者へAmazon Textract / Amazon Translate / Amazon Comprehendを利用することを伝えてください。私と同じ環境の場合は問題ありません。
6-3. Formsが表示されない
Configure documentを開き、Forms : ON を確認します。設定後に Apply configuration を選択します。
6-4. Tablesが表示されない
Configure documentで Tables : ON になっているか確認します。
6-5. 手書きレビューが一部誤認識される
字形や画像品質によって結果は変化します。1〜2文字程度なら誤認識を記録し、そのまま後続処理へ進めます。
6-6. Translateで日本語が出ない
Source language : English と Target language : Japanese を確認し、Source language側にレビューが貼り付けられていることも確認します。
6-7. Comprehendで結果が出ない
Analysis typeが Built-in であること、日本語レビューを入力して Analyze を実行していることを確認します。
6-8. ComprehendがMIXEDにならない
異常ではありません。機械学習モデルによる判定なので、必ず人間の予想と一致するわけではありません。Textract → Translate → Comprehendのどこでニュアンスが変化したかを考察します。
7. 料金と後片付け
今回のハンズオンでは、短い文章と1枚の画像をオンデマンドで処理します。また、次のような継続稼働リソースは作成しません。
- EC2
- NAT Gateway
- Lambda
- S3バケット
- Comprehendカスタムモデル
- Comprehendエンドポイント
- Translateバッチジョブ
そのため、ハンズオン終了後に削除が必要な永続リソースは基本的にありません。
Textract・Translate・Comprehendはいずれも利用量に応じて料金が発生する可能性があります。必要以上に同じ処理を繰り返さないようにしてください。
まとめ
今回の記事では、1枚の購入明細+手書きレビュー画像を起点に、複数のAWS AIサービスをつなげて処理しました。
Amazon Textract 文書を読み、文字と構造を取り出す
↓
Amazon Translate 抽出された文章を翻訳する
↓
Amazon Comprehend 翻訳された文章の感情を分析する重要なポイントは、画像 → 構造化・テキスト化 → 翻訳 → 自然言語分析という流れを、複数のAWS AIサービスを組み合わせて確認したことです。
| 要件 | 選ぶサービス |
|---|---|
| スキャン文書・画像から文字や表を抽出したい | Amazon Textract |
| 文章を別の言語へ翻訳したい | Amazon Translate |
| 文章の感情や内容を分析したい | Amazon Comprehend |
同じカテゴリーの記事
同じカテゴリの記事を読む