iOS-OCR-Server 部署教程:将你的 iPhone 变为本地 OCR 服务器

本教程将指导你部署和使用 iOS-OCR-Server,一个运行在 iPhone 上的、基于 Apple Vision 框架的本地 OCR 服务。它完全离线处理,无需云端依赖,可保障数据隐私。


📱 部署步骤

1. 准备工作

  • 一台运行 iOS 26 或更高版本的 iPhone(注意:文档段落检测功能需要 iOS 26+,基础文字识别功能可能支持更低版本,但建议使用最新系统)。
  • 一个有效的 Apple ID(用于从 App Store 下载应用)。
  • iPhone 和需要使用 OCR 服务的设备(如电脑)连接在同一个 Wi-Fi 网络下。

2. 安装 App

在 iPhone 上打开 App Store,搜索 “iOS OCR Server” 或直接通过项目提供的 App Store 链接 下载并安装。

3. 启动服务器

  1. 在 iPhone 上打开已安装的 OCR Server App。
  2. 应用启动后,OCR 服务器将自动开始运行。你会在应用界面看到一个本地 IP 地址和端口号(例如 http://192.168.1.5:8000)。

⚠️ 重要提示(保持服务运行)
为确保 OCR 服务持续可用,请执行以下操作:

  • 在 iPhone 设置 > 辅助功能 > 引导式访问 中,开启“引导式访问”。
  • 回到 OCR Server App,连按三次侧边按钮(或主屏幕按钮)启用引导式访问。
  • 保持 App 在前台运行,并阻止屏幕自动锁定。这是防止 iOS 系统暂停后台应用网络服务的关键步骤。

4. 验证服务

在你的电脑或同一网络的其他设备上,打开浏览器,访问 App 显示的 IP 地址(例如 http://192.168.1.5:8000)。你将看到一个 Web 测试页面,可以上传图片进行 OCR 测试。


🔌 API 使用与集成

OCR Server 提供了基于 HTTP 的 API,方便集成到你的应用或脚本中。

基础 OCR API (/upload)

使用 POST 请求将图片上传到 /upload 端点。

  • 请求
    • URL: http://<你的iPhone IP>:8000/upload
    • Method: POST
    • Header: Accept: application/json
    • Body (form-data): 键名为 file,值为要识别的图片文件。
  • 响应:返回一个 JSON 对象,包含识别出的文字、每个文本块的位置坐标等信息。

cURL 示例

1
2
3
curl -H "Accept: application/json" \
-X POST http://<你的iPhone IP>:8000/upload \
-F "file=@你的图片路径.png"

Python 示例

1
2
3
4
5
6
7
8
9
10
11
12
import requests

url = "http://<你的iPhone IP>:8000/upload" # 替换为实际IP
file_path = "你的图片路径.png"

with open(file_path, "rb") as f:
files = {"file": f}
headers = {"Accept": "application/json"}
response = requests.post(url, files=files, headers=headers)

print("状态码:", response.status_code)
print("响应:", response.text)

返回的 JSON 结构示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"success": true,
"message": "File uploaded successfully",
"ocr_result": "识别的文字内容",
"image_width": 1247,
"image_height": 648,
"ocr_boxes": [
{
"text": "识别的单词或行",
"x": 429.65, // 边界框左上角 x 坐标
"y": 268.0, // 边界框左上角 y 坐标
"w": 201.84, // 边界框宽度
"h": 72.0, // 边界框高度
"rect": { // 四个角坐标,可处理旋转文本
"topLeft_x": 429.65,
"topLeft_y": 268.0,
"topRight_x": 631.49,
"topRight_y": 268.0,
"bottomRight_x": 631.49,
"bottomRight_y": 340.0,
"bottomLeft_x": 429.65,
"bottomLeft_y": 340.0
}
}
// ... 更多检测到的文本块
]
}

文档段落检测 API (/docOCR) - 需要 iOS 26+

该接口针对文档布局进行优化,能识别段落结构。

  • 请求:与 /upload 相同,但端点为 /docOCR
  • 响应:返回一个 JSON 对象,主要包含整理后的文本。

cURL 示例

1
2
3
curl -H "Accept: application/json" \
-X POST http://<你的iPhone IP>:8000/docOCR \
-F "file=@你的文档图片.png"

可视化结果(Python 示例)

项目 README 还提供了完整的 Python 脚本,用于在图片上绘制检测到的文字边界框并进行预览。你可以在项目主页找到完整代码,其核心流程为:

  1. 调用 /upload API 获取 JSON 结果。
  2. 使用 PIL (Pillow) 或 OpenCV 加载原图。
  3. 根据 ocr_boxes 中的坐标数据,在图片上绘制红色矩形和文字标签。
  4. 显示或保存带标注的图片。

🔧 故障排除与优化

服务无法访问

  • 检查网络:确保 iPhone 和客户端设备连接到同一个 Wi-Fi 网络
  • 检查 IP 地址:App 显示的 IP 是否正确?如果网络环境变动(如切换 Wi-Fi),IP 可能会变化,需要重新确认。
  • 检查防火墙:确保客户端设备的防火墙没有阻止对 8000 端口的访问。
  • App 状态:确保 OCR Server App 处于前台活跃状态,并且屏幕未锁定。建议开启“引导式访问”。

OCR 质量不佳

  • 图片质量:确保上传的图片清晰,文字部分光线充足,避免模糊和过度阴影。
  • 文字方向:Vision 框架能处理一定角度的旋转,但正向拍摄通常效果最好。
  • 语言支持:框架支持多语言自动检测,对于混合语言图片,效果可能取决于训练数据。

性能优化

  • 网络延迟:使用 5GHz Wi-Fi 而非 2.4GHz,可以获得更高的传输速率,减少大图片上传时间。
  • 处理能力:服务器性能完全取决于 iPhone 的芯片(A 系列芯片)。较新的 iPhone 处理速度更快。
  • 批量处理:如果需要处理大量图片,可以循环调用 API,但注意给 iPhone 一些处理间隔以避免过热。

安全提醒

  • 此服务器默认在本地网络(LAN)开放,没有身份验证机制
  • 不要将手机端口(8000)通过路由器端口转发暴露到公网,否则你的 OCR 服务可能被他人滥用。

通过以上步骤,你应该能在几分钟内将你的 iPhone 变成一个强大、私密的本地 OCR 服务器。你可以将其集成到自己的自动化工作流、笔记应用或其他需要文本提取的场景中。