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

確認できるデータに変える、日本語OCR

space-ocrで日本語の領収書・請求書・納品書を読み取ります。混在スクリプト、全角・縦書き、文字化けしないCSV書き出しに対応し、値は data.values、位置は data.cells、確認すべき項目は data.review.flagged で返ります。

日本語は、ふつうのOCRが静かに崩れる場所です。1枚の領収書に漢字・かな・半角カナ・全角数字、そしてときどき英語までが混ざり、合計は右端の縦書き列に並んでいたりします。多くのツールは先に言語を選ばせるか、レイアウトを失った平らなテキストの塊を返すかのどちらかです。本当に役立つ日本語OCRは、それを一度に読み、各数字がどこから来たのかを教えてくれる必要があります。

space-ocrは両方をこなします。JP書類を読んで構造化フィールドを data.values に返し、すべての値を、ページ上のどこから読み取ったかという正確な位置とともに返します——data.cells[path] にボックス・四頂点・判定・根拠が入ります。照合が通らなかったものは data.review.flagged に作業リストとして並ぶので、ページを読み直すのではなく短い待ち行列だけを見れば済みます。設定する言語はありません。日本語・韓国語・中国語・英語をひとつのエンジンがまとめて扱います。

その場で確認できる、実際の日本語抽出

下のフィールドにマウスを合わせてみてください。ここで読んでいる2枚の領収書は本物です——合計2,045のKINSHO 布施店と、合計4,286のライフ 国分店、どちらも2019年8月の日付です。値とボックスはすべて実際の解析結果から読み込んだもので、モックアップではありません。ボックスは漢字・かな・数字が混ざった各行に沿います。行の横に出る文字一致の数値は補助的な根拠であって、合格ラインではありません。

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

Each value with a box carries a verified on-page location — in data.cells[path], that is box + 4-point quad + evidence.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.

3 つの形、同じ返却形式
同じ 1 ページを、名前付きフィールドとして(POST /ocr/fields)・レイアウトを保った Markdown として(POST /ocr/markdown)・読み順を直したプレーンテキストとして(POST /ocr/text)受け取れます。どれも data.values・data.cells・data.review・data.image という同じ形で返るので、確認の処理は一度書けば使い回せます。
言語設定はありません
選ぶ言語ヒントも選択肢もありません。日本語・韓国語・中国語・英語がひとつのエンジンを通り、同じ行に混ざっていても、リクエストで何かを指定する必要はありません。
全角・縦書き・混在スクリプト
漢字・ひらがな・カタカナ・半角カナ・全角数字・英語が同じ行にあってもまとめて読みます。宣言した pattern は全角を半角に畳んだ値に対して照合するので、T12… と印字されていても素の ASCII パターンが効きます。
文字化けしないCJK安全CSV
エクスポートはUTF-8 BOM付きCSVなので、店舗名・合計・商品名がExcelで文字化けせず正しく開きます。明細行はサブ行に展開されます。
すべての値に位置情報、明細行も同じ
data.cells[path] がボックス(0〜1000グリッド上の xmin/ymin/xmax/ymax)と四頂点の quad(ページの傾きに沿います)を返し、その座標の基準面が data.image です。明細1行ごとの繰り返し行は values と cells の両方で items[0].amount として指せます。
日本の帳票に効く宣言
type: "date" は 令和8年8月16日 を data.normalized で 2026-08-16 に解釈し、data.values は印字どおりのまま残ります。type: "number" は ¥13,220 を 13220 に。pattern は登録番号の形を検査し、near / not_near は 御中 と 登録番号 の取り違えに届きます。
スマホ写真もOK
EXIF回転は読み取る紙面にすでに反映されていて、傾き補正は行いません。斜めから撮った伝票は傾いたままで、quad がその傾きに沿います。

space-ocrでの日本語OCRの仕組み

モデルは座標を作りません。書類を読んで値を返し、そのあと文字マッチャーが、その文字をOCRがページで実際に検出したシンボルと突き合わせます。この突き合わせがボックス・quad・各セルの根拠を生みます。verified は review の鏡になる判定です——理由がひとつでも付けば false、照合が走って何も立たなければ true、照合できるものが無ければ null。文字照合そのものは evidence.text_match にあり、evidence.match_ratio は文字の被覆率を示す補助的な根拠で、合格ラインではありません。2つのエンジンが同じ誤読で一致してしまうこともあるので、この待ち行列は「まず見るべき場所」であって保証ではありません。

アプリにPDFをドロップすると、各ページがまず画像にレンダリングされてから読まれます——複数ページの請求書や納品書に便利です。APIを直接呼ぶ場合はラスターのページ画像をURLまたはbase64で送れば、返ってくる構造化結果は同じです。必要な fields を宣言するか、autoFields: true を送って提案させてください。明細行は children を持つ array フィールドで表し、items[0].amount のように指せます。

宣言は抽出のあとに検査され、モデルには渡りません。つまり読み取りではなく確認の信号を変えます。type: "date" は決定的な data.normalized の層を足し、令和8年8月16日 は 2026-08-16 になりますが data.values は印字どおりのままです。type: "number" は ¥13,220 を 13220 にします。pattern は全角を畳んだ値に対して照合するので、全角で印字された登録番号にも ^T[0-9]{13}$ が効きます。日本の帳票で起きやすい当事者の取り違えには、宛先に 御中 や 様 を near として、登録番号 / TEL / 〒 を not_near として宣言してください。取り違えは黙って通らず near_mismatch や near_conflict として見えるようになります。数量欄の 一式、支払期限の 翌月末払い のように値でない表記が正規に印字される項目は string のままにしてください——型を宣言すると、書類として正しいのに毎回確認リストに載ります。

