如何 OCR 识别扫描文档——从图片中提取文字
OCR 光学字符识别完整指南:什么是 OCR、如何使用浏览器 OCR 工具、提高识别精度的技巧,以及何时用 OCR 和何时用直接文字提取。
什么是 OCR?
OCR(光学字符识别)将图像中的文字转换为可选择、可搜索的真实文本。 当你扫描纸质文件、拍摄白板照片或截取对话截图时,结果是一张图像—— 屏幕上的像素。文字在视觉上存在但在数字层面不存在,无法选中、复制或搜索。
OCR 通过分析像素模式、识别字母形状并生成机器可读文本来解决这个问题。 现代 OCR 引擎使用神经网络,在清晰文本上准确率可达 99% 以上。
OCR 工作原理
- 预处理。引擎转灰度、调对比度、去噪、纠偏。更好的输入意味着更好的输出。
- 版面分析。识别文本区域、栏目、段落和阅读顺序,将文字与图片、表格分离。
- 字符识别。每个字符形状与学习到的模式匹配,结合上下文消除歧义。
- 后处理。拼写检查和语言模型纠正可能的错误。
如何 OCR 一份文档
1. 浏览器端 OCR
FileKit 的 OCR 工具 使用 Tesseract.js(编译为 WebAssembly 的开源 OCR 引擎),完全在浏览器中 识别文字。支持英文、简体中文、日文及中英混排。文档不离开你的设备。
2. Google Drive
上传扫描件到 Google Drive,右键 → 用 Google 文档打开。Google 自动应用 OCR 生成可编辑文档。适合简单单栏排版,多栏和表格效果较差。
3. Adobe Acrobat
Acrobat 的扫描和 OCR 功能在扫描页面上方创建可搜索文本层。原始图像 保持不变,文字变得可选择和可搜索。最适合需要保持视觉保真度的归档文档。
4. 命令行 Tesseract
# 基础 OCR(英文)
tesseract scan.png output -l eng
# 多语言(英文 + 中文)
tesseract scan.png output -l eng+chi_sim
# 生成可搜索 PDF
tesseract scan.png output -l eng pdf
# 批量处理文件夹
for f in *.png; do tesseract "$f" "${f%.png}" -l eng; done提升 OCR 准确率的技巧
图像质量
- 分辨率。至少 300 DPI。150 DPI 时小号文字(10pt 以下)识别不可靠。
- 对比度。白底黑字效果最好。浅色文字、彩色背景和水印都降低准确率。
- 清晰度。模糊图像效果很差。尽量使用平板扫描仪。
文档准备
常见 OCR 挑战
手写体
标准 OCR 引擎针对印刷体训练,手写识别效果较差。手写文档需要使用 专门的服务(Google Cloud Vision、Amazon Textract)。
表格和表单
OCR 引擎识别文字但不识别表格结构。扫描的表格可能输出为排列混乱的文字。
多栏排版
报纸、学术论文和杂志常用多栏排版。OCR 引擎可能横跨栏目阅读而非纵向 阅读,导致输出混乱。
低质量传真和复印件
多次传真或复印的文件累积噪声、丢失对比度。这类文档需要先做对比度增强 和去噪处理。
OCR vs 文本提取:重要区别
不是所有 PDF 都需要 OCR。有两种 PDF:
- 数字 PDF——从 Word、Excel 导出。文字已嵌入,可直接选择。 使用 PDF 文本提取工具——更快、100% 准确。
- 扫描件 PDF——扫描纸质文件生成。每页是图像,需要 OCR。
判断方法:打开 PDF 尝试用光标选中文字。能高亮单个词 → 数字 PDF; 点击拖拽选中整页 → 扫描件 PDF。
OCR 之后的步骤
- 校对输出。常见错误包括混淆相似字符(l/1、O/0、rn/m)和丢失标点。
- 提取的文字可以用 文本转 PDF 工具 重新排版。
- 保留带文本层的可搜索版本作为主要存档。
- 扫描件 PDF 体积较大,可以 压缩 PDF。