ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Umi-OCR 双层 PDF 转换指南:把扫描 PDF 变成可搜索文档的 4 步流程

Umi-OCR 双层 PDF 转换指南:把扫描 PDF 变成可搜索文档的 4 步流程

Umi-OCR 双层 PDF 转换指南:把扫描 PDF 变成可搜索文档的 4 步流程

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

扫描 PDF 的 3 个卡点:搜不到、抄不走、排版丢

你的 180 份扫描合同 PDF,阅读器里搜不到条款,也划不出能复制的文字。Umi-OCR 是一款免费、开源、离线的 OCR 工具,它的双层 PDF 转换能在扫描页上叠加可选择的文字层,输出保留原排版的可搜索文档。

具体卡在哪,拆成三点看:

  • 搜不到:扫描 PDF 的每一页本质上是一张图,Ctrl+F 对像素不生效。
  • 抄不走:文字与图像绑定,无法划选、复制、粘贴。
  • 排版会丢:只导出纯文本,表格、印章、签字栏的位置关系全部打散。

Umi-OCR 的做法是生成"双层 PDF":底层原样保留扫描图像,顶层叠加一层透明文本,每个文本块按原始坐标摆放。搜索、复制交给文本层,视觉效果交给图像层,两边互不牺牲。

功能速览:5 个标签页各管一件事

Umi-OCR v2 由标签页组成,打开时按需启用,右上角可锁定标签防止误关。

  • 截图OCR:快捷键唤起截图识别,右侧记录栏可编辑、划选多条记录复制。
  • 批量OCR:导入jpg/png/tif/webp等图片批量识别,输出txt/jsonl/md/csv,无数量上限,支持任务完成后自动关机。
  • 文档识别:处理pdf/xps/epub/mobi/fbz/cbz,对扫描件做 OCR 或提取原有文本,可输出双层可搜索 PDF,支持忽略区域。
  • 二维码:扫码支持 19 种协议,也支持从文本生成码图片。
  • 全局设置:切换界面语言、主题,更换 OCR 引擎(PaddleOCR / RapidOCR 插件)。

批量页左侧是任务列表,右侧是设置与记录面板,文档识别页的布局与它一致,看一次就能复用。

