Different workflows can need different layouts from the same page. That’s why OXR lets you replace layout analysis while keeping recognition and reading order.
Document parsing has a long-overlooked performance tax: reading order.
Where you put that task matters. Run it as a separate stage, and parsing takes longer: reading order adds another sequential step. Combine it with layout analysis, and preparing training data gets harder: you need to label both the layout and the reading order.
In OXR, our open-source document parsing model, we run recognition and reading order in parallel within the same model, keeping layout analysis separate. This saves time while also making reading order content-aware. The separated layout model can be lighter and focus on detecting regions and their types, preserving layout accuracy while further speeding up parsing.
Keeping layout analysis separate also matters when adapting parsing to a business. The same page might need different structures: one workflow needs each image as a separate region; another needs the whole group kept together. Both are valid.
We made OXR’s layout analysis pluggable so you can swap in a model that fits your business while keeping OXR’s recognition and reading order capabilities.
I’ve written more about the design and trade-offs in “The Long-Overlooked Performance Cost in Document Parsing: Reading Order.”
Full article in the reply below.
With OXR’s RSI loop, parsing failures become a source of targeted training data—without manually labeling new samples. Binyang explains how we put that into practice.
Errors as data: RSI helped us build a small document parsing model with SOTA accuracy and speed.
We built OXR, our open-source document parsing model, around the idea that a small model can go a long way if you systematically find its weaknesses and build the right training data.
Real documents keep exposing new weaknesses. But turning those failures into training data usually means finding bad examples, diagnosing them, and manually labeling new samples. We wanted model iteration to move without waiting for another round of manual data preparation.
So we built a recursive self-improvement (RSI) loop into post-training. To our knowledge, OXR is the first document parsing model to use this approach.
Each round, OXR parses unlabeled documents. A general VLM evaluates the results and analyzes errors and uncertainty; disagreement between OXR’s predictions for the same document also flags uncertain samples. A clustering model groups issues by cause, helping the VLM plan the next round of OXR training and generate targeted data.
This loop requires no manual labeling of new training data, speeding up model iteration.
I think this idea is worth exploring beyond document parsing, wherever clear, testable outcomes let failures guide what a model should learn next.
OXR is one example of how we've put this idea into practice: a 1.3B model with SOTA accuracy and speed. And we think there's still room to make it smaller.
Full write-up in the next post 👇
@BinyangQiu What I like about this loop: errors help us figure out what OXR needs to learn next. Tried OXR? We’d love your feedback ➡️ https://t.co/seMzW7D0wj
@LoganMarkewich@somarkai Thanks! We focused on olmOCR-Bench and OmniDocBench at launch. If you feel like trying OXR on PareBench, I’d be curious to see how it does too!
@whispersofninja@somarkai Thanks for sharing! We haven’t run OXR on this benchmark yet. If you feel like giving it a go, we’d love to see your results!
@ngendlio@somarkai Thanks for asking! indra reports 47% table TEDS on OmniDocBench, while OXR reports 96.62%.——but Indra’s CPU efficiency is impressive! You can try both in your own documents
The next batch of documents may come from an unfamiliar industry, in another language, with a different layout. Can the model still parse it reliably?
It’s a question that keeps coming up in our work.
To tackle it, we turned to AI4AI—using AI to help improve AI—and built a recursive self-improvement (RSI) loop for post-training 🔁.With help from a general vision-language model, parsing errors and uncertain results inform the next training plan and targeted data generation.
This process helped us build SoMark, our production-grade document parsing engine. But as we served more customers, we realized there were still many kinds of documents we hadn't seen.
🎯 That's why we decided to open-source OXR. We hope the community will bring new use cases, reproducible problems, and domain knowledge, helping us improve the model and bring those improvements back to developers.
Developers also need accuracy, speed, and flexibility💡. We redesigned OXR to run recognition and content-aware reading order in parallel within one model, with independent, pluggable layout analysis. This speeds up parsing while preserving layout accuracy and lets developers customize layout analysis for their business needs.
Every one of the decisions serves one goal:keep improving how the model handles unfamiliar documents, and make those improvements easier to use.
Full story below 👇
👇 See OXR in action.
OXR recognizes 13 element types, including formulas, tables, chemical equations, chemical structures and code blocks, with bounding box coordinates.
It also handles newspapers, research papers, financial reports, resumes, exams, handwriting and more.
Give your agent a document-focused version of JEV.
We’ve open-sourced Docision!!! 🚀
Inspired by JEV, Docision adds multimodal capabilities and is fine-tuned for document tasks. With just 4B parameters, it lets your agent classify receipts and check forms on your laptop.
Give it a try and let us know what you’d use it for. Already using JEV? We’d love to hear how Docision could fit into your workflow.
If you find it helpful, give it a star⭐
https://t.co/djYmP2B0zX