2023年3月6日 星期一

OpenAI : ChatGPT 應用 : 製作雙語電子書

2023年3月6日 星期一

 最近有個開源的專案「bilingual_book_maker」,將 EPUB 格式的電子書的內容,一段段抓出來後,利用 OpenAI ChatGPT 翻譯以後,再重組輸出成雙語的電子書,專案的網址如下:

我將程式碼移植到 Google Colab 上玩,只要準備好 EPUB 電子檔及 OpenAI 的 API Key,就能在 Colab 中體驗「bilingual_book_maker」的功能。

製作工具網址及使用方法

Colab 筆記本的網址如下:

請建立自己的副本後再使用,如何利用前述工具來製作雙語的電子書,以下影片中有簡單的介紹:

如何取得 OpenAI 的 API Key

OpenAI 的 API Key 可以由底下的網址直接進入管理介面後取得:

簡單的操作介紹影片:

如何製作 EPUB 檔案

製作 EPUB 格式電子書的工具不少,最簡單的方式,可以利用 Google 文件、LibreOffice、Sigil ...... 等工具輸出 .epub。

要注意的是,目前「bilingual_book_maker」是一段段的方式(以 HTML 的 <p> 分段),所以分段的好壞,應該會影響到效率與效果。

更新記錄

  • 2024.03.18 openai 使用較新版本的 httpx ,導致 googletrans 4.0.0-rc1 無法正常運作,除了修改安裝程序,讓  googletrans 4.0.0-rc1 可以工作,也新增「install_googletrans」的參數,有勾選才會使用  googletrans 4.0.0-rc 來進行 google 翻譯,不然就是使用 bilingual_book_maker 內建的功能。
  • 2023.04.11 安裝改由 Github 更新;加入 single_translate 的參數,只輸出譯文,不輸出原文。
  • 2023.03.21  bbook_maker 中的 Google 翻譯會有因為電子書內容太多,而未完全翻譯的情形,另外也限定翻為簡體中文,所以改用 googletrans 4.0.0-rc1 來進行翻譯,順便解決設定輸出語言的問題。
  • 2023.03.17 改用安裝 bbook_maker 的方式,安裝最新版本;參數加入 resume_enable 及 translate_tags。
  • 2023.03.07 有時會出現簡體字的問題解決。參見 :
    https://github.com/yihong0618/bilingual_book_maker/commit/2d5972e76d022cda94a9cc9b9d2d011aa9a614f4
  • 2023.03.05 初稿


32 則留言:

  1. 超級感謝你!!!!讓我這個程式小白更容易使用了QQ

    回覆刪除
  2. 回覆
    1. 你好, 不知道為什麼自己製作的Epub, 按照你的步驟教學, 一步一步做下去, 也沒有報錯, 但是產生出來的Epub, 與原本的一模一樣...
      不知道是否有你測試的範例Epub, 可以讓我測試下?

      刪除
    2. 您好,
      沒有您的檔案,所以我也無法幫您除錯。
      在 yihong0618 的 bilingual_book_maker 專案中有範例可下載:
      https://github.com/yihong0618/bilingual_book_maker/tree/main/test_books

      刪除
  3. 使用chatgptapi模式翻譯繁中還是會出現一些簡中

    回覆刪除
    回覆
    1. 您好,
      您可以到 ChatGPT 中試試,同一個問題,多問幾次;會有兩個發現:一是每次的答案不見得一樣,再來是雖然要求用繁中了,還是可能出現簡中。

      刪除
  4. 試了google翻譯,最末頁會有沒翻譯到的,雖然不影響文章內容就是了,在這裡小小提出一下,可能多試幾次就好了?

    回覆刪除
    回覆
    1. 您好,
      用 bilingual-book-maker 原專案的,電子書內容較多時,會漏翻的可能會更多,之前朋友告訴我有這個狀況,在猜測是被 Google 擋下來了,所以在我的 Colab 中「偷天換日」了一下,已經盡量讓它盡量不被擋下來了;只是因為沒有長時間測試,不知道是不是還會有別的問題。

      刪除
  5. 你好,在colab跑到一半停了,箭頭沒再轉,哪邊可以按繼續往下翻譯,還是只能重頭開始了orz

    回覆刪除
    回覆
    1. 您好,
      在選項那邊,將「 resume_enable」打勾,再按 Play 鈕即可繼續。

      刪除
  6. 您好!

    請問我 翻譯 epub 檔案,會發現他自己停掉,箭頭沒在轉。

    然後我勾選這項,再按 Play 鈕,也沒有反應。

    "是否啟用中斷後繼續執行 (注意: 有中斷過才能勾選) resume_enable"

    看左邊的檔案區,發現我之前上船要翻譯的檔案,已經消失,只好重新上傳,重頭開始翻譯。

    請問會是 colab 有時間的限制嗎?比方他自己 24 小時要清理檔案,重啟嗎?

    回覆刪除
    回覆
    1. 您好,
      Colab 免費版如果程序持續執行,最多只能12小時;另外,如果離開執行的頁面太久,程序也會被迫強制中斷。
      如果不是上述原因被中斷或是自己將頁面關掉,照說左側欄的暫存檔案區的檔案是不會消失;也就是說,如果您左側檔案區的檔案都還在,resume_enable 勾選就可以接續中斷的地方續續,反之則會是從頭來過。
      建議內容很多的電子書可能要分切多個檔案,不然就是得用自己的電腦安裝程式,在本機上執行,而不是用 Colab 這個。其實我自己是沒在用,是弄給不會安裝的朋友用的,因此使用上會有一些限制。

      刪除
    2. 您好

      感謝您的熱心,讓程式小白的我,都可以使用這功能。因為我連安裝 Python 都會有問題。

      目前我已經在分割電子書了。感謝您的建議。

      刪除
  7. 您好!

    因為我需要翻譯的文章只需要一段落一段落地翻譯,不需要分成數行、不需要排版。

    之前的 0321 版本,可以在 "以下為指令輸出訊息" "show code" 地方複製出一段一段地翻譯。

    目前的 0411 版本,就都會自動排版、自動分行。雖然有勾選了 single_translate 的參數,只輸出譯文,不輸出原文,可是自動分行好像比沒有分行通順、容易讀。

    請問可以維持原來整段輸出的設定嗎?

    因為害怕翻譯到一半,然後停掉,連 resume_enable, 重按 play 都不行,所以只好自己每隔一段時間 copy "show code"

    回覆刪除
    回覆
    1. 您好,
      現在除了用 Google 翻譯的部份是用了我改的,其餘的程式碼都是用原始專案的,最近都沒長時間測試,其實我都沒有注意到它有什麼差異。

      刪除
  8. 你好

    用google翻譯時出現以下訊息

    'Translator' object has no attribute 'raise_Exception'
    you can resume it next time

    問了chatgpt好像是沒定義到

    主要原因:我翻譯的數字顯示是5751,實際到4325就停掉,試了好幾次也沒辦法完成,

    所以想問是有字數限制嗎,還是可以增加指令改善,麻煩了,謝謝

    回覆刪除
    回覆
    1. 您好,
      字數限制是一定有的,我幫您去查了一下,在專案中有講到「gpt3.5 limits the total_token to 4090」,雖然 tooken 不是我們所謂的字數,但也相去不遠。專案的網址如下:
      https://github.com/yihong0618/bilingual_book_maker

      不過要聲明一下,個人並不是開發者,我也沒在用的,不過是好玩,玩一下而已。平常有需要都是直接用 Google 翻譯的 ^_^

      刪除
  9. 想詢問一下這有辦法自動翻譯好後自動下載epub嗎?目前常常因為放著讓它翻譯,回來的時候就因為連線問題,左邊的檔案都不見了。

    回覆刪除
    回覆
    1. 您好,
      設定中有在「完成後」自動下載的選項;但是依您的描述看來,它並沒有完成。依個人之前的測試經驗來說,如果想要利用 Colab 上的這個應用,建議您可能得將內容分成多個檔案,讓它內容少一點,分次完成;不然要長時間等待的條件下,失敗的機率滿高的,畢竟用 Colab 的環境是比較屬於實驗性質的。

      刪除
    2. 剛剛想到一招,或許您可以試試:
      在左側欄檔案展開後,其中有一個小圖示是可以連雲端硬碟的,連好雲端硬碟;將要翻譯的電子書放到雲端硬碟中(建議可以建立專用的資料夾,日後比較好管理),然後讓程式去翻譯雲端硬碟中的檔案。
      原理是因為 BilingualBookMaker 之所以能接續中斷的檔案,是因為它在和要翻譯的檔案同一個目錄中,建立了一個檔名為 「 .電子書檔名.temp.bin 」 的記錄檔;如果檔案是放在雲端硬碟中,應該就不致因為斷線而全部消失不見。
      不過,以上是突發奇想而已,沒有實測過,提供給您參考。

      刪除
  10. 您好,不知道您有沒有機會錄製一集要怎麼安裝到自己電腦的方法? 這樣就不需要使用colab的方式了。

    回覆刪除
    回覆
    1. 您好,
      給您一些關鍵字:

      Anaconda 介紹 安裝 使用
      Anaconda python pip install

      搞定後,剩下的在專案的頁面中都有:

      https://github.com/yihong0618/bilingual_book_maker

      Python 的安裝與基本使用在網路上很多的,個人對不熟的東西,基本上只會自己玩玩而已,哈哈哈~ 怎敢亂教人家,這是個人的基本原則,還望見諒。

      刪除
  11. 您好,首先感謝你分享這個專案,讓我不會程式語言的人也能方便使用。

    請問是否可以設計成針對PDF檔進行直接翻譯?。

    或者有沒有PDF轉EPUB且排版不會亂掉的推薦工具?

    回覆刪除
    回覆
    1. 您好,
      這個算是應用別人設計的「bilingual_book_maker」專案,個人並非該專案的開發者,所以如果「bilingual_book_maker」有支援 PDF 的話,才有可能直接翻譯 PDF。
      至於您問到 PDF 轉 EPUB 格式不會亂掉的工具,個人並沒研究,建議您就用那幾個關鍵字網路搜尋看看。

      刪除
    2. 你好,感謝你的回覆。
      最近我找到一個專案是可以把PDF用ChatGPT直接翻譯。
      https://github.com/Raychanan/ChatGPT-for-Translation

      但我不懂程式語言,所以想請您了解一下可不可以弄成跟你這個專案一樣把英中文都列出,然後簡化處理成一鍵輸出?
      感謝。

      刪除
    3. 您好,
      建議您到該專案的頁面,然後仔細地看一遍專案的說明,應該可以找到您要的東西哦!
      順便提一下,個人並不需要了解它能不能弄得出來呀~我根本用不著 XD

      刪除
  12. 感謝回覆,不好意思,我的意思表達語法錯誤。我是想請你幫我了解一下,他的設定要如何才能像你提供的這樣,因為我看不太懂他的用法。

    回覆刪除
  13. 太強大了,謝大大。原本專案裡有的"譯詞表"功能,可以添加上嗎?

    回覆刪除
  14. 您好,請問翻譯後的epub檔放到kobo上面好像中文字會出現不了,您有遇到此問題,以及該如何解決嗎?

    回覆刪除
    回覆
    1. 您好,
      抱歉!個人並沒有 Kobo,所以不知道會不會有問題。或是您可以試著先用別的 epub reader 程式先確認有沒有翻成功,再考慮用什麼工具檢查、修復 epub 中的語法。

      刪除
  15. 您好,您分享的修改版本非常好用。因為GPT3的TOKEN有上限,我申請了GPT4的API。網路查詢到bbook-maker 可以支援GPT4,但我不知道如何修改專案才能選擇GPT4,希望下一次更新時可以加上GPT4的選項


    回覆刪除
    回覆
    1. 您好,剛剛在 model 中新增了 gpt4,索性將該欄位設定為可以自行輸入了,以後原專案再有更新,就可以自行輸入名稱。不過,個人完全沒在用,API 也都到期沒得測試,可能要您自己玩了。

      刪除

 
雄::gsyan © 2009. Design by Pocket