📣 はじめに
2026年11月2日にAWSのAmazon Textract(OCRしてくれるやつ)が日本語に対応して東京リージョンでも使えるようになりました。以下記事がとてもわかりやすいので是非ご参照ください。
この記事ではいろんな画像をTextractに読ませて精度を軽く測ってみた結果を中心にまとめました。
🎉 何が嬉しいの?
RAG等でPDF(透明テキストなし)や画像からデータ取り込むにはどこかでOCR(画像から文字を読み取る処理)が要ります。ところがTextractはこれまで日本語を読めませんでした。
Azure AI Document Intelligenceのような外部ベンダーを使うと別の契約と認証情報が増えて書類もAWSの外に出ていきます。RapidOCRのようなOSSをEC2やECSで自前ホストすれば外には出ませんがサーバーやモデル更新の運用を全部抱えることになります。
今回の日本語対応でS3→Textract→チャンク分割→Bedrockで埋め込み→ベクトルストアという流れがAWSだけでつながります。IAMで権限をまとめられてCloudTrailで追えます。東京リージョンで動くので書類を国外に送らずに済むのも地味に良い点です。
ちなみにBedrock Knowledge Bases解析機能や、Bedrockのモデルに画像を読ませる手も前からありました。Textractは単語や行ごとの位置と信頼度が返ってくるので用途で使い分けるのがよさそうです。
🆚 Azure・Googleと比べると
性能的にはやっぱりAzureが強いなぁ〜という感じがします。既にAWSで組んでいるならTextractを使うことにメリットがかなり強いです。
🖼️ いろんな画像を読ませてみた
自作した書類やWikimedia Commonsから借りた写真をTextractに読ませてみました。採点は用意した正解と出力を1文字ずつ比べて正解率を出しています。
印刷文字の12ケース
横書きの印刷文字はほぼ満点で低コントラストや9pxの小さい文字、レシートでも100%でした。ぶっちゃけここまで読めるとは思っていなかったのでちょっとびっくりしました。
ちなみに透明テキスト入りのPDFも試しましたが、Textractは見えている請求書の文字だけを返して仕込んだ文(透明テキスト)は出てきませんでした。PDFの中の文字データではなくページを画像として読んでいるようです。
日本語の手書き写真8枚
公式には手書きは英語だけですが気になったのでWikimedia Commonsの写真を読ませてみました。
まだまだ実践では使えなさそうでした。(公式でも非対応なので当然です)
採点は山ちゃん(筆者の主観)採点で「かなり甘め」
💰 VLMと料金を比べてみた
画像も読めるLLM(VLM)にOCRを任せる手もあるので、BedrockのClaude Sonnet 5.5と料金を比べてみました。A4の請求書1ページ(200dpi、1654×2339)を読ませた場合の見積もりです。
| 方法 | 1ページ | 1,000ページ |
|---|---|---|
| Textract文字の検出 | $0.0015 | $1.5 |
| Textract TABLES | $0.015 | $15 |
| Textract FORMS | $0.05 | $50 |
| Sonnet 5.5(入力 約4,800トークン、出力 約400トークン) | 約$0.014 | 約$14 |
文字を読むだけならTextractのほうが10倍くらい安く、表まで取るならだいたい同じ値段です。Sonnetは画像のトークンが料金の大半なので、画像を小さくしてから渡すと安くなります。そのかわり位置や信頼度は返らないので、そこが欲しいならTextractが良さそうです。
⏱️ S3に置いてからDynamoDBに入るまで何秒?
RAGの取り込みを想定して、東京リージョンでS3 → Lambda → Textract → DynamoDBの流れを組んでみました。S3にファイルを置くとイベントでLambdaが動き、Textractで読んだテキストを1ページ1レコードでDynamoDBに書きます。画像と1ページのPDFは同期API、2ページ以上のPDFは非同期APIです。
| ファイル | S3 → Lambda起動 | Textract | DynamoDB | 合計 |
|---|---|---|---|---|
| 画像 | 0.9秒 | 0.6秒 | 0.01秒 | 約1.5秒 |
| 1ページPDF | 1.1秒 | 1.0秒 | 0.01秒 | 約2秒 |
| 5ページPDF | 1.1秒 | 8.7秒 | 0.02秒 | 約10秒 |
| 20ページPDF | 0.8秒 | 29.8秒 | 0.05秒 | 約31秒 |
1ページなら2秒くらいでDynamoDBまで届きました。非同期APIは1ページあたり約1.4秒ずつ伸びていきます。
ページ単位で並列で処理することで更なる高速化も図れるかもしれません
🔀 同期と非同期の使い分け
同期APIに1回で渡せるのは、画像1枚か1ページのPDF(10MBまで)です。とはいえ2ページ以上のPDFでも1ページずつに分ければ同期APIを並列で呼べます。分割の手間をかけたくない、ページ数が多くて呼び出し回数の上限が気になる、という場合は非同期APIに任せます。
| 同期 | 非同期 | |
|---|---|---|
| 渡し方 | ファイルを直接、またはS3 | S3に置いて場所を渡す |
| 結果 | その場で返る | 終わったらSNSに通知が来て、あとから取りに行く |
非同期APIはStartでジョブを投げたらLambdaはそこで終わりです。Textractの処理が終わるとSNSに完了通知が届くのでそれで結果取得Lambdaを起動してGetで結果を取ります。Lambdaが待ち続けなくていいので、900秒の制限も気にしなくて済みます。(今回はこの構成での検証はやっておりません)
🍜 締め
今回は日本語対応のTextractに色々な画像を読ませてみました。横書きの印刷文字ならかなり頼れることがわかりました。またTextractのTABLESやFORMSは割高ですが、最近流行りの"判断モデルで判定"してから必要な画像にだけピンポイントで使うという使い方もできそうです。個人的にはOCRのRAGパイプラインがAWSだけで完結するのがめちゃめちゃ嬉しいです![]()
欲を言えば...APIの利便性(PDFのページ指定等)はまだまだAzureの方が利便性が良いので。この辺が改善されればとても使い勝手が良いものになるかなと思います。



