3Q工具箱
首页 / 教程中心 / 文本与写作

电子书格式互转与整理:EPUB、TXT、元数据与漫画 CBZ 打包

文本与写作发布于 2026-09-12

电子书文件看着简单,实际全是容器格式:EPUB 是 ZIP,CBZ 也是 ZIP,只有 TXT 是真的裸文本。搞懂「包里装了什么、按什么顺序读」,就能理解为什么章节会乱序、为什么改个书名阅读器不认、为什么第 10 页跑到第 2 页前面去了。

一、EPUB 转 TXT:不只是「去掉排版」

EPUB 转 TXT 常被当成降级操作,其实它解决的是几个 EPUB 本身做不好的场景:

  • 全文检索与统计。想统计一本书里某个人名出现了多少次、想用命令行工具跨几十本书搜一句话,纯文本是最方便的输入。
  • 导入不认 EPUB 的设备或软件。一些老式电子词典、单片机屏幕、笔记软件、TTS 朗读程序只吃 TXT。
  • 做二次加工的素材。要把内容搬进 Markdown 写作环境、要重新排版、要喂给文本处理脚本,先落成纯文本最省事。
  • 分章阅读与摘录。工具支持每章导出一个 TXT 再打包成 ZIP,做读书笔记时按章处理比在整本里翻要清楚。

实现上有一个细节值得强调:提取严格按 spine 顺序,而不是按文件名排序。EPUB 内部由 OPF 清单描述有哪些资源,再由 spine 规定这些资源的阅读顺序。很多书的章节文件名是 part0003.htmlch_final.xhtml 这类毫无规律的东西,按文件名排必然乱序;spine 才是出版方声明的真实顺序。提取时会自动识别每章标题、清掉 HTML 标签与样式,段落之间保留空行,同时读出书名、作者、语言、出版方等元数据供你核对拿到的是哪一版。

两类文件提取不出内容,遇到不必反复重试:带 DRM 的付费电子书(正文是加密的,解析不了),以及纯图片的漫画型 EPUB(包里只有图,没有文字层)。后者如果只是想按页翻看,本文第四节的 CBZ 路线更合适。

二、TXT 转 EPUB:章节是怎么被切出来的

从小说站下载的 TXT 有两个通病:没有目录,几十万字一口气拉到底,关掉再打开找不到看到哪了;编码是 GBK,在手机上打开一片乱码。TXT 转 EPUB 就是解决这两件事。

编码方面工具做了自动探测:先试 UTF-8,失败回退 GBK,也可以手动指定 Big5 处理繁体资源。判断方法很简单——看预览区,中文正常显示就对了,出现「锟斤拷」或连片问号就换一种编码重试。这一步必须在生成前确认,编码错了整本都是废的。

章节切分提供三种方式,选错就得到一个只有一章的「电子书」:

  • 按章节标题识别:匹配独占一行的「第一章 / 第 12 节 / 第三回 / 第二卷 / Chapter 5」这类标题。适合绝大多数网络小说和正规书籍。前提是标题真的独占一行——如果原文是「第一章 开端 天还没亮……」把标题和正文挤在同一行,识别会失败。
  • 按连续空行分篇:适合散文集、短篇合集、访谈记录这类没有「第几章」但用空行分隔的文本。
  • 按字数均分:兜底方案,适合完全没有结构的长文,比如导出的聊天记录、爬下来的连载。切出来的章节标题没有意义,但至少能跳转和记住位置。

切完一定看预览确认。 常见的误判是正文里出现「第一章写得真好」这样的句子被当成标题,凭空多出一章;或者书里同时有「卷」和「章」两级,被切成一个平铺的长列表。预览里章节数明显不对就换切分方式。

生成的是标准 EPUB 3,同时输出 nav.xhtmltoc.ncx——前者是 EPUB 3 的规范目录,后者是 EPUB 2 时代的产物。两个都写是为了兼容老阅读器和一些较旧的 Kindle 固件,只写新格式在部分设备上会显示成「无目录」。书名、作者、语言可以自己填,填了直接影响下一节要讲的书架显示。

三、改元数据:影响的是书架,不是内容

书库一乱,症状都很像:一半书名是文件名、作者栏空着、同一个作者被拆成三个人、中文书被标成英文导致排序按字母乱排。这些都是元数据问题,正文一个字没错。EPUB 元数据编辑 可以改书名、作者、语言、出版方、简介五个字段,改动前后并排对照显示。

阅读器的书架、分类、排序、搜索全部读元数据,不读文件名。所以:

  • 书名决定书架上显示什么,也决定按标题排序的位置。系列书建议统一成「系列名 序号 分卷名」的格式,排序才不会乱。
  • 作者决定按作者归类是否成立。同一个人在不同书里写成「金庸」「金 庸」「Jin Yong」会被当成三个作者,统一写法是整理书库最划算的一步。
  • 语言标错会连带影响断行、字体选择和排序规则,中文书务必标成中文。
  • 简介在书架的详情页显示,方便过了半年还能想起这本讲什么。

实现上有两处刻意的设计,理解了能避免踩坑:

