PDF OCR 文字识别:功能介绍
扫描仪或手机扫描应用会把每张纸保存成一张图片。PDF 阅读器看到的只是像素,所以搜索一个名字什么也找不到,拖动光标选中的是整页,而不是一句话。光学字符识别(OCR)会分析这些像素,判断它们显示的是哪些文字。
在这个页面上,文件的每一页都会由 pdf.js 以 300 DPI 渲染,再交给开源 OCR 引擎 Tesseract 的浏览器版本 tesseract.js(Apache-2.0 许可证)处理。识别出的文字会以不可见文字层的形式写回 PDF,并放在原始页面上对应的位置。可见的页面保持不变:扫描图像、颜色、印章和签名都和原来一模一样。变化在于,文档现在可以搜索了,你也能像对待电脑上生成的任何 PDF 一样,在其中高亮和复制文字。如果你只需要文字,所有识别出的内容也会以纯文本 .txt 文件提供。
识别语言
Tesseract 在知道该识别哪种语言时会读得更准确。默认勾选的是“简体中文”。英语、西班牙语、法语、德语、葡萄牙语、意大利语、繁体中文和日语也都可以选择。每种语言模型在你第一次选择时,会从 pd00.com 下载,大小约 0.7 到 3 MB;之后浏览器会把它缓存起来,供以后使用。
PDF OCR 文字识别:使用步骤
- 选择扫描版 PDF选择文件,或者把它拖到工具上。设有密码的扫描件需要先经过“PDF 解密”处理,而这一步需要知道密码本身。
- 告诉它要识别哪些语言保留“简体中文”,或者勾选文档实际使用的语言;如果页面中混用了多种语言,最多可以选三种。
- 识别,然后下载点击“生成可搜索 PDF”,在它逐页处理期间保持标签页打开。完成后保存可搜索的 PDF;如果只需要文字,再保存 .txt 文件。
常见使用场景
在签好的合同中查找条款
一份签好字的协议以扫描件的形式发了回来。做过 OCR 之后,搜索某一方的名称或“终止”一词,就能直接跳到对应的段落,而不必在几十张图片之间来回翻页。
多年后还想找到的纸质记录
为了妥善保存而扫描的发票、保修卡和信件,一旦都带有电脑文件搜索能够索引的文字层,就能按内容查找,而不仅仅是按文件名。
引用复印的书籍章节
课程资料里扫描的书籍章节或期刊文章,不重新打字就没法引用。有了 OCR,你可以选中段落、复制,再对照页面图像检查有没有认错的字。
什么决定了识别的准确度
OCR 只能读出扫描件里显示的内容,所以原稿比任何设置都重要。最好的效果来自以 300 DPI 扫描、摆放端正、浅色背景上印着深色文字的页面。以下情况会降低准确度:
- 分辨率低或图像模糊。以 300 DPI 渲染无法找回低分辨率扫描时根本没有拍到的细节;手机拍照时手一抖,小字的每个字符就分不到足够的像素。
- 页面歪斜或横躺。倾斜的文字行,以及书脊附近的弯曲,都会把字词拉散。开始之前,请先用旋转 PDF 把横躺的页面转正。
- 手写体。Tesseract 是为印刷和打字文本设计的。手写笔记、签名和手填的表格都无法可靠识别。
- 没有选对语言。一封德语信件如果只用英语识别,往往会丢掉变音符号并认错单词,所以请选中页面上用到的所有语言。
即使是干净的扫描件,也难免会有个别错误,比如把 1 认成 l、把 rn 认成 m,中文里则可能把形近的“己”认成“已”。搜索仍能找到大部分词语,但凡是复制到重要文档里的内容,请务必校对。
识别需要多长时间
在笔记本电脑上每页大约需要几秒钟,在手机上会更久;两页的信件很快就能完成,一份长报告则可能要好几分钟,而且在完成之前标签页必须一直保持打开。长文件更适合在电脑上处理。如果你只需要大扫描件中的一部分,可以先用提取 PDF 页面把那些页面取出来,再对这个较短的文件做 OCR。
“跳过已包含文字的页面”选项默认开启,对于混合文档能节省时间,比如一份末尾附有扫描签字页的打印报告:只有没有文字的页面才会被识别。关闭这个选项,就会识别每一页。
可搜索副本保留了什么
可见页面上的内容不会被清理、拉直或添加任何东西,所以结果无论在屏幕上还是打印出来,都与你添加的扫描件一样。与那些图片相比,添加的文字非常小,所以文件通常只会略微变大。如果你还想让 PDF 变小,可以另外用压缩 PDF 处理一遍;要给它起一个便于归档的清晰标题,可以用编辑 PDF 元数据来设置。
不需要 OCR 的文件
- 已经有可选中文字的 PDF。如果你在阅读器里能高亮选中文字,就不必做 OCR,直接用 PDF 转文本复制文字,或者用 PDF 转 Markdown 保留标题和列表。
- 你想编辑的文档。OCR 让扫描件可以搜索,而不是可以编辑。每一页仍然是一张图片,文字在它的背后,所以你无法在原处改写某个句子。
页面在当前浏览器标签页中渲染和识别。唯一额外下载的是从 pd00.com 获取的语言模型,你的扫描件和其中的文字都不会被发送到任何地方;这里介绍了检查方法。