基于LLM的论文翻译系统(上)

背景介绍

在如今科技更新迭代发展如此之快的时代,不论是对于想要发表论文的高校本科生或研究生,还是对于需要使用更新的算法模型进行项目开发和迭代的企业或公司人员来说,查阅和学习学术论文都是必经之路,而一般的高水平论文基本都是英文论文,因此,一个优秀的论文翻译系统或工具可以大大提高国内用户阅读和学习英文论文的效率。

虽然目前翻译软件和工具比较多,但支持论文翻译且效果比较好的目前还很少,特别是的在学术论文的翻译过程中,高度专业化的术语、复杂的语法结构和精确的表达需求,给传统的翻译方式带来了巨大挑战。近年来,人工智能(AI)技术的飞速发展,特别是大规模语言模型的出现,为解决这一难题提供了新思路。LLMs 如 Claude-3.5、GPT-4 等已经在自然语言处理领域展示出了强大的语言理解和生成能力。这些模型通过海量的数据训练,能够理解并生成多种语言的高质量文本。

我们开发了一个基于 LLM 的论文翻译系统。该系统以大模型为核心,充分利用先进的语言模型进行高效、准确的学术论文翻译。该系统采用如OpenAI公司的gpt-4,gpt-4o等LLM大模型,并包含针对翻译任务特定的提示词工程与工作流设计。

该系统对以下几个方面进行了重点研究与开发:

翻译准确度:利用 LLM 的强大语言理解能力,确保翻译结果的准确性和专业性。

翻译效率:提升翻译速度,使用户在短时间内获得高质量的翻译结果。

用户界面:翻译前后保持一样的排版布局,提供更好的使用体验。

论文翻译系统的任务是根据用户上传的英文论文PDF文件,将英文文本信息通过大模型翻译生成中文文本信息,输出格式为PDF文件。 目前支持有基础版和高级版两个版本。

论文翻译系统地址:https://translate.julyedu.com/#/

系统主界面

系统主界面如下:

用户可以点界面中部上传文档处,上传自己需要进行翻译的英文论文,注意论文格式仅支持PDF文件,且大小不超过100MB。

文件上传与解析

上传完成后,系统会进行解析,解析成功后得到如下界面:

目前仅支持源语言为英文,目标语言为简体中文,包含基础版和高级版。

翻译结果生成

点击选择的模型后,系统会生成对应的大模型翻译生成的中文论文PDF文件,右上角支持PDF文件下载。

基于LLM的翻译系统整体结构

该翻译系统的开发包括两个主要阶段:

第一个阶段是PDF翻译流程设计。

我们首先需要设计一套完整的“PDF解析-文本翻译-PDF组装”的流程。考虑到组装时需要确保排版布局的一致性,因此需要选择一个支持对复杂PDF文档结构解析的第三方库,在这个过程中我们测试了多个库,包括PyPDF2,PyPDF4,PDFMiner,reportlab和PyMuPDF库。经过若干测试,仅PyMuPDF能够支持对复杂PDF文档结构的解析与组装,因此选择PyMuPDF作为本系统的核心库。

解析出来的复杂结构需要以Json格式保存在指定位置,该Json用于翻译后重新PDF组装的时候读取原始PDF文档结构,确保布局一致性。

随后是设计使用大模型实现文本翻译。考虑到提示词对翻译效果的影响,我们针对提示词进行多次优化,使得翻译效果尽可能达到理想级别。考虑到翻译的一致性,最初我们尝试使用多文本块内容组合翻译,在翻译后再对文本块内容进行拆分。结果显示,拆分错误率随文本块组合量的增加而上升。因此我们目前采用的是并发调用大模型进行单文本块内容翻译。最终翻译后的内容会更新并保存到新Json中,此时该Json包含原始PDF结构和翻译后文本块内容。

将原始PDF的文本块内容删除并保存为模板文件,此时图像等非文本内容依旧在模板文件的原始位置。最后我们将翻译后的文本块内容,按照Json中的原始PDF文档结构写入到模板文件,此时我们就获得了拥有原始PDF文档布局的翻译后的PDF。目前受众主要针对中国用户,因此我们的提示词优化内容为英译中,如需扩展也可以修改为其他语种间的翻译。

第二个阶段是模块设计与接口编写。

在实现PDF翻译流程设计后,我们考虑对翻译过程进行重构,一是为了对功能进行解耦,便于迭代优化,二是为了方便后端进行模块调用。因此我们按照功能需求设计了若干模块,包括:

PDF上传/下载模块:为了保证用户的隐私,需要翻译前后的PDF均会上传到阿里云存储桶,本地仅留存指定天数即会自动删除;

PDF解析模块:用于确保用户上传的PDF为标准PDF,而非加密、有水印、禁止修改权限等非正常PDF。核验通过后会调用解析函数将PDF的复杂文档格式解析成Json,将原始PDF中的文本块删除后保存为模板文件,同时调用Token计算函数获取需要翻译的Token数量返回给后端用来计算翻译成本;

Token计算模块:用来计算PDF中总文本所需消耗Token数;

大模型翻译模块:用来提取Json中文本块内容,批量将单个文本块内容与预设好的提示词进行拼接,采用并发方式调用大模型获取翻译结果,并将其存储到指定位置。在完全翻译后更新到新Json中;

PDF组装模块:根据新Json中的原始PDF结构和翻译后的文本,将其写入模板文件,完成翻译后的PDF组装创建。

基于LLM的翻译系统架构图

流程图

PyMuPDF的基本使用

PyMuPDF,也称为 Fitz,是一个开源 Python 库,提供了一整套用于处理 PDF 文件的工具。使用 PyMuPDF,用户可以高效地执行打开 PDF、提取文本、图像和表格、操作旋转和裁剪等页面属性、创建新 PDF 文档以及将 PDF 页面转换为图像等任务。

API文档链接:https://pymupdf.readthedocs.io/en/latest/

github地址:https://github.com/pymupdf/PyMuPDF

PyMuPDF 支持的多项功能:

PDF文档阅读:PyMuPDF可以打开和阅读PDF文档,允许访问其中的文本、图像和其他内容。

文本提取:可以从PDF文档中提取文本,包括文本内容、字体和布局信息。

图像提取:可以从 PDF 文档中提取各种格式的图像,例如 JPEG 或 PNG。

表格提取:还可以从 PDF 文档中提取表格。

PyMuPDF的安装要求使用Python3.8及以上的版本,安装命令如下:

PyMuPDF的相关用法详见Jupyter Notebook文件。

Rect的坐标含义

Rect表示由四个浮点数 x0、y0、x1、y1 定义的矩形角度。它们被视为两个对角点的坐标。前两个数字被视为“左上”角 P (x0,y0),P (x1,y1)被视为“右下”角。

矩形角是(半)开放的:右侧和底部边缘(包括相应的角)不被视为矩形角的一部分。这意味着,只有左上角可以属于矩形 - 其他三个角永远不会属于矩形。

get_text方法获取的数据结构

PyMuPDF的Textpage对象提供的extractDICT()和extractRAWDICT()用以获取页面中的所有文本和图片(内容、位置、属性),基本数据结构如下。

更多内容见七月在线「大模型项目开发线上营」

↓↓↓扫码了解详情/抢购↓↓↓

课程咨询可找苏苏老师VX:julyedukefu008或七月在线其他老师