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),仅供参考