- DEPLOYMENT.md +24 -1
- FIX_SUMMARY.md +186 -0
- HF_TOKEN_SETUP.md +121 -0
- QUICK_FIX_FA.md +120 -0
- README.md +22 -0
- START_HERE.md +67 -0
- app.py +24 -2
- requirements.txt +1 -0
DEPLOYMENT.md
CHANGED
|
@@ -45,6 +45,29 @@ git push
|
|
| 45 |
|
| 46 |
### 3. تنظیمات Space
|
| 47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
#### فعالسازی GPU (ضروری):
|
| 49 |
|
| 50 |
1. در صفحه Space، روی "Settings" بروید
|
|
@@ -55,7 +78,7 @@ git push
|
|
| 55 |
#### تنظیمات اضافی:
|
| 56 |
|
| 57 |
- **Sleep time**: میتوانید روی "Always running" تنظیم کنید (نیاز به اشتراک)
|
| 58 |
-
- **Secrets**:
|
| 59 |
|
| 60 |
### 4. اولین اجرا
|
| 61 |
|
|
|
|
| 45 |
|
| 46 |
### 3. تنظیمات Space
|
| 47 |
|
| 48 |
+
#### ⚠️ مهم: تنظیم HF Token (ضروری!)
|
| 49 |
+
|
| 50 |
+
مدل dots.ocr نیاز به احراز هویت دارد:
|
| 51 |
+
|
| 52 |
+
1. **ایجاد Token**:
|
| 53 |
+
- به https://huggingface.co/settings/tokens بروید
|
| 54 |
+
- یک توکن با دسترسی Read ایجاد کنید
|
| 55 |
+
- توکن را کپی کنید
|
| 56 |
+
|
| 57 |
+
2. **درخواست دسترسی**:
|
| 58 |
+
- به https://huggingface.co/rednote-hilab/DotsOCR بروید
|
| 59 |
+
- روی "Request Access" کلیک کنید (در صورت وجود)
|
| 60 |
+
- منتظر تایید بمانید
|
| 61 |
+
|
| 62 |
+
3. **اضافه کردن Token به Space**:
|
| 63 |
+
- Settings → Repository secrets
|
| 64 |
+
- Add a secret:
|
| 65 |
+
- Name: `HF_TOKEN`
|
| 66 |
+
- Value: توکن کپی شده
|
| 67 |
+
- Save
|
| 68 |
+
|
| 69 |
+
📖 **راهنمای کامل**: `HF_TOKEN_SETUP.md` یا `QUICK_FIX_FA.md`
|
| 70 |
+
|
| 71 |
#### فعالسازی GPU (ضروری):
|
| 72 |
|
| 73 |
1. در صفحه Space، روی "Settings" بروید
|
|
|
|
| 78 |
#### تنظیمات اضافی:
|
| 79 |
|
| 80 |
- **Sleep time**: میتوانید روی "Always running" تنظیم کنید (نیاز به اشتراک)
|
| 81 |
+
- **Secrets**: HF_TOKEN را اضافه کنید (الزامی!)
|
| 82 |
|
| 83 |
### 4. اولین اجرا
|
| 84 |
|
FIX_SUMMARY.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🔧 خلاصه تغییرات برای رفع خطای 401
|
| 2 |
+
|
| 3 |
+
## ✅ آنچه انجام شد:
|
| 4 |
+
|
| 5 |
+
### 1. آپدیت `app.py`
|
| 6 |
+
- اضافه شدن پشتیبانی از HF Token
|
| 7 |
+
- استفاده از `huggingface_hub.login()`
|
| 8 |
+
- ارسال token به `from_pretrained()`
|
| 9 |
+
- مدیریت خطا با پیامهای مفید
|
| 10 |
+
|
| 11 |
+
### 2. آپدیت `requirements.txt`
|
| 12 |
+
- اضافه شدن `huggingface-hub>=0.20.0`
|
| 13 |
+
|
| 14 |
+
### 3. ایجاد راهنماها
|
| 15 |
+
- **HF_TOKEN_SETUP.md**: راهنمای کامل انگلیسی
|
| 16 |
+
- **QUICK_FIX_FA.md**: راهنمای سریع فارسی (شما اینجا هستید!)
|
| 17 |
+
- آپدیت **README.md** با اطلاعات Token
|
| 18 |
+
- آپدیت **DEPLOYMENT.md** با مراحل تنظیم Token
|
| 19 |
+
|
| 20 |
+
---
|
| 21 |
+
|
| 22 |
+
## 🚀 مراحل حل مشکل (3 قدم ساده):
|
| 23 |
+
|
| 24 |
+
### قدم 1: ساخت Hugging Face Token
|
| 25 |
+
|
| 26 |
+
```
|
| 27 |
+
1. برو به: https://huggingface.co/settings/tokens
|
| 28 |
+
2. کلیک: "Create new token"
|
| 29 |
+
3. نام: dots-ocr
|
| 30 |
+
4. نوع: Read
|
| 31 |
+
5. کپی کن توکن را
|
| 32 |
+
```
|
| 33 |
+
|
| 34 |
+
### قدم 2: درخواست دسترسی به مدل
|
| 35 |
+
|
| 36 |
+
```
|
| 37 |
+
1. برو به: https://huggingface.co/rednote-hilab/DotsOCR
|
| 38 |
+
2. اگر دکمه "Request Access" دیدی → کلیک کن
|
| 39 |
+
3. صبر کن تا تایید شه (چند دقیقه تا چند ساعت)
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
### قدم 3: اضافه کردن Token به Space
|
| 43 |
+
|
| 44 |
+
```
|
| 45 |
+
1. Space خودت در HuggingFace → Settings
|
| 46 |
+
2. پیدا کن: "Repository secrets"
|
| 47 |
+
3. کلیک: "Add a secret"
|
| 48 |
+
4. وارد کن:
|
| 49 |
+
Name: HF_TOKEN
|
| 50 |
+
Value: [توکن کپی شده]
|
| 51 |
+
5. کلیک: "Add"
|
| 52 |
+
6. Space خودکار rebuild میشه
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
---
|
| 56 |
+
|
| 57 |
+
## 📋 چکلیست قبل از استقرار:
|
| 58 |
+
|
| 59 |
+
- [ ] HF Token ساخته شده
|
| 60 |
+
- [ ] دسترسی به مدل درخواست شده (اگر gated بود)
|
| 61 |
+
- [ ] Token به Secrets اضافه شده (نام دقیق: `HF_TOKEN`)
|
| 62 |
+
- [ ] GPU در Space فعال شده (حداقل T4)
|
| 63 |
+
- [ ] فایلهای پروژه آپلود شده
|
| 64 |
+
|
| 65 |
+
---
|
| 66 |
+
|
| 67 |
+
## 🎯 تست موفقیت:
|
| 68 |
+
|
| 69 |
+
بعد از rebuild، در لاگهای Space باید ببینی:
|
| 70 |
+
|
| 71 |
+
### ✅ موفق:
|
| 72 |
+
```
|
| 73 |
+
Authenticating with Hugging Face token...
|
| 74 |
+
Loading model and processor...
|
| 75 |
+
Model loaded successfully!
|
| 76 |
+
Running on local URL: http://0.0.0.0:7860
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
### ❌ ناموفق (همچنان خطا):
|
| 80 |
+
```
|
| 81 |
+
401 Client Error: Unauthorized
|
| 82 |
+
```
|
| 83 |
+
|
| 84 |
+
**راه حل:**
|
| 85 |
+
- چک کن نام Secret دقیقاً `HF_TOKEN` باشه
|
| 86 |
+
- مطمئن شو توکن صحیح کپی شده
|
| 87 |
+
- ببین دسترسی به مدل تایید شده یا نه
|
| 88 |
+
|
| 89 |
+
---
|
| 90 |
+
|
| 91 |
+
## 🔄 مدلهای جایگزین (اگر dots.ocr کار نکرد):
|
| 92 |
+
|
| 93 |
+
اگر نتونستی به مدل دسترسی پیدا کنی، میتونی از این مدلها استفاده کنی:
|
| 94 |
+
|
| 95 |
+
### گزینه 1: GOT-OCR 2.0 (توصیه میشود)
|
| 96 |
+
```python
|
| 97 |
+
# در app.py خط 12:
|
| 98 |
+
MODEL_PATH = "stepfun-ai/GOT-OCR2_0"
|
| 99 |
+
```
|
| 100 |
+
- ✅ Public (نیازی به Token نداره)
|
| 101 |
+
- ✅ OCR قوی
|
| 102 |
+
- ✅ پشتیبانی از چند زبان
|
| 103 |
+
|
| 104 |
+
### گزینه 2: Qwen2-VL
|
| 105 |
+
```python
|
| 106 |
+
# در app.py خط 12:
|
| 107 |
+
MODEL_PATH = "Qwen/Qwen2-VL-2B-Instruct"
|
| 108 |
+
```
|
| 109 |
+
- ✅ Public
|
| 110 |
+
- ✅ سبکتر (2B parameters)
|
| 111 |
+
- ✅ سریعتر
|
| 112 |
+
|
| 113 |
+
### گزینه 3: Nougat (برای اسناد علمی)
|
| 114 |
+
```python
|
| 115 |
+
# در app.py خط 12:
|
| 116 |
+
MODEL_PATH = "facebook/nougat-base"
|
| 117 |
+
```
|
| 118 |
+
- ✅ Public
|
| 119 |
+
- ✅ مخصوص اسناد آکادمیک
|
| 120 |
+
- ✅ فرمولهای ریاضی
|
| 121 |
+
|
| 122 |
+
---
|
| 123 |
+
|
| 124 |
+
## 📁 فایلهای مهم:
|
| 125 |
+
|
| 126 |
+
| فایل | توضیح |
|
| 127 |
+
|------|-------|
|
| 128 |
+
| `app.py` | ✅ آپدیت شده (پشتیبانی از Token) |
|
| 129 |
+
| `requirements.txt` | ✅ آپدیت شده (huggingface-hub اضافه شد) |
|
| 130 |
+
| `README.md` | ✅ آپدیت شده (راهنمای Token) |
|
| 131 |
+
| `HF_TOKEN_SETUP.md` | 🆕 راهنمای کامل Token |
|
| 132 |
+
| `QUICK_FIX_FA.md` | 🆕 راهنمای سریع فارسی |
|
| 133 |
+
| `DEPLOYMENT.md` | ✅ آپدیت شده |
|
| 134 |
+
|
| 135 |
+
---
|
| 136 |
+
|
| 137 |
+
## 💡 نکات مهم:
|
| 138 |
+
|
| 139 |
+
1. **امنیت Token**:
|
| 140 |
+
- ❌ هرگز توکن رو در کد commit نکن
|
| 141 |
+
- ✅ فقط از Secrets استفاده کن
|
| 142 |
+
- ✅ توکن رو با کسی شریک نشو
|
| 143 |
+
|
| 144 |
+
2. **نام Secret**:
|
| 145 |
+
- حتماً `HF_TOKEN` باشه (دقیقاً همینطور)
|
| 146 |
+
- حساس به حروف بزرگ/کوچکه!
|
| 147 |
+
|
| 148 |
+
3. **GPU**:
|
| 149 |
+
- حتماً GPU رو فعال کن
|
| 150 |
+
- بدون GPU مدل لود نمیشه
|
| 151 |
+
|
| 152 |
+
4. **اولین بار**:
|
| 153 |
+
- دانلود مدل 10-15 دقیقه طول میکشه
|
| 154 |
+
- صبور باش!
|
| 155 |
+
|
| 156 |
+
---
|
| 157 |
+
|
| 158 |
+
## 🆘 کمک بیشتر:
|
| 159 |
+
|
| 160 |
+
### مستندات:
|
| 161 |
+
- `QUICK_FIX_FA.md` - راهنمای سریع فارسی ⭐
|
| 162 |
+
- `HF_TOKEN_SETUP.md` - راهنمای کامل انگلیسی
|
| 163 |
+
- `DEPLOYMENT.md` - راهنمای استقرار
|
| 164 |
+
- `USAGE_GUIDE.md` - راهنمای استفاده
|
| 165 |
+
|
| 166 |
+
### لینکهای مفید:
|
| 167 |
+
- HF Tokens: https://huggingface.co/settings/tokens
|
| 168 |
+
- مدل dots.ocr: https://huggingface.co/rednote-hilab/DotsOCR
|
| 169 |
+
- مستندات: https://huggingface.co/docs/hub/security-tokens
|
| 170 |
+
|
| 171 |
+
### پشتیبانی:
|
| 172 |
+
- GitHub: https://github.com/rednote-hilab/dots.ocr/issues
|
| 173 |
+
- HF Forums: https://discuss.huggingface.co/
|
| 174 |
+
|
| 175 |
+
---
|
| 176 |
+
|
| 177 |
+
## ✨ آمادهای!
|
| 178 |
+
|
| 179 |
+
همه چیز آماده شده. فقط:
|
| 180 |
+
1. Token بساز
|
| 181 |
+
2. دسترسی بگیر
|
| 182 |
+
3. به Space اضافه کن
|
| 183 |
+
4. منتظر rebuild باش
|
| 184 |
+
|
| 185 |
+
**موفق باشی! 🚀**
|
| 186 |
+
|
HF_TOKEN_SETUP.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# راهنمای تنظیم Hugging Face Token
|
| 2 |
+
|
| 3 |
+
## مشکل: 401 Unauthorized Error
|
| 4 |
+
|
| 5 |
+
مدل `dots.ocr` یک **gated model** است و برای استفاده از آن نیاز به احراز هویت دارید.
|
| 6 |
+
|
| 7 |
+
## راه حل: تنظیم HF Token در Space
|
| 8 |
+
|
| 9 |
+
### مرحله 1: ایجاد Hugging Face Token
|
| 10 |
+
|
| 11 |
+
1. به https://huggingface.co/settings/tokens بروید
|
| 12 |
+
2. روی **"Create new token"** کلیک کنید
|
| 13 |
+
3. اطلاعات را پر کنید:
|
| 14 |
+
- **Name**: `dots-ocr-space` (یا نام دلخواه)
|
| 15 |
+
- **Type**: **Read** (کافی است)
|
| 16 |
+
4. روی **"Generate token"** کلیک کنید
|
| 17 |
+
5. **توکن را کپی کنید** (مهم: فقط یک بار نمایش داده میشود!)
|
| 18 |
+
|
| 19 |
+
### مرحله 2: درخواست دسترسی به مدل (در صورت لزوم)
|
| 20 |
+
|
| 21 |
+
1. به صفحه مدل بروید: https://huggingface.co/rednote-hilab/DotsOCR
|
| 22 |
+
2. اگر مدل **gated** است، روی **"Request Access"** کلیک کنید
|
| 23 |
+
3. فرم را پر کنید و ارسال کنید
|
| 24 |
+
4. منتظر تایید بمانید (معمولاً چند دقیقه تا چند ساعت)
|
| 25 |
+
|
| 26 |
+
### مرحله 3: اضافه کردن Token به Space
|
| 27 |
+
|
| 28 |
+
#### روش 1: استفاده از Secrets (توصیه میشود)
|
| 29 |
+
|
| 30 |
+
1. به Space خود در Hugging Face بروید
|
| 31 |
+
2. روی **"Settings"** کلیک کنید
|
| 32 |
+
3. پایین بروید تا بخش **"Repository secrets"**
|
| 33 |
+
4. روی **"Add a secret"** کلیک کنید
|
| 34 |
+
5. اطلاعات را وارد کنید:
|
| 35 |
+
- **Name**: `HF_TOKEN`
|
| 36 |
+
- **Value**: توکنی که در مرحله 1 کپی کردید
|
| 37 |
+
6. روی **"Add"** کلیک کنید
|
| 38 |
+
|
| 39 |
+
#### روش 2: استفاده از Environment Variable (در صورت نیاز)
|
| 40 |
+
|
| 41 |
+
اگر روش 1 کار نکرد، میتوانید مستقیماً در کد تنظیم کنید (توصیه نمیشود):
|
| 42 |
+
|
| 43 |
+
```python
|
| 44 |
+
import os
|
| 45 |
+
os.environ["HF_TOKEN"] = "hf_xxxxxxxxxxxxxxxxxxxx"
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
⚠️ **هشدار**: توکن خود را هرگز به صورت عمومی commit نکنید!
|
| 49 |
+
|
| 50 |
+
### مرحله 4: راهاندازی مجدد Space
|
| 51 |
+
|
| 52 |
+
1. بعد از اضافه کردن Secret، Space به صورت خودکار rebuild میشود
|
| 53 |
+
2. یا میتوانید به صورت دستی restart کنید:
|
| 54 |
+
- Settings → Factory Rebuild
|
| 55 |
+
|
| 56 |
+
### مرحله 5: تست
|
| 57 |
+
|
| 58 |
+
1. منتظر بمانید تا Space build شود
|
| 59 |
+
2. تصویری آپلود کنید و تست کنید
|
| 60 |
+
3. اگر موفق بود، مدل باید بدون خطا لود شود! ✅
|
| 61 |
+
|
| 62 |
+
## عیبیابی
|
| 63 |
+
|
| 64 |
+
### خطا: 401 Unauthorized همچنان وجود دارد
|
| 65 |
+
|
| 66 |
+
**راه حل:**
|
| 67 |
+
- مطمئن شوید که نام secret دقیقاً `HF_TOKEN` است (حساس به حروف بزرگ/کوچک)
|
| 68 |
+
- بررسی کنید که توکن صحیح است
|
| 69 |
+
- مطمئن شوید که دسترسی به مدل را درخواست کردهاید و تایید شده است
|
| 70 |
+
|
| 71 |
+
### خطا: Token has expired
|
| 72 |
+
|
| 73 |
+
**راه حل:**
|
| 74 |
+
- یک توکن جدید ایجاد کنید
|
| 75 |
+
- توکن قدیمی را در Secrets با توکن جدید جایگزین کنید
|
| 76 |
+
|
| 77 |
+
### خطا: Repository Not Found
|
| 78 |
+
|
| 79 |
+
**راه حل:**
|
| 80 |
+
- بررسی کنید که نام مدل صحیح است
|
| 81 |
+
- مطمئن شوید که از مدل درخواست دسترسی کردهاید
|
| 82 |
+
|
| 83 |
+
## نکات امنیتی
|
| 84 |
+
|
| 85 |
+
1. ❌ **هرگز توکن را در کد commit نکنید**
|
| 86 |
+
2. ✅ همیشه از Secrets استفاده کنید
|
| 87 |
+
3. ✅ توکنهای قدیمی را حذف کنید
|
| 88 |
+
4. ✅ فقط دسترسی Read برای توکن تنظیم کنید
|
| 89 |
+
|
| 90 |
+
## مدلهای جایگزین (در صورتی که دسترسی به dots.ocr ندارید)
|
| 91 |
+
|
| 92 |
+
اگر نمیتوانید به مدل `dots.ocr` دسترسی پیدا کنید، میتوانید از این مدلهای جایگزین استفاده کنید:
|
| 93 |
+
|
| 94 |
+
### 1. GOT-OCR 2.0
|
| 95 |
+
```python
|
| 96 |
+
MODEL_PATH = "stepfun-ai/GOT-OCR2_0"
|
| 97 |
+
```
|
| 98 |
+
|
| 99 |
+
### 2. Qwen2-VL
|
| 100 |
+
```python
|
| 101 |
+
MODEL_PATH = "Qwen/Qwen2-VL-7B-Instruct"
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
### 3. Nougat (برای اسناد علمی)
|
| 105 |
+
```python
|
| 106 |
+
MODEL_PATH = "facebook/nougat-base"
|
| 107 |
+
```
|
| 108 |
+
|
| 109 |
+
برای استفاده از مدلهای جایگزین، فقط `MODEL_PATH` را در `app.py` تغییر دهید.
|
| 110 |
+
|
| 111 |
+
## پشتیبانی
|
| 112 |
+
|
| 113 |
+
اگر همچنان مشکل دارید:
|
| 114 |
+
- GitHub Issues: https://github.com/rednote-hilab/dots.ocr/issues
|
| 115 |
+
- Hugging Face Forums: https://discuss.huggingface.co/
|
| 116 |
+
- مستندات HF: https://huggingface.co/docs/hub/security-tokens
|
| 117 |
+
|
| 118 |
+
---
|
| 119 |
+
|
| 120 |
+
**موفق باشید! 🚀**
|
| 121 |
+
|
QUICK_FIX_FA.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🔧 راهنمای سریع رفع خطای 401
|
| 2 |
+
|
| 3 |
+
## مشکل شما:
|
| 4 |
+
```
|
| 5 |
+
401 Client Error: Unauthorized
|
| 6 |
+
Repository Not Found for url: https://huggingface.co/rednote-hilab/DotsOCR
|
| 7 |
+
```
|
| 8 |
+
|
| 9 |
+
## دلیل:
|
| 10 |
+
مدل `dots.ocr` یک **gated model** است و نیاز به احراز هویت دارد.
|
| 11 |
+
|
| 12 |
+
## راه حل (3 قدم):
|
| 13 |
+
|
| 14 |
+
### قدم 1️⃣: ساخت Token
|
| 15 |
+
|
| 16 |
+
1. به این لینک بروید:
|
| 17 |
+
```
|
| 18 |
+
https://huggingface.co/settings/tokens
|
| 19 |
+
```
|
| 20 |
+
|
| 21 |
+
2. روی **"Create new token"** کلیک کنید
|
| 22 |
+
|
| 23 |
+
3. تنظیمات:
|
| 24 |
+
- نام: `dots-ocr`
|
| 25 |
+
- نوع: **Read**
|
| 26 |
+
|
| 27 |
+
4. **کپی کنید** توکن را! (فقط یکبار نمایش میشود)
|
| 28 |
+
|
| 29 |
+
### قدم 2️⃣: درخواست دسترسی به مدل
|
| 30 |
+
|
| 31 |
+
1. به این لینک بروید:
|
| 32 |
+
```
|
| 33 |
+
https://huggingface.co/rednote-hilab/DotsOCR
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
2. اگر دکمه **"Request Access"** دیدید، روی آن کلیک کنید
|
| 37 |
+
|
| 38 |
+
3. منتظر تایید بمانید (معمولاً چند دقیقه)
|
| 39 |
+
|
| 40 |
+
### قدم 3️⃣: اضافه کردن Token به Space
|
| 41 |
+
|
| 42 |
+
1. به Space خود بروید در Hugging Face
|
| 43 |
+
|
| 44 |
+
2. **Settings** → **Repository secrets**
|
| 45 |
+
|
| 46 |
+
3. روی **"Add a secret"** کلیک کنید
|
| 47 |
+
|
| 48 |
+
4. وارد کنید:
|
| 49 |
+
```
|
| 50 |
+
Name: HF_TOKEN
|
| 51 |
+
Value: [توکنی که کپی کردید]
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
5. روی **Add** کلیک کنید
|
| 55 |
+
|
| 56 |
+
6. Space به صورت خودکار **rebuild** میشود
|
| 57 |
+
|
| 58 |
+
## بررسی نتیجه:
|
| 59 |
+
|
| 60 |
+
✅ بعد از rebuild، اگر پیام زیر را دیدید، موفق شدهاید:
|
| 61 |
+
```
|
| 62 |
+
Authenticating with Hugging Face token...
|
| 63 |
+
Loading model and processor...
|
| 64 |
+
Model loaded successfully!
|
| 65 |
+
```
|
| 66 |
+
|
| 67 |
+
❌ اگر همچنان خطا میگیرید:
|
| 68 |
+
- نام Secret باید دقیقاً `HF_TOKEN` باشد
|
| 69 |
+
- توکن را درست کپی کرده باشید
|
| 70 |
+
- دسترسی به مدل تایید شده باشد
|
| 71 |
+
|
| 72 |
+
## تصویر راهنما:
|
| 73 |
+
|
| 74 |
+
### ساخت Token:
|
| 75 |
+
```
|
| 76 |
+
HuggingFace → Settings → Access Tokens → Create new token
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
### اضافه کردن Secret:
|
| 80 |
+
```
|
| 81 |
+
Space → Settings → Repository secrets → Add a secret
|
| 82 |
+
Name: HF_TOKEN
|
| 83 |
+
Value: hf_xxxxxxxxxxxxxx
|
| 84 |
+
```
|
| 85 |
+
|
| 86 |
+
## مشکل دارید؟
|
| 87 |
+
|
| 88 |
+
### اگر نمیتوانید به مدل دسترسی پیدا کنید:
|
| 89 |
+
|
| 90 |
+
میتوانید از مدلهای جایگزین استفاده کنید:
|
| 91 |
+
|
| 92 |
+
#### روش 1: استفاده از GOT-OCR
|
| 93 |
+
در فایل `app.py` خط 12 را تغییر دهید:
|
| 94 |
+
```python
|
| 95 |
+
MODEL_PATH = "stepfun-ai/GOT-OCR2_0"
|
| 96 |
+
```
|
| 97 |
+
|
| 98 |
+
#### روش 2: استفاده از Qwen2-VL
|
| 99 |
+
```python
|
| 100 |
+
MODEL_PATH = "Qwen/Qwen2-VL-2B-Instruct"
|
| 101 |
+
```
|
| 102 |
+
|
| 103 |
+
این مدلها public هستند و نیازی به token ندارند!
|
| 104 |
+
|
| 105 |
+
## نکات مهم:
|
| 106 |
+
|
| 107 |
+
⚠️ **هرگز توکن را در کد commit نکنید**
|
| 108 |
+
⚠️ **فقط از Secrets استفاده کنید**
|
| 109 |
+
⚠️ **توکن را با کسی به اشتراک نگذارید**
|
| 110 |
+
|
| 111 |
+
## کمک بیشتر:
|
| 112 |
+
|
| 113 |
+
- راهنمای کامل: `HF_TOKEN_SETUP.md`
|
| 114 |
+
- راهنمای استقرار: `DEPLOYMENT.md`
|
| 115 |
+
- مستندات: https://huggingface.co/docs/hub/security-tokens
|
| 116 |
+
|
| 117 |
+
---
|
| 118 |
+
|
| 119 |
+
**با موفقیت راهاندازی کنید! 🚀**
|
| 120 |
+
|
README.md
CHANGED
|
@@ -45,6 +45,28 @@ This Hugging Face Space provides an easy-to-use interface for the [dots.ocr](htt
|
|
| 45 |
- Text
|
| 46 |
- Title
|
| 47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
## Usage
|
| 49 |
|
| 50 |
1. **Upload an Image**: Upload a document image (photo, scan, or screenshot)
|
|
|
|
| 45 |
- Text
|
| 46 |
- Title
|
| 47 |
|
| 48 |
+
## ⚠️ Important: Hugging Face Token Required
|
| 49 |
+
|
| 50 |
+
The `dots.ocr` model is **gated** and requires authentication. To use this Space:
|
| 51 |
+
|
| 52 |
+
1. **Get a Hugging Face Token**:
|
| 53 |
+
- Go to https://huggingface.co/settings/tokens
|
| 54 |
+
- Create a new token with **Read** access
|
| 55 |
+
|
| 56 |
+
2. **Request Access to the Model**:
|
| 57 |
+
- Visit https://huggingface.co/rednote-hilab/DotsOCR
|
| 58 |
+
- Click "Request Access" (if gated)
|
| 59 |
+
- Wait for approval
|
| 60 |
+
|
| 61 |
+
3. **Add Token to Space**:
|
| 62 |
+
- Go to your Space → Settings
|
| 63 |
+
- Add a new Secret:
|
| 64 |
+
- Name: `HF_TOKEN`
|
| 65 |
+
- Value: Your HF token
|
| 66 |
+
- Rebuild the Space
|
| 67 |
+
|
| 68 |
+
📖 **Full guide**: See `HF_TOKEN_SETUP.md` for detailed instructions
|
| 69 |
+
|
| 70 |
## Usage
|
| 71 |
|
| 72 |
1. **Upload an Image**: Upload a document image (photo, scan, or screenshot)
|
START_HERE.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🚀 شروع از اینجا - راهنمای سریع
|
| 2 |
+
|
| 3 |
+
## ⚠️ مشکل فعلی شما:
|
| 4 |
+
|
| 5 |
+
خطای **401 Unauthorized** هنگام لود کردن مدل `dots.ocr`
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## ✅ راه حل (فقط 3 مرحله):
|
| 10 |
+
|
| 11 |
+
### 1️⃣ ساخت Token
|
| 12 |
+
|
| 13 |
+
https://huggingface.co/settings/tokens
|
| 14 |
+
- کلیک: **Create new token**
|
| 15 |
+
- نوع: **Read**
|
| 16 |
+
- **کپی کن** توکن را!
|
| 17 |
+
|
| 18 |
+
### 2️⃣ درخواست دسترسی
|
| 19 |
+
|
| 20 |
+
https://huggingface.co/rednote-hilab/DotsOCR
|
| 21 |
+
- اگر دکمه **"Request Access"** دیدی → کلیک کن
|
| 22 |
+
- صبر کن تا تایید شه
|
| 23 |
+
|
| 24 |
+
### 3️⃣ اضافه کردن به Space
|
| 25 |
+
|
| 26 |
+
در Space خودت:
|
| 27 |
+
```
|
| 28 |
+
Settings → Repository secrets → Add a secret
|
| 29 |
+
Name: HF_TOKEN
|
| 30 |
+
Value: [توکن کپی شده]
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
---
|
| 34 |
+
|
| 35 |
+
## 📖 راهنماهای کامل:
|
| 36 |
+
|
| 37 |
+
| فایل | برای چی؟ |
|
| 38 |
+
|------|----------|
|
| 39 |
+
| **QUICK_FIX_FA.md** ⭐ | راه حل سریع خطای 401 (فارسی) |
|
| 40 |
+
| **FIX_SUMMARY.md** | خلاصه تغییرات و راه حل |
|
| 41 |
+
| **HF_TOKEN_SETUP.md** | راهنمای کامل Token (انگلیسی) |
|
| 42 |
+
| **DEPLOYMENT.md** | راهنمای استقرار در HF Space |
|
| 43 |
+
| **README.md** | مستندات اصلی |
|
| 44 |
+
|
| 45 |
+
---
|
| 46 |
+
|
| 47 |
+
## 🎯 بعد از اضافه کردن Token:
|
| 48 |
+
|
| 49 |
+
1. Space خودکار rebuild میشه
|
| 50 |
+
2. صبر کن 10-15 دقیقه (اولین بار)
|
| 51 |
+
3. تست کن!
|
| 52 |
+
|
| 53 |
+
---
|
| 54 |
+
|
| 55 |
+
## 🔄 اگر کار نکرد:
|
| 56 |
+
|
| 57 |
+
میتونی از مدلهای public استفاده کنی (بدون Token):
|
| 58 |
+
|
| 59 |
+
```python
|
| 60 |
+
# در app.py خط 12:
|
| 61 |
+
MODEL_PATH = "stepfun-ai/GOT-OCR2_0"
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
---
|
| 65 |
+
|
| 66 |
+
**شروع کن از: QUICK_FIX_FA.md** 👈
|
| 67 |
+
|
app.py
CHANGED
|
@@ -2,15 +2,36 @@ import gradio as gr
|
|
| 2 |
import torch
|
| 3 |
import json
|
| 4 |
import spaces
|
|
|
|
| 5 |
from PIL import Image
|
| 6 |
from transformers import AutoModelForCausalLM, AutoProcessor
|
| 7 |
from qwen_vl_utils import process_vision_info
|
|
|
|
| 8 |
|
| 9 |
# Model configuration
|
| 10 |
MODEL_PATH = "rednote-hilab/DotsOCR"
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
print("Loading model and processor...")
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
# Model will be loaded on GPU when decorated function is called
|
| 16 |
model = None
|
|
@@ -23,7 +44,8 @@ def load_model():
|
|
| 23 |
MODEL_PATH,
|
| 24 |
torch_dtype=torch.bfloat16,
|
| 25 |
device_map="auto",
|
| 26 |
-
trust_remote_code=True
|
|
|
|
| 27 |
)
|
| 28 |
return model
|
| 29 |
|
|
|
|
| 2 |
import torch
|
| 3 |
import json
|
| 4 |
import spaces
|
| 5 |
+
import os
|
| 6 |
from PIL import Image
|
| 7 |
from transformers import AutoModelForCausalLM, AutoProcessor
|
| 8 |
from qwen_vl_utils import process_vision_info
|
| 9 |
+
from huggingface_hub import login
|
| 10 |
|
| 11 |
# Model configuration
|
| 12 |
MODEL_PATH = "rednote-hilab/DotsOCR"
|
| 13 |
|
| 14 |
+
# Try to login with HF token if available (for gated models)
|
| 15 |
+
HF_TOKEN = os.environ.get("HF_TOKEN", None)
|
| 16 |
+
if HF_TOKEN:
|
| 17 |
+
print("Authenticating with Hugging Face token...")
|
| 18 |
+
login(token=HF_TOKEN)
|
| 19 |
+
|
| 20 |
print("Loading model and processor...")
|
| 21 |
+
try:
|
| 22 |
+
processor = AutoProcessor.from_pretrained(
|
| 23 |
+
MODEL_PATH,
|
| 24 |
+
trust_remote_code=True,
|
| 25 |
+
token=HF_TOKEN
|
| 26 |
+
)
|
| 27 |
+
except Exception as e:
|
| 28 |
+
print(f"Error loading model: {e}")
|
| 29 |
+
print("\n⚠️ The dots.ocr model may be gated or not publicly available yet.")
|
| 30 |
+
print("Please check: https://huggingface.co/rednote-hilab/DotsOCR")
|
| 31 |
+
print("\nAlternatives:")
|
| 32 |
+
print("1. Request access to the gated model and add HF_TOKEN to Secrets")
|
| 33 |
+
print("2. Use an alternative OCR model (see README.md)")
|
| 34 |
+
raise
|
| 35 |
|
| 36 |
# Model will be loaded on GPU when decorated function is called
|
| 37 |
model = None
|
|
|
|
| 44 |
MODEL_PATH,
|
| 45 |
torch_dtype=torch.bfloat16,
|
| 46 |
device_map="auto",
|
| 47 |
+
trust_remote_code=True,
|
| 48 |
+
token=HF_TOKEN
|
| 49 |
)
|
| 50 |
return model
|
| 51 |
|
requirements.txt
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
gradio>=5.0.0
|
| 2 |
torch>=2.0.0
|
| 3 |
transformers>=4.37.0
|
|
|
|
| 4 |
pillow
|
| 5 |
qwen-vl-utils
|
| 6 |
accelerate
|
|
|
|
| 1 |
gradio>=5.0.0
|
| 2 |
torch>=2.0.0
|
| 3 |
transformers>=4.37.0
|
| 4 |
+
huggingface-hub>=0.20.0
|
| 5 |
pillow
|
| 6 |
qwen-vl-utils
|
| 7 |
accelerate
|