安装PyPDF2模块、申请百度翻译api。其中模块安装大家可以根据情况,因为很多模块我之前安装过,比如requests,所以现在都是直接用的,如果你在使用的过程中,缺少了摸个模块,你可以自己进行安装。
百度翻译api申请,你可以进入百度翻译开放平台进行注册申请,然后在开发者信息里面找到你的Appid以及秘钥。
这个秘钥后来进行翻译的时候回用的到。
这个工作使用PyPDF2就可以搞定,主要使用的extractText函数进行pdf的文字抽取,具体代码如下:
from PyPDF2.pdf import PdfFileReader, PdfFileWriter, ContentStream
## 处理pdf
def getDataUsingPyPdf(filename):
pdf = PdfFileReader(open(filename, "rb"))
content = ""
num = pdf.getNumPages()
for i in range(0, num):
extractedText = pdf.getPage(i).extractText()
content += extractedText + "\n"
return content
其中filename就是你待处理pdf的位置,最终这个函数的返回值就是整个pdf的全文。
百度翻译提供了接口供使用,你只需要把你的appid和秘钥拿到,然后传入正确的json串,百度翻译这个接口就会返回一个json串,你对这个json串进行分析就ok了。代码如下:
import requests
import string
import time
import hashlib
import json
#init
api_url = "http://api.fanyi.baidu.com/api/trans/vip/translate"
my_appid = "你的Id"
cyber = "你的秘钥"
def translate(word):
#init salt and final_sign
salt = str(time.time())[:10]
final_sign = str(my_appid)+word+salt+cyber
final_sign = hashlib.md5(final_sign.encode("utf-8")).hexdigest()
#其中form和to可以区别en,zh构造请求参数
paramas = {
'q':word,
'from':'en',
'to':'zh',
'appid':'%s'%my_appid,
'salt':'%s'%salt,
'sign':'%s'%final_sign
}
my_url = api_url+'?appid='+str(my_appid)+'&q='+word+'&from='+'zh'+'&to='+'en'+'&salt='+salt+'&sign='+final_sign
response = requests.get(api_url,params = paramas).content
content = str(response,encoding = "utf-8")
json_reads = json.loads(content)
return json_reads['trans_result'][0]['dst']+" "
这个函数功能就是传入一个英文字符串,然后返回一句中文。
content = getDataUsingPyPdf("08095313.pdf")
clist = content.split(".")
i=0
while(i
其中我按照 . 把英文文章进行了分句,这样就可以用百度翻译函数进行单句的翻译。在翻译的过程中我也进行了replace(“\n”,” “),这样主要目的是有时候你的句子可能由于pdf转换,一句话被回车给隔开了,导致翻译的时候不准确。你也可以自己进行很多自定义处理,比如在读pdf的时候,把句子处理一下,都是可以的。我本次测试了效果还ok。下面贴出部分原文以及翻译后。
原文:
翻译后:
使用迅捷pdf翻译:
本次处理的结果是在控制台输出的,你可以重定向到txt,甚至写到pdf中。
参考:
百度翻译api调用
pdf处理