Para corrigir hifenização e quebras de linha de PDFs antes do RAG, reconstrua primeiro a ordem de leitura e os limites de parágrafo. Depois avalie cada hífen no fim de linha. Una partes de uma palavra apenas quando houver evidência de que o hífen foi introduzido pela diagramação. Preserve compostos, códigos e sinais que pertencem ao texto.
RAG é uma abordagem em que a aplicação recupera trechos de documentos para apoiar a resposta de uma IA. A preparação desses trechos precisa manter vínculo com página e posição no arquivo original. Uma correção que deixa o texto fluente, mas altera um código de produto ou uma condição contratual, prejudica a base em vez de prepará-la.
Resumo rápido
- Identifique se o PDF tem texto extraível ou precisa de OCR.
- Reconstrua blocos e colunas antes de unir linhas.
- Diferencie hífen de diagramação, composto e código.
- Mantenha original, texto normalizado e mapa de alterações.
- Teste consultas reais e confira os trechos na página.
Entenda qual problema o PDF está causando
O texto visto na página nem sempre sai do extrator na mesma sequência. Antes de criar uma regra de substituição, examine amostras de cada família de documentos: manuais, propostas, contratos e relatórios. Compare o texto extraído com a página renderizada. Marque colunas misturadas, cabeçalhos no meio de frases e palavras partidas.
A documentação de extração de texto do pypdf explica dificuldades de espaços, parágrafos e ordem em PDFs. Também distingue extração de texto de OCR, o reconhecimento de caracteres em imagens. O pypdf não faz OCR. Um arquivo escaneado sem camada textual precisa passar por uma ferramenta apropriada antes desta limpeza.
Classifique a origem do problema. Se “operação” virou “opera-” no fim de uma linha e “ção” no começo da seguinte, pode haver hifenização de diagramação. Se as linhas de duas colunas foram alternadas, remover o hífen não resolve a sequência. Se a palavra já foi reconhecida errada no OCR, unir fragmentos pode consolidar o erro.
Guarde essa classificação junto do documento. Ela orienta o caminho de processamento e impede que uma única rotina seja aplicada a materiais incompatíveis. Um catálogo com códigos técnicos exige decisões diferentes das de um comunicado em prosa, mesmo quando ambos chegam como PDF.
Reconstrua blocos e ordem antes de juntar linhas
Faça a extração preservando informações de posição quando a ferramenta permitir. Use página, bloco e coordenadas para separar regiões. Primeiro determine quais linhas podem pertencer ao mesmo parágrafo; só então avalie a união. Uma linha no fim da coluna esquerda não deve se ligar automaticamente à primeira linha da coluna direita.
As receitas de texto do PyMuPDF apresentam extração por palavras e blocos, além da opção sort para reorganizar a sequência de leitura. Essa opção pode ajudar na ordenação espacial, mas precisa ser conferida no layout concreto. Adote uma amostra com colunas, caixas laterais e tabelas antes de aceitar sua saída.
Trate títulos, listas, notas e tabelas como estruturas diferentes da prosa corrida. Nas listas, uma quebra pode separar itens. Em tabelas, ela pode delimitar células. Unir tudo com espaços destrói relações que o mecanismo de recuperação precisa para devolver uma resposta correta.
Uma regra local de continuação pode considerar distância vertical, alinhamento, estilo e ausência de mudança de seção. Nenhum desses sinais deve decidir sozinho. Ao atravessar uma página, verifique se existem cabeçalho ou rodapé intermediários e mantenha a referência a ambas as páginas quando a frase continuar.
Para conteúdos tabulares, vale separar a estratégia descrita no guia de extração de tabelas em PDFs. A reconstrução de parágrafos não substitui a identificação de linhas, colunas e cabeçalhos de uma tabela.
Decida quando o hífen pode desaparecer
Crie categorias de transformação. O primeiro grupo reúne candidatos a palavra partida pela diagramação. O segundo contém palavras compostas que precisam conservar o hífen. O terceiro inclui códigos, identificadores, intervalos e outros sinais. Quando a classificação for incerta, preserve a grafia e registre o caso para revisão.
| Trecho observado | Hipótese | Tratamento proposto |
|---|---|---|
| “opera-” seguido de “ção” no mesmo parágrafo | Palavra partida no fim de linha | Unir como “operação” após validação |
| “segunda-” seguido de “feira” | Composto com hífen | Juntar as linhas preservando “segunda-feira” |
| “AB-” seguido de “204” em catálogo | Código de produto | Preservar o hífen e conferir a coluna |
| Fim de linha em título e início de lista | Mudança estrutural | Manter a separação |
| Fragmentos de colunas diferentes | Erro de ordem de leitura | Corrigir os blocos antes de normalizar |
O PyMuPDF documenta a opção TEXT_DEHYPHENATE para tratar hifenização. Use o recurso como candidato a transformação e compare a saída com o original, principalmente em materiais com compostos e referências técnicas. Registre as opções usadas e teste as combinações de flags na versão instalada.
Uma lista de termos do negócio pode ajudar a distinguir “segunda-feira” de uma palavra partida, mas não deve funcionar como autorização para corrigir qualquer coisa parecida. Nomes de pessoas, marcas e códigos nem sempre aparecem em dicionários. Preserve exceções explícitas e mantenha exemplos de seus efeitos no conjunto de teste.
Considere também caracteres diferentes que parecem hífen na tela. Inspecione o ponto de código e o contexto, em vez de substituir todos os traços pelo mesmo símbolo. A documentação de unicodedata apresenta funções para consultar caracteres e aplicar formas de normalização Unicode. Essa normalização não determina, sozinha, se uma quebra de linha deve desaparecer.
Se a base já possui uma política de caracteres, aplique-a como etapa separada. O guia de normalização Unicode para busca e embeddings ajuda a tratar acentos e representações sem confundir esse trabalho com reconstrução de palavras.
Crie uma camada de texto normalizado rastreável
Mantenha o PDF original imutável e uma extração inicial por página. Produza outra camada para indexação, com o texto corrigido. Para cada alteração, registre documento, página, posição de origem, texto anterior, texto resultante e regra aplicada. Isso permite revisar decisões e refazer o índice sem perder a referência visual.
Evite guardar apenas deslocamentos de caracteres do texto limpo. Quando linhas e palavras são unidas, esses deslocamentos deixam de coincidir com a extração inicial. Use um mapa entre intervalos normalizados e seus trechos de origem. Uma frase formada por partes de duas páginas precisa apontar para os dois locais.
Divida o conteúdo em trechos de recuperação depois da reconstrução dos parágrafos. Se o particionamento vier primeiro, os fragmentos de uma palavra podem cair em trechos separados, e a rotina de correção perderá o contexto necessário. Preserve títulos e referências úteis como metadados, sem repetir rodapés em toda a entrada.
Defina uma versão do pipeline composta pelas regras de extração, normalização e divisão. Ao alterar qualquer uma delas, identifique os documentos afetados e planeje sua reindexação. Uma coleção com partes antigas e novas pode apresentar comportamento difícil de explicar se a origem de cada trecho não estiver registrada.
Na interface de revisão, mostre o trecho normalizado ao lado do recorte correspondente da página. O operador deve conseguir aceitar ou rejeitar uma alteração sem buscar o arquivo inteiro. Esse vínculo também sustenta a auditoria discutida em versionamento de documentos citados por IA.
Exemplo: manuais de manutenção em Joinville
Considere uma empresa de manutenção industrial em Joinville que reúne manuais de fornecedores para apoiar a consulta dos técnicos. O caso é ilustrativo. Alguns manuais têm duas colunas; outros são digitalizações com texto reconhecido. A equipe percebe que a busca por um componente retorna trechos incompletos e decide verificar a preparação dos documentos.
Em uma página, “lubrifi-” e “cação” pertencem ao mesmo parágrafo. Na mesma região, o código “BC-” continua como “17” na linha seguinte. Uma substituição global de hífen e quebra reconstruiria a primeira palavra, mas mudaria o código para “BC17”, criando um identificador diferente do impresso.
A equipe separa a página em blocos e classifica o código como campo protegido. A regra une “lubrificação” e preserva “BC-17”. Em outra página, os fragmentos estão em colunas distintas; o processo corrige a ordem de leitura antes de tentar unir qualquer palavra. As mudanças ficam vinculadas às regiões originais.
Para validar, os técnicos consultam o nome do procedimento e o código exato. Conferem se o trecho recuperado corresponde ao componente certo e se a citação abre a página adequada. Não se atribui um ganho numérico ao processo: a aprovação depende da correção dos casos observados e do encaminhamento dos documentos que ainda exigem revisão.
Erros comuns
Aplicar “hífen mais quebra vira vazio” no arquivo todo. A regra altera compostos e códigos. Limite a transformação a candidatos identificados dentro de blocos coerentes e preserve o que não puder ser decidido com segurança.
Trocar todas as quebras por espaços. Isso pode colar títulos, notas e células. Faça a reconstrução por tipo de estrutura e mantenha separações quando elas representam fronteiras de conteúdo, não apenas largura de linha.
Usar um modelo para reescrever a página inteira. Uma reescrita pode introduzir mudanças que passam despercebidas. Se houver assistência de IA na classificação, restrinja a saída a propostas de alteração verificáveis e confira os campos que precisam permanecer literais.
Avaliar apenas a aparência do texto. Leia os trechos e execute consultas de teste. Verifique nomes, negativas, unidades e códigos. Uma resposta pode parecer correta e ainda citar o equipamento errado por causa de um identificador alterado.
Ignorar a qualidade do OCR. A normalização de linhas não corrige automaticamente caracteres reconhecidos de forma incorreta. Trate páginas ilegíveis em um fluxo separado e mantenha claro quando um trecho depende de revisão humana.
Perguntas frequentes
Todo hífen no final da linha é descartável?
Não. Ele pode pertencer à palavra, a um código ou a outra estrutura. O fim de linha é apenas um sinal. Compare os fragmentos com o layout e use critérios específicos para o tipo de documento.
Posso resolver isso só na hora da consulta?
Uma consulta tolerante a variações pode ajudar, mas não repara um trecho já dividido de forma incorreta. Corrija a camada de preparação e teste a recuperação sobre ela. Mantenha exceções documentadas para os casos que não forem reconstruídos.
É necessário usar OCR em todo PDF?
Não. Verifique se existe texto extraível e sua qualidade. Documentos digitais e imagens escaneadas têm necessidades distintas. Aplicar OCR indiscriminadamente adiciona outra etapa que também precisa de validação.
Como saber se a limpeza prejudicou a busca?
Monte pares de consulta e trecho esperado, incluindo palavras partidas e códigos com hífen. Compare a recuperação antes e depois, examine os erros e confirme as citações no original. Defina critérios de aprovação adequados ao processo.
Qual é um bom primeiro lote?
Escolha documentos representativos do acervo, incluindo os layouts problemáticos. Faça a revisão visual, registre as exceções e repita as consultas escolhidas. Amplie o processamento depois que os responsáveis conseguirem explicar cada transformação relevante.