VI-Translate README

The project's README from github.com/breslee1707/VI-Translate. As one markdown file: README.md.

PDF Translate logo

PDF Translate

Dịch tài liệu PDF sang tiếng Việt và 35 ngôn ngữ khác
mà vẫn giữ nguyên bố cục, công thức, bảng và hình ảnh.

Xây dựng và duy trì bởi Lê Ngọc Gia Huy · huyg.ai

Tải PDF Translate cho Windows Tải PDF Translate cho Mac Apple Silicon Tải PDF Translate cho Mac Intel

Bản phát hành mới nhất Tổng lượt tải Giấy phép AGPL-3.0 Không cần cài Python

Điểm nổi bật · Cài đặt · Cách dùng · Phát triển · Agent Skill · Giới hạn


PDF Translate là ứng dụng mã nguồn mở dành cho Windows, macOS và Android. Công cụ phân tích bố cục từng trang, bảo vệ công thức và code, dịch phần văn xuôi rồi đặt nội dung trở lại đúng vị trí trong tài liệu gốc — không biến PDF của bạn thành một trang chữ trắng đơn giản.

Đây không phải bản dịch giao diện của một công cụ có sẵn. Dự án mượn ý tưởng và phần nhân đọc/ghi PDF từ hai dự án mã nguồn mở, rồi tự xây phần quyết định chất lượng đầu ra: ứng dụng desktop, bộ quy tắc bảo toàn bố cục, lớp xử lý tiếng Việt và hàng loạt bản sửa lỗi ngay trong nhân. Chi tiết ở mục Được phát triển ở đây.

Điểm nổi bật

Bắt đầu trong 1 phút

Windows

  1. Tải PDF Translate cho Windows (.zip, khoảng 336 MB; đã gồm model OCR chạy cục bộ, không cần mạng).
  2. Giải nén toàn bộ file vừa tải.
  3. Mở PDFTranslate.exe.

macOS

  1. Tải bản phù hợp: Apple Silicon cho Mac M1/M2/M3/M4/M5 hoặc Intel cho Mac Intel.
  2. Mở file .dmg, kéo PDF Translate vào thư mục Applications.
  3. Trong lần chạy đầu, bấm chuột phải vào ứng dụng → Open → Open.

Android

  1. Tải APK từ bản phát hành Android mới nhất (PDFTranslate-android-*.apk). Bản Android được đánh tag riêng theo dạng android-v*.
  2. Trên điện thoại, cho phép trình duyệt hoặc trình quản lý file cài ứng dụng từ nguồn không xác định, rồi mở file APK.
  3. Ứng dụng cần Android 8.0 trở lên.

Muốn tự biên dịch:

cd android
./gradlew assembleDebug

[!NOTE] Bản macOS yêu cầu macOS 14 Sonoma trở lên. Tất cả bản desktop đều không cần cài Python và không phải tải thêm model ở lần chạy đầu. Quá trình dịch bằng Google vẫn cần kết nối Internet.

[!IMPORTANT] Bản Android là một bản viết lại trên PDFBox-Android, không phải bản desktop biên dịch lại. Nó chỉ đọc PDF dạng văn bản (chưa có OCR) và dùng heuristic thay cho model bố cục BabelDOC/YOLOv8, nên PDF nhiều công thức có thể còn sai chỉ số trên/dưới hoặc phân số. Chi tiết build và phát hành nằm ở docs/android-release.md.

[!WARNING] Windows SmartScreen có thể cảnh báo vì ứng dụng chưa được ký số. Chọn More info → Run anyway nếu bạn tải file từ trang Releases chính thức của repo này.

[!WARNING] Nếu máy bạn bật Smart App Control (mặc định trên các máy Windows 11 cài mới), ứng dụng sẽ bị chặn hẳn với thông báo "An Application Control policy has blocked this file" — không có nút Run anyway. Kiểm tra tại Windows Security → App & browser control → Smart App Control. Đây là hệ quả của việc ứng dụng chưa có chữ ký số, không phải lỗi của ứng dụng. Microsoft chỉ cho bật lại Smart App Control bằng cách cài lại Windows, nên hãy cân nhắc kỹ trước khi tắt nó; giải pháp đúng là ký số ứng dụng, và việc đó đang được xử lý.

[!WARNING] Bản macOS hiện dùng chữ ký ad-hoc, chưa được Apple notarize. Gatekeeper có thể chặn thao tác mở thông thường; hãy dùng cách bấm chuột phải → Open ở trên nếu bạn tải từ trang Releases chính thức.

Bạn cũng có thể mở trang Releases để xem ghi chú thay đổi và các tệp của phiên bản mới nhất.

Ứng dụng cũng tự kiểm tra phiên bản mới mỗi lần mở. Máy không có mạng thì bỏ qua, không báo lỗi.

Trên Windows, bản mới được tải ngầm ngay trong lúc bạn vẫn dịch bình thường; góc trên bên phải hiện ↓ Đang tải vX.Y.Z, tải xong đổi thành ● Cài vX.Y.Z & khởi động lại. Bấm vào đó, ứng dụng đóng lại, thay thư mục cài đặt rồi tự mở lại — khoảng mười giây, không phải giải nén gì. Đang dịch dở thì nút chờ đến khi xong. Tải xong mà bạn tắt ứng dụng luôn cũng không mất: lần mở sau vẫn là nút khởi động lại, không tải lại từ đầu. Nếu bước thay thư mục hỏng giữa chừng, bản cũ được đưa lại nguyên vẹn và bạn tải thủ công như trước.

Trên macOS, và khi ứng dụng nằm ở thư mục không có quyền ghi, dòng đó vẫn là ● Có bản mới vX.Y.Z và bấm vào sẽ mở trang tải.

Cách sử dụng

1. Thêm tài liệu

Chọn một trong ba cách:

2. Chọn ngôn ngữ

Chọn ngôn ngữ đích trong mục Dịch sang. Ứng dụng mặc định dịch sang Tiếng Việt.

Với PDF scan, giữ Trang ảnh scan → Tự động (khuyên dùng). Chế độ Nâng cao chậm hơn đáng kể và chủ yếu dùng để thử nghiệm; Tắt OCR nếu bạn chỉ muốn xử lý lớp chữ có sẵn. Một trang có bảng, công thức, hình hoặc nhận dạng không chắc chắn sẽ được giữ nguyên và hàng đợi báo dịch một phần.

3. Bắt đầu dịch

Bấm Dịch. Các file được xử lý lần lượt và hiển thị trạng thái ngay trong hàng đợi.

Kết quả được lưu tự động vào thư mục translated nằm cạnh file nguồn:

TaiLieu/
├── document.pdf
└── translated/
    └── document-vi.pdf

Mặc định, ứng dụng không ghi đè kết quả đã có. Bật Ghi đè file đã dịch trước đó khi bạn muốn dịch lại.

Được phát triển ở đây

Phần kế thừa từ dự án gốc là nhân đọc, phân tích bố cục và render PDF. Mọi thứ quyết định việc một trang tiếng Việt in ra có đọc được hay không đều được viết cho dự án này:

Ứng dụng desktop — 1.620 dòng trong app/ Giao diện, kéo thả, hàng đợi nhiều file không dừng vì một file lỗi, mã lỗi đọc được kèm log để người dùng báo lỗi được, cơ chế tự cập nhật tự thay thư mục cài đặt rồi mở lại app, đóng gói PyInstaller cho Windows và cả hai kiến trúc macOS, workflow phát hành tự động. Không một dòng nào trong thư mục này đến từ dự án gốc.

Bộ quy tắc bảo toàn — pdf2zh/rules.py (519 dòng) và contract sản phẩm Đây là thứ phân biệt dự án với một công cụ dịch PDF thông thường: nhận diện vùng công thức và ký hiệu kỹ thuật để không dịch nhầm thành văn xuôi, giữ in đậm và in nghiêng qua vòng dịch, dựng lại chữ xoay 90 độ đúng chiều thay vì bẻ ngang, giữ bullet Wingdings/Symbol mà font Unicode không có glyph, tính chiều cao dòng tối thiểu cho chữ tiếng Việt nhiều dấu chồng.

Những lỗi tự tìm và tự sửa trong nhân Mỗi lỗi dưới đây được phát hiện từ tài liệu thật, truy ra nguyên nhân trong nhân và sửa tại đây:

Bảng nguyên nhân đầy đủ: agent-knowledge/regressions.md.

