如何翻譯 RTF 檔案:哪些內容會保留,哪些會消失
翻譯 RTF 檔案時,段落、表格、註腳、連結和格式會發生什麼變化,為什麼 TextEdit 檔案需要額外步驟,以及一個免費檢查工具。

要翻譯 RTF 檔案,請將整個 .rtf 檔案上傳到能讀取 RTF 的翻譯工具,然後檢查結果。BookTranslator 支援 RTF。它會逐段讀取文字、進行翻譯,並提供新的 RTF 檔案和雙語 RTF 檔案。將文字貼到聊天視窗或網頁翻譯工具也適用於一兩頁的內容,但您會失去原始檔案,必須重新建構。
上傳前有一件事需要知道。翻譯後的檔案會保留您的文字和段落,但不會保留格式。粗體、標題、字型、表格、連結和圖片都不會回來。因此,正確的途徑取決於檔案內容以及是哪個應用程式儲存的。從 Word 儲存的純文字手稿是最簡單的情況。Mac 上 TextEdit 儲存的檔案需要先做一個額外步驟,否則每個段落會連在一起。
我們製作了三個測試檔案,並寫了一個免費檢查工具,可在您上傳前顯示 RTF 檔案中有什麼內容,以及上傳後有什麼變化。我們將測試檔案透過 BookTranslator 使用的 RTF 讀寫程式碼的本機副本執行,並以標記代替模型,讓您確切看到每個測試檔案送出翻譯的文字,以及檔案如何返回。
快速解答:檔案的每個部分會發生什麼
| 檔案部分 | 我們測試中返回的結果 | 該怎麼做 |
|---|---|---|
以 \par 結尾的段落(Word 和大多數 Windows 應用程式) | 每個段落對應一個翻譯段落 | 無需處理 |
| 以反斜線和換行結尾的段落(TextEdit、其他 Mac 應用程式) | 整個檔案作為一個段落送出,每個換行處沒有空格 | 先轉換檔案(參見步驟 2) |
| 粗體、斜體、標題、字型、顏色、對齊 | 已移除。每個段落都是 12 點 Times New Roman | 在 Word 中重新格式化,或改為翻譯 DOCX |
| 表格 | 儲存格文字無空格連接:StopTimeNorth pier7:05 | 改為翻譯 DOCX |
| 註腳 | 註腳文字被加到其段落末尾;註腳編號消失 | 手動將註腳移回,或翻譯 DOCX |
| 頁首 | 在檔案中的位置會變成一般段落(在我們的測試中位於頂端) | 將其刪除,或保留原始頁首 |
| 連結 | 連結文字會保留並翻譯,網址則會移除 | 重新加入連結 |
| 圖片 | 已移除 | 保留原始檔案以取得圖稿 |
帶重音及非拉丁字元(café、日本) | 讀取與寫入皆正確 | 無需處理 |
| 任何由 0–9 和 a–f 組成、長度達 20 個字元以上的連續字串(長參考編號、雜湊值) | 在翻譯前刪除 | 翻譯後檢查是否出現(檢查工具會執行此動作) |
本指南其餘部分將說明每一列的來源及因應方式。
步驟 1:確認您擁有的是哪一種 RTF
RTF 是一種內含格式代碼的文字格式。請用純文字編輯器開啟檔案,或在終端機執行 head -c 120 yourfile.rtf,然後查看第一行。
- 若其中包含
\cocoartf,表示該檔案是由 Apple 的文字系統所儲存:TextEdit 或其他使用該系統的 Mac 應用程式。 - 若其中包含
\rtf1\ansi且沒有\cocoartf,則最可能來自 Word、LibreOffice、WordPad 或寫作應用程式的匯出檔。
這項差異之所以重要,是因為這兩種類型結束段落的方式不同。Word 及大多數其他文書處理器會在每個段落結尾寫入代碼 \par。Apple 的文字系統則在行尾寫入單一反斜線。兩者都是有效的 RTF:Microsoft 原始的 1989 年 RTF 規格(鏡像副本)指出,反斜線後接換行符號的處理方式與 \par 相同,而 Apple 自家的讀取器會將我們的 TextEdit 測試檔顯示為獨立段落。BookTranslator 的 RTF 讀取器僅以 \par 分割段落。我們已於 2026 年 11 月 3 日在其程式碼中及下方的測試中確認此事。
檢查工具會告訴您擁有的是哪種類型,以及檔案中還有什麼其他內容。它只需要 Python 3,別無其他需求:
python3 check_rtf.py sample-word-style.rtf
在我們的 Word 樣式測試檔上,它印出:
== sample-word-style.rtf
par_breaks: 7
table_cells: 4
table_rows: 2
hyperlinks: 1
fields: 1
bold_on: 2
italic_on: 1
page_breaks: 1
fonts: 2
footnotes: 1
headers: 1
images: 1
visible_paragraphs: 7
WARN 4 table cells: check that cell boundaries survive.
WARN 1 footnotes: check where this text ends up in the output.
WARN 1 headers: check where this text ends up in the output.
WARN 1 hyperlinks: the link text may survive without the URL.
WARN 1 images: keep the original for the artwork.
在 TextEdit 檔案上,第一個警告是這個:
WARN Paragraphs end with a backslash + line break (TextEdit/Cocoa style), not \par. Tools that only split on \par will see one long paragraph.
如果檢查工具沒有印出任何警告,你的段落、數字和文字應該都能順利保留。粗體、標題和清單不會觸發警告,但在 RTF 路徑上仍會被移除,所以如果你需要這些格式,請檢查步驟 2。
我們的測試檔案回傳了什麼
我們建立了三個小檔案。所有檔案,以及回傳的一切內容,都放在測試檔案資料夾中。
- sample-word-style.rtf 是依照 Word 使用 RTF 的風格手寫而成:
\par換行、頁首、註腳、連結、二乘二的表格、一張小圖片、分頁符號、以代碼頁字元寫成的café,以及以 Unicode 碼寫成的日本。 - sample-textedit.rtf 是在 Mac 上用
textutil -convert rtf製作的,它使用與 TextEdit 相同的文字系統。它有一個標題、粗體和斜體字、一個連結、一個項目符號清單、一個表格,以及一行含有{braces}和反斜線的文字。 - sample-long-numbers.rtf 有一個 20 位數的訂單編號、一個 40 字元的提交雜湊值,以及一個電話號碼。
我們在 2026 年 11 月 3 日從 BookTranslator 的後端程式碼複製了 RTF 讀取和寫入函式,並在每個檔案上執行。沒有使用任何模型。每個會送去翻譯的段落都被替換成 [ZH] 加上原始文字。這能確切顯示模型會收到什麼,以及檔案如何重建,而不受真實翻譯的雜訊干擾。
Word 風格的檔案:六個乾淨的段落,附帶三個意外
檔案回傳為六個翻譯段落,順序如下:
[ZH] Harbor Notes - Draft 2
[ZH] Chapter 3: The Harbor
[ZH] The ferry left at 6:40, an hour before the café opened. Timetable from the 1998 edition.
[ZH] Read the harbor map before you go.
[ZH] StopTimeNorth pier7:05
[ZH] Chapter 4: 日本 (Nihon)
大部分都是你想要的結果。每個段落都按順序送出一次,café 和 日本 也從 RTF 碼到文字再回來的過程中倖存下來。三個意外是:
- 頁首變成了第一個段落。「Harbor Notes - Draft 2」原本是每頁頂端印出的頁首。在翻譯後的檔案中,它成了本文。
- 註腳移進了句子裡。「Timetable from the 1998 edition.」原本是「opened」的註腳。現在它跟在句子後面,彷彿是句子的一部分,而註腳編號消失了。翻譯該段落的模型看到的是一段連續文字,你必須手動找到註腳並把它移回去。
- 表格儲存格連在一起了。四個儲存格「Stop」、「Time」、「North pier」和「7:05」變成了單一字串
StopTimeNorth pier7:05。模型可能會在錯誤的位置分割它,或把「StopTime」當成一個詞來翻譯。
翻譯後的檔案沒有頁首、沒有註腳、沒有表格、沒有連結位址、沒有圖片,也沒有粗體。步驟 4 中檢查工具的比較模式會列出所有這些項目。
TextEdit 檔案:一個段落
TextEdit 檔案有八個可見段落。它們全部被當成一個段落送去翻譯:
Chapter 3: The HarborThe ferry left at 6:40, an hour before the market opened.Read the harbor map before you go. • Bring cash • Keep your ticketStopTimeNorth pier7:05Ana said: "We'll wait {here}" and C:\Users\ana\notes stayed open.
每個段落結束的地方都沒有空格:「HarborThe」、「opened.Read」。翻譯後的檔案也是一個段落。我們的測試檔案很短。在 TextEdit 儲存的真實書籍中,整個檔案會變成一個段落。翻譯前,BookTranslator 會把非常長的段落切成約 6,000 字元(中文、日文或韓文約 2,000 字元)的片段,盡量在能找到的句尾處切割。這些切割仍然落在段落內的句尾,但絕不會落在缺失的段落分隔處,因為「opened.Read」看起來不像句尾。若每個段落都是單一句子,例如對話行或清單項目,切割可能會落在逗號或空格處。模型永遠看不到段落原本在哪裡,而你拿回來的是一大塊文字。
最後一句中的大括號和反斜線確實倖存下來了。它們在輸出時被正確轉義,所以檔案仍能開啟。
長數字:在翻譯前被刪除
第三個檔案回傳結果如下:
[ZH] Your order reference is and must be quoted in full.
[ZH] The fix landed in commit last week.
[ZH] Call +44 20 7946 0958 before 5 pm.
訂單編號和提交雜湊值消失了,各自的位置留下兩個空格。讀取器會移除任何由數字 0–9 和字母 a–f 組成、長度達 20 個字元以上的連續字串,因為內嵌圖片資料在 RTF 中就是這個樣子。你文字中的長數字對它來說看起來也一樣。電話號碼倖存下來,因為它的數字群組很短。
這主要影響合約、發票、技術筆記,以及含有長參考編號的記錄。檢查工具會列出原始檔案中所有這類字串,並在翻譯後有遺漏時告訴你。
步驟 2:為你的檔案選擇正確的路徑
使用檢查工具的輸出結果來選擇一個:
| 您的檔案內容 | 最佳途徑 | 原因 |
|---|---|---|
純段落,來自 Word 或其他使用 \par 的應用程式 | 上傳 RTF 檔案 | 段落會一一對應返回;只會失去您不需要的格式 |
純段落,來自 TextEdit(\cocoartf) | 先轉換為 DOCX 或 TXT,再上傳該檔案 | RTF 讀取器會將整個檔案當作一個段落送出 |
| 標題、表格、註腳或您需要保留的格式 | 在 Word 或 LibreOffice 中另存為 DOCX,然後上傳該 DOCX | RTF 途徑會重建為純文字檔案;DOCX 則會走 Word 工作流程 |
| 冗長的參考編號或雜湊值 | 任一途徑,然後檢查 | 確認每個數字都完整返回 |
若要在 Mac 上轉換 TextEdit 檔案,請開啟終端機並執行下列其中一個指令:
textutil -convert docx notes.rtf
textutil -convert txt notes.rtf
第一個指令會在原始檔案旁寫入 notes.docx。當我們以此方式轉換 TextEdit 測試檔案時,DOCX 的每一行都是一個獨立段落,並保留了粗體和斜體文字。它沒有保留表格(表格變成獨立段落),也沒有保留連結。如果您需要這些內容,請在 Word 或 LibreOffice 中開啟檔案並從那裡另存為 DOCX,然後在上傳前檢查表格。第二個指令會寫入純文字檔案。當您只需要文字時使用它;我們的純文字翻譯指南涵蓋了在 TXT 檔案中需要檢查的內容。
對於表格、樣式和頁首很重要的 Word 文件,請參閱我們的指南在保留格式的情況下翻譯 Word 文件。BookTranslator 在其文件翻譯工具頁面的常見問題中,對舊版 Word .doc 檔案提供了相同的建議:它會翻譯其文字並傳回 RTF 檔案,並建議在圖片、表格或版面配置需要保留時,先另存為 DOCX。
步驟 3:翻譯整個檔案
上傳檔案,選擇目標語言,並在付款前確認價格。BookTranslator 會按順序翻譯段落。對於有重複出現的名稱和術語的長檔案,請在付款前開啟自動詞彙表選項,以便它們在整份文件中以相同方式翻譯。
您會得到兩個檔案:
- 翻譯後的檔案: 每個段落都以目標語言呈現。
- 雙語檔案: 每個原始段落後面跟著其翻譯。這是審閱時更快的檔案,因為您可以並排閱讀兩者,並找出被跳過或誤讀的段落。在我們的 TextEdit 測試的雙語檔案中,整份文件先以英文出現一次,然後再以標記出現一次,這是另一種看出單一段落問題的方式。
兩個檔案都會寫成純文字 12 點 Times New Roman 段落。從右至左的目標語言(例如阿拉伯語和希伯來語)會標記為從右至左的段落。在 Word、LibreOffice 或 TextEdit 中開啟檔案以閱讀並設定格式。
步驟 4:檢查翻譯後的檔案
使用原始檔案和譯文執行檢查程式:
python3 check_rtf.py sample-word-style.rtf sample-word-style-translated.rtf
對於我們的 Word 樣式檔案,比較區段印出了:
== compare
CHANGED table_cells: 4 -> 0
CHANGED footnotes: 1 -> 0
CHANGED headers: 1 -> 0
CHANGED hyperlinks: 1 -> 0
CHANGED images: 1 -> 0
CHANGED bold_on: 2 -> 0
CHANGED italic_on: 1 -> 0
CHANGED page_breaks: 1 -> 0
CHANGED visible_paragraphs: 7 -> 6
每一行都是待您審查的工作項目。這裡段落數從七變成六,因為表格列變成了一個段落。對於長數字檔案,它印出了兩行 MISSING,每個被刪除的數字各一行。對於 TextEdit 檔案,visible_paragraphs: 8 -> 1 就是回到步驟 2 的訊號。
檢查程式只計算結構。它無法告訴您翻譯品質好不好。請閱讀雙語檔案,至少讀開頭幾頁以及任何包含姓名、數字或對話的段落。
常見問題
我的翻譯 RTF 變成一大段。 您的原始檔案很可能來自 TextEdit 或其他 Mac 應用程式。對原始檔執行檢查程式。如果它警告有反斜線換行,請將檔案轉換為 DOCX 或 TXT,然後翻譯那個檔案。
有些字黏在一起,像「StopTime」。 那些原本是表格儲存格。RTF 表格在這條路徑上會失去儲存格邊界。如果表格很重要,請翻譯該檔案的 DOCX 副本。
句子結尾出現不屬於它的文字。 那很可能是註腳。在原始檔中找到它,然後將其譯文移回 Word 中的註腳。
譯文中缺少一個數字。 如果它是 20 個或更多由 0–9 和 a–f 組成的字元,它在翻譯前就被移除了。請從原始檔複製回來。檢查程式的 MISSING 行會列出每一個。
格式不見了。 這在 RTF 路徑上是預期中的:檔案會以純段落重建。如果您需要格式,請翻譯 DOCX 副本,或在翻譯後重新套用樣式。我們對 DOCX 翻譯工具 的比較涵蓋了哪些工具能保留 Word 格式以及保留程度如何。
我可以改為取得 DOCX 格式的結果嗎? 無法從 RTF 上傳取得;RTF 進,RTF 出。請在上傳前將原始檔轉換為 DOCX,結果就會以 DOCX 傳回。





