Gemini Decision 1 に書類画像を見せて OCR の誤りを探させ、Jev・Decisions API と比べてみた
こんにちは、けーまです。
書類からの OCR 処理では、 AWS であれば Amazon SageMaker で OCR モデルをホストして文字を抜き出し、文字認識の確信度スコアを使いつつ後段の LLM でキーと値を構造化するようなアプローチがあります。
しかし、SageMaker でモデルを常時ホストし続けると料金がかさみやすく、複数のサービスを組み合わせるため構成も重くなりがちです。
最近は VLM 自体の文字認識精度が向上してきたため、VLM 単体で抽出まで完結させる構成も実用的になってきました。
ただ、LLM が出力する確信度は自己申告になりやすく、誤読した値に対しても高いスコアを出してしまうことがあるなど、判定の根拠として信頼しきれない弱点があります。
そこで、書類の画像と読み取り結果を decision model に渡し、「この値は画像と合っているか」を項目ごとに確率で判定させれば、怪しい項目だけを人手による確認に回せます。
以前、Cloudflare の Clef で同じことを試しました。
詳しくは Cloudflare の Clef に書類画像(日本語)を見せて、OCR 結果の誤りを見つけさせてみた | DevelopersIO をご覧ください。
本記事では、2026年11月11日に Google が公開した Gemini Decision 1 に書類画像と OCR の値を渡して誤りを探させ、同じく画像入力に対応している TypeSafe の Jev、および OpenAI の Decisions API と同条件で比較してみました(検証日は 2026年11月13日です)。OCR に強いと言われている Google のモデルがどれくらいなのか気になりますね
1. 検証の方法
1.1 書類
記事への掲載が可能な実物の書類を5件使用しました。
内訳は日本語2件、英語3件です。
| 書類 | 言語 | 出典・ライセンス |
|---|---|---|
| イオン マックスバリュ松山店のレシート(2019年) | 日本語 | Wikimedia Commons(パブリックドメイン) |
| キャメルマート秋田八幡平店のレシート(2022年) | 日本語 | Wikimedia Commons(Yauchi、CC BY-SA 4.0。高さ 1400px に縮小) |
| 論文掲載料の請求書 | 英語 | Wikimedia Commons(パブリックドメイン) |
| 米国 IRS の申告書 Form 1040 のテスト用記入例(2ページ目) | 英語 | IRS(米国政府の著作物) |
| マレーシアの書店のレシート | 英語 | SROIE(ICDAR 2019)(CC BY 4.0) |

左からイオン マックスバリュ松山店、キャメルマート秋田八幡平店、マレーシアの書店のレシート

左から論文掲載料の請求書、Form 1040 のテスト用記入例の2ページ目
各画像の出典とライセンスは上の表のとおりです。いずれも当ブログにて縮小し、横に並べて1枚にまとめています。
1.2 OCR の値と、わざと入れた誤り
各書類から5〜6項目を選び、正しい値を書き起こしました(例:イオンのレシートであれば店名・日付・外税8%・合計・お釣りなど)。
書類全体ではなく一部の項目に絞ったのは、正解データを人手で確実に確認できる分量にするためです。
検証用のデータとして、次の3パターンを用意しました。
-
誤りなし:書き起こした正しい値のまま
-
誤りA・誤りB:2項目ずつ、値をわざと変えたもの
誤りの入れ方は次の3種類で、書類5件で合計20件の誤りを作成しました。
-
数字の入れ替え・抜け(
¥246→¥264、36,852→36,582) -
形の似た文字への置き換え(
マックスバリュ→マックスバリユ、UCSFD00005→UCSFDO0005) -
別の値への差し替え(お釣りの欄に預り金の
¥500)
1.3 質問
画像と値の一覧をあわせてモデルに渡し、項目ごとに次のような yes/no の質問を行いました。
{
"field__total": {
"type": "noul",
"instructions": "抽出した「total」の値 \"¥264\" は、画像に印字されている内容と1文字も違わず同じか。空白の数の違いだけは同じとみなす。"
}
}
書類5件 × 3パターンの計15回のリクエストを、3つのモデルに対して同じ画像・同じ質問で送信しました。
Jev は画像入力が preview 版のため、ヘッダーに TypeSafe-Danger-Zone-Images: true を付与し、画像を assets に含めて送信しています。
1.4 指標
-
見つけた誤り:あらかじめ仕込んだ20件の誤りのうち、「画像と同じ」である確率が 0.8 未満と判定された件数
-
誤検知:正しい値61件のうち、「画像と同じ」である確率が 0.8 未満になってしまった件数(この数が多いほど、人手で見直す項目が増えてしまいます)
-
正しい値を正しいと判定:正しい値61件のうち、「画像と同じ」である確率が 0.8 以上と判定された件数(誤検知と合わせて 61件になります。何でも「誤り」と答えれば見つけた誤りは増えるので、正しい値をきちんと通せたかもあわせて見ます)
判定には、表示用に小数第2位で丸める前の確率を使っています(そのため、表で 0.90 と表示されている値でも、閾値 0.9 では「0.9 未満」になる場合があります)。
2. 結果
2.1 見つけた誤り・誤検知・正しい値を正しいと判定

