O dots.ocr é uma poderosa ferramenta de análise de documentos multilíngues baseada em um modelo visual-linguístico (VLM) de 1,7 bilhão de parâmetros, capaz de detectar simultaneamente o layout e reconhecer o conteúdo. Ele demonstra desempenho de última geração em benchmarks como o OmniDocBench, especialmente na análise de texto, tabela e ordem de leitura. O dots.ocr é compatível com vários idiomas, inclusive idiomas de poucos recursos, e é adequado para o processamento de documentos complexos, como artigos acadêmicos, relatórios financeiros e assim por diante. Em comparação com os pipelines tradicionais de vários modelos, o dots.oc usa uma arquitetura de modelo único que permite alternar entre tarefas simplesmente alterando o prompt de entrada, tornando a inferência rápida e eficiente. Os usuários podem implantá-lo e usá-lo rapidamente por meio do código-fonte aberto no GitHub e da imagem do Docker fornecida.
Lista de funções
- Detecção de layoutCaixa de limite: identifica elementos em um documento (por exemplo, texto, tabelas, fórmulas, imagens etc.) e fornece coordenadas precisas da caixa de limite (bbox).
- reconhecimento de conteúdoExtrai texto, tabelas (saída em formato HTML), fórmulas (saída em formato LaTeX), etc. de documentos.
- Suporte a vários idiomasSuporte para análise de documentos em 100 idiomas, especialmente em idiomas com poucos recursos.
- Otimização da ordem de leituraClassificação: classifica os elementos do documento de acordo com os hábitos de leitura humana para garantir uma saída lógica.
- inferência rápidaModelo compacto baseado em 1,7 bilhão de parâmetros com velocidade de inferência melhor do que muitos modelos grandes.
- Troca flexível de dicasPor meio de diferentes prompts (por exemplo
prompt_layout_only_en
eprompt_ocr
) para obter uma análise específica da tarefa. - Diversidade de saídaGeração de dados de layout estruturados em formato JSON, arquivos Markdown e visualizações de caixa delimitadora.
Usando a Ajuda
Processo de instalação
Para usar o dots.ocr, primeiro você precisa instalar o ambiente e os pesos do modelo necessários. Veja a seguir as etapas detalhadas da instalação:
- Criação de um ambiente virtual::
conda create -n dots_ocr python=3.12 conda activate dots_ocr
- Repositório de código clone::
git clone https://github.com/rednote-hilab/dots.ocr.git cd dots.ocr
- Instalação do PyTorch e das dependências::
Dependendo de sua versão do CUDA, instale a versão correspondente do PyTorch, por exemplo:pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128 pip install -e .
- Download dos pesos do modelo::
Use o script fornecido para fazer o download dos pesos do modelo. Observe que o nome da pasta do caminho de salvamento do modelo não pode conter pontos; recomenda-se que você use oDotsOCR
::python3 tools/download_model.py
- Usando uma imagem do Docker (opcional)::
Se você tiver problemas de instalação, poderá usar a imagem do Docker fornecida oficialmente:git clone https://github.com/rednote-hilab/dots.ocr.git cd dots.ocr pip install -e .
Método de implantação
dots.ocr Recomendado vLLM A implementação é realizada para otimizar o desempenho da inferência. Veja a seguir as etapas da implementação baseada em vLLM:
- Registro de modelos no vLLM::
python3 tools/download_model.py export hf_model_path=./weights/DotsOCR export PYTHONPATH=$(dirname "$hf_model_path"):$PYTHONPATH sed -i '/^from vllm\.entrypoints\.cli\.main import main$/a\ from DotsOCR import modeling_dots_ocr_vllm' `which vllm`
- Início do serviço vLLM::
CUDA_VISIBLE_DEVICES=0 vllm serve ${hf_model_path} --tensor-parallel-size 1 --gpu-memory-utilization 0.95 --chat-template-content-format string --served-model-name model --trust-remote-code
- Executando o exemplo da API vLLM::
python3 ./demo/demo_vllm.py --prompt_mode prompt_layout_all_en
Como alternativa, use o HuggingFace para inferência:
python3 demo/demo_hf.py
Operações de análise de documentos
Depois que o serviço vLLM for iniciado, você poderá analisar um arquivo de imagem ou PDF com o seguinte comando:
- Análise de uma única imagem::
python3 dots_ocr/parser.py demo/demo_image1.jpg
- Análise de arquivos PDF::
Para PDFs de várias páginas, é recomendável definir um número maior de threads:python3 dots_ocr/parser.py demo/demo_pdf1.pdf --num_threads 64
- Somente teste de layout::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_layout_only_en
- Extrair somente texto (excluir cabeçalhos e rodapés)::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_ocr
- Análise baseada em caixa delimitadora::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_grounding_ocr --bbox 163 241 1536 705
resultado de saída
Após a análise, o dots.ocr gera o seguinte arquivo:
- Arquivo JSON(por exemplo
demo_image1.json
): contém a caixa delimitadora, a categoria e o conteúdo de texto do elemento de layout. - Arquivo markdown(por exemplo
demo_image1.md
): mescla todo o conteúdo de texto detectado no formato Markdown, com umdemo_image1_nohf.md
A versão exclui cabeçalhos e rodapés. - visualização(por exemplo
demo_image1.jpg
): desenha a caixa delimitadora detectada na imagem original.
Demo em execução
A interface de apresentação interativa pode ser iniciada com o seguinte comando:
python demo/demo_gradio.py
ou executar uma demonstração de OCR baseada em caixa delimitadora:
python demo/demo_gradio_annotion.py
advertência
- Modelo Salvar caminhoVerifique se o caminho de salvamento do modelo não contém períodos (por exemplo
DotsOCR
), caso contrário, isso pode resultar em um erro de carregamento do módulo. - resolução de imagemRecomenda-se que a resolução da imagem não exceda 11289600 pixels e que o DPI seja definido como 200 para resolução de PDF.
- Tratamento de caracteres especiaisCaracteres especiais consecutivos (por exemplo
...
talvez_
) pode resultar em uma exceção de saída, é recomendável usar oprompt_layout_only_en
talvezprompt_ocr
Dica.
cenário do aplicativo
- Análise de trabalhos acadêmicos
O dots.ocr analisa com eficiência textos, fórmulas e tabelas em artigos acadêmicos para produzir dados JSON estruturados e documentos Markdown para que os pesquisadores organizem sua literatura. - Processamento de relatórios financeiros
Para relatórios financeiros, o dots.ocr extrai com precisão o conteúdo de tabelas e textos, gerando tabelas em formato HTML para facilitar a análise e o arquivamento de dados. - Documentação multilíngue
Oferece suporte à análise em 100 idiomas e é adequado para o processamento de contratos multilíngues, documentos jurídicos etc., garantindo a extração precisa do conteúdo e do layout. - Coleta de materiais educacionais
Analisa livros didáticos, testes e outros materiais educacionais para extrair fórmulas (no formato LaTeX) e texto, facilitando a organização de recursos de aprendizado para professores e alunos.
QA
- Quais idiomas são suportados pelo dots.ocr?
O dots.ocr suporta 100 idiomas, incluindo inglês, chinês, tibetano, russo etc. Ele é especialmente bom em idiomas com poucos recursos. - Como lidar com arquivos PDF grandes?
fazer uso deparser.py
e definir o script--num_threads
(por exemplo, 64) para acelerar a análise de PDFs de várias páginas. - Como é a saída do resultado da análise?
Os resultados incluem arquivos JSON (dados estruturados), arquivos Markdown (conteúdo de texto) e imagens visuais (com caixas delimitadoras). - Como faço para resolver os erros de carregamento do modelo?
Certifique-se de que o caminho de salvamento do modelo não contenha períodos (por exemplo, usando o parâmetroDotsOCR
) e verifique se o script de registro do vLLM foi executado corretamente.