2015-05-14 177 views
9

我想在我的項目中使用谷歌翻譯。我完成了與Google的所有手續。我也有API密鑰。有了這個鍵,我可以輕鬆地用JavaScript翻譯任何單詞。但是,如何翻譯PDF文件,就像我們在Google翻譯網站上所做的那樣?我發現一件事情是這樣的:使用谷歌翻譯API翻譯PDF文件

http://translate.google.com/translate?hl=fr&sl=auto&tl=en&u=http://www.example.com/PDF.pdf

但在這裏我不能用我的鑰匙,因此它需要這麼多的時間來翻譯。所以我想使用我的密鑰並翻譯PDF文件。請幫助我。 我的做法是這樣的:

1. One html page I have. 
2. One browse button for pdf 
3. Upload the file 
4. Transalte the pdf with Google API and show in the html page. 

我搜索它這個PDF文件使用轉換,但沒有發現任何東西。請幫助我。

回答

4

TL:DR:使用無頭瀏覽器從Google PDF翻譯服務呈現PDF。

PDF是一種複雜的格式,可以包含很多文本組件。爲了翻譯它,我將描述從簡單到更高級的解決方案。

翻譯原始文本

如果你只需要轉換,而無需視覺輸出,可以提取文本,並把它交給谷歌翻譯。

既然你沒有提供您的項目(語言,環境,...)我會重定向到這個thread on how to extract text

翻譯的所有文字

如果你需要從一切文字信息的PDF,這很難。爲了避免頭痛(部分),您可以將PDF轉換爲圖像(使用imagemagick工具或類似的),然後你有三種選擇:

  • OCR從圖像中的文本,然後把它給谷歌,你又是失去原來的形式。
  • OCR文本,但保存位置(一些圖書館可以做到這一點,又因爲你沒有指定你的項目信息,請參閱論文鏈接:#1#2#3#4)。

    然後用google api翻譯它,並將結果寫入圖像。爲了獲得最佳效果,您需要考慮文本字體,顏色和背景顏色。相當困難,但可行。

  • 使用google translate image service轉換圖像。不幸的是,這個功能在公共API中不可用,所以除非做一些逆向工程,否則這是不可能的。

翻譯使用谷歌的PDF翻譯服務

您使用翻譯網站可以很容易地實現自動化提供瞭解決方案。這很長的原因是因爲它是一個沉重的過程,你可能不會擊敗谷歌。

使用無頭瀏覽器,您可以使用pdf獲取翻譯頁面,然後觀察翻譯的內容是否位於iframe中,獲取該iframe並最終打印爲PDF。

下面是使用SlimerJS一個簡單的例子(應爲Phantomjs兼容)

var page = require("webpage").create(); 

// here you may want to setup page size and options  

// get the page 
page.open('https://translate.google.fr/translate?hl=fr&sl=en&u=http://example.com/pdf-sample.pdf', function(status) { 
    if (status !== 'success') { 
     console.log('Unable to access network'); 
    } else { 
     // find the iframe with querySelector 
     var iframe_src = page.evaluate(function() { 
      return document.querySelector('#contentframe').querySelector('iframe').src; 
     }); 

     console.log('Found iframe: ' + iframe_src); 

     // render the iframe 
     page.open(iframe_src, function(status) { 
      // wait a bit for javascript to translate 
      // this can be optimized to be triggered in javascript when translation is done 
      setTimeout(function() { 
       // print the page into PDF 
       page.render('/tmp/test.pdf', { format: 'pdf' }); 

       phantom.exit(0); 
      }, 2000); 

     }); 
    } 
}); 

給予這個文件:http://www.cbu.edu.zm/downloads/pdf-sample.pdf
它產生這樣的結果(翻譯成法語):(我貼出截圖,因爲我不能嵌入PDF;)) Pdf result

+0

這一次似乎是有趣的'使用谷歌的翻譯PDF但service'又是我的文件大小周圍的1Mb谷歌表示,限制超過:( 另外我有話和PPT文檔以及.. – Adeel

+0

嗯,這是真的翻譯一個小問題...你可以用[Imagemagick](http://www.imagemagick.org/script/index.php)'convert x.pdf x-%03d.pdf'將你的pdf分成更小的部分 – Cyrbil

0

使用Apache Tika提取PDF文件的文本內容(您應該編寫必要的Java代碼),然後使用任何您想要用來翻譯它的API。但是,正如上面提到的,Google Translate是一項付費服務​​。