Infografik-PDF lokalisieren (grafiktreu)
Erstellen Sie eine übersetzte Version eines Design-PDFs, die identisch zum Original aussieht, außer dass jeder Textblock in die Zielsprache umgewandelt ist. Die Funktionsweise: Die Seite wird gerastert, der Quelltext gelöscht und die Übersetzung an denselben Koordinaten wieder eingefügt – das Kunstwerk (Fotos, Diagramme, Farbverläufe, Symbole, Logos) wird nie neu generiert.
Warum dieser Workflow (zuerst lesen)
Design-exportierte PDFs speichern den sichtbaren Text meist als Vektorkonturen (Text-zu-Pfad) oder Type3-Glyphen – es ist KEIN bearbeitbarer Text, und es gibt keine saubere Möglichkeit, den Text zu "ersetzen". Aber diese PDFs enthalten fast immer auch eine versteckte, durchsuchbare Textebene, deren Wortboxen pixelgenau mit dem sichtbaren Text ausgerichtet sind. Diese Ebene liefert kostenlos genaue Positionen/Größen. Also: Versuchen Sie nicht, den Text zu bearbeiten, und verwenden Sie kein generatives Bildmodell, um den Hintergrund "nachzumalen" – das verändert das Kunstwerk und kann nicht pixelgenau sein. Stattdessen: Abdecken und überlagern: Jede Quellglyphe löschen und die Übersetzung an Ort und Stelle neu zeichnen. Der Hintergrund bleibt bytegenau. Siehe references/pipeline.md für die tiefergehende Begründung und Fehlermodi.
Workflow (Skripte der Reihe nach ausführen aus dem scripts/-Verzeichnis des Skills)
Wählen Sie ein Arbeitsverzeichnis (Standard: loc_work). Alle Skripte akzeptieren SOURCE.pdf [OUTDIR] [PAGE].
-
Analysieren –
01_analyze.py SOURCE.pdf OUTDIRBestätigt, wie der Text gespeichert ist, listet eingebettete Bilder auf, rendert die Seite. Betrachten Sie das gerenderte Bild und notieren Sie Texte, die in ein Diagramm/Logo/Foto eingebettet sind (diese werden NICHT in der Textebene sein und müssen alsmanual_labelsbehandelt werden). -
Extrahieren –
02_extract.py SOURCE.pdf OUTDIR(UmgebungsvariableLOC_KEEP='brandA|brandB', um mehr Zeichenketten in der Ausgangssprache zu behalten). Erzeugtunits.json(ein Eintrag pro physischer Textzeile, mit Bounding-Box/Farbe/Größe) undtranslator_source.txt(eine lesbare, mit IDs markierte Nutzlast) +half_*.png. -
Übersetzen – Beauftragen Sie einen Übersetzungsagenten. Geben Sie ihm
translator_source.txtundhalf_0/1.png. Er mussOUTDIR/translation.json = {"<id>":"译文", ...}schreiben, das jede ID abdeckt (KEEP-AS-IS-IDs unverändert übernehmen). Verwenden Sie die Eingabeaufforderung inreferences/agent-prompts.md. -
Overrides (nur bei Bedarf) – Schreiben Sie
OUTDIR/overrides.jsonfür die dokumentenspezifischen Teile, die die Automatik nicht sehen kann: in Bilder eingebettete Texte (manual_labels), Texte in dünnen, umrandeten Steuerelementen wie Pills/Badges (solid_fill_labels), zentrierte Beschriftungszonen (centered_id_ranges) unddrop_ids. Schema + Anleitung zum Messen von Koordinaten:references/overrides.md. Die meisten einfachen Flyer benötigen keine Overrides; diagrammlastige benötigen einige wenige. -
Komponieren –
03_compose.py SOURCE.pdf OUTDIR→final_zh.png. Dies ist die deterministische Engine (Hintergrundrekonstruktion + größenvereinheitlichtes Neuzeichnen). Sie benötigt keine dokumentenspezifische Abstimmung. -
PDF + Ausschnitte –
04_pdf.py SOURCE.pdf OUTDIR OUT.pdf→ das PDF sowiezh_L/zh_R.pngfür die Qualitätssicherung. -
Überprüfen & iterieren – Beauftragen Sie einen Überprüfungsagenten, der
zh_L/zh_R.pngmithalf_0/1.pngvergleicht (Eingabeaufforderung inreferences/agent-prompts.md). Beheben Sie die Ergebnisse durch Bearbeiten vonoverrides.json/translation.jsonund führen Sie 03→04 erneut aus. Wiederholen, bis alles sauber ist. Typische Probleme und deren Behebungen sind inreferences/pipeline.mdaufgeführt.
Der 3-Rollen-Zyklus (Übersetzer → Komponist → Überprüfer) spiegelt ein menschliches Lokalisierungsteam wider; 1–2-maliges Durchführen der Überprüfung fängt die Langzeitfehler ein (restlicher Quelltext, falsch dimensionierte Blöcke).
Was die Engine automatisch verarbeitet (keine Konfiguration)
- Helle-Texte-auf-dunklem-Hintergrund UND dunkle-Texte-auf-hellem-Hintergrund-Panels (wählt die richtige Hintergrundfarbe).
- Ebene Panels, glatte Farbverläufe und Fotohintergründe (wählt pro Region Füllung oder Inpainting).
- "Geister"-Textebeneneinträge, die keine sichtbaren Glyphen haben (automatisch übersprungen – nie gezeichnet).
- Aufzählungslisten, bei denen das Aufzählungszeichen in die erste Zeilenbox geschluckt wurde (automatisch neu ausgerichtet).
- Schriftgröße: Originalgröße, pro Block vereinheitlicht, sodass umbrochene Absätze/Zitate nicht ausfransen.
Standardeinstellungen & Anforderungen
- Python:
pymupdf (fitz),numpy,opencv-python (cv2),Pillow. - CJK-Schriftart standardmäßig
Hiragino Sans GB.ttc(macOS; W3 regular Index 0 / W6 bold Index 2). Überschreiben überoverrides.json"font"für andere Sprachen/Schriftarten. - Render-Skalierung standardmäßig 6.0 (≈432 dpi). Für Geschwindigkeit während der Iteration auf 4 senken; für Druck erhöhen.
- Standardmäßig in der Ausgangssprache behalten: URLs, E-Mails, Marken-/Produktmarken, Logos mit eingebettetem Text, reine Zahlen/Einheiten und Eigennamen. Der Übersetzer entscheidet; der KEEP-Regex markiert die Offensichtlichen vor.
Referenzdateien
references/pipeline.md– Begründung, Entscheidungsbaum für die Entfernungsstrategie und ein Katalog üblicher visueller Fehler mit ihren genauen Behebungen (Streifen, Rückstände, zerbrochene Pills, Größenkollaps).references/agent-prompts.md– gebrauchsfertige Eingabeaufforderungen für Übersetzer- und Überprüfungsagenten.references/overrides.md– Schema füroverrides.jsonund Anleitung zum Messen von Diagramm-/Pill-Koordinaten.