Umi-OCR 实战:从截图OCR到批量处理,一篇搞定离线文字识别
2026/9/13 14:00:16 网站建设 项目流程

Umi-OCR 实战:从截图OCR到批量处理,一篇搞定离线文字识别

【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR

截一张代码图,框选,几秒后右边出现可选中、可复制的文本。这就是 Umi-OCR——一款免费、开源的离线 OCR 软件:不需要联网,数据不出本机,截图文字识别、批量图片识别、PDF 文档识别都在自己电脑上完成。

快速上手:三分钟完成第一次识别

无需安装。发行版是压缩包,解压即用。

  1. 解压.7z压缩包,双击Umi-OCR.exe启动。
  2. 打开左侧「截图OCR」标签页,顶部「文字」开关默认已打开。
  3. 按快捷键Ctrl+Shift+A,或点击顶部截图图标。
  4. 鼠标框选要识别的区域,按Esc取消。
  5. 看右侧「记录」栏,选中记录按Ctrl+C复制。

成功标志:框选到的文字出现在右侧「记录」栏,带时间戳和置信度。记录可以直接编辑,也可以划选多条一起复制。如果嫌截图麻烦,还能在别处复制一张图片,直接粘贴进 Umi-OCR 识别。

界面默认按系统语言显示,如果是英文或日文,去「全局设置」→「语言/Language」切换成简体中文。

截图里的代码,怎么变成能跑的文本?

代码截图只有一个核心要求:缩进不能丢。Umi-OCR 靠文本后处理的「排版解析方案」解决,预设 8 种,最常用的三种:

排版解析方案适用
single_code单栏-保留缩进代码截图,保留行首缩进和行中空格
multi_para多栏-按自然段换行普通文档、报刊,按自然段自动分行
none不做处理需要引擎原始输出

操作很简单:

  1. 框选代码截图。
  2. 右侧面板切到「设置」→ 排版解析方案,选「单栏-保留缩进」。
  3. 复制记录,直接粘进代码编辑器。

效果对比——一个三行 Python 函数的识别结果:

def add(a, b): total = a + b return total

和原图逐行对照,缩进、行内空格完全一致,不用手工重排。这个方案在 HTTP/CLI 调用时对应参数tbpu.parser = single_code,后面会用到。

这里有个细节:各排版方案都自动处理横排和竖排,竖排文字还需要 OCR 引擎本身支持竖排识别才行。

批量扫描文档,忽略区域怎么设置

扫描文档批量入库时,水印、页眉页脚都会混进结果里。批量 OCR 的专门工具是「忽略区域」:画矩形,框内的文字不进结果。

  1. 切到「批量OCR」标签页,点「选择图片」添加文件或文件夹。jpg、png、webp、bmp、tif 都认,一次导入几百张也没有数量上限。
  2. 右侧面板进「设置」→ 忽略区域编辑器,按住右键拖动画出若干矩形,把水印完全包住。
  3. 注意:只有整个完全处于框内的文本块才会被忽略,不会切掉单个字符。
  4. 选输出格式:txt、jsonl、md、csv(Excel)都有。
  5. 点「开始任务」,顶部进度条显示整体进度,还可以设置任务完成后自动关机/待机。

遇到超大的长图、大图识别不准或偏慢时,把「页面设置 → 文字识别 → 限制图像边长」的数值调高即可。

参数调优:按场景挑配置

绝大多数参数不用动。想调的话,看这张「场景 → 配置」映射表,覆盖 4 个最高频参数:

场景排版解析tbpu.parser边长限制ocr.limit_side_len语言库ocr.language
代码截图single_code960models/config_en.txt
中文文档批量multi_para960models/config_chinese.txt
大图长图扫描件multi_para2880或更高models/config_chinese.txt
英文论文multi_para2880models/config_en.txt

三个参数各用一句话说清:

  • tbpu.parser:识别出的文字块怎么拼接、怎么换行。
  • ocr.limit_side_len:大图先压缩到这个边长,值低速度快,值高精度好。
  • ocr.language:语言模型库。中文config_chinese.txt、英文config_en.txt、日文config_japan.txt、韩文config_korean.txt、俄文config_cyrillic.txt

对应的配置片段(也保存在./UmiOCR-data/.settings文件里,可手动改完再用--reload重载):

ocr.language = models/config_chinese.txt tbpu.parser = multi_para ocr.limit_side_len = 960

上面ocr.*几个参数属于 PaddleOCR 引擎插件;其他引擎可调用参数查询接口/api/ocr/get_options拿到各自支持的全部参数。

引擎选择,三点就够:

  • PaddleOCR:精度高、语言库全,适合复杂文档。
  • RapidOCR:速度快、占内存少,适合批量和简单文档。
  • 默认先用默认引擎,识别不准再切 PaddleOCR 并调高边长限制。

接入自动化:命令行与 HTTP 接口

手动操作嫌累,就用两种外部调用方式。它们都走本地 HTTP 服务(默认开启,端口 1224,可在全局设置里改)。

命令行最轻,两条典型命令:

umi-ocr --path "D:/docs" "-->" D:/docs.txt # 批量识别文件夹,结果存txt umi-ocr --screenshot --clip # 截图并复制到剪贴板

--path可以传文件夹路径,会搜索其中所有图片(含子文件夹)全部识别。注意命令行任务沿用「截图OCR」标签页的设置,不想要弹窗就去该标签页关掉对应选项。

HTTP 接口适合程序集成,最小 Python 示例:

import requests, json, base64 b64 = base64.b64encode(open("a.png", "rb").read()).decode() r = requests.post("http://127.0.0.1:1224/api/ocr", data=json.dumps({"base64": b64, "options": {"data.format": "text"}})) print(json.loads(r.text)["data"]) # 识别文本

返回值里code=100表示成功、101表示图中无文本;企业场景可以再开几个不同端口的实例做轮询负载均衡,天然是容灾 OCR 服务。

HTTP 服务的开关、端口、主机范围都在「全局设置」里,和快捷键、界面语言放在一起管理。

卡点速查与下一步

症状大概率原因对应操作
识别结果全是乱码语言库不匹配ocr.language为对应语言
大图文字断行/精度差边长限制太小ocr.limit_side_len调到 2880 或 4320
多栏排版顺序乱排版解析不合适切到multi_para(多栏-按自然段)
混入水印文字没设忽略区域右键编辑器画矩形包住水印
命令行没反应HTTP 服务未开启「全局设置」里检查服务开关

下一步:

  • 先做一次截图识别,把快捷键和复制流程跑通。
  • 再拿一批扫描文档试忽略区域,体会框的大小怎么画。
  • 想集成进其他工具,读下面两篇接口手册。
  • 想查所有参数:打开./UmiOCR-data/.settings对照着看。

延伸阅读:

  • 命令行手册
  • HTTP接口手册

从截图到批量、从参数到接口,这四层用熟,离线文字识别这件事基本就闭环了。

【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询