Tesseract配置参数详解及适用场景(PyTesseract进行OCR)

在使用 PyTesseract 进行 OCR 时,合理配置参数是提高识别准确率的关键。以下是 Tesseract 常用参数的详细解释和适用场景。

一、关键参数

(1)页面分割模式(Page Segmentation Mode, --psm)

控制 Tesseract 如何分析图像中的文本布局,对单行文本、多列文本、表格等不同场景有不同优化。

参数值描述适用场景
0仅定向和脚本检测用于分析文本方向和语言脚本(如中文、英文)
1自动分页处理包含多页内容的图像(如扫描书籍)
2自动分页,但不进行 OCR仅分析页面布局,不识别文本
3全自动分页,无需 OCR默认模式,适用于常规文档
4假设为单列文本处理报纸、杂志等多列文本
5假设为垂直排列的文本处理竖排文字(如古籍、日语竖排)
6假设为单行文本处理单行较长的文本(如标题)
7视为单个文本行短文本、验证码、标语
8视为单个单词孤立单词、品牌名、验证码(无空格)
9视为单个单词在圆圈中圆形排列的文字(如标志)
10视为单个字符单个字母或数字(如车牌字符)
11稀疏文本分散在图像中的文本(如水印、标签)
12稀疏文本,先进行 OSD稀疏文本且需要自动检测方向
13原始行忽略布局,按行处理(适用于不规则文本)

验证码场景推荐:psm 7(单行文本)或 psm 8(单个单词)。

(2)OCR 引擎模式(OCR Engine Mode, --oem)

控制使用的 OCR 引擎类型。

参数值描述适用场景
0仅使用传统 Tesseract 引擎旧版本兼容性,对简单文本可能更快
1仅使用 LSTM 引擎推荐模式,识别准确率更高,支持更多语言
2同时使用两种引擎综合两种引擎结果,可能更准确但更慢
3默认,自动选择通常选择 LSTM 引擎(推荐)

推荐配置:–oem 3(自动选择 LSTM)。

(3)字符白名单(tessedit_char_whitelist)

限制 Tesseract 只识别指定字符,大幅提高特定场景的准确率。

# 仅识别数字
config = r'-c tessedit_char_whitelist=0123456789'

# 识别数字和小写字母
config = r'-c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz'

适用场景:

  • 验证码(已知字符集)
  • 车牌识别(如 ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)
  • 特定领域文本(如仅含数字的发票金额)

(4)语言参数(-l)

指定识别语言,需安装相应语言包。

# 英文
text = pytesseract.image_to_string(image, lang='eng')

# 简体中文
text = pytesseract.image_to_string(image, lang='chi_sim')

# 中英文混合
text = pytesseract.image_to_string(image, lang='eng+chi_sim')

安装语言包:

  • Windows:通过 Tesseract 安装程序勾选语言包
  • Linux:sudo apt-get install tesseract-ocr-(如 tesseract-ocr-chi-sim)

(5)其他常用参数

参数描述示例
tessedit_pageseg_mode--psm 等效,用于配置文件-c tessedit_pageseg_mode=8
preserve_interword_spaces保留单词间空格(默认为0)-c preserve_interword_spaces=1
textord_min_linesize最小文本行高(像素)-c textord_min_linesize=20
tessedit_char_blacklist黑名单字符(不识别的字符)-c tessedit_char_blacklist=!@#$%^&*()

二、组合参数示例

(1)验证码识别

# 配置:LSTM引擎,视为单个单词,仅识别数字和小写字母
config = r'--oem 3 --psm 8 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz'
text = pytesseract.image_to_string(image, config=config)

(2)单行文本(如车牌)

# 配置:单行文本,仅识别大写字母和数字
config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
text = pytesseract.image_to_string(image, config=config)

(3)多列文本(如报纸)

# 配置:自动检测多列布局
config = r'--oem 3 --psm 4'
text = pytesseract.image_to_string(image, config=config)

(4)竖排中文文本

# 配置:垂直排列文本,中文识别
config = r'--oem 3 --psm 5 -l chi_sim'
text = pytesseract.image_to_string(image, config=config)

三、pytesseract实践例子

  • PyTesseract 可以直接处理原始图像,但对质量较差的图片(如模糊、有噪点、光照不均),预处理能显著提升识别准确率。高质量图像(清晰、无噪点、光照均匀),低质量图像(扫描件、手机拍摄、光照不均)。
  • 默认配置是针对标准印刷体文本优化的,而验证码这类特殊文本需要定制参数才能正常工作。
    具体见下面链接

图像识别预处理(配合pytesseract使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值