使用 Google Translate API 翻译 PDF 文件

Posted

技术标签:

【中文标题】使用 Google Translate API 翻译 PDF 文件【英文标题】:Translate PDF file using Google Translate API 【发布时间】:2015-07-25 14:28:57 【问题描述】:

我想在我的项目中使用谷歌翻译。我与谷歌完成了所有手续。我也有 API 密钥。有了这个键,我可以很容易地用 javascript 翻译任何单词。但是如何像在谷歌翻译网站中那样翻译 PDF 文件呢?我发现了一件事是这样的:

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

但是在这里我不能使用我的密钥,因此翻译需要很长时间。所以我想用我的 Key 翻译一个 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 翻译,但没有找到任何东西。请帮帮我。

【问题讨论】:

【参考方案1】:

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

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

翻译原始文本

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

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

翻译所有文本

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

OCR 图像中的文本,然后将其提供给 google,您再次丢失了原始表单。

OCR 文本,但保存位置(有些库可以这样做,因为您没有指定项目信息,请参阅这些链接:#1、#2、#3、#4)。

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

使用google translate image service 翻译图像。不幸的是,该功能在公共 API 中不可用,因此除非进行一些逆向工程,否则这是不可能的。

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

您使用翻译网站提供的解决方案可以很容易地实现自动化。它之所以长的原因是因为它是一个繁重的过程,而且您可能无法击败 Google。

使用无头浏览器,您可以获取带有 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;))

【讨论】:

这个似乎很有趣Translate using Google's PDF translation service,但我的文件大小在 1Mb 左右,谷歌又说限制超出了:(我也有 word 和 ppt 文档.. 嗯,这确实是一个小问题...您可以使用Imagemagick convert x.pdf x-%03d.pdf 将您的pdf 拆分成更小的部分 您好,谷歌翻译服务是否保留格式和图像?【参考方案2】:

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

【讨论】:

以上是关于使用 Google Translate API 翻译 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

可以免费访问google translate api吗? [关闭]

这可以在android中使用google translate api吗?

Python Google Translate API

如何使用 Google Translate-API 翻译 JS 中的整个页面文本内容

python google_api_translate.py

从 Google Translate API 获取多种变体