PDF表抽出
PDFの表を認識し、セルを直してCSV・XLSXで保存
ファイルはこのブラウザ内でのみ処理されます。サーバーにはアップロードされません。
PDFの表を認識し、セルを修正してCSV・XLSXで保存
パスワード付きのPDFです。
別のツールで続ける
処理しています…
すべての処理はこのブラウザ内で行われます。ファイルがサーバーに送信されることはありません。
ダウンロードするファイルの準備ができました
この結果で編集を続ける
ページプレビューを開く
設定を変えると前の結果は隠れます。もう一度作成して最新の設定で保存してください。
暗号化されたPDFは先にパスワードを解除してください。ページの内容を中心に処理するため、しおり・添付・フォーム・署名の保持は保証されません。原本を保管し、結果をご確認ください。
処理中…
0.0
停止していません。計算が終わると結果が表示されます。
PDF表抽出について
PDFには「表」という構造がありません。あるのは何本かの線と、その間に散らばった文字の断片だけなので、表の抽出は配置からセルを推測する作業です。このツールは2つの推測法を使います。罫線のある表は線をたどって格子を作り(罫線ベース、lattice)、罫線がなく空白でそろえた表は文字の間の縦の空きを列の境界とみなします(空白ベース、stream)。自動モードは罫線の表を先に探し、残りの文字から空白ベースの表を探します。
見つけた表はセルを直接修正し、行・列を結合・削除し、区切り線を追加・削除して整えてから、XLSX(表ごとにシート)かCSVで保存します。
罫線ベース:線が途切れた所が結合セル
ページに描かれた直線、四角形の枠、細く塗った四角形、セル背景の縁をすべて横・縦の線分として集めます。2pt以内のずれは同じ線とみなし、接する線分どうしをまとめて1つの表にします。線の位置がそのまま行・列の境界です。
2つのセルの間の境界線がその区間で欠けていれば結合セルと判断し、Excelにも結合として書き出します。逆に、デザイン上行の罫線を省いた表(見出しの下に1本だけ線がある表など)では、複数行が1セルにまとまることがあります。その表だけ空白ベースに切り替えるか、行の区切り線を追加してください。
空白ベース:2段組の本文を表と誤認しない工夫
1行の中で文字の塊が列くらいの間隔で離れていれば「複数セルの行」とみなし、そうした行が行高の2.6倍以内で2行以上続けば表の候補にします。候補の文字の塊を横方向に投影し、一度も文字がかからない縦の空きを列の境界にします。
最も多い誤検出は2段組の本文です。そのため、セルの文字数の中央値が40字を超える、2列で25字を超える、2列の候補で塊がページ幅の45%を超える場合は表とみなしません。値のあるセルが4つ未満の場合も捨てます。反対に、セル内で折り返す表は1セルが複数行に分かれるので、「下の行と結合」で整えます。
スキャンPDFの表
テキスト層のないスキャンPDFでは何も見つかりません。PDF OCRでテキスト層を加えれば文字はできますが、罫線は画像の画素のままでベクターの線ではありません。したがってOCR済みの文書では罫線ベースは働かず、空白ベースだけが使えます。罫線の細かいスキャン表では列の間隔が狭くて列がまとまりやすいので、列の区切り線を手で足すのが早道です。
ページをまたぐ表と書き出しの規則
次ページの表の列数が同じで、列境界が6pt以内で一致するか先頭行(見出し)が同じなら、続きの表として結合できます。次ページで繰り返される見出し行は既定で削除します。
書き出し時、「1,234」「(1,234)」「¥1,000」「−12」は数値に変換してExcelで計算できるようにします。括弧は会計式の負数として読みます。「007」のような0始まりのコードや16桁以上の数字(カード番号など)は文字列のままにします。Excelは有効桁15桁までしか保持せず、16桁目以降が0になるためです。CSVはExcelで文字化けしないようUTF-8のBOMを付け、=・+・@で始まるセルには先頭にアポストロフィを付けて数式として実行されないようにします(CSVインジェクション対策)。
例
会計式の負数
- 入力
セル「(12,500)」- 結果
XLSXの数値 −12500
括弧で囲んだ数字は負数として読み、桁区切りは表示形式として残します。「-(12,500)」のように符号と括弧が重なると曖昧なので文字列のままです。
16桁のカード番号
- 入力
セル「4111111111111111」- 結果
文字列として保存
数値にするとExcelは4111111111111110に変えてしまいます。15桁を超える数字は文字列のまま元の値を守ります。
2ページにわたる入出金明細
- 入力
1ページ目5列、2ページ目5列、2ページ目の先頭行が同じ見出し- 結果
1枚のシートにまとめ、2ページ目の見出し行を削除
列数が同じで先頭行が一致するので続きの表とみなします。
使い方
- PDFを読み込むと、ページごとに見つかった表が一覧になります。
- プレビューでセル境界を確認し、必要なら表ごとに認識方式を変えたり区切り線を編集します。
- 書き出す表を選び、XLSX・CSVを決めて保存します。
よくある質問
表が1つも見つかりません。
テキストのないスキャンPDFか、罫線も空白の整列もはっきりしない表です。スキャンならPDF OCRを先に行い、そうでなければプレビューで「このページ全体を表にする」を使って区切り線を入れてください。
CSVをExcelで開くと先頭に ' が付いたセルがあります。
=、+、@などで始まり数値として読めないセルは、数式として実行されないようアポストロフィを付けています。普通の負数(-12)には付きません。
1つのセルの文章が複数行に分かれました。
セル内の折り返しを空白ベースが行とみなしたものです。行見出しの「下の行と結合」でまとめてください。
結合セルがばらばらになります。
CSVは結合を表現できません。結合を保つにはXLSXで保存してください。
出典
- Camelot documentation — How it works (Lattice and Stream)
- RFC 4180 — Common Format and MIME Type for CSV Files
- OWASP — CSV Injection
- Microsoft — Excel specifications and limits (15-digit precision)
基準日: