Communitygithub.com

sulipapa/localize-infographic-pdf

PDF-Lokalisierung mit Erhalt der Grafik (z.B. EN→ZH) für design-exportierte Infografiken/Einseiter – ein Claude Code Skill, der Vektor-/Type3-Quelltext löscht und die Übersetzung an Ort und Stelle neu zeichnet.

Was ist localize-infographic-pdf?

Dieser Skill ermöglicht die Lokalisierung von design-exportierten PDFs (z. B. Infografiken, Einseiter), bei denen der sichtbare Text als Vektorkonturen oder Type3-Glyphen vorliegt und nicht direkt bearbeitet werden kann. Stattdessen wird die Seite gerastert, der Quelltext gelöscht und die Übersetzung an den exakt gleichen Koordinaten neu eingefügt, während das gesamte Kunstwerk (Fotos, Diagramme, Grafiken, Logos) unverändert bleibt. Der Skill unterstützt einen Workflow mit Analyse-, Extraktions-, Übersetzungs-, Kompositions- und Überprüfungsschritten und lässt sich über eine JSON-Konfiguration (overrides.json) anpassen. Er ist für Claude Code optimiert und nutzt Python-Bibliotheken wie PyMuPDF, OpenCV und NumPy.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add sulipapa/localize-infographic-pdf

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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].

  1. Analysieren – 01_analyze.py SOURCE.pdf OUTDIR Bestä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 als manual_labels behandelt werden).

  2. Extrahieren – 02_extract.py SOURCE.pdf OUTDIR (Umgebungsvariable LOC_KEEP='brandA|brandB', um mehr Zeichenketten in der Ausgangssprache zu behalten). Erzeugt units.json (ein Eintrag pro physischer Textzeile, mit Bounding-Box/Farbe/Größe) und translator_source.txt (eine lesbare, mit IDs markierte Nutzlast) + half_*.png.

  3. Übersetzen – Beauftragen Sie einen Übersetzungsagenten. Geben Sie ihm translator_source.txt und half_0/1.png. Er muss OUTDIR/translation.json = {"<id>":"译文", ...} schreiben, das jede ID abdeckt (KEEP-AS-IS-IDs unverändert übernehmen). Verwenden Sie die Eingabeaufforderung in references/agent-prompts.md.

  4. Overrides (nur bei Bedarf) – Schreiben Sie OUTDIR/overrides.json fü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) und drop_ids. Schema + Anleitung zum Messen von Koordinaten: references/overrides.md. Die meisten einfachen Flyer benötigen keine Overrides; diagrammlastige benötigen einige wenige.

  5. 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.

  6. PDF + Ausschnitte – 04_pdf.py SOURCE.pdf OUTDIR OUT.pdf → das PDF sowie zh_L/zh_R.png für die Qualitätssicherung.

  7. Überprüfen & iterieren – Beauftragen Sie einen Überprüfungsagenten, der zh_L/zh_R.png mit half_0/1.png vergleicht (Eingabeaufforderung in references/agent-prompts.md). Beheben Sie die Ergebnisse durch Bearbeiten von overrides.json / translation.json und führen Sie 03→04 erneut aus. Wiederholen, bis alles sauber ist. Typische Probleme und deren Behebungen sind in references/pipeline.md aufgefü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 über overrides.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ür overrides.json und Anleitung zum Messen von Diagramm-/Pill-Koordinaten.

Verwandte Skills