ToolAct

EPUB 转 TXT 转换器

上传 EPUB 电子书,把全书正文提取为 UTF-8 纯文本 .txt 文件

上传电子书

把 EPUB 文件拖到这里,或点击选择

支持 .epub 格式(无 DRM),最大 3MB

什么是 EPUB 转 TXT?

EPUB 转 TXT 是把 EPUB 电子书中的正文抽取出来、写成一个纯文本文件。EPUB 本质是一个压缩包:真正的文字藏在包内的 XHTML 文档里,外面还裹着 CSS 样式、字体、插图、目录等一堆资源。而 .txt 只保留字符本身——没有标签、没有样式、没有版式。你得到的就是一段连贯的文字,干干净净,任何程序都能直接读。

它之所以有用,是因为纯文本是唯一谁都能读的格式:grep 和全文检索、Python / R 的文本挖掘脚本、字数统计、翻译工具、大模型提示词、语音合成,以及那些完全不支持电子书格式的设备和软件。想在一批书里做全文搜索、想精确引用原句、想把一本小说喂给语言模型,第一步几乎都一样——先把文字从电子书容器里拿出来。

但转换前要先接受代价:TXT 是一个「有损」的目标格式。插图、封面、目录层级、加粗倾斜、表格、脚注锚点、嵌入字体,全都会消失,或者被压成一段连续的正文,只有文字本身留下来,用换行和空行分隔。页码同样没有意义,因为纯文本没有「页」的概念。如果你希望书看上去还是一本书,请用 EPUB 转 PDF;只有当你需要的是文字而不是页面时,TXT 才是对的选择。

使用方法

操作步骤

  1. 点击上传区域,或把 EPUB 文件拖进来——只支持 .epub,最大 3MB
  2. 点击「转换为 TXT」,服务端用 Calibre 在几秒内完成正文提取
  3. 结果面板显示体积变化后,点击「下载 TXT」保存纯文本文件
  4. 还要转换别的书?点「转换其他文件」重置面板即可

转换前建议确认

  • 留意结果面板里的体积变化:大幅缩小是正常的(图片和字体都没了),但如果只有几百字节,通常说明这本 EPUB 里几乎没有可提取的文字。
  • 下载后先用支持 UTF-8 的编辑器打开一次。如果重音字母或中日韩文字显示异常,是编辑器的编码识别问题,文件本身是 UTF-8。
  • 需要保留书的版式、封面或插图时,请改用转 PDF;TXT 是刻意把这些都舍弃掉的。

适用场景

在整本书里做全文检索想在 600 页的 EPUB 里找出某个角色、术语或日期的每一次出现,用阅读器一页页翻,基本是白费力气。转成 TXT 后,用 grep、编辑器或搜索工具直接搜,结果马上出来,还带着行号和上下文,而且这台机器上不需要装任何阅读器软件。
喂给大模型或 NLP 流水线语言模型、摘要工具、主题模型、语料处理工具,输入都是纯文本。先把 XHTML 标签和 CSS 去掉,可以避免把标记噪声一起喂进去——它既白白占用上下文窗口,又会把 token 计数算歪。UTF-8 输出在 Python 里一个 open() 就能读,不需要任何 EPUB 解析库。
精确摘录与引用从阅读器里复制正文,常常会带上看不见的格式、被换掉的弯引号,以及断行处的连字符。TXT 提取出来的是书里真正存储的字符,粘进论文、博客或字幕文件都很干净,还能用字数核对引文是否完整。
语音合成与有声书制作TTS 引擎和有声书工具吃的是文本,不是 EPUB。先提取 TXT,按空行或标题标记切分章节,再送进合成引擎。去掉标记还有一个好处:朗读时不会再念出图片替代文字或残留的样式代码。
在没有阅读器的设备上阅读老手机、固件锁死的老电纸书、终端、嵌入式设备、车机——很多屏幕能显示文本文件,却打不开 EPUB。TXT 门槛最低,任何设备都能打开,体积也小到可以随意邮件发送或同步。
为翻译或字幕准备素材CAT 翻译工具和字幕编辑器都是按文本片段处理的。先做一次机械提取,能给译者一个稳定、可做版本管理的源文件;断句这一步就只需在纯文本上做一遍,不必去和 EPUB 里嵌套的 XHTML 段落较劲。

技术原理

转换由 Calibre 的命令行工具 ebook-convert 完成,服务端执行的命令是 ebook-convert <输入.epub> <输出.txt> 并附加 --txt-output-encoding utf-8,因此无论原书声明的是什么编码,输出都是 UTF-8。整个流程分三步。

第一步是解析 EPUB。EPUB 是一个 ZIP 压缩包,首个条目是不压缩的 mimetype 文件(内容为 application/epub+zip),随后是 META-INF/container.xml,指向包根部的 .opf 文件;.opf 里包含三部分——metadata(用 Dublin Core 元素描述标题、作者、语言、唯一标识)、manifest(列出包内全部资源)和 spine(定义正文的阅读顺序)。解析器按 spine 取出每个 XHTML 正文文档,这就是为什么文字是按阅读顺序而不是压缩包内顺序输出的——决定顺序的是 spine,不是文件名。

第二步是把 XHTML 剥成纯文本。转换器遍历每个正文文档的 DOM,只保留文本节点:<p>、<h1>、<em>、<span>、<div> 等元素最终只留下自己的文字内容,其余一概丢弃。块级元素会被转成段落分隔,这正是输出里段落之间空行的来源;行内样式则直接丢弃。像 <img>、<hr> 这种本身没有文字的元素,会彻底消失。链接会失去目标地址,但锚文本留在原位——所以直接写成文字的网址能留下来,而被嵌入超链接的文字则会丢掉背后的地址。

