1. 项目背景与需求分析
去年在给公司做内部文档管理系统升级时,发现一个痛点问题:财务、法务等部门的同事经常需要将扫描版合同、票据图片转换成可编辑文本。传统方案要么需要手动上传到第三方OCR服务(存在数据泄露风险),要么依赖单机版OCR软件(无法团队协作)。于是萌生了开发一个基于UmiOCR的局域网多用户文档转换工具的想法。
UmiOCR作为一款开源OCR引擎,具备几个核心优势:
- 完全离线运行,适合企业内部部署
- 支持中英文混合识别
- 对扫描文档、拍照文档都有不错的识别率
- 提供HTTP API接口便于集成
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型决策
整个系统采用B/S架构,主要组件包括:
- 前端:Vue3 + Element Plus(考虑内部用户多为非技术人员)
- 后端:Flask(轻量级,适合快速开发API)
- OCR引擎:UmiOCR v2.0(支持表格识别的最新版)
- 数据库:SQLite(简化部署)
- 文件存储:本地NAS共享目录(已有基础设施)
选择Flask而非Django的主要原因是:
- 项目功能相对简单,不需要Django的全套功能
- Flask更易于实现轻量级API服务
- 团队已有Flask技术积累
2.3 核心业务流程
mermaid复制graph TD
A[用户上传文件] --> B[文件临时存储]
B --> C[调用UmiOCR API]
C --> D[结果解析处理]
D --> E[存入数据库]
E --> F[结果返回前端]
3. 关键实现细节
3.1 UmiOCR API集成
UmiOCR默认监听127.0.0.1,要支持局域网访问需要修改配置:
ini复制# config.ini
[server]
host = 0.0.0.0
port = 1224
API调用示例(Python):
python复制import requests
def ocr_recognize(image_path):
url = "http://192.168.1.100:1224/api/recognize"
files = {
