領収書・請求書に最適なOCRソフトの選び方
領収書・請求書OCRソフトの選定ガイド。検証可能な精度、明細行の抽出、エクスポート、API、Webhook、監査証跡、そして明朗な料金まで——実際に確認できるライブデモで証明します。
紙の書類を扱うすべての会社が、領収書と請求書を扱っています——そしてどちらも手入力するのは本当に苦痛です。OCRが約束するものは明快です。書類を撮影し、構造化データを受け取り、次の作業へ進む。問題は、ほとんどのOCRツールがそれらしい結果で止まってしまうことです。取引先名と合計金額を渡され、あとはそれを信じるしかありません。個人の経費メモならそれで十分でしょう。しかし買掛金管理や経費の突合、あるいは監査の対象になる業務では、「AIがそう言ったから」という説明は、自分の名前で通せる答えにはなりません。
このガイドは選定チェックリストです。派手なデモではなく、領収書・請求書に最適なOCRソフトを本当に分けるポイント——検証可能な精度、明細行の抽出、きれいなエクスポート、Webhookを備えた本物のAPI、監査証跡、そして予測できる料金——を一つずつ確認し、space-ocrがそれぞれをどう実現しているかを、スクリーンショットではなく実際に確認できるライブデモでお見せします。
まずは証拠から:その場で確認できる実際の抽出結果
機能の話に入る前に、多くのベンダーが見せたがらないものをお見せします。それは、すべての値が、ページ上のどこから読み取られたかを正確に指し示す抽出結果です。下のフィールドにマウスを合わせてみてください——領収書上に表示される枠が、その値が読み取られた場所です。

Each value with a box carries a verified on-page location — bbox + 4-point vertices + match_ratio — on a 0–1000 normalized grid (0,0 top-left → 1000,1000 bottom-right), the same shape the live API returns. Hover a field to trace it back to the pixels it came from.
領収書・請求書OCRで見るべきポイント
領収書と請求書は、「簡単そうに見えて最も難しい」書類です。レイアウトは取引先ごとにばらばら、合計金額は小計や税額の行に紛れ、明細は折り返し、スマホ写真は傾いて反射が入って届きます。きれいなPDF1枚なら完璧に処理できるツールが、次のしわくちゃの感熱紙レシートで崩れることも珍しくありません。マーケティング文句に惑わされないよう、次の基準を使ってください。
| 重要な点 | なぜ重要か | 弱いツール | 強いツール |
|---|---|---|---|
| 検証可能な精度 | 追跡できない数字は、結局打ち直すしかない | 値を返す、せいぜい信頼度スコアまで | 各値をページ上の位置とともに返し、その場へジャンプできる |
| 明細行 | 請求書も領収書もテーブルであって、平坦なフィールドではない | 合計だけ拾って明細行を落とす | セルごとの位置を持つ明細行を繰り返し抽出する |
| エクスポート | データはツールの外に出てこそ役に立つ | コピペか、囲い込まれたビューアのみ | API経由のCSV(Excel/CJK対応)とJSON |
| API + Webhook | 本格的な処理量には、クリックではなく自動化が要る | UIのみ、または貧弱な同期エンドポイント | 非同期ジョブと署名付きWebhookを備えたREST API |
| 監査証跡 | レビュー担当者は何が変わったかを見たい | OCR結果を黙って上書きする | 元の値を人手の修正と並べて保持する |
| 明朗な料金 | 予算管理に不意打ちは禁物 | 何でも「お問い合わせ」 | 公開された1枚あたりの料金と無料枠 |
この記事の残りでは、各行を順番に取り上げていきます。
検証可能な精度は、信頼度スコアに勝る
信頼度スコアは、モデルが「自信あり」と感じていることを教えてくれます。しかし、total: 2,045 が領収書に実際に印字された数字かどうかは教えてくれません。space-ocr はもっと厳しい問いに答えます。すべての値とともに、次の情報を返すのです。
bbox— 0〜1000に正規化されたグリッド上の軸並行矩形{ xmin, ymin, xmax, ymax }(0,0 = 左上、1000,1000 = 右下)。画像のピクセルサイズに依存しません。vertices— 書類の傾きに沿った回転対応ボックスを形作る、順序付きの4頂点。傾いたスマホ写真でもきれいに枠が付きます。match_ratio— その値の文字のうち、実際にページ上で見つかった割合(0〜1)。フィールドは 0.85以上 で確実にマッチしたものとして扱われ、1.0はすべての文字が見つかったことを意味します。
位置情報が値とともに付いてくるため、ボックスを描画したり、座標を引用したり、フラグの立ったフィールドを再確認したりするのに、OCRを再実行する必要がありません。これがOCR監査証跡の土台であり、上のデモがモックアップでない理由でもあります。
座標は、モデルの言い分をそのまま信じて決めているわけではありません。 言語モデルは各フィールドのテキストと、どの単語トークンを使ったかのヒントを返しますが、ボックスそのものは決して返しません。エンジンはそのテキストを、ビジョンOCRがページ上で実際に検出したシンボルと文字単位で照合します。だからこそボックスは、それらの文字が見つかった実際のピクセルに配置され、各値にはどれだけ照合できたかを示す match_ratio が付与されます。モデルのトークンヒントはノイズを含むことがあり(繰り返し行の間で取り違えることがあります)、そのため鵜呑みにするのではなく、列・行の整合性チェックで検証します。要点は、AIが間違えないということではなく、すべての値が領収書と照合され、どれだけ一致したかを示すスコアが付くということです。
合計だけでなく、明細行まで
安価な領収書OCRで最も大きく欠けているのが、テーブルです。総合計を拾うだけなら誰にでもできます。価値があるのは明細行——商品ごとの数量、単価、値引きです。space-ocr はこれらを繰り返し行として抽出し、各セルがそれぞれの位置を保持するため、折り返しや結合された明細行でも追跡できます。
明細行は、1行を children で記述した type: "array" のフィールドとしてリクエストします。明細行モデルのより詳しい解説は請求書からの明細行抽出をご覧ください。
{
"fields": [
{ "name": "vendor", "type": "string" },
{ "name": "invoice_date", "type": "string" },
{ "name": "total", "type": "string" },
{
"name": "line_items",
"type": "array",
"children": [
{ "name": "description", "type": "string" },
{ "name": "quantity", "type": "number" },
{ "name": "unit_price", "type": "number" }
]
}
]
}組み込みテンプレート:スキーマ定義は不要
よくあるケースでは、フィールド定義を手書きする必要はありません。space-ocr は、ひとつの templateId を指定するだけで適用できる定義済みテンプレートを用意しています——receipt(領収書)や invoice(請求書)をはじめ、名刺、見積書、注文書、納品書、各種身分証明書まで揃っています。テンプレートがフィールドセットとプロンプトを用意してくれます。独自の fields も併せて渡した場合は、そちらが優先されます。
呼び出しはHTTPリクエスト1回だけ——SDKもPDFの前処理も不要です(エンジンはラスター画像を受け付けます:JPEG、PNG、GIF、BMP、TIFF、WebP)。
curl -s https://api.space-ocr.com/ocr/fields \
-H "Authorization: Bearer $SPACE_OCR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "https://example.com/invoice.jpg",
"imageType": "url",
"templateId": "invoice"
}'エクスポートとAPI:データの行き先
抽出も、データがツールに閉じ込められたままでは無価値です。space-ocr はきれいな出口を2つ用意しています。
- CSV — シートはUTF-8 BOM付きでエクスポートされるため、Excelが日本語・韓国語・中国語のテキストを正しく開きます。配列(明細行)の行はサブ行に展開され、手作業による修正があれば出力ではOCRの値を上書きします。
- REST経由のJSON — 1件の書類には
POST /ocr/fields、画像をそのままシートに投入するにはPOST /upload、保存済みシートをサーバー側で(where、sort、select、limitで)クエリするにはGET /viewを使います。OCRを再実行する必要も、再度課金されることもありません。
大量処理の自動化では、/upload はデフォルトで非同期です。ファイルごとにジョブを返し、完了時に Webhook で通知します——スペースごとに1つの署名付き(HMAC-SHA256)エンドポイントで、ocr.completed や ocr.failed といったイベントが届きます。これが、クリックして使うツールと、自分で回るパイプラインの違いです。全体像は請求書データ抽出APIガイドとAPIドキュメントにあります。
監査証跡:機械が読んだ値 vs. 人が変えた値
最良の領収書・請求書OCRは、自分の出力を記録するだけでなく、修正も記録します。space-ocr でセルを編集すると、あなたの値は元のOCRの値とは別に保存され、元の値のツールチップがエンジンの最初の読み取り結果を常に表示します。レビュー担当者は機械の値と人手の上書きを並べて確認できます——これこそ監査が求めるものです。
明朗で予測できる料金
検証可能な精度と誠実な料金は、たいてい同じ姿勢から生まれます。space-ocr は1枚あたり¥10です。クレジットカード不要、月100スキャンの無料枠があり、月額¥7,980のProプランには1,100スキャン、チーム共有、100GBのストレージが含まれます。それを超える大量処理は、Businessプランで個別にご相談を承ります。フィールド単位の課金もページ単位の追加料金もなく、保存済みシートへのクエリ(GET /view)は無料です。
領収書・請求書を抽出する手順
- 画像を送信する領収書または請求書を、imageType を「url」または「base64」にして /ocr/fields へPOSTします。エンジンはラスター画像(JPEG、PNG、GIF、BMP、TIFF、WebP)を受け付けます。
- テンプレートまたはフィールドを適用するtemplateId に「receipt」または「invoice」を渡して組み込みスキーマを使うか、独自の fields を指定します——明細行には children を持つ array フィールドを含めます。
- 構造化された結果を読む各値は bbox、vertices、match_ratio、bbox_source とともに返り、さらにページ上の全フィールドの位置を示す field_bboxes マップが付きます。
- 検証して修正するどのセルをクリックしても、それが読み取られた正確な領域がハイライトされます。0.85 を下回る match_ratio は、よく確認すべき値であることを示します。編集内容は元の値の隣に保存されます。
- エクスポートまたはクエリするCSV(UTF-8 BOM、明細行は展開済み)をダウンロードするか、保存済みシートを GET /view で where、sort、select を使ってクエリします——OCRの再実行も追加料金もありません。