跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava算法

Java 集成 Umi-OCR 实现本地图片文字提取

如何在 Java 项目中集成 Umi-OCR 工具实现本地图片文字提取。Umi-OCR 是一款免费开源的离线 OCR 软件,支持截图、批量处理和二维码识别。文章详细讲解了三种调用方式:命令行调用、HTTP 接口调用以及工具类封装,并提供了具体的 Java 代码示例。此外,还涵盖了常见问题排查、Linux/macOS 跨平台替代方案(如 Tesseract)、实际应用场景(发票提取、翻译、二维码)以及与其他 OCR 工具的对比分析,帮助开发者高效利用 OCR 技术处理图像数据。

RustyLab发布于 2026/3/22更新于 2026/7/2552 浏览

Java 集成 Umi-OCR 实现本地图片文字提取

当需要从大量截图中提取数据时,手动输入效率低下且易出错。市面上的 OCR 工具要么付费,要么配置复杂。Umi-OCR 是一款免费、开源、可批量处理的离线 OCR 软件,适用于 Windows 系统,支持截图 OCR、批量 OCR、二维码识别等功能。本文将介绍如何用 Java 调用 Umi-OCR 进行图片文字提取。

快速体验 Umi-OCR

无需编程,通过命令行即可体验 Umi-OCR 功能。

  1. 下载 Umi-OCR 压缩包并解压。
  2. 打开命令提示符,进入解压目录。
  3. 输入以下命令体验截图 OCR:
Umi-OCR.exe --screenshot 
  1. 用鼠标框选任意含有文字的区域。

注意事项:

  • 确保解压路径不含中文和空格。
  • 首次运行会自动初始化 OCR 引擎(约 10 秒)。
  • 截图后结果会自动复制到剪贴板。

试试用这个命令识别桌面上的图片:

Umi-OCR.exe --path "C:/Desktop/test.png" --output result.txt 

打开生成的 result.txt 文件,图片中的文字已被提取。

Umi-OCR 核心优势

  1. 零依赖离线运行:所有识别都在本地完成,数据隐私有保障,识别速度更快。
  2. 命令行与 HTTP 双接口:提供两种调用方式,命令行适合简单场景,HTTP 接口适合复杂集成。
  3. 丰富的输出格式:支持直接输出文本、JSON 或保存到文件。

Java 调用 Umi-OCR 的方法

方法一:命令行调用(适合简单场景)

使用 ProcessBuilder 调用外部程序。

ProcessBuilder pb = new ProcessBuilder("Umi-OCR.exe", "--path", "test.png");
Process process = pb.start();
String result = new String(process.getInputStream().readAllBytes(), "GBK");

注意:

  • 确保 Umi-OCR.exe 路径正确。
  • 使用 GBK 编码读取输出(Umi-OCR 默认编码)。
  • 给命令参数添加 --output result.txt 可保存结果到文件。
方法二:HTTP 接口调用(适合复杂集成)

Umi-OCR 内置 HTTP 服务,Java 程序通过发送请求调用。启动服务后,在全局设置中确认 HTTP 服务已开启。

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("http://127.0.0.1:1224/argv"))
    .POST(HttpRequest.BodyPublishers.ofString("[\"--path\",\"test.png\"]"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
方法三:工具类封装(适合项目集成)

将常用功能封装成工具类。

public class UmiOcrUtils {
    private static final String EXE_PATH = "C:/Umi-OCR/Umi-OCR.exe";
    
    public static String ocrImage(String imagePath) throws Exception {
        Process process = new ProcessBuilder(EXE_PATH, "--path", imagePath).start();
        return new String(process.getInputStream().readAllBytes(), "GBK");
    }
}

常见问题排查

  1. 命令执行无响应?

    • 检查 Umi-OCR 是否已安装。
    • 验证文件路径是否包含中文或空格。
    • 尝试使用绝对路径调用。
  2. 输出乱码怎么办?

    • 必须使用 GBK 编码读取输出。
    • 检查 Java 文件编码是否正确。
    • 尝试添加 --encoding utf-8 参数。
  3. 批量处理效率低?

    • 确保使用 --batch 参数启用批量模式。
    • 调整线程数参数 --threads 4。
    • 避免同时处理超过 20 张大型图片。
  4. HTTP 接口连接失败?

    • 在全局设置中确认 HTTP 服务已开启。
    • 检查端口是否被占用(默认 1224)。
    • 尝试重启 Umi-OCR 软件。
  5. 识别准确率不高?

    • 更新到最新版本 Umi-OCR。
    • 在设置中调整识别引擎参数。
    • 确保图片清晰,文字区域足够大。

跨平台替代方案

虽然 Umi-OCR 主要面向 Windows 系统,但 Linux 和 macOS 用户也有替代方案。

Linux 系统:
  1. 使用 Wine 运行 Umi-OCR(适合图形界面用户)。
  2. 或选择 Tesseract+Python 脚本组合:
# 安装 Tesseract
sudo apt install tesseract-ocr
# 调用命令
tesseract image.png output
macOS 系统:
  1. 使用 CrossOver 运行 Umi-OCR。
  2. 或使用 Homebrew 安装 Tesseract:
brew install tesseract
tesseract image.png output

实战场景

场景一:自动提取发票信息
// 批量处理发票图片
List<String> paths = Arrays.asList("invoice1.png", "invoice2.png");
String result = UmiOcrUtils.batchOcr(paths, "--format json");
// 解析 JSON 提取金额、日期等关键信息
JSONArray json = new JSONArray(result);
for (int i = 0; i < json.length(); i++) {
    System.out.println("金额:" + json.getJSONObject(i).getString("amount"));
}
场景二:截图识别 + 翻译
// 调用截图 OCR
String text = UmiOcrUtils.screenshotOcr();
// 调用翻译 API
String translated = TranslationApi.translate(text, "en");
System.out.println("翻译结果:" + translated);
场景三:二维码解析
// 识别图片中的二维码
String qrContent = UmiOcrUtils.recognizeQrCode("qr_code.png");
System.out.println("二维码内容:" + qrContent);

OCR 工具横向对比

工具部署难度识别速度准确率离线支持多语言
Umi-OCR⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐✅⭐⭐⭐⭐
Tesseract⭐⭐⭐⭐⭐⭐⭐⭐✅⭐⭐⭐⭐⭐
OCR.Space⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌⭐⭐⭐⭐
百度 OCR⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌⭐⭐⭐⭐⭐

Umi-OCR 在部署难度和离线支持方面优势明显,非常适合对隐私要求高、不想折腾复杂配置的开发者。

进阶任务建议

  1. 基础任务:编写 Java 程序,调用 Umi-OCR 识别一张本地图片,并将结果打印到控制台。
  2. 进阶任务:识别包含表格的图片,使用正则表达式提取特定数据(如价格、日期),并保存到 Excel 文件。
  3. 终极任务:开发一个批量 OCR 处理系统,支持拖放上传图片文件夹,自动识别并按规则命名输出文件,实现错误重试机制。

目录

  1. Java 集成 Umi-OCR 实现本地图片文字提取
  2. 快速体验 Umi-OCR
  3. Umi-OCR 核心优势
  4. Java 调用 Umi-OCR 的方法
  5. 方法一:命令行调用(适合简单场景)
  6. 方法二:HTTP 接口调用(适合复杂集成)
  7. 方法三:工具类封装(适合项目集成)
  8. 常见问题排查
  9. 跨平台替代方案
  10. Linux 系统:
  11. 安装 Tesseract
  12. 调用命令
  13. macOS 系统:
  14. 实战场景
  15. 场景一:自动提取发票信息
  16. 场景二:截图识别 + 翻译
  17. 场景三:二维码解析
  18. OCR 工具横向对比
  19. 进阶任务建议
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • llama.cpp 大模型本地部署与推理指南
  • 基于 SpringBoot 与多版本 YOLO 的行人车辆检测系统
  • FastGPT 结合 MCP 协议构建工具增强型智能体实战指南
  • 华南理工大学开源中文主动健康大模型扁鹊(BianQue)
  • Python 通过 ctypes 调用 C++ DLL 的原理与实战
  • Kiro 安装与使用指南:AWS 新一代 AI IDE 两种部署方式
  • VMware 虚拟机安装 macOS 指南:镜像转换与工具优化
  • Stable Diffusion WebUI 云服务器部署实战
  • Python 获取卫星 TLE 数据及轨道六根数预测教程
  • 视觉 - 骨架双模态框架用于帕金森病步态的泛化评估
  • GitHub Copilot 网络配置与代理部署指南
  • PyCharm 中 Copilot 插件 Claude 模型不可用解决方案
  • 2025 主流 AI IDE 对比:Trae、Copilot、Windsurf、Cursor 选型指南
  • PyTorch 多卡训练原理与实现
  • 动态规划时间复杂度和空间复杂度计算方法
  • 基于 KSWEB 与 cpolar 在安卓手机部署 Typecho 博客并实现外网访问
  • Win10 升级后 Copilot 弹窗如何彻底关闭与禁用
  • 基于 STM32F103C8T6 的二轮平衡车 LQR 控制器设计
  • Git 工作流程详解与场景选择指南
  • GitHub Copilot 订阅取消操作指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online