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 或 Amazon 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 即可。