こんにちは。いわてデジタル活用室(運営:株式会社システムエンジニアリング)の開発担当です。
ペーパーレス化やインボイス制度への対応で、社内に「デジタル請求書(PDF)」や「スキャンした画像」が増えていませんか?
「手入力を無くしたい」と考え、数年前にOCR(文字認識)ツールを検討、あるいは導入したものの、結局やめてしまった……という企業様の話をよく耳にします。
なぜ従来のOCRは定着しなかったのでしょうか? 理由は明確です。
「取引先ごとにフォーマットが異なるため、事前の位置設定や調整がめちゃくちゃ面倒だったから」です。
新しく取引が始まるたびに、画面上で「ここは金額、ここは会社名……」と読み取り位置をマウスで囲んで設定し直す。少しでもレイアウトがズレたら誤認識する。「これなら手入力した方が早いのでは?」と諦めてしまうのも無理はありません。
しかし、今はAIの時代です。そんな面倒な調整は、すべて過去のものになります。
今回は、初期費用もサーバー維持費もほぼゼロ、しかも時間をかけずに導入できる
「一番賢くて安上がりな請求書自動データ化の仕組み」をご紹介します。
最新AI「Gemini」×スプレッドシートで何が変わるのか?
これまでのOCRは、画面の「位置」で文字を識別していました。
しかし、最新の生成AI(今回はGoogleのGemini 2.5 Flashを使用)は、人間と同じように「パッと見て、文脈で意味を理解」します。
そのため、
- 取引先ごとにレイアウトがバラバラでも
- 事前の位置設定を一切していなくても
AIに画像をぽいっと渡すだけで、「これが会社名だな」「これが合計金額だな」と自動で判別し、使い慣れたGoogleスプレッドシートの正しい列へ綺麗に仕分けてくれるのです。
驚きのポイント:和暦(令和)すら気にする必要なし!
実務で非常に助かるのが、日付の表記揺れへの対応です。
請求書に「令和8年6月8日」と書かれていても、「R8.6.8」と書かれていても、
システム側に面倒な変換ロジックを1行も書くことなく、AIが気を利かせて自動的に「2026/06/08(西暦)」に翻訳して格納してくれます。
【3分で試せる】自動データ化を実行するサンプルコード
実際にGoogleドライブ内の請求書画像を読み込んでスプレッドシートに書き出す、最小限のサンプルコード(GAS:Google Apps Script)を作成しました。
Googleアカウント(無料版でも可)をお持ちであれば、スプレッドシートの「拡張機能」➔「Apps Script」に以下のコードを貼り付けるだけで今すぐテスト可能です。
※事前に「Google AI Studio」から無料のAPIキーを取得し、テストする請求書画像のファイルIDを用意してください。
/**
* Gemini APIを使って請求書画像をOCR解析し、スプレッドシートに書き込む
*/
function geminiInvoiceOCR() {
// --- 【設定部分】ここを書き換えてください ---
const API_KEY = 'YOUR_GEMINI_API_KEY'; // 発行したAPIキーを入力
const FILE_ID = 'YOUR_IMAGE_FILE_ID'; // テストするGoogleドライブの画像ファイルID
// --------------------------------------------
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 1. Googleドライブから画像ファイル(Blob)を取得
const file = DriveApp.getFileById(FILE_ID);
const imageBlob = file.getBlob();
const base64Image = Utilities.base64Encode(imageBlob.getBytes());
const mimeType = imageBlob.getContentType();
// 2. Geminiへのプロンプト(指示文)を設定
const prompt = "添付された請求書の画像から、以下の4つの項目を正確に抽出してください。フォーマットは問いません。\n" +
"必ず指定のJSON形式のみで返答してください。余計な解説テキストや ```json などのマークダウン装飾は一切不要です。\n\n" +
'{"company_to": "請求先名","company_from": "請求元名", "amount": 10000(金額を数値で), "date": "請求日(YYYY/MM/DD形式)", "dueDate": "振込期限(YYYY/MM/DD形式)"}';
// 3. 正しいAPIリクエストURL(モデル名は url の中に含める)
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${API_KEY}`;
// 4. APIリクエストのデータ構造(Payload)を作成
const payload = {
"contents": [{
"parts": [
{ "text": prompt },
{
"inlineData": {
"mimeType": mimeType,
"data": base64Image
}
}
]
}]
};
const options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload),
"muteHttpExceptions": true
};
// 5. Gemini APIを叩く
const response = UrlFetchApp.fetch(url, options);
const responseData = JSON.parse(response.getContentText());
// 6. 返ってきたテキスト(JSON)をパースしてスプレッドシートへ書き込み
try {
let jsonText = responseData.candidates[0].content.parts[0].text.trim();
// 万が一 ```json などのマークダウンが混ざった場合の防御策
jsonText = jsonText.replace(/^```json\s*/i, '').replace(/```$/, '').trim();
const result = JSON.parse(jsonText);
// スプレッドシートの最終行にデータを追加
sheet.appendRow([
new Date(), // 実行日時
result.company_to, // 請求先名
result.company_from, // 請求元名
result.amount, // 金額
result.date, // 請求日
result.dueDate // 振込期限
]);
Logger.log("書き込み成功: " + jsonText);
} catch(e) {
Logger.log("エラーが発生しました。リクエスト応答: " + response.getContentText());
}
}
【実際の実行結果】
サンプルとして、次のような請求書の画像を使用しました。

