NEWVectors or files. Pick a path.Start →
    Models/Text Extraction/allenai/olmOCR-2-7B-1025
    HFOCRapache-2.0

    olmOCR-2-7B-1025

    by allenai

    Document OCR with a published per-category score, including the categories that usually go unreported

    88Kdl/month
    158likes
    8.3Bparams
    Identifiers
    Model ID
    allenai/olmOCR-2-7B-1025
    Feature URI
    mixpeek://image_extractor@v1/allenai_olmocr2_7b_1025_v1

    Deploy olmOCR-2-7B-1025

    Single-tenant

    Mixpeek has no managed extractor for this model. On a single-tenant deployment you upload the weights and a custom plugin serves them next to the rest of your pipeline.

    Overview

    OCR benchmarks tend to report one number over clean documents, which tells you nothing about the pages that break pipelines. olmOCR-2 publishes a score per category on olmOCR-bench, and the interesting row is the low one: 48.3 on old scans, against 99.7 on clean base documents and 95.7 on headers and footers. That spread is the real shape of document OCR, and a model that shows it lets you decide whether your corpus is the easy kind.

    It is a Qwen2.5-VL-7B-Instruct fine-tune trained on the olmOCR-mix-1025 dataset and then tuned further with GRPO reinforcement learning aimed at equations, tables and awkward cases. Unlike a classic OCR engine it reads a page the way a vision-language model does, which is what lets it recover reading order in multi-column layouts and keep table structure intact instead of flattening cells into a line.

    Architecture

    A vision-language model rather than a detector plus recogniser: Qwen2.5-VL-7B-Instruct fine-tuned on olmOCR-mix-1025, then further tuned with GRPO reinforcement learning on math equations, tables and difficult scans. It takes one document image per call, rendered so the longest dimension is 1,288 pixels, plus page metadata in the prompt. 8.3B parameters in BF16; an FP8 build is the recommended one for inference.

    Mixpeek SDK Integration

    # Render the page so its longest side is 1288px before you send it. The
    # toolkit does this for you and also handles rotation and retries.
    from olmocr.pipeline import run_page
    from mixpeek import Mixpeek
    
    mx = Mixpeek(api_key="API_KEY")
    page_text = run_page("archive/1987-annual-report.pdf", page_num=12)
    
    mx.documents.upsert(
        collection_id="col_your_collection",
        documents=[{
            "document_id": "annual-1987-page-12",
            "payload": {
                "source_key": "archive/1987-annual-report.pdf#page=12",
                "text": page_text,
            },
        }],
    )

    Capabilities

    • Per-category published accuracy on olmOCR-bench rather than a single headline number
    • Reading-order recovery in multi-column layouts (84.3 on the multi-column category)
    • Table structure preserved instead of flattened (84.3 on tables)
    • Math equations handled as a trained target (82.1 on old scans math)
    • Batch inference at scale through the olmOCR toolkit on vLLM

    Use Cases on Mixpeek

    Digitising archives of scanned reports where layout carries meaning
    Extracting tables from filings and statements for downstream structuring
    Preparing document text for retrieval when a classic OCR engine loses the layout
    Anything where you need to know the error rate on bad scans before you commit

    Benchmarks

    DatasetMetricScoreSource
    olmOCR-benchOverall82.3 +/- 1.1Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchBase documents99.7Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchHeaders and footers95.7Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchTables84.3Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchMulti column84.3Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchArXiv82.9Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchOld scans math82.1Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchLong tiny text81.4Allen AI model card, olmOCR pipeline v0.4.0
    olmOCR-benchOld scans48.3Allen AI model card, olmOCR pipeline v0.4.0

    Frequently Asked Questions

    Why is the old-scans score so much lower than the rest?

    Degraded scans are harder: bleed-through, skew, speckle and broken glyphs remove the evidence any model needs. 48.3 on that category against 99.7 on clean pages is the honest spread, and it is the number to plan around if your archive is microfilm or photocopies. Pre-processing the images helps more than swapping models at that end of the range.

    Should I use the BF16 weights or the FP8 build?

    FP8 for inference. The card recommends it for everything except further fine-tuning, and the published scores differ by a tenth of a point, which is inside the reported error bar.

    Is a 7B vision-language model overkill compared with a classic OCR engine?

    For clean single-column text, yes, and a traditional engine is far cheaper per page. The case for this model is the pages where layout carries meaning: multi-column articles, tables, equations. A common arrangement is a cheap engine by default with this one routed the difficult pages.

    Does Mixpeek run this model?

    Not as a managed extractor. Run the olmOCR toolkit over your PDFs and upsert the text, or use a managed document extractor when the corpus does not need this level of layout recovery.

    Specification

    FrameworkHF
    Organizationallenai
    FeatureOCR
    Outputtext + bbox
    Modalitiesvideo, image, document
    RetrieverText-in-Image
    Parameters8.3B
    Licenseapache-2.0
    Downloads/mo88K
    Likes158

    Research Paper

    olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models

    arxiv.org

    Build a pipeline with olmOCR-2-7B-1025

    Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.

    Run it on your own data, free