除界面操作外,还有两种调用方式:命令行(入口即主程序Umi-OCR.exe,umi-ocr --help查看全部指令)和 HTTP 接口(默认http://127.0.0.1:1224,仅本地回环)。命令行识别一个文件夹示例:

umi-ocr --path "D:/imgs" --output result.txt

--path可以传文件夹(含嵌套子目录),--output写入文件,换成--clip则写入剪贴板。

3 分钟跑通第一次截图识别

拿程序有两条路:

  • 普通用户:下载官方发行版(.7z或.7z.exe自解压包),本仓库根目录就带了一份现成的Umi-OCR_Rapid_v2.1.5.7z。
  • 开发者:克隆源码:
git clone https://gitcode.com/GitHub_Trending/um/Umi-OCR

解压后无需安装、无需联网:Windows 双击Umi-OCR.exe,Linux 运行umi-ocr.sh。首次启动界面语言会跟随系统设置自动切换,想改就去全局设置里的"语言/Language"。

打开"截图OCR"标签页,用快捷键唤起截图并框选目标区域。识别结果几秒内出现在右侧记录栏,鼠标可以直接划选文字,也可在预览栏勾选"隐藏文本"查看原文。

到这里可以确认 OCR 引擎工作正常,后面的文档识别用的就是同一套引擎。

配置双层 PDF 转换的 3 个关键点

输出双层可搜索 PDF

  • 能做什么:扫描件转成"图像层 + 透明文本层"的 PDF,搜索、复制可用,排版与原件一致。
  • 怎么做:文档识别标签页添加 PDF → 保存格式勾选"双层可搜索PDF"(默认项)→ 开始任务。
  • 注意点:v2.1.4 起才有文档识别功能。同一份任务还能顺带导出单层纯文本 PDF、txt、jsonl、csv(走 HTTP 接口时由file_types指定)。

用忽略区域圈掉页眉页脚

  • 能做什么:把固定位置出现的页眉、页码、水印文字从识别结果里剔除。
  • 怎么做:在文档识别或批量OCR页的设置里打开忽略区域编辑器,按住右键绘制矩形框,还可以指定这些框生效的页数范围。
  • 注意点:框内的整个文本块会被忽略,而不是单个字符。框画大一点,别把正文块圈进去。

给"图文混排"页选对提取模式

  • 能做什么:当一页里既有图片又有可选文本时,决定这一页走哪条路。
  • 怎么做:四选一——mixed(混合OCR/原文本,默认)、fullPage(整页强制OCR)、imageOnly(仅OCR图片)、textOnly(仅拷贝原有文本)。纯扫描件选fullPage最稳妥;原文档本身带文本层的,用mixed省时。
  • 注意点:fullPage对每页都跑 OCR,速度最慢但覆盖最全。

单页在 Umi-OCR 内部的走向可以画成一张分支图:

端到端实战:1 份扫描 PDF 的 4 步转换流程

主任务:把 32 页扫描合同contract_scan.pdf转成可搜索的双层 PDF。每页顶部有固定"内部资料"页眉,底部有页码。

第 1 步:准备输入。确认版本 ≥ v2.1.4(发行包 v2.1.5 即可),把 PDF 放进一个干净的文件夹,路径里避免特殊字符。

第 2 步:添加文档。打开"文档识别"标签页(若标签栏没有,点右上角"新标签页"从模板中打开),在左侧任务列表点选文件,把 PDF 加入任务。

第 3 步:设置任务参数。在右侧设置面板确认三处:语言/模型库选"简体中文";内容提取模式选"整页强制OCR"(fullPage,因为这是纯扫描);忽略区域编辑器里,顶部页眉和底部页码各画一个矩形框。

第 4 步:启动任务并验收。点"开始任务",进度条实时显示已处理/总页数(如 12/32)。完成后打开生成的双层 PDF,做三项验收:

  • 搜索:Ctrl+F 输入"违约责任",能定位到对应页。
  • 复制:划选一段正文粘贴到记事本,文字完整、顺序正确。
  • 排版:放大检查表格与印章位置,应与原扫描件一致。

验收没问题,这个流程就能复用到整批档案。想把它脚本化,HTTP 接口就是"上传→轮询→下载"三步:

import requests r = requests.post("http://127.0.0.1:1224/api/doc/upload", files={"file": open("contract_scan.pdf", "rb")}) task_id = r.json()["data"] # POST /api/doc/result 传 task_id,轮询直到 is_done == true # 再 POST /api/doc/download,传 file_types=["pdfLayered"] 取下载链接

两个提醒:后端并发支持弱,批量任务串行提交;任务完成后建议调用/api/doc/clear/<id>清理,否则 24 小时后自动清理。接口细节见 docs/http/api_doc.md。

答疑:5 个高频问题怎么处理

Q1:解压后打不开软件,或提示缺组件?用官方发行的完整发布包(自带运行库),不要自己拼环境。系统支持 Windows 7 x64 与 Linux x64;Linux 下入口是umi-ocr.sh。

Q2:命令行umi-ocr --path ...执行后没反应?命令行依赖后台进程的 HTTP 服务。到全局设置里确认"HTTP服务"已开启(默认开启,主机保持"仅本地"即可),再重试。

Q3:HTTP 上传返回 code 101?表示服务器没收到文件,个别 Linux 系统在文件名含中文时会出现。参考 docs/http/api_doc_demo.py 的做法,用一个纯 ASCII 的临时文件名重新发起上传即可。

Q4:双层 PDF 里文字偏少,或混进了页眉页脚?先核对提取模式:扫描件应选"整页强制OCR",选成textOnly只会拷贝原文本层。再看干扰文字是否在忽略区域框内——框外或页数范围外的页不生效。

Q5:加密 PDF 能识别吗?能。HTTP 接口的上传参数里提供password字段,填入文档密码后按正常流程处理即可。

延伸阅读:3 份仓库内文档

  • docs/README_CLI.md:命令行全部指令,含范围截图、二维码与高级模块调用。
  • docs/http/api_doc.md:文档识别接口的完整参数表与五步流程。
  • CHANGE_LOG.md:各版本功能与修复记录,升级前值得过一遍。

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

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进