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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.