# OCR图片理解模型服务Docker部署手册(API版)

# 前言

OCR GPU版和API版区别:

  • 如需CoMi进行图片理解,依赖OCR服务 - API版或GPU版二选一
  • API版需要客户允许连接公有云OCR服务,通过公有云算力提供OCR识别
  • GPU版需客户提供本地GPU算力支持,通过部署本地OCR GPU服务进行识别
程序版本 所需显卡 依赖服务 部署方案 运行模式
OCR Docker GPU版 需要 无需连接公有云 独立服务部署 CoMi→OCR GPU服务
OCR Docker API版 无需 需连接云OCR服务 可与CoMi服务一起部署 CoMI→OCR API服务→云OCR服务

# 一、服务信息

  • 服务名称: OCR识别服务(云端API版)
  • 服务功能: 识别图片、PDF扫描件并生成文字,常用于CoMi知识库的扫描件OCR解析
  • 服务端口: 默认12841,可通过 .env 修改
  • GPU支持: 无需GPU
  • 云端后端: 百度智能云或飞桨AI Studio,二选一
  • 依赖CoMi版本: CoMi V2.0.2及以上
  • 支持产品线: V5产品线A6、A8、G6、A8-N、G6-N(V8暂不支持此OCR)

部署包约70MB,只包含 ocr-proxy 镜像,不在本地运行PaddleOCR-VL模型。服务器必须能访问所选云端平台。

百度网盘中下载ocr镜像
链接: https://pan.baidu.com/s/19jIO87ldikfdLK41DWyeug?pwd=838s
提取码: 838s

1785235804242.png

# 二、部署包与架构

API版提供两个物理部署包,功能和配置完全一致,仅Docker镜像CPU架构不同:

部署包 服务器架构
ocr_baidu_api_x86.tar.gz Linux x86_64 / amd64
ocr_baidu_api_arm.tar.gz Linux ARM64 / aarch64

x86部署包不能在ARM服务器原生运行,ARM部署包也不能在x86服务器原生运行。

# 三、环境要求

# 3.1 硬件要求

  • CPU:2核+
  • 内存:4GB+
  • 磁盘:10GB+
  • 显卡:无需GPU

# 3.2 软件和网络要求

  • Linux(推荐Ubuntu 22.04)
  • Docker Engine 24.0.7+
  • Docker Compose插件
  • 能访问所选云端API和结果下载地址

检查环境:

uname -m
docker -v
docker compose version
sudo systemctl status docker

本版本无需安装NVIDIA驱动或Container Toolkit。

# 四、选择云端服务商

通过 .env 中的 OCR_PROXY_BACKEND_PROVIDER 选择后端:

# 百度智能云
OCR_PROXY_BACKEND_PROVIDER=baidu_api

# 飞桨AI Studio
OCR_PROXY_BACKEND_PROVIDER=aistudio_api

只需填写当前所选服务商的凭证,另一组凭证可以为空。

# 4.1 百度智能云 AK/SK模式

使用百度智能云PaddleOCR API:

百度智能云PaddleOCR企业专区 (opens new window)

单组凭证:

OCR_PROXY_BACKEND_PROVIDER=baidu_api
OCR_PROXY_BAIDU_API_KEY=AK1
OCR_PROXY_BAIDU_SECRET_KEY=SK1

多组凭证轮询:

OCR_PROXY_BAIDU_API_KEY=AK1,AK2,AK3
OCR_PROXY_BAIDU_SECRET_KEY=SK1,SK2,SK3

API Key与Secret Key必须数量相同并按位置一一对应。多组凭证按真实云端请求轮询使用;缓存命中不会推进轮询。当前不支持同一次失败请求自动切换下一组凭证。

# 4.2 飞桨AI Studio Token模式

单Token:

OCR_PROXY_BACKEND_PROVIDER=aistudio_api
OCR_PROXY_AISTUDIO_API_TOKEN=TOKEN1

多Token轮询:

OCR_PROXY_AISTUDIO_API_TOKEN=TOKEN1,TOKEN2,TOKEN3

每个异步任务从提交到状态轮询固定使用同一个Token。多Token用于请求分摊,不支持同一次失败请求自动切换Token重新提交。

Token属于敏感信息。不要写入镜像、文档、聊天记录或提交到Git;部署服务器上的 .env 建议设置权限 chmod 600 .env

# 五、部署步骤

# 5.1 创建目录并解压

sudo mkdir -p /data/Seeyon/Comi/ocr/
cd /data/Seeyon/Comi/ocr/

# x86_64服务器
tar xzf ocr_baidu_api_x86.tar.gz
cd ocr_baidu_api

# ARM64服务器使用:
# tar xzf ocr_baidu_api_arm.tar.gz
# cd ocr_baidu_api_arm

目录结构:

ocr_baidu_api[_arm]/
├── docker-compose.yml
├── .env.example
├── install.sh
├── start.sh
├── images.tar.gz
└── ocr_test.png

# 5.2 创建配置

cp .env.example .env
vi .env
chmod 600 .env

先选择Provider,再填写对应凭证:

OCR_PROXY_BACKEND_PROVIDER=baidu_api
# 或 OCR_PROXY_BACKEND_PROVIDER=aistudio_api

# 5.3 常用配置

参数 默认值 说明
OCR_PROXY_PORT 12841 宿主机对外端口
OCR_PROXY_FILE_SIZE_LIMIT_MB 20 上传文件大小限制
OCR_PROXY_CACHE_ENABLED true OCR结果缓存开关
OCR_PROXY_LOG_LEVEL ERROR 日志级别
OCR_PROXY_LOG_FORMAT json 日志格式

百度配置:

参数 默认值 说明
OCR_PROXY_BAIDU_API_POLL_TIMEOUT 300 轮询总超时秒数
OCR_PROXY_BAIDU_API_POLL_INTERVAL 2.0 初始轮询间隔
OCR_PROXY_BAIDU_API_POLL_BACKOFF 1.5 退避因子
OCR_PROXY_BAIDU_API_ANALYSIS_CHART true 解析图表
OCR_PROXY_BAIDU_API_RECOGNIZE_SEAL false 识别印章
OCR_PROXY_BAIDU_API_MERGE_TABLES false 合并跨页表格
OCR_PROXY_BAIDU_API_RELEVEL_TITLES false 标题分级

AI Studio配置:

参数 默认值 说明
OCR_PROXY_AISTUDIO_API_JOB_URL 官方任务地址 OCR任务接口
OCR_PROXY_AISTUDIO_API_MODEL PaddleOCR-VL-1.6 模型名称
OCR_PROXY_AISTUDIO_API_POLL_TIMEOUT 300 轮询总超时秒数
OCR_PROXY_AISTUDIO_API_POLL_INTERVAL 5.0 初始轮询间隔
OCR_PROXY_AISTUDIO_API_POLL_BACKOFF 1.2 退避因子
OCR_PROXY_AISTUDIO_API_POLL_MAX_INTERVAL 10.0 最大轮询间隔
OCR_PROXY_AISTUDIO_API_USE_DOC_ORIENTATION_CLASSIFY false 文档方向分类
OCR_PROXY_AISTUDIO_API_USE_DOC_UNWARPING false 文档图像矫正
OCR_PROXY_AISTUDIO_API_USE_CHART_RECOGNITION false 图表识别

# 5.4 用户请求限额

用户限额位于ocr-proxy层,与所选Provider无关:

OCR_PROXY_USER_ID_HEADER=CUSTOMER_ID
OCR_PROXY_USER_QUOTA_LIMIT=1000
OCR_PROXY_USER_QUOTA_PERIOD=daily

周期支持:

  • daily:每天重置
  • monthly:每月重置
  • total:永久累计

未配置用户请求头或限额为0时不启用。当前规则按POST请求计数:缓存命中或后端失败的请求也会计数;请求未携带配置的用户标识头时直接放行。

# 5.5 首次安装

./install.sh
# 无Docker权限时:sudo bash install.sh

脚本将检查:

  1. .env中的Provider、凭证数量和端口
  2. Docker与Compose
  3. 镜像归档完整性
  4. 端口占用和磁盘空间
  5. 加载镜像并创建 logs/data/

安装脚本不会执行 .env 中的Shell内容,也不会输出凭证值。

# 5.6 启动

./start.sh
# 无Docker权限时:sudo bash start.sh

启动脚本会显示当前Provider、凭证数量、实际端口和健康检查地址,但不会显示凭证内容。

# 六、验证部署

假设 .env 中配置:

OCR_PROXY_PORT=12841

查看状态和日志:

docker compose ps
docker compose logs -f

进程存活检查,不调用云端、不消耗额度:

curl http://127.0.0.1:12841/ocr/internal/health/live

预期:

{"status":"ok"}

业务健康检查,会绕过缓存并真实调用所选云端服务:

curl http://127.0.0.1:12841/ocr/pic/health

业务健康检查可能消耗云端调用次数或费用,不建议高频监控。

# 七、上游系统对接

CoMi或其他上游系统配置:

http://<OCR服务器IP>:<OCR_PROXY_PORT>/ocr/pic/get_all_text

# 智能部署工具场景

V5产品线修改“OA OCR服务地址”,重新发布应用后生效。

# Docker部署CoMi场景

修改 comi-install/config/ai-manager/application.yaml

cd /data/Seeyon/Comi/comi-install
vim config/ai-manager/application.yaml

# 设置 oaOcrUrl
# http://OCR服务地址:OCR端口/ocr/pic/get_all_text

docker restart comi-builder

# 八、常用运维操作

# 停止
docker compose down

# 重启
docker compose restart

# 查看日志
docker compose logs -f

# 修改Provider、凭证或端口后重新启动
docker compose down
./start.sh

切换Provider后缓存使用独立命名空间,不会复用另一服务商的OCR结果。

编撰人:het