| 項目 | Gemini Decision 1 | Jev | Decisions API |
|---|---|---|---|
| 見つけた誤り(20件中) | 19 | 18 | 17 |
| うち日本語(8件中) | 8 | 8 | 7 |
| 誤検知(正しい値 61件中) | 24 | 11 | 7 |
| 正しい値を正しいと判定(61件中) | 37 | 50 | 54 |
| 応答時間の中央値 | 約1.12秒 | 約0.31秒 | 約0.63秒 |
| 入力トークン(1回平均) | 1,749 | 3,268 | 2,257 |
Gemini Decision 1 は誤りの見落としが最も少なかった一方で、正しい値についても24件を誤りと判定してしまい、正しいと判定できたのは61件中37件にとどまりました。
正しい値を正しいと判定できた件数は、Decisions API が54件、Jev が50件でした。
誤検知となったケースの多くは、正しい値に対して 0.5〜0.8 程度の確率を出力したものでした。
たとえば、SROIE のレシートの店名(BOOK TA .K (TAMAN DAYA) SDN BHD)については、正しい値であるにもかかわらず 0.26〜0.38 という確率を出力しています(印字がかすれていて読みにくい箇所であり、Jev と Decisions API も同様に 0.8 未満でした)。
2.2 閾値を変えたとき
Gemini Decision 1 の確率は正しい値であっても低めに出る傾向が見られたため、判定の閾値を変えて比較してみました。