278 test hồi quy — 3.422 dòng trong tests/ Mỗi lỗi đã sửa đều bị khoá lại bằng một test dựng đúng hình học nhỏ nhất gây ra nó, nên bản sửa không âm thầm mất đi ở lần thay đổi sau.

Chế độ Handoff và Agent Skill Một engine dịch thứ hai đưa các đoạn văn sang JSONL cho AI agent dịch theo ngữ cảnh chuyên ngành rồi dựng lại PDF, cùng chuẩn SKILL.md để gọi trực tiếp trong Codex, Claude Code hay Copilot.

Ngôn ngữ hỗ trợ

Ứng dụng hỗ trợ 36 ngôn ngữ sử dụng chữ Latin, gồm tiếng Việt, Anh, Pháp, Đức, Tây Ban Nha, Bồ Đào Nha, Ý, Indonesia, Hà Lan, Ba Lan, Thổ Nhĩ Kỳ và nhiều ngôn ngữ châu Âu khác.

Các hệ chữ sau chưa được hỗ trợ: Trung, Nhật, Hàn, Ả Rập, Do Thái, Thái và các chữ Ấn Độ. Ứng dụng sẽ báo lỗi thay vì tạo PDF chứa ký tự ô vuông do thiếu glyph.

Dùng như Agent Skill

Repo đồng thời tuân theo chuẩn Agent Skills và có thể dùng với Codex, Claude Code, GitHub Copilot cùng các coding agent hỗ trợ SKILL.md.

Cài skill cho tất cả agent có trên máy:

npx skills add breslee1707/VI-Translate -g --all

Sau đó gọi skill bằng yêu cầu tự nhiên:

Use $pdf-translate to translate this PDF into Vietnamese.

Trong Claude Code hoặc Copilot CLI:

/pdf-translate translate this PDF into Vietnamese.

Skill cung cấp hai chế độ dịch:

Chế độ Bộ máy dịch Phù hợp khi
Google translate.google.com Cần nhanh, miễn phí và không có API key
Handoff AI agent trong phiên làm việc Tài liệu chuyên ngành cần bản dịch theo ngữ cảnh

Google là chế độ mặc định và là chế độ được dùng trong app desktop. Handoff trích các đoạn văn sang JSONL để agent dịch, sau đó dựng lại PDF; dữ liệu không được gửi tới Google nhưng sẽ tốn token và mất nhiều thời gian hơn.

Ví dụ với từ conduction trong tài liệu truyền nhiệt:

Google Handoff
“Sự dẫn điện xảy ra khi hai vật tiếp xúc trực tiếp” “Dẫn nhiệt xảy ra khi hai vật thể tiếp xúc trực tiếp với nhau”

Xem quy trình đầy đủ tại SKILL.md.

Chạy từ mã nguồn

Chuẩn bị môi trường

git clone https://github.com/breslee1707/VI-Translate.git
cd VI-Translate
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt

Dịch bằng Google

.venv\Scripts\python.exe scripts\translate_pdf.py INPUT.pdf --output-dir OUT

Dịch bằng Handoff

# 1. Trích các đoạn cần dịch
.venv\Scripts\python.exe scripts\translate_pdf.py INPUT.pdf --engine handoff --emit-segments segments.jsonl

# 2. Dùng agent dịch segments.jsonl thành translations.jsonl

# 3. Dựng lại PDF
.venv\Scripts\python.exe scripts\translate_pdf.py INPUT.pdf --engine handoff --segments translations.jsonl --output-dir OUT

Build ứng dụng Windows

.\build.ps1

Gói phát hành được tạo tại dist\PDFTranslate-windows.zip.

Build ứng dụng macOS

Chạy trên máy Mac dùng đúng kiến trúc cần phát hành:

bash build-macos.sh

Gói phát hành được tạo tại dist/PDFTranslate-macos-apple-silicon.dmg hoặc dist/PDFTranslate-macos-intel.dmg. Từ máy Windows, bạn có thể chạy thủ công workflow Release trên GitHub Actions để lấy cả hai DMG trong phần Artifacts; khi push tag v*, workflow tự đính kèm chúng vào GitHub Release.

Giới hạn hiện tại

