基於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或七月在線其他老師