pdf作为只读文稿,直接拿来翻译是不现实的。当我们学会Python 后,这个问题就很好解决了。

前期准备工作:

翻译接口: 调用的是api

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

chinese="" ="(translate(clist[i]).replace("\n","。"))"

#chinese=""

i ="1"

savetext(chinese,cntextfile)=""

print("翻译结束,ok")

学会了的小伙伴可以动手尝试啦。更多Python学习推荐:JQ教程网Python大全。

翻译pdf中的英文 python_看不懂pdf中的英文?就用Python相关推荐

  1. 英文名看不懂?爬取steam游戏中文优惠信息

    需求分析 昨天,我发布了爬取steam游戏优惠信息的程序,可是呢,很快啊,有一个年轻人找到我说,"仙老师,你这个程序我用了,有问题!" 我立刻问到,"发生甚么事了,我说这 ...

  2. 西门子触摸屏函数翻译_西门子触摸屏的函数全是英文的,看不懂了

    该章节包括以下主题的信息: Logoff AdjustContrast ActivateScreen ActivateScreenByNumber ActivateFirstChildScreen A ...

  3. pdf怎么查看坐标 python_如何从PDF文件中提取文本和文本坐标?

    下面是一个复制粘贴就绪的示例,它列出了PDF中每个文本块的左上角,我认为对于任何不包含包含包含文本的"Form XObjects"的PDF,它都应该适用:from pdfminer ...

  4. trans在c语言的用法,求大神翻译这个东西啊,完全看不懂,新手

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #include #include "desktop.h" # ...

  5. 西门子smartclient怎么用_西门子触摸屏的函数全是英文的,看不懂了

    该章节包括以下主题的信息: Logoff AdjustContrast ActivateScreen ActivateScreenByNumber ActivateFirstChildScreen A ...

  6. 液晶电视英文linux使用教程,创维电视都是英文怎么看 创维电视机菜单显示英文的怎么调成中文?...

    1.菜单设置里面有语言. 2.菜单-language-语言-选择中文即可. 3.电视调中文的方法:1.打开电视机开关,等待启动,启动后,按电视遥控器的"菜单"按钮. 4.进入&qu ...

  7. 数据库数据规范化看不懂_数据库管理系统中的规范化

    数据库数据规范化看不懂 DBMS中的规范化 (Normalization in DBMS) Every table must have a single idea. The method by whi ...

  8. PADS PCB中的中英文对照 解决英文看不懂的尴尬

    PADS PCB: 一 .Setup1.Preference优先设置 ⑴ global ◆ Pick Radius捕捉半径 ◆ Keep Same View on Window Resize设计环境窗 ...

  9. 看不懂英文文献,怎么写论文?

    在开始回答这个问题之前,我觉得我们先要明确英文文献的重要性,这样我觉得大家才有死磕英文文献的动力. 以我为例,我硕士毕业论文的方向是美国政治思想,国内的对于美国政治思想的研究文章实际上是非常多,再加上 ...

  10. pdf 改变页面大小 python_在Python中使用PDF:阅读和拆分

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. PDF 文档格式 今天,可移植文档格式(PDF)属于最常用的数据格式. 1990年,Adobe定义了PDF ...

最新文章

  1. Plotly_绘图画图作图交互
  2. Docker部署运行微服务
  3. 本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件。
  4. Matlab多惯量仿真,两连杆机器鱼的简单建模以及MATLAB仿真
  5. Linux进阶之VMware Linux虚拟机运行提示“锁定文件失败 虚拟机开启模块snapshot失败”的解决办法...
  6. 【模板】左偏树(可并堆)
  7. spring生命周期七个过程_想要学会Spring源码,你必知必会的BeanDefinition原理!
  8. 【新手教程】从零搭建php动态网站
  9. linux下nginx和redis安装笔记
  10. 离心泵水力设计——0设计参数
  11. qca wlan wifi modules解析三
  12. Oracle 10.2.0.3使用Logminor工具和把system表空间变成locally
  13. 【MTK】PMIC实现掉电复位的方法/PMIC如何实现掉电复位
  14. 随心,随性,随缘。注定让一生改变的,只在百年后,那一朵花开的时间…
  15. 快速入门MapboxGL
  16. 中文版SM3255AB/SM3257AA优盘量产工具v11.10.13.01
  17. LKY-简单手拉手会议扩声方案
  18. 日积月累Day4《为什么家庭会生病》
  19. 关于各个进制转换(自己整理)
  20. 修改CPU的调频策略

热门文章

  1. 手把手教你调整电脑磁盘的分区大小
  2. 情人节神奇的传情之物,“懂爱”的你都会爱上它丨情人节系列
  3. 小米手机扩容教程_手机内存不够怎么办?扩容实记教给你 16G秒变64G
  4. 【大咖周刊】Linus 在谷歌介绍 Git、IBM340亿收购小红帽、IDE Visual Studio 开始支持 Java 了...
  5. 竞业限制是什么意思?
  6. 微软「警告」员工不要在愚人节搞事情,为什么?
  7. qt 表格中插入一行_Qt在表格中加入控件
  8. 操作系统 - 王道 - 第五章 I/O
  9. 区块链入门导航-磨链社区
  10. 摔了 计算机无法启动,电脑被摔后不能进系统,我说重装系统试试,客户:系统能被摔坏?...