5分钟搭建离线OCR服务:Umi-OCR Docker容器化部署指南
2026-02-04 04:53:28作者:宣海椒Queenly
Umi-OCR
OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
你是否还在为在线OCR服务的隐私泄露风险担忧?是否因本地部署繁琐而放弃高效文本识别工具?本文将带你用Docker一键部署Umi-OCR容器服务,5分钟拥有私有化的离线OCR能力,支持截图识别、批量处理、二维码解析全功能,彻底摆脱网络依赖与隐私顾虑。
为什么选择容器化部署Umi-OCR?
Umi-OCR作为一款免费开源的离线OCR工具,已在Windows平台积累大量用户。通过Docker容器化部署,我们可将其能力扩展到Linux服务器环境,实现:
- 跨平台运行:突破Windows系统限制,在Linux服务器稳定运行
- 资源隔离:独立容器环境避免依赖冲突,保护主机系统纯净
- 快速迁移:容器镜像一键复制,轻松实现多环境一致部署
- 服务化调用:通过HTTP接口提供OCR服务,支持多应用集成
部署前准备
环境要求
- Docker Engine 20.10+
- Docker Compose v2+
- 至少2GB可用内存(OCR引擎运行需求)
项目资源获取
git clone --single-branch --branch main https://gitcode.com/GitHub_Trending/um/Umi-OCR.git
cd Umi-OCR
项目核心文件说明:
- 官方文档:README.md
- 更新日志:CHANGE_LOG.md
- 接口文档:docs/http/api_ocr.md
- 二维码功能:docs/http/api_qrcode.md
容器化部署步骤
1. 创建Dockerfile
在项目根目录创建Dockerfile:
FROM python:3.9-slim
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libgl1-mesa-glx \
libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
# 复制项目文件
COPY . .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露API端口
EXPOSE 1224
# 启动命令
CMD ["python", "main.py", "--server"]
2. 编写docker-compose.yml
version: '3.8'
services:
umi-ocr:
build: .
container_name: umi-ocr-service
restart: always
ports:
- "1224:1224" # HTTP API端口
volumes:
- ./UmiOCR-data:/app/UmiOCR-data # 数据持久化
environment:
- PYTHONUNBUFFERED=1
- OCR_ENGINE=paddle # 指定OCR引擎
mem_limit: 2g # 内存限制
cpus: 1 # CPU核心限制
3. 启动服务
docker-compose up -d --build
服务启动后,可通过以下命令检查运行状态:
docker-compose logs -f # 查看实时日志
docker ps | grep umi-ocr # 检查容器状态
服务验证与接口调用
服务状态检查
访问Umi-OCR参数查询接口验证服务可用性:
curl http://localhost:1224/api/ocr/get_options
成功响应将返回OCR引擎参数配置,类似:
{
"ocr.language": {
"title": "语言/模型库",
"optionsList": [
["models/config_chinese.txt","简体中文"],
["models/config_en.txt","English"]
],
"default": "models/config_chinese.txt"
},
"ocr.cls": {
"title": "纠正文本方向",
"default": false,
"type": "boolean"
}
}
核心功能演示
1. 图片OCR识别(Base64方式)
使用Python调用OCR接口示例:
import requests
import base64
# 读取图片并转换为base64
with open("test.png", "rb") as f:
img_base64 = base64.b64encode(f.read()).decode()
# 构造请求参数
data = {
"base64": img_base64,
"options": {
"ocr.language": "models/config_chinese.txt",
"data.format": "text",
"tbpu.parser": "multi_para" # 多栏自然段排版
}
}
# 发送请求
response = requests.post(
"http://localhost:1224/api/ocr",
json=data,
headers={"Content-Type": "application/json"}
)
# 处理结果
result = response.json()
if result["code"] == 100:
print("识别结果:\n", result["data"])
else:
print("识别失败:", result["data"])
2. 二维码识别
调用二维码识别接口:
curl -X POST http://localhost:1224/api/qrcode \
-H "Content-Type: application/json" \
-d '{"base64": "二维码图片base64字符串"}'
成功响应示例:
{
"code": 100,
"data": [
{
"text": "https://example.com",
"format": "QRCode",
"box": [[10,10],[290,10],[290,290],[10,290]]
}
],
"time": 0.23
}
3. 批量任务处理
通过命令行提交批量OCR任务:
# 进入容器
docker exec -it umi-ocr-service bash
# 执行批量识别
python main.py --path /app/test_images --output /app/results
高级配置与优化
性能调优参数
| 参数 | 说明 | 推荐值 |
|---|---|---|
| ocr.limit_side_len | 图像边长限制 | 2880(平衡速度与精度) |
| mem_limit | 容器内存限制 | 4g(处理大图需增加) |
| 并发请求数 | API调用并发控制 | ≤5(避免资源竞争) |
数据持久化
容器数据卷挂载确保配置与识别记录不丢失:
- UmiOCR-data/:存储配置文件、日志和识别历史
- 模型文件:首次运行会自动下载,约占用500MB空间
服务监控
添加健康检查到docker-compose.yml:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1224/api/ocr/get_options"]
interval: 30s
timeout: 10s
retries: 3
常见问题解决
1. 容器启动失败(code: 803错误)
该问题在部分旧Linux系统中可能出现,解决方案:
# 更新Docker引擎到最新版本
sudo apt-get update && sudo apt-get upgrade docker-ce
# 重启容器
docker-compose restart
2. 中文识别乱码
确保系统字体完整:
# 在Dockerfile中添加字体安装
RUN apt-get install -y fonts-wqy-zenhei
3. API请求超时
调整OCR引擎超时参数:
# 修改配置文件
vi UmiOCR-data/settings.ini
# 增加超时设置
[OCR]
timeout=30
总结与展望
通过Docker容器化部署,我们成功将Umi-OCR从桌面应用转变为企业级服务,实现了:
- 5分钟快速搭建私有化OCR服务
- 全功能支持:截图识别、批量处理、二维码解析
- 稳定可靠的HTTP接口,便于二次开发集成
项目后续将重点优化:
- 多引擎支持(Tesseract/OCRopus)
- GPU加速能力
- 更完善的服务监控面板
立即收藏本文,关注项目更新获取最新部署指南!如有部署问题,欢迎在项目仓库提交issue反馈。
相关资源
- 项目源码:GitHub_Trending/um/Umi-OCR
- 接口文档:docs/http/api_ocr.md
- 命令行说明:docs/http/argv.md
- 更新日志:CHANGE_LOG.md
Umi-OCR
OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
CAP基于最终一致性的微服务分布式事务解决方案,也是一种采用 Outbox 模式的事件总线。C#00
热门内容推荐
最新内容推荐
3种实用方案解决软件试用期管理难题SMUDebugTool:重新定义AMD Ryzen硬件调试的开源解决方案企业级视频本地化:技术架构与商业落地指南4个效率优化维度:Kronos金融大模型资源配置与训练实战指南3步打造高效键盘效率工具:MyKeymap个性化配置指南RapidOCR:企业级本地化OCR工具的技术解析与应用实践开源小说下载工具:实现网络小说本地存储的完整方案Detect-It-Easy技术教程:精准识别PyInstaller打包文件的核心方法GDevelop零代码游戏开发:3大痛点解决方案与实战案例高效解决知识星球内容备份难题:完全掌握zsxq-spider从爬取到PDF的知识管理方案
项目优选
收起
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
650
4.23 K
deepin linux kernel
C
27
14
Ascend Extension for PyTorch
Python
485
593
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
388
278
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.53 K
885
Oohos_react_native
React Native鸿蒙化仓库
JavaScript
332
388
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
936
851
暂无简介
Dart
898
214
昇腾LLM分布式训练框架
Python
141
167
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
123
194

