AWS

機械学習サービスを利用してレビューの判定をしてみる(Textract, Translate, Comprehend)

NEW 2026年9月15日

目次Category


はじめに

今回の記事では、Amazon TextractAmazon TranslateAmazon Comprehendを使い、英語の帳票を読み取って日本語へ翻訳し、レビューの感情まで分析します。

単純なOCRだけでなく、フォームのKey-Value、表構造、手書き文字の読み取りまで確認し、その結果を後続の翻訳・自然言語処理へつなげるのが今回のポイントです。

今回実施する作業
  1. 使用リージョンをアジアパシフィック(ソウル)へ設定する
  2. Amazon TextractのAnalyze Documentで画像を読み込む
  3. FormsでKey-Value、Tablesで表構造を確認する
  4. 英語の手書きレビューをTextから取り出す
  5. Amazon Translateで英語レビューを日本語へ翻訳する
  6. Amazon Comprehendで日本語レビューのSentimentを分析する
  7. 人間の予想とAIの結果を比較し、認識・翻訳・分析のつながりを振り返る
今回の構成
購入明細+手書きレビュー画像
  ↓
Amazon Textract  
 ・印刷文字の読み取り
 ・Forms(キーと値)
 ・Tables(表構造)
 ・英語の手書きレビュー
  ↓
Amazon Translate        
 英語 → 日本語
  ↓
Amazon Comprehend      
 Sentiment Analysis
  ↓
POSITIVE / NEGATIVE / NEUTRAL / MIXED

0. 今回使用するAWSサービスについて

サービス使う機能役割
Amazon TextractAnalyze Document画像から文字・フォーム・テーブルを抽出
Amazon TranslateReal-time translation取り出した英語レビューを日本語へ翻訳
Amazon ComprehendReal-time analysis / Built-in / Sentimentレビューの感情を分析

0-1. Amazon Textract

0-1. Amazon Textract

Amazon Textractでは、画像や文書から文字を読み取るだけでなく、今回の帳票に含まれるForms(Key-Value)Tables(表構造)も確認します。手書きレビューはRaw Text / Textの部分から確認します。

※こちらサービスは英語にしか対応していないため、対応リージョンも少ないです

0-2. Amazon Translate

0-2. Amazon Translate

Amazon Translateでは、Textractで取り出した英語レビューだけをEnglish → Japaneseでリアルタイム翻訳します。

0-3. Amazon Comprehend

0-3. Amazon Comprehend

Amazon Comprehendでは、Translateが返した日本語レビューをBuilt-inモデルで分析し、POSITIVE / NEGATIVE / NEUTRAL / MIXEDのSentimentとConfidence Scoreを確認します。

1. 事前準備とリージョン設定

1-1. 使用リージョンを確認する

1-1. 使用リージョンを確認する
重要:このハンズオンではソウルを使用します

使用するリージョンはアジアパシフィック(ソウル) / ap-northeast-2を利用してください
今回のハンズオンでは、Amazon Textract・Translate・Comprehendの対応リージョンで進めるため、ソウルに統一しています。

項目設定値
リージョンアジアパシフィック(ソウル)
リージョンコードap-northeast-2

1-2. 必要なもの

1-2. 必要なもの
  • AWSマネジメントコンソールへログインできるアカウント
  • Amazon Textract / Translate / Comprehendを利用できる権限
  • 今回使用する「購入明細+手書きレビュー画像」(1-3に添付している画像をローカルに落として利用してください)

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へログインしてソウルを選択する

1-4. AWSへログインしてソウルを選択する
  1. AWSマネジメントコンソールへログインします。SSOを使用している場合は、普段利用しているSSOの手順でログインします。
  2. リージョン一覧から アジアパシフィック (ソウル) を選択します。リージョンコードは ap-northeast-2 です。
  3. 画面右上が「ソウル」になっていることを確認します。
成功条件

画面右上のリージョンがソウルになっていればOKです。

2. Amazon Textractで帳票を読み取る

この章で確認すること

Analyze Documentへ画像をアップロードし、Forms、Tables、Raw Text / Textの順に結果を確認します。文字列そのものだけでなく、Key-Valueや表の行・列といった文書構造まで見ていきます。

2-1. Amazon Textractを開く

2-1. Amazon Textractを開く
  1. AWSマネジメントコンソール上部の検索欄へ Amazon Textract と入力します。
  2. Amazon Textractを選択します。
  3. 左側のナビゲーションメニューでDemos配下の Analyze Document を開きます。

今回は単なる文字認識だけでなく、Forms、Tables、Raw Text / Textを確認するためAnalyze Documentを使用します。

2-2. 画像をアップロードする

2-2. 画像をアップロードする
  1. Analyze Document画面で Upload document を探します。
  2. Choose documentまたはファイル選択ボタンを選択し、購入明細+手書きレビュー画像を指定します。
  3. 画像プレビューが表示されたら、画像の欠けなどがないことを確認します。
画像が表示されない場合

PNG/JPEGであること、ファイルが破損していないこと、ファイルサイズが大きすぎないことを確認してください。
画像のサイズはできる限り小さいことをお勧めします。

2-3. FormsとTablesを有効にする

2-3. FormsとTablesを有効にする
  1. Analyze Document画面の Configure document を開きます。
  2. Data outputまたはChoose data outputsForms をONにします。
  3. 続けて Tables をONにします。
  4. 今回はQueries、Signatures、LayoutはOFFのままとします。表示されていない項目は操作不要です。
  5. FormsとTablesがONであることを確認し、Apply configuration を選択します。
  6. Results領域に分析結果が表示されることを確認します。
Forms       : ON
Tables      : ON
Queries     : OFF
Signatures  : OFF
Layout      : OFF
成功条件

Forms / Tablesなどの結果を確認できる状態になればOKです。

2-4. FormsでKey-Valueを確認する

2-4. FormsでKey-Valueを確認する

結果からFormsを選択します。今回の画面では、左側がKey、右側がValueの2列として表示される想定です。

この項目はあくまで動作の詳細部分を確認するだけなので概念的な理解を行いたい場合は2-7まで飛ばしていただいて構いません。

KeyValue
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 IDORD-2026-0831-001 
Order DateAugust 31, 2026 
CustomerTaro Yamada 
SellerSample Store Inc. 
Payment MethodCredit Card 
Shipping Address1-2-3 Ebisu, Shibuya-ku, Tokyo 150-0013 
ここで理解すること

TextractのFormsは文字を読むだけでなく、左列の「Order ID :」に右列の「ORD-2026-0831-001」が対応している、というKey-Valueの関係まで認識します。

2-5. Tablesで表構造を確認する

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.ProductQuantityUnit PriceAmount
1Wireless Headphones1$49.99$49.99
2Mobile Battery1$29.99$29.99
3USB-C Cable1$9.99$9.99
4Fast Charger1$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で手書きレビューを確認する

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だけをコピーする

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を開く

3-1. Amazon Translateを開く
  1. 上部検索欄に Amazon Translate と入力し、Amazon Translateを開きます。
  2. 左側メニューから Real-time translation を開きます。
  3. Translation領域にタブがある場合は Text を選択します。今回はファイルそのものではなく、Textractで取得した文字列を翻訳します。

3-2. 翻訳設定を行う

3-2. 翻訳設定を行う
項目設定値
入力Text
Source languageEnglish
Target languageJapanese

今回は英語であることが分かっているため、Source languageはAutoではなくEnglishを明示的に選択します。

標準翻訳だけを確認するため、Additional settingsは次のとおりです。

Custom terminology : 使用しない
Formality          : 指定しない
Profanity masking  : 使用しない
Brevity            : 使用しない

3-3. レビューを貼り付けて日本語訳を確認する

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. 翻訳後も意味が維持されているか確認する

3-4. 翻訳後も意味が維持されているか確認する

レビューには肯定的な要素と否定的な要素の両方が含まれています。日本語訳でも両方の意味が残っているか確認します。

肯定的な要素否定的な要素
sound greatbattery drains faster
very comfortablebattery life is disappointing
I like the product 

確認後、Target language側の日本語レビュー全文をコピーします。

成功条件

Textractで抽出した英語レビューから日本語レビューを取得できればOKです。

