What our run establishes
Our run on September 28, 2026 tested commit fc1bbbc. Installation and build commands exited zero in our sandbox; the test command exited one. This supports investigating the project locally, but leaves the central reader question unresolved: how well will it translate your papers?
The harness record stores each command's success flag, exit code, elapsed time, timeout status, and available output tail. Its parsed test counts are separate fields. The supplied record is an existing execution, not a new run for this correction. The MrKeyoor testing-methodology page explains the provenance and limits of this kind of evidence; its current procedure does not establish which methodology version governed this older run.
We did not inspect translated output, benchmark translation speed, exercise OCR, test translation providers, deploy the browser interface, or reproduce the reported URL-fetching vulnerability. Successful setup commands cannot answer those questions.
Why the test command stopped
The stored parser summaries report 87 passed, zero failed, 2 skipped, 3 errors, and total 90. They do not establish exhaustive unique test coverage, and the fields should not be added together to manufacture a new total. Skipped tests were not failures.
The raw tail names three collection errors inside the PDFMathTranslate-next kernel tree: test_cache.py, tests/config/test_main.py, and tests/config/test_model.py. Each traceback reports ModuleNotFoundError: No module named 'pdf2zh_next'. That identifies the immediate import failure in our sandbox. It does not establish whether the underlying cause belongs to packaging, environment setup, or the test invocation.
The raw pytest footer reports 21.61 seconds, while the harness records 32 seconds for the test command. We retain both with their respective scopes rather than treating the footer as the whole command duration.
What layout preservation means here
PDFMathTranslate aims to preserve scientific PDF layouts. The README at the tested commit describes translated and bilingual PDF output, with preservation of formulas, charts, the table of contents, and annotations. These are documented capabilities, not quality findings from our run.
For local setup, that README documents Python 3.11 or 3.12 and warns that downloading the layout model can encounter network problems. Experimental precise mode requires the PDFMathTranslate-next submodule. Evaluate the mode you intend to use rather than assuming the setup result proves that every interface and backend works.
Its experimental fast-mode OCR targets selected image-only pages. Pages with native text or existing OCR layers are skipped. The README limits the initial implementation to white-background scans and warns that handwriting or inline equations may be recognized incorrectly. A partially scanned page that already contains text can therefore fall outside this path.
The current README also documents an ultrafast mode added on October 2, 2026. That postdates our run and was not tested by it. The project says this mode uses native text positions, skips ONNX layout and OCR, and is best suited to PDFs that already contain native text. Its availability does not change the September measurements.
Audit findings and hosting require separate decisions
Our sandbox recorded 62 pip-audit advisories. The record also contains an audit packages field of 4, but supplies no scannedPackages value. Scan coverage is unknown. These are recorded dependency advisories, not demonstrated exploitability, a complete security assessment, or evidence that the translation code itself has 62 vulnerabilities.
The supplied issue extract reports that deployed instances can fetch internal addresses through caller-supplied document URLs. Issue 1188 is shown as open in the supplied extract and identifies commit 6243ca6 as the reporter's confirmed affected version. We did not reproduce the report or establish whether it applies unchanged to fc1bbbc.
Before accepting untrusted users, verify the report's status against your chosen revision and restrict outbound requests to internal networks and metadata services. The README's user-file authentication option controls access; it does not establish URL destination validation. Keep dependency triage and URL-fetching controls as separate checks.
Which adjacent project fits your workflow?
BabelDOC warns that direct API use is unsupported. Its README describes a document translation library intended for embedding, but also calls its CLI mainly a debugging tool and directs self-deployment users toward PDFMathTranslate 2.0. Investigate it as an engine dependency with those support limits in mind, rather than assuming its CLI is a supported replacement for the application.
Zotero PDF2zh integrates PDF2zh and PDF2zh_next into Zotero. Its documentation requires a running server for translation. It complements the translation engine with a reference-manager workflow; it does not remove the backend, provider configuration, or need to check the resulting PDFs.
How to read the ratings
The assessed scale is 1 to 5: 1 means major documented or observed obstacles, 2 means substantial setup or verification work, 3 means usable evidence with material unresolved limits, 4 means detailed support for the dimension with limited verification, and 5 requires strong direct evidence across that dimension. These are editorial judgments, not benchmark results. An unassessed dimension has no numerical rating.
Setup ease is 3 because installation and build completed, but the footprint and collection errors leave follow-up work. Documentation is 4 because the supplied README covers installation routes, modes, model downloads, and OCR limitations; we did not execute all its instructions. Maturity is 3 because the documented application has several interfaces, while our test command failed and dependency findings remain unresolved. Community is unassessed because the supplied independent extracts do not establish adoption, response times, or support quality.
For a useful next step, pin the intended revision and mode, resolve the collection errors in your environment, and translate representative papers. Check formulas, tables, reading order, and missing passages against the originals before relying on the output.

