EPUBをMarkdownに変換する:章立てを失わない本
.epub を .zip にリネームして展開してみてください。XHTMLファイルの
入ったフォルダ、スタイルシートが1つか2つ、画像がいくつか、そして構成要素をすべて列挙して読む順序を
宣言している content.opf というマニフェストが出てきます。フォーマットの中身はこれで
全部です。EPUBは得体の知れないバイナリではなく、目次を配線した小さなWebサイトを袋に入れたものです。
だからこそ素材として優秀です。EPUBをMarkdownに変換するとき、PDFのように構造を 推測する必要がありません。見出しは最初から見出しでした。第1章は最初から独立した文書でした。 読む順序は推論するまでもなく宣言されています。上のコンバータにファイルを入れれば、階層を保った ままのMarkdown版が返ってきます。無料、登録不要、50 MBまで、こちらには何も残しません。
EPUBをMarkdownに変換しても構造がよく残る理由
コンテナの中の3つの要素が仕事をしています。それぞれ何を担っているかを知っておく価値があります:
- XHTMLのコンテンツファイル。本物のセマンティックなマークアップです。
<h1>、<h2>、<blockquote>、<ol>。これらはほぼ1対1でMarkdownに写せます。章見出しは#に、 節は##に、引用は>に、書名のイタリックはイタリックのまま 残ります。 - spine(背表紙)。OPFファイルが文書を読む順に並べているので、内部のファイル名が
part0009.xhtmlのような無意味なものでも、章は正しい順序で出てきます。 - ナビゲーション文書。本自身が持っている目次です。章タイトルが太字の匿名の一行では なくタイトルとして残るのは、これがあるからです。
実務上の効果は、返ってくるMarkdownがたどれる形になっていることです。第12章までスクロールして
切り出し、その部分だけをモデルに貼れます。400ページ分のフラットなテキストで同じことをやろうとすると、
grep と気合いが必要になります。
出力を一度確認しておきたい箇所
致命的なものはありませんが、次の点をざっと見ておくと1分の手間であとの混乱を防げます。
- 前付けと後付けも一緒に付いてきます。奥付、献辞、「同じ著者の本」、謝辞、索引の 断片。勉強用の作業では数千トークン分の無内容です。貼る前に消してください。
- 脚注と巻末注は移動します。元データでは巻末の注ファイルへのリンクです。流し込まれた Markdownでは章末にまとまるか、参照のあった位置に数字だけが残ります。小説なら気にしなくて 構いません。論の半分が注にある学術書なら、その上に何かを組み立てる前に着地点を確認してください。
- 画像はテキストになりません。表紙、図版、地図はアーカイブ内のファイルであって 語ではありません。OCRは行わないので、図の中のラベルは現れません。図が説明を担っているなら、 原本を手元に置いておく必要があります。
- 見出しレベルは出版社ごとにばらつきます。章をすべて
<h1>で マークする出版社もあれば、部を<h1>、章を<h2>にする ところもあり、見出しを使わずスタイルを当てた<p>だけのものもあります。 最後のケースはまれですが、明らかに章のある本が平坦な変換結果になるのはこれが原因です。 - ドロップキャップと小型大文字の書き出し。装飾された大きな1文字で始まる章は、 その文字だけが独立した行に浮くことがあります。見た目の問題で、気づくのも簡単です。
DRMがあると手も足も出ない、アップロード前に読んでください
商用ストアで買ったEPUBの多くはDRMが掛かっています。コンテナ内のコンテンツファイルが暗号化され、
マニフェストの隣にそれを宣言する encryption.xml が置かれています。どのコンバータも
読めませんし、これも読めません。DRM付きの本をアップロードするとエラーか空の結果が返りますが、
原因はファイル側であってツール側ではありません。
とはいえDRMなしのEPUBはいくらでもあります。Project Gutenberg、Standard Ebooks、技術書の出版社の 多く、大学出版局、クリエイティブ・コモンズでの公開、執筆ツールから自分で書き出したもの、そして 方針として非暗号化ファイルを売っている独立系ストアの相当数。これらは何の問題もなく変換できます。
当然出てくる疑問についても書いておくと、自分が持っている本を勉強のために変換するのは通常の私的 利用で、他人の著作物を再公開するのはまったく別の話です。言えるのはそれだけです。
一冊丸ごとは入らない、章単位で進める
長編小説は10万語前後、内容の詰まったノンフィクションならその倍になることもあります。トークンに 直すと、たいていのモデルが一度に受け取れる量をはるかに超えますし、長いコンテキストを扱えるモデル でも、埋めていくにつれて目に見えて曖昧になります。注意は薄く広がります。真ん中あたりの細部は 飛ばされます。
ここがまさに、フラットなテキストに対してMarkdownが効いてくる場面です。章見出しが残っているので、 ファイルをきれいに切り分けて一章ずつ扱えます:
- 章ごとに要約し、その要約をまとめた短い文書を作り直して、本全体の筋を聞く。
- 章ごとに学習ノートを作り、要点、用語、問いを整理して1つのリファレンスにまとめる。
- 1つの章だけを対象に質問する。答えが15万語に薄められず、6,000語の中から出てきます。
- まず見出しのツリーをアウトラインにする。どの3章が今の目的にとって重要かを手早く決められます。
判断材料になるのは出力の下のトークンカウンタです。貼る前に、これが章単位の仕事なのか一冊単位の 仕事なのかを教えてくれます。
同じ本のPDF版とEPUB版
両方あるならEPUBを取ってください。例外はありません。2つの形式は正反対の問題を解いていて、それが そのまま出力に出ます。
PDFは固定レイアウトで、サイズの変わらないページ上の座標にグリフが打ち込まれています。抽出とは、 位置から文を組み直し、フォントサイズから見出しを推定し、2段組を交互に読むべきかどうかを判断する 作業です。柱とノンブルは段落の途中に落ちてきます。 PDFをMarkdownに変換 はそれを十分うまく処理しますが、あくまで復元作業です。
EPUBはリフロー型です。ページがないので剥がすべきページ周りの飾りもなく、ほどくべき段組の幾何も ありません。構造は推測ではなく明示されています。PDFのほうが保てるのは精密な組版だけです。複雑な表、 位置決めされた囲み記事、ページ上の配置そのものが意味を持つものなど。文章に関しては、EPUBが 余裕で勝ちます。
実際の使われ方
- 技術書を読み込む。オライリー系の書籍を変換し、いま取り組んでいる章だけを残して、 テキスト化したGitHubリポジトリと 並べて渡す。理論と自分の実コードをアシスタントが同時に見られます。
- 個人用のリファレンスを作る。見出しの階層があるおかげで、変換した本はObsidianや
wiki、
.mdファイルを並べただけのフォルダでも検索できます。電子書籍リーダーの ライブラリではこうはいきません。 - 講義の参考文献リストを消化する。章単位の要約と練習問題を作り、どの節から来た ものかをたどれる状態にしておく。
- 原稿まわりの作業。著者や編集者がScrivenerやVellumからEPUBを書き出して変換し、 差分が取れてバージョン管理できる原稿を手に入れる。
埋め込み、読みやすさの計測、あるいは本棚まるごとのインデックス作成のように、一冊を途切れのない 文章として欲しい場合は、 EPUBをテキストに変換 のほうが向いています。このページ上部の形式トグルで両者を行き来でき、すでに選んだファイルも そのまま保持されるので、両方の出力を比べるのに2回目のアップロードは要りません。
よくある質問
EPUBをMarkdownに変換するには?
上から .epub をアップロードすれば、見出し構造を保ったMarkdownとして返ってきて、.md でダウンロードできます。無料、1ファイル50 MBまで、登録不要。EPUBの中身はXHTMLなので、これは欠落を伴う抽出ではなく構造を保った変換です。ここで扱うどの形式よりもきれいに変換できます。
なぜEPUBはこれほどきれいにMarkdownになるのですか?
元がすでにセマンティックなマークアップだからです。EPUBはXHTMLファイルをzipにしたもので、章タイトルは本当に <h1>、強調は本当に <em> です。見た目から構造を推測するのではなく、構造がそのまま記録されています。それをMarkdownに写す作業はほぼ逐語訳に近く、だから見出し、箇条書き、引用、イタリックがそろって残ります。
章見出しはMarkdownの見出しになりますか?
なります。しかも本が宣言したレベルのままなので、部と章のある本は平坦ではなく入れ子のアウトラインになります。おかげで出力は実際にたどれるものになり、エディタで折りたたんだり、節へリンクしたり、特定の章についてモデルに尋ねて正しい箇所を見つけさせたりできます。
DRM付きの本には対応していますか?
対応していません。KindleやApple Booksの暗号化されたファイルは、それを所有するリーダーアプリが復号するまで読めるコンテンツを持たないので、変換しても何も返りません。DRMのないEPUB、つまりGutenberg、Standard Ebooks、技術書出版社の多く、自分の原稿などは、特別な処理なしに扱えます。
書籍からRAG用のコーパスを作るのに向いていますか?
2つの形式のうちでは、こちらのほうが出発点として優れています。見出し構造がそのまま自然なチャンク境界になるので、論の途中で切ってしまう文字数区切りではなく、章や節で分割できます。チャンカーが素の文章を求めるなら、EPUBをテキストに変換が記法を落とします。
残りのツール
EPUBはここで扱う13形式のうちの1つです。ページを選ぶのが面倒なら、 File2Txt が 1回のアップロードでどれでも受け付けます。原稿や報告書なら WordをMarkdownに変換、 古いリッチテキスト文書なら RTFをMarkdownに変換、 保存したWebページなら HTMLをMarkdownに変換。 本を何冊もzipにまとめたものは ZIPをMarkdownに変換 で一度に処理できます。
コードや公開中のWebを扱うなら、 GitLabプロジェクトや 手元のフォルダを変換するか、 Web2Txt にURLを渡してください。 LLM向けに文書を準備するガイド では、この一連の考え方をまとめて扱っています。
Repo2Txt を作って運用しているのは v12hero、 プライバシー重視のネイティブアプリとWebアプリを手がける個人開発者です。