Nên kiểm tra lại tài liệu đầu ra trước khi dùng cho xuất bản hoặc các mục đích yêu cầu độ chính xác cao.

Giấy phép và ghi công

PDF Translate được phát hành theo giấy phép AGPL-3.0. Nếu phát hành lại ứng dụng hoặc cung cấp nó như một dịch vụ qua mạng, bạn phải kèm theo mã nguồn tương ứng theo điều khoản của giấy phép.

Thư mục pdf2zh/ là bản fork của nhân xử lý PDF từ PDFMathTranslate 1.9.11, dùng model bố cục và font đã ghim của BabelDOC. Hai dự án đó cho công việc này một điểm khởi đầu và được ghi công đầy đủ tại THIRD_PARTY_NOTICES.md.

Ứng dụng desktop, bộ quy tắc bảo toàn, các bản sửa lỗi trong nhân, bộ test hồi quy, chế độ Handoff và toàn bộ phần đóng gói — mọi thứ liệt kê ở Được phát triển ở đây — do Lê Ngọc Gia Huy (@huyg.ai trên TikTok) phát triển và duy trì.


Nếu PDF Translate hữu ích với bạn, hãy tặng repo một ⭐ để nhiều người biết đến dự án hơn.

Xây dựng & duy trì bởi Lê Ngọc Gia Huy (huyg.ai)

VI-Translate (breslee1707/VI-Translate)

Searching Database…

这是什么?PDF Translate 是一款开源的桌面和 Android 应用,可以把 PDF 文档翻译成越南语和其他 35 种拉丁字母语言,同时保持原有的版式、公式、表格和图片完好无损。
在 Windows、macOS 或 Android 上怎么运行它?在 Windows 上,下载约 336MB 的 zip(已内置本地 OCR 模型),解压并打开 PDFTranslate.exe。在 macOS 上,下载 Apple Silicon 或 Intel 的 .dmg,拖入“应用程序”,首次启动时右键 → 打开。在 Android 上,从最新的 android-v* 发布版安装 APK,并允许安装来自未知来源的应用。
翻译需要联网或 API 密钥吗?默认的 Google 翻译模式不需要 API 密钥,但需要联网;扫描页的本地 OCR 可离线工作。另有一个可选的 Handoff 模式,改为把文本交给 AI 智能体(Codex、Claude Code、Copilot)做上下文感知翻译。
哪些内容它无法正确翻译?包含表格、复杂公式、代码或阅读顺序不确定的页面会保持原样,并标记为 'partial translation' 以保护版式。发给 Google 的每段文字上限为 5,000 字符,超出部分会被跳过;Android 版没有 OCR,并用启发式方法替代 BabelDOC/YOLOv8 版式模型。
如果我再分发它,AGPL-3.0 许可证有什么要求?如果你再分发该应用,或把它作为网络服务提供,就必须以同样的 AGPL-3.0 条款公开相应的源代码。
它能翻译成哪些语言?它支持 36 种拉丁字母语言,默认目标为越南语,另支持英语、法语、德语、西班牙语、葡萄牙语、意大利语、印尼语、荷兰语、波兰语、土耳其语等。不支持中日韩、阿拉伯、希伯来、泰文和印度系文字,遇到这些语言应用会直接报错,而不是输出乱码。
Google 模式和 Handoff 翻译模式有什么区别?Google 模式使用 translate.google.com 实现快速、免费、无需 API 密钥的翻译,是桌面应用的默认模式。Handoff 模式把段落导出为 JSONL,交给 AI 编程智能体结合领域上下文翻译,然后重建 PDF——更慢且消耗 token,但对专业文档效果更好。
它为什么不只是现有 PDF 翻译器的重新打包版?该项目从 PDFMathTranslate 和 BabelDOC 分支出 PDF 读取/版式内核,但自己编写了桌面应用、一个 519 行的版式保持规则引擎和越南语变音符号处理,并修复了字形重映射损坏、翻页矩阵错误等核心 bug,全部有 278 个回归测试兜底。
Windows 版会自动更新吗?会——它会在你继续翻译的同时于后台下载新版本,然后显示 'Install & restart' 按钮,约十秒即可完成安装文件夹的替换。在 macOS 上,它只会提示你打开下载页面。
Size
2.2 MB
Stars
704
Age
1mo
Commits · 90 Days