Replace the single legacy Dockerfile (rapidocr_api only) with 7
per-engine development images covering all supported inference backends:
- onnxruntime-cpu: ONNX Runtime on CPU (python:3.10-slim-bookworm)
- onnxruntime-gpu: ONNX Runtime with CUDA (nvidia/cuda:12.4.1)
- tensorrt: NVIDIA TensorRT (nvcr.io/nvidia/deepstream:7.0-gc-triton-devel)
- paddle: PaddlePaddle CPU
- openvino: Intel OpenVINO
- pytorch: PyTorch CPU
- mnn: Alibaba MNN
Infrastructure:
- Dockerfile.base: shared foundation for CPU variants
- docker-compose.yaml: all 7 services with shared model volume
- Makefile: make build-*/test-*/shell-* convenience commands
- .dockerignore: excludes .git, models, build artifacts
Key design decisions:
- PYTHONPATH-based imports (setup.py incompatible with pip editable install)
- Named volume (rapidocr-models) for persistent model cache across rebuilds
- Source bind-mounted at runtime for live editing
- tensorrt pinned to 8.6.x + cuda-python 12.x (matching DeepStream 7.0)
All 7 images built and tested with full OCR pipeline inference.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(inference_engine): add TensorRT engine support
- Add TensorRT inference session with dynamic shape support
- Implement automatic engine building and caching per GPU architecture
- Add pre-allocated buffers with pinned memory optimization
- Support FP16/FP32/INT8 precision modes
- Add optimization profiles for det/rec/cls models
- Include comprehensive error handling and resource cleanup
- Add unit tests for TensorRT engine (skipped when unavailable)
- Add TensorRT configuration section in config.yaml
* fix(tensorrt): dynamically allocate output buffers to prevent overflow
* Update test_engine.py with TensorRT support final version
* feat(tensorrt): add model_type to engine cache key
- Include model_type in TensorRT engine cache key generation
- Ensures proper cache differentiation based on model_type
* fix(tensorrt): update maximum shape configurations for input and output tensors
- Increased max_shape values in config.yaml and engine_builder.py to 2048 for both detection and recognition tasks.
- Updated default maximum shapes in memory_utils.py to reflect the new limits for input and output buffers.
* feat(tensorrt): implement square input handling for MULTI models
- Added functionality to check if the model requires square input based on configuration.
- Implemented padding of input to square shape and cropping of output back to original dimensions.
- Introduced methods to determine maximum profile size and handle square input requirements for TensorRT inference.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: update five multi language files
* feat(rec): enable RTL text display for Arabic
* test(rec): add arabic, cyrillic, devanagari, ta and te unit testings
* test(rec): remove duplicate cyrillic unit testing
* feat(rec): update url to v3.5.0
* chore: update files
* fix: correct incorrect character coordinates in returned data
Related #612
* chore: restore demo
* fix(utils): add missing type annotations to filter_by_indices and is_chinese_char