Umi-OCR 双层PDF识别指南:离线转换一步到位
【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR
你有没有遇到过这种 PDF:三百页扫描件,全选复制是空白,Ctrl+F 搜不到词,只能对着屏幕逐字核对。Umi-OCR 是开源免费的离线 OCR 工具,主打把扫描 PDF 变成双层可搜索 PDF,断网也能跑,文件全程不上传。
能力速览:双层PDF 和在线转换差在哪
| 方案 | 能否离线 | 排版保真 | 上手成本 | 费用 |
|---|---|---|---|---|
| 在线转换网站 | ❌ 需联网上传 | 丢失(只剩纯文本) | 低 | 按次 / 会员 |
| 手动逐页复制 | ✅ | 丢失严重 | 高(最费时) | 无 |
| 命令行 OCR 工具 | ✅ | 部分保留 | 高(要配环境) | 免费 |
| Umi-OCR 双层PDF | ✅ 全程离线 | 完整(图像+文字双层) | 低(解压即用) | 免费 |
双层 PDF 的思路是在每页扫描件上叠一层透明文字层:你看到的还是原图,但搜索、复制都作用在文字层上,版式一点不丢。它和"导出纯文本"的区别,就在这层"看得见、却改不了"的文字。
装与启动:解压即用,免配置
从发布页下载Umi-OCR_Rapid_v2.1.5.7z,解压后双击Umi-OCR.exe即可启动;绿色便携、免安装、免配置,Windows 7 与 Linux x64 都能跑;首次启动按系统语言自动切换界面,也可以到"全局设置"里改语言、主题,或勾选开机自启。
核心工作流:把一批扫描件变成可搜索 PDF
围绕"把一份扫描 PDF 变成可搜索 PDF"这条任务,整条链路分四个阶段,全部在"文档识别"标签页里完成。
导入文件,选好格式。打开"文档识别"标签页,把 PDF 拖进左侧文件列表,支持一次拖入几十个;右侧把保存格式设成"双层 PDF"。之所以先批量导入,是因为任务按队列跑,一次提交比零散提交省事。注意:它同时认 pdf、epub、mobi、cbz 等格式,别只盯着 PDF。
参数保持默认,先跑通一次。识别语言、排版解析、页数范围都先用默认值,直接点"开始任务",右侧会显示逐页进度。本地 CPU 下单页通常 1~3 秒,几百页一般十几分钟内跑完。先跑通再调参,能少走弯路。
验收:搜得到才算数。去输出目录打开生成的 PDF,按 Ctrl+F 搜一个你确定出现过的词,能搜到说明文字层生效了;再随机翻几页看图清不清晰。注意:能搜到、但图上字对不上位,多半是旋转页或引擎版本问题,见后面"边界与局限"。
要批量就交给 HTTP 接口。文件多到按"批"算时,别手动拖了,用本地 HTTP 接口自动跑。流程固定四步:上传 → 轮询状态 → 取下载链接 → 清理任务,接口细节见 HTTP 接口文档。
值得深挖的 3 个功能点
🔍 排版解析方案:输出怎么调才可读
它解决"识别出来的字,顺序乱、读着累"的问题。排版解析负责自动识别分栏、还原阅读顺序,决定导出文本能不能直接用。怎么调:在设置里选"排版解析方案",默认多栏-按自然段换行适合大部分文档;遇到代码截图或等宽排版,切到单栏-保留缩进能保住缩进和行内空格。建议值:普通文档用默认,代码、日志类用单栏-保留缩进。
📌 忽略区域:框掉页眉页脚与水印
它解决"每页都有抬头、页码、水印,导出的文本脏得没法用"的问题。怎么调:点"忽略区域",在页面上按住右键画矩形框,把页眉、页脚、水印圈进去,还能指定这些框生效的页码范围;只有整个落在框里的文字块会被丢弃,不会误伤旁边的正文。建议值:框尽量画大一点,完全包住水印可能出现的所有位置。
🔌 HTTP 接口:文件多到按批算时
它解决"几十个、上百个文件,手动一个个拖太慢"的问题。只要 Umi-OCR 在运行且开启了 HTTP 服务(默认端口 1224、仅本地),就能用代码把识别串起来。下面这段 8 行可直接改用:
import requests, time # 依赖 requests 库 BASE = "http://127.0.0.1:1224" # Umi-OCR 本地服务地址 tid = requests.post(f"{BASE}/api/doc/upload", files={"file": open("a.pdf","rb")}).json()["data"] # 上传PDF,取任务ID while True: # 轮询任务状态,直到识别完成 if requests.post(f"{BASE}/api/doc/result", json={"id": tid}).json()["is_done"]: break time.sleep(1) url = requests.post(f"{BASE}/api/doc/download", json={"id": tid, "file_types": ["pdfLayered"]}).json()["data"] # 取双层PDF下载链接 open("out.pdf","wb").write(requests.get(f"{BASE}{url}").content) # 下载并保存结果建议值:主机保持"仅本地",file_types填pdfLayered(要纯文本就填txtPlain)。
边界与局限:它做不到的事
- 双层 PDF 不是可编辑文档。文字层服务检索和复制,不能像 Word 那样改字。要改内容就另导一份纯文本(
txtPlain)再处理。 - 重度倾斜的扫描页可能错位。识别出的文字位置与原图对不齐时,v2.1.2 起已修复旋转页坐标问题;仍错位就选"整页强制 OCR"(
doc.extractionMode设为fullPage)或先校正页面。 - 大批量会吃内存,加密文档会卡住。引擎默认把内存压在系统总内存的一半以内,几百页大文件在低配机上可能卡顿;加密 PDF 会一直停在等待状态。绕行:全局设置里调低引擎线程数与内存上限;加密文档在上传参数里填
password。
速查表:参数、默认值与推荐值
| 关键参数 | 默认值 | 推荐值 | 文档路径 |
|---|---|---|---|
保存格式file_types | pdfLayered | 双层可搜索 PDF | docs/http/api_doc.md |
识别语言ocr.language | 简体中文 | 按文档语言选,中英混排选含英文库 | docs/http/api_doc.md |
排版解析tbpu.parser | multi_para | 代码、日志用 single_code | docs/http/api_doc.md |
限制图像边长ocr.limit_side_len | 960 | 大图求精度用 2880 | docs/http/api_doc.md |
内容提取doc.extractionMode | mixed | 纯扫描件用 fullPage | docs/http/api_doc.md |
| HTTP 端口 / 主机 | 1224 / 仅本地 | 保持仅本地,断网可用 | docs/http/README.md |
Umi-OCR 把"保留原图、叠上文字层"做到了解压即用、断网可跑——扫描件数字化的离线解法,就是它。
【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考