首页/AI/RAG 与向量库速查/Tesseract OCR 识别扫描件

Tesseract OCR 识别扫描件

Tesseract 是常用的开源 OCR 引擎,配合语言包可识别中英文扫描件;通常先把 PDF 按 300dpi 转成图片再逐张识别,输出带坐标的文本块。

RAG 与向量库速查AI更新于 2026-10-13

OCR 处理扫描件

Tesseract 是常用的开源 OCR 引擎,配合语言包可识别中英文扫描件。处理 PDF 的常规做法是先把页面渲染成高分辨率图片,再逐张识别,输出带坐标的文本块。识别质量主要由图像质量决定,去噪、纠偏、二值化这些预处理步骤往往比换引擎更能提升准确率。

基本信息

引擎tesseract-ocr,需另装语言包
中文包tesseract-ocr-chi-sim(简体)
转换工具poppler-utils 提供 pdftoppm 把 PDF 转图片
Python 封装pytesseract,需指向已安装的引擎
推荐分辨率300dpi 起步,过低会明显拉高错字率

安装与命令行识别

安装与命令行识别
# Debian/Ubuntu 示例:引擎 + 中文简体语言包
apt-get install -y tesseract-ocr tesseract-ocr-chi-sim

# PDF 先转图片(poppler-utils 提供 pdftoppm)
pdftoppm -r 300 -png input.pdf page
tesseract page-1.png stdout -l chi_sim+eng

Python 调用

Python 调用
from PIL import Image
import pytesseract

text = pytesseract.image_to_string(Image.open("scan.png"), lang="chi_sim+eng")
print(text[:200])

提升识别率的做法

  • 先做图像预处理:灰度化、二值化、去噪、纠偏,再送识别
  • 按版面裁切:把多栏页面切成单栏再逐栏识别,避免阅读顺序错乱
  • 保留坐标:用带坐标的输出模式定位文本块,便于按位置重排
  • 分级处理:清晰页面直接识别,模糊与倾斜页面单独走一遍增强流程
  • 抽样核对:每批任务人工核对若干页,统计错字率再决定是否调参

常见问题与对策

现象原因对策
中文识别成乱码未安装中文语言包安装 chi_sim 并在参数中指定
整段文字顺序错乱多栏版面未切分按栏切图后逐栏识别
错字率高图像分辨率或对比度不足提高到 300dpi 以上并做预处理
数字识别不稳定字体或表格线干扰限定字符集或裁掉表格线
识别质量与图像质量强相关:先做去噪、纠偏、二值化,再按 300dpi 以上转图,通常比直接识别低清截图效果好得多。

批量任务的工程做法

  • 转图与识别分离成两步,便于单独重跑失败页而不是整份文档重来
  • 任务记录每页状态与耗时,失败页清单直接导出给人工复核
  • 识别结果与图片路径一起保存,抽查时能对照原图判断错在哪
  • 对识别置信度低的文本块做标记,入库时可降低权重或转人工
  • 定期统计错字样本并按文档来源归类,识别质量的短板往往集中在少数扫描源

易错点

  • 中文识别需装 chi_sim 语言包,只装引擎时默认只有英文
  • 直接用低清图片识别错字率高,转图前先做图像预处理
  • 多栏页面整体识别导致阅读顺序错乱,切片语义被破坏
  • OCR 输出不做抽样核对就入库,错字被检索命中后直接进入答案

数据来源与参考

  • Tesseract 官方文档(tesseract-ocr.github.io)
  • pytesseract 项目 README(github.com/madmaze/pytesseract)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