Visão computacional local com Ollama: extraindo dados de prints inteiros em uma GPU de 8GB
Voltar para blog

Visão computacional local com Ollama: extraindo dados de prints inteiros em uma GPU de 8GB

14/09/2026 · 4 min · Inteligência Artificial

Recentemente precisei automatizar uma tarefa bem específica: extrair dados estruturados (tabelas, textos, logs e valores) direto de prints de tela inteiros usando modelos multimodais rodando 100% locais no Ollama.

Uma coisa é mandar uma foto de câmera para um modelo de visão; outra bem diferente é passar uma captura de tela cheia de um dashboard, terminal ou planilha em alta resolução. Telas inteiras trazem desafios bem chatos:

  1. Densidade de texto e fontes pequenas: Textos minúsculos em menus laterais ou rodapés viram borrão se o modelo fizer redimensionamento fixo agressivo (como os antigos cortes de 224x224 ou 336x336 pixels).
  2. Poluição visual da interface: O modelo precisa entender a hierarquia visual para saber o que é botão, cabeçalho do navegador ou o dado que você realmente quer capturar.
  3. Limite de hardware: O objetivo aqui era rodar tudo com aceleração completa em uma placa com 8GB de VRAM, mantendo respostas rápidas e sem empurrar camadas para a memória RAM do sistema.

Abaixo reuni os testes de modelos, como cada um se comportou na VRAM, o erro comum de manifesto no Ollama e o script em Python que montei para automatizar o fluxo.


1. Comparando os modelos de visão no Ollama#

Testei os principais modelos multimodais (VLMs) disponíveis no registro do Ollama para ver quem se saía melhor com telas densas:


2. Consumo real de VRAM em uma placa de 8GB#

Ao enviar prints de alta resolução, o modelo processa muitos tokens visuais, o que aumenta o uso de memória além do tamanho básico dos pesos:

ModeloQuantizaçãoVRAM em usoComportamento na GPU de 8GB
qwen2-vl:7bq4_K_M (~4.7 GB base)~6.5 GBIdeal. Roda 100% na GPU com folga para os tokens de imagem e o sistema operacional.
gemma3:4bq4_K_M (~3.0 GB base)~4.5 GBSuper leve. Inferência rápida e muito espaço livre de memória.
llama3.2-vision:11bq4_K_M (~7.9 GB base)~8.5 GB a 9.5 GBNo limite. Descarrega camadas para a RAM e a velocidade de resposta cai bastante.
moondreamq4_K_M (~1.4 GB base)~2.0 GBInstantâneo. Quase não ocupa recursos, mas com menor detalhamento.

3. Resolvendo o erro de manifesto no Ollama#

Na primeira tentativa de baixar o Qwen de visão, tentei rodar:

ollama run qwen2.5-vl:7b
pulling manifest
Error: pull model manifest: file does not exist

Por que esse erro acontece?#

O registro oficial do Ollama tem convenções específicas de nomes de tags. A versão de visão multimodal da família Qwen2 está registrada na árvore como qwen2-vl (ou como qwen2.5vl, sem hífen; a tentativa com qwen2.5-vl:7b falha por não existir no catálogo).

O comando correto:#

# Baixa e roda o modelo de visão de 7B
ollama run qwen2-vl:7b

Para os outros modelos testados, as tags oficiais no registro são:

ollama run gemma3:4b
ollama run llama3.2-vision
ollama run moondream

4. Como automatizar a extração com Python#

Teste rápido no terminal#

Dá para testar direto pela linha de comando passando o prompt e o caminho da imagem:

ollama run qwen2-vl:7b "Ignore os menus da janela e extraia os dados da tabela central em formato JSON: ./print_exemplo.png"

Script em Python com a biblioteca oficial#

Para incluir essa extração em rotinas automáticas e garantir que a resposta venha em JSON limpo (sem introduções e sem quebrar a VRAM), montei este script:

import ollama

def extrair_dados_do_print(caminho_imagem: str):
    prompt = """
    Analise o print de tela fornecido e extraia todos os dados visiveis relevantes.
    Instrucoes:
    - Ignore barras de navegacao, relogio do sistema e menus laterais irrelevantes.
    - Retorne APENAS um JSON estritamente valido, sem texto introdutorio ou blocos explicativos.
    
    Formato esperado:
    {
      "titulo_pagina": "string",
      "metricas": [],
      "tabelas": [],
      "mensagens_erro": []
    }
    """

    resposta = ollama.chat(
        model='qwen2-vl:7b',
        options={
            'num_ctx': 4096  # Limita o contexto para manter a VRAM sob controle (eleve para 8192 se prints 4K sairem cortados)
        },
        messages=[{
            'role': 'user',
            'content': prompt,
            'images': [caminho_imagem]
        }]
    )

    return resposta['message']['content']

if __name__ == '__main__':
    caminho_print = './print_sistema.png'
    resultado = extrair_dados_do_print(caminho_print)
    print(resultado)

Conclusão: dicas práticas para tirar o melhor proveito#

Com o qwen2-vl:7b rodando no Ollama, você consegue um OCR de altíssima precisão e totalmente local em placas comuns de 8GB, sem depender de APIs pagas e mantendo seus dados e prints 100% na sua máquina.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários