space ocr
検証を内蔵したフィールド抽出 API

フィールドを抜き出す。
確認すべき値がわかる。

スキーマどおりの JSON — どの値にも読み取り元の座標が付き、照合に落ちた値は確認リストで返ります。

テンプレートなし。学習なし。黙って間違う数字なし。

コンソールがそのままプレイグラウンド — ファイルを1つ置くだけで、API が返す応答をそのまま確認できます。
POST /ocr/fields の実際のレスポンス構造
store_nameスーパー ABC✓ verified
date2025-04-10✓ verified
items[0].price¥198⚠ text_mismatch
total¥548✓ verified
invoice_no⚠ missing
7 フィールド中 2 件が要確認

連携は POST 一回です

フィールド名を書き、値がどんな形式であるべきか分かっているなら、それも書きます。値ごとに座標とフラグが付いた JSON が返り、下の呼び出しはそのままコピーして実行できます。

request
1
2
3
4
5
6
7
8
9
10
11
12
curl -X POST https://api.space-ocr.com/ocr/fields \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://example.com/receipt.jpg",
    "imageType": "url",
    "fields": [
      { "name": "store_name" },
      { "name": "invoice_no", "pattern": "^[0-9]{6}$" },
      { "name": "total", "type": "number", "required": true }
    ]
  }'
response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  "status": "success",
  "data": {
    "values": {
      "store_name": "Supermarket ABC",
      "invoice_no": "10O482",
      "total": "$4.94"
    },
    "cells": {
      "invoice_no": {
        "box": { "xmin": 612, "ymin": 96,
                 "xmax": 742, "ymax": 118 },
        "quad": [ /* 4 corners */ ],
        "verified": false,
        "review": { "reasons": ["pattern_mismatch"] },
        "evidence": { "text_match": true }
      }
      // …store_name, total — same shape
    },
    "review": {
      "unit": "field", "declared": 3,
      "returned": 3, "boxed": 3, "verified": 3,
      "flagged": [
        { "path": "invoice_no",
          "reasons": ["pattern_mismatch"] }
      ],
      "by_reason": { "pattern_mismatch": 1 }
    },
    "normalized": { "invoice_no": "10O482", "total": 4.94 },
    "image": { "width": 1654, "height": 2339 }
  }
}

どんなフィールドも、名前を付けるだけ

学習も、プロセッサ設定も、文書タイプ登録も不要です。

次のランでも同じ答え

同じページを3ラン — 463 個の値のうち動いたのは 16 個。

間違った値は、自分から手を挙げる

どの値にも座標とフラグが付きます — 全件検品ではなく、フラグだけ見てください。

1スキャン ¥10(税込)· 失敗時は課金なし · 毎月100枚無料、カード登録不要

開発者による活用事例

同じエンドポイントで、外部の開発者が実装したデモです。

Michiel Tech Lab

values と cells が分かれているので、値と根拠を同じ UI へ載せやすい設計でした。

請求書レビュー台帳

返却された座標を写真上に重畳し、画像と照合しながら値を修正できます。要確認項目を消し込んだうえで金額検算と重複警告を通し、SQLite への保存と CSV 出力まで行います。

Next.jsTypeScriptSQLiteZod
和泉惣之助

normalized が values と同じ形で返るので、表示は原本どおり・計算は数値、がそのまま実装できました。

請求書 → 弥生会計 仕訳 CSV

撮影した請求書を、弥生会計へそのまま取込可能な仕訳 CSV に変換します。税率別に仕訳を分割し、税抜/税込を判定したうえで、人手確認が必要な箇所は別ファイルへ出力します。

PythonCSV (CP932)弥生会計
りょう03

明細の読み取りが強い。表でも行がずれず、紙を撮っても PDF 直出力と同じ結果でした。

工事別原価台帳

紙で届く注文書・納品書・請求書を読み取り、数量×単価や明細合計の検算、工事・取引先マスタとの照合、二重計上の検出にかけます。引っかかった箇所だけ原本の該当位置に枠を出し、人の確認を経て工事別の原価に計上します。

