🚀 QARI-OCR v0.3:阿拉伯语结构化文档理解
QARI-OCR v0.3 是一款专门用于阿拉伯语光学字符识别的视觉语言模型,专注于 结构化文档理解。它基于 Qwen2-VL-2B-Instruct 构建,在转录阿拉伯语文本时,能出色地保留文档布局、HTML 标签和格式。
🚀 快速开始
你可以使用 transformers
和 qwen_vl_utils
库加载此模型。点击下面的链接,在 Google Colab 中试用:
试用 Qari - Google Colab
!pip install transformers qwen_vl_utils accelerate>=0.26.0 PEFT -U
!pip install -U bitsandbytes
from PIL import Image
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
import torch
import os
from qwen_vl_utils import process_vision_info
model_name = "NAMAA-Space/Qari-OCR-v0.3-VL-2B-Instruct"
model = Qwen2VLForConditionalGeneration.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_name)
max_tokens = 2000
prompt = "Below is the image of one page of a document, as well as some raw textual content that was previously extracted for it. Just return the plain text representation of this document as if you were reading it naturally. Do not hallucinate."
image.save("image.png")
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": f"file://{src}"},
{"type": "text", "text": prompt},
],
}
]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
generated_ids = model.generate(**inputs, max_new_tokens=max_tokens)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
os.remove(src)
print(output_text)
也可以点击下面的链接,在 Google Colab 中使用 Notebook 试用模型:
Notebook
✨ 主要特性
- 📐 布局感知识别:通过 HTML/Markdown 标签保留文档结构。
- 🔤 全音符支持:准确识别阿拉伯语的音符(tashkeel)。
- 📝 多字体处理:在 12 种不同的阿拉伯字体(14px - 100px)上进行训练。
- 🎯 结构优先设计:针对包含标题、正文和复杂布局的文档进行了优化。
- ⚡ 高效训练:在单 GPU 上使用 10k 样本仅需 11 小时。
- 🖼️ 鲁棒性能:能够处理低分辨率和受损的图像。
📚 详细文档
模型描述
QARI-OCR v0.3 是一款专门为阿拉伯语光学字符识别而微调的视觉语言模型,重点在于 结构化文档理解。该模型基于 Qwen2-VL-2B-Instruct 构建,在转录阿拉伯语文本时,能出色地保留文档布局、HTML 标签和格式。详细信息可参考论文 QARI-OCR: High-Fidelity Arabic Text Recognition through Multimodal Large Language Model Adaptation。
模型性能
指标 |
得分 |
字符错误率(CER) |
0.300 |
单词错误率(WER) |
0.485 |
BLEU 得分 |
0.545 |
训练时间 |
11 小时 |
二氧化碳排放量 |
1.88 千克当量 |
比较优势
虽然 QARI v0.2 在原始文本准确性方面表现更好(CER:0.061),但 QARI v0.3 在以下方面表现出色:
- ✅ HTML/Markdown 结构保留
- ✅ 文档布局理解
- ✅ 手写文本识别(初步能力)
- ✅ 比 v0.2 快 5 倍的训练速度
🔧 技术细节
训练详情
- 基础模型:Qwen2-VL-2B-Instruct
- 训练数据:10,000 个带有 HTML 标记的合成阿拉伯语文档
- 优化方法:4 位 LoRA 适配器(rank = 16)
- 硬件:单块 NVIDIA A6000 GPU(48GB)
- 框架:Unsloth + Hugging Face TRL
BibTeX 引用
@article{wasfy2025qari,
title={QARI-OCR: High-Fidelity Arabic Text Recognition through Multimodal Large Language Model Adaptation},
author={Wasfy, Ahmed and Nacar, Omer and Elkhateb, Abdelakreem and Reda, Mahmoud and Elshehy, Omar and Ammar, Adel and Boulila, Wadii},
journal={arXiv preprint arXiv:2506.02295},
year={2025}
}
📄 许可证
本项目采用 Apache 2.0 许可证。