Como Tornar Imagens de PDFs Pesquisáveis para RAG Sem Gastar com Todas Elas

Este artigo de Kezhan Shi, publicado no Towards Data Science, apresenta uma abordagem inteligente para tornar imagens de PDFs pesquisáveis em sistemas RAG — sem gastar dinheiro lendo todas elas.
A série "Enterprise Document Intelligence" constrói um sistema RAG empresarial a partir de quatro blocos fundamentais. Neste quinto volume, o foco está em processar imagens de documentos de forma econômica, usando uma cascata ordenada por custo: um filtro barato, uma verificação de tipo, OCR clássico e, por último, um modelo de visão.
O problema: nem toda imagem vale a pena
O reflexo natural seria jogar um modelo de visão em cada imagem do PDF e seguir em frente. Mas essa é a abordagem errada. Um documento real está cheio de imagens que ninguém pesquisaria: o logotipo da empresa em cada página, ícones minúsculos, linhas divisórias, marcas d'água. Processar tudo com modelos caros é desperdício de dinheiro e de latência.
A cascata de custo
A solução proposta funciona em três etapas, da mais barata para a mais cara:
1. Filtro gratuito: eliminar o ruído
Antes de qualquer chamada de modelo, um filtro analisa sinais já disponíveis no dataframe de imagens e algumas estatísticas de pixel:
- Tamanho mínimo: imagens com poucos pixels ou área muito pequena são ícones ou bullets, não figuras. Removidas.
- Proporção suspeita: imagens muito longas e finas são linhas ou divisores. Fora.
- Repetição entre páginas: o mesmo hash de conteúdo aparecendo na maioria das páginas é "chrome" — logotipo, cabeçalho, rodapé. Descartado.
Em um relatório típico, só essa etapa remove a grande maioria das imagens antes de qualquer modelo rodar. O que sobra são as poucas que realmente carregam significado.
2. Classificação por tipo
As imagens que sobrevivem ao filtro não são todas lidas da mesma forma. Uma captura de tela de tabela é texto — OCR clássico resolve. Um gráfico de linhas não é texto — seu significado está nos eixos e na forma visual.
A classificação usa sinais baratos de pixel: variação, saturação, proporção de fundo branco, densidade de bordas:
- Painel em branco: dispersão de pixel baixa → pular (sem custo)
- Imagem de texto: baixa saturação, estrutura de traços, fundo branco → OCR clássico (barato)
- Imagem visual: saturada, sem margens brancas → modelo de visão (caro)
O classificador é deliberadamente conservador: na dúvida, manda para o modelo de visão. Um OCR perdido custa uma chamada de visão; um OCR executado em um diagrama retorna labels soltos e lixo.
3. Ação por tipo
| Tipo de imagem | Ação | Custo |
|---|---|---|
| Muito pequena / formato estranho / repetida | Descartar | Zero |
| Painel em branco / uniforme | Pular | Zero |
| Imagem de texto (tabela, scan) | OCR clássico | Baixo |
| Imagem visual (gráfico, foto) | Modelo de visão | Alto |
A escolha de design mais importante
O artigo destaca dois princípios fundamentais:
-
Logotipos são pegos pelo filtro de repetição, não pelo classificador: um logotipo pode ter duas cores chapadas ou ser uma marca d'água colorida. Tentar detectar logo por aparência é frágil. Mas um logo é "chrome" porque se repete em todas as páginas — e isso o filtro já captura.
-
O classificador não tenta ser inteligente demais: classificar gráfico vs. diagrama vs. foto com sinais baratos não é confiável. Então o classificador só desvia imagens para OCR quando tem certeza absoluta de que é texto. Todo o resto vai para o modelo de visão. O viés é assimétrico de propósito.
Por que isso importa
Para quem constrói sistemas RAG empresariais, este artigo oferece um roteiro prático para processar documentos PDF sem desperdício. A lógica da cascata — começar pelo método mais barato e só escalar quando necessário — é um padrão que vale para muito além de processamento de documentos.
O artigo completo, com implementações em Python e exemplos de código, está disponível no Towards Data Science.



