Nanosaur2-670M
well9472 · Kit
Makes illustrations from text prompts with a small 670M-parameter diffusion model, run through ComfyUI. Built as a low-budget research model for people who wan…
Reads Ukrainian handwritten documents from images, finds each text region, labels its type and returns the transcriptions as structured JSON. An open 4B vision-language model for digitizing handwriting.
Rukopys-OCR-4B is a kit in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page, a zip of its files. Nothing in it runs by itself.
pip install -U huggingface_hub hf download ebinan92/Rukopys-OCR-4B
Rukopys-OCR-4B reads images of Ukrainian handwritten documents. It finds each region on the page, labels its type and returns the transcribed text of every region as structured JSON. ebinan92 trained it by tuning all the weights of Qwen3.5-4B for a handwriting competition, and the card says it was part of an entry that finished third.
People who need Ukrainian handwriting turned into data, such as archivists, researchers and developers building document pipelines.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Archives | Digitization teams | Turn handwritten pages into searchable text | Transcribe a scanned notebook page |
| Education | Schools and researchers | Digitize handwritten student work | Read pages of a school notebook |
| Software | Document pipeline developers | Feed region boxes and text into other tools | Load the JSON output into a database |
| Research | OCR researchers | Study handwriting recognition for Cyrillic text | Compare results on formulas and tables |
Anyone who works with other languages or only printed text can skip it, since it was tuned for Ukrainian handwriting.
It runs in Python through Transformers or vLLM, and the card gives a script for each.
| Use case | Who | What they get back |
|---|---|---|
| Handwriting transcription | Archivists | The text of each handwritten region |
| Page layout detection | Developers | Region boxes on a normalized 0 to 1000 grid |
| Formulas and tables | Researchers | Formula text in LaTeX and table text split by pipe characters |
You need Python, a recent Transformers and a document image.
pip install -U huggingface_hub hf download ebinan92/Rukopys-OCR-4B
Run the card's Transformers script on your image. Keep its prompt exactly as written, because the card says the training prompt should stay unchanged. The script sends the image and prompt, generates up to 8192 new tokens without sampling and prints the JSON.
from PIL import Image
import torch
from transformers import AutoModelForMultimodalLM, AutoProcessor
MODEL_ID = "ebinan92/Rukopys-OCR-4B"
PROMPT = (
"Detect every text region in this Ukrainian handwritten document and "
"return a JSON array of regions. Each region has bbox (x1 y1 x2 y2 in "
"0..1000 normalized image coordinates), type (handwritten | printed | "
"formula | table | annotation | image | graph), and text (transcription; "
"empty for image/graph; LaTeX for formula; pipe-separated for table)."
)
processor = AutoProcessor.from_pretrained(MODEL_ID)
model = AutoModelForMultimodalLM.from_pretrained(
MODEL_ID, dtype=torch.bfloat16, device_map="auto"
)
image = Image.open("document.jpg").convert("RGB")
messages = [{
"role": "user",
"content": [{"type": "image"}, {"type": "text", "text": PROMPT}],
}]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
with torch.inference_mode():
output_ids = model.generate(**inputs, max_new_tokens=8192, do_sample=False)
new_tokens = output_ids[:, inputs["input_ids"].shape[1]:]
print(processor.batch_decode(new_tokens, skip_special_tokens=True)[0])| Tool | What it does |
|---|---|
| AutoProcessor | Turns the image and the prompt into model inputs |
| AutoModelForMultimodalLM | Loads the model weights in bfloat16 across the available devices |
| apply_chat_template | Builds the chat text with thinking switched off |
| generate | Produces the transcription, up to 8192 new tokens |
The card also gives a vLLM script that does the same job with a maximum length of 16384 and one image per prompt.
| Region type | What the text holds |
|---|---|
| handwritten, printed, annotation | The transcribed text |
| formula | The formula written in LaTeX |
| table | The table text, with cells split by pipe characters |
| image, graph | Empty text |
You give it a photo of a handwritten Ukrainian page together with the card's prompt. It answers with a JSON list, one item per region, each with a box, a type and the text, like this one for a handwritten line.
[
{
"bbox": [84, 107, 912, 168],
"type": "handwritten",
"text": "Приклад рукописного тексту"
}
]This is a model that reads handwriting. You show it a picture of a handwritten page and it hands back the words and where they sit. The first small thing to try is running the sample script on one clear photo and reading the JSON it prints.
It answers one fixed prompt and places each region on a 0 to 1000 grid. Decoding is greedy with thinking switched off, and the vLLM sample limits image size through minimum and maximum pixel counts. Training mixed RUKOPYS gold and silver data, outside Cyrillic handwriting sets and pseudo-labels, some of which came from Gemini.
It targets Ukrainian handwriting, and the weights are lighter at lower precision.
Reads Ukrainian handwritten documents from images, finds each text region, labels its type and returns the transcriptions as structured JSON. An open 4B vision-language model for digitizing handwriting.
Made by ebinan92 on Hugging Face. These notes are Mindket's, written from its model page and model card; the model's own files and license are on Hugging Face.
What it is: Rukopys-OCR-4B reads images of Ukrainian handwritten documents. It finds each region on the page, labels its type and returns the transcribed text of every region as structured JSON. ebinan92 trained it by tuning all the weights of Qwen3.5-4B for a handwriting competition, and the card says it was part of an entry that finished third.
Who it suits: People who need Ukrainian handwriting turned into data, such as archivists, researchers and developers building document pipelines.
Industry | Who uses it | How they use it | Example
Archives | Digitization teams | Turn handwritten pages into searchable text | Transcribe a scanned notebook page
Education | Schools and researchers | Digitize handwritten student work | Read pages of a school notebook
Software | Document pipeline developers | Feed region boxes and text into other tools | Load the JSON output into a database
Research | OCR researchers | Study handwriting recognition for Cyrillic text | Compare results on formulas and tables
Anyone who works with other languages or only printed text can skip it, since it was tuned for Ukrainian handwriting.
Where to use it: It runs in Python through Transformers or vLLM, and the card gives a script for each.
Use case | Who | What they get back
Handwriting transcription | Archivists | The text of each handwritten region
Page layout detection | Developers | Region boxes on a normalized 0 to 1000 grid
Formulas and tables | Researchers | Formula text in LaTeX and table text split by pipe characters
How to set it up: You need Python, a recent Transformers and a document image.
pip install -U huggingface_hub
hf download ebinan92/Rukopys-OCR-4B
How to use it: Run the card's Transformers script on your image. Keep its prompt exactly as written, because the card says the training prompt should stay unchanged. The script sends the image and prompt, generates up to 8192 new tokens without sampling and prints the JSON.
from PIL import Image
import torch
from transformers import AutoModelForMultimodalLM, AutoProcessor
MODEL_ID = "ebinan92/Rukopys-OCR-4B"
PROMPT = (
"Detect every text region in this Ukrainian handwritten document and "
"return a JSON array of regions. Each region has bbox (x1 y1 x2 y2 in "
"0..1000 normalized image coordinates), type (handwritten | printed | "
"formula | table | annotation | image | graph), and text (transcription; "
"empty for image/graph; LaTeX for formula; pipe-separated for table)."
)
processor = AutoProcessor.from_pretrained(MODEL_ID)
model = AutoModelForMultimodalLM.from_pretrained(
MODEL_ID, dtype=torch.bfloat16, device_map="auto"
)
image = Image.open("document.jpg").convert("RGB")
messages = [{
"role": "user",
"content": [{"type": "image"}, {"type": "text", "text": PROMPT}],
}]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
with torch.inference_mode():
output_ids = model.generate(**inputs, max_new_tokens=8192, do_sample=False)
new_tokens = output_ids[:, inputs["input_ids"].shape[1]:]
print(processor.batch_decode(new_tokens, skip_special_tokens=True)[0])
Tool | What it does
AutoProcessor | Turns the image and the prompt into model inputs
AutoModelForMultimodalLM | Loads the model weights in bfloat16 across the available devices
apply_chat_template | Builds the chat text with thinking switched off
generate | Produces the transcription, up to 8192 new tokens
The card also gives a vLLM script that does the same job with a maximum length of 16384 and one image per prompt.
Region type | What the text holds
handwritten, printed, annotation | The transcribed text
formula | The formula written in LaTeX
table | The table text, with cells split by pipe characters
image, graph | Empty text
Example: You give it a photo of a handwritten Ukrainian page together with the card's prompt. It answers with a JSON list, one item per region, each with a box, a type and the text, like this one for a handwritten line.
[
{
"bbox": [84, 107, 912, 168],
"type": "handwritten",
"text": "Приклад рукописного тексту"
}
]
For newcomers and experts: This is a model that reads handwriting. You show it a picture of a handwritten page and it hands back the words and where they sit. The first small thing to try is running the sample script on one clear photo and reading the JSON it prints.
It answers one fixed prompt and places each region on a 0 to 1000 grid. Decoding is greedy with thinking switched off, and the vLLM sample limits image size through minimum and maximum pixel counts. Training mixed RUKOPYS gold and silver data, outside Cyrillic handwriting sets and pseudo-labels, some of which came from Gemini.
Give it a photo of a handwritten page
Send the fixed training prompt
The model finds the text regions
Each region gets a type
You receive JSON with boxes and text
Good to know: It targets Ukrainian handwriting, and the weights are lighter at lower precision.
Title: Approximate weight size
BF16: 9.1 GB
4-bit estimate: 2.3 GB
Download its files with Hugging Face's command line:
pip install -U huggingface_hub
hf download ebinan92/Rukopys-OCR-4B
Then follow the usage in its model card. Nothing in this kit runs by itself.
README.md 7 KB
Listed Hugging Face models in the same category that share the most tags with this one.
| Product | Downloads, last 30 days | Likes | Parameters | License | Last change |
|---|---|---|---|---|---|
| Rukopys-OCR-4B This page | 86 | 7 | 4.5B | apache-2.0 | |
| Chandra OCR 2Shares qwen3_5 · image-text-to-text · conversational | 1,356,074 | 606 | 5.3B | openrail | |
| Surya OCR 2.5Shares qwen3_5 · image-text-to-text · conversational | 75,033 | 52 | 689M | openrail | |
| DolphinShares layout-analysis · image-text-to-text · transformers | 469 | 521 | 398M | mit | |
| Surya 2.5 GGUFShares qwen3_5 · image-text-to-text · conversational | 126,232 | 8 | 589M | openrail | |
| MinerU2.5-ProShares image-text-to-text · conversational · transformers | 37,179 | 115 | 1.2B | apache-2.0 |
well9472 · Kit
Makes illustrations from text prompts with a small 670M-parameter diffusion model, run through ComfyUI. Built as a low-budget research model for people who wan…
Waqf-AI · Kit
Reads handwritten Arabic text from images and returns it as text. A fine-tuned PaddleOCR-VL model for people digitizing Arabic handwriting.
Wan-AI · Kit
Makes video clips from a text prompt or an image plus text, at up to 720P and 24 frames per second, in the Diffusers format for a single consumer GPU.
Wan-AI · Kit
Generates short 480P videos from a text prompt with the small 1.3B Wan2.1 model, packaged for the diffusers library. Runs on a consumer graphics card with abou…
serendipitylabs · Kit
Turns spoken Malayalam into text on a CPU or a CUDA GPU, as an early research release from Serendipity Labs. For people who want draft transcripts of short, cl…
OrdenWills · Kit
Turns plain home commands such as turn off the TV into structured tool calls, checking device states first. A 350M model for smart home builders and tinkerers.