Communitygithub.com

uglymie/real-offline-ocr

Extraction locale de texte à partir d'images, basée sur RapidOCR et PP-OCRv6, fonctionnant entièrement hors ligne pour le chinois et l'anglais.

Qu'est-ce que real-offline-ocr ?

Ce skill permet à un agent IA d'extraire du texte depuis des images locales (captures d'écran, photos, tickets de caisse, documents scannés, etc.) sans aucune connexion réseau, inscription à une API ou GPU. Il s'appuie sur RapidOCR avec le modèle PP-OCRv6 et prend en charge le chinois et l'anglais. L'utilisateur peut choisir parmi trois niveaux de modèle (tiny, small, medium) et deux moteurs d'inférence (ONNX Runtime par défaut, OpenVINO optionnel pour une accélération sur CPU Intel). L'installation initiale, via `scripts/setup.py`, crée un environnement virtuel Python autonome (Python 3.9+) et installe les dépendances nécessaires. Une fois installé, le script `ocr.py` peut être appelé sur une ou plusieurs images, et renvoie le texte reconnu avec les niveaux de confiance. Ce skill est particulièrement utile pour les modèles de langage qui ne possèdent pas de capacités multimodales (comme DeepSeek), leur permettant d'« lire » le contenu d'une image via l'extraction de texte.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add uglymie/real-offline-ocr

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

OCR hors ligne — Extraction de texte d'image hors ligne

Basée sur RapidOCR + PP-OCRv6, cette compétence permet l'extraction de texte depuis des images en local, entièrement hors ligne, et prend en charge le chinois et l'anglais. Aucune connexion Internet, inscription à une API ou GPU nécessaire.

Quand l'utiliser

  • L'utilisateur fournit un fichier image (capture d'écran, photo, ticket, scan, document, CAPTCHA, etc.) et demande la lecture du texte qu'il contient.
  • Besoin d'extraire du texte d'une image, comme copier les informations d'un ticket, reconnaître du code/texte dans une capture d'écran, ou extraire le texte d'un tableau.
  • Alternative de « lecture d'image » lorsque le modèle actuel ne dispose pas de capacités multimodales.
  • Peut être utilisé avec DeepSeek-V4 et autres grands modèles sans multimodalité : lorsque l'interface de dialogue du modèle ne peut pas « voir » une image, ce skill extrait d'abord le texte de l'image pour que le modèle puisse le comprendre, répondre et traiter.

Installation initiale (une seule fois)

L'exécution du script nécessite un environnement virtuel Python dédié. Lors de la première utilisation de ce skill, vérifiez d'abord que l'environnement est prêt :

# Si <SKILL_DIR>/.venv n'existe pas ou ne peut pas importer rapidocr, exécutez :
python <SKILL_DIR>/scripts/setup.py

# Pour les utilisateurs de CPU Intel souhaitant de meilleures performances (environ 1,8x), installez OpenVINO en plus :
python <SKILL_DIR>/scripts/setup.py --with-openvino

La commande est identique sur toutes les plateformes (Windows/macOS/Linux, pas besoin de bash). Si python n'est pas trouvé, sous Linux/macOS vous pouvez utiliser python3 à la place.

setup.py est idempotent, il peut être exécuté plusieurs fois ; si déjà installé, il saute l'étape. Il :

  • Vérifie que la version de Python est >= 3.9 (sinon, donne des instructions d'installation pour chaque plateforme)
  • Crée <SKILL_DIR>/.venv et installe rapidocr + onnxruntime (par défaut) ou + openvino (optionnel)
  • Si un CPU Intel est détecté et qu'OpenVINO n'est pas installé, il suggère l'installation optionnelle pour une accélération 1,8x (ne l'installe pas automatiquement)

<SKILL_DIR> désigne le répertoire où se trouve ce skill. Les modèles sont inclus avec le paquet rapidocr (PP-OCRv6 en trois niveaux det/rec), aucun téléchargement supplémentaire nécessaire.

Processus complet de la première exécution à l'utilisation : python <SKILL_DIR>/scripts/setup.py → attendez l'installation automatique (environ 1 à 3 minutes) → utilisez la commande ci-dessous pour reconnaître une image.

Utilisation

# Image unique
python <SKILL_DIR>/scripts/ocr.py <chemin_image>

# Plusieurs images
python <SKILL_DIR>/scripts/ocr.py <image1> <image2> ...

# Paramètres courants
--model tiny|small|medium      Niveau du modèle (par défaut small)
--engine onnxruntime|openvino  Moteur d'inférence (par défaut onnxruntime)
--use_cls                      Active la classification d'orientation des lignes de texte (utile pour le texte pivoté/vertical, un peu plus lent)
--save_vis                     Sauvegarde les résultats visuels dans output/

Exemples :

python <SKILL_DIR>/scripts/ocr.py /path/to/screenshot.png
python <SKILL_DIR>/scripts/ocr.py --model tiny --save_vis /path/to/invoice.jpg
python <SKILL_DIR>/scripts/ocr.py --engine openvino /path/to/photo.png

Remarque : ocr.py utilise automatiquement les dépendances de .venv (sous Windows, .venv\Scripts\python.exe), nul besoin de se soucier du chemin de l'interpréteur.

Format de sortie

Le script affiche le résultat de la reconnaissance sur stdout, au format suivant :

===== fichier.png =====
Total de N zones de texte reconnues :
[1] Première ligne de texte reconnue  (Confiance : 0.98)
[2] Deuxième ligne de texte reconnue  (Confiance : 0.95)

Après la reconnaissance, le texte brut après le [numéro] est formaté et renvoyé à l'utilisateur, avec une mention sur les confiances faibles (par exemple, une reconnaissance inférieure à 0.6 peut être peu fiable).

Choix du moteur d'inférence

MoteurTailleCaractéristiques
onnxruntime (par défaut)Petit (~52M)Cohérent sur toutes les plateformes, installation propre, recommandé universel
openvinoGrande (~+123M)Plus rapide uniquement sur CPU Intel (environ 1,8x) ; sans avantage sur AMD/Apple Silicon

Choix du niveau de modèle

NiveauTaille det/recVitessePrécisionCas d'usage
tiny1,8M / 4,5MLa plus rapideFaibleScènes simples, aperçu rapide
small (par défaut)9,9M / 21MÉquilibréeBonneScènes générales
medium62M / 77MLa plus lenteLa plus élevéeTexte complexe, flou, dense

Si l'image est nette et le texte régulier, privilégiez small ; passez à medium en cas de reconnaissance peu fiable.

Remarques

  • Plus l'image est nette et le texte régulier, meilleure est la reconnaissance ; les italiques, polices artistiques ou arrière-plans complexes réduisent la précision.
  • Pour un texte inversé ou vertical, ajoutez le paramètre --use_cls.
  • Le temps de traitement par image est d'environ 0,1 à 1 s (CPU), selon la taille de l'image, le niveau du modèle et le moteur.
  • Nécessite uniquement Python 3.9+ ; si Python n'est pas installé, setup.py donne des instructions d'installation pour chaque plateforme.

Skills associés