这个项目能做什么

# olmOCR **olmOCR** 是一个工具包,用于将PDF和其他基于图像的文档格式(PNG、JPEG)转换为干净、可读的纯文本或Markdown。它旨在通过将文档线性化为自然阅读顺序(即使面对复杂布局)来构建大规模LLM训练数据集。该项目由艾伦人工智能研究所(AI2)的AllenNLP团队开发。 ## 主要特性 - **PDF/图像转Markdown**:将PDF、PNG和JPEG文档转换为干净的Markdown格式。 - **自然阅读顺序**:即使在多栏或复杂文档中也能保持逻辑阅读顺序。 - **成本效益高**:每百万页转换成本低于200美元(基于7B参数VLM,需要GPU)。 - **基准测试套件**:包含olmOCR-Bench,涵盖1400个文档中的7000多个测试用例,用于衡量OCR性能。 - **灵活推理**:可在本地使用GPU运行,连接外部vLLM服务器,或使用云提供商(如Cirrascale、DeepInfra、Parasail)。 - **并行处理**:支持多节点、多工作进程处理数百万个PDF。 - **Docker支持**:提供预构建镜像,可选是否包含模型(含模型约30GB)。 - **过滤**:对英文PDF进行基本过滤(非表单、非SEO垃圾内容)。 ## 安装 使用pip安装。如需GPU支持(推荐用于本地推理): ```bash pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128 ``` 如需使用外部服务器(无需GPU依赖): ```bash pip install olmocr ``` 可选附加项:`beaker`用于AI2 Beaker集成,`bench`用于基准测试套件。 ## 快速开始 ### 将PDF转换为Markdown ```bash # 下载示例PDF wget https://arxiv.org/pdf/2502.18443 # 将其转换为markdown olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf ``` ### 转换图像文件 ```bash olmocr ./localworkspace --markdown --pdfs random_page.png ``` ### 使用远程推理服务器 ```bash olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf ``` 结果以Markdown文件形式存储在`./localworkspace/markdown/`目录中。你也可以使用`python -m olmocr.pipeline`代替`olmocr`命令。 ## 命令行选项 主要参数包括: - `--pdfs`:PDF路径(本地、S3或通配符模式)。 - `--model`:模型标识符(默认:`allenai/olmOCR-7B-0725-FP8`)。 - `--server`:外部vLLM或OpenAI兼容服务器的URL。 - `--api_key`:外部提供商的API密钥。 - `--workers`:并行工作进程数。 - `--markdown`:将输出写入为Markdown格式。 - `--apply_filter`:对英文PDF应用基本过滤。 - `--beaker`:提交作业到AI2 Beaker。 - `--guided_decoding`:启用引导解码以生成结构化YAML输出。 - `--max_concurrent_requests`:推理提供商的最大并发请求数。 ## 外部提供商 olmOCR已与多家提供商测试,每百万token成本如下: | 提供商 | 输入 $/1M | 输出 $/1M | 示例命令 | |----------|-----------|-------------|-----------------| | 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` | ## Docker使用 拉取包含模型的镜像(约30GB): ```bash docker pull alleninstituteforai/olmocr:latest-with-model ``` 运行单个PDF转换: ```bash docker run --gpus all alleninstituteforai/olmocr:latest-with-model -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf" ``` 批量处理: ```bash docker run --gpus all -v /input:/input -v /output:/output alleninstituteforai/olmocr:latest-with-model -c "olmocr /output --markdown --pdfs /input/*.pdf" ``` ## 代码概览 可复用组件包括: - **提示策略**,用于自然文本解析(buildsilver.py) - **过滤**,按语言和SEO垃圾内容过滤(filter.py) - **SFT微调**代码,用于Qwen2.5-VL(train.py) - **合成数据生成**(mine_html_templates.py) - **流水线**,用于使用VLLM处理数百万个PDF(pipeline.py) ## 最近更新 - **v0.4.0(2025年10月21日)**:发布新模型(olmOCR-2-7B-1025-FP8),在olmOCR-bench上提升+4分,引入RL训练。 - **v0.3.0(2025年8月13日)**:发布新模型(olmOCR-7B-0825-FP8),修复自动旋转和空白文档幻觉问题。 - **v0.2.1(2025年7月24日)**:发布新模型(olmOCR-7B-0725-FP8),在olmOCR-Bench上提升+3分,推理速度更快。 - **v0.2.0(2025年7月23日)**:清理训练器代码,便于自定义训练。 - **v0.1.75(2025年6月17日)**:从sglang切换到vllm推理,更新Docker至CUDA 12.8。 - **v0.1.68(2025年5月19日)**:发布olmOCR-Bench(77.4分),修复流水线bug。 ## 许可证 Apache 2.0。详情请参阅LICENSE文件。 ## 团队 由AI2的AllenNLP团队开发,AI2是一家非营利研究机构。