第三步是序列化输出:归一化空白字符,按目标编码写出文件,结束。有两个后果值得提前知道。其一,所有只以图片形式存在的内容都会消失:扫描版电子书、固定版式 EPUB(rendition:layout=pre-paginated)的漫画、绘本,书里几乎不存在文本节点,输出就是空的或接近于空。其二,没有标记就没有结构——PDF 流程用来分页的 CSS 分页规则在这里毫无意义,章节边界只剩下标题文字本身。

  • 引擎:Calibre 的 ebook-convert,服务端执行 ebook-convert <输入.epub> <输出.txt> --txt-output-encoding utf-8
  • EPUB 容器结构:ZIP 内含未压缩的 mimetype(application/epub+zip)、META-INF/container.xml 指向根 .opf;.opf 含 metadata / manifest / spine 三部分
  • 阅读顺序由 spine 决定,而非文件名或压缩包内顺序——所以抽出来的章节是按书里原本的顺序排列的
  • 只保留文字节点:块级元素变成段落分隔,行内样式直接丢掉,没有文字内容的元素(img、hr)也不会出现
  • 天然有损:图片、封面、表格(单元格内容串成行文)、字体、颜色、目录层级都无法保留;链接只留下锚文本
  • 纯图片内容会失败:扫描版 EPUB 或固定版式漫画没有文本节点,输出为空——服务端检测到空结果会直接报失败,而不是给你一个空文件
  • 输出为 UTF-8 纯文本、空白字符已归一化;没有「页」的概念,因此页码与分页设置都不起作用

示例

整本书检索

把 EPUB 转成 TXT,再用 grep -n "关键词" book.txt 直接跳到每一次出现的位置并看到行号

准备大模型提示词素材

把小说提取成 TXT,按空行切分,再逐章送入摘要或翻译提示词

统计字数、估算阅读时长

提取后用 wc -w book.txt 得到干净的字数——直接数 EPUB 里带标签的 XHTML 是数不准的

为语音合成准备文本

转成 TXT 去掉标记,再把干净文本送进 TTS 引擎制作音频

常见问题

我的 EPUB 文件会上传到哪里?

文件会上传到转换服务器,用 Calibre 的 ebook-convert 处理,然后给你一个 .txt 下载。任务结束后文件不会保留,但仍建议把上传出去的内容当作已离开本机对待,不要提交无权分享的材料。下载链接是一个临时任务 ID,不是长期有效的地址。

插图、封面和格式会保留吗?

不会。TXT 根本承载不了图片、颜色、字体和强调效果,转换器只保留字符:加粗倾斜变成普通文字,封面和内文插图被丢弃,CSS 样式全部舍弃。段落分隔会以空行的形式保留下来,这是纯文本唯一能表达的结构。

为什么转换结果是空的,或者提示转换失败?

绝大多数情况是这本书里没有可提取的文字。扫描版 EPUB、漫画、固定版式的绘本把每一页都存成了一张图,所以没有任何文本节点可抽取。服务端会检查输出文件大小,发现为空时直接报转换失败,而不会给你一个 0 字节的文件。如果这本 EPUB 在阅读器里能正常显示却提取不出内容,就要先对页面做 OCR。

为什么 TXT 比原 EPUB 小这么多?

因为文字在电子书里只占极小一部分。一本典型的 EPUB 里装着封面、插图和内嵌字体,这些都是压缩过的二进制数据;而一本小说真正的正文往往只有几百 KB。缩小 80%–95% 完全正常,结果面板会给出精确的比例。

目录和章节标题会怎样?

目录不会保留成目录——TXT 里没有目录这个概念——但标题文字本身通常会按阅读顺序保留在原位。nav.xhtml 或 toc.ncx 里的条目,只有在正文中也以可见文字出现时才会留下。实际做法是:按空行或章节标题的样式把文件切开,自己重建章节结构。

受 DRM 保护的 EPUB 能转换吗?

不能。经 Adobe ADEPT、Apple FairPlay 或亚马逊 DRM 加密的书,转换器无法打开——内容本身是加密的,还没读到文字就会失败。请使用合法获得的无 DRM 的 EPUB,例如自己排版的电子书、公版作品,或你明确拥有转换权限的文件。

还有哪些电子书格式能转成 TXT?

服务端的 TXT 接口一共支持 15 种输入格式:epub、mobi、azw3、azw、fb2、lit、prc、pdb、html、htm、xhtml、rtf、odt、docx、snb。但本站为每种格式都单独开了一个页面,这样上传校验和错误提示才与实际转换的格式一致。本页只处理 .epub。

转换次数有限制吗?

有。转换接口按 IP 限流,每分钟最多 2 次,所有电子书转换共用一个计数。日常使用完全够用,这个限制是为了防止脚本刷接口。真触发了,等一分钟就恢复。

输出是什么编码?中文、日文能正常吗?

输出固定为 UTF-8,由 --txt-output-encoding utf-8 参数强制指定,因此中文、日文、韩文、西里尔文、希腊文和其他带重音的拉丁字母都能完整保留。如果下载后字符显示成乱码,那是编辑器识别编码的问题,文件本身没错——手动把编辑器切到 UTF-8 即可。