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
pythonno encontrado, en Linux/macOS puedes usarpython3en 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>/.venve instalarapidocr+onnxruntime(por defecto) oopenvino(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.pyusará 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
| Motor | Tamaño | Características |
|---|---|---|
onnxruntime (por defecto) | Pequeño (~52M) | Consistente en todas las plataformas, instalación limpia, recomendación general |
openvino | Grande (~+123M) | Más rápido solo en CPU Intel (aprox. 1.8x); sin ventaja en AMD/Apple Silicon |
Selección del nivel del modelo
| Nivel | Tamaño del modelo det/rec | Velocidad | Precisión | Caso de uso |
|---|---|---|---|---|
tiny | 1.8M / 4.5M | Más rápida | Baja | Escenarios simples, vista previa rápida |
small (por defecto) | 9.9M / 21M | Equilibrada | Buena | Escenarios generales |
medium | 62M / 77M | Más lenta | Máxima | Texto 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