ncnn_ocr / README.md
infinity955's picture
Upload README.md with huggingface_hub
0dfecca verified
|
Raw
History Blame Contribute Delete
2.81 kB
---
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