PythonFastAPISQLite
健康診断の結果表 — 座標で組み直し
モグテックラボ 守井 清吾 (工学博士・情報工学)

値ごとに座標が返るので、読み上げの順序を画像のレイアウトから組み直すことも、その値が画像のどこから来たのかを実装側で検証することもできました。

帳票の読み上げアプリ

請求書や健康診断の結果表を、スクリーンリーダーが最後まで筋の通る順で読み上げられる形に組み直す Web アプリです。2段組の帳票は返ってきた順に読み上げると左右の別々の検査が1行に混ざって聞こえるため、cells の座標から読み上げ順を組み直し、いま読んでいる値の位置に元画像の枠が移ります。制作者は全盲のITエンジニアで、読み上げ順の検証はすべて実際の読み上げで行われています。

PythonFastAPIJinja2NVDA

音声合成:Open JTalk(Modified BSD)/HTS voice "tohoku-f01"(東北大学 Intelligent Communication Network Laboratory、Creative Commons Attribution 4.0)

Blue Basket

quad が無ければ、この UI は成立しませんでした。傾いた写真でも、枠が文字にぴったり乗ります。

書類まるごとCSV アプリ

書類の写真やPDFが入ったフォルダを選び、全ページを一括で読み取って CSV へ書き出す Windows アプリです。確認が必要なセルだけに色を付け、原本の該当箇所を quad の枠で示します。画面は印字のまま、CSV には normalized を出力。exe 1つで動作し、通信先は API のみ——PC の外には何も保存されません。

PythonPySide6PyInstaller
ぷーる133

文字は正しく読めているが、宣言した型には収まらない——その区別が1セルの中で同時に取れるのが、確認画面を作るうえで効きました。

納品書の検算・突合パイプライン

印刷した納品書を撮影した写真1枚を、抽出 → 検算 → 発注データとの突合 → Google Sheets 登録まで通す Cloudflare Workers アプリです。数量×単価の検算と発注マスタとの照合を通過した行だけを自動登録し、引っかかった行は理由付きで「要確認」に分離。判定結果(登録可 / 要確認 / 対象外)を3色の枠で原本写真に重ねて表示します。

Cloudflare WorkersHonoTypeScriptGoogle Sheets

難しいのは、OCR が文字を読んだあとです。

写真とデータベースの項目のあいだにある処理は、すでに用意してあります。

商品
単価
しゅまろやかトースト6枚
¥98
富山県産こしひかり5k
¥1,980
カルビーフルグラ800g
¥698
  • 01

    「この金額、どこから来たんですか」

    値ごとに元画像を指す box / quad 座標。

  • 02

    「同じ ¥711 が4行あるのに、なぜこれを?」

    値は OCR 原文と一文字ずつ突き合わせてから座標を決めます。

  • 03

    「伝票が90度回って届きます」

    回転も傾きも、撮ったままの写真で読みます。

  • 04

    「間違ったまま通ってしまうのが怖い」

    全値を OCR 原文と相互照合 — 確信できなければ review.flagged に載せます。

  • 05

    非同期+署名付き Webhook

    /jobs ポーリング・HMAC Webhook・OpenAPI 3.1。

  • 06

    結果を置く DB は要りません

    フォルダーとシートを作れば行が溜まり、/view で条件をつけて取り出せます。

値がどこにあるかを、モデルは決めません。

呼び出しのたびにパイプラインが通る5つのステップです。

  1. 01

    OCR で読む

    文字と、その文字がある位置を一字ずつ拾います。座標が生まれるのはこの段階だけです。

  2. 02

    モデルが値を抜き出す

    元画像と読み取った文字を突き合わせて、指定した項目や書類そのものの構造を値として抜き出します。座標は作りません。

  3. 03

    値を原文の位置にアンカリング

    モデルが出した値を、OCR が実際に読み取ったページ上のその位置へ文字単位でアンカリングします。

  4. 04

    二つの結果を突き合わせる

    食い違った値はその箇所だけ切り出してもう一度読み、それでも確認できなければ理由つきの印が値に残ります。

  5. 05

    値と根拠を返す

    値ごとに、それを読み取った位置の boxquad が一緒に返ります。

