您的位置:首页 > 新闻 > 热点要闻 > 沈阳建网站平台_保定网站建设公司_网站推广的优化_网络推广吧

沈阳建网站平台_保定网站建设公司_网站推广的优化_网络推广吧

2025/1/4 11:52:36 来源:https://blog.csdn.net/sunyuhua_keyboard/article/details/142992007  浏览:    关键词:沈阳建网站平台_保定网站建设公司_网站推广的优化_网络推广吧
沈阳建网站平台_保定网站建设公司_网站推广的优化_网络推广吧

以下是基于本地模型的PDF翻译系统的完整设计和代码实现,支持术语表的导入,并保留PDF的原有格式。

系统设计概述

本系统的目标是将英文PDF文件翻译成中文,并保持原有的排版和格式(如字体、图片、表格等)不变,同时支持导入术语表,确保特定的术语得到精确翻译。

功能模块
  1. PDF 文件解析模块

    • 负责解析PDF文件,提取文本、段落、图像、表格等信息,并保留其格式。
  2. 术语表管理模块

    • 支持用户上传术语表(CSV 或 Excel 格式),将特定的术语及其翻译映射存储在字典中。
  3. 本地翻译模型模块

    • 使用 Hugging Face 提供的 MarianMT 或 mBART 模型进行本地翻译,不依赖在线API。
  4. 格式重建与PDF生成模块

    • 在翻译完成后,按照原有的PDF格式生成新的PDF文件,保持翻译后的内容与原文件一致。
  5. 优化与扩展

    • 系统支持异步任务处理,能够高效处理大文件,并为不同行业配置不同的术语表。

代码实现

1. PDF 解析模块

使用 PyMuPDF 提取文本并保留格式。


import pymupdfdef extract_text_from_pdf(pdf_path):doc = pymupdf.open(pdf_path)pdf_content = []for page_num in range(len(doc)):page = doc.load_page(page_num)text = page.get_text("text")blocks = page.get_text("dict")["blocks"]pdf_content.append({"text": text,"blocks": blocks,  # 用于保留格式信息})return pdf_contentif __name__ == '__main__':context=extract_text_from_pdf("pdftest.pdf")print(context)
2. 术语表管理模块

从 CSV 或 Excel 文件导入术语表,并使用字典存储术语的映射。

import pandas as pddef load_terms(terms_file):# 假设术语表格式是英文列和中文列terms_df = pd.read_csv(terms_file)  # 可扩展为Excelterms_dict = dict(zip(terms_df['English'], terms_df['Chinese']))return terms_dictdef replace_terms(text, terms_dict):# 替换文本中的术语for eng_term, zh_term in terms_dict.items():text = text.replace(eng_term, zh_term)return text
3. 本地翻译模型模块

加载 MarianMT 模型,进行英文到中文的翻译。

from transformers import MarianMTModel, MarianTokenizerdef load_translation_model():model_name = 'Helsinki-NLP/opus-mt-en-zh'tokenizer = MarianTokenizer.from_pretrained(model_name)model = MarianMTModel.from_pretrained(model_name)return tokenizer, modeldef translate_text(text, tokenizer, model):tokenized_text = tokenizer(text, return_tensors="pt", padding=True, truncation=True)translated_tokens = model.generate(**tokenized_text)translated_text = tokenizer.decode(translated_tokens[0], skip_special_tokens=True)return translated_text
4. 翻译结合术语表

在翻译文本前先用术语表替换术语,再用本地模型翻译其余文本。

def translate_with_terms(text, terms_dict, tokenizer, model):# 先进行术语替换text_with_terms = replace_terms(text, terms_dict)# 对剩余文本进行翻译translated_text = translate_text(text_with_terms, tokenizer, model)return translated_text
5. 保持格式生成PDF

使用 PyMuPDF 结合翻译后的文本生成新的 PDF,保持原有排版和格式。

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letterdef generate_translated_pdf(translated_content, output_pdf_path):c = canvas.Canvas(output_pdf_path, pagesize=letter)# 假设每页使用相同的格式信息,重绘文本for page in translated_content:for block in page['blocks']:x, y = block['bbox'][:2]  # 假设使用边界框信息确定文本位置translated_text = block['text']c.drawString(x, y, translated_text)  # 重新绘制文本c.save()
6. 主流程

整合上述模块,形成翻译流程。

def main(pdf_path, terms_file, output_pdf_path):# 步骤 1: 解析 PDF 文件pdf_content = extract_text_from_pdf(pdf_path)# 步骤 2: 导入术语表terms_dict = load_terms(terms_file)# 步骤 3: 加载本地翻译模型tokenizer, model = load_translation_model()# 步骤 4: 翻译内容并保留格式translated_content = []for page in pdf_content:translated_page = {"blocks": []}for block in page["blocks"]:translated_text = translate_with_terms(block['text'], terms_dict, tokenizer, model)translated_block = {"bbox": block['bbox'],  # 保留位置"text": translated_text}translated_page["blocks"].append(translated_block)translated_content.append(translated_page)# 步骤 5: 生成翻译后的 PDF 文件generate_translated_pdf(translated_content, output_pdf_path)

系统功能说明

  1. 术语表支持:通过导入用户定义的术语表,在翻译时优先处理特定词汇,确保术语翻译的准确性。

  2. 本地模型:使用本地的 MarianMT 模型进行高效翻译,不依赖在线API,保证隐私与数据安全。

  3. 格式保留:在翻译完成后,PDF的段落、字体、表格等格式保持不变,生成的PDF文件与原文件视觉效果一致。

  4. 可扩展性:可以扩展为支持更多翻译模型(如 mBART),并处理复杂的 PDF 元素(如图像、表格等)。


进一步优化建议

  • 并行处理:对于大型PDF文件,可以对每一页的文本翻译过程并行化,以提高效率。
  • 文本块优化:在提取文本时,可以对文本进行预处理(如去除多余的空格、断行符等),以提高翻译质量。
  • 术语表管理:为用户提供术语表的编辑和维护界面,使得系统能针对不同行业或领域定制翻译内容。

通过这样的设计,你能够实现一套完整且高效的PDF翻译系统,并确保在不调用在线API的情况下,通过本地模型翻译英文PDF为中文,且保留原有格式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com