Communitygithub.com

sulipapa/localize-infographic-pdf

Localización de PDFs conservando el arte (ej. EN→ES) para infografías/una página exportadas de diseño — una skill de Claude Code que borra texto vectorial/Type3 y redibuja la traducción en su lugar.

¿Qué es localize-infographic-pdf?

Esta skill de Claude Code permite localizar (traducir) el texto de infografías, volantes y documentos de una página en formato PDF, manteniendo intacto el arte original (fotos, gráficos, gradientes, iconos, logotipos). Funciona rasterizando la página, eliminando el texto visible existente (que suele ser curvas vectoriales o glifos Type3, no texto seleccionable) y superponiendo la traducción en las mismas coordenadas. Utiliza la capa de texto oculta del PDF para obtener las posiciones y dimensiones exactas de cada bloque de texto, y un motor determinístico de composición que maneja automáticamente fondos claros/oscuros, listas con viñetas, y unificación de tamaño de fuente por bloque. El flujo de trabajo implica tres roles: un traductor (agente que genera las traducciones), un compositor (script que dibuja el texto traducido), y un revisor (agente que compara el resultado con el original). Es ideal para diseñadores, equipos de localización y desarrolladores que necesitan traducir materiales visuales sin tener que reeditar el archivo fuente de diseño.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Localizar PDF de Infografía (conservando el arte)

Produce una versión traducida de un PDF de diseño que se ve idéntico al original, excepto que cada fragmento de texto corrido se intercambia por el idioma de destino. Funciona rasterizando la página, borrando el texto fuente y componiendo la traducción de nuevo en las mismas coordenadas: la obra de arte (fotos, gráficos, degradados, iconos, logotipos) nunca se regenera.

Por qué esta canalización (léase primero)

Los PDFs exportados de diseño generalmente almacenan el texto visible como contornos vectoriales (texto a curvas) o glifos Type3 — NO es texto editable y no hay una forma limpia de "reemplazar el texto". Pero estos PDFs casi siempre también contienen una capa de texto oculta y buscable cuyos cuadros de palabra están alineados por píxel con el texto visible. Esa capa proporciona posiciones/tamaños exactos de forma gratuita. Por lo tanto: no intente editar el texto y no use un modelo de imagen generativo para "repintar" el fondo — eso altera la obra de arte y no puede ser fiel al píxel. En su lugar, cubra y superponga: borre cada ejecución de glifo fuente y redibuje la traducción en su lugar. El fondo permanece fiel al byte. Consulte references/pipeline.md para conocer la justificación más profunda y los modos de fallo.

Flujo de trabajo (ejecute los scripts en orden desde la carpeta scripts/ de la skill)

Elija un directorio de trabajo (por defecto loc_work). Todos los scripts toman SOURCE.pdf [OUTDIR] [PAGE].

  1. Analizar — 01_analyze.py SOURCE.pdf OUTDIR Confirma cómo se almacena el texto, enumera las imágenes incrustadas, renderiza la página. Mire el renderizado y observe cualquier texto que esté integrado en una imagen de gráfico/logotipo/foto (NO estará en la capa de texto y debe manejarse como manual_labels).

  2. Extraer — 02_extract.py SOURCE.pdf OUTDIR (env LOC_KEEP='marcaA|marcaB' para conservar más cadenas en el idioma de origen). Produce units.json (una entrada por línea de texto física, con bbox/color/tamaño) y translator_source.txt (una carga útil legible con etiquetas de ID) + half_*.png.

  3. Traducir — envíe un agente traductor. Entréguele translator_source.txt y half_0/1.png. Debe escribir OUTDIR/translation.json = {"<id>":"traducción", ...} cubriendo cada id (repita los ids COMO-ESTÁN sin cambios). Use el mensaje en references/agent-prompts.md.

  4. Anulaciones (solo si es necesario) — escriba OUTDIR/overrides.json para los elementos por documento que el motor automático no puede ver: texto integrado en imágenes (manual_labels), texto dentro de controles delineados finos como píldoras/insignias (solid_fill_labels), zonas de etiqueta centradas (centered_id_ranges), y drop_ids. Esquema + cómo medir coordenadas: references/overrides.md. La mayoría de los volantes simples no necesitan anulaciones; los cargados de gráficos necesitan algunas.

  5. Componer — 03_compose.py SOURCE.pdf OUTDIR → final_es.png. Este es el motor determinista (reconstrucción de fondo + redibujo unificado por tamaño). No necesita ajustes por documento.

  6. PDF + recortes — 04_pdf.py SOURCE.pdf OUTDIR OUT.pdf → el PDF más es_L/es_R.png para QA.

  7. Revisar e iterar — envíe un agente revisor para comparar es_L/es_R.png contra half_0/1.png (mensaje en references/agent-prompts.md). Corrija los hallazgos editando overrides.json / translation.json y volviendo a ejecutar 03→04. Repita hasta que esté limpio. Los problemas típicos y sus correcciones se listan en references/pipeline.md.

El bucle de 3 roles (traductor → compositor → revisor) refleja un equipo humano de localización; ejecutar el revisor 1–2 veces captura la larga cola (texto fuente residual, bloques mal dimensionados).

Qué maneja el motor automáticamente (sin configuración)

  • Paneles de texto claro-sobre-oscuro Y oscuro-sobre-claro (elige el color de fondo correcto).
  • Paneles planos, degradados suaves y fondos fotográficos (elige relleno vs. inpintado por región).
  • Entradas de capa de texto "fantasma" que no tienen glifos visibles (se omiten automáticamente — nunca se dibujan).
  • Listas con viñetas donde la viñeta se tragó en el cuadro de la primera fila (realineación automática).
  • Tamaño de fuente: tamaño original, unificado por bloque para que párrafos/citas envueltos no queden desiguales.

Valores predeterminados y requisitos

  • Python: pymupdf (fitz), numpy, opencv-python (cv2), Pillow.
  • Fuente CJK predeterminada Hiragino Sans GB.ttc (macOS; W3 regular índice 0 / W6 negrita índice 2). Anule mediante overrides.json "font" para otros idiomas/fuentes.
  • Escala de renderizado predeterminada 6.0 (≈432 ppp). Reduzca a 4 para velocidad durante la iteración; aumente para impresión.
  • Conservar en el idioma de origen por defecto: URL, correos electrónicos, marcas comerciales/productos, texto incrustado de logotipos, números/unidades simples y nombres propios. El traductor decide; la expresión regular KEEP pre-marca lo obvio.

Archivos de referencia

  • references/pipeline.md — justificación, el árbol de decisión de la estrategia de eliminación y un catálogo de defectos visuales comunes con sus correcciones exactas (rayas, residuos, píldoras rotas, colapso de tamaño).
  • references/agent-prompts.md — mensajes de agente traductor y revisor listos para copiar y pegar.
  • references/overrides.md — esquema de overrides.json y cómo medir coordenadas de gráficos/píldoras.

Skills relacionados