O PDF pode ser visualizado, mas não copiado, pode não ser uma digitalização: verifique primeiro a camada de texto e o mapeamento de caracteres

Se não houver texto, não pode ser julgado diretamente como “a camada de texto é normal”, nem pode ser julgado diretamente como uma cópia digitalizada. O texto, os caracteres alternativos e as referências da imagem da página são registrados abaixo, respectivamente, e o status a ser revisado é gerado; as referências de imagens não provam que a imagem tenha coberto toda a página ou que o texto seja identificável.

Se você consegue ver o texto no PDF, mas não consegue copiá-lo, pode não ser uma cópia digitalizada ou pode haver um problema com o mapeamento de caracteres. Este artigo foi escrito para desenvolvedores e processadores de documentos que precisam extrair, traduzir ou estruturar conteúdo PDF. Após a leitura, você saberá como distinguir primeiro os problemas no nível do texto e o conteúdo da imagem e usar sinais unificados para determinar o que fazer a seguir.

O código e os exemplos aqui usam amostras sintéticas que passaram nas verificações de amostra em um ambiente isolado e não representam uma garantia de todos os arquivos reais ou do desempenho do produto. Antes de processar documentos importantes, guarde os originais e revise-os de acordo com os limites e itens de aceitação do texto.

O PDF pode ser visualizado, mas não copiado. É uma cópia digitalizada? Conclusão de uma frase

Não posso julgar diretamente. Verifique primeiro a camada de texto e o mapeamento de caracteres, depois observe a imagem da página e, finalmente, determine se é uma falha de digitalização ou de mapeamento.

sua situaçãoPráticas recomendadasrazão
Pode ver o texto, copiar caracteres ilegíveis ou espaços em brancoVerifique o mapeamento ToUnicode e a codificação de fonteO visual está normal, mas a camada de texto está quebrada, principalmente devido à falta ou mapeamento incorreto.
Os caracteres copiados parecem razoáveis, mas têm semântica incorretaVerifique os resultados da extração em relação ao conteúdo visualO mapeamento heurístico pode gerar caracteres errados e passar na verificação não nula
Não há texto, mas há fotos na páginaVerifique se a imagem contém texto e determine se o OCR é necessárioAs citações de imagens não equivalem a digitalizações de página inteira, nem provam que o texto é legível
Nem texto nem imagens são verificadosVer o conteúdo do desenho da páginaNão há como concluir que a página está em branco

Por que o código copiado está distorcido?

Os usuários podem ver o texto normalmente no navegador ou leitor, mas o texto copiado contém símbolos distorcidos, em branco ou irrelevantes. Geralmente não é um arquivo danificado, nem necessariamente uma cópia digitalizada. A causa raiz é que o glifo (Glyph) para a tabela de mapeamento Unicode (ToUnicode CMap) dentro do PDF está ausente ou errado.

Os mecanismos de renderização dependem de índices de glifos para desenhar conteúdo visual, enquanto as ferramentas de área de transferência e extração de texto dependem de tabelas de mapeamento para restaurar caracteres semânticos. Quando os dois são quebrados, aparece uma camada de texto incorreto "visualmente normal e ilegível por máquina".

Antes de fazer a tradução de documentos ou extração estruturada, é necessário primeiro confirmar se o problema está no mapeamento ou se a página em si é uma imagem. Caso contrário, os processos subsequentes de OCR ou PNL serão baseados na premissa errada.

Mecanismo de quebra entre índice de glifo e mapeamento Unicode

A especificação PDF permite que as fontes incorporem apenas informações de contorno e largura do glifo, mas não o mapeamento de codificação de caracteres. As seguintes condições podem causar quebra:

  • Software que gera PDF não escreve corretamente a tabela ToUnicode
  • A codificação personalizada é usada, mas nenhuma regra de decodificação é fornecida

Neste momento, o extrator só pode obter o ID do glifo (CID) original. Esses IDs são significativos para o renderizador, mas não têm valor para o processamento de texto.

Algumas ferramentas usam heurística para adivinhar o mapeamento, e o resultado pode ser caracteres que parecem razoáveis, mas na verdade estão errados, como converter a pontuação chinesa em letras latinas ou substituir números por caracteres de controle. Esse tipo de "texto fictício" é mais sutil do que o espaço em branco puro porque pode passar na verificação de não nulo, mas causará poluição silenciosa de dados em links downstream.

A chave para julgar tais problemas não é ver se o texto pode ser selecionado, mas verificar se a string extraída é semanticamente consistente com o conteúdo visual.

Use PyMuPDF para diagnóstico de síntese de memória

O código a seguir constrói a entrada na memória e verifica a lógica de diagnóstico:

from io import BytesIO
from PIL import Image
import pymupdf
def inspect(page):
    text = page.get_text().strip()
    images = page.get_images()
    if "\ufffd" in text:
        state = "review_replacement_characters"
    elif text:
        state = "text_present_needs_semantic_review"
    elif images:
        state = "image_without_extracted_text"
    else:
        state = "empty_text_needs_review"
    return {"state": state, "characters": len(text), "image_refs": len(images)}