同じ写真で並べて測った数字

同じ画像・同じフィールドスキーマ・同じ採点スクリプトで、エンジンごとに3ラン。生レスポンスと採点コードはすべて公開しています。

同じ書類の左右比較 — space ocr は値ごとに座標ボックスを、相手エンジンは表全体にブロック1つを返します
下の数字は、まさにこの写真から出ました — 押すと大きな表示が切り替わります。
16 vs 100同じページを3回実行したときに動いた値の数。
91.1% vs 70.0%463 フィールドの正解率 — space ocr 対 比較対象エンジン。
138 vs 1上の相場表に付いた座標ボックスの数 — 値ごとに1個か、表全体で1個か。

8 cases over 7 documents · 463 fields · 3 runs each · August 2026 — Mistral Document AI との統制実測。

検証を目で見て、触れる

API が返すのと同じ検証済みの値を、読むために作られた画面で。値にカーソルを合わせれば、写真が答えます。

  • 01
    写真を放り込むだけ

    設定もコードもありません。ブラウザに写真をまとめてドラッグすれば、行が埋まっていきます。

  • 02
    値を指すと、写真が答える

    セルにカーソルを載せると元画像の該当箇所が光ります。写真から値への逆方向も同じように動きます。

  • 03
    怪しい値は隠れない

    照合を通らなかった値は色ではっきり示されます。誤りが静かに紛れ込まないので、見るべきものだけ確認すれば済みます。

  • 04
    見つけたその場で直す

    元画像をとなりに置いたまま値を直せます。別窓も、元のページ探しもいりません。

  • 05
    そのまま持ち出す

    シートは Excel で文字化けしない CSV に、文書の束は .md / .txt に書き出せます。

三つの形式と、置いておく場所

アップロード時に形式を選びます。読み取った結果はフォルダーに溜まり、そこから取得も検索もできます。

POST /ocr/fields

構造化フィールド

欲しい項目を指定すると型付きで返り、明細行も展開されます。行はシートに積み上がり、絞り込みも CSV 書き出しもできます。

POST /ocr/markdown

Markdown

見出し・段落・リスト・表の構造をそのまま保ちます。ドキュメントサイトや Wiki、LLM のコンテキストにそのまま流せます。

POST /ocr/text

プレーンテキスト

段落単位の素の読み取り。スキャンを索引化・検索・差分比較するのに一番素直な形です。

POST /create

フォルダー

結果は付けた名前のフォルダーにそのまま残ります。フォルダーは入れ子にでき、シートもドキュメント束もメモも同じ場所に入ります。

GET /view

クエリ

溜まった行を条件で絞って取り出せます。where · sort · select とページネーションはサーバー側で処理されます。

GET /space

検索

ツリーをたどっても探せますし、検索窓に一度打てばフォルダー名やファイル名だけでなく、メモの本文や読み取ったセルの値まで一緒に引っかかります。

AI エージェントが整理して取り出します

MCP サーバーを 1 つつなぐだけです。写真を渡せば、エージェントが種類ごとにフォルダーとシートを作り、1 枚を 1 行として溜めていきます。あとから条件をつけて必要な行だけ取り出せますし、結果はそのまま残るので別途データベースを用意する必要はありません。

MCP エンドポイントhttps://mcp.space-ocr.com/mcp
  • space_createフォルダーとシートを作り
  • space_upload写真を上げて行として溜め
  • space_view条件をつけて取り出し
  • space_delete確認のうえ削除します

MCP に対応したクライアントなら、どこからでも

ClaudeChatGPTPerplexityVS CodeCursor

よくある質問

相談から始めることもできます。

開発者でなくても構いません。業務の自動化にご関心があれば、実データでの試験運用を含め、導入の適合性をご一緒に検討します。

会計・経理まわり
受注・発注と販売の管理
生産・倉庫・配送
医療・介護の現場
銀行・保険・不動産
人事・契約・社内管理
紙の書類を電子データに
打ち込み・書き写しの手間
FAX・手書き・決まった型のない書類
内容の見直しと決裁の流れ
既存システムとの連携(CSV・API)
そのほかのお困りごと