| --- |
| license: mit |
| language: |
| - zh |
| - en |
| tags: |
| - ncnn |
| - ocr |
| - tencent |
| - hunyuan |
| - vision-transformer |
| pipeline_tag: image-to-text |
| --- |
| |
| # HunYuanOCR ncnn Models |
|
|
| Pre-converted ncnn model files for [Tencent HunYuanOCR](https://huggingface.co/tencent/HunyuanOCR) (1B OCR expert model). |
| **0 custom layers**, dynamic resolution, KV cache support. |
|
|
| π Source code & usage: [infinity955/ncnn_ocr](https://github.com/infinity955/ncnn_ocr) |
|
|
| --- |
|
|
| ## hunyuanocr/ β Model Files |
|
|
| | File | Size | Description | |
| |------|------|-------------| |
| | `vision.ncnn.param` | 24 KB | ViT graph (27 layers, 1152-dim, patch=16, spatial_merge=2) | |
| | `vision.ncnn.bin` | 1.75 GB | ViT weights | |
| | `text_embed.ncnn.param` | 165 B | Text embedding lookup | |
| | `text_embed.ncnn.bin` | 495 MB | Text + LM Head tied weights (120818 vocab Γ 1024-dim) | |
| | `decoder.ncnn.param` | 37 KB | 24-layer decoder with KV cache (GQA 16/8, XD-RoPE) | |
| | `decoder.ncnn.bin` | 1.66 GB | Decoder weights | |
| | `lm_head.ncnn.param` | 179 B | LM Head graph (shares weights with text_embed.bin) | |
| | `pos_embed.bin` | 75.5 MB | Position embedding weights for ViT | |
|
|
| ### Architecture |
|
|
| ``` |
| Image β ViT (vision.ncnn) β image_embeds [Lv, 1024] |
| Text β BBPE β Text Embed (text_embed.ncnn) β text_embeds [Lt, 1024] |
| β Inject image_embeds at vision token positions |
| β Decoder (decoder.ncnn, 24 layers, KV cache) β hidden_states |
| β LM Head (lm_head.ncnn) β logits β greedy sample β EOS |
| ``` |
|
|
| ### Input / Output |
|
|
| | Module | Input | Output | |
| |--------|-------|--------| |
| | Vision Encoder | `[1,3,H,W]` + `[1,1152,gh,gw]` | `[Lv, 1024]` | |
| | Text Embed | `[1,N]` int64 token IDs | `[N, 1024]` | |
| | Decoder | embeds + mask + XD-RoPE cos/sin | `[N, 1024]` | |
| | LM Head | `[1, 1024]` | `[1, 120818]` | |
|
|
| ### Download |
|
|
| ```bash |
| # Clone entire repo (all models) |
| huggingface-cli download infinity955/ncnn_ocr --local-dir ./models |
| |
| # Or download specific files |
| huggingface-cli download infinity955/ncnn_ocr hunyuanocr/vision.ncnn.bin hunyuanocr/vision.ncnn.param |
| ``` |
|
|
| ### Usage |
|
|
| Place under `models/` and run with [ncnn_ocr](https://github.com/infinity955/ncnn_ocr): |
|
|
| ```bash |
| ./hunyuanocr_ncnn --model . --image test.jpg |
| # Output: ι‘Ίε©δΈε²Έ(231,392),(764,632)LAMAR(446,850),(559,878)05483(934,835),(997,870) |
| ``` |
|
|
| ### Conversion Notes |
|
|
| - Converted from PyTorch via `torch.jit.script β pnnx β ncnn` |
| - Decoder has KV cache baked in (SDPA `7=1` flag) |
| - LM Head weights tied with Text Embed (shared `.bin`) |
| - 100% text match vs HuggingFace PyTorch inference |
|
|
| ### References |
|
|
| - [Tencent/ncnn](https://github.com/Tencent/ncnn) β neural network inference framework |
| - [futz12/ncnn_llm](https://github.com/futz12/ncnn_llm) β reference GLM-OCR implementation |
| - [Tencent/HunyuanOCR](https://huggingface.co/tencent/HunyuanOCR) β original PyTorch model |
|
|