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