Voltar as noticias
Reescrevendo texto dentro de um DOCX sem quebrar o documento
Casos de UsoMediaEN

Reescrevendo texto dentro de um DOCX sem quebrar o documento

Dev.to - MCP·13 de agosto de 2026

Eu trabalho na HumanPen, um humanizador de IA em nível de documento, então trate isso como um construtor escrevendo sobre seu próprio problema, não como uma pesquisa neutra. A maior parte da engenharia abaixo se aplica a qualquer coisa que reescreva prosa dentro de arquivos de escritório reais, seja qual for o motivo da reescrita.

O pipeline ingênuo é composto por três etapas: extrair o texto, enviá-lo a um modelo, colar o resultado de volta. Funciona bem para um post de blog. Ele se desmorona no momento em que a entrada é um artigo com citações, tabelas, referências cruzadas e um índice.

Por que a viagem de ida e volta é perdida

Um .docx é um zip de partes XML: o corpo em word/document.xml, notas de rodapé, cabeçalhos, numeração, estilos e objetos incorporados, cada um em sua própria parte, conectados por um gráfico de relacionamento e ids inteiros.

Dentro do corpo, uma frase quase nunca é um único nó. O Word divide um parágrafo em runs sempre que qualquer propriedade muda. Italicize um nome de espécie, insira uma citação do Zotero, e uma frase se torna cinco runs, duas delas dentro de um campo.

Achate isso para uma string e aqui está o que vai para o lixo:

  • Códigos de campo. Uma entrada de índice, uma referência cruzada ("veja a Tabela 2"), um número de figura automático e uma citação de gerenciador de citações são todos uma instrução mais um resultado em cache. Achate-os e o cache se torna o valor permanente. O documento para de ser atualizado, e ninguém percebe até que uma tabela seja reorganizada.
  • Significado em nível de run. Superescritos, subscritos, convenções itálicas que carregam semântica em um artigo científico. Equações não são texto, elas são OMML.
  • Contêineres. Células de tabela, legendas, referências de notas de rodapé que apontam para outra parte por id. A extração devolve uma legenda e um parágrafo de corpo como duas linhas adjacentes sem nada marcando qual é qual, então a legenda é reescrita como prosa.
  • Geometria, em PPTX. O texto vive em formas de tamanho fixo. Uma reescrita que volta maior transborda a caixa, e você descobre ao abrir o deck.

Nada disso aparece em um diff do texto extraído. Aparece quando o autor abre o arquivo.

A conclusão que chegamos: o documento é a estrutura de dados, e o texto é uma visão dela. A reescrita acontece no local em granularidade de parágrafo, e tudo que o modelo não tem nada a ver é cercado antes que um prompt seja construído. Essa cerca cobre citações em texto, entradas de referência, notas de rodapé, campos de índice, referências cruzadas, numeração de figuras, fórmulas, código, tabelas e legendas.

Há uma segunda cerca, sobre conteúdo em vez de estrutura: números, datas, unidades, nomes próprios e terminologia são restringidos, assim como negação, causalidade e força de reivindicação. "Associação" não deve voltar como "causalidade". "Nenhuma diferença significativa" não deve voltar sem "significativa". Uma reescrita que lê lindamente e inverte uma descoberta é pior do que nenhuma reescrita.

Divisão: divisão de comprimento fixo é a resposta errada fácil

Documentos longos precisam ser divididos, e dividir com base na contagem de tokens corta parágrafos e argumentos pela metade. Esse é o problema óbvio. O menos óbvio é o que acontece depois da divisão.

Processar cada pedaço independentemente faz com que eles se afastem. O pedaço 3 se estabelece em "participantes", o pedaço 9 prefere "sujeitos". Um expande um acrônimo em cada uso, o próximo assume que já foi introduzido. Cada pedaço está localmente bem e o documento lê como se três pessoas o tivessem escrito, o que é um resultado engraçado para uma ferramenta cujo trabalho é fazer o texto ler como se fosse de uma única pessoa.

