用 Python 基于 Open AI 实现自动翻译

545 阅读2分钟

如果,你面前摆着一份「原汁原味」的英文文档、英文书,让你生啃的话……

别说你了,160 多斤的我,也都会不自觉哆嗦一下的,至少一分钟。

怎么办啊?不怕,有我呢,干它就是了,先干为敬!!!

这次,我们直接上 OpenAI,咱这次通过调用它的 API来实现「翻译自由」—— 主要是,相当简单!!

第一步:熟悉 OpenAI,配置 API Key

1.1 打开官网:platform.openai.com/apps

1.2 配置 API Key

进入页面后,点一下页面右上角的「Personal」,在弹出的窗口中选「View API keys」,咱们需要去创建一个。

1.3 绑定支付方式

不过呢,这个 API Key 是需要付费的,而且要先绑定好你支付用的卡。

此时不着急,同一个页面的左侧目录了中,选「Billing - Overview」即可看到一个按钮「Set up paid account」

点它还会弹出如下窗口,问你是个人用,还是代表企业使用?

我选了「I'm an individual」个人的,然后弹出的窗口是用来填写你的海外信用卡相关信息(暂时不支持国内的哇)。

⚠️ 有解决办法吗?—— 悄悄跟你说,某宝有,即买即用~

第二步,开干

2.1 下载文件

先将需要翻译的文件,下载回本地。具体代码如下:

# 从网上获取指定的文件
# 我找的文件是《纳瓦尔宝典》的英文版,好书,推荐大家看
res = requests.get('https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf')

# 将其下载回本地
with open('naval.pdf', 'wb') as f:
    f.write(res.content)

❤️ 帅帅要上架新的「超实用的 Python 专业课程」啦 🎉🎉🎉

❤️ 期待与你一起学好 Python 这门终身「硬技能」,可私信~

2.2 翻译文件

接着,开始读取、翻译。具体代码如下:

# 使用 pypdf
from pypdf import PdfReader
# 引入
from nltk.tokenize import sent_tokenize
import openai

# 如果没有付费的话,会报 RateLimitError: You exceeded your current quota, please check your plan and billing details.
TOKEN = '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'
openai.api_key = TOKEN


# 指定文件
pdf_name = "naval.pdf"

# 读取文件和获取文件总页数
reader = PdfReader(pdf_name)
number_of_pages = len(reader.pages)

data = []

# 获取每一页
for i in range(number_of_pages):
    page = reader.pages[i]
    # 获取当前页内容
    text = page.extract_text()
    # 将文章切分为句子
    sentences = sent_tokenize(text)
    # 如果句子长度大于 1000 就丢到数组中保存
    # GPT4.0 前不能超 4096
    input_sentences = ''
    for sentence in sentences:
        input_sentences += sentence
        if len(input_sentences) > 1000:
            data.append(input_sentences)
            input_sentences = ''
    data.append(input_sentences)
    
for i in range(10):
    completion = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
            {"role": "system", "content": "翻译文档成中文"},
            {"role": "user", "content": data[i]},
        ]
    )
    print("原文:", data[i])
    print("中文:", completion.choices[0].message.content)

⚠️注意,上面的 TOKEN 是要自己在 Open AI 官方充值才有的,按使用量计费。

如果说,你还想要好看的格式,那么还需要自己结合 HTML、CSS、JavaScript 等知识来实现,想怎么设置就怎么设置。

咱们后面有机会,可以看我直播,或者在课程里去拆解一下其中的实现细节,一步一步地把相关的技术整合一起使用,实现一个专属的又超级实用的「翻译工具」,是不是很爽?!