日本語の請求書にフィールドを宣言する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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-jp.jpg",
    "imageType": "url",
    "fields": [
      { "name": "issuer", "type": "string", "required": true,
        "near": ["登録番号", "TEL", "〒"] },
      { "name": "bill_to", "type": "string",
        "near": { "terms": ["御中", "様"], "match": "suffix" },
        "not_near": ["登録番号", "TEL"] },
      { "name": "registration_no", "type": "string", "pattern": "^T[0-9]{13}$" },
      { "name": "issue_date", "type": "date", "required": true },
      { "name": "total", "type": "number", "required": true, "min": 0 },
      { "name": "items", "type": "array", "children": [
        { "name": "name", "type": "string" },
        { "name": "qty", "type": "string" },
        { "name": "amount", "type": "number" }
      ] }
    ]
  }'

日本語の書類をOCRする手順

  1. 書類を追加
    アプリに領収書・請求書・PDFをドロップすると、各ページが画像にレンダリングされOCR待ち行列に入ります。APIではラスターのページ画像(urlまたはbase64)を /ocr/fields に送ります。言語設定はありません。
  2. フィールドを宣言する
    必要な fields を並べるか、autoFields: true を送ってスキーマを提案させます。明細行テーブルには children を持つ array フィールドを使い、書類が支えられる範囲で type・pattern・near・not_near を足します。
  3. 構造化された結果を読む
    業務データは data.values にあります。data.cells[path] には box・quad・verified・review・evidence が入り、その座標の基準面が data.image、宣言したスカラー型の解釈値が data.normalized です。
  4. 確認の待ち行列を処理する
    data.review.flagged を回します。各項目は path と、ランク順で先頭が代表になる reasons 配列を持ち、flagged.length が確認すべき件数です。対応するセルを開けば、その値を読み取った領域がハイライトされます。
  5. エクスポートまたはクエリ
    CSV(UTF-8 BOMで日本語がきれいに開く、明細行は展開済み)をダウンロードするか、保存済みシートを GET /view で where・sort・select を使って読みます——保存済みの行を読むのにOCRは走らず、GET /view は課金されません。

シンプルで予測できる料金

1クレジット=1ページで ¥10(税込)、毎月100クレジットの無料枠付き、クレジットカードは不要です。失敗時は課金されません。定額プランは月間クレジット・シート数・ストレージを追加します。

Free
¥0
  • 100 クレジット/月
  • 3 シート
  • 1 GB ストレージ
無料 — カード不要
Starter
¥3,980/月
  • 500 クレジット/月
  • 15 シート
  • 10 GB ストレージ
無料で始める
おすすめ
Pro
¥8,980/月
  • 1,100 クレジット/月
  • シート無制限
  • 100 GB ストレージ
無料で始める
書類が日本語だと指定する必要がありますか?
いいえ。言語ヒントも選択肢もありません。日本語・韓国語・中国語・英語がひとつのエンジンを通ります。同じ行に混ざっている書類も同じです。
全角文字や縦書きにも対応しますか?
はい。漢字・ひらがな・カタカナ・半角カナ・全角数字・英語が同じ行にあってもまとめて読み、返ってくるボックスと quad は方向に関わらず各行に沿います。宣言した pattern は全角を半角に畳んだ値に対して照合するので、全角で印字された番号にも素の ASCII パターンが効きます。
CSVエクスポートで日本語は文字化けしませんか?
文字化けしません。CSVはUTF-8 BOM付きで書き出されるので、店舗名・合計・商品名がExcelで正しく開き、明細行はサブ行に展開されます。REST API では同じ値が data.values に届き、印字との厳密な突合が必要なときはボックス直下のOCR原文が evidence.printed_text に入っています。
日本語OCRは各値の位置を保持しますか?
はい。data.cells[path] がボックス(0〜1000正規化グリッド上の xmin/ymin/xmax/ymax)と、書類の傾きに沿う四頂点の quad を返し、その座標の基準となる幅と高さが data.image に入ります。同じ path が data.review.flagged にも並ぶので、確認すべき値は自分で閾値を引くスコアではなくリストとして届きます。
どの日本語書類を読めますか?
領収書・請求書・納品書・名刺・身分証・自由様式フォームのラスター画像です。必要な fields を宣言するか autoFields: true を送り、明細行テーブルには children を持つ array フィールドを使います。宣言は日本の帳票によく合います——type "date" は 令和8年8月16日 を data.normalized で 2026-08-16 に解釈し、pattern は全角を畳んだ値で登録番号を検査し、near / not_near は 御中 と 登録番号 の取り違えに届きます。
日本語OCRの料金はいくらですか?
1クレジット=1ページで ¥10(税込)、毎月100クレジットの無料枠があり、クレジットカードは不要です。失敗時は課金されません。定額プラン(StarterとPro)は月間クレジット・シート数・ストレージを追加します——上の料金表をご覧ください。

あなたの日本語書類を、確認できるデータに

無料枠——月100クレジット、クレジットカード不要。すべての値がページ上の位置とともに返ります。

関連