Image-Text-to-Text
MLX
Safetensors
Japanese
English
sarashina2_vision
ocr
vision
japanese
conversational
custom_code
Instructions to use tokimoa/sarashina2.2-ocr-mlx-bf16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use tokimoa/sarashina2.2-ocr-mlx-bf16 with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("tokimoa/sarashina2.2-ocr-mlx-bf16") config = load_config("tokimoa/sarashina2.2-ocr-mlx-bf16") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
Sarashina2.2-OCR — MLX bf16
sbintuitions/sarashina2.2-ocr(SB Intuitions・MIT)の Apple Silicon(MLX)向けbf16変換版です。tokimoaが変換・検証して公開しています。
- 7.3GB。量子化なし(重みはbf16のまま)
- M4 Max実測: 広告画像1枚あたり平均3.8秒
- 検証済み: 日本語広告画像15枚(横書き・縦書き・バナー混在)で、決定論の業務指標 (禁止語の抽出網羅・誤検出ゼロ・商品名保持)がtransformers bf16版と15/15で同値。保存→再読込の出力はロスレス(15/15完全一致)
Sarashina2.2-OCRは日英文書解析に特化した3BのOCRモデルで、縦書き・複雑レイアウト・表・数式に 対応します(詳細は元モデルカード参照)。
使い方
このモデルのアーキテクチャ(sarashina2_vision)はmlx-vlm本体に未収録のため、
リポジトリ同梱のモデルクラスを先にimportしてください。
pip install "mlx-vlm==0.6.6" torch torchvision pillow protobuf sentencepiece
import sys
from huggingface_hub import snapshot_download
path = snapshot_download("tokimoa/sarashina2.2-ocr-mlx-bf16")
sys.path.insert(0, path)
import sarashina2_vision # noqa: F401 mlx_vlm.models.sarashina2_vision として登録
import mlx.core as mx
from pathlib import Path
from PIL import Image
from transformers import AutoProcessor
from mlx_vlm.utils import load_model
from mlx_vlm.models.cache import KVCache
model = load_model(Path(path))
processor = AutoProcessor.from_pretrained(path, trust_remote_code=True)
image = Image.open("document.png").convert("RGB")
message = [{"role": "user", "content": [{"type": "image", "image": image}]}]
inputs = processor.apply_chat_template(
message, tokenize=True, add_generation_prompt=True,
return_dict=True, return_tensors="np")
# greedy + repetition_penalty 1.2(元モデル推奨設定)
cache = [KVCache() for _ in model.layers]
logits = model(mx.array(inputs["input_ids"]), mx.array(inputs["pixel_values"]),
cache=cache, image_grid_thw=mx.array(inputs["image_grid_thw"])).logits
seen = {int(t) for t in inputs["input_ids"][0]}
tokens = []
for _ in range(3000):
logit = logits[0, -1, :].astype(mx.float32)
idx = mx.array(sorted(seen))
vals = logit[idx]
logit[idx] = mx.where(vals < 0, vals * 1.2, vals / 1.2)
tok = int(mx.argmax(logit).item())
if tok == 2: # </s>
break
tokens.append(tok)
seen.add(tok)
logits = model.language_model(mx.array([[tok]]), cache=cache).logits
print(processor.decode(tokens, skip_special_tokens=True))
変換メモ
- 変換:
mlx_vlm.convert+独自モデルクラス (Qwen2-VL ViT+deepstack merger+Llama-3B+interleaved M-RoPE spatial_resetバリアント) configuration_sarashina2_vision.pyはtransformers v5の型検証 (Qwen2VLVisionConfig.mlp_ratio: intと実値3.7362の衝突)を回避したパッチ版- ライセンス: モデル重みはMIT(元モデル準拠)。同梱pythonコードのうちSB Intuitions由来の ファイルはApache-2.0(ヘッダ表記のとおり)
関連
- 4bit版: tokimoa/sarashina2.2-ocr-mlx-4bit
- 変換・検証: tokimoa(日本語実務でのローカルLLM実測をやっています)
- Downloads last month
- 53
Model size
4B params
Tensor type
BF16
·
Hardware compatibility
Log In to add your hardware
Quantized
Model tree for tokimoa/sarashina2.2-ocr-mlx-bf16
Base model
sbintuitions/sarashina2.2-3b Finetuned
sbintuitions/sarashina2.2-ocr