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

本文实例为大家分享了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")

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

(0)

相关推荐

  • 使用Python从有道词典网页获取单词翻译

    从有道词典网页获取某单词的中文解释. import re import urllib word=raw_input('input a word\n') url='http://dict.youdao.com/search?q=%s'%word content=urllib.urlopen(url) pattern=re.compile("</h2.*?</ul>",re.DOTALL) result=pattern.search(content.read()).gro

  • 用python实现百度翻译的示例代码

    用python实现百度翻译,分享给大家,具体如下: 首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码: 我们可以轻松的找到百度翻译的请求接口为:http://fanyi.baidu.com/sug 然后我们可以从方法为POST的请求中找到参数为:kw:job(job是输入翻译的内容) 下面是代码部分: from urllib import req

  • python使用百度翻译进行中翻英示例

    利用百度词典进行中翻英 复制代码 代码如下: import urllib2import reimport sys reload(sys)sys.setdefaultencoding('utf-8')def tran(word):    url='http://dict.baidu.com/s?wd={0}&tn=dict'.format(word)    print url    req=urllib2.Request(url)    resp=urllib2.urlopen(req)    r

  • python自动翻译实现方法

    本文实例讲述了python自动翻译实现方法.分享给大家供大家参考,具体如下: 以前学过python的基础,一般也没用过.后来有一个参数表需要中英文.想了一下,还是用python做吧.调用的百度翻译接口,经历了乱码.模块不全等问题.一般google,一边做的.分享一下. #encoding=utf-8 ## eagle_91@sina.com ## created 2014-07-22 import urllib import urllib2 import MySQLdb import json

  • python实现从pdf文件中提取文本,并自动翻译的方法

    针对Python 3.5.2 测试 首先安装两个包: $ pip install googletrans $ pip install pdfminer3k googletrans会提供一个命令translate,这个命令会调用google translate api执行自动翻译: pdfminer3k会提供一个工具脚本pdf2txt.py: $ pdf2txt.py xxx.pdf 从stackoverflow搜索到可以去除页眉和页脚的命令(强烈推荐): 使用Ubuntu提供的pdftotext

  • python在命令行下使用google翻译(带语音)

    说明 1. 使用google翻译服务获得翻译和语音;2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到mplayer程序,如果没有mplayer,请将use_tts设置为False运行.即:main(use_tts=False)3. 退出程序,输入"x",回车. 复制代码 代码如下: #! /usr/bin/env python#coding=utf-8 import requests def translate(words):    impor

  • 浅谈python实现Google翻译PDF,解决换行的问题

    我们复制PDF到Google翻译时,总是会出现换行的情况,如果自己手动去除,那就太麻烦了. 那么用Python就可以解决,复制到粘贴板以后,Python程序自动可以把\n换成空格,然后我们就可以复制到Google翻译中去 代码: import pyperclip import time import webbrowser copyBuff=' ' while True: time.sleep(10) copyedText=pyperclip.paste() if copyBuff!=copyed

  • python翻译软件实现代码(使用google api完成)

    复制代码 代码如下: # -*- coding: utf-8 -*- import httplibfrom urllib import urlencodeimport re def out(text):    p = re.compile(r'","')    m = p.split(text)    print m[0][4:].decode('UTF-8').encode('GBK') if __name__=='__main__':    while True:        w

  • python3使用urllib示例取googletranslate(谷歌翻译)

    复制代码 代码如下: #!/usr/bin/env python3# -*- coding: utf-8 -*-# File Name : gt1.py# Purpose :# Creation Date : 1390366260# Last Modified : Wed 22 Jan 2014 06:14:11 PM CST# Release By : Doom.zhou import urllib.requestimport sys typ = sys.getfilesystemencodi

  • python实现在线翻译功能

    对于需要大量翻译的数据,人工翻译太慢,此时需要使用软件进行批量翻译. 1.使用360的翻译 def fanyi_word_cn(string): url="https://fanyi.so.com/index/search" #db_path = './db/tasks.db' Form_Data= {} #这里输入要翻译的英文 Form_Data['query']= string Form_Data['eng']= '1' #用urlencode把字典变成字符串,#服务器不接受字典,

随机推荐