Sobre o projeto

# olmOCR **olmOCR** é um kit de ferramentas para converter PDFs e outros formatos de documento baseados em imagem (PNG, JPEG) em texto simples ou Markdown limpo e legível. Ele foi projetado para construir conjuntos de dados de treinamento de LLM em larga escala, linearizando documentos em ordem natural de leitura, mesmo com layouts complexos. O projeto é desenvolvido pela equipe AllenNLP do Allen Institute for Artificial Intelligence (AI2). ## Principais Recursos - **PDF/Imagem para Markdown**: Converte documentos PDF, PNG e JPEG em formato Markdown limpo. - **Ordem Natural de Leitura**: Preserva a sequência lógica de leitura, mesmo em documentos com múltiplas colunas ou complexos. - **Custo-Benefício**: Menos de US$ 200 por milhão de páginas convertidas (com base em um VLM de 7B parâmetros, requer uma GPU). - **Suíte de Benchmark**: Inclui o olmOCR-Bench com mais de 7.000 casos de teste em 1.400 documentos para medir o desempenho de OCR. - **Inferência Flexível**: Execute localmente com GPU, conecte-se a servidores vLLM externos ou use provedores de nuvem (por exemplo, Cirrascale, DeepInfra, Parasail). - **Processamento Paralelo**: Suporta processamento multi-nó e multi-worker para milhões de PDFs. - **Suporte a Docker**: Imagens pré-construídas com ou sem o modelo incluído (~30GB com o modelo). - **Filtragem**: Filtragem básica para PDFs em inglês (não formulários, não spam de SEO). ## Instalação Instale com pip. Para suporte a GPU (recomendado para inferência local): ```bash pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128 ``` Para uso com servidor externo (sem dependências de GPU): ```bash pip install olmocr ``` Extras opcionais: `beaker` para integração com AI2 Beaker, `bench` para a suíte de benchmark. ## Início Rápido ### Converter um PDF para Markdown ```bash # Baixar um PDF de exemplo wget https://arxiv.org/pdf/2502.18443 # Convertê-lo para markdown olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf ``` ### Converter um Arquivo de Imagem ```bash olmocr ./localworkspace --markdown --pdfs random_page.png ``` ### Usar Servidor de Inferência Remoto ```bash olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf ``` Os resultados são armazenados como arquivos Markdown em `./localworkspace/markdown/`. Você também pode usar `python -m olmocr.pipeline` em vez do comando `olmocr`. ## Opções de Linha de Comando Argumentos principais incluem: - `--pdfs`: Caminhos para PDFs (locais, S3 ou padrões glob). - `--model`: Identificador do modelo (padrão: `allenai/olmOCR-7B-0725-FP8`). - `--server`: URL de um servidor vLLM externo ou compatível com OpenAI. - `--api_key`: Chave de API para provedores externos. - `--workers`: Número de workers paralelos. - `--markdown`: Escrever saída como Markdown. - `--apply_filter`: Aplicar filtragem básica a PDFs em inglês. - `--beaker`: Enviar trabalho para o AI2 Beaker. - `--guided_decoding`: Habilitar decodificação guiada para saídas YAML estruturadas. - `--max_concurrent_requests`: Máximo de requisições simultâneas ao provedor de inferência. ## Provedores Externos O olmOCR foi testado com vários provedores, com custos por milhão de tokens: | Provedor | Entrada $/1M | Saída $/1M | Comando de Exemplo | |----------|-----------|-------------|-----------------| | Cirrascale | $0.07 | $0.15 | `olmocr ./workspace --server https://ai2endpoints.cirrascale.ai/api --api_key sk-XXXX --model olmOCR-2-7B-1025 --pdfs *.pdf` | | DeepInfra | $0.09 | $0.19 | `olmocr ./workspace --server https://api.deepinfra.com/v1/openai --api_key DfXXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` | | Parasail | $0.10 | $0.20 | `olmocr ./workspace --server https://api.parasail.io/v1 --api_key psk-XXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` | ## Uso com Docker Baixe a imagem com o modelo incluído (~30GB): ```bash docker pull alleninstituteforai/olmocr:latest-with-model ``` Execute uma conversão de PDF única: ```bash docker run --gpus all alleninstituteforai/olmocr:latest-with-model -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf" ``` Para processamento em lote: ```bash docker run --gpus all -v /input:/input -v /output:/output alleninstituteforai/olmocr:latest-with-model -c "olmocr /output --markdown --pdfs /input/*.pdf" ``` ## Visão Geral do Código Componentes reutilizáveis incluem: - **Estratégia de prompting** para análise de texto natural (buildsilver.py) - **Filtragem** por idioma e remoção de spam de SEO (filter.py) - **Código de Finetuning SFT** para Qwen2.5-VL (train.py) - **Geração de dados sintéticos** (mine_html_templates.py) - **Pipeline** para processar milhões de PDFs com VLLM (pipeline.py) ## Atualizações Recentes - **v0.4.0 (21 de outubro de 2025)**: Novo lançamento de modelo (olmOCR-2-7B-1025-FP8), +4 pontos no olmOCR-bench, introduz treinamento por RL. - **v0.3.0 (13 de agosto de 2025)**: Novo lançamento de modelo (olmOCR-7B-0825-FP8), corrige rotação automática e alucinações em documentos em branco. - **v0.2.1 (24 de julho de 2025)**: Novo lançamento de modelo (olmOCR-7B-0725-FP8), +3 pontos no olmOCR-Bench, inferência mais rápida. - **v0.2.0 (23 de julho de 2025)**: Código do treinador limpo para facilitar o treinamento personalizado. - **v0.1.75 (17 de junho de 2025)**: Mudança de inferência sglang para vllm, Docker atualizado para CUDA 12.8. - **v0.1.68 (19 de maio de 2025)**: Lançamento do olmOCR-Bench (pontuação 77.4), correções de bugs no pipeline. ## Licença Apache 2.0. Consulte o arquivo LICENSE para detalhes. ## Equipe Desenvolvido pela equipe AllenNLP da AI2, um instituto de pesquisa sem fins lucrativos.