14.2 KiB · file hash computed
Markdown · original UTF-8 line locators · 14.2 KiB
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_url is 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, the license_notice your document must carry, and scan_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, pypdf can extract the embedded page images (page.images), since most of these scans are one image per page. OCR (Tesseract with rus+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.md beside this file lists common cases and false friends.
  • Names: use the Latin spelling metadata.authors gives 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 1970 becomes May 4, 1970.

Before you submit

  1. Every page of the PDF has its marker, with this paper's whole text on that page below it.
  2. Every displayed formula, table and summary is present.
  3. No Cyrillic words remain in the body outside cited-form spans: