身為碼農,避免不了需要看一些大部頭的英文圖書。對於我這種英文“二把刀”,努努力倒是能看懂。但時間就是金錢,看英文圖書的主要目的還是用最小的代價(主要是時間成本),學到最多最新的知識。所以很多英文圖書,我也不想摳得太細,領會精神就好了。
這兩年google翻譯有了很大的進步,雖然翻譯的結果跟人工翻譯還是差了不少,但如果只想快速瀏覽知識本身,直接看google翻譯的結果倒也湊合(有二義性的還是需要看原文的)。
於是想到了一個“半自動化”的圖書翻譯方法。
我要看的英文圖書是PDF格式的,首先需要抽取其中的英文文本。
第一步:抽取PDF文本
1)在ubuntu下安裝pdf轉換工具:
<code>apt-get install -y poppler-utils/<code>
2)抽取英文文本的命令:
<code>pdftotext <your>.pdf -x 0 -W 1000 -y 80 -H 520 -nopgbrk -f <first> -l <last> <output>.txt/<output>/<last>/<first>/<your>/<code>
其中<your>是英文圖書的文件名;<output>是要輸出的文本文件名;<first>和<last>是需要抽取的起始頁和結束頁號,之所以指定頁號區域,是因為google翻譯是有長度限制的,所以我們提供的原始內容也不能太多,一兩頁就好了。/<last>/<first>/<output>/<your>
這裡的-x, -y是要抽取英文區域距離左上角的座標的x,y值,-W, -H表示文本區域的寬和高;之所以設置x,y,W,H,是想把頁眉頁腳部分去掉,否則頁眉頁腳穿插在正文之中,影響閱讀。這裡x,y,W,H的值需要根據PDF文件的佈局來調整。
pdftotext命令的詳細說明,請參閱:
<code>man pdftotext/<code>
第二步:手動排版英文內容
這一步就是對照PDF原版,排版純文本英文內容。例如,第一步抽取出來的文本一般斷句是不對的,需要根據原文,重新合併和拆分句子。
第三步:調用google翻譯
1)安裝python環境
<code>apt-get install -y python3-pip/<code>
2) 安裝googletrans庫
<code>pip3 install googletrans/<code>
3) 編寫腳本trans.py
<code>#!/usr/bin/env python3
import googletrans
from googletrans import Translator
translator = Translator(service_urls=['translate.google.cn'])
file=open('output.txt','r')
origin=file.read()
result = translator.translate(origin, class="lazy" src="//p2.ttnews.xyz/loading.gif" data-original='en', dest='zh-cn')
print(result.text)/<code>
簡單解釋一下:
service_urls是服務器url列表,國內訪問translate.google.cn就行(不用額外的科學上網技術);src是'en',dest是'zh-cn',就是英譯漢;翻譯結果在result.text中,這裡簡單地將結果輸出到了屏幕,您也可以存入指定的文件。
當然,上述方法只是初步翻譯,您可以將翻譯的結果合併整理成一本簡單的圖書,如果有精力的話,再做幾遍人工校驗,降低二義性,實現“信達雅”。
凡是重複的勞動都應該用計算機來做。其實也沒那麼容易了。但如果付出20%的勞動能換來80%的成果,做一下也值得。
英文大牛見笑了。每個人的基礎不一樣,想盡辦法去努力的人值得“尊敬”。
閱讀更多 碼農飛哥 的文章