Communitygithub.com

sulipapa/localize-infographic-pdf

Localização de PDF com preservação de arte (ex. EN→PT) para infográficos/one-pagers exportados de design — uma skill para Claude Code que apaga texto vetorial/Type3 de origem e redesenha a tradução no mesmo lugar.

O que é localize-infographic-pdf?

Esta skill para Claude Code permite localizar PDFs de design (como infográficos e one-pagers) mantendo a arte visual intacta — fotos, gráficos, gradientes, ícones e logotipos não são regenerados. Ela funciona rasterizando a página, apagando o texto de origem (que geralmente está em curvas vetoriais ou glifos Type3, sem edição direta) e compondo a tradução nas mesmas coordenadas, usando a camada de texto oculta do PDF para obter posições precisas. O fluxo de trabalho é composto por scripts Python que analisam, extraem, compõem e geram o PDF final, com suporte a revisão iterativa via agentes. É ideal para desenvolvedores e tradutores que precisam localizar materiais visuais sem comprometer a fidelidade pixel dos elementos gráficos.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Localizar PDF de Infográfico (preservando a arte)

Produz uma versão traduzida de um PDF de design que parece idêntico ao original, exceto que cada pedaço de texto corrente é trocado pelo idioma de destino. Funciona rasterizando a página, apagando o texto de origem e compondo a tradução de volta nas mesmas coordenadas — a arte (fotos, gráficos, gradientes, ícones, logotipos) nunca é regenerada.

Por que este pipeline (leia primeiro)

PDFs exportados de design geralmente armazenam o texto visível como contornos vetoriais (texto-para-curvas) ou glifos Type3 — NÃO é texto editável, e não há uma maneira limpa de "substituir o texto". Mas esses PDFs quase sempre também carregam uma camada de texto oculta e pesquisável cujas caixas de palavra estão alinhadas aos pixels do texto visível. Essa camada fornece posições/tamanhos exatos de graça. Portanto: não tente editar o texto e não use um modelo de imagem generativo para "repintar" o fundo — isso altera a arte e não pode ser fiel aos pixels. Em vez disso, cubra e sobreponha: apague cada trecho de glifo de origem e redesenhe a tradução no lugar. O fundo permanece fiel aos bytes. Consulte references/pipeline.md para a lógica mais profunda e os modos de falha.

Fluxo de trabalho (execute os scripts em ordem da pasta scripts/ da skill)

Escolha um diretório de trabalho (padrão loc_work). Todos os scripts aceitam SOURCE.pdf [OUTDIR] [PAGE].

  1. Analisar — 01_analyze.py SOURCE.pdf OUTDIR Confirma como o texto está armazenado, lista imagens incorporadas, renderiza a página. Observe a renderização e anote qualquer texto que esteja incorporado em uma imagem de gráfico/logotipo/foto (ele NÃO estará na camada de texto e deve ser tratado como manual_labels).

  2. Extrair — 02_extract.py SOURCE.pdf OUTDIR (env LOC_KEEP='brandA|brandB' para manter mais strings no idioma de origem). Produz units.json (uma entrada por linha de texto física, com bbox/cor/tamanho) e translator_source.txt (um payload legível, com IDs) + half_*.png.

  3. Traduzir — despache um agente tradutor. Dê a ele translator_source.txt e half_0/1.png. Ele deve escrever OUTDIR/translation.json = {"<id>":"译文", ...} cobrindo cada id (repita os ids KEEP-AS-IS inalterados). Use o prompt em references/agent-prompts.md.

  4. Substituições (apenas se necessário) — escreva OUTDIR/overrides.json para os bits por documento que o motor automático não consegue ver: texto incorporado em imagens (manual_labels), texto dentro de controles finos com traçado, como pílulas/emblemas (solid_fill_labels), zonas de rótulo centralizadas (centered_id_ranges), e drop_ids. Esquema + como medir coordenadas: references/overrides.md. A maioria dos panfletos simples não precisa de substituições; os com muitos gráficos precisam de algumas.

  5. Compor — 03_compose.py SOURCE.pdf OUTDIR → final_zh.png. Este é o motor determinístico (reconstrução de fundo + redesenho de tamanho unificado). Ele não precisa de ajustes por documento.

  6. PDF + recortes — 04_pdf.py SOURCE.pdf OUTDIR OUT.pdf → o PDF mais zh_L/zh_R.png para QA.

  7. Revisar e iterar — despache um agente revisor para comparar zh_L/zh_R.png com half_0/1.png (prompt em references/agent-prompts.md). Corrija os achados editando overrides.json / translation.json e executando 03→04 novamente. Repita até ficar limpo. Problemas típicos e suas correções estão listados em references/pipeline.md.

O loop de 3 papéis (tradutor → compositor → revisor) espelha uma equipe de localização humana; rodar o revisor 1–2 vezes captura a cauda longa (texto de origem residual, blocos com tamanho incorreto).

O que o motor trata automaticamente (sem configuração)

  • Painéis com texto claro EM fundo escuro E texto escuro em fundo claro (escolhe a cor de fundo correta).
  • Painéis lisos, gradientes suaves e fundos de foto (escolhe preenchimento vs. inpaint por região).
  • Entradas "fantasmas" da camada de texto que não têm glifos visíveis (puladas automaticamente — nunca desenhadas).
  • Listas com marcadores onde o marcador foi engolido na caixa da primeira linha (realinhamento automático).
  • Tamanho da fonte: tamanho original, unificado por bloco para que parágrafos/citações quebradas não fiquem desalinhados.

Padrões e requisitos

  • Python: pymupdf (fitz), numpy, opencv-python (cv2), Pillow.
  • Fonte CJK padrão Hiragino Sans GB.ttc (macOS; W3 regular índice 0 / W6 negrito índice 2). Substitua via overrides.json "font" para outros idiomas/fontes.
  • Escala de renderização padrão 6.0 (≈432 dpi). Reduza para 4 para velocidade durante iterações; aumente para impressão.
  • Mantenha no idioma de origem por padrão: URLs, e-mails, marcas comerciais/produtos, texto incorporado em logotipos, números/unidades simples e nomes próprios. O tradutor decide; a regex KEEP pré-marca os óbvios.

Arquivos de referência

  • references/pipeline.md — lógica, a árvore de decisão da estratégia de remoção e um catálogo de defeitos visuais comuns com suas correções exatas (rastros, resíduos, pílulas quebradas, colapso de tamanho).
  • references/agent-prompts.md — prompts prontos para copiar e colar para o agente tradutor e revisor.
  • references/overrides.md — esquema do overrides.json e como medir coordenadas de gráficos/pílulas.

Habilidades Relacionadas