PdfCraft OCR 教程:把扫描版 PDF 免费变成可搜索文本
【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft
扫描件里的文字选不中、搜不到,用 PdfCraft 的 OCR 识别功能就能把它变成可搜索、可复制的文本文档。识别模型全部在本地运行,免费且离线,文件不会上传到任何地方;原始扫描图像保持逐像素不变,只在每个单词上方写入一层不可见文本,页面从此可以全文检索、复制、被屏幕阅读器朗读。
适用场景
- 扫描版 PDF 本质上是一张图片,文字无法选中、复制,更无法搜索;
- 纸质档案数字化后批量生成扫描件,需要逐个变成可检索文档;
- 已有文本的页面想叠加识别、或想跳过已有文字的页面只处理纯图页面。
环境准备
- 安装并运行 PdfCraft 桌面版(发布包已内置识别模型,可跳过第 2 步)。
- 源码构建需先下载模型:在仓库根目录运行
cargo xtask models,模型会进入assets/models/。 - 也可手动放置模型后,设置环境变量
PDFCRAFT_MODELS指向模型目录;目录里需包含text-detection.onnx与text-recognition.onnx(旧版.rten文件同样可用)。 - ⚠️ 模型只读拉丁字母(当前仅 English),中文扫描件暂不适用,CJK 语言支持已列入 ROADMAP。
核心操作流程
打开扫描件并跑通首次识别
- 打开扫描版 PDF,进入 All tools,点击左侧工具列表里的Scan & OCR,进入 Recognize Text 对话框。
- 页面范围选 Current page 先试一页,效果满意再跑 All pages;需要指定区间就选 From 到 X / to Y。
- 参数区确认 Document language(English)、Output(Searchable Image (Exact))、Downsample to(300 dpi),点击Recognize text。
- 识别在后台线程运行,界面显示"第 X 页 / 共 Y 页"的进度,随时可取消,已识别的页面会保留;速度约每秒一页。
- 完成后提示识别出的单词数和页数,整个结果作为一步可撤销的编辑写入文档,Ctrl+Z 可整体回退。
一次搞定批量识别多个文件
- 在 Scan & OCR 里选择"Recognize text in multiple files":挑好要处理的 PDF,再选定一个输出文件夹。
- PdfCraft 会逐个识别每个文件,并按同名文件写出可搜索版本(原文件不动),最后汇总"在 N 个文件中识别了 M 个单词"。
- 脚本化场景:
pdfcraft-cli的 batch 命令可递归处理整个文件夹,例如pdfcraft-cli batch scans --root . --recursive --steps ocr --out-dir searchable,输出独立 PDF 和 JSON 报告,源文件不被修改。 - 自动化/Agent 侧暴露了
ocr.recognize(对当前文档识别)、ocr.recognize_batch(多文件批量输出到指定文件夹)、ocr.status(查询模型是否安装及支持语言)三个工具,定义见 crates/automation/src/tools.rs。
参数说明
对话框和 CLI 里可调的参数不多,默认值对大多数扫描件直接够用,按需调整即可:
| 参数 | 作用 | 推荐值/备注 |
|---|---|---|
| Pages | 识别哪些页面 | 小文档先试 Current page;批量用 All pages |
| Document language | 文档语言 | 目前仅en(English) |
| Output | 输出方式 | Searchable Image (Exact),图像不变 |
| Downsample to | 渲染分辨率(dpi) | 默认 300;模糊扫描件调到 600 |
| Also recognize pages that already have text | 是否也识别已有文字页面 | 默认关闭;勾选后页面内图片也会被识别,且不会把页面已有文字重复添加 |
补充一点:dpi只影响识别时的渲染精度,扫描页实际会按"自身分辨率与所选 dpi 的较低者"读取,选更高不会放大糊字;参数结构定义在 crates/engine/src/ocr.rs。
效果验证
打开顶部搜索框输入关键词,原本搜不到的扫描件现在能高亮定位每个匹配位置。再用鼠标框选一段文字复制、粘贴到别处,能带出正常文本即成功。页面图像应与处理前完全一致,逐像素没有变化;若不放心,先只识别当前页,对比前后效果再决定是否跑全文。
常见问题排查
- 提示"Text recognition isn't installed":模型文件缺失。重装发布包,或运行
cargo xtask models,或用PDFCRAFT_MODELS指向模型目录。 - 中文/日文扫描件识别效果差:当前模型只支持拉丁字母,CJK 语言支持已在 ROADMAP 中,暂不可用。
- 部分页面被跳过(N pages already had text):默认跳过已含可渲染文字的页面,属正常保护行为;如需识别这类页面上的图片文字,勾选"Also recognize pages that already have text"。
- 识别结果有误:结果是一步可撤销编辑,Ctrl+Z 整体撤销后,可只识别指定页码范围重新尝试。
- 识别中断了怎么办:运行中随时可取消,已识别的页面保留;重跑时已有文字的页面会被自动跳过,不会重复叠加。
全程离线、免费,识别后文档保持原有排版与图像质量,即可搜索、复制、朗读。纸质档案数字化后,顺手再用pdfcraft-cli batch --steps ocr,optimize把可搜索版本压缩一遍,就是完整的归档流水线。
【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考