表内の数値は、見つけた誤り/誤検知/正しい値を正しいと判定を表しています。
| 閾値 | Gemini Decision 1 | Jev | Decisions API |
|---|---|---|---|
| 0.5 | 18/4/57 | 15/3/58 | 16/5/56 |
| 0.6 | 19/6/55 | 16/6/55 | 16/6/55 |
| 0.7 | 19/12/49 | 16/10/51 | 16/6/55 |
| 0.8 | 19/24/37 | 18/11/50 | 17/7/54 |
| 0.9 | 20/55/6 | 19/17/44 | 17/9/52 |
Gemini Decision 1 は、閾値を 0.8 や 0.9 に上げると、正しい値を正しいと判定できる件数が極端に減ります(61件中、0.8 で37件、0.9 で6件)。
一方で、誤りのすり抜けはどの閾値でも少なく、0.6〜0.8 では20件中19件を検出できています。
このグラフを見る限り、Gemini Decision 1 は閾値を 0.7 くらいにしておくと、ちょうどよいバランスになりそうだと感じました。
2.3 見落とした誤り
3モデルのうち、どれか1つでも見落とした誤りを載せます。
数値は「画像と同じ」の確率で、太字が閾値 0.8 以上、つまり誤りを見落としたものです。
| 書類 | 項目 | 渡した値 | 正しい値 | Gemini Decision 1 | Jev | Decisions API |
|---|---|---|---|---|---|---|
| IRS の申告書 | 名 | Lynnette |
Lynette |
0.90 | 0.98 | 0.00 |
| IRS の申告書 | 16a 年金 | 36,582 |
36,852 |
0.48 | 0.87 | 1.00 |
| キャメルマート | 日付 | 2022年9月7日 13:07 |
2022年9月17日 13:07 |
0.12 | 0.00 | 0.99 |
| 論文掲載料の請求書 | 顧客 ID | UCSFDO0005 |
UCSFD00005 |
0.41 | 0.15 | 1.00 |
申告書の名前の n が1文字多い誤りについては、Gemini Decision 1 と Jev の両方が見落とす結果となりました。
一方の Decisions API は、数字の並び替えや 0 と O の違いといった誤りに対して、確率 1.00 で「同じ」と判定してしまっています。
3. 全件の結果
結果はこちらになります。太字は、閾値 0.8 の条件で判定を外してしまった項目です
| 書類 | 版 | 項目 | 渡した値 | 正しい値 | Gemini | Jev | Decisions API |
|---|---|---|---|---|---|---|---|
| aeon | 誤りなし | store | マックスバリュ松山店 |
マックスバリュ松山店 |
0.83 | 0.64 | 0.99 |
| aeon | 誤りなし | date | 2019/11/9(土) 20:20 |
2019/11/9(土) 20:20 |
0.50 | 0.70 | 1.00 |
| aeon | 誤りなし | tax_8 | ¥18 |
¥18 |
0.86 | 0.94 | 1.00 |
| aeon | 誤りなし | total | ¥246 |
¥246 |
0.85 | 0.98 | 1.00 |
| aeon | 誤りなし | change | ¥254 |
¥254 |
0.83 | 0.96 | 1.00 |
| aeon | 誤りA | store | マックスバリユ松山店(誤り) |
マックスバリュ松山店 |
0.52 | 0.74 | 0.00 |
| aeon | 誤りA | date | 2019/11/9(土) 20:20 |
2019/11/9(土) 20:20 |
0.48 | 0.60 | 1.00 |
| aeon | 誤りA | tax_8 | ¥18 |
¥18 |
0.88 | 0.97 | 1.00 |
| aeon | 誤りA | total | ¥264(誤り) |
¥246 |
0.13 | 0.00 | 0.00 |
| aeon | 誤りA | change | ¥254 |
¥254 |
0.86 | 0.98 | 0.94 |
| aeon | 誤りB | store | マックスバリュ松山店 |
マックスバリュ松山店 |
0.91 | 0.60 | 0.10 |
| aeon | 誤りB | date | 2019/11/8(土) 20:20(誤り) |
2019/11/9(土) 20:20 |
0.08 | 0.01 | 0.00 |
| aeon | 誤りB | tax_8 | ¥18 |
¥18 |
0.78 | 0.95 | 1.00 |
| aeon | 誤りB | total | ¥246 |
¥246 |
0.79 | 0.98 | 1.00 |
| aeon | 誤りB | change | ¥500(誤り) |
¥254 |
0.20 | 0.02 | 0.00 |
| camel | 誤りなし | store | キャメルマート 秋田八幡平店 |
キャメルマート 秋田八幡平店 |
0.81 | 0.96 | 1.00 |
| camel | 誤りなし | date | 2022年9月17日 13:07 |
2022年9月17日 13:07 |
0.80 | 0.95 | 1.00 |
| camel | 誤りなし | tax_10 | ¥33 |
¥33 |
0.82 | 0.97 | 1.00 |
| camel | 誤りなし | tax_8 | ¥24 |
¥24 |
0.72 | 0.88 | 1.00 |
| camel | 誤りなし | total | ¥697 |
¥697 |
0.84 | 0.99 | 1.00 |
| camel | 誤りなし | cash | ¥702 |
¥702 |
0.81 | 0.98 | 1.00 |
| camel | 誤りA | store | キャメレマート 秋田八幡平店(誤り) |
キャメルマート 秋田八幡平店 |
0.47 | 0.50 | 0.06 |
| camel | 誤りA | date | 2022年9月17日 13:07 |
2022年9月17日 13:07 |
0.77 | 0.96 | 1.00 |
| camel | 誤りA | tax_10 | ¥38(誤り) |
¥33 |
0.05 | 0.00 | 0.00 |
| camel | 誤りA | tax_8 | ¥24 |
¥24 |
0.77 | 0.97 | 0.97 |
| camel | 誤りA | total | ¥697 |
¥697 |
0.83 | 0.99 | 1.00 |
| camel | 誤りA | cash | ¥702 |
¥702 |
0.75 | 0.99 | 1.00 |
| camel | 誤りB | store | キャメルマート 秋田八幡平店 |
キャメルマート 秋田八幡平店 |
0.83 | 0.98 | 1.00 |
| camel | 誤りB | date | 2022年9月7日 13:07(誤り) |
2022年9月17日 13:07 |
0.12 | 0.00 | 0.99 |
| camel | 誤りB | tax_10 | ¥33 |
¥33 |
0.84 | 0.98 | 1.00 |
| camel | 誤りB | tax_8 | ¥24 |
¥24 |
0.67 | 0.94 | 0.95 |
| camel | 誤りB | total | ¥697 |
¥697 |
0.77 | 0.99 | 1.00 |
| camel | 誤りB | cash | ¥697(誤り) |
¥702 |
0.11 | 0.01 | 0.00 |
| wiki | 誤りなし | invoice_no | 000277511 |
000277511 |
0.90 | 0.89 | 1.00 |
| wiki | 誤りなし | invoice_date | 8/12/2016 |
8/12/2016 |
0.89 | 0.94 | 1.00 |
| wiki | 誤りなし | customer_id | UCSFD00005 |
UCSFD00005 |
0.93 | 0.88 | 1.00 |
| wiki | 誤りなし | amount_due | $3,900.00 |
$3,900.00 |
0.85 | 0.91 | 1.00 |
| wiki | 誤りなし | due_date | 11 Sep 2016 |
11 Sep 2016 |
0.86 | 0.88 | 1.00 |
| wiki | 誤りA | invoice_no | 000277517(誤り) |
000277511 |
0.29 | 0.00 | 0.00 |
| wiki | 誤りA | invoice_date | 8/12/2016 |
8/12/2016 |
0.69 | 0.96 | 1.00 |
| wiki | 誤りA | customer_id | UCSFDO0005(誤り) |
UCSFD00005 |
0.41 | 0.15 | 1.00 |
| wiki | 誤りA | amount_due | $3,900.00 |
$3,900.00 |
0.75 | 0.92 | 1.00 |
| wiki | 誤りA | due_date | 11 Sep 2016 |
11 Sep 2016 |
0.82 | 0.95 | 1.00 |
| wiki | 誤りB | invoice_no | 000277511 |
000277511 |
0.85 | 0.86 | 1.00 |
| wiki | 誤りB | invoice_date | 8/12/2016 |
8/12/2016 |
0.72 | 0.91 | 1.00 |
| wiki | 誤りB | customer_id | UCSFD00005 |
UCSFD00005 |
0.88 | 0.87 | 1.00 |
| wiki | 誤りB | amount_due | $3,600.00(誤り) |
$3,900.00 |
0.09 | 0.00 | 0.00 |
| wiki | 誤りB | due_date | 8/31/2016(誤り) |
11 Sep 2016 |
0.17 | 0.00 | 0.00 |
| irs | 誤りなし | first_name | Lynette |
Lynette |
0.93 | 0.99 | 1.00 |
| irs | 誤りなし | last_name | Heather |
Heather |
0.90 | 0.98 | 1.00 |
| irs | 誤りなし | address | 2525 Juniper St. |
2525 Juniper St. |
0.84 | 0.97 | 1.00 |
| irs | 誤りなし | line_8a_taxable_interest | 623 |
623 |
0.88 | 0.98 | 0.73 |
| irs | 誤りなし | line_10_tax_refunds | 375 |
375 |
0.86 | 0.95 | 1.00 |
| irs | 誤りなし | line_16a_pensions | 36,852 |
36,852 |
0.81 | 0.94 | 1.00 |
| irs | 誤りA | first_name | Lynnette(誤り) |
Lynette |
0.90 | 0.98 | 0.00 |
| irs | 誤りA | last_name | Heather |
Heather |
0.85 | 0.98 | 0.88 |
| irs | 誤りA | address | 2525 Juniper St. |
2525 Juniper St. |
0.81 | 0.97 | 1.00 |
| irs | 誤りA | line_8a_taxable_interest | 623 |
623 |
0.86 | 0.98 | 0.96 |
| irs | 誤りA | line_10_tax_refunds | 375 |
375 |
0.80 | 0.96 | 1.00 |
| irs | 誤りA | line_16a_pensions | 36,582(誤り) |
36,852 |
0.48 | 0.87 | 1.00 |
| irs | 誤りB | first_name | Lynette |
Lynette |
0.92 | 0.99 | 1.00 |
| irs | 誤りB | last_name | Heather |
Heather |
0.88 | 0.98 | 1.00 |
| irs | 誤りB | address | 2552 Juniper St.(誤り) |
2525 Juniper St. |
0.09 | 0.02 | 0.00 |
| irs | 誤りB | line_8a_taxable_interest | 375(誤り) |
623 |
0.08 | 0.00 | 0.00 |
| irs | 誤りB | line_10_tax_refunds | 375 |
375 |
0.64 | 0.96 | 0.83 |
| irs | 誤りB | line_16a_pensions | 36,852 |
36,852 |
0.77 | 0.90 | 0.98 |
| sroie | 誤りなし | company | BOOK TA .K (TAMAN DAYA) SDN BHD |
BOOK TA .K (TAMAN DAYA) SDN BHD |
0.26 | 0.61 | 0.14 |
| sroie | 誤りなし | document_no | TD01167104 |
TD01167104 |
0.89 | 0.05 | 0.57 |
| sroie | 誤りなし | date | 25/12/2018 8:13:39 PM |
25/12/2018 8:13:39 PM |
0.79 | 0.26 | 1.00 |
| sroie | 誤りなし | total | 9.00 |
9.00 |
0.64 | 0.97 | 1.00 |
| sroie | 誤りなし | cash | 10.00 |
10.00 |
0.77 | 0.92 | 1.00 |
| sroie | 誤りA | company | BOOK TA .K (TAMAN DAYA) SDN BHD |
BOOK TA .K (TAMAN DAYA) SDN BHD |
0.31 | 0.58 | 0.07 |
| sroie | 誤りA | document_no | TD01161704(誤り) |
TD01167104 |
0.35 | 0.00 | 0.18 |
| sroie | 誤りA | date | 25/12/2018 8:13:39 PM |
25/12/2018 8:13:39 PM |
0.69 | 0.52 | 1.00 |
| sroie | 誤りA | total | 9.08(誤り) |
9.00 |
0.11 | 0.00 | 0.00 |
| sroie | 誤りA | cash | 10.00 |
10.00 |
0.66 | 0.95 | 1.00 |
| sroie | 誤りB | company | BOOK TA .K (TAMAN DAYA) SDN BHD |
BOOK TA .K (TAMAN DAYA) SDN BHD |
0.38 | 0.57 | 0.42 |
| sroie | 誤りB | document_no | TD01167104 |
TD01167104 |
0.89 | 0.13 | 0.33 |
| sroie | 誤りB | date | 25/12/2018 8:18:39 PM(誤り) |
25/12/2018 8:13:39 PM |
0.14 | 0.00 | 0.78 |
| sroie | 誤りB | total | 9.00 |
9.00 |
0.60 | 0.99 | 1.00 |
| sroie | 誤りB | cash | 1.00(誤り) |
10.00 |
0.22 | 0.71 | 0.00 |
4. まとめ
Gemini Decision 1・Jev・Decisions API に、書類5件の画像と OCR の値を渡し、わざと入れた誤りを探させてみました。
Gemini Decision 1 でも、OCR の値の誤りは見つけられるようになっています。
また、同じ画像を渡しても入力トークンが他の2モデルより少なく済みました。
以前 Gemini のモデルを検証したときも同じ結果だったので、Gemini 系のモデルの特徴なのかもしれません。
日本語の書類にも実用レベルで使えそうな感じがあります。
ただし、閾値の感覚は Jev とは違います。
実際に組み込むときは、用途に近いテストデータを用意して、どの閾値にするかを判断する必要があると感じました。








