{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec","slug":"paddlepaddle--en_pp-ocrv5_mobile_rec","name":"en_PP-OCRv5_mobile_rec","type":"model","url":"https://huggingface.co/PaddlePaddle/en_PP-OCRv5_mobile_rec","page_url":"https://unfragile.ai/paddlepaddle--en_pp-ocrv5_mobile_rec","categories":["image-generation"],"tags":["PaddleOCR","OCR","PaddlePaddle","textline_recognition","image-to-text","en","license:apache-2.0","region:us"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_0","uri":"capability://image.visual.mobile.optimized.textline.recognition.from.image.crops","name":"mobile-optimized textline recognition from image crops","description":"Recognizes text within pre-cropped textline image regions using a lightweight CNN-RNN architecture optimized for mobile deployment. The model processes variable-length textline images through a ResNet backbone for feature extraction, followed by a bidirectional LSTM sequence decoder that outputs character-level predictions. Architecture uses attention mechanisms to handle variable text lengths and orientations, with quantization and pruning applied to reduce model size from ~200MB to ~8-10MB for on-device inference.","intents":["I need to recognize English text from individual text regions extracted by a text detection model","I want to run OCR inference on mobile/edge devices with minimal latency and memory footprint","I need to process variable-length textlines with consistent accuracy across different fonts and scales","I want to integrate a pre-trained recognition model without training from scratch"],"best_for":["mobile app developers building on-device OCR pipelines","edge computing teams deploying document processing on IoT devices","teams using PaddleOCR's detection+recognition two-stage pipeline","developers targeting Android/iOS with real-time text recognition"],"limitations":["Requires pre-cropped textline images — does not perform text detection itself; must be paired with a detection model","Optimized for English text only; multilingual support requires separate language-specific models","Performance degrades on rotated text >45 degrees or severely skewed/curved text without preprocessing","Batch inference not optimized; processes single textlines sequentially, adding latency for high-volume document processing","No built-in confidence scoring per character — only sequence-level predictions available"],"requires":["PaddlePaddle 2.4+ runtime or ONNX Runtime 1.14+ for inference","Pre-processed textline image crops (typically 32×320 pixels or similar aspect ratio)","For mobile: PaddleLite inference framework (Android/iOS SDKs available)","For server: Python 3.7+ with paddleocr or paddlepaddle packages"],"input_types":["image (PNG, JPG, BMP formats)","numpy array (uint8, shape [H, W, 3] or [H, W, 1])","tensor (PaddlePaddle or ONNX format)"],"output_types":["text string (recognized characters)","character sequence with implicit confidence (model output logits)","structured data: {text: string, confidence: float}"],"categories":["image-visual","ocr-text-recognition"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_1","uri":"capability://image.visual.variable.length.sequence.decoding.with.attention","name":"variable-length sequence decoding with attention","description":"Decodes variable-length character sequences from textline feature maps using a bidirectional LSTM with attention mechanism. The decoder attends over spatial feature dimensions to predict characters sequentially, handling text of different lengths (typically 1-50 characters) without fixed-size constraints. Attention weights allow the model to focus on relevant image regions for each predicted character, improving accuracy on compressed or distorted text.","intents":["I need to recognize text of varying lengths without padding or resizing to fixed dimensions","I want to understand which image regions the model uses for each character prediction (interpretability)","I need robust handling of short IDs, long product codes, and variable-length document fields"],"best_for":["document processing pipelines with mixed-length text fields","applications requiring interpretability of character-level predictions","teams building custom OCR systems with variable input constraints"],"limitations":["Attention computation adds ~15-20% latency overhead vs non-attentional LSTM baselines","Attention weights are not guaranteed to be human-interpretable; may not align with actual character boundaries","Performance degrades on sequences >50 characters due to attention mechanism saturation","Requires careful feature map normalization; poor input preprocessing breaks attention alignment"],"requires":["PaddlePaddle 2.4+ with LSTM and attention operator support","Input feature maps from CNN backbone (typically 512-1024 channels, variable spatial dimensions)"],"input_types":["feature tensor (shape [batch, channels, height, width])"],"output_types":["character sequence (string)","attention weight matrices (shape [sequence_length, spatial_height, spatial_width])"],"categories":["image-visual","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_2","uri":"capability://image.visual.resnet.based.feature.extraction.for.textline.images","name":"resnet-based feature extraction for textline images","description":"Extracts spatial feature representations from textline images using a lightweight ResNet backbone (typically ResNet18 or ResNet34 variant) with depthwise separable convolutions for mobile efficiency. The backbone progressively downsamples spatial dimensions while increasing channel depth, producing feature maps that capture character-level visual patterns (strokes, curves, spacing). Intermediate feature maps are concatenated to preserve multi-scale information critical for recognizing text at different scales and resolutions.","intents":["I need to extract robust visual features from textline images before sequence decoding","I want efficient feature extraction that runs on mobile devices without excessive memory","I need to handle text at multiple scales and resolutions within a single model"],"best_for":["mobile OCR pipelines where model size and latency are critical","teams building custom recognition models on top of pre-extracted features","applications processing textlines at varying resolutions"],"limitations":["Requires fixed input height (typically 32 pixels); width is variable but extreme aspect ratios (>10:1) degrade feature quality","Depthwise separable convolutions reduce model capacity; may underfit on complex fonts or handwriting","Feature extraction is not end-to-end differentiable with detection models; requires separate training pipeline","No built-in handling of text rotation; rotated text requires preprocessing (image rotation) before feature extraction"],"requires":["Input images normalized to [0, 1] or [-1, 1] range","Image height fixed at 32 pixels (or model-specific height); width variable","PaddlePaddle 2.4+ with ResNet and depthwise separable convolution support"],"input_types":["image tensor (shape [batch, 3, 32, width], dtype float32)","numpy array (uint8, auto-normalized internally)"],"output_types":["feature tensor (shape [batch, 512-1024, 1, width/8], dtype float32)","multi-scale feature maps (intermediate layer outputs)"],"categories":["image-visual","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_3","uri":"capability://image.visual.quantized.inference.for.mobile.deployment","name":"quantized inference for mobile deployment","description":"Deploys the recognition model on mobile devices using INT8 quantization and PaddleLite runtime, reducing model size from ~200MB (FP32) to ~8-10MB (INT8) with minimal accuracy loss (<1%). Quantization is applied post-training using calibration data; the model is converted to PaddleLite format with operator fusion and memory layout optimization for ARM processors. Inference runs directly on mobile CPUs without GPU dependency, achieving 10-50ms latency per textline on modern mobile hardware.","intents":["I need to deploy OCR on Android/iOS without cloud API calls or GPU requirements","I want to reduce model size for app distribution and on-device storage constraints","I need real-time textline recognition with <50ms latency on mobile CPUs"],"best_for":["mobile app developers building offline-first OCR features","teams with privacy requirements preventing cloud inference","resource-constrained edge devices (IoT, embedded systems)"],"limitations":["INT8 quantization introduces ~0.5-1% accuracy degradation on some font types; requires validation on target domain","PaddleLite runtime is Android/iOS specific; no support for other mobile platforms (Windows Phone, etc.)","Quantization requires calibration dataset; generic calibration may not match production text distribution","No dynamic quantization; model must be re-quantized for different target hardware (ARM v7 vs v8)","Inference is single-threaded by default; multi-threading requires manual configuration and may increase latency"],"requires":["PaddleLite 2.10+ for Android/iOS","Android NDK 21+ (for Android) or Xcode 12+ (for iOS)","Target device with ARM processor (ARMv7, ARMv8); no x86 support","Minimum 50MB free storage for model + runtime"],"input_types":["image tensor (shape [1, 3, 32, width], dtype uint8 or float32)"],"output_types":["character predictions (shape [1, sequence_length, num_classes], dtype float32)","text string (post-processed from predictions)"],"categories":["image-visual","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_4","uri":"capability://data.processing.analysis.batch.image.preprocessing.and.normalization","name":"batch image preprocessing and normalization","description":"Preprocesses variable-width textline images into normalized batches for inference, handling resizing, padding, and channel normalization. Images are resized to fixed height (32 pixels) while preserving aspect ratio, padded to a common width within the batch, and normalized using ImageNet statistics (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]). Preprocessing is implemented in C++ for PaddleLite and Python for server inference, with SIMD optimizations for mobile platforms.","intents":["I need to prepare variable-sized textline crops for batch inference","I want to normalize images consistently across different sources and lighting conditions","I need efficient preprocessing that doesn't bottleneck inference latency"],"best_for":["teams building OCR pipelines with variable input image sizes","applications processing batches of textlines from document scans","mobile apps requiring fast image preprocessing on CPU"],"limitations":["Fixed height (32 pixels) may lose information from very small text (<8pt) or very large text (>72pt)","Aspect ratio preservation can result in padding up to 30% of image area for extreme aspect ratios; padding adds noise","ImageNet normalization statistics may not be optimal for document images with different color distributions","Batch padding to common width adds latency for batches with highly variable widths; no dynamic batching support","No built-in handling of rotated or skewed text; requires external preprocessing"],"requires":["Input images in uint8 format (0-255 range)","Image height ≥16 pixels, width ≥8 pixels","OpenCV 4.0+ (for Python preprocessing) or PaddleLite C++ runtime (for mobile)"],"input_types":["numpy array (shape [H, W, 3], dtype uint8)","PIL Image","raw image bytes"],"output_types":["normalized tensor (shape [batch, 3, 32, padded_width], dtype float32)","metadata (original widths, padding amounts)"],"categories":["data-processing-analysis","image-visual"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_5","uri":"capability://data.processing.analysis.character.level.confidence.scoring.and.filtering","name":"character-level confidence scoring and filtering","description":"Extracts character-level confidence scores from model output logits and applies post-processing filters to remove low-confidence predictions. The model outputs logits for each character position; softmax is applied to convert to probabilities, and per-character confidence is extracted as the maximum probability. Filtering strategies include: removing characters with confidence <threshold, merging adjacent low-confidence predictions, and flagging uncertain regions for manual review. Confidence scores enable downstream applications to prioritize high-confidence text for processing.","intents":["I need to identify which characters the model is uncertain about","I want to filter out low-confidence predictions before downstream processing","I need to flag uncertain textlines for manual review or re-processing"],"best_for":["document processing pipelines with quality control requirements","teams building human-in-the-loop OCR systems","applications where false positives are costly (e.g., financial documents)"],"limitations":["Confidence scores are not calibrated; a score of 0.9 does not guarantee 90% accuracy across all character types","Confidence is per-character, not per-word or per-line; no built-in word-level confidence aggregation","Filtering by confidence threshold requires manual tuning per domain; no automatic threshold selection","Low confidence may indicate ambiguous characters (0/O, 1/l) rather than actual errors; requires domain knowledge to interpret","No confidence score for spaces or punctuation; only alphanumeric characters have meaningful scores"],"requires":["Model output logits (shape [sequence_length, num_classes])","Softmax implementation (built into PaddlePaddle or numpy)"],"input_types":["model logits (tensor, shape [sequence_length, num_classes])"],"output_types":["text string with confidence annotations","structured data: {char: string, confidence: float}[]","filtered text (low-confidence characters removed or masked)"],"categories":["data-processing-analysis","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hf-model-paddlepaddle--en_pp-ocrv5_mobile_rec__cap_6","uri":"capability://tool.use.integration.integration.with.paddleocr.detection.pipeline","name":"integration with paddleocr detection pipeline","description":"Designed as the recognition stage of PaddleOCR's two-stage pipeline, consuming textline bounding boxes and cropped images from the detection model (en_PP-OCRv5_mobile_det). The recognition model expects pre-cropped textline images with minimal padding; integration requires coordinate transformation from detection output (rotated bounding boxes) to axis-aligned crops. PaddleOCR provides end-to-end orchestration via the OCRv5 inference API, handling detection→crop→recognition→post-processing in a single call.","intents":["I want to use the full PaddleOCR pipeline (detection + recognition) for end-to-end document OCR","I need to integrate this recognition model with PaddleOCR's detection model","I want to process documents with minimal custom code using PaddleOCR's high-level API"],"best_for":["teams using PaddleOCR's complete OCR pipeline","developers wanting end-to-end document processing without custom orchestration","applications processing documents with standard text layouts"],"limitations":["Tightly coupled to PaddleOCR's detection model; cannot easily swap with other detection models","Requires detection model output in specific format; custom detection models need coordinate transformation","End-to-end pipeline latency is dominated by detection; recognition is only ~20-30% of total time","No support for multi-language documents; detection and recognition must use same language","Orchestration overhead adds ~50-100ms per document due to Python-level coordination"],"requires":["PaddleOCR 2.7+ library","en_PP-OCRv5_mobile_det detection model (or compatible detection model)","Python 3.7+ with paddleocr package"],"input_types":["document image (full page or region)","detection bounding boxes (from detection model)"],"output_types":["OCR results: {text: string, confidence: float, bbox: [x, y, w, h]}[]","structured document representation (optional)"],"categories":["tool-use-integration","image-visual"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":41,"verified":false,"data_access_risk":"high","permissions":["PaddlePaddle 2.4+ runtime or ONNX Runtime 1.14+ for inference","Pre-processed textline image crops (typically 32×320 pixels or similar aspect ratio)","For mobile: PaddleLite inference framework (Android/iOS SDKs available)","For server: Python 3.7+ with paddleocr or paddlepaddle packages","PaddlePaddle 2.4+ with LSTM and attention operator support","Input feature maps from CNN backbone (typically 512-1024 channels, variable spatial dimensions)","Input images normalized to [0, 1] or [-1, 1] range","Image height fixed at 32 pixels (or model-specific height); width variable","PaddlePaddle 2.4+ with ResNet and depthwise separable convolution support","PaddleLite 2.10+ for Android/iOS"],"failure_modes":["Requires pre-cropped textline images — does not perform text detection itself; must be paired with a detection model","Optimized for English text only; multilingual support requires separate language-specific models","Performance degrades on rotated text >45 degrees or severely skewed/curved text without preprocessing","Batch inference not optimized; processes single textlines sequentially, adding latency for high-volume document processing","No built-in confidence scoring per character — only sequence-level predictions available","Attention computation adds ~15-20% latency overhead vs non-attentional LSTM baselines","Attention weights are not guaranteed to be human-interpretable; may not align with actual character boundaries","Performance degrades on sequences >50 characters due to attention mechanism saturation","Requires careful feature map normalization; poor input preprocessing breaks attention alignment","Requires fixed input height (typically 32 pixels); width is variable but extreme aspect ratios (>10:1) degrade feature quality","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.5649018136519265,"quality":0.24,"ecosystem":0.5000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.35,"quality":0.2,"ecosystem":0.1,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.765Z","last_scraped_at":"2026-05-03T14:22:50.443Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":339341,"model_likes":2}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=paddlepaddle--en_pp-ocrv5_mobile_rec","compare_url":"https://unfragile.ai/compare?artifact=paddlepaddle--en_pp-ocrv5_mobile_rec"}},"signature":"WJff+gfHMDIkHuVu3SfiMo6WNgY3+sE21StDfz6XD4g2uwWFeZH3Mud/8rkxxEH3XS8ygkcPCumeJ1eZANMXAA==","signedAt":"2026-06-20T14:10:33.700Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/paddlepaddle--en_pp-ocrv5_mobile_rec","artifact":"https://unfragile.ai/paddlepaddle--en_pp-ocrv5_mobile_rec","verify":"https://unfragile.ai/api/v1/verify?slug=paddlepaddle--en_pp-ocrv5_mobile_rec","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}