出于需要经常会读一些英语的pdf文档,奈何英语太差只得借助机翻。每次都需要把pdf里的文档复制粘贴到翻译软件里,接着在把结果复制到word文档里,之间还需要排版什么的。今天突然发现百度翻译有一个公开的API,而且 "通用翻译功能" 每个月200万个字符免费。这就有了想法了,从今天开始试着做一个工具来实现这个目标。
今天是第一天,总结下今天干了哪些事。毕竟自己水平有限,心里还是有点B数的。不总结过两天就全忘光了。
事先说下我是python3.6 + anconda + pycharm
先是翻了翻百度的API说明
地址: http://api./api/trans/product/apidoc
注册后可以在下图示意的地方找到密匙和ID,有用
API说明里一大堆说明讲真没花心思看,往下拉的时候突然发现居然提供了python的demo. 瞬间眼前一亮之后!你懂得,有demo无非修修改改的事,既然有了为啥还要发明轮子呢?
范例下回来捋了一遍,直观简明,挺好搞懂的。只是这个demo是python2.x版本的,需要修改一点点。我直接贴出修改后的代码:
import http.client# 原始代码 import httplib#----是的,python3里这个库改名了,用法一丁点都没变import hashlib# 原始代码 import md5#----反正我尝试pip安装md5的时候提示没有这个库,好在hashlib里有#md5呀!import urllibimport random# 账号和密匙appid = ''secretKey = ''# 对应的填入你注册后给你的ID和密匙,点上面的管理控制台,然后点左边的开发# 者信息,你可以看我上面的发的图httpClient = Nonemyurl = '/api/trans/vip/translate'q = 'I am a poor guy'fromLang = 'en'toLang = 'zh'salt = random.randint(32768, 65536)sign = appid + q + str(salt) + secretKeym1 = hashlib.md5()# 源代码 m1 = md5.new()# 使用hashlib提供的md5功能m1.update(sign.encode('utf-8'))# 需要encode一下,不然会报错的,python2和python3的区别之一sign = m1.hexdigest()myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign# 原代码里的urllib.quote(q) 改成了 urllib.parse.quote(q) 意思是去空格还是啥来着?try:httpClient = http.client.HTTPConnection('api.')# 源代码 httpClient = httplib.HTTPConnection('api.')# 修改下库的名称就行了。其他不变httpClient.request('GET', myurl)# response是HTTPResponse对象response = httpClient.getresponse()data = response.read()print('翻译结果如下')print(data.decode('unicode_escape'))except Exception as e:print('出错了')print(e)# 上面这一部分有一些小修改,比如decode了一下和print的用法也变了下。没啥大不了的。 finally:if httpClient:httpClient.close()
修改过的代码是可以直接用的,返回了我是一个可怜的家伙----真实写照。
然后又摸索了下pdf文件的读取,这是个大坑。百度了一会发现都在说一个叫pdfminer的东西,然后我就被坑了,我看到的大部分关于pdfminer的用法都是python2的 也有部分python3.x。很遗憾我这都用不上要么装不起来,要么无限报错。磨损了一段时间之后才搞定了pdf中文本转txt,打算走一条曲线救国的路。
首先你需要安装的是pdfminer.six 什么pdfminer(python2.x专用) 什么pdfminer3k 都是渣渣!
实际上的安装最好不要用pip install pdfminer.six 虽然这样也能装上。但如果你和我一样装了anconda的话,我更荐使用另一种安装方法。
去/pdfminer/pdfminer.six下载回压缩包,解压出来后是一个文件名为‘’pdfminer.six-master‘的文件夹,将文件夹复制到你的anconda安装目录下的\Lib\site-packages文件夹下,参考下图
该文件夹下\docs\index.html 为该软件的说明。你应该去看一看,详细的使用方法就在里面。下面的内容都是参考这个说明来进行的。
然后以管理员的方式打开cmd,cd到这个文件夹目录下,运行python setup.py install
这样就开始安装了,结束后在Anconda\Scripts目录下会出现pdf2txt.py这个好用的工具
在命令行中cd到Anconda\Scripts目录下后可以使用: python pdf2txt.py -o 文件名.txt 目标pdf的方法来使用。
比如 python pdf2txt.py -o D:\test1.txt C:\wtf.pdf
会将C盘下名为wtf的pdf文档中的文字内容提取到D盘下的test1.txt文件里。
嫌切换目录麻烦的话也可以这么写: python 目录\pdf2txt.py-o 文件名.txt 目标pdf的方法来使用。
比如 pythonC:\ProgramData\Anaconda3\Scripts\pdf2txt.py -oD:\test1.txt C:\wtf.pdf
详细的用法还是去看index.html了 朋友
另外还需要安装CJK支持。
cmd里cd切换回‘’pdfminer.six-master‘的文件夹,接着挨个运行下面的代码
mkdir pdfminer\cmap
python tools\conv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminer\cmap Adobe-CNS1 cmaprsrc\cid2code_Adobe_CNS1.txt
python tools\conv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminer\cmap Adobe-GB1 cmaprsrc\cid2code_Adobe_GB1.txt
python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt
python tools\conv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminer\cmap Adobe-Korea1 cmaprsrc\cid2code_Adobe_Korea1.txt
python setup.py install
最后做为懒人,怎么可以这么麻烦不是嘛,把这个加入到pycharm外部工具里不就好了
设置如下,当然根据你的安装位置需要自己修改下,不难的。
这样大体环节上就全打通了,之后只需要写代码就好了。。。。。。明天再说。