Communitygithub.com

Offline OCR — extracción offline de texto en imágenes

Extrae texto de imágenes de forma local usando RapidOCR + PP-OCRv6, sin conexión a internet, sin GPU y sin registro de API.

¿Qué es Offline OCR — extracción offline de texto en imágenes?

Este skill permite que agentes de IA como Claude Code, Cursor o Codex extraigan texto de imágenes (capturas de pantalla, fotos, facturas, documentos escaneados, etc.) completamente en modo offline. Está basado en RapidOCR y PP-OCRv6, y soporta chino e inglés. Es especialmente útil para modelos sin capacidades multimodales (por ejemplo, DeepSeek-V4): cuando el modelo no puede ‘ver’ imágenes, este skill extrae primero el texto y luego se lo pasa al modelo para su procesamiento y respuesta. Ofrece tres tamaños de modelo (tiny, small, medium) y dos motores de inferencia (ONNX Runtime y OpenVINO), con opciones de aceleración para CPU Intel. La configuración inicial requiere una única ejecución del script de instalación, que crea un entorno virtual Python e instala las dependencias necesarias.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Offline OCR — 离线图像文字提取

Basado en RapidOCR + PP-OCRv6, extracción de texto local desde imágenes, completamente offline, compatible con chino e inglés. Sin necesidad de internet, registro de API ni GPU.

Cuándo usarlo

  • El usuario proporciona un archivo de imagen (captura de pantalla, foto, recibo, escaneo, documento, código captcha, etc.) y solicita leer el texto de la imagen.
  • Necesita extraer contenido textual de imágenes, como copiar información de facturas, reconocer código/texto en capturas, extraer texto de tablas.
  • Cuando el modelo actual no tiene capacidades multimodales, actúa como alternativa para "ver y leer imágenes".
  • Se puede usar junto con modelos grandes sin capacidades multimodales como DeepSeek-V4: cuando la interfaz de conversación del modelo "no puede ver imágenes", este skill extrae primero el texto de la imagen y luego se lo pasa al modelo para que lo entienda, responda y procese.

Instalación inicial (solo una vez)

El script necesita un entorno virtual Python independiente. La primera vez que uses este skill, verifica si el entorno está listo:

# Si <SKILL_DIR>/.venv no existe o no se puede importar rapidocr, ejecuta:
python <SKILL_DIR>/scripts/setup.py

# Los usuarios con CPU Intel que quieran mayor rendimiento (aproximadamente 1.8x), pueden instalar OpenVINO adicional:
python <SKILL_DIR>/scripts/setup.py --with-openvino

El comando es multiplataforma (funciona en Windows/macOS/Linux, no necesita bash). Si aparece un error de python no encontrado, en Linux/macOS puedes usar python3 en su lugar.

setup.py es idempotente, se puede ejecutar varias veces; si ya está instalado, se salta. Este script:

  • Verifica que la versión de Python sea >= 3.9 (si no, da instrucciones de instalación para cada plataforma)
  • Crea <SKILL_DIR>/.venv e instala rapidocr + onnxruntime (por defecto) o openvino (opcional)
  • Si detecta CPU Intel y OpenVINO no está instalado, sugiere la opción de aceleración 1.8x (no lo instala automáticamente)

<SKILL_DIR> es el directorio donde se encuentra este skill. El modelo viene incluido con el paquete rapidocr (PP-OCRv6 con tres niveles det/rec), no necesita descarga adicional.

Flujo completo desde la primera ejecución hasta estar listo: python <SKILL_DIR>/scripts/setup.py → esperar la instalación automática (aproximadamente 1-3 minutos) → luego puedes usar el comando de abajo para reconocer imágenes.

Cómo usarlo

# Una sola imagen
python <SKILL_DIR>/scripts/ocr.py <ruta de la imagen>

# Múltiples imágenes
python <SKILL_DIR>/scripts/ocr.py <imagen1> <imagen2> ...

# Parámetros comunes
--model tiny|small|medium      Nivel del modelo (por defecto small)
--engine onnxruntime|openvino  Motor de inferencia (por defecto onnxruntime)
--use_cls                      Activar clasificación de orientación de líneas de texto (útil para texto rotado o vertical, un poco más lento)
--save_vis                     Guardar resultados visuales en output/

Ejemplos:

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

Nota: ocr.py usará automáticamente las dependencias del entorno virtual .venv (en Windows, .venv\Scripts\python.exe), no te preocupes por la ruta del intérprete.

Formato de salida

El script imprime en stdout los resultados del reconocimiento, con el siguiente formato:

===== nombre_archivo.png =====
Se reconocieron N cuadros de texto:
[1] Primera línea de texto reconocida  (confianza: 0.98)
[2] Segunda línea de texto reconocida  (confianza: 0.95)

Después del reconocimiento, se organiza el texto puro después de [número] y se devuelve al usuario, junto con una advertencia si la confianza es baja (por ejemplo, reconocimiento con <0.6 puede no ser preciso).

Selección del motor de inferencia

MotorTamañoCaracterísticas
onnxruntime (por defecto)Pequeño (~52M)Consistente en todas las plataformas, instalación limpia, recomendación general
openvinoGrande (~+123M)Más rápido solo en CPU Intel (aprox. 1.8x); sin ventaja en AMD/Apple Silicon

Selección del nivel del modelo

NivelTamaño del modelo det/recVelocidadPrecisiónCaso de uso
tiny1.8M / 4.5MMás rápidaBajaEscenarios simples, vista previa rápida
small (por defecto)9.9M / 21MEquilibradaBuenaEscenarios generales
medium62M / 77MMás lentaMáximaTexto complejo, borroso, denso

Cuando la imagen es nítida y el texto es regular, usa small; si el reconocimiento no es preciso, actualiza a medium.

Notas importantes

  • Cuanto más nítida sea la imagen y más regular el texto, mejor será el reconocimiento; texto en cursiva, artístico o fondos complejos reducirán la precisión
  • Para texto con orientación invertida o vertical, puedes usar el parámetro --use_cls
  • El tiempo por imagen es aproximadamente de 0.1 a 1 segundo (CPU), dependiendo del tamaño de la imagen, el nivel del modelo y el motor
  • Solo necesita Python 3.9+; si no hay entorno Python, setup.py dará instrucciones de instalación para cada plataforma

Skills relacionados