Umi-OCR Docker 部署与 API 接口调用指南

Umi-OCR 是一款免费、开源、可批量的离线 OCR 软件,支持截屏识别、批量导入图片、PDF 文档识别、排除水印/页眉页脚、扫描/生成二维码等功能。其 Docker 部署方案使得在 Linux 服务器或桌面环境下运行和集成变得非常便捷。本文带你完成从环境检查到 API 对接的全流程。

一、Umi-OCR 简介

Umi-OCR 的核心优势在于:

  • 完全离线:识别过程不依赖网络,数据不出本地,隐私安全有保障;
  • 免费开源:基于 PaddleOCR 引擎,支持中英文及多语言识别;
  • 批量高效:支持文件夹批量识别、忽略区域(排除水印)、图片对比、表格识别等;
  • 接口友好:提供 HTTP API,可轻松集成到自己的业务系统中。

二、部署前提

在开始部署前,请确保你的主机 CPU 支持 AVX 指令集,这是运行 Umi-OCR Linux 版本的必要条件:

lscpu | grep avx

如果命令输出中包含 avxavx2,则可以继续部署。若输出为空,说明 CPU 不支持 AVX,需要更换宿主机或使用支持 AVX 的 CPU 型号。

三、Docker 部署步骤

1. 拉取镜像

docker pull umi-ocr/umi-ocr:latest

2. 启动容器

docker run -d \
  --name umi-ocr \
  -p 9000:9000 \
  -v $(pwd)/data:/root/OCRmyPDF \
  --restart=always \
  umi-ocr/umi-ocr:latest
  • -p 9000:9000:将容器的 9000 端口映射到宿主机,用于访问 Web 界面与 API;
  • -v $(pwd)/data:/root/OCRmyPDF:持久化输出文件目录;
  • --restart=always:容器异常退出后自动重启。

3. 验证服务

curl http://localhost:9000/health
# 输出 {"status":"ok"} 即表示服务正常

浏览器访问 http://localhost:9000 可以看到 Web 操作界面,支持直接上传图片进行识别。

四、API 接口调用

Umi-OCR 提供了基于 HTTP 的 JSON API,方便其他系统集成。以下以最常见的单张图片识别为例:

curl -X POST http://localhost:9000/api/ocr \
  -H "Content-Type: application/json" \
  -d '{
    "base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB...",
    "options": {
      "lang": "ch",
      "use_doc_orientation_classify": false,
      "use_doc_unwarping": false
    }
  }'

响应结果示例:

{
  "code": 200,
  "data": {
    "texts": [
      {
        "text": "记录生活点滴,分享技术心得",
        "box": [[12, 34], [412, 34], [412, 78], [12, 78]]
      }
    ],
    "full_text": "记录生活点滴,分享技术心得"
  },
  "msg": "success"
}

常用参数说明

参数类型说明
base64string图片的 Base64 编码(不含 data 前缀)
langstring识别语言:ch / en / japan / korean 等
use_doc_unwarpingbool是否启用文档矫正(拍摄倾斜场景)
text_typestring普通文本 / 表格 / 数学公式等

五、批量识别与 PDF 处理

Umi-OCR 还支持批量识别:将多张图片的 Base64 放入数组,一次请求即可全部处理:

curl -X POST http://localhost:9000/api/batch-ocr \
  -H "Content-Type: application/json" \
  -d '{
    "images": ["base64_1", "base64_2", "base64_3"],
    "options": {"lang": "ch"}
  }'

对于 PDF 文档,可以直接将 PDF 文件传入,识别引擎会自动逐页处理并返回每页的文本结果,非常适合发票、合同、扫描件的批量归档场景。

六、常见问题

问题排查建议
容器启动即退出检查 CPU 是否支持 AVX,查看日志 docker logs umi-ocr
识别速度慢确认是否使用了 GPU 镜像;CPU 模式下可调低图片分辨率
端口冲突更换宿主端口映射,如 -p 9100:9000
中文识别不准确保 lang 设置为 ch,并升级模型文件

七、总结

Umi-OCR 的 Docker 部署方式让 OCR 能力变得即插即用:一条 docker run 命令即可获得一个完全离线的识别服务,再通过 HTTP API 就能接入任意业务系统。对于有文档数字化、票据识别、内容审核需求的团队来说,是非常实用的自建方案。