一是只替换 OPF 里的元数据节点,其余文件按原样搬进新包。 正文、样式、字体、图片、封面全都不动,所以改元数据不会丢内容也不会改变排版。同时严格保证 mimetype 是包内第一个文件且不压缩——这是 EPUB 规范的硬要求,很多重打包工具在这里出错,结果就是阅读器直接拒绝打开、报「文件已损坏」。所以宁可用这类专门工具,也别自己解压改完再用普通压缩软件打回 ZIP。

二是唯一标识 dc:identifier 有意不做修改。 阅读器靠它判断「这是不是同一本书」,进度、书签、笔记、高亮全挂在这个 ID 上。如果改了它,你改完导回去会变成一本全新的书,读到第 300 页的进度和一路做的笔记都对不上了。这也解释了一个常见疑问:改书名作者后为什么阅读进度还在?因为标识没变。

关于封面:封面在 EPUB 里是一个图片资源加一条元数据指向,本工具管的是上面那五个文本字段,封面图片按原样保留、不会丢,但更换封面图需要在支持替换资源的书库软件里做。

四、漫画打包 CBZ:命名排序是唯一的坑

CBZ 的定义简单到有点朴素:一个装着按序图片的 ZIP,把扩展名改成 .cbz。漫画阅读器打开它,把里面的图片一张张按顺序显示出来。漫画打包 CBZ 不做任何转码,图片的格式、分辨率和体积与原图完全一致——这点很重要,扫描版漫画最怕的就是被二次压缩后网点变糊。

整个流程唯一的风险点是页序,而它比大多数人预料的更容易出错。原因是漫画阅读器按文件名字典序翻页,字典序是一位一位比字符的:

  • 1.jpg2.jpg10.jpg 这组:比较第一个字符,1 小于 2,所以 10.jpg 排在 2.jpg 前面。实际阅读顺序变成 1、10、11、12……2、20、21……3,前后剧情全乱。
  • 01.jpg02.jpg10.jpg 这组:位数补齐后字典序和数字序一致,正常。但只补到两位,页数超过 99 时 100.jpg 又会插到 10.jpg 后面。
  • page_001.jpg 这组:补到三位,一千页以内都安全,这是最稳的命名法。
  • 混杂命名,比如 封面.jpgp1.jpg扫描 (3).jpg:字典序完全不可预测,必须手工排。

工具用两个手段从根上解决:默认按文件名自然排序(把文件名里的数字当数字比较,所以 2 一定在 10 前面),以及统一重命名为 page_001 这样的补零序号。第二个选项建议保持勾选——自然排序只保证工具内的顺序正确,而重命名是把这个正确顺序固化进文件名,这样无论以后用哪个阅读器打开、无论那个阅读器有没有自然排序功能,页序都不会再变。打包前会列出「原文件名 → 新文件名」的对照表,扫一眼首尾几页和翻页处,比事后重打包省事。

顺序确实无规律时,用手动上下移动逐页调整。另外提醒两点:彩页和封面记得排到最前,很多人扫完才发现封面文件名是 cover.jpg,按字典序被排到了字母 c 的位置;跨页大图如果被拆成左右两张,注意左右顺序要符合这本漫画的阅读方向。

所有这些处理都在浏览器里完成,几百张图片的漫画也不需要先上传再下载,省掉的时间往往比处理本身还多。

五、一条整理书库的实用路线

如果你手上是一堆来源混杂的文件,建议这个顺序:

先把 TXT 全部转成 EPUB,转的时候就顺手填好书名作者,能省掉后面一半的元数据修改;已有的 EPUB 直接进元数据编辑,重点统一作者写法和语言标记;需要做检索或摘录的书,额外导一份 TXT 放在旁边,原 EPUB 留着阅读;散图漫画统一打包成 CBZ 并重命名为补零序号。

整完之后,书架上按作者和标题排序都能对齐,找书不再靠翻。

常见问题

转出来的 TXT 章节顺序乱了? 本工具按 EPUB 的 spine 顺序提取,不按文件名,正常情况下就是出版方声明的阅读顺序。如果确实乱了,通常是这本 EPUB 自身的 spine 写得有问题(部分盗版转制的书会这样),这种情况只能导出后手工调整章节文件的顺序。

TXT 转 EPUB 后只有一章,怎么回事? 说明章节标题没被识别到。先检查标题是否独占一行、是否被空格或标点包裹成了别的形式;确认原文没有规范标题的,改用「按连续空行分篇」或「按字数均分」。生成前一定看预览区的章节列表。

改了书名作者,阅读器书架上还是旧的? 两种原因。一是阅读器缓存了旧的书籍信息,需要把书从书架移除再重新导入;二是你导入的还是旧文件——工具是保存为新的 EPUB、原文件不覆盖的,注意区分两个文件。唯一标识没有变动,所以重新导入后阅读进度不会丢。

CBZ 打包好了,阅读器显示的页序还是不对? 如果打包时没勾「重命名为补零序号」,文件名里的原始命名就带进了包里,而阅读器按自己的规则排序,多半会退回字典序。重新打包一次并保持勾选重命名,页序就固化在文件名里了。

文中用到的工具

同类教程