Benchmarks de précision

Mise à niveau moteur OCR : PP-OCRv5 → PP-OCRv6

Mesuré le 09/07/2026 sur un GPU RTX 3090 local exécutant l'image de production (paddleocr==3.7.0, CUDA 12.9). Échantillons : un véritable document photographié en HEIC de 24 MP (texte polonais, vérité terrain transcrite par un humain) et les PDF d'exemple de facture et de reçu du dépôt (vérité terrain pdftotext). L'évaluation utilise le rappel et la précision d'ensembles multiples indépendants de l'ordre.

La configuration déployée est PP-OCRv6 medium avec text_det_box_thresh=0.5. Le seuil de boîte plus bas récupère les lignes pâles dans les zones de brillance ou de perspective des photos prises par appareil photo (+20 points de rappel des mots), sans régression sur les pages rendues propres.

Métrique PP-OCRv5 (précédent) PP-OCRv6 medium + box_thresh 0.5 (actuel)
Rappel de mots (photo caméra) 0.670 0.865 (+29 %)
Rappel diacritiques polonais (photo caméra) 0.562 0.775 (+38 %)
Précision de mots (photo caméra) 0.986 0.955
Rappel numérique (ticket de caisse) 0.818 1.000 (+22 %)
Facture imprimée dense (rappel/précision de mots) 1.000 / 1.000 1.000 / 1.000
Latence GPU à chaud (RTX 3090, page dense) ~0.55 s ~1.13 s

Le rappel des mots sur les pages imprimées rendues (PDF de factures et de reçus) est de 1,000 avec les deux versions du moteur : l'amélioration se concentre sur les photos prises par appareil, où la perspective, la brillance et la compression sollicitent le détecteur. Le rappel numérique (montants, dates, identifiants) est l'indicateur le plus proche de la précision d'extraction des champs, car les champs sont associés à partir de ces jetons.

Moteur photo : prétraitement de documents caméra

Mesuré le 09/07/2026 (même matériel et même image que le banc d'essai du moteur OCR). Le moteur photo applique un redressement géométrique et une classification de l'orientation aux importations depuis un appareil photo avant l'OCR. Il a été décidé de l'activer uniquement pour les importations IMAGE : appliqué à des pages déjà planes et rendues, le redressement fait passer le rappel des mots de 1,000 à 0,635 en déformant les pixels alignés.

Métrique Sans prétraitement (référence) Avec redressement (uploads caméra)
Rappel de mots (photo caméra) 0.865 0.921 (+6.6 %)
Rappel diacritiques polonais (photo caméra) 0.775 0.854 (+10.2 %)
Précision de mots (photo caméra) 0.955 0.961
Rappel de mots. Page dense imprimée 1.000 0.635 (régression, limité aux photos par conception)

Le gain apporté par le redressement est réel, mais nécessite que le service OCR renvoie l'image de page transformée afin que les boîtes englobantes soient tracées dans le bon espace de coordonnées (transformé). La limitation aux photos évite la régression sur les pages denses. La fonctionnalité est contrôlée par la variable d'environnement OCR_PHOTO_TRANSFORMS_ENABLED.

Détection de séparation de PDF multi-factures

Mesuré le 21/07/2026 à l'aide de l'ensemble d'évaluation synthétique étiqueté généré par scripts/gen_split_eval.py et évalué par scripts/eval_doc_split.py. Le détecteur utilise la couche de texte intégrée (pdftotext) pour trouver les signaux de limite de page (en-têtes de facture, motifs d'étiquettes de date, mots-clés de type de document) avant tout appel OCR ou LLM ; la détection des limites est donc gratuite.

Condition Précision des limites Rappel des limites F1 Documents évalués
Texte propre (sans bruit OCR) 1.000 1.000 1.000 660
Bruit OCR au niveau des caractères : 2 % - - 0.969 660

The eval set mixes multi-invoice PDFs with single-invoice negatives. Precision and recall are computed on exact page-index boundary matches. The 2 %% OCR noise model applies per-character confusion, dropping, and swapping (including colon loss, which breaks label regexes). At that noise level the detector achieves F1 0.969, which motivated the suggest-and-confirm UX: boundaries are offered to the user for review rather than applied silently.

Notes méthodologiques

Questions sur la méthodologie ou les résultats : hello@synairo.com