TeleOCR-GGUF / README.md
cstr's picture
Publish TeleOCR GGUF: F16, Q8_0, Q4_K_M
1de0119 verified
|
Raw History Blame Contribute Delete
4.9 kB
---
license: other
license_name: qwen-research
license_link: LICENSE
base_model: XingChen-AGI/TeleOCR
base_model_relation: quantized
pipeline_tag: image-text-to-text
library_name: gguf
tags: [gguf, ocr, crispembed, document-parsing, teleocr, qwen2.5-vl, non-commercial]
---
# TeleOCR GGUF (CrispEmbed)
GGUF conversions of [XingChen-AGI/TeleOCR](https://huggingface.co/XingChen-AGI/TeleOCR/tree/b3f6a0c084db72f971e19a779d2fd8a6bc9e3b8d)
by XingChen-AGI / China Telecom, for [CrispEmbed](https://github.com/CrispStrobe/CrispEmbed)'s native ggml runtime.
All credit for the model belongs to the original authors; these files only change the storage format.
They target CrispEmbed's TeleOCR profile (`general.architecture = teleocr`, GGUF v1) and are not loadable by llama.cpp.
## License and attribution
- **Non-commercial use only.** TeleOCR's vision encoder derives from [Qwen/Qwen2.5-VL-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct), which Alibaba Cloud releases under the **Qwen RESEARCH LICENSE AGREEMENT** (`LICENSE`, verbatim). That agreement governs these weights: research and evaluation use only; commercial use requires a license from Alibaba Cloud.
- The upstream TeleOCR card declares `apache-2.0`; that declaration (`LICENSE-APACHE-2.0`) covers the TeleOCR authors' own contributions but cannot relax the inherited Qwen terms (agreement section 3d). The lineage evidence (per-tensor weight cosines against every Qwen2.5-VL tower) is in CrispEmbed's `tests/results/licenses/qwen-vision-lineage.json`.
- `NOTICE` carries the attribution the Qwen agreement requires. **Built with Qwen.**
- CrispEmbed only loads these files with `CRISPEMBED_ACCEPT_QWEN_RESEARCH_LICENSE=1`, and its model registry requires `--accept-license qwen-research` to download them.
- `UPSTREAM_README.md` is the unmodified upstream model card at revision `b3f6a0c084db72f971e19a779d2fd8a6bc9e3b8d`
(SHA256 `176c705cd92eeb9006c048e72274741e839f2bafa2bae858e64c3277264eb0db`).
## Statement of changes (Apache-2.0 section 4(b))
These files were modified from the original by CrispEmbed: the safetensors weights of revision
`b3f6a0c084db72f971e19a779d2fd8a6bc9e3b8d` were **format-converted** to GGUF (tensor renaming, casting, tokenizer and
preprocessing metadata embedded) and, where noted, **quantized**.
No weights were trained, fine-tuned, merged or otherwise altered.
## Files
| File | Precision | Bytes | SHA256 |
|---|---|---:|---|
| `teleocr-f16.gguf` | F16 | 2,526,109,984 | `6c52a2800e313964717cf4e5d06e0392c2b5936d8adeac423d563b8a026a2780` |
| `teleocr-q8_0.gguf` | Q8_0 | 2,113,233,248 | `9de7e45ce6c13ba03d3d2879f2a1bff9f8407e12808be588cf057cd2553f224b` |
| `teleocr-q4_k-m.gguf` | Q4_K_M | 1,923,310,816 | `e975568f8bd069b3bc81364d10b38143a834922cdf600150e7e74084bfbce293` |
- **F16**: F16 matrices, F32 norms/biases
- **Q8_0**: decoder matrices Q8_0; vision, merger and tied embedding F16
- **Q4_K_M**: decoder Q4_K with ffn_down/attn_v Q6_K; vision, merger and tied embedding F16
## How the files were produced
1. Downloaded `XingChen-AGI/TeleOCR` at the pinned revision `b3f6a0c084db72f971e19a779d2fd8a6bc9e3b8d`; the converter
(`models/convert-teleocr-to-gguf.py`) checks the source files, tensor names and shapes.
2. Quantized variants were produced with CrispEmbed's own `crispembed-quantize` from the listed source GGUF.
3. Built and uploaded by CrispEmbed commit `4132e9e2de45b825d55febafa27ebf3895043788` (workflow `ocr-gguf-publish.yml`,
protocol `docs/teleocr-publication-v1.json`); `manifest.json` lists every recipe, input pin, receipt and file hash.
## Parity status (CrispEmbed native vs. the original Python model, CPU, greedy)
- The reference arms (f32) reproduce the original model's generated token IDs
**exactly** on all 6 frozen requests (`text` (66), `formula` (166), `table` (283), `code` (366), `layout` (768), `synthetic` (19) tokens), CrispEmbed commit
`9d24b621`, reference revision `b3f6a0c084db`.
- **F16** is token-ID exact on the same 6 cases (receipt `tests/results/teleocr/hosted-precision.json`); **Q8_0** is token-ID exact on the same 6 cases (receipt `tests/results/teleocr/hosted-precision.json`); **Q4_K_M** is token-ID exact on the same 6 cases (receipt `tests/results/teleocr/hosted-precision.json`).
- Strict intermediate numerical budgets are not met, including F32: one-ulp differences on the model's massive activations are amplified where they emerge (vision block 17); decoded IDs and text are exact. Also not verified: GPU numerical parity, other CPU/kernel combinations, mobile/WASM, aggregate OCR benchmarks beyond the six frozen cases.
## Usage
TeleOCR support is experimental and default-off in CrispEmbed (CPU by default), and non-commercial only:
```bash
CRISPEMBED_TELEOCR=1 CRISPEMBED_ACCEPT_QWEN_RESEARCH_LICENSE=1 crispembed --ocr-pipeline page.png \\
--ocr-engine teleocr --ocr-rec teleocr-f16.gguf
```