Skip to main content
Glama

macOS 原生 OCR MCP 服务

利用 macOS 内置的强大 Vision 框架,为 Claude 及其他 MCP 客户端提供离线、高精度的 OCR 识别能力。

目录

功能特性

  • 多语言支持:原生支持中文(简/繁)、英文及中英混排,精准识别率高。

  • PDF 全面支持:内置 PDF 渲染引擎,可自动处理多页 PDF 文档。

  • 智能区块聚合 (Block Aggregation)

    • 针对复杂表格和段落进行优化,不再简单按行切分。

    • 自动识别并保留单元格内容的完整性,避免跨列内容混杂。

    • 支持智能纠错,自动合并被排版截断的中文长句。

  • LLM 友好输出:提供结构化的 JSON 数据(包含语义块 Block、坐标 BBox、原始行 Lines),完美适配 LLM 文档重建场景。

  • 隐私安全:所有数据均在 macOS 本地处理,无需上传云端,无需 API Key。

  • 零配置:通过 uv 安装运行,轻量且快速。

环境要求

  • macOS 10.15+ (Catalina) 或更高版本。

  • Python 3.10+。

  • 已安装 uv (brew install uv)。

安装与使用

你可以直接通过 uvx 使用此 MCP 服务,无需克隆代码仓库。

Claude Desktop 配置

请将以下内容添加到你的 ~/Library/Application Support/Claude/claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "macos-ocr": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/wenjiazhu/macos-ocr-mcp.git",
        "macos-ocr"
      ]
    }
  }
}

注意:请确保使用正确的 Git 仓库地址。

如果需要强制更新到最新版本,可以在 args 列表中添加 "--refresh" 参数。

本地开发

  1. 克隆仓库:

    git clone https://github.com/wenjiazhu/macos-ocr-mcp.git
    cd macos-ocr-mcp
  2. 使用 uv 运行:

    # 运行测试脚本 (输出纯文本)
    uv run src/ocr.py path/to/image.png
    
    # 运行 MCP 服务器
    uv run src/server.py

MCP 工具文档

工具列表

本项目提供两个 MCP 工具:

  1. read_image_text - 提取图片或 PDF 中的纯文本

  2. read_image_layout - 提取结构化的版面信息

工具选择指南

使用 read_image_text 的场景

  • ✅ 只需要获取纯文本内容,不需要排版信息

  • ✅ 快速提取文档中的可读文本

  • ✅ 进行文本搜索、内容分析或摘要

  • ✅ 将 OCR 结果用于简单的字符串处理

优势

  • 输出简洁,只返回纯文本字符串

  • 已自动进行段落合并和表格优化

  • 适合简单的文本处理需求

使用 read_image_layout 的场景

  • ✅ 需要保留或还原文档的原始排版

  • ✅ 处理包含表格、多栏布局的复杂文档

  • ✅ 需要 LLM 重建文档结构

  • ✅ 需要定位文本在图片中的位置

  • ✅ 需要将 OCR 结果转换为结构化格式(CSV、Markdown 等)

优势

  • 返回结构化 JSON 数据,包含文本块、坐标和语义信息

  • 保留完整的版面布局信息

  • 支持精确的文档重建和格式转换

read_image_text

识别并提取图片或 PDF 中的纯文本。会自动进行段落合并和表格优化。

  • 输入: image_path (图片或 PDF 的绝对路径)

  • 输出: 文本字符串

read_image_layout

提取结构化的版面信息,专为 LLM 重建文档设计。

  • 输入: image_path (图片或 PDF 的绝对路径)

  • 输出: JSON 字符串,包含多个 "Block" 对象。每个 Block 包含:

    • text: 合并纠错后的语义文本。

    • bbox: 文本块的归一化坐标 (x, y, w, h),用于还原排版。

    • lines: 构成该块的原始行信息(可选,用于精细分析)。

数据结构说明

read_image_layout 返回的 JSON 结构如下:

[
  {
    "text": "合并纠错后的语义文本",
    "bbox": {
      "x": 0.0,  // 归一化横坐标 [0-1]
      "y": 0.0,  // 归一化纵坐标 [0-1]
      "w": 0.5,  // 归一化宽度 [0-1]
      "h": 0.2   // 归一化高度 [0-1]
    },
    "lines": [  // 构成该块的原始行信息(可选)
      {
        "text": "原始行文本",
        "bbox": {...}
      }
    ]
  }
]

bbox 坐标说明: 所有坐标均为归一化值(0-1),表示相对于图像尺寸的位置,可用于按位置重建文档布局。


Claude Skill 使用指南

本项目包含 macos-ocr-helper Claude Skill,提供更丰富的使用场景和最佳实践指导。

快速开始

直接在 Claude 对话中使用,Skill 会自动触发并提供建议。典型使用方式:

  1. 快速提取文本

    请帮我把这张图片中的文字提取出来
  2. 转换文档格式

    把这个 PDF 转换成 Markdown 格式
  3. 处理表格

    将这个表格截图转换成 CSV 格式

核心使用场景

场景 1:快速提取纯文本

适用场景: 只需要获取可复制的文本内容

提示词模板:

请调用 macos-ocr 的 read_image_text 读取以下文件并输出识别结果:
image_path=/绝对路径/xxx.png

要求:
1. 只输出 OCR 文本本身,不要添加解释、标题或多余前后缀
2. 尽量保留原有换行与段落;不要翻译,不要总结

返回格式: 纯文本字符串


场景 2:图片/PDF → Markdown

适用场景: 需要将扫描文档转换为 Markdown 格式,尽量还原原有排版

提示词模板:

请调用 macos-ocr 的 read_image_layout 读取以下文件:
image_path=/绝对路径/xxx.pdf

然后将返回的 blocks 按 bbox 近似还原为 Markdown:
- 标题/小标题、段落、列表分别用合适的 Markdown 语法表示
- 识别出表格时输出为 Markdown 表格(必要时补齐空单元格)
- 多页内容用清晰的分页分隔(例如:--- Page 1 ---)

只输出最终 Markdown,不要输出中间 JSON。

返回格式: Markdown 文档


场景 3:扫描表格 → CSV

适用场景: 将包含表格的图片转换为 CSV 格式,方便导入 Excel、Numbers 等表格软件

提示词模板:

请调用 macos-ocr 的 read_image_layout 读取以下文件:
image_path=/绝对路径/table.png

目标:把图片中的"表格"转换成 CSV。
要求:
1. 只输出 CSV(逗号分隔),不要额外解释
2. 保留表头;不要丢列或丢行;空单元格也要保留为空
3. 如果存在合并单元格:优先用空值或重复值保证列数一致,并在 CSV 末尾另起一行用 NOTE: 简要说明处理方式

返回格式: CSV 格式文本


场景 4:发票/收据 → 结构化 JSON

适用场景: 提取发票、收据等票据中的关键信息,转换为结构化 JSON

提示词模板:

请调用 macos-ocr 的 read_image_text 读取以下文件:
image_path=/绝对路径/receipt.jpg

请将识别内容抽取为严格 JSON(只输出 JSON):
{
  "merchant": string|null,
  "date": "YYYY-MM-DD"|null,
  "currency": string|null,
  "total": number|null,
  "tax": number|null,
  "items": [{"name": string, "qty": number|null, "unit_price": number|null, "amount": number|null}],
  "payment_method": string|null,
  "invoice_no": string|null
}

规则:金额统一用数字;无法确认就填 null;不要编造。

返回格式: JSON 对象


场景 5:代码/终端截图 → 可复制代码块

适用场景: 从代码或终端截图提取可执行代码,自动纠正常见 OCR 错误

提示词模板:

请调用 macos-ocr 的 read_image_text 读取以下文件:
image_path=/绝对路径/code.png

把结果整理成一个 Markdown 代码块输出:
1. 去掉行号、提示符(如 $、>>>)等无关字符
2. 修正常见 OCR 错误(如 0/O、1/l/I、:;、引号、括号配对)
3. 保持原有缩进

只输出代码块(例如 ```python ... ```),不要额外解释。

返回格式: Markdown 代码块


场景 6:论文/合同扫描件 → 结构化提纲

适用场景: 分析长篇文档的结构,提取提纲和关键信息

提示词模板:

请调用 macos-ocr 的 read_image_text 读取以下文件:
image_path=/绝对路径/doc.png

基于 OCR 文本输出:
1) 结构化提纲(H1/H2/H3)
2) "关键点"列表(最多 10 条)
3) "需要人工确认的疑点/缺失"列表(例如数字不清、条款编号断裂)

要求::不要杜撰;引用原文时用原句;输出用中文。

返回格式: 结构化提纲文本


最佳实践

提示词编写建议

1. 明确指定工具

不推荐:

帮我读取这张图片

推荐:

请调用 macos-ocr 的 read_image_text 读取以下文件:
image_path=/绝对路径/xxx.png

2. 明确文件路径

不推荐:

image_path=image.png

推荐:

image_path=/Users/username/Documents/image.png

3. 清晰说明输出格式

不推荐:

读取图片并给我结果

推荐:

只输出 OCR 文本本身,不要添加解释、标题或多余前后缀

处理复杂文档的建议

多页 PDF 处理

macOS OCR 原生支持多页 PDF。当处理多页文档时:

  • 使用 read_image_layout 可以按 bbox 坐标分页处理

  • 在提示词中明确要求分页分隔(例如:--- Page N ---

  • 如果需要逐页分析,可以在提示词中指定页面范围

表格识别优化

对于包含表格的文档:

  1. 使用 read_image_layout 获取结构化数据

  2. 利用 bbox 坐标信息识别表格边界

  3. 在提示词中明确说明表格处理规则

  4. 处理合并单元格时,要求输出处理方式说明

中英文混排文档

macOS OCR 原生支持中英文混排。处理建议:

  1. 明确输出语言要求(中文/英文/混合)

  2. 保留原始文档的语言排版

  3. 避免自动翻译或语言转换

质量优化策略

常见 OCR 错误类型

  1. 字符混淆:

    • 0O 混淆

    • 1lI 混淆

    • :; 混淆

    • 引号括号配对错误

  2. 标点符号错误:

    • 句号误识别为逗号

    • 引号方向错误

  3. 行分割错误:

    • 段落被错误分割

    • 单词被截断

针对不同文档类型的优化

对于代码类文档

把结果整理成一个 Markdown 代码块输出:
1. 去掉行号、提示符(如 $、>>>)等无关字符
2. 修正常见 OCR 错误(如 0/O、1/l/I、:;、引号、括号配对)
3. 保持原有缩进

对于正式文档

基于 OCR 文本输出:
1) 结构化提纲(H1/H2/H3)
2) "关键点"列表(最多 10 条)
3) "需要人工确认的疑点/缺失"列表(例如数字不清、条款编号断裂)

要求:不要杜撰;引用原文时用原句;输出用中文。

性能优化建议

大文件处理

对于包含大量图片或多页 PDF 的文档:

  1. 如果可能,先预处理文件(压缩、裁剪)

  2. 考虑分批处理,避免一次性处理过多内容

  3. 在提示词中明确指定处理范围

批量处理

如需批量处理多个文件:

  1. 在提示词中明确列出所有文件路径

  2. 要求清晰分隔每个文件的结果

  3. 可以要求输出处理进度或摘要


常见问题

问题:识别结果质量不佳

排查步骤

  1. 检查图片分辨率是否足够(建议 300 DPI 以上)

  2. 检查图片是否清晰、无模糊

  3. 尝试提高图片对比度

  4. 检查图片倾斜角度,可能需要旋转矫正

问题:多页 PDF 处理失败

排查步骤

  1. 确认 PDF 文件完整性

  2. 检查 PDF 是否有密码保护

  3. 尝试使用 read_image_layout 获取更多信息

问题:坐标信息不准确

排查步骤

  1. 确认图片尺寸和方向

  2. 检查归一化坐标是否在 [0, 1] 范围内

  3. 使用 read_image_layout 获取完整结构信息

隐私和安全

数据安全

  • ✅ 所有数据在 macOS 本地处理

  • ✅ 不需要上传到云端

  • ✅ 不需要 API Key

  • ✅ 完全离线可用

敏感文档处理: 处理敏感文档(如合同、发票、个人证件)时:

  1. 使用绝对路径确保文档位置明确

  2. 避免在提示词中暴露敏感信息

  3. 处理完成后可以删除本地临时副本


技术文档

本项目包含完整的技术文档,适合开发者深入理解项目架构和 API。


技术支持

  • GitHub Issues: https://github.com/wenjiazhu/macos-ocr-mcp/issues

  • 文档更新时间: 2026-01-18

License

MIT License

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to authenticate as an admin.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wenjiazhu/macos-ocr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server