サンプルコードのGASを実行すると、次のようにスプレッドシートにデータが書き込まれます。

Geminiの無料版は一時的に混雑する場合があります
世界中で同時に無料版API(Gemini 2.5 Flashなど)へのリクエストが集中したとき、Geminiからの返却はエラーコード 503 、ステータス "UNAVAILABLE"(利用不可)となります。
"This model is currently experiencing high demand. ... Please try again later."
(意訳:このモデルは現在、非常に需要が高まっています。一時的なものなので、少し時間を空けてからもう一度お試しください)
今すぐできる対策
1. 少し時間を置いて「実行」してみる
1〜2分ほど待ってから、もう一度GASの「実行」ボタンを押してみてください。Google側の混雑の波が引いていれば、すんなり通ってスプレッドシートにデータが書き込まれます。
2. モデルを一つ前の「安定版」に変えてみる(混雑回避)
もし何度やっても503エラーが続く場合は、最新の2.5モデルが世界中で混み合っている可能性があります。
その場合は、現在最も普及していてサーバーが安定している一世代前のモデル gemini-2.0-flash に一時的に書き換えることで、混雑を回避して動くことがあります。
// 【現在のコード】
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${API_KEY}`;
「2.5」を「2.0」に書き換えます
// 【修正後のコード】
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${API_KEY}`;
肝は「Geminiへのプロンプト(指示文)」にあり!
プログラムコード自体は非常にシンプルですが、実務で使えるレベルにするための最大の肝は、コード内(19行目付近)にある「AIへのプロンプト(指示文)」の書き方にあります。
ただ漠然と「請求書を読み取って」と指示するだけでは、AIは「丁寧な挨拶文」や「余計な解説」を付けて返してきてしまいます。それではプログラムがエラーを起こし、スプレッドシートに自動入力できません。
そこで、プロントを以下のように厳密に設計しています。
添付された請求書の画像から、以下の4つの項目を正確に抽出してください。フォーマットは問いません。
必ず指定のJSON形式のみで返答してください。余計な解説テキストや ```json などのマークダウン装飾は一切不要です。
{"company": "取引先名", "amount": 10000(金額を数値で), "date": "請求日(YYYY/MM/DD形式)", "dueDate": "振込期限(YYYY/MM/DD形式)"}
プログラムが処理しやすい形(JSON)に徹底的に縛る
ポイントは、AIに「指定したJSON形式(システムが読み込めるデータ構造)以外、1文字も喋るな」と厳しく釘を刺している点です。
さらに、金額は「〇〇円」という文字ではなく「数値(10000)」で返すこと、日付は「令和〇年」ではなく「西暦(YYYY/MM/DD)」で返すことをプロンプト内で明確に定義しています。
この「AIの機嫌をコントロールし、システムが誤動作しないデータを吐き出させるプロンプトの技術」こそが、開発会社である当社のノウハウであり、実務で使えるシステムにするための本当の境界線なのです。
よくある疑問:「AI関数」ではなく、なぜプログラミング(GAS)?
「最近のスプレッドシートなら、最初からAI関数(GEMINI関数など)が使えるよね?わざわざプログラミング(GAS)をする必要はあるの?」と思われるかもしれません。
確かに文章の要約や翻訳なら関数が手軽ですが、実務の「請求書OCR」においては、以下の理由からGASを使って裏側で仕組み化する方が圧倒的に有利です。
- ファイル操作の自動化:
関数だけでは「Googleドライブの画像を開いて中身を解析する」という一連の自動フローを作ることができません。 - 無料枠を使い切ってしまう「再計算」のリスク:
今回ご紹介したGemini API(無料版)には、「1分間に15回まで」という無料枠の制限があります。社内の検証や通常の業務で使う分には、この回数を超えることはまずありません。 しかし、スプレッドシートの「関数」は、シートを開いたり、別のセルを編集したりするたびに、すでに読み込み終わったセルまで「すべて同時に再計算(AIへの再問い合わせ)」が走ってしまう性質があります。 もしシートに30件の請求書データが並んでいた場合、1箇所セルを書き換えただけで、一瞬で30回(1分間の無料制限オーバー)の問い合わせが発生し、エラーで画面が動かなくなってしまうのです。※有料版APIの場合、これがそのまま無駄な課金に繋がります。
GASであれば、「ボタンを押した時だけ」「新しいファイルが届いた時だけ」ピンポイントで1回だけAIを動かし、結果を確定データとしてセルに書き込めるため、無料枠の範囲内で最も安全に、安定して運用することができます。
まとめ:実務で本当に使えるシステムへ育てるには?
今回ご紹介したコードは「1枚の画像を指定して処理する」実験用のシンプルなものです。
これを本物の実務で使える業務システムに変えるには、以下のような「次の一手」の拡張が必要になります。
- フォルダ内に溜まった複数枚の請求書を、夜間にまとめて一括自動処理する
- 処理が終わった請求書ファイルを、自動で「処理済みフォルダ」へ移動させて二重処理を防ぐ
- エラーで読み込めなかったファイルだけを管理者にメールで通知する
これらはすべて、GASの技術で実装できます。
高額な専用OCRソフトを契約する前に、まずは使い慣れたスプレッドシートと最新AIで、自社専用の格安な自動化システムを作ってみませんか?
【資料ダウンロード&お問い合わせ案内】
無料ダウンロード資料
この記事でご紹介した仕組みを、実際の現場で稼働させるためのステップをまとめた
『Googleスプレッドシート×Geminiで実現する、請求書データ化「実務運用」拡張ガイド(PDF)』
は、こちらからダウンロードできます。
あなたの会社の請求書で「無料読み取りテスト」実施中!
「うちの取引先の請求書でも、本当に読み取れる?」と気になった方は、ぜひお気軽にお問合せください。
当社の検証環境で実際にデータ化し、その精度を確かめられる「無料レポート」をお届けいたします。
Google Workspaceの導入や活用に関するご相談を承っております。
導入から運用までトータルでサポートし、貴社の業務環境に合わせた最適な活用方法をご提案いたします。
「自社に合った使い方を知りたい」「スムーズに導入したい」など、まずはお気軽にご相談ください。
コメント