|
|
--- |
|
|
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, Виктор Колесников |