4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AWS]日本語OCRがついにきちゃー! ~Textractにいろいろ読ませてみた~

4
Last updated at Posted at 2026-11-03

📣 はじめに

2026年11月2日にAWSのAmazon Textract(OCRしてくれるやつ)が日本語に対応して東京リージョンでも使えるようになりました。以下記事がとてもわかりやすいので是非ご参照ください。

この記事ではいろんな画像をTextractに読ませて精度を軽く測ってみた結果を中心にまとめました。

🎉 何が嬉しいの?

RAG等でPDF(透明テキストなし)や画像からデータ取り込むにはどこかでOCR(画像から文字を読み取る処理)が要ります。ところがTextractはこれまで日本語を読めませんでした。

Azure AI Document Intelligenceのような外部ベンダーを使うと別の契約と認証情報が増えて書類もAWSの外に出ていきます。RapidOCRのようなOSSをEC2やECSで自前ホストすれば外には出ませんがサーバーやモデル更新の運用を全部抱えることになります。

happy-pipeline.gif今回の日本語対応でS3→Textract→チャンク分割→Bedrockで埋め込み→ベクトルストアという流れがAWSだけでつながります。IAMで権限をまとめられてCloudTrailで追えます。東京リージョンで動くので書類を国外に送らずに済むのも地味に良い点です。

ちなみにBedrock Knowledge Bases解析機能や、Bedrockのモデルに画像を読ませる手も前からありました。Textractは単語や行ごとの位置と信頼度が返ってくるので用途で使い分けるのがよさそうです。

🆚 Azure・Googleと比べると

cloud-compare.gif

性能的にはやっぱりAzureが強いなぁ〜という感じがします。既にAWSで組んでいるならTextractを使うことにメリットがかなり強いです。

🖼️ いろんな画像を読ませてみた

自作した書類やWikimedia Commonsから借りた写真をTextractに読ませてみました。採点は用意した正解と出力を1文字ずつ比べて正解率を出しています。

印刷文字の12ケース

results-printed.png

横書きの印刷文字はほぼ満点で低コントラストや9pxの小さい文字、レシートでも100%でした。ぶっちゃけここまで読めるとは思っていなかったのでちょっとびっくりしました。

ちなみに透明テキスト入りのPDFも試しましたが、Textractは見えている請求書の文字だけを返して仕込んだ文(透明テキスト)は出てきませんでした。PDFの中の文字データではなくページを画像として読んでいるようです。

日本語の手書き写真8枚

公式には手書きは英語だけですが気になったのでWikimedia Commonsの写真を読ませてみました。

results-handwriting (1).png

まだまだ実践では使えなさそうでした。(公式でも非対応なので当然です)

採点は山ちゃん(筆者の主観)採点で「かなり甘め」

💰 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に入るまで何秒?

pipeline-architecture.gifRAGの取り込みを想定して、東京リージョンで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に通知が来て、あとから取りに行く

sync-async-architecture.gif

非同期APIはStartでジョブを投げたらLambdaはそこで終わりです。Textractの処理が終わるとSNSに完了通知が届くのでそれで結果取得Lambdaを起動してGetで結果を取ります。Lambdaが待ち続けなくていいので、900秒の制限も気にしなくて済みます。(今回はこの構成での検証はやっておりません)

🍜 締め

今回は日本語対応のTextractに色々な画像を読ませてみました。横書きの印刷文字ならかなり頼れることがわかりました。またTextractのTABLESやFORMSは割高ですが、最近流行りの"判断モデルで判定"してから必要な画像にだけピンポイントで使うという使い方もできそうです。個人的にはOCRのRAGパイプラインがAWSだけで完結するのがめちゃめちゃ嬉しいです:relaxed:

欲を言えば...APIの利便性(PDFのページ指定等)はまだまだAzureの方が利便性が良いので。この辺が改善されればとても使い勝手が良いものになるかなと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?