4. Amazon Comprehendで感情分析する

4-1. Amazon Comprehendを開く

4-1. Amazon Comprehendを開く
  1. 上部検索欄に Amazon Comprehend と入力し、Amazon Comprehendを開きます。
  2. 左側メニューから Real-time analysis を開きます。
  3. Input type内のAnalysis typeで Built-in を選択します。

Built-inは、AWSが用意した学習済みモデルをそのまま使用する方式です。今回はカスタム分類モデル、カスタムエンティティモデル、Comprehendエンドポイントは作成しません。

4-2. 分析前に人間が感情を予想する

4-2. 分析前に人間が感情を予想する

Comprehendを実行する前に、自分でレビューの感情を予想します。今回の想定はMIXEDです。

肯定的な内容否定的な内容
音が良いバッテリーの減りが早い
快適バッテリー寿命にがっかりしている
製品自体は気に入っている 
注意

Comprehendが必ずMIXEDを最高スコアにするとは限りません。予想と実際の機械学習モデルの判定を比較することが目的です。

4-3. 日本語レビューを分析する

4-3. 日本語レビューを分析する
  1. Real-time analysis画面にサンプル文章が表示されている場合は削除します。
  2. Amazon Translateで取得した日本語レビュー全文を貼り付けます。手順書の例文ではなく、実際にTranslateが返した日本語を使用します。
  3. Analysis typeが Built-in であることを再確認します。
  4. Analyze を選択します。

4-4. SentimentとConfidence Scoreを確認する

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. 予想と結果を並べる

5-1. 予想と結果を並べる
自分の予想:
MIXED

Amazon Comprehend:
________________________________

一致した?
○ / ×

5-2. 一致しなかった場合に考察する

5-2. 一致しなかった場合に考察する
  • Textractで手書き文字の誤認識がなかったか
  • Translateでニュアンスが変化していないか
  • 肯定的な表現と否定的な表現の強さに差がないか
  • 人間が「混在」と感じても、モデルは文章全体を別の感情として評価していないか
考察:

________________________________________________________

________________________________________________________

________________________________________________________

5-3. ハンズオン全体を振り返る

5-3. ハンズオン全体を振り返る
サービス今回確認した流れ
Amazon Textract画像 → 文字を抽出 → FormsでKey-Valueを認識 → Tablesで表構造を認識 → 手書きレビューをテキスト化
Amazon Translate英語レビュー → English → Japanese → 日本語レビュー
Amazon Comprehend日本語レビュー → Sentiment → POSITIVE / NEGATIVE / NEUTRAL / MIXED

6. よくあるミス

6-1. Amazon Textractが利用できない

6-1. Amazon Textractが利用できない

画面右上のリージョンがアジアパシフィック(ソウル) / ap-northeast-2になっているか確認します。元のハンズオンでは東京リージョンではAmazon Textractを利用できない前提で進めています。

6-2. AccessDeniedが表示される

6-2. AccessDeniedが表示される

IAM権限不足の可能性があります。研修・会社アカウントの場合は、管理者へAmazon Textract / Amazon Translate / Amazon Comprehendを利用することを伝えてください。私と同じ環境の場合は問題ありません。

6-3. Formsが表示されない

6-3. Formsが表示されない

Configure documentを開き、Forms : ON を確認します。設定後に Apply configuration を選択します。

6-4. Tablesが表示されない

6-4. Tablesが表示されない

Configure documentで Tables : ON になっているか確認します。

6-5. 手書きレビューが一部誤認識される

6-5. 手書きレビューが一部誤認識される

字形や画像品質によって結果は変化します。1〜2文字程度なら誤認識を記録し、そのまま後続処理へ進めます。

6-6. Translateで日本語が出ない

6-6. Translateで日本語が出ない

Source language : EnglishTarget language : Japanese を確認し、Source language側にレビューが貼り付けられていることも確認します。

6-7. Comprehendで結果が出ない

6-7. Comprehendで結果が出ない

Analysis typeが Built-in であること、日本語レビューを入力して Analyze を実行していることを確認します。

6-8. ComprehendがMIXEDにならない

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

この記事を書いた人

義田蓮巨

reo_yoshida

義田蓮巨