CoolFace
Modelpublic

dots-studio/dots.mocr

sourceHugging Facemitupdated 3mo agoView on Hugging Face
180likes423kdownloads
README.md789 linesDownload Raw Back to root
1---2license: mit3library_name: dots_mocr4pipeline_tag: image-text-to-text5tags:6- image-to-text7- ocr8- document-parse9- layout10- table11- formula12- transformers13- custom_code14language:15- en16- zh17- multilingual18---19 20<div align="center">21 22<h1 align="center">23dots.mocr24</h1>25 26[![HuggingFace](https://img.shields.io/badge/HuggingFace%20Weights-black.svg?logo=HuggingFace)](https://huggingface.co/rednote-hilab/dots.mocr)27[![GitHub](https://img.shields.io/badge/GitHub-Repository-black?logo=github)](https://github.com/rednote-hilab/dots.mocr)28[![arXiv](https://img.shields.io/badge/arXiv-Paper-b31b1b.svg?logo=arxiv)](https://arxiv.org/abs/2603.13032v1)29 30 31<div align="center">32  <a href="https://dotsocr.xiaohongshu.com" target="_blank" rel="noopener noreferrer"><strong>🖥️ Live Demo</strong></a> | 33  <a href="https://raw.githubusercontent.com/rednote-hilab/dots.ocr/master/assets/wechat.jpg" target="_blank" rel="noopener noreferrer"><strong>💬 WeChat</strong></a> | 34  <a href="https://www.xiaohongshu.com/user/profile/683ffe42000000001d021a4c" target="_blank" rel="noopener noreferrer"><strong>📕 rednote</strong></a> | 35  <a href="https://x.com/rednotehilab" target="_blank" rel="noopener noreferrer"><strong>🐦 X</strong></a>36</div>37 38</div>39 40 41## Introduction42 43We present [dots.mocr](https://huggingface.co/rednote-hilab/dots.mocr). Beyond achieving state-of-the-art (SOTA) performance in standard multilingual document parsing among models of comparable size, **dots.mocr** excels at converting structured graphics (e.g., charts, UI layouts, scientific figures and etc.) directly into SVG code. Its core capabilities encompass grounding, recognition, semantic understanding, and interactive dialogue.44 45Simultaneously, we are releasing [dots.mocr-svg](https://huggingface.co/rednote-hilab/dots.mocr-svg), a variant specifically optimized for robust image-to-SVG parsing tasks. 46 47More information can be found [in the paper](https://arxiv.org/abs/2603.13032v1).48 49 50## Evaluation51 52### 1. Document Parsing53 54#### 1.1 Elo Score of different bench between latest models55 56<table>57  <thead>58    <tr>59      <th>models</th>60      <th>olmOCR-Bench</th>61      <th>OmniDocBench (v1.5)</th>62      <th>XDocParse</th>63      <th>Average</th>64    </tr>65  </thead>66  <tbody>67    <tr>68      <td>MonkeyOCR-pro-3B</td>69      <td>895.0</td>70      <td>811.3</td>71      <td>637.1</td>72      <td>781.1</td>73    </tr>74    <tr>75      <td>GLM-OCR</td>76      <td>884.2</td>77      <td>972.6</td>78      <td>820.7</td>79      <td>892.5</td>80    </tr>81    <tr>82      <td>PaddleOCR-VL-1.5</td>83      <td>897.3</td>84      <td>997.9</td>85      <td>866.4</td>86      <td>920.5</td>87    </tr>88    <tr>89      <td>HuanyuanOCR</td>90      <td>997.6</td>91      <td>1003.9</td>92      <td>951.1</td>93      <td>984.2</td>94    </tr>95    <tr>96      <td>dots.ocr</td>97      <td>1041.1</td>98      <td>1027.2</td>99      <td>1190.3</td>100      <td>1086.2</td>101    </tr>102    <!-- Highlighting dots.mocr row with bold tags -->103    <tr>104      <td><strong>dots.mocr</strong></td>105      <td><strong>1104.4</strong></td>106      <td><strong>1059.0</strong></td>107      <td><strong>1210.7</strong></td>108      <td><strong>1124.7</strong></td>109    </tr>110    <tr>111      <td>Gemini 3 Pro</td>112      <td>1180.4</td>113      <td>1128.0</td>114      <td>1323.7</td>115      <td>1210.7</td>116    </tr>117  </tbody>118</table>119 120 121> **Notes:** 122> - Results for Gemini 3 Pro, PaddleOCR-VL-1.5, and GLM-OCR were obtained via APIs, while HuanyuanOCR results were generated using local inference.123> - The Elo score evaluation was conducted using Gemini 3 Flash. The prompt can be found at: [Elo Score Prompt](https://github.com/rednote-hilab/dots.mocr/blob/master/tools/elo_score_prompt.py). These results are consistent with the findings on [ocrarena](https://www.ocrarena.ai/battle).124 125 126#### 1.2 olmOCR-bench127<table>128    <thead>129        <tr>130            <th>Model</th>131            <th>ArXiv</th>132            <th>Old scans math</th>133            <th>Tables</th>134            <th>Old scans</th>135            <th>Headers & footers</th>136            <th>Multi column</th>137            <th>Long tiny text</th>138            <th>Base</th>139            <th>Overall</th>140        </tr>141    </thead>142    <tbody>143        <tr>144            <td>Mistral OCR API</td>145            <td>77.2</td>146            <td>67.5</td>147            <td>60.6</td>148            <td>29.3</td>149            <td>93.6</td>150            <td>71.3</td>151            <td>77.1</td>152            <td>99.4</td>153            <td>72.0±1.1</td>154        </tr>155        <tr>156            <td>Marker 1.10.1</td>157            <td>83.8</td>158            <td>66.8</td>159            <td>72.9</td>160            <td>33.5</td>161            <td>86.6</td>162            <td>80.0</td>163            <td>85.7</td>164            <td>99.3</td>165            <td>76.1±1.1</td>166        </tr>167        <tr>168            <td>MinerU 2.5.4*</td>169            <td>76.6</td>170            <td>54.6</td>171            <td>84.9</td>172            <td>33.7</td>173            <td>96.6</td>174            <td>78.2</td>175            <td>83.5</td>176            <td>93.7</td>177            <td>75.2±1.1</td>178        </tr>179        <tr>180            <td>DeepSeek-OCR</td>181            <td>77.2</td>182            <td>73.6</td>183            <td>80.2</td>184            <td>33.3</td>185            <td>96.1</td>186            <td>66.4</td>187            <td>79.4</td>188            <td>99.8</td>189            <td>75.7±1.0</td>190        </tr>191        <tr>192            <td>Nanonets-OCR2-3B</td>193            <td>75.4</td>194            <td>46.1</td>195            <td>86.8</td>196            <td>40.9</td>197            <td>32.1</td>198            <td>81.9</td>199            <td>93.0</td>200            <td>99.6</td>201            <td>69.5±1.1</td>202        </tr>203        <tr>204            <td>PaddleOCR-VL*</td>205            <td>85.7</td>206            <td>71.0</td>207            <td>84.1</td>208            <td>37.8</td>209            <td>97.0</td>210            <td>79.9</td>211            <td>85.7</td>212            <td>98.5</td>213            <td>80.0±1.0</td>214        </tr>215        <tr>216            <td>Infinity-Parser 7B*</td>217            <td>84.4</td>218            <td>83.8</td>219            <td>85.0</td>220            <td>47.9</td>221            <td>88.7</td>222            <td>84.2</td>223            <td>86.4</td>224            <td>99.8</td>225            <td>82.5±?</td>226        </tr>227        <tr>228            <td>olmOCR v0.4.0</td>229            <td>83.0</td>230            <td>82.3</td>231            <td>84.9</td>232            <td>47.7</td>233            <td>96.1</td>234            <td>83.7</td>235            <td>81.9</td>236            <td>99.7</td>237            <td>82.4±1.1</td>238        </tr>239        <tr>240            <td>Chandra OCR 0.1.0*</td>241            <td>82.2</td>242            <td>80.3</td>243            <td>88.0</td>244            <td>50.4</td>245            <td>90.8</td>246            <td>81.2</td>247            <td>92.3</td>248            <td>99.9</td>249            <td>83.1±0.9</td>250        </tr>251        <tr>252            <td>dots.ocr</td>253            <td>82.1</td>254            <td>64.2</td>255            <td>88.3</td>256            <td>40.9</td>257            <td>94.1</td>258            <td>82.4</td>259            <td>81.2</td>260            <td>99.5</td>261            <td>79.1±1.0</td>262        </tr>263        <tr>264            <td><strong>dots.mocr</strong></td>265            <td><strong>85.9</strong></td>266            <td><strong>85.5</strong></td>267            <td><strong>90.7</strong></td>268            <td>48.2</td>269            <td>94.0</td>270            <td><strong>85.3</strong></td>271            <td>81.6</td>272            <td>99.7</td>273            <td><strong>83.9±0.9</strong></td>274        </tr>275    </tbody>276</table>277 278 279> **Note:**280> - The metrics are from [olmocr](https://github.com/allenai/olmocr), and our own internal evaluations.281> - We delete the Page-header and Page-footer cells in the result markdown.282 283 284#### 1.3 Other Benchmarks285 286<table>287  <thead>288    <tr>289      <th>Model Type</th>290      <th>Methods</th>291      <th>Size</th>292      <th>OmniDocBench(v1.5)<br>TextEdit↓</th>293      <th>OmniDocBench(v1.5)<br>Read OrderEdit↓</th>294      <th>pdf-parse-bench</th>295    </tr>296  </thead>297  <tbody>298    <!-- GeneralVLMs Group (Reversed Order, 3 rows) -->299    <tr>300      <td rowspan="3"><strong>GeneralVLMs</strong></td>301      <td>Gemini-2.5 Pro</td>302      <td>-</td>303      <td>0.075</td>304      <td>0.097</td>305      <td>9.06</td>306    </tr>307    <tr>308      <td>Qwen3-VL-235B-A22B-Instruct</td>309      <td>235B</td>310      <td>0.069</td>311      <td>0.068</td>312      <td><strong>9.71</strong></td>313    </tr>314    <tr>315      <td>gemini3pro</td>316      <td>-</td>317      <td>0.066</td>318      <td>0.079</td>319      <td>9.68</td>320    </tr>321    <!-- SpecializedVLMs Group (Reversed Order, 12 rows) -->322    <tr>323      <td rowspan="12"><strong>SpecializedVLMs</strong></td>324      <td>Mistral OCR</td>325      <td>-</td>326      <td>0.164</td>327      <td>0.144</td>328      <td>8.84</td>329    </tr>330    <tr>331      <td>Deepseek-OCR</td>332      <td>3B</td>333      <td>0.073</td>334      <td>0.086</td>335      <td>8.26</td>336    </tr>337    <tr>338      <td>MonkeyOCR-3B</td>339      <td>3B</td>340      <td>0.075</td>341      <td>0.129</td>342      <td>9.27</td>343    </tr>344    <tr>345      <td>OCRVerse</td>346      <td>4B</td>347      <td>0.058</td>348      <td>0.071</td>349      <td>--</td>350    </tr>351    <tr>352      <td>MonkeyOCR-pro-3B</td>353      <td>3B</td>354      <td>0.075</td>355      <td>0.128</td>356      <td>-</td>357    </tr>358    <tr>359      <td>MinerU2.5</td>360      <td>1.2B</td>361      <td>0.047</td>362      <td>0.044</td>363      <td>-</td>364    </tr>365    <tr>366      <td>PaddleOCR-VL</td>367      <td>0.9B</td>368      <td>0.035</td>369      <td>0.043</td>370      <td>9.51</td>371    </tr>372    <tr>373      <td>HunyuanOCR</td>374      <td>0.9B</td>375      <td>0.042</td>376      <td>-</td>377      <td>-</td>378    </tr>379    <tr>380      <td>PaddleOCR-VL1.5</td>381      <td>0.9B</td>382      <td>0.035</td>383      <td>0.042</td>384      <td>-</td>385    </tr>386    <tr>387      <td>GLMOCR</td>388      <td>0.9B</td>389      <td>0.04</td>390      <td>0.043</td>391      <td>-</td>392    </tr>393    <tr>394      <td>dots.ocr</td>395      <td>3B</td>396      <td>0.048</td>397      <td>0.053</td>398      <td>9.29</td>399    </tr>400    <tr>401      <td><u><strong>dots.mocr</strong></u></td>402      <td>3B</td>403      <td><strong>0.031</strong></td>404      <td><strong>0.029</strong></td>405      <td>9.54</td>406    </tr>407  </tbody>408</table>409 410> **Note:**411> - Metrics are sourced from [OmniDocBench](https://github.com/opendatalab/OmniDocBench) and other model publications. [pdf-parse-bench](https://github.com/phorn1/pdf-parse-bench) results are reproduced by Qwen3-VL-235B-A22B-Instruct.412> - Formula and Table metrics for OmniDocBench1.5 are omitted due to their high sensitivity to detection and matching protocols.413 414 415### 2. Structured Graphics Parsing416Visual languages (e.g., charts, graphics, chemical formulas, logos) encapsulate dense human knowledge. **dots.mocr** unifies the interpretation of these elements by parsing them directly into **SVG code**.417 418<table>419  <thead>420    <tr>421      <th rowspan="2" style="text-align: left;">Methods</th>422      <th colspan="3">Unisvg</th>423      <th rowspan="2">Chartmimic</th>424      <th rowspan="2">Design2Code</th>425      <th rowspan="2">Genexam</th>426      <th rowspan="2">SciGen</th>427      <th rowspan="2">ChemDraw</th>428    </tr>429    <tr>430      <th>Low-Level</th>431      <th>High-Level</th>432      <th>Score</th>433    </tr>434  </thead>435  <tbody>436    <tr>437      <td style="text-align: left;">OCRVerse</td>438      <td>0.632</td>439      <td>0.852</td>440      <td>0.763</td>441      <td>0.799</td>442      <td>-</td>443      <td>-</td>444      <td>-</td>445      <td>0.881</td>446    </tr>447    <tr>448      <td style="text-align: left;">Gemini 3 Pro</td>449      <td>0.563</td>450      <td>0.850</td>451      <td>0.735</td>452      <td>0.788</td>453      <td>0.760</td>454      <td>0.756</td>455      <td>0.783</td>456      <td>0.839</td>457    </tr>458    <tr>459      <td style="text-align: left;">dots.mocr</td>460      <td>0.850</td>461      <td>0.923</td>462      <td>0.894</td>463      <td>0.772</td>464      <td>0.801</td>465      <td>0.664</td>466      <td>0.660</td>467      <td>0.790</td>468    </tr>469    <tr>470      <td style="text-align: left;"><strong>dots.mocr-svg</strong></td>471      <td><strong>0.860</strong></td>472      <td><strong>0.931</strong></td>473      <td><strong>0.902</strong></td>474      <td><strong>0.905</strong></td>475      <td><strong>0.834</strong></td>476      <td><strong>0.8</strong></td>477      <td><strong>0.797</strong></td>478      <td><strong>0.901</strong></td>479    </tr>480  </tbody>481</table>482 483 484> **Note:**485> - We use the ISVGEN metric from [UniSVG](https://ryanlijinke.github.io/) to evaluate the parsing result. For benchmarks that do not natively support image parsing, we use the original images as input, and calculate the ISVGEN score between the rendered output and the original image. 486> - [OCRVerse](https://github.com/DocTron-hub/OCRVerse) results are derived from various code formats (e.g., SVG, Python), whereas results for Gemini 3 Pro and dots.mocr are based specifically on SVG code.487> - Due to the capacity constraints of a 3B-parameter VLM, dots.mocr may not excel in all tasks yet like svg. To complement this, we are simultaneously releasing dots.mocr-svg. We plan to further address these limitations in future updates.488 489 490### 3. General Vision Tasks491 492<table>493    <thead>494        <tr>495            <th>Model</th>496            <th>CharXiv_descriptive</th>497            <th>CharXiv_reasoning</th>498            <th>OCR_Reasoning</th>499            <th>infovqa</th>500            <th>docvqa</th>501            <th>ChartQA</th>502            <th>OCRBench</th>503            <th>AI2D</th>504            <th>CountBenchQA</th>505            <th>refcoco</th>506        </tr>507    </thead>508    <tbody>509        <tr>510            <td>Qwen3vl-2b-instruct</td>511            <td>62.3</td>512            <td>26.8</td>513            <td>-</td>514            <td>72.4</td>515            <td>93.3</td>516            <td>-</td>517            <td>85.8</td>518            <td>76.9</td>519            <td>88.4</td>520            <td>-</td>521        </tr>522        <tr>523            <td>Qwen3vl-4b-instruct</td>524            <td>76.2</td>525            <td>39.7</td>526            <td>-</td>527            <td>80.3</td>528            <td>95.3</td>529            <td>-</td>530            <td>88.1</td>531            <td>84.1</td>532            <td>84.9</td>533            <td>-</td>534        </tr>535        <tr>536            <td><strong>dots.mocr</strong></td>537            <td>77.4</td>538            <td>55.3</td>539            <td>22.85</td>540            <td>73.76</td>541            <td>91.85</td>542            <td>83.2</td>543            <td>86.0</td>544            <td>82.16</td>545            <td>94.46</td>546            <td>80.03</td>547        </tr>548    </tbody>549</table>550 551 552 553# Quick Start554## 1. Installation555### Install dots.mocr556```shell557conda create -n dots_mocr python=3.12558conda activate dots_mocr559 560git clone https://github.com/rednote-hilab/dots.mocr.git561cd dots.mocr562 563# Install pytorch, see https://pytorch.org/get-started/previous-versions/ for your cuda version564# pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128565# install flash-attn==2.8.0.post2 for faster inference566pip install -e .567```568 569If you have trouble with the installation, try our [Docker Image](https://hub.docker.com/r/rednotehilab/dots.ocr) for an easier setup, and follow these steps:570 571 572### Download Model Weights573> 💡**Note:** Please use a directory name without periods (e.g., `DotsMOCR` instead of `dots.mocr`) for the model save path. This is a temporary workaround pending our integration with Transformers.574```shell575python3 tools/download_model.py576 577# with modelscope578python3 tools/download_model.py --type modelscope579```580 581 582## 2. Deployment583### vLLM inference584We highly recommend using vLLM for deployment and inference. **Since vLLM version 0.11.0, Dots OCR has been officially integrated into vLLM with verified performance** and you can use vLLM docker image directly (e.g, `vllm/vllm-openai:v0.11.0`) to deploy the model server.585 586```shell587# Launch vLLM model server588## dots.mocr589CUDA_VISIBLE_DEVICES=0 vllm serve rednote-hilab/dots.mocr --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --chat-template-content-format string --served-model-name model --trust-remote-code590 591## dots.mocr-svg592CUDA_VISIBLE_DEVICES=0 vllm serve rednote-hilab/dots.mocr-svg --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --chat-template-content-format string --served-model-name model --trust-remote-code593 594# vLLM API Demo595# See dots_mocr/model/inference.py and dots_mocr/utils/prompts.py for details on parameter and prompt settings 596# that help achieve the best output quality.597## document parsing598python3 ./demo/demo_vllm.py --prompt_mode prompt_layout_all_en 599## web parsing 600python3 ./demo/demo_vllm.py --prompt_mode prompt_web_parsing --image_path ./assets/showcase/origin/webpage_1.png601## scene spoting602python3 ./demo/demo_vllm.py --prompt_mode prompt_scene_spotting --image_path ./assets/showcase/origin/scene_1.jpg603## image parsing with svg code604python3 ./demo/demo_vllm_svg.py --prompt_mode prompt_image_to_svg 605## general qa606python3 ./demo/demo_vllm_general.py607```608 609### Hugginface inference610```shell611python3 demo/demo_hf.py612```613 614<details>615<summary><b>Hugginface inference details</b></summary>616 617```python618import torch619from transformers import AutoModelForCausalLM, AutoProcessor, AutoTokenizer620from qwen_vl_utils import process_vision_info621from dots_mocr.utils import dict_promptmode_to_prompt622 623model_path = "./weights/DotsMOCR"624model = AutoModelForCausalLM.from_pretrained(625    model_path,626    attn_implementation="flash_attention_2",627    torch_dtype=torch.bfloat16,628    device_map="auto",629    trust_remote_code=True630)631processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)632 633image_path = "demo/demo_image1.jpg"634prompt = """Please output the layout information from the PDF image, including each layout element's bbox, its category, and the corresponding text content within the bbox.635 6361. Bbox format: [x1, y1, x2, y2]637 6382. Layout Categories: The possible categories are ['Caption', 'Footnote', 'Formula', 'List-item', 'Page-footer', 'Page-header', 'Picture', 'Section-header', 'Table', 'Text', 'Title'].639 6403. Text Extraction & Formatting Rules:641    - Picture: For the 'Picture' category, the text field should be omitted.642    - Formula: Format its text as LaTeX.643    - Table: Format its text as HTML.644    - All Others (Text, Title, etc.): Format their text as Markdown.645 6464. Constraints:647    - The output text must be the original text from the image, with no translation.648    - All layout elements must be sorted according to human reading order.649 6505. Final Output: The entire output must be a single JSON object.651"""652 653messages = [654        {655            "role": "user",656            "content": [657                {658                    "type": "image",659                    "image": image_path660                },661                {"type": "text", "text": prompt}662            ]663        }664    ]665 666# Preparation for inference667text = processor.apply_chat_template(668    messages, 669    tokenize=False, 670    add_generation_prompt=True671)672image_inputs, video_inputs = process_vision_info(messages)673inputs = processor(674    text=[text],675    images=image_inputs,676    videos=video_inputs,677    padding=True,678    return_tensors="pt",679)680 681inputs = inputs.to("cuda")682 683# Inference: Generation of the output684generated_ids = model.generate(**inputs, max_new_tokens=24000)685generated_ids_trimmed = [686    out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)687]688output_text = processor.batch_decode(689    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False690)691print(output_text)692 693```694 695</details>696 697### Hugginface inference with CPU698Please refer to [CPU inference](https://github.com/rednote-hilab/dots.ocr/issues/1#issuecomment-3148962536)699 700 701## 3. Document Parse702**Based on vLLM server**, you can parse an image or a pdf file using the following commands:703```bash704 705# Parse all layout info, both detection and recognition706# Parse a single image707python3 dots_mocr/parser.py demo/demo_image1.jpg708# Parse a single PDF709python3 dots_mocr/parser.py demo/demo_pdf1.pdf  --num_thread 64  # try bigger num_threads for pdf with a large number of pages710 711# Layout detection only712python3 dots_mocr/parser.py demo/demo_image1.jpg --prompt prompt_layout_only_en713 714# Parse text only, except Page-header and Page-footer715python3 dots_mocr/parser.py demo/demo_image1.jpg --prompt prompt_ocr716 717 718```719**Based on Transformers**, you can parse an image or a pdf file using the same commands above, just add `--use_hf true`. 720 721> Notice: transformers is slower than vllm, if you want to use demo/* with transformers,just add `use_hf=True` in `DotsMOCRParser(..,use_hf=True)`722 723<details>724<summary><b>Output Results</b></summary>725 7261.  **Structured Layout Data** (`demo_image1.json`): A JSON file containing the detected layout elements, including their bounding boxes, categories, and extracted text.7272.  **Processed Markdown File** (`demo_image1.md`): A Markdown file generated from the concatenated text of all detected cells.728    *   An additional version, `demo_image1_nohf.md`, is also provided, which excludes page headers and footers for compatibility with benchmarks like Omnidocbench and olmOCR-bench.7293.  **Layout Visualization** (`demo_image1.jpg`): The original image with the detected layout bounding boxes drawn on it.730 731</details>732 733 734## 4. Demo735Have fun with the [live demo](https://dotsocr.xiaohongshu.com/).736 737 738### Examples for document parsing739<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/formula1.png" alt="formula1.png" border="0" />740<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/table3.png" alt="table3.png" border="0" />741<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/Tibetan.png" alt="Tibetan.png" border="0" />742<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/tradition_zh.png" alt="tradition_zh.png" border="0" />743<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/nl.png" alt="nl.png" border="0" />744<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/kannada.png" alt="kannada.png" border="0" />745<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/russian.png" alt="russian.png" border="0" />746 747 748### Examples for image parsing749<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/svg_1.png" alt="svg_1.png" border="0" />750<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/svg_2.png" alt="svg_2.png" border="0" />751<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/svg_4.png" alt="svg_4.png" border="0" />752<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/svg_5.png" alt="svg_5.png" border="0" />753<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/svg_6.png" alt="svg_6.png" border="0" />754 755> **Note:**756> - Inferenced by dots.mocr-svg757 758### Example for web parsing759<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/webpage_1.png" alt="webpage_1.png" border="0" />760<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/webpage_2.png" alt="webpage_2.png" border="0" />761 762### Examples for scene spotting763<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/scene_1.png" alt="scene_1.png" border="0" />764<img src="https://raw.githubusercontent.com/rednote-hilab/dots.mocr/master/assets/showcase/result/scene_2.png" alt="scene_2.png" border="0" />765 766 767# Limitation & Future Work768 769- **Complex Document Elements:**770  - **Table&Formula**: The extraction of complex tables and mathematical formulas persists as a difficult task given the model's compact architecture.771  - **Picture**: We have adopted an SVG code representation for parsing structured graphics; however, the performance has yet to achieve the desired level of robustness.772 773- **Parsing Failures:** While we have reduced the rate of parsing failures compared to the previous version, these issues may still occur occasionally. We remain committed to further resolving these edge cases in future updates. 774 775 776# Citation777 778```BibTeX779@misc{zheng2026multimodalocrparsedocuments,780      title={Multimodal OCR: Parse Anything from Documents}, 781      author={Handong Zheng and Yumeng Li and Kaile Zhang and Liang Xin and Guangwei Zhao and Hao Liu and Jiayu Chen and Jie Lou and Jiyu Qiu and Qi Fu and Rui Yang and Shuo Jiang and Weijian Luo and Weijie Su and Weijun Zhang and Xingyu Zhu and Yabin Li and Yiwei ma and Yu Chen and Zhaohui Yu and Guang Yang and Colin Zhang and Lei Zhang and Yuliang Liu and Xiang Bai},782      year={2026},783      eprint={2603.13032},784      archivePrefix={arXiv},785      primaryClass={cs.CV},786      url={https://arxiv.org/abs/2603.13032}, 787}788```789