Duas mudanças corrigem a maior parte disso: dividir em limites semânticos para que um pedaço seja uma unidade de argumento em vez de uma unidade de comprimento, e dar a cada pedaço um contexto de fonte compartilhado para que saiba o que o resto do documento já decidiu. Os pedaços ainda são processados em paralelo. Eles apenas não são independentes, e é aí que reside a qualidade.

O retorno: o arquivo inteiro entra de uma vez, e ninguém cola a seção 4.3 em uma caixa de texto pela décima primeira vez.

Reescrita guiada por relatório: correspondendo destaques de PDF de volta a parágrafos de origem

Esta é a parte que acho mais interessante, e até onde a pesquisa abaixo vai, ninguém mais entrega isso de ponta a ponta.

Um autor recebe um Relatório de Escrita AI do Turnitin ou iThenticate sobre um artigo de 10.000 palavras, e aproximadamente 2.800 palavras voltam destacadas. Reescrever todas as 10.000 muda texto que já estava bom e entrega ao autor um documento inteiro para reavaliar.

Então você precisa extrair spans destacados de um PDF de relatório e encontrá-los no arquivo de origem. Isso não é uma correspondência de string:

  1. O relatório é uma renderização, não a fonte. Sua camada de texto é disposta em linhas e o destaque é desenhado como gráficos sobre essa disposição, então recuperar "quais caracteres estão destacados" significa intersectar geometria com a camada de texto.
  2. O texto difere do original. Hifenização no final da linha, ligaduras, aspas inteligentes e cabeçalhos em execução bloqueiam a comparação exata.
  3. Destaques ignoram limites de parágrafo. Um span sinalizado muitas vezes começa no meio de uma frase e se estende por duas frases depois.

Esse último ponto impulsiona uma decisão de design. Reescreva metade de um parágrafo e você obtém um parágrafo em duas vozes, além de uma frase cujo sujeito foi introduzido na metade que você deixou de fora. Portanto, uma correspondência parcial é expandida para o parágrafo completo, e o parágrafo é a menor unidade de reescrita.

Como a correspondência é heurística, o escopo correspondente é mostrado para confirmação antes que o trabalho comece, e o conteúdo não confirmado permanece fora do escopo. Adivinhar errado em uma correspondência difusa, silenciosamente, é muito pior do que perguntar. Uma armadilha relacionada: um Relatório de Escrita AI não é um Relatório de Similaridade. Documento diferente, classificações diferentes, e tratar um como o outro produz tolices confiantes.

Uma coisa que nos recusamos a fazer: injetar erros de gramática ou ortografia para mover um detector. Isso torna o artigo pior, e o autor é quem tem que defendê-lo.

A superfície do agente e por que documentos se encaixam bem no MCP

As mesmas operações são enviadas de três maneiras: um servidor MCP, uma Habilidade de Agente (uma pasta com um SKILL.md, sem servidor), e uma API HTTP simples. Uma conta, um saldo de crédito em todos os três.

Documentos são um encaixe incomumente bom para MCP por uma razão chata: o payload nunca precisa entrar no contexto do modelo. A ferramenta pega um caminho, faz o upload do arquivo e responde com um caminho. Um artigo de 40 páginas não custa tokens. No fluxo de trabalho de caixa de colagem, o agente carrega o documento inteiro através de sua própria janela de contexto duas vezes.

claude mcp add humanpen -s user -e HUMANPEN_API_KEY=hp_your_key -- npx -y humanpen-mcp

A funcionalidade de reescrita seletiva é um argumento:

{
  "name": "humanize_document",
  "arguments": {
    "document_path": "/abs/path/paper.docx",
    "report_path": 
Contexto Triplo Up

O artigo apresenta um caso de uso relevante para empresas que utilizam documentos digitais, especialmente em contextos acadêmicos e profissionais. A capacidade de reescrever textos sem perder informações críticas pode melhorar a eficiência e a qualidade do trabalho. Isso é particularmente importante para empresas que dependem de documentação precisa e bem estruturada.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.