多后端OCR服务器

一个支持多种OCR后端(包括本地Marker、DeepSeek API和Mistral API)的服务,适用于文档文本提取和手写识别。

  • by differentstuff
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 differentstuff/mcp-server-ocr

使用说明

OCR MCP服务器

LibreChat的多后端OCR MCP服务器,支持Marker(本地)、DeepSeek API和Mistral API。

特性

  • 多个后端:Marker(本地,免费),DeepSeek API,Mistral API
  • 自动回退:失败时无缝回退到下一个后端
  • 灵活配置:基于环境的配置
  • 成本有效:对于简单文档使用本地Marker,对于复杂手写使用API
  • 易于集成:适用于LibreChat MCP
  • 可选后端:仅启用所需的后端

快速开始

最小设置(标记+西北风)

# Install
pip install -r requirements.txt

# Configure (only Mistral key required)
echo 'MISTRAL_API_KEY=your-key-here' > .env

# Test
python -m ocr_mcp.server

LibreChat配置

mcpServers:
  ocr:
    command: "python"
    args: ["-m", "ocr_mcp.server"]
    env:
      MISTRAL_API_KEY: "your-mistral-key-here"
      ENABLED_BACKENDS: "marker,mistral"
      DEFAULT_BACKEND: "marker"

配置

环境变量

# API Keys (only required for enabled backends)
MISTRAL_API_KEY=your-mistral-key-here      # Required if mistral enabled
DEEPSEEK_API_KEY=your-deepseek-key-here    # Optional - only if deepseek enabled

# Backend Configuration
ENABLED_BACKENDS=marker,mistral            # Comma-separated list
DEFAULT_BACKEND=marker                     # Default backend to use

# Processing Settings
MAX_FILE_SIZE_MB=50                        # Maximum file size
TIMEOUT_SECONDS=120                        # Processing timeout
API_TIMEOUT=30                             # API call timeout
API_MAX_RETRIES=3                          # API retry attempts
MARKER_BATCH_SIZE=1                        # Marker batch size

后端选项

仅标记(不需要API密钥):

ENABLED_BACKENDS: "marker"
DEFAULT_BACKEND: "marker"

Marker+Mistral(推荐):

MISTRAL_API_KEY: "your-key"
ENABLED_BACKENDS: "marker,mistral"
DEFAULT_BACKEND: "marker"

所有后端(当您拥有DeepSeek密钥时):

MISTRAL_API_KEY: "your-mistral-key"
DEEPSEEK_API_KEY: "your-deepseek-key"
ENABLED_BACKENDS: "marker,deepseek,mistral"
DEFAULT_BACKEND: "marker"

用法

在LibreChat助手中

自动选择后端:

Extract text from this PDF

指定后端:

Use Mistral to extract text from this handwritten page

批量处理:

Process all uploaded PDFs with Marker first, use Mistral for pages with tables

可用工具

  • 光学字符识别:从PDF文件或图像中提取文本
    • file_path (必填):文件路径
    • backend (可选):要使用的特定后端(标记、deepseek、mistral)

后端详细信息

标记(本地)

  • 优点:免费、快速、仅限CPU-无API费用
  • 最佳:文本量大的文档,干净的PDF
  • 局限性:难以书写和复杂布局
  • 需求:不需要API密钥

Mistral API(像素)

  • 优点:OCR精度最高,布局复杂时表现出色
  • 最佳:表格、表格、混合内容、手写
  • 成本:基于API使用情况
  • 需求:有效的Mistral API密钥

DeepSeek API

  • 优点:出色的手写识别,价格实惠
  • 最佳:手写笔记、标记文件
  • 成本:基于API使用情况
  • 需求:有效的DeepSeek API密钥(可选)

稍后添加DeepSeek

当您准备启用DeepSeek时:

  1. 从以下位置获取API密钥:https://platform.deepseek.com/api_keys
  2. 添加到您的配置中:
    DEEPSEEK_API_KEY: "your-deepseek-key-here"
    ENABLED_BACKENDS: "marker,deepseek,mistral"
    
  3. 重新开始免费聊天

服务器将在可用时自动检测并使用DeepSeek。

故障排除

MCP服务器未出现

  • 检查 librechat.yaml 缩进(YAML对空格敏感)
  • 验证API密钥设置是否正确
  • 检查Docker日志: docker-compose logs -f

“后端不可用”错误

  • 确保 ENABLED_BACKENDS 匹配您可用的API密钥
  • 如果未提供API密钥,将跳过DeepSeek
  • 如果启用了Mistral,则需要有效的API密钥
  • 标记不需要额外设置

处理速度慢

  • Marker在本地运行(对于简单文档来说速度很快)
  • API调用每页需要2-5秒
  • 考虑对大型书籍进行批量处理

标记安装问题

# Install marker-pdf separately
pip install marker-pdf

# Or install all dependencies
pip install -r requirements.txt

配置验证错误

服务器将在启动时验证您的配置。常见错误:

  • “DeepSeek后端已启用,但未设置DEEPSEK_API_KEY”

    • 添加API密钥,或从ENABLED_BACKENDS中删除“深度搜索”
  • “已启用Mistral后端,但未设置Mistral_API_KEY”

    • 添加API密钥,或从ENABLED_BACKENDS中删除“mistral”

发展

项目结构

ocr-mcp/
├── ocr_mcp/
│   ├── __init__.py
│   ├── server.py          # Main MCP server
│   ├── config.py          # Configuration management
│   └── backends/
│       ├── __init__.py
│       ├── base.py        # Base backend interface
│       ├── marker.py      # Marker backend
│       ├── deepseek.py    # DeepSeek API backend
│       └── mistral.py     # Mistral API backend
├── pyproject.toml
└── README.md

从源代码运行

# Install in development mode
pip install -e .

# Run server
python -m ocr_mcp.server

许可证

MIT许可证

贡献

欢迎投稿!请随时提交问题或拉取请求。