Skip to main content
Glama
WindoC
by WindoC

Servidor MCP EasyOCR

Un servidor del Protocolo de Contexto de Modelos (MCP) que proporciona capacidades de OCR utilizando la biblioteca EasyOCR.

Acerca de EasyOCR:
EasyOCR es una biblioteca de Reconocimiento Óptico de Caracteres (OCR) de código abierto desarrollada por JaidedAI. Admite más de 80 idiomas, ofrece aceleración por GPU y es conocida por su facilidad de uso y alta precisión. EasyOCR puede extraer texto de imágenes, documentos escaneados y fotografías, lo que la hace adecuada para una amplia gama de tareas de OCR. Para obtener más detalles, visite el repositorio de GitHub de EasyOCR.

Características

  • 3 herramientas de OCR: Procese imágenes desde base64, archivos o URLs

  • Soporte multilingüe: Soporte para más de 80 idiomas con selección dinámica

  • Salida flexible: Elija entre solo texto o resultados detallados con coordenadas y confianza

  • Rendimiento optimizado: Caché del lector para un mejor rendimiento

  • Controles de memoria: Opciones de descarga automática y descarga por solicitud

  • Salida nativa de EasyOCR: Devuelve el formato original de EasyOCR

Related MCP server: RapidOCR MCP Server

Instalación

Configuración de GPU

Elija una ruta de GPU antes de crear el entorno del proyecto.

GPU NVIDIA

Utilice el selector de instalación oficial de PyTorch para su sistema operativo, versión de Python y versión de CUDA:

Ejemplo típico de pip en Windows desde el selector de PyTorch:

python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

Después de la instalación, verifique:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

GPU AMD

El soporte de GPU AMD depende de la plataforma:

  • Linux y WSL: utilice la documentación oficial de instalación de PyTorch para ROCm / Radeon

  • Windows nativo: existe soporte para ROCm, pero AMD señala que la pila completa de ROCm aún no es compatible con Windows

Referencias oficiales:

Para este repositorio en Windows, la ruta probada es reutilizar una instalación de PyTorch habilitada para ROCm existente en:

C:\Users\antonio\AppData\Local\Programs\Python\Python312\python.exe

Ese intérprete se verificó con:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(getattr(torch.version, 'hip', None))"

Forma esperada del resultado en AMD ROCm:

  • torch.cuda.is_available() devuelve True

  • torch.version.hip no es None

Entorno del proyecto

# Windows example used in this repo:
# C:\Users\antonio\AppData\Local\Programs\Python\Python312\python.exe
#
# Keep using uv, but create the venv from the existing Python 3.12 interpreter.
# `--system-site-packages` allows the venv to reuse packages already installed
# in that interpreter, such as an existing AMD-enabled PyTorch build.

# Create the project venv from the existing interpreter
uv venv --python C:\Users\antonio\AppData\Local\Programs\Python\Python312\python.exe --system-site-packages

# Sync this project's dependencies into the venv
uv sync

# Remove uv-installed CPU PyTorch packages so the venv falls back to the
# AMD ROCm build that already exists in Python312
uv pip uninstall torch torchvision

# Run tests through uv without re-syncing the environment
uv run --no-sync test.py
uv run --no-sync test-gpu.py

Esto mantiene el proyecto en uv mientras apunta a la instalación existente de Python312. Sin --system-site-packages, un venv normal no verá los paquetes ya instalados en el intérprete base. Use uv run --no-sync después de la configuración inicial para que uv no reinstale los paquetes de PyTorch solo para CPU desde el archivo de bloqueo.

Uso

Herramientas disponibles

  1. ocr_image_base64 - Procesar imágenes codificadas en base64

  2. ocr_image_file - Procesar archivos de imagen desde el disco

  3. ocr_image_url - Procesar imágenes desde URLs

  4. unload_ocr_models - Descargar modelos de OCR en caché para liberar memoria

Parámetros

  • detail: Nivel de detalle de salida (predeterminado: 1)

    • 0: Solo texto - ['text1', 'text2', ...]

    • 1: Detalles completos - [([[x1,y1], [x2,y2], [x3,y3], [x4,y4]], 'text', confidence), ...]

  • paragraph: Habilitar detección de párrafos (predeterminado: false)

  • width_ths: Umbral de ancho de texto para fusión (predeterminado: 0.7)

  • height_ths: Umbral de altura de texto para fusión (predeterminado: 0.7)

  • unload_jobdone: Descargar modelos inmediatamente después de esta llamada de OCR (predeterminado: desde UNLOAD_JOBDONE)

Nota: La selección de idioma se configura a través de la variable de entorno EASYOCR_LANGUAGES en su configuración de MCP (consulte la sección de Configuración a continuación).

Ejemplo de salida

Nivel de detalle 1 (Detalles completos):

[
    ([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
    ([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436)
]

Nivel de detalle 0 (Solo texto):

['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']

Ejecución del servidor

# Run the MCP server through uv
uv run --no-sync easyocr-mcp.py

Ejemplo de configuración de MCP

Si está ejecutando esto como un servidor para una aplicación MCP principal, puede configurarlo en su config.json de MCP principal.

Ejemplo de Windows:

{
  "mcpServers": {
    "easyocr-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "X:\\path\\to\\your\\project\\easyocr-mcp",
        "run",
        "easyocr-mcp.py"
      ],
      "env": {
        "EASYOCR_LANGUAGES": "en,ch_tra,ja"
      }
    }
  }
}

Ejemplo de Linux/macOS:

{
  "mcpServers": {
    "easyocr-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/project/easyocr-mcp",
        "run",
        "easyocr-mcp.py"
      ],
      "env": {
        "EASYOCR_LANGUAGES": "en,ch_tra,ja"
      }
    }
  }
}

Variables de entorno

  • EASYOCR_LANGUAGES: Lista de códigos de idioma separados por comas (predeterminado: en)

    • Ejemplos: en, en,ch_sim, ja,ko,en

  • EASYOCR_UNLOAD_TIMEOUT: Segundos de inactividad antes de la descarga automática (predeterminado: 300, 0 deshabilita)

  • UNLOAD_JOBDONE: Si es true, descarga los modelos después de cada llamada de OCR de forma predeterminada (predeterminado: false)

Idiomas admitidos

EasyOCR admite más de 80 idiomas, incluidos:

  • en - Inglés

  • ch_sim - Chino simplificado

  • ch_tra - Chino tradicional

  • ja - Japonés

  • ko - Coreano

  • fr - Francés

  • de - Alemán

  • es - Español

  • Y muchos más...

Configuración de GPU/CPU

El uso de la GPU está determinado por la instalación de PyTorch visible dentro del entorno que inicia easyocr-mcp.py. Si crea el venv de uv con --system-site-packages desde Python312, el servidor puede reutilizar el PyTorch habilitado para AMD existente instalado en ese intérprete.

Comandos de verificación rápida:

uv run --no-sync python test-gpu.py
uv run --no-sync python test.py
uv run --no-sync python test_mcp_tools.py

En la configuración de AMD verificada para este repositorio, test-gpu.py informa:

  • una compilación de torch habilitada para ROCm

  • cuda_available=True

  • una hip_version no vacía

Related MCP Connectors

Related MCP Servers