🚀 Qari-OCR-Arabic-0.2.2.1-VL-2B-Instruct模型
本模型是一个用于阿拉伯语光学字符识别(OCR)的高精度模型,基于特定数据集微调,能准确提取全页阿拉伯语文本,在多种指标评估中表现出色。
🚀 快速开始
你可以使用 transformers
和 qwen_vl_utils
库加载此模型:
!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-0.2.2.1-Arabic-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)
✨ 主要特性
- 卓越的准确性:在阿拉伯语OCR的性能指标上达到了最先进的水平。
- 支持变音符号:能够完全识别阿拉伯语的变音符号(tashkeel),包括开口符(fatḥah)、齐齿符(kasrah)、合口符(ḍammah)、静符(sukūn)、叠音符(shadda)和鼻音符(tanwin)等形式,这一优势在主要包含变音符号文本的数据集评估中得到了证实。
- 支持多种字体:适用于各种阿拉伯语字体样式。
- 布局灵活性:能够处理不同的文档布局和格式。

📚 详细文档
模型详情
属性 |
详情 |
基础模型 |
Qwen2 VL |
微调数据集 |
阿拉伯语OCR数据集 |
目标 |
高精度提取全页阿拉伯语文本 |
语言 |
阿拉伯语 |
任务 |
光学字符识别(OCR) |
数据集大小 |
50,000条记录 |
训练轮数 |
1 |
评估指标
使用以下三个标准指标评估性能:
- 单词错误率(WER):衡量单词级别的准确性(越低越好)。
- 字符错误率(CER):衡量字符级别的准确性(越低越好)。
- BLEU分数:衡量整体翻译质量(越高越好)。
结果
模型 |
单词错误率(WER)↓ |
字符错误率(CER)↓ |
BLEU分数↑ |
Qari-OCR-0.2.2.1-VL-2B-Instruct |
0.221 |
0.059 |
0.597 |
AIN 8B |
0.757 |
0.309 |
0.103 |
Qari-OCR-0.1-VL-2B-Instruct |
1.294 |
0.770 |
0.022 |
easyOCR |
1.004 |
0.648 |
0.005 |
pytesseract |
0.990 |
0.911 |
<0.001 |
单词错误率(WER)对比
字符错误率(CER)对比
BLEU分数对比
训练数据
该模型使用以下规格进行训练:
- 字体大小:14、16、18、20、24、32、40磅。
- 页面布局:
- A4(210mm × 297mm)
- 信纸(216mm × 279mm)
- 小尺寸(105mm × 148mm)
- 方形(1080px × 1080px)
- 单行(210mm × 10mm)
- 使用的阿拉伯语字体:
- IBM Plex Sans Arabic
- KFGQPCUthman Taha Naskh
- Scheherazade New
- Amiri
- Madina
- Diwani Letter
- Tajawal
- Cairo
- Lateef
- Almarai
- AlQalam Quran
- Noto Naskh Arabic
局限性
基于训练规格,该模型存在以下局限性:
- 字体大小限制:对于非常小(< 14磅)或非常大(> 40磅)的文本,准确性可能会降低。
- 字体覆盖范围:在训练数据中未包含的不常见阿拉伯语字体上,性能可能会下降。
- 变音符号复杂性:虽然模型支持变音符号(tashkeel),但极其密集或非常规的变音符号组合可能会降低准确性。
- 布局敏感性:对于复杂的多列布局或非常规页面格式,可能会有困难。
- 手写识别:由于训练集中主要是数字字体,对手写文本的识别能力有限。
- 装饰性文本:对于高度风格化或装饰性的阿拉伯书法可能会有困难。
- 背景复杂性:该模型针对清晰背景进行了优化,在复杂或有纹理的背景下,性能可能会下降。
- 文本退化:对于严重退化、模糊或低分辨率的文本,可能会有挑战。
- 非标准方向:主要设计用于水平方向的文本,对于垂直或对角线文本可能会有困难。
评估方法
评估是在一个多样化的阿拉伯语文本图像数据集上进行的,主要包含变音符号(tashkeel),测量以下指标:
- 单词错误率(WER):错误识别的单词百分比。
- 字符错误率(CER):错误识别的字符百分比。
- BLEU分数:衡量翻译质量的指标,分数越高表示整体文本识别效果越好。
📄 许可证
该模型遵循原始Qwen2 VL模型的许可条款。在商业使用前,请仔细阅读相关条款。
引用
如果您在研究中使用了此模型,请引用:
@misc{QariOCR2025,
title={Qari-OCR v0.2.2.1: A High-Accuracy Model for Arabic Optical Character Recognition},
author={NAMAA},
year={2025},
publisher={Hugging Face},
howpublished={\url{https://huggingface.co/NAMAA-Space/Qari-OCR-0.2.2.1-VL-2B-Instruct}},
note={Accessed: 2025-04-01}
}