この変換ツールでできること
PDF は印刷のために作られた形式です。各テキストがページのどこに、どの文字サイズで置かれるかは記録していますが、段落、見出し、リストは記録していません。PDF からテキストをコピーすると、行が途中で切れたり、文の途中にページ番号が入り込んだり、構造がまったく失われたりすることがよくあります。
このツールは PDF.js でテキストを読み込み、レイアウトから構造を組み立て直します。
- 同じ行にあるテキストの断片はつなげられ、目に見える隙間がある場所にはスペースが入ります。
- 間隔の狭い行どうしは1つの段落になります。縦の間隔が大きいところで新しい段落が始まります。
- 本文より明らかに大きい文字は見出しになります。いちばん大きいサイズが
#、次が##、というように割り当てられます。 - 丸い点などの箇条書き記号で始まる行は、Markdown のリスト項目になります。
- ページの上端や下端にあるページ番号だけの行は削除されます。
使い方
- PDF を選択 を押すか、
.pdfファイルをボックスにドロップします。 - ページが読み込まれるまで待ちます。長いファイルでは、ステータス行に進み具合が表示されます。
- オプションを調整します。ファイルを読み込み直すことなく、結果がすぐに更新されます。
- 見出しを検出:大きな文字を Markdown の見出しにします。
- ページ番号を削除:単独のページ番号を取り除きます。
- 改ページを表示:ページの間に
---の区切り線を入れます。 - 出力:Markdown と プレーンテキスト を切り替えます。
- 結果を確認します。プレビュー で表示結果を見られ、ボックス内の Markdown を編集することもできます。
- コピー または ダウンロード を押します。
変換例
2ページのテスト用 PDF を作りました。1ページ目には 22 ポイントのタイトル、15 ポイントの見出し、11 ポイントの段落が2つ、箇条書きの行が2つ、下部にページ番号があります。2ページ目には見出しが1つ、文が1つ、ページ番号があります。ツールの出力は次のとおりです。
# Quarterly Report
## Overview
Revenue rose in all three regions this quarter. The largest gain came from online orders.
Costs stayed close to the plan.
## Next steps
- Hire two support staff
- Open the Leeds office
## Appendix
All figures are unaudited.
最初の段落は PDF では2行でしたが、行間が通常の間隔だったので1つにつなげられました。「Costs stayed close to the plan.」は、上の間隔が大きかったので新しい段落になっています。ページ番号は両方とも削除されました。出力 を プレーンテキスト にすると、見出しの # 記号がなくなり、箇条書きは元の点の記号のまま残ります。
うまくいくもの、いかないもの
結果は、PDF がどのように作られたかによって変わります。
うまくいくもの:Word、Google ドキュメント、LibreOffice、Pages、Web ブラウザから書き出した PDF。これらには読む順序どおりの本物のテキストが入っていて、見出しの文字サイズもはっきり分かれています。
確認が必要なもの:
- 段組みのレイアウト:テキストは PDF が描画する順に取り出されます。2段組みの文書では段ごとに取り出されて正しく並ぶこともあれば、両方の段の行が交互に混ざることもあります。
- 本文と同じサイズの見出し:太字にしただけで大きくしていない見出しは検出されません。PDF のテキストデータでは、太字かどうかが確実には記録されないためです。
- 表:表のテキストは、行や短い段落として出力されます。Markdown 表作成ツール で表を作り直してください。
- 脚注、ヘッダー、フッター:繰り返し表示される柱(ランニングヘッダー)はすべてのページに出てきます。変換後に削除してください。
- 行末でハイフンが付いた単語:スペースなしでつなげられるので、「well-」の次に「known」が来ると「well-known」になります。行に収めるためだけに分割された単語も、「infor-mation」のようにハイフンが残るので、余分なハイフンがないか確認してください。
うまくいかないもの:
- スキャンした PDF:中身は画像です。テキストがほとんど見つからないと、ツールが警告を表示します。先に OCR が必要です。
- 画像、グラフ、フォームの入力欄:スキップされます。
中国語、日本語、韓国語の PDF のテキストにも対応しています。PDF.js がこれらの言語に必要とする文字マップはこのサイトに同梱されていて、ファイルがそれを使うときだけ読み込まれます。なお、段落内の行をつなげるときには、英語と同じように行の間に半角スペースが1つ入ります。日本語の文章では元の改行位置ごとに不要なスペースが残るので、変換後に削除してください。
ヒント
- 元の文書が手元にあるなら、そちらを変換してください。Word Markdown 変換ツール なら、表、リンク、正確な見出しレベルが保たれます。
- 出力を Markdown整形ツール にかけると、段落の折り返しをひとつのスタイルにそろえられます。
- Web ページを PDF として保存したものなら、元の HTML を HTML Markdown 変換ツール で変換した方がきれいな結果になることが多いです。
PDF を Markdown に変換するほかの方法
- Poppler ツールに含まれる pdftotext は、コマンドラインでプレーンテキストを取り出せます。
-layoutオプションを使うと、スペースでページのレイアウトを保ちます。 - Python:pdfplumber や PyMuPDF などのライブラリを使うと、位置情報付きでテキストを取得できるので、見出しや表の判定ルールを自分で書けます。
- Pandoc は PDF ファイルを読み込めないので、この変換を直接は行えません。
数百ページある大きな PDF も扱えますが、すべてのページを端末内で読み込むため時間がかかります。ブラウザの動作を保つため、100 MB を超えるファイルは受け付けません。