如何对扫描版 PDF 进行 OCR,使其可搜索
扫描的 PDF 是图像,而不是文本:您无法搜索、选择或复制其内容。本指南展示 pdfmcp 的两种本地方式:将 OCR 应用为可搜索的 PDF,或将 OCR 应用为纯文本,全部在您的设备上,并附真正重要的设置。
为什么扫描的 PDF 没有文本
扫描仪保存的是每一页的照片。文字是图像中的像素,而不是字符,因此搜索找不到任何东西,选择文本也选不到任何东西,也没有东西可以复制。OCR(光学字符识别)解决了这个问题:它读取每一页的图像,并推断像素构成了哪些字符。
pdfmcp 为此使用 Tesseract。OCR 操作有两种,每种都满足不同的需求。ocr_pdf 返回外观相同但带有不可见文本层的 PDF,因此文档本身变得可搜索、可选择。ocr_to_text 仅以纯文本形式返回文字。两者都在本地运行。
选择方式:可搜索的 PDF 还是仅文本
当文档必须继续是文档时,请选择 ocr_pdf:合同、报告或他人会打开、查阅和引用的档案。它使用 pdfmcp 软件包在本地运行,因为制作干净的可搜索 PDF 需要较重的机械。已经带有文本层的页面会原封不动地通过,并被报告为跳过,因此在混合文档上运行它是安全的。
当您只需要文字时,请选择 ocr_to_text:粘贴到笔记中、传递给脚本,或阅读扫描件的内容。在网站上,它在您的设备、您的浏览器中运行,您的文件永不上传;请注意,设备上的网页版本仅包含英语。本地软件包的相同操作可以配置语言。
制作可搜索的 PDF,分步进行
1) 只安装一次 pdfmcp 软件包(见 MCP 页面)。2) 使用本地软件包、通过本地 MCP 连接的智能体或您自己的代码,对您的文件运行 ocr_pdf 操作。3) 打开结果并检查:搜索一个您能在页面上看到的词。如果搜索能找到它并在正确的位置高亮显示,文本层就已就位。
如果您通过 AI 智能体工作,相同的步骤会缩减为一个请求:连接一次本地 MCP 服务器(见设置指南),然后请智能体对文件应用 OCR。一切都发生在您的机器上。
重要的设置:语言、DPI 和页面
语言是人们最容易弄错的设置。默认值为 eng(英语)。对于其他语言,请将语言参数设置为 Tesseract 语言代码,或组合代码:例如混合英语和德语的文档使用 eng+deu。语言数据会在首次使用时只下载一次,并保留在您的机器上。选择文档实际所用的语言,比任何其他设置都重要得多。
DPI 的默认值为 300,可在 150 到 600 之间设置:这是识别前每一页的渲染分辨率。对于普通扫描件,请保持 300;较高的值可能对小字有帮助,代价是您机器上的工作更慢。最后,页面参数将工作限制为您指明的页面(例如 1-3,5,8),这是在处理长文档之前,在几页上测试设置的最快方法。
限制、隐私和诚实的边界
实际上,限制您的是您的设备:内存和速度,在浏览器中则是约 100 MB、500 页以内的文件。非常长的文档需要您机器所需的时间;将巨大的扫描件拆成几部分仍然是个好主意。
隐私遵循 pdfmcp 的规则,不作比网站本身更强的断言:一切都在本地运行,您的文件永不上传,永不保存在任何服务器上,也永不用于训练 AI。而诚实的边界是:OCR 从相当清晰的扫描件中读取印刷文字。手写、对比度很低的扫描件和损坏的页面会产生错误:结果是尽力而为的文本层,而不是经认证的转录,因此请对照页面图像检查重要的姓名和数字。
常见问题
pdfmcp 中的 OCR 免费吗?
是的,永久免费。设备上的 OCR 转文本工具是免费的,不需要任何账户。使用本地软件包的完整 OCR 也免费,无密钥,无每日配额。没有付费层级。
OCR 会改变我的 PDF 的外观吗?
ocr_pdf 会添加一个不可见的文本层;页面图像保持原样。已经带有文本的页面会原封不动地通过,并被报告为跳过。
OCR 可以读取哪些语言?
使用本地软件包时,请将语言参数设置为 Tesseract 语言代码(默认为 eng;eng+deu 等组合可用):语言数据会在首次使用时只下载一次。设备上的网页 OCR 转文本工具仅包含英语。
为什么我的大扫描件需要这么长时间?
OCR 是一项繁重的工作,并在您的机器上运行,因此非常长的扫描件需要您计算机所需的时间。请将文档拆成较小的部分并对这些部分应用 OCR,或者,如果文件已经有文本层,则改用 pdf_to_text 提取该文本。
OCR 对手写有效吗?
它专为印刷文字设计。手写和低质量的扫描件可能会产生错误,因此请对照原始页面图像核实关键细节。
原文发表于 https://pdfmcp.org/guides/how-to-ocr-a-scanned-pdf/