mrkeyoor.com_
Wed 16 Sept 23:51 UTC
AI Toolsevaluationupdated 26 Aug 2026

PDFMathTranslate review

PDFMathTranslate turns a scientific PDF into translated and bilingual PDFs while trying to preserve formulas, charts, annotations, and page layout. It can run through a command line, browser interface, Docker, Python or HTTP APIs, and MCP, with English documentation plus Chinese, Japanese, and Korean README translations.

+172stars / 7d
Verdict

Our PDFMathTranslate run built in 13 seconds, but tests ended with 3 failures and 5 errors while pip-audit found 45 vulnerabilities, so this checkout is suitable for supervised evaluation rather than blind document processing. Use it when preserving scientific layout is valuable and someone will compare the output with the source. Do not make it the sole translator for consequential documents.

We ran it

Lab card: what happened when we ran PDFMathTranslateScreenshot of PDFMathTranslate (pdf2zh.com)
Install✓ · 66s141 packages · 1147 MB
Build✓ · 13s
Tests✗ · 24s58 passed · 3 failed · 1 skipped · 5 errors of 66 (pytest)
Known vulns45(pip-audit)
Repo494 files~16,711 lines of source · 24.8 MB · 7 CI workflows · Dockerfile · tests dir

Answers from our run

Does PDFMathTranslate build from source?

Dependencies installed in 66 seconds (141 packages), and the build succeeded in 13 seconds. We cloned commit 3835ce9 into a clean Debian container with 3 CPUs and no project-specific setup.

Do PDFMathTranslate's tests pass?

Not all of them: 58 of 66 passed and 3 failed when we ran the project's own test command (pytest), with 5 collection errors. Some failures need services or credentials a bare container does not have.

Does PDFMathTranslate have known vulnerabilities in its dependencies?

pip-audit flagged 45 known advisories in the dependency tree at the time of our run.

Who should not use PDFMathTranslate?

Workflows that require a green dependency and test baseline: our run found 45 known vulnerabilities, 3 failed tests, and 5 collection or setup errors.

What are the alternatives to PDFMathTranslate?

BabelDOC, Zotero PDF Translate, DeepL. Our PDFMathTranslate run built in 13 seconds, but tests ended with 3 failures and 5 errors while pip-audit found 45 vulnerabilities, so this checkout is suitable for supervised evaluation rather than blind document processing.

Setup3/5Several install paths, but model downloads and provider setup remain
Docs4/5Detailed multilingual setup, options, APIs, and provider guides
Community4/5Current pushes and issue activity across languages and providers
Maturity3/5Useful stable path beside an experimental replacement kernel

Who it’s for

Researchers who need a readable first-pass translation of papers without losing every formula and page reference.
Developers building document workflows around a CLI, Python API, HTTP service, or MCP endpoint.
Teams that want to choose among hosted translation APIs and local model providers.
Zotero users or document-tool builders willing to inspect translated output before relying on it.

Who it’s NOT for

Workflows that require a green dependency and test baseline: our run found 45 known vulnerabilities, 3 failed tests, and 5 collection or setup errors.
Legal, medical, or publication pipelines where a misplaced symbol or mistranslated clause cannot be caught by a human: an open report describes formula symbols becoming corrupted.
Teams needing dependable Persian or Arabic layout today: an open enhancement request says right-to-left shaping and direction need fixes.
Users who assume translation is free after installation: hosted providers need credentials and may charge per request, while local choices require their own models and compute.
Developers expecting one settled kernel: the README calls precise v2 mode experimental and says it requires the separate PDFMathTranslate-next submodule.
Companies unable to meet AGPL-3.0 obligations for a modified network service.

Setup reality

Our sandbox install succeeded in 66 seconds, adding 141 packages and consuming 1,147 MB on disk. The build completed in 13 seconds. Tests failed after 24 seconds: pytest reported 58 passes, 3 failures, 1 skip, and 5 collection or setup errors out of 66.

The 3 failures said pdf2zh had no high_level attribute in legacy-kernel translation tests. Five other modules failed during collection or setup, and the log tail did not establish one shared cause. pip-audit reported 45 known vulnerabilities.

Running a translation also needs the layout model, which may download at first use, and a configured translation service. The README supports Python 3.11 through 3.12, Docker, a browser UI, and several APIs. Precise mode adds the v2 submodule and an isolated environment.

PDFMathTranslate preserves page structure while translating text

PDFMathTranslate tackles a specific failure of ordinary copy-and-paste translation: scientific PDFs mix prose with formulas, charts, annotations, columns, and positioned text. The tool produces translated and bilingual PDFs while trying to keep that structure recognizable. Its README offers a CLI, browser interface, Docker image, Python API, HTTP API, Zotero connection, and MCP modes. Translation can be delegated to multiple services rather than tied to one model vendor.

