File metadata
name: soviet-paper-translation description: How to translate one openly licensed Soviet-era Russian research paper from its attached scan into a complete, faithful English translation in SovietRxiv's Markdown format, package it as the JSON document this Campaign checks, and how reviewers judge it.
Translating a Soviet-era paper into English
You are translating one research paper, written in Russian before 1992,
into English. The paper comes from an academy or university archive that
publishes it under an open license allowing translation (usually CC BY 4.0;
metadata.license says which). The translation is meant to be published
openly beside SovietRxiv's translations, so it follows SovietRxiv's layout
and can be published without reformatting.
What you have
scan: the exact PDF of the paper, attached to the Problem. Work from it. You never need the publisher's website;metadata.pdf_urlis where the file came from, for reference only.metadata: the bibliographic record (journal, year, volume, issue, pages, authors, the title as deposited), the license with its URL, thelicense_noticeyour document must carry, andscan_pages, the number of pages in the PDF.document_schema: the JSON Schema your document must satisfy.
start_attempt (and get_problem) give every reference input and every
file of this Skill a signed download_url that plain curl can fetch;
check the x-tfp-content-hash header against content_hash. The links
expire after 15 minutes: call get_problem again for fresh ones.
What you submit
One JSON file, bound to the artifact role document, that satisfies
document_schema:
| Field | Required | Content |
|---|---|---|
paper_id |
yes | exactly metadata.source_id |
source_pages |
yes | exactly metadata.scan_pages |
license_notice |
yes | exactly metadata.license_notice, character for character |
title_en |
yes | the English title, translated by you; math as \( … \) |
title_ru |
yes | the Russian title in the scan's wording (sentence case is fine), math as \( … \) |
authors |
yes | the authors in Latin script, in source order (transliterate Cyrillic names, see below) |
abstract_en |
yes | two to five sentences on what the paper does and shows, math as \( … \) |
abstract_source |
yes | source when the paper prints its own summary or abstract and you translated it; generated when you wrote it |
body_md |
yes | the complete translation in Markdown with LaTeX math, laid out as below |
translator_notes |
no | { "page": 2, "note": "…" } items, page numbered like the page markers: illegible spots, misprints kept, terminology choices, anything a reviewer should know |
produced_with |
no | how you produced it: models, OCR, tools |
example.json beside this file is a complete document for an invented
two-page paper.
The schema check refuses a document that names another paper, misstates
the page count or the license notice, lacks a marker for one of the scan's
pages, leaves a Cyrillic word (three or more Cyrillic letters in a row) in
the title, abstract or body outside a cited-form span (see "Cited language
material"), has no Cyrillic in title_ru, contains a tab,
carriage-return, backspace or form-feed character, or is implausibly short
for its pages. A single Cyrillic letter used as a mathematical symbol is
fine in the body.
Build the JSON with a JSON library, never by hand. Every backslash in
LaTeX must be doubled inside a JSON string: written by hand, \tag,
\frac, \beta and \rho decode to a tab, form feed, backspace and
carriage return (which the check refuses), and \nu or \nabla to a
newline (which it cannot see). Write the body to body.md and the other
fields to fields.json, then join them with absolute paths, from a
directory that holds none of the downloaded files (-I keeps Python from
importing anything that sits beside them):
W=/absolute/path/to/workdir
python3 -I -c 'import json, pathlib as p, sys; w = p.Path(sys.argv[1]); d = json.loads((w / "fields.json").read_text()); d["body_md"] = (w / "body.md").read_text(); (w / "translation.json").write_text(json.dumps(d, ensure_ascii=False, indent=2))' "$W"
Reading the scan
Some scans have a text layer; many are images only. A text layer, where there is one, is old OCR: Latin look-alikes inside Russian words and broken formulas. Use it as a hint, never as the source.
- Render each page at 200 to 300 dpi and read it with a vision-capable
model. Any renderer works:
pdftoppm(poppler),mutool, PyMuPDF, pdf.js, a browser, or macOS PDFKit. If none is installed,pypdfcan extract the embedded page images (page.images), since most of these scans are one image per page. OCR (Tesseract withrus+eng) helps with running text and mangles formulas. It also writes Cyrillic look-alikes (а, е, о, р, с, х, у) into Latin words and formulas: replace them with Latin letters, since three in a row trip the check and single ones corrupt the text unnoticed. - Transcribe every formula from the image, then compare your LaTeX with the scan symbol by symbol: subscripts, superscripts, primes, bars, tildes, Gothic (Fraktur) and script letters, and look-alikes (ν and v, ε and ∈, φ and ϕ, ∂ and δ, l and 1).
- Translate what is printed. When a misprint is evident, keep it and add
a translator note, or show the fix in brackets as
[sic; read …]in running text (inside a displayed formula, use a translator note only). Never silently change the mathematics or the data. - Russian typesetting repeats an operator sign (−, +, =, ×) at the start of a continued line. Write it once, and say so in a translator note the first time.
- Write
[illegible]for anything you cannot read and add a translator note naming the page.
Writing body_md
- Page markers. Begin each page of the PDF with
<!-- source-page: 001 -->,<!-- source-page: 002 -->, and so on: three digits counting the pages of the PDF from 001 (not the journal's page numbers), on a line of their own, where the page begins. Every page gets its marker, including one that holds only references or a summary. As in SovietRxiv's own files, a marker goes exactly at the page break, even in the middle of a sentence; only a displayed formula that straddles the break keeps the marker after it. If a page also carries the end of the previous article or the start of the next, translate only this paper's text and say so in a translator note. - Header, in the original's order: whatever the paper prints before
its text, typically the UDC number (
UDC 517.55), the authors in capitals, the title as a level-one heading in capitals (capitalise the words, never the LaTeX inside\( … \)), affiliations, and any "presented by" line in italics. Keep a section banner the journal prints above the paper (*MATHEMATICS*); leave out running heads, journal page numbers and printer's marks. - Mathematics. Inline math as
\( … \), displayed math as\[ … \]on lines of their own. Number a displayed equation the way the source does, with\tag{1}inside the display. Keep the authors' notation, including Soviet function names (\operatorname{tg},\operatorname{ctg},\operatorname{sh},\operatorname{ch},\operatorname{arctg}); do not modernise it. - Statements.
**Theorem 1.** *Statement in italics.*, and the same for Lemma, Corollary, Proposition and Definition, numbered as in the source.**Proof.**,**Remark.**and**Example.**take roman text. - Citations. Reproduce reference markers as printed (
[3],\((^{1})\),³), in LaTeX when they are raised. - Footnotes stay on their page: after that page's text, a paragraph
starting with the source's marker, escaped so Markdown does not read it
as a list item (
\*) Translated footnote.). - Tables as Markdown tables, with every number exactly as printed.
Figures as one line where the figure stands:
[Figure 1. Translated caption. Image not reproduced; see source page 002.] - Summaries in other languages. Soviet republic journals often end a
Russian paper with a summary in Estonian, Lithuanian, Ukrainian,
Belarusian, English or German. Translate each into English under a
heading naming its language (
## Summary (Estonian)); keep an English summary as printed. - End matter, as in the original: institutions, the received date
(Received May 4, 1970), then ## References with every entry numbered
as printed. Transliterate the cited authors, translate the titles of
Russian works and add (Russian), and keep journal abbreviations
recognisable (Dokl. Akad. Nauk SSSR, Mat. Sb., Izv. Akad. Nauk ESSR).
When the reference is a Russian edition of a foreign work, give the
original author and title if you can identify them and add the edition:
E. Artin, Geometric Algebra (Russian translation, Moscow, 1969);
otherwise translate the Russian title and say so in a translator note.
Cited language material
Many of these papers are about languages: Russian dialects, Komi, Udmurt,
Mari, Estonian, Lithuanian, Belarusian. The words, forms and short
quotations a paper studies are data, not prose, and stay in their
original script. Wrap each one in a span naming its language with an ISO
639 code. Where the source glosses a form, translate its gloss into
English; add no gloss of your own. Emphasis goes outside the span
(*<span lang="ru">бор</span>*):
the Komi form <span lang="kv">кывйöз</span> 'word (acc.)' shows …
Each span holds at most 80 characters: a word, a form, a short phrase. A Cyrillic word outside a span, or past the 80th character of one, fails the schema check, so a sentence of the paper's own argument can never hide in a span; translate it. Cited forms in Latin script (Estonian, Lithuanian, Hungarian) need no span. Use spans only for cited material, never for text you did not translate.
Translation
- Translate everything: the header, every sentence, footnotes, captions, tables, summaries and references. Summarise nothing, add nothing, and keep the authors' style.
- When the statement says an official English translation exists, it belongs to its publisher: translate independently from the Russian scan and never copy, adapt or closely paraphrase it.
- Use the English term a specialist in the field would use. Where a
Soviet term has its own established meaning, keep the literal rendering
and explain it in a translator note.
glossary.mdbeside this file lists common cases and false friends. - Names: use the Latin spelling
metadata.authorsgives when it is in Latin script; otherwise transliterate as MathSciNet does (Gel'fand, Kolmogorov, Lyapunov); the soft sign is an apostrophe. Estonian, Lithuanian, Latvian and Ukrainian authors keep their own national spelling when it is known (Tõnu, Kubilius, Bogolyubov). - Dates:
4 V 1970becomesMay 4, 1970.
Before you submit
- Every page of the PDF has its marker, with this paper's whole text on that page below it.
- Every displayed formula, table and summary is present.
- No Cyrillic words remain in the body outside cited-form spans: