Revayat — Übersetzung Englisch → Persisch
Führen Sie die neun Schritte unten in der richtigen Reihenfolge aus. Jeder Schritt ist ein Befehl plus eine Regel, was mit seiner Ausgabe zu tun ist. Improvisieren Sie keine andere Reihenfolge und überspringen Sie keinen Schritt, weil der vorherige in Ordnung schien.
Setzen Sie zwei Variablen einmal und verwenden Sie sie dann überall:
SKILL_DIR— der Ordner, der diese Datei enthält. In einem Claude Code Plugin ist es${CLAUDE_PLUGIN_ROOT}/skills/revayat.WORK— ein Arbeitsordner für dieses Buch, z. B.work/.
Jeder Befehl ist python3 $SKILL_DIR/scripts/revayat.py <phase> ….
Die fünf Regeln, die niemals gebrochen werden dürfen
- Kehren Sie persischen Text niemals um, damit er von rechts nach links gelesen wird. Die Richtung wird vom Builder festgelegt. Durch Umkehrung entsteht eine Datei, die bis auf einen Betrachter überall defekt ist.
- Erfinden, entfernen, zusammenführen, aufteilen oder ordnen Sie niemals einen
@@ id-Header neu. Geben Sie genau die zurück, die Sie erhalten haben. - Entfernen Sie niemals einen
[[fn:…]]-,**fett**-,*kursiv*- oder`wörtlich`-Marker. Sie werden gezählt; eine Abweichung führt zum Fehlschlag der Qualitätssicherung. - Bearbeiten Sie
book.jsonniemals von Hand, um eine Übersetzung zu korrigieren. Korrigieren Sie das Arbeitsblatt und führen Sie die Zusammenführung erneut aus. - Kürzen Sie das Buch niemals. Keine Zusammenfassungen, kein Überspringen eines schwierigen Satzes, keine Abschwächung. Wenn ein Schritt fehlenden Inhalt meldet, führen Sie diesen Teil erneut aus.
Schritt 1 — Überprüfen Sie die Werkzeuge
python3 $SKILL_DIR/scripts/revayat.py doctor
"ready": true→ weiter."ready": false→ führen Siepip install -r $SKILL_DIR/requirements.txtaus, dann führen Siedoctorerneut aus.optional_tools, dasnot foundanzeigt, ist für jetzt in Ordnung. Schritt 2 wird Ihnen sagen, ob OCR tatsächlich benötigt wird.
Schritt 2 — Extrahieren
python3 $SKILL_DIR/scripts/revayat.py extract "<Eingabedatei>" --out $WORK
Für eine persischsprachige Quelle fügen Sie --ocr-lang fas hinzu. Für andere Sprachen verwenden Sie den Tesseract-Code (deu, fra, ara, …).
Lesen Sie das JSON, das es ausgibt, und folgen Sie der Tabelle:
| Was Sie sehen | Was zu tun ist |
|---|---|
"kind": "digital" | nichts; es war keine OCR erforderlich |
"kind": "scanned" oder "mixed" | OCR wurde automatisch ausgeführt; überprüfen Sie ocr.probe_after.text_share ist über 0.7 |
| ein Fehler, der OCRmyPDF nennt | installieren Sie es, wie die Nachricht sagt, und führen Sie diesen Schritt erneut aus |
clean_scan.cleaned über 0 | von diesen Seiten wurde ein Farbwasserzeichen entfernt |
ocr.warning ist nicht null | lesen Sie ihn; die Datei war dennoch brauchbar, also fahren Sie fort |
page_scans_dropped über 0 | so viele ganzseitige Raster wurden als der Scan selbst erkannt, nicht als Bilder |
Der Bereiniger bearbeitet niemals Ihre Datei: Das Original bleibt unberührt und die bereinigte Kopie wird nach $WORK/cleaned.pdf geschrieben, mit einem seitenweisen Eintrag in clean_scan, was entfernt und was belassen wurde. Übergeben Sie --clean-scan off, um es ganz zu überspringen, oder --clean-scan force, wenn ein Stempel überlebt hat.
Wenn das Buch gescannt wurde, führen Sie jetzt diese beiden zusätzlichen Durchgänge durch.
Erkennungssicherheit — ohne sie ist ein falsch gelesenes Wort nicht von einem korrekten zu unterscheiden, weil beide fließend Persisch sind:
python3 $SKILL_DIR/scripts/revayat.py ocr-sidecar --pdf $WORK/ocr.pdf --out $WORK --lang fas --book $WORK/book.json
Dies schreibt source.ocr.json (pro Wort, Zeile, Block und Seite: Box, Konfidenz, Lesereihenfolge und welche Vorverarbeitung ausgeführt wurde) und source.ocr.txt, und stempelt dann jeden Block in book.json mit der Konfidenz der Region, aus der er stammt. Blöcke, die mit low bewertet werden, werden von qa check als ocr-low-confidence gemeldet, und das Akzeptieren eines solchen Blocks bedeutet, das Seitenbild anzusehen. Die Schwellenwerte sind standardmäßig 85 und 60 und verschieben sich mit --high / --low.
Illustrationen in einem Scan — eine gescannte Seite ist ein flaches Bild, daher ist ein Foto darauf kein separates Bild, bis etwas es findet:
mineru -p $WORK/cleaned.pdf -o $WORK/mineru -b pipeline -l arabic
python3 $SKILL_DIR/scripts/revayat.py extract "<Eingabedatei>" --out $WORK --figures-from-mineru $WORK/mineru
Führen Sie MinerU auf cleaned.pdf aus, nicht auf dem Original, sonst beschneidet es das Wasserzeichen, als ob es eine Abbildung wäre. Nehmen Sie nur die Bilder von MinerU. Sein eigener erkannter Text für Persisch kommt mit den Wörtern und den darin enthaltenen Buchstaben umgekehrt zurück; Tesseract mit fas liest dieselbe Seite korrekt, also bleibt der Text, wo er ist. Verwenden Sie --figures-page-offset N, wenn MinerU über einen Seitenbereich lief.
Sehen Sie sich dann das Ergebnis an, bevor Sie fortfahren:
python3 $SKILL_DIR/scripts/revayat.py qa check --book $WORK/book.json --allow-incomplete
Ignorieren Sie untranslated-block hier — es ist noch nichts übersetzt. Sie suchen nach asset-missing. Wenn stats.text_blocks für ein echtes Buch unter 20 liegt, ist die Extraktion fehlgeschlagen: siehe references/extraction.md.
Schritt 3 — Glossar
python3 $SKILL_DIR/scripts/revayat.py glossary scan \
--book $WORK/book.json --out $WORK/glossary.json
Der Bericht listet needs_persian auf, die häufigsten zuerst. Öffnen Sie $WORK/glossary.json und füllen Sie für jeden der ersten 20 Einträge vier Felder aus:
"target": "الیزابت بنت",
"later_form": "الیزابت بنت",
"first_form": "الیزابت بنت (Elizabeth Bennet)",
"locked": true
Lassen Sie first_block_id genau so, wie es ist — die Pipeline verwendet es, um zu entscheiden, welcher einzelne Block den Namen einführt. Bearbeiten Sie es nicht und entscheiden Sie nicht selbst über Ersterwähnungen.
Löschen Sie Einträge, die keine echten Namen sind. Fahren Sie dann fort.
Schritt 4 — Aufteilen in Teile
python3 $SKILL_DIR/scripts/revayat.py chunk build \
--book $WORK/book.json --out $WORK/chunks --glossary $WORK/glossary.json
Notieren Sie die Anzahl der Teile. Jedes wird zu einer Übersetzungsaufgabe.
Wenn Sie bereits einige Arbeitsblätter übersetzt haben und sich eine Eingabe seitdem geändert hat, verweigert dies die Ausführung mit "refused": "stale-worksheets", anstatt Ihnen stillschweigend Arbeitsblätter auszuhändigen, die nicht mehr zum Buch passen. Lesen Sie den angegebenen Grund erneut; fügen Sie --force nur hinzu, wenn Sie entschieden haben, dass die vorhandenen Übersetzungen noch gut sind.
Schritt 5 — Übersetzen
Erstellen Sie für jedes $WORK/chunks/chunkNNNN.md $WORK/chunks/out_chunkNNNN.md. Verwenden Sie einen separaten Unter-Agenten pro Teil, wenn Ihre Laufzeitumgebung diese hat, 8 gleichzeitig. Wenn nicht, machen Sie sie nacheinander — das Ergebnis ist dasselbe, nur langsamer.
Geben Sie dem Unter-Agenten genau dies:
Lesen Sie
$WORK/chunks/chunkNNNN.mdund schreiben Sie$WORK/chunks/out_chunkNNNN.md.Übersetzen Sie ins Persische. Lesen Sie zuerst
$SKILL_DIR/references/translation-policy.mdund befolgen Sie es.Ausgabeformat — dies ist mechanisch, machen Sie es genau richtig:
- Kopieren Sie jede
@@ <id> <art>-Zeile unverändert in derselben Reihenfolge.- Setzen Sie die persische Übersetzung in die Zeilen darunter.
- Geben Sie nichts anderes aus: keine Einleitung, kein Englisch, kein Kommentar, keine Zusammenfassung.
Regeln:
- Die Tabelle "Namen" ist verbindlich. Wenn eine Zeile sagt "erste Erwähnung, führen Sie es hier ein", verwenden Sie diese längere Form. Überall sonst verwenden Sie die Kurzform. Entscheiden Sie dies nicht selbst — die Tabelle hat es bereits getan.
- "Umgebender Text" ist nur Kontext. Übersetzen Sie ihn niemals oder kopieren Sie ihn nicht aus.
- Behalten Sie
**fett**,*kursiv*,`wörtlich`und[[fn:…]]genau so, um die entsprechenden persischen Wörter herum. Fügen Sie keine hinzu oder entfernen Sie keine.- Übersetzen Sie jede Einheit vollständig. Fassen Sie niemals zusammen oder überspringen Sie nichts.
- Um eine eigene Fußnote hinzuzufügen: Schreiben Sie
[[fn:tr-01]]in den Satz und fügen Sie am Ende einen@@ tr-01 footnote-Block mit seinem Text hinzu. Nur für eine echte kulturelle Referenz oder ein Wortspiel.
Überprüfen Sie jederzeit, was noch übrig ist:
python3 $SKILL_DIR/scripts/revayat.py chunk status --chunks $WORK/chunks
Schritt 6 — Zusammenführen
python3 $SKILL_DIR/scripts/revayat.py merge --book $WORK/book.json --chunks $WORK/chunks
| Feld | Bedeutung | Aktion |
|---|---|---|
"ok": true | alles angekommen | fahren Sie mit Schritt 7 fort |
missing_outputs | diese Teile wurden nie übersetzt | übersetzen Sie sie |
missing_units | Header wurden entfernt | führen Sie diese Teile erneut aus |
unknown_units | Header wurden erfunden | führen Sie diese Teile erneut aus |
Das erneute Ausführen der Zusammenführung nach einer Korrektur ist immer sicher.
Schritt 7 — Persische Typografie
python3 $SKILL_DIR/scripts/revayat.py falint fix --book $WORK/book.json
Nur mechanisch und sicher zweimal auszuführen. Fügen Sie --digits keep hinzu, wenn das Buch lateinische Ziffern behalten muss.
Schritt 8 — Qualitätssicherung, dann bauen
python3 $SKILL_DIR/scripts/revayat.py qa check \
--book $WORK/book.json --assets $WORK/assets --glossary $WORK/glossary.json
Bauen Sie nicht, während "ok" falsch ist. Beheben Sie es nach Fehlercode:
| Code | Bedeutung | Aktion |
|---|---|---|
untranslated-block | ein Block hat kein Persisch | übersetzen Sie diesen Teil |
footnote-marker-lost | ein [[fn:…]] wurde entfernt | führen Sie diesen Teil erneut aus |
footnote-marker-invented | ein Marker zeigt auf nichts | führen Sie diesen Teil erneut aus |
possible-omission | Zieltext viel kürzer als Quelle | lesen Sie ihn; normalerweise ein weggelassener Satzteil |
untranslated | Englisch im Persischen verblieben | führen Sie diesen Teil erneut aus |
asset-missing / asset-modified | ein Bild fehlt oder wurde verändert | extrahieren Sie erneut |
copied-source-run | ein Satzteil der Quelle lebt im Persischen weiter | führen Sie diesen Teil erneut aus |
duplicate-translation | zwei verschiedene Quellen haben dasselbe Persisch erhalten | eine Arbeitsblattantwort wurde zweimal eingefügt; führen Sie beide erneut aus |
first-mention-repeated | ein Name wird an mehr als einer Stelle eingeführt | behalten Sie die erste, entfernen Sie die restlichen |
image-order | Bilder sind im Paket in der falschen Reihenfolge | bauen Sie neu |
bookmarks-missing / bookmark-duplicate | das Inhaltsverzeichnis würde nirgendwohin oder an die falsche Stelle verlinken | bauen Sie neu |
emphasis-parity (Warnung) | Anzahl fett/kursiv geändert | überprüfen Sie eines; oft in Ordnung |
glossary-drift (Warnung) | ein gesperrter Name wurde anders wiedergegeben | führen Sie diesen Teil erneut aus |
ocr-low-confidence (Warnung) | die Engine war sich bei diesem Block unsicher | öffnen Sie das Seitenbild und vergleichen Sie |
Fügen Sie --strict hinzu, um die letzten drei ebenfalls blockierend zu machen, für Publikationsarbeit.
Übersetzen Sie den Titel und Autor des Buches in meta.title_target und meta.author_target in book.json — das ist die eine Handbearbeitung, die erwartet wird, weil es kein Arbeitsblatt dafür gibt.
Dann bauen:
python3 $SKILL_DIR/scripts/revayat.py build \
--book $WORK/book.json --assets $WORK/assets --out out/book.fa.docx \
--font "Vazirmatn" --size 11.5
Nützliche Flags: --font Tahoma, wenn die Datei auf einem Rechner ohne persische Schriftarten gerendert werden muss; --heading-size source, um die ursprünglichen Überschrift-Punktgrößen zu reproduzieren; --template ref.docx, um Stile von einer vorhandenen Word-Datei zu übernehmen. Vollständige Liste in references/docx-and-ooxml.md.
Schritt 9 — Überprüfen und Berichten
python3 $SKILL_DIR/scripts/revayat.py qa docx --file out/book.fa.docx --book $WORK/book.json
Wenn "ok": false, beheben Sie es, bevor Sie dem Benutzer mitteilen, dass die Datei fertig ist.
Dann berichten Sie: wo die Datei ist, wie viele Kapitel, Bilder und Fußnoten sie hat, alles, was die Qualitätssicherung markiert hat und worauf Sie sich entschieden haben, nicht zu reagieren, und diese Einschränkung —
Word fließt Text um, daher kann ein bearbeitbares persisches Dokument nicht seitengetreu mit dem Quell-PDF identisch sein. Bildbytes und physikalische Größe, Kapitelstruktur, Hervorhebungen, Fußnoten und Kapitelverknüpfungen sind exakt.
Referenzen
Lesen Sie diese nur, wenn der Schritt darauf verweist:
references/translation-policy.md— was dem übersetzenden Unter-Agenten gegeben werden sollreferences/persian-typography.md— RTL, ZWNJ, Interpunktion, gemischte Schriftenreferences/extraction.md— OCR-Routing, Wasserzeichen, schwierige Bücherreferences/glossary-and-voice.md— Namensrichtlinie, Aliasse, Charakterstimmereferences/docx-and-ooxml.md— jede Build-Option und was sie erzeugtreferences/troubleshooting.md— die Fehler, auf die Sie am wahrscheinlichsten stoßen