TrOCR: Optimized for Qualcomm Devices
End-to-end text recognition approach with pre-trained image transformer and text transformer models for both image understanding and wordpiece-level text generation.
This is based on the implementation of TrOCR found here. This repository contains pre-exported model files optimized for Qualcomm® devices. You can use the Qualcomm® AI Hub Models library to export with custom configurations. More details on model performance across various devices, can be found here.
Qualcomm AI Hub Models uses Qualcomm AI Hub Workbench to compile, profile, and evaluate this model. Sign up to run these models on a hosted Qualcomm® device.
Getting Started
There are two ways to deploy this model on your device:
Option 1: Download Pre-Exported Models
Below are pre-exported model assets ready for deployment.
| Runtime | Precision | Chipset | SDK Versions | Download |
|---|---|---|---|---|
| ONNX | float | Universal | QAIRT 2.45, ONNX Runtime 1.27.1 | Download |
| QNN_DLC | float | Universal | QAIRT 2.45 | Download |
| TFLITE | float | Universal | QAIRT 2.45 | Download |
For more device-specific assets and performance metrics, visit TrOCR on Qualcomm® AI Hub.
Option 2: Export with Custom Configurations
Use the Qualcomm® AI Hub Models Python library to compile and export the model with your own:
- Custom weights (e.g., fine-tuned checkpoints)
- Custom input shapes
- Target device and runtime configurations
This option is ideal if you need to customize the model beyond the default configuration provided here.
See our repository for TrOCR on GitHub for usage instructions.
Model Details
Model Type: Model_use_case.image_to_text
Model Stats:
- Input resolution: 320x320
- Model checkpoint: trocr-small-stage1
- Model size (decoder) (float): 146 MB
- Model size (encoder) (float): 87.8 MB
- Number of parameters (decoder): 38.3M
- Number of parameters (encoder): 23.0M
Performance Summary
| Model | Runtime | Precision | Chipset | Inference Time (ms) | Peak Memory Range (MB) | Primary Compute Unit |
|---|---|---|---|---|---|---|
| decoder | ONNX | float | Snapdragon® X2 Elite | 1.273 ms | 7 - 7 MB | NPU |
| decoder | ONNX | float | Snapdragon® X Elite | 2.072 ms | 68 - 68 MB | NPU |
| decoder | ONNX | float | Snapdragon® 8 Gen 3 Mobile | 1.454 ms | 0 - 283 MB | NPU |
| decoder | ONNX | float | Snapdragon® 8 Gen 1 Mobile | 2.723 ms | 1 - 219 MB | NPU |
| decoder | ONNX | float | Qualcomm® Dragonwing™ IQ-8275 | 2.793 ms | 7 - 17 MB | NPU |
| decoder | ONNX | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 2.112 ms | 1 - 3 MB | NPU |
| decoder | ONNX | float | Qualcomm® QCS8450 | 2.723 ms | 1 - 219 MB | NPU |
| decoder | ONNX | float | Qualcomm® Dragonwing™ IQ-9075 | 2.783 ms | 7 - 16 MB | NPU |
| decoder | ONNX | float | Qualcomm® Dragonwing™ IQ-X7181 | 2.072 ms | 68 - 68 MB | NPU |
| decoder | ONNX | float | Qualcomm® Dragonwing™ Q-8750 | 1.307 ms | 0 - 195 MB | NPU |
| decoder | ONNX | float | Snapdragon® 8 Elite Mobile | 1.307 ms | 0 - 195 MB | NPU |
| decoder | ONNX | float | Snapdragon® 8 Elite Gen 5 Mobile | 1.187 ms | 2 - 179 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® X2 Elite | 1.61 ms | 7 - 7 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® X Elite | 2.223 ms | 7 - 7 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® 8 Gen 3 Mobile | 1.383 ms | 0 - 274 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® 8 Gen 1 Mobile | 2.678 ms | 2 - 217 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-8275 | 2.639 ms | 7 - 16 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-8275 | 4.17 ms | 5 - 105 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 2.016 ms | 4 - 177 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® SA8775P | 2.886 ms | 5 - 105 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® SA8650P | 2.886 ms | 5 - 105 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® SA8255P | 2.886 ms | 5 - 105 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® QCS8450 | 2.678 ms | 2 - 217 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-9075 | 2.645 ms | 7 - 16 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-X7181 | 2.223 ms | 7 - 7 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® Dragonwing™ Q-8750 | 1.25 ms | 0 - 188 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® SA7255P | 4.17 ms | 5 - 105 MB | NPU |
| decoder | QNN_DLC | float | Qualcomm® SA8295P | 2.621 ms | 0 - 41 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® 8 Elite Mobile | 1.25 ms | 0 - 188 MB | NPU |
| decoder | QNN_DLC | float | Snapdragon® 8 Elite Gen 5 Mobile | 1.152 ms | 1 - 173 MB | NPU |
| decoder | TFLITE | float | Snapdragon® 8 Gen 3 Mobile | 1.375 ms | 0 - 280 MB | NPU |
| decoder | TFLITE | float | Snapdragon® 8 Gen 1 Mobile | 2.443 ms | 0 - 218 MB | NPU |
| decoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-8275 | 2.678 ms | 0 - 84 MB | NPU |
| decoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-8275 | 4.215 ms | 0 - 103 MB | NPU |
| decoder | TFLITE | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 1.952 ms | 0 - 2 MB | NPU |
| decoder | TFLITE | float | Qualcomm® SA8775P | 2.838 ms | 0 - 103 MB | NPU |
| decoder | TFLITE | float | Qualcomm® SA8650P | 2.838 ms | 0 - 103 MB | NPU |
| decoder | TFLITE | float | Qualcomm® SA8255P | 2.838 ms | 0 - 103 MB | NPU |
| decoder | TFLITE | float | Qualcomm® QCS8450 | 2.443 ms | 0 - 218 MB | NPU |
| decoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-9075 | 2.626 ms | 0 - 83 MB | NPU |
| decoder | TFLITE | float | Qualcomm® Dragonwing™ Q-8750 | 1.234 ms | 0 - 189 MB | NPU |
| decoder | TFLITE | float | Qualcomm® SA7255P | 4.215 ms | 0 - 103 MB | NPU |
| decoder | TFLITE | float | Snapdragon® 8 Elite Mobile | 1.234 ms | 0 - 189 MB | NPU |
| decoder | TFLITE | float | Snapdragon® 8 Elite Gen 5 Mobile | 1.129 ms | 0 - 177 MB | NPU |
| encoder | ONNX | float | Snapdragon® X2 Elite | 4.549 ms | 16 - 16 MB | NPU |
| encoder | ONNX | float | Snapdragon® X Elite | 11.422 ms | 47 - 47 MB | NPU |
| encoder | ONNX | float | Snapdragon® 8 Gen 3 Mobile | 7.835 ms | 0 - 200 MB | NPU |
| encoder | ONNX | float | Snapdragon® 8 Gen 1 Mobile | 19.866 ms | 0 - 317 MB | NPU |
| encoder | ONNX | float | Qualcomm® Dragonwing™ IQ-8275 | 13.966 ms | 15 - 20 MB | NPU |
| encoder | ONNX | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 10.914 ms | 0 - 57 MB | NPU |
| encoder | ONNX | float | Qualcomm® QCS8450 | 19.866 ms | 0 - 317 MB | NPU |
| encoder | ONNX | float | Qualcomm® Dragonwing™ IQ-9075 | 13.355 ms | 15 - 19 MB | NPU |
| encoder | ONNX | float | Qualcomm® Dragonwing™ IQ-X7181 | 11.422 ms | 47 - 47 MB | NPU |
| encoder | ONNX | float | Qualcomm® Dragonwing™ Q-8750 | 5.282 ms | 16 - 144 MB | NPU |
| encoder | ONNX | float | Snapdragon® 8 Elite Mobile | 5.282 ms | 16 - 144 MB | NPU |
| encoder | ONNX | float | Snapdragon® 8 Elite Gen 5 Mobile | 4.167 ms | 0 - 126 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® X2 Elite | 5.224 ms | 2 - 2 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® X Elite | 12.056 ms | 2 - 2 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® 8 Gen 3 Mobile | 8.007 ms | 0 - 188 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® 8 Gen 1 Mobile | 19.486 ms | 0 - 306 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-8275 | 14.267 ms | 2 - 13 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-8275 | 37.071 ms | 2 - 107 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 11.286 ms | 2 - 3 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® SA8775P | 14.013 ms | 2 - 109 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® SA8650P | 14.013 ms | 2 - 109 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® SA8255P | 14.013 ms | 2 - 109 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® QCS8450 | 19.486 ms | 0 - 306 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-9075 | 13.793 ms | 2 - 12 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ IQ-X7181 | 12.056 ms | 2 - 2 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® Dragonwing™ Q-8750 | 5.448 ms | 2 - 116 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® SA7255P | 37.071 ms | 2 - 107 MB | NPU |
| encoder | QNN_DLC | float | Qualcomm® SA8295P | 19.696 ms | 2 - 234 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® 8 Elite Mobile | 5.448 ms | 2 - 116 MB | NPU |
| encoder | QNN_DLC | float | Snapdragon® 8 Elite Gen 5 Mobile | 4.356 ms | 2 - 117 MB | NPU |
| encoder | TFLITE | float | Snapdragon® 8 Gen 3 Mobile | 7.703 ms | 0 - 189 MB | NPU |
| encoder | TFLITE | float | Snapdragon® 8 Gen 1 Mobile | 19.663 ms | 5 - 310 MB | NPU |
| encoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-8275 | 13.696 ms | 7 - 67 MB | NPU |
| encoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-8275 | 36.837 ms | 7 - 119 MB | NPU |
| encoder | TFLITE | float | Qualcomm® Dragonwing™ QCS8550 (Proxy) | 10.72 ms | 7 - 9 MB | NPU |
| encoder | TFLITE | float | Qualcomm® SA8775P | 13.486 ms | 7 - 111 MB | NPU |
| encoder | TFLITE | float | Qualcomm® SA8650P | 13.486 ms | 7 - 111 MB | NPU |
| encoder | TFLITE | float | Qualcomm® SA8255P | 13.486 ms | 7 - 111 MB | NPU |
| encoder | TFLITE | float | Qualcomm® QCS8450 | 19.663 ms | 5 - 310 MB | NPU |
| encoder | TFLITE | float | Qualcomm® Dragonwing™ IQ-9075 | 13.352 ms | 7 - 66 MB | NPU |
| encoder | TFLITE | float | Qualcomm® Dragonwing™ Q-8750 | 5.202 ms | 7 - 120 MB | NPU |
| encoder | TFLITE | float | Qualcomm® SA7255P | 36.837 ms | 7 - 119 MB | NPU |
| encoder | TFLITE | float | Snapdragon® 8 Elite Mobile | 5.202 ms | 7 - 120 MB | NPU |
| encoder | TFLITE | float | Snapdragon® 8 Elite Gen 5 Mobile | 4.118 ms | 7 - 111 MB | NPU |
License
- The license for the original implementation of TrOCR can be found here.
References
- TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models
- Source Model Implementation
Community
- Join our AI Hub Slack community to collaborate, post questions and learn more about on-device AI.
- For questions or feedback please reach out to us.