The measured repository is modest beside a full office suite: 494 files, about 16,711 lines of source, and a 24.8 MB checkout at commit 3835ce9. Installation tells a different story, expanding to 1,147 MB after 141 packages. The extra weight supports layout detection, PDF parsing, fonts, model clients, and a web interface. Anyone embedding the library should decide whether the whole application belongs inside their process or behind its HTTP service.

The basic workflow is clear. Python 3.11 or 3.12 users install pdf2zh, run it against a document, and receive mono-language and bilingual outputs. A browser UI listens on port 7860, and container images remove much of the local Python setup. The layout model may need to download on first use; the README even documents a mirror environment variable for regions where that download fails.

Translation quality still requires page-by-page review

Preserved layout is valuable only when the output remains correct. Scientific papers punish small mistakes: a missing minus sign, changed variable, broken subscript, or reversed sentence direction can alter the argument. An open issue reports formula symbols becoming disordered, while another asks for correct Persian and Arabic shaping and direction. A separate report says Chinese-to-English translation failed most of the time for that user's documents. These are concrete reasons to retain the source page beside every translated page.

Provider choice adds another review layer. Google is the documented default, while advanced configuration covers other services and custom prompts. Hosted APIs can send document text outside your infrastructure and create usage charges. Local providers change that privacy boundary but require model hosting and enough compute. PDFMathTranslate provides the routing; your team still owns vendor terms, credentials, cost limits, retention policy, and evaluation of the chosen model's language pair.

For casual reading, imperfect output may still save time by exposing the structure and rough argument of a paper. For a citation, contract, clinical instruction, or publishable translation, the PDF should be treated as a draft. The project's format preservation does not certify terminology, equations, names, or conclusions.

What happened when we ran it

Our sandbox install succeeded in 66 seconds, pulling 141 packages and using 1,147 MB on disk. The build completed in 13 seconds. We used a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, no secrets, and commit 3835ce9. The repository included a Dockerfile, a Compose file, 7 CI workflow files, and a tests directory.

The test command failed after 24 seconds. pytest reported 58 passes, 3 failures, 1 skipped test, and 5 collection or setup errors out of 66. All 3 failures were legacy-kernel translation tests raising AttributeError because the pdf2zh module had no high_level attribute. Five files failed during collection or setup. The log tail named those files but did not show one cause shared by them, so we will not invent one.

pip-audit found 45 known vulnerabilities in the installed environment. That count does not say each finding is reachable during PDF translation, but it is too large to ignore in a service that accepts uploaded documents and can expose a web or HTTP interface. Pinning, scanning, network isolation, upload limits, and timely dependency updates belong in any deployment review.

The legacy and v2 paths are still intertwined

The README says the 2.0 implementation moved to PDFMathTranslate-next, while this project remains the stable original. It also added an experimental --mode precise path that uses the v2 translation kernel through a submodule and isolated environment. The document calls that newer fork better at marginal cases, cross-column and cross-page consistency, and scaling, but also says it is for development and is not designed for community contributions.

That split explains why the simple product choice has become less simple. A user can stay on the legacy path, enable an experimental bridge, or work directly with the newer BabelDOC-related engine. Our 3 failed tests specifically touched legacy-kernel translation, so the boundary is not merely organizational. Evaluate the exact mode and version you intend to run, then keep it pinned until your document set passes visual comparison.

Active code does not erase the security backlog

GitHub recorded the last push on 2026-08-26, and recent issues and pull requests covered translation providers, documentation sync, right-to-left text, editor setup, and model defaults. The repository showed 147 open issues and PRs. Its latest GitHub release was v1.9.11 from 2025-07-11, but source work continued afterward, so the tag date alone does not support an abandonment claim.

PDFMathTranslate earns a trial because it addresses the part generic translators discard: the page. Our run also gives buyers hard limits. A 1,147 MB install, 45 audit findings, and 8 unsuccessful test entries call for isolation and human checking. The right use is assisted reading and supervised document production, with the original PDF always available for comparison.

Alternatives

ProjectWhat it isPick it when
BabelDOC gh↗A document translation and layout reconstruction engine used as an experimental backend by PDFMathTranslate.pick this instead when you want to work directly with the newer document engine rather than the legacy pdf2zh interface.
Zotero PDF TranslateA Zotero plugin for translating selected text, annotations, and PDF content inside a research library.pick this instead when translation belongs inside Zotero and full layout-preserving PDF export is secondary.
DeepLA hosted document translation service with no self-hosted processing stack to maintain.pick this instead when a managed service and supported document workflow matter more than open-source control.

Sources

  1. PDFMathTranslate README
  2. PDFMathTranslate v1.9.11 release
  3. Formula symbol corruption report
  4. Right-to-left language support request
  5. Chinese-to-English translation report
  6. Reviewed commit 3835ce9

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →