ガイド · PDF → Markdown
PDF から Markdown へ、構造は推測である
ここにあるほかの変換ツールは、ファイルの中に本当にある構造を読みます。これだけはできません。PDF には構造がないからです。
PDF が持っているのは、座標と文字サイズを伴った文字です。「これは見出しです」はどこにも入っていません。だから構造は推測になります。どう推測しているかを知れば、どこで外れるかがそのまま分かります。
PDF の中に構造はない
PDF は印刷の形式です。仕事はページの正しい位置に正しい字を置くことで、そのためにテキストの断片を位置とフォントと一緒に持ちます。どれが見出しか、段落がどこで終わるか、6 行が箇条書きなのか —— ファイルの中にそう書いてあるものは一つもありません。
だから Word 文書は変換され、PDF は組み直されます。以下に書くことは全部ヒューリスティックで、どのヒューリスティックにも外れる場合があります。だから PDF の変換では、変なところがあってもなくても、出力の上に注意書きが出ます。
元の .docx があるならそれを使ってください。構造が本当に入っているので、ちゃんと変換されます。
見出しの見つけ方
まず本文の文字サイズを求めます。全行の文字サイズを、その行の文字数で重み付けして数え、一番多いものを本文サイズとします。行数ではなく文字数で重み付けするのが要点です。長い本文行のほうが、短い見出し行より本文サイズをよく語ります。
次に、その本文サイズよりはっきり大きく、かつ短い行を見出しとします。倍率がレベルを決めます。1.6 倍以上で #、1.35 倍で ##、1.15 倍で ###。元の見出しレベルは失われているので、残るのは相対関係だけ —— この見出したちは互いに同じ階層、ということです。
長さの上限は 120 文字で、これは具体的な失敗のために置いてあります。冒頭の段落を大きな字で組んだ文書はそれは見出しではなく、サイズだけでは区別がつきません。長さならつきます。
これは同時に、一番取りこぼすヒューリスティックでもあります。見出しをサイズではなく太さで作った文書 —— 本文と同じサイズの太字 —— にはサイズの手がかりが一切なく、その見出しは段落として出ます。
ページ要素、段落、リスト
ヘッダーとフッターは、本文より小さく、かつ上端か下端からページ高さの 9% 以内にあるとき捨てられます。固定の寸法ではなく比率なので、A4 でもレターでも同じように働きます。これがないと、ページ番号や毎ページの「社外秘」が本文を 40 回中断します。
段落の区切りは、その行の文字サイズの 1.8 倍を超える縦の空きです。PDF が段落を表す方法はこれで、読める段落記号は存在しません。
リストは先頭の文字で判定します。行頭記号(•、·、▪、◦、‣、∙)か、3 桁までの数字+ピリオドまたは閉じ括弧。別の方法で描かれたリストは、変換ツールにとってリストではありません。
行をまたいで割れた単語
PDF は行末でハイフンを使って単語を割ります。素朴につなぐと「re- port」になります。行がハイフンで終わり、次の行が小文字で始まるとき、二行は一語につなぎ直されます。この組み合わせはほぼ確実に行末ハイフンです。
次の行が大文字で始まるときはハイフンを残します。「state-」の後で割れた state-of-the-art はハイフンを保ちます。そちらは本当に単語の一部なので、それが正解です。
中国語・日本語・韓国語の行は、空白を入れずにつなぎます。これらの文字体系は単語を空白で区切らないので、改行ごとに空白を入れると文の途中に穴が空きます。
The quarterly re-
port is attached.The quarterly report is attached.スキャンした PDF からは何も出ない
ページが文字の画像 —— スキャン、写真、FAX —— なら、ファイルの中に読める文字はなく、あるのはビットマップだけです。変換ツールはそう言って止まります。エラーに見える空の文書を返すよりそのほうがいいからです。
そこから文字を取り出すには OCR が必要で、それはこのツールの仕事ではありません。一部のページだけがスキャンの PDF なら、文字のあるページは変換し、空だったページの番号を最大 6 件まで並べます。
上限は二つ、25 MB と 500 ページ。どちらもブラウザのタブが固まらずにできる範囲の話です。PDF はここ、あなたのブラウザの中で処理され、サーバーは一切通りません。
段組みのページをどうするか
2 段組みは一番難しく、できる範囲で出します。テキストはファイルが保存している順に読まれます。きちんと作られた 2 段組みの PDF なら段ごと、そうでないものは 1 行ずつ段を行き来します。読む前にどちらかを確かめる確実な方法はありません。
表と数式も同じ話です。PDF の表は引かれた線と座標に置かれた文字で、それを表だと示すものは何もありません。セルはパイプ表ではなく、ばらばらの行として出てくると思ってください。
手で直すつもりならページ印を入れてください。各ページの前に HTML コメントが入るので、壊れた箇所がどのページから来たのか分かり、原本と見比べられます。
…1 ページ目の終わり。…1 ページ目の終わり。
<!-- page 2 -->
## MethodPDF を置いて、出力の上の注意書きを読んでください。飛ばしたページと、構造が推測であることが書かれています。すべてブラウザの中で読まれ、ファイルはアップロードされません。
PDF → MD