使用Google Translate API翻译PDF文件

时间:2015-05-14 04:49:16

标签: file pdf translate

我想在我的项目中使用Google翻译。我完成了与谷歌的所有手续。我也有API密钥。使用此键,我可以轻松地使用JavaScript翻译任何单词。但是,如何在Google翻译网站中翻译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翻译,但没有找到任何东西。请帮帮我。

2 个答案:

答案 0 :(得分:5)

TL:DR :使用无头浏览器从Google的PDF翻译服务中呈现PDF。

PDF是一种复杂的格式,可以包含许多文本组件。为了翻译它,我将描述从简单到更高级的解决方案。

翻译原始文本

如果您只需要没有视觉输出的翻译,则可以提取文本并将其提供给Google翻译。

由于您未提供有关项目的信息(语言,环境......),我会将您重定向到此thread on how to extract text

翻译所有文本

如果您需要从PDF中的所有内容中获取文本,那就非常困难。为了避免头痛(部分),您可以将PDF转换为图像(使用imagemagick工具或类似工具),然后您有三个选项:

  • 从图像中删除文本,然后将其发送到谷歌,再次丢失原始表单。
  • OCR文本,但保存位置(一些图书馆可以这样做,因为您没有指定项目信息,请参阅这些链接:#1#2,{{3 },#3)。

    然后用google api翻译它,并将结果写入图像。为获得出色的效果,您需要考虑文本字体,颜色和背景颜色。很难但很可行。

  • 使用#4翻译图像。遗憾的是,此功能在公共API中不可用,因此除非进行一些逆向工程,否则这是不可能的。

使用Google的PDF翻译服务进行翻译

您使用翻译网站提供的解决方案可以非常轻松地自动化。它很长的原因是因为它是一个过程,你可能不会击败谷歌。

使用无头浏览器,您可以使用pdf获取翻译页面,然后观察翻译后的内容是否位于iframe中,获取iframe并最终打印为PDF。

以下是使用google translate image service的简短示例(应与SlimerJS兼容)

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);

        });
    }
});

提供此文件:Phantomjs
它产生了这个结果(翻译成法语):(我发布了截图,因为我无法嵌入PDF;)) http://www.cbu.edu.zm/downloads/pdf-sample.pdf

答案 1 :(得分:0)

使用Apache Tika提取pdf文件的文本内容(您应该编写必要的java代码),然后使用您想要用来翻译它的任何API。但是,正如上面提到的,谷歌翻译是一项付费服务​​。