PDFをExcelに変換
PDFの表を、並べ替え・絞り込み・合計ができる本物の.xlsxに取り出します。ページそのものから再構築します。
- 保存しません
- 順番待ちなし
- 登録不要・透かしなし
使い方
PDFを追加
必要な表が入った文書をドロップします。
変換
行はベースラインが同じ文字から、列はページ上で文字が始まる位置から割り出します。
ダウンロード
1ページにつき1シート。Excel、Google スプレッドシート、Numbers、LibreOfficeで開けます。
格子のないものから格子を取り戻す仕組み
PDFには表が含まれていません。含まれているのは座標上の文字で、表のように見える線は、中の文字とは何の関係もない描かれた図柄です。そのため格子は推定で作ります。正確に知っておく価値のある規則が2つあります。行はベースラインが同じ文字から作り、縦位置を4ポイント単位で丸めるので、上付き文字や少し高い位置の通貨記号が別の行を作ることはありません。列はページ上の異なる左端をすべて集め、8ポイント以内の左端同士をまとめて作ります。これを行ごとではなくページ全体で行うので、ある行でたまたま空の列も、ほかの行ではその位置を保ちます。
右寄せの数値が難しいケースになるのはこのためです。ここで最もよくある期待外れなので、はっきりお伝えします。右寄せの数字の列は、行ごとに左端が異なります。9.99は1,234,567.89よりずっと右から始まります。左端の差が8ポイントを超えると、別々の列として読み取られます。そのため、財務表は本来1列であるべきものが複数の列に分かれて取り込まれることがあります。左寄せや中央寄せの列にはこの問題はありません。同じセルに入った2つの文字列は、一方が他方を上書きするのではなく、スペースでつなげます。
セルは出力時に型が決まります。数値としてきれいに解釈できるものは数値として書き込まれて合計でき、それ以外はすべてテキストとして書き込まれます。会計でよく使う装飾は数値として解釈されません。桁区切り記号、末尾のパーセント記号、通貨記号、(1,234)のように括弧で書いたマイナスなどです。そうしたセルは数値に見えても合計できないテキストとして取り込まれます。Excel自体の「区切り位置」機能を使えば、そうした列を1回でまとめて直せます。
各ページは1つの連続した表につなげるのではなく、Page 1、Page 2…という名前の別々のシートになります。3ページにわたる表は、見出しが繰り返された3つのシートとして取り込まれます。取り込まれるのは値だけです。数式はもともとPDFに入っていないので取り戻せません。塗りつぶしの色、罫線、フォント、結合セル、グラフはあえて再構築しません。推測で作ると、正しそうに見えて微妙に間違ったスプレッドシートになるからです。
ほかの目的には
表の抽出は本格的な研究テーマで、それ専用のツールもあります。表に罫線があるならTabulaがおすすめです。文字の位置から推定するのではなく描かれた線を格子として読み取るので、右寄せの数値の問題をそのまま解決できます。無料で、クリック操作で使え、CSVに書き出せます。CamelotはPythonから同じことができ、罫線のある表向けのlatticeモードと罫線のない表向けのstreamモードを備え、結果の信頼度も示してくれます。
レイアウトが単純で、読めれば十分という場合は、Popplerのpdftotext -layout in.pdf out.txtが列の間隔をプレーンテキストのまま保ちます。固定幅のデータとしてそのままスプレッドシートで開け、推定の手順をまるごと省けます。また、PDFがスキャンならここでの話は当てはまりません。位置を割り出すテキストがないので、先にOCRが必要です。
よくある質問
そもそもPDFの表がどうやってスプレッドシートになるのですか?
PDFには表という概念がなく、あるのは座標上の文字だけです。そこで格子を組み立て直します。ベースラインが同じ文字を1行にし、ページ全体の文字の左端をまとめて列にします。そのため、ある行で空のセルも、ほかの行ではその位置を保ちます。
精度はどのくらいですか?
列がそろった、罫線のあるきれいな表ならとても良好です。結合セル、セル内で折り返した文字、ページ上でずれていく列は苦手です。いずれも、表の意味が分からない限り本当に判断がつかないものだからです。結果を使う前に確認してください。
数値は数値のままですか?
はい。数値として読めるものは数値のセルとして書き込むので、すべてがテキスト扱いになることはなく、合計や数式がすぐに使えます。
PDFはどこかに保存されますか?
いいえ。どのページも保存せずに読み取ります。
スキャンしたPDFはどうですか?
スキャンには取り出せるテキストがありません。先にPDF OCRを使ってから変換してください。
ご注意: 結合セル、複数行のセル、ずれていく列は難しいケースで、あとで整える必要があるかもしれません。書式、色、数式、グラフは再現されず、再現されるのは値です。各PDFページは1つの長い表につなげるのではなく、それぞれ別のシートになります。
このツールをあなたのサイトに設置
ブログ、授業のページ、ヘルプ記事などに無料で設置できます。コードを1つ貼り付けるだけで、訪問者がそのページ上でツールを使えるようになります。