space ocr
ガイド記事料金ドキュメント

監査証跡つきのドキュメントOCR

ほとんどのOCRは、信じるしかないテキストを返すだけ。space-ocr は、抽出したすべての値を、検証済みのページ上の位置情報——バウンディングボックス、頂点、マッチ率——とともに返すので、どのフィールドも、その値が読み取られたピクセルまでさかのぼってたどれます。

ドキュメントからデータを抽出するのは、デモで見せるのは簡単でも、信用するのは難しいものです。モデルが請求書を読み取り、total: 2,045 と返してきても、どんな信頼度スコアでも本当には答えてくれない疑問が残ります。それはページに実際に印字されている数字なのか、それともモデルが生成したものなのか? その場限りの照会ならそれで構いません。しかし、経理、保険金支払、コンプライアンス、あるいは監査の対象になりうる業務では、「モデルを信じる」というのは管理体制とは言えません。

監査証跡がこれを解決します。むき出しの値ではなく、すべてのフィールドがページ上の検証済みの位置情報とともに返ってくる——だから人(あるいは別のシステム)が、値を読み取った正確なピクセルへ一足飛びに移動して、それを確認できます。これが、単なる答えと、根拠を示して説明できる答えとの違いです。

実際に見てみる:どの値も元の位置にさかのぼれる

下のフィールドにカーソルを合わせてみてください。レシート上のボックスが、その値を読み取った場所です——そして各フィールドはそれぞれのマッチ率を持っています。

Receipts with extracted-field bounding boxes
Verified fields
KINSHO · 合計 2,045
ライフ · 合計 4,286

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.

「検証済みの位置情報」とは具体的に何か

space-ocr は、抽出したすべての値とともに次の3つを返します。

  • bbox{ xmin, ymin, xmax, ymax } で表される軸に沿った矩形。0–1000 normalized のグリッド上で表現され(0,0 = 左上、1000,1000 = 右下)、画像のピクセルサイズに依存しません。
  • vertices — 順序づけられた4つの点 {x, y}(左上 → 右上 → 右下 → 左下)で構成される傾きに沿ったボックス。ドキュメントの傾きに追従するので、回転したスマホ写真でもきれいに囲めます。
  • match_ratio — その値の文字のうち、実際にページ上で位置を特定できた割合(0–1)。0.85 以上で確信を持ってマッチしたとみなされ、1.0 ならすべての文字が見つかったことを意味します。

位置情報が値と一緒に付いてくるので、結果はブラックボックスではありません。ボックスを描画したり、座標を引用したり、フラグの立ったフィールドをOCRを再実行せずに再確認したりできます。

✓ Verified

座標はモデルの言い分を鵜呑みにしたものではありません。 言語モデルが返すのは各値のテキスト——そしてどの単語トークンを使ったかのヒント——だけで、ボックスそのものは決して返しません。エンジンはそのうえで、そのテキストを、ビジョンOCRがページ上で実際に検出したシンボルと文字単位で照合します。だからボックスは、それらの文字が見つかった本物のピクセルに着地し、各値にはマッチ率——その文字のうち実際に位置を特定できた割合——が付きます。モデルのトークンヒントはノイズを含みうる(繰り返し行のあいだで取り違えることもある)ため、列・行の一貫性チェックによって、鵜呑みにせず検証されます。要点は、AIが間違えないということではなく、すべての値がページと照合され、どれだけよく一致したかを示すスコアが付くということです。

値をクリックすれば、そのピクセルにたどり着く

アプリ上では、これがインタラクションになります。任意のセルをクリックすると、元画像上でその値が読み取られた正確なボックスがハイライトされ、拡大したクロップと接続線が表示されます。バッチをざっと検査するのにこれ以上速い方法はありません——ドキュメント全体を見渡すのではなく、視線がそのまま該当箇所に向かいます。

任意のセルをクリック → 対応する領域が元画像上で点灯します。

修正もまた監査可能

監査証跡は、機械の出力だけの話ではありません——人が何を変更したかも含みます。セルを編集すると、space-ocr はあなたの修正を元のOCR値とは別に保存します。Original ツールチップが、エンジンが最初に読み取った内容を常に示すので、レビュアーは機械の値と人による上書きの両方を並べて確認できます。

セルを編集すると、元のOCR値が Original ツールチップの下に保持されます。

APIにも、すべての値に備わっている

これはUIだけの機能ではありません。POST /ocr/fields は、抽出したすべての値に同じ bboxverticesmatch_ratiobbox_source を返し、field_bboxes マップがフィールドごとの座標を提供します。GET /view で保存済みのシートを照会すると、ボックスはデフォルトで一緒に付いてきます——ペイロードを軽くしたいときだけ boxes=0 を追加してください。

POST /ocr/fields → レスポンス(抜粋)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "status": "success",
  "data": {
    "total": "2,045",
    "field_bboxes": {
      "total": {
        "bbox": { "xmin": 595, "ymin": 974, "xmax": 781, "ymax": 1000 },
        "vertices": [
          { "x": 594, "y": 975 }, { "x": 781, "y": 972 },
          { "x": 781, "y": 998 }, { "x": 595, "y": 1000 }
        ],
        "match_ratio": 0.93,
        "bbox_source": "vision_symbol_match"
      }
    }
  }
}

bbox_source は、各座標がどのように導き出されたかを教えてくれます——vision_symbol_match は通常の文字照合パス(本物の match_ratio を伴います)、token_id は単語トークンのヒントが使われたことを意味し、low_confidence は確認したほうがよい弱いマッチにフラグを立てます。ログに残したり、フィルタリングしたり、レビュアーに提示したりできるメタデータです。

実際に値を検証する手順

  1. 抽出結果を開く
    シートを開くか GET /view を呼び出します——各値は bbox、vertices、match_ratio を持っています。
  2. 値をクリックする
    セルをクリックすると、その値が読み取られた元画像上の正確な領域がハイライトされます。
  3. マッチ率を確認する
    match_ratio が 1.0 ならすべての文字の位置が特定できたことを意味し、0.85 未満なら詳しく確認したほうがよい値としてフラグが立ちます。
  4. 必要なら修正する
    セルを編集して上書きします——元のOCR値は監査証跡のために Original ツールチップの下に保持されます。
OCRの監査証跡とは何ですか?
監査証跡とは、抽出されたすべての値を、元のドキュメント上の正確な位置までさかのぼってたどれることを意味します。space-ocr では、各値がバウンディングボックス、傾きに沿った4つの頂点、そしてマッチ率とともに返ってくるので、結果を信用任せにするのではなく、引用したり再確認したりできます。
AIがバウンディングボックスを勝手にでっち上げることはありませんか?
モデルは座標を一切返しません——返すのは値のテキストと、どの単語を使ったかのヒントだけです。エンジンはそのテキストを、ビジョンOCRがページ上で実際に検出したシンボルと文字単位で照合し、どれだけ見つかったかを示す match_ratio を報告します。モデルのトークンヒントも鵜呑みにはされず——列と行の一貫性と照合されます——だからボックスは、値の文字が本当に見つかった場所を反映するのであって、モデルが「そこにあると思っている」場所ではありません。ページ上に存在しない値が高い match_ratio を獲得することはできません。
座標はピクセル単位で返されますか?
APIは 0–1000 normalized のグリッドで返します(0,0 が左上、1000,1000 が右下)。画像の解像度には依存しません。ピクセルへの変換は pixel_x = bbox_x / 1000 × image_width で行えます。
検証に追加料金はかかりますか? OCRを再実行しますか?
いいえ。ボックスは標準レスポンスの一部であり、GET /view で保存済みのシートを照会してもOCRが再実行されることはなく、料金も発生しません。必要ないときは boxes=0 でボックスを外し、ペイロードを軽くできます。

自分のドキュメントで試してみる

無料プラン——月100スキャン、クレジットカード不要。すべての値が、ページ上の位置情報とともに返ってきます。

関連