本文へスキップ
Convertube

Markdown ファイルとは:約束事のあるプレーンテキスト、しかもその約束事は 1 つではない

.md ファイルとは何か、なぜレンダラーごとに解釈が違うのか、見出しやリストを記録していない PDF からそれらをどう組み立てるのかを解説。変換はブラウザ内で行います。

概要

種類
ドキュメント
拡張子
.md, .markdown
MIME タイプ
text/markdown
別名
MD

.md ファイルはテキストファイルです。コンテナも圧縮もなく、バイナリの部分もありません。メモ帳で開けば、中身がそのまま見えます。書式はマークアップではなく約束事です。行頭の # は見出し、ハイフンはリスト項目を意味し、その約束事を理解するレンダラーがそれらを HTML に変えます。考え方はそれだけで、この形式が同世代のどのリッチテキストエディターよりも長生きしている理由もそこにあります。何かが描画する前からファイルは読めますし、書くのに使ったソフトがなくなっても読めるままです。

続きを読む

ややこしいのは、Markdown が 1 つではないことです。2004 年の最初の実装は非常に多くのケースを未定義のままにしたため、レンダラーごとにそれぞれ違う形で決着をつけました。CommonMark はそのあいまいさを確定させるために存在し、GitHub Flavored Markdown はその上に表、タスクリスト、取り消し線を加えています。この状況は公式にも認められています。2016 年 3 月に RFC 7763 で text/markdown がメディアタイプとして登録されたとき、その登録には variant パラメーターが含まれていました。ファイルが Markdown だと言っても、どの Markdown かまではわからないからです。このサイトが出力するのは UTF-8 の text/markdown で、どの方言でも一致する構文だけを使います。# による見出し、空行で区切った段落、ハイフンの箇条書き、水平線です。

PDF を Markdown に変換するということは、PDF がもともと持っていなかった構造を作り出すことです。PDF が記録しているのは文字サイズであって見出しではないので、ページ上のサイズを順位付けし、大きい順に 6 つを 6 段階の見出しレベルにします。本文より大きいだけの行も、作成者が見出しのつもりだったかどうかに関係なく見出しになります。リストはさらに厄介です。PDF にはリストという構造がまったくなく、目に見える箇条書きの記号は文字どおり本文中の 1 文字です。そのためリストを残す唯一の方法は、その文字を見つけてハイフンに書き換えることです。番号付きの項目にはその手助けは要りません。「1. 」や「1) 」はすでに Markdown であり、もともとリストのつもりで書かれています。

文章そのものを変える細かな点が 2 つあり、知っておく価値があります。ハイフンで終わる行は、改行をまたいで分割された単語とみなし、ハイフンを取って結合します。また、中国語や日本語の連続する行は、あいだにスペースを入れずに結合します。これらの文字体系ではスペースを入れないからです。ページは水平線で区切られるので、13 ページの文書には 12 本の水平線が入ります。PDF がテキストレイヤーのないスキャンなら、PDF から Word への変換と同じ文字認識モデルが、まずあなたのマシン上でページ画像から文字を読み取ります。

他の形式を Markdown に変換

Markdown:よくある質問

.md ファイルはただのテキストファイルですか?

はい。コンテナも圧縮もなく、バイナリの部分もありません。どのテキストエディターでも開け、#、-、** といった記号は、そのまま読める普通の文字です。

どの種類の Markdown になりますか?

どの方言でも一致する部分だけです。# による見出し、空行で区切った段落、ハイフンの箇条書き、水平線です。GitHub や CommonMark の拡張には何も依存していないので、どこに貼り付けても同じように表示されます。

なぜ文書のあちこちにダッシュの行があるのですか?

それは改ページです。1 本ずつが、ある PDF ページが終わって次のページが始まる位置を示す水平線なので、13 ページの文書には 12 本入って戻ってきます。

見出しのレベルが間違っていました。なぜですか?

PDF が保存しているのは見出しではなくサイズなので、レベルは文字サイズで順位付けしているからです。文書が階層ではなく強調のためにサイズを使っている場合(引用の抜き出しや、大きく組んだ最初の行など)、順位付けはサイズに従うので、レベルを間違えます。

表は残りますか?

罫線で描かれた表は残ります。Markdown の表になり、1 行目が見出し行になります。スキャンしたページの表は、読み取れる罫線がないため普通の行として出力されます。表こそが変換の目的なら、PDF から Excel への変換が各表をそのまま扱える行と列に収めます。

スキャンした PDF にも使えますか?

はい。テキストレイヤーがない場合は、ブラウザ内で AI の文字認識モデルが動き、ページ画像から文字を読み取ります。その場合、見出しはフォントサイズではなく測定した行の高さで順位付けされます。何もアップロードされません。