用Python給我家寶寶寫個翻譯doc文件軟體

王平發表於2019-01-25

前些天寶寶過生日,她卻不在家,留我一個人在家孤獨寂寞冷。哈哈哈,沒有寶寶的騷擾就可以安靜的寫程式了。寫什麼程式呢?

python software

別人家的寶寶過生日,無非是鮮花、包包和紅包什麼的,可我是程式設計師誒,怎麼可以這麼俗套呢?那就寫個小軟體給寶寶用,給她減輕一點做事情的辛苦,每天都能貼心的呵護她。

寶寶經常接觸一些英文資料,免不了要進行翻譯。而今,翻譯這個活兒人工智慧已經可以幹個七七八八了,再輔助以人工校對就可以高質量的完成翻譯工作。

於是,決定幫寶寶做人工智慧翻譯的活兒。藉助谷歌翻譯這個人工智慧翻譯機器來實現。我負責“人工”,寶寶負責“智慧”。我把文字Ctrl+C、Ctrl+V到谷歌翻譯,再Ctrl+C、Ctrl+V到Word,編輯好後給寶寶用她的智慧去校對。

我可是程式設計師誒,怎麼能做Ctrl+C、Ctrl+V的苦力活兒呢?那就用Python寫個小軟體來替我做苦力吧。說幹就幹!

一、翻譯軟體需求分析

輸入為word文件(.docx),選擇文件語言和翻譯目標語言。
輸出仍為word文件(
.docx),以段落為單位,中英文對照,方便寶寶校對。如下圖所示:

機器翻譯

二、翻譯軟體設計實現

(1)人工智慧翻譯
基本上搜尋引擎都提供了機器翻譯的功能,國內的百度、搜狗、騰訊、有道等等,國外的谷歌等。除了網頁版,還提供了API供開發者使用,但是API基本上都是收費的。所以還是用網頁版的免費功能吧。這麼多家到底哪家翻譯技術強呢?肯定不是藍翔。個人比較喜歡谷歌的,那就選Google的吧。正好谷歌中國的翻譯功能訪問起來是通暢的:
https://translate.google.cn/
方便的是,基於網頁版的Google翻譯已經有人做成了Python庫:
googletrans
就是它了。

(2)人機介面
現在的軟體都流行雲服務,即處理運算都在伺服器上,使用者只需要瀏覽器開啟一個網頁操作,就是所謂的B/S架構。這樣的好處是,軟體修改升級都很方便。

然而,谷歌翻譯的使用有頻率限制,後面軟體開源了,大家都通過我的伺服器進行谷歌翻譯,我的伺服器很容易比谷歌伺服器封殺。所以決定寫成一個純粹的PC版軟體,使用者的電腦直接訪問翻譯伺服器。

Python寫圖形化介面(GUI)的庫也有好幾個,比較有名的是wxpython和pyqt。我對Qt早有耳聞,而且它在圖形化介面領域地位很高,決定選擇pyqt來寫軟體的圖形化介面。

進一步瞭解,原來pyqt不是Qt官方寫的,而是一個叫Riverbank Computing 的公司對C++編寫的Qt的Python繫結,並且基於GPL協議釋出的。GPL具有傳染性,不是特別喜歡它。正好發現,Qt官方自己按照PyQt的介面自己寫了一套Python繫結,起名為PySide,並以LGPL協議釋出,這個協議友好多了。最新的PySide基於Qt 5,並起名PySide2,就選它了(哎,這是個坑啊,後面詳解)。

但是我對Qt寫介面完全不熟啊。不過我是誰啊,我可是程式設計師誒,這難不倒我。找來PySide2自帶的example,從裡面找個跟我需要類似的。我需要選擇框(選語言用)、檔案選擇器(選要翻譯的文件用)這兩個。發現有個 findfiles.py 有點類似。就從它開始改…… 邊學邊改……. 終於成型了:

自動翻譯UI介面

(3)功能實現
邊學邊寫介面耗時很長,剩下的就簡單多了。讀取docx用python-docx庫,翻譯用前面說的googletrans,一氣呵成。最後,把提示語言寫到介面的文字區域時遇到點問題,還是Qt不熟悉造成的,繼續學習,其實就是Qt的訊號傳遞。大功告成,測試一下:

機器翻譯結果

三、翻譯軟體釋出

軟體寫好了,要交給寶寶使用。但是我沒有信心教會寶寶從原始碼執行這個程式。畢竟是寶寶嘛,能雙擊執行就可以啦。

於是用pyinstaller打包這個軟體。一條命令完成,非常easy,生成一個可以單獨執行的exe檔案,雙擊執行沒問題。作為老江湖,當然還要拿到其它機器上去測試一下下。納尼?!報錯了!!!把錯誤資訊google一下,搜到的結果不多,而且是PyQt5的,沒有PySide2的資訊。為了這個錯誤,又耗費了幾個小時,這就是坑啊。選擇要慎重啊。

果斷換成PyQt5,因為兩者很相似改起來並不複雜,只是訊號部分的名稱不一樣。換成PyQt5後,一切正常了。不過,作為一個程式設計師並不打算就此放過PySide2,有時間還是要搞定它的pyinstaller釋出的,哼!

後記

這個小軟體雖然小,但涉及的技術棧還不少,完全用Python完成:
Python 3.7:程式語言;
googletrans:谷歌翻譯網頁版介面;
PyQt5/PySide2:圖形化介面庫

小軟體大功能,藉助谷歌人工智慧的強大力量,翻譯質量有保證,幾十種語言之間自由切換相互翻譯,是居家生活、工作學習的必備良器。這麼好的工具,當然不能給我家寶寶獨享。

關注猿人學Python給公眾號回覆:翻譯 就可以獲取這個小軟體的下載連結。若獲取原始碼則回覆:翻譯原始碼

擴充閱讀:
一個python翻譯pdf文件程式

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章