
Reescrevendo texto dentro de um DOCX sem quebrar o documento
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:
- 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.
- 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.
- 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": 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

API de Dados de Ações de Fim de Dia em Python: Guia Completo
Aprenda a obter dados de ações confiáveis e consistentes usando a API EODHD, evitando os problemas comuns do web scraping e garantindo a integridade dos dados para estratégias de investimento.

Como Avaliar Fornecedores de Dados em Tempo Real
O artigo discute a importância de métricas reais ao avaliar fornecedores de dados, destacando a diferença entre promessas de 'dados em tempo real' e a realidade de dados cacheados. Apresenta um teste prático para medir a latência e a taxa de sucesso.

Financiamento e volatilidade como lentes de análise para agentes de negociação de IA
Este artigo explora como lentes de financiamento e volatilidade podem ser usadas por agentes de negociação de IA para selecionar condições de mercado, destacando a importância de uma análise precisa.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.