with pymupdf.open() as doc:
    doc.new_page().insert_text((50, 50), "Text sample")
    doc.new_page()
    picture = BytesIO()
    Image.new("RGB", (16, 16), "red").save(picture, format="PNG")
    doc.new_page().insert_image(pymupdf.Rect(10, 10, 100, 100), stream=picture.getvalue())
    assert inspect(doc[0])["state"] == "text_present_needs_semantic_review"
    assert inspect(doc[1])["state"] == "empty_text_needs_review"
    assert inspect(doc[2])["state"] == "image_without_extracted_text"
    assert inspect(doc[2])["characters"] == 0

No código acima, a função diagnose_text_layer obtém o texto original por meio de get_text("text"), usa unicodedata.category para filtrar caracteres de controle e caracteres de espaço em branco e calcula a proporção do conteúdo efetivo. Ao mesmo tempo, detecta a presença de blocos de imagem via get_text("blocks").

As duas afirmações verificam dois casos: um documento normal com taxa de impressão superior a 0,9 e um documento digitalizado com contagem de caracteres zero. Isso cobre a lógica de ramificação principal.

É importante notar que este diagnóstico é baseado apenas em características estatísticas. Para fontes criptografadas ou codificações especiais, a revisão manual ainda é necessária.

📊 Comparação principal

A tabela a seguir lista as instruções de inspeção correspondentes aos diferentes sinais e as conclusões que não devem ser tiradas:

SinalPróxima etapa para verificarconclusões que não devem ser tiradas
Há texto para impressãoVerifique a semântica, a ordem e as fontesSe puder ser extraído, significa que está correto.
Existem personagens alternativosRevise a codificação e o mapeamento de fontesTodos os personagens estão perdidos
Há fotos, mas não há textoVerifique se a imagem contém textoDeve ser uma varredura de toda a página
Nem texto nem imagens foram detectadosVer o conteúdo do desenho da páginaDeve ser uma página em branco

🎯 Qual método é adequado para você?

Se você consegue ver o texto, mas não consegue copiá-lo

Priorize a verificação do mapeamento ToUnicode e da codificação da fonte, que geralmente é causada por um mapeamento quebrado.

Se o texto copiado parecer normal, mas o conteúdo estiver errado

Use conteúdo visual para comparar os resultados da extração segmento por segmento, não apenas verifique se não está vazio.

Se a página tiver apenas imagens e nenhum texto

Verifique se a imagem contém texto e decida se o OCR é necessário. Não presuma apenas que a página inteira é uma digitalização.

Se você for fazer tradução de documentos

As verificações de integridade do texto são concluídas antes que as amostras dessensibilizadas sejam entregues ao processo de tradução.

Use esta lista de verificação para tradução de documentos

Primeiro verifique a ordem das páginas, a localização da fonte e a integridade do texto e, em seguida, envie a mesma amostra dessensibilizada para o processo de tradução. Após a tradução, você ainda precisa verificar se o título, o texto e as ilustrações correspondem corretamente. Você não pode simplesmente verificar se o texto está suave.

OmniDoc (portal de produtos) fornece um portal de tradução de documentos multiformato, e o site oficial apresenta funções de OCR, glossário e comparação bilíngue. Se desejar iniciar o processamento diretamente do arquivo, você pode avaliar este caminho com uma amostra real.

Use arquivos dessensibilizados que você tem permissão para carregar e use os itens de verificação neste artigo para revisar os resultados. Não há nenhuma alegação de que o OmniDoc use as bibliotecas de código aberto ou algoritmos internos mencionados neste artigo, nem o exemplo substitui o teste de desempenho do produto.

❓ Perguntas frequentes (FAQ)

1. Se o texto puder ser extraído, isso significa que a camada de texto está correta?

não pode. O conteúdo extraído também precisa ser verificado quanto à semântica, ordem e origem. Quando ocorrem erros de mapeamento, caracteres aparentemente razoáveis podem ser gerados.

2. Há fotos na página. Isso significa que é uma cópia digitalizada?

incerto. A citação da imagem não prova que a imagem cobre a página inteira, nem prova que o texto pode ser reconhecido. Você precisa verificar se a imagem contém texto.

3. Nem texto nem imagens podem ser detectados. Isso significa que a página está em branco?

Nenhuma conclusão pode ser tirada disso. Você deve verificar o conteúdo do desenho da página antes de fazer um julgamento.

4. Este script de diagnóstico funcionará com todos os PDFs?

não pode. Baseia-se apenas em características estatísticas e a revisão manual ainda é necessária para fontes criptografadas ou codificações especiais.

📝 Resumo

Se o PDF pode ser visualizado ou copiado, primeiro verifique a camada de texto e o mapeamento de caracteres, depois observe o conteúdo da imagem e, finalmente, determine se é um documento digitalizado. Guarde os originais antes de processá-los e revise-os um por um com os itens de inspeção.

Experimente agora: carregue o documento para iniciar a tradução, mantendo o layout original

Leitura adicional

-Explicação detalhada da extração de texto PyMuPDF -Página inicial da documentação oficial do PyMuPDF

Atualizado em 2026-11-14