スキャンしたPDFをExcelに変換する:日本語の表をCSVへ、文字化けなしで
スキャンしたPDFは画像なのでコピーできず、Excelに貼ると日本語が文字化けし、明細が1セルに潰れます。space-ocrのアプリにPDFをドロップすれば各ページが自動で画像化され、列を決めておけば1ページ=1行になり、UTF-8 BOMのCSVで出力。Excelで開いても文字化けせず、freee・マネーフォワード・弥生へのCSV取り込みもそのまま。失敗時は無課金。
スキャンした請求書や領収書のPDFを開いて、まず気づくのはこれです ── コピーができない。テキストを選択しようとしてもドラッグできず、数字ひとつ拾えない。理由は単純で、スキャンPDFは表のデータではなく、「表が写っている画像」 だからです。人間の目には行・列・合計が並んで見えても、コンピュータにとってはただのピクセルです。
そこで多くの人がやることは決まっています。Excelを開いて、PDFを見ながら一行ずつ手入力する。あるいは無理やりコピペしてみて、結果は ── 日本語が 譁�蟄怜喧 のように文字化けし、明細がまるごと1セルに潰れ、レイアウトは完全に崩れる。「スキャン PDF Excel 変換」「PDF 表 CSV」「Excel 文字化け 対策」で検索してこの記事にたどり着いたなら、痛みはここにあるはずです ── 結局やりたいのは、会計ソフトに取り込める、列のそろったデータを手に入れることだけなのに。
結論:手入力もコピペもいらない
やることは、PDFをそのまま space-ocr のアプリにドロップする だけです。アプリは各ページを自動で画像化し、ページの中の値を名前のついたフィールドとして読み取ります。列(取引先・日付・合計・明細…)を一度決めておけば、1ページ=1行としてシートに積み上がり、最後に CSVで出力できます。
このCSVが肝心で、UTF-8 BOM付きで書き出されるので、Excelでダブルクリックして開いても日本語が文字化けしません。明細は1セルに潰れず、ちゃんと別々の行・列に展開されます。日本語の判定はエンジンが自動で行うので、言語の指定は不要です。
まず10秒、アップロードなしで体験する
下のサンプルはアップロード不要で触れます。実際のスキャン領収書を1枚パースした本物の結果です。各フィールドにカーソルを合わせると、その値が画像のどこから読み取られたかがボックスで光ります。値ごとに「文字の何割を実際にページ上で見つけられたか」を示すマッチ率も付いていて、出力前のスポットチェックがその場でできます。

