File size: 3,871 Bytes
aa28446 6927c3b aa28446 dfb653b aa28446 dfb653b aa28446 273dfbd aa28446 dfb653b f9dc105 aa28446 b685d53 aa28446 dfb653b aa28446 dfb653b aa28446 dfb653b aa28446 80cbcc7 dfb653b aa28446 80cbcc7 aa28446 dfb653b aa28446 dfb653b 80cbcc7 dfb653b 3262ca6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
---
license: apache-2.0
language: ru
tags:
- vision-language
- document-ai
- table-extraction
- russian
- qlora
base_model:
- ibm-granite/granite-vision-3.3-2b
---
# 🪨 Granite-Vision 3.3-2B-1.1 — **RU small Table Extractor** by NIKTA AI
Была обучена на небольшом синтетическом датасете для тестирования на pdf таблицах печатного шрифта для сравнения с Qwen-2.5-VL-3b, Granite-Vision-3.3-2B(оригинал).
Полный чекпойнт (IBM Granite-Vision 3.3-2B + QLoRA-файнтюн) для **извлечения таблиц на русском языке** из изображений экстракшн таблиц.
✅ Отвечает строго в формате валидного JSON:
```json
{"columns": [...], "rows": [[...], [...]]}
```
---
## 📊 Бенчмарк (примерные результаты и разница между моделями)
| Таблица | IBM Granite (base) | Granite-RU (этот репозиторий) | Ошибки |
|---------------|---------------------------------|-------------------------------|--------|
| `table_1.png` | ✅ | ✅ | — |
| `table_2.png` | ✅ | ⚠ | `Блохин` → `Бложин`<br>`Павловна` → `Гавловна` |
| `table_3.png` | ✅ | ✅ | — |
| `table_4.png` | ⚠ `rows` без вложенности (неверно) | ✅ `rows` вложенный формат | — |
| `table_5.png` | ✅ | ✅ | — |
**Вывод:**
`Granite-RU` обходит оригинальный `ibm-granite-3.3-2b` и Qwen 2.5 VL 3b в точности, особенно в структурной корректности: `rows` всегда двухмерный список (`[[...], [...]]`), что упрощает последующую обработку. Ошибки сведены к минимуму.
---
## 🚀 Быстрый старт
```python
from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import json, torch
model_id = "fron1runner/granite-ru"
model = (AutoModelForVision2Seq
.from_pretrained(model_id, _attn_implementation="sdpa")
.half().cuda())
proc = AutoProcessor.from_pretrained(model_id)
img = Image.open("sample.png").convert("RGB")
prompt = proc.apply_chat_template([
{
"role": "system",
"content": [{"type": "text", "text": "Отвечай только валидным JSON {\"columns\":[],\"rows\":[[]]}."}]
},
{
"role": "user",
"content": [
{"type": "image", "image": img},
{"type": "text", "text": "Извлеки таблицу полностью и верни только JSON."}
]
}
], add_generation_prompt=True)
batch = proc(text=prompt, images=[[img]], return_tensors="pt").to("cuda")
out = model.generate(**batch, max_new_tokens=384, temperature=0.1)
print(json.loads(proc.decode(out[0], skip_special_tokens=True)))
```
---
## 🧠 Подходит для
- Систем документооборота
- OCR-интеграций с AI
- RAG-систем
- Финансовых, юридических, административных таблиц
- Препроцессинга для LLM
- Средних и малых таблиц
---
**🧪 Model by `fron1runner` NIKTA AI company**
На базе `ibm-granite/granite-vision-3.3-2b` с лёгким QLoRA дообучением на синтетике.
Автор: Компания NIKTA AI, Виктор Колесников |