Introdução geral
O SmolDocling é um Modelo de Linguagem Visual (VLM) desenvolvido pela equipe do ds4sd em colaboração com a IBM, baseado no SmolVLM-256M e hospedado na Hugging Face Platform. É o menor VLM do mundo, com apenas 256 milhões de parâmetros, e sua função principal é extrair texto de imagens, reconhecer layouts, códigos, fórmulas e diagramas e gerar documentos estruturados no formato DocTags. O smolDocling pode ser executado em dispositivos comuns, com alta eficiência e baixo uso de recursos. A equipe de desenvolvimento está compartilhando esse modelo por meio de código aberto, na esperança de ajudar mais pessoas a lidar com tarefas de documentos. Ele faz parte da família SmolVLM, que se concentra na conversão de documentos e é adequado para usuários que precisam processar documentos complexos rapidamente.
Lista de funções
- Extração de texto (OCR)Reconhecimento e extração de texto de imagens, suporte a vários idiomas.
- Identificação do layoutAnálise da estrutura do documento na imagem, por exemplo, a posição dos cabeçalhos, parágrafos e tabelas.
- reconhecimento de códigoExtrai blocos de código e preserva a indentação e a formatação.
- reconhecimento de fórmulasDetectar fórmulas matemáticas e convertê-las em texto editável.
- reconhecimento de gráficosAnálise de conteúdo gráfico de imagens e extração de dados: analisa o conteúdo do gráfico a partir de imagens e extrai dados.
- Processamento de formuláriosIdentificar a estrutura da tabela e reter as informações de linhas e colunas.
- Saída de DocTagsConverta os resultados do processamento em um formato de rotulagem uniforme para facilitar o uso posterior.
- Processamento de imagens de alta resoluçãoSuporte para entrada de imagens com resolução maior para melhorar a precisão do reconhecimento.
Usando a Ajuda
O uso do SmolDocling é dividido em duas partes: instalação e operação. Abaixo estão as etapas detalhadas para ajudar os usuários a começar rapidamente.
Processo de instalação
- Preparação do ambiente
- Certifique-se de ter o Python 3.8 ou posterior instalado em seu computador.
- Instale a biblioteca de dependências digitando o seguinte comando no terminal:
pip install torch transformers docling_core
- Se você tiver uma GPU, é recomendável instalar o PyTorch com suporte a CUDA para executar mais rapidamente. Verifique a metodologia:
importar torch print("GPU disponível:" if torch.cuda.is_available() else "Usando CPU")
- Modelos de carregamento
- O SmolDocling não precisa ser baixado manualmente, pois está disponível diretamente no Hugging Face por meio de código.
- Certifique-se de que a rede esteja aberta e que os arquivos do modelo sejam baixados automaticamente na primeira execução.
Etapas de uso
- Preparar a imagem
- Encontre uma imagem que contenha texto, como um documento digitalizado ou uma captura de tela.
- Carregue a imagem com o código:
from transformers.image_utils import load_image image = load_image("Caminho para sua imagem.jpg")
- Inicialização de modelos e processadores
- Carregue o processador e o modelo do SmolDocling:
from transformers import AutoProcessor, AutoModelForVision2Seq DEVICE = "cuda" if torch.cuda.is_available() else "cpu" processor = AutoProcessor.from_pretrained("ds4sd/SmolDocling-256M-preview") model = AutoModelForVision2Seq.from_pretrained( "ds4sd/SmolDocling-256M-preview", torch_dtype=torch.bfloat16 ).to(DEVICE)
- Carregue o processador e o modelo do SmolDocling:
- Gerar DocTags
- Configure as entradas e execute o modelo:
messages = [{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "Convert this page to docling."}]}]] prompt = processor.apply_chat_template(messages, add_generation_prompt=True) inputs = processor(text=prompt, images=[image], return_tensors="pt").to(DEVICE) generated_ids = model.generate(**inputs, max_new_tokens=8192) doctags = processor.batch_decode(generated_ids[:, inputs.input_ids.shape[1]:], skip_special_tokens=False)[0].lstrip() print(doctags)
- Configure as entradas e execute o modelo:
- Conversão para formatos comuns
- Converta DocTags para Markdown ou outros formatos:
from docling_core.types.doc import DoclingDocument doc = DoclingDocument(name="Meu documento") doc.load_from_doctags(doctags) print(doc.export_to_markdown())
- Converta DocTags para Markdown ou outros formatos:
- Uso avançado (opcional)
- Manuseio de documentos com várias páginasProcessar várias imagens em um loop e, em seguida, mesclar DocTags.
- otimizar o desempenho: Configurações
torch_dtype=torch.bfloat16
Economia de memória, os usuários de GPU podem ativarflash_attention_2
Aceleração:model = AutoModelForVision2Seq.from_pretrained( "ds4sd/SmolDocling-256M-preview", torch_dtype=torch.bfloat16, _attn_implementation="flash_attention_2" if DEVICE == "cuda" else "eager" ).to(DEVICE)
habilidade operacional
- Requisitos de imagemImagens: As imagens precisam ser claras e o texto legível; quanto maior a resolução, melhor.
- Parâmetros de ajusteSe o resultado estiver incompleto, adicione
max_new_tokens
(padrão 8192). - arquivo de loteImagens múltiplas podem ser passadas como uma lista
images=[image1, image2]
. - Método de comissionamentoSaída de verificação de resultados intermediários, por exemplo, impressão
insumos
Verifique se a entrada está correta.
advertência
- O acesso à Internet é necessário para a primeira execução, depois disso ele pode ser usado off-line.
- Fotos muito grandes podem resultar em falta de memória, portanto, é recomendável cortá-las e lidar com elas.
- Se você encontrar um erro, verifique se a versão do Python e as bibliotecas dependentes estão instaladas corretamente.
Com as etapas acima, os usuários podem transformar imagens em documentos estruturados com o SmolDocling. Todo o processo é simples e adequado para usuários iniciantes e profissionais.
cenário do aplicativo
- pesquisa acadêmica
Converta documentos digitalizados em texto, extraia fórmulas e tabelas para facilitar a edição e a citação. - Documentação de programação
Converte imagens manuais que contêm código em Markdown, preservando a formatação do código para os desenvolvedores. - automação de escritório
Manusear cópias digitalizadas de contratos, relatórios, etc., reconhecendo o layout e o conteúdo para aumentar a eficiência. - Suporte educacional
Transforme imagens de livros didáticos em documentos editáveis para ajudar professores e alunos a organizar suas anotações.
QA
- Qual é a diferença entre SmolDocling e SmolVLM?
O SmolDocling baseia-se em uma versão otimizada do SmolVLM-256M, concentrando-se no processamento de documentos e na saída do formato DocTags, enquanto o SmolVLM é mais geral e oferece suporte a tarefas como a descrição de imagens. - Quais sistemas operacionais são compatíveis?
Windows, Mac e Linux são compatíveis e podem ser executados com o Python e as bibliotecas dependentes instaladas. - O processamento é rápido?
O processamento de uma imagem leva apenas alguns segundos em um computador comum e é ainda mais rápido para usuários de GPU, geralmente menos de um segundo. - Você consegue lidar com textos escritos à mão?
Sim, mas os resultados dependem da clareza da caligrafia e é recomendável usar imagens de texto impresso para obter os melhores resultados.