Every value 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.
なぜスキャンは「そのまま」Excelに入らないのか
紙をスキャンした時点で、ファイルの中身は写真と同じラスター画像です。文字情報は埋め込まれていないので、Excelの「データの取得」やコピペでは表として拾えません。だから必要なのは2段階です。
- 画像を読んで構造化する(各ページ → 名前付きフィールドの行)
- その行をCSVに書き出す(Excelが素直に開ける形式で)
space-ocr のアプリでは、PDFを投げると 1ページずつ自動で画像化(PNG)してからOCRします。だから利用者の側でページを画像に切り出す手間はありません ── PDFをドロップするだけです。難しいのは ① の「読み取り」で、ここを正確にやることが、文字化けや明細潰れを根絶する近道になります。
元画像 → 抽出シート:スキャンが「列」になる
ドロップした書類の値は、文字の壁ではなく名前のついた列として出てきます。エンジンにスキーマを提案させても、組み込みテンプレート(請求書・領収書・発注書・納品書・名刺ほか)を選んでも、自分で列を定義してもOKです。スキャン1枚がラベル付きの行に変わる様子を見てください。
明細行(請求書の品目、領収書の商品)のように繰り返す行がある書類は、array 型のフィールドに子列を宣言します。すると、ページ上の各行がそれぞれ独立した行になり、Excelで合計を取れる形になります ── これが「明細が1セルに潰れる」問題の正体への答えです。明細の組み方は 請求書・納品書を読み取ってExcel化する でも詳しく触れています。
{
"image": "https://example.com/scan-invoice-p01.png",
"imageType": "url",
"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": "unit_price", "type": "string" },
{ "name": "qty", "type": "string" }
]
}
]
}座標はAIが想像で作っているのではありません。 言語モデルが返すのは値のテキストと「どの語トークンを使ったか」というヒントだけで、ボックスそのものは返しません。エンジンはまず、その値の文字を ビジョンOCRが実際にページ上で検出したシンボルと1文字ずつ照合(文字単位の照合が主力の経路) し、本物のピクセル位置にボックスを置きます。そして値ごとに マッチ率 ── 文字の何割をページ上で実際に見つけられたか ── を付けます。モデルがトークンのヒントを返した場合はそれで一部のフィールドの位置を上書きすることもありますが、繰り返し行ではヒントの取り違えが起こり得るため鵜呑みにせず、列クラスタリングや行の一貫性チェックで検証・補正します。要点は「AIが間違えない」ではなく、どの値も必ずページと照合され、どれくらい一致したかのスコアが残ることです。座標は xmin / ymin / xmax / ymax の 0〜1000 正規化(ピクセルではありません)で返ります。
取り込み前にスポットチェックする
Excelや会計ソフトに入れる前に、読み取り結果をその場で確認できます。値にカーソルを合わせると、元のスキャン画像の該当箇所が光るので、書類全体を読み直さなくても目が一発でそこに飛びます。マッチ率 1.0 は全文字をページ上で見つけたという意味、0.85 を下回る値は念のため確認したいサインです。
Excelで開けるCSVを出力する
値が正しければ、シートを CSVで出力します。ヘッダ行に列名が並び、array フィールドは 列名.子列名 に展開されて、繰り返しの明細はサブ行に開きます。ファイルは UTF-8 BOM付き ── これが、Excelがダブルクリックだけで日本語・中国語・韓国語を正しく開ける、まさにその一点です。手作業で直したセルは、出力時に元のOCR値を上書きして反映されます。
Excelで開く手順はシンプルです ── .csv をダブルクリックするだけ。BOMのおかげでExcelはUTF-8として自動認識し、テキストインポートウィザードも文字化けもありません。ネイティブのブックが必要なら、そこから 名前を付けて保存 → .xlsx にすればOKです。
そのまま会計ソフトへ持っていく場合も、出口は同じCSVです。freee・マネーフォワード・弥生 などは、それぞれのCSV取り込み機能で読み込ませる形になります(公式APIでの自動連携ではなく、CSVファイルの取り込みです)。領収書だけをCSVにする流れは 領収書をCSVにする で個別にまとめています。
まとめて処理する:APIで大量のスキャンを回す
スキャンのフォルダをまるごと処理したいときは、列スキーマを持つシートを一度作り、そこへページ画像をアップロードします。各画像はそのスキーマに沿って読み取られ、行として追記され、最後にひとつのCSVとして出力できます。リクエスト/レスポンスの詳しい形は APIドキュメント にあります。
curl -X POST https://api.space-ocr.com/upload \
-H "Authorization: Bearer $SPACE_OCR_API_KEY" \
-F "path=/請求書 2026" \
-F "files=@scan-p01.png" \
-F "files=@scan-p02.png" \
-F "wait=true"料金は明朗です。 1枚 ¥10 の従量課金、毎月 100枚の無料枠(クレジットカード不要)、チーム向けの定額 Pro $39/月。そして 読み取りに失敗した分は無課金 ── 結果が出なければ課金されません。費用が読みやすいので、まず手元のスキャンで試してから判断できます。
スキャンPDFをExcelに変換する手順
- PDFをアプリにドロップするspace-ocr のアプリにスキャンPDFをドロップします。アプリが各ページを自動で画像化(PNG)してからOCRするので、利用者がページを画像に切り出す必要はありません。
- 列(スキーマ)を決める取引先・日付・合計などの列を、組み込みテンプレート・自分のフィールド定義・自動提案のいずれかで決めます。請求書の品目など繰り返す明細は array 型に子列を宣言すると、各行が独立した行になります。
- 値をスポットチェックするフィールドにホバーすると、元スキャンの該当箇所が光ります。マッチ率 1.0 は全文字をページ上で見つけた状態、0.85 未満は確認・修正したい値のサインです。
- CSVを出力するシートをCSVで出力します。UTF-8 BOM付きで、array の明細はサブ行に展開され、手作業の修正は元のOCR値を上書きして反映されます。
- Excelまたは会計ソフトで開くCSVをダブルクリックするとExcelがBOMをUTF-8と認識し、日本語が文字化けせず列のそろった行で開きます。ネイティブ形式が必要なら名前を付けて保存で .xlsx に。freee・マネーフォワード・弥生へは各ソフトのCSV取り込みで読み込ませます。
日本語のスキャンにも対応していますか?
PDFに直接対応していますか?それとも画像に変換が必要ですか?
出力したCSVは、Excelで日本語が文字化けせずに開けますか?
freee やマネーフォワード、弥生に取り込めますか?
精度はどう確認できますか?個人情報は大丈夫ですか?
スキャンPDFを、Excelの行に変える
無料枠は毎月100枚・クレカ不要。PDFをドロップして列に読み取り、Excelでそのまま開けるCSV(UTF-8 BOM)に。失敗時は無課金。