解決 ChatGPT 輸出 PDF 檔案出現黑色豆腐、中文亂碼的問題

使用 ChatGPT 將繁體中文文字轉成 PDF 檔案時,可能會出現黑色豆腐 (缺字)、中文亂碼的問題。提示詞指定使用支援繁體中文的「STSong-Light」,或額外上傳的 Google Noto Sans Traditional Chinese  (思源宋體-繁中) 字型檔案即可解決。

Photo by Candace McDaniel on StockSnap


問題狀況:

問題1:出現黑色豆腐缺字 (Tofu)


問題2:中文字亂碼


解決方式

✅ 使用支援繁體中文的字型

  1. ChatGPT 內建的「STSong-Light」,不需要額外上傳字型檔案
  2. 需要額外手動上傳的 Google Noto Sans Traditional Chinese  (思源宋體-繁中)、微軟正黑體等字型檔案
❌ 不建議使用
  1. 內建的 MSung-Light:雖然支援中文字,但實際輸出 PDF 的中文呈現亂碼
  2. 內建的 Noto Serif CJK JP:Noto Serif CJK JP 支援日文常用漢字(常用漢字、人名用漢字等),但是不支援台灣特有用字,加上日文常用漢字的筆順結構 (stroke) 與繁體中文不同。例如:「骨」、「直」、「真」等字會有細節上的差異。建議改用 Noto Serif Traditional Chinese





操作方式

  1. 上傳的 Google Noto Sans Traditional Chinese 、微軟正黑體等字型檔案
  2. 輸入提示詞

將我提供的繁體中文文章轉成可以下載的 PDF 檔案

- 使用上傳的字型檔案,內嵌字型到 PDF 檔案

- 避免文字超出邊界

```

(貼上文章)

```

無效的提示詞

❌ 不手動上傳 Google Noto Sans Traditional Chinese 字型檔案,但是卻在提示詞要求使用 Google Noto Sans Traditional Chinese 字型,雖然 ChatGPT 看起來很認真地轉成 PDF 檔案,但是下載的 PDF 檔案還會遇到中文亂碼。

因為 ChatGPT 遇到不是內建的字形,不會自動連網下載使用者指定的字型檔案。

ChatGPT 內建的字型

透過提示詞「使用程式工具列出安裝的 font」,要求 ChatGPT 列出內建的字型檔案:欄位有 Family (字型家族) 與 Count (支援的樣式數量,例如 2 代表Regular、Bold 兩種,4 代表 Regular、Italic、Bold、Bold Italic 四種)

Family, Count
DejaVu Sans, 2
DejaVu Sans Mono, 2
DejaVu Serif, 2
Liberation Mono, 4
Liberation Sans, 4
Liberation Serif, 4
Noto Sans CJK JP, 2
Noto Serif CJK JP, 2

Noto Sans CJK JP 與 Noto Serif CJK JP 支援日文優先的字型,其他則是英文、歐洲語系的字型。結果並未包含 STSong-Light 與 MSung-Light 兩種字型。

ChatGPT 內建字型與支援語言 (放大表格、ChatGPT 整理)


進一步調查,ChatGPT 產生 PDF 使用到 ReportLab 開源套件,使用手冊提到「亞洲語言套件包」(Asian Language Packs):(使用 Claude 翻譯)
這種方法提供最佳效能,因為不需要在 PDF 檔案中嵌入任何內容;就像標準字體一樣,所有內容都在閱讀器上。 
Adobe 為每種主要語言提供附加元件。在 Adobe Reader 6.0 和 7.0 中,當您嘗試開啟使用這些字體的文件時,系統會提示您下載並安裝。在較早的版本中,開啟亞洲文件時會看到錯誤訊息,且必須知道該如何處理。 
支援日文、繁體中文(台灣/香港)、簡體中文(中國)和韓文,我們的軟體了解以下字體:

chs = 簡體中文(中國):'STSong-Light'
cht = 繁體中文(台灣):'MSung-Light'、'MHei-Medium'
kor = 韓文:'HYSMyeongJoStd-Medium'、'HYGothic-Medium'
jpn = 日文:'HeiseiMin-W3'、'HeiseiKakuGo-W5'
比較奇怪的是,在 ChatGPT 使用 MSung-Light 字型產生的繁體中文 PDF 檔案反而變成亂碼。不過因為沒有大量文章測試,建議讀者需要確認最後產生的 PDF 有無問題。

相關文章

  1. Tofu – Fonts Knowledge - Google Fonts https://fonts.google.com/knowledge/glossary/tofu 當字體中不存在字元且沒有可用的後援選項時,遺失的字元會替換為一個符號,該符號因其與豆腐塊相似而被稱為「豆腐」。

留言