FileKitFileKit
返回博客
·7 分钟阅读

如何 OCR 识别扫描文档——从图片中提取文字

OCR 光学字符识别完整指南:什么是 OCR、如何使用浏览器 OCR 工具、提高识别精度的技巧,以及何时用 OCR 和何时用直接文字提取。

什么是 OCR?

OCR(光学字符识别)将图像中的文字转换为可选择、可搜索的真实文本。 当你扫描纸质文件、拍摄白板照片或截取对话截图时,结果是一张图像—— 屏幕上的像素。文字在视觉上存在但在数字层面不存在,无法选中、复制或搜索。

OCR 通过分析像素模式、识别字母形状并生成机器可读文本来解决这个问题。 现代 OCR 引擎使用神经网络,在清晰文本上准确率可达 99% 以上。

OCR 工作原理

  1. 预处理。引擎转灰度、调对比度、去噪、纠偏。更好的输入意味着更好的输出。
  2. 版面分析。识别文本区域、栏目、段落和阅读顺序,将文字与图片、表格分离。
  3. 字符识别。每个字符形状与学习到的模式匹配,结合上下文消除歧义。
  4. 后处理。拼写检查和语言模型纠正可能的错误。

如何 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 以下)识别不可靠。
  • 对比度。白底黑字效果最好。浅色文字、彩色背景和水印都降低准确率。
  • 清晰度。模糊图像效果很差。尽量使用平板扫描仪。

文档准备

  • 矫正倾斜。即使 2-3 度的倾斜也显著影响准确率。可先 旋转页面
  • 去除边框和瑕疵。 裁剪文档 去除扫描仪边框、黑边和装订阴影。
  • 选择正确的语言。始终指定文档的主要语言。混合语言文档使用组合模式。

常见 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