|
|
--- |
|
|
license: apache-2.0 |
|
|
library_name: transformers |
|
|
pipeline_tag: image-text-to-text |
|
|
tags: |
|
|
- ocr |
|
|
- vision-language-model |
|
|
- document-understanding |
|
|
--- |
|
|
|
|
|
# OCRVerse: Towards Holistic OCR in End-to-End Vision-Language Models |
|
|
|
|
|
OCRVerse is a holistic OCR method that enables unified text-centric OCR (extracting text from documents like books and magazines) and vision-centric OCR (identifying visual elements from information-dense sources like charts, web pages, and scientific plots) in an end-to-end manner. |
|
|
|
|
|
- **Paper:** [OCRVerse: Towards Holistic OCR in End-to-End Vision-Language Models](https://huggingface.co/papers/2601.21639) |
|
|
- **GitHub Repository:** [DocTron-hub/OCRVerse](https://github.com/DocTron-hub/OCRVerse) |
|
|
|
|
|
## Usage Example |
|
|
|
|
|
To use OCRVerse, please ensure you have the `transformers` library installed: |
|
|
|
|
|
```shell |
|
|
pip install "transformers>=4.57.0" |
|
|
``` |
|
|
|
|
|
### Text-Centric Document Parsing |
|
|
|
|
|
Below is a simple example of how to use OCRVerse for document parsing tasks. |
|
|
|
|
|
```python |
|
|
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor |
|
|
import torch |
|
|
|
|
|
# Load model |
|
|
model_path = 'DocTron/OCRVerse' |
|
|
model = Qwen3VLForConditionalGeneration.from_pretrained( |
|
|
model_path, |
|
|
dtype="auto", |
|
|
device_map="cuda", |
|
|
trust_remote_code=True |
|
|
) |
|
|
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True) |
|
|
|
|
|
# Prepare input with image and text |
|
|
image_path = "path/to/your/image.jpg" |
|
|
# We recommend using the following prompt for better performance |
|
|
prompt = "Extract the main content from the document in the image, keeping the original structure. Convert all formulas to LaTeX and all tables to HTML." |
|
|
|
|
|
messages = [ |
|
|
{ |
|
|
"role": "user", |
|
|
"content": [ |
|
|
{"type": "image", "image": image_path}, |
|
|
{"type": "text", "text": prompt}, |
|
|
] |
|
|
} |
|
|
] |
|
|
|
|
|
# Preparation for inference |
|
|
inputs = processor.apply_chat_template( |
|
|
messages, |
|
|
tokenize=True, |
|
|
add_generation_prompt=True, |
|
|
return_dict=True, |
|
|
return_tensors="pt" |
|
|
) |
|
|
inputs = inputs.to(model.device) |
|
|
|
|
|
# Inference: Generation of the output |
|
|
generated_ids = model.generate(**inputs, max_new_tokens=8192, do_sample=False) |
|
|
|
|
|
generated_ids = [ |
|
|
output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, generated_ids) |
|
|
] |
|
|
output_text = processor.tokenizer.batch_decode( |
|
|
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False |
|
|
) |
|
|
print(output_text[0]) |
|
|
``` |
|
|
|
|
|
## Citation |
|
|
|
|
|
If you find this project useful, please cite our paper: |
|
|
|
|
|
```bibtex |
|
|
@article{zhong2026ocrverse, |
|
|
title={OCRVerse: Towards Holistic OCR in End-to-End Vision-Language Models}, |
|
|
author={Yufeng Zhong and Lei Chen and Xuanle Zhao and Wenkang Han and Liming Zheng and Jing Huang and Deyang Jiang and Yilin Cao and Lin Ma and Zhixiong Zeng}, |
|
|
journal={arXiv preprint arXiv:2601.21639}, |
|
|
year={2026} |
|
|
} |
|
|
``` |