granite-ru / README.md
fron1runner's picture
Update README.md
6927c3b verified
---
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, Виктор Колесников