扫描版 PDF 变可搜索文档:PdfCraft OCR 完整教程

扫描版 PDF 变可搜索文档:PdfCraft OCR 完整教程

【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft

扫描件里的字选不中、搜不到、复制不了,这是纸质档案数字化后最常见的糟心事。PdfCraft 的Scan & OCR(扫描与OCR)功能把扫描版 PDF 变成可搜索、可复制的文档,免费、离线运行,识别结果还能随时撤销。

功能速览

项目说明
输入类型扫描版、纯图片的 PDF 页面
输出方式Searchable Image (Exact):每个单词上方写入不可见文本层,原图一个像素都不动
运行环境识别模型装在本地,全程在你的机器上完成,不上传任何文件
语言支持目前仅拉丁字母(English / en)⚠️
撤销识别结果是一步可撤销编辑,Ctrl+Z 整体回退

工作原理

可以把 PDF 页面看成两层:底下是图,上面是字。扫描件的“字”只是像素,所以选不出来。PdfCraft OCR 做的事情,相当于在图上盖一层看不见的字:模型找出每个单词的位置和内容,然后在每个单词上方写入一层不可见文本(PDF 渲染模式 3)。原图保持原样,页面从此能搜、能选、能被屏幕阅读器朗读。这套做法与 Acrobat 的 “Searchable Image (Exact)” 一致。

实现上,核心识别在 crates/ocr/src/lib.rs,页面渲染与文本层写入逻辑在 crates/engine/src/ocr.rs。

一次性准备

识别依赖两个本地模型:文字检测 + 文字识别,只需获取一次。

  • 在仓库根目录运行cargo xtask models,模型会下载到assets/models/;
  • 也可以把模型文件放到任意目录,再设置环境变量PDFCRAFT_MODELS指向它。

模型文件名为text-detection.onnx与text-recognition.onnx(旧版.rten同样名文件也能被识别)。应用会自动找到完整的一对。

⚠️ 目前模型只读拉丁字母(英语等无重音拉丁文),中文、日文扫描件暂不适用。

单文件实操

开始识别与选页

打开 PdfCraft,载入你的扫描件。在左侧工具栏点进Scan & OCR,进入Recognize Text(识别文本)对话框,界面逻辑在 crates/ui-egui/src/workflows/ocr_ui.rs。

先选识别范围,共三个选项:

页码范围含义
All pages全部页面
Current page仅当前页
From X to Y指定页码范围

💡 小文档可以先只跑当前页,效果满意再跑全文。

参数与进度

参数一共三处,默认值就能用:

参数说明建议值
Document language文档语言English(en)
Output输出方式Searchable Image (Exact),原图不变
Downsample to页面渲染分辨率默认 300 dpi;模糊扫描件可提到 600 dpi

点Recognize text开始。识别在后台线程运行,界面提示“第 X 页 / 共 Y 页”的进度,中途可点Cancel取消,已识别的页面会保留。速度大约每秒一页。完成后提示“识别了 N 个单词 / M 页”,结果作为一步可撤销的编辑写入文档,Ctrl+Z 即可回退。

效果验证

打开顶部搜索框,输入刚才看过的某个关键词:原本搜不到的扫描件,现在能高亮定位每一处匹配位置。用鼠标在页面上拖一下,选中的是真正的文字,可以直接复制,而不是一张图。

整份文档的排版与图像质量保持不变,识别后照常加注释、导出都行。

批量与自动化

手头的扫描件不止一个?同一入口下还有“识别多个文件中的文本”功能:选好文件夹后,PdfCraft 逐个识别每个 PDF,以同名文件写出可搜索版本,最后汇总“在 N 个文件中识别了 M 个单词”。批量逻辑在 crates/ui-egui/src/workflows/ocr_ui.rs,底层单文件函数recognize_file位于 crates/engine/src/ocr.rs。

除了图形界面,PdfCraft 还向脚本和 Agent 暴露了三个 OCR 命令(工具定义在 crates/automation/src/tools.rs):

命令作用
ocr.recognize对当前文档执行识别
ocr.recognize_batch多文件批量识别,输出到指定文件夹
ocr.status查询模型是否已安装、支持哪些语言

避坑清单

现象原因处理
提示 “Text recognition isn't installed”模型文件缺失重装 PdfCraft,或设置PDFCRAFT_MODELS指向模型目录
完成后提示“N 页已有文字”默认跳过已含真实文字的页面,避免重复识别正常行为;确需重扫可勾选 “Also recognize pages that already have text”
识别结果不满意误识别或参数不合适Ctrl+Z 整体撤销,或只选指定页码范围重跑
中文页面识别为空当前模型只读拉丁字母暂不支持,可留意 ROADMAP
模糊扫描件识别率低渲染分辨率偏低Downsample to 调到 600 dpi 再试

收尾

流程一句话:打开文档 → 进 Scan & OCR → 选页设参 → 点识别 → 搜索验证。整批档案建议直接走多文件批量识别,一次跑完。

【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft

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