出于需要经常会读一些英语的pdf文档,奈何英语太差只得借助机翻。每次都需要把pdf里的文档复制粘贴到翻译软件里,接着在把结果复制到word文档里,之间还需要排版什么的。今天突然发现百度翻译有一个公开的API,而且    "通用翻译功能"      每个月200万个字符免费。这就有了想法了,从今天开始试着做一个工具来实现这个目标。

 

今天是第一天,总结下今天干了哪些事。毕竟自己水平有限,心里还是有点B数的。不总结过两天就全忘光了。

事先说下我是python3.6 + anconda + pycharm

 

先是翻了翻百度的API说明

地址:         http://api.fanyi.baidu.com/api/trans/product/apidoc

注册后可以在下图示意的地方找到密匙和ID,有用

免费调用ChatGPT3 api 免费调用pdf翻译 python_Adobe

 

API说明里一大堆说明讲真没花心思看,往下拉的时候突然发现居然提供了python的demo.  瞬间眼前一亮之后!你懂得,有demo无非修修改改的事,既然有了为啥还要发明轮子呢?

范例下回来捋了一遍,直观简明,挺好搞懂的。只是这个demo是python2.x版本的,需要修改一点点。我直接贴出修改后的代码:

import http.client
# 原始代码 import httplib      
#----是的,python3里这个库改名了,用法一丁点都没变

import hashlib
# 原始代码 import md5          
#----反正我尝试pip安装md5的时候提示没有这个库,好在hashlib里有#md5呀!

import urllib
import random


# 账号和密匙
appid = ''
secretKey = ''
# 对应的填入你注册后给你的ID和密匙,点上面的管理控制台,然后点左边的开发
# 者信息,你可以看我上面的发的图

httpClient = None
myurl = '/api/trans/vip/translate'

q = 'I am a poor guy'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)

sign = appid + q + str(salt) + secretKey

m1 = 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.fanyi.baidu.com')
    # 源代码 httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
    # 修改下库的名称就行了。其他不变

    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的话,我更荐使用另一种安装方法。

https://github.com/pdfminer/pdfminer.six 下载回压缩包,解压出来后是一个文件名为‘’pdfminer.six-master‘的文件夹,将文件夹复制到你的anconda安装目录下的\Lib\site-packages文件夹下,参考下图

免费调用ChatGPT3 api 免费调用pdf翻译 python_python_02

该文件夹下\docs\index.html 为该软件的说明。你应该去看一看,详细的使用方法就在里面。下面的内容都是参考这个说明来进行的。

 

然后以管理员的方式打开cmd,cd到这个文件夹目录下,运行python setup.py install

这样就开始安装了,结束后在Anconda\Scripts目录下会出现pdf2txt.py这个好用的工具

免费调用ChatGPT3 api 免费调用pdf翻译 python_ci_03

在命令行中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的方法来使用。

比如 python C:\ProgramData\Anaconda3\Scripts\pdf2txt.py -o D:\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外部工具里不就好了

设置如下,当然根据你的安装位置需要自己修改下,不难的。

免费调用ChatGPT3 api 免费调用pdf翻译 python_ci_04

 

这样大体环节上就全打通了,之后只需要写代码就好了。。。。。。明天再说。