Model reference · open weights

ArmorOCR

LLMs inclusionAI Vision + text 2 builds Open weights 277 dl/mo

ArmorOCR is an open-weight language model from inclusionAI. ArmorOCR-GGUF (GGUF) weighs 5.0 GB; the smallest configuration that runs it is RTX 3060 12 GB.

  • ArmorOCR is an image-text-to-text model developed by inclusionAI that performs grounded adversarial OCR perception.
  • It is built on the Qwen3-VL-8B-Instruct base model and contains 8.8B parameters.
  • The model supports English and Chinese and is released under the Apache 2.0 license.

Summary of the inclusionAI/ArmorOCR model card, 2026-10-01. The estimate below is for another build of the family.

What it is

Released byinclusionAI
Released2026-08-20
Parameters8.8B
VRAM5.0 GB for the weights

What it runs on

Memory and cards for ArmorOCR-GGUF (GGUF)

5.0 GBweights, file size
651 MBruntime overhead, at least

How much memory each request adds isn't estimated yet for this architecture. The weights need at least the cards below, plus room for the context.

CardWeights alone
RTX 3060 12 GBfits
RTX 4060 Ti 16 GBfits
RTX 3090 24 GBfits
RTX 4090 24 GBfits
RTX 5090 32 GBfits
L40S 48 GBfits
A100 80 GBfits
H100 80 GBfits
RTX PRO 6000 Blackwell 96 GBfits
DGX Spark (GB10) 128 GB unifiedfits
H200 141 GBfits
B200 180 GBfits

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
ArmorOCR ↗ 8.8BBF16 17.5 GB2× RTX 3060 12 GB
ArmorOCR-GGUF (above) ↗
2 builds: Q4_K_M 5.0 GB … Q8_0 8.7 GB
—GGUF 5.0 GBRTX 3060 12 GB

From the model card

What inclusionAI says about ArmorOCR

Read the model card

ArmorOCR is a two-stage framework for grounded adversarial OCR perception built on Qwen3-VL-8B-Instruct. It enables single-pass inference on the original image, without any inference-time visual transformations or tool assistance.

📖 For training details, the AdvSpot benchmark, and evaluation scripts, please visit the GitHub repo.

Quickstart

pip install transformers==4.57.1 accelerate
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor

model = Qwen3VLForConditionalGeneration.from_pretrained(
    "inclusionAI/ArmorOCR", dtype="auto", device_map="auto",
)
processor = AutoProcessor.from_pretrained("inclusionAI/ArmorOCR")

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "path/to/image.png"},
        {"type": "text",
         "text": ("Please identify the text in the image. "
                  "Put your reasoning inside  "
                  "and your final recognized text inside .")},
    ],
}]

inputs = processor.apply_chat_template(
    messages, tokenize=True, add_generation_prompt=True,
    return_dict=True, return_tensors="pt",
).to(model.device)

out = model.generate(**inputs, max_new_tokens=256)
trimmed = [o[len(i):] for i, o in zip(inputs.input_ids, out)]
print(processor.batch_decode(trimmed, skip_special_tokens=True))

License

Released under the Apache License 2.0. Use is additionally subject to the license and acceptable-use policy of the base model Qwen/Qwen3-VL-8B-Instruct.

Citation

@misc{cao2026armorocrgroundedadversarialvisual,
      title={ArmorOCR: Grounded Adversarial Visual Perception via Observation-Transferred Self-Distillation},
      author={Linhan Cao and Siyuan Li and Jun Lan and Liangbo He and Guannan Li and Xiaolei Huang and Jun Jia and Shuheng Zhou and Huijia Zhu and Weiqiang Wang and Wei Sun},
      year={2026},
      eprint={2608.20122},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2608.20122},
}

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms