Introdução geral
O olmOCR é uma ferramenta de código aberto desenvolvida pela equipe AllenNLP do Allen Institute for Artificial Intelligence (AI2) que se concentra na conversão de arquivos PDF em texto linearizado e é especialmente adequada para a preparação de conjuntos de dados e treinamento de modelos de linguagem em larga escala (LLMs). Ele oferece suporte à extração de texto de documentos PDF complexos, mantém a ordem de leitura natural e pode lidar com tabelas, fórmulas e até mesmo conteúdo manuscrito. A ferramenta foi projetada para ser eficiente e pode ser executada em GPUs locais ou por meio do AWS S3 para processamento paralelo de vários nós, reduzindo significativamente os custos de processamento. De acordo com dados oficiais, sua velocidade de processamento chega a mais de 3.000 tokens por segundo, o custo é de apenas 1/32 do GPT-4o e é muito adequado para pesquisadores e desenvolvedores que precisam lidar com um grande número de PDFs. O olmOCR usa a licença Apache 2.0, o código, os pesos do modelo e os dados são totalmente de código aberto e incentiva a comunidade a participar do aprimoramento.
Endereço de demonstração: https://olmocr.allenai.org/
Lista de funções
- Extração e linearização de texto em PDFConverta arquivos PDF em texto formatado em JSONL no estilo Dolma, preservando a ordem de leitura.
- Raciocínio acelerado por GPU: Aproveitamento de GPUs nativas e da tecnologia sglang para processamento eficiente de documentos.
- Processamento paralelo de vários nósSuporte para coordenar tarefas de vários nós via AWS S3, adequado para processar milhões de PDFs.
- Reconhecimento de conteúdo complexoProcessamento de tabelas, fórmulas matemáticas e texto manuscrito para gerar resultados estruturados.
- Gerenciamento flexível do espaço de trabalhoEspaço de trabalho local ou na nuvem para armazenar resultados de processamento e dados intermediários.
- Suporte ecológico de código abertoFornecimento de código e documentação completos para desenvolvimento e personalização secundários.
Usando a Ajuda
Processo de instalação
A instalação do olmOCR precisa ser feita em um ambiente compatível com Python, e é recomendável usar uma GPU para aumentar a eficiência do processamento. Veja a seguir as etapas detalhadas:
1. preparação ambiental
- Instalação do AnacondaSe você não tiver o Anaconda, acesse o site oficial para fazer o download e instalá-lo.
- Criação de um ambiente virtual:
conda create -n olmocr python=3.11 conda activate olmocr
- Repositório de código clone:
git clone https://github.com/allenai/olmocr.git cd olmocr
2. instalação das dependências principais
- Instalação de dependências básicas:
pip install -e .
- Instalação do suporte à GPU (opcional)Instalação do sglang e do flashinfer se você precisar de aceleração de GPU:
pip install sgl-kernel==0.0.3.post1 --force-reinstall --no-deps pip install "sglang[all]==0.4.2" --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer/
tomar nota deVerifique se o driver da GPU e a versão CUDA são compatíveis com as dependências acima.
3. verificação da instalação
- Na linha de comando, execute
python -m olmocr.pipeline --help
Se a mensagem de ajuda for exibida, a instalação foi bem-sucedida.
Uso
O olmOCR oferece dois cenários principais de uso: processamento local de arquivo único e processamento em grande escala na nuvem. A seguir, descrevemos o processo de operação em detalhes.
Processamento local de PDFs individuais
- Preparação de arquivos PDF:
- Coloque o PDF a ser processado em um diretório local, por exemplo
. /tests/gnarly_pdfs/horribleocr.pdf
.
- Coloque o PDF a ser processado em um diretório local, por exemplo
- Executar comando de processamento:
python -m olmocr.pipeline . /localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf
- Exibir resultados:
- Quando o processamento é concluído, os resultados são salvos no formato JSON no arquivo
. /localworkspace
. - O texto extraído é armazenado no formato JSONL no estilo Dolma no arquivo
. /localworkspace/results
Médio.
- Quando o processamento é concluído, os resultados são salvos no formato JSON no arquivo
- Parâmetros de ajuste (opcional):
--Trabalhadores
Define o número de threads de trabalho simultâneos, padrão 8.--target_longest_image_dim
Comprimento do lado: Define o comprimento máximo do lado da imagem renderizada, padrão 1024 pixels.
saída de amostra (computação):
{ "text": "Molmo e PixMo:\nOpen Pesos and Open Data\nfor State-of-the..." , "metadata": {"primary_language": "en", "is_table": false}}
Processamento em grande escala na nuvem (AWS S3)
- Configuração do ambiente do AWS:
- Certifique-se de que você tenha uma conta do AWS e gere uma chave de acesso.
- Crie dois buckets no S3, por exemplo
s3://my_s3_bucket/pdfworkspaces/exampleworkspace
responder cantandos3://my_s3_bucket/jakep/gnarly_pdfs/
.
- Carregar arquivos PDF:
- Faça upload de arquivos PDF para
s3://my_s3_bucket/jakep/gnarly_pdfs/
.
- Faça upload de arquivos PDF para
- Iniciar uma tarefa de nó mestre:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf
- Esse comando cria uma fila de trabalho e inicia o processamento.
- Adição de nós escravos:
- Em execução em outras máquinas:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace
- O nó escravo obterá automaticamente a tarefa da fila e a processará.
- Visualização de resultados:
- Os resultados são armazenados no
s3://my_s3_bucket/pdfworkspaces/exampleworkspace/results
.
- Os resultados são armazenados no
tomar nota deConfiguração da CLI do AWS: É necessário configurar a CLI do AWS e garantir que você tenha permissões suficientes para acessar o bucket de armazenamento S3.
Uso de béqueres (usuário interno do AI2)
- Adicionar parâmetros do béquer:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker -- beaker_gpus 4
- efeito operacional:
- Depois de preparar o espaço de trabalho localmente, 4 nós de trabalho da GPU são iniciados automaticamente no cluster.
Operação da função em destaque
1. manuseio de documentos complexos
- procedimento:
- Faça upload de PDFs que contenham tabelas ou fórmulas.
- Usando o modelo padrão
allenai/olmOCR-7B-0225-preview
Execute o comando de processamento. - Verifique o arquivo JSONL de saída para ter certeza de que as tabelas e fórmulas estão sendo analisadas como texto corretamente.
- chamar a atenção para algoAjuste se o reconhecimento for ruim
--target_longest_image_dim
para aumentar a resolução da imagem.
2. processamento de alto rendimento
- procedimento:
- Configure um ambiente com vários nós (como AWS ou Beaker).
- crescente
--Trabalhadores
para aprimorar o paralelismo autônomo. - Monitore a velocidade de processamento para garantir mais de 3.000 tokens por segundo.
- de pontaCustos: os custos são tão baixos quanto US$ 190 por milhão de páginas, muito menos do que as APIs comerciais.
3. desenvolvimento personalizado
- procedimento:
- modificações
olmocr/pipeline.py
Ajustando a lógica de processamento. - intercambialidade
---modelo
usando um caminho de modelo personalizado. - Envie código para o GitHub e participe do desenvolvimento da comunidade.
- modificações
advertência
- Requisitos de hardwareGPU: é necessária uma GPU para a operação local; recomenda-se a placa de vídeo NVIDIA.
- requisito de redeProcessamento em nuvem: o processamento em nuvem requer uma conexão de rede estável com o AWS.
- Dicas de depuração: Uso
--stats
Parâmetro para visualizar as estatísticas do espaço de trabalho para solução de problemas.
Com essas etapas, você pode se familiarizar rapidamente com o olmOCR e realizar o trabalho com eficiência, independentemente de estar trabalhando com um único PDF ou com um conjunto de dados em grande escala.