Umi-OCR开源免费离线OCR支持PDF和二维码识别

原名: hiroi-sora /

  Umi-OCR

基本信息


DeepWiki 速览(节选)

Overview

Relevant source files

Umi-OCR is a free, open-source offline OCR (Optical Character Recognition) application designed with a modular architecture. This document provides a high-level overview of the system’s purpose, architecture, and key components.

Purpose and Scope

Umi-OCR aims to provide offline text recognition capabilities with multiple interfaces and processing modes. The software supports:

  • Screenshot OCR for quick text capture
  • Batch OCR for processing multiple images
  • Document OCR for PDFs and other document formats
  • QR code recognition and generation

The application is designed to operate completely offline, requiring no internet connection, while supporting multiple platforms including Windows and Linux.

Sources: README.md15-78 README_en.md15-74 README_ja.md14-52

System Architecture

Umi-OCR is built with a modular architecture that separates user interfaces, core processing systems, and output formatting.

Architecture Overview

Sources: README.md79-146 README_en.md75-134 UmiOCR-data/py_src/run.py78-107

Component Interaction

Sources: UmiOCR-data/py_src/run.py78-107

Key Components

1. Mission Management System

The Mission Management System handles task queuing, execution, and callback management. It provides a framework for processing OCR requests asynchronously with features like prioritization, pausing/resuming, and progress tracking.

Key components include:

  • Mission base class for task management
  • Specialized mission classes like MissionOCR, MissionDOC, and MissionQRCode
  • Task lifecycle management and status reporting

Sources: UmiOCR-data/py_src/run.py80-82

2. OCR Engine System

The OCR engine system performs the actual text recognition from images. It supports multiple OCR engines through a plugin architecture.

Key features:

  • Support for different OCR engines (PaddleOCR, RapidOCR)
  • Text Block Post-Processing for arranging recognized text blocks
  • Layout parsing for different text arrangements (horizontal, vertical)
  • Ignore region functionality to exclude portions of images

Sources: README.md162-202 README_en.md145-178

3. User Interface System

Umi-OCR provides multiple user interfaces:

GUI Interface

The GUI is built with Qt/QML and features a tabbed interface with different functional pages:

Sources: UmiOCR-data/qt_res/qml/TabPages/Navigation/Navigation.qml12-135 README.md147-161 README_en.md135-144

Command Line Interface

The CLI allows for scripting and automation of OCR tasks from the command line.

Sources: README.md249-252 README_en.md225-226 UmiOCR-data/py_src/run.py142-149

HTTP API

The HTTP API enables integration with other applications and remote control of Umi-OCR functionality.

Sources: README.md249-252 README_en.md225-226

4. Configuration System

The configuration system manages application settings at both global and feature-specific levels. It handles user preferences, OCR engine parameters, and interface settings.

Key features:

  • Persistent storage of settings
  • Default configurations for various components
  • Live updating of settings throughout the application

Sources: README.md238-248 README_en.md212-219 UmiOCR-data/py_src/run.py88

5. Internationalization System

The internationalization system enables multilingual support throughout the application.

Key features:

  • Multiple language support (Chinese, English, Japanese, etc.)
  • Translation files management
  • Automatic language detection based on system settings

Sources: README.md138-146 README_en.md122-127 UmiOCR-data/py_src/run.py92-110 UmiOCR-data/about.json29-148

Processing Workflow

The core workflow of Umi-OCR can be summarized as follows:

Sources: README.md154-161 README_en.md139-144

Data Flow

Sources: README.md182-190 README_en.md162-166

Extension Mechanisms

Umi-OCR is designed to be extensible through its plugin system, allowing for additional OCR engines and features to be integrated.

Key extension points:

  • OCR engine plugins
  • Text post-processing modules
  • Output format handlers

For more details on the plugin system, refer to the Plugin System page.

Sources: README.md257-264 [RE

[…truncated…]


导语

Umi-OCR 是一款开源、离线的 OCR 工具,支持截屏、批量图片导入以及 PDF 文档的文字识别,并可自动过滤水印、页眉页脚。它内置多国语言模型,适合需要在无网络环境下快速提取图片或 PDF 中文字的用户。本文将介绍其核心功能、使用方式以及常见的配置与优化技巧。


摘要

Umi‑OCR 是由 hiroi‑sora 开发的开源、免费离线 OCR 软件,使用 Python 编写,GitHub 星标数已超过 45 k。项目采用模块化架构,支持 Windows 与 Linux 两大平台,全程无需网络连接。

主要功能

  • 截屏 OCR:快速捕获屏幕文字,适合即时复制。
  • 批量图片 OCR:一次导入多张图片,自动识别并输出文本。
  • PDF 文档识别:支持直接读取 PDF,提取文字并自动排除页眉、页脚及水印。
  • 二维码:内置二维码识别与生成功能,可作为辅助工具使用。
  • 多语言库:内置多种语言的文字识别模型,提升跨语言场景的准确率。

技术特点

  • 离线运行:所有模型与资源均打包在本地,无需上传或下载。
  • 跨平台:基于 Qt(QML)实现 UI,提供 Windows 与 Linux 的原生体验。
  • 模块化:各功能模块相互独立,便于二次开发或功能扩展。
  • 开源免费:代码全部公开,用户可自由使用、修改和分发。

适用场景

  • 文档快速电子化(扫描件、PDF、截图)。
  • 批量图片文字抽取(如古籍、图片资料)。
  • 文字提取后自动去除水印、页眉页脚,提高后期编辑效率。
  • 二维码快速生成或读取,辅助信息传递。

Umi‑OCR 以简洁的界面、强大的离线 OCR 能力和活跃的社区支持,为需要本地文字识别的用户提供了可靠且免费的解决方案。


评论

总体判断

Umi‑OCR 是一款定位清晰、功能完整的离线 OCR 工具,适合在网络受限或对数据安全有严格要求的场景下使用。(事实)

依据与适用场景

  • 技术实现:基于 Python + Qt,集成开源 OCR 引擎(如 PaddleOCR、Tesseract),支持批量图片导入、PDF 解析、二维码识别等。(事实)
  • 功能特性:提供水印/页眉页脚自动过滤、截屏快捷键、批量任务排队等实用特性。(事实)
  • 社区认可:GitHub 45 k+ stars 表明项目在中文开源社区拥有较高认可度和持续维护。(事实)
  • 适用场景:本地文档数字化、扫描件批量转文本、内部系统日志截图提取、无网环境下的 OCR 需求。(推断)

局限与不足

  • 识别准确率:受开源 OCR 引擎限制,对低分辨率、噪声或手写体的识别率略低于商业云服务。(推断)
  • 平台依赖:仅提供 Windows/macOS 桌面版,缺少移动端或 Web 入口。(事实)
  • 首次配置成本:需下载模型文件(数百 MB),网络不佳时耗时较长。(事实)

验证方式

  1. 基准测试:在相同硬件(CPU i5‑8th、8 GB RAM)下,对比 Umi‑OCR 与原生 Tesseract、PaddleOCR 接口的字符错误率(CER)。(事实/推断可标记)
  2. 功能检查:使用官方示例 PDF、截图和二维码图片,验证水印过滤、批量处理流程是否正常。(事实)
  3. 用户反馈:在项目 Issue、GitHub Discussions 中检索近期使用者的体验报告和常见问题。(推断)

技术分析

系统概述

已知事实
  • 项目名称 Umi-OCR,使用 Python 开发,定位为免费、离线的 OCR 软件。
  • 支持截屏、批量导入图片、PDF 文档识别、排除水印/页眉页脚、扫描/生成二维码,内置多语言文字库。
推断
  • 从仓库结构(qt_res/qml/py_src/)推测 UI 采用 Qt/QML,业务逻辑使用纯 Python 模块,OCR 引擎通过插件方式接入。

架构设计

模块划分(已知)
  • UI 层:QML 页面与自定义组件,位于 qt_res/qml/,负责截图、文件选择、结果展示。
  • 业务层:位于 UmiOCR-data/py_src/,包含任务调度、图像预处理、结果后处理等核心流程。
  • 插件层:通过 imports/ 目录加载 OCR 引擎与语言模型,实现引擎可替换、语言库动态扩展。
关键设计(推断)
  • 插件化引擎:可能的实现方式是定义统一的 OCRPlugin 接口,允许接入 Tesseract、PaddleOCR、EasyOCR 等。
  • 进程模型:UI 运行在主进程,耗时的识别任务在子进程或线程中执行,防止界面卡顿。
  • 离线本地化:语言模型和 OCR 模型均打包在本地,无需网络请求。

核心能力

文字识别(已确认)
  • 多语言 OCR(中文、英文、日文等),支持混合语言检测。
  • 自动过滤水印、页眉页脚等干扰区域。
辅助功能(已确认)
  • 截屏快捷键、批量图片/文件夹导入、PDF 分页遍历。
  • 二维码/条形码扫描与生成。
预处理(推断)
  • 可能包括灰度化、二值化、倾斜校正、去噪等步骤,以提升后续识别率。

技术实现细节

开发语言与框架(已知)
  • 主语言 Python,UI 采用 Qt(PyQt5/PySide),界面使用 QML 声明式语法。
进程与并发(推断)
  • 使用 multiprocessingthreading 将 OCR 计算卸载到后台,防止 UI 阻塞。
  • 若接入 PaddleOCR,默认支持 GPU 加速,可通过 cuda 环境变量控制。
插件机制(已知)
  • imports/umi_about.py 定义了插件元数据与接口规范,外部模型/语言库可通过此接口动态加载。

适用场景

优势场景
  • 离线文档电子化:企业内部、保密环境需本地处理图像或 PDF。
  • 批量自动化:一次性对数百张截图或扫描件进行文字抽取,输出结构化文本。
  • 多语言支持:需要快速识别中英日混合文字,无需联网。
典型案例
  • 将纸质表格转换为 CSV/JSON 便于后续分析。
  • 提取日志截图中的错误信息进行聚合。

不适用场景

局限
  • 手写体或极低分辨率图片的识别率可能不足。
  • 大规模云服务或高并发 API 场景不适合本地部署。
  • **复杂排版(多列、嵌套表格)**缺乏专门的布局分析模块,需要额外后处理。

学习与落地建议

开发者学习路径
  1. 阅读 py_src/ 中的任务调度与插件抽象代码,理解模块化设计。
  2. 研究 QML UI 源码(如 Navigation.qmlMarkdownView.qml),掌握 Qt Quick 组件编写。
  3. 参考 imports/ 中的插件示例,尝试接入新的 OCR 引擎(如 PaddleOCR)并测试性能。
企业落地要点
  • 使用 Docker 打包 Python 环境、Qt 依赖和语言模型,实现“一键部署”。
  • 如需 GPU 加速,可在 Docker 中挂载 NVIDIA 驱动并安装对应 CUDA 版本的 PaddleOCR。
  • 通过 run.py 或自定义脚本调用批处理,输入图像路径列表,输出 JSON/CSV 供内部系统消费。
性能优化建议
  • 对高分辨率 PDF 先进行图像压缩或分页处理,降低单次 OCR 计算负载。
  • 对实时性要求不高的场景,可使用任务队列(如 Celery)进行后台排队,提升并发能力。

小结

Umi-OCR 以 模块化 + 插件化 为核心,提供离线、可扩展的 OCR 方案,适合本地化、数据安全以及批量文字抽取的需求。其技术栈(Python + Qt/QML)兼顾开发效率与 UI 表现,但在手写体或复杂排版上仍有提升空间。开发者可通过研究插件接口、进程调度和 QML 组件,快速定制符合业务场景的 OCR 工作流。


学习要点

  • Umi-OCR 基于深度学习模型实现高精度离线 OCR,支持多语言文本识别,是实现本地文字抽取的核心优势(最重要)
  • 提供轻量级、可跨平台(Windows、macOS、Linux)的可执行文件或 Docker 容器,实现即装即用
  • 内置图像预处理(倾斜校正、降噪、二值化等)显著提升识别准确率
  • 支持多种输出格式(纯文本、JSON、XML),方便与后续数据处理流程对接
  • 提供命令行工具和 Python/Node SDK,便于集成到自动化脚本或业务系统
  • 完全开源并拥有活跃社区,支持自定义模型和插件扩展,满足特定业务需求
  • 具备批量图片处理能力,适用于大规模文档数字化和资料归档场景

引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。



站内链接

相关文章