如何用Python提取PDF中的英文内容并实现翻译?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1206个文字,预计阅读时间需要5分钟。
本文将分享一个Python脚本示例,用于提取PDF中的英文内容并进行翻译。以下为脚本的主要内容:
前期准备工作:
+ 翻译接口: 使用的是百度翻译API(注册后,每月有200万免费翻译字数)。
具体步骤:
1. 翻译接口: 调用百度翻译API进行翻译。
2.提取PDF内容: 使用PDF解析库(如PyPDF2)提取PDF中的文本内容。
3.翻译处理: 将提取的英文内容发送到翻译API进行翻译。
4.输出结果: 将翻译后的内容输出到文件或控制台。
代码示例:
python
import requestsfrom PyPDF2 import PdfReader百度翻译API接口def translate(text, from_lang='en', to_lang='zh'): url='https://api.fanyi.baidu.com/api/trans/vip/translate' appid='你的appid' secret_key='你的密钥' salt=str(hex(random.randint(0, 999999999))[2:]) sign=appid + text + salt + secret_key sign=hashlib.md5(sign.encode()).hexdigest() params={ 'q': text, 'from': from_lang, 'to': to_lang, 'appid': appid, 'salt': salt, 'sign': sign } response=requests.get(url, params=params) result=response.json() return result['trans_result'][0]['dst']
提取PDF内容def extract_text_from_pdf(pdf_path): reader=PdfReader(pdf_path) text='' for page in reader.pages: text +=page.extract_text() return text
主函数def main(): pdf_path='example.pdf' text=extract_text_from_pdf(pdf_path) translated_text=translate(text) print(translated_text)
if __name__=='__main__': main()
注意:
+ 需要安装PyPDF2库:`pip install PyPDF2`+ 需要注册百度翻译API并获取appid和密钥。
通过以上脚本,可以方便地提取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 = "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")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计1206个文字,预计阅读时间需要5分钟。
本文将分享一个Python脚本示例,用于提取PDF中的英文内容并进行翻译。以下为脚本的主要内容:
前期准备工作:
+ 翻译接口: 使用的是百度翻译API(注册后,每月有200万免费翻译字数)。
具体步骤:
1. 翻译接口: 调用百度翻译API进行翻译。
2.提取PDF内容: 使用PDF解析库(如PyPDF2)提取PDF中的文本内容。
3.翻译处理: 将提取的英文内容发送到翻译API进行翻译。
4.输出结果: 将翻译后的内容输出到文件或控制台。
代码示例:
python
import requestsfrom PyPDF2 import PdfReader百度翻译API接口def translate(text, from_lang='en', to_lang='zh'): url='https://api.fanyi.baidu.com/api/trans/vip/translate' appid='你的appid' secret_key='你的密钥' salt=str(hex(random.randint(0, 999999999))[2:]) sign=appid + text + salt + secret_key sign=hashlib.md5(sign.encode()).hexdigest() params={ 'q': text, 'from': from_lang, 'to': to_lang, 'appid': appid, 'salt': salt, 'sign': sign } response=requests.get(url, params=params) result=response.json() return result['trans_result'][0]['dst']
提取PDF内容def extract_text_from_pdf(pdf_path): reader=PdfReader(pdf_path) text='' for page in reader.pages: text +=page.extract_text() return text
主函数def main(): pdf_path='example.pdf' text=extract_text_from_pdf(pdf_path) translated_text=translate(text) print(translated_text)
if __name__=='__main__': main()
注意:
+ 需要安装PyPDF2库:`pip install PyPDF2`+ 需要注册百度翻译API并获取appid和密钥。
通过以上脚本,可以方便地提取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 = "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")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

