news 2026/4/18 10:47:48

PolyglotPDF:多语言PDF处理与翻译工具全面指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PolyglotPDF:多语言PDF处理与翻译工具全面指南

PolyglotPDF:多语言PDF处理与翻译工具全面指南

【免费下载链接】PolyglotPDF(PDF translation)Multilingual PDF processing tool, supports online and offline translation while maintaining original layout; performs OCR on scanned PDFs, faster than ocrmypdf. Provides a Web UI for comparing original PDFs, includes chat with PDF functionality, and academic PDF search based on the Semantic Scholar API.项目地址: https://gitcode.com/gh_mirrors/po/PolyglotPDF

PolyglotPDF是一款先进的多语言PDF处理工具,采用专门技术实现PDF文档中文本、表格和公式的超快速识别。该工具具备OCR能力和保持原始布局的翻译功能,通常处理时间在1秒内完成,完整文档翻译通常在10秒内完成。

核心特性

  • 超快速识别:在约1秒内处理PDF中的文本、表格和公式
  • 保持布局的翻译:翻译内容时保持原始文档格式
  • OCR支持:高效处理扫描文档
  • 基于文本的PDF处理:无需GPU支持
  • 快速翻译:完整PDF翻译约10秒完成
  • 灵活的API集成:兼容多种翻译服务提供商
  • 基于Web的比较界面:并排比较原始文档和翻译文档
  • 增强的OCR能力:提高文本识别和处理的准确性
  • 支持离线翻译:使用较小的翻译模型

安装与配置

标准安装方式

  1. 克隆仓库:
git clone https://gitcode.com/gh_mirrors/po/PolyglotPDF.git cd PolyglotPDF
  1. 安装所需包:
pip install -r requirements.txt
  1. 在config.json中配置您的API密钥。不推荐使用阿里云翻译API。

  2. 运行应用程序:

python app.py
  1. 访问Web界面: 打开浏览器并导航到http://127.0.0.1:8000

Docker安装方式

快速启动(无持久化存储)

如果您想快速测试PolyglotPDF而不设置持久化目录:

# 首先拉取镜像 docker pull 2207397265/polyglotpdf:latest # 运行容器但不挂载卷(容器移除时数据将丢失) docker run -d -p 12226:12226 --name polyglotpdf 2207397265/polyglotpdf:latest

这是尝试PolyglotPDF的最快方式,但所有上传的PDF和配置更改将在容器停止时丢失。

持久化存储安装
# 创建必要目录 mkdir -p config fonts static/original static/target static/merged_pdf # 创建配置文件 nano config/config.json # 或使用任何文本编辑器 # 将项目中的配置模板复制到此文件中 # 确保填写您的API密钥和其他配置详细信息 # 设置权限 chmod -R 755 config fonts static
快速启动

使用以下命令拉取并运行PolyglotPDF Docker镜像:

# 拉取镜像 docker pull 2207397265/polyglotpdf:latest # 运行容器 docker run -d -p 12226:12226 --name polyglotpdf \ -v ./config/config.json:/app/config.json \ -v ./fonts:/app/fonts \ -v ./static/original:/app/static/original \ -v ./static/target:/app/static/target \ -v ./static/merged_pdf:/app/static/merged_pdf \ 2207397265/polyglotpdf:latest
访问应用程序

容器启动后,在浏览器中打开:

http://localhost:12226

使用Docker Compose

创建docker-compose.yml文件:

version: '3' services: polyglotpdf: image: 2207397265/polyglotpdf:latest ports: - "12226:12226" volumes: - ./config.json:/app/config.json # 配置文件 - ./fonts:/app/fonts # 字体文件 - ./static/original:/app/static/original # 原始PDF - ./static/target:/app/static/target # 翻译后的PDF - ./static/merged_pdf:/app/static/merged_pdf # 合并的PDF restart: unless-stopped

然后运行:

docker-compose up -d

常用Docker命令

# 停止容器 docker stop polyglotpdf # 重启容器 docker restart polyglotpdf # 查看日志 docker logs polyglotpdf

性能优势

PolyglotPDF在处理基于文本的PDF文档时具有显著性能优势。根据测试数据,其处理速度相比其他工具快6倍,提供闪电般的处理体验。

功能界面展示

系统要求

  • Python 3.8+
  • deepl==1.17.0
  • Flask==2.0.1
  • Flask-Cors==5.0.0
  • Pillow==10.2.0
  • PyMuPDF==1.24.0
  • pytesseract==0.3.10
  • requests==2.31.0
  • tiktoken==0.6.0
  • Werkzeug==2.0.1

技术原理

该项目遵循与Adobe Acrobat DC的PDF编辑类似的基本原理,使用PyMuPDF进行文本块识别和操作:

核心处理流程

# 从页面获取文本块 blocks = page.get_text("dict")["blocks"] # 处理每个文本块 for block in blocks: if block.get("type") == 0: # 文本块 bbox = block["bbox"] # 获取文本块边界 text = "" font_info = None # 收集文本和字体信息 for line in block["lines"]: for span in line["spans"]: text += span["text"] + " "

这种方法直接处理PDF文本块,在保持原始布局的同时实现高效的文本提取和修改。

未来改进计划

  • PDF聊天功能
  • 学术PDF搜索集成
  • 更快的处理速度优化

已知问题

  • 问题描述:文本重新编辑期间出错:code=4: only Gray, RGB, and CMYK colorspaces supported
  • 症状:在文本块编辑期间遇到不支持的颜色空间
  • 当前解决方法:跳过具有不支持颜色空间的文本块
  • 建议解决方案:对包含不支持颜色空间的整个页面切换到OCR模式

待办事项

  • 自定义术语库:支持带有提示的自定义术语库,用于领域特定的专业翻译
  • AI重排功能:将双列PDF转换为单列HTML博客格式,便于在移动设备上阅读
  • 多格式导出:将翻译结果导出为PDF、HTML、Markdown和其他格式
  • 多设备同步:在桌面上处理后,在移动设备上阅读翻译
  • 增强的合并逻辑:通过禁用字体名称检测并启用水平、垂直、x、y范围重叠合并来改进当前的合并逻辑

字体优化

当前在main.pystart函数中的字体配置:

# 当前配置 css=f"* {{font-family:{get_font_by_language(self.target_language)};font-size:auto;color: #111111 ;font-weight:normal;}}"

您可以通过以下方法优化字体显示:

  1. 修改默认字体配置
# 自定义字体样式 css=f"""* {{ font-family: {get_font_by_language(self.target_language)}; font-size: auto; color: #111111; font-weight: normal; letter-spacing: 0.5px; # 调整字母间距 line-height: 1.5; # 调整行高 }}"""
  1. 嵌入自定义字体您可以通过以下步骤嵌入自定义字体:
  • 将字体文件(.ttf, .otf)放在项目的fonts目录中
  • 在CSS中使用@font-face声明自定义字体
css=f""" @font-face {{ font-family: 'CustomFont'; src: url('fonts/your-font.ttf') format('truetype'); }} * {{ font-family: 'CustomFont', {get_font_by_language(self.target_language)}; font-size: auto; font-weight: normal; }} """

PolyglotPDF为多语言PDF处理提供了高效、可靠的解决方案,适用于各种商业和学术应用场景。

【免费下载链接】PolyglotPDF(PDF translation)Multilingual PDF processing tool, supports online and offline translation while maintaining original layout; performs OCR on scanned PDFs, faster than ocrmypdf. Provides a Web UI for comparing original PDFs, includes chat with PDF functionality, and academic PDF search based on the Semantic Scholar API.项目地址: https://gitcode.com/gh_mirrors/po/PolyglotPDF

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 9:30:50

ms-swift支持定时任务自动清理过期训练产物

ms-swift 支持定时任务自动清理过期训练产物 在大模型研发日益工业化的今天,一个看似不起眼却频频引发线上事故的问题正浮出水面:训练产物的爆炸式增长。一次微调实验动辄生成数GB的检查点、日志和缓存文件;而当团队每天运行几十次实验时&…

作者头像 李华
网站建设 2026/4/17 13:18:53

OpenLLaMA终极指南:5步掌握开源AI大模型核心应用

OpenLLaMA终极指南:5步掌握开源AI大模型核心应用 【免费下载链接】open_llama OpenLLaMA, a permissively licensed open source reproduction of Meta AI’s LLaMA 7B trained on the RedPajama dataset 项目地址: https://gitcode.com/gh_mirrors/op/open_llama…

作者头像 李华
网站建设 2026/4/18 3:29:13

JeeLowCode企业级低代码开发框架:5分钟快速上手终极指南

JeeLowCode企业级低代码开发框架:5分钟快速上手终极指南 【免费下载链接】jeelowcode 🔥JeeLowCode 【企业级低代码】 是一款专为企业打造的低代码开发框架《免费商用》,以低代码为核心,实现快速开发。提供可视化界面,…

作者头像 李华
网站建设 2026/4/18 7:59:56

FastReport自定义字体配置完整指南:从入门到精通

FastReport自定义字体配置完整指南:从入门到精通 【免费下载链接】FastReport Free Open Source Reporting tool for .NET6/.NET Core/.NET Framework that helps your application generate document-like reports 项目地址: https://gitcode.com/gh_mirrors/fa/…

作者头像 李华
网站建设 2026/4/18 10:06:27

使用ms-swift进行全参数与LoRA混合训练,兼顾性能与成本

使用ms-swift进行全参数与LoRA混合训练,兼顾性能与成本 在当前大模型加速落地的浪潮中,一个现实问题始终困扰着AI团队:如何在有限的GPU资源下,让7B甚至更大的模型既能充分适配业务场景,又不至于把训练成本推到无法承受…

作者头像 李华
网站建设 2026/4/18 7:05:12

CubeMX生成RNG随机数发生器驱动的应用实例

用CubeMX轻松驾驭STM32硬件RNG:从配置到安全应用的完整实战指南你有没有遇到过这样的场景?在开发一个物联网设备时,需要为TLS握手生成会话密钥,或者设计一套挑战-应答认证机制。于是顺手写上一句:srand(time(NULL)); i…

作者头像 李华