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文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0171
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook093
Step-3.7-FlashStep-3.7-Flash是一个拥有 1980 亿参数的稀疏混合专家(MoE)视觉语言模型,由 1960 亿参数的语言主干网络和 18 亿参数的视觉编码器组合而成,具备原生图像理解能力。Python00
BitCPM-CANN-8BBitCPM-CANN 是首个基于华为昇腾 NPU 原生构建的端到端 1.58 位(三值化)大语言模型训练系统。该系统将量化感知训练(QAT)集成到 Megatron-LM 框架中,并结合 MindSpeed 加速,覆盖了从自定义三值算子到基于昇腾 910B 的分布式并行训练的完整训练栈。Python00
MiniCPM5-1BMiniCPM5-1B,这是 MiniCPM5 系列的首款模型。它是一个专为端侧、本地部署和资源受限场景打造的 10 亿参数密集型 Transformer 模型,达到了 10 亿参数级开源模型的 SOTA 水平Jinja00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0239
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Dockerfile
749
4.86 K
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
641
1.26 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
835
1.83 K
Ascend Extension for PyTorch
Python
685
828
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
450
417
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.02 K
1.04 K
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
204
93
Oohos_react_native
React Native鸿蒙化仓库
C++
352
413
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.53 K
171
deepin linux kernel
C
32
16

