news 2026/10/31 1:45:39

PdfCraft OCR 教程:把扫描版 PDF 免费变成可搜索文本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PdfCraft OCR 教程:把扫描版 PDF 免费变成可搜索文本

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 本质上是一张图片,文字无法选中、复制,更无法搜索;
  • 纸质档案数字化后批量生成扫描件,需要逐个变成可检索文档;
  • 已有文本的页面想叠加识别、或想跳过已有文字的页面只处理纯图页面。

环境准备

  1. 安装并运行 PdfCraft 桌面版(发布包已内置识别模型,可跳过第 2 步)。
  2. 源码构建需先下载模型:在仓库根目录运行cargo xtask models,模型会进入assets/models/。
  3. 也可手动放置模型后,设置环境变量PDFCRAFT_MODELS指向模型目录;目录里需包含text-detection.onnx与text-recognition.onnx(旧版.rten文件同样可用)。
  4. ⚠️ 模型只读拉丁字母(当前仅 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 1:42:27

路由优先级

一、路由协议管理距离(Preference 优先级) 规则:数值越小,优先级越高;同一条路由多条来源,优选优先级最小的放入路由表。 华为默认路由优先级 路由来源 优先级 Preference 说明 直连路由 Direct 0 最高优先级 OSPF 内部路由 Intra-area 10 OSPF 区域内路由 IS-IS Level…

作者头像 李华
网站建设 2026/10/31 1:42:03

DeepWiki-Open本地部署教程:2个模型跑通完全离线的AI文档生成

DeepWiki-Open本地部署教程:2个模型跑通完全离线的AI文档生成 【免费下载链接】deepwiki-open Open Source DeepWiki: AI-Powered Wiki Generator for GitHub/Gitlab/Bitbucket Repositories. Join the discord: https://discord.gg/gMwThUMeme 项目地址: https:/…

作者头像 李华
网站建设 2026/10/31 1:32:13

.net framework

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/31 1:27:25

【详细教程】对拍 0 基础学习小课堂 [内附例题演示]

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华