2015-05-14 17 views
9

Voglio utilizzare Google Traduttore nel mio progetto. Ho completato tutte le formalità con Google. Ho anche la chiave API con me. Con questa chiave posso facilmente tradurre qualsiasi parola con JavaScript. Ma come tradurre il file PDF come possiamo fare nel sito di Google Traduttore? Ho trovato una cosa come questa:Traduci file PDF utilizzando l'API di Google Translate

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

Ma qui non posso usare la mia chiave, di conseguenza ci vuole così tanto tempo per tradurre. Quindi voglio usare la mia chiave e tradurre un file PDF. Per favore aiutatemi. Il mio approccio è simile a questo:

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. 

ho cercato per questo pdf tradurre con, ma non ha trovato nulla. Per favore aiutatemi.

risposta

4

TL: DR: utilizzare il browser headless per eseguire il rendering di un PDF dal servizio di traduzione PDF di Google.

PDF è un formato complesso e può includere molti componenti che sono testo. Per tradurlo descriverò una soluzione da facile a più avanzata.

tradurre il testo grezzo

Se avete solo bisogno della traduzione senza l'output visivo, è possibile estrarre il testo e dare a Google Translate.

Dal momento che non ha fornito informazioni sul progetto (lingua, ambiente, ...) Io favore usare questo thread on how to extract text

Traduci tutto il testo

Se avete bisogno di ottenere il testo da tutto nella vostra PDF, beh, è ​​piuttosto difficile. Per evitare mal di testa (in parte) è possibile convertire il PDF in un'immagine (utilizzando imagemagick strumenti o simili) e poi avete tre opzioni:

  • OCR il testo dall'immagine, poi dare a Google, ancora una volta si è perdere la forma originale.
  • OCR il testo, ma salvando la posizione (alcune librerie possono farlo, ancora una volta dal momento che non ha specificato le informazioni del progetto, vedi link tesi: #1, #2, #3, #4).

    Quindi traducilo con google api e scrivi il risultato nell'immagine. Per ottenere ottimi risultati è necessario tenere conto del carattere del testo, del colore e del colore di sfondo. Piuttosto difficile, ma fattibile.

  • Traduci l'immagine utilizzando google translate image service. Sfortunatamente questa funzione non è disponibile nell'API pubblica, quindi, a meno di fare qualche reverse engineering, questo non è possibile.

Traduci utilizzando il servizio di traduzione di Google PDF

La soluzione che fornisci utilizzando il sito tradurre può essere automatizzato abbastanza facilmente. Il motivo per cui è lungo è perché è un pesante processo e probabilmente non batterà Google.

Utilizzando un browser headless, è possibile ottenere la pagina di traduzione con il pdf, quindi osservare che il contenuto tradotto è seduto in un iframe, ottenere iframe e infine stampare in PDF.

Ecco un breve esempio utilizzando SlimerJS (dovrebbe essere compatibile per 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); 

     }); 
    } 
}); 

Dare questo file: http://www.cbu.edu.zm/downloads/pdf-sample.pdf
Produce questo risultato (tradotto in francese): (ho postato uno screenshot dal momento che non posso incorporare PDF;)) Pdf result

+0

questa sembra essere interessante 'Tradurre utilizzando service' traduzione PDF di Google, ma ancora una volta la mia dimensione del file in circa 1Mb Google dice limite superato :( Anche io ho i documenti di Word e ppt come pure .. – Adeel

+0

Beh, questo è davvero un piccolo problema ... Puoi dividere il pdf in una parte più piccola con [Imagemagick] (http://www.imagemagick.org/script/index.php) 'convert x.pdf x-% 03d.pdf' – Cyrbil

0

Utilizzare Apache Tika per estrarre il contenuto del testo del file pdf (è necessario scrivere il codice java necessario), quindi utilizzare qualsiasi API che si desidera utilizzare per tradurlo. Ma, come è stato menzionato sopra, Google Translate è un servizio a pagamento.