实践项目六:PDF全英论文解析和翻译

来源:互联网 发布:餐厅收银软件 免费 编辑:程序博客网 时间:2024/06/05 05:30

环境

  • 操作系统:ubuntu 16.04
  • python版本: python2

功能

将pdf格式的全英论文解析并翻译为中文,结果保存在txt文件中。

分析

pdf全英论文是没法直接翻译的,需要将pdf格式的转换为其他格式,正巧python有个pdfminer包可以解析pdf文档,同时可以保存为txt格式的,我们只需在保存之前翻译就可以达到效果。
本项目分为两部分:解析pdf 和 翻译。

解析pdf

主要用到PDFMiner:
PDFMiner是一种从PDF文档中提取信息的工具。 与其他与PDF相关的工具不同,它完全侧重于获取和分析文本数据。 PDFMiner允许人们获取页面中文本的确切位置,以及其他信息,如字体或行。 它包括一个PDF转换器,可以将PDF文件转换为其他文本格式(如HTML)。 它具有可扩展的PDF解析器,可以用于文本分析的其他目的。
安装pdfminer :http://jingyan.baidu.com/article/3aed632e0490e570108091aa.html。

翻译

翻译部分在项目五有具体的实现详解,传送门:http://blog.csdn.net/xunalove/article/details/74999761

实现代码

#!/usr/bin/python2#-*- coding:utf-8 -*-import urllib,hashlibimport randomimport requests,sysfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.pdfdocument import PDFDocumentfrom pdfminer.pdfparser import PDFParserfrom pdfminer.pdfpage import PDFPage,PDFTextExtractionNotAllowedfrom pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreterfrom pdfminer.pdfdevice import PDFDevicefrom pdfminer.layout import LAParams,LTTextBoxHorizontalfrom pdfminer.converter import PDFPageAggregatorimport sysreload(sys)sys.setdefaultencoding('utf-8')def getTransText(text): #翻译    q = text    fromLang = 'auto'  #翻译源语言=自动检测    toLang1 = 'auto'    #译文语言 = 自动检测    appid = '20170711000064108'    salt = random.randint(32768, 65536)    secretKey = '0y2JkztWWwGFfgivKz2N' #密钥    #生成sign    sign = appid+q+str(salt)+secretKey    #计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)    m1 = hashlib.md5(sign.encode('utf-8'))    sign = m1.hexdigest()    #计算完整请求    myurl = '/api/trans/vip/translate'    myurl = myurl+'?appid='+appid+'&q='+q+'&from='+fromLang+'&to='+toLang1+'&salt='+str(salt)+'&sign='+sign    url = "http://api.fanyi.baidu.com"+myurl    # 发送请求    url = url.encode('UTF-8')    res = requests.get(url)    #转换为字典类型    res = eval(res.text)    return (res["trans_result"][0]['dst'])def pdf_to_txt():    fp = open("/home/xuna/桌面/python/1.pdf","rb")  #获取文档对象,把路径换成自己的就行,读写打开一个二进制文件    parser = PDFParser(fp) #创建一个与文档相关联的解释器    doc = PDFDocument(parser) #PDF文档对象存储文档结构    if not doc.is_extractable: #检查文件是否允许文本提取        raise PDFTextExtractionNotAllowed    resource = PDFResourceManager(caching=False) #创建PDF资源管理器    laparam = LAParams()    #参数分析器    device = PDFPageAggregator(resource,laparams = laparam) #创建一个聚合器    interpreter = PDFPageInterpreter(resource,device) #创建PDF页面解释器    #循环遍历列表,每次处理一个page内容    for page in PDFPage.create_pages(doc):        interpreter.process_page(page)  #接受该页面的LTPage对象        layout = device.get_result()        #这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象        #一般包括LTTextBox,LTFigure,LTImage,LTTextBoxHorizontal等等        result=""        s=0        for x in layout:            #如果x是文本对象的话            if(isinstance(x,LTTextBoxHorizontal)):                with open('/home/xuna/桌面/python/3.txt','a') as f:                    res1 = x.get_text()                    result+=res1                    result+='\n'                    res1 = res1.replace('\n',' ') #处理换行                    res2 = getTransText(res1).decode('unicode_escape').encode('utf8')                    result+=res2                    result+='\n'                    f.write(result + '\n')        return resultprint (pdf_to_txt())

运行效果

这里写图片描述

遇到的问题:

在解析之后不能立即翻译,里面含有停止词 ‘\n ’ ,用replace()函数将’ \n ’ 替换成‘ ’

阅读全文
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 发型睡觉压乱了怎么办 通宵一夜第二天怎么办 夏天了腿脚还凉怎么办 咖啡色三天了月经还是下不来怎么办 睡觉姿势不对腰疼怎么办 来月经吃了香瓜怎么办 减肥期间晚上有饭局怎么办 减肥期间遇到晚上聚餐怎么办 婴儿脸不向上睡怎么办 睡觉压奶了疼怎么办 堵奶了挤不下来怎么办 孕36周胎儿腿短怎么办 孕晚期胎儿腿短怎么办 孕晚期宝宝腿短怎么办 手劳累过度麻痛怎么办 大人发烧40不退怎么办? 颈椎扯的脑袋疼怎么办 孕妇颈椎痛导致失眠怎么办 做完运动脊椎中间痛怎么办? 阴虛阴虚火旺怎么办 脸一躺下就丑怎么办 身体淤堵的厉害怎么办 怀孕晚期脚肿了怎么办 宝宝感冒咳嗽流鼻涕流泪怎么办 孕晚期睡觉习惯面朝右怎么办 鼻涕一直不停的流怎么办 宝宝一直流清鼻涕怎么办 感冒了眼睛酸胀流泪怎么办 五个月宝宝感冒流鼻涕怎么办 六个月宝宝感冒流鼻涕怎么办 一岁宝宝感冒咳嗽流鼻涕怎么办 七个月宝宝感冒流鼻涕咳嗽怎么办 孩子握笔姿势不正确怎么办 走久了脚底板痛怎么办 不会给宝宝拍嗝怎么办 打了肉毒素淤青怎么办 新生儿一吃母乳就睡觉怎么办 10岁半宝宝缺钾怎么办 宝宝吃不到乳晕怎么办 喂母乳乳头破了怎么办 宝宝吸了乳头痛怎么办