guaguastandup/zotero-pdf2zh
PDF2zh for Zotero | Zotero PDF中文翻译插件
Zotero PDF2zh – AI‑powered PDF translation inside Zotero
What it is
- A Zotero plug‑in (plus a small Python server) that lets you translate PDF papers directly from your Zotero library.
- It uses the open‑source PDFMathTranslate / PDFMathTranslate‑next engines, which call LLM APIs (OpenAI, DeepSeek, SiliconFlow, etc.) to produce a Chinese translation while preserving formulas, layout and optional bilingual side‑by‑side views.
Key features
| Feature | What you get |
|---|---|
| Two translation back‑ends | pdf2zh (older, faster, custom fonts) and pdf2zh_next (actively maintained, table/OCR support, terminology extraction). |
| Bilingual PDF output | Generates a new PDF where the original and translated text appear either left‑right or top‑bottom. |
| Crop‑and‑compare mode | For double‑column papers it can cut the pages in half and stitch them, making them easier to read on phones. |
| Batch translation | Select multiple items in Zotero and translate them all at once. |
| Progress UI | A web dashboard (http://127.0.0.1:8890) shows current task status, history and lets you download the results. |
| LLM service manager | In‑plugin UI to add API keys/URLs for many providers (OpenAI‑compatible, DeepSeek‑V4, SiliconFlow‑free, Bing/Google, Zhipu, Aliyun DashScope, etc.) and configure rate limits (qps, poolsize). |
| Docker / Homebrew / Windows‑exe | Multiple deployment options for the Python server, including a pre‑built Windows executable and ready‑made Docker images. |
| Automatic updates | The plug‑in checks for new releases; the server can pull updates from GitHub or Gitee and even update its own Python packages. |
How it works
- Install the plug‑in (
.xpi) in Zotero (versions 7‑10 are supported). - Run the companion server – a small Python script (
server.py) that loads the translation engine and talks to the LLM API you configured. The server stays running while you translate. - Configure an LLM in the plug‑in’s “LLM API configuration” panel (enter URL, API key, model name, optional
*_enable_json_mode). - Right‑click a PDF (or a Zotero item) → choose one of the four actions:
- Translate PDF – creates a translated PDF.
- Crop PDF – halves a wide paper for mobile reading.
- Compare PDF – side‑by‑side bilingual view.
- Crop‑compare PDF – crop then compare (for double‑column papers).
- Watch progress in Zotero’s status bar or the web dashboard; when finished the new PDF appears in your library.
Installation quick‑start
- Install Python 3.12 and Zotero.
- Install a virtual‑env manager (
uvrecommended, or Conda). - Download the
server.ziprelease, unzip tozotero-pdf2zh/server. - Start the server, e.g.
uv run --python 3.12 --with-requirements requirements.txt server.py(or the Conda equivalent). - Install the
.xpiplug‑in via Zotero → Tools → Add‑ons. - Open the plug‑in preferences, test the “Check connection” button, add your LLM API, and you’re ready to translate.
Who it’s for
- Researchers and students who store papers in Zotero and need Chinese translations without leaving the reference manager.
- Anyone who wants to keep the original PDF layout (formulas, tables) while getting a readable bilingual version.
Limitations / notes
- The server must stay running; closing the terminal stops translation.
- Free services (e.g., SiliconFlow‑free) may miss some passages; for higher quality use a paid LLM key.
- Windows users should avoid placing the project on the system drive and may need to run the terminal as administrator.
- The project is undergoing a major rewrite (as of Aug 2026); current versions are stable but future contributions are paused until the new release.
TL;DR: Zotero PDF2zh is a real, open‑source Zotero plug‑in plus a lightweight Python server that translates PDFs to Chinese using LLM APIs, preserving formatting and offering bilingual PDFs, batch processing, and a web UI for progress monitoring. It supports multiple deployment methods and a variety of LLM providers, making AI‑assisted academic reading inside Zotero practical.
Related
- Project
- Project
- Project
- Project
- Project