# 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

# 二、部署包与架构
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
脚本将检查:
.env中的Provider、凭证数量和端口- Docker与Compose
- 镜像归档完整性
- 端口占用和磁盘空间
- 加载镜像并创建
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结果。
快速跳转