python如何提取英语pdf内容并翻译


Posted in Python onMarch 03, 2020

本文实例为大家分享了python提取英语pdf内容并翻译的具体代码,供大家参考,具体内容如下

前期准备工作:

翻译接口: 调用的是百度翻译的api (注册后,每个月有2百万的免费翻译字符数。)

pdfminer3k: pdfminer3k是pdfminer的Python 3端口。 PDFMiner是一种从PDF文档中提取信息的工具。 与其他PDF相关工具不同,它完全专注于获取和分析文本数据。 PDFMiner允许获取页面中文本的确切位置,以及字体或线条等其他信息。 它包括一个PDF转换器,可以将PDF文件转换为其他文本格式(如HTML)。 它有一个可扩展的PDF解析器,可用于其他目的而不是文本分析。

要解析PDF至少需要两个类:PDFParser PDFDocument,PDFParser 从文件中提取数据,PDFDocument保存数据。另外还需要PDFPageInterpreter去处理页面内容,PDFDevice将其转换为我们所需要的。PDFResourceManager用于保存共享内容例如字体或图片。

安装:pip install pdfminer3k

前期工作准备好后,即可开始代码编写。

# -*- coding: utf-8 -*-
import sys
import io

"""
Created on Sun Mar 3 12:22:49 2019

@author: Ben
"""

import importlib
importlib.reload(sys)

from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

#from PyPDF2.pdf import PdfFileReader, PdfFileWriter, ContentStream


import requests
import string
import time
import hashlib
import json


##初始化

api_url = "http://api.fanyi.baidu.com/api/trans/vip/translate"
api_id = "" ##申请的百度翻译接口的id
cyber = "" ##申请的百度翻译接口的password

pdffile = "multinet.pdf" ##处理的pdf
ENtextfile = "ENmultinet.txt" ##存储提取的txt
CNtextfile = "CNmultinet.txt" ##存储翻译的结果
isTranslate = False ##是否将提取的英文翻译为中文
## 处理PDF
## 读取PDF的内容 filename是待处理的PDF的名字

###使用PDFminer读取
def getDataUsingPyPDF(filename):
 parser = PDFParser(open(pdffile,'rb')) #以二进制打开文件 ,并创建一个pdf文档分析器
 doc = PDFDocument() ##创建一个pdf文档
 #将文档对象和连接分析器连接起来
 parser.set_document(doc) 
 doc.set_parser(parser)
 doc.initialize()
 
 
 #判断该pdf是否支持txt转换
 
 if doc.is_extractable:
 #创建一个PDF设备对象
 rsrcmgr = PDFResourceManager()
 #创建一个pdf设备对象
 laparamas = LAParams()
 device = PDFPageAggregator(rsrcmgr, laparams=laparamas)
 #创建一个PDF解释器对象
 interpreter = PDFPageInterpreter(rsrcmgr, device)
 contents = "" #保存读取的text
 
 #依次读取每个page的内容
 
 for page in doc.get_pages():
 interpreter.process_page(page)
 layout = device.get_result() # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,
 #在windows下,新文件的默认编码是gbk编码,所以我们在写入文件的时候需要设置一个编码格式,如下:
 for x in layout:
 if(isinstance(x,LTTextBoxHorizontal)):
  results = x.get_text()
  results = results.replace("\n","") #去掉换行符 因为排版问题 有的换行导致句子中断
  contents += (results)
 ##为了看着舒服,每一句为一行
 saveText(contents.replace(".",".\n"),ENtextfile)
 return contents
## 将读取的content以txt格式存放到本地
def saveText(content,Textfile):
 with open(Textfile,"w",encoding='utf-8') as f:
 f.write(content)


## 翻译从pdf提取的content
def translate(content):
 salt = str(time.time())[:10]
 final_sign = str(api_id) + content + salt+ cyber
 final_sign = hashlib.md5(final_sign.encode("utf-8")).hexdigest()
 # from to 代表翻译的语言 
 paramas = {
 'q':content,
 'from':'en',
 'to':'zh',
 'appid':'%s'%api_id,
 'salt':'%s'%salt,
 'sign':'%s'%final_sign 
 }
 my_url = api_url+'?appid='+str(api_id)+'&q='+content+'&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(pdffile)
print("读取pdf成功,将其保存为txt格式")

if(isTranslate):
 clist = content.split(".") #split() 通过指定.将英文分成多个句子
 i = 0
 chinese = ""
 print("一共有"+str(clist.__len__())+"行需要翻译")
 print("开始翻译...请耐心等待")

 while(i<clist.__len__()):
 chinese += (translate(clist[i]).replace("\n","。"))
 #chinese += '\n'
 i+=1
 saveText(chinese,CNtextfile)
 print("翻译结束,ok")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现12306火车票查询器
Apr 20 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
Python实战购物车项目的实现参考
Feb 20 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
django实现后台显示媒体文件
Apr 07 Python
python判断正负数方式
Jun 03 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 #Python
python生成大写32位uuid代码
Mar 03 #Python
python str字符串转uuid实例
Mar 03 #Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 #Python
python生成并处理uuid的实现方式
Mar 03 #Python
python实现在线翻译功能
Mar 03 #Python
Python configparser模块配置文件过程解析
Mar 03 #Python
You might like
PHP url 加密解密函数代码
2011/08/26 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
Javascript无阻塞加载具体方式
2013/06/28 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
python基于右递归解决八皇后问题的方法
2015/05/25 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
服务之星事迹材料
2014/05/03 职场文书
求职信标题怎么写
2014/05/26 职场文书
创先争优公开承诺书
2014/08/30 职场文书
年会邀请函范文
2015/01/30 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
电力安全学习心得体会
2016/01/18 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS