Layout-preserving PDF translation
Run a formatted report through an ordinary translator and you get text. The charts, the score bars, the boxed findings — the parts that actually carry the result — are gone. Page-for-Page renders the original and the translation side by side, looks at them, and corrects whatever does not line up — then looks again. Same trim size, same charts with the same values, same colours, same running heads.
It is an open-source Claude skill. Install it and run your own documents through it.
Values read out of the source file itself — not estimated.
How it works
Every colour, band width, row pitch and axis position already exists in the source file. The work is reading them out instead of approximating them by eye — which is the difference between a page that matches and one that only nearly does.
Trim size, exact hex fills, chart geometry and type scale are read from the file at 150 dpi. Values that exist only as pixels — a normative range, a mean marker — are recovered by measurement rather than dropped or invented.
Where the layout is dense and graphical, the text layer is replaced in place and every logo and chart stays the original vector. Where the target language runs longer and needs to reflow, the page is rebuilt from the measurements. The fit is checked before committing either way.
Both files are rendered to page-pair images and read side by side: bar directions, arrow directions, label attachment, missing glyphs, and every number against the original. Whatever is off gets fixed and the pages are rendered again. Two or three rounds is normal — and none of it is visible to a text diff, which is why the check has to be a look.
Proof
Prose is the easy part. A flow chart is not: the meaning lives in arrow direction, in which label is attached to which node, and in the order the nodes are read. Every word can be translated correctly and the picture can still say something else — and a text diff will report no difference at all. That is the reason the check has to be a look.
Then every page, side by side
A five-page assessment report, Korean to English. Source on the left of each pair, output on the right. The graded band chart keeps its bar values and sides, the facet chart keeps its midzone marks, and the practitioner chart keeps its range bars, mean ticks and scores.
The document shown is a fictional assessment instrument — invented publisher, invented respondent, invented scores — built so the example can be shown publicly. It does not correspond to any real instrument, organisation or person. The reversed arrow above is a real failure class, reproduced here on that sample rather than screenshotted from the document it was first caught on.
Run it yourself
Two commands. Then ask Claude to translate a PDF and mention that the format should stay the same — it picks the route, measures the source, lifts the logos, and checks its own output. Everything below is in the repository: the skill, the scripts, the reference notes, and the sample document shown above.
# in Claude Code or Cowork /plugin marketplace add modocai/pdf-translate-layout /plugin install pdf-translate@modoc
Needs poppler-utils, ImageMagick, and Python pillow · pymupdf · playwright. A bundled preflight script checks all of it.
What you get
No tokens, no setup
Running this costs Claude tokens, and not everyone has them to spend — or wants to install a toolchain to translate one document. Email the PDF and the language you want and we will run it and send the result back.
No account, no payment page. We are doing this because we want to see what people bring us.
Tell us the target language. If the document is confidential, say so before you send anything and we'll agree how to handle it — or just run the skill yourself, which keeps the file on your own machine.