如何用 OCR 从图片中提取文字
OCR(光学字符识别)可以把照片、截图或扫描件中的文字转换为可复制、可编辑的文本。本指南解释哪些因素会影响结果,以及如何得到更干净的文本。
OCR 的工作原理
OCR 引擎首先把图片转换为黑白图像,让文字从背景中凸显出来。然后分析版面,找出文本块、行和单词。最后,由识别模型推断每个单词显示的是哪些字符。
LeedyBox 工具通过 Tesseract.js 使用开源 OCR 引擎 Tesseract。它的识别模型是一个在印刷文本上训练的神经网络,每种语言都有单独的数据。引擎还会为每个单词给出置信度,工具会显示每张图片的平均置信度。
选择语言
语言设置告诉引擎应当预期哪些字符和单词。用英语模型读取韩语、日语或俄语文本,会得到由形似拉丁字母组成的乱码;对于共用同一套字母的语言,选对模型也能更好地处理重音符号和常用词。
如果图片混合了两种语言,例如夹杂英文产品名称的韩语文档,请同时选择这两种语言。只在文本确实需要时才添加第二种语言:每多一种语言,识别都会变慢,引擎可能混淆的字符也会更多。
| 图片 | 语言 | 文字版式 |
|---|---|---|
| 单一语言的文档页面或文章 | 该语言 | 自动 |
| 含有本地语言文字和英文单词的菜单、幻灯片或标签 | 本地语言 + 英语 | 自动 |
| 裁剪出的段落,各行输出顺序错乱 | 该语言 | 单个文本块 |
| 单行文字,例如标题、序列号或标牌 | 该语言 | 单行文字 |
画质技巧
- 分辨率:低分辨率图片中的小字是最常见的出错原因。放大有一定帮助,所以 LeedyBox 工具可以把小图放大到两倍后重新识别,但放大无法还原图片中本来没有的细节。字母过大也可能降低识别的可靠性。
- 对比度:浅色纯色背景上的深色文字效果最好。字迹浅淡、灰色文字、彩色背景和阴影都会让字母更难与背景分离。灰度和对比度选项对浅淡的文字有帮助,但请比较结果,因为它也可能让本来干净的图片变差。
- 文字要端正:倾斜、弯曲或有透视变形的文字(例如斜着拍摄的书页)会导致行与行粘连、字符识别错误。如果文字明显歪斜,请旋转图片或重新拍摄。
- 裁剪:把图片裁剪到只剩所需的文字。徽标、照片、边框和相邻的栏可能被误认为字符,还会打乱阅读顺序。
- 压缩:重度 JPG 压缩产生的压缩伪影会让文字变模糊。截图请尽量保存为 PNG;参见 JPG、PNG、WebP 与 AVIF 对比。
截图与照片
截图清晰、端正,因此通常能得到良好的结果。它们的主要弱点是尺寸:界面文字往往只有几个像素高。请在截图前先放大页面或应用,截图后也不要再缩小。您可以用 Ctrl+V(Mac 上为 ⌘+V)将截图直接粘贴到工具中。
照片则会带来光线不均、反光、模糊、透视变形和页面弯曲等问题。请让相机与页面保持平行,让文字充满画面,使用均匀的光线并避免闪光灯反光,然后点按屏幕对焦。识别前会先应用相机记录的方向,因此横握手机拍摄的照片也会按正确的方向读取。
对于 PDF 文件,请使用 PDF 转文本,而不要把页面转换为图片:它会读取已有的文本层,只对没有文本层的页面运行 OCR。关于扫描版 PDF,请参阅指南从 PDF 提取文本:文本层与 OCR。
手写体与艺术字体
这里使用的模型是在印刷文本上训练的,因此手写体的识别效果通常较差。工整、逐个分开书写的大写印刷体字母识别成功的机会最大;连笔字和签名很少能得到可用的结果。装饰字体、手写风格字体或非常窄的紧缩字体、带图案背景上的文字以及竖排文字,也会造成类似的问题。
检查并修正结果
请把 OCR 输出当作草稿。典型错误包括:混淆 0 和 O,1、l 和 I,或“rn”和“m”;重音符号和标点丢失或错误;行尾的单词被合并或拆开;相邻栏的行混在一起。表格和多栏版式不会被保留:结果是纯文本。
请将文本与图片逐一对照,特别注意数字、姓名、日期、金额和地址,因为这些地方错一个字符就会出问题。置信度高并不能证明文本正确无误。在复制或下载之前,您可以在工具中编辑文本。
隐私:哪些内容留在您的设备上
LeedyBox 工具在您的浏览器中运行 OCR 引擎:图片在您的设备上读取,不会上传到 LeedyBox。浏览器会直接从 leedybox.com 下载 Tesseract.js 库、它的 WebAssembly 引擎,以及您所选每种语言的数据。这些都是普通的文件下载,不包含您的图片。Tesseract.js 会把语言数据存储在浏览器的存储空间(IndexedDB)中,这样就不必再次下载;清除浏览器中的网站数据即可将其删除。
常见问题
为什么第一张图片处理得很慢?
首次使用某种语言时,需要下载 OCR 引擎和语言数据(几 MB)。之后的图片会重复使用它们,语言数据也会保存在浏览器的存储空间中,供以后访问时使用。
OCR 能保留文档的版式吗?
该工具提取的是带换行的纯文本。分栏、表格、字体和格式需要在您的编辑器中手动重建。
为什么工具完全没有识别出文字?
通常是因为文字太小或太浅,或者语言选错了。请把图片裁剪到文字部分、检查语言设置,或尝试其他文字版式设置。