Suya OCR API — vLLM-backed, OpenAI-compatible OCR service
FastAPI service wrapping the Surya-OCR-2 model (datalab-to) served through vLLM: legacy /v1/api/ai/* endpoints, an OpenAI-compatible /v1/chat/completions endpoint, a coalescing request batcher, a local OCR CLI, Docker packaging, multilingual example outputs, and quantization/concurrency benchmarks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
from pathlib import Path
|
||||
|
||||
import scripts.quant.build_model as bm
|
||||
|
||||
|
||||
def test_baseline_and_online_need_no_build(tmp_path):
|
||||
assert bm.needs_build("bf16") is False
|
||||
assert bm.needs_build("fp8") is False
|
||||
assert bm.needs_build("awq") is True
|
||||
assert bm.needs_build("bnb4") is True
|
||||
|
||||
|
||||
def test_build_is_idempotent_when_output_exists(tmp_path, monkeypatch):
|
||||
out = tmp_path / "awq"
|
||||
out.mkdir()
|
||||
(out / "config.json").write_text("{}", encoding="utf-8")
|
||||
called = {"n": 0}
|
||||
|
||||
def fake_compressor(*a, **k):
|
||||
called["n"] += 1
|
||||
|
||||
monkeypatch.setattr(bm, "_build_compressor", fake_compressor)
|
||||
result = bm.build_model("awq", base_model="datalab-to/surya-ocr-2", out_dir=out, calib_images=[])
|
||||
assert result == out
|
||||
assert called["n"] == 0 # skipped because config.json already present
|
||||
|
||||
|
||||
def test_build_dispatches_to_compressor(tmp_path, monkeypatch):
|
||||
out = tmp_path / "gptq"
|
||||
seen = {}
|
||||
|
||||
def fake_compressor(method, base_model, out_dir, calib_images):
|
||||
seen["method"] = method
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
(out_dir / "config.json").write_text("{}", encoding="utf-8")
|
||||
|
||||
monkeypatch.setattr(bm, "_build_compressor", fake_compressor)
|
||||
bm.build_model("gptq", base_model="b", out_dir=out, calib_images=[])
|
||||
assert seen["method"] == "gptq"
|
||||
Reference in New Issue
Block a user