Fluxo

Distinguir texto selecionável de um PDF escaneado

Descubra se um PDF tem texto selecionável, extraia o que a Kitly consegue ler e pare quando a página for só uma imagem.

Objetivo

Extrair o texto de um PDF de uma página em que duas frases ficam lado a lado, e confirmar que um PDF feito só de imagem não devolve essas palavras.

Esta página é HTML estático. PDF para Texto precisa de JavaScript porque o PDF.js lê o arquivo no navegador. Dá para ler os dois resultados e o texto já extraído com JavaScript desligado. A ferramenta não envia o PDF.

Entradas

Os dois PDFs são originais deste guia. product-note.pdf é um PDF 1.4 com Helvetica e codificação WinAnsi; a fonte padrão não vai embutida. scan-only.pdf é a imagem scan-only.png colocada numa página, sem operadores de texto e sem fonte embutida. A imagem foi desenhada com Arial só para rasterizar duas frases; o arquivo publicado não contém a fonte.

product-note.pdf Entrada. PDF de 718 bytes com texto selecionável, 1 página.
product-note.txt Saída. Os mesmos caracteres extraídos, 46 bytes, sem uma quebra de linha extra no final.
Página branca com as frases em inglês This page is a picture of text. e Café · ação.
scan-only.png Ajuda de inspeção. PNG de 640×200, 16838 bytes, com as frases visíveis que o extrator não lê.
scan-only.pdf Entrada. PDF de 9139 bytes, 1 página, contendo só essa imagem.

Decisões

Extrair primeiro o PDF com texto

Se aparecer texto, confira a ordem de leitura antes de reutilizar as frases. Neste arquivo, as duas frases da segunda linha foram desenhadas em x=72 e x=300, na mesma altura y=680, e saem numa linha só.

Parar quando não houver texto selecionável

Uma página em branco no resultado não é um pedido para tentar de novo. PDF para Texto não faz OCR. As palavras visíveis na imagem precisam ser digitadas em outro lugar, se você precisar delas.

Não encadear com outra ferramenta

A Kitly não passa o texto extraído para outro utilitário. Copie ou baixe o TXT quando houver texto. No PDF só de imagem, copiar e baixar ficam desativados.

Sequência verificada

Escolher um PDF novo apaga o texto anterior. Rode um arquivo de cada vez e leia o estado antes de trocar.

  1. Baixe product-note.pdf e scan-only.pdf acima. Abra scan-only.png se quiser ver as frases da imagem.
  2. Abra PDF para Texto e escolha product-note.pdf. Clique em Extrair texto.
  3. Páginas mostra 1. O texto extraído é exatamente o bloco abaixo. Baixe product-note.txt se quiser esses caracteres num arquivo. Copiar fica disponível porque havia texto.
  4. Escolha scan-only.pdf. A troca de arquivo limpa a extração anterior. Clique em Extrair texto de novo.
  5. Páginas mostra 1. A área de texto fica vazia. O estado e o erro mostram: Nenhum texto selecionável foi encontrado. Este PDF pode ser escaneado ou baseado em imagem. Copiar e baixar continuam desativados.
  6. Compare com scan-only.png. A imagem contém This page is a picture of text. e Café · ação. Essas frases não aparecem na extração. Digite-as você mesmo se precisar delas.

Resultado observado

Extraído com pdfjs-dist 4.10.38, getTextContent, e a mesma junção da ferramenta: cada item de texto ganha uma quebra de linha quando hasEOL é verdadeiro e um espaço quando não é. Espaços repetidos são reduzidos.

Texto extraído de product-note.pdf

Kitly product note
Cor: café Ação: publicar
O que cada arquivo produziu
product-note.pdf 718 bytes, 1 página. Itens de texto em (72, 720), depois uma quebra, depois Cor: café em (72, 680) e Ação: publicar em (300, 680).
product-note.txt 46 bytes. Os mesmos caracteres do bloco acima, sem uma quebra de linha extra depois de publicar.
scan-only.pdf 9139 bytes, mostrado como 8.9 KB, 1 página. A caixa da página é 640×200. getTextContent não devolveu itens de texto.
scan-only.png 640×200, 16838 bytes, mostrado como 16.4 KB. As frases em inglês estão visíveis na imagem e ausentes na extração.
Resposta da ferramenta no scan Páginas: 1. Texto vazio. Estado e erro: Nenhum texto selecionável foi encontrado. Este PDF pode ser escaneado ou baseado em imagem. Copiar e baixar ficam desativados.

Limites

  • A ordem visual em colunas não é preservada. As duas frases da mesma linha viram uma linha só.
  • Não há OCR. Uma página que você consegue ler na imagem pode produzir texto vazio.
  • A ferramenta implementa limites de 25 MB e 200 páginas, e uma mensagem separada para PDF criptografado. Esses casos não foram executados de novo neste guia.
  • A medição usou a mesma função de junção do componente, com o worker desativado no script. A página da ferramenta usa o worker empacotado da mesma versão 4.10.38.
  • O texto do PDF de amostra mistura uma linha em inglês com Cor: café e Ação: publicar. O resultado não foi traduzido; é a string observada.

Ferramenta neste idioma

Só uma ferramenta entra neste fluxo. Não